From 03c2ab4d0d56ce53abc8b163f7fcc6dd2d61ceb8 Mon Sep 17 00:00:00 2001 From: David Madison Date: Fri, 15 Feb 2019 11:41:48 -0500 Subject: Change platform name to XInput Required to separate this board set from the built-in AVR core --- platform.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platform.txt b/platform.txt index cb48698..6553f9e 100644 --- a/platform.txt +++ b/platform.txt @@ -1,12 +1,12 @@ -# Arduino AVR Core and platform. +# XInput USB Mode for Arduino AVR Boards # ------------------------------ # # For more info: # https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification -name=Arduino AVR Boards -version=1.6.23 +name=XInput AVR Boards +version=0.0.1 # AVR compile variables # --------------------- -- cgit v1.2.3-18-g5258 From 06e6a5ced9016f9a1787a7cffa2f2f14657af415 Mon Sep 17 00:00:00 2001 From: David Madison Date: Fri, 15 Feb 2019 11:49:43 -0500 Subject: Delete programmers.txt --- programmers.txt | 106 -------------------------------------------------------- 1 file changed, 106 deletions(-) delete mode 100644 programmers.txt diff --git a/programmers.txt b/programmers.txt deleted file mode 100644 index d0d2cc1..0000000 --- a/programmers.txt +++ /dev/null @@ -1,106 +0,0 @@ -avrisp.name=AVR ISP -avrisp.communication=serial -avrisp.protocol=stk500v1 -avrisp.program.protocol=stk500v1 -avrisp.program.tool=avrdude -avrisp.program.extra_params=-P{serial.port} - -avrispmkii.name=AVRISP mkII -avrispmkii.communication=usb -avrispmkii.protocol=stk500v2 -avrispmkii.program.protocol=stk500v2 -avrispmkii.program.tool=avrdude -avrispmkii.program.extra_params=-Pusb - -usbtinyisp.name=USBtinyISP -usbtinyisp.protocol=usbtiny -usbtinyisp.program.tool=avrdude -usbtinyisp.program.extra_params= - -arduinoisp.name=ArduinoISP -arduinoisp.protocol=arduinoisp -arduinoisp.program.tool=avrdude -arduinoisp.program.extra_params= - -arduinoisporg.name=ArduinoISP.org -arduinoisporg.protocol=arduinoisporg -arduinoisporg.program.tool=avrdude -arduinoisporg.program.extra_params= - -usbasp.name=USBasp -usbasp.communication=usb -usbasp.protocol=usbasp -usbasp.program.protocol=usbasp -usbasp.program.tool=avrdude -usbasp.program.extra_params=-Pusb - -parallel.name=Parallel Programmer -parallel.protocol=dapa -parallel.force=true -# parallel.delay=200 -parallel.program.tool=avrdude -parallel.program.extra_params=-F - -arduinoasisp.name=Arduino as ISP -arduinoasisp.communication=serial -arduinoasisp.protocol=arduino -arduinoasisp.speed=19200 -arduinoasisp.program.protocol=arduino -arduinoasisp.program.speed=19200 -arduinoasisp.program.tool=avrdude -arduinoasisp.program.extra_params=-P{serial.port} -b{program.speed} - -usbGemma.name=Arduino Gemma -usbGemma.protocol=arduinogemma -usbGemma.program.tool=avrdude -usbGemma.program.extra_params= -usbGemma.config.path={runtime.platform.path}/bootloaders/gemma/avrdude.conf - -## Notes about Dangerous Prototypes Bus Pirate as ISP -## Bus Pirate V3 need Firmware v5.10 or later -## Bus Pirate V4 need Firmware v6.3-r2151 or later -## Could happen that BP does not have enough current to power an Arduino board -## through the ICSP connector. In this case disconnect the +Vcc from ICSP connector -## and power Arduino board in the normal way. -buspirate.name=BusPirate as ISP -buspirate.communication=serial -buspirate.protocol=buspirate -buspirate.program.protocol=buspirate -buspirate.program.tool=avrdude -buspirate.program.extra_params=-P{serial.port} - -# STK500 firmware version v1 and v2 use different serial protocols. -# Using the 'stk500' protocol tells avrdude to try and autodetect the -# firmware version. If this leads to problems, we might need to add -# stk500v1 and stk500v2 entries to allow explicitely selecting the -# firmware version. -stk500.name=Atmel STK500 development board -stk500.communication=serial -stk500.protocol=stk500 -stk500.program.protocol=stk500 -stk500.program.tool=avrdude -stk500.program.extra_params=-P{serial.port} - -jtag3isp.name=Atmel JTAGICE3 (ISP mode) -jtag3isp.communication=usb -jtag3isp.protocol=jtag3isp -jtag3isp.program.protocol=jtag3isp -jtag3isp.program.tool=avrdude -jtag3isp.program.extra_params= - -jtag3.name=Atmel JTAGICE3 (JTAG mode) -jtag3.communication=usb -jtag3.protocol=jtag3 -jtag3.program.protocol=jtag3 -jtag3.program.tool=avrdude -# Set a bitclock of 0.1us (the fastest supported value). This should -# work regardless of the crystal used, since JTAG doesn't use the MCU -# clock but dictates its own clock. -jtag3.program.extra_params=-B0.1 - -atmel_ice.name=Atmel-ICE (AVR) -atmel_ice.communication=usb -atmel_ice.protocol=atmelice_isp -atmel_ice.program.protocol=atmelice_isp -atmel_ice.program.tool=avrdude -atmel_ice.program.extra_params=-Pusb -- cgit v1.2.3-18-g5258 From 98f00eb533e0ed571b90f8e014d1eb59052a0597 Mon Sep 17 00:00:00 2001 From: David Madison Date: Fri, 15 Feb 2019 12:06:37 -0500 Subject: Delete 'extras' folder --- extras/pack.hourlybuild.bash | 51 ---------------------- extras/pack.pullrequest.bash | 50 --------------------- extras/pack.release.bash | 33 -------------- extras/package_index.json.Hourly.template | 72 ------------------------------- extras/package_index.json.PR.template | 72 ------------------------------- 5 files changed, 278 deletions(-) delete mode 100755 extras/pack.hourlybuild.bash delete mode 100755 extras/pack.pullrequest.bash delete mode 100755 extras/pack.release.bash delete mode 100644 extras/package_index.json.Hourly.template delete mode 100644 extras/package_index.json.PR.template diff --git a/extras/pack.hourlybuild.bash b/extras/pack.hourlybuild.bash deleted file mode 100755 index b3a269f..0000000 --- a/extras/pack.hourlybuild.bash +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -ex - -# pack.*.bash - Bash script to help packaging avr core releases. -# Copyright (c) 2015 Arduino LLC. All right reserved. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -BUILD_NUMBER=$1 -CURR_TIME=`date "+%Y-%m-%d %H:%M"` -CURR_TIME_SED=`date "+%Y\\-%m\\-%d %H:%M"` -VERSION=9.9.9-Hourly - -PWD=`pwd` -FOLDERNAME=`basename $PWD` -THIS_SCRIPT_NAME=`basename $0` -FILENAME=package_avr-hourly-b${BUILD_NUMBER}.tar.bz2 - -rm -f $FILENAME - -# Change name in platform.txt -sed -i "s/name=.*/name=SAMD Hourly Build ${BUILD_NUMBER} (${CURR_TIME})/" platform.txt - -cd .. -tar --transform "s|$FOLDERNAME|avr-hourly_b${BUILD_NUMBER}|g" --exclude=extras/** --exclude=.git* --exclude=.idea -cjf $FILENAME $FOLDERNAME -cd - - -mv ../$FILENAME . - -CHKSUM=`sha256sum $FILENAME | awk '{ print $1 }'` -SIZE=`wc -c $FILENAME | awk '{ print $1 }'` - -cat extras/package_index.json.Hourly.template | -sed "s/%%BUILD_NUMBER%%/${BUILD_NUMBER}/" | -sed "s/%%CURR_TIME%%/${CURR_TIME_SED}/" | -sed "s/%%VERSION%%/${VERSION}/" | -sed "s/%%FILENAME%%/${FILENAME}/" | -sed "s/%%CHECKSUM%%/${CHKSUM}/" | -sed "s/%%SIZE%%/${SIZE}/" > package_avr-hourly-build_index.json - diff --git a/extras/pack.pullrequest.bash b/extras/pack.pullrequest.bash deleted file mode 100755 index 64f5b95..0000000 --- a/extras/pack.pullrequest.bash +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -ex - -# pack.*.bash - Bash script to help packaging avr core releases. -# Copyright (c) 2015 Arduino LLC. All right reserved. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -PR_NUMBER=$1 -BUILD_NUMBER=$2 -VERSION=`grep version= platform.txt | sed 's/version=//g'` - -PWD=`pwd` -FOLDERNAME=`basename $PWD` -THIS_SCRIPT_NAME=`basename $0` -FILENAME=package_avr-b${BUILD_NUMBER}.tar.bz2 - -rm -f $FILENAME - -# Change name in platform.txt -sed -i "s/name=.*/name=SAMD Pull request #${PR_NUMBER} (Build ${BUILD_NUMBER})/" platform.txt - -cd .. -tar --transform "s|$FOLDERNAME|avr-PR${PR_NUMBER}_b${BUILD_NUMBER}|g" --exclude=extras/** --exclude=.git* --exclude=.idea -cjf $FILENAME $FOLDERNAME -cd - - -mv ../$FILENAME . - -CHKSUM=`sha256sum $FILENAME | awk '{ print $1 }'` -SIZE=`wc -c $FILENAME | awk '{ print $1 }'` - -cat extras/package_index.json.PR.template | -sed s/%%PR_NUMBER%%/${PR_NUMBER}/ | -sed s/%%BUILD_NUMBER%%/${BUILD_NUMBER}/ | -sed s/%%VERSION%%/${VERSION}-build-${BUILD_NUMBER}/ | -sed s/%%FILENAME%%/${FILENAME}/ | -sed s/%%CHECKSUM%%/${CHKSUM}/ | -sed s/%%SIZE%%/${SIZE}/ > package_avr-b${BUILD_NUMBER}_index.json - diff --git a/extras/pack.release.bash b/extras/pack.release.bash deleted file mode 100755 index a2999d5..0000000 --- a/extras/pack.release.bash +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -ex - -# pack.*.bash - Bash script to help packaging avr core releases. -# Copyright (c) 2015 Arduino LLC. All right reserved. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -VERSION=`grep version= platform.txt | sed 's/version=//g'` - -PWD=`pwd` -FOLDERNAME=`basename $PWD` -THIS_SCRIPT_NAME=`basename $0` - -rm -f avr-$VERSION.tar.bz2 - -cd .. -tar --transform "s|$FOLDERNAME|$FOLDERNAME-$VERSION|g" --exclude=extras/** --exclude=.git* --exclude=.idea -cjf avr-$VERSION.tar.bz2 $FOLDERNAME -cd - - -mv ../avr-$VERSION.tar.bz2 . - diff --git a/extras/package_index.json.Hourly.template b/extras/package_index.json.Hourly.template deleted file mode 100644 index 49c71dd..0000000 --- a/extras/package_index.json.Hourly.template +++ /dev/null @@ -1,72 +0,0 @@ -{ - "packages": [ - { - "name": "arduino-beta", - "maintainer": "Arduino Betatesting", - "websiteURL": "http://www.arduino.cc/", - "email": "packages@arduino.cc", - "help": { - "online": "http://www.arduino.cc/en/Reference/HomePage" - }, - "platforms": [ - { - "name": "Arduino AVR core - Hourly build", - "architecture": "avr", - "version": "%%VERSION%%", - "category": "Arduino", - "url": "http://downloads.arduino.cc/Hourly/avr/%%FILENAME%%", - "archiveFileName": "%%FILENAME%%", - "checksum": "SHA-256:%%CHECKSUM%%", - "size": "%%SIZE%%", - "boards": [ - {"name": "Arduino Yún"}, - {"name": "Arduino/Genuino Uno"}, - {"name": "Arduino Uno WiFi"}, - {"name": "Arduino Diecimila"}, - {"name": "Arduino Nano"}, - {"name": "Arduino/Genuino Mega"}, - {"name": "Arduino MegaADK"}, - {"name": "Arduino Leonardo"}, - {"name": "Arduino Leonardo Ethernet"}, - {"name": "Arduino/Genuino Micro"}, - {"name": "Arduino Esplora"}, - {"name": "Arduino Mini"}, - {"name": "Arduino Ethernet"}, - {"name": "Arduino Fio"}, - {"name": "Arduino BT"}, - {"name": "Arduino LilyPadUSB"}, - {"name": "Arduino Lilypad"}, - {"name": "Arduino Pro"}, - {"name": "Arduino ATMegaNG"}, - {"name": "Arduino Robot Control"}, - {"name": "Arduino Robot Motor"}, - {"name": "Arduino Gemma"}, - {"name": "Adafruit Circuit Playground"}, - {"name": "Arduino Yún Mini"}, - {"name": "Arduino Industrial 101"}, - {"name": "Linino One"} - ], - "toolsDependencies": [ - { - "packager": "arduino", - "name": "avr-gcc", - "version": "4.9.2-atmel3.5.4-arduino2" - }, - { - "packager": "arduino", - "name": "avrdude", - "version": "6.3.0-arduino9" - }, - { - "packager": "arduino", - "name": "arduinoOTA", - "version": "1.1.1" - } - ] - } - ], - "tools": [ - ] - } - ] -} diff --git a/extras/package_index.json.PR.template b/extras/package_index.json.PR.template deleted file mode 100644 index 17cfa50..0000000 --- a/extras/package_index.json.PR.template +++ /dev/null @@ -1,72 +0,0 @@ -{ - "packages": [ - { - "name": "arduino-beta", - "maintainer": "Arduino Betatesting", - "websiteURL": "http://www.arduino.cc/", - "email": "packages@arduino.cc", - "help": { - "online": "http://www.arduino.cc/en/Reference/HomePage" - }, - "platforms": [ - { - "name": "Arduino AVR core - Pull request #%%PR_NUMBER%% (build %%BUILD_NUMBER%%)", - "architecture": "avr", - "version": "%%VERSION%%", - "category": "Arduino", - "url": "http://downloads.arduino.cc/PR/a/%%FILENAME%%", - "archiveFileName": "%%FILENAME%%", - "checksum": "SHA-256:%%CHECKSUM%%", - "size": "%%SIZE%%", - "boards": [ - {"name": "Arduino Yún"}, - {"name": "Arduino/Genuino Uno"}, - {"name": "Arduino Uno WiFi"}, - {"name": "Arduino Diecimila"}, - {"name": "Arduino Nano"}, - {"name": "Arduino/Genuino Mega"}, - {"name": "Arduino MegaADK"}, - {"name": "Arduino Leonardo"}, - {"name": "Arduino Leonardo Ethernet"}, - {"name": "Arduino/Genuino Micro"}, - {"name": "Arduino Esplora"}, - {"name": "Arduino Mini"}, - {"name": "Arduino Ethernet"}, - {"name": "Arduino Fio"}, - {"name": "Arduino BT"}, - {"name": "Arduino LilyPadUSB"}, - {"name": "Arduino Lilypad"}, - {"name": "Arduino Pro"}, - {"name": "Arduino ATMegaNG"}, - {"name": "Arduino Robot Control"}, - {"name": "Arduino Robot Motor"}, - {"name": "Arduino Gemma"}, - {"name": "Adafruit Circuit Playground"}, - {"name": "Arduino Yún Mini"}, - {"name": "Arduino Industrial 101"}, - {"name": "Linino One"} - ], - "toolsDependencies": [ - { - "packager": "arduino", - "name": "avr-gcc", - "version": "4.9.2-atmel3.5.4-arduino2" - }, - { - "packager": "arduino", - "name": "avrdude", - "version": "6.3.0-arduino9" - }, - { - "packager": "arduino", - "name": "arduinoOTA", - "version": "1.1.1" - } - ] - } - ], - "tools": [ - ] - } - ] -} -- cgit v1.2.3-18-g5258 From 4a7ef06b516dba4cdda939a16e5458c59592f6b1 Mon Sep 17 00:00:00 2001 From: David Madison Date: Fri, 15 Feb 2019 12:08:19 -0500 Subject: Delete 'firmwares' folder --- firmwares/arduinoISP/readme.txt | 5 - ...INED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex | 467 - ...BINED-dfu-usbserial-atmega16u2-MegaADK-Rev3.hex | 467 - ...-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex | 467 - ...MBINED-dfu-usbserial-atmega16u2-Mega2560-R3.hex | 490 - ...no-COMBINED-dfu-usbserial-atmega16u2-Uno-R3.hex | 490 - .../atmegaxxu2/MEGA-dfu_and_usbserial_combined.hex | 234 - firmwares/atmegaxxu2/README.txt | 33 - .../atmegaxxu2/UNO-dfu_and_usbserial_combined.hex | 234 - .../atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.c | 728 - .../atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.h | 220 - firmwares/atmegaxxu2/arduino-usbdfu/Board/LEDs.h | 110 - firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.c | 189 - firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.h | 177 - firmwares/atmegaxxu2/arduino-usbdfu/makefile | 710 - firmwares/atmegaxxu2/arduino-usbdfu/readme.txt | 7 - .../Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex | 254 - .../Arduino-usbserial-atmega16u2-MegaADK-Rev3.hex | 254 - .../Arduino-usbserial-atmega16u2-Uno-Rev3.hex | 254 - .../arduino-usbserial/Arduino-usbserial-mega.hex | 256 - .../arduino-usbserial/Arduino-usbserial-uno.hex | 256 - .../arduino-usbserial/Arduino-usbserial.c | 242 - .../arduino-usbserial/Arduino-usbserial.h | 79 - .../atmegaxxu2/arduino-usbserial/Board/LEDs.h | 110 - .../atmegaxxu2/arduino-usbserial/Descriptors.c | 277 - .../atmegaxxu2/arduino-usbserial/Descriptors.h | 88 - .../Genuino-usbserial-atmega16u2-Mega2560-R3.hex | 248 - .../Genuino-usbserial-atmega16u2-Uno-R3.hex | 248 - .../arduino-usbserial/Lib/LightweightRingBuff.h | 197 - firmwares/atmegaxxu2/arduino-usbserial/makefile | 776 - firmwares/atmegaxxu2/arduino-usbserial/readme.txt | 13 - firmwares/wifishield/binary/wifiHD.elf | Bin 724331 -> 0 bytes firmwares/wifishield/binary/wifiHD.hex | 16358 ---------------- firmwares/wifishield/binary/wifiHD_2_1.elf | Bin 1308530 -> 0 bytes firmwares/wifishield/binary/wifi_dnld.elf | Bin 182489 -> 0 bytes firmwares/wifishield/binary/wifi_dnld.hex | 10470 ---------- firmwares/wifishield/binary/wifi_dnld_2_1.elf | Bin 182264 -> 0 bytes .../scripts/ArduinoWifiShield_upgrade.sh | 120 - .../scripts/ArduinoWifiShield_upgrade_mac.sh | 96 - firmwares/wifishield/wifiHD/.cproject | 4045 ---- firmwares/wifishield/wifiHD/.project | 77 - firmwares/wifishield/wifiHD/Release/wifiHD.elf | Bin 724331 -> 0 bytes firmwares/wifishield/wifiHD/Release/wifiHD.hex | 16358 ---------------- .../wifishield/wifiHD/src/CONFIG/conf_access.h | 170 - .../wifishield/wifiHD/src/CONFIG/conf_at45dbx.h | 83 - firmwares/wifishield/wifiHD/src/CONFIG/conf_ebi.h | 108 - .../wifishield/wifiHD/src/CONFIG/conf_sd_mmc_spi.h | 73 - .../wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x | 74 - .../SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h | 237 - .../src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c | 346 - .../src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h | 191 - .../SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h | 433 - .../src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c | 346 - .../src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h | 187 - .../wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h | 120 - .../src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my | 120 - .../COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c | 653 - .../COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h | 270 - .../MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c | 234 - .../MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h | 164 - .../HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a | Bin 11978 -> 0 bytes .../HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a | Bin 13134 -> 0 bytes .../UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a | Bin 1007102 -> 0 bytes .../HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a | Bin 11946 -> 0 bytes .../HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a | Bin 13110 -> 0 bytes .../UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a | Bin 1004426 -> 0 bytes .../COMPONENTS/WIFI/HD/v2.7.0/revision.txt | 1 - .../SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h | 1687 -- .../SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h | 19287 ------------------- .../SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h | 35 - .../COMPONENTS/WIFI/HD/wl_sdio.h | 172 - .../SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h | 185 - .../COMPONENTS/WIFI/HD/wlap_api.h | 154 - .../DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h | 309 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c | 995 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h | 68 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c | 183 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h | 275 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c | 1117 -- .../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h | 1002 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c | 458 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h | 583 - .../SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x | 239 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c | 214 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h | 100 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c | 296 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h | 251 - .../wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c | 546 - .../wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h | 493 - .../SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c | 268 - .../DRIVERS/PM/power_clocks_lib.c | 566 - .../DRIVERS/PM/power_clocks_lib.h | 379 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c | 213 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h | 191 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c | 443 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h | 342 - .../wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c | 314 - .../wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h | 591 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c | 914 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h | 889 - .../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c | 87 - .../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h | 80 - .../SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c | 1724 -- .../SERVICES/LWIP/lwip-1.3.2/src/core/dns.c | 982 - .../SERVICES/LWIP/lwip-1.3.2/src/core/init.c | 276 - .../LWIP/lwip-1.3.2/src/core/ipv4/autoip.c | 499 - .../SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c | 333 - .../SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c | 759 - .../SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c | 280 - .../LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c | 440 - .../SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c | 725 - .../LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c | 86 - .../LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c | 794 - .../SERVICES/LWIP/lwip-1.3.2/src/core/mem.c | 635 - .../SERVICES/LWIP/lwip-1.3.2/src/core/memp.c | 388 - .../SERVICES/LWIP/lwip-1.3.2/src/core/netif.c | 683 - .../SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c | 931 - .../SERVICES/LWIP/lwip-1.3.2/src/core/raw.c | 355 - .../SERVICES/LWIP/lwip-1.3.2/src/core/stats.c | 151 - .../SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c | 1463 -- .../SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c | 1508 -- .../SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c | 1071 - .../SERVICES/LWIP/lwip-1.3.2/src/core/udp.c | 843 - .../LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h | 118 - .../LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h | 113 - .../LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h | 164 - .../LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h | 105 - .../lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h | 62 - .../LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h | 200 - .../lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h | 175 - .../lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h | 78 - .../LWIP/lwip-1.3.2/src/include/lwip/api.h | 224 - .../LWIP/lwip-1.3.2/src/include/lwip/api_msg.h | 164 - .../LWIP/lwip-1.3.2/src/include/lwip/arch.h | 235 - .../LWIP/lwip-1.3.2/src/include/lwip/debug.h | 100 - .../LWIP/lwip-1.3.2/src/include/lwip/def.h | 49 - .../LWIP/lwip-1.3.2/src/include/lwip/dhcp.h | 248 - .../LWIP/lwip-1.3.2/src/include/lwip/dns.h | 99 - .../LWIP/lwip-1.3.2/src/include/lwip/err.h | 89 - .../LWIP/lwip-1.3.2/src/include/lwip/init.h | 74 - .../LWIP/lwip-1.3.2/src/include/lwip/mem.h | 109 - .../LWIP/lwip-1.3.2/src/include/lwip/memp.h | 118 - .../LWIP/lwip-1.3.2/src/include/lwip/memp_std.h | 104 - .../LWIP/lwip-1.3.2/src/include/lwip/netbuf.h | 88 - .../LWIP/lwip-1.3.2/src/include/lwip/netdb.h | 113 - .../LWIP/lwip-1.3.2/src/include/lwip/netif.h | 265 - .../LWIP/lwip-1.3.2/src/include/lwip/netifapi.h | 107 - .../LWIP/lwip-1.3.2/src/include/lwip/opt.h | 1842 -- .../LWIP/lwip-1.3.2/src/include/lwip/pbuf.h | 122 - .../LWIP/lwip-1.3.2/src/include/lwip/raw.h | 99 - .../LWIP/lwip-1.3.2/src/include/lwip/sio.h | 143 - .../LWIP/lwip-1.3.2/src/include/lwip/snmp.h | 366 - .../LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h | 103 - .../LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h | 313 - .../lwip-1.3.2/src/include/lwip/snmp_structs.h | 264 - .../LWIP/lwip-1.3.2/src/include/lwip/sockets.h | 359 - .../LWIP/lwip-1.3.2/src/include/lwip/stats.h | 285 - .../LWIP/lwip-1.3.2/src/include/lwip/sys.h | 245 - .../LWIP/lwip-1.3.2/src/include/lwip/tcp.h | 709 - .../LWIP/lwip-1.3.2/src/include/lwip/tcpip.h | 143 - .../LWIP/lwip-1.3.2/src/include/lwip/udp.h | 155 - .../LWIP/lwip-1.3.2/src/include/netif/etharp.h | 194 - .../LWIP/lwip-1.3.2/src/include/netif/loopif.h | 55 - .../LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h | 163 - .../LWIP/lwip-1.3.2/src/include/netif/slipif.h | 53 - .../SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c | 1224 -- .../SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c | 68 - .../LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h | 79 - .../LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h | 7 - .../LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h | 426 - .../lwip-port-1.3.2/HD/if/include/netif/wlif.h | 10 - .../LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c | 386 - .../SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt | 1 - .../SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c | 571 - .../SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h | 369 - .../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c | 133 - .../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h | 116 - .../SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c | 215 - .../SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h | 294 - .../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h | 63 - .../LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h | 120 - .../LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h | 82 - .../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h | 174 - .../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h | 208 - .../libnewlib_addons-at32ucr2-speed_opt.a | Bin 25540 -> 0 bytes .../AT32UC3A/0512/GCC/link_uc3a0512.lds | 266 - .../AT32UC3A/1256/GCC/link_uc3a1256.lds | 266 - .../UTILS/PREPROCESSOR/mrepeat.h | 328 - .../UTILS/PREPROCESSOR/preprocessor.h | 55 - .../UTILS/PREPROCESSOR/stringz.h | 75 - .../SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h | 95 - .../UTILS/STARTUP_FILES/GCC/crt0.x | 121 - .../wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h | 1145 -- .../wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h | 136 - .../wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h | 203 - firmwares/wifishield/wifiHD/src/ard_spi.c | 1969 -- firmwares/wifishield/wifiHD/src/ard_spi.h | 88 - firmwares/wifishield/wifiHD/src/ard_tcp.c | 987 - firmwares/wifishield/wifiHD/src/ard_tcp.h | 124 - firmwares/wifishield/wifiHD/src/ard_utils.c | 347 - firmwares/wifishield/wifiHD/src/ard_utils.h | 295 - firmwares/wifishield/wifiHD/src/avr32_spi.c | 394 - firmwares/wifishield/wifiHD/src/board_init.c | 297 - firmwares/wifishield/wifiHD/src/board_init.h | 313 - firmwares/wifishield/wifiHD/src/cmd_wl.c | 731 - firmwares/wifishield/wifiHD/src/cmd_wl.h | 66 - firmwares/wifishield/wifiHD/src/console.c | 212 - firmwares/wifishield/wifiHD/src/console.h | 46 - firmwares/wifishield/wifiHD/src/debug.h | 191 - firmwares/wifishield/wifiHD/src/fw_download.h | 38 - .../wifishield/wifiHD/src/fw_download_extflash.c | 82 - firmwares/wifishield/wifiHD/src/license.txt | 42 - firmwares/wifishield/wifiHD/src/lwip_setup.c | 145 - firmwares/wifishield/wifiHD/src/lwip_setup.h | 30 - firmwares/wifishield/wifiHD/src/lwipopts.h | 450 - firmwares/wifishield/wifiHD/src/main.c | 454 - firmwares/wifishield/wifiHD/src/nvram.c | 153 - firmwares/wifishield/wifiHD/src/nvram.h | 10 - firmwares/wifishield/wifiHD/src/owl_os.c | 140 - firmwares/wifishield/wifiHD/src/ping.c | 340 - firmwares/wifishield/wifiHD/src/ping.h | 45 - firmwares/wifishield/wifiHD/src/printf-stdarg.c | 323 - firmwares/wifishield/wifiHD/src/printf-stdarg.h | 34 - firmwares/wifishield/wifiHD/src/timer.c | 232 - firmwares/wifishield/wifiHD/src/timer.h | 51 - firmwares/wifishield/wifiHD/src/top_defs.h | 120 - firmwares/wifishield/wifiHD/src/trace.h | 44 - firmwares/wifishield/wifiHD/src/util.c | 260 - firmwares/wifishield/wifiHD/src/util.h | 71 - firmwares/wifishield/wifiHD/src/wifi_spi.h | 160 - firmwares/wifishield/wifiHD/src/wl_cm.c | 431 - firmwares/wifishield/wifiHD/src/wl_cm.h | 51 - firmwares/wifishield/wifiHD/src/wl_definitions.h | 39 - firmwares/wifishield/wifiHD/wifiHD.cproj | 1291 -- firmwares/wifishield/wifi_dnld/.cproject | 1281 -- firmwares/wifishield/wifi_dnld/.project | 70 - .../wifishield/wifi_dnld/Release/wifi_dnld.elf | Bin 182489 -> 0 bytes .../wifishield/wifi_dnld/src/CONFIG/conf_access.h | 170 - .../wifishield/wifi_dnld/src/CONFIG/conf_at45dbx.h | 83 - .../wifi_dnld/src/Doc/SPB104 product brief.pdf | Bin 760252 -> 0 bytes .../wifi_dnld/src/Doc/gettingstarted.pdf | Bin 701930 -> 0 bytes .../src/SOFTWARE_FRAMEWORK/ASM/trampoline.x | 74 - .../SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h | 234 - .../src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c | 346 - .../src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h | 191 - .../SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h | 433 - .../src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c | 346 - .../src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h | 187 - .../src/SOFTWARE_FRAMEWORK/BOARDS/board.h | 120 - .../src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori | 121 - .../COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c | 672 - .../COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h | 269 - .../MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c | 234 - .../MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h | 164 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c | 1117 -- .../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h | 1002 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c | 458 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h | 583 - .../SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x | 239 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c | 214 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h | 100 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c | 546 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h | 493 - .../SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c | 268 - .../DRIVERS/PM/power_clocks_lib.c | 566 - .../DRIVERS/PM/power_clocks_lib.h | 379 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c | 443 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h | 342 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c | 914 - .../src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h | 889 - .../SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c | 571 - .../SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h | 369 - .../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c | 119 - .../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h | 116 - .../SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c | 215 - .../SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h | 294 - .../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h | 63 - .../LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h | 120 - .../LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h | 82 - .../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h | 174 - .../UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h | 208 - .../libnewlib_addons-at32ucr2-speed_opt.a | Bin 25540 -> 0 bytes .../AT32UC3A/0512/GCC/link_uc3a0512.lds | 266 - .../AT32UC3A/1256/GCC/link_uc3a1256.lds | 266 - .../UTILS/PREPROCESSOR/mrepeat.h | 328 - .../UTILS/PREPROCESSOR/preprocessor.h | 55 - .../UTILS/PREPROCESSOR/stringz.h | 75 - .../SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h | 95 - .../UTILS/STARTUP_FILES/GCC/crt0.x | 121 - .../src/SOFTWARE_FRAMEWORK/UTILS/compiler.h | 1145 -- .../src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h | 136 - .../wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h | 203 - firmwares/wifishield/wifi_dnld/src/clocks.c | 101 - firmwares/wifishield/wifi_dnld/src/clocks.h | 78 - firmwares/wifishield/wifi_dnld/src/flash_fw.c | 125 - firmwares/wifishield/wifi_dnld/src/license.txt | 42 - firmwares/wifishield/wifi_dnld/src/nor_flash.c | 99 - firmwares/wifishield/wifi_dnld/src/nor_flash.h | 41 - firmwares/wifishield/wifi_dnld/src/printf-stdarg.c | 323 - firmwares/wifishield/wifi_dnld/src/printf-stdarg.h | 36 - firmwares/wifishield/wifi_dnld/src/startup.c | 75 - firmwares/wifishield/wifi_dnld/src/startup.h | 35 - firmwares/wifishield/wifi_dnld/src/wl_fw.h | 19287 ------------------- firmwares/wifishield/wifi_dnld/wifi_dnld.cproj | 495 - firmwares/wifishield/wifishield.atsln | 36 - 305 files changed, 175254 deletions(-) delete mode 100644 firmwares/arduinoISP/readme.txt delete mode 100644 firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex delete mode 100644 firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-MegaADK-Rev3.hex delete mode 100644 firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex delete mode 100644 firmwares/atmegaxxu2/Genuino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-R3.hex delete mode 100644 firmwares/atmegaxxu2/Genuino-COMBINED-dfu-usbserial-atmega16u2-Uno-R3.hex delete mode 100644 firmwares/atmegaxxu2/MEGA-dfu_and_usbserial_combined.hex delete mode 100644 firmwares/atmegaxxu2/README.txt delete mode 100644 firmwares/atmegaxxu2/UNO-dfu_and_usbserial_combined.hex delete mode 100644 firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.c delete mode 100644 firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.h delete mode 100644 firmwares/atmegaxxu2/arduino-usbdfu/Board/LEDs.h delete mode 100644 firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.c delete mode 100644 firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.h delete mode 100644 firmwares/atmegaxxu2/arduino-usbdfu/makefile delete mode 100644 firmwares/atmegaxxu2/arduino-usbdfu/readme.txt delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-MegaADK-Rev3.hex delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Uno-Rev3.hex delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-mega.hex delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.c delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.h delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Board/LEDs.h delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Descriptors.c delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Descriptors.h delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Genuino-usbserial-atmega16u2-Mega2560-R3.hex delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Genuino-usbserial-atmega16u2-Uno-R3.hex delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/Lib/LightweightRingBuff.h delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/makefile delete mode 100644 firmwares/atmegaxxu2/arduino-usbserial/readme.txt delete mode 100644 firmwares/wifishield/binary/wifiHD.elf delete mode 100644 firmwares/wifishield/binary/wifiHD.hex delete mode 100644 firmwares/wifishield/binary/wifiHD_2_1.elf delete mode 100644 firmwares/wifishield/binary/wifi_dnld.elf delete mode 100644 firmwares/wifishield/binary/wifi_dnld.hex delete mode 100644 firmwares/wifishield/binary/wifi_dnld_2_1.elf delete mode 100755 firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh delete mode 100755 firmwares/wifishield/scripts/ArduinoWifiShield_upgrade_mac.sh delete mode 100644 firmwares/wifishield/wifiHD/.cproject delete mode 100644 firmwares/wifishield/wifiHD/.project delete mode 100644 firmwares/wifishield/wifiHD/Release/wifiHD.elf delete mode 100644 firmwares/wifishield/wifiHD/Release/wifiHD.hex delete mode 100644 firmwares/wifishield/wifiHD/src/CONFIG/conf_access.h delete mode 100644 firmwares/wifishield/wifiHD/src/CONFIG/conf_at45dbx.h delete mode 100644 firmwares/wifishield/wifiHD/src/CONFIG/conf_ebi.h delete mode 100644 firmwares/wifishield/wifiHD/src/CONFIG/conf_sd_mmc_spi.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/revision.txt delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_sdio.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wlap_api.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dns.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/init.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/autoip.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/mem.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/memp.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/netif.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/raw.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/stats.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/udp.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api_msg.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/arch.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/debug.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/def.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dhcp.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dns.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/err.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/init.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/mem.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp_std.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netbuf.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netdb.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netif.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netifapi.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/opt.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/pbuf.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/raw.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sio.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_structs.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sockets.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/stats.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sys.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcp.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcpip.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/udp.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/etharp.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/loopif.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/slipif.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/netif/wlif.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h delete mode 100644 firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h delete mode 100644 firmwares/wifishield/wifiHD/src/ard_spi.c delete mode 100644 firmwares/wifishield/wifiHD/src/ard_spi.h delete mode 100644 firmwares/wifishield/wifiHD/src/ard_tcp.c delete mode 100644 firmwares/wifishield/wifiHD/src/ard_tcp.h delete mode 100644 firmwares/wifishield/wifiHD/src/ard_utils.c delete mode 100644 firmwares/wifishield/wifiHD/src/ard_utils.h delete mode 100644 firmwares/wifishield/wifiHD/src/avr32_spi.c delete mode 100644 firmwares/wifishield/wifiHD/src/board_init.c delete mode 100644 firmwares/wifishield/wifiHD/src/board_init.h delete mode 100644 firmwares/wifishield/wifiHD/src/cmd_wl.c delete mode 100644 firmwares/wifishield/wifiHD/src/cmd_wl.h delete mode 100644 firmwares/wifishield/wifiHD/src/console.c delete mode 100644 firmwares/wifishield/wifiHD/src/console.h delete mode 100644 firmwares/wifishield/wifiHD/src/debug.h delete mode 100644 firmwares/wifishield/wifiHD/src/fw_download.h delete mode 100644 firmwares/wifishield/wifiHD/src/fw_download_extflash.c delete mode 100644 firmwares/wifishield/wifiHD/src/license.txt delete mode 100644 firmwares/wifishield/wifiHD/src/lwip_setup.c delete mode 100644 firmwares/wifishield/wifiHD/src/lwip_setup.h delete mode 100644 firmwares/wifishield/wifiHD/src/lwipopts.h delete mode 100644 firmwares/wifishield/wifiHD/src/main.c delete mode 100644 firmwares/wifishield/wifiHD/src/nvram.c delete mode 100644 firmwares/wifishield/wifiHD/src/nvram.h delete mode 100644 firmwares/wifishield/wifiHD/src/owl_os.c delete mode 100644 firmwares/wifishield/wifiHD/src/ping.c delete mode 100644 firmwares/wifishield/wifiHD/src/ping.h delete mode 100644 firmwares/wifishield/wifiHD/src/printf-stdarg.c delete mode 100644 firmwares/wifishield/wifiHD/src/printf-stdarg.h delete mode 100644 firmwares/wifishield/wifiHD/src/timer.c delete mode 100644 firmwares/wifishield/wifiHD/src/timer.h delete mode 100644 firmwares/wifishield/wifiHD/src/top_defs.h delete mode 100644 firmwares/wifishield/wifiHD/src/trace.h delete mode 100644 firmwares/wifishield/wifiHD/src/util.c delete mode 100644 firmwares/wifishield/wifiHD/src/util.h delete mode 100644 firmwares/wifishield/wifiHD/src/wifi_spi.h delete mode 100644 firmwares/wifishield/wifiHD/src/wl_cm.c delete mode 100644 firmwares/wifishield/wifiHD/src/wl_cm.h delete mode 100644 firmwares/wifishield/wifiHD/src/wl_definitions.h delete mode 100644 firmwares/wifishield/wifiHD/wifiHD.cproj delete mode 100644 firmwares/wifishield/wifi_dnld/.cproject delete mode 100644 firmwares/wifishield/wifi_dnld/.project delete mode 100644 firmwares/wifishield/wifi_dnld/Release/wifi_dnld.elf delete mode 100644 firmwares/wifishield/wifi_dnld/src/CONFIG/conf_access.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/CONFIG/conf_at45dbx.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/Doc/SPB104 product brief.pdf delete mode 100644 firmwares/wifishield/wifi_dnld/src/Doc/gettingstarted.pdf delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/clocks.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/clocks.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/flash_fw.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/license.txt delete mode 100644 firmwares/wifishield/wifi_dnld/src/nor_flash.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/nor_flash.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/printf-stdarg.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/printf-stdarg.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/startup.c delete mode 100644 firmwares/wifishield/wifi_dnld/src/startup.h delete mode 100644 firmwares/wifishield/wifi_dnld/src/wl_fw.h delete mode 100644 firmwares/wifishield/wifi_dnld/wifi_dnld.cproj delete mode 100644 firmwares/wifishield/wifishield.atsln diff --git a/firmwares/arduinoISP/readme.txt b/firmwares/arduinoISP/readme.txt deleted file mode 100644 index a150f96..0000000 --- a/firmwares/arduinoISP/readme.txt +++ /dev/null @@ -1,5 +0,0 @@ - -You can download the ArduinoISP firmware source files from: - -https://github.com/arduino/ArduinoISP - diff --git a/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex b/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex deleted file mode 100644 index 7720cf4..0000000 --- a/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex +++ /dev/null @@ -1,467 +0,0 @@ -:1000000090C00000A9C00000A7C00000A5C000006B -:10001000A3C00000A1C000009FC000009DC0000060 -:100020009BC0000099C0000097C0000048C40000B9 -:100030000CC4000091C000008FC000008DC0000003 -:100040008BC0000089C0000087C0000085C0000090 -:1000500083C0000081C000007FC0000002C100001A -:100060007BC0000079C0000077C0000075C00000B0 -:1000700073C0000071C000006FC000006DC00000C0 -:100080006BC0000069C0000067C0000065C00000D0 -:1000900063C0000061C000001201100102000008EE -:1000A0004123420001000102DC0109023E0002017D -:1000B00000C0320904000001020201000524000111 -:1000C0001004240206052406000107058203080027 -:1000D000FF09040100020A000000070504024000B5 -:1000E00001070583024000010403090432034100B3 -:1000F00072006400750069006E006F002000280027 -:100100007700770077002E006100720064007500B0 -:1001100069006E006F002E0063006300290000007C -:10012000000011241FBECFEFD2E0DEBFCDBF11E033 -:10013000A0E0B1E0ECEAFFE002C005900D92A6312C -:10014000B107D9F712E0A6E1B1E001C01D92AF32CC -:10015000B107E1F7F1D028C753CF9C01DC01AE57BE -:10016000BF4FED91FC91119741911196FC93EE9345 -:1001700080589F4FE817F90711F42D933C939FB7D0 -:10018000F894F901EC57FF4F8081815080839FBF25 -:10019000842F0895DF92EF92FF920F931F93FC013B -:1001A0008489813019F0823021F405C040E3D42ED7 -:1001B00004C0DD2402C030E2D32E8389823011F4E2 -:1001C00088E0D82A8589873031F0883031F0863050 -:1001D00031F482E003C084E001C086E0D82A1092A6 -:1001E000C9001092C8001092CA00E784F088018903 -:1001F000128980E0E81681EEF80680E0080780E0CA -:10020000180719F420E130E00FC0C801B701969536 -:1002100087957795679560587B47814E9F4FA801DA -:100220009701A0D6215030403093CD002093CC00D0 -:10023000D092CA0080E0E81681EEF80680E0080758 -:1002400080E0180711F082E001C080E08093C800D0 -:1002500088E98093C9001F910F91FF90EF90DF9084 -:1002600008951F920F920FB60F9211242F938F9320 -:100270009F93EF93FF939091CE008EB38430F1F46F -:10028000E0919901F0919A019083E0919901F091A8 -:100290009A01CF01019690939A018093990189590F -:1002A000914021F489E191E0928381839FB7F89492 -:1002B00080919D018F5F80939D019FBFFF91EF9182 -:1002C0009F918F912F910F900FBE0F901F901895B7 -:1002D000FC01858580FF02C05F9808955F9A0895AC -:1002E00080E091E0D5C580E091E088C584B7877F44 -:1002F00084BF28E10FB6F89420936000109260004C -:100300000FBE87E690E09093CD008093CC0086E00E -:100310008093CA001092C8002093C900539A5A9A39 -:100320008AB180638AB98BB180638BB983D284E050 -:1003300085BD5F9A579A08950F931F93CF93DF93CC -:10034000D5DF2FB7F8948EE991E090931F02809348 -:100350001E0290932102809320022FBF2FB7F894A2 -:1003600089E191E090939A018093990190939C0187 -:1003700080939B012FBF7894CEE9D1E003E08FB743 -:10038000F894909122028FBF903809F180E091E0BB -:10039000ABD497FD1CC0E0911E02F0911F02808338 -:1003A000E0911E02F0911F02CF01019690931F026F -:1003B00080931E028E51924011F4D283C1839FB765 -:1003C000F894809122028F5F809322029FBF8FB7A3 -:1003D000F89410919D018FBFA89902C0113678F151 -:1003E000A89A80919D01882361F05D980093160181 -:1003F00008C089E191E0B1DE682F80E091E0DAD4B5 -:1004000011501123B1F780911601882351F080918A -:10041000160181508093160180911601882309F4FA -:100420005D9A80911701882351F0809117018150C6 -:100430008093170180911701882309F45C9A8FB784 -:10044000F894909122028FBF992369F08EE991E090 -:1004500084DE982F8091C80085FFFCCF9093CE005A -:100460005C980093170180E091E095D42AD487CF5F -:10047000DA01923049F0933061F09130F9F4E8E913 -:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6 -:1004900019C0813049F0813018F0823079F408C0F9 -:1004A000E8EEF0E0849107C0ECEEF0E0849103C048 -:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9 -:1004C00020E030E0ED93FC93C901089528E030E08E -:1004D00040E003C04F5F220F331F28173907D0F3C6 -:1004E000842F8295807F08958093E9008091EB00AE -:1004F00081608093EB001092ED006093EC004093DC -:10050000ED008091EE00881F8827881F08951092C3 -:10051000F40090E09093E9001092F0001092E8004F -:100520001092ED008091EB008E7F8093EB009F5F37 -:10053000953081F708958091270288238CF403C0B9 -:100540008EB38823B1F08091E80082FFF9CF8091CB -:10055000E8008B778093E80008958EB3882349F0F4 -:100560008091E80080FFF9CF8091E8008E7780933A -:10057000E800089594E68091EC0080FF05C080912A -:10058000E80080FF05C023C08091E80082FD1FC005 -:100590008EB3882311F482E008958EB3853011F470 -:1005A00083E008958091EB0085FF02C081E008950B -:1005B0008091E10082FFDFCF8091E1008B7F80930B -:1005C000E100992311F484E008959150D4CF80E0A4 -:1005D00008959C0140912D0250912E024617570715 -:1005E00018F4F90120E038C06115710511F0AB0174 -:1005F000F8CF8091E8008E778093E80040E050E0EB -:10060000F0CF8091E80083FF02C081E008958091DF -:10061000E80082FD2DC08EB3882381F18EB3853032 -:1006200079F18091E80080FF17C09091F20006C038 -:1006300081918093F100415050409F5F41155105D9 -:1006400011F09830A8F320E0983009F421E080916F -:10065000E8008E778093E8004115510591F622233A -:1006600081F606C08EB3882349F08EB3853041F001 -:100670008091E80082FFF6CF80E0089582E008953F -:1006800083E008959C0140912D0250912E0246175F -:10069000570710F490E03BC06115710511F0AB01F4 -:1006A000F9CF8091E8008E778093E80040E050E039 -:1006B000F1CF8091E80083FF02C081E0089580912E -:1006C000E80082FD30C08EB3882399F18EB3853067 -:1006D00091F18091E80080FF1AC08091F20009C07A -:1006E000F9012F5F3F4FE491E093F10041505040FA -:1006F0008F5F4115510511F0883090F390E08830FC -:1007000009F491E08091E8008E778093E80041152C -:10071000510579F6992369F606C08EB3882349F00E -:100720008EB3853041F08091E80082FFF6CF80E003 -:10073000089582E0089583E008959C016115710594 -:1007400029F48091E8008B778093E800F90120C0BC -:100750008091E80083FF02C081E008958EB3882372 -:1007600039F18EB3853031F18091E80082FFF0CF0E -:1007700006C08091F10081936150704021F080911A -:10078000F2008823B1F78091E8008B778093E8002E -:1007900061157105E9F606C08EB3882349F08EB362 -:1007A000853041F08091E80080FFF6CF80E0089529 -:1007B00082E0089583E0089542D044D01EBA10929A -:1007C0002502109224021092230284E089BD89B58B -:1007D000826089BD09B400FEFDCF8091D800982FBA -:1007E0009F779093D80080688093D80080916300B1 -:1007F0008E7F809363008091D8008F7D8093D80096 -:100800008091E0008E7F8093E0008091E1008E7FF8 -:100810008093E1008091E20081608093E20080910A -:10082000E100877F8093E1008091E20088608093FF -:10083000E2000895C1DF81E08093260208951092BE -:10084000E20008951092E10008951F920F920FB6F2 -:100850000F9211241F932F933F934F935F936F93A6 -:100860007F938F939F93AF93BF93EF93FF93E9EEA3 -:10087000F0E0108117701082E0EFF0E08081877F58 -:1008800080837894C3D0F894A9EEB0E01C92E0EF96 -:10089000F0E08081886080831C93FF91EF91BF918D -:1008A000AF919F918F917F916F915F914F913F9108 -:1008B0002F911F910F900FBE0F901F9018951F92B0 -:1008C0000F920FB60F9211242F933F934F935F9384 -:1008D0006F937F938F939F93AF93BF93EF93FF9308 -:1008E0008091E10080FF1BC08091E20080FF17C073 -:1008F0008091E1008E7F8093E1008091E2008E7F05 -:100900008093E2008091E20080618093E200809118 -:10091000D80080628093D80019BC1EBAD1D18091D2 -:10092000E10084FF29C08091E20084FF25C084E0BB -:1009300089BD89B5826089BD09B400FEFDCF809173 -:10094000D8008F7D8093D8008091E1008F7E8093C6 -:10095000E1008091E2008F7E8093E2008091E200CE -:1009600081608093E20080912502882311F481E068 -:1009700001C084E08EBBA4D18091E10083FF27C039 -:100980008091E20083FF23C08091E100877F809304 -:10099000E10082E08EBB109225028091E1008E7F03 -:1009A0008093E1008091E2008E7F8093E20080914D -:1009B000E20080618093E200AADD80E060E042E036 -:1009C00093DD8091F00088608093F00079D1809170 -:1009D000E10082FF0AC08091E20082FF06C08091A0 -:1009E000E1008B7F8093E1006BD1FF91EF91BF918C -:1009F000AF919F918F917F916F915F914F913F91B7 -:100A00002F910F900FBE0F901F9018951F93DF939B -:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D -:100A2000CDBFE7E2F2E08091F100819322E0EF3266 -:100A3000F207C9F78091270230912802353009F476 -:100A400087C0363040F43130C9F1313070F0333086 -:100A500009F01DC133C0383009F4EFC0393009F452 -:100A6000FEC0363009F013C192C0803821F08238C0 -:100A700009F00DC108C090912302809124028823BF -:100A800099F0926011C080912B0287708093E900E9 -:100A90008091EB0090E025E0969587952A95E1F707 -:100AA000982F91701092E9008091E800877F8093E1 -:100AB000E8009093F1001092F100CAC0882319F069 -:100AC000823009F0E4C090E08F719070009721F0BF -:100AD000029709F0DDC00CC080912902813009F035 -:100AE000D7C010922402333069F5809324022AC0C3 -:100AF00080912902882331F520912B02277009F477 -:100B0000C7C02093E9008091EB0080FFC1C0333063 -:100B100021F48091EB00806213C08091EB00806132 -:100B20008093EB0081E090E002C0880F991F2A9526 -:100B3000E2F78093EA001092EA008091EB0088606F -:100B40008093EB001092E9008091E800877F83C0DA -:100B5000882309F09CC0109129028091E800877FCA -:100B60008093E800E8DC04C08EB3882309F490C0C9 -:100B70008091E80080FFF8CF812F8F7711F492E009 -:100B800001C093E09EBB80688093E30081C08058E1 -:100B9000823008F07CC08091290290912A0223E0E3 -:100BA0008C3D920799F55FB7F894DE0115964EE0FB -:100BB00020E030E061E2E42FF0E0609357008491A0 -:100BC00020FF03C082958F704F5F982F9F70892FF1 -:100BD000805D8A3308F0895F8C9311961C9211977F -:100BE0002F5F3F4F12962431310529F75FBF8AE20C -:100BF0008B8383E08C838091E800877F8093E8007B -:100C0000CE0103966AE270E0E4DC11C060912B0231 -:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2 -:100C2000E800877F8093E80089819A812BDD80919D -:100C3000E8008B778093E8002BC0803841F58091E5 -:100C4000E800877F8093E800809125028093F1007F -:100C50008091E8008E778093E8006DDC19C08823CE -:100C6000B1F490912902923098F48091E800877F46 -:100C70008093E800909325025EDC80912502882312 -:100C800011F483E001C084E08EBB2DDB01C028DBC2 -:100C90008091E80083FF0AC08091EB00806280931E -:100CA000EB008091E800877F8093E800AC960FB658 -:100CB000F894DEBF0FBECDBFCF91DF911F91089595 -:100CC00008951F938EB3882361F01091E90010926C -:100CD000E9008091E80083FF01C098DE177010934F -:100CE000E9001F9108950895FC018EB3843021F529 -:100CF00087859089A189B2890097A105B105E1F0A6 -:100D000085818093E9008091E80082FF15C0809181 -:100D1000F200882319F42FEF3FEF04C08091F10017 -:100D2000282F30E08091F200882341F48091E80080 -:100D30008B778093E80002C02FEF3FEFC901089541 -:100D4000FC018EB3843011F587859089A189B28921 -:100D50000097A105B105D1F081818093E9008091D0 -:100D6000F2008823A9F09091E8008091E8008E7746 -:100D70008093E80095FD0CC0FDDB982F882349F493 -:100D80008091E8008E778093E80003C092E001C074 -:100D900090E0892F0895FC018EB3843051F487854B -:100DA0009089A189B2890097A105B10511F0CF0101 -:100DB000C7CF08951F93FC01162F8EB38430D9F44A -:100DC00087859089A189B2890097A105B10599F01D -:100DD00081818093E9008091E80085FD08C08091C1 -:100DE000E8008E778093E800C5DB882329F4109310 -:100DF000F10080E001C082E01F9108950F931F93DE -:100E0000CF93DF93EC010D96FC0189E0DF011D9289 -:100E10008A95E9F72A813B8109818C81882311F425 -:100E200010E001C014E0C90151DB182B1260802FC3 -:100E300061E8412F59DB882329F12E813F810D8103 -:100E40008885882311F410E001C014E0C9013EDB5D -:100E5000182B1260802F60E8412F46DB882391F029 -:100E60002A853B8509858C85882311F410E001C013 -:100E700014E0C9012BDB182B1260802F61EC412F8D -:100E800033DB01C080E0DF91CF911F910F91089576 -:100E9000CF93DF93EC018091E80083FF60C08881ED -:100EA00090E020912B0230912C022817390709F08D -:100EB00056C080912802813261F0823220F4803263 -:100EC00009F04DC019C0823269F1833209F047C080 -:100ED00038C080912702813A09F041C08091E80032 -:100EE000877F8093E800CE010F9667E070E071DBAA -:100EF0008091E8008B7713C080912702813279F5C9 -:100F00008091E800877F8093E800CE010F9667E02C -:100F100070E013DCCE013ED98091E8008E7780939B -:100F2000E8001DC0809127028132C9F48091E80059 -:100F3000877F8093E800809129028D87CE01C8D9F0 -:100F40000DC080912702813251F48091E800877FA3 -:100F50008093E800CE0160912902C5DEECDADF91D2 -:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053 -:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749 -:100F800020F0A21BB30BE40BF50B661F771F881F25 -:100F9000991F1A9469F760957095809590959B01BB -:0C0FA000AC01BD01CF010895F894FFCF13 -:100FAC0000034000000440000002080000000000A4 -:060FBC000000000000002F -:103000004BC0000064C0000062C0000060C000004F -:103010005EC000005CC000005AC0000058C0000044 -:1030200056C0000054C0000052C00000EEC40000B2 -:103030004EC000004CC000004AC0000048C0000064 -:1030400046C0000044C0000042C0000040C0000074 -:103050003EC000003CC000003AC0000038C0000084 -:1030600036C0000034C0000032C0000030C0000094 -:103070002EC000002CC000002AC0000028C00000A4 -:1030800026C0000024C0000022C0000020C00000B4 -:103090001EC000001CC0000011241FBECFEFD2E0F4 -:1030A000DEBFCDBF11E0A0E0B1E0EAEFFCE302C07B -:1030B00005900D92AA33B107D9F711E0AAE3B1E068 -:1030C00001C01D92AB35B107E1F772D314C698CF9A -:1030D000982F15C08091F200882371F48091E80048 -:1030E0008B7F8093E80003C08EB3882351F08091DA -:1030F000E80082FFF9CF02C08091F100915099233E -:1031000049F7089520914A01309149018091480181 -:103110009091470180933F0190934001C9018093B2 -:103120004101909342010895DF93CF9300D000D0E6 -:1031300000D0CDB7DEB780914501843009F45AC084 -:10314000853030F4813059F0833009F0D7C01FC08A -:10315000853009F4A0C0863009F0D0C0C3C080918A -:103160004601823008F0CAC0CDDF80914601882335 -:1031700061F480913F019091400123E0FC01209394 -:103180005700E89507B600FCFDCF85E008C08091A8 -:103190004601882311F0823029F4B4DF89E080935E -:1031A0000101ACC0813009F0A9C020E030E040E06E -:1031B00050E0F90184918F3F81F0CA01AA27BB2713 -:1031C00080933E013093400120933F018AE0809339 -:1031D000010185E080933B0191C02F5F3F4F4F4F2E -:1031E0005F4F2030F0E33F07F0E04F07F0E05F076C -:1031F00001F784C080914601833051F581E08093CE -:103200003A0180914B0190914C01892B71F0809192 -:103210004701813009F072C080914A0190914901C3 -:1032200090933D0180933C0169C0809147018823C0 -:1032300061F42CE088E190E00FB6F894A8958093B3 -:1032400060000FBE2093600059C01092000156C06C -:10325000882309F053C0809147018F3F09F04EC089 -:10326000E0E0F0E093E085E090935700E89507B642 -:1032700000FCFDCF80935700E89507B600FCFDCF1A -:10328000E058FF4F20E3E030F20771F781E18093CF -:103290005700E89533C0DE011196E5E0F1E083E0E8 -:1032A00001900D928150E1F7DE011496E2E0F1E029 -:1032B00083E001900D928150E1F790914701809158 -:1032C0004601882329F4FE01E90FF11D818107C021 -:1032D0008130A1F4FE01BC97E90FF11D808180933C -:1032E00050010CC080914601833041F48091470128 -:1032F000882321F48091480180933E0126960FB6E1 -:10330000F894DEBF0FBECDBFCF91DF9108952F920D -:103310003F924F925F926F927F929F92AF92BF9235 -:10332000CF92DF92EF92FF920F931F93CF93DF9391 -:103330008091590190915A0190934C0180934B01D7 -:1033400080914D01882351F080914D0181508093EF -:103350004D0180914D01882309F45D9A80914E01C1 -:10336000882351F080914E01815080934E018091CD -:103370004E01882309F45C9A80915401833009F44A -:10338000B2C1843030F4813071F0823009F0E3C191 -:1033900011C1853009F4C5C1853008F4BAC1863041 -:1033A00009F0D9C1CDC15C9883E080934E01809132 -:1033B000E800877F8093E80080913A01882329F014 -:1033C000B3DE5D9A5C9A10923A0120914B013091E4 -:1033D0004C012115310529F42AC08EB3882309F444 -:1033E000BAC18091E80082FFF8CF8091F10080930C -:1033F00045012150304030934C0120934B01E6E4CD -:10340000F1E00CC08091F10081932150304081E0C7 -:10341000EB34F80719F43183208308C08091F2005F -:10342000882381F730934C0120934B017DDE8091FE -:103430000101853009F0BAC080914B0190914C0197 -:10344000892B21F482E080930101B0C08AE140DE43 -:1034500080913F018F713CDEC0914101D0914201CA -:1034600020913F013091400121968E01021B130BE8 -:10347000219780914601882309F093C01801369462 -:103480002794C901A0913E01B0E09C01AD0162E02A -:10349000E62EF12C012D112DE20EF31E041F151F37 -:1034A00059016A0190E099249394B5E0A3E048C0E3 -:1034B0008091F200882371F48091E8008B7F8093E3 -:1034C000E80004C08EB3882309F445C18091E80068 -:1034D00082FFF8CF0894210831088091F100682F0D -:1034E0008091F100782FF5010B0190925700E8953B -:1034F00011249F5F903419F021143104A1F4F901D3 -:10350000B0935700E89507B600FCFDCF21143104B5 -:1035100051F0F701A0935700E89507B600FCFDCFE6 -:10352000A801970190E042E0442E512C612C712CAF -:10353000E40CF51C061D171DA40CB51CC61CD71CDD -:103540002114310409F0B4CFD0934001C0933F015E -:1035500081E180935700E89527C08091F20088238D -:1035600071F48091E8008B7F8093E80004C08EB3F3 -:10357000882309F4F0C08091E80082FFF8CF6091C1 -:10358000F10080913F0190914001A7D380913F01CC -:103590009091400101969093400180933F0101502A -:1035A000104001151105C9F680E192DD8091E80017 -:1035B0008B7FC3C08091E800877F8093E8005D988F -:1035C00083E080934D0104C08EB3882309F4C3C007 -:1035D0008091E80080FFF8CF80910101893091F05F -:1035E0008A3069F480914601813049F480913F012D -:1035F000909140018093F1009093F1009BC08091E5 -:10360000500196C0609141017091420120913F01AB -:10361000309140016F5F7F4F7B01E21AF30A6150E6 -:10362000704080914601882389F58701169507959A -:10363000C901A0913E01B0E09C01AD011FC0809185 -:10364000F200803271F48091E8008E7F8093E80070 -:1036500004C08EB3882309F47EC08091E80080FF07 -:10366000F8CFF901859194918093F1009093F10046 -:10367000015010402E5F3F4F4F4F5F4F0115110516 -:10368000F1F67093400160933F0129C0823039F513 -:1036900023C08091F200803271F48091E8008E7F27 -:1036A0008093E80004C08EB3882309F454C080914D -:1036B000E80080FFF8CF00913F0110914001C80160 -:1036C00004D38093F1000F5F1F4F109340010093CC -:1036D0003F010894E108F108E114F104D1F682E019 -:1036E0008093010127C08091E800877F8093E800E4 -:1036F00080913B018093F1001092F1001092F10053 -:103700001092F100809101018093F1001092F1007C -:1037100011C08091E800877F8093E80010923B0100 -:1037200019C08091E800877F8093E80080910101B3 -:103730008093F1008091E8008E7F8093E8000AC0BA -:103740008091E800877F8093E8005D9A5C9A82E030 -:103750008093010187D0DF91CF911F910F91FF904E -:10376000EF90DF90CF90BF90AF909F907F906F9041 -:103770005F904F903F902F9008952BD181E085BFAF -:1037800015BE089584B7877F84BF88E10FB6F8948B -:1037900080936000109260000FBE81E085BF82E0E0 -:1037A00085BF8AB180638AB98BB180638BB90CC144 -:1037B000E9DF789401C080D2809100018823D9F795 -:1037C00080913A018823B9F7D8DFE0913C01F0916C -:1037D0003D010995FA01923071F0933089F09130F2 -:1037E00029F488E091E022E130E019C080E090E027 -:1037F00020E030E014C08AE191E02BE130E00FC01E -:10380000882339F480913501282F30E085E391E059 -:1038100006C080914301282F30E083E491E091833A -:103820008083C90108958091EB0081608093EB0053 -:103830001092ED006093EC004093ED008091EE005B -:10384000881F8827881F08951092F4001092F000B6 -:103850001092E8001092ED00EBEEF0E080818E7F98 -:10386000808308958091530188238CF403C08EB324 -:103870008823B1F08091E80082FFF9CF8091E800C1 -:103880008B7F8093E80008958EB3882349F0809160 -:10389000E80080FFF9CF8091E8008E7F8093E800F8 -:1038A00008959C014091590150915A0146175707BC -:1038B00018F4F90120E038C06115710511F0AB0171 -:1038C000F8CF8091E8008E7F8093E80040E050E0E0 -:1038D000F0CF8091E80083FF02C081E008958091DD -:1038E000E80082FD2DC08EB3882381F18EB3853030 -:1038F00079F18091E80080FF17C09091F20006C036 -:1039000081918093F100415050409F5F41155105D6 -:1039100011F09032A8F320E0903209F421E0809178 -:10392000E8008E7F8093E8004115510591F622232F -:1039300081F606C08EB3882349F08EB3853041F0FE -:103940008091E80082FFF6CF80E0089582E008953C -:1039500083E0089554D056D01EBA1092510184E0ED -:1039600089BD89B5826089BD09B400FEFDCF809113 -:10397000D800982F9F779093D80080688093D800C4 -:10398000809163008E7F809363008091D8008F7D4B -:103990008093D8008091E0008E7F8093E00080913A -:1039A000E1008E7F8093E1008091E200816080934E -:1039B000E2008091E100877F8093E1008091E20046 -:1039C00088608093E2000895C5DF81E08093520112 -:1039D0000895C0DFE0EEF0E0808181608083E8ED53 -:1039E000F0E080818F7780830AD00CD019BCE3E6A9 -:1039F000F0E08081816080831092520108951092DE -:103A0000E20008951092E10008951F920F920FB600 -:103A10000F9211242F933F934F935F936F937F9354 -:103A20008F939F93AF93BF93EF93FF938091E100A8 -:103A300080FF1BC08091E20080FF17C08091E100F1 -:103A40008E7F8093E1008091E2008E7F8093E20080 -:103A50008091E20080618093E2008091D8008062D2 -:103A60008093D80019BC1EBA26D18091E10084FF52 -:103A700029C08091E20084FF25C084E089BD89B51A -:103A8000826089BD09B400FEFDCF8091D8008F7D92 -:103A90008093D8008091E1008F7E8093E100809137 -:103AA000E2008F7E8093E2008091E200816080934B -:103AB000E20080915101882311F481E001C084E08B -:103AC0008EBBF9D08091E10083FF22C08091E2009B -:103AD00083FF1EC08091E100877F8093E10082E038 -:103AE0008EBB109251018091E1008E7F8093E100A6 -:103AF0008091E2008E7F8093E2008091E2008061FD -:103B00008093E200A1DE80E060E042E28CDED3D070 -:103B10008091E10082FF0AC08091E20082FF06C02E -:103B20008091E1008B7F8093E100C5D0FF91EF9100 -:103B3000BF91AF919F918F917F916F915F914F91C5 -:103B40003F912F910F900FBE0F901F9018951F93CC -:103B5000DF93CF9300D0CDB7DEB7E3E5F1E08091FE -:103B6000F100819381E0EB35F807C9F7909153019B -:103B700080915401853011F1863040F48130B9F0E4 -:103B8000813070F0833009F081C011C0883009F4B1 -:103B900053C0893009F462C0863009F077C02DC067 -:103BA000903809F474C0923809F070C070C099233D -:103BB00009F46DC0923009F069C069C0992309F019 -:103BC00065C0109155018091E800877F8093E800DF -:103BD00049DE04C08EB3882309F459C08091E800FF -:103BE00080FFF8CF812F8F7711F492E001C093E02E -:103BF0009EBB80688093E3004AC09058923008F0E2 -:103C000045C0809155019091560160915701AE01D8 -:103C10004F5F5F4FDFDDBC010097C9F18091E80085 -:103C2000877F8093E80089819A813BDE8091E8005C -:103C30008B7F8093E8002BC0903841F58091E8009D -:103C4000877F8093E800809151018093F1008091FB -:103C5000E8008E7F8093E80005DE19C09923B1F457 -:103C600090915501923098F48091E800877F80937D -:103C7000E80090935101F6DD80915101882311F401 -:103C800083E001C084E08EBB16D001C040DB809190 -:103C9000E80083FF0AC08091EB0080628093EB0014 -:103CA0008091E800877F8093E8000F900F90CF917C -:103CB000DF911F91089508958EB3882329F0809194 -:103CC000E80083FF01C043CF0895F999FECF92BD6C -:103CD00081BDF89A992780B50895262FF999FECFCE -:103CE0001FBA92BD81BD20BD0FB6F894FA9AF99A19 -:0A3CF0000FBE01960895F894FFCF6F -:103CFA0001021E948920DCFB120110010000002041 -:103D0A00EB03EF2F00000001000109021B00010173 -:103D1A000080320904000000FE01020009210300AC -:0A3D2A0000000C000104030904006E -:0400000300003000C9 -:00000001FF diff --git a/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-MegaADK-Rev3.hex b/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-MegaADK-Rev3.hex deleted file mode 100644 index b47bdf6..0000000 --- a/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-MegaADK-Rev3.hex +++ /dev/null @@ -1,467 +0,0 @@ -:1000000090C00000A9C00000A7C00000A5C000006B -:10001000A3C00000A1C000009FC000009DC0000060 -:100020009BC0000099C0000097C0000048C40000B9 -:100030000CC4000091C000008FC000008DC0000003 -:100040008BC0000089C0000087C0000085C0000090 -:1000500083C0000081C000007FC0000002C100001A -:100060007BC0000079C0000077C0000075C00000B0 -:1000700073C0000071C000006FC000006DC00000C0 -:100080006BC0000069C0000067C0000065C00000D0 -:1000900063C0000061C000001201100102000008EE -:1000A0004123440001000102DC0109023E0002017B -:1000B00000C0320904000001020201000524000111 -:1000C0001004240206052406000107058203080027 -:1000D000FF09040100020A000000070504024000B5 -:1000E00001070583024000010403090432034100B3 -:1000F00072006400750069006E006F002000280027 -:100100007700770077002E006100720064007500B0 -:1001100069006E006F002E0063006300290000007C -:10012000000011241FBECFEFD2E0DEBFCDBF11E033 -:10013000A0E0B1E0ECEAFFE002C005900D92A6312C -:10014000B107D9F712E0A6E1B1E001C01D92AF32CC -:10015000B107E1F7F1D028C753CF9C01DC01AE57BE -:10016000BF4FED91FC91119741911196FC93EE9345 -:1001700080589F4FE817F90711F42D933C939FB7D0 -:10018000F894F901EC57FF4F8081815080839FBF25 -:10019000842F0895DF92EF92FF920F931F93FC013B -:1001A0008489813019F0823021F405C040E3D42ED7 -:1001B00004C0DD2402C030E2D32E8389823011F4E2 -:1001C00088E0D82A8589873031F0883031F0863050 -:1001D00031F482E003C084E001C086E0D82A1092A6 -:1001E000C9001092C8001092CA00E784F088018903 -:1001F000128980E0E81681EEF80680E0080780E0CA -:10020000180719F420E130E00FC0C801B701969536 -:1002100087957795679560587B47814E9F4FA801DA -:100220009701A0D6215030403093CD002093CC00D0 -:10023000D092CA0080E0E81681EEF80680E0080758 -:1002400080E0180711F082E001C080E08093C800D0 -:1002500088E98093C9001F910F91FF90EF90DF9084 -:1002600008951F920F920FB60F9211242F938F9320 -:100270009F93EF93FF939091CE008EB38430F1F46F -:10028000E0919901F0919A019083E0919901F091A8 -:100290009A01CF01019690939A018093990189590F -:1002A000914021F489E191E0928381839FB7F89492 -:1002B00080919D018F5F80939D019FBFFF91EF9182 -:1002C0009F918F912F910F900FBE0F901F901895B7 -:1002D000FC01858580FF02C05F9808955F9A0895AC -:1002E00080E091E0D5C580E091E088C584B7877F44 -:1002F00084BF28E10FB6F89420936000109260004C -:100300000FBE87E690E09093CD008093CC0086E00E -:100310008093CA001092C8002093C900539A5A9A39 -:100320008AB180638AB98BB180638BB983D284E050 -:1003300085BD5F9A579A08950F931F93CF93DF93CC -:10034000D5DF2FB7F8948EE991E090931F02809348 -:100350001E0290932102809320022FBF2FB7F894A2 -:1003600089E191E090939A018093990190939C0187 -:1003700080939B012FBF7894CEE9D1E003E08FB743 -:10038000F894909122028FBF903809F180E091E0BB -:10039000ABD497FD1CC0E0911E02F0911F02808338 -:1003A000E0911E02F0911F02CF01019690931F026F -:1003B00080931E028E51924011F4D283C1839FB765 -:1003C000F894809122028F5F809322029FBF8FB7A3 -:1003D000F89410919D018FBFA89902C0113678F151 -:1003E000A89A80919D01882361F05D980093160181 -:1003F00008C089E191E0B1DE682F80E091E0DAD4B5 -:1004000011501123B1F780911601882351F080918A -:10041000160181508093160180911601882309F4FA -:100420005D9A80911701882351F0809117018150C6 -:100430008093170180911701882309F45C9A8FB784 -:10044000F894909122028FBF992369F08EE991E090 -:1004500084DE982F8091C80085FFFCCF9093CE005A -:100460005C980093170180E091E095D42AD487CF5F -:10047000DA01923049F0933061F09130F9F4E8E913 -:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6 -:1004900019C0813049F0813018F0823079F408C0F9 -:1004A000E8EEF0E0849107C0ECEEF0E0849103C048 -:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9 -:1004C00020E030E0ED93FC93C901089528E030E08E -:1004D00040E003C04F5F220F331F28173907D0F3C6 -:1004E000842F8295807F08958093E9008091EB00AE -:1004F00081608093EB001092ED006093EC004093DC -:10050000ED008091EE00881F8827881F08951092C3 -:10051000F40090E09093E9001092F0001092E8004F -:100520001092ED008091EB008E7F8093EB009F5F37 -:10053000953081F708958091270288238CF403C0B9 -:100540008EB38823B1F08091E80082FFF9CF8091CB -:10055000E8008B778093E80008958EB3882349F0F4 -:100560008091E80080FFF9CF8091E8008E7780933A -:10057000E800089594E68091EC0080FF05C080912A -:10058000E80080FF05C023C08091E80082FD1FC005 -:100590008EB3882311F482E008958EB3853011F470 -:1005A00083E008958091EB0085FF02C081E008950B -:1005B0008091E10082FFDFCF8091E1008B7F80930B -:1005C000E100992311F484E008959150D4CF80E0A4 -:1005D00008959C0140912D0250912E024617570715 -:1005E00018F4F90120E038C06115710511F0AB0174 -:1005F000F8CF8091E8008E778093E80040E050E0EB -:10060000F0CF8091E80083FF02C081E008958091DF -:10061000E80082FD2DC08EB3882381F18EB3853032 -:1006200079F18091E80080FF17C09091F20006C038 -:1006300081918093F100415050409F5F41155105D9 -:1006400011F09830A8F320E0983009F421E080916F -:10065000E8008E778093E8004115510591F622233A -:1006600081F606C08EB3882349F08EB3853041F001 -:100670008091E80082FFF6CF80E0089582E008953F -:1006800083E008959C0140912D0250912E0246175F -:10069000570710F490E03BC06115710511F0AB01F4 -:1006A000F9CF8091E8008E778093E80040E050E039 -:1006B000F1CF8091E80083FF02C081E0089580912E -:1006C000E80082FD30C08EB3882399F18EB3853067 -:1006D00091F18091E80080FF1AC08091F20009C07A -:1006E000F9012F5F3F4FE491E093F10041505040FA -:1006F0008F5F4115510511F0883090F390E08830FC -:1007000009F491E08091E8008E778093E80041152C -:10071000510579F6992369F606C08EB3882349F00E -:100720008EB3853041F08091E80082FFF6CF80E003 -:10073000089582E0089583E008959C016115710594 -:1007400029F48091E8008B778093E800F90120C0BC -:100750008091E80083FF02C081E008958EB3882372 -:1007600039F18EB3853031F18091E80082FFF0CF0E -:1007700006C08091F10081936150704021F080911A -:10078000F2008823B1F78091E8008B778093E8002E -:1007900061157105E9F606C08EB3882349F08EB362 -:1007A000853041F08091E80080FFF6CF80E0089529 -:1007B00082E0089583E0089542D044D01EBA10929A -:1007C0002502109224021092230284E089BD89B58B -:1007D000826089BD09B400FEFDCF8091D800982FBA -:1007E0009F779093D80080688093D80080916300B1 -:1007F0008E7F809363008091D8008F7D8093D80096 -:100800008091E0008E7F8093E0008091E1008E7FF8 -:100810008093E1008091E20081608093E20080910A -:10082000E100877F8093E1008091E20088608093FF -:10083000E2000895C1DF81E08093260208951092BE -:10084000E20008951092E10008951F920F920FB6F2 -:100850000F9211241F932F933F934F935F936F93A6 -:100860007F938F939F93AF93BF93EF93FF93E9EEA3 -:10087000F0E0108117701082E0EFF0E08081877F58 -:1008800080837894C3D0F894A9EEB0E01C92E0EF96 -:10089000F0E08081886080831C93FF91EF91BF918D -:1008A000AF919F918F917F916F915F914F913F9108 -:1008B0002F911F910F900FBE0F901F9018951F92B0 -:1008C0000F920FB60F9211242F933F934F935F9384 -:1008D0006F937F938F939F93AF93BF93EF93FF9308 -:1008E0008091E10080FF1BC08091E20080FF17C073 -:1008F0008091E1008E7F8093E1008091E2008E7F05 -:100900008093E2008091E20080618093E200809118 -:10091000D80080628093D80019BC1EBAD1D18091D2 -:10092000E10084FF29C08091E20084FF25C084E0BB -:1009300089BD89B5826089BD09B400FEFDCF809173 -:10094000D8008F7D8093D8008091E1008F7E8093C6 -:10095000E1008091E2008F7E8093E2008091E200CE -:1009600081608093E20080912502882311F481E068 -:1009700001C084E08EBBA4D18091E10083FF27C039 -:100980008091E20083FF23C08091E100877F809304 -:10099000E10082E08EBB109225028091E1008E7F03 -:1009A0008093E1008091E2008E7F8093E20080914D -:1009B000E20080618093E200AADD80E060E042E036 -:1009C00093DD8091F00088608093F00079D1809170 -:1009D000E10082FF0AC08091E20082FF06C08091A0 -:1009E000E1008B7F8093E1006BD1FF91EF91BF918C -:1009F000AF919F918F917F916F915F914F913F91B7 -:100A00002F910F900FBE0F901F9018951F93DF939B -:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D -:100A2000CDBFE7E2F2E08091F100819322E0EF3266 -:100A3000F207C9F78091270230912802353009F476 -:100A400087C0363040F43130C9F1313070F0333086 -:100A500009F01DC133C0383009F4EFC0393009F452 -:100A6000FEC0363009F013C192C0803821F08238C0 -:100A700009F00DC108C090912302809124028823BF -:100A800099F0926011C080912B0287708093E900E9 -:100A90008091EB0090E025E0969587952A95E1F707 -:100AA000982F91701092E9008091E800877F8093E1 -:100AB000E8009093F1001092F100CAC0882319F069 -:100AC000823009F0E4C090E08F719070009721F0BF -:100AD000029709F0DDC00CC080912902813009F035 -:100AE000D7C010922402333069F5809324022AC0C3 -:100AF00080912902882331F520912B02277009F477 -:100B0000C7C02093E9008091EB0080FFC1C0333063 -:100B100021F48091EB00806213C08091EB00806132 -:100B20008093EB0081E090E002C0880F991F2A9526 -:100B3000E2F78093EA001092EA008091EB0088606F -:100B40008093EB001092E9008091E800877F83C0DA -:100B5000882309F09CC0109129028091E800877FCA -:100B60008093E800E8DC04C08EB3882309F490C0C9 -:100B70008091E80080FFF8CF812F8F7711F492E009 -:100B800001C093E09EBB80688093E30081C08058E1 -:100B9000823008F07CC08091290290912A0223E0E3 -:100BA0008C3D920799F55FB7F894DE0115964EE0FB -:100BB00020E030E061E2E42FF0E0609357008491A0 -:100BC00020FF03C082958F704F5F982F9F70892FF1 -:100BD000805D8A3308F0895F8C9311961C9211977F -:100BE0002F5F3F4F12962431310529F75FBF8AE20C -:100BF0008B8383E08C838091E800877F8093E8007B -:100C0000CE0103966AE270E0E4DC11C060912B0231 -:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2 -:100C2000E800877F8093E80089819A812BDD80919D -:100C3000E8008B778093E8002BC0803841F58091E5 -:100C4000E800877F8093E800809125028093F1007F -:100C50008091E8008E778093E8006DDC19C08823CE -:100C6000B1F490912902923098F48091E800877F46 -:100C70008093E800909325025EDC80912502882312 -:100C800011F483E001C084E08EBB2DDB01C028DBC2 -:100C90008091E80083FF0AC08091EB00806280931E -:100CA000EB008091E800877F8093E800AC960FB658 -:100CB000F894DEBF0FBECDBFCF91DF911F91089595 -:100CC00008951F938EB3882361F01091E90010926C -:100CD000E9008091E80083FF01C098DE177010934F -:100CE000E9001F9108950895FC018EB3843021F529 -:100CF00087859089A189B2890097A105B105E1F0A6 -:100D000085818093E9008091E80082FF15C0809181 -:100D1000F200882319F42FEF3FEF04C08091F10017 -:100D2000282F30E08091F200882341F48091E80080 -:100D30008B778093E80002C02FEF3FEFC901089541 -:100D4000FC018EB3843011F587859089A189B28921 -:100D50000097A105B105D1F081818093E9008091D0 -:100D6000F2008823A9F09091E8008091E8008E7746 -:100D70008093E80095FD0CC0FDDB982F882349F493 -:100D80008091E8008E778093E80003C092E001C074 -:100D900090E0892F0895FC018EB3843051F487854B -:100DA0009089A189B2890097A105B10511F0CF0101 -:100DB000C7CF08951F93FC01162F8EB38430D9F44A -:100DC00087859089A189B2890097A105B10599F01D -:100DD00081818093E9008091E80085FD08C08091C1 -:100DE000E8008E778093E800C5DB882329F4109310 -:100DF000F10080E001C082E01F9108950F931F93DE -:100E0000CF93DF93EC010D96FC0189E0DF011D9289 -:100E10008A95E9F72A813B8109818C81882311F425 -:100E200010E001C014E0C90151DB182B1260802FC3 -:100E300061E8412F59DB882329F12E813F810D8103 -:100E40008885882311F410E001C014E0C9013EDB5D -:100E5000182B1260802F60E8412F46DB882391F029 -:100E60002A853B8509858C85882311F410E001C013 -:100E700014E0C9012BDB182B1260802F61EC412F8D -:100E800033DB01C080E0DF91CF911F910F91089576 -:100E9000CF93DF93EC018091E80083FF60C08881ED -:100EA00090E020912B0230912C022817390709F08D -:100EB00056C080912802813261F0823220F4803263 -:100EC00009F04DC019C0823269F1833209F047C080 -:100ED00038C080912702813A09F041C08091E80032 -:100EE000877F8093E800CE010F9667E070E071DBAA -:100EF0008091E8008B7713C080912702813279F5C9 -:100F00008091E800877F8093E800CE010F9667E02C -:100F100070E013DCCE013ED98091E8008E7780939B -:100F2000E8001DC0809127028132C9F48091E80059 -:100F3000877F8093E800809129028D87CE01C8D9F0 -:100F40000DC080912702813251F48091E800877FA3 -:100F50008093E800CE0160912902C5DEECDADF91D2 -:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053 -:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749 -:100F800020F0A21BB30BE40BF50B661F771F881F25 -:100F9000991F1A9469F760957095809590959B01BB -:0C0FA000AC01BD01CF010895F894FFCF13 -:100FAC0000034000000440000002080000000000A4 -:060FBC000000000000002F -:103000004BC0000064C0000062C0000060C000004F -:103010005EC000005CC000005AC0000058C0000044 -:1030200056C0000054C0000052C00000EEC40000B2 -:103030004EC000004CC000004AC0000048C0000064 -:1030400046C0000044C0000042C0000040C0000074 -:103050003EC000003CC000003AC0000038C0000084 -:1030600036C0000034C0000032C0000030C0000094 -:103070002EC000002CC000002AC0000028C00000A4 -:1030800026C0000024C0000022C0000020C00000B4 -:103090001EC000001CC0000011241FBECFEFD2E0F4 -:1030A000DEBFCDBF11E0A0E0B1E0EAEFFCE302C07B -:1030B00005900D92AA33B107D9F711E0AAE3B1E068 -:1030C00001C01D92AB35B107E1F772D314C698CF9A -:1030D000982F15C08091F200882371F48091E80048 -:1030E0008B7F8093E80003C08EB3882351F08091DA -:1030F000E80082FFF9CF02C08091F100915099233E -:1031000049F7089520914A01309149018091480181 -:103110009091470180933F0190934001C9018093B2 -:103120004101909342010895DF93CF9300D000D0E6 -:1031300000D0CDB7DEB780914501843009F45AC084 -:10314000853030F4813059F0833009F0D7C01FC08A -:10315000853009F4A0C0863009F0D0C0C3C080918A -:103160004601823008F0CAC0CDDF80914601882335 -:1031700061F480913F019091400123E0FC01209394 -:103180005700E89507B600FCFDCF85E008C08091A8 -:103190004601882311F0823029F4B4DF89E080935E -:1031A0000101ACC0813009F0A9C020E030E040E06E -:1031B00050E0F90184918F3F81F0CA01AA27BB2713 -:1031C00080933E013093400120933F018AE0809339 -:1031D000010185E080933B0191C02F5F3F4F4F4F2E -:1031E0005F4F2030F0E33F07F0E04F07F0E05F076C -:1031F00001F784C080914601833051F581E08093CE -:103200003A0180914B0190914C01892B71F0809192 -:103210004701813009F072C080914A0190914901C3 -:1032200090933D0180933C0169C0809147018823C0 -:1032300061F42CE088E190E00FB6F894A8958093B3 -:1032400060000FBE2093600059C01092000156C06C -:10325000882309F053C0809147018F3F09F04EC089 -:10326000E0E0F0E093E085E090935700E89507B642 -:1032700000FCFDCF80935700E89507B600FCFDCF1A -:10328000E058FF4F20E3E030F20771F781E18093CF -:103290005700E89533C0DE011196E5E0F1E083E0E8 -:1032A00001900D928150E1F7DE011496E2E0F1E029 -:1032B00083E001900D928150E1F790914701809158 -:1032C0004601882329F4FE01E90FF11D818107C021 -:1032D0008130A1F4FE01BC97E90FF11D808180933C -:1032E00050010CC080914601833041F48091470128 -:1032F000882321F48091480180933E0126960FB6E1 -:10330000F894DEBF0FBECDBFCF91DF9108952F920D -:103310003F924F925F926F927F929F92AF92BF9235 -:10332000CF92DF92EF92FF920F931F93CF93DF9391 -:103330008091590190915A0190934C0180934B01D7 -:1033400080914D01882351F080914D0181508093EF -:103350004D0180914D01882309F45D9A80914E01C1 -:10336000882351F080914E01815080934E018091CD -:103370004E01882309F45C9A80915401833009F44A -:10338000B2C1843030F4813071F0823009F0E3C191 -:1033900011C1853009F4C5C1853008F4BAC1863041 -:1033A00009F0D9C1CDC15C9883E080934E01809132 -:1033B000E800877F8093E80080913A01882329F014 -:1033C000B3DE5D9A5C9A10923A0120914B013091E4 -:1033D0004C012115310529F42AC08EB3882309F444 -:1033E000BAC18091E80082FFF8CF8091F10080930C -:1033F00045012150304030934C0120934B01E6E4CD -:10340000F1E00CC08091F10081932150304081E0C7 -:10341000EB34F80719F43183208308C08091F2005F -:10342000882381F730934C0120934B017DDE8091FE -:103430000101853009F0BAC080914B0190914C0197 -:10344000892B21F482E080930101B0C08AE140DE43 -:1034500080913F018F713CDEC0914101D0914201CA -:1034600020913F013091400121968E01021B130BE8 -:10347000219780914601882309F093C01801369462 -:103480002794C901A0913E01B0E09C01AD0162E02A -:10349000E62EF12C012D112DE20EF31E041F151F37 -:1034A00059016A0190E099249394B5E0A3E048C0E3 -:1034B0008091F200882371F48091E8008B7F8093E3 -:1034C000E80004C08EB3882309F445C18091E80068 -:1034D00082FFF8CF0894210831088091F100682F0D -:1034E0008091F100782FF5010B0190925700E8953B -:1034F00011249F5F903419F021143104A1F4F901D3 -:10350000B0935700E89507B600FCFDCF21143104B5 -:1035100051F0F701A0935700E89507B600FCFDCFE6 -:10352000A801970190E042E0442E512C612C712CAF -:10353000E40CF51C061D171DA40CB51CC61CD71CDD -:103540002114310409F0B4CFD0934001C0933F015E -:1035500081E180935700E89527C08091F20088238D -:1035600071F48091E8008B7F8093E80004C08EB3F3 -:10357000882309F4F0C08091E80082FFF8CF6091C1 -:10358000F10080913F0190914001A7D380913F01CC -:103590009091400101969093400180933F0101502A -:1035A000104001151105C9F680E192DD8091E80017 -:1035B0008B7FC3C08091E800877F8093E8005D988F -:1035C00083E080934D0104C08EB3882309F4C3C007 -:1035D0008091E80080FFF8CF80910101893091F05F -:1035E0008A3069F480914601813049F480913F012D -:1035F000909140018093F1009093F1009BC08091E5 -:10360000500196C0609141017091420120913F01AB -:10361000309140016F5F7F4F7B01E21AF30A6150E6 -:10362000704080914601882389F58701169507959A -:10363000C901A0913E01B0E09C01AD011FC0809185 -:10364000F200803271F48091E8008E7F8093E80070 -:1036500004C08EB3882309F47EC08091E80080FF07 -:10366000F8CFF901859194918093F1009093F10046 -:10367000015010402E5F3F4F4F4F5F4F0115110516 -:10368000F1F67093400160933F0129C0823039F513 -:1036900023C08091F200803271F48091E8008E7F27 -:1036A0008093E80004C08EB3882309F454C080914D -:1036B000E80080FFF8CF00913F0110914001C80160 -:1036C00004D38093F1000F5F1F4F109340010093CC -:1036D0003F010894E108F108E114F104D1F682E019 -:1036E0008093010127C08091E800877F8093E800E4 -:1036F00080913B018093F1001092F1001092F10053 -:103700001092F100809101018093F1001092F1007C -:1037100011C08091E800877F8093E80010923B0100 -:1037200019C08091E800877F8093E80080910101B3 -:103730008093F1008091E8008E7F8093E8000AC0BA -:103740008091E800877F8093E8005D9A5C9A82E030 -:103750008093010187D0DF91CF911F910F91FF904E -:10376000EF90DF90CF90BF90AF909F907F906F9041 -:103770005F904F903F902F9008952BD181E085BFAF -:1037800015BE089584B7877F84BF88E10FB6F8948B -:1037900080936000109260000FBE81E085BF82E0E0 -:1037A00085BF8AB180638AB98BB180638BB90CC144 -:1037B000E9DF789401C080D2809100018823D9F795 -:1037C00080913A018823B9F7D8DFE0913C01F0916C -:1037D0003D010995FA01923071F0933089F09130F2 -:1037E00029F488E091E022E130E019C080E090E027 -:1037F00020E030E014C08AE191E02BE130E00FC01E -:10380000882339F480913501282F30E085E391E059 -:1038100006C080914301282F30E083E491E091833A -:103820008083C90108958091EB0081608093EB0053 -:103830001092ED006093EC004093ED008091EE005B -:10384000881F8827881F08951092F4001092F000B6 -:103850001092E8001092ED00EBEEF0E080818E7F98 -:10386000808308958091530188238CF403C08EB324 -:103870008823B1F08091E80082FFF9CF8091E800C1 -:103880008B7F8093E80008958EB3882349F0809160 -:10389000E80080FFF9CF8091E8008E7F8093E800F8 -:1038A00008959C014091590150915A0146175707BC -:1038B00018F4F90120E038C06115710511F0AB0171 -:1038C000F8CF8091E8008E7F8093E80040E050E0E0 -:1038D000F0CF8091E80083FF02C081E008958091DD -:1038E000E80082FD2DC08EB3882381F18EB3853030 -:1038F00079F18091E80080FF17C09091F20006C036 -:1039000081918093F100415050409F5F41155105D6 -:1039100011F09032A8F320E0903209F421E0809178 -:10392000E8008E7F8093E8004115510591F622232F -:1039300081F606C08EB3882349F08EB3853041F0FE -:103940008091E80082FFF6CF80E0089582E008953C -:1039500083E0089554D056D01EBA1092510184E0ED -:1039600089BD89B5826089BD09B400FEFDCF809113 -:10397000D800982F9F779093D80080688093D800C4 -:10398000809163008E7F809363008091D8008F7D4B -:103990008093D8008091E0008E7F8093E00080913A -:1039A000E1008E7F8093E1008091E200816080934E -:1039B000E2008091E100877F8093E1008091E20046 -:1039C00088608093E2000895C5DF81E08093520112 -:1039D0000895C0DFE0EEF0E0808181608083E8ED53 -:1039E000F0E080818F7780830AD00CD019BCE3E6A9 -:1039F000F0E08081816080831092520108951092DE -:103A0000E20008951092E10008951F920F920FB600 -:103A10000F9211242F933F934F935F936F937F9354 -:103A20008F939F93AF93BF93EF93FF938091E100A8 -:103A300080FF1BC08091E20080FF17C08091E100F1 -:103A40008E7F8093E1008091E2008E7F8093E20080 -:103A50008091E20080618093E2008091D8008062D2 -:103A60008093D80019BC1EBA26D18091E10084FF52 -:103A700029C08091E20084FF25C084E089BD89B51A -:103A8000826089BD09B400FEFDCF8091D8008F7D92 -:103A90008093D8008091E1008F7E8093E100809137 -:103AA000E2008F7E8093E2008091E200816080934B -:103AB000E20080915101882311F481E001C084E08B -:103AC0008EBBF9D08091E10083FF22C08091E2009B -:103AD00083FF1EC08091E100877F8093E10082E038 -:103AE0008EBB109251018091E1008E7F8093E100A6 -:103AF0008091E2008E7F8093E2008091E2008061FD -:103B00008093E200A1DE80E060E042E28CDED3D070 -:103B10008091E10082FF0AC08091E20082FF06C02E -:103B20008091E1008B7F8093E100C5D0FF91EF9100 -:103B3000BF91AF919F918F917F916F915F914F91C5 -:103B40003F912F910F900FBE0F901F9018951F93CC -:103B5000DF93CF9300D0CDB7DEB7E3E5F1E08091FE -:103B6000F100819381E0EB35F807C9F7909153019B -:103B700080915401853011F1863040F48130B9F0E4 -:103B8000813070F0833009F081C011C0883009F4B1 -:103B900053C0893009F462C0863009F077C02DC067 -:103BA000903809F474C0923809F070C070C099233D -:103BB00009F46DC0923009F069C069C0992309F019 -:103BC00065C0109155018091E800877F8093E800DF -:103BD00049DE04C08EB3882309F459C08091E800FF -:103BE00080FFF8CF812F8F7711F492E001C093E02E -:103BF0009EBB80688093E3004AC09058923008F0E2 -:103C000045C0809155019091560160915701AE01D8 -:103C10004F5F5F4FDFDDBC010097C9F18091E80085 -:103C2000877F8093E80089819A813BDE8091E8005C -:103C30008B7F8093E8002BC0903841F58091E8009D -:103C4000877F8093E800809151018093F1008091FB -:103C5000E8008E7F8093E80005DE19C09923B1F457 -:103C600090915501923098F48091E800877F80937D -:103C7000E80090935101F6DD80915101882311F401 -:103C800083E001C084E08EBB16D001C040DB809190 -:103C9000E80083FF0AC08091EB0080628093EB0014 -:103CA0008091E800877F8093E8000F900F90CF917C -:103CB000DF911F91089508958EB3882329F0809194 -:103CC000E80083FF01C043CF0895F999FECF92BD6C -:103CD00081BDF89A992780B50895262FF999FECFCE -:103CE0001FBA92BD81BD20BD0FB6F894FA9AF99A19 -:0A3CF0000FBE01960895F894FFCF6F -:103CFA0001021E948920DCFB120110010000002041 -:103D0A00EB03EF2F00000001000109021B00010173 -:103D1A000080320904000000FE01020009210300AC -:0A3D2A0000000C000104030904006E -:0400000300003000C9 -:00000001FF diff --git a/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex b/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex deleted file mode 100644 index c2c7b2d..0000000 --- a/firmwares/atmegaxxu2/Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex +++ /dev/null @@ -1,467 +0,0 @@ -:1000000090C00000A9C00000A7C00000A5C000006B -:10001000A3C00000A1C000009FC000009DC0000060 -:100020009BC0000099C0000097C0000048C40000B9 -:100030000CC4000091C000008FC000008DC0000003 -:100040008BC0000089C0000087C0000085C0000090 -:1000500083C0000081C000007FC0000002C100001A -:100060007BC0000079C0000077C0000075C00000B0 -:1000700073C0000071C000006FC000006DC00000C0 -:100080006BC0000069C0000067C0000065C00000D0 -:1000900063C0000061C000001201100102000008EE -:1000A0004123430001000102DC0109023E0002017C -:1000B00000C0320904000001020201000524000111 -:1000C0001004240206052406000107058203080027 -:1000D000FF09040100020A000000070504024000B5 -:1000E00001070583024000010403090432034100B3 -:1000F00072006400750069006E006F002000280027 -:100100007700770077002E006100720064007500B0 -:1001100069006E006F002E0063006300290000007C -:10012000000011241FBECFEFD2E0DEBFCDBF11E033 -:10013000A0E0B1E0ECEAFFE002C005900D92A6312C -:10014000B107D9F712E0A6E1B1E001C01D92AF32CC -:10015000B107E1F7F1D028C753CF9C01DC01AE57BE -:10016000BF4FED91FC91119741911196FC93EE9345 -:1001700080589F4FE817F90711F42D933C939FB7D0 -:10018000F894F901EC57FF4F8081815080839FBF25 -:10019000842F0895DF92EF92FF920F931F93FC013B -:1001A0008489813019F0823021F405C040E3D42ED7 -:1001B00004C0DD2402C030E2D32E8389823011F4E2 -:1001C00088E0D82A8589873031F0883031F0863050 -:1001D00031F482E003C084E001C086E0D82A1092A6 -:1001E000C9001092C8001092CA00E784F088018903 -:1001F000128980E0E81681EEF80680E0080780E0CA -:10020000180719F420E130E00FC0C801B701969536 -:1002100087957795679560587B47814E9F4FA801DA -:100220009701A0D6215030403093CD002093CC00D0 -:10023000D092CA0080E0E81681EEF80680E0080758 -:1002400080E0180711F082E001C080E08093C800D0 -:1002500088E98093C9001F910F91FF90EF90DF9084 -:1002600008951F920F920FB60F9211242F938F9320 -:100270009F93EF93FF939091CE008EB38430F1F46F -:10028000E0919901F0919A019083E0919901F091A8 -:100290009A01CF01019690939A018093990189590F -:1002A000914021F489E191E0928381839FB7F89492 -:1002B00080919D018F5F80939D019FBFFF91EF9182 -:1002C0009F918F912F910F900FBE0F901F901895B7 -:1002D000FC01858580FF02C05F9808955F9A0895AC -:1002E00080E091E0D5C580E091E088C584B7877F44 -:1002F00084BF28E10FB6F89420936000109260004C -:100300000FBE87E690E09093CD008093CC0086E00E -:100310008093CA001092C8002093C900539A5A9A39 -:100320008AB180638AB98BB180638BB983D284E050 -:1003300085BD5F9A579A08950F931F93CF93DF93CC -:10034000D5DF2FB7F8948EE991E090931F02809348 -:100350001E0290932102809320022FBF2FB7F894A2 -:1003600089E191E090939A018093990190939C0187 -:1003700080939B012FBF7894CEE9D1E003E08FB743 -:10038000F894909122028FBF903809F180E091E0BB -:10039000ABD497FD1CC0E0911E02F0911F02808338 -:1003A000E0911E02F0911F02CF01019690931F026F -:1003B00080931E028E51924011F4D283C1839FB765 -:1003C000F894809122028F5F809322029FBF8FB7A3 -:1003D000F89410919D018FBFA89902C0113678F151 -:1003E000A89A80919D01882361F05D980093160181 -:1003F00008C089E191E0B1DE682F80E091E0DAD4B5 -:1004000011501123B1F780911601882351F080918A -:10041000160181508093160180911601882309F4FA -:100420005D9A80911701882351F0809117018150C6 -:100430008093170180911701882309F45C9A8FB784 -:10044000F894909122028FBF992369F08EE991E090 -:1004500084DE982F8091C80085FFFCCF9093CE005A -:100460005C980093170180E091E095D42AD487CF5F -:10047000DA01923049F0933061F09130F9F4E8E913 -:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6 -:1004900019C0813049F0813018F0823079F408C0F9 -:1004A000E8EEF0E0849107C0ECEEF0E0849103C048 -:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9 -:1004C00020E030E0ED93FC93C901089528E030E08E -:1004D00040E003C04F5F220F331F28173907D0F3C6 -:1004E000842F8295807F08958093E9008091EB00AE -:1004F00081608093EB001092ED006093EC004093DC -:10050000ED008091EE00881F8827881F08951092C3 -:10051000F40090E09093E9001092F0001092E8004F -:100520001092ED008091EB008E7F8093EB009F5F37 -:10053000953081F708958091270288238CF403C0B9 -:100540008EB38823B1F08091E80082FFF9CF8091CB -:10055000E8008B778093E80008958EB3882349F0F4 -:100560008091E80080FFF9CF8091E8008E7780933A -:10057000E800089594E68091EC0080FF05C080912A -:10058000E80080FF05C023C08091E80082FD1FC005 -:100590008EB3882311F482E008958EB3853011F470 -:1005A00083E008958091EB0085FF02C081E008950B -:1005B0008091E10082FFDFCF8091E1008B7F80930B -:1005C000E100992311F484E008959150D4CF80E0A4 -:1005D00008959C0140912D0250912E024617570715 -:1005E00018F4F90120E038C06115710511F0AB0174 -:1005F000F8CF8091E8008E778093E80040E050E0EB -:10060000F0CF8091E80083FF02C081E008958091DF -:10061000E80082FD2DC08EB3882381F18EB3853032 -:1006200079F18091E80080FF17C09091F20006C038 -:1006300081918093F100415050409F5F41155105D9 -:1006400011F09830A8F320E0983009F421E080916F -:10065000E8008E778093E8004115510591F622233A -:1006600081F606C08EB3882349F08EB3853041F001 -:100670008091E80082FFF6CF80E0089582E008953F -:1006800083E008959C0140912D0250912E0246175F -:10069000570710F490E03BC06115710511F0AB01F4 -:1006A000F9CF8091E8008E778093E80040E050E039 -:1006B000F1CF8091E80083FF02C081E0089580912E -:1006C000E80082FD30C08EB3882399F18EB3853067 -:1006D00091F18091E80080FF1AC08091F20009C07A -:1006E000F9012F5F3F4FE491E093F10041505040FA -:1006F0008F5F4115510511F0883090F390E08830FC -:1007000009F491E08091E8008E778093E80041152C -:10071000510579F6992369F606C08EB3882349F00E -:100720008EB3853041F08091E80082FFF6CF80E003 -:10073000089582E0089583E008959C016115710594 -:1007400029F48091E8008B778093E800F90120C0BC -:100750008091E80083FF02C081E008958EB3882372 -:1007600039F18EB3853031F18091E80082FFF0CF0E -:1007700006C08091F10081936150704021F080911A -:10078000F2008823B1F78091E8008B778093E8002E -:1007900061157105E9F606C08EB3882349F08EB362 -:1007A000853041F08091E80080FFF6CF80E0089529 -:1007B00082E0089583E0089542D044D01EBA10929A -:1007C0002502109224021092230284E089BD89B58B -:1007D000826089BD09B400FEFDCF8091D800982FBA -:1007E0009F779093D80080688093D80080916300B1 -:1007F0008E7F809363008091D8008F7D8093D80096 -:100800008091E0008E7F8093E0008091E1008E7FF8 -:100810008093E1008091E20081608093E20080910A -:10082000E100877F8093E1008091E20088608093FF -:10083000E2000895C1DF81E08093260208951092BE -:10084000E20008951092E10008951F920F920FB6F2 -:100850000F9211241F932F933F934F935F936F93A6 -:100860007F938F939F93AF93BF93EF93FF93E9EEA3 -:10087000F0E0108117701082E0EFF0E08081877F58 -:1008800080837894C3D0F894A9EEB0E01C92E0EF96 -:10089000F0E08081886080831C93FF91EF91BF918D -:1008A000AF919F918F917F916F915F914F913F9108 -:1008B0002F911F910F900FBE0F901F9018951F92B0 -:1008C0000F920FB60F9211242F933F934F935F9384 -:1008D0006F937F938F939F93AF93BF93EF93FF9308 -:1008E0008091E10080FF1BC08091E20080FF17C073 -:1008F0008091E1008E7F8093E1008091E2008E7F05 -:100900008093E2008091E20080618093E200809118 -:10091000D80080628093D80019BC1EBAD1D18091D2 -:10092000E10084FF29C08091E20084FF25C084E0BB -:1009300089BD89B5826089BD09B400FEFDCF809173 -:10094000D8008F7D8093D8008091E1008F7E8093C6 -:10095000E1008091E2008F7E8093E2008091E200CE -:1009600081608093E20080912502882311F481E068 -:1009700001C084E08EBBA4D18091E10083FF27C039 -:100980008091E20083FF23C08091E100877F809304 -:10099000E10082E08EBB109225028091E1008E7F03 -:1009A0008093E1008091E2008E7F8093E20080914D -:1009B000E20080618093E200AADD80E060E042E036 -:1009C00093DD8091F00088608093F00079D1809170 -:1009D000E10082FF0AC08091E20082FF06C08091A0 -:1009E000E1008B7F8093E1006BD1FF91EF91BF918C -:1009F000AF919F918F917F916F915F914F913F91B7 -:100A00002F910F900FBE0F901F9018951F93DF939B -:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D -:100A2000CDBFE7E2F2E08091F100819322E0EF3266 -:100A3000F207C9F78091270230912802353009F476 -:100A400087C0363040F43130C9F1313070F0333086 -:100A500009F01DC133C0383009F4EFC0393009F452 -:100A6000FEC0363009F013C192C0803821F08238C0 -:100A700009F00DC108C090912302809124028823BF -:100A800099F0926011C080912B0287708093E900E9 -:100A90008091EB0090E025E0969587952A95E1F707 -:100AA000982F91701092E9008091E800877F8093E1 -:100AB000E8009093F1001092F100CAC0882319F069 -:100AC000823009F0E4C090E08F719070009721F0BF -:100AD000029709F0DDC00CC080912902813009F035 -:100AE000D7C010922402333069F5809324022AC0C3 -:100AF00080912902882331F520912B02277009F477 -:100B0000C7C02093E9008091EB0080FFC1C0333063 -:100B100021F48091EB00806213C08091EB00806132 -:100B20008093EB0081E090E002C0880F991F2A9526 -:100B3000E2F78093EA001092EA008091EB0088606F -:100B40008093EB001092E9008091E800877F83C0DA -:100B5000882309F09CC0109129028091E800877FCA -:100B60008093E800E8DC04C08EB3882309F490C0C9 -:100B70008091E80080FFF8CF812F8F7711F492E009 -:100B800001C093E09EBB80688093E30081C08058E1 -:100B9000823008F07CC08091290290912A0223E0E3 -:100BA0008C3D920799F55FB7F894DE0115964EE0FB -:100BB00020E030E061E2E42FF0E0609357008491A0 -:100BC00020FF03C082958F704F5F982F9F70892FF1 -:100BD000805D8A3308F0895F8C9311961C9211977F -:100BE0002F5F3F4F12962431310529F75FBF8AE20C -:100BF0008B8383E08C838091E800877F8093E8007B -:100C0000CE0103966AE270E0E4DC11C060912B0231 -:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2 -:100C2000E800877F8093E80089819A812BDD80919D -:100C3000E8008B778093E8002BC0803841F58091E5 -:100C4000E800877F8093E800809125028093F1007F -:100C50008091E8008E778093E8006DDC19C08823CE -:100C6000B1F490912902923098F48091E800877F46 -:100C70008093E800909325025EDC80912502882312 -:100C800011F483E001C084E08EBB2DDB01C028DBC2 -:100C90008091E80083FF0AC08091EB00806280931E -:100CA000EB008091E800877F8093E800AC960FB658 -:100CB000F894DEBF0FBECDBFCF91DF911F91089595 -:100CC00008951F938EB3882361F01091E90010926C -:100CD000E9008091E80083FF01C098DE177010934F -:100CE000E9001F9108950895FC018EB3843021F529 -:100CF00087859089A189B2890097A105B105E1F0A6 -:100D000085818093E9008091E80082FF15C0809181 -:100D1000F200882319F42FEF3FEF04C08091F10017 -:100D2000282F30E08091F200882341F48091E80080 -:100D30008B778093E80002C02FEF3FEFC901089541 -:100D4000FC018EB3843011F587859089A189B28921 -:100D50000097A105B105D1F081818093E9008091D0 -:100D6000F2008823A9F09091E8008091E8008E7746 -:100D70008093E80095FD0CC0FDDB982F882349F493 -:100D80008091E8008E778093E80003C092E001C074 -:100D900090E0892F0895FC018EB3843051F487854B -:100DA0009089A189B2890097A105B10511F0CF0101 -:100DB000C7CF08951F93FC01162F8EB38430D9F44A -:100DC00087859089A189B2890097A105B10599F01D -:100DD00081818093E9008091E80085FD08C08091C1 -:100DE000E8008E778093E800C5DB882329F4109310 -:100DF000F10080E001C082E01F9108950F931F93DE -:100E0000CF93DF93EC010D96FC0189E0DF011D9289 -:100E10008A95E9F72A813B8109818C81882311F425 -:100E200010E001C014E0C90151DB182B1260802FC3 -:100E300061E8412F59DB882329F12E813F810D8103 -:100E40008885882311F410E001C014E0C9013EDB5D -:100E5000182B1260802F60E8412F46DB882391F029 -:100E60002A853B8509858C85882311F410E001C013 -:100E700014E0C9012BDB182B1260802F61EC412F8D -:100E800033DB01C080E0DF91CF911F910F91089576 -:100E9000CF93DF93EC018091E80083FF60C08881ED -:100EA00090E020912B0230912C022817390709F08D -:100EB00056C080912802813261F0823220F4803263 -:100EC00009F04DC019C0823269F1833209F047C080 -:100ED00038C080912702813A09F041C08091E80032 -:100EE000877F8093E800CE010F9667E070E071DBAA -:100EF0008091E8008B7713C080912702813279F5C9 -:100F00008091E800877F8093E800CE010F9667E02C -:100F100070E013DCCE013ED98091E8008E7780939B -:100F2000E8001DC0809127028132C9F48091E80059 -:100F3000877F8093E800809129028D87CE01C8D9F0 -:100F40000DC080912702813251F48091E800877FA3 -:100F50008093E800CE0160912902C5DEECDADF91D2 -:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053 -:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749 -:100F800020F0A21BB30BE40BF50B661F771F881F25 -:100F9000991F1A9469F760957095809590959B01BB -:0C0FA000AC01BD01CF010895F894FFCF13 -:100FAC0000034000000440000002080000000000A4 -:060FBC000000000000002F -:103000004BC0000064C0000062C0000060C000004F -:103010005EC000005CC000005AC0000058C0000044 -:1030200056C0000054C0000052C00000EEC40000B2 -:103030004EC000004CC000004AC0000048C0000064 -:1030400046C0000044C0000042C0000040C0000074 -:103050003EC000003CC000003AC0000038C0000084 -:1030600036C0000034C0000032C0000030C0000094 -:103070002EC000002CC000002AC0000028C00000A4 -:1030800026C0000024C0000022C0000020C00000B4 -:103090001EC000001CC0000011241FBECFEFD2E0F4 -:1030A000DEBFCDBF11E0A0E0B1E0EAEFFCE302C07B -:1030B00005900D92AA33B107D9F711E0AAE3B1E068 -:1030C00001C01D92AB35B107E1F772D314C698CF9A -:1030D000982F15C08091F200882371F48091E80048 -:1030E0008B7F8093E80003C08EB3882351F08091DA -:1030F000E80082FFF9CF02C08091F100915099233E -:1031000049F7089520914A01309149018091480181 -:103110009091470180933F0190934001C9018093B2 -:103120004101909342010895DF93CF9300D000D0E6 -:1031300000D0CDB7DEB780914501843009F45AC084 -:10314000853030F4813059F0833009F0D7C01FC08A -:10315000853009F4A0C0863009F0D0C0C3C080918A -:103160004601823008F0CAC0CDDF80914601882335 -:1031700061F480913F019091400123E0FC01209394 -:103180005700E89507B600FCFDCF85E008C08091A8 -:103190004601882311F0823029F4B4DF89E080935E -:1031A0000101ACC0813009F0A9C020E030E040E06E -:1031B00050E0F90184918F3F81F0CA01AA27BB2713 -:1031C00080933E013093400120933F018AE0809339 -:1031D000010185E080933B0191C02F5F3F4F4F4F2E -:1031E0005F4F2030F0E33F07F0E04F07F0E05F076C -:1031F00001F784C080914601833051F581E08093CE -:103200003A0180914B0190914C01892B71F0809192 -:103210004701813009F072C080914A0190914901C3 -:1032200090933D0180933C0169C0809147018823C0 -:1032300061F42CE088E190E00FB6F894A8958093B3 -:1032400060000FBE2093600059C01092000156C06C -:10325000882309F053C0809147018F3F09F04EC089 -:10326000E0E0F0E093E085E090935700E89507B642 -:1032700000FCFDCF80935700E89507B600FCFDCF1A -:10328000E058FF4F20E3E030F20771F781E18093CF -:103290005700E89533C0DE011196E5E0F1E083E0E8 -:1032A00001900D928150E1F7DE011496E2E0F1E029 -:1032B00083E001900D928150E1F790914701809158 -:1032C0004601882329F4FE01E90FF11D818107C021 -:1032D0008130A1F4FE01BC97E90FF11D808180933C -:1032E00050010CC080914601833041F48091470128 -:1032F000882321F48091480180933E0126960FB6E1 -:10330000F894DEBF0FBECDBFCF91DF9108952F920D -:103310003F924F925F926F927F929F92AF92BF9235 -:10332000CF92DF92EF92FF920F931F93CF93DF9391 -:103330008091590190915A0190934C0180934B01D7 -:1033400080914D01882351F080914D0181508093EF -:103350004D0180914D01882309F45D9A80914E01C1 -:10336000882351F080914E01815080934E018091CD -:103370004E01882309F45C9A80915401833009F44A -:10338000B2C1843030F4813071F0823009F0E3C191 -:1033900011C1853009F4C5C1853008F4BAC1863041 -:1033A00009F0D9C1CDC15C9883E080934E01809132 -:1033B000E800877F8093E80080913A01882329F014 -:1033C000B3DE5D9A5C9A10923A0120914B013091E4 -:1033D0004C012115310529F42AC08EB3882309F444 -:1033E000BAC18091E80082FFF8CF8091F10080930C -:1033F00045012150304030934C0120934B01E6E4CD -:10340000F1E00CC08091F10081932150304081E0C7 -:10341000EB34F80719F43183208308C08091F2005F -:10342000882381F730934C0120934B017DDE8091FE -:103430000101853009F0BAC080914B0190914C0197 -:10344000892B21F482E080930101B0C08AE140DE43 -:1034500080913F018F713CDEC0914101D0914201CA -:1034600020913F013091400121968E01021B130BE8 -:10347000219780914601882309F093C01801369462 -:103480002794C901A0913E01B0E09C01AD0162E02A -:10349000E62EF12C012D112DE20EF31E041F151F37 -:1034A00059016A0190E099249394B5E0A3E048C0E3 -:1034B0008091F200882371F48091E8008B7F8093E3 -:1034C000E80004C08EB3882309F445C18091E80068 -:1034D00082FFF8CF0894210831088091F100682F0D -:1034E0008091F100782FF5010B0190925700E8953B -:1034F00011249F5F903419F021143104A1F4F901D3 -:10350000B0935700E89507B600FCFDCF21143104B5 -:1035100051F0F701A0935700E89507B600FCFDCFE6 -:10352000A801970190E042E0442E512C612C712CAF -:10353000E40CF51C061D171DA40CB51CC61CD71CDD -:103540002114310409F0B4CFD0934001C0933F015E -:1035500081E180935700E89527C08091F20088238D -:1035600071F48091E8008B7F8093E80004C08EB3F3 -:10357000882309F4F0C08091E80082FFF8CF6091C1 -:10358000F10080913F0190914001A7D380913F01CC -:103590009091400101969093400180933F0101502A -:1035A000104001151105C9F680E192DD8091E80017 -:1035B0008B7FC3C08091E800877F8093E8005D988F -:1035C00083E080934D0104C08EB3882309F4C3C007 -:1035D0008091E80080FFF8CF80910101893091F05F -:1035E0008A3069F480914601813049F480913F012D -:1035F000909140018093F1009093F1009BC08091E5 -:10360000500196C0609141017091420120913F01AB -:10361000309140016F5F7F4F7B01E21AF30A6150E6 -:10362000704080914601882389F58701169507959A -:10363000C901A0913E01B0E09C01AD011FC0809185 -:10364000F200803271F48091E8008E7F8093E80070 -:1036500004C08EB3882309F47EC08091E80080FF07 -:10366000F8CFF901859194918093F1009093F10046 -:10367000015010402E5F3F4F4F4F5F4F0115110516 -:10368000F1F67093400160933F0129C0823039F513 -:1036900023C08091F200803271F48091E8008E7F27 -:1036A0008093E80004C08EB3882309F454C080914D -:1036B000E80080FFF8CF00913F0110914001C80160 -:1036C00004D38093F1000F5F1F4F109340010093CC -:1036D0003F010894E108F108E114F104D1F682E019 -:1036E0008093010127C08091E800877F8093E800E4 -:1036F00080913B018093F1001092F1001092F10053 -:103700001092F100809101018093F1001092F1007C -:1037100011C08091E800877F8093E80010923B0100 -:1037200019C08091E800877F8093E80080910101B3 -:103730008093F1008091E8008E7F8093E8000AC0BA -:103740008091E800877F8093E8005D9A5C9A82E030 -:103750008093010187D0DF91CF911F910F91FF904E -:10376000EF90DF90CF90BF90AF909F907F906F9041 -:103770005F904F903F902F9008952BD181E085BFAF -:1037800015BE089584B7877F84BF88E10FB6F8948B -:1037900080936000109260000FBE81E085BF82E0E0 -:1037A00085BF8AB180638AB98BB180638BB90CC144 -:1037B000E9DF789401C080D2809100018823D9F795 -:1037C00080913A018823B9F7D8DFE0913C01F0916C -:1037D0003D010995FA01923071F0933089F09130F2 -:1037E00029F488E091E022E130E019C080E090E027 -:1037F00020E030E014C08AE191E02BE130E00FC01E -:10380000882339F480913501282F30E085E391E059 -:1038100006C080914301282F30E083E491E091833A -:103820008083C90108958091EB0081608093EB0053 -:103830001092ED006093EC004093ED008091EE005B -:10384000881F8827881F08951092F4001092F000B6 -:103850001092E8001092ED00EBEEF0E080818E7F98 -:10386000808308958091530188238CF403C08EB324 -:103870008823B1F08091E80082FFF9CF8091E800C1 -:103880008B7F8093E80008958EB3882349F0809160 -:10389000E80080FFF9CF8091E8008E7F8093E800F8 -:1038A00008959C014091590150915A0146175707BC -:1038B00018F4F90120E038C06115710511F0AB0171 -:1038C000F8CF8091E8008E7F8093E80040E050E0E0 -:1038D000F0CF8091E80083FF02C081E008958091DD -:1038E000E80082FD2DC08EB3882381F18EB3853030 -:1038F00079F18091E80080FF17C09091F20006C036 -:1039000081918093F100415050409F5F41155105D6 -:1039100011F09032A8F320E0903209F421E0809178 -:10392000E8008E7F8093E8004115510591F622232F -:1039300081F606C08EB3882349F08EB3853041F0FE -:103940008091E80082FFF6CF80E0089582E008953C -:1039500083E0089554D056D01EBA1092510184E0ED -:1039600089BD89B5826089BD09B400FEFDCF809113 -:10397000D800982F9F779093D80080688093D800C4 -:10398000809163008E7F809363008091D8008F7D4B -:103990008093D8008091E0008E7F8093E00080913A -:1039A000E1008E7F8093E1008091E200816080934E -:1039B000E2008091E100877F8093E1008091E20046 -:1039C00088608093E2000895C5DF81E08093520112 -:1039D0000895C0DFE0EEF0E0808181608083E8ED53 -:1039E000F0E080818F7780830AD00CD019BCE3E6A9 -:1039F000F0E08081816080831092520108951092DE -:103A0000E20008951092E10008951F920F920FB600 -:103A10000F9211242F933F934F935F936F937F9354 -:103A20008F939F93AF93BF93EF93FF938091E100A8 -:103A300080FF1BC08091E20080FF17C08091E100F1 -:103A40008E7F8093E1008091E2008E7F8093E20080 -:103A50008091E20080618093E2008091D8008062D2 -:103A60008093D80019BC1EBA26D18091E10084FF52 -:103A700029C08091E20084FF25C084E089BD89B51A -:103A8000826089BD09B400FEFDCF8091D8008F7D92 -:103A90008093D8008091E1008F7E8093E100809137 -:103AA000E2008F7E8093E2008091E200816080934B -:103AB000E20080915101882311F481E001C084E08B -:103AC0008EBBF9D08091E10083FF22C08091E2009B -:103AD00083FF1EC08091E100877F8093E10082E038 -:103AE0008EBB109251018091E1008E7F8093E100A6 -:103AF0008091E2008E7F8093E2008091E2008061FD -:103B00008093E200A1DE80E060E042E28CDED3D070 -:103B10008091E10082FF0AC08091E20082FF06C02E -:103B20008091E1008B7F8093E100C5D0FF91EF9100 -:103B3000BF91AF919F918F917F916F915F914F91C5 -:103B40003F912F910F900FBE0F901F9018951F93CC -:103B5000DF93CF9300D0CDB7DEB7E3E5F1E08091FE -:103B6000F100819381E0EB35F807C9F7909153019B -:103B700080915401853011F1863040F48130B9F0E4 -:103B8000813070F0833009F081C011C0883009F4B1 -:103B900053C0893009F462C0863009F077C02DC067 -:103BA000903809F474C0923809F070C070C099233D -:103BB00009F46DC0923009F069C069C0992309F019 -:103BC00065C0109155018091E800877F8093E800DF -:103BD00049DE04C08EB3882309F459C08091E800FF -:103BE00080FFF8CF812F8F7711F492E001C093E02E -:103BF0009EBB80688093E3004AC09058923008F0E2 -:103C000045C0809155019091560160915701AE01D8 -:103C10004F5F5F4FDFDDBC010097C9F18091E80085 -:103C2000877F8093E80089819A813BDE8091E8005C -:103C30008B7F8093E8002BC0903841F58091E8009D -:103C4000877F8093E800809151018093F1008091FB -:103C5000E8008E7F8093E80005DE19C09923B1F457 -:103C600090915501923098F48091E800877F80937D -:103C7000E80090935101F6DD80915101882311F401 -:103C800083E001C084E08EBB16D001C040DB809190 -:103C9000E80083FF0AC08091EB0080628093EB0014 -:103CA0008091E800877F8093E8000F900F90CF917C -:103CB000DF911F91089508958EB3882329F0809194 -:103CC000E80083FF01C043CF0895F999FECF92BD6C -:103CD00081BDF89A992780B50895262FF999FECFCE -:103CE0001FBA92BD81BD20BD0FB6F894FA9AF99A19 -:0A3CF0000FBE01960895F894FFCF6F -:103CFA0001021E948920DCFB120110010000002041 -:103D0A00EB03EF2F00000001000109021B00010173 -:103D1A000080320904000000FE01020009210300AC -:0A3D2A0000000C000104030904006E -:0400000300003000C9 -:00000001FF diff --git a/firmwares/atmegaxxu2/Genuino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-R3.hex b/firmwares/atmegaxxu2/Genuino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-R3.hex deleted file mode 100644 index 80c358b..0000000 --- a/firmwares/atmegaxxu2/Genuino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-R3.hex +++ /dev/null @@ -1,490 +0,0 @@ -:200000009EC00000B7C00000B5C00000B3C00000B1C00000AFC00000ADC00000ABC000006B -:20002000A9C00000A7C00000A5C00000FCC30000A1C400009FC000009DC000009BC0000050 -:2000400099C0000097C0000095C0000093C0000091C000008FC000008DC00000C6C10000D4 -:2000600089C0000087C0000085C0000083C0000081C00000160538052206380522067A05C3 -:2000800097052206EA05FC052403470065006E00750069006E006F0020004D006500670077 -:2000A00061002000320035003600300000003A03410072006400750069006E006F002000C3 -:2000C0004C004C004300200028007700770077002E00610072006400750069006E006F0078 -:2000E0002E0063006300290000000403090409023E00020100C0320904000001020201007E -:200100000524000110042402060524060001070582030800FF09040100020A000000070587 -:2001200004024000010705830240000112011001020000084123420201000102DC011124BA -:200140001FBECFEFD2E0DEBFCDBF11E0A0E0B1E0EEE4FFE002C005900D92A631B107D9F721 -:2001600012E0A6E1B1E001C01D92AF32B107E1F764D0EBC645CFFC01E058FF4FA081B181C5 -:200180006C93A081B1819D012F5F3F4F318320832E173F0721F412969C938E9311972FB7D6 -:2001A000F894FC01EC57FF4F80818F5F80832FBF0895DC01AE57BF4FED91FC911197419133 -:2001C0001196FC93EE939C0120583F4FE217F30711F48D939C932FB7F894FC01EC57FF4F7E -:2001E0009081915090832FBF842F089584B7877F84BF88E10FB6F894809360001092600009 -:200200000FBE87E690E09093CD008093CC0086E08093CA001092C80088E18093C900539A86 -:200220005A9A8AB180638AB98BB180638BB9F0D284E085BD5F9A579A0895D8DF2FB7F894EE -:200240008EE991E090931F0280931E0290932102809320022FBF2FB7F89489E191E0909366 -:200260009A018093990190939C0180939B012FBF7894D3E09FB7F894809122029FBF8038ED -:2002800049F080E091E00ED697FD04C0682F8EE991E071DF8FB7F894C0919D018FBFA899F9 -:2002A00002C0C13658F1A89A80919D01882319F05D98D0931601CC2349F089E191E079DFCD -:2002C000682F80E091E093D5C150F5CF80911601882341F0809116018150809316018111C0 -:2002E00001C05D9A80911701882341F080911701815080931701811101C05C9A9FB7F894F1 -:20030000809122029FBF882361F08EE991E051DF9091C80095FFFCCF8093CE005C98D093B6 -:20032000170180E091E0B0D59AD4A4CF80E091E011C580E091E0A5C41F93CF93DF93EC011A -:200340008C89813031F0823011F010E003C010E201C010E38B89823009F418608D898730A2 -:2003600031F0883031F0863029F4126003C0146001C016601092C9001092C8001092CA008F -:200380002F85388949895A89211581EE38074105510571F0CA01B90196958795779567957E -:2003A00060587B47814E9F4FA8D52150310902C020E130E03093CD002093CC001093CA008F -:2003C0008F859889A989BA898115914EA105B10511F480E001C082E08093C80088E98093BB -:2003E000C900DF91CF911F9108951F920F920FB60F9211242F933F934F935F936F937F93AE -:200400008F939F93AF93BF93EF93FF936091CE008EB3843019F489E191E0ADDEFF91EF91A9 -:20042000BF91AF919F918F917F916F915F914F913F912F910F900FBE0F901F901895FC0108 -:20044000858580FF02C05F9808955F9A0895292F33272230310559F02330310569F0213071 -:200460003105F9F482E190E02CE231E01EC08EE390E02EEE30E019C099278130910541F06B -:200480008230910541F0892B61F4EAEEF0E005C0EEEAF0E002C0E8E8F0E0849190E09F013E -:2004A00004C080E090E020E030E0FA0131832083089528E030E040E02817390720F44F5F30 -:2004C000220F331FF9CF842F8295807F08958093E900EBEEF0E0808181608083EDEEF0E036 -:2004E00010826093EC0040838091EE00881F8827881F08951092F40080E08093E90010929B -:20050000F0001092E8001092ED009091EB009E7F9093EB008F5F853081F7089580912702A9 -:2005200087FD05C08091E80080FF0DC010C08091E80082FD04C08EB38111F9CF08958091D8 -:20054000E8008B7707C08EB38111ECCF08958091E8008E778093E800089585E69091EC00B1 -:2005600090FF05C09091E80090FF05C01BC09091E80092FD17C09EB39923B1F09EB39530BC -:20058000A9F09091EB0095FD13C09091E10092FFE5CF9091E1009B7F9093E1008150F1F632 -:2005A00084E0089580E0089582E0089583E0089581E0089520912D0230912E0226173707F4 -:2005C00048F06115710539F42091E8002E772093E80001C0B90130E06115710591F1209147 -:2005E000E80023FD38C02091E80022FF06C08091E80082FF29C080E008952EB3222369F19B -:200600002EB3253061F12091E80020FFE5CF2091F200FC01CF016115710549F0283038F4CD -:2006200081918093F100615071092F5FF3CF31E0283009F030E02091E8002E772093E800DE -:20064000CBCF3111CCCFD3CF8EB3882331F08EB3853069F604C081E0089582E0089583E0FB -:20066000089520912D0230912E022617370748F06115710539F42091E8002E772093E80067 -:2006800001C0B90130E06115710599F12091E80023FD39C02091E80022FF06C08091E8002E -:2006A00082FF2AC080E008952EB3222371F12EB3253069F12091E80020FFE5CF2091F200AB -:2006C000FC01CF016115710551F0283040F484918093F100615071092F5F3196F2CF31E029 -:2006E000283009F030E02091E8002E772093E800CACF3111CBCFD2CF8EB3882331F08EB35C -:20070000853061F604C081E0089582E0089583E008956115710529F42091E8002B77209315 -:20072000E8006115710549F12091E80023FD2AC02EB3222359F12EB3253051F12091E80087 -:2007400022FFF2CFFC018091F200882371F09F012F5F3F4FC9014091F10040836150710975 -:2007600061157105C9F2F901EECFCF01D5CF8EB3882361F08EB3853059F08091E80080FFB3 -:20078000F6CF02C081E0089580E0089582E0089583E0089542D044D01EBA1092250210926F -:2007A00024021092230284E089BD89B5826089BD09B400FEFDCF8091D800982F9F779093CC -:2007C000D80080688093D800809163008E7F809363008091D8008F7D8093D8008091E000A6 -:2007E0008E7F8093E0008091E1008E7F8093E1008091E20081608093E2008091E100877F45 -:200800008093E1008091E20088608093E2000895C1DF81E08093260208951092E20008957D -:200820001092E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F93DB -:20084000AF93BF93EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F809349 -:20086000E1008091E2008E7F8093E2008091E20080618093E2008091D80080628093D80023 -:2008800019BC1EBAEBD18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD26 -:2008A00009B400FEFDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7EDE -:2008C0008093E2008091E20081608093E20080912502882311F084E001C081E08EBBBED118 -:2008E0008091E10083FF27C08091E20083FF23C08091E100877F8093E10082E08EBB10920C -:2009000025028091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200FF -:20092000E9DD42E060E080E0D2DD8091F00088608093F00093D18091E10082FF0AC08091E2 -:20094000E20082FF06C08091E1008B7F8093E10085D1FF91EF91BF91AF919F918F917F9128 -:200960006F915F914F913F912F910F900FBE0F901F9018951F920F920FB60F9211242F9301 -:200980003F934F935F936F937F938F939F93AF93BF93CF93EF93FF93E9EEF0E0C081C77020 -:2009A0001082E0EFF0E08081877F808378941CD0F894E9EEF0E01082A0EFB0E08C9188601B -:2009C0008C93C083FF91EF91CF91BF91AF919F918F917F916F915F914F913F912F910F9056 -:2009E0000FBE0F901F9018951F93CF93DF93CDB7DEB7AA970FB6F894DEBF0FBECDBFE7E23F -:200A0000F2E08091F100819322E0EF32F207C9F72091270230912802832F90E08A309105DB -:200A200008F010C1FC01E65CFF4F89C2203881F0223809F007C180912B0287708093E90000 -:200A40008091EB0085FB882780F91092E90006C08091230290912402911182609091E80097 -:200A6000977F9093E8008093F1001092F100BDC0822F8D7F09F0E6C0222319F0223061F0F4 -:200A8000D2C080912902813009F0CDC0333009F080E08093240228C080912902811124C0C2 -:200AA00020912B02277009F4BEC02093E9008091EB0080FFB8C08091EB00333011F4806271 -:200AC00011C080618093EB0081E090E0022E01C0880F0A94EAF78093EA001092EA008091F4 -:200AE000EB0088608093EB001092E9008091E800877F7EC02111A6C0109129028091E80000 -:200B0000877F8093E8000ADD8091E80080FD04C08EB38111F9CF87C0812F8F7711F093E0A7 -:200B200001C092E09EBB80688093E3007CC02058223008F087C08091290290912A028C3DB4 -:200B400023E0920781F583E08A838AE289834FB7F894DE01139620E03EE051E2E32FF0E04E -:200B600050935700E49120FF03C0E295EF703F5FEF7090E39E0F9A3310F0E95C01C0E92F06 -:200B80008E2F90E08D939D932F5F243139F74FBF8091E800877F8093E8006AE270E0CE0152 -:200BA000019608DD11C0AE014F5F5F4F60912B024EDC0097C1F12091E800277F2093E80072 -:200BC000BC0189819A814DDD8091E8008B778093E80029C02038B1F58091E800877F80931A -:200BE000E800809125028093F1008091E8008E778093E80093DC17C0211124C09091290230 -:200C0000923088F48091E800877F8093E8009093250284DC80912502882311F084E001C0E9 -:200C200083E08EBB83DB8091E80083FF0DC08091EB0080628093EB008091E800877F809374 -:200C4000E80002C076DBEFCFAA960FB6F894DEBF0FBECDBFDF91CF911F9108950895CF9338 -:200C60008EB3882359F0C091E900C7701092E9008091E80083FDB8DEC093E900CF910895FB -:200C80000895CF93DF93EC018091E80083FF5FC0888190E020912B0230912C022817390797 -:200CA00009F055C080912802813249F018F48032C9F04DC0823261F18332C9F148C08091ED -:200CC0002702813A09F043C08091E800877F8093E80067E070E0CE010F966CDC8091E800EE -:200CE0008B7713C080912702813289F58091E800877F8093E80067E070E0CE010F9609DDC9 -:200D0000CE011ADB8091E8008E778093E8001FC0809127028132D9F48091E800877F80936B -:200D2000E800809129028D87CE0189DB0DC080912702813261F48091E800877F8093E8003F -:200D400060912902CE019CDFDF91CF91E7CBDF91CF9108950F931F93CF93DF93EC01FC012C -:200D60003D9689E0DF011D928A95E9F72A813B818C81882311F014E001C010E00981C90190 -:200D800098DB412F482B426061E8802FA0DB882341F12E813F818885882311F014E001C02E -:200DA00010E00D81C90185DB412F482B426060E8802F8DDB8823A9F02A853B858C85882338 -:200DC00011F014E001C010E0C985C90172DB412F482B426061EC8C2FDF91CF911F910F915B -:200DE00076CB80E0DF91CF911F910F910895CF93C62F2EB32430E9F4FC01478550896189A0 -:200E00007289452B462B472BA1F081818093E9008091E80085FF04C0C093F10080E00AC046 -:200E20008091E8008E778093E80097DB8823A1F301C082E0CF9108952EB3243019F5FC01A8 -:200E40004785508961897289452B462B472BD1F081818093E9008091F200882389F09091AE -:200E6000E8008091E8008E778093E80095FD08C074DB811108C08091E8008E778093E80095 -:200E800080E0089582E008952EB3243051F4FC014785508961897289452B462B472B09F009 -:200EA000CBCF08952EB3243019F08FEF9FEF0895FC014785508961897289452B462B472B3A -:200EC000A1F385818093E9008091E80082FFEDCF8091F200882321F02091F10030E002C013 -:200EE0002FEF3FEF8091F200811105C08091E8008B778093E800C9010895A1E21A2EAA1B5F -:200F0000BB1BFD010DC0AA1FBB1FEE1FFF1FA217B307E407F50720F0A21BB30BE40BF50B8E -:200F2000661F771F881F991F1A9469F760957095809590959B01AC01BD01CF010895EE0F84 -:200F4000FF1F0590F491E02D0994F894FFCF000340000004400000020800000000000000C4 -:200F600000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D -:200F800020F0A21BB30BE40BF50B661F771F881F991F1A9469F760957095809590959B017F -:200FA000AC01BD01CF010895F894FFCF00034000000440000002080000000000000000006E -:200FC0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F -:200FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 -:20100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:20102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:20104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:20106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:20108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:2010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:2010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:2010E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 -:20110000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF -:20112000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF -:20114000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF -:20116000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F -:20118000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F -:2011A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F -:2011C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F -:2011E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F -:20120000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE -:20122000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE -:20124000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE -:20126000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E -:20128000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E -:2012A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E -:2012C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E -:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E -:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED -:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD -:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD -:20136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D -:20138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D -:2013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D -:2013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D -:2013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D -:20140000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC -:20142000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC -:20144000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC -:20146000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C -:20148000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C -:2014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C -:2014C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C -:2014E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C -:20150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB -:20152000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB -:20154000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB -:20156000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B -:20158000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B -:2015A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B -:2015C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B -:2015E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B -:20160000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA -:20162000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA -:20164000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA -:20166000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A -:20168000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A -:2016A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A -:2016C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A -:2016E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A -:20170000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 -:20172000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 -:20174000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 -:20176000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 -:20178000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 -:2017A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 -:2017C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 -:2017E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 -:20180000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 -:20182000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 -:20184000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 -:20186000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 -:20188000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 -:2018A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 -:2018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 -:2018E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 -:20190000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 -:20192000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 -:20194000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 -:20196000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 -:20198000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 -:2019A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 -:2019C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 -:2019E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 -:201A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 -:201A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 -:201A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 -:201A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 -:201A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 -:201AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 -:201AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 -:201AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 -:201B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 -:201B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 -:201B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 -:201B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 -:201B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 -:201BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 -:201BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 -:201BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 -:201C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 -:201C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 -:201C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 -:201C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 -:201C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 -:201CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 -:201CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 -:201CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 -:201D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 -:201D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 -:201D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 -:201D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 -:201D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 -:201DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 -:201DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 -:201DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 -:201E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 -:201E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 -:201E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 -:201E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 -:201E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 -:201EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 -:201EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 -:201EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 -:201F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 -:201F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 -:201F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 -:201F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 -:201F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 -:201FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 -:201FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 -:201FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 -:20200000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:20202000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:20204000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:20206000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:20208000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:2020A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:2020C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:2020E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 -:20210000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF -:20212000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF -:20214000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F -:20216000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F -:20218000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F -:2021A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F -:2021C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F -:2021E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -:20220000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE -:20222000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE -:20224000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E -:20226000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E -:20228000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E -:2022A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E -:2022C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E -:2022E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE -:20230000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD -:20232000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD -:20234000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D -:20236000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D -:20238000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D -:2023A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D -:2023C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D -:2023E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD -:20240000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC -:20242000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC -:20244000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C -:20246000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C -:20248000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C -:2024A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C -:2024C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C -:2024E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC -:20250000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB -:20252000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB -:20254000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B -:20256000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B -:20258000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B -:2025A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B -:2025C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B -:2025E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB -:20260000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA -:20262000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA -:20264000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A -:20266000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A -:20268000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A -:2026A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A -:2026C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A -:2026E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA -:20270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 -:20272000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 -:20274000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 -:20276000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 -:20278000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 -:2027A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 -:2027C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 -:2027E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 -:20280000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 -:20282000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 -:20284000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 -:20286000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 -:20288000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 -:2028A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 -:2028C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 -:2028E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 -:20290000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 -:20292000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 -:20294000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 -:20296000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 -:20298000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 -:2029A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 -:2029C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 -:2029E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 -:202A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 -:202A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 -:202A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 -:202A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 -:202A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 -:202AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 -:202AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 -:202AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 -:202B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 -:202B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 -:202B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 -:202B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 -:202B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 -:202BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 -:202BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 -:202BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 -:202C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 -:202C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4 -:202C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 -:202C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74 -:202C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 -:202CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34 -:202CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 -:202CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 -:202D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3 -:202D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 -:202D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 -:202D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 -:202D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 -:202DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33 -:202DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13 -:202DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3 -:202E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 -:202E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2 -:202E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92 -:202E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72 -:202E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52 -:202EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32 -:202EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 -:202EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 -:202F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1 -:202F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 -:202F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91 -:202F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71 -:202F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51 -:202FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31 -:202FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 -:202FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 -:203000004BC0000064C0000062C0000060C000005EC000005CC000005AC0000058C00000D3 -:2030200056C0000054C0000052C00000CBC400004EC000004CC000004AC0000048C0000099 -:2030400046C0000044C0000042C0000040C000003EC000003CC000003AC0000038C0000078 -:2030600036C0000034C0000032C0000030C000002EC000002CC000002AC0000028C00000D8 -:2030800026C0000024C0000022C0000020C000001EC000001CC0000011241FBECFEFD2E068 -:2030A000DEBFCDBF11E0A0E0B1E0E4EBFCE302C005900D92A836B107D9F711E0A8E6B1E0CB -:2030C00001C01D92A738B107E1F74FD3F1C598CF982F15C08091F200882371F48091E8002A -:2030E0008B7F8093E80003C08EB3882351F08091E80082FFF9CF02C08091F1009150992338 -:2031000049F708952091760130917501809174019091730180936D0190936E01C901809368 -:203120006F0190937001089580917101843009F45AC0853030F4813059F0833009F0C3C09E -:203140001FC0853009F4A0C0863009F0BCC0AFC080917201823008F0B6C0D4DF8091720109 -:20316000882361F480916D0190916E0123E0FC0120935700E89507B600FCFDCF85E008C007 -:2031800080917201882311F0823029F4BBDF89E0809301010895813009F095C020E030E06C -:2031A00040E050E0F90184918F3F81F0CA01AA27BB2780936C0130936E0120936D018AE0B6 -:2031C0008093010185E08093690108952F5F3F4F4F4F5F4F2030F0E33F07F0E04F07F0E094 -:2031E0005F0701F7089580917201833051F581E0809368018091770190917801892B71F042 -:2032000080917301813009F05EC0809176019091750190936B0180936A0108958091730113 -:20322000882361F42CE088E190E00FB6F894A895809360000FBE2093600008951092000188 -:203240000895882309F03FC0809173018F3F09F03AC0E0E0F0E093E085E090935700E89589 -:2032600007B600FCFDCF80935700E89507B600FCFDCFE058FF4F20E3E030F20771F781E101 -:2032800080935700E8950895E091730180917201882321F4F0E0EB5FFE4F05C0813099F417 -:2032A000F0E0EE52FF4F808180937C01089580917201833041F480917301882321F48091C0 -:2032C000740180936C0108952F923F924F925F926F927F929F92AF92BF92CF92DF92EF92D0 -:2032E000FF920F931F93CF93DF938091850190918601909378018093770180917901882379 -:2033000051F08091790181508093790180917901882309F45D9A80917A01882351F08091D0 -:203320007A01815080937A0180917A01882309F45C9A80918001833009F4B2C1843030F4FC -:20334000813071F0823009F0E3C111C1853009F4C5C1853008F4BAC1863009F0D9C1CDC1FF -:203360005C9883E080937A018091E800877F8093E80080916801882329F0D6DE5D9A5C9A8F -:203380001092680120917701309178012115310529F42AC08EB3882309F4BAC18091E800EF -:2033A00082FFF8CF8091F10080937101215030403093780120937701E2E7F1E00CC080917F -:2033C000F10081932150304081E0E737F80719F43183208308C08091F200882381F7309374 -:2033E000780120937701A0DE80910101853009F0BAC08091770190917801892B21F482E022 -:2034000080930101B0C08AE163DE80916D018F715FDEC0916F01D091700120916D0130914C -:203420006E0121968E01021B130B219780917201882309F093C0180136942794C901A091D0 -:203440006C01B0E09C01AD0162E0E62EF12C012D112DE20EF31E041F151F59016A0190E0B8 -:2034600099249394B5E0A3E048C08091F200882371F48091E8008B7F8093E80004C08EB332 -:20348000882309F445C18091E80082FFF8CF0894210831088091F100682F8091F100782FFD -:2034A000F5010B0190925700E89511249F5F903419F021143104A1F4F901B0935700E89504 -:2034C00007B600FCFDCF2114310451F0F701A0935700E89507B600FCFDCFA801970190E087 -:2034E00042E0442E512C612C712CE40CF51C061D171DA40CB51CC61CD71C2114310409F080 -:20350000B4CFD0936E01C0936D0181E180935700E89527C08091F200882371F48091E80059 -:203520008B7F8093E80004C08EB3882309F4F0C08091E80082FFF8CF6091F10080916D0187 -:2035400090916E01A7D380916D0190916E01019690936E0180936D010150104001151105DB -:20356000C9F680E1B5DD8091E8008B7FC3C08091E800877F8093E8005D9883E08093790134 -:2035800004C08EB3882309F4C3C08091E80080FFF8CF80910101893091F08A3069F4809147 -:2035A0007201813049F480916D0190916E018093F1009093F1009BC080917C0196C0609153 -:2035C0006F017091700120916D0130916E016F5F7F4F7B01E21AF30A6150704080917201C4 -:2035E000882389F5870116950795C901A0916C01B0E09C01AD011FC08091F200803271F497 -:203600008091E8008E7F8093E80004C08EB3882309F47EC08091E80080FFF8CFF90185916F -:2036200094918093F1009093F100015010402E5F3F4F4F4F5F4F01151105F1F670936E01C0 -:2036400060936D0129C0823039F523C08091F200803271F48091E8008E7F8093E80004C07E -:203660008EB3882309F454C08091E80080FFF8CF00916D0110916E01C80104D38093F1005B -:203680000F5F1F4F10936E0100936D010894E108F108E114F104D1F682E08093010127C0AE -:2036A0008091E800877F8093E800809169018093F1001092F1001092F1001092F1008091C7 -:2036C00001018093F1001092F10011C08091E800877F8093E8001092690119C08091E800A8 -:2036E000877F8093E800809101018093F1008091E8008E7F8093E8000AC08091E800877FE8 -:203700008093E8005D9A5C9A82E08093010187D0DF91CF911F910F91FF90EF90DF90CF90F7 -:20372000BF90AF909F907F906F905F904F903F902F9008952BD181E085BF15BE089584B779 -:20374000877F84BF88E10FB6F89480936000109260000FBE81E085BF82E085BF8AB18063BB -:203760008AB98BB180638BB90CC1E9DF789401C080D2809100018823D9F78091680188233D -:20378000B9F7D8DFE0916A01F0916B010995FA01923071F0933089F0913029F488E091E04A -:2037A00022E130E019C080E090E020E030E014C08AE191E02BE130E00FC0882339F48091B9 -:2037C0003501282F30E085E391E006C080913901282F30E089E391E091838083C9010895A0 -:2037E0008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881FC4 -:2038000008951092F4001092F0001092E8001092ED00EBEEF0E080818E7F80830895809162 -:203820007F0188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B7F8093E8004D -:2038400008958EB3882349F08091E80080FFF9CF8091E8008E7F8093E80008959C0140915A -:203860008501509186014617570718F4F90120E038C06115710511F0AB01F8CF8091E80048 -:203880008E7F8093E80040E050E0F0CF8091E80083FF02C081E008958091E80082FD2DC071 -:2038A0008EB3882381F18EB3853079F18091E80080FF17C09091F20006C081918093F1000C -:2038C000415050409F5F4115510511F09032A8F320E0903209F421E08091E8008E7F8093E6 -:2038E000E8004115510591F6222381F606C08EB3882349F08EB3853041F08091E80082FF65 -:20390000F6CF80E0089582E0089583E0089554D056D01EBA10927D0184E089BD89B58260DA -:2039200089BD09B400FEFDCF8091D800982F9F779093D80080688093D800809163008E7FA5 -:20394000809363008091D8008F7D8093D8008091E0008E7F8093E0008091E1008E7F80930E -:20396000E1008091E20081608093E2008091E100877F8093E1008091E20088608093E200E1 -:203980000895C5DF81E080937E010895C0DFE0EEF0E0808181608083E8EDF0E080818F7788 -:2039A00080830AD00CD019BCE3E6F0E080818160808310927E0108951092E200089510927A -:2039C000E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F93AF936A -:2039E000BF93EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F8093E100D9 -:203A00008091E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC5D -:203A20001EBA26D18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD09B431 -:203A400000FEFDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093B6 -:203A6000E2008091E20081608093E20080917D01882311F481E001C084E08EBBF9D08091B3 -:203A8000E10083FF22C08091E20083FF1EC08091E100877F8093E10082E08EBB10927D01D7 -:203AA0008091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200A1DED6 -:203AC00080E060E042E28CDED3D08091E10082FF0AC08091E20082FF06C08091E1008B7FA2 -:203AE0008093E100C5D0FF91EF91BF91AF919F918F917F916F915F914F913F912F910F903E -:203B00000FBE0F901F9018951F93DF93CF9300D0CDB7DEB7EFE7F1E08091F100819381E050 -:203B2000E738F807C9F790917F0180918001853011F1863040F48130B9F0813070F08330B5 -:203B400009F081C011C0883009F453C0893009F462C0863009F077C02DC0903809F474C0EE -:203B6000923809F070C070C0992309F46DC0923009F069C069C0992309F065C01091810132 -:203B80008091E800877F8093E80049DE04C08EB3882309F459C08091E80080FFF8CF812F4F -:203BA0008F7711F492E001C093E09EBB80688093E3004AC09058923008F045C080918101D9 -:203BC0009091820160918301AE014F5F5F4FDFDDBC010097C9F18091E800877F8093E800FD -:203BE00089819A813BDE8091E8008B7F8093E8002BC0903841F58091E800877F8093E800A6 -:203C000080917D018093F1008091E8008E7F8093E80005DE19C09923B1F49091810192308E -:203C200098F48091E800877F8093E80090937D01F6DD80917D01882311F483E001C084E0C3 -:203C40008EBB16D001C040DB8091E80083FF0AC08091EB0080628093EB008091E800877F39 -:203C60008093E8000F900F90CF91DF911F91089508958EB3882329F08091E80083FF01C010 -:203C800043CF0895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD4B -:203CA00020BD0FB6F894FA9AF99A0FBE01960895F894FFCF01021E948920DCFB12011001FB -:203CC00000000020EB03EF2F00000001000109021B0001010080320904000000FE010200CE -:203CE0000921030000000C0001040309042C03410054006D0065006700610031003600555C -:1C3D00000032002000440046005500200020002000200020002000200000000096 -:00000001FF diff --git a/firmwares/atmegaxxu2/Genuino-COMBINED-dfu-usbserial-atmega16u2-Uno-R3.hex b/firmwares/atmegaxxu2/Genuino-COMBINED-dfu-usbserial-atmega16u2-Uno-R3.hex deleted file mode 100644 index a6fe194..0000000 --- a/firmwares/atmegaxxu2/Genuino-COMBINED-dfu-usbserial-atmega16u2-Uno-R3.hex +++ /dev/null @@ -1,490 +0,0 @@ -:2000000098C00000B1C00000AFC00000ADC00000ABC00000A9C00000A7C00000A5C000009B -:20002000A3C00000A1C000009FC00000F6C300009BC4000099C0000097C0000095C0000080 -:2000400093C0000091C000008FC000008DC000008BC0000089C0000087C00000C0C1000004 -:2000600083C0000081C000007FC000007DC000007BC00000100532051C0632051C06740505 -:2000800091051C06E405F6051803470065006E00750069006E006F00200055006E006F0082 -:2000A00000003A03410072006400750069006E006F0020004C004C00430020002800770077 -:2000C000770077002E00610072006400750069006E006F002E0063006300290000000403EE -:2000E000090409023E00020100C03209040000010202010005240001100424020605240609 -:200100000001070582030800FF09040100020A000000070504024000010705830240000107 -:2001200012011001020000084123430201000102DC0111241FBECFEFD2E0DEBFCDBF11E06B -:20014000A0E0B1E0E2E4FFE002C005900D92A631B107D9F712E0A6E1B1E001C01D92AF3239 -:20016000B107E1F764D0EBC64BCFFC01E058FF4FA081B1816C93A081B1819D012F5F3F4F0E -:20018000318320832E173F0721F412969C938E9311972FB7F894FC01EC57FF4F80818F5FD9 -:2001A00080832FBF0895DC01AE57BF4FED91FC91119741911196FC93EE939C0120583F4FE2 -:2001C000E217F30711F48D939C932FB7F894FC01EC57FF4F9081915090832FBF842F089595 -:2001E00084B7877F84BF88E10FB6F89480936000109260000FBE87E690E09093CD0080939F -:20020000CC0086E08093CA001092C80088E18093C900539A5A9A8AB180638AB98BB18063BF -:200220008BB9F0D284E085BD5F9A579A0895D8DF2FB7F8948EE991E090931F0280931E0203 -:2002400090932102809320022FBF2FB7F89489E191E090939A018093990190939C018093AA -:200260009B012FBF7894D3E09FB7F894809122029FBF803849F080E091E00ED697FD04C0C2 -:20028000682F8EE991E071DF8FB7F894C0919D018FBFA89902C0C13658F1A89A80919D014C -:2002A000882319F05D98D0931601CC2349F089E191E079DF682F80E091E093D5C150F5CF1B -:2002C00080911601882341F080911601815080931601811101C05D9A80911701882341F0A8 -:2002E00080911701815080931701811101C05C9A9FB7F894809122029FBF882361F08EE9A8 -:2003000091E051DF9091C80095FFFCCF8093CE005C98D093170180E091E0B0D59AD4A4CF6D -:2003200080E091E011C580E091E0A5C41F93CF93DF93EC018C89813031F0823011F010E0DF -:2003400003C010E201C010E38B89823009F418608D89873031F0883031F0863029F41260ED -:2003600003C0146001C016601092C9001092C8001092CA002F85388949895A89211581EEFF -:2003800038074105510571F0CA01B901969587957795679560587B47814E9F4FA8D5215028 -:2003A000310902C020E130E03093CD002093CC001093CA008F859889A989BA898115914E95 -:2003C000A105B10511F480E001C082E08093C80088E98093C900DF91CF911F9108951F9243 -:2003E0000F920FB60F9211242F933F934F935F936F937F938F939F93AF93BF93EF93FF9349 -:200400006091CE008EB3843019F489E191E0ADDEFF91EF91BF91AF919F918F917F916F91B5 -:200420005F914F913F912F910F900FBE0F901F901895FC01858580FF02C05F9808955F9A20 -:200440000895292F33272230310559F02330310569F021303105F9F482E190E020E231E040 -:200460001EC08EE390E022EE30E019C099278130910541F08230910541F0892B61F4EEED2F -:20048000F0E005C0E2EAF0E002C0E8E8F0E0849190E09F0104C080E090E020E030E0FA0105 -:2004A00031832083089528E030E040E02817390720F44F5F220F331FF9CF842F8295807FBB -:2004C00008958093E900EBEEF0E0808181608083EDEEF0E010826093EC0040838091EE0017 -:2004E000881F8827881F08951092F40080E08093E9001092F0001092E8001092ED009091A4 -:20050000EB009E7F9093EB008F5F853081F708958091270287FD05C08091E80080FF0DC045 -:2005200010C08091E80082FD04C08EB38111F9CF08958091E8008B7707C08EB38111ECCF27 -:2005400008958091E8008E778093E800089585E69091EC0090FF05C09091E80090FF05C03F -:200560001BC09091E80092FD17C09EB39923B1F09EB39530A9F09091EB0095FD13C0909142 -:20058000E10092FFE5CF9091E1009B7F9093E1008150F1F684E0089580E0089582E0089560 -:2005A00083E0089581E0089520912D0230912E022617370748F06115710539F42091E80007 -:2005C0002E772093E80001C0B90130E06115710591F12091E80023FD38C02091E80022FF77 -:2005E00006C08091E80082FF29C080E008952EB3222369F12EB3253061F12091E80020FF15 -:20060000E5CF2091F200FC01CF016115710549F0283038F481918093F100615071092F5F3E -:20062000F3CF31E0283009F030E02091E8002E772093E800CBCF3111CCCFD3CF8EB38823A8 -:2006400031F08EB3853069F604C081E0089582E0089583E0089520912D0230912E02261755 -:20066000370748F06115710539F42091E8002E772093E80001C0B90130E06115710599F111 -:200680002091E80023FD39C02091E80022FF06C08091E80082FF2AC080E008952EB32223A1 -:2006A00071F12EB3253069F12091E80020FFE5CF2091F200FC01CF016115710551F02830E7 -:2006C00040F484918093F100615071092F5F3196F2CF31E0283009F030E02091E8002E77DC -:2006E0002093E800CACF3111CBCFD2CF8EB3882331F08EB3853061F604C081E0089582E0CB -:20070000089583E008956115710529F42091E8002B772093E8006115710549F12091E8009E -:2007200023FD2AC02EB3222359F12EB3253051F12091E80022FFF2CFFC018091F2008823A1 -:2007400071F09F012F5F3F4FC9014091F10040836150710961157105C9F2F901EECFCF01D4 -:20076000D5CF8EB3882361F08EB3853059F08091E80080FFF6CF02C081E0089580E008955F -:2007800082E0089583E0089542D044D01EBA10922502109224021092230284E089BD89B51C -:2007A000826089BD09B400FEFDCF8091D800982F9F779093D80080688093D8008091630082 -:2007C0008E7F809363008091D8008F7D8093D8008091E0008E7F8093E0008091E1008E7FC6 -:2007E0008093E1008091E20081608093E2008091E100877F8093E1008091E2008860809362 -:20080000E2000895C1DF81E08093260208951092E20008951092E10008951F920F920FB628 -:200820000F9211242F933F934F935F936F937F938F939F93AF93BF93EF93FF938091E10078 -:2008400080FF1BC08091E20080FF17C08091E1008E7F8093E1008091E2008E7F8093E2000D -:200860008091E20080618093E2008091D80080628093D80019BC1EBAEBD18091E10084FF1B -:2008800029C08091E20084FF25C084E089BD89B5826089BD09B400FEFDCF8091D8008F7D88 -:2008A0008093D8008091E1008F7E8093E1008091E2008F7E8093E2008091E200816080937E -:2008C000E20080912502882311F084E001C081E08EBBBED18091E10083FF27C08091E200A6 -:2008E00083FF23C08091E100877F8093E10082E08EBB109225028091E1008E7F8093E10040 -:200900008091E2008E7F8093E2008091E20080618093E200E9DD42E060E080E0D2DD8091D1 -:20092000F00088608093F00093D18091E10082FF0AC08091E20082FF06C08091E1008B7F05 -:200940008093E10085D1FF91EF91BF91AF919F918F917F916F915F914F913F912F910F904E -:200960000FBE0F901F9018951F920F920FB60F9211242F933F934F935F936F937F938F9324 -:200980009F93AF93BF93CF93EF93FF93E9EEF0E0C081C7701082E0EFF0E08081877F8083C1 -:2009A00078941CD0F894E9EEF0E01082A0EFB0E08C9188608C93C083FF91EF91CF91BF9134 -:2009C000AF919F918F917F916F915F914F913F912F910F900FBE0F901F9018951F93CF939C -:2009E000DF93CDB7DEB7AA970FB6F894DEBF0FBECDBFE7E2F2E08091F100819322E0EF3210 -:200A0000F207C9F72091270230912802832F90E08A30910508F010C1FC01E65CFF4F89C245 -:200A2000203881F0223809F007C180912B0287708093E9008091EB0085FB882780F910925B -:200A4000E90006C08091230290912402911182609091E800977F9093E8008093F100109216 -:200A6000F100BDC0822F8D7F09F0E6C0222319F0223061F0D2C080912902813009F0CDC0B6 -:200A8000333009F080E08093240228C080912902811124C020912B02277009F4BEC0209324 -:200AA000E9008091EB0080FFB8C08091EB00333011F4806211C080618093EB0081E090E093 -:200AC000022E01C0880F0A94EAF78093EA001092EA008091EB0088608093EB001092E90019 -:200AE0008091E800877F7EC02111A6C0109129028091E800877F8093E8000ADD8091E8007B -:200B000080FD04C08EB38111F9CF87C0812F8F7711F093E001C092E09EBB80688093E3001E -:200B20007CC02058223008F087C08091290290912A028C3D23E0920781F583E08A838AE230 -:200B400089834FB7F894DE01139620E03EE051E2E32FF0E050935700E49120FF03C0E29534 -:200B6000EF703F5FEF7090E39E0F9A3310F0E95C01C0E92F8E2F90E08D939D932F5F2431AE -:200B800039F74FBF8091E800877F8093E8006AE270E0CE01019608DD11C0AE014F5F5F4F5A -:200BA00060912B024EDC0097C1F12091E800277F2093E800BC0189819A814DDD8091E800C5 -:200BC0008B778093E80029C02038B1F58091E800877F8093E800809125028093F1008091EA -:200BE000E8008E778093E80093DC17C0211124C090912902923088F48091E800877F809315 -:200C0000E8009093250284DC80912502882311F084E001C083E08EBB83DB8091E80083FFB4 -:200C20000DC08091EB0080628093EB008091E800877F8093E80002C076DBEFCFAA960FB63B -:200C4000F894DEBF0FBECDBFDF91CF911F9108950895CF938EB3882359F0C091E900C77050 -:200C60001092E9008091E80083FDB8DEC093E900CF9108950895CF93DF93EC018091E8004A -:200C800083FF5FC0888190E020912B0230912C022817390709F055C080912802813249F0B9 -:200CA00018F48032C9F04DC0823261F18332C9F148C080912702813A09F043C08091E80049 -:200CC000877F8093E80067E070E0CE010F966CDC8091E8008B7713C080912702813289F587 -:200CE0008091E800877F8093E80067E070E0CE010F9609DDCE011ADB8091E8008E77809334 -:200D0000E8001FC0809127028132D9F48091E800877F8093E800809129028D87CE0189DBD5 -:200D20000DC080912702813261F48091E800877F8093E80060912902CE019CDFDF91CF9174 -:200D4000E7CBDF91CF9108950F931F93CF93DF93EC01FC013D9689E0DF011D928A95E9F798 -:200D60002A813B818C81882311F014E001C010E00981C90198DB412F482B426061E8802F6A -:200D8000A0DB882341F12E813F818885882311F014E001C010E00D81C90185DB412F482B93 -:200DA000426060E8802F8DDB8823A9F02A853B858C85882311F014E001C010E0C985C90105 -:200DC00072DB412F482B426061EC8C2FDF91CF911F910F9176CB80E0DF91CF911F910F9158 -:200DE0000895CF93C62F2EB32430E9F4FC014785508961897289452B462B472BA1F0818180 -:200E00008093E9008091E80085FF04C0C093F10080E00AC08091E8008E778093E80097DBBC -:200E20008823A1F301C082E0CF9108952EB3243019F5FC014785508961897289452B462BA8 -:200E4000472BD1F081818093E9008091F200882389F09091E8008091E8008E778093E80038 -:200E600095FD08C074DB811108C08091E8008E778093E80080E0089582E008952EB3243045 -:200E800051F4FC014785508961897289452B462B472B09F0CBCF08952EB3243019F08FEF47 -:200EA0009FEF0895FC014785508961897289452B462B472BA1F385818093E9008091E8009E -:200EC00082FFEDCF8091F200882321F02091F10030E002C02FEF3FEF8091F200811105C0FC -:200EE0008091E8008B778093E800C9010895A1E21A2EAA1BBB1BFD010DC0AA1FBB1FEE1FB4 -:200F0000FF1FA217B307E407F50720F0A21BB30BE40BF50B661F771F881F991F1A9469F757 -:200F200060957095809590959B01AC01BD01CF010895EE0FFF1F0590F491E02D0994F8949E -:200F4000FFCF00034000000440000002080000000000000000000000FFFFFFFFFFFFFFFF3A -:200F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91 -:200F800020F0A21BB30BE40BF50B661F771F881F991F1A9469F760957095809590959B017F -:200FA000AC01BD01CF010895F894FFCF00034000000440000002080000000000000000006E -:200FC0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F -:200FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 -:20100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -:20102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 -:20104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:20106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:20108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 -:2010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 -:2010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 -:2010E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 -:20110000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF -:20112000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF -:20114000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF -:20116000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F -:20118000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F -:2011A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F -:2011C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F -:2011E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F -:20120000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE -:20122000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE -:20124000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE -:20126000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E -:20128000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E -:2012A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E -:2012C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E -:2012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E -:20130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED -:20132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD -:20134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD -:20136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D -:20138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D -:2013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D -:2013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D -:2013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D -:20140000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC -:20142000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC -:20144000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC -:20146000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C -:20148000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C -:2014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C -:2014C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C -:2014E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C -:20150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB -:20152000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB -:20154000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB -:20156000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B -:20158000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B -:2015A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B -:2015C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B -:2015E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B -:20160000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA -:20162000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA -:20164000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA -:20166000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A -:20168000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A -:2016A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A -:2016C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A -:2016E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A -:20170000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 -:20172000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 -:20174000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 -:20176000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 -:20178000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 -:2017A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 -:2017C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 -:2017E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 -:20180000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 -:20182000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 -:20184000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 -:20186000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 -:20188000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 -:2018A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 -:2018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 -:2018E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 -:20190000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 -:20192000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 -:20194000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 -:20196000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 -:20198000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 -:2019A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 -:2019C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 -:2019E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 -:201A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 -:201A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 -:201A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 -:201A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 -:201A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 -:201AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 -:201AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 -:201AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 -:201B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 -:201B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 -:201B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 -:201B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 -:201B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 -:201BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 -:201BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 -:201BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 -:201C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 -:201C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 -:201C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 -:201C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 -:201C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 -:201CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 -:201CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 -:201CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 -:201D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 -:201D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 -:201D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 -:201D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 -:201D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 -:201DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 -:201DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 -:201DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 -:201E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 -:201E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 -:201E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 -:201E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 -:201E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 -:201EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 -:201EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 -:201EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 -:201F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 -:201F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 -:201F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 -:201F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 -:201F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 -:201FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 -:201FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 -:201FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 -:20200000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 -:20202000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 -:20204000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:20206000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 -:20208000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 -:2020A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 -:2020C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 -:2020E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 -:20210000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF -:20212000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF -:20214000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F -:20216000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F -:20218000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F -:2021A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F -:2021C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F -:2021E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -:20220000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE -:20222000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE -:20224000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E -:20226000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E -:20228000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E -:2022A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E -:2022C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E -:2022E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE -:20230000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD -:20232000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD -:20234000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D -:20236000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D -:20238000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D -:2023A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D -:2023C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D -:2023E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD -:20240000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC -:20242000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC -:20244000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C -:20246000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C -:20248000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C -:2024A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C -:2024C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C -:2024E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC -:20250000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB -:20252000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB -:20254000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B -:20256000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B -:20258000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B -:2025A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B -:2025C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B -:2025E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB -:20260000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA -:20262000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA -:20264000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A -:20266000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A -:20268000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A -:2026A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A -:2026C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A -:2026E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA -:20270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 -:20272000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 -:20274000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 -:20276000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 -:20278000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 -:2027A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 -:2027C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 -:2027E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 -:20280000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 -:20282000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 -:20284000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 -:20286000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 -:20288000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 -:2028A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 -:2028C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 -:2028E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 -:20290000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 -:20292000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 -:20294000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 -:20296000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 -:20298000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 -:2029A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 -:2029C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 -:2029E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 -:202A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 -:202A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 -:202A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 -:202A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 -:202A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 -:202AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 -:202AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 -:202AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 -:202B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 -:202B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 -:202B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 -:202B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 -:202B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 -:202BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 -:202BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 -:202BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 -:202C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 -:202C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4 -:202C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 -:202C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74 -:202C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 -:202CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34 -:202CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 -:202CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 -:202D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3 -:202D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 -:202D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 -:202D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 -:202D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 -:202DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33 -:202DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13 -:202DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3 -:202E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 -:202E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2 -:202E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92 -:202E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72 -:202E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52 -:202EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32 -:202EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 -:202EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 -:202F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1 -:202F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 -:202F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91 -:202F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71 -:202F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51 -:202FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31 -:202FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 -:202FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 -:203000004BC0000064C0000062C0000060C000005EC000005CC000005AC0000058C00000D3 -:2030200056C0000054C0000052C00000CBC400004EC000004CC000004AC0000048C0000099 -:2030400046C0000044C0000042C0000040C000003EC000003CC000003AC0000038C0000078 -:2030600036C0000034C0000032C0000030C000002EC000002CC000002AC0000028C00000D8 -:2030800026C0000024C0000022C0000020C000001EC000001CC0000011241FBECFEFD2E068 -:2030A000DEBFCDBF11E0A0E0B1E0E4EBFCE302C005900D92A836B107D9F711E0A8E6B1E0CB -:2030C00001C01D92A738B107E1F74FD3F1C598CF982F15C08091F200882371F48091E8002A -:2030E0008B7F8093E80003C08EB3882351F08091E80082FFF9CF02C08091F1009150992338 -:2031000049F708952091760130917501809174019091730180936D0190936E01C901809368 -:203120006F0190937001089580917101843009F45AC0853030F4813059F0833009F0C3C09E -:203140001FC0853009F4A0C0863009F0BCC0AFC080917201823008F0B6C0D4DF8091720109 -:20316000882361F480916D0190916E0123E0FC0120935700E89507B600FCFDCF85E008C007 -:2031800080917201882311F0823029F4BBDF89E0809301010895813009F095C020E030E06C -:2031A00040E050E0F90184918F3F81F0CA01AA27BB2780936C0130936E0120936D018AE0B6 -:2031C0008093010185E08093690108952F5F3F4F4F4F5F4F2030F0E33F07F0E04F07F0E094 -:2031E0005F0701F7089580917201833051F581E0809368018091770190917801892B71F042 -:2032000080917301813009F05EC0809176019091750190936B0180936A0108958091730113 -:20322000882361F42CE088E190E00FB6F894A895809360000FBE2093600008951092000188 -:203240000895882309F03FC0809173018F3F09F03AC0E0E0F0E093E085E090935700E89589 -:2032600007B600FCFDCF80935700E89507B600FCFDCFE058FF4F20E3E030F20771F781E101 -:2032800080935700E8950895E091730180917201882321F4F0E0EB5FFE4F05C0813099F417 -:2032A000F0E0EE52FF4F808180937C01089580917201833041F480917301882321F48091C0 -:2032C000740180936C0108952F923F924F925F926F927F929F92AF92BF92CF92DF92EF92D0 -:2032E000FF920F931F93CF93DF938091850190918601909378018093770180917901882379 -:2033000051F08091790181508093790180917901882309F45D9A80917A01882351F08091D0 -:203320007A01815080937A0180917A01882309F45C9A80918001833009F4B2C1843030F4FC -:20334000813071F0823009F0E3C111C1853009F4C5C1853008F4BAC1863009F0D9C1CDC1FF -:203360005C9883E080937A018091E800877F8093E80080916801882329F0D6DE5D9A5C9A8F -:203380001092680120917701309178012115310529F42AC08EB3882309F4BAC18091E800EF -:2033A00082FFF8CF8091F10080937101215030403093780120937701E2E7F1E00CC080917F -:2033C000F10081932150304081E0E737F80719F43183208308C08091F200882381F7309374 -:2033E000780120937701A0DE80910101853009F0BAC08091770190917801892B21F482E022 -:2034000080930101B0C08AE163DE80916D018F715FDEC0916F01D091700120916D0130914C -:203420006E0121968E01021B130B219780917201882309F093C0180136942794C901A091D0 -:203440006C01B0E09C01AD0162E0E62EF12C012D112DE20EF31E041F151F59016A0190E0B8 -:2034600099249394B5E0A3E048C08091F200882371F48091E8008B7F8093E80004C08EB332 -:20348000882309F445C18091E80082FFF8CF0894210831088091F100682F8091F100782FFD -:2034A000F5010B0190925700E89511249F5F903419F021143104A1F4F901B0935700E89504 -:2034C00007B600FCFDCF2114310451F0F701A0935700E89507B600FCFDCFA801970190E087 -:2034E00042E0442E512C612C712CE40CF51C061D171DA40CB51CC61CD71C2114310409F080 -:20350000B4CFD0936E01C0936D0181E180935700E89527C08091F200882371F48091E80059 -:203520008B7F8093E80004C08EB3882309F4F0C08091E80082FFF8CF6091F10080916D0187 -:2035400090916E01A7D380916D0190916E01019690936E0180936D010150104001151105DB -:20356000C9F680E1B5DD8091E8008B7FC3C08091E800877F8093E8005D9883E08093790134 -:2035800004C08EB3882309F4C3C08091E80080FFF8CF80910101893091F08A3069F4809147 -:2035A0007201813049F480916D0190916E018093F1009093F1009BC080917C0196C0609153 -:2035C0006F017091700120916D0130916E016F5F7F4F7B01E21AF30A6150704080917201C4 -:2035E000882389F5870116950795C901A0916C01B0E09C01AD011FC08091F200803271F497 -:203600008091E8008E7F8093E80004C08EB3882309F47EC08091E80080FFF8CFF90185916F -:2036200094918093F1009093F100015010402E5F3F4F4F4F5F4F01151105F1F670936E01C0 -:2036400060936D0129C0823039F523C08091F200803271F48091E8008E7F8093E80004C07E -:203660008EB3882309F454C08091E80080FFF8CF00916D0110916E01C80104D38093F1005B -:203680000F5F1F4F10936E0100936D010894E108F108E114F104D1F682E08093010127C0AE -:2036A0008091E800877F8093E800809169018093F1001092F1001092F1001092F1008091C7 -:2036C00001018093F1001092F10011C08091E800877F8093E8001092690119C08091E800A8 -:2036E000877F8093E800809101018093F1008091E8008E7F8093E8000AC08091E800877FE8 -:203700008093E8005D9A5C9A82E08093010187D0DF91CF911F910F91FF90EF90DF90CF90F7 -:20372000BF90AF909F907F906F905F904F903F902F9008952BD181E085BF15BE089584B779 -:20374000877F84BF88E10FB6F89480936000109260000FBE81E085BF82E085BF8AB18063BB -:203760008AB98BB180638BB90CC1E9DF789401C080D2809100018823D9F78091680188233D -:20378000B9F7D8DFE0916A01F0916B010995FA01923071F0933089F0913029F488E091E04A -:2037A00022E130E019C080E090E020E030E014C08AE191E02BE130E00FC0882339F48091B9 -:2037C0003501282F30E085E391E006C080913901282F30E089E391E091838083C9010895A0 -:2037E0008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881FC4 -:2038000008951092F4001092F0001092E8001092ED00EBEEF0E080818E7F80830895809162 -:203820007F0188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B7F8093E8004D -:2038400008958EB3882349F08091E80080FFF9CF8091E8008E7F8093E80008959C0140915A -:203860008501509186014617570718F4F90120E038C06115710511F0AB01F8CF8091E80048 -:203880008E7F8093E80040E050E0F0CF8091E80083FF02C081E008958091E80082FD2DC071 -:2038A0008EB3882381F18EB3853079F18091E80080FF17C09091F20006C081918093F1000C -:2038C000415050409F5F4115510511F09032A8F320E0903209F421E08091E8008E7F8093E6 -:2038E000E8004115510591F6222381F606C08EB3882349F08EB3853041F08091E80082FF65 -:20390000F6CF80E0089582E0089583E0089554D056D01EBA10927D0184E089BD89B58260DA -:2039200089BD09B400FEFDCF8091D800982F9F779093D80080688093D800809163008E7FA5 -:20394000809363008091D8008F7D8093D8008091E0008E7F8093E0008091E1008E7F80930E -:20396000E1008091E20081608093E2008091E100877F8093E1008091E20088608093E200E1 -:203980000895C5DF81E080937E010895C0DFE0EEF0E0808181608083E8EDF0E080818F7788 -:2039A00080830AD00CD019BCE3E6F0E080818160808310927E0108951092E200089510927A -:2039C000E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F93AF936A -:2039E000BF93EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F8093E100D9 -:203A00008091E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC5D -:203A20001EBA26D18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD09B431 -:203A400000FEFDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093B6 -:203A6000E2008091E20081608093E20080917D01882311F481E001C084E08EBBF9D08091B3 -:203A8000E10083FF22C08091E20083FF1EC08091E100877F8093E10082E08EBB10927D01D7 -:203AA0008091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200A1DED6 -:203AC00080E060E042E28CDED3D08091E10082FF0AC08091E20082FF06C08091E1008B7FA2 -:203AE0008093E100C5D0FF91EF91BF91AF919F918F917F916F915F914F913F912F910F903E -:203B00000FBE0F901F9018951F93DF93CF9300D0CDB7DEB7EFE7F1E08091F100819381E050 -:203B2000E738F807C9F790917F0180918001853011F1863040F48130B9F0813070F08330B5 -:203B400009F081C011C0883009F453C0893009F462C0863009F077C02DC0903809F474C0EE -:203B6000923809F070C070C0992309F46DC0923009F069C069C0992309F065C01091810132 -:203B80008091E800877F8093E80049DE04C08EB3882309F459C08091E80080FFF8CF812F4F -:203BA0008F7711F492E001C093E09EBB80688093E3004AC09058923008F045C080918101D9 -:203BC0009091820160918301AE014F5F5F4FDFDDBC010097C9F18091E800877F8093E800FD -:203BE00089819A813BDE8091E8008B7F8093E8002BC0903841F58091E800877F8093E800A6 -:203C000080917D018093F1008091E8008E7F8093E80005DE19C09923B1F49091810192308E -:203C200098F48091E800877F8093E80090937D01F6DD80917D01882311F483E001C084E0C3 -:203C40008EBB16D001C040DB8091E80083FF0AC08091EB0080628093EB008091E800877F39 -:203C60008093E8000F900F90CF91DF911F91089508958EB3882329F08091E80083FF01C010 -:203C800043CF0895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD4B -:203CA00020BD0FB6F894FA9AF99A0FBE01960895F894FFCF01021E948920DCFB12011001FB -:203CC00000000020EB03EF2F00000001000109021B0001010080320904000000FE010200CE -:203CE0000921030000000C0001040309042C03410054006D0065006700610031003600555C -:1C3D00000032002000440046005500200020002000200020002000200000000096 -:00000001FF diff --git a/firmwares/atmegaxxu2/MEGA-dfu_and_usbserial_combined.hex b/firmwares/atmegaxxu2/MEGA-dfu_and_usbserial_combined.hex deleted file mode 100644 index e22196c..0000000 --- a/firmwares/atmegaxxu2/MEGA-dfu_and_usbserial_combined.hex +++ /dev/null @@ -1,234 +0,0 @@ -:20000000A2C00000BBC00000B9C00000B7C00000B5C00000B3C00000B1C00000AFC000004B -:20002000ADC00000ABC00000A9C000005AC400001EC40000A3C00000A1C000009FC000005C -:200040009DC000009BC0000099C0000097C0000095C0000093C0000091C0000014C100006A -:200060008DC000008BC0000089C0000087C0000085C0000083C0000081C000007FC0000050 -:200080007DC000007BC0000079C0000077C0000075C0000073C000001201100102000008E2 -:2000A0004123100001000102DC0109023E00020100C0320904000001020201000524000170 -:2000C00010042402060524060001070582030800FF09040100020A000000070504024000AC -:2000E0000107058302400001040309043203410072006400750069006E006F0020002800CA -:200100007700770077002E00610072006400750069006E006F002E0063006300290000003D -:200120002403410072006400750069006E006F0020004D00650067006100200032003500A5 -:2001400036003000000011241FBECFEFD2E0DEBFCDBF11E0A0E0B1E0E0EDFFE002C0059089 -:200160000D92A631B107D9F712E0A6E1B1E001C01D92AF32B107E1F7F1D028C741CF9C0139 -:20018000DC01AE57BF4FED91FC91119741911196FC93EE9380589F4FE817F90711F42D93A9 -:2001A0003C939FB7F894F901EC57FF4F8081815080839FBF842F0895DF92EF92FF920F935B -:2001C0001F93FC018489813019F0823021F405C040E3D42E04C0DD2402C030E2D32E838952 -:2001E000823011F488E0D82A8589873031F0883031F0863031F482E003C084E001C086E094 -:20020000D82A1092C9001092C8001092CA00E784F0880189128980E0E81681EEF80680E068 -:20022000080780E0180719F420E130E00FC0C801B701969587957795679560587B47814E2A -:200240009F4FA8019701A0D6215030403093CD002093CC00D092CA0080E0E81681EEF80612 -:2002600080E0080780E0180711F082E001C080E08093C80088E98093C9001F910F91FF9005 -:20028000EF90DF9008951F920F920FB60F9211242F938F939F93EF93FF939091CE008EB38C -:2002A0008430F1F4E0919901F0919A019083E0919901F0919A01CF01019690939A0180930C -:2002C00099018959914021F489E191E0928381839FB7F89480919D018F5F80939D019FBF3A -:2002E000FF91EF919F918F912F910F900FBE0F901F901895FC01858580FF02C05F9808959B -:200300005F9A089580E091E0D5C580E091E088C584B7877F84BF28E10FB6F89420936000CD -:20032000109260000FBE87E690E09093CD008093CC0086E08093CA001092C8002093C90019 -:20034000539A5A9A8AB180638AB98BB180638BB983D284E085BD5F9A579A08950F931F9322 -:20036000CF93DF93D5DF2FB7F8948EE991E090931F0280931E0290932102809320022FBFBB -:200380002FB7F89489E191E090939A018093990190939C0180939B012FBF7894CEE9D1E0D4 -:2003A00003E08FB7F894909122028FBF903809F180E091E0ABD497FD1CC0E0911E02F09161 -:2003C0001F028083E0911E02F0911F02CF01019690931F0280931E028E51924011F4D283DD -:2003E000C1839FB7F894809122028F5F809322029FBF8FB7F89410919D018FBFA89902C0BD -:20040000113678F1A89A80919D01882361F05D980093160108C089E191E0B1DE682F80E077 -:2004200091E0DAD411501123B1F780911601882351F0809116018150809316018091160101 -:20044000882309F45D9A80911701882351F08091170181508093170180911701882309F4F2 -:200460005C9A8FB7F894909122028FBF992369F08EE991E084DE982F8091C80085FFFCCFD3 -:200480009093CE005C980093170180E091E095D42AD487CFDA01923049F0933061F0913093 -:2004A000F9F4E8E9F0E022E130E01EC0EAEAF0E02EE330E019C0813049F0813018F08230CA -:2004C00079F408C0E8EEF0E0849107C0ECEEF0E0849103C0E0E2F1E08491282F30E004C010 -:2004E000E0E0F0E020E030E0ED93FC93C901089528E030E040E003C04F5F220F331F28177B -:200500003907D0F3842F8295807F08958093E9008091EB0081608093EB001092ED00609319 -:20052000EC004093ED008091EE00881F8827881F08951092F40090E09093E9001092F000D2 -:200540001092E8001092ED008091EB008E7F8093EB009F5F953081F70895809127028823BE -:200560008CF403C08EB38823B1F08091E80082FFF9CF8091E8008B778093E80008958EB395 -:20058000882349F08091E80080FFF9CF8091E8008E778093E800089594E68091EC0080FFAB -:2005A00005C08091E80080FF05C023C08091E80082FD1FC08EB3882311F482E008958EB3CE -:2005C000853011F483E008958091EB0085FF02C081E008958091E10082FFDFCF8091E1000E -:2005E0008B7F8093E100992311F484E008959150D4CF80E008959C0140912D0250912E020C -:200600004617570718F4F90120E038C06115710511F0AB01F8CF8091E8008E778093E800C8 -:2006200040E050E0F0CF8091E80083FF02C081E008958091E80082FD2DC08EB3882381F1AD -:200640008EB3853079F18091E80080FF17C09091F20006C081918093F100415050409F5FDD -:200660004115510511F09830A8F320E0983009F421E08091E8008E778093E80041155105FF -:2006800091F6222381F606C08EB3882349F08EB3853041F08091E80082FFF6CF80E00895C9 -:2006A00082E0089583E008959C0140912D0250912E024617570710F490E03BC06115710577 -:2006C00011F0AB01F9CF8091E8008E778093E80040E050E0F1CF8091E80083FF02C081E0FE -:2006E00008958091E80082FD30C08EB3882399F18EB3853091F18091E80080FF1AC08091A4 -:20070000F20009C0F9012F5F3F4FE491E093F100415050408F5F4115510511F0883090F338 -:2007200090E0883009F491E08091E8008E778093E8004115510579F6992369F606C08EB3ED -:20074000882349F08EB3853041F08091E80082FFF6CF80E0089582E0089583E008959C01B6 -:200760006115710529F48091E8008B778093E800F90120C08091E80083FF02C081E0089565 -:200780008EB3882339F18EB3853031F18091E80082FFF0CF06C08091F100819361507040B5 -:2007A00021F08091F2008823B1F78091E8008B778093E80061157105E9F606C08EB388235F -:2007C00049F08EB3853041F08091E80080FFF6CF80E0089582E0089583E0089542D044D05A -:2007E0001EBA10922502109224021092230284E089BD89B5826089BD09B400FEFDCF809121 -:20080000D800982F9F779093D80080688093D800809163008E7F809363008091D8008F7D69 -:200820008093D8008091E0008E7F8093E0008091E1008E7F8093E1008091E2008160809302 -:20084000E2008091E100877F8093E1008091E20088608093E2000895C1DF81E08093260221 -:2008600008951092E20008951092E10008951F920F920FB60F9211241F932F933F934F9385 -:200880005F936F937F938F939F93AF93BF93EF93FF93E9EEF0E0108117701082E0EFF0E066 -:2008A0008081877F80837894C3D0F894A9EEB0E01C92E0EFF0E08081886080831C93FF9164 -:2008C000EF91BF91AF919F918F917F916F915F914F913F912F911F910F900FBE0F901F90DE -:2008E00018951F920F920FB60F9211242F933F934F935F936F937F938F939F93AF93BF93FA -:20090000EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F8093E10080912A -:20092000E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC1EBAA7 -:20094000D1D18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD09B400FE71 -:20096000FDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093E200E3 -:200980008091E20081608093E20080912502882311F481E001C084E08EBBA4D18091E10070 -:2009A00083FF27C08091E20083FF23C08091E100877F8093E10082E08EBB10922502809105 -:2009C000E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200AADD80E090 -:2009E00060E042E093DD8091F00088608093F00079D18091E10082FF0AC08091E20082FF3E -:200A000006C08091E1008B7F8093E1006BD1FF91EF91BF91AF919F918F917F916F915F91F4 -:200A20004F913F912F910F900FBE0F901F9018951F93DF93CF93CDB7DEB7AC970FB6F894AC -:200A4000DEBF0FBECDBFE7E2F2E08091F100819322E0EF32F207C9F78091270230912802EE -:200A6000353009F487C0363040F43130C9F1313070F0333009F01DC133C0383009F4EFC016 -:200A8000393009F4FEC0363009F013C192C0803821F0823809F00DC108C090912302809144 -:200AA0002402882399F0926011C080912B0287708093E9008091EB0090E025E09695879530 -:200AC0002A95E1F7982F91701092E9008091E800877F8093E8009093F1001092F100CAC001 -:200AE000882319F0823009F0E4C090E08F719070009721F0029709F0DDC00CC080912902A4 -:200B0000813009F0D7C010922402333069F5809324022AC080912902882331F520912B02FD -:200B2000277009F4C7C02093E9008091EB0080FFC1C0333021F48091EB00806213C08091C8 -:200B4000EB0080618093EB0081E090E002C0880F991F2A95E2F78093EA001092EA008091B7 -:200B6000EB0088608093EB001092E9008091E800877F83C0882309F09CC0109129028091FA -:200B8000E800877F8093E800E8DC04C08EB3882309F490C08091E80080FFF8CF812F8F77B6 -:200BA00011F492E001C093E09EBB80688093E30081C08058823008F07CC0809129029091F7 -:200BC0002A0223E08C3D920799F55FB7F894DE0115964EE020E030E061E2E42FF0E0609373 -:200BE0005700849120FF03C082958F704F5F982F9F70892F805D8A3308F0895F8C93119615 -:200C00001C9211972F5F3F4F12962431310529F75FBF8AE28B8383E08C838091E800877F06 -:200C20008093E800CE0103966AE270E0E4DC11C060912B02AE014F5F5F4F2CDCBC0100979F -:200C4000C9F18091E800877F8093E80089819A812BDD8091E8008B778093E8002BC080381A -:200C600041F58091E800877F8093E800809125028093F1008091E8008E778093E8006DDCC6 -:200C800019C08823B1F490912902923098F48091E800877F8093E800909325025EDC809102 -:200CA0002502882311F483E001C084E08EBB2DDB01C028DB8091E80083FF0AC08091EB007F -:200CC00080628093EB008091E800877F8093E800AC960FB6F894DEBF0FBECDBFCF91DF91E1 -:200CE0001F91089508951F938EB3882361F01091E9001092E9008091E80083FF01C098DE54 -:200D000017701093E9001F9108950895FC018EB3843021F587859089A189B2890097A10507 -:200D2000B105E1F085818093E9008091E80082FF15C08091F200882319F42FEF3FEF04C010 -:200D40008091F100282F30E08091F200882341F48091E8008B778093E80002C02FEF3FEF43 -:200D6000C9010895FC018EB3843011F587859089A189B2890097A105B105D1F081818093C1 -:200D8000E9008091F2008823A9F09091E8008091E8008E778093E80095FD0CC0FDDB982F24 -:200DA000882349F48091E8008E778093E80003C092E001C090E0892F0895FC018EB38430A5 -:200DC00051F487859089A189B2890097A105B10511F0CF01C7CF08951F93FC01162F8EB318 -:200DE0008430D9F487859089A189B2890097A105B10599F081818093E9008091E80085FDF3 -:200E000008C08091E8008E778093E800C5DB882329F41093F10080E001C082E01F91089545 -:200E20000F931F93CF93DF93EC010D96FC0189E0DF011D928A95E9F72A813B8109818C8108 -:200E4000882311F410E001C014E0C90151DB182B1260802F61E8412F59DB882329F12E8182 -:200E60003F810D818885882311F410E001C014E0C9013EDB182B1260802F60E8412F46DBA2 -:200E8000882391F02A853B8509858C85882311F410E001C014E0C9012BDB182B1260802F8F -:200EA00061EC412F33DB01C080E0DF91CF911F910F910895CF93DF93EC018091E80083FF4D -:200EC00060C0888190E020912B0230912C022817390709F056C080912802813261F082322B -:200EE00020F4803209F04DC019C0823269F1833209F047C038C080912702813A09F041C0A3 -:200F00008091E800877F8093E800CE010F9667E070E071DB8091E8008B7713C08091270278 -:200F2000813279F58091E800877F8093E800CE010F9667E070E013DCCE013ED98091E800BD -:200F40008E778093E8001DC0809127028132C9F48091E800877F8093E800809129028D87C0 -:200F6000CE01C8D90DC080912702813251F48091E800877F8093E800CE0160912902C5DE7A -:200F8000ECDADF91CF910895A1E21A2EAA1BBB1BFD010DC0AA1FBB1FEE1FFF1FA217B307AC -:200FA000E407F50720F0A21BB30BE40BF50B661F771F881F991F1A9469F760957095809539 -:200FC00090959B01AC01BD01CF010895F894FFCF000340000004400000020800000000008D -:200FE000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B -:201000004BC0000064C0000062C0000060C000005EC000005CC000005AC0000058C00000F3 -:2010200056C0000054C0000052C00000CBC400004EC000004CC000004AC0000048C00000B9 -:2010400046C0000044C0000042C0000040C000003EC000003CC000003AC0000038C0000098 -:2010600036C0000034C0000032C0000030C000002EC000002CC000002AC0000028C00000F8 -:2010800026C0000024C0000022C0000020C000001EC000001CC0000011241FBECFEFD2E088 -:2010A000DEBFCDBF11E0A0E0B1E0E4EBFCE102C005900D92A836B107D9F711E0A8E6B1E0ED -:2010C00001C01D92A738B107E1F74FD3F1C598CF982F15C08091F200882371F48091E8004A -:2010E0008B7F8093E80003C08EB3882351F08091E80082FFF9CF02C08091F1009150992358 -:2011000049F708952091760130917501809174019091730180936D0190936E01C901809388 -:201120006F0190937001089580917101843009F45AC0853030F4813059F0833009F0C3C0BE -:201140001FC0853009F4A0C0863009F0BCC0AFC080917201823008F0B6C0D4DF8091720129 -:20116000882361F480916D0190916E0123E0FC0120935700E89507B600FCFDCF85E008C027 -:2011800080917201882311F0823029F4BBDF89E0809301010895813009F095C020E030E08C -:2011A00040E050E0F90184918F3F81F0CA01AA27BB2780936C0130936E0120936D018AE0D6 -:2011C0008093010185E08093690108952F5F3F4F4F4F5F4F2030F0E13F07F0E04F07F0E0B6 -:2011E0005F0701F7089580917201833051F581E0809368018091770190917801892B71F062 -:2012000080917301813009F05EC0809176019091750190936B0180936A0108958091730133 -:20122000882361F42CE088E190E00FB6F894A895809360000FBE20936000089510920001A8 -:201240000895882309F03FC0809173018F3F09F03AC0E0E0F0E093E085E090935700E895A9 -:2012600007B600FCFDCF80935700E89507B600FCFDCFE058FF4F20E1E030F20771F781E123 -:2012800080935700E8950895E091730180917201882321F4F0E0EB5FFE4F05C0813099F437 -:2012A000F0E0EE52FF4F808180937C01089580917201833041F480917301882321F48091E0 -:2012C000740180936C0108952F923F924F925F926F927F929F92AF92BF92CF92DF92EF92F0 -:2012E000FF920F931F93CF93DF938091850190918601909378018093770180917901882399 -:2013000051F08091790181508093790180917901882309F45D9A80917A01882351F08091F0 -:201320007A01815080937A0180917A01882309F45C9A80918001833009F4B2C1843030F41C -:20134000813071F0823009F0E3C111C1853009F4C5C1853008F4BAC1863009F0D9C1CDC11F -:201360005C9883E080937A018091E800877F8093E80080916801882329F0D6DE5D9A5C9AAF -:201380001092680120917701309178012115310529F42AC08EB3882309F4BAC18091E8000F -:2013A00082FFF8CF8091F10080937101215030403093780120937701E2E7F1E00CC080919F -:2013C000F10081932150304081E0E737F80719F43183208308C08091F200882381F7309394 -:2013E000780120937701A0DE80910101853009F0BAC08091770190917801892B21F482E042 -:2014000080930101B0C08AE163DE80916D018F715FDEC0916F01D091700120916D0130916C -:201420006E0121968E01021B130B219780917201882309F093C0180136942794C901A091F0 -:201440006C01B0E09C01AD0162E0E62EF12C012D112DE20EF31E041F151F59016A0190E0D8 -:2014600099249394B5E0A3E048C08091F200882371F48091E8008B7F8093E80004C08EB352 -:20148000882309F445C18091E80082FFF8CF0894210831088091F100682F8091F100782F1D -:2014A000F5010B0190925700E89511249F5F903419F021143104A1F4F901B0935700E89524 -:2014C00007B600FCFDCF2114310451F0F701A0935700E89507B600FCFDCFA801970190E0A7 -:2014E00042E0442E512C612C712CE40CF51C061D171DA40CB51CC61CD71C2114310409F0A0 -:20150000B4CFD0936E01C0936D0181E180935700E89527C08091F200882371F48091E80079 -:201520008B7F8093E80004C08EB3882309F4F0C08091E80082FFF8CF6091F10080916D01A7 -:2015400090916E01A7D380916D0190916E01019690936E0180936D010150104001151105FB -:20156000C9F680E1B5DD8091E8008B7FC3C08091E800877F8093E8005D9883E08093790154 -:2015800004C08EB3882309F4C3C08091E80080FFF8CF80910101893091F08A3069F4809167 -:2015A0007201813049F480916D0190916E018093F1009093F1009BC080917C0196C0609173 -:2015C0006F017091700120916D0130916E016F5F7F4F7B01E21AF30A6150704080917201E4 -:2015E000882389F5870116950795C901A0916C01B0E09C01AD011FC08091F200803271F4B7 -:201600008091E8008E7F8093E80004C08EB3882309F47EC08091E80080FFF8CFF90185918F -:2016200094918093F1009093F100015010402E5F3F4F4F4F5F4F01151105F1F670936E01E0 -:2016400060936D0129C0823039F523C08091F200803271F48091E8008E7F8093E80004C09E -:201660008EB3882309F454C08091E80080FFF8CF00916D0110916E01C80104D38093F1007B -:201680000F5F1F4F10936E0100936D010894E108F108E114F104D1F682E08093010127C0CE -:2016A0008091E800877F8093E800809169018093F1001092F1001092F1001092F1008091E7 -:2016C00001018093F1001092F10011C08091E800877F8093E8001092690119C08091E800C8 -:2016E000877F8093E800809101018093F1008091E8008E7F8093E8000AC08091E800877F08 -:201700008093E8005D9A5C9A82E08093010187D0DF91CF911F910F91FF90EF90DF90CF9017 -:20172000BF90AF909F907F906F905F904F903F902F9008952BD181E085BF15BE089584B799 -:20174000877F84BF88E10FB6F89480936000109260000FBE81E085BF82E085BF8AB18063DB -:201760008AB98BB180638BB90CC1E9DF789401C080D2809100018823D9F78091680188235D -:20178000B9F7D8DFE0916A01F0916B010995FA01923071F0933089F0913029F488E091E06A -:2017A00022E130E019C080E090E020E030E014C08AE191E02BE130E00FC0882339F48091D9 -:2017C0003501282F30E085E391E006C080913901282F30E089E391E091838083C9010895C0 -:2017E0008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881FE4 -:2018000008951092F4001092F0001092E8001092ED00EBEEF0E080818E7F80830895809182 -:201820007F0188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B7F8093E8006D -:2018400008958EB3882349F08091E80080FFF9CF8091E8008E7F8093E80008959C0140917A -:201860008501509186014617570718F4F90120E038C06115710511F0AB01F8CF8091E80068 -:201880008E7F8093E80040E050E0F0CF8091E80083FF02C081E008958091E80082FD2DC091 -:2018A0008EB3882381F18EB3853079F18091E80080FF17C09091F20006C081918093F1002C -:2018C000415050409F5F4115510511F09032A8F320E0903209F421E08091E8008E7F809306 -:2018E000E8004115510591F6222381F606C08EB3882349F08EB3853041F08091E80082FF85 -:20190000F6CF80E0089582E0089583E0089554D056D01EBA10927D0184E089BD89B58260FA -:2019200089BD09B400FEFDCF8091D800982F9F779093D80080688093D800809163008E7FC5 -:20194000809363008091D8008F7D8093D8008091E0008E7F8093E0008091E1008E7F80932E -:20196000E1008091E20081608093E2008091E100877F8093E1008091E20088608093E20001 -:201980000895C5DF81E080937E010895C0DFE0EEF0E0808181608083E8EDF0E080818F77A8 -:2019A00080830AD00CD019BCE3E6F0E080818160808310927E0108951092E200089510929A -:2019C000E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F93AF938A -:2019E000BF93EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F8093E100F9 -:201A00008091E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC7D -:201A20001EBA26D18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD09B451 -:201A400000FEFDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093D6 -:201A6000E2008091E20081608093E20080917D01882311F481E001C084E08EBBF9D08091D3 -:201A8000E10083FF22C08091E20083FF1EC08091E100877F8093E10082E08EBB10927D01F7 -:201AA0008091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200A1DEF6 -:201AC00080E060E042E28CDED3D08091E10082FF0AC08091E20082FF06C08091E1008B7FC2 -:201AE0008093E100C5D0FF91EF91BF91AF919F918F917F916F915F914F913F912F910F905E -:201B00000FBE0F901F9018951F93DF93CF9300D0CDB7DEB7EFE7F1E08091F100819381E070 -:201B2000E738F807C9F790917F0180918001853011F1863040F48130B9F0813070F08330D5 -:201B400009F081C011C0883009F453C0893009F462C0863009F077C02DC0903809F474C00E -:201B6000923809F070C070C0992309F46DC0923009F069C069C0992309F065C01091810152 -:201B80008091E800877F8093E80049DE04C08EB3882309F459C08091E80080FFF8CF812F6F -:201BA0008F7711F492E001C093E09EBB80688093E3004AC09058923008F045C080918101F9 -:201BC0009091820160918301AE014F5F5F4FDFDDBC010097C9F18091E800877F8093E8001D -:201BE00089819A813BDE8091E8008B7F8093E8002BC0903841F58091E800877F8093E800C6 -:201C000080917D018093F1008091E8008E7F8093E80005DE19C09923B1F4909181019230AE -:201C200098F48091E800877F8093E80090937D01F6DD80917D01882311F483E001C084E0E3 -:201C40008EBB16D001C040DB8091E80083FF0AC08091EB0080628093EB008091E800877F59 -:201C60008093E8000F900F90CF91DF911F91089508958EB3882329F08091E80083FF01C030 -:201C800043CF0895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD6B -:201CA00020BD0FB6F894FA9AF99A0FBE01960895F894FFCF01021E938220DCFB1201100123 -:201CC00000000020EB03F72F00000001000109021B0001010080320904000000FE010200E6 -:201CE0000921030000000C0001040309042C03410072006400750069006E006F0020004D28 -:1C1D000000650067006100200032003500360030002000440046005500000000AE -:00000001FF diff --git a/firmwares/atmegaxxu2/README.txt b/firmwares/atmegaxxu2/README.txt deleted file mode 100644 index 386dcf0..0000000 --- a/firmwares/atmegaxxu2/README.txt +++ /dev/null @@ -1,33 +0,0 @@ -Arduino Uno and Mega 2560 Firmwares for the ATmega8U2 - -This directory contains the firmwares used on the ATmega8U2 on the Arduino -Uno and Arduino Mega 2560. The arduino-usbdfu directory contains the DFU -bootloader on the 8U2; the arduino-usbserial directory contains the actual -usb to serial firmware. Both should be compiled against LUFA 100807. The -two .hex files in this directory combine the dfu and serial firmwares into -a single file to burn onto the 8U2. - -To burn (Uno): -avrdude -p at90usb82 -F -P usb -c avrispmkii -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m - -To burn (Mega 2560): -avrdude -p at90usb82 -F -P usb -c avrispmkii -U flash:w:MEGA-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m - - -Note on USB Vendor IDs (VID) and Product IDs (PID): The arduino-usbdfu -project uses Atmel's VID and MCU-specific PIDs to maintain compatibility -with their FLIP software. The source code to the arduino-usbserial -project includes Atmel's VID and a PID donated by them to LUFA. This -PID is used in LUFA's USBtoSerial project, which forms the basis for -arduino-usbserial. According to the LUFA documentation, this VID/PID -combination is: - - "For use in testing of LUFA powered devices during development only, - by non-commercial entities. All devices must accept collisions on this - VID/PID range (from other in-development LUFA devices) to be resolved - by using a unique release number in the Device Descriptor. No devices - using this VID/PID combination may be released to the general public." - -The production version of the arduino-usbserial firmware uses the -Arduino VID. This is only for use with official Arduino hardware and -should not be used on other products. \ No newline at end of file diff --git a/firmwares/atmegaxxu2/UNO-dfu_and_usbserial_combined.hex b/firmwares/atmegaxxu2/UNO-dfu_and_usbserial_combined.hex deleted file mode 100644 index 60acf44..0000000 --- a/firmwares/atmegaxxu2/UNO-dfu_and_usbserial_combined.hex +++ /dev/null @@ -1,234 +0,0 @@ -:200000009CC00000B5C00000B3C00000B1C00000AFC00000ADC00000ABC00000A9C000007B -:20002000A7C00000A5C00000A3C0000054C4000018C400009DC000009BC0000099C000008C -:2000400097C0000095C0000093C0000091C000008FC000008DC000008BC000000EC100009A -:2000600087C0000085C0000083C0000081C000007FC000007DC000007BC0000079C0000080 -:2000800077C0000075C0000073C0000071C000006FC000006DC00000120110010200000806 -:2000A0004123010001000102DC0109023E00020100C032090400000102020100052400017F -:2000C00010042402060524060001070582030800FF09040100020A000000070504024000AC -:2000E0000107058302400001040309043203410072006400750069006E006F0020002800CA -:200100007700770077002E00610072006400750069006E006F002E0063006300290000003D -:200120001803410072006400750069006E006F00200055006E006F00000011241FBECFEFB0 -:20014000D2E0DEBFCDBF11E0A0E0B1E0E4ECFFE002C005900D92A631B107D9F712E0A6E145 -:20016000B1E001C01D92AF32B107E1F7F1D028C747CF9C01DC01AE57BF4FED91FC91119707 -:2001800041911196FC93EE9380589F4FE817F90711F42D933C939FB7F894F901EC57FF4F10 -:2001A0008081815080839FBF842F0895DF92EF92FF920F931F93FC018489813019F082306F -:2001C00021F405C040E3D42E04C0DD2402C030E2D32E8389823011F488E0D82A8589873094 -:2001E00031F0883031F0863031F482E003C084E001C086E0D82A1092C9001092C800109201 -:20020000CA00E784F0880189128980E0E81681EEF80680E0080780E0180719F420E130E035 -:200220000FC0C801B701969587957795679560587B47814E9F4FA8019701A0D62150304050 -:200240003093CD002093CC00D092CA0080E0E81681EEF80680E0080780E0180711F082E047 -:2002600001C080E08093C80088E98093C9001F910F91FF90EF90DF9008951F920F920FB6B4 -:200280000F9211242F938F939F93EF93FF939091CE008EB38430F1F4E0919901F0919A016E -:2002A0009083E0919901F0919A01CF01019690939A01809399018959914021F489E191E08F -:2002C000928381839FB7F89480919D018F5F80939D019FBFFF91EF919F918F912F910F90B8 -:2002E0000FBE0F901F901895FC01858580FF02C05F9808955F9A089580E091E0D5C580E0F9 -:2003000091E088C584B7877F84BF28E10FB6F89420936000109260000FBE87E690E090935F -:20032000CD008093CC0086E08093CA001092C8002093C900539A5A9A8AB180638AB98BB16A -:2003400080638BB983D284E085BD5F9A579A08950F931F93CF93DF93D5DF2FB7F8948EE92F -:2003600091E090931F0280931E0290932102809320022FBF2FB7F89489E191E090939A0121 -:200380008093990190939C0180939B012FBF7894CEE9D1E003E08FB7F894909122028FBF97 -:2003A000903809F180E091E0ABD497FD1CC0E0911E02F0911F028083E0911E02F0911F0252 -:2003C000CF01019690931F0280931E028E51924011F4D283C1839FB7F894809122028F5FEB -:2003E000809322029FBF8FB7F89410919D018FBFA89902C0113678F1A89A80919D018823BA -:2004000061F05D980093160108C089E191E0B1DE682F80E091E0DAD411501123B1F7809156 -:200420001601882351F08091160181508093160180911601882309F45D9A809117018823FB -:2004400051F08091170181508093170180911701882309F45C9A8FB7F894909122028FBF0A -:20046000992369F08EE991E084DE982F8091C80085FFFCCF9093CE005C980093170180E03E -:2004800091E095D42AD487CFDA01923049F0933061F09130F9F4E8E9F0E022E130E01EC004 -:2004A000EAEAF0E02EE330E019C0813049F0813018F0823079F408C0E8EEF0E0849107C092 -:2004C000ECEEF0E0849103C0E0E2F1E08491282F30E004C0E0E0F0E020E030E0ED93FC9318 -:2004E000C901089528E030E040E003C04F5F220F331F28173907D0F3842F8295807F0895C1 -:200500008093E9008091EB0081608093EB001092ED006093EC004093ED008091EE00881F30 -:200520008827881F08951092F40090E09093E9001092F0001092E8001092ED008091EB000F -:200540008E7F8093EB009F5F953081F708958091270288238CF403C08EB38823B1F08091F2 -:20056000E80082FFF9CF8091E8008B778093E80008958EB3882349F08091E80080FFF9CF52 -:200580008091E8008E778093E800089594E68091EC0080FF05C08091E80080FF05C023C0EA -:2005A0008091E80082FD1FC08EB3882311F482E008958EB3853011F483E008958091EB00FD -:2005C00085FF02C081E008958091E10082FFDFCF8091E1008B7F8093E100992311F484E0A1 -:2005E00008959150D4CF80E008959C0140912D0250912E024617570718F4F90120E038C076 -:200600006115710511F0AB01F8CF8091E8008E778093E80040E050E0F0CF8091E80083FFF7 -:2006200002C081E008958091E80082FD2DC08EB3882381F18EB3853079F18091E80080FF5F -:2006400017C09091F20006C081918093F100415050409F5F4115510511F09830A8F320E0A5 -:20066000983009F421E08091E8008E778093E8004115510591F6222381F606C08EB388231A -:2006800049F08EB3853041F08091E80082FFF6CF80E0089582E0089583E008959C01409151 -:2006A0002D0250912E024617570710F490E03BC06115710511F0AB01F9CF8091E8008E7771 -:2006C0008093E80040E050E0F1CF8091E80083FF02C081E008958091E80082FD30C08EB32B -:2006E000882399F18EB3853091F18091E80080FF1AC08091F20009C0F9012F5F3F4FE491A4 -:20070000E093F100415050408F5F4115510511F0883090F390E0883009F491E08091E800EF -:200720008E778093E8004115510579F6992369F606C08EB3882349F08EB3853041F0809160 -:20074000E80082FFF6CF80E0089582E0089583E008959C016115710529F48091E8008B77CE -:200760008093E800F90120C08091E80083FF02C081E008958EB3882339F18EB3853031F13B -:200780008091E80082FFF0CF06C08091F10081936150704021F08091F2008823B1F780916B -:2007A000E8008B778093E80061157105E9F606C08EB3882349F08EB3853041F08091E8007E -:2007C00080FFF6CF80E0089582E0089583E0089542D044D01EBA10922502109224021092A8 -:2007E000230284E089BD89B5826089BD09B400FEFDCF8091D800982F9F779093D800806894 -:200800008093D800809163008E7F809363008091D8008F7D8093D8008091E0008E7F809305 -:20082000E0008091E1008E7F8093E1008091E20081608093E2008091E100877F8093E10030 -:200840008091E20088608093E2000895C1DF81E08093260208951092E20008951092E100AE -:2008600008951F920F920FB60F9211241F932F933F934F935F936F937F938F939F93AF932A -:20088000BF93EF93FF93E9EEF0E0108117701082E0EFF0E08081877F80837894C3D0F894CD -:2008A000A9EEB0E01C92E0EFF0E08081886080831C93FF91EF91BF91AF919F918F917F9129 -:2008C0006F915F914F913F912F911F910F900FBE0F901F9018951F920F920FB60F921124B4 -:2008E0002F933F934F935F936F937F938F939F93AF93BF93EF93FF938091E10080FF1BC034 -:200900008091E20080FF17C08091E1008E7F8093E1008091E2008E7F8093E2008091E200B3 -:2009200080618093E2008091D80080628093D80019BC1EBAD1D18091E10084FF29C080916D -:20094000E20084FF25C084E089BD89B5826089BD09B400FEFDCF8091D8008F7D8093D800D6 -:200960008091E1008F7E8093E1008091E2008F7E8093E2008091E20081608093E2008091B5 -:200980002502882311F481E001C084E08EBBA4D18091E10083FF27C08091E20083FF23C089 -:2009A0008091E100877F8093E10082E08EBB109225028091E1008E7F8093E1008091E200F1 -:2009C0008E7F8093E2008091E20080618093E200AADD80E060E042E093DD8091F0008860AA -:2009E0008093F00079D18091E10082FF0AC08091E20082FF06C08091E1008B7F8093E10043 -:200A00006BD1FF91EF91BF91AF919F918F917F916F915F914F913F912F910F900FBE0F902F -:200A20001F9018951F93DF93CF93CDB7DEB7AC970FB6F894DEBF0FBECDBFE7E2F2E0809185 -:200A4000F100819322E0EF32F207C9F78091270230912802353009F487C0363040F43130EC -:200A6000C9F1313070F0333009F01DC133C0383009F4EFC0393009F4FEC0363009F013C163 -:200A800092C0803821F0823809F00DC108C09091230280912402882399F0926011C080916D -:200AA0002B0287708093E9008091EB0090E025E0969587952A95E1F7982F91701092E90074 -:200AC0008091E800877F8093E8009093F1001092F100CAC0882319F0823009F0E4C090E078 -:200AE0008F719070009721F0029709F0DDC00CC080912902813009F0D7C0109224023330AB -:200B000069F5809324022AC080912902882331F520912B02277009F4C7C02093E9008091A1 -:200B2000EB0080FFC1C0333021F48091EB00806213C08091EB0080618093EB0081E090E0F5 -:200B400002C0880F991F2A95E2F78093EA001092EA008091EB0088608093EB001092E900F6 -:200B60008091E800877F83C0882309F09CC0109129028091E800877F8093E800E8DC04C0E5 -:200B80008EB3882309F490C08091E80080FFF8CF812F8F7711F492E001C093E09EBB80683B -:200BA0008093E30081C08058823008F07CC08091290290912A0223E08C3D920799F55FB7AE -:200BC000F894DE0115964EE020E030E061E2E42FF0E060935700849120FF03C082958F7044 -:200BE0004F5F982F9F70892F805D8A3308F0895F8C9311961C9211972F5F3F4F129624310A -:200C0000310529F75FBF8AE28B8383E08C838091E800877F8093E800CE0103966AE270E076 -:200C2000E4DC11C060912B02AE014F5F5F4F2CDCBC010097C9F18091E800877F8093E800EA -:200C400089819A812BDD8091E8008B778093E8002BC0803841F58091E800877F8093E8009E -:200C6000809125028093F1008091E8008E778093E8006DDC19C08823B1F4909129029230BF -:200C800098F48091E800877F8093E800909325025EDC80912502882311F483E001C084E0DA -:200CA0008EBB2DDB01C028DB8091E80083FF0AC08091EB0080628093EB008091E800877FFF -:200CC0008093E800AC960FB6F894DEBF0FBECDBFCF91DF911F91089508951F938EB3882338 -:200CE00061F01091E9001092E9008091E80083FF01C098DE17701093E9001F9108950895DF -:200D0000FC018EB3843021F587859089A189B2890097A105B105E1F085818093E90080916A -:200D2000E80082FF15C08091F200882319F42FEF3FEF04C08091F100282F30E08091F2003E -:200D4000882341F48091E8008B778093E80002C02FEF3FEFC9010895FC018EB3843011F550 -:200D600087859089A189B2890097A105B105D1F081818093E9008091F2008823A9F09091CF -:200D8000E8008091E8008E778093E80095FD0CC0FDDB982F882349F48091E8008E7780937C -:200DA000E80003C092E001C090E0892F0895FC018EB3843051F487859089A189B289009738 -:200DC000A105B10511F0CF01C7CF08951F93FC01162F8EB38430D9F487859089A189B28973 -:200DE0000097A105B10599F081818093E9008091E80085FD08C08091E8008E778093E8003D -:200E0000C5DB882329F41093F10080E001C082E01F9108950F931F93CF93DF93EC010D964E -:200E2000FC0189E0DF011D928A95E9F72A813B8109818C81882311F410E001C014E0C901A1 -:200E400051DB182B1260802F61E8412F59DB882329F12E813F810D818885882311F410E0A6 -:200E600001C014E0C9013EDB182B1260802F60E8412F46DB882391F02A853B8509858C8563 -:200E8000882311F410E001C014E0C9012BDB182B1260802F61EC412F33DB01C080E0DF916D -:200EA000CF911F910F910895CF93DF93EC018091E80083FF60C0888190E020912B02309171 -:200EC0002C022817390709F056C080912802813261F0823220F4803209F04DC019C082320A -:200EE00069F1833209F047C038C080912702813A09F041C08091E800877F8093E800CE0133 -:200F00000F9667E070E071DB8091E8008B7713C080912702813279F58091E800877F80930E -:200F2000E800CE010F9667E070E013DCCE013ED98091E8008E778093E8001DC080912702D9 -:200F40008132C9F48091E800877F8093E800809129028D87CE01C8D90DC0809127028132AD -:200F600051F48091E800877F8093E800CE0160912902C5DEECDADF91CF910895A1E21A2EA6 -:200F8000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FA217B307E407F50720F0A21BB30BE40B49 -:200FA000F50B661F771F881F991F1A9469F760957095809590959B01AC01BD01CF01089501 -:200FC000F894FFCF00034000000440000002080000000000000000000000FFFFFFFFFFFF2C -:200FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 -:201000004BC0000064C0000062C0000060C000005EC000005CC000005AC0000058C00000F3 -:2010200056C0000054C0000052C00000CBC400004EC000004CC000004AC0000048C00000B9 -:2010400046C0000044C0000042C0000040C000003EC000003CC000003AC0000038C0000098 -:2010600036C0000034C0000032C0000030C000002EC000002CC000002AC0000028C00000F8 -:2010800026C0000024C0000022C0000020C000001EC000001CC0000011241FBECFEFD2E088 -:2010A000DEBFCDBF11E0A0E0B1E0E4EBFCE102C005900D92AC35B107D9F711E0ACE5B1E0E7 -:2010C00001C01D92AB37B107E1F74FD3F1C598CF982F15C08091F200882371F48091E80047 -:2010E0008B7F8093E80003C08EB3882351F08091E80082FFF9CF02C08091F1009150992358 -:2011000049F7089520916A013091690180916801909167018093610190936201C9018093D0 -:20112000630190936401089580916501843009F45AC0853030F4813059F0833009F0C3C0E2 -:201140001FC0853009F4A0C0863009F0BCC0AFC080916601823008F0B6C0D4DF8091660141 -:20116000882361F4809161019091620123E0FC0120935700E89507B600FCFDCF85E008C03F -:2011800080916601882311F0823029F4BBDF89E0809301010895813009F095C020E030E098 -:2011A00040E050E0F90184918F3F81F0CA01AA27BB278093600130936201209361018AE0FA -:2011C0008093010185E080935D0108952F5F3F4F4F4F5F4F2030F0E13F07F0E04F07F0E0C2 -:2011E0005F0701F7089580916601833051F581E080935C0180916B0190916C01892B71F092 -:2012000080916701813009F05EC080916A019091690190935F0180935E010895809167017B -:20122000882361F42CE088E190E00FB6F894A895809360000FBE20936000089510920001A8 -:201240000895882309F03FC0809167018F3F09F03AC0E0E0F0E093E085E090935700E895B5 -:2012600007B600FCFDCF80935700E89507B600FCFDCFE058FF4F20E1E030F20771F781E123 -:2012800080935700E8950895E091670180916601882321F4F0E0EB5FFE4F05C0813099F44F -:2012A000F0E0EE52FF4F808180937001089580916601833041F480916701882321F4809104 -:2012C00068018093600108952F923F924F925F926F927F929F92AF92BF92CF92DF92EF9208 -:2012E000FF920F931F93CF93DF938091790190917A0190936C0180936B0180916D018823D5 -:2013000051F080916D01815080936D0180916D01882309F45D9A80916E01882351F0809120 -:201320006E01815080936E0180916E01882309F45C9A80917401833009F4B2C1843030F44C -:20134000813071F0823009F0E3C111C1853009F4C5C1853008F4BAC1863009F0D9C1CDC11F -:201360005C9883E080936E018091E800877F8093E80080915C01882329F0D6DE5D9A5C9AC7 -:2013800010925C0120916B0130916C012115310529F42AC08EB3882309F4BAC18091E80033 -:2013A00082FFF8CF8091F100809365012150304030936C0120936B01E6E6F1E00CC08091C0 -:2013C000F10081932150304081E0EB36F80719F43183208308C08091F200882381F7309391 -:2013E0006C0120936B01A0DE80910101853009F0BAC080916B0190916C01892B21F482E072 -:2014000080930101B0C08AE163DE809161018F715FDEC0916301D09164012091610130919C -:20142000620121968E01021B130B219780916601882309F093C0180136942794C901A09108 -:201440006001B0E09C01AD0162E0E62EF12C012D112DE20EF31E041F151F59016A0190E0E4 -:2014600099249394B5E0A3E048C08091F200882371F48091E8008B7F8093E80004C08EB352 -:20148000882309F445C18091E80082FFF8CF0894210831088091F100682F8091F100782F1D -:2014A000F5010B0190925700E89511249F5F903419F021143104A1F4F901B0935700E89524 -:2014C00007B600FCFDCF2114310451F0F701A0935700E89507B600FCFDCFA801970190E0A7 -:2014E00042E0442E512C612C712CE40CF51C061D171DA40CB51CC61CD71C2114310409F0A0 -:20150000B4CFD0936201C093610181E180935700E89527C08091F200882371F48091E80091 -:201520008B7F8093E80004C08EB3882309F4F0C08091E80082FFF8CF6091F10080916101B3 -:2015400090916201A7D3809161019091620101969093620180936101015010400115110537 -:20156000C9F680E1B5DD8091E8008B7FC3C08091E800877F8093E8005D9883E080936D0160 -:2015800004C08EB3882309F4C3C08091E80080FFF8CF80910101893091F08A3069F4809167 -:2015A0006601813049F480916101909162018093F1009093F1009BC08091700196C06091A3 -:2015C00063017091640120916101309162016F5F7F4F7B01E21AF30A615070408091660120 -:2015E000882389F5870116950795C901A0916001B0E09C01AD011FC08091F200803271F4C3 -:201600008091E8008E7F8093E80004C08EB3882309F47EC08091E80080FFF8CFF90185918F -:2016200094918093F1009093F100015010402E5F3F4F4F4F5F4F01151105F1F670936201EC -:201640006093610129C0823039F523C08091F200803271F48091E8008E7F8093E80004C0AA -:201660008EB3882309F454C08091E80080FFF8CF0091610110916201C80104D38093F10093 -:201680000F5F1F4F10936201009361010894E108F108E114F104D1F682E08093010127C0E6 -:2016A0008091E800877F8093E80080915D018093F1001092F1001092F1001092F1008091F3 -:2016C00001018093F1001092F10011C08091E800877F8093E80010925D0119C08091E800D4 -:2016E000877F8093E800809101018093F1008091E8008E7F8093E8000AC08091E800877F08 -:201700008093E8005D9A5C9A82E08093010187D0DF91CF911F910F91FF90EF90DF90CF9017 -:20172000BF90AF909F907F906F905F904F903F902F9008952BD181E085BF15BE089584B799 -:20174000877F84BF88E10FB6F89480936000109260000FBE81E085BF82E085BF8AB18063DB -:201760008AB98BB180638BB90CC1E9DF789401C080D2809100018823D9F780915C01882369 -:20178000B9F7D8DFE0915E01F0915F010995FA01923071F0933089F0913029F488E091E082 -:2017A00022E130E019C080E090E020E030E014C08AE191E02BE130E00FC0882339F48091D9 -:2017C0003501282F30E085E391E006C080913901282F30E089E391E091838083C9010895C0 -:2017E0008091EB0081608093EB001092ED006093EC004093ED008091EE00881F8827881FE4 -:2018000008951092F4001092F0001092E8001092ED00EBEEF0E080818E7F80830895809182 -:20182000730188238CF403C08EB38823B1F08091E80082FFF9CF8091E8008B7F8093E80079 -:2018400008958EB3882349F08091E80080FFF9CF8091E8008E7F8093E80008959C0140917A -:20186000790150917A014617570718F4F90120E038C06115710511F0AB01F8CF8091E80080 -:201880008E7F8093E80040E050E0F0CF8091E80083FF02C081E008958091E80082FD2DC091 -:2018A0008EB3882381F18EB3853079F18091E80080FF17C09091F20006C081918093F1002C -:2018C000415050409F5F4115510511F09032A8F320E0903209F421E08091E8008E7F809306 -:2018E000E8004115510591F6222381F606C08EB3882349F08EB3853041F08091E80082FF85 -:20190000F6CF80E0089582E0089583E0089554D056D01EBA1092710184E089BD89B5826006 -:2019200089BD09B400FEFDCF8091D800982F9F779093D80080688093D800809163008E7FC5 -:20194000809363008091D8008F7D8093D8008091E0008E7F8093E0008091E1008E7F80932E -:20196000E1008091E20081608093E2008091E100877F8093E1008091E20088608093E20001 -:201980000895C5DF81E0809372010895C0DFE0EEF0E0808181608083E8EDF0E080818F77B4 -:2019A00080830AD00CD019BCE3E6F0E08081816080831092720108951092E20008951092A6 -:2019C000E10008951F920F920FB60F9211242F933F934F935F936F937F938F939F93AF938A -:2019E000BF93EF93FF938091E10080FF1BC08091E20080FF17C08091E1008E7F8093E100F9 -:201A00008091E2008E7F8093E2008091E20080618093E2008091D80080628093D80019BC7D -:201A20001EBA26D18091E10084FF29C08091E20084FF25C084E089BD89B5826089BD09B451 -:201A400000FEFDCF8091D8008F7D8093D8008091E1008F7E8093E1008091E2008F7E8093D6 -:201A6000E2008091E20081608093E20080917101882311F481E001C084E08EBBF9D08091DF -:201A8000E10083FF22C08091E20083FF1EC08091E100877F8093E10082E08EBB1092710103 -:201AA0008091E1008E7F8093E1008091E2008E7F8093E2008091E20080618093E200A1DEF6 -:201AC00080E060E042E28CDED3D08091E10082FF0AC08091E20082FF06C08091E1008B7FC2 -:201AE0008093E100C5D0FF91EF91BF91AF919F918F917F916F915F914F913F912F910F905E -:201B00000FBE0F901F9018951F93DF93CF9300D0CDB7DEB7E3E7F1E08091F100819381E07C -:201B2000EB37F807C9F79091730180917401853011F1863040F48130B9F0813070F08330EA -:201B400009F081C011C0883009F453C0893009F462C0863009F077C02DC0903809F474C00E -:201B6000923809F070C070C0992309F46DC0923009F069C069C0992309F065C0109175015E -:201B80008091E800877F8093E80049DE04C08EB3882309F459C08091E80080FFF8CF812F6F -:201BA0008F7711F492E001C093E09EBB80688093E3004AC09058923008F045C08091750105 -:201BC0009091760160917701AE014F5F5F4FDFDDBC010097C9F18091E800877F8093E80035 -:201BE00089819A813BDE8091E8008B7F8093E8002BC0903841F58091E800877F8093E800C6 -:201C0000809171018093F1008091E8008E7F8093E80005DE19C09923B1F4909175019230C6 -:201C200098F48091E800877F8093E80090937101F6DD80917101882311F483E001C084E0FB -:201C40008EBB16D001C040DB8091E80083FF0AC08091EB0080628093EB008091E800877F59 -:201C60008093E8000F900F90CF91DF911F91089508958EB3882329F08091E80083FF01C030 -:201C800043CF0895F999FECF92BD81BDF89A992780B50895262FF999FECF1FBA92BD81BD6B -:201CA00020BD0FB6F894FA9AF99A0FBE01960895F894FFCF01021E938220DCFB1201100123 -:201CC00000000020EB03F72F00000001000109021B0001010080320904000000FE010200E6 -:201CE0000921030000000C0001040309042003410072006400750069006E006F002000552C -:101D0000006E006F002000440046005500000000F7 -:00000001FF diff --git a/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.c b/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.c deleted file mode 100644 index 7bed831..0000000 --- a/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.c +++ /dev/null @@ -1,728 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Main source file for the DFU class bootloader. This file contains the complete bootloader logic. - */ - -#define INCLUDE_FROM_BOOTLOADER_C -#include "Arduino-usbdfu.h" - -/** Flag to indicate if the bootloader should be running, or should exit and allow the application code to run - * via a soft reset. When cleared, the bootloader will abort, the USB interface will shut down and the application - * jumped to via an indirect jump to location 0x0000 (or other location specified by the host). - */ -bool RunBootloader = true; - -/** Flag to indicate if the bootloader is waiting to exit. When the host requests the bootloader to exit and - * jump to the application address it specifies, it sends two sequential commands which must be properly - * acknowledged. Upon reception of the first the RunBootloader flag is cleared and the WaitForExit flag is set, - * causing the bootloader to wait for the final exit command before shutting down. - */ -bool WaitForExit = false; - -/** Current DFU state machine state, one of the values in the DFU_State_t enum. */ -uint8_t DFU_State = dfuIDLE; - -/** Status code of the last executed DFU command. This is set to one of the values in the DFU_Status_t enum after - * each operation, and returned to the host when a Get Status DFU request is issued. - */ -uint8_t DFU_Status = OK; - -/** Data containing the DFU command sent from the host. */ -DFU_Command_t SentCommand; - -/** Response to the last issued Read Data DFU command. Unlike other DFU commands, the read command - * requires a single byte response from the bootloader containing the read data when the next DFU_UPLOAD command - * is issued by the host. - */ -uint8_t ResponseByte; - -/** Pointer to the start of the user application. By default this is 0x0000 (the reset vector), however the host - * may specify an alternate address when issuing the application soft-start command. - */ -AppPtr_t AppStartPtr = (AppPtr_t)0x0000; - -/** 64-bit flash page number. This is concatenated with the current 16-bit address on USB AVRs containing more than - * 64KB of flash memory. - */ -uint8_t Flash64KBPage = 0; - -/** Memory start address, indicating the current address in the memory being addressed (either FLASH or EEPROM - * depending on the issued command from the host). - */ -uint16_t StartAddr = 0x0000; - -/** Memory end address, indicating the end address to read to/write from in the memory being addressed (either FLASH - * of EEPROM depending on the issued command from the host). - */ -uint16_t EndAddr = 0x0000; - - -/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ -volatile struct -{ - uint8_t TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ - uint8_t RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ - uint8_t PingPongLEDPulse; /**< Milliseconds remaining for enumeration Tx/Rx ping-pong LED pulse */ -} PulseMSRemaining; - -/** Main program entry point. This routine configures the hardware required by the bootloader, then continuously - * runs the bootloader processing routine until instructed to soft-exit, or hard-reset via the watchdog to start - * the loaded application code. - */ -int main(void) -{ - /* Configure hardware required by the bootloader */ - SetupHardware(); - - /* Enable global interrupts so that the USB stack can function */ - sei(); - - /* Run the USB management task while the bootloader is supposed to be running */ - while (RunBootloader || WaitForExit) - USB_USBTask(); - - /* Reset configured hardware back to their original states for the user application */ - ResetHardware(); - - /* Start the user application */ - AppStartPtr(); -} - -/** Configures all hardware required for the bootloader. */ -void SetupHardware(void) -{ - /* Disable watchdog if enabled by bootloader/fuses */ - MCUSR &= ~(1 << WDRF); - wdt_disable(); - - /* Disable clock division */ -// clock_prescale_set(clock_div_1); - - /* Relocate the interrupt vector table to the bootloader section */ - MCUCR = (1 << IVCE); - MCUCR = (1 << IVSEL); - - LEDs_Init(); - - /* Initialize the USB subsystem */ - USB_Init(); -} - -/** Resets all configured hardware required for the bootloader back to their original states. */ -void ResetHardware(void) -{ - /* Shut down the USB subsystem */ - USB_ShutDown(); - - /* Relocate the interrupt vector table back to the application section */ - MCUCR = (1 << IVCE); - MCUCR = 0; -} - -/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific - * control requests that are not handled internally by the USB library (including the DFU commands, which are - * all issued via the control endpoint), so that they can be handled appropriately for the application. - */ -void EVENT_USB_Device_UnhandledControlRequest(void) -{ - /* Get the size of the command and data from the wLength value */ - SentCommand.DataSize = USB_ControlRequest.wLength; - - /* Turn off TX LED(s) once the TX pulse period has elapsed */ - if (PulseMSRemaining.TxLEDPulse && !(--PulseMSRemaining.TxLEDPulse)) - LEDs_TurnOffLEDs(LEDMASK_TX); - - /* Turn off RX LED(s) once the RX pulse period has elapsed */ - if (PulseMSRemaining.RxLEDPulse && !(--PulseMSRemaining.RxLEDPulse)) - LEDs_TurnOffLEDs(LEDMASK_RX); - - switch (USB_ControlRequest.bRequest) - { - case DFU_DNLOAD: - LEDs_TurnOnLEDs(LEDMASK_RX); - PulseMSRemaining.RxLEDPulse = TX_RX_LED_PULSE_MS; - - Endpoint_ClearSETUP(); - - /* Check if bootloader is waiting to terminate */ - if (WaitForExit) - { - /* Bootloader is terminating - process last received command */ - ProcessBootloaderCommand(); - - /* Turn off TX/RX status LEDs so that they're not left on when application starts */ - LEDs_TurnOffLEDs(LEDMASK_TX); - LEDs_TurnOffLEDs(LEDMASK_RX); - - /* Indicate that the last command has now been processed - free to exit bootloader */ - WaitForExit = false; - } - - /* If the request has a data stage, load it into the command struct */ - if (SentCommand.DataSize) - { - while (!(Endpoint_IsOUTReceived())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - - /* First byte of the data stage is the DNLOAD request's command */ - SentCommand.Command = Endpoint_Read_Byte(); - - /* One byte of the data stage is the command, so subtract it from the total data bytes */ - SentCommand.DataSize--; - - /* Load in the rest of the data stage as command parameters */ - for (uint8_t DataByte = 0; (DataByte < sizeof(SentCommand.Data)) && - Endpoint_BytesInEndpoint(); DataByte++) - { - SentCommand.Data[DataByte] = Endpoint_Read_Byte(); - SentCommand.DataSize--; - } - - /* Process the command */ - ProcessBootloaderCommand(); - } - - /* Check if currently downloading firmware */ - if (DFU_State == dfuDNLOAD_IDLE) - { - if (!(SentCommand.DataSize)) - { - DFU_State = dfuIDLE; - } - else - { - /* Throw away the filler bytes before the start of the firmware */ - DiscardFillerBytes(DFU_FILLER_BYTES_SIZE); - - /* Throw away the packet alignment filler bytes before the start of the firmware */ - DiscardFillerBytes(StartAddr % FIXED_CONTROL_ENDPOINT_SIZE); - - /* Calculate the number of bytes remaining to be written */ - uint16_t BytesRemaining = ((EndAddr - StartAddr) + 1); - - if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00)) // Write flash - { - /* Calculate the number of words to be written from the number of bytes to be written */ - uint16_t WordsRemaining = (BytesRemaining >> 1); - - union - { - uint16_t Words[2]; - uint32_t Long; - } CurrFlashAddress = {.Words = {StartAddr, Flash64KBPage}}; - - uint32_t CurrFlashPageStartAddress = CurrFlashAddress.Long; - uint8_t WordsInFlashPage = 0; - - while (WordsRemaining--) - { - /* Check if endpoint is empty - if so clear it and wait until ready for next packet */ - if (!(Endpoint_BytesInEndpoint())) - { - Endpoint_ClearOUT(); - - while (!(Endpoint_IsOUTReceived())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - } - - /* Write the next word into the current flash page */ - boot_page_fill(CurrFlashAddress.Long, Endpoint_Read_Word_LE()); - - /* Adjust counters */ - WordsInFlashPage += 1; - CurrFlashAddress.Long += 2; - - /* See if an entire page has been written to the flash page buffer */ - if ((WordsInFlashPage == (SPM_PAGESIZE >> 1)) || !(WordsRemaining)) - { - /* Commit the flash page to memory */ - boot_page_write(CurrFlashPageStartAddress); - boot_spm_busy_wait(); - - /* Check if programming incomplete */ - if (WordsRemaining) - { - CurrFlashPageStartAddress = CurrFlashAddress.Long; - WordsInFlashPage = 0; - - /* Erase next page's temp buffer */ - boot_page_erase(CurrFlashAddress.Long); - boot_spm_busy_wait(); - } - } - } - - /* Once programming complete, start address equals the end address */ - StartAddr = EndAddr; - - /* Re-enable the RWW section of flash */ - boot_rww_enable(); - } - else // Write EEPROM - { - while (BytesRemaining--) - { - /* Check if endpoint is empty - if so clear it and wait until ready for next packet */ - if (!(Endpoint_BytesInEndpoint())) - { - Endpoint_ClearOUT(); - - while (!(Endpoint_IsOUTReceived())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - } - - /* Read the byte from the USB interface and write to to the EEPROM */ - eeprom_write_byte((uint8_t*)StartAddr, Endpoint_Read_Byte()); - - /* Adjust counters */ - StartAddr++; - } - } - - /* Throw away the currently unused DFU file suffix */ - DiscardFillerBytes(DFU_FILE_SUFFIX_SIZE); - } - } - - Endpoint_ClearOUT(); - - Endpoint_ClearStatusStage(); - - break; - case DFU_UPLOAD: - Endpoint_ClearSETUP(); - - LEDs_TurnOnLEDs(LEDMASK_TX); - PulseMSRemaining.TxLEDPulse = TX_RX_LED_PULSE_MS; - - while (!(Endpoint_IsINReady())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - - if (DFU_State != dfuUPLOAD_IDLE) - { - if ((DFU_State == dfuERROR) && IS_ONEBYTE_COMMAND(SentCommand.Data, 0x01)) // Blank Check - { - /* Blank checking is performed in the DFU_DNLOAD request - if we get here we've told the host - that the memory isn't blank, and the host is requesting the first non-blank address */ - Endpoint_Write_Word_LE(StartAddr); - } - else - { - /* Idle state upload - send response to last issued command */ - Endpoint_Write_Byte(ResponseByte); - } - } - else - { - /* Determine the number of bytes remaining in the current block */ - uint16_t BytesRemaining = ((EndAddr - StartAddr) + 1); - - if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00)) // Read FLASH - { - /* Calculate the number of words to be written from the number of bytes to be written */ - uint16_t WordsRemaining = (BytesRemaining >> 1); - - union - { - uint16_t Words[2]; - uint32_t Long; - } CurrFlashAddress = {.Words = {StartAddr, Flash64KBPage}}; - - while (WordsRemaining--) - { - /* Check if endpoint is full - if so clear it and wait until ready for next packet */ - if (Endpoint_BytesInEndpoint() == FIXED_CONTROL_ENDPOINT_SIZE) - { - Endpoint_ClearIN(); - - while (!(Endpoint_IsINReady())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - } - - /* Read the flash word and send it via USB to the host */ - #if (FLASHEND > 0xFFFF) - Endpoint_Write_Word_LE(pgm_read_word_far(CurrFlashAddress.Long)); - #else - Endpoint_Write_Word_LE(pgm_read_word(CurrFlashAddress.Long)); - #endif - - /* Adjust counters */ - CurrFlashAddress.Long += 2; - } - - /* Once reading is complete, start address equals the end address */ - StartAddr = EndAddr; - } - else if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x02)) // Read EEPROM - { - while (BytesRemaining--) - { - /* Check if endpoint is full - if so clear it and wait until ready for next packet */ - if (Endpoint_BytesInEndpoint() == FIXED_CONTROL_ENDPOINT_SIZE) - { - Endpoint_ClearIN(); - - while (!(Endpoint_IsINReady())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - } - - /* Read the EEPROM byte and send it via USB to the host */ - Endpoint_Write_Byte(eeprom_read_byte((uint8_t*)StartAddr)); - - /* Adjust counters */ - StartAddr++; - } - } - - /* Return to idle state */ - DFU_State = dfuIDLE; - } - - Endpoint_ClearIN(); - - Endpoint_ClearStatusStage(); - break; - case DFU_GETSTATUS: - Endpoint_ClearSETUP(); - - /* Write 8-bit status value */ - Endpoint_Write_Byte(DFU_Status); - - /* Write 24-bit poll timeout value */ - Endpoint_Write_Byte(0); - Endpoint_Write_Word_LE(0); - - /* Write 8-bit state value */ - Endpoint_Write_Byte(DFU_State); - - /* Write 8-bit state string ID number */ - Endpoint_Write_Byte(0); - - Endpoint_ClearIN(); - - Endpoint_ClearStatusStage(); - break; - case DFU_CLRSTATUS: - Endpoint_ClearSETUP(); - - /* Reset the status value variable to the default OK status */ - DFU_Status = OK; - - Endpoint_ClearStatusStage(); - break; - case DFU_GETSTATE: - Endpoint_ClearSETUP(); - - /* Write the current device state to the endpoint */ - Endpoint_Write_Byte(DFU_State); - - Endpoint_ClearIN(); - - Endpoint_ClearStatusStage(); - break; - case DFU_ABORT: - Endpoint_ClearSETUP(); - - /* Turn off TX/RX status LEDs so that they're not left on when application starts */ - LEDs_TurnOffLEDs(LEDMASK_TX); - LEDs_TurnOffLEDs(LEDMASK_RX); - - /* Reset the current state variable to the default idle state */ - DFU_State = dfuIDLE; - - Endpoint_ClearStatusStage(); - break; - } -} - -/** Routine to discard the specified number of bytes from the control endpoint stream. This is used to - * discard unused bytes in the stream from the host, including the memory program block suffix. - * - * \param[in] NumberOfBytes Number of bytes to discard from the host from the control endpoint - */ -static void DiscardFillerBytes(uint8_t NumberOfBytes) -{ - while (NumberOfBytes--) - { - if (!(Endpoint_BytesInEndpoint())) - { - Endpoint_ClearOUT(); - - /* Wait until next data packet received */ - while (!(Endpoint_IsOUTReceived())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - } - else - { - Endpoint_Discard_Byte(); - } - } -} - -/** Routine to process an issued command from the host, via a DFU_DNLOAD request wrapper. This routine ensures - * that the command is allowed based on the current secure mode flag value, and passes the command off to the - * appropriate handler function. - */ -static void ProcessBootloaderCommand(void) -{ - /* Check if device is in secure mode */ -// if (IsSecure) -// { -// /* Don't process command unless it is a READ or chip erase command */ -// if (!(((SentCommand.Command == COMMAND_WRITE) && -// IS_TWOBYTE_COMMAND(SentCommand.Data, 0x00, 0xFF)) || -// (SentCommand.Command == COMMAND_READ))) -// { -// /* Set the state and status variables to indicate the error */ -// DFU_State = dfuERROR; -// DFU_Status = errWRITE; -// -// /* Stall command */ -// Endpoint_StallTransaction(); -// -// /* Don't process the command */ -// return; -// } -// } - - /* Dispatch the required command processing routine based on the command type */ - switch (SentCommand.Command) - { - case COMMAND_PROG_START: - ProcessMemProgCommand(); - break; - case COMMAND_DISP_DATA: - ProcessMemReadCommand(); - break; - case COMMAND_WRITE: - ProcessWriteCommand(); - break; - case COMMAND_READ: - ProcessReadCommand(); - break; - case COMMAND_CHANGE_BASE_ADDR: - if (IS_TWOBYTE_COMMAND(SentCommand.Data, 0x03, 0x00)) // Set 64KB flash page command - Flash64KBPage = SentCommand.Data[2]; - break; - } -} - -/** Routine to concatenate the given pair of 16-bit memory start and end addresses from the host, and store them - * in the StartAddr and EndAddr global variables. - */ -static void LoadStartEndAddresses(void) -{ - union - { - uint8_t Bytes[2]; - uint16_t Word; - } Address[2] = {{.Bytes = {SentCommand.Data[2], SentCommand.Data[1]}}, - {.Bytes = {SentCommand.Data[4], SentCommand.Data[3]}}}; - - /* Load in the start and ending read addresses from the sent data packet */ - StartAddr = Address[0].Word; - EndAddr = Address[1].Word; -} - -/** Handler for a Memory Program command issued by the host. This routine handles the preparations needed - * to write subsequent data from the host into the specified memory. - */ -static void ProcessMemProgCommand(void) -{ - if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00) || // Write FLASH command - IS_ONEBYTE_COMMAND(SentCommand.Data, 0x01)) // Write EEPROM command - { - /* Load in the start and ending read addresses */ - LoadStartEndAddresses(); - - /* If FLASH is being written to, we need to pre-erase the first page to write to */ - if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00)) - { - union - { - uint16_t Words[2]; - uint32_t Long; - } CurrFlashAddress = {.Words = {StartAddr, Flash64KBPage}}; - - /* Erase the current page's temp buffer */ - boot_page_erase(CurrFlashAddress.Long); - boot_spm_busy_wait(); - } - - /* Set the state so that the next DNLOAD requests reads in the firmware */ - DFU_State = dfuDNLOAD_IDLE; - } -} - -/** Handler for a Memory Read command issued by the host. This routine handles the preparations needed - * to read subsequent data from the specified memory out to the host, as well as implementing the memory - * blank check command. - */ -static void ProcessMemReadCommand(void) -{ - if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00) || // Read FLASH command - IS_ONEBYTE_COMMAND(SentCommand.Data, 0x02)) // Read EEPROM command - { - /* Load in the start and ending read addresses */ - LoadStartEndAddresses(); - - /* Set the state so that the next UPLOAD requests read out the firmware */ - DFU_State = dfuUPLOAD_IDLE; - } - else if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x01)) // Blank check FLASH command - { - uint32_t CurrFlashAddress = 0; - - while (CurrFlashAddress < BOOT_START_ADDR) - { - /* Check if the current byte is not blank */ - #if (FLASHEND > 0xFFFF) - if (pgm_read_byte_far(CurrFlashAddress) != 0xFF) - #else - if (pgm_read_byte(CurrFlashAddress) != 0xFF) - #endif - { - /* Save the location of the first non-blank byte for response back to the host */ - Flash64KBPage = (CurrFlashAddress >> 16); - StartAddr = CurrFlashAddress; - - /* Set state and status variables to the appropriate error values */ - DFU_State = dfuERROR; - DFU_Status = errCHECK_ERASED; - - break; - } - - CurrFlashAddress++; - } - } -} - -/** Handler for a Data Write command issued by the host. This routine handles non-programming commands such as - * bootloader exit (both via software jumps and hardware watchdog resets) and flash memory erasure. - */ -static void ProcessWriteCommand(void) -{ - if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x03)) // Start application - { - /* Indicate that the bootloader is terminating */ - WaitForExit = true; - - /* Check if data supplied for the Start Program command - no data executes the program */ - if (SentCommand.DataSize) - { - if (SentCommand.Data[1] == 0x01) // Start via jump - { - union - { - uint8_t Bytes[2]; - AppPtr_t FuncPtr; - } Address = {.Bytes = {SentCommand.Data[4], SentCommand.Data[3]}}; - - /* Load in the jump address into the application start address pointer */ - AppStartPtr = Address.FuncPtr; - } - } - else - { - if (SentCommand.Data[1] == 0x00) // Start via watchdog - { - /* Start the watchdog to reset the AVR once the communications are finalized */ - wdt_enable(WDTO_250MS); - } - else // Start via jump - { - /* Set the flag to terminate the bootloader at next opportunity */ - RunBootloader = false; - } - } - } - else if (IS_TWOBYTE_COMMAND(SentCommand.Data, 0x00, 0xFF)) // Erase flash - { - uint32_t CurrFlashAddress = 0; - - /* Clear the application section of flash */ - while (CurrFlashAddress < BOOT_START_ADDR) - { - boot_page_erase(CurrFlashAddress); - boot_spm_busy_wait(); - boot_page_write(CurrFlashAddress); - boot_spm_busy_wait(); - - CurrFlashAddress += SPM_PAGESIZE; - } - - /* Re-enable the RWW section of flash as writing to the flash locks it out */ - boot_rww_enable(); - - /* Memory has been erased, reset the security bit so that programming/reading is allowed */ -// IsSecure = false; - } -} - -/** Handler for a Data Read command issued by the host. This routine handles bootloader information retrieval - * commands such as device signature and bootloader version retrieval. - */ -static void ProcessReadCommand(void) -{ - const uint8_t BootloaderInfo[3] = {BOOTLOADER_VERSION, BOOTLOADER_ID_BYTE1, BOOTLOADER_ID_BYTE2}; - const uint8_t SignatureInfo[3] = {AVR_SIGNATURE_1, AVR_SIGNATURE_2, AVR_SIGNATURE_3}; - - uint8_t DataIndexToRead = SentCommand.Data[1]; - - if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x00)) // Read bootloader info - ResponseByte = BootloaderInfo[DataIndexToRead]; - else if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x01)) // Read signature byte - ResponseByte = SignatureInfo[DataIndexToRead - 0x30]; -} diff --git a/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.h b/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.h deleted file mode 100644 index 4fb236e..0000000 --- a/firmwares/atmegaxxu2/arduino-usbdfu/Arduino-usbdfu.h +++ /dev/null @@ -1,220 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for Arduino-usbdfu.c. - */ - -#ifndef _ARDUINO_USB_DFU_BOOTLOADER_H_ -#define _ARDUINO_USB_DFU_BOOTLOADER_H_ - - /* Includes: */ - #include - #include - #include - #include - #include - #include - #include - #include - - #include "Descriptors.h" - - #include - #include - - /* Macros: */ - /** LED mask for the library LED driver, to indicate TX activity. */ - #define LEDMASK_TX LEDS_LED1 - - /** LED mask for the library LED driver, to indicate RX activity. */ - #define LEDMASK_RX LEDS_LED2 - - /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */ - #define LEDMASK_ERROR (LEDS_LED1 | LEDS_LED2) - - /** LED mask for the library LED driver, to indicate that the USB interface is busy. */ - #define LEDMASK_BUSY (LEDS_LED1 | LEDS_LED2) - - /** Configuration define. Define this token to true to case the bootloader to reject all memory commands - * until a memory erase has been performed. When used in conjunction with the lockbits of the AVR, this - * can protect the AVR's firmware from being dumped from a secured AVR. When false, memory operations are - * allowed at any time. - */ -// #define SECURE_MODE false - - /** Major bootloader version number. */ - #define BOOTLOADER_VERSION_MINOR 2 - - /** Minor bootloader version number. */ - #define BOOTLOADER_VERSION_REV 0 - - /** Complete bootloader version number expressed as a packed byte, constructed from the - * two individual bootloader version macros. - */ - #define BOOTLOADER_VERSION ((BOOTLOADER_VERSION_MINOR << 4) | BOOTLOADER_VERSION_REV) - - /** First byte of the bootloader identification bytes, used to identify a device's bootloader. */ - #define BOOTLOADER_ID_BYTE1 0xDC - - /** Second byte of the bootloader identification bytes, used to identify a device's bootloader. */ - #define BOOTLOADER_ID_BYTE2 0xFB - - /** Convenience macro, used to determine if the issued command is the given one-byte long command. - * - * \param[in] dataarr Command byte array to check against - * \param[in] cb1 First command byte to check - */ - #define IS_ONEBYTE_COMMAND(dataarr, cb1) (dataarr[0] == (cb1)) - - /** Convenience macro, used to determine if the issued command is the given two-byte long command. - * - * \param[in] dataarr Command byte array to check against - * \param[in] cb1 First command byte to check - * \param[in] cb2 Second command byte to check - */ - #define IS_TWOBYTE_COMMAND(dataarr, cb1, cb2) ((dataarr[0] == (cb1)) && (dataarr[1] == (cb2))) - - /** Length of the DFU file suffix block, appended to the end of each complete memory write command. - * The DFU file suffix is currently unused (but is designed to give extra file information, such as - * a CRC of the complete firmware for error checking) and so is discarded. - */ - #define DFU_FILE_SUFFIX_SIZE 16 - - /** Length of the DFU file filler block, appended to the start of each complete memory write command. - * Filler bytes are added to the start of each complete memory write command, and must be discarded. - */ - #define DFU_FILLER_BYTES_SIZE 26 - - /** DFU class command request to detach from the host. */ - #define DFU_DETATCH 0x00 - - /** DFU class command request to send data from the host to the bootloader. */ - #define DFU_DNLOAD 0x01 - - /** DFU class command request to send data from the bootloader to the host. */ - #define DFU_UPLOAD 0x02 - - /** DFU class command request to get the current DFU status and state from the bootloader. */ - #define DFU_GETSTATUS 0x03 - - /** DFU class command request to reset the current DFU status and state variables to their defaults. */ - #define DFU_CLRSTATUS 0x04 - - /** DFU class command request to get the current DFU state of the bootloader. */ - #define DFU_GETSTATE 0x05 - - /** DFU class command request to abort the current multi-request transfer and return to the dfuIDLE state. */ - #define DFU_ABORT 0x06 - - /** DFU command to begin programming the device's memory. */ - #define COMMAND_PROG_START 0x01 - - /** DFU command to begin reading the device's memory. */ - #define COMMAND_DISP_DATA 0x03 - - /** DFU command to issue a write command. */ - #define COMMAND_WRITE 0x04 - - /** DFU command to issue a read command. */ - #define COMMAND_READ 0x05 - - /** DFU command to issue a memory base address change command, to set the current 64KB flash page - * that subsequent flash operations should use. */ - #define COMMAND_CHANGE_BASE_ADDR 0x06 - - /* Type Defines: */ - /** Type define for a non-returning function pointer to the loaded application. */ - typedef void (*AppPtr_t)(void) ATTR_NO_RETURN; - - /** Type define for a structure containing a complete DFU command issued by the host. */ - typedef struct - { - uint8_t Command; /**< Single byte command to perform, one of the COMMAND_* macro values */ - uint8_t Data[5]; /**< Command parameters */ - uint16_t DataSize; /**< Size of the command parameters */ - } DFU_Command_t; - - /* Enums: */ - /** DFU bootloader states. Refer to the DFU class specification for information on each state. */ - enum DFU_State_t - { - appIDLE = 0, - appDETACH = 1, - dfuIDLE = 2, - dfuDNLOAD_SYNC = 3, - dfuDNBUSY = 4, - dfuDNLOAD_IDLE = 5, - dfuMANIFEST_SYNC = 6, - dfuMANIFEST = 7, - dfuMANIFEST_WAIT_RESET = 8, - dfuUPLOAD_IDLE = 9, - dfuERROR = 10 - }; - - /** DFU command status error codes. Refer to the DFU class specification for information on each error code. */ - enum DFU_Status_t - { - OK = 0, - errTARGET = 1, - errFILE = 2, - errWRITE = 3, - errERASE = 4, - errCHECK_ERASED = 5, - errPROG = 6, - errVERIFY = 7, - errADDRESS = 8, - errNOTDONE = 9, - errFIRMWARE = 10, - errVENDOR = 11, - errUSBR = 12, - errPOR = 13, - errUNKNOWN = 14, - errSTALLEDPKT = 15 - }; - - /* Function Prototypes: */ - void SetupHardware(void); - void ResetHardware(void); - - void EVENT_USB_Device_UnhandledControlRequest(void); - - #if defined(INCLUDE_FROM_BOOTLOADER_C) - static void DiscardFillerBytes(uint8_t NumberOfBytes); - static void ProcessBootloaderCommand(void); - static void LoadStartEndAddresses(void); - static void ProcessMemProgCommand(void); - static void ProcessMemReadCommand(void); - static void ProcessWriteCommand(void); - static void ProcessReadCommand(void); - #endif - -#endif /* _ARDUINO_USB_DFU_BOOTLOADER_H_ */ diff --git a/firmwares/atmegaxxu2/arduino-usbdfu/Board/LEDs.h b/firmwares/atmegaxxu2/arduino-usbdfu/Board/LEDs.h deleted file mode 100644 index 152e8f5..0000000 --- a/firmwares/atmegaxxu2/arduino-usbdfu/Board/LEDs.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/* - Board LEDs driver for the Benito board, from www.dorkbotpdx.org. -*/ - -#ifndef __LEDS_ARDUINOUNO_H__ -#define __LEDS_ARDUINOUNO_H__ - - /* Includes: */ - #include - -/* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(INCLUDE_FROM_LEDS_H) - #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** LED mask for the first LED on the board. */ - #define LEDS_LED1 (1 << 5) - - /** LED mask for the second LED on the board. */ - #define LEDS_LED2 (1 << 4) - - /** LED mask for all the LEDs on the board. */ - #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2) - - /** LED mask for the none of the board LEDs */ - #define LEDS_NO_LEDS 0 - - /* Inline Functions: */ - #if !defined(__DOXYGEN__) - static inline void LEDs_Init(void) - { - DDRD |= LEDS_ALL_LEDS; - PORTD |= LEDS_ALL_LEDS; - } - - static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) - { - PORTD &= ~LEDMask; - } - - static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) - { - PORTD |= LEDMask; - } - - static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) - { - PORTD = ((PORTD | LEDS_ALL_LEDS) & ~LEDMask); - } - - static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) - { - PORTD = ((PORTD | ActiveMask) & ~LEDMask); - } - - static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) - { - PORTD ^= LEDMask; - } - - static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; - static inline uint8_t LEDs_GetLEDs(void) - { - return (PORTD & LEDS_ALL_LEDS); - } - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif diff --git a/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.c b/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.c deleted file mode 100644 index 4deaa06..0000000 --- a/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * USB Device Descriptors, for library use when in USB device mode. Descriptors are special - * computer-readable structures which the host requests upon device enumeration, to determine - * the device's capabilities and functions. - */ - -#include "Descriptors.h" - -/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall - * device characteristics, including the supported USB version, control endpoint size and the - * number of device configurations. The descriptor is read out by the USB host when the enumeration - * process begins. - */ -USB_Descriptor_Device_t DeviceDescriptor = -{ - .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, - - .USBSpecification = VERSION_BCD(01.10), - .Class = 0x00, - .SubClass = 0x00, - .Protocol = 0x00, - - .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, - - .VendorID = 0x03EB, // Atmel - .ProductID = PRODUCT_ID_CODE, // MCU-dependent - .ReleaseNumber = 0x0000, - - .ManufacturerStrIndex = NO_DESCRIPTOR, - .ProductStrIndex = 0x01, - .SerialNumStrIndex = NO_DESCRIPTOR, - - .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS -}; - -/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage - * of the device in one of its supported configurations, including information about any device interfaces - * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting - * a configuration so that the host may correctly communicate with the USB device. - */ -USB_Descriptor_Configuration_t ConfigurationDescriptor = -{ - .Config = - { - .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, - - .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), - .TotalInterfaces = 1, - - .ConfigurationNumber = 1, - .ConfigurationStrIndex = NO_DESCRIPTOR, - - .ConfigAttributes = USB_CONFIG_ATTR_BUSPOWERED, - - .MaxPowerConsumption = USB_CONFIG_POWER_MA(100) - }, - - .DFU_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = 0, - .AlternateSetting = 0, - - .TotalEndpoints = 0, - - .Class = 0xFE, - .SubClass = 0x01, - .Protocol = 0x02, - - .InterfaceStrIndex = NO_DESCRIPTOR - }, - - .DFU_Functional = - { - .Header = {.Size = sizeof(USB_DFU_Functional_Descriptor_t), .Type = DTYPE_DFUFunctional}, - - .Attributes = (ATTR_CAN_UPLOAD | ATTR_CAN_DOWNLOAD), - - .DetachTimeout = 0x0000, - .TransferSize = 0x0c00, - - .DFUSpecification = VERSION_BCD(01.01) - } -}; - -/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests - * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate - * via the language ID table available at USB.org what languages the device supports for its string descriptors. - */ -USB_Descriptor_String_t LanguageString = -{ - .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String}, - - .UnicodeString = {LANGUAGE_ID_ENG} -}; - -/** Product descriptor string. This is a Unicode string containing the product's details in human readable form, - * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device - * Descriptor. - */ -USB_Descriptor_String_t ProductString = -{ - #if (ARDUINO_MODEL_PID == ARDUINO_UNO_PID) - .Header = {.Size = USB_STRING_LEN(15), .Type = DTYPE_String}, - - .UnicodeString = L"Arduino Uno DFU" - #elif (ARDUINO_MODEL_PID == ARDUINO_MEGA2560_PID) - .Header = {.Size = USB_STRING_LEN(21), .Type = DTYPE_String}, - - .UnicodeString = L"Arduino Mega 2560 DFU" - #endif -}; - -/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors" - * documentation) by the application code so that the address and size of a requested descriptor can be given - * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function - * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the - * USB host. - */ -uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint8_t wIndex, - void** const DescriptorAddress) -{ - const uint8_t DescriptorType = (wValue >> 8); - const uint8_t DescriptorNumber = (wValue & 0xFF); - - void* Address = NULL; - uint16_t Size = NO_DESCRIPTOR; - - switch (DescriptorType) - { - case DTYPE_Device: - Address = &DeviceDescriptor; - Size = sizeof(USB_Descriptor_Device_t); - break; - case DTYPE_Configuration: - Address = &ConfigurationDescriptor; - Size = sizeof(USB_Descriptor_Configuration_t); - break; - case DTYPE_String: - if (!(DescriptorNumber)) - { - Address = &LanguageString; - Size = LanguageString.Header.Size; - } - else - { - Address = &ProductString; - Size = ProductString.Header.Size; - } - - break; - } - - *DescriptorAddress = Address; - return Size; -} diff --git a/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.h b/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.h deleted file mode 100644 index 6c93f20..0000000 --- a/firmwares/atmegaxxu2/arduino-usbdfu/Descriptors.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for Descriptors.c. - */ - -#ifndef _DESCRIPTORS_H_ -#define _DESCRIPTORS_H_ - - /* Includes: */ - #include - - /* Product-specific definitions: */ - #define ARDUINO_UNO_PID 0x0001 - #define ARDUINO_MEGA2560_PID 0x0010 - - /* Macros: */ - /** Descriptor type value for a DFU class functional descriptor. */ - #define DTYPE_DFUFunctional 0x21 - - /** DFU attribute mask, indicating that the DFU device will detach and re-attach when a DFU_DETACH - * command is issued, rather than the host issuing a USB Reset. - */ - #define ATTR_WILL_DETATCH (1 << 3) - - /** DFU attribute mask, indicating that the DFU device can communicate during the manifestation phase - * (memory programming phase). - */ - #define ATTR_MANEFESTATION_TOLLERANT (1 << 2) - - /** DFU attribute mask, indicating that the DFU device can accept DFU_UPLOAD requests to send data from - * the device to the host. - */ - #define ATTR_CAN_UPLOAD (1 << 1) - - /** DFU attribute mask, indicating that the DFU device can accept DFU_DNLOAD requests to send data from - * the host to the device. - */ - #define ATTR_CAN_DOWNLOAD (1 << 0) - - #if defined(__AVR_AT90USB1287__) - #define PRODUCT_ID_CODE 0x2FFB - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x97 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB1286__) - #define PRODUCT_ID_CODE 0x2FFB - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x97 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB647__) - #define PRODUCT_ID_CODE 0x2FF9 - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x96 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB646__) - #define PRODUCT_ID_CODE 0x2FF9 - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x96 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_ATmega32U6__) - #define PRODUCT_ID_CODE 0x2FFB - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x95 - #define AVR_SIGNATURE_3 0x88 - #elif defined(__AVR_ATmega32U4__) - #define PRODUCT_ID_CODE 0x2FF4 - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x95 - #define AVR_SIGNATURE_3 0x87 - #elif defined(__AVR_ATmega32U2__) - #define PRODUCT_ID_CODE 0x2FF0 - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x95 - #define AVR_SIGNATURE_3 0x8A - #elif defined(__AVR_ATmega16U4__) - #define PRODUCT_ID_CODE 0x2FF3 - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x94 - #define AVR_SIGNATURE_3 0x88 - #elif defined(__AVR_ATmega16U2__) - #define PRODUCT_ID_CODE 0x2FEF - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x94 - #define AVR_SIGNATURE_3 0x89 - #elif defined(__AVR_AT90USB162__) - #define PRODUCT_ID_CODE 0x2FFA - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x94 - #define AVR_SIGNATURE_3 0x82 - #elif defined(__AVR_AT90USB82__) - #define PRODUCT_ID_CODE 0x2FEE - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x93 - #define AVR_SIGNATURE_3 0x89 - #elif defined(__AVR_ATmega8U2__) - #define PRODUCT_ID_CODE 0x2FF7 - #define AVR_SIGNATURE_1 0x1E - #define AVR_SIGNATURE_2 0x93 - #define AVR_SIGNATURE_3 0x82 - #else - #error The selected AVR part is not currently supported by this bootloader. - #endif - - #if !defined(PRODUCT_ID_CODE) - #error Current AVR model is not supported by this bootloader. - #endif - - /* Type Defines: */ - /** Type define for a DFU class function descriptor. This descriptor gives DFU class information - * to the host when read, indicating the DFU device's capabilities. - */ - typedef struct - { - USB_Descriptor_Header_t Header; /**< Standard descriptor header structure */ - - uint8_t Attributes; /**< DFU device attributes, a mask comprising of the - * ATTR_* macros listed in this source file - */ - uint16_t DetachTimeout; /**< Timeout in milliseconds between a USB_DETACH - * command being issued and the device detaching - * from the USB bus - */ - uint16_t TransferSize; /**< Maximum number of bytes the DFU device can accept - * from the host in a transaction - */ - uint16_t DFUSpecification; /**< BCD packed DFU specification number this DFU - * device complies with - */ - } USB_DFU_Functional_Descriptor_t; - - /** Type define for the device configuration descriptor structure. This must be defined in the - * application code, as the configuration descriptor contains several sub-descriptors which - * vary between devices, and which describe the device's usage to the host. - */ - typedef struct - { - USB_Descriptor_Configuration_Header_t Config; - USB_Descriptor_Interface_t DFU_Interface; - USB_DFU_Functional_Descriptor_t DFU_Functional; - } USB_Descriptor_Configuration_t; - - /* Function Prototypes: */ - uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint8_t wIndex, - void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); - -#endif diff --git a/firmwares/atmegaxxu2/arduino-usbdfu/makefile b/firmwares/atmegaxxu2/arduino-usbdfu/makefile deleted file mode 100644 index 1fb4ed3..0000000 --- a/firmwares/atmegaxxu2/arduino-usbdfu/makefile +++ /dev/null @@ -1,710 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- -#---------------------------------------------------------------------------- -# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al. -# >> Modified for use with the LUFA project. << -# -# Released to the Public Domain -# -# Additional material for this makefile was written by: -# Peter Fleury -# Tim Henigan -# Colin O'Flynn -# Reiner Patommel -# Markus Pfaff -# Sander Pool -# Frederik Rouleau -# Carlos Lamas -# Dean Camera -# Opendous Inc. -# Denver Gingerich -# -#---------------------------------------------------------------------------- -# On command line: -# -# make all = Make software. -# -# make clean = Clean out built project files. -# -# make coff = Convert ELF to AVR COFF. -# -# make extcoff = Convert ELF to AVR Extended COFF. -# -# make program = Download the hex file to the device, using avrdude. -# Please customize the avrdude settings below first! -# -# make doxygen = Generate DoxyGen documentation for the project (must have -# DoxyGen installed) -# -# make debug = Start either simulavr or avarice as specified for debugging, -# with avr-gdb or avr-insight as the front end for debugging. -# -# make filename.s = Just compile filename.c into the assembler code only. -# -# make filename.i = Create a preprocessed source file for use in submitting -# bug reports to the GCC project. -# -# To rebuild project do "make clean" then "make all". -#---------------------------------------------------------------------------- - - -# MCU name -MCU = atmega8u2 -MCU_AVRDUDE = at90usb82 - -# Specify the Arduino model using the assigned PID. This is used by Descriptors.c -# to set the product descriptor string (for DFU we must use the PID for each -# chip that dfu-bootloader or Flip expect) -# Uno PID: -ARDUINO_MODEL_PID = 0x0001 -# Mega 2560 PID: -#ARDUINO_MODEL_PID = 0x0010 - -# Target board (see library "Board Types" documentation, NONE for projects not requiring -# LUFA board drivers). If USER is selected, put custom board drivers in a directory called -# "Board" inside the application directory. -BOARD = USER - - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_CLOCK below, as it is sourced by -# F_CLOCK after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# Input clock frequency. -# This will define a symbol, F_CLOCK, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_CLOCK = $(F_CPU) - - -# Starting byte address of the bootloader, as a byte address - computed via the formula -# BOOT_START = ((TOTAL_FLASH_BYTES - BOOTLOADER_SECTION_SIZE_BYTES) * 1024) -# -# Note that the bootloader size and start address given in AVRStudio is in words and not -# bytes, and so will need to be doubled to obtain the byte address needed by AVR-GCC. -BOOT_START = 0x1000 - - -# Output format. (can be srec, ihex, binary) -FORMAT = ihex - - -# Target file name (without extension). -TARGET = Arduino-usbdfu - - -# Object files directory -# To put object files in current directory, use a dot (.), do NOT make -# this an empty or blank macro! -OBJDIR = . - - -# Path to the LUFA library -LUFA_PATH = ../.. - - -# LUFA library compile-time options and predefined tokens -LUFA_OPTS = -D USB_DEVICE_ONLY -LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0 -LUFA_OPTS += -D CONTROL_ONLY_DEVICE -LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=32 -LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1 -LUFA_OPTS += -D USE_RAM_DESCRIPTORS -LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" -LUFA_OPTS += -D NO_INTERNAL_SERIAL -LUFA_OPTS += -D NO_DEVICE_SELF_POWER -LUFA_OPTS += -D NO_DEVICE_REMOTE_WAKEUP -LUFA_OPTS += -D NO_STREAM_CALLBACKS - - -# Create the LUFA source path variables by including the LUFA root makefile -include $(LUFA_PATH)/LUFA/makefile - - -# List C source files here. (C dependencies are automatically generated.) -SRC = $(TARGET).c \ - Descriptors.c \ - $(LUFA_SRC_USB) \ - - -# List C++ source files here. (C dependencies are automatically generated.) -CPPSRC = - - -# List Assembler source files here. -# Make them always end in a capital .S. Files ending in a lowercase .s -# will not be considered source files but generated files (assembler -# output from the compiler), and will be deleted upon "make clean"! -# Even though the DOS/Win* filesystem matches both .s and .S the same, -# it will preserve the spelling of the filenames, and gcc itself does -# care about how the name is spelled on its command-line. -ASRC = - - -# Optimization level, can be [0, 1, 2, 3, s]. -# 0 = turn off optimization. s = optimize for size. -# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) -OPT = s - - -# Debugging format. -# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. -# AVR Studio 4.10 requires dwarf-2. -# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run. -DEBUG = dwarf-2 - - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRAINCDIRS = $(LUFA_PATH)/ - - -# Compiler flag to set the C Standard level. -# c89 = "ANSI" C -# gnu89 = c89 plus GCC extensions -# c99 = ISO C99 standard (not yet fully implemented) -# gnu99 = c99 plus GCC extensions -CSTANDARD = -std=c99 - - -# Place -D or -U options here for C sources -CDEFS = -DF_CPU=$(F_CPU)UL -CDEFS += -DARDUINO_MODEL_PID=$(ARDUINO_MODEL_PID) -CDEFS += -DF_CLOCK=$(F_CLOCK)UL -CDEFS += -DBOARD=BOARD_$(BOARD) -CDEFS += -DBOOT_START_ADDR=$(BOOT_START)UL -CDEFS += -DTX_RX_LED_PULSE_MS=3 -CDEFS += $(LUFA_OPTS) - - -# Place -D or -U options here for ASM sources -ADEFS = -DF_CPU=$(F_CPU) -ADEFS += -DF_CLOCK=$(F_CLOCK)UL -ADEFS += -DBOARD=BOARD_$(BOARD) -CDEFS += -DBOOT_START_ADDR=$(BOOT_START)UL -ADEFS += $(LUFA_OPTS) - -# Place -D or -U options here for C++ sources -CPPDEFS = -DF_CPU=$(F_CPU)UL -CPPDEFS += -DF_CLOCK=$(F_CLOCK)UL -CPPDEFS += -DBOARD=BOARD_$(BOARD) -CDEFS += -DBOOT_START_ADDR=$(BOOT_START)UL -CPPDEFS += $(LUFA_OPTS) -#CPPDEFS += -D__STDC_LIMIT_MACROS -#CPPDEFS += -D__STDC_CONSTANT_MACROS - - - -#---------------- Compiler Options C ---------------- -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -CFLAGS = -g$(DEBUG) -CFLAGS += $(CDEFS) -CFLAGS += -O$(OPT) -CFLAGS += -funsigned-char -CFLAGS += -funsigned-bitfields -CFLAGS += -ffunction-sections -CFLAGS += -fno-inline-small-functions -CFLAGS += -fpack-struct -CFLAGS += -fshort-enums -CFLAGS += -fno-strict-aliasing -CFLAGS += -Wall -CFLAGS += -Wstrict-prototypes -#CFLAGS += -mshort-calls -#CFLAGS += -fno-unit-at-a-time -#CFLAGS += -Wundef -#CFLAGS += -Wunreachable-code -#CFLAGS += -Wsign-compare -CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -CFLAGS += $(CSTANDARD) - - -#---------------- Compiler Options C++ ---------------- -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -CPPFLAGS = -g$(DEBUG) -CPPFLAGS += $(CPPDEFS) -CPPFLAGS += -O$(OPT) -CPPFLAGS += -funsigned-char -CPPFLAGS += -funsigned-bitfields -CPPFLAGS += -fpack-struct -CPPFLAGS += -fshort-enums -CPPFLAGS += -fno-exceptions -CPPFLAGS += -Wall -CPPFLAGS += -Wundef -#CPPFLAGS += -mshort-calls -#CPPFLAGS += -fno-unit-at-a-time -#CPPFLAGS += -Wstrict-prototypes -#CPPFLAGS += -Wunreachable-code -#CPPFLAGS += -Wsign-compare -CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst) -CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -#CPPFLAGS += $(CSTANDARD) - - -#---------------- Assembler Options ---------------- -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns: create listing -# -gstabs: have the assembler create line number information; note that -# for use in COFF files, additional information about filenames -# and function names needs to be present in the assembler source -# files -- see avr-libc docs [FIXME: not yet described there] -# -listing-cont-lines: Sets the maximum number of continuation lines of hex -# dump that will be displayed for a given single line of source input. -ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100 - - -#---------------- Library Options ---------------- -# Minimalistic printf version -PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min - -# Floating point printf version (requires MATH_LIB = -lm below) -PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt - -# If this is left blank, then it will use the Standard printf version. -PRINTF_LIB = -#PRINTF_LIB = $(PRINTF_LIB_MIN) -#PRINTF_LIB = $(PRINTF_LIB_FLOAT) - - -# Minimalistic scanf version -SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min - -# Floating point + %[ scanf version (requires MATH_LIB = -lm below) -SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt - -# If this is left blank, then it will use the Standard scanf version. -SCANF_LIB = -#SCANF_LIB = $(SCANF_LIB_MIN) -#SCANF_LIB = $(SCANF_LIB_FLOAT) - - -MATH_LIB = -lm - - -# List any extra directories to look for libraries here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRALIBDIRS = - - - -#---------------- External Memory Options ---------------- - -# 64 KB of external RAM, starting after internal RAM (ATmega128!), -# used for variables (.data/.bss) and heap (malloc()). -#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff - -# 64 KB of external RAM, starting after internal RAM (ATmega128!), -# only used for heap (malloc()). -#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff - -EXTMEMOPTS = - - - -#---------------- Linker Options ---------------- -# -Wl,...: tell GCC to pass this to linker. -# -Map: create map file -# --cref: add cross reference to map file -LDFLAGS = -Wl,-Map=$(TARGET).map,--cref -LDFLAGS += -Wl,--section-start=.text=$(BOOT_START) -LDFLAGS += -Wl,--relax -LDFLAGS += -Wl,--gc-sections -LDFLAGS += $(EXTMEMOPTS) -LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS)) -LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) -#LDFLAGS += -T linker_script.x - - - -#---------------- Programming Options (avrdude) ---------------- - -# Fuse settings for Arduino Uno DFU bootloader project -AVRDUDE_FUSES = -U efuse:w:0xF4:m -U hfuse:w:0xD9:m -U lfuse:w:0xFF:m - -# Lock settings for Arduino Uno DFU bootloader project -AVRDUDE_LOCK = -U lock:w:0x0F:m - -# Programming hardware -# Type: avrdude -c ? -# to get a full listing. -# -AVRDUDE_PROGRAMMER = avrispmkii - -# com1 = serial port. Use lpt1 to connect to parallel port. -AVRDUDE_PORT = usb - -AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex -#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep - -# Uncomment the following if you want avrdude's erase cycle counter. -# Note that this counter needs to be initialized first using -Yn, -# see avrdude manual. -#AVRDUDE_ERASE_COUNTER = -y - -# Uncomment the following if you do /not/ wish a verification to be -# performed after programming the device. -#AVRDUDE_NO_VERIFY = -V - -# Increase verbosity level. Please use this when submitting bug -# reports about avrdude. See -# to submit bug reports. -#AVRDUDE_VERBOSE = -v -v - -AVRDUDE_FLAGS = -p $(MCU_AVRDUDE) -F -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY) -AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE) -AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER) - - - -#---------------- Debugging Options ---------------- - -# For simulavr only - target MCU frequency. -DEBUG_MFREQ = $(F_CPU) - -# Set the DEBUG_UI to either gdb or insight. -# DEBUG_UI = gdb -DEBUG_UI = insight - -# Set the debugging back-end to either avarice, simulavr. -DEBUG_BACKEND = avarice -#DEBUG_BACKEND = simulavr - -# GDB Init Filename. -GDBINIT_FILE = __avr_gdbinit - -# When using avarice settings for the JTAG -JTAG_DEV = /dev/com1 - -# Debugging port used to communicate between GDB / avarice / simulavr. -DEBUG_PORT = 4242 - -# Debugging host used to communicate between GDB / avarice / simulavr, normally -# just set to localhost unless doing some sort of crazy debugging when -# avarice is running on a different computer. -DEBUG_HOST = localhost - - - -#============================================================================ - - -# Define programs and commands. -SHELL = sh -CC = avr-gcc -OBJCOPY = avr-objcopy -OBJDUMP = avr-objdump -SIZE = avr-size -AR = avr-ar rcs -NM = avr-nm -AVRDUDE = avrdude -REMOVE = rm -f -REMOVEDIR = rm -rf -COPY = cp -WINSHELL = cmd - - -# Define Messages -# English -MSG_ERRORS_NONE = Errors: none -MSG_BEGIN = -------- begin -------- -MSG_END = -------- end -------- -MSG_SIZE_BEFORE = Size before: -MSG_SIZE_AFTER = Size after: -MSG_COFF = Converting to AVR COFF: -MSG_EXTENDED_COFF = Converting to AVR Extended COFF: -MSG_FLASH = Creating load file for Flash: -MSG_EEPROM = Creating load file for EEPROM: -MSG_EXTENDED_LISTING = Creating Extended Listing: -MSG_SYMBOL_TABLE = Creating Symbol Table: -MSG_LINKING = Linking: -MSG_COMPILING = Compiling C: -MSG_COMPILING_CPP = Compiling C++: -MSG_ASSEMBLING = Assembling: -MSG_CLEANING = Cleaning project: -MSG_CREATING_LIBRARY = Creating library: - - - - -# Define all object files. -OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) - -# Define all listing files. -LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) - - -# Compiler flags to generate dependency files. -GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d - - -# Combine all necessary flags and optional flags. -# Add target processor to flags. -ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS) -ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS) -ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) - - - - - -# Default target. -all: begin gccversion sizebefore build sizeafter end - -# Change the build target to build a HEX file or a library. -build: elf hex eep lss sym -#build: lib - - -elf: $(TARGET).elf -hex: $(TARGET).hex -eep: $(TARGET).eep -lss: $(TARGET).lss -sym: $(TARGET).sym -LIBNAME=lib$(TARGET).a -lib: $(LIBNAME) - - - -# Eye candy. -# AVR Studio 3.x does not check make's exit code but relies on -# the following magic strings to be generated by the compile job. -begin: - @echo - @echo $(MSG_BEGIN) - -end: - @echo $(MSG_END) - @echo - - -# Display size of file. -HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex -ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf -MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) ) -FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr ) - - -sizebefore: - @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \ - 2>/dev/null; echo; fi - -sizeafter: - @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \ - 2>/dev/null; echo; fi - - - -# Display compiler version information. -gccversion : - @$(CC) --version - - -# Program the device. -program: $(TARGET).hex $(TARGET).eep - $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) $(AVRDUDE_FUSES) $(AVRDUDE_LOCK) - - -# Generate avr-gdb config/init file which does the following: -# define the reset signal, load the target file, connect to target, and set -# a breakpoint at main(). -gdb-config: - @$(REMOVE) $(GDBINIT_FILE) - @echo define reset >> $(GDBINIT_FILE) - @echo SIGNAL SIGHUP >> $(GDBINIT_FILE) - @echo end >> $(GDBINIT_FILE) - @echo file $(TARGET).elf >> $(GDBINIT_FILE) - @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE) -ifeq ($(DEBUG_BACKEND),simulavr) - @echo load >> $(GDBINIT_FILE) -endif - @echo break main >> $(GDBINIT_FILE) - -debug: gdb-config $(TARGET).elf -ifeq ($(DEBUG_BACKEND), avarice) - @echo Starting AVaRICE - Press enter when "waiting to connect" message displays. - @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \ - $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT) - @$(WINSHELL) /c pause - -else - @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \ - $(DEBUG_MFREQ) --port $(DEBUG_PORT) -endif - @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE) - - - - -# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. -COFFCONVERT = $(OBJCOPY) --debugging -COFFCONVERT += --change-section-address .data-0x800000 -COFFCONVERT += --change-section-address .bss-0x800000 -COFFCONVERT += --change-section-address .noinit-0x800000 -COFFCONVERT += --change-section-address .eeprom-0x810000 - - - -coff: $(TARGET).elf - @echo - @echo $(MSG_COFF) $(TARGET).cof - $(COFFCONVERT) -O coff-avr $< $(TARGET).cof - - -extcoff: $(TARGET).elf - @echo - @echo $(MSG_EXTENDED_COFF) $(TARGET).cof - $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof - - - -# Create final output files (.hex, .eep) from ELF output file. -%.hex: %.elf - @echo - @echo $(MSG_FLASH) $@ - $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@ - -%.eep: %.elf - @echo - @echo $(MSG_EEPROM) $@ - -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ - --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0 - -# Create extended listing file from ELF output file. -%.lss: %.elf - @echo - @echo $(MSG_EXTENDED_LISTING) $@ - $(OBJDUMP) -h -S -z $< > $@ - -# Create a symbol table from ELF output file. -%.sym: %.elf - @echo - @echo $(MSG_SYMBOL_TABLE) $@ - $(NM) -n $< > $@ - - - -# Create library from object files. -.SECONDARY : $(TARGET).a -.PRECIOUS : $(OBJ) -%.a: $(OBJ) - @echo - @echo $(MSG_CREATING_LIBRARY) $@ - $(AR) $@ $(OBJ) - - -# Link: create ELF output file from object files. -.SECONDARY : $(TARGET).elf -.PRECIOUS : $(OBJ) -%.elf: $(OBJ) - @echo - @echo $(MSG_LINKING) $@ - $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS) - - -# Compile: create object files from C source files. -$(OBJDIR)/%.o : %.c - @echo - @echo $(MSG_COMPILING) $< - $(CC) -c $(ALL_CFLAGS) $< -o $@ - - -# Compile: create object files from C++ source files. -$(OBJDIR)/%.o : %.cpp - @echo - @echo $(MSG_COMPILING_CPP) $< - $(CC) -c $(ALL_CPPFLAGS) $< -o $@ - - -# Compile: create assembler files from C source files. -%.s : %.c - $(CC) -S $(ALL_CFLAGS) $< -o $@ - - -# Compile: create assembler files from C++ source files. -%.s : %.cpp - $(CC) -S $(ALL_CPPFLAGS) $< -o $@ - - -# Assemble: create object files from assembler source files. -$(OBJDIR)/%.o : %.S - @echo - @echo $(MSG_ASSEMBLING) $< - $(CC) -c $(ALL_ASFLAGS) $< -o $@ - - -# Create preprocessed source for use in sending a bug report. -%.i : %.c - $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ - - -# Target: clean project. -clean: begin clean_list end - -clean_list : - @echo - @echo $(MSG_CLEANING) - $(REMOVE) $(TARGET).hex - $(REMOVE) $(TARGET).eep - $(REMOVE) $(TARGET).cof - $(REMOVE) $(TARGET).elf - $(REMOVE) $(TARGET).map - $(REMOVE) $(TARGET).sym - $(REMOVE) $(TARGET).lss - $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o) - $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst) - $(REMOVE) $(SRC:.c=.s) - $(REMOVE) $(SRC:.c=.d) - $(REMOVE) $(SRC:.c=.i) - $(REMOVEDIR) .dep - -doxygen: - @echo Generating Project Documentation... - @doxygen Doxygen.conf - @echo Documentation Generation Complete. - -clean_doxygen: - rm -rf Documentation - -# Create object files directory -$(shell mkdir $(OBJDIR) 2>/dev/null) - - -# Include the dependency files. --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) - - -# Listing of phony targets. -.PHONY : all begin finish end sizebefore sizeafter gccversion \ -build elf hex eep lss sym coff extcoff doxygen clean \ -clean_list clean_doxygen program debug gdb-config diff --git a/firmwares/atmegaxxu2/arduino-usbdfu/readme.txt b/firmwares/atmegaxxu2/arduino-usbdfu/readme.txt deleted file mode 100644 index e376679..0000000 --- a/firmwares/atmegaxxu2/arduino-usbdfu/readme.txt +++ /dev/null @@ -1,7 +0,0 @@ -To setup the project and program an ATMEG8U2 with the Arduino USB DFU bootloader: -1. unpack the source into LUFA's Bootloader directory -2. set ARDUINO_MODEL_PID in the makefile as appropriate -3. do "make clean; make; make program" - -Check that the board enumerates as either "Arduino Uno DFU" or "Arduino Mega 2560 DFU". Test by uploading the Arduino-usbserial application firmware (see instructions in Arduino-usbserial directory) - diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex b/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex deleted file mode 100644 index efbbf15..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex +++ /dev/null @@ -1,254 +0,0 @@ -:1000000090C00000A9C00000A7C00000A5C000006B -:10001000A3C00000A1C000009FC000009DC0000060 -:100020009BC0000099C0000097C0000048C40000B9 -:100030000CC4000091C000008FC000008DC0000003 -:100040008BC0000089C0000087C0000085C0000090 -:1000500083C0000081C000007FC0000002C100001A -:100060007BC0000079C0000077C0000075C00000B0 -:1000700073C0000071C000006FC000006DC00000C0 -:100080006BC0000069C0000067C0000065C00000D0 -:1000900063C0000061C000001201100102000008EE -:1000A0004123420001000102DC0109023E0002017D -:1000B00000C0320904000001020201000524000111 -:1000C0001004240206052406000107058203080027 -:1000D000FF09040100020A000000070504024000B5 -:1000E00001070583024000010403090432034100B3 -:1000F00072006400750069006E006F002000280027 -:100100007700770077002E006100720064007500B0 -:1001100069006E006F002E0063006300290000007C -:10012000000011241FBECFEFD2E0DEBFCDBF11E033 -:10013000A0E0B1E0ECEAFFE002C005900D92A6312C -:10014000B107D9F712E0A6E1B1E001C01D92AF32CC -:10015000B107E1F7F1D028C753CF9C01DC01AE57BE -:10016000BF4FED91FC91119741911196FC93EE9345 -:1001700080589F4FE817F90711F42D933C939FB7D0 -:10018000F894F901EC57FF4F8081815080839FBF25 -:10019000842F0895DF92EF92FF920F931F93FC013B -:1001A0008489813019F0823021F405C040E3D42ED7 -:1001B00004C0DD2402C030E2D32E8389823011F4E2 -:1001C00088E0D82A8589873031F0883031F0863050 -:1001D00031F482E003C084E001C086E0D82A1092A6 -:1001E000C9001092C8001092CA00E784F088018903 -:1001F000128980E0E81681EEF80680E0080780E0CA -:10020000180719F420E130E00FC0C801B701969536 -:1002100087957795679560587B47814E9F4FA801DA -:100220009701A0D6215030403093CD002093CC00D0 -:10023000D092CA0080E0E81681EEF80680E0080758 -:1002400080E0180711F082E001C080E08093C800D0 -:1002500088E98093C9001F910F91FF90EF90DF9084 -:1002600008951F920F920FB60F9211242F938F9320 -:100270009F93EF93FF939091CE008EB38430F1F46F -:10028000E0919901F0919A019083E0919901F091A8 -:100290009A01CF01019690939A018093990189590F -:1002A000914021F489E191E0928381839FB7F89492 -:1002B00080919D018F5F80939D019FBFFF91EF9182 -:1002C0009F918F912F910F900FBE0F901F901895B7 -:1002D000FC01858580FF02C05F9808955F9A0895AC -:1002E00080E091E0D5C580E091E088C584B7877F44 -:1002F00084BF28E10FB6F89420936000109260004C -:100300000FBE87E690E09093CD008093CC0086E00E -:100310008093CA001092C8002093C900539A5A9A39 -:100320008AB180638AB98BB180638BB983D284E050 -:1003300085BD5F9A579A08950F931F93CF93DF93CC -:10034000D5DF2FB7F8948EE991E090931F02809348 -:100350001E0290932102809320022FBF2FB7F894A2 -:1003600089E191E090939A018093990190939C0187 -:1003700080939B012FBF7894CEE9D1E003E08FB743 -:10038000F894909122028FBF903809F180E091E0BB -:10039000ABD497FD1CC0E0911E02F0911F02808338 -:1003A000E0911E02F0911F02CF01019690931F026F -:1003B00080931E028E51924011F4D283C1839FB765 -:1003C000F894809122028F5F809322029FBF8FB7A3 -:1003D000F89410919D018FBFA89902C0113678F151 -:1003E000A89A80919D01882361F05D980093160181 -:1003F00008C089E191E0B1DE682F80E091E0DAD4B5 -:1004000011501123B1F780911601882351F080918A -:10041000160181508093160180911601882309F4FA -:100420005D9A80911701882351F0809117018150C6 -:100430008093170180911701882309F45C9A8FB784 -:10044000F894909122028FBF992369F08EE991E090 -:1004500084DE982F8091C80085FFFCCF9093CE005A -:100460005C980093170180E091E095D42AD487CF5F -:10047000DA01923049F0933061F09130F9F4E8E913 -:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6 -:1004900019C0813049F0813018F0823079F408C0F9 -:1004A000E8EEF0E0849107C0ECEEF0E0849103C048 -:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9 -:1004C00020E030E0ED93FC93C901089528E030E08E -:1004D00040E003C04F5F220F331F28173907D0F3C6 -:1004E000842F8295807F08958093E9008091EB00AE -:1004F00081608093EB001092ED006093EC004093DC -:10050000ED008091EE00881F8827881F08951092C3 -:10051000F40090E09093E9001092F0001092E8004F -:100520001092ED008091EB008E7F8093EB009F5F37 -:10053000953081F708958091270288238CF403C0B9 -:100540008EB38823B1F08091E80082FFF9CF8091CB -:10055000E8008B778093E80008958EB3882349F0F4 -:100560008091E80080FFF9CF8091E8008E7780933A -:10057000E800089594E68091EC0080FF05C080912A -:10058000E80080FF05C023C08091E80082FD1FC005 -:100590008EB3882311F482E008958EB3853011F470 -:1005A00083E008958091EB0085FF02C081E008950B -:1005B0008091E10082FFDFCF8091E1008B7F80930B -:1005C000E100992311F484E008959150D4CF80E0A4 -:1005D00008959C0140912D0250912E024617570715 -:1005E00018F4F90120E038C06115710511F0AB0174 -:1005F000F8CF8091E8008E778093E80040E050E0EB -:10060000F0CF8091E80083FF02C081E008958091DF -:10061000E80082FD2DC08EB3882381F18EB3853032 -:1006200079F18091E80080FF17C09091F20006C038 -:1006300081918093F100415050409F5F41155105D9 -:1006400011F09830A8F320E0983009F421E080916F -:10065000E8008E778093E8004115510591F622233A -:1006600081F606C08EB3882349F08EB3853041F001 -:100670008091E80082FFF6CF80E0089582E008953F -:1006800083E008959C0140912D0250912E0246175F -:10069000570710F490E03BC06115710511F0AB01F4 -:1006A000F9CF8091E8008E778093E80040E050E039 -:1006B000F1CF8091E80083FF02C081E0089580912E -:1006C000E80082FD30C08EB3882399F18EB3853067 -:1006D00091F18091E80080FF1AC08091F20009C07A -:1006E000F9012F5F3F4FE491E093F10041505040FA -:1006F0008F5F4115510511F0883090F390E08830FC -:1007000009F491E08091E8008E778093E80041152C -:10071000510579F6992369F606C08EB3882349F00E -:100720008EB3853041F08091E80082FFF6CF80E003 -:10073000089582E0089583E008959C016115710594 -:1007400029F48091E8008B778093E800F90120C0BC -:100750008091E80083FF02C081E008958EB3882372 -:1007600039F18EB3853031F18091E80082FFF0CF0E -:1007700006C08091F10081936150704021F080911A -:10078000F2008823B1F78091E8008B778093E8002E -:1007900061157105E9F606C08EB3882349F08EB362 -:1007A000853041F08091E80080FFF6CF80E0089529 -:1007B00082E0089583E0089542D044D01EBA10929A -:1007C0002502109224021092230284E089BD89B58B -:1007D000826089BD09B400FEFDCF8091D800982FBA -:1007E0009F779093D80080688093D80080916300B1 -:1007F0008E7F809363008091D8008F7D8093D80096 -:100800008091E0008E7F8093E0008091E1008E7FF8 -:100810008093E1008091E20081608093E20080910A -:10082000E100877F8093E1008091E20088608093FF -:10083000E2000895C1DF81E08093260208951092BE -:10084000E20008951092E10008951F920F920FB6F2 -:100850000F9211241F932F933F934F935F936F93A6 -:100860007F938F939F93AF93BF93EF93FF93E9EEA3 -:10087000F0E0108117701082E0EFF0E08081877F58 -:1008800080837894C3D0F894A9EEB0E01C92E0EF96 -:10089000F0E08081886080831C93FF91EF91BF918D -:1008A000AF919F918F917F916F915F914F913F9108 -:1008B0002F911F910F900FBE0F901F9018951F92B0 -:1008C0000F920FB60F9211242F933F934F935F9384 -:1008D0006F937F938F939F93AF93BF93EF93FF9308 -:1008E0008091E10080FF1BC08091E20080FF17C073 -:1008F0008091E1008E7F8093E1008091E2008E7F05 -:100900008093E2008091E20080618093E200809118 -:10091000D80080628093D80019BC1EBAD1D18091D2 -:10092000E10084FF29C08091E20084FF25C084E0BB -:1009300089BD89B5826089BD09B400FEFDCF809173 -:10094000D8008F7D8093D8008091E1008F7E8093C6 -:10095000E1008091E2008F7E8093E2008091E200CE -:1009600081608093E20080912502882311F481E068 -:1009700001C084E08EBBA4D18091E10083FF27C039 -:100980008091E20083FF23C08091E100877F809304 -:10099000E10082E08EBB109225028091E1008E7F03 -:1009A0008093E1008091E2008E7F8093E20080914D -:1009B000E20080618093E200AADD80E060E042E036 -:1009C00093DD8091F00088608093F00079D1809170 -:1009D000E10082FF0AC08091E20082FF06C08091A0 -:1009E000E1008B7F8093E1006BD1FF91EF91BF918C -:1009F000AF919F918F917F916F915F914F913F91B7 -:100A00002F910F900FBE0F901F9018951F93DF939B -:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D -:100A2000CDBFE7E2F2E08091F100819322E0EF3266 -:100A3000F207C9F78091270230912802353009F476 -:100A400087C0363040F43130C9F1313070F0333086 -:100A500009F01DC133C0383009F4EFC0393009F452 -:100A6000FEC0363009F013C192C0803821F08238C0 -:100A700009F00DC108C090912302809124028823BF -:100A800099F0926011C080912B0287708093E900E9 -:100A90008091EB0090E025E0969587952A95E1F707 -:100AA000982F91701092E9008091E800877F8093E1 -:100AB000E8009093F1001092F100CAC0882319F069 -:100AC000823009F0E4C090E08F719070009721F0BF -:100AD000029709F0DDC00CC080912902813009F035 -:100AE000D7C010922402333069F5809324022AC0C3 -:100AF00080912902882331F520912B02277009F477 -:100B0000C7C02093E9008091EB0080FFC1C0333063 -:100B100021F48091EB00806213C08091EB00806132 -:100B20008093EB0081E090E002C0880F991F2A9526 -:100B3000E2F78093EA001092EA008091EB0088606F -:100B40008093EB001092E9008091E800877F83C0DA -:100B5000882309F09CC0109129028091E800877FCA -:100B60008093E800E8DC04C08EB3882309F490C0C9 -:100B70008091E80080FFF8CF812F8F7711F492E009 -:100B800001C093E09EBB80688093E30081C08058E1 -:100B9000823008F07CC08091290290912A0223E0E3 -:100BA0008C3D920799F55FB7F894DE0115964EE0FB -:100BB00020E030E061E2E42FF0E0609357008491A0 -:100BC00020FF03C082958F704F5F982F9F70892FF1 -:100BD000805D8A3308F0895F8C9311961C9211977F -:100BE0002F5F3F4F12962431310529F75FBF8AE20C -:100BF0008B8383E08C838091E800877F8093E8007B -:100C0000CE0103966AE270E0E4DC11C060912B0231 -:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2 -:100C2000E800877F8093E80089819A812BDD80919D -:100C3000E8008B778093E8002BC0803841F58091E5 -:100C4000E800877F8093E800809125028093F1007F -:100C50008091E8008E778093E8006DDC19C08823CE -:100C6000B1F490912902923098F48091E800877F46 -:100C70008093E800909325025EDC80912502882312 -:100C800011F483E001C084E08EBB2DDB01C028DBC2 -:100C90008091E80083FF0AC08091EB00806280931E -:100CA000EB008091E800877F8093E800AC960FB658 -:100CB000F894DEBF0FBECDBFCF91DF911F91089595 -:100CC00008951F938EB3882361F01091E90010926C -:100CD000E9008091E80083FF01C098DE177010934F -:100CE000E9001F9108950895FC018EB3843021F529 -:100CF00087859089A189B2890097A105B105E1F0A6 -:100D000085818093E9008091E80082FF15C0809181 -:100D1000F200882319F42FEF3FEF04C08091F10017 -:100D2000282F30E08091F200882341F48091E80080 -:100D30008B778093E80002C02FEF3FEFC901089541 -:100D4000FC018EB3843011F587859089A189B28921 -:100D50000097A105B105D1F081818093E9008091D0 -:100D6000F2008823A9F09091E8008091E8008E7746 -:100D70008093E80095FD0CC0FDDB982F882349F493 -:100D80008091E8008E778093E80003C092E001C074 -:100D900090E0892F0895FC018EB3843051F487854B -:100DA0009089A189B2890097A105B10511F0CF0101 -:100DB000C7CF08951F93FC01162F8EB38430D9F44A -:100DC00087859089A189B2890097A105B10599F01D -:100DD00081818093E9008091E80085FD08C08091C1 -:100DE000E8008E778093E800C5DB882329F4109310 -:100DF000F10080E001C082E01F9108950F931F93DE -:100E0000CF93DF93EC010D96FC0189E0DF011D9289 -:100E10008A95E9F72A813B8109818C81882311F425 -:100E200010E001C014E0C90151DB182B1260802FC3 -:100E300061E8412F59DB882329F12E813F810D8103 -:100E40008885882311F410E001C014E0C9013EDB5D -:100E5000182B1260802F60E8412F46DB882391F029 -:100E60002A853B8509858C85882311F410E001C013 -:100E700014E0C9012BDB182B1260802F61EC412F8D -:100E800033DB01C080E0DF91CF911F910F91089576 -:100E9000CF93DF93EC018091E80083FF60C08881ED -:100EA00090E020912B0230912C022817390709F08D -:100EB00056C080912802813261F0823220F4803263 -:100EC00009F04DC019C0823269F1833209F047C080 -:100ED00038C080912702813A09F041C08091E80032 -:100EE000877F8093E800CE010F9667E070E071DBAA -:100EF0008091E8008B7713C080912702813279F5C9 -:100F00008091E800877F8093E800CE010F9667E02C -:100F100070E013DCCE013ED98091E8008E7780939B -:100F2000E8001DC0809127028132C9F48091E80059 -:100F3000877F8093E800809129028D87CE01C8D9F0 -:100F40000DC080912702813251F48091E800877FA3 -:100F50008093E800CE0160912902C5DEECDADF91D2 -:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053 -:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749 -:100F800020F0A21BB30BE40BF50B661F771F881F25 -:100F9000991F1A9469F760957095809590959B01BB -:0C0FA000AC01BD01CF010895F894FFCF13 -:100FAC0000034000000440000002080000000000A4 -:060FBC000000000000002F -:00000001FF diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-MegaADK-Rev3.hex b/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-MegaADK-Rev3.hex deleted file mode 100644 index 3af6a24..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-MegaADK-Rev3.hex +++ /dev/null @@ -1,254 +0,0 @@ -:1000000090C00000A9C00000A7C00000A5C000006B -:10001000A3C00000A1C000009FC000009DC0000060 -:100020009BC0000099C0000097C0000048C40000B9 -:100030000CC4000091C000008FC000008DC0000003 -:100040008BC0000089C0000087C0000085C0000090 -:1000500083C0000081C000007FC0000002C100001A -:100060007BC0000079C0000077C0000075C00000B0 -:1000700073C0000071C000006FC000006DC00000C0 -:100080006BC0000069C0000067C0000065C00000D0 -:1000900063C0000061C000001201100102000008EE -:1000A0004123440001000102DC0109023E0002017B -:1000B00000C0320904000001020201000524000111 -:1000C0001004240206052406000107058203080027 -:1000D000FF09040100020A000000070504024000B5 -:1000E00001070583024000010403090432034100B3 -:1000F00072006400750069006E006F002000280027 -:100100007700770077002E006100720064007500B0 -:1001100069006E006F002E0063006300290000007C -:10012000000011241FBECFEFD2E0DEBFCDBF11E033 -:10013000A0E0B1E0ECEAFFE002C005900D92A6312C -:10014000B107D9F712E0A6E1B1E001C01D92AF32CC -:10015000B107E1F7F1D028C753CF9C01DC01AE57BE -:10016000BF4FED91FC91119741911196FC93EE9345 -:1001700080589F4FE817F90711F42D933C939FB7D0 -:10018000F894F901EC57FF4F8081815080839FBF25 -:10019000842F0895DF92EF92FF920F931F93FC013B -:1001A0008489813019F0823021F405C040E3D42ED7 -:1001B00004C0DD2402C030E2D32E8389823011F4E2 -:1001C00088E0D82A8589873031F0883031F0863050 -:1001D00031F482E003C084E001C086E0D82A1092A6 -:1001E000C9001092C8001092CA00E784F088018903 -:1001F000128980E0E81681EEF80680E0080780E0CA -:10020000180719F420E130E00FC0C801B701969536 -:1002100087957795679560587B47814E9F4FA801DA -:100220009701A0D6215030403093CD002093CC00D0 -:10023000D092CA0080E0E81681EEF80680E0080758 -:1002400080E0180711F082E001C080E08093C800D0 -:1002500088E98093C9001F910F91FF90EF90DF9084 -:1002600008951F920F920FB60F9211242F938F9320 -:100270009F93EF93FF939091CE008EB38430F1F46F -:10028000E0919901F0919A019083E0919901F091A8 -:100290009A01CF01019690939A018093990189590F -:1002A000914021F489E191E0928381839FB7F89492 -:1002B00080919D018F5F80939D019FBFFF91EF9182 -:1002C0009F918F912F910F900FBE0F901F901895B7 -:1002D000FC01858580FF02C05F9808955F9A0895AC -:1002E00080E091E0D5C580E091E088C584B7877F44 -:1002F00084BF28E10FB6F89420936000109260004C -:100300000FBE87E690E09093CD008093CC0086E00E -:100310008093CA001092C8002093C900539A5A9A39 -:100320008AB180638AB98BB180638BB983D284E050 -:1003300085BD5F9A579A08950F931F93CF93DF93CC -:10034000D5DF2FB7F8948EE991E090931F02809348 -:100350001E0290932102809320022FBF2FB7F894A2 -:1003600089E191E090939A018093990190939C0187 -:1003700080939B012FBF7894CEE9D1E003E08FB743 -:10038000F894909122028FBF903809F180E091E0BB -:10039000ABD497FD1CC0E0911E02F0911F02808338 -:1003A000E0911E02F0911F02CF01019690931F026F -:1003B00080931E028E51924011F4D283C1839FB765 -:1003C000F894809122028F5F809322029FBF8FB7A3 -:1003D000F89410919D018FBFA89902C0113678F151 -:1003E000A89A80919D01882361F05D980093160181 -:1003F00008C089E191E0B1DE682F80E091E0DAD4B5 -:1004000011501123B1F780911601882351F080918A -:10041000160181508093160180911601882309F4FA -:100420005D9A80911701882351F0809117018150C6 -:100430008093170180911701882309F45C9A8FB784 -:10044000F894909122028FBF992369F08EE991E090 -:1004500084DE982F8091C80085FFFCCF9093CE005A -:100460005C980093170180E091E095D42AD487CF5F -:10047000DA01923049F0933061F09130F9F4E8E913 -:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6 -:1004900019C0813049F0813018F0823079F408C0F9 -:1004A000E8EEF0E0849107C0ECEEF0E0849103C048 -:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9 -:1004C00020E030E0ED93FC93C901089528E030E08E -:1004D00040E003C04F5F220F331F28173907D0F3C6 -:1004E000842F8295807F08958093E9008091EB00AE -:1004F00081608093EB001092ED006093EC004093DC -:10050000ED008091EE00881F8827881F08951092C3 -:10051000F40090E09093E9001092F0001092E8004F -:100520001092ED008091EB008E7F8093EB009F5F37 -:10053000953081F708958091270288238CF403C0B9 -:100540008EB38823B1F08091E80082FFF9CF8091CB -:10055000E8008B778093E80008958EB3882349F0F4 -:100560008091E80080FFF9CF8091E8008E7780933A -:10057000E800089594E68091EC0080FF05C080912A -:10058000E80080FF05C023C08091E80082FD1FC005 -:100590008EB3882311F482E008958EB3853011F470 -:1005A00083E008958091EB0085FF02C081E008950B -:1005B0008091E10082FFDFCF8091E1008B7F80930B -:1005C000E100992311F484E008959150D4CF80E0A4 -:1005D00008959C0140912D0250912E024617570715 -:1005E00018F4F90120E038C06115710511F0AB0174 -:1005F000F8CF8091E8008E778093E80040E050E0EB -:10060000F0CF8091E80083FF02C081E008958091DF -:10061000E80082FD2DC08EB3882381F18EB3853032 -:1006200079F18091E80080FF17C09091F20006C038 -:1006300081918093F100415050409F5F41155105D9 -:1006400011F09830A8F320E0983009F421E080916F -:10065000E8008E778093E8004115510591F622233A -:1006600081F606C08EB3882349F08EB3853041F001 -:100670008091E80082FFF6CF80E0089582E008953F -:1006800083E008959C0140912D0250912E0246175F -:10069000570710F490E03BC06115710511F0AB01F4 -:1006A000F9CF8091E8008E778093E80040E050E039 -:1006B000F1CF8091E80083FF02C081E0089580912E -:1006C000E80082FD30C08EB3882399F18EB3853067 -:1006D00091F18091E80080FF1AC08091F20009C07A -:1006E000F9012F5F3F4FE491E093F10041505040FA -:1006F0008F5F4115510511F0883090F390E08830FC -:1007000009F491E08091E8008E778093E80041152C -:10071000510579F6992369F606C08EB3882349F00E -:100720008EB3853041F08091E80082FFF6CF80E003 -:10073000089582E0089583E008959C016115710594 -:1007400029F48091E8008B778093E800F90120C0BC -:100750008091E80083FF02C081E008958EB3882372 -:1007600039F18EB3853031F18091E80082FFF0CF0E -:1007700006C08091F10081936150704021F080911A -:10078000F2008823B1F78091E8008B778093E8002E -:1007900061157105E9F606C08EB3882349F08EB362 -:1007A000853041F08091E80080FFF6CF80E0089529 -:1007B00082E0089583E0089542D044D01EBA10929A -:1007C0002502109224021092230284E089BD89B58B -:1007D000826089BD09B400FEFDCF8091D800982FBA -:1007E0009F779093D80080688093D80080916300B1 -:1007F0008E7F809363008091D8008F7D8093D80096 -:100800008091E0008E7F8093E0008091E1008E7FF8 -:100810008093E1008091E20081608093E20080910A -:10082000E100877F8093E1008091E20088608093FF -:10083000E2000895C1DF81E08093260208951092BE -:10084000E20008951092E10008951F920F920FB6F2 -:100850000F9211241F932F933F934F935F936F93A6 -:100860007F938F939F93AF93BF93EF93FF93E9EEA3 -:10087000F0E0108117701082E0EFF0E08081877F58 -:1008800080837894C3D0F894A9EEB0E01C92E0EF96 -:10089000F0E08081886080831C93FF91EF91BF918D -:1008A000AF919F918F917F916F915F914F913F9108 -:1008B0002F911F910F900FBE0F901F9018951F92B0 -:1008C0000F920FB60F9211242F933F934F935F9384 -:1008D0006F937F938F939F93AF93BF93EF93FF9308 -:1008E0008091E10080FF1BC08091E20080FF17C073 -:1008F0008091E1008E7F8093E1008091E2008E7F05 -:100900008093E2008091E20080618093E200809118 -:10091000D80080628093D80019BC1EBAD1D18091D2 -:10092000E10084FF29C08091E20084FF25C084E0BB -:1009300089BD89B5826089BD09B400FEFDCF809173 -:10094000D8008F7D8093D8008091E1008F7E8093C6 -:10095000E1008091E2008F7E8093E2008091E200CE -:1009600081608093E20080912502882311F481E068 -:1009700001C084E08EBBA4D18091E10083FF27C039 -:100980008091E20083FF23C08091E100877F809304 -:10099000E10082E08EBB109225028091E1008E7F03 -:1009A0008093E1008091E2008E7F8093E20080914D -:1009B000E20080618093E200AADD80E060E042E036 -:1009C00093DD8091F00088608093F00079D1809170 -:1009D000E10082FF0AC08091E20082FF06C08091A0 -:1009E000E1008B7F8093E1006BD1FF91EF91BF918C -:1009F000AF919F918F917F916F915F914F913F91B7 -:100A00002F910F900FBE0F901F9018951F93DF939B -:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D -:100A2000CDBFE7E2F2E08091F100819322E0EF3266 -:100A3000F207C9F78091270230912802353009F476 -:100A400087C0363040F43130C9F1313070F0333086 -:100A500009F01DC133C0383009F4EFC0393009F452 -:100A6000FEC0363009F013C192C0803821F08238C0 -:100A700009F00DC108C090912302809124028823BF -:100A800099F0926011C080912B0287708093E900E9 -:100A90008091EB0090E025E0969587952A95E1F707 -:100AA000982F91701092E9008091E800877F8093E1 -:100AB000E8009093F1001092F100CAC0882319F069 -:100AC000823009F0E4C090E08F719070009721F0BF -:100AD000029709F0DDC00CC080912902813009F035 -:100AE000D7C010922402333069F5809324022AC0C3 -:100AF00080912902882331F520912B02277009F477 -:100B0000C7C02093E9008091EB0080FFC1C0333063 -:100B100021F48091EB00806213C08091EB00806132 -:100B20008093EB0081E090E002C0880F991F2A9526 -:100B3000E2F78093EA001092EA008091EB0088606F -:100B40008093EB001092E9008091E800877F83C0DA -:100B5000882309F09CC0109129028091E800877FCA -:100B60008093E800E8DC04C08EB3882309F490C0C9 -:100B70008091E80080FFF8CF812F8F7711F492E009 -:100B800001C093E09EBB80688093E30081C08058E1 -:100B9000823008F07CC08091290290912A0223E0E3 -:100BA0008C3D920799F55FB7F894DE0115964EE0FB -:100BB00020E030E061E2E42FF0E0609357008491A0 -:100BC00020FF03C082958F704F5F982F9F70892FF1 -:100BD000805D8A3308F0895F8C9311961C9211977F -:100BE0002F5F3F4F12962431310529F75FBF8AE20C -:100BF0008B8383E08C838091E800877F8093E8007B -:100C0000CE0103966AE270E0E4DC11C060912B0231 -:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2 -:100C2000E800877F8093E80089819A812BDD80919D -:100C3000E8008B778093E8002BC0803841F58091E5 -:100C4000E800877F8093E800809125028093F1007F -:100C50008091E8008E778093E8006DDC19C08823CE -:100C6000B1F490912902923098F48091E800877F46 -:100C70008093E800909325025EDC80912502882312 -:100C800011F483E001C084E08EBB2DDB01C028DBC2 -:100C90008091E80083FF0AC08091EB00806280931E -:100CA000EB008091E800877F8093E800AC960FB658 -:100CB000F894DEBF0FBECDBFCF91DF911F91089595 -:100CC00008951F938EB3882361F01091E90010926C -:100CD000E9008091E80083FF01C098DE177010934F -:100CE000E9001F9108950895FC018EB3843021F529 -:100CF00087859089A189B2890097A105B105E1F0A6 -:100D000085818093E9008091E80082FF15C0809181 -:100D1000F200882319F42FEF3FEF04C08091F10017 -:100D2000282F30E08091F200882341F48091E80080 -:100D30008B778093E80002C02FEF3FEFC901089541 -:100D4000FC018EB3843011F587859089A189B28921 -:100D50000097A105B105D1F081818093E9008091D0 -:100D6000F2008823A9F09091E8008091E8008E7746 -:100D70008093E80095FD0CC0FDDB982F882349F493 -:100D80008091E8008E778093E80003C092E001C074 -:100D900090E0892F0895FC018EB3843051F487854B -:100DA0009089A189B2890097A105B10511F0CF0101 -:100DB000C7CF08951F93FC01162F8EB38430D9F44A -:100DC00087859089A189B2890097A105B10599F01D -:100DD00081818093E9008091E80085FD08C08091C1 -:100DE000E8008E778093E800C5DB882329F4109310 -:100DF000F10080E001C082E01F9108950F931F93DE -:100E0000CF93DF93EC010D96FC0189E0DF011D9289 -:100E10008A95E9F72A813B8109818C81882311F425 -:100E200010E001C014E0C90151DB182B1260802FC3 -:100E300061E8412F59DB882329F12E813F810D8103 -:100E40008885882311F410E001C014E0C9013EDB5D -:100E5000182B1260802F60E8412F46DB882391F029 -:100E60002A853B8509858C85882311F410E001C013 -:100E700014E0C9012BDB182B1260802F61EC412F8D -:100E800033DB01C080E0DF91CF911F910F91089576 -:100E9000CF93DF93EC018091E80083FF60C08881ED -:100EA00090E020912B0230912C022817390709F08D -:100EB00056C080912802813261F0823220F4803263 -:100EC00009F04DC019C0823269F1833209F047C080 -:100ED00038C080912702813A09F041C08091E80032 -:100EE000877F8093E800CE010F9667E070E071DBAA -:100EF0008091E8008B7713C080912702813279F5C9 -:100F00008091E800877F8093E800CE010F9667E02C -:100F100070E013DCCE013ED98091E8008E7780939B -:100F2000E8001DC0809127028132C9F48091E80059 -:100F3000877F8093E800809129028D87CE01C8D9F0 -:100F40000DC080912702813251F48091E800877FA3 -:100F50008093E800CE0160912902C5DEECDADF91D2 -:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053 -:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749 -:100F800020F0A21BB30BE40BF50B661F771F881F25 -:100F9000991F1A9469F760957095809590959B01BB -:0C0FA000AC01BD01CF010895F894FFCF13 -:100FAC0000034000000440000002080000000000A4 -:060FBC000000000000002F -:00000001FF diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Uno-Rev3.hex b/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Uno-Rev3.hex deleted file mode 100644 index d1404ee..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Uno-Rev3.hex +++ /dev/null @@ -1,254 +0,0 @@ -:1000000090C00000A9C00000A7C00000A5C000006B -:10001000A3C00000A1C000009FC000009DC0000060 -:100020009BC0000099C0000097C0000048C40000B9 -:100030000CC4000091C000008FC000008DC0000003 -:100040008BC0000089C0000087C0000085C0000090 -:1000500083C0000081C000007FC0000002C100001A -:100060007BC0000079C0000077C0000075C00000B0 -:1000700073C0000071C000006FC000006DC00000C0 -:100080006BC0000069C0000067C0000065C00000D0 -:1000900063C0000061C000001201100102000008EE -:1000A0004123430001000102DC0109023E0002017C -:1000B00000C0320904000001020201000524000111 -:1000C0001004240206052406000107058203080027 -:1000D000FF09040100020A000000070504024000B5 -:1000E00001070583024000010403090432034100B3 -:1000F00072006400750069006E006F002000280027 -:100100007700770077002E006100720064007500B0 -:1001100069006E006F002E0063006300290000007C -:10012000000011241FBECFEFD2E0DEBFCDBF11E033 -:10013000A0E0B1E0ECEAFFE002C005900D92A6312C -:10014000B107D9F712E0A6E1B1E001C01D92AF32CC -:10015000B107E1F7F1D028C753CF9C01DC01AE57BE -:10016000BF4FED91FC91119741911196FC93EE9345 -:1001700080589F4FE817F90711F42D933C939FB7D0 -:10018000F894F901EC57FF4F8081815080839FBF25 -:10019000842F0895DF92EF92FF920F931F93FC013B -:1001A0008489813019F0823021F405C040E3D42ED7 -:1001B00004C0DD2402C030E2D32E8389823011F4E2 -:1001C00088E0D82A8589873031F0883031F0863050 -:1001D00031F482E003C084E001C086E0D82A1092A6 -:1001E000C9001092C8001092CA00E784F088018903 -:1001F000128980E0E81681EEF80680E0080780E0CA -:10020000180719F420E130E00FC0C801B701969536 -:1002100087957795679560587B47814E9F4FA801DA -:100220009701A0D6215030403093CD002093CC00D0 -:10023000D092CA0080E0E81681EEF80680E0080758 -:1002400080E0180711F082E001C080E08093C800D0 -:1002500088E98093C9001F910F91FF90EF90DF9084 -:1002600008951F920F920FB60F9211242F938F9320 -:100270009F93EF93FF939091CE008EB38430F1F46F -:10028000E0919901F0919A019083E0919901F091A8 -:100290009A01CF01019690939A018093990189590F -:1002A000914021F489E191E0928381839FB7F89492 -:1002B00080919D018F5F80939D019FBFFF91EF9182 -:1002C0009F918F912F910F900FBE0F901F901895B7 -:1002D000FC01858580FF02C05F9808955F9A0895AC -:1002E00080E091E0D5C580E091E088C584B7877F44 -:1002F00084BF28E10FB6F89420936000109260004C -:100300000FBE87E690E09093CD008093CC0086E00E -:100310008093CA001092C8002093C900539A5A9A39 -:100320008AB180638AB98BB180638BB983D284E050 -:1003300085BD5F9A579A08950F931F93CF93DF93CC -:10034000D5DF2FB7F8948EE991E090931F02809348 -:100350001E0290932102809320022FBF2FB7F894A2 -:1003600089E191E090939A018093990190939C0187 -:1003700080939B012FBF7894CEE9D1E003E08FB743 -:10038000F894909122028FBF903809F180E091E0BB -:10039000ABD497FD1CC0E0911E02F0911F02808338 -:1003A000E0911E02F0911F02CF01019690931F026F -:1003B00080931E028E51924011F4D283C1839FB765 -:1003C000F894809122028F5F809322029FBF8FB7A3 -:1003D000F89410919D018FBFA89902C0113678F151 -:1003E000A89A80919D01882361F05D980093160181 -:1003F00008C089E191E0B1DE682F80E091E0DAD4B5 -:1004000011501123B1F780911601882351F080918A -:10041000160181508093160180911601882309F4FA -:100420005D9A80911701882351F0809117018150C6 -:100430008093170180911701882309F45C9A8FB784 -:10044000F894909122028FBF992369F08EE991E090 -:1004500084DE982F8091C80085FFFCCF9093CE005A -:100460005C980093170180E091E095D42AD487CF5F -:10047000DA01923049F0933061F09130F9F4E8E913 -:10048000F0E022E130E01EC0EAEAF0E02EE330E0E6 -:1004900019C0813049F0813018F0823079F408C0F9 -:1004A000E8EEF0E0849107C0ECEEF0E0849103C048 -:1004B000E0E2F1E08491282F30E004C0E0E0F0E0D9 -:1004C00020E030E0ED93FC93C901089528E030E08E -:1004D00040E003C04F5F220F331F28173907D0F3C6 -:1004E000842F8295807F08958093E9008091EB00AE -:1004F00081608093EB001092ED006093EC004093DC -:10050000ED008091EE00881F8827881F08951092C3 -:10051000F40090E09093E9001092F0001092E8004F -:100520001092ED008091EB008E7F8093EB009F5F37 -:10053000953081F708958091270288238CF403C0B9 -:100540008EB38823B1F08091E80082FFF9CF8091CB -:10055000E8008B778093E80008958EB3882349F0F4 -:100560008091E80080FFF9CF8091E8008E7780933A -:10057000E800089594E68091EC0080FF05C080912A -:10058000E80080FF05C023C08091E80082FD1FC005 -:100590008EB3882311F482E008958EB3853011F470 -:1005A00083E008958091EB0085FF02C081E008950B -:1005B0008091E10082FFDFCF8091E1008B7F80930B -:1005C000E100992311F484E008959150D4CF80E0A4 -:1005D00008959C0140912D0250912E024617570715 -:1005E00018F4F90120E038C06115710511F0AB0174 -:1005F000F8CF8091E8008E778093E80040E050E0EB -:10060000F0CF8091E80083FF02C081E008958091DF -:10061000E80082FD2DC08EB3882381F18EB3853032 -:1006200079F18091E80080FF17C09091F20006C038 -:1006300081918093F100415050409F5F41155105D9 -:1006400011F09830A8F320E0983009F421E080916F -:10065000E8008E778093E8004115510591F622233A -:1006600081F606C08EB3882349F08EB3853041F001 -:100670008091E80082FFF6CF80E0089582E008953F -:1006800083E008959C0140912D0250912E0246175F -:10069000570710F490E03BC06115710511F0AB01F4 -:1006A000F9CF8091E8008E778093E80040E050E039 -:1006B000F1CF8091E80083FF02C081E0089580912E -:1006C000E80082FD30C08EB3882399F18EB3853067 -:1006D00091F18091E80080FF1AC08091F20009C07A -:1006E000F9012F5F3F4FE491E093F10041505040FA -:1006F0008F5F4115510511F0883090F390E08830FC -:1007000009F491E08091E8008E778093E80041152C -:10071000510579F6992369F606C08EB3882349F00E -:100720008EB3853041F08091E80082FFF6CF80E003 -:10073000089582E0089583E008959C016115710594 -:1007400029F48091E8008B778093E800F90120C0BC -:100750008091E80083FF02C081E008958EB3882372 -:1007600039F18EB3853031F18091E80082FFF0CF0E -:1007700006C08091F10081936150704021F080911A -:10078000F2008823B1F78091E8008B778093E8002E -:1007900061157105E9F606C08EB3882349F08EB362 -:1007A000853041F08091E80080FFF6CF80E0089529 -:1007B00082E0089583E0089542D044D01EBA10929A -:1007C0002502109224021092230284E089BD89B58B -:1007D000826089BD09B400FEFDCF8091D800982FBA -:1007E0009F779093D80080688093D80080916300B1 -:1007F0008E7F809363008091D8008F7D8093D80096 -:100800008091E0008E7F8093E0008091E1008E7FF8 -:100810008093E1008091E20081608093E20080910A -:10082000E100877F8093E1008091E20088608093FF -:10083000E2000895C1DF81E08093260208951092BE -:10084000E20008951092E10008951F920F920FB6F2 -:100850000F9211241F932F933F934F935F936F93A6 -:100860007F938F939F93AF93BF93EF93FF93E9EEA3 -:10087000F0E0108117701082E0EFF0E08081877F58 -:1008800080837894C3D0F894A9EEB0E01C92E0EF96 -:10089000F0E08081886080831C93FF91EF91BF918D -:1008A000AF919F918F917F916F915F914F913F9108 -:1008B0002F911F910F900FBE0F901F9018951F92B0 -:1008C0000F920FB60F9211242F933F934F935F9384 -:1008D0006F937F938F939F93AF93BF93EF93FF9308 -:1008E0008091E10080FF1BC08091E20080FF17C073 -:1008F0008091E1008E7F8093E1008091E2008E7F05 -:100900008093E2008091E20080618093E200809118 -:10091000D80080628093D80019BC1EBAD1D18091D2 -:10092000E10084FF29C08091E20084FF25C084E0BB -:1009300089BD89B5826089BD09B400FEFDCF809173 -:10094000D8008F7D8093D8008091E1008F7E8093C6 -:10095000E1008091E2008F7E8093E2008091E200CE -:1009600081608093E20080912502882311F481E068 -:1009700001C084E08EBBA4D18091E10083FF27C039 -:100980008091E20083FF23C08091E100877F809304 -:10099000E10082E08EBB109225028091E1008E7F03 -:1009A0008093E1008091E2008E7F8093E20080914D -:1009B000E20080618093E200AADD80E060E042E036 -:1009C00093DD8091F00088608093F00079D1809170 -:1009D000E10082FF0AC08091E20082FF06C08091A0 -:1009E000E1008B7F8093E1006BD1FF91EF91BF918C -:1009F000AF919F918F917F916F915F914F913F91B7 -:100A00002F910F900FBE0F901F9018951F93DF939B -:100A1000CF93CDB7DEB7AC970FB6F894DEBF0FBE5D -:100A2000CDBFE7E2F2E08091F100819322E0EF3266 -:100A3000F207C9F78091270230912802353009F476 -:100A400087C0363040F43130C9F1313070F0333086 -:100A500009F01DC133C0383009F4EFC0393009F452 -:100A6000FEC0363009F013C192C0803821F08238C0 -:100A700009F00DC108C090912302809124028823BF -:100A800099F0926011C080912B0287708093E900E9 -:100A90008091EB0090E025E0969587952A95E1F707 -:100AA000982F91701092E9008091E800877F8093E1 -:100AB000E8009093F1001092F100CAC0882319F069 -:100AC000823009F0E4C090E08F719070009721F0BF -:100AD000029709F0DDC00CC080912902813009F035 -:100AE000D7C010922402333069F5809324022AC0C3 -:100AF00080912902882331F520912B02277009F477 -:100B0000C7C02093E9008091EB0080FFC1C0333063 -:100B100021F48091EB00806213C08091EB00806132 -:100B20008093EB0081E090E002C0880F991F2A9526 -:100B3000E2F78093EA001092EA008091EB0088606F -:100B40008093EB001092E9008091E800877F83C0DA -:100B5000882309F09CC0109129028091E800877FCA -:100B60008093E800E8DC04C08EB3882309F490C0C9 -:100B70008091E80080FFF8CF812F8F7711F492E009 -:100B800001C093E09EBB80688093E30081C08058E1 -:100B9000823008F07CC08091290290912A0223E0E3 -:100BA0008C3D920799F55FB7F894DE0115964EE0FB -:100BB00020E030E061E2E42FF0E0609357008491A0 -:100BC00020FF03C082958F704F5F982F9F70892FF1 -:100BD000805D8A3308F0895F8C9311961C9211977F -:100BE0002F5F3F4F12962431310529F75FBF8AE20C -:100BF0008B8383E08C838091E800877F8093E8007B -:100C0000CE0103966AE270E0E4DC11C060912B0231 -:100C1000AE014F5F5F4F2CDCBC010097C9F18091A2 -:100C2000E800877F8093E80089819A812BDD80919D -:100C3000E8008B778093E8002BC0803841F58091E5 -:100C4000E800877F8093E800809125028093F1007F -:100C50008091E8008E778093E8006DDC19C08823CE -:100C6000B1F490912902923098F48091E800877F46 -:100C70008093E800909325025EDC80912502882312 -:100C800011F483E001C084E08EBB2DDB01C028DBC2 -:100C90008091E80083FF0AC08091EB00806280931E -:100CA000EB008091E800877F8093E800AC960FB658 -:100CB000F894DEBF0FBECDBFCF91DF911F91089595 -:100CC00008951F938EB3882361F01091E90010926C -:100CD000E9008091E80083FF01C098DE177010934F -:100CE000E9001F9108950895FC018EB3843021F529 -:100CF00087859089A189B2890097A105B105E1F0A6 -:100D000085818093E9008091E80082FF15C0809181 -:100D1000F200882319F42FEF3FEF04C08091F10017 -:100D2000282F30E08091F200882341F48091E80080 -:100D30008B778093E80002C02FEF3FEFC901089541 -:100D4000FC018EB3843011F587859089A189B28921 -:100D50000097A105B105D1F081818093E9008091D0 -:100D6000F2008823A9F09091E8008091E8008E7746 -:100D70008093E80095FD0CC0FDDB982F882349F493 -:100D80008091E8008E778093E80003C092E001C074 -:100D900090E0892F0895FC018EB3843051F487854B -:100DA0009089A189B2890097A105B10511F0CF0101 -:100DB000C7CF08951F93FC01162F8EB38430D9F44A -:100DC00087859089A189B2890097A105B10599F01D -:100DD00081818093E9008091E80085FD08C08091C1 -:100DE000E8008E778093E800C5DB882329F4109310 -:100DF000F10080E001C082E01F9108950F931F93DE -:100E0000CF93DF93EC010D96FC0189E0DF011D9289 -:100E10008A95E9F72A813B8109818C81882311F425 -:100E200010E001C014E0C90151DB182B1260802FC3 -:100E300061E8412F59DB882329F12E813F810D8103 -:100E40008885882311F410E001C014E0C9013EDB5D -:100E5000182B1260802F60E8412F46DB882391F029 -:100E60002A853B8509858C85882311F410E001C013 -:100E700014E0C9012BDB182B1260802F61EC412F8D -:100E800033DB01C080E0DF91CF911F910F91089576 -:100E9000CF93DF93EC018091E80083FF60C08881ED -:100EA00090E020912B0230912C022817390709F08D -:100EB00056C080912802813261F0823220F4803263 -:100EC00009F04DC019C0823269F1833209F047C080 -:100ED00038C080912702813A09F041C08091E80032 -:100EE000877F8093E800CE010F9667E070E071DBAA -:100EF0008091E8008B7713C080912702813279F5C9 -:100F00008091E800877F8093E800CE010F9667E02C -:100F100070E013DCCE013ED98091E8008E7780939B -:100F2000E8001DC0809127028132C9F48091E80059 -:100F3000877F8093E800809129028D87CE01C8D9F0 -:100F40000DC080912702813251F48091E800877FA3 -:100F50008093E800CE0160912902C5DEECDADF91D2 -:100F6000CF910895A1E21A2EAA1BBB1BFD010DC053 -:100F7000AA1FBB1FEE1FFF1FA217B307E407F50749 -:100F800020F0A21BB30BE40BF50B661F771F881F25 -:100F9000991F1A9469F760957095809590959B01BB -:0C0FA000AC01BD01CF010895F894FFCF13 -:100FAC0000034000000440000002080000000000A4 -:060FBC000000000000002F -:00000001FF diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-mega.hex b/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-mega.hex deleted file mode 100644 index fbbeb07..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-mega.hex +++ /dev/null @@ -1,256 +0,0 @@ -:10000000A2C00000BBC00000B9C00000B7C0000023 -:10001000B5C00000B3C00000B1C00000AFC0000018 -:10002000ADC00000ABC00000A9C000005AC4000071 -:100030001EC40000A3C00000A1C000009FC00000BB -:100040009DC000009BC0000099C0000097C0000048 -:1000500095C0000093C0000091C0000014C10000D2 -:100060008DC000008BC0000089C0000087C0000068 -:1000700085C0000083C0000081C000007FC0000078 -:100080007DC000007BC0000079C0000077C0000088 -:1000900075C0000073C000001201100102000008CA -:1000A0004123100001000102DC0109023E000201AF -:1000B00000C0320904000001020201000524000111 -:1000C0001004240206052406000107058203080027 -:1000D000FF09040100020A000000070504024000B5 -:1000E00001070583024000010403090432034100B3 -:1000F00072006400750069006E006F002000280027 -:100100007700770077002E006100720064007500B0 -:1001100069006E006F002E0063006300290000007C -:100120002403410072006400750069006E006F00D6 -:1001300020004D006500670061002000320035009E -:1001400036003000000011241FBECFEFD2E0DEBF2A -:10015000CDBF11E0A0E0B1E0E0EDFFE002C005900E -:100160000D92A631B107D9F712E0A6E1B1E001C0C6 -:100170001D92AF32B107E1F7F1D028C741CF9C0102 -:10018000DC01AE57BF4FED91FC9111974191119653 -:10019000FC93EE9380589F4FE817F90711F42D93C5 -:1001A0003C939FB7F894F901EC57FF4F8081815041 -:1001B00080839FBF842F0895DF92EF92FF920F9369 -:1001C0001F93FC018489813019F0823021F405C02D -:1001D00040E3D42E04C0DD2402C030E2D32E838954 -:1001E000823011F488E0D82A8589873031F0883050 -:1001F00031F0863031F482E003C084E001C086E053 -:10020000D82A1092C9001092C8001092CA00E78440 -:10021000F0880189128980E0E81681EEF80680E016 -:10022000080780E0180719F420E130E00FC0C8018A -:10023000B701969587957795679560587B47814E6E -:100240009F4FA8019701A0D6215030403093CD0098 -:100250002093CC00D092CA0080E0E81681EEF80628 -:1002600080E0080780E0180711F082E001C080E01C -:100270008093C80088E98093C9001F910F91FF9077 -:10028000EF90DF9008951F920F920FB60F921124F6 -:100290002F938F939F93EF93FF939091CE008EB304 -:1002A0008430F1F4E0919901F0919A019083E0910A -:1002B0009901F0919A01CF01019690939A01809350 -:1002C00099018959914021F489E191E092838183D8 -:1002D0009FB7F89480919D018F5F80939D019FBF90 -:1002E000FF91EF919F918F912F910F900FBE0F90E3 -:1002F0001F901895FC01858580FF02C05F980895C6 -:100300005F9A089580E091E0D5C580E091E088C5CE -:1003100084B7877F84BF28E10FB6F89420936000EC -:10032000109260000FBE87E690E09093CD0080931E -:10033000CC0086E08093CA001092C8002093C900C8 -:10034000539A5A9A8AB180638AB98BB180638BB908 -:1003500083D284E085BD5F9A579A08950F931F93C7 -:10036000CF93DF93D5DF2FB7F8948EE991E0909388 -:100370001F0280931E0290932102809320022FBFC0 -:100380002FB7F89489E191E090939A0180939901B5 -:1003900090939C0180939B012FBF7894CEE9D1E08C -:1003A00003E08FB7F894909122028FBF903809F143 -:1003B00080E091E0ABD497FD1CC0E0911E02F0916B -:1003C0001F028083E0911E02F0911F02CF0101966F -:1003D00090931F0280931E028E51924011F4D2839B -:1003E000C1839FB7F894809122028F5F809322028D -:1003F0009FBF8FB7F89410919D018FBFA89902C03D -:10040000113678F1A89A80919D01882361F05D985A -:100410000093160108C089E191E0B1DE682F80E009 -:1004200091E0DAD411501123B1F78091160188239D -:1004300051F0809116018150809316018091160130 -:10044000882309F45D9A80911701882351F08091E7 -:10045000170181508093170180911701882309F4B7 -:100460005C9A8FB7F894909122028FBF992369F01C -:100470008EE991E084DE982F8091C80085FFFCCF43 -:100480009093CE005C980093170180E091E095D4A2 -:100490002AD487CFDA01923049F0933061F091305D -:1004A000F9F4E8E9F0E022E130E01EC0EAEAF0E029 -:1004B0002EE330E019C0813049F0813018F08230ED -:1004C00079F408C0E8EEF0E0849107C0ECEEF0E0CB -:1004D000849103C0E0E2F1E08491282F30E004C071 -:1004E000E0E0F0E020E030E0ED93FC93C9010895F6 -:1004F00028E030E040E003C04F5F220F331F281791 -:100500003907D0F3842F8295807F08958093E90086 -:100510008091EB0081608093EB001092ED0060937E -:10052000EC004093ED008091EE00881F8827881F23 -:1005300008951092F40090E09093E9001092F0007A -:100540001092E8001092ED008091EB008E7F809376 -:10055000EB009F5F953081F70895809127028823F3 -:100560008CF403C08EB38823B1F08091E80082FF41 -:10057000F9CF8091E8008B778093E80008958EB3DF -:10058000882349F08091E80080FFF9CF8091E8004E -:100590008E778093E800089594E68091EC0080FFC8 -:1005A00005C08091E80080FF05C023C08091E8006D -:1005B00082FD1FC08EB3882311F482E008958EB3AC -:1005C000853011F483E008958091EB0085FF02C02F -:1005D00081E008958091E10082FFDFCF8091E1000A -:1005E0008B7F8093E100992311F484E0089591506A -:1005F000D4CF80E008959C0140912D0250912E02AD -:100600004617570718F4F90120E038C06115710545 -:1006100011F0AB01F8CF8091E8008E778093E8006D -:1006200040E050E0F0CF8091E80083FF02C081E01D -:1006300008958091E80082FD2DC08EB3882381F15A -:100640008EB3853079F18091E80080FF17C09091DA -:10065000F20006C081918093F100415050409F5FAD -:100660004115510511F09830A8F320E0983009F4B5 -:1006700021E08091E8008E778093E80041155105D4 -:1006800091F6222381F606C08EB3882349F08EB3FB -:10069000853041F08091E80082FFF6CF80E0089538 -:1006A00082E0089583E008959C0140912D025091CD -:1006B0002E024617570710F490E03BC061157105F4 -:1006C00011F0AB01F9CF8091E8008E778093E800BC -:1006D00040E050E0F1CF8091E80083FF02C081E06C -:1006E00008958091E80082FD30C08EB3882399F18F -:1006F0008EB3853091F18091E80080FF1AC080911F -:10070000F20009C0F9012F5F3F4FE491E093F1003F -:10071000415050408F5F4115510511F0883090F3E2 -:1007200090E0883009F491E08091E8008E77809322 -:10073000E8004115510579F6992369F606C08EB394 -:10074000882349F08EB3853041F08091E80082FF24 -:10075000F6CF80E0089582E0089583E008959C013B -:100760006115710529F48091E8008B778093E8008A -:10077000F90120C08091E80083FF02C081E0089564 -:100780008EB3882339F18EB3853031F18091E80042 -:1007900082FFF0CF06C08091F100819361507040DC -:1007A00021F08091F2008823B1F78091E8008B77E7 -:1007B0008093E80061157105E9F606C08EB38823C1 -:1007C00049F08EB3853041F08091E80080FFF6CF8C -:1007D00080E0089582E0089583E0089542D044D0F7 -:1007E0001EBA10922502109224021092230284E075 -:1007F00089BD89B5826089BD09B400FEFDCF8091B5 -:10080000D800982F9F779093D80080688093D80065 -:10081000809163008E7F809363008091D8008F7DEC -:100820008093D8008091E0008E7F8093E0008091DB -:10083000E1008E7F8093E1008091E20081608093EF -:10084000E2008091E100877F8093E1008091E200E7 -:1008500088608093E2000895C1DF81E080932602E2 -:1008600008951092E20008951092E10008951F92F9 -:100870000F920FB60F9211241F932F933F934F9314 -:100880005F936F937F938F939F93AF93BF93EF93F8 -:10089000FF93E9EEF0E0108117701082E0EFF0E0D6 -:1008A0008081877F80837894C3D0F894A9EEB0E0EC -:1008B0001C92E0EFF0E08081886080831C93FF91C0 -:1008C000EF91BF91AF919F918F917F916F915F91C8 -:1008D0004F913F912F911F910F900FBE0F901F903E -:1008E00018951F920F920FB60F9211242F933F93DA -:1008F0004F935F936F937F938F939F93AF93BF9328 -:10090000EF93FF938091E10080FF1BC08091E20094 -:1009100080FF17C08091E1008E7F8093E10080917D -:10092000E2008E7F8093E2008091E20080618093FC -:10093000E2008091D80080628093D80019BC1EBA72 -:10094000D1D18091E10084FF29C08091E20084FF31 -:1009500025C084E089BD89B5826089BD09B400FEE7 -:10096000FDCF8091D8008F7D8093D8008091E100E9 -:100970008F7E8093E1008091E2008F7E8093E20081 -:100980008091E20081608093E200809125028823BB -:1009900011F481E001C084E08EBBA4D18091E1001C -:1009A00083FF27C08091E20083FF23C08091E10094 -:1009B000877F8093E10082E08EBB109225028091B8 -:1009C000E1008E7F8093E1008091E2008E7F809332 -:1009D000E2008091E20080618093E200AADD80E085 -:1009E00060E042E093DD8091F00088608093F00049 -:1009F00079D18091E10082FF0AC08091E20082FFFC -:100A000006C08091E1008B7F8093E1006BD1FF9164 -:100A1000EF91BF91AF919F918F917F916F915F9176 -:100A20004F913F912F910F900FBE0F901F901895EF -:100A30001F93DF93CF93CDB7DEB7AC970FB6F89483 -:100A4000DEBF0FBECDBFE7E2F2E08091F1008193FF -:100A500022E0EF32F207C9F7809127023091280295 -:100A6000353009F487C0363040F43130C9F13130C7 -:100A700070F0333009F01DC133C0383009F4EFC0D5 -:100A8000393009F4FEC0363009F013C192C0803805 -:100A900021F0823809F00DC108C0909123028091A5 -:100AA0002402882399F0926011C080912B028770F4 -:100AB0008093E9008091EB0090E025E09695879582 -:100AC0002A95E1F7982F91701092E9008091E80043 -:100AD000877F8093E8009093F1001092F100CAC0E4 -:100AE000882319F0823009F0E4C090E08F71907093 -:100AF000009721F0029709F0DDC00CC08091290217 -:100B0000813009F0D7C010922402333069F5809308 -:100B100024022AC080912902882331F520912B02DA -:100B2000277009F4C7C02093E9008091EB0080FF93 -:100B3000C1C0333021F48091EB00806213C08091FA -:100B4000EB0080618093EB0081E090E002C0880FB1 -:100B5000991F2A95E2F78093EA001092EA008091AB -:100B6000EB0088608093EB001092E9008091E80030 -:100B7000877F83C0882309F09CC01091290280914F -:100B8000E800877F8093E800E8DC04C08EB3882308 -:100B900009F490C08091E80080FFF8CF812F8F7713 -:100BA00011F492E001C093E09EBB80688093E30063 -:100BB00081C08058823008F07CC0809129029091D9 -:100BC0002A0223E08C3D920799F55FB7F894DE0185 -:100BD00015964EE020E030E061E2E42FF0E0609313 -:100BE0005700849120FF03C082958F704F5F982F2C -:100BF0009F70892F805D8A3308F0895F8C931196EE -:100C00001C9211972F5F3F4F12962431310529F71F -:100C10005FBF8AE28B8383E08C838091E800877FCB -:100C20008093E800CE0103966AE270E0E4DC11C034 -:100C300060912B02AE014F5F5F4F2CDCBC0100972F -:100C4000C9F18091E800877F8093E80089819A81CB -:100C50002BDD8091E8008B778093E8002BC08038F3 -:100C600041F58091E800877F8093E800809125021C -:100C70008093F1008091E8008E778093E8006DDC2E -:100C800019C08823B1F490912902923098F4809190 -:100C9000E800877F8093E800909325025EDC8091D6 -:100CA0002502882311F483E001C084E08EBB2DDB94 -:100CB00001C028DB8091E80083FF0AC08091EB002F -:100CC00080628093EB008091E800877F8093E8004A -:100CD000AC960FB6F894DEBF0FBECDBFCF91DF91BB -:100CE0001F91089508951F938EB3882361F010918A -:100CF000E9001092E9008091E80083FF01C098DECE -:100D000017701093E9001F9108950895FC018EB3A8 -:100D1000843021F587859089A189B2890097A10542 -:100D2000B105E1F085818093E9008091E80082FFC0 -:100D300015C08091F200882319F42FEF3FEF04C013 -:100D40008091F100282F30E08091F200882341F457 -:100D50008091E8008B778093E80002C02FEF3FEF8F -:100D6000C9010895FC018EB3843011F587859089FF -:100D7000A189B2890097A105B105D1F08181809345 -:100D8000E9008091F2008823A9F09091E800809119 -:100D9000E8008E778093E80095FD0CC0FDDB982F6E -:100DA000882349F48091E8008E778093E80003C09F -:100DB00092E001C090E0892F0895FC018EB3843049 -:100DC00051F487859089A189B2890097A105B10561 -:100DD00011F0CF01C7CF08951F93FC01162F8EB3DA -:100DE0008430D9F487859089A189B2890097A105BB -:100DF000B10599F081818093E9008091E80085FD3B -:100E000008C08091E8008E778093E800C5DB8823D6 -:100E100029F41093F10080E001C082E01F91089551 -:100E20000F931F93CF93DF93EC010D96FC0189E0A4 -:100E3000DF011D928A95E9F72A813B8109818C8126 -:100E4000882311F410E001C014E0C90151DB182B14 -:100E50001260802F61E8412F59DB882329F12E8110 -:100E60003F810D818885882311F410E001C014E0D2 -:100E7000C9013EDB182B1260802F60E8412F46DB52 -:100E8000882391F02A853B8509858C85882311F478 -:100E900010E001C014E0C9012BDB182B1260802F79 -:100EA00061EC412F33DB01C080E0DF91CF911F91D6 -:100EB0000F910895CF93DF93EC018091E80083FFB9 -:100EC00060C0888190E020912B0230912C0228177D -:100ED000390709F056C080912802813261F08232D0 -:100EE00020F4803209F04DC019C0823269F183329A -:100EF00009F047C038C080912702813A09F041C00B -:100F00008091E800877F8093E800CE010F9667E02C -:100F100070E071DB8091E8008B7713C0809127022D -:100F2000813279F58091E800877F8093E800CE01D7 -:100F30000F9667E070E013DCCE013ED98091E800A7 -:100F40008E778093E8001DC0809127028132C9F41A -:100F50008091E800877F8093E800809129028D8747 -:100F6000CE01C8D90DC080912702813251F4809101 -:100F7000E800877F8093E800CE0160912902C5DEFA -:100F8000ECDADF91CF910895A1E21A2EAA1BBB1BC8 -:100F9000FD010DC0AA1FBB1FEE1FFF1FA217B30745 -:100FA000E407F50720F0A21BB30BE40BF50B661F5B -:100FB000771F881F991F1A9469F76095709580951F -:100FC00090959B01AC01BD01CF010895F894FFCF2E -:100FD0000003400000044000000208000000000080 -:060FE0000000000000000B -:00000001FF diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex b/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex deleted file mode 100644 index ca51dfa..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex +++ /dev/null @@ -1,256 +0,0 @@ -:100000009CC00000B5C00000B3C00000B1C000003B -:10001000AFC00000ADC00000ABC00000A9C0000030 -:10002000A7C00000A5C00000A3C0000054C4000089 -:1000300018C400009DC000009BC0000099C00000D3 -:1000400097C0000095C0000093C0000091C0000060 -:100050008FC000008DC000008BC000000EC10000EA -:1000600087C0000085C0000083C0000081C0000080 -:100070007FC000007DC000007BC0000079C0000090 -:1000800077C0000075C0000073C0000071C00000A0 -:100090006FC000006DC000001201100102000008D6 -:1000A0004123010001000102DC0109023E000201BE -:1000B00000C0320904000001020201000524000111 -:1000C0001004240206052406000107058203080027 -:1000D000FF09040100020A000000070504024000B5 -:1000E00001070583024000010403090432034100B3 -:1000F00072006400750069006E006F002000280027 -:100100007700770077002E006100720064007500B0 -:1001100069006E006F002E0063006300290000007C -:100120001803410072006400750069006E006F00E2 -:10013000200055006E006F00000011241FBECFEF9D -:10014000D2E0DEBFCDBF11E0A0E0B1E0E4ECFFE023 -:1001500002C005900D92A631B107D9F712E0A6E1D1 -:10016000B1E001C01D92AF32B107E1F7F1D028C76D -:1001700047CF9C01DC01AE57BF4FED91FC91119729 -:1001800041911196FC93EE9380589F4FE817F90721 -:1001900011F42D933C939FB7F894F901EC57FF4F5E -:1001A0008081815080839FBF842F0895DF92EF92DA -:1001B000FF920F931F93FC018489813019F08230E4 -:1001C00021F405C040E3D42E04C0DD2402C030E297 -:1001D000D32E8389823011F488E0D82A858987302C -:1001E00031F0883031F0863031F482E003C084E0B1 -:1001F00001C086E0D82A1092C9001092C80010925F -:10020000CA00E784F0880189128980E0E81681EE4F -:10021000F80680E0080780E0180719F420E130E0D4 -:100220000FC0C801B7019695879577956795605877 -:100230007B47814E9F4FA8019701A0D621503040A7 -:100240003093CD002093CC00D092CA0080E0E81615 -:1002500081EEF80680E0080780E0180711F082E0E0 -:1002600001C080E08093C80088E98093C9001F9195 -:100270000F91FF90EF90DF9008951F920F920FB6AD -:100280000F9211242F938F939F93EF93FF9390914D -:10029000CE008EB38430F1F4E0919901F0919A018F -:1002A0009083E0919901F0919A01CF01019690938A -:1002B0009A01809399018959914021F489E191E053 -:1002C000928381839FB7F89480919D018F5F809383 -:1002D0009D019FBFFF91EF919F918F912F910F9063 -:1002E0000FBE0F901F901895FC01858580FF02C0FE -:1002F0005F9808955F9A089580E091E0D5C580E009 -:1003000091E088C584B7877F84BF28E10FB6F89451 -:1003100020936000109260000FBE87E690E09093FB -:10032000CD008093CC0086E08093CA001092C80074 -:100330002093C900539A5A9A8AB180638AB98BB1C3 -:1003400080638BB983D284E085BD5F9A579A089504 -:100350000F931F93CF93DF93D5DF2FB7F8948EE9D8 -:1003600091E090931F0280931E029093210280934C -:1003700020022FBF2FB7F89489E191E090939A0162 -:100380008093990190939C0180939B012FBF789457 -:10039000CEE9D1E003E08FB7F894909122028FBFAD -:1003A000903809F180E091E0ABD497FD1CC0E0915A -:1003B0001E02F0911F028083E0911E02F0911F0245 -:1003C000CF01019690931F0280931E028E5192409E -:1003D00011F4D283C1839FB7F894809122028F5F7A -:1003E000809322029FBF8FB7F89410919D018FBF19 -:1003F000A89902C0113678F1A89A80919D018823AE -:1004000061F05D980093160108C089E191E0B1DECA -:10041000682F80E091E0DAD411501123B1F7809178 -:100420001601882351F080911601815080931601A6 -:1004300080911601882309F45D9A80911701882321 -:1004400051F080911701815080931701809117011D -:10045000882309F45C9A8FB7F894909122028FBF99 -:10046000992369F08EE991E084DE982F8091C8008D -:1004700085FFFCCF9093CE005C980093170180E03D -:1004800091E095D42AD487CFDA01923049F09330A5 -:1004900061F09130F9F4E8E9F0E022E130E01EC0CB -:1004A000EAEAF0E02EE330E019C0813049F0813013 -:1004B00018F0823079F408C0E8EEF0E0849107C0CB -:1004C000ECEEF0E0849103C0E0E2F1E08491282FAB -:1004D00030E004C0E0E0F0E020E030E0ED93FC9399 -:1004E000C901089528E030E040E003C04F5F220FCB -:1004F000331F28173907D0F3842F8295807F089502 -:100500008093E9008091EB0081608093EB00109272 -:10051000ED006093EC004093ED008091EE00881FA9 -:100520008827881F08951092F40090E09093E900C6 -:100530001092F0001092E8001092ED008091EB0014 -:100540008E7F8093EB009F5F953081F708958091B7 -:10055000270288238CF403C08EB38823B1F08091E6 -:10056000E80082FFF9CF8091E8008B778093E80064 -:1005700008958EB3882349F08091E80080FFF9CF79 -:100580008091E8008E778093E800089594E680914A -:10059000EC0080FF05C08091E80080FF05C023C00B -:1005A0008091E80082FD1FC08EB3882311F482E0A1 -:1005B00008958EB3853011F483E008958091EB00A7 -:1005C00085FF02C081E008958091E10082FFDFCFC6 -:1005D0008091E1008B7F8093E100992311F484E006 -:1005E00008959150D4CF80E008959C0140912D0250 -:1005F00050912E024617570718F4F90120E038C031 -:100600006115710511F0AB01F8CF8091E8008E778C -:100610008093E80040E050E0F0CF8091E80083FF55 -:1006200002C081E008958091E80082FD2DC08EB364 -:10063000882381F18EB3853079F18091E80080FFC5 -:1006400017C09091F20006C081918093F100415053 -:1006500050409F5F4115510511F09830A8F320E0FC -:10066000983009F421E08091E8008E778093E800CB -:100670004115510591F6222381F606C08EB38823D9 -:1006800049F08EB3853041F08091E80082FFF6CFCB -:1006900080E0089582E0089583E008959C014091F0 -:1006A0002D0250912E024617570710F490E03BC0E0 -:1006B0006115710511F0AB01F9CF8091E8008E77DB -:1006C0008093E80040E050E0F1CF8091E80083FFA4 -:1006D00002C081E008958091E80082FD30C08EB3B1 -:1006E000882399F18EB3853091F18091E80080FFE5 -:1006F0001AC08091F20009C0F9012F5F3F4FE491C9 -:10070000E093F100415050408F5F4115510511F0C9 -:10071000883090F390E0883009F491E08091E8000F -:100720008E778093E8004115510579F6992369F693 -:1007300006C08EB3882349F08EB3853041F0809196 -:10074000E80082FFF6CF80E0089582E0089583E01C -:1007500008959C016115710529F48091E8008B775B -:100760008093E800F90120C08091E80083FF02C077 -:1007700081E008958EB3882339F18EB3853031F14D -:100780008091E80082FFF0CF06C08091F100819354 -:100790006150704021F08091F2008823B1F7809180 -:1007A000E8008B778093E80061157105E9F606C0D3 -:1007B0008EB3882349F08EB3853041F08091E800F4 -:1007C00080FFF6CF80E0089582E0089583E00895E9 -:1007D00042D044D01EBA10922502109224021092E8 -:1007E000230284E089BD89B5826089BD09B400FE19 -:1007F000FDCF8091D800982F9F779093D800806884 -:100800008093D800809163008E7F809363008091F5 -:10081000D8008F7D8093D8008091E0008E7F8093F8 -:10082000E0008091E1008E7F8093E1008091E20002 -:1008300081608093E2008091E100877F8093E100F6 -:100840008091E20088608093E2000895C1DF81E03A -:100850008093260208951092E20008951092E1001C -:1008600008951F920F920FB60F9211241F932F938A -:100870003F934F935F936F937F938F939F93AF9328 -:10088000BF93EF93FF93E9EEF0E0108117701082B1 -:10089000E0EFF0E08081877F80837894C3D0F89484 -:1008A000A9EEB0E01C92E0EFF0E0808188608083E8 -:1008B0001C93FF91EF91BF91AF919F918F917F9189 -:1008C0006F915F914F913F912F911F910F900FBEAC -:1008D0000F901F9018951F920F920FB60F92112430 -:1008E0002F933F934F935F936F937F938F939F9338 -:1008F000AF93BF93EF93FF938091E10080FF1BC004 -:100900008091E20080FF17C08091E1008E7F80938C -:10091000E1008091E2008E7F8093E2008091E2000E -:1009200080618093E2008091D80080628093D8003B -:1009300019BC1EBAD1D18091E10084FF29C08091F9 -:10094000E20084FF25C084E089BD89B5826089BD4D -:1009500009B400FEFDCF8091D8008F7D8093D80030 -:100960008091E1008F7E8093E1008091E2008F7E94 -:100970008093E2008091E20081608093E2008091A8 -:100980002502882311F481E001C084E08EBBA4D14C -:100990008091E10083FF27C08091E20083FF23C0A4 -:1009A0008091E100877F8093E10082E08EBB10920E -:1009B00025028091E1008E7F8093E1008091E2002A -:1009C0008E7F8093E2008091E20080618093E2005C -:1009D000AADD80E060E042E093DD8091F000886075 -:1009E0008093F00079D18091E10082FF0AC080916C -:1009F000E20082FF06C08091E1008B7F8093E100DE -:100A00006BD1FF91EF91BF91AF919F918F917F91AA -:100A10006F915F914F913F912F910F900FBE0F906B -:100A20001F9018951F93DF93CF93CDB7DEB7AC9788 -:100A30000FB6F894DEBF0FBECDBFE7E2F2E08091C3 -:100A4000F100819322E0EF32F207C9F7809127028B -:100A500030912802353009F487C0363040F4313007 -:100A6000C9F1313070F0333009F01DC133C0383076 -:100A700009F4EFC0393009F4FEC0363009F013C173 -:100A800092C0803821F0823809F00DC108C09091E1 -:100A9000230280912402882399F0926011C08091F2 -:100AA0002B0287708093E9008091EB0090E025E0B5 -:100AB000969587952A95E1F7982F91701092E90005 -:100AC0008091E800877F8093E8009093F100109276 -:100AD000F100CAC0882319F0823009F0E4C090E028 -:100AE0008F719070009721F0029709F0DDC00CC063 -:100AF00080912902813009F0D7C01092240233304E -:100B000069F5809324022AC080912902882331F557 -:100B100020912B02277009F4C7C02093E90080912F -:100B2000EB0080FFC1C0333021F48091EB00806284 -:100B300013C08091EB0080618093EB0081E090E036 -:100B400002C0880F991F2A95E2F78093EA0010925D -:100B5000EA008091EB0088608093EB001092E9003E -:100B60008091E800877F83C0882309F09CC01091A2 -:100B700029028091E800877F8093E800E8DC04C0C8 -:100B80008EB3882309F490C08091E80080FFF8CFED -:100B9000812F8F7711F492E001C093E09EBB8068B3 -:100BA0008093E30081C08058823008F07CC080913F -:100BB000290290912A0223E08C3D920799F55FB7B4 -:100BC000F894DE0115964EE020E030E061E2E42F7B -:100BD000F0E060935700849120FF03C082958F70EE -:100BE0004F5F982F9F70892F805D8A3308F0895F4F -:100BF0008C9311961C9211972F5F3F4F12962431C0 -:100C0000310529F75FBF8AE28B8383E08C83809173 -:100C1000E800877F8093E800CE0103966AE270E0E7 -:100C2000E4DC11C060912B02AE014F5F5F4F2CDC02 -:100C3000BC010097C9F18091E800877F8093E800AC -:100C400089819A812BDD8091E8008B778093E80081 -:100C50002BC0803841F58091E800877F8093E800C1 -:100C6000809125028093F1008091E8008E77809337 -:100C7000E8006DDC19C08823B1F49091290292300C -:100C800098F48091E800877F8093E8009093250294 -:100C90005EDC80912502882311F483E001C084E0AA -:100CA0008EBB2DDB01C028DB8091E80083FF0AC0EA -:100CB0008091EB0080628093EB008091E800877F59 -:100CC0008093E800AC960FB6F894DEBF0FBECDBFA0 -:100CD000CF91DF911F91089508951F938EB38823BC -:100CE00061F01091E9001092E9008091E80083FF23 -:100CF00001C098DE17701093E9001F9108950895C0 -:100D0000FC018EB3843021F587859089A189B28951 -:100D10000097A105B105E1F085818093E9008091FC -:100D2000E80082FF15C08091F200882319F42FEFAC -:100D30003FEF04C08091F100282F30E08091F20055 -:100D4000882341F48091E8008B778093E80002C00B -:100D50002FEF3FEFC9010895FC018EB3843011F5E8 -:100D600087859089A189B2890097A105B105D1F045 -:100D700081818093E9008091F2008823A9F090910D -:100D8000E8008091E8008E778093E80095FD0CC024 -:100D9000FDDB982F882349F48091E8008E778093BB -:100DA000E80003C092E001C090E0892F0895FC01A3 -:100DB0008EB3843051F487859089A189B2890097D8 -:100DC000A105B10511F0CF01C7CF08951F93FC0114 -:100DD000162F8EB38430D9F487859089A189B28982 -:100DE0000097A105B10599F081818093E900809178 -:100DF000E80085FD08C08091E8008E778093E800C8 -:100E0000C5DB882329F41093F10080E001C082E063 -:100E10001F9108950F931F93CF93DF93EC010D96CD -:100E2000FC0189E0DF011D928A95E9F72A813B8167 -:100E300009818C81882311F410E001C014E0C901FC -:100E400051DB182B1260802F61E8412F59DB88237A -:100E500029F12E813F810D818885882311F410E0CE -:100E600001C014E0C9013EDB182B1260802F60E83E -:100E7000412F46DB882391F02A853B8509858C85A7 -:100E8000882311F410E001C014E0C9012BDB182BFA -:100E90001260802F61EC412F33DB01C080E0DF91D5 -:100EA000CF911F910F910895CF93DF93EC01809123 -:100EB000E80083FF60C0888190E020912B02309190 -:100EC0002C022817390709F056C080912802813278 -:100ED00061F0823220F4803209F04DC019C08232B4 -:100EE00069F1833209F047C038C080912702813A06 -:100EF00009F041C08091E800877F8093E800CE012F -:100F00000F9667E070E071DB8091E8008B7713C08B -:100F100080912702813279F58091E800877F809364 -:100F2000E800CE010F9667E070E013DCCE013ED9F9 -:100F30008091E8008E778093E8001DC080912702A1 -:100F40008132C9F48091E800877F8093E800809126 -:100F500029028D87CE01C8D90DC080912702813228 -:100F600051F48091E800877F8093E800CE01609182 -:100F70002902C5DEECDADF91CF910895A1E21A2EA5 -:100F8000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F2D -:100F9000A217B307E407F50720F0A21BB30BE40B7D -:100FA000F50B661F771F881F991F1A9469F76095C4 -:100FB0007095809590959B01AC01BD01CF0108957E -:040FC000F894FFCFD3 -:100FC400000340000004400000020800000000008C -:060FD40000000000000017 -:00000001FF diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.c b/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.c deleted file mode 100644 index 4de73c8..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.c +++ /dev/null @@ -1,242 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Main source file for the Arduino-usbserial project. This file contains the main tasks of - * the project and is responsible for the initial application hardware configuration. - */ - -#include "Arduino-usbserial.h" - -/** Circular buffer to hold data from the host before it is sent to the device via the serial port. */ -RingBuff_t USBtoUSART_Buffer; - -/** Circular buffer to hold data from the serial port before it is sent to the host. */ -RingBuff_t USARTtoUSB_Buffer; - -/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ -volatile struct -{ - uint8_t TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ - uint8_t RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ - uint8_t PingPongLEDPulse; /**< Milliseconds remaining for enumeration Tx/Rx ping-pong LED pulse */ -} PulseMSRemaining; - -/** LUFA CDC Class driver interface configuration and state information. This structure is - * passed to all CDC Class driver functions, so that multiple instances of the same class - * within a device can be differentiated from one another. - */ -USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface = - { - .Config = - { - .ControlInterfaceNumber = 0, - - .DataINEndpointNumber = CDC_TX_EPNUM, - .DataINEndpointSize = CDC_TXRX_EPSIZE, - .DataINEndpointDoubleBank = false, - - .DataOUTEndpointNumber = CDC_RX_EPNUM, - .DataOUTEndpointSize = CDC_TXRX_EPSIZE, - .DataOUTEndpointDoubleBank = false, - - .NotificationEndpointNumber = CDC_NOTIFICATION_EPNUM, - .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE, - .NotificationEndpointDoubleBank = false, - }, - }; - -/** Main program entry point. This routine contains the overall program flow, including initial - * setup of all components and the main program loop. - */ -int main(void) -{ - SetupHardware(); - - RingBuffer_InitBuffer(&USBtoUSART_Buffer); - RingBuffer_InitBuffer(&USARTtoUSB_Buffer); - - sei(); - - for (;;) - { - /* Only try to read in bytes from the CDC interface if the transmit buffer is not full */ - if (!(RingBuffer_IsFull(&USBtoUSART_Buffer))) - { - int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface); - - /* Read bytes from the USB OUT endpoint into the USART transmit buffer */ - if (!(ReceivedByte < 0)) - RingBuffer_Insert(&USBtoUSART_Buffer, ReceivedByte); - } - - /* Check if the UART receive buffer flush timer has expired or the buffer is nearly full */ - RingBuff_Count_t BufferCount = RingBuffer_GetCount(&USARTtoUSB_Buffer); - if ((TIFR0 & (1 << TOV0)) || (BufferCount > BUFFER_NEARLY_FULL)) - { - TIFR0 |= (1 << TOV0); - - if (USARTtoUSB_Buffer.Count) { - LEDs_TurnOnLEDs(LEDMASK_TX); - PulseMSRemaining.TxLEDPulse = TX_RX_LED_PULSE_MS; - } - - /* Read bytes from the USART receive buffer into the USB IN endpoint */ - while (BufferCount--) - CDC_Device_SendByte(&VirtualSerial_CDC_Interface, RingBuffer_Remove(&USARTtoUSB_Buffer)); - - /* Turn off TX LED(s) once the TX pulse period has elapsed */ - if (PulseMSRemaining.TxLEDPulse && !(--PulseMSRemaining.TxLEDPulse)) - LEDs_TurnOffLEDs(LEDMASK_TX); - - /* Turn off RX LED(s) once the RX pulse period has elapsed */ - if (PulseMSRemaining.RxLEDPulse && !(--PulseMSRemaining.RxLEDPulse)) - LEDs_TurnOffLEDs(LEDMASK_RX); - } - - /* Load the next byte from the USART transmit buffer into the USART */ - if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer))) { - Serial_TxByte(RingBuffer_Remove(&USBtoUSART_Buffer)); - - LEDs_TurnOnLEDs(LEDMASK_RX); - PulseMSRemaining.RxLEDPulse = TX_RX_LED_PULSE_MS; - } - - CDC_Device_USBTask(&VirtualSerial_CDC_Interface); - USB_USBTask(); - } -} - -/** Configures the board hardware and chip peripherals for the demo's functionality. */ -void SetupHardware(void) -{ - /* Disable watchdog if enabled by bootloader/fuses */ - MCUSR &= ~(1 << WDRF); - wdt_disable(); - - /* Hardware Initialization */ - Serial_Init(9600, false); - LEDs_Init(); - USB_Init(); - - /* Start the flush timer so that overflows occur rapidly to push received bytes to the USB interface */ - TCCR0B = (1 << CS02); - - /* Pull target /RESET line high */ - AVR_RESET_LINE_PORT |= AVR_RESET_LINE_MASK; - AVR_RESET_LINE_DDR |= AVR_RESET_LINE_MASK; -} - -/** Event handler for the library USB Configuration Changed event. */ -void EVENT_USB_Device_ConfigurationChanged(void) -{ - CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface); -} - -/** Event handler for the library USB Unhandled Control Request event. */ -void EVENT_USB_Device_UnhandledControlRequest(void) -{ - CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface); -} - -/** Event handler for the CDC Class driver Line Encoding Changed event. - * - * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced - */ -void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - uint8_t ConfigMask = 0; - - switch (CDCInterfaceInfo->State.LineEncoding.ParityType) - { - case CDC_PARITY_Odd: - ConfigMask = ((1 << UPM11) | (1 << UPM10)); - break; - case CDC_PARITY_Even: - ConfigMask = (1 << UPM11); - break; - } - - if (CDCInterfaceInfo->State.LineEncoding.CharFormat == CDC_LINEENCODING_TwoStopBits) - ConfigMask |= (1 << USBS1); - - switch (CDCInterfaceInfo->State.LineEncoding.DataBits) - { - case 6: - ConfigMask |= (1 << UCSZ10); - break; - case 7: - ConfigMask |= (1 << UCSZ11); - break; - case 8: - ConfigMask |= ((1 << UCSZ11) | (1 << UCSZ10)); - break; - } - - /* Must turn off USART before reconfiguring it, otherwise incorrect operation may occur */ - UCSR1B = 0; - UCSR1A = 0; - UCSR1C = 0; - - /* Special case 57600 baud for compatibility with the ATmega328 bootloader. */ - UBRR1 = (CDCInterfaceInfo->State.LineEncoding.BaudRateBPS == 57600) - ? SERIAL_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS) - : SERIAL_2X_UBBRVAL(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS); - - UCSR1C = ConfigMask; - UCSR1A = (CDCInterfaceInfo->State.LineEncoding.BaudRateBPS == 57600) ? 0 : (1 << U2X1); - UCSR1B = ((1 << RXCIE1) | (1 << TXEN1) | (1 << RXEN1)); -} - -/** ISR to manage the reception of data from the serial port, placing received bytes into a circular buffer - * for later transmission to the host. - */ -ISR(USART1_RX_vect, ISR_BLOCK) -{ - uint8_t ReceivedByte = UDR1; - - if (USB_DeviceState == DEVICE_STATE_Configured) - RingBuffer_Insert(&USARTtoUSB_Buffer, ReceivedByte); -} - -/** Event handler for the CDC Class driver Host-to-Device Line Encoding Changed event. - * - * \param[in] CDCInterfaceInfo Pointer to the CDC class interface configuration structure being referenced - */ -void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - bool CurrentDTRState = (CDCInterfaceInfo->State.ControlLineStates.HostToDevice & CDC_CONTROL_LINE_OUT_DTR); - - if (CurrentDTRState) - AVR_RESET_LINE_PORT &= ~AVR_RESET_LINE_MASK; - else - AVR_RESET_LINE_PORT |= AVR_RESET_LINE_MASK; -} diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.h b/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.h deleted file mode 100644 index 99fde39..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for Arduino-usbserial.c. - */ - -#ifndef _ARDUINO_USBSERIAL_H_ -#define _ARDUINO_USBSERIAL_H_ - - /* Includes: */ - #include - #include - #include - #include - - #include "Descriptors.h" - - #include "Lib/LightweightRingBuff.h" - - #include - #include - #include - #include - #include - - /* Macros: */ - /** LED mask for the library LED driver, to indicate TX activity. */ - #define LEDMASK_TX LEDS_LED1 - - /** LED mask for the library LED driver, to indicate RX activity. */ - #define LEDMASK_RX LEDS_LED2 - - /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */ - #define LEDMASK_ERROR (LEDS_LED1 | LEDS_LED2) - - /** LED mask for the library LED driver, to indicate that the USB interface is busy. */ - #define LEDMASK_BUSY (LEDS_LED1 | LEDS_LED2) - - /* Function Prototypes: */ - void SetupHardware(void); - - void EVENT_USB_Device_Connect(void); - void EVENT_USB_Device_Disconnect(void); - void EVENT_USB_Device_ConfigurationChanged(void); - void EVENT_USB_Device_UnhandledControlRequest(void); - - void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo); - void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo); - -#endif /* _ARDUINO_USBSERIAL_H_ */ diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Board/LEDs.h b/firmwares/atmegaxxu2/arduino-usbserial/Board/LEDs.h deleted file mode 100644 index 152e8f5..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Board/LEDs.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/* - Board LEDs driver for the Benito board, from www.dorkbotpdx.org. -*/ - -#ifndef __LEDS_ARDUINOUNO_H__ -#define __LEDS_ARDUINOUNO_H__ - - /* Includes: */ - #include - -/* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(INCLUDE_FROM_LEDS_H) - #error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** LED mask for the first LED on the board. */ - #define LEDS_LED1 (1 << 5) - - /** LED mask for the second LED on the board. */ - #define LEDS_LED2 (1 << 4) - - /** LED mask for all the LEDs on the board. */ - #define LEDS_ALL_LEDS (LEDS_LED1 | LEDS_LED2) - - /** LED mask for the none of the board LEDs */ - #define LEDS_NO_LEDS 0 - - /* Inline Functions: */ - #if !defined(__DOXYGEN__) - static inline void LEDs_Init(void) - { - DDRD |= LEDS_ALL_LEDS; - PORTD |= LEDS_ALL_LEDS; - } - - static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) - { - PORTD &= ~LEDMask; - } - - static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask) - { - PORTD |= LEDMask; - } - - static inline void LEDs_SetAllLEDs(const uint8_t LEDMask) - { - PORTD = ((PORTD | LEDS_ALL_LEDS) & ~LEDMask); - } - - static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask) - { - PORTD = ((PORTD | ActiveMask) & ~LEDMask); - } - - static inline void LEDs_ToggleLEDs(const uint8_t LEDMask) - { - PORTD ^= LEDMask; - } - - static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT; - static inline uint8_t LEDs_GetLEDs(void) - { - return (PORTD & LEDS_ALL_LEDS); - } - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.c b/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.c deleted file mode 100644 index 0557403..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.c +++ /dev/null @@ -1,277 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * USB Device Descriptors, for library use when in USB device mode. Descriptors are special - * computer-readable structures which the host requests upon device enumeration, to determine - * the device's capabilities and functions. - */ - -#include "Descriptors.h" - -/* On some devices, there is a factory set internal serial number which can be automatically sent to the host as - * the device's serial number when the Device Descriptor's .SerialNumStrIndex entry is set to USE_INTERNAL_SERIAL. - * This allows the host to track a device across insertions on different ports, allowing them to retain allocated - * resources like COM port numbers and drivers. On demos using this feature, give a warning on unsupported devices - * so that the user can supply their own serial number descriptor instead or remove the USE_INTERNAL_SERIAL value - * from the Device Descriptor (forcing the host to generate a serial number for each device from the VID, PID and - * port location). - */ -#if (USE_INTERNAL_SERIAL == NO_DESCRIPTOR) - #warning USE_INTERNAL_SERIAL is not available on this AVR - please manually construct a device serial descriptor. -#endif - -/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall - * device characteristics, including the supported USB version, control endpoint size and the - * number of device configurations. The descriptor is read out by the USB host when the enumeration - * process begins. - */ -const USB_Descriptor_Device_t PROGMEM DeviceDescriptor = -{ - .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, - - .USBSpecification = VERSION_BCD(01.10), - .Class = 0x02, - .SubClass = 0x00, - .Protocol = 0x00, - - .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, - - .VendorID = 0x03EB, // Atmel - - .ProductID = 0x204B, // LUFA USB to Serial Demo Application - .ReleaseNumber = 0x0001, - - .ManufacturerStrIndex = 0x01, - .ProductStrIndex = 0x02, - .SerialNumStrIndex = USE_INTERNAL_SERIAL, - - .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS -}; - -/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage - * of the device in one of its supported configurations, including information about any device interfaces - * and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting - * a configuration so that the host may correctly communicate with the USB device. - */ -const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = -{ - .Config = - { - .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, - - .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), - .TotalInterfaces = 2, - - .ConfigurationNumber = 1, - .ConfigurationStrIndex = NO_DESCRIPTOR, - - .ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED), - - .MaxPowerConsumption = USB_CONFIG_POWER_MA(100) - }, - - .CDC_CCI_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = 0, - .AlternateSetting = 0, - - .TotalEndpoints = 1, - - .Class = 0x02, - .SubClass = 0x02, - .Protocol = 0x01, - - .InterfaceStrIndex = NO_DESCRIPTOR - }, - - .CDC_Functional_IntHeader = - { - .Header = {.Size = sizeof(CDC_FUNCTIONAL_DESCRIPTOR(2)), .Type = 0x24}, - .SubType = 0x00, - - .Data = {0x01, 0x10} - }, - - .CDC_Functional_AbstractControlManagement = - { - .Header = {.Size = sizeof(CDC_FUNCTIONAL_DESCRIPTOR(1)), .Type = 0x24}, - .SubType = 0x02, - - .Data = {0x06} - }, - - .CDC_Functional_Union = - { - .Header = {.Size = sizeof(CDC_FUNCTIONAL_DESCRIPTOR(2)), .Type = 0x24}, - .SubType = 0x06, - - .Data = {0x00, 0x01} - }, - - .CDC_NotificationEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_NOTIFICATION_EPNUM), - .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_NOTIFICATION_EPSIZE, - .PollingIntervalMS = 0xFF - }, - - .CDC_DCI_Interface = - { - .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, - - .InterfaceNumber = 1, - .AlternateSetting = 0, - - .TotalEndpoints = 2, - - .Class = 0x0A, - .SubClass = 0x00, - .Protocol = 0x00, - - .InterfaceStrIndex = NO_DESCRIPTOR - }, - - .CDC_DataOutEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC_RX_EPNUM), - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_TXRX_EPSIZE, - .PollingIntervalMS = 0x01 - }, - - .CDC_DataInEndpoint = - { - .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, - - .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM), - .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), - .EndpointSize = CDC_TXRX_EPSIZE, - .PollingIntervalMS = 0x01 - } -}; - -/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests - * the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate - * via the language ID table available at USB.org what languages the device supports for its string descriptors. - */ -const USB_Descriptor_String_t PROGMEM LanguageString = -{ - .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String}, - - .UnicodeString = {LANGUAGE_ID_ENG} -}; - -/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable - * form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device - * Descriptor. - */ -const USB_Descriptor_String_t PROGMEM ManufacturerString = -{ - .Header = {.Size = USB_STRING_LEN(24), .Type = DTYPE_String}, - - .UnicodeString = L"Arduino (www.arduino.cc)" -}; - -/** Product descriptor string. This is a Unicode string containing the product's details in human readable form, - * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device - * Descriptor. - */ -const USB_Descriptor_String_t PROGMEM ProductString = -{ - #if (ARDUINO_MODEL_PID == ARDUINO_UNO_PID) - .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, - - .UnicodeString = L"Arduino Uno" - #elif (ARDUINO_MODEL_PID == ARDUINO_MEGA2560_PID) - .Header = {.Size = USB_STRING_LEN(17), .Type = DTYPE_String}, - - .UnicodeString = L"Arduino Mega 2560" - #endif - -}; - -/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors" - * documentation) by the application code so that the address and size of a requested descriptor can be given - * to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function - * is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the - * USB host. - */ -uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint8_t wIndex, - void** const DescriptorAddress) -{ - const uint8_t DescriptorType = (wValue >> 8); - const uint8_t DescriptorNumber = (wValue & 0xFF); - - void* Address = NULL; - uint16_t Size = NO_DESCRIPTOR; - - switch (DescriptorType) - { - case DTYPE_Device: - Address = (void*)&DeviceDescriptor; - Size = sizeof(USB_Descriptor_Device_t); - break; - case DTYPE_Configuration: - Address = (void*)&ConfigurationDescriptor; - Size = sizeof(USB_Descriptor_Configuration_t); - break; - case DTYPE_String: - switch (DescriptorNumber) - { - case 0x00: - Address = (void*)&LanguageString; - Size = pgm_read_byte(&LanguageString.Header.Size); - break; - case 0x01: - Address = (void*)&ManufacturerString; - Size = pgm_read_byte(&ManufacturerString.Header.Size); - break; - case 0x02: - Address = (void*)&ProductString; - Size = pgm_read_byte(&ProductString.Header.Size); - break; - } - - break; - } - - *DescriptorAddress = Address; - return Size; -} diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.h b/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.h deleted file mode 100644 index 3ac4e52..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Descriptors.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for Descriptors.c. - */ - -#ifndef _DESCRIPTORS_H_ -#define _DESCRIPTORS_H_ - - /* Includes: */ - #include - - #include - #include - - /* Product-specific definitions: */ - #define ARDUINO_UNO_PID 0x0001 - #define ARDUINO_MEGA2560_PID 0x0010 - - /* Macros: */ - /** Endpoint number of the CDC device-to-host notification IN endpoint. */ - #define CDC_NOTIFICATION_EPNUM 2 - - /** Endpoint number of the CDC device-to-host data IN endpoint. */ - #define CDC_TX_EPNUM 3 - - /** Endpoint number of the CDC host-to-device data OUT endpoint. */ - #define CDC_RX_EPNUM 4 - - /** Size in bytes of the CDC device-to-host notification IN endpoint. */ - #define CDC_NOTIFICATION_EPSIZE 8 - - /** Size in bytes of the CDC data IN and OUT endpoints. */ - #define CDC_TXRX_EPSIZE 64 - - /* Type Defines: */ - /** Type define for the device configuration descriptor structure. This must be defined in the - * application code, as the configuration descriptor contains several sub-descriptors which - * vary between devices, and which describe the device's usage to the host. - */ - typedef struct - { - USB_Descriptor_Configuration_Header_t Config; - USB_Descriptor_Interface_t CDC_CCI_Interface; - CDC_FUNCTIONAL_DESCRIPTOR(2) CDC_Functional_IntHeader; - CDC_FUNCTIONAL_DESCRIPTOR(1) CDC_Functional_AbstractControlManagement; - CDC_FUNCTIONAL_DESCRIPTOR(2) CDC_Functional_Union; - USB_Descriptor_Endpoint_t CDC_NotificationEndpoint; - USB_Descriptor_Interface_t CDC_DCI_Interface; - USB_Descriptor_Endpoint_t CDC_DataOutEndpoint; - USB_Descriptor_Endpoint_t CDC_DataInEndpoint; - } USB_Descriptor_Configuration_t; - - /* Function Prototypes: */ - uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint8_t wIndex, - void** const DescriptorAddress) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); - -#endif diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Genuino-usbserial-atmega16u2-Mega2560-R3.hex b/firmwares/atmegaxxu2/arduino-usbserial/Genuino-usbserial-atmega16u2-Mega2560-R3.hex deleted file mode 100644 index 5393cf6..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Genuino-usbserial-atmega16u2-Mega2560-R3.hex +++ /dev/null @@ -1,248 +0,0 @@ -:100000009EC00000B7C00000B5C00000B3C0000033 -:10001000B1C00000AFC00000ADC00000ABC0000028 -:10002000A9C00000A7C00000A5C00000FCC30000DC -:10003000A1C400009FC000009DC000009BC0000044 -:1000400099C0000097C0000095C0000093C0000058 -:1000500091C000008FC000008DC00000C6C100002C -:1000600089C0000087C0000085C0000083C0000078 -:1000700081C00000160538052206380522067A05DB -:1000800097052206EA05FC052403470065006E007B -:10009000750069006E006F0020004D00650067006C -:1000A00061002000320035003600300000003A03C5 -:1000B000410072006400750069006E006F0020004E -:1000C0004C004C00430020002800770077007700A8 -:1000D0002E00610072006400750069006E006F0000 -:1000E0002E006300630029000000040309040902D4 -:1000F0003E00020100C032090400000102020100BA -:100100000524000110042402060524060001070549 -:1001100082030800FF09040100020A00000007052D -:100120000402400001070583024000011201100192 -:10013000020000084123420201000102DC011124F7 -:100140001FBECFEFD2E0DEBFCDBF11E0A0E0B1E037 -:10015000EEE4FFE002C005900D92A631B107D9F799 -:1001600012E0A6E1B1E001C01D92AF32B107E1F7A4 -:1001700064D0EBC645CFFC01E058FF4FA081B181B0 -:100180006C93A081B1819D012F5F3F4F318320830C -:100190002E173F0721F412969C938E9311972FB739 -:1001A000F894FC01EC57FF4F80818F5F80832FBF55 -:1001B0000895DC01AE57BF4FED91FC91119741912D -:1001C0001196FC93EE939C0120583F4FE217F307E2 -:1001D00011F48D939C932FB7F894FC01EC57FF4FCB -:1001E0009081915090832FBF842F089584B7877F8B -:1001F00084BF88E10FB6F89480936000109260008D -:100200000FBE87E690E09093CD008093CC0086E00F -:100210008093CA001092C80088E18093C900539A65 -:100220005A9A8AB180638AB98BB180638BB9F0D254 -:1002300084E085BD5F9A579A0895D8DF2FB7F89468 -:100240008EE991E090931F0280931E029093210209 -:10025000809320022FBF2FB7F89489E191E090930B -:100260009A018093990190939C0180939B012FBFE9 -:100270007894D3E09FB7F894809122029FBF803892 -:1002800049F080E091E00ED697FD04C0682F8EE91A -:1002900091E071DF8FB7F894C0919D018FBFA8994D -:1002A00002C0C13658F1A89A80919D01882319F0A7 -:1002B0005D98D0931601CC2349F089E191E079DF74 -:1002C000682F80E091E093D5C150F5CF8091160161 -:1002D000882341F08091160181508093160181118D -:1002E00001C05D9A80911701882341F08091170128 -:1002F000815080931701811101C05C9A9FB7F894D7 -:10030000809122029FBF882361F08EE991E051DF46 -:100310009091C80095FFFCCF8093CE005C98D0935D -:10032000170180E091E0B0D59AD4A4CF80E091E0AD -:1003300011C580E091E0A5C41F93CF93DF93EC013A -:100340008C89813031F0823011F010E003C010E26E -:1003500001C010E38B89823009F418608D898730E1 -:1003600031F0883031F0863029F4126003C0146017 -:1003700001C016601092C9001092C8001092CA0005 -:100380002F85388949895A89211581EE3807410519 -:10039000510571F0CA01B9019695879577956795D2 -:1003A00060587B47814E9F4FA8D52150310902C02C -:1003B00020E130E03093CD002093CC001093CA00B0 -:1003C0008F859889A989BA898115914EA105B105B2 -:1003D00011F480E001C082E08093C80088E9809336 -:1003E000C900DF91CF911F9108951F920F920FB610 -:1003F0000F9211242F933F934F935F936F937F93AB -:100400008F939F93AF93BF93EF93FF936091CE0031 -:100410008EB3843019F489E191E0ADDEFF91EF9164 -:10042000BF91AF919F918F917F916F915F914F910C -:100430003F912F910F900FBE0F901F901895FC01C8 -:10044000858580FF02C05F9808955F9A0895292FDF -:1004500033272230310559F02330310569F021303E -:100460003105F9F482E190E02CE231E01EC08EE328 -:1004700090E02EEE30E019C099278130910541F0CF -:100480008230910541F0892B61F4EAEEF0E005C07D -:10049000EEEAF0E002C0E8E8F0E0849190E09F012D -:1004A00004C080E090E020E030E0FA013183208356 -:1004B000089528E030E040E02817390720F44F5F26 -:1004C000220F331FF9CF842F8295807F0895809368 -:1004D000E900EBEEF0E0808181608083EDEEF0E0FA -:1004E00010826093EC0040838091EE00881F882783 -:1004F000881F08951092F40080E08093E900109224 -:10050000F0001092E8001092ED009091EB009E7FB9 -:100510009093EB008F5F853081F7089580912702DB -:1005200087FD05C08091E80080FF0DC010C080915C -:10053000E80082FD04C08EB38111F9CF0895809147 -:10054000E8008B7707C08EB38111ECCF08958091BE -:10055000E8008E778093E800089585E69091EC009E -:1005600090FF05C09091E80090FF05C01BC09091DE -:10057000E80092FD17C09EB39923B1F09EB3953069 -:10058000A9F09091EB0095FD13C09091E10092FFCE -:10059000E5CF9091E1009B7F9093E1008150F1F6CF -:1005A00084E0089580E0089582E0089583E008954E -:1005B00081E0089520912D0230912E0226173707F1 -:1005C00048F06115710539F42091E8002E772093E9 -:1005D000E80001C0B90130E06115710591F1209189 -:1005E000E80023FD38C02091E80022FF06C080917A -:1005F000E80082FF29C080E008952EB3222369F12C -:100600002EB3253061F12091E80020FFE5CF209145 -:10061000F200FC01CF016115710549F0283038F472 -:1006200081918093F100615071092F5FF3CF31E028 -:10063000283009F030E02091E8002E772093E80080 -:10064000CBCF3111CCCFD3CF8EB3882331F08EB343 -:10065000853069F604C081E0089582E0089583E062 -:10066000089520912D0230912E022617370748F069 -:100670006115710539F42091E8002E772093E80088 -:1006800001C0B90130E06115710599F12091E800D0 -:1006900023FD39C02091E80022FF06C08091E800C8 -:1006A00082FF2AC080E008952EB3222371F12EB379 -:1006B000253069F12091E80020FFE5CF2091F2007C -:1006C000FC01CF016115710551F0283040F484918F -:1006D0008093F100615071092F5F3196F2CF31E0C4 -:1006E000283009F030E02091E8002E772093E800D0 -:1006F000CACF3111CBCFD2CF8EB3882331F08EB396 -:10070000853061F604C081E0089582E0089583E0B9 -:1007100008956115710529F42091E8002B77209345 -:10072000E8006115710549F12091E80023FD2AC018 -:100730002EB3222359F12EB3253051F12091E80038 -:1007400022FFF2CFFC018091F200882371F09F011B -:100750002F5F3F4FC9014091F10040836150710903 -:1007600061157105C9F2F901EECFCF01D5CF8EB376 -:10077000882361F08EB3853059F08091E80080FFC6 -:10078000F6CF02C081E0089580E0089582E00895E8 -:1007900083E0089542D044D01EBA109225021092F0 -:1007A00024021092230284E089BD89B5826089BD4C -:1007B00009B400FEFDCF8091D800982F9F779093C9 -:1007C000D80080688093D800809163008E7F8093EA -:1007D00063008091D8008F7D8093D8008091E000E5 -:1007E0008E7F8093E0008091E1008E7F8093E10016 -:1007F0008091E20081608093E2008091E100877F38 -:100800008093E1008091E20088608093E200089587 -:10081000C1DF81E08093260208951092E2000895DE -:100820001092E10008951F920F920FB60F921124BB -:100830002F933F934F935F936F937F938F939F93E8 -:10084000AF93BF93EF93FF938091E10080FF1BC0B4 -:100850008091E20080FF17C08091E1008E7F80933D -:10086000E1008091E2008E7F8093E2008091E200BF -:1008700080618093E2008091D80080628093D800EC -:1008800019BC1EBAEBD18091E10084FF29C0809190 -:10089000E20084FF25C084E089BD89B5826089BDFE -:1008A00009B400FEFDCF8091D8008F7D8093D800E1 -:1008B0008091E1008F7E8093E1008091E2008F7E45 -:1008C0008093E2008091E20081608093E200809159 -:1008D0002502882311F084E001C081E08EBBBED1E7 -:1008E0008091E10083FF27C08091E20083FF23C055 -:1008F0008091E100877F8093E10082E08EBB1092BF -:1009000025028091E1008E7F8093E1008091E200DA -:100910008E7F8093E2008091E20080618093E2000C -:10092000E9DD42E060E080E0D2DD8091F0008860A7 -:100930008093F00093D18091E10082FF0AC0809102 -:10094000E20082FF06C08091E1008B7F8093E1008E -:1009500085D1FF91EF91BF91AF919F918F917F9141 -:100960006F915F914F913F912F910F900FBE0F901C -:100970001F9018951F920F920FB60F9211242F936C -:100980003F934F935F936F937F938F939F93AF9317 -:10099000BF93CF93EF93FF93E9EEF0E0C081C77070 -:1009A0001082E0EFF0E08081877F808378941CD014 -:1009B000F894E9EEF0E01082A0EFB0E08C9188604E -:1009C0008C93C083FF91EF91CF91BF91AF919F9195 -:1009D0008F917F916F915F914F913F912F910F90E8 -:1009E0000FBE0F901F9018951F93CF93DF93CDB735 -:1009F000DEB7AA970FB6F894DEBF0FBECDBFE7E211 -:100A0000F2E08091F100819322E0EF32F207C9F722 -:100A10002091270230912802832F90E08A3091059F -:100A200008F010C1FC01E65CFF4F89C2203881F05C -:100A3000223809F007C180912B0287708093E9006A -:100A40008091EB0085FB882780F91092E90006C0B1 -:100A50008091230290912402911182609091E8008C -:100A6000977F9093E8008093F1001092F100BDC051 -:100A7000822F8D7F09F0E6C0222319F0223061F029 -:100A8000D2C080912902813009F0CDC0333009F005 -:100A900080E08093240228C080912902811124C023 -:100AA00020912B02277009F4BEC02093E9008091A9 -:100AB000EB0080FFB8C08091EB00333011F480620E -:100AC00011C080618093EB0081E090E0022E01C0B4 -:100AD000880F0A94EAF78093EA001092EA00809166 -:100AE000EB0088608093EB001092E9008091E800B1 -:100AF000877F7EC02111A6C0109129028091E80055 -:100B0000877F8093E8000ADD8091E80080FD04C0C3 -:100B10008EB38111F9CF87C0812F8F7711F093E0C9 -:100B200001C092E09EBB80688093E3007CC02058A7 -:100B3000223008F087C08091290290912A028C3DD2 -:100B400023E0920781F583E08A838AE289834FB7A5 -:100B5000F894DE01139620E03EE051E2E32FF0E04E -:100B600050935700E49120FF03C0E295EF703F5F80 -:100B7000EF7090E39E0F9A3310F0E95C01C0E92F0B -:100B80008E2F90E08D939D932F5F243139F74FBFC7 -:100B90008091E800877F8093E8006AE270E0CE01F0 -:100BA000019608DD11C0AE014F5F5F4F60912B02CF -:100BB0004EDC0097C1F12091E800277F2093E800E8 -:100BC000BC0189819A814DDD8091E8008B7780930B -:100BD000E80029C02038B1F58091E800877F809334 -:100BE000E800809125028093F1008091E8008E77E3 -:100BF0008093E80093DC17C0211124C09091290252 -:100C0000923088F48091E800877F8093E800909389 -:100C1000250284DC80912502882311F084E001C044 -:100C200083E08EBB83DB8091E80083FF0DC0809161 -:100C3000EB0080628093EB008091E800877F8093D7 -:100C4000E80002C076DBEFCFAA960FB6F894DEBFBD -:100C50000FBECDBFDF91CF911F9108950895CF931F -:100C60008EB3882359F0C091E900C7701092E90053 -:100C70008091E80083FDB8DEC093E900CF9108952C -:100C80000895CF93DF93EC018091E80083FF5FC06C -:100C9000888190E020912B0230912C02281739078F -:100CA00009F055C080912802813249F018F4803251 -:100CB000C9F04DC0823261F18332C9F148C08091E0 -:100CC0002702813A09F043C08091E800877F809332 -:100CD000E80067E070E0CE010F966CDC8091E800E0 -:100CE0008B7713C080912702813289F58091E800CB -:100CF000877F8093E80067E070E0CE010F9609DD02 -:100D0000CE011ADB8091E8008E778093E8001FC047 -:100D1000809127028132D9F48091E800877F809307 -:100D2000E800809129028D87CE0189DB0DC080917A -:100D30002702813261F48091E800877F8093E80088 -:100D400060912902CE019CDFDF91CF91E7CBDF914B -:100D5000CF9108950F931F93CF93DF93EC01FC0184 -:100D60003D9689E0DF011D928A95E9F72A813B8152 -:100D70008C81882311F014E001C010E00981C901C1 -:100D800098DB412F482B426061E8802FA0DB88234D -:100D900041F12E813F818885882311F014E001C044 -:100DA00010E00D81C90185DB412F482B426060E8CE -:100DB000802F8DDB8823A9F02A853B858C858823AD -:100DC00011F014E001C010E0C985C90172DB412FA8 -:100DD000482B426061EC8C2FDF91CF911F910F91D6 -:100DE00076CB80E0DF91CF911F910F910895CF9343 -:100DF000C62F2EB32430E9F4FC0147855089618960 -:100E00007289452B462B472BA1F081818093E90005 -:100E10008091E80085FF04C0C093F10080E00AC023 -:100E20008091E8008E778093E80097DB8823A1F318 -:100E300001C082E0CF9108952EB3243019F5FC0152 -:100E40004785508961897289452B462B472BD1F004 -:100E500081818093E9008091F200882389F090914C -:100E6000E8008091E8008E778093E80095FD08C047 -:100E700074DB811108C08091E8008E778093E800D0 -:100E800080E0089582E008952EB3243051F4FC01EF -:100E90004785508961897289452B462B472B09F07C -:100EA000CBCF08952EB3243019F08FEF9FEF089524 -:100EB000FC014785508961897289452B462B472B58 -:100EC000A1F385818093E9008091E80082FFEDCF56 -:100ED0008091F200882321F02091F10030E002C0DF -:100EE0002FEF3FEF8091F200811105C08091E80063 -:100EF0008B778093E800C9010895A1E21A2EAA1BFE -:100F0000BB1BFD010DC0AA1FBB1FEE1FFF1FA217B9 -:100F1000B307E407F50720F0A21BB30BE40BF50BB6 -:100F2000661F771F881F991F1A9469F7609570953F -:100F3000809590959B01AC01BD01CF010895EE0F06 -:0E0F4000FF1F0590F491E02D0994F894FFCF67 -:100F4E000003400000044000000208000000000002 -:060F5E000000000000008D -:00000001FF diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Genuino-usbserial-atmega16u2-Uno-R3.hex b/firmwares/atmegaxxu2/arduino-usbserial/Genuino-usbserial-atmega16u2-Uno-R3.hex deleted file mode 100644 index 3abf6ad..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Genuino-usbserial-atmega16u2-Uno-R3.hex +++ /dev/null @@ -1,248 +0,0 @@ -:1000000098C00000B1C00000AFC00000ADC000004B -:10001000ABC00000A9C00000A7C00000A5C0000040 -:10002000A3C00000A1C000009FC00000F6C30000F4 -:100030009BC4000099C0000097C0000095C000005C -:1000400093C0000091C000008FC000008DC0000070 -:100050008BC0000089C0000087C00000C0C1000044 -:1000600083C0000081C000007FC000007DC0000090 -:100070007BC00000100532051C0632051C06740505 -:1000800091051C06E405F6051803470065006E009F -:10009000750069006E006F00200055006E006F0053 -:1000A00000003A03410072006400750069006E00B0 -:1000B0006F0020004C004C00430020002800770017 -:1000C000770077002E0061007200640075006900FF -:1000D0006E006F002E00630063002900000004031F -:1000E000090409023E00020100C0320904000001B7 -:1000F0000202010005240001100424020605240662 -:100100000001070582030800FF09040100020A003C -:1001100000000705040240000107058302400001BA -:1001200012011001020000084123430201000102F4 -:10013000DC0111241FBECFEFD2E0DEBFCDBF11E046 -:10014000A0E0B1E0E2E4FFE002C005900D92A6312C -:10015000B107D9F712E0A6E1B1E001C01D92AF32BC -:10016000B107E1F764D0EBC64BCFFC01E058FF4F7D -:10017000A081B1816C93A081B1819D012F5F3F4F20 -:10018000318320832E173F0721F412969C938E9380 -:1001900011972FB7F894FC01EC57FF4F80818F5FC8 -:1001A00080832FBF0895DC01AE57BF4FED91FC91C6 -:1001B000119741911196FC93EE939C0120583F4F6B -:1001C000E217F30711F48D939C932FB7F894FC0179 -:1001D000EC57FF4F9081915090832FBF842F08954B -:1001E00084B7877F84BF88E10FB6F894809360005E -:1001F000109260000FBE87E690E09093CD00809350 -:10020000CC0086E08093CA001092C80088E18093F9 -:10021000C900539A5A9A8AB180638AB98BB18063B4 -:100220008BB9F0D284E085BD5F9A579A0895D8DFE4 -:100230002FB7F8948EE991E090931F0280931E02ED -:1002400090932102809320022FBF2FB7F89489E169 -:1002500091E090939A018093990190939C018093EF -:100260009B012FBF7894D3E09FB7F894809122022E -:100270009FBF803849F080E091E00ED697FD04C022 -:10028000682F8EE991E071DF8FB7F894C0919D01DE -:100290008FBFA89902C0C13658F1A89A80919D01DC -:1002A000882319F05D98D0931601CC2349F089E199 -:1002B00091E079DF682F80E091E093D5C150F5CFD0 -:1002C00080911601882341F080911601815080931E -:1002D0001601811101C05D9A80911701882341F0B8 -:1002E00080911701815080931701811101C05C9AA0 -:1002F0009FB7F894809122029FBF882361F08EE916 -:1003000091E051DF9091C80095FFFCCF8093CE0023 -:100310005C98D093170180E091E0B0D59AD4A4CF37 -:1003200080E091E011C580E091E0A5C41F93CF93D8 -:10033000DF93EC018C89813031F0823011F010E0D4 -:1003400003C010E201C010E38B89823009F4186009 -:100350008D89873031F0883031F0863029F4126091 -:1003600003C0146001C016601092C9001092C8004A -:100370001092CA002F85388949895A89211581EE42 -:1003800038074105510571F0CA01B9019695879565 -:100390007795679560587B47814E9F4FA8D5215030 -:1003A000310902C020E130E03093CD002093CC0031 -:1003B0001093CA008F859889A989BA898115914EB1 -:1003C000A105B10511F480E001C082E08093C8006E -:1003D00088E98093C900DF91CF911F9108951F9202 -:1003E0000F920FB60F9211242F933F934F935F9369 -:1003F0006F937F938F939F93AF93BF93EF93FF93ED -:100400006091CE008EB3843019F489E191E0ADDEC5 -:10041000FF91EF91BF91AF919F918F917F916F91DC -:100420005F914F913F912F910F900FBE0F901F90B2 -:100430001895FC01858580FF02C05F9808955F9A3A -:100440000895292F33272230310559F02330310503 -:1004500069F021303105F9F482E190E020E231E0E9 -:100460001EC08EE390E022EE30E019C09927813063 -:10047000910541F08230910541F0892B61F4EEED58 -:10048000F0E005C0E2EAF0E002C0E8E8F0E08491C4 -:1004900090E09F0104C080E090E020E030E0FA01AD -:1004A00031832083089528E030E040E028173907A1 -:1004B00020F44F5F220F331FF9CF842F8295807F66 -:1004C00008958093E900EBEEF0E080818160808305 -:1004D000EDEEF0E010826093EC0040838091EE003E -:1004E000881F8827881F08951092F40080E0809369 -:1004F000E9001092F0001092E8001092ED00909147 -:10050000EB009E7F9093EB008F5F853081F708951D -:100510008091270287FD05C08091E80080FF0DC013 -:1005200010C08091E80082FD04C08EB38111F9CF24 -:1005300008958091E8008B7707C08EB38111ECCFCE -:1005400008958091E8008E778093E800089585E60D -:100550009091EC0090FF05C09091E80090FF05C0DD -:100560001BC09091E80092FD17C09EB39923B1F093 -:100570009EB39530A9F09091EB0095FD13C090913A -:10058000E10092FFE5CF9091E1009B7F9093E10025 -:100590008150F1F684E0089580E0089582E00895A6 -:1005A00083E0089581E0089520912D0230912E027C -:1005B0002617370748F06115710539F42091E800D6 -:1005C0002E772093E80001C0B90130E06115710574 -:1005D00091F12091E80023FD38C02091E80022FF2E -:1005E00006C08091E80082FF29C080E008952EB304 -:1005F000222369F12EB3253061F12091E80020FF1C -:10060000E5CF2091F200FC01CF016115710549F0A1 -:10061000283038F481918093F100615071092F5F87 -:10062000F3CF31E0283009F030E02091E8002E7758 -:100630002093E800CBCF3111CCCFD3CF8EB388231A -:1006400031F08EB3853069F604C081E0089582E010 -:10065000089583E0089520912D0230912E022617EF -:10066000370748F06115710539F42091E8002E77BD -:100670002093E80001C0B90130E06115710599F1DE -:100680002091E80023FD39C02091E80022FF06C038 -:100690008091E80082FF2AC080E008952EB32223D3 -:1006A00071F12EB3253069F12091E80020FFE5CFEC -:1006B0002091F200FC01CF016115710551F0283045 -:1006C00040F484918093F100615071092F5F31965D -:1006D000F2CF31E0283009F030E02091E8002E77A9 -:1006E0002093E800CACF3111CBCFD2CF8EB388236D -:1006F00031F08EB3853061F604C081E0089582E068 -:10070000089583E008956115710529F42091E800AA -:100710002B772093E8006115710549F12091E800DD -:1007200023FD2AC02EB3222359F12EB3253051F1D7 -:100730002091E80022FFF2CFFC018091F200882393 -:1007400071F09F012F5F3F4FC9014091F10040833D -:100750006150710961157105C9F2F901EECFCF0140 -:10076000D5CF8EB3882361F08EB3853059F0809158 -:10077000E80080FFF6CF02C081E0089580E0089590 -:1007800082E0089583E0089542D044D01EBA1092CA -:100790002502109224021092230284E089BD89B5BB -:1007A000826089BD09B400FEFDCF8091D800982FEA -:1007B0009F779093D80080688093D80080916300E1 -:1007C0008E7F809363008091D8008F7D8093D800C6 -:1007D0008091E0008E7F8093E0008091E1008E7F29 -:1007E0008093E1008091E20081608093E20080913B -:1007F000E100877F8093E1008091E2008860809330 -:10080000E2000895C1DF81E08093260208951092EE -:10081000E20008951092E10008951F920F920FB622 -:100820000F9211242F933F934F935F936F937F9376 -:100830008F939F93AF93BF93EF93FF938091E100CA -:1008400080FF1BC08091E20080FF17C08091E10013 -:100850008E7F8093E1008091E2008E7F8093E200A2 -:100860008091E20080618093E2008091D8008062F4 -:100870008093D80019BC1EBAEBD18091E10084FFAF -:1008800029C08091E20084FF25C084E089BD89B53C -:10089000826089BD09B400FEFDCF8091D8008F7DB4 -:1008A0008093D8008091E1008F7E8093E100809159 -:1008B000E2008F7E8093E2008091E200816080936D -:1008C000E20080912502882311F084E001C081E0DC -:1008D0008EBBBED18091E10083FF27C08091E200F2 -:1008E00083FF23C08091E100877F8093E10082E055 -:1008F0008EBB109225028091E1008E7F8093E100F3 -:100900008091E2008E7F8093E2008091E20080611E -:100910008093E200E9DD42E060E080E0D2DD80919A -:10092000F00088608093F00093D18091E10082FF15 -:100930000AC08091E20082FF06C08091E1008B7FB7 -:100940008093E10085D1FF91EF91BF91AF919F918D -:100950008F917F916F915F914F913F912F910F9068 -:100960000FBE0F901F9018951F920F920FB60F9207 -:1009700011242F933F934F935F936F937F938F93A4 -:100980009F93AF93BF93CF93EF93FF93E9EEF0E084 -:10099000C081C7701082E0EFF0E08081877F8083A4 -:1009A00078941CD0F894E9EEF0E01082A0EFB0E06B -:1009B0008C9188608C93C083FF91EF91CF91BF9110 -:1009C000AF919F918F917F916F915F914F913F91E7 -:1009D0002F910F900FBE0F901F9018951F93CF93DC -:1009E000DF93CDB7DEB7AA970FB6F894DEBF0FBE80 -:1009F000CDBFE7E2F2E08091F100819322E0EF3297 -:100A0000F207C9F72091270230912802832F90E046 -:100A10008A30910508F010C1FC01E65CFF4F89C2E5 -:100A2000203881F0223809F007C180912B028770AD -:100A30008093E9008091EB0085FB882780F9109274 -:100A4000E90006C0809123029091240291118260F6 -:100A50009091E800977F9093E8008093F1001092C6 -:100A6000F100BDC0822F8D7F09F0E6C0222319F06E -:100A7000223061F0D2C080912902813009F0CDC0CE -:100A8000333009F080E08093240228C0809129024D -:100A9000811124C020912B02277009F4BEC020933D -:100AA000E9008091EB0080FFB8C08091EB0033300B -:100AB00011F4806211C080618093EB0081E090E0CE -:100AC000022E01C0880F0A94EAF78093EA00109280 -:100AD000EA008091EB0088608093EB001092E900BF -:100AE0008091E800877F7EC02111A6C01091290265 -:100AF0008091E800877F8093E8000ADD8091E8001C -:100B000080FD04C08EB38111F9CF87C0812F8F770C -:100B100011F093E001C092E09EBB80688093E300F7 -:100B20007CC02058223008F087C080912902909123 -:100B30002A028C3D23E0920781F583E08A838AE2D2 -:100B400089834FB7F894DE01139620E03EE051E22E -:100B5000E32FF0E050935700E49120FF03C0E295AB -:100B6000EF703F5FEF7090E39E0F9A3310F0E95CF7 -:100B700001C0E92F8E2F90E08D939D932F5F24313C -:100B800039F74FBF8091E800877F8093E8006AE2E1 -:100B900070E0CE01019608DD11C0AE014F5F5F4FDE -:100BA00060912B024EDC0097C1F12091E800277F75 -:100BB0002093E800BC0189819A814DDD8091E80095 -:100BC0008B778093E80029C02038B1F58091E80048 -:100BD000877F8093E800809125028093F1008091C7 -:100BE000E8008E778093E80093DC17C0211124C0C1 -:100BF00090912902923088F48091E800877F809359 -:100C0000E8009093250284DC80912502882311F06E -:100C100084E001C083E08EBB83DB8091E80083FF2A -:100C20000DC08091EB0080628093EB008091E80022 -:100C3000877F8093E80002C076DBEFCFAA960FB6DD -:100C4000F894DEBF0FBECDBFDF91CF911F91089505 -:100C50000895CF938EB3882359F0C091E900C770EF -:100C60001092E9008091E80083FDB8DEC093E900AE -:100C7000CF9108950895CF93DF93EC018091E80020 -:100C800083FF5FC0888190E020912B0230912C027D -:100C90002817390709F055C080912802813249F0A0 -:100CA00018F48032C9F04DC0823261F18332C9F14B -:100CB00048C080912702813A09F043C08091E80042 -:100CC000877F8093E80067E070E0CE010F966CDCD0 -:100CD0008091E8008B7713C080912702813289F5DB -:100CE0008091E800877F8093E80067E070E0CE01A4 -:100CF0000F9609DDCE011ADB8091E8008E77809394 -:100D0000E8001FC0809127028132D9F48091E80069 -:100D1000877F8093E800809129028D87CE0189DB4F -:100D20000DC080912702813261F48091E800877FB5 -:100D30008093E80060912902CE019CDFDF91CF9182 -:100D4000E7CBDF91CF9108950F931F93CF93DF935C -:100D5000EC01FC013D9689E0DF011D928A95E9F7DF -:100D60002A813B818C81882311F014E001C010E0BE -:100D70000981C90198DB412F482B426061E8802F2F -:100D8000A0DB882341F12E813F818885882311F0E3 -:100D900014E001C010E00D81C90185DB412F482B13 -:100DA000426060E8802F8DDB8823A9F02A853B858F -:100DB0008C85882311F014E001C010E0C985C901B9 -:100DC00072DB412F482B426061EC8C2FDF91CF9179 -:100DD0001F910F9176CB80E0DF91CF911F910F9102 -:100DE0000895CF93C62F2EB32430E9F4FC01478534 -:100DF000508961897289452B462B472BA1F081814F -:100E00008093E9008091E80085FF04C0C093F10061 -:100E100080E00AC08091E8008E778093E80097DB3D -:100E20008823A1F301C082E0CF9108952EB324302E -:100E300019F5FC014785508961897289452B462B3C -:100E4000472BD1F081818093E9008091F2008823C3 -:100E500089F09091E8008091E8008E778093E80017 -:100E600095FD08C074DB811108C08091E8008E7781 -:100E70008093E80080E0089582E008952EB3243046 -:100E800051F4FC014785508961897289452B462BB5 -:100E9000472B09F0CBCF08952EB3243019F08FEFF4 -:100EA0009FEF0895FC014785508961897289452B20 -:100EB000462B472BA1F385818093E9008091E800C0 -:100EC00082FFEDCF8091F200882321F02091F10084 -:100ED00030E002C02FEF3FEF8091F200811105C09A -:100EE0008091E8008B778093E800C9010895A1E222 -:100EF0001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F94 -:100F0000FF1FA217B307E407F50720F0A21BB30BDE -:100F1000E40BF50B661F771F881F991F1A9469F75A -:100F200060957095809590959B01AC01BD01CF01B6 -:100F30000895EE0FFF1F0590F491E02D0994F894A9 -:020F4000FFCFE1 -:100F4200000340000004400000020800000000000E -:060F520000000000000099 -:00000001FF diff --git a/firmwares/atmegaxxu2/arduino-usbserial/Lib/LightweightRingBuff.h b/firmwares/atmegaxxu2/arduino-usbserial/Lib/LightweightRingBuff.h deleted file mode 100644 index fb48c1f..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/Lib/LightweightRingBuff.h +++ /dev/null @@ -1,197 +0,0 @@ -/* - LUFA Library - Copyright (C) Dean Camera, 2010. - - dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com -*/ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Ultra lightweight ring buffer, for fast insertion/deletion. - */ - -#ifndef _ULW_RING_BUFF_H_ -#define _ULW_RING_BUFF_H_ - - /* Includes: */ - #include - - #include - #include - - /* Defines: */ - /** Size of each ring buffer, in data elements - must be between 1 and 255. */ - #define BUFFER_SIZE 128 - - /** Maximum number of data elements to buffer before forcing a flush. - * Must be less than BUFFER_SIZE - */ - #define BUFFER_NEARLY_FULL 96 - - /** Type of data to store into the buffer. */ - #define RingBuff_Data_t uint8_t - - /** Datatype which may be used to store the count of data stored in a buffer, retrieved - * via a call to \ref RingBuffer_GetCount(). - */ - #if (BUFFER_SIZE <= 0xFF) - #define RingBuff_Count_t uint8_t - #else - #define RingBuff_Count_t uint16_t - #endif - - /* Type Defines: */ - /** Type define for a new ring buffer object. Buffers should be initialized via a call to - * \ref RingBuffer_InitBuffer() before use. - */ - typedef struct - { - RingBuff_Data_t Buffer[BUFFER_SIZE]; /**< Internal ring buffer data, referenced by the buffer pointers. */ - RingBuff_Data_t* In; /**< Current storage location in the circular buffer */ - RingBuff_Data_t* Out; /**< Current retrieval location in the circular buffer */ - RingBuff_Count_t Count; - } RingBuff_t; - - /* Inline Functions: */ - /** Initializes a ring buffer ready for use. Buffers must be initialized via this function - * before any operations are called upon them. Already initialized buffers may be reset - * by re-initializing them using this function. - * - * \param[out] Buffer Pointer to a ring buffer structure to initialize - */ - static inline void RingBuffer_InitBuffer(RingBuff_t* const Buffer) - { - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - Buffer->In = Buffer->Buffer; - Buffer->Out = Buffer->Buffer; - } - } - - /** Retrieves the minimum number of bytes stored in a particular buffer. This value is computed - * by entering an atomic lock on the buffer while the IN and OUT locations are fetched, so that - * the buffer cannot be modified while the computation takes place. This value should be cached - * when reading out the contents of the buffer, so that as small a time as possible is spent - * in an atomic lock. - * - * \note The value returned by this function is guaranteed to only be the minimum number of bytes - * stored in the given buffer; this value may change as other threads write new data and so - * the returned number should be used only to determine how many successive reads may safely - * be performed on the buffer. - * - * \param[in] Buffer Pointer to a ring buffer structure whose count is to be computed - */ - static inline RingBuff_Count_t RingBuffer_GetCount(RingBuff_t* const Buffer) - { - RingBuff_Count_t Count; - - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - Count = Buffer->Count; - } - - return Count; - } - - /** Atomically determines if the specified ring buffer contains any free space. This should - * be tested before storing data to the buffer, to ensure that no data is lost due to a - * buffer overrun. - * - * \param[in,out] Buffer Pointer to a ring buffer structure to insert into - * - * \return Boolean true if the buffer contains no free space, false otherwise - */ - static inline bool RingBuffer_IsFull(RingBuff_t* const Buffer) - { - return (RingBuffer_GetCount(Buffer) == BUFFER_SIZE); - } - - /** Atomically determines if the specified ring buffer contains any data. This should - * be tested before removing data from the buffer, to ensure that the buffer does not - * underflow. - * - * If the data is to be removed in a loop, store the total number of bytes stored in the - * buffer (via a call to the \ref RingBuffer_GetCount() function) in a temporary variable - * to reduce the time spent in atomicity locks. - * - * \param[in,out] Buffer Pointer to a ring buffer structure to insert into - * - * \return Boolean true if the buffer contains no free space, false otherwise - */ - static inline bool RingBuffer_IsEmpty(RingBuff_t* const Buffer) - { - return (RingBuffer_GetCount(Buffer) == 0); - } - - /** Inserts an element into the ring buffer. - * - * \note Only one execution thread (main program thread or an ISR) may insert into a single buffer - * otherwise data corruption may occur. Insertion and removal may occur from different execution - * threads. - * - * \param[in,out] Buffer Pointer to a ring buffer structure to insert into - * \param[in] Data Data element to insert into the buffer - */ - static inline void RingBuffer_Insert(RingBuff_t* const Buffer, - const RingBuff_Data_t Data) - { - *Buffer->In = Data; - - if (++Buffer->In == &Buffer->Buffer[BUFFER_SIZE]) - Buffer->In = Buffer->Buffer; - - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - Buffer->Count++; - } - } - - /** Removes an element from the ring buffer. - * - * \note Only one execution thread (main program thread or an ISR) may remove from a single buffer - * otherwise data corruption may occur. Insertion and removal may occur from different execution - * threads. - * - * \param[in,out] Buffer Pointer to a ring buffer structure to retrieve from - * - * \return Next data element stored in the buffer - */ - static inline RingBuff_Data_t RingBuffer_Remove(RingBuff_t* const Buffer) - { - RingBuff_Data_t Data = *Buffer->Out; - - if (++Buffer->Out == &Buffer->Buffer[BUFFER_SIZE]) - Buffer->Out = Buffer->Buffer; - - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) - { - Buffer->Count--; - } - - return Data; - } - -#endif diff --git a/firmwares/atmegaxxu2/arduino-usbserial/makefile b/firmwares/atmegaxxu2/arduino-usbserial/makefile deleted file mode 100644 index 79d6be2..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/makefile +++ /dev/null @@ -1,776 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- -#---------------------------------------------------------------------------- -# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al. -# >> Modified for use with the LUFA project. << -# -# Released to the Public Domain -# -# Additional material for this makefile was written by: -# Peter Fleury -# Tim Henigan -# Colin O'Flynn -# Reiner Patommel -# Markus Pfaff -# Sander Pool -# Frederik Rouleau -# Carlos Lamas -# Dean Camera -# Opendous Inc. -# Denver Gingerich -# -#---------------------------------------------------------------------------- -# On command line: -# -# make all = Make software. -# -# make clean = Clean out built project files. -# -# make coff = Convert ELF to AVR COFF. -# -# make extcoff = Convert ELF to AVR Extended COFF. -# -# make program = Download the hex file to the device, using avrdude. -# Please customize the avrdude settings below first! -# -# make dfu = Download the hex file to the device, using dfu-programmer (must -# have dfu-programmer installed). -# -# make flip = Download the hex file to the device, using Atmel FLIP (must -# have Atmel FLIP installed). -# -# make dfu-ee = Download the eeprom file to the device, using dfu-programmer -# (must have dfu-programmer installed). -# -# make flip-ee = Download the eeprom file to the device, using Atmel FLIP -# (must have Atmel FLIP installed). -# -# make doxygen = Generate DoxyGen documentation for the project (must have -# DoxyGen installed) -# -# make debug = Start either simulavr or avarice as specified for debugging, -# with avr-gdb or avr-insight as the front end for debugging. -# -# make filename.s = Just compile filename.c into the assembler code only. -# -# make filename.i = Create a preprocessed source file for use in submitting -# bug reports to the GCC project. -# -# To rebuild project do "make clean" then "make all". -#---------------------------------------------------------------------------- - -# MCU name(s) -# Since the ATMEGA8U2 part is not directly supported by the current -# versions of either avrdude or dfu-programmer, we specify a dummy -# part; AT90USB82 which is close enough in memory size and organization -MCU = atmega8u2 -MCU_AVRDUDE = at90usb82 -MCU_DFU = at90usb82 - -# Specify the Arduino model using the assigned PID. This is used by Descriptors.c -# to set PID and product descriptor string -# Uno PID: -ARDUINO_MODEL_PID = 0x0001 -# Mega 2560 PID: -#ARDUINO_MODEL_PID = 0x0010 - - -# Target board (see library "Board Types" documentation, NONE for projects not requiring -# LUFA board drivers). If USER is selected, put custom board drivers in a directory called -# "Board" inside the application directory. -BOARD = USER - - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_CLOCK below, as it is sourced by -# F_CLOCK after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# Input clock frequency. -# This will define a symbol, F_CLOCK, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_CLOCK = $(F_CPU) - - -# Output format. (can be srec, ihex, binary) -FORMAT = ihex - - -# Target file name (without extension). -TARGET = Arduino-usbserial - - -# Object files directory -# To put object files in current directory, use a dot (.), do NOT make -# this an empty or blank macro! -OBJDIR = . - - -# Path to the LUFA library -LUFA_PATH = ../.. - - -# LUFA library compile-time options -LUFA_OPTS = -D USB_DEVICE_ONLY -LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8 -LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1 -LUFA_OPTS += -D USE_FLASH_DESCRIPTORS -LUFA_OPTS += -D INTERRUPT_CONTROL_ENDPOINT -LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0 -LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" - - -# Create the LUFA source path variables by including the LUFA root makefile -include $(LUFA_PATH)/LUFA/makefile - - -# List C source files here. (C dependencies are automatically generated.) -SRC = $(TARGET).c \ - Descriptors.c \ - $(LUFA_SRC_USB) \ - $(LUFA_SRC_USBCLASS) \ - $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Device.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/HostStandardReq.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/USBController.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/USBInterrupt.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/Device/CDC.c \ - $(LUFA_PATH)/LUFA/Drivers/USB/Class/Host/CDC.c - - -# List C++ source files here. (C dependencies are automatically generated.) -CPPSRC = - - -# List Assembler source files here. -# Make them always end in a capital .S. Files ending in a lowercase .s -# will not be considered source files but generated files (assembler -# output from the compiler), and will be deleted upon "make clean"! -# Even though the DOS/Win* filesystem matches both .s and .S the same, -# it will preserve the spelling of the filenames, and gcc itself does -# care about how the name is spelled on its command-line. -ASRC = - - -# Optimization level, can be [0, 1, 2, 3, s]. -# 0 = turn off optimization. s = optimize for size. -# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) -OPT = s - - -# Debugging format. -# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. -# AVR Studio 4.10 requires dwarf-2. -# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run. -DEBUG = dwarf-2 - - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRAINCDIRS = $(LUFA_PATH)/ - - -# Compiler flag to set the C Standard level. -# c89 = "ANSI" C -# gnu89 = c89 plus GCC extensions -# c99 = ISO C99 standard (not yet fully implemented) -# gnu99 = c99 plus GCC extensions -CSTANDARD = -std=gnu99 - - -# Place -D or -U options here for C sources -CDEFS = -DF_CPU=$(F_CPU)UL -CDEFS += -DF_CLOCK=$(F_CLOCK)UL -CDEFS += -DARDUINO_MODEL_PID=$(ARDUINO_MODEL_PID) -CDEFS += -DBOARD=BOARD_$(BOARD) -CDEFS += $(LUFA_OPTS) -CDEFS += -DAVR_RESET_LINE_PORT="PORTD" -CDEFS += -DAVR_RESET_LINE_DDR="DDRD" -CDEFS += -DAVR_RESET_LINE_MASK="(1 << 7)" -CDEFS += -DTX_RX_LED_PULSE_MS=3 -CDEFS += -DPING_PONG_LED_PULSE_MS=100 - -# Place -D or -U options here for ASM sources -ADEFS = -DF_CPU=$(F_CPU) -ADEFS += -DF_CLOCK=$(F_CLOCK)UL -ADEFS += -DBOARD=BOARD_$(BOARD) -ADEFS += $(LUFA_OPTS) - -# Place -D or -U options here for C++ sources -CPPDEFS = -DF_CPU=$(F_CPU)UL -CPPDEFS += -DF_CLOCK=$(F_CLOCK)UL -CPPDEFS += -DBOARD=BOARD_$(BOARD) -CPPDEFS += $(LUFA_OPTS) -#CPPDEFS += -D__STDC_LIMIT_MACROS -#CPPDEFS += -D__STDC_CONSTANT_MACROS - - - -#---------------- Compiler Options C ---------------- -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -CFLAGS = -g$(DEBUG) -CFLAGS += $(CDEFS) -CFLAGS += -O$(OPT) -CFLAGS += -funsigned-char -CFLAGS += -funsigned-bitfields -CFLAGS += -ffunction-sections -CFLAGS += -fno-inline-small-functions -CFLAGS += -fpack-struct -CFLAGS += -fshort-enums -CFLAGS += -fno-strict-aliasing -CFLAGS += -Wall -CFLAGS += -Wstrict-prototypes -#CFLAGS += -mshort-calls -#CFLAGS += -fno-unit-at-a-time -#CFLAGS += -Wundef -#CFLAGS += -Wunreachable-code -#CFLAGS += -Wsign-compare -CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -CFLAGS += $(CSTANDARD) - - -#---------------- Compiler Options C++ ---------------- -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -CPPFLAGS = -g$(DEBUG) -CPPFLAGS += $(CPPDEFS) -CPPFLAGS += -O$(OPT) -CPPFLAGS += -funsigned-char -CPPFLAGS += -funsigned-bitfields -CPPFLAGS += -fpack-struct -CPPFLAGS += -fshort-enums -CPPFLAGS += -fno-exceptions -CPPFLAGS += -Wall -CPPFLAGS += -Wundef -CFLAGS += -Wundef -#CPPFLAGS += -mshort-calls -#CPPFLAGS += -fno-unit-at-a-time -#CPPFLAGS += -Wstrict-prototypes -#CPPFLAGS += -Wunreachable-code -#CPPFLAGS += -Wsign-compare -CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst) -CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -#CPPFLAGS += $(CSTANDARD) - - -#---------------- Assembler Options ---------------- -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns: create listing -# -gstabs: have the assembler create line number information; note that -# for use in COFF files, additional information about filenames -# and function names needs to be present in the assembler source -# files -- see avr-libc docs [FIXME: not yet described there] -# -listing-cont-lines: Sets the maximum number of continuation lines of hex -# dump that will be displayed for a given single line of source input. -ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100 - - -#---------------- Library Options ---------------- -# Minimalistic printf version -PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min - -# Floating point printf version (requires MATH_LIB = -lm below) -PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt - -# If this is left blank, then it will use the Standard printf version. -PRINTF_LIB = -#PRINTF_LIB = $(PRINTF_LIB_MIN) -#PRINTF_LIB = $(PRINTF_LIB_FLOAT) - - -# Minimalistic scanf version -SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min - -# Floating point + %[ scanf version (requires MATH_LIB = -lm below) -SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt - -# If this is left blank, then it will use the Standard scanf version. -SCANF_LIB = -#SCANF_LIB = $(SCANF_LIB_MIN) -#SCANF_LIB = $(SCANF_LIB_FLOAT) - - -MATH_LIB = -lm - - -# List any extra directories to look for libraries here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRALIBDIRS = - - - -#---------------- External Memory Options ---------------- - -# 64 KB of external RAM, starting after internal RAM (ATmega128!), -# used for variables (.data/.bss) and heap (malloc()). -#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff - -# 64 KB of external RAM, starting after internal RAM (ATmega128!), -# only used for heap (malloc()). -#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff - -EXTMEMOPTS = - - - -#---------------- Linker Options ---------------- -# -Wl,...: tell GCC to pass this to linker. -# -Map: create map file -# --cref: add cross reference to map file -LDFLAGS = -Wl,-Map=$(TARGET).map,--cref -LDFLAGS += -Wl,--relax -LDFLAGS += -Wl,--gc-sections -LDFLAGS += $(EXTMEMOPTS) -LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS)) -LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) -#LDFLAGS += -T linker_script.x - - - -#---------------- Programming Options (avrdude) ---------------- - -# Programming hardware -# Type: avrdude -c ? -# to get a full listing. -# -AVRDUDE_PROGRAMMER = avrispmkii - -# com1 = serial port. Use lpt1 to connect to parallel port. -AVRDUDE_PORT = usb - -AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex -#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep - - -# Uncomment the following if you want avrdude's erase cycle counter. -# Note that this counter needs to be initialized first using -Yn, -# see avrdude manual. -#AVRDUDE_ERASE_COUNTER = -y - -# Uncomment the following if you do /not/ wish a verification to be -# performed after programming the device. -#AVRDUDE_NO_VERIFY = -V - -# Increase verbosity level. Please use this when submitting bug -# reports about avrdude. See -# to submit bug reports. -#AVRDUDE_VERBOSE = -v -v - -AVRDUDE_FORCE = -F - -AVRDUDE_FLAGS = -p $(MCU_AVRDUDE) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY) -AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE) -AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER) -AVRDUDE_FLAGS += $(AVRDUDE_FORCE) - - - -#---------------- Debugging Options ---------------- - -# For simulavr only - target MCU frequency. -DEBUG_MFREQ = $(F_CPU) - -# Set the DEBUG_UI to either gdb or insight. -# DEBUG_UI = gdb -DEBUG_UI = insight - -# Set the debugging back-end to either avarice, simulavr. -DEBUG_BACKEND = avarice -#DEBUG_BACKEND = simulavr - -# GDB Init Filename. -GDBINIT_FILE = __avr_gdbinit - -# When using avarice settings for the JTAG -JTAG_DEV = /dev/com1 - -# Debugging port used to communicate between GDB / avarice / simulavr. -DEBUG_PORT = 4242 - -# Debugging host used to communicate between GDB / avarice / simulavr, normally -# just set to localhost unless doing some sort of crazy debugging when -# avarice is running on a different computer. -DEBUG_HOST = localhost - - - -#============================================================================ - - -# Define programs and commands. -SHELL = sh -CC = avr-gcc -OBJCOPY = avr-objcopy -OBJDUMP = avr-objdump -SIZE = avr-size -AR = avr-ar rcs -NM = avr-nm -AVRDUDE = avrdude -REMOVE = rm -f -REMOVEDIR = rm -rf -COPY = cp -WINSHELL = cmd - -# Define Messages -# English -MSG_ERRORS_NONE = Errors: none -MSG_BEGIN = -------- begin -------- -MSG_END = -------- end -------- -MSG_SIZE_BEFORE = Size before: -MSG_SIZE_AFTER = Size after: -MSG_COFF = Converting to AVR COFF: -MSG_EXTENDED_COFF = Converting to AVR Extended COFF: -MSG_FLASH = Creating load file for Flash: -MSG_EEPROM = Creating load file for EEPROM: -MSG_EXTENDED_LISTING = Creating Extended Listing: -MSG_SYMBOL_TABLE = Creating Symbol Table: -MSG_LINKING = Linking: -MSG_COMPILING = Compiling C: -MSG_COMPILING_CPP = Compiling C++: -MSG_ASSEMBLING = Assembling: -MSG_CLEANING = Cleaning project: -MSG_CREATING_LIBRARY = Creating library: - - - - -# Define all object files. -OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) - -# Define all listing files. -LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) - - -# Compiler flags to generate dependency files. -GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d - - -# Combine all necessary flags and optional flags. -# Add target processor to flags. -ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS) -ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS) -ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) - - - - - -# Default target. -#all: begin gccversion sizebefore build checkinvalidevents showliboptions showtarget sizeafter end -all: begin gccversion sizebefore build showliboptions showtarget sizeafter end - -# Change the build target to build a HEX file or a library. -build: elf hex eep lss sym asm -#build: lib - - -elf: $(TARGET).elf -hex: $(TARGET).hex -eep: $(TARGET).eep -lss: $(TARGET).lss -sym: $(TARGET).sym -asm: $(TARGET).s -LIBNAME=lib$(TARGET).a -lib: $(LIBNAME) - - - -# Eye candy. -# AVR Studio 3.x does not check make's exit code but relies on -# the following magic strings to be generated by the compile job. -begin: - @echo - @echo $(MSG_BEGIN) - -end: - @echo $(MSG_END) - @echo - - -# Display size of file. -HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex -ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf -MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) ) -FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr ) - -sizebefore: - @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \ - 2>/dev/null; echo; fi - -sizeafter: - @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \ - 2>/dev/null; echo; fi - -#$(LUFA_PATH)/LUFA/LUFA_Events.lst: -# @make -C $(LUFA_PATH)/LUFA/ LUFA_Events.lst - -#checkinvalidevents: $(LUFA_PATH)/LUFA/LUFA_Events.lst -# @echo -# @echo Checking for invalid events... -# @$(shell) avr-nm $(OBJ) | sed -n -e 's/^.*EVENT_/EVENT_/p' | \ -# grep -F -v --file=$(LUFA_PATH)/LUFA/LUFA_Events.lst > InvalidEvents.tmp || true -# @sed -n -e 's/^/ WARNING - INVALID EVENT NAME: /p' InvalidEvents.tmp -# @if test -s InvalidEvents.tmp; then exit 1; fi - -showliboptions: - @echo - @echo ---- Compile Time Library Options ---- - @for i in $(LUFA_OPTS:-D%=%); do \ - echo $$i; \ - done - @echo -------------------------------------- - -showtarget: - @echo - @echo --------- Target Information --------- - @echo AVR Model: $(MCU) - @echo Board: $(BOARD) - @echo Clock: $(F_CPU)Hz CPU, $(F_CLOCK)Hz Master - @echo -------------------------------------- - - -# Display compiler version information. -gccversion : - @$(CC) --version - - -# Program the device. -program: $(TARGET).hex $(TARGET).eep - $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) - -flip: $(TARGET).hex - batchisp -hardware usb -device $(MCU_DFU) -operation erase f - batchisp -hardware usb -device $(MCU_DFU) -operation loadbuffer $(TARGET).hex program - batchisp -hardware usb -device $(MCU_DFU) -operation start reset 0 - -dfu: $(TARGET).hex - dfu-programmer $(MCU_DFU) erase - dfu-programmer $(MCU_DFU) flash --debug 1 $(TARGET).hex - dfu-programmer $(MCU_DFU) reset - - -flip-ee: $(TARGET).hex $(TARGET).eep - $(COPY) $(TARGET).eep $(TARGET)eep.hex - batchisp -hardware usb -device $(MCU_DFU) -operation memory EEPROM erase - batchisp -hardware usb -device $(MCU_DFU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program - batchisp -hardware usb -device $(MCU_DFU) -operation start reset 0 - $(REMOVE) $(TARGET)eep.hex - -dfu-ee: $(TARGET).hex $(TARGET).eep - dfu-programmer $(MCU_DFU) flash-eeprom --debug 1 --suppress-bootloader-mem $(TARGET).eep - dfu-programmer $(MCU_DFU) reset - - -# Generate avr-gdb config/init file which does the following: -# define the reset signal, load the target file, connect to target, and set -# a breakpoint at main(). -gdb-config: - @$(REMOVE) $(GDBINIT_FILE) - @echo define reset >> $(GDBINIT_FILE) - @echo SIGNAL SIGHUP >> $(GDBINIT_FILE) - @echo end >> $(GDBINIT_FILE) - @echo file $(TARGET).elf >> $(GDBINIT_FILE) - @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE) -ifeq ($(DEBUG_BACKEND),simulavr) - @echo load >> $(GDBINIT_FILE) -endif - @echo break main >> $(GDBINIT_FILE) - -debug: gdb-config $(TARGET).elf -ifeq ($(DEBUG_BACKEND), avarice) - @echo Starting AVaRICE - Press enter when "waiting to connect" message displays. - @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \ - $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT) - @$(WINSHELL) /c pause - -else - @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \ - $(DEBUG_MFREQ) --port $(DEBUG_PORT) -endif - @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE) - - - - -# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. -COFFCONVERT = $(OBJCOPY) --debugging -COFFCONVERT += --change-section-address .data-0x800000 -COFFCONVERT += --change-section-address .bss-0x800000 -COFFCONVERT += --change-section-address .noinit-0x800000 -COFFCONVERT += --change-section-address .eeprom-0x810000 - - - -coff: $(TARGET).elf - @echo - @echo $(MSG_COFF) $(TARGET).cof - $(COFFCONVERT) -O coff-avr $< $(TARGET).cof - - -extcoff: $(TARGET).elf - @echo - @echo $(MSG_EXTENDED_COFF) $(TARGET).cof - $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof - - - -# Create final output files (.hex, .eep) from ELF output file. -%.hex: %.elf - @echo - @echo $(MSG_FLASH) $@ - $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@ - -%.eep: %.elf - @echo - @echo $(MSG_EEPROM) $@ - -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ - --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0 - -# Create extended listing file from ELF output file. -%.lss: %.elf - @echo - @echo $(MSG_EXTENDED_LISTING) $@ - $(OBJDUMP) -h -S -z $< > $@ - -# Create a symbol table from ELF output file. -%.sym: %.elf - @echo - @echo $(MSG_SYMBOL_TABLE) $@ - $(NM) -n $< > $@ - - - -# Create library from object files. -.SECONDARY : $(TARGET).a -.PRECIOUS : $(OBJ) -%.a: $(OBJ) - @echo - @echo $(MSG_CREATING_LIBRARY) $@ - $(AR) $@ $(OBJ) - - -# Link: create ELF output file from object files. -.SECONDARY : $(TARGET).elf -.PRECIOUS : $(OBJ) -%.elf: $(OBJ) - @echo - @echo $(MSG_LINKING) $@ - $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS) - - -# Compile: create object files from C source files. -$(OBJDIR)/%.o : %.c - @echo - @echo $(MSG_COMPILING) $< - $(CC) -c $(ALL_CFLAGS) $< -o $@ - - -# Compile: create object files from C++ source files. -$(OBJDIR)/%.o : %.cpp - @echo - @echo $(MSG_COMPILING_CPP) $< - $(CC) -c $(ALL_CPPFLAGS) $< -o $@ - - -# Compile: create assembler files from C source files. -%.s : %.c - $(CC) -S $(ALL_CFLAGS) $< -o $@ - - -# Compile: create assembler files from C++ source files. -%.s : %.cpp - $(CC) -S $(ALL_CPPFLAGS) $< -o $@ - - -# Assemble: create object files from assembler source files. -$(OBJDIR)/%.o : %.S - @echo - @echo $(MSG_ASSEMBLING) $< - $(CC) -c $(ALL_ASFLAGS) $< -o $@ - - -# Create preprocessed source for use in sending a bug report. -%.i : %.c - $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ - - -# Target: clean project. -clean: begin clean_list clean_binary end - -clean_binary: - $(REMOVE) $(TARGET).hex - -clean_list: - @echo $(MSG_CLEANING) - $(REMOVE) $(TARGET).hex - $(REMOVE) $(TARGET).eep - $(REMOVE) $(TARGET).cof - $(REMOVE) $(TARGET).elf - $(REMOVE) $(TARGET).map - $(REMOVE) $(TARGET).sym - $(REMOVE) $(TARGET).lss - $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o) - $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst) - $(REMOVE) $(SRC:.c=.s) - $(REMOVE) $(SRC:.c=.d) - $(REMOVE) $(SRC:.c=.i) - $(REMOVEDIR) .dep - -doxygen: - @echo Generating Project Documentation... - @doxygen Doxygen.conf - @echo Documentation Generation Complete. - -clean_doxygen: - rm -rf Documentation - -# Create object files directory -$(shell mkdir $(OBJDIR) 2>/dev/null) - - -# Include the dependency files. --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) - - -# Listing of phony targets. -.PHONY : all begin finish end sizebefore sizeafter gccversion \ -build elf hex eep lss sym coff extcoff doxygen clean \ -clean_list clean_doxygen program dfu flip flip-ee dfu-ee \ -debug gdb-config diff --git a/firmwares/atmegaxxu2/arduino-usbserial/readme.txt b/firmwares/atmegaxxu2/arduino-usbserial/readme.txt deleted file mode 100644 index 289326b..0000000 --- a/firmwares/atmegaxxu2/arduino-usbserial/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -To setup the project and upload the Arduino usbserial application firmware to an ATMEGA8U2 using the Arduino USB DFU bootloader: -1. unpack the source into LUFA's Projects directory -2. set ARDUINO_MODEL_PID in the makefile as appropriate -3. do "make clean; make" -4. put the 8U2 into USB DFU mode: -4.a. assert and hold the 8U2's RESET line -4.b. assert and hold the 8U2's HWB line -4.c. release the 8U2's RESET line -4.d. release the 8U2's HWB line -5. confirm that the board enumerates as either "Arduino Uno DFU" or "Arduino Mega 2560 DFU" -6. do "make dfu" (OS X or Linux - dfu-programmer must be installed first) or "make flip" (Windows - Flip must be installed first) - -Check that the board enumerates as either "Arduino Uno" or "Arduino Mega 2560". Test by uploading a new Arduino sketch from the Arduino IDE. diff --git a/firmwares/wifishield/binary/wifiHD.elf b/firmwares/wifishield/binary/wifiHD.elf deleted file mode 100644 index d4a8bde..0000000 Binary files a/firmwares/wifishield/binary/wifiHD.elf and /dev/null differ diff --git a/firmwares/wifishield/binary/wifiHD.hex b/firmwares/wifishield/binary/wifiHD.hex deleted file mode 100644 index 0122587..0000000 --- a/firmwares/wifishield/binary/wifiHD.hex +++ /dev/null @@ -1,16358 +0,0 @@ -:0200000480007A -:10000000E08F100000000000000000000000000071 -:1000100000000000000000000000000000000000E0 -:1000200000000000000000000000000000000000D0 -:1000300000000000000000000000000000000000C0 -:1000400000000000000000000000000000000000B0 -:1000500000000000000000000000000000000000A0 -:100060000000000000000000000000000000000090 -:100070000000000000000000000000000000000080 -:100080000000000000000000000000000000000070 -:100090000000000000000000000000000000000060 -:1000A0000000000000000000000000000000000050 -:1000B0000000000000000000000000000000000040 -:1000C0000000000000000000000000000000000030 -:1000D0000000000000000000000000000000000020 -:1000E0000000000000000000000000000000000010 -:1000F0000000000000000000000000000000000000 -:1001000000000000000000000000000000000000EF -:1001100000000000000000000000000000000000DF -:1001200000000000000000000000000000000000CF -:1001300000000000000000000000000000000000BF -:1001400000000000000000000000000000000000AF -:10015000000000000000000000000000000000009F -:10016000000000000000000000000000000000008F -:10017000000000000000000000000000000000007F -:10018000000000000000000000000000000000006F -:10019000000000000000000000000000000000005F -:1001A000000000000000000000000000000000004F -:1001B000000000000000000000000000000000003F -:1001C000000000000000000000000000000000002F -:1001D000000000000000000000000000000000001F -:1001E000000000000000000000000000000000000F -:1001F00000000000000000000000000000000000FF -:1002000000000000000000000000000000000000EE -:1002100000000000000000000000000000000000DE -:1002200000000000000000000000000000000000CE -:1002300000000000000000000000000000000000BE -:1002400000000000000000000000000000000000AE -:10025000000000000000000000000000000000009E -:10026000000000000000000000000000000000008E -:10027000000000000000000000000000000000007E -:10028000000000000000000000000000000000006E -:10029000000000000000000000000000000000005E -:1002A000000000000000000000000000000000004E -:1002B000000000000000000000000000000000003E -:1002C000000000000000000000000000000000002E -:1002D000000000000000000000000000000000001E -:1002E000000000000000000000000000000000000E -:1002F00000000000000000000000000000000000FE -:1003000000000000000000000000000000000000ED -:1003100000000000000000000000000000000000DD -:1003200000000000000000000000000000000000CD -:1003300000000000000000000000000000000000BD -:1003400000000000000000000000000000000000AD -:10035000000000000000000000000000000000009D -:10036000000000000000000000000000000000008D -:10037000000000000000000000000000000000007D -:10038000000000000000000000000000000000006D -:10039000000000000000000000000000000000005D -:1003A000000000000000000000000000000000004D -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E000000000000000000000000000000000000D -:1003F00000000000000000000000000000000000FD -:1004000000000000000000000000000000000000EC -:1004100000000000000000000000000000000000DC -:1004200000000000000000000000000000000000CC -:1004300000000000000000000000000000000000BC -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:10047000000000000000000000000000000000007C -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:1005300000000000000000000000000000000000BB -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000000000BA -:1006400000000000000000000000000000000000AA -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:10068000000000000000000000000000000000006A -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C000000000000000000000000000000000002A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:1007000000000000000000000000000000000000E9 -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:1007400000000000000000000000000000000000A9 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C0000000000000000000000000000000000029 -:1007D0000000000000000000000000000000000019 -:1007E0000000000000000000000000000000000009 -:1007F00000000000000000000000000000000000F9 -:1008000000000000000000000000000000000000E8 -:1008100000000000000000000000000000000000D8 -:1008200000000000000000000000000000000000C8 -:1008300000000000000000000000000000000000B8 -:1008400000000000000000000000000000000000A8 -:100850000000000000000000000000000000000098 -:100860000000000000000000000000000000000088 -:100870000000000000000000000000000000000078 -:100880000000000000000000000000000000000068 -:100890000000000000000000000000000000000058 -:1008A0000000000000000000000000000000000048 -:1008B0000000000000000000000000000000000038 -:1008C0000000000000000000000000000000000028 -:1008D0000000000000000000000000000000000018 -:1008E0000000000000000000000000000000000008 -:1008F00000000000000000000000000000000000F8 -:1009000000000000000000000000000000000000E7 -:1009100000000000000000000000000000000000D7 -:1009200000000000000000000000000000000000C7 -:1009300000000000000000000000000000000000B7 -:1009400000000000000000000000000000000000A7 -:100950000000000000000000000000000000000097 -:100960000000000000000000000000000000000087 -:100970000000000000000000000000000000000077 -:100980000000000000000000000000000000000067 -:100990000000000000000000000000000000000057 -:1009A0000000000000000000000000000000000047 -:1009B0000000000000000000000000000000000037 -:1009C0000000000000000000000000000000000027 -:1009D0000000000000000000000000000000000017 -:1009E0000000000000000000000000000000000007 -:1009F00000000000000000000000000000000000F7 -:100A000000000000000000000000000000000000E6 -:100A100000000000000000000000000000000000D6 -:100A200000000000000000000000000000000000C6 -:100A300000000000000000000000000000000000B6 -:100A400000000000000000000000000000000000A6 -:100A50000000000000000000000000000000000096 -:100A60000000000000000000000000000000000086 -:100A70000000000000000000000000000000000076 -:100A80000000000000000000000000000000000066 -:100A90000000000000000000000000000000000056 -:100AA0000000000000000000000000000000000046 -:100AB0000000000000000000000000000000000036 -:100AC0000000000000000000000000000000000026 -:100AD0000000000000000000000000000000000016 -:100AE0000000000000000000000000000000000006 -:100AF00000000000000000000000000000000000F6 -:100B000000000000000000000000000000000000E5 -:100B100000000000000000000000000000000000D5 -:100B200000000000000000000000000000000000C5 -:100B300000000000000000000000000000000000B5 -:100B400000000000000000000000000000000000A5 -:100B50000000000000000000000000000000000095 -:100B60000000000000000000000000000000000085 -:100B70000000000000000000000000000000000075 -:100B80000000000000000000000000000000000065 -:100B90000000000000000000000000000000000055 -:100BA0000000000000000000000000000000000045 -:100BB0000000000000000000000000000000000035 -:100BC0000000000000000000000000000000000025 -:100BD0000000000000000000000000000000000015 -:100BE0000000000000000000000000000000000005 -:100BF00000000000000000000000000000000000F5 -:100C000000000000000000000000000000000000E4 -:100C100000000000000000000000000000000000D4 -:100C200000000000000000000000000000000000C4 -:100C300000000000000000000000000000000000B4 -:100C400000000000000000000000000000000000A4 -:100C50000000000000000000000000000000000094 -:100C60000000000000000000000000000000000084 -:100C70000000000000000000000000000000000074 -:100C80000000000000000000000000000000000064 -:100C90000000000000000000000000000000000054 -:100CA0000000000000000000000000000000000044 -:100CB0000000000000000000000000000000000034 -:100CC0000000000000000000000000000000000024 -:100CD0000000000000000000000000000000000014 -:100CE0000000000000000000000000000000000004 -:100CF00000000000000000000000000000000000F4 -:100D000000000000000000000000000000000000E3 -:100D100000000000000000000000000000000000D3 -:100D200000000000000000000000000000000000C3 -:100D300000000000000000000000000000000000B3 -:100D400000000000000000000000000000000000A3 -:100D50000000000000000000000000000000000093 -:100D60000000000000000000000000000000000083 -:100D70000000000000000000000000000000000073 -:100D80000000000000000000000000000000000063 -:100D90000000000000000000000000000000000053 -:100DA0000000000000000000000000000000000043 -:100DB0000000000000000000000000000000000033 -:100DC0000000000000000000000000000000000023 -:100DD0000000000000000000000000000000000013 -:100DE0000000000000000000000000000000000003 -:100DF00000000000000000000000000000000000F3 -:100E000000000000000000000000000000000000E2 -:100E100000000000000000000000000000000000D2 -:100E200000000000000000000000000000000000C2 -:100E300000000000000000000000000000000000B2 -:100E400000000000000000000000000000000000A2 -:100E50000000000000000000000000000000000092 -:100E60000000000000000000000000000000000082 -:100E70000000000000000000000000000000000072 -:100E80000000000000000000000000000000000062 -:100E90000000000000000000000000000000000052 -:100EA0000000000000000000000000000000000042 -:100EB0000000000000000000000000000000000032 -:100EC0000000000000000000000000000000000022 -:100ED0000000000000000000000000000000000012 -:100EE0000000000000000000000000000000000002 -:100EF00000000000000000000000000000000000F2 -:100F000000000000000000000000000000000000E1 -:100F100000000000000000000000000000000000D1 -:100F200000000000000000000000000000000000C1 -:100F300000000000000000000000000000000000B1 -:100F400000000000000000000000000000000000A1 -:100F50000000000000000000000000000000000091 -:100F60000000000000000000000000000000000081 -:100F70000000000000000000000000000000000071 -:100F80000000000000000000000000000000000061 -:100F90000000000000000000000000000000000051 -:100FA0000000000000000000000000000000000041 -:100FB0000000000000000000000000000000000031 -:100FC0000000000000000000000000000000000021 -:100FD0000000000000000000000000000000000011 -:100FE0000000000000000000000000000000000001 -:100FF00000000000000000000000000000000000F1 -:1010000000000000000000000000000000000000E0 -:1010100000000000000000000000000000000000D0 -:1010200000000000000000000000000000000000C0 -:1010300000000000000000000000000000000000B0 -:1010400000000000000000000000000000000000A0 -:101050000000000000000000000000000000000090 -:101060000000000000000000000000000000000080 -:101070000000000000000000000000000000000070 -:101080000000000000000000000000000000000060 -:101090000000000000000000000000000000000050 -:1010A0000000000000000000000000000000000040 -:1010B0000000000000000000000000000000000030 -:1010C0000000000000000000000000000000000020 -:1010D0000000000000000000000000000000000010 -:1010E0000000000000000000000000000000000000 -:1010F00000000000000000000000000000000000F0 -:1011000000000000000000000000000000000000DF -:1011100000000000000000000000000000000000CF -:1011200000000000000000000000000000000000BF -:1011300000000000000000000000000000000000AF -:10114000000000000000000000000000000000009F -:10115000000000000000000000000000000000008F -:10116000000000000000000000000000000000007F -:10117000000000000000000000000000000000006F -:10118000000000000000000000000000000000005F -:10119000000000000000000000000000000000004F -:1011A000000000000000000000000000000000003F -:1011B000000000000000000000000000000000002F -:1011C000000000000000000000000000000000001F -:1011D000000000000000000000000000000000000F -:1011E00000000000000000000000000000000000FF -:1011F00000000000000000000000000000000000EF -:1012000000000000000000000000000000000000DE -:1012100000000000000000000000000000000000CE -:1012200000000000000000000000000000000000BE -:1012300000000000000000000000000000000000AE -:10124000000000000000000000000000000000009E -:10125000000000000000000000000000000000008E -:10126000000000000000000000000000000000007E -:10127000000000000000000000000000000000006E -:10128000000000000000000000000000000000005E -:10129000000000000000000000000000000000004E -:1012A000000000000000000000000000000000003E -:1012B000000000000000000000000000000000002E -:1012C000000000000000000000000000000000001E -:1012D000000000000000000000000000000000000E -:1012E00000000000000000000000000000000000FE -:1012F00000000000000000000000000000000000EE -:1013000000000000000000000000000000000000DD -:1013100000000000000000000000000000000000CD -:1013200000000000000000000000000000000000BD -:1013300000000000000000000000000000000000AD -:10134000000000000000000000000000000000009D -:10135000000000000000000000000000000000008D -:10136000000000000000000000000000000000007D -:10137000000000000000000000000000000000006D -:10138000000000000000000000000000000000005D -:10139000000000000000000000000000000000004D -:1013A000000000000000000000000000000000003D -:1013B000000000000000000000000000000000002D -:1013C000000000000000000000000000000000001D -:1013D000000000000000000000000000000000000D -:1013E00000000000000000000000000000000000FD -:1013F00000000000000000000000000000000000ED -:1014000000000000000000000000000000000000DC -:1014100000000000000000000000000000000000CC -:1014200000000000000000000000000000000000BC -:1014300000000000000000000000000000000000AC -:10144000000000000000000000000000000000009C -:10145000000000000000000000000000000000008C -:10146000000000000000000000000000000000007C -:10147000000000000000000000000000000000006C -:10148000000000000000000000000000000000005C -:10149000000000000000000000000000000000004C -:1014A000000000000000000000000000000000003C -:1014B000000000000000000000000000000000002C -:1014C000000000000000000000000000000000001C -:1014D000000000000000000000000000000000000C -:1014E00000000000000000000000000000000000FC -:1014F00000000000000000000000000000000000EC -:1015000000000000000000000000000000000000DB -:1015100000000000000000000000000000000000CB -:1015200000000000000000000000000000000000BB -:1015300000000000000000000000000000000000AB -:10154000000000000000000000000000000000009B -:10155000000000000000000000000000000000008B -:10156000000000000000000000000000000000007B -:10157000000000000000000000000000000000006B -:10158000000000000000000000000000000000005B -:10159000000000000000000000000000000000004B -:1015A000000000000000000000000000000000003B -:1015B000000000000000000000000000000000002B -:1015C000000000000000000000000000000000001B -:1015D000000000000000000000000000000000000B -:1015E00000000000000000000000000000000000FB -:1015F00000000000000000000000000000000000EB -:1016000000000000000000000000000000000000DA -:1016100000000000000000000000000000000000CA -:1016200000000000000000000000000000000000BA -:1016300000000000000000000000000000000000AA -:10164000000000000000000000000000000000009A -:10165000000000000000000000000000000000008A -:10166000000000000000000000000000000000007A -:10167000000000000000000000000000000000006A -:10168000000000000000000000000000000000005A -:10169000000000000000000000000000000000004A -:1016A000000000000000000000000000000000003A -:1016B000000000000000000000000000000000002A -:1016C000000000000000000000000000000000001A -:1016D000000000000000000000000000000000000A -:1016E00000000000000000000000000000000000FA -:1016F00000000000000000000000000000000000EA -:1017000000000000000000000000000000000000D9 -:1017100000000000000000000000000000000000C9 -:1017200000000000000000000000000000000000B9 -:1017300000000000000000000000000000000000A9 -:101740000000000000000000000000000000000099 -:101750000000000000000000000000000000000089 -:101760000000000000000000000000000000000079 -:101770000000000000000000000000000000000069 -:101780000000000000000000000000000000000059 -:101790000000000000000000000000000000000049 -:1017A0000000000000000000000000000000000039 -:1017B0000000000000000000000000000000000029 -:1017C0000000000000000000000000000000000019 -:1017D0000000000000000000000000000000000009 -:1017E00000000000000000000000000000000000F9 -:1017F00000000000000000000000000000000000E9 -:1018000000000000000000000000000000000000D8 -:1018100000000000000000000000000000000000C8 -:1018200000000000000000000000000000000000B8 -:1018300000000000000000000000000000000000A8 -:101840000000000000000000000000000000000098 -:101850000000000000000000000000000000000088 -:101860000000000000000000000000000000000078 -:101870000000000000000000000000000000000068 -:101880000000000000000000000000000000000058 -:101890000000000000000000000000000000000048 -:1018A0000000000000000000000000000000000038 -:1018B0000000000000000000000000000000000028 -:1018C0000000000000000000000000000000000018 -:1018D0000000000000000000000000000000000008 -:1018E00000000000000000000000000000000000F8 -:1018F00000000000000000000000000000000000E8 -:1019000000000000000000000000000000000000D7 -:1019100000000000000000000000000000000000C7 -:1019200000000000000000000000000000000000B7 -:1019300000000000000000000000000000000000A7 -:101940000000000000000000000000000000000097 -:101950000000000000000000000000000000000087 -:101960000000000000000000000000000000000077 -:101970000000000000000000000000000000000067 -:101980000000000000000000000000000000000057 -:101990000000000000000000000000000000000047 -:1019A0000000000000000000000000000000000037 -:1019B0000000000000000000000000000000000027 -:1019C0000000000000000000000000000000000017 -:1019D0000000000000000000000000000000000007 -:1019E00000000000000000000000000000000000F7 -:1019F00000000000000000000000000000000000E7 -:101A000000000000000000000000000000000000D6 -:101A100000000000000000000000000000000000C6 -:101A200000000000000000000000000000000000B6 -:101A300000000000000000000000000000000000A6 -:101A40000000000000000000000000000000000096 -:101A50000000000000000000000000000000000086 -:101A60000000000000000000000000000000000076 -:101A70000000000000000000000000000000000066 -:101A80000000000000000000000000000000000056 -:101A90000000000000000000000000000000000046 -:101AA0000000000000000000000000000000000036 -:101AB0000000000000000000000000000000000026 -:101AC0000000000000000000000000000000000016 -:101AD0000000000000000000000000000000000006 -:101AE00000000000000000000000000000000000F6 -:101AF00000000000000000000000000000000000E6 -:101B000000000000000000000000000000000000D5 -:101B100000000000000000000000000000000000C5 -:101B200000000000000000000000000000000000B5 -:101B300000000000000000000000000000000000A5 -:101B40000000000000000000000000000000000095 -:101B50000000000000000000000000000000000085 -:101B60000000000000000000000000000000000075 -:101B70000000000000000000000000000000000065 -:101B80000000000000000000000000000000000055 -:101B90000000000000000000000000000000000045 -:101BA0000000000000000000000000000000000035 -:101BB0000000000000000000000000000000000025 -:101BC0000000000000000000000000000000000015 -:101BD0000000000000000000000000000000000005 -:101BE00000000000000000000000000000000000F5 -:101BF00000000000000000000000000000000000E5 -:101C000000000000000000000000000000000000D4 -:101C100000000000000000000000000000000000C4 -:101C200000000000000000000000000000000000B4 -:101C300000000000000000000000000000000000A4 -:101C40000000000000000000000000000000000094 -:101C50000000000000000000000000000000000084 -:101C60000000000000000000000000000000000074 -:101C70000000000000000000000000000000000064 -:101C80000000000000000000000000000000000054 -:101C90000000000000000000000000000000000044 -:101CA0000000000000000000000000000000000034 -:101CB0000000000000000000000000000000000024 -:101CC0000000000000000000000000000000000014 -:101CD0000000000000000000000000000000000004 -:101CE00000000000000000000000000000000000F4 -:101CF00000000000000000000000000000000000E4 -:101D000000000000000000000000000000000000D3 -:101D100000000000000000000000000000000000C3 -:101D200000000000000000000000000000000000B3 -:101D300000000000000000000000000000000000A3 -:101D40000000000000000000000000000000000093 -:101D50000000000000000000000000000000000083 -:101D60000000000000000000000000000000000073 -:101D70000000000000000000000000000000000063 -:101D80000000000000000000000000000000000053 -:101D90000000000000000000000000000000000043 -:101DA0000000000000000000000000000000000033 -:101DB0000000000000000000000000000000000023 -:101DC0000000000000000000000000000000000013 -:101DD0000000000000000000000000000000000003 -:101DE00000000000000000000000000000000000F3 -:101DF00000000000000000000000000000000000E3 -:101E000000000000000000000000000000000000D2 -:101E100000000000000000000000000000000000C2 -:101E200000000000000000000000000000000000B2 -:101E300000000000000000000000000000000000A2 -:101E40000000000000000000000000000000000092 -:101E50000000000000000000000000000000000082 -:101E60000000000000000000000000000000000072 -:101E70000000000000000000000000000000000062 -:101E80000000000000000000000000000000000052 -:101E90000000000000000000000000000000000042 -:101EA0000000000000000000000000000000000032 -:101EB0000000000000000000000000000000000022 -:101EC0000000000000000000000000000000000012 -:101ED0000000000000000000000000000000000002 -:101EE00000000000000000000000000000000000F2 -:101EF00000000000000000000000000000000000E2 -:101F000000000000000000000000000000000000D1 -:101F100000000000000000000000000000000000C1 -:101F200000000000000000000000000000000000B1 -:101F300000000000000000000000000000000000A1 -:101F40000000000000000000000000000000000091 -:101F50000000000000000000000000000000000081 -:101F60000000000000000000000000000000000071 -:101F70000000000000000000000000000000000061 -:101F80000000000000000000000000000000000051 -:101F90000000000000000000000000000000000041 -:101FA0000000000000000000000000000000000031 -:101FB0000000000000000000000000000000000021 -:101FC0000000000000000000000000000000000011 -:101FD0000000000000000000000000000000000001 -:101FE00000000000000000000000000000000000F1 -:101FF00000000000000000000000000000000000E1 -:08200000481F000080013E04AE -:102008003038F00C19005EBC5C7C4848F00C003994 -:10201800F00C093BB22A5EFC000011C0F80815015B -:102028003039F20C1800E08800035EFDF00B000B5D -:102038004828F00B032C5EFC00007B08580CC0D02D -:1020480048787829F00900293008720A143CC060E1 -:102058002FF82F895848CFA13FF85EF800007B0879 -:102068003038F00C18005EBCF60C001C30094838FB -:10207800F00C09295EFC000000007B085EFFD70316 -:10208800D4011988301EB6881998B6BEEA18FFFF21 -:10209800E818FF80B6AEB698580AC0301588C0A8B0 -:1020A80048981188F4081800C0303038C03848788B -:1020B80011B8B6C83EE8B6D83008B6E8302C306853 -:1020C800B208D802000016AB00000008D40130188E -:1020D800198EB68E199CB6A8EA1CFFFFE81CFF8073 -:1020E800B6B8B69C580AC0A0158CE06A00FFF00C80 -:1020F8001800F4081710F9B80001B6C83EE8B6D8B9 -:102108003008B6E8302C3068B208D802D421202D27 -:102118004AAA189E1698129674075807C071FACAE8 -:10212800FFF814F7F01F0026C4681989B6891999B1 -:10213800EA19FFFFE819FF80B6993039B0A9740988 -:102148007219F20C1618B0F9B0CCF9D9C108F3D944 -:10215800C208B0ECB0D9304BB0BB74097229F20C8C -:102168001618F169000CF16C0009F9D9C108F3D906 -:10217800C208F16C000BF16B0008F169000A7409E0 -:10218800300A7239F16A00133EEAF16A0012F20A63 -:102198001618F1690011F16A000EF16B000DF5D9FE -:1021A800C108F3D9C208F16A0010F169000F302C98 -:1021B8003138AC082FEDD8220000152C800020D42F -:1021C8003038F00C18005EBCF60C001B48F8F00B19 -:1021D800032858085E0C704958195E1C7029581954 -:1021E800C09148B8F00C003C9828B42878089508A5 -:1021F8005EFC71E85808F0091700F1F91001F1F8D0 -:10220800120A9509B4285EFC00007B08000011C082 -:10221800D4314BC8300A10941499910A1893301A83 -:102228004B984BA7910A3EE14B921296C0280A9907 -:10223800E0682710C0485808C5602018664AE21AA6 -:102248000201E04A0201CF81C4F8F2C5FFFFE20AA9 -:102258001800CEE10F9BF7DBC0C15825E0890005C7 -:102268003038300AC2E80FAA3038C148580BC0A02D -:10227800EE08070EEE08000CA96E2FE8199C1C0842 -:10228800C058F0CCFFFFEE080708201AF80800082D -:102298005C5A10395F9CEC0A18005F9EFDEC000C3C -:1022A800EC0C1800CE4110395F09F9DAC008EC0CC3 -:1022B80018005F0CF9E90009EC091800C020D83AA9 -:1022C800840C3009F20C1900CB34201D5C6A1ADB2F -:1022D8001AD849081ADA490C1AD51AD8F01F000F6B -:1022E8002FADCA6BDA3A662A68085C5A2FF8EE09ED -:1022F8000B0A8908E0480063FE9AFFA9305CD832CF -:10230800000014B0000011B8000014B8000016A2B4 -:102318008003792C80037AB0800094C4D431202DB6 -:102328004C68149570081896169712945808C0713E -:10233800FACAFFF814F8F01F0042CC38198830198F -:10234800B6881998B6A9EA18FFFFE818FF80B6986A -:102358004BC89088EDB80002C171189330023EE175 -:102368000788201D4B8C1AD8F01F00382FF22FED4C -:102378000788E2081800C0502FF3E0420400CF118C -:102388004B3CF01F00320DC83099F2081800E08865 -:1023980000114B09920A3009F20A1900E0840091F1 -:1023A8001AD84AD84ADC1AD8F01F00282FEDC88856 -:1023B800E0450032C290A3684A99E0450033C5D091 -:1023C800129B7209F2080309EECAFFFCF3360020DB -:1023D8003009AEB6C088760CF808030CF809070C6B -:1023E8002FF914CCEC091900CF7349A99289EDB9DA -:1023F8000004C5F149A97209F2080308499C1AD8D2 -:1024080049581AD8C538304BA368495A7409F20894 -:10241800030972C9AEBBF20B1618AEC9AEFBF7D9E9 -:10242800C108F3D9C208AEDBAEE948A99289EDB973 -:102438000004C1903046C3D80000152C800020D479 -:10244800000016A080037AF0800094C4800384D42E -:10245800000016A28003785880037AF8000015203F -:1024680080037B187409F208030870C8496C1AD8ED -:10247800304649681AD8C1A8301AAEBA720AF408A8 -:10248800030AF53A0038AECA491A948AEDBA00042C -:10249800C0303016C0E87209F2080308F138003875 -:1024A80048CC1AD8301648981AD8F01F000B2FEDD0 -:1024B8003EE80C07AEC83008AED82FB6A806302CB8 -:1024C8002FEDD83280037B2880037858000016A2AD -:1024D80080037B38800094C4D421204D4A981897F3 -:1024E800118A580AC0313FF6C0D84A7811BC118EFB -:1024F800119611A8B166EDEE1186EDE81086F9E6A1 -:1025080010064A289088EDB80002C0E14A08201D4C -:102518004A0C1ADA1AD61AD8505B5049F01F001E16 -:102528002FCD4009401B49D870085808C081FACA05 -:10253800FFF00E9C14F8F01F001AC2080F88B68826 -:102548000F98EA18FFFFE818FF80B6983018B6A869 -:102558003048B6B8F1D6C108B6E83EE8EC0A161815 -:10256800B6F6F7680008B6CA3008EDD6C208F768AC -:102578000009B6D63098302CB2082FCDD8220000EA -:102588000000152800007B28000016A28003782090 -:1025980080037B48800094C40000152C800020D460 -:1025A800D401580BC0313FF8C0C8178A17B917981B -:1025B800B168F1EA118817AAF1EA1088F3E810085F -:1025C800F00A161848E9B28AF5D8C208B2B8B29A21 -:1025D800F5D8C108B2AA48B99289EDB90002C0A1DC -:1025E800201D1AD848881ADC488C1AD8F01F000811 -:1025F8002FCD30194878B089D802000000007B2818 -:10260800000016A28003799C80037B74800094C428 -:1026180000001528D431204D4AE8189570081697FF -:1026280012965808C071FACAFFF014F8F01F002A71 -:10263800C4D84AA89088EDB80002C1711894300334 -:102648003EE20988201D4A6C1AD8F01F00262FF395 -:102658002FED0988E4081800C0502FF4E043040067 -:10266800CF114A1CF01F001F0B880BCCAE880B98AB -:10267800EA18FFFFE818FF80AE983004BA445014F7 -:102688003025FACAFFFCAEA5301BF01F0018304AEF -:10269800EF64000CEF6500084018F0091618AEF852 -:1026A800AEC99A49AEBAF5D8C108F1D8C208EF69DF -:1026B800000AAED8AEEA3EE8F3D9C108EF68000BCD -:1026C800EF69000930C8302CAC082FCDD832000093 -:1026D8000000152C800020D4000016A080037AF09A -:1026E800800094C4800384D4800021C8D40148A801 -:1026F8009088EDB80002C0E148887008201D1AD8FB -:10270800487811881AD84878487C1AD8F01F0007EA -:102718002FCDDA0A000016A200000008000016AB50 -:10272800800379E480037BA8800094C4D42148E620 -:10273800189E30076C0C580CC0A02FF72EC6E04727 -:102748000024CF91489CF01F000ADC2A4866EE0757 -:102758000027EC070027EF680010AECE8F0B8F2AFA -:102768008F39D822000011E080037BC4800094C414 -:10277800D4214C8618970C9A302830094C6B310CB0 -:10278800F01F00460C9A302830094C5B311CF01FB2 -:1027980000430C9A302830094C2B312CF01F003F95 -:1027A8000E990C9A30284C0B314CF01F003C0E99B6 -:1027B8000C9A30284BDB315CF01F00383018300998 -:1027C8004BBA4BCB320CF01F003530184BA73009F1 -:1027D8000E9B4BAA321CF01F00310E9B301830099B -:1027E8004B7A322CF01F002D4B6532390A9A0E9B1A -:1027F8003018129CF01F002932490A9A0E9B301893 -:10280800129CF01F002632590A9A0E9B3018129C0F -:10281800F01F00220A9A32690E9B3018129CF01F92 -:10282800001F0C9A302830094A7B336CF01F001BBC -:102838000E9B301830094A5A327CF01F00180C9A47 -:10284800302830094A2B330CF01F00144A1533394D -:102858000A9A0E9B3018129CF01F001033190A9A1E -:102868000E9B3018129CF01F000D0A9A33290E9BFC -:102878003018129CF01F00090C9A30283009496B57 -:10288800334CF01F00060E9B30183009493AC278C5 -:10289800800020D48000427C8000273480004118CA -:1028A8008000433080003FD080003EA88000208810 -:1028B800800026F48000208480002114800035ECFC -:1028C80080003514800034A480004B5480003740C9 -:1028D8008000232480003678800024E0335CF01FD9 -:1028E80000370C9A302830094B5B328CF01F0033CC -:1028F8000C9A302830094B3B32DCF01F00300C9A20 -:10290800302830094B0B32ECF01F002C0E9B30188E -:1029180030094AEA329CF01F00290E9B3018300912 -:102928004ABA32CCF01F00250E9B301830094A9A5B -:1029380032BCF01F00220C9A304830094A6B344CE4 -:10294800F01F001E0E9B301830094A4A32ACF01FA7 -:10295800001B0E9B301830094A1A345CF01F001710 -:102968000E9B3018300949FA32FCF01F00140E9BF8 -:102978003018300949CA337CF01F00100E9B3018FC -:10298800300949AA338CF01F000D0C9A30483009E1 -:10299800497B346CF01F00090C9A30283009495BD8 -:1029A800339CF01F00060E9B30183009492A33ACBF -:1029B800F01F0002D82200008000273480003D88E4 -:1029C80080003AC8800038B4800033FC800030D4DE -:1029D800800032848000375C800032088000300438 -:1029E8008000332880002F8C80002EC4800038841B -:1029F800800037CC8000261CD4013038580B5F1972 -:102A0800F00C18005F88F3E80008C060F40C0019A7 -:102A180048D8F009092B48D89088EDB80001C111B1 -:102A280048B848C9580AF20A1700F00A171048A807 -:102A38001ADA1ADB1ADC489C1AD8F01F00092FCDC5 -:102A4800D802000000007B08000016A280037BDC8F -:102A580080037BE4800378C080037BF0800094C40B -:102A6800D401580BF60A1700F7FA180BF01F0002EA -:102A7800D802000080002A00D401320A300B483CFA -:102A8800F01F0003D802000000007B088002E8BCA9 -:102A9800D421206D3087FAC6FFF00E9A4C6B18953A -:102AA8000C9CF01F0046304B0C9CF01F0045300872 -:102AB800FB68000DBA88FB680009FB68000BFB681F -:102AC800000CEE784240501830480E9BFB67000817 -:102AD800FB68000A300AFE7C2400F01F003A1897B1 -:102AE800C0F04B989088EDB80002C0814B78201D4B -:102AF8004B7C1AD8F01F00372FED301CC5A8E06AB0 -:102B0800F980EA1A03371A9BFE7C2400F01F003272 -:102B1800582CC0D14AC89008EE081900C0844AB899 -:102B2800201D4AEC1AD8F01F002B2FEDD303300AD2 -:102B3800E06B01204AACF01F002BD503E1B8000080 -:102B4800EE180001F5D8C201C020D303FE78240096 -:102B58003019705BF7D9D001915B705BF7D9D0C1A0 -:102B6800915B705BF7D9D081915B580AC020D5037F -:102B7800FE7C2400F01F001C0A9CF01F001C364A33 -:102B8800300B49BCF01F001BE06A0400300B49AC55 -:102B9800F01F0018E06A0400300B498CF01F001584 -:102BA800F01F0017497830079107F01F00170E9C97 -:102BB8002FADD822800382078002E7368000A280EA -:102BC8008000A618000016A2800379BC80037C0848 -:102BD800800094C48000A73C80037C2880002C10CF -:102BE8008000A3A08000A7EC80002778000014B81C -:102BF8008002E8BC00000DB8000009B880002A80F7 -:102C0800000000088000751CD401E1B80000EE182F -:102C18000001F5D8C201C020D303FE782400301982 -:102C2800706BF7D9D001916B706BF7D9D0C1916BEC -:102C3800706BF7D9D081916B580AC020D503FE7C00 -:102C480024007848EDB80000C0F1F01F0016C0C19C -:102C5800319CF01F0015495890092FF9B009301917 -:102C68004938B089C1B8E1B80000EE180001F5D8BC -:102C7800C201C020D303FE7824003019705BF7D955 -:102C8800D001915B705BF7D9D0C1915B705BF7D9CC -:102C9800D081915B580AC020D503D402D603000026 -:102CA800800022188000A2E6000014B40000151C61 -:102CB800D4313006189714931694950618983E093F -:102CC800C2C81095118A2FF8F20A1800C251580686 -:102CD800C21049E890093008F0091900C064089B3F -:102CE8000E9C5C7BF01F001A49A890093008F00977 -:102CF8001900C1040C070F98201D1AD849681AD466 -:102D08001AD690881AD84958495C1AD8F01F001565 -:102D18002FAD8706C1882FF60836CD4548D89009CB -:102D28003008F0091900C0353005C0D8201D48A862 -:102D38001AD690881AD8489848BC1AD83005F01F77 -:102D480000092FCD0A9CD832000016A680013DB498 -:102D5800000016A2000014B4800378D080037C48D9 -:102D6800800094C480037C6CD42118971696F01FB9 -:102D780000325F080E3C5F191895F1E91009C03060 -:102D88005808C5710B893E08F0091800C5210B9930 -:102D98003008F0091800C4D5E2190040C0E1EACAB9 -:102DA800FFFD0BAC1298C068158B2FF92FFB160A84 -:102DB80016081839CFA5C2384A089088EDB800021D -:102DC800C0D149F8201D49FC1AD8F01F001FF7D6BA -:102DD800C0100E9CF01F001D2FED3009EACAFFFD40 -:102DE8000BAC1298C0A81587159B2FF9F7E7108B25 -:102DF8002FEB160AF60800081839CF6510053EE9CA -:102E08000BB8F2081800C021DA2A4919920A3009C9 -:102E1800F20A1900C0E4201D1AD848E890881AD888 -:102E2800487848DC1AD8F01F0008300C2FCDD8227B -:102E3800D82A000080002CB8000016A080037974FE -:102E480080037C84800094C480013DB4000016A2F5 -:102E5800000014B480037C8CD4014918581CC0713C -:102E68003039334C9109F01F000FC0683049334C9A -:102E78009109F01F000D48D89088EDB80002C0D124 -:102E880048787008201D1AD848981AD8489848AC2D -:102E98001AD8F01F000A2FCDD80200000000000841 -:102EA8008000A2E68000A300000016A280037A3CFE -:102EB8008003821080037CB0800094C4D421FACDB2 -:102EC80001004AC81697700512965805C071FACACB -:102ED800FF0014F5F01F0028C4A81989301AB68914 -:102EE8001999B6AAEA19FFFFE819FF80B69919B926 -:102EF800F4091800C20119C53FF8F0051800C1B05F -:102F0800E06A00FF300B1A9CF01F001C1A9430086E -:102F1800C048E8080B082FF80A38CFC51A94AEB590 -:102F2800EEC8FFFCFA050009C038093A10CA123485 -:102F3800CFD1C15849256A0CF01F00120A98EECA71 -:102F4800FFFCEBDCC0083009AEB5C068700BF609B1 -:102F5800070B2FF914CBEA091900CF933EE80A07AB -:102F6800AEC83008AED82FB5302CAC052C0DD82201 -:102F78000000152C800020D48002E8BC0000011459 -:102F88008002EDD0D421202D49981697700E129604 -:102F9800580EC071FACAFFF814FEF01F0016C25886 -:102FA8001989B6891998EA18FFFFE818FF80B698BA -:102FB80030184915B6A86A0CF01F0010EEC9FFFCBE -:102FC8005C5C3008AEBCC0686A0AF408070A2FF8CF -:102FD80012CAF8081900CF933EE818072FBCAEC8EC -:102FE8003008AED8AC0C302C2FEDD8220000152CB0 -:102FF800800020D4000001148002EDD0D421202DBF -:103008004AE818967008169712955808C071FACAB7 -:10301800FFF814F8F01F002AC4D84AA811D4303891 -:10302800F0041800E08B0046FACAFFFC1A9B089CC3 -:10303800F01F00250D88C300AE880D98EA18FFFF21 -:10304800E818FF80AE983018AEA81BC8AEB89A280A -:10305800AEC83008C0B8F3D8C010400BF1DAB010D1 -:10306800EE09000AF6090709B4D9F0CAFFFF9A2940 -:10307800F2081900CF13F1D9C010EE0800083EEA93 -:10308800B0DA9AA82FA910073008AEE8AA09089C58 -:10309800F01F000EC0E8AE880D98EA18FFFFE81888 -:1030A800FF80AECCAE98AEAC3EE8AEB83048AA08C9 -:1030B800302C2FEDD82200000000152C800020D4E1 -:1030C80000000DB880006BF480006FBCD431202D57 -:1030D8004C5818967008169712955808C071BAE897 -:1030E800FACAFFFAF01F0041C728F8C8FFFDC3C09D -:1030F80011842FF4F0040004C37009893018F00912 -:103108001800C67109993EE8F0091800C6214B88D5 -:1031180090093008F0091900C5C44B681AD44B6CE3 -:103128001AD8F01F00362FEDC548099309A9F3E313 -:1031380010835C83C54809893018F0091800C1510B -:1031480009993EE8F0091800C1014A989009300829 -:10315800F0091900C0A44A781AD44A7C1AD8F01F7A -:1031680000272FEDC02830030DB43018F0041800E4 -:10317800C2D10DCC3038F00C1800E08B0028F5D304 -:10318800C008FACBFFF9F01F001E0D88C120AE88D9 -:103198000D98EA18FFFFE818FF80AEB4AE98AEA409 -:1031A8001BF8AEC83EE8AED83008AEE83068C0D8E4 -:1031B800AE880D98EA18FFFFE818FF80AE983EE841 -:1031C800AECCAEB8AEAC3048AA08302C2FEDD83211 -:1031D80009883029F2081800CA9030032FF8100423 -:1031E800CAB1CC3B0000152C800020D4000016A2E8 -:1031F8008003780C80037CBC800094C480006FE05E -:10320800D421202D49A81697700E1296580EC07119 -:10321800FACAFFF814FEF01F0017C2681989301A9D -:10322800B6891999B6AAEA19FFFFE819FF80B69975 -:1032380019B9F4091800C0D119C83039F2081800B2 -:10324800E08B000848C9F208033CF01F000CC028B6 -:10325800300C3018AEB83EE8AECCAED83008AEE888 -:10326800302C3068AC082FEDD82200000000152C57 -:10327800800020D400007B0880004D78D421202DC8 -:103288004A181697700E1296580EC071FACAFFF8AF -:1032980014FEF01F001EC3481989301AB6891999FF -:1032A800B6AAEA19FFFFE819FF80B69919B9F40917 -:1032B8001800C0B119CC3038F00C1800E08B0006AB -:1032C800F01F00135C8CC028300C3028AEB83EE8E4 -:1032D800AECCAEE85C7CF8081608AED83008AEF87C -:1032E8003078AC0848B89088EDB80002C08148A88A -:1032F8001ADC48AC1AD8F01F000A2FED302C2FED3D -:10330800D82200000000152C800020D480006D38E1 -:10331800000016A8800378A880037CD8800094C495 -:10332800D421202D4AA81697700512965805C07109 -:10333800FACAFFF814F5F01F0027C4781989301A63 -:10334800B6891999B6AAEA19FFFFE819FF80B69954 -:10335800303819B919C5F40918005F09F0051800C3 -:103368005F881268C19049C8F00503345804C060EA -:10337800089C301BF01F0019C10849989009E809FA -:103388001900C0A449781AD5497C1AD8F01F00172B -:10339800089C2FEDC028300C3018AEB83EE8AECCF3 -:1033A800AED83008AEE83068AC0849189088EDB857 -:1033B8000002C0A148B8201D1ADC48EC1AD51AD85A -:1033C800F01F000A2FCD302C2FEDD8220000152C2D -:1033D800800020D400007B0880004F1C000016A647 -:1033E8008003794080037CEC800094C4000016A818 -:1033F80080037D10D421202D4A181697700E12963E -:10340800580EC071FACAFFF814FEF01F001EC34818 -:103418001989301AB6891999B6AAEA19FFFFE81965 -:10342800FF80B69919B9F4091800C0F119C83039E4 -:10343800F2081800E08B000A4939F2080038300B0E -:10344800701CF01F0012C028300C3018AEB83EE8CF -:10345800AECCAED83008AEE83068AC0848C8908822 -:10346800EDB80002C08148B81ADC48BC1AD8F01F71 -:10347800000B2FED302C2FEDD82200000000152C6A -:10348800800020D400007B0880004F1C000016A894 -:1034980080037A6480037D28800094C4D40149584D -:1034A8009088EDB80002C08149381ADC493C1AD826 -:1034B800F01F00132FED49383009118AF20A18005D -:1034C800C021DC0AB089F01F0010581CC1004898C0 -:1034D80090093008F0091900C025DA0A48681ADC92 -:1034E80048AC1AD8F01F0006301C2FEDD802000097 -:1034F800000016A28003798480037D38800094C47C -:10350800000016AA80019EF880037D54D421202D46 -:103518004B281496700E16971295580EC071FACA59 -:10352800FFF814FEF01F002EC5681989B68919988E -:10353800EA18FFFFE818FF803014B698B6A4F01F09 -:103548000029C3E0E0460025C260E0460026C3200B -:10355800EEC9FFFCE0460024C0F0129AF9380020BA -:103568003009AEB8C058F809070B2FF914CBF00989 -:103578001900CFA3C28830682DACAEB8306A3008C5 -:10358800198B12CB2FF8201C5C88F4081900CF91F6 -:103598003068C19878C8F0091618AEF93049AEC835 -:1035A800AEB9F3D8C108F1D8C208AED9AEE83048F0 -:1035B800C0A8AEB4F9380038AEC83018C048AEB4A8 -:1035C800AECC18983EE91007AEC93009AED92FB86D -:1035D800302CAA082FEDD8220000152C800020D40A -:1035E8008001997CD421202D49F8189670081697E7 -:1035F80012955808C041FACAFFF8C1881988B688D8 -:103608001998EA18FFFFE818FF803019B698306853 -:10361800B6A9B6B81A9CF01F0015581CC0B00A9974 -:103628000E9B0C9CFACAFFF8300814F8F01F001023 -:10363800C1881BD8AEC81BC8AED81BB8AEE81BA83B -:10364800AEF81B98EF6800081B88EF6800093EE891 -:10365800EF68000A3008EF68000B302C30B8AA0871 -:103668002FEDD8220000152C80019128800020D44D -:10367800D421FACD010016961A971A9C173AF01F12 -:103688000025FAC9FF000D88F20800083009F16921 -:10369800FF004A189088EDB80002C08149F81AD78F -:1036A80049FC1AD8F01F001F2FED300849E749FAE6 -:1036B800AE88AE98AEA8AEB8B488109949CA0E9B29 -:1036C8001A9C1A96F01F001B5C5CC040E06C00FF5F -:1036D800C1E849189088EDB80002C1510F8A0FB9A6 -:1036E8000F98B168F1EA11880FAAF1EA1088F3E897 -:1036F8001008201D1AD848981AD648FC1AD8F01F66 -:1037080000092FCD30194898301CB0892C0DD822CB -:103718008002E736000016A280037A7C80037D646D -:10372800800094C400007B2800001528800025A88C -:103738008000C4C080037D84D401F01F0006E068C7 -:1037480000FF581CF00C1710F9BC0001D80200004B -:10375800800199CCD42118971696335CF01F001677 -:103768005827C1F10D980D89F1E910893018F00931 -:103778001900C1710DA80DBA0DC9303BF608180023 -:10378800E0880004300CC04848CBF608033CA96A1E -:10379800ECCBFFFB120A5C7AF01F00091897C028CF -:1037A8003FF7335CF01F0007E06C00FF5817F9BCC7 -:1037B8000001D8228000A30000007B08800053C0CD -:1037C8008000A2E6D421202D581CC4211789F809AD -:1037D8001800C3E1F6C8FFFE1796C170118AF20AF5 -:1037E8001800C131119A3EE9F20A1800C0E149B93E -:1037F800920A3009F20A1900C0841AD84988499CEB -:103808001AD8F01F00192FED3008FACAFFF8300B4C -:1038180014E80C9CF01F00159A3A18973038F006F7 -:103828001800E0880004300CC0484918F006033C32 -:103838005C7A0E9BF01F000F18950C9CF01F000E71 -:103848000E9CF01F000E5815C0310A9CC038E06C61 -:1038580000FF2FEDD8220000000016A28003795C3B -:1038680080037CBC800094C4800072DC00007B086C -:103878008000514080006E188002E28CD401582CE0 -:10388800C13117981789F1E910893018F009190022 -:10389800C0B117C817BA17ACA96A2FBBF00A000A3B -:1038A8005C7AF01F0002DA0A80007380D421581C69 -:1038B800C391580BC0311697C1E81788F80818004B -:1038C800C3411797C33817893018F0091800C13158 -:1038D80017993EE8F0091800C0E1497890093008C6 -:1038E800F0091900C08449581ADB495C1AD8F01F3E -:1038F80000152FED49089088EDB80002C08148F8FE -:103908001AD7491C1AD8F01F000F2FED3038F007CE -:103918001800E08B000848D8F007033CF01F000CA3 -:10392800DA2AE06C00FFD82230072FF8100BCCC140 -:10393800CE2B0000000016A2800379F880037CBC1F -:10394800800094C480037DA800007B088000599CF7 -:10395800D421202D4B981896169414971295908878 -:10396800EDB80002C1314B694B685805F2081700E1 -:10397800201D1AD816985C781ADA1AD84B281ADC3F -:103988004B2C1AD8F01F00322FAD3038F007180032 -:10399800E0880005E06C00FFC8584AE8F0070338E3 -:1039A80050085808C1504A59920A3009F20A1900B9 -:1039B800C0841AD84A484A8C1AD8F01F00252FED1F -:1039C800400CF01F002630094A28F00709391A9CD4 -:1039D800E06A04005016300B1ADC14981AD75C748D -:1039E8001ADB16991AD5089C1ADA169A1AD6F01FF5 -:1039F800001C49282FAD580CC3819088EDB80002EF -:103A0800C1511AD71AD41AD6403850461AD848D8AD -:103A180048B95805F2051700F005171048A81AD537 -:103A2800490C1AD8F01F000A2FAD0E9C400BF01F4E -:103A3800000E301CC3780000000016A280037DC869 -:103A480080037DC4800379C480037DCC800094C446 -:103A580000007B0880037DF88000599C80005D642D -:103A680080037E2480002A689088EDB80002C15146 -:103A78001AD71AD41AD6403850461AD848B848C95E -:103A88005805F2051700F005171048A81AD548ACD4 -:103A98001AD8F01F000A2FAD300948983FFCF007EC -:103AA80009392FEDD822000080037DC480037DC82A -:103AB800800379C480037E50800094C400007B0892 -:103AC800D431584CE081008E580BC2A01785F805F8 -:103AD8001800E081008A179817A7B167EFE81187E7 -:103AE80017B8EFE8108717C8F1E71007C7E80B8980 -:103AF8003018F0091800C7E10B993EE8F0091800E2 -:103B0800C7914C2890093008F0091900C7344C08AF -:103B18001AD54C0C1AD8F01F00402FEDC6B81697CE -:103B28003006C1F80B960BA8F1E610865C86C688AD -:103B380007893018F0091800C72107993EE8F009ED -:103B48001800C6D14B1890093008F0091900C6743E -:103B58004AF81AD34AFC1AD8F01F002F2FEDC5F8DF -:103B68003005C1B80795C61809893018F00918003A -:103B7800C61109993EE8F0091800C5C14A389009EC -:103B88003008F0091900C5644A181AD44A1C1AD812 -:103B9800F01F00212FEDC4E83003C1A80993C50820 -:103BA80009893018F0091800C13109993EE8F0096F -:103BB8001800C0E1495890093008F0091900C0847C -:103BC80049381AD4493C1AD8F01F00132FED06992A -:103BD8000A9AF7D6C0100E9CF01F0010581CC0306F -:103BE800E06C00FFD83230072FF5F6050005C80154 -:103BF800C98B0B833028F0031800C95030062FF307 -:103C0800EA030003C961CADB000016A280037A98A0 -:103C180080037CBC800094C4800039580784301825 -:103C2800F0041800CA0030052FF4E6040004C9D1D6 -:103C3800CB4B09883019F2081800CB1030032FF845 -:103C48001004CAF1CC5B0000D421202D3038169620 -:103C58001494F00B1800E08B0072300750074BA843 -:103C68001188EE081800C0B04B889008EE081900BB -:103C7800C654201D4B684B7C1AD8C0F84B69138971 -:103C8800F0091800C0E14B589008EE081900C56407 -:103C9800201D4AF84B2C1AD8F01F00322FEDC4E82B -:103CA8001A9AE0690400501712981ADAEBDCC0106F -:103CB8001ADB0E9A1AD70E9B1AD40A9C1AD93019F5 -:103CC8001AD7F01F00294A182FAD580CC1B1908897 -:103CD800EDB80002C1114A584A595804F2041700B5 -:103CE800F004171049A81AD64A2C1AD51AD41AD88B -:103CF800F01F001C2FCD0C9C400BF01F001F301C28 -:103D0800C1F89008EE081900C11449884989580477 -:103D1800F2041700F004171048D81AD6497C1AD5AF -:103D28001AD41AD8F01F000F2FCDA17630092FF61C -:103D380049383FFCF0060929C038E06C00FF2FED38 -:103D4800D822000000007B07000016A280037A102A -:103D580080037E80000016AB000016A680037EA0BC -:103D6800800094C480005D6480037DC480037DC8A6 -:103D780080037EB880002A6880037EDC00007B0810 -:103D8800D421583CC661580BC24017843028F0042F -:103D98001800C621179717A8F1E710875C87C5D8C0 -:103DA80009893018F0091800C5D109993EE8F009C9 -:103DB8001800C5814B6890093008F0091900C5241E -:103DC8004B481AD44B4C1AD8F01F00342FEDC4A816 -:103DD80016973006C1B80996C4B80B893018F0098F -:103DE8001800C4B10B993EE8F0091800C4614A886C -:103DF80090093008F0091900C4044A681AD54A6CB9 -:103E08001AD8F01F00262FEDC3883004C1A80B94E0 -:103E1800C3A80B893018F0091800C1310B993EE886 -:103E2800F0091800C0E149A890093008F009190004 -:103E3800C08449881AD5498C1AD8F01F00182FED6C -:103E48000E9C089A0C9B5C7CF01F0015581CC03017 -:103E5800E06C00FFD82230072FF4F6040004CA11E2 -:103E6800CB9B09853018F0051800CB6030062FF57C -:103E7800E8050005CB31CCAB0B883019F2081800E7 -:103E8800CC7030042FF81005CC51CDBB000016A221 -:103E98008003791480037CBC800094C480003C506B -:103EA800D431204D1495740A501A18961788301971 -:103EB800F2081800C771F6C7FFFE1794C1700F8982 -:103EC800F0091800C1310F993EE8F0091800C0E167 -:103ED8004B7890093008F0091900C0844B581AD75C -:103EE8004B5C1AD8F01F00352FED4B189088EDB8B1 -:103EF8000002C0A14AF81AD44B1C1AD61AD51AD8EF -:103F0800F01F002E2FCD3028F0041800E08B004B56 -:103F18003006304030114A624A63C3E80F88E0082F -:103F28001800C4010F990FA8B168F1E911880FB9F9 -:103F3800F1E910880FC92FB7F3E810085807C170C6 -:103F48000F89E2091800C1310F993EEAF4091800F7 -:103F5800C0E18409300AF4091900C0941AD7496CE1 -:103F68001AD35028F01F00152FED400850388489C7 -:103F7800EDB90002C0A11AD84029492C1AD91AD67D -:103F88001AD3F01F000E2FCDF9D6C008FACBFFF4D4 -:103F98002FF6F01F000D0836CC253008301CAAC8B3 -:103FA800C038E06C00FF2FCDD8320000000016A208 -:103FB80080037A4C80037CBC800094C480037F0813 -:103FC80080037F308000C19CD431203D3019149487 -:103FD800189674051788F2081800E0810085F6C75E -:103FE800FFFE1792C1700F89F0091800C1310F99AF -:103FF8003EE8F0091800C0E14BD890093008F009F4 -:104008001900C0844BB81AD74BBC1AD8F01F003B14 -:104018002FED4B789088EDB80002C0A14B581AD20A -:104028004B7C1AD61AD41AD8F01F00342FCD30384A -:10403800F0021800E08B005830064AD04AD1FAC383 -:10404800FFF8C4B80F88304AF4081800C4C10F99A3 -:104058000FA8B168F1E911880FB9F1E910880FC903 -:104068002FB7F3E810085807C1800F89301AF409F0 -:104078001800C1310F993EEAF4091800C0E180091F -:10408800300AF4091900C0941AD749BC1AD150282B -:10409800F01F001A2FED400850288089EDB9000262 -:1040A800C0911AD8497C1AD51AD61AD1F01F001314 -:1040B8002FCD5816C0805826C0B0069B0A9CF01F0A -:1040C8000012C0A8069B0A9CF01F0010C058069B4F -:1040D8000A9CF01F000F2FF60436CB553008301C11 -:1040E800A8C8C038E06C00FF2FDDD832000016A247 -:1040F800800378F080037CBC800094C480037F0830 -:1041080080037F308000CBC88000CA748000CA92C8 -:10411800D421FACD00884C6816979088EDB8000233 -:10412800C0B14C48201D1ADC1AD84C384C3C1AD85F -:10413800F01F00432FCD344A300BFAC6FFFC0C9C0D -:10414800F01F0040306AE06B00FFFACCFFDBF01F85 -:10415800003D0F8A31F8F00A1800E08B008930889A -:10416800EECBFFFFFB68003C0C9CF01F00370F896B -:10417800FB6900244AE89088EDB80002C0A14AE82B -:10418800201D4B2C1AD91AD61AD8F01F002D2FCD66 -:104198000F882FF8FAC6FFB810070C9C0E9B173A29 -:1041A800F01F002BFAC9FF780F88F20800083009C1 -:1041B800F169FFC049E89088EDB80002C0B10F88E6 -:1041C800201D1AD849C81AD64A2C1AD8F01F001C24 -:1041D8002FCD0F8A3018FAC7FFFC3089FACBFFB809 -:1041E8000E9CF01F001D581CC0C0491890093008CB -:1041F800F0091900C3C44908498C1AD81AD8C0E86C -:10420800497CF01F000F0E9C300BF01F001618970A -:10421800581CC080201D1ADC493CF01F00092FEDF6 -:10422800C268492CF01F00060E9CC238000016A276 -:1042380080037A248003787080037F50800094C4C0 -:104248008002E8BC8002E73680037CB08002EE0C76 -:1042580080037F648001908480037F7880037FA03F -:10426800800099A880037FB880037FC0E06C00FFBE -:104278002DEDD822D42120AD4A461697178A31F859 -:10428800F00A1800E08B002FFAC5FFF92FFB0A9CF3 -:10429800F01F001F0F88FAC9FFD8FB680027100914 -:1042A8003008F368FFDF8C88EDB80002C0814998B8 -:1042B8001AD5499C1AD8F01F00192FED300BFACCEB -:1042C800FFF9F01F00171897581CC1B048F890095B -:1042D8003008F0091900C1541ADC48E8491C1AD8FA -:1042E800C0D88C093008F0091900C0353FF7C098CC -:1042F800201D488848CC1AD83FF7F01F00082FED3A -:104308000E9C2F6DD8220000000016A28002E7360E -:10431800800378E080037B18800094C4800099A80B -:1043280080037D5480037FC4D431216D4D281697B6 -:104338009088EDB80002C0B14D08201D1ADC1AD8CB -:104348004CF84D0C1AD8F01F00502FCD321AFAC66F -:10435800FFFD300B0C9CF01F004D0F8A31F8F00A5E -:104368001800E08B0085EECBFFFF0C9CF01F004887 -:104378000F88FB6800234C089088EDB80002C081C4 -:104388004BF81AD64C3C1AD8F01F003F2FED0F8679 -:104398002FF6EE060006FAC7FFAC0C9B0E9C173AE8 -:1043A800F01F003D0D88FAC9FFA8F20800080E9C0E -:1043B8003003F163FFFCF01F00393038EFDCC00830 -:1043C8000D89F00718005FB53018F00918005F185C -:1043D80010450A94E6051800C4A1ECCBFFFDFAC30A -:1043E800FFDC2FE6069C0D8AF01F002B0D88FAC90A -:1043F800FFA8F2080008069BF165FFCCFAC5FFC0CC -:104408000A9CF01F002730D81896F00C18005F1986 -:104418003058F00C18005F18F3E80008E808180096 -:10442800C261FAC4FFB2306AE06B00FF089CF01F5B -:1044380000170C9B08990A9A0E9CF01F001A0E9CF4 -:10444800F01F0019300BFACCFFFDF01F0018581CA4 -:10445800C100489890093008F0091900C0844888BC -:104468001ADC493C1AD8F01F00082FEDE06C00FF59 -:104478002EADD832000016A280037888800379AC6C -:1044880080037F50800094C48002E8BC8002E73635 -:1044980080037FE48002EE0C8002DC2C80009868A8 -:1044A8008001927080019258800099A880037D5401 -:1044B800D401319CF01F0010E06B00EFFE7C280057 -:1044C800F01F000E581CC060FE7C2800F01F000C76 -:1044D800CFC0319CF01F000B48B890093008F00994 -:1044E8001900C0844898201D489C1AD8F01F00095C -:1044F8002FEDD8028000A3008000A7FA8000A7F261 -:104508008000A2E6000016A28003790880037FF0ED -:10451800800094C4D431202D3008FAC7FFF81696CD -:10452800189514930EE81694098B0A9C2FF4F01F23 -:104538000009581CC0B00E9B0A9CF01F0007089881 -:104548000C18E6081900CF13300C2FEDD8320000F4 -:104558008000A7FA8000A816D421202D30081496D0 -:10456800F80C002C129AFAC9FFF812E84A88F00CE5 -:10457800002C169578280C9B0A9C5D184A583049DF -:10458800319C9109F01F00249ABA0C9BFE7C2400F0 -:10459800F01F00221897319CF01F00214A189088BC -:1045A800EDB80002C0414A0CF01F002049D890889D -:1045B800EDB80002C0D149E8201D49EC1AD8F01F17 -:1045C800001B49D80A9C908BF01F001C2FED4958FE -:1045D8009088EDB80002C041499CF01F00144918AA -:1045E8009088EDB80002C0C14918201D491C1AD88E -:1045F800F01F000E9AFB0C9CF01F00102FED9A394B -:1046080049080E9CB0092FEDD8220000000011E0E7 -:10461800000011B88000A3008000451C8000A2E6BD -:10462800000016A080038008800094C480037800EE -:1046380080037C84000011BE80013DB48003800C9F -:10464800000011BCD431202D4BC43048E8C3FFF022 -:10465800BAF81897199616910C90F8C2FFFD2FC456 -:104668003005E21000400988EC081800C4B107883A -:104678003029F2081800C1F10A9C4B08EA05002508 -:10468800029AF00500240E9BE8C5FFF46839F01F74 -:10469800002CC030301CC4E868086A0A049B0FACC0 -:1046A8005D18BAFCE216004030181BF9F009180032 -:1046B800C3C1C3D85800E00A1700F9BA0100E8F8E6 -:1046C800FFFC049B0FAC5D18BAFC30190788F20890 -:1046D8001800C0B10A9C4998EA050025029AF0051D -:1046E80000250E9B6A39C0A83049F2081800C0A1FD -:1046F800029A0E9B0A9CFAC9FFF9F01F0011C170BB -:10470800C1882FF52EC42EC3E0450024CAD148D84D -:1047180090093008F0091900C08448B81AD648BC76 -:104728001AD8F01F000B2FED302CC048304CC02891 -:10473800300C2FEDD8320000000011E080004560F9 -:10474800000016A28003789880038010800094C42B -:10475800D421202D4BD8910C30094BD8118AF20A5C -:104768001800E08000DAB08930085018E1B800007D -:10477800EE180001F5D8C201C020D303FE7824004A -:104788003019706BF7D9D001916B706BF7D9D0C124 -:10479800916B706BF7D9D081916B580AC020D50303 -:1047A8004AC7FACAFFFC6E0B4ABCF01F002C1896C9 -:1047B800C6E04AB8303A6E09910A401B4A98161961 -:1047C800B009E06A03FFF4091900E0880005E06910 -:1047D8000400B0094A064A37EC0B000B4A2C8E8AB3 -:1047E800F01F002230084A2BAC8849FCF01F00213A -:1047F800584CC2204A089088EDB80002C0C149F858 -:10480800201D49FC1AD8F01F001F8E8B496CF01F21 -:10481800001E2FED49889088EDB80002C0D1497874 -:10482800201D497C1AD8F01F00174988490C908B25 -:10483800F01F00152FED4879300893084899B20801 -:1048480048799308C46800000000152C0000151C66 -:10485800000014B0000014B880002D70000011B8DA -:10486800000011BE00000DB88002E736000009B84C -:104878008000464C000016A0800379D880037C8411 -:10488800800094C480013DB4000011BCF01F0024D6 -:104898004A489008EC081900C0A44A3890881AD8E9 -:1048A8004A284A3C1AD8F01F00232FED4A289009BD -:1048B8003008F0091900C0644A084A1C909BF01F90 -:1048C80000214A19300893084A09B20849C9B28830 -:1048D800E06B0120FE7C0D80F01F001DE1B8000098 -:1048E800EE180001F5D8C201C020D303FE782400D9 -:1048F8003019705BF7D9D001915B705BF7D9D0C1E3 -:10490800915B705BF7D9D081915B580AC020D503C1 -:10491800319CF01F00102FEDD8220000800044B811 -:10492800000016A2000014B4800379D88003802CFC -:10493800800094C4000016A6000014B0000014B84B -:1049480080013DB4000011B8000011BE8000A20033 -:104958008000A300D431207D4B6730054B664B782F -:104968001188EA081800EC081710EE0817004B4CDD -:104978001AD8F01F00344B481188EA081800EC07D1 -:1049880017104B2C50074B2230074B23F01F002DDC -:104998000E942FED4B01CBD86A005800E08000B28E -:1049A80080286009201D1AD95028F01F002C602A81 -:1049B8002FFD580AE60A1700E20A171040185C781B -:1049C80060491AD84A681ADC1ADA4A6A5809F40996 -:1049D8001700F00917104A4C1AD91AD01AD61AD744 -:1049E800F01F001860482F8D5808C431E0C9FFBC7B -:1049F800720A580AC0E0744B201D49CC1ADB1ADA37 -:104A08001AD850595048F01F000F2FCD40084019B0 -:104A18002FF82FC95848CED161585808C610704988 -:104A2800493C1AD91AD8F01F00072FEDC598000085 -:104A3800800380548003805C000016AB8003806094 -:104A4800800094C400007B078003807400007B080A -:104A580080037BE480037BDC800096A880037DC410 -:104A680080037DC880038088800380B8800380D05D -:104A780061E85808C350F11900127008201D1AD8AF -:104A8800507850395028F01F002761EA2FFDF53B78 -:104A9800001040291AD940281AD81ADC4A2C1ADBE7 -:104AA8001ADA50B8F01F0021FACAFFE00C9B5084B4 -:104AB800FB5400240E9CF01F001E2FBD40305050A8 -:104AC8001AD0FB1800145028F01F00162FFD4018AC -:104AD8001AD81AD01ADC497CF01F00142FCD0E9C6E -:104AE800F01F001549594968580CF2081710201D85 -:104AF800494C1AD8F01F000D493CF01F000C2FED4F -:104B08002FF62FC55826FE91FF492FF75847C0505A -:104B1800E40700353006C41BF01F000C2FADD83257 -:104B2800800096A8800380E8800094C4800021C893 -:104B380080038114800070788003812C8003812891 -:104B480080038130800381408000D680D431204D9D -:104B58004BE812911896169711895809C1A119881E -:104B6800B6881998EA18FFFFE818FF80B6C9B69802 -:104B7800B6A93EE8B6B83048A2084B589088EDB8B8 -:104B88000002E08100E7201D4B284B3C1AD8C228C0 -:104B9800FACCFFF4F01F0031403366105800C1E131 -:104BA8000D88AE880D98EA18FFFFE818FF80AEA0C0 -:104BB800AE9830093EE8AEC9AEB83048A2084A48B7 -:104BC8009088EDB80002E08100C5201D4A184A4CC3 -:104BD8001AD8F01F00242FEDCBC858B0F9B0020A3C -:104BE80030044A12C0786408F004032C2FF4F01F34 -:104BF800001F641849C51034CF736A0C3004F01FC5 -:104C0800001B8B14661B580BC460A36B301CF01F71 -:104C180000188B0CC3A1497CC1486608F002030B3D -:104C28006A080408501B5008F01F00134008910C34 -:104C3800401B6A082FF4F002030C580CC20148FC10 -:104C4800F01F0008C2880000000016AA000016A283 -:104C58008003783C8003816080018F048003817C1D -:104C6800800094C4000015208002E28C8002DC3CA5 -:104C7800800381988002E2A4800381C0344AF01F37 -:104C880000376A182FF88B18E8021502344C66189A -:104C98001034CC430D88AE880D98EA18FFFFE81849 -:104CA800FF803005AE98AEA030364AD20A984AD96D -:104CB8000E93640AEA0B1502F40B030AF537002079 -:104CC800F4070B08ECCCFFFF2FF7E60C000C5C5741 -:104CD800300AE6060B07C0886404E80B0304E80AF8 -:104CE80007042FFA18C40E9EEE0A1900CF630E9A15 -:104CF8002FFAF4060006928A5C56EDBA0002C1D17A -:104D0800640A202DF40B0304503950281A9C306A89 -:104D1800E8CBFFDFF01F001168CA1ADAE93A003859 -:104D28001ADA491A1AD7491C1AD41AD51ADAF01FEE -:104D380000102F8D400840192FF50035CBB53EE8FF -:104D4800E6060B08069730080C07AE982FF6A20661 -:104D5800302C2FCDD83200008002E7360000152015 -:104D6800000016A28003783C800381E4800094C48C -:104D780048781188580CC0215EFF5C68100C300818 -:104D8800F9390015F00918005F1C5EFC00001530A9 -:104D9800D4211897580CC2A04968F129000030089E -:104DA800F2CA0004F00900065836F5D8E9062FF8CB -:104DB800EE06002C791C163CC17148F89088EDB8B5 -:104DC8000001C0A148D81ADB48DC1AD61AD71AD86D -:104DD800F01F000C2FCDF9D6C00830082F06EE06BC -:104DE80000278F18D8225848CDE1E06C00FFD82260 -:104DF80000001530000016A2800382688003830437 -:104E0800800094C4D42118971695580CC2B04978DC -:104E1800F12900003008F2CB0004F00900065836EA -:104E2800F7D8E9062FF8EE06002A751A580AC03096 -:104E38000A3AC16148E89088EDB80001C0A148D895 -:104E48001AD548DC1AD61AD71AD8F01F000C2FCD5D -:104E5800EE060027F9D6C008EF450044D822584886 -:104E6800CDD1E06C00FFD82200001530000016A25A -:104E780080038CF080038304800094C4D4211897A5 -:104E8800580CC2A049E8F12A00003008F4CC00040C -:104E9800F00A00065836F9D8E9062FF8EE06002978 -:104EA80073195809C170580BC0F049689088EDB85B -:104EB8000001C0A149481AD9494C1AD61AD71AD89C -:104EC800F01F00132FCDEE06002748D8B0866F1CC0 -:104ED800D8225848CDE1580BC10048A8900930089D -:104EE800F0091900C0A448881AD748AC1AD8F01F8E -:104EF8000008300C2FEDD822D82A00000000153009 -:104F0800000016A280038CB880038304800094C438 -:104F180080038324D4214CB816951188189730063D -:104F2800EC081800E08000B6300BF01F004718941A -:104F38005807E0800097580C5F19EC0518005F08C7 -:104F4800F3E81008EC081800E080008C4BF8908813 -:104F5800EDB80002C3314BE811894BE89088EDB8F1 -:104F68000001C2C15C69EE09002871185808C041E7 -:104F7800109E1096C098EE09000AF53E0015F2CA78 -:104F8800FFF8EE0A03266F5A201D580AF40C170082 -:104F9800F5FC10045808F00B1700F1FB10041ADE9A -:104FA8001AD61ADC1ADA1ADB1AD84AB81AD74ABC3F -:104FB8001AD91AD8F01F002A2F6D5805C3D068488F -:104FC80058485F1958085F181268C3304A08118991 -:104FD8004A089088EDB80001C2C15C69EE09002852 -:104FE80071185808C04110951096C098EE09000A2B -:104FF800F5350015F2CAFFF8EE0A03266F5A201D90 -:10500800580AF40C1700F5FC10045808F00B1700A8 -:10501800F1FB10041AD51AD61ADC1ADA1ADB1AD8D8 -:1050280048D81AD748DC1AD91AD8F01F000D2F6DA6 -:10503800E93C0013D8226F58F13C0013D822000035 -:10504800000016AB80004E84000016A80000153042 -:10505800000016A28003828C80038348800094C4D9 -:1050680048D890093008F0091900C1345807EE08EB -:105078001700EE041700EFF810151AD848781AD45C -:10508800487C1AD71AD8F01F0007300C2FCDD82229 -:10509800D82A0000000016A88003828C8003838C25 -:1050A800800094C4D421580CC25049D8F12900007A -:1050B8003008F2CA0004F00900075837F5D8E907A4 -:1050C8002FF8F807002E7D1E163EC12149589088FA -:1050D800EDB80001C0A149481ADB1AD71ADC493CCF -:1050E8001AD8F01F00132FCD0E9C5C5CD8225848AC -:1050F800CE31490890093008F0091900C045E06C24 -:1051080000FFD8224888201D1ADB1ADC48AC1AD8C0 -:10511800F01F0007E06C00FF2FCDD82200001530EB -:10512800000016A6800382BC80038304800094C418 -:10513800000016A2800383C0D421580C5F18580BB6 -:105148005F1918961695F3E800081494C590580A44 -:10515800C5704AC89088EDB80001C0C114985C7841 -:10516800201D1AD84A881ADB4A8C1AD8F01F002842 -:105178002FCD4A889088EDB80001C0D14A28201D5B -:105188004A5C1AD8F01F0022089B0A9C5C7BF01F1F -:1051980000232FED300A5C74149C089BF01F00203C -:1051A8001897C0E149789008F8081900C29449682E -:1051B8001AD649CC1AD8F01F00162FEDC1C8089A84 -:1051C8000A9B781CF01F00180E9B6DECF01F00174F -:1051D8005C5CC12048B890093008F0091900C08407 -:1051E80048981AD6492C1AD8F01F00092FED0E9CA2 -:1051F800F01F0010DC2A0E9CF01F000EDA2ADC2AB1 -:10520800000016A280038CE4800383E8800094C425 -:10521800000016A080037C8480013DB48000D31870 -:10522800800383FC8002E7368001153880038428D8 -:105238008000D13CD421149518971696580CC0417B -:10524800E06C00F6D822F01F00163FF8E9DCC00831 -:10525800F0041800C041E06C00FFD822491890887B -:10526800EDB80001C0E16C48201D1AD848E85C651B -:1052780048EC1AD51AD61AD71AD8F01F000D2FAD38 -:105288006C4858485F0948B8B0893008EE040004F3 -:10529800E9680068F01F00088F7CD82A800050ACAD -:1052A800000016A280038D1080038450800094C4EF -:1052B80000007B0780009504D43118971695F01FDD -:1052C80000353FF8EDDCC008F0061800C5E0EE0632 -:1052D80000083009F1690015ECC8FFF8EE0803244E -:1052E8005804C5304AC89088EDB80001C0A14AB832 -:1052F800201D4ABC1AD41AD41AD8F01F002A2FCD60 -:10530800EB1800726EF91238F20817B00838F0047A -:1053180017804A589088EDB80001C051F01F00234B -:105328004A38910CECC8FFEA3019EE08032B089AAA -:105338000A9C5C7AF01F001FE7DCC008C19049A8EE -:105348009088EDB80001C0F16A48201DF3D3B00879 -:105358001AD91AD41AD849181AD5497C1AD8F01F5C -:1053680000112FAD0C073008EF680015C10830197F -:10537800ECC8FFF8EE060006ED690015EE080329F3 -:105388000819EE080929C038E06300FF069CD832E6 -:10539800800050AC000016A680038C7880038474CB -:1053A800800094C4000016A2800095040000153403 -:1053B800800109C08003848CD43116941493189703 -:1053C800580CC1014AB89008F8081900E08400D3C5 -:1053D8004A98201D4A9C1AD8F01F00293FFC2FED3F -:1053E800D832300BF01F0027189B18960E9CF01F20 -:1053F80000263FF8EBDCC008F0051800E08000BB91 -:105408004A289088EDB80001C0E1F1D3C010201DF2 -:105418001AD849981AD449EC1AD61AD71AD8F01FAC -:1054280000182FAD49B89088EDB80001C0D14928BF -:10543800201D499C1AD8F01F0012F7D3C010089CF1 -:10544800F01F00162FED49189088EDB80001C4B17F -:105458004938118948789088EDB80001C4415C69E1 -:10546800EE09002871185808C1C11092109EC21880 -:10547800000016A280038D20800384C0800094C49D -:1054880080004E84800050AC000016A6800384D8AB -:10549800000016A080037C8480013DB40000153014 -:1054A800EE09000AF5320015F2CAFFF8EE0A032EDB -:1054B8006F5A201D580AF40C1700F5FC1004580800 -:1054C800F00B1700F1FB10041AD21ADE1ADC1ADAF4 -:1054D8001ADB1AD84A881AD74A8C1AD91AD8F01F50 -:1054E80000282F6D5806C46058045F183009F2036D -:1054F80019005F1AF5E80008F2081800C3B0EAC8F6 -:10550800FFEAEE08032C580CC3506C4858785F0B20 -:1055180058485F0AF7EA100AF20A1800C0515828DA -:10552800C0305838C2715C73089B069AF01F00158A -:10553800EAC9FFEA300AEE090328F0030B0A4928F2 -:105548009088EDB80001C0A1EE0903281AD848A830 -:1055580048EC1AD8F01F000A2FED48DB0C9C2F8569 -:10556800EE050923F01F000B0C9B0E9CF01F000A90 -:10557800DA3ADC3A80038D2080038348800094C4A3 -:105588008002E736000016A6800384FC800055A040 -:105598008000D662800052C0D431149518971696B0 -:1055A800580CC041E06C00F6D832F01F001D3FF8DF -:1055B800E9DCC008F0041800C041E06C00FFD832F4 -:1055C8003009EE040008F16900683019F169001526 -:1055D80049489088EDB80001C171E8C8FFF8EE08A5 -:1055E8000323F01F00114918201D1AD37008F8086A -:1055F80001081AD848E85C7548EC1AD51AD61AD8A2 -:10560800F01F000D2FAD2F84EE04032C580CC06042 -:105618000C9B0E9CF01F0009300CD832800050AC57 -:10562800000016A2800095040000153480038D50F8 -:1056380080038508800094C4800052C0D421189744 -:10564800580CC1C0F01F000E18965BFCC060EF3B01 -:10565800000B5C5CF01F000B48B89088EDB80001A7 -:10566800C0A148A8201D48AC1AD61AD71AD8F01FCE -:1056780000092FCD30094888B089D82280002044FD -:1056880080002068000016A280038D3C80038538C6 -:10569800800094C400007B07D4314898189711897A -:1056A80048889088EDB80001C3015C69F8090028B2 -:1056B80071185808C08110951096C0D80000153090 -:1056C800000016A2F809000AF5350015F2CAFFF81D -:1056D800F80A03266F5A201D580AF40C1700F5FC27 -:1056E80010045808F00B1700F1FB10041AD51AD64D -:1056F8001ADC1ADA1ADB1AD84C281AD74C2C1AD901 -:105708001AD8F01F00422F6D0E9C3005F01F004084 -:10571800EEC6FFBC0A924BF34BA45C5CF01F003E44 -:105728006C08300B2FF5109C5808C1D0F01F003BB7 -:105738006C0C300BF01F003A6C0C300BF01F00396A -:105748006C0C300BF01F00388688EDB80001C0B132 -:10575800201D1AD26C0870484B4C1AD81AD4F01F66 -:10576800002B2FCD2FC65845CDC16F5C580CC1D02A -:10577800300BF01F002A300B6F5CF01F002D6F5CA0 -:10578800F01F002C4A385C5C9088EDB80001C0D14D -:10579800201D5C6C1ADC6F5870481AD849984A6CFE -:1057A8001AD8F01F001A2FCD6FEC580CC060F01FEC -:1057B80000236FECF01F00224A28F1260000495808 -:1057C8009088EDB80001C0E1ECC8FFEAEE080328B4 -:1057D800201D1AD848B81AD649BC1AD8F01F000B91 -:1057E8002FCD2EA6EE06032C580CC060F01F001714 -:1057F8003008EE0609280E9CF01F0014D83200006D -:1058080080038CC880038348800094C480002044AF -:10581800000016A280006F288000D6588000D6624B -:105828008000D65C8000D668800385608000D66ED4 -:105838008000E50480038588800111C88001122852 -:1058480000001530800385B08002E28CD4211897BF -:10585800580CE080007EF01F00413FF8EDDCC008E6 -:10586800F0061800C750EE0600287114089CF01FB7 -:10587800003CEBDCC008C0D10A9B089CF01F003933 -:105888000A9B089CF01F00380A9B089CF01F0037F1 -:105898004B789088EDB80001C0D1F1D5B0081AD87E -:1058A80068481AD84B381AD44B3C1AD8F01F003322 -:1058B8002FCD4AF43FF8F0051800C1718809300867 -:1058C800F0091900C0D4EE0600287118201D1AD856 -:1058D8004AB81AD64ABC1AD8F01F00282FCD0C0790 -:1058E8003018EF68006CC368EE0600083009F169EB -:1058F800006CEE0600280E9C711BF01F00238888A0 -:10590800EDB80001C0E1ECC8FFEAEE080328201D4D -:105918001AD849B81AD649DC1AD8F01F00182FCD62 -:105928002EA6EE06032C580CC060F01F0019300894 -:10593800EE06092848E89088EDB80001C0B149088A -:10594800201D494C1AD8F01F000D2FEDC038E06516 -:1059580000FF0A9CD8220000800050AC8000E504BB -:105968008000D6588000D6628000D65C000016A25F -:1059780080038D2C800385CC800094C480038CD850 -:10598800800385F880004D98800385B08002E28C02 -:1059980080038624D4211897580CC0E14BE890085E -:1059A800F8081900C7744BD8201D4BDC1AD8F01F13 -:1059B800003D2FEDD82278264BB85806C121F12595 -:1059C8000000F01F003A0E9CEF34000BF01F003867 -:1059D800089B5C5CF01F00370A07EF660068D82256 -:1059E80011894AD89088EDB80001C2C15C69F809EC -:1059F800002871185808C04110951096C098F809E9 -:105A0800000AF5350015F2CAFFF8F80A03266F5A9E -:105A1800201D580AF40C1700F5FC10045808F00B68 -:105A28001700F1FB10041AD51AD61ADC1ADA1ADB99 -:105A38001AD849A81AD74A0C1AD91AD8F01F001927 -:105A48002F6D4998F1260000ECC5FFF0EE05002502 -:105A58006A1C580CC1F078485898C1C05808C1A0B1 -:105A6800F01F001648C85C5C9088EDB80001C0C102 -:105A7800201D5C6C1ADC6A181AD84888490C1AD898 -:105A8800F01F00082FCDEE0600260E9C6D1BF01FA0 -:105A9800000DD822000016A2800382988003864455 -:105AA800800094C400001530800056A08000204477 -:105AB800800020688003834880010CEC8003865CAA -:105AC80080005854D4214B0818979009169630082E -:105AD800F0091900C0F44AD8F12800001AD8F1DBFF -:105AE800B0081AD84AA81ADC4AAC1AD8F01F002AFB -:105AF8002FCD4AA811893008F0091800C0414A8CF6 -:105B0800F01F00253FB8F0061800C3C15807C110A0 -:105B180049E830091188F2081800C0B53039F20890 -:105B28001800E08900075C68EE080028711BC0288F -:105B3800300B0E9CF01F001B49389088EDB800010F -:105B4800C1114928F1280000201DF0C9FFEAEE091B -:105B580003291AD91AD848E8493C1AD8F01F000E68 -:105B68002FCD48A6ED2800002EA8EE08032C580CCF -:105B7800C090F01F000EED28000030092EA8EE0896 -:105B88000929D822000016A200001530800382A837 -:105B980080038680800094C4000016AB800386B41E -:105BA80080004D98800385B08002E28CD42118973C -:105BB8001696580CC4E04A8890093008F009190074 -:105BC800C0C4F1DBB0081ADC1AD84A481ADC4A4CBF -:105BD8001AD8F01F00242FCD4A3811893008F0094F -:105BE8001800C0414A1CF01F001F3FB8F0061800FB -:105BF800C301499890093008F0091900C084497810 -:105C08001AD749BC1AD8F01F00172FED0E9CF01FA9 -:105C180000194998F126000048F89088EDB800016D -:105C2800C0E1ECC8FFEAEE080328201D1AD848B8DE -:105C38001AD6492C1AD8F01F000B2FCD2EA6EE0627 -:105C4800032C580CC060F01F000E3008EE0609281F -:105C5800D8220000000016A2800382D0800386C8E4 -:105C6800800094C4000016AB800386B4800386F8D5 -:105C78008000564400001530800385B08002E28C15 -:105C8800D4311897149678CC94CAF80A000A8FCAA7 -:105C98001093169512946E385808C1504A5CF01F3C -:105CA8000026EF18001A3509F0090D083008F00928 -:105CB8001900C0414A1CF01F0020EF08001A2FF8F5 -:105CC800EF58001A49E89088EDB80001C171202DFD -:105CD800304A1A9C089BF01F001BF01F001BEF386E -:105CE8000014F3D3C01050091ADC1AD849781AD610 -:105CF800497C1AD8F01F00102FAD0A9AEF3B001408 -:105D08000C9CF01F001409890998B168F1E9118801 -:105D180009A9F1E9108809BBEF3C0014F5D3C010BC -:105D2800104BF01F000D0C9CF01F000CD832000027 -:105D380080037FB4800094C4800384D4000016A23A -:105D48008002E736800096A88003827C800387184B -:105D580080007130800020088000D13CD431204D73 -:105D6800502C503BFAC4FFCC10916800681268238D -:105D780068386846129568545819E088000E4B58E0 -:105D880090093008F0091900E08402B0201D4B2862 -:105D98004B2C1AD8C2F85801C0C14AE89008E2084A -:105DA8001900E08402A3201D4AB84ADC1AD8C22888 -:105DB8005802C0C14A789008E4081900E0840296A5 -:105DC800201D4A584A7C1AD8C158501A500837CB57 -:105DD800301CF01F0025401A18974008C10149D807 -:105DE8009008F8081900E0840281201D49A849FCA0 -:105DF8001AD8F01F001F2FEDE08F0278402999383C -:105E0800B829300840395C729900B831992599DA77 -:105E180099E999F29943F9480050F9480044F9483A -:105E28000048F948004C5803E080008C3058F95875 -:105E38000074F01F0010EF4C00784865580CC1D171 -:105E48008A08F8081900E084020C1AD748A8C8582C -:105E5800000016A280038CA880038744800387640F -:105E6800800387848002DC3C800387A8800094C478 -:105E780080011200800382F88A88EDB80001C131E0 -:105E88006E08201D8EA51AD8F01F00366FE8500541 -:105E98001ADC1AD84B481AD84B484B5C1AD8F01F52 -:105EA80000352FAD6E258EAA6FEC5805C1210E9BCB -:105EB800F01F00315C5CC2504B089008EA081900DA -:105EC800E08401CF1AD74A984ADC1AD8E08F0175C6 -:105ED8004ACBF01F002DF5DCC008C0E04A789009D5 -:105EE8003008F0091900E08401BC201D5C6A49F8FB -:105EF8001ADA1AD7C499EF3C0014149BF01F002338 -:105F08006FEC0E9A4A2BF01F002349C8908CE21CB4 -:105F18000002E08001A76FE8F11900141AD970197E -:105F28001AD9F11900121AD970081AD848E81AD8DB -:105F380048E8499C1AD8F01F000F2FADE08F018F59 -:105F4800F01F00161892C2F148C89008F808190006 -:105F5800E08401871AD749281AD8492CC2D90000E9 -:105F6800800096A88003825C800382F88003880CF6 -:105F7800800094C480011320000016A280038824A6 -:105F88008003B409800112608000200880005C88CA -:105F9800800111F8800388848000E34080038C6CC2 -:105FA800800387E04B880E9BB083F01F0038EF63B7 -:105FB800006FEF63006CEF63006DEF63006E6E2897 -:105FC8004B355808E08100BD049B0E9CF01F003142 -:105FD800E7DCB0086EFCF01F0030E6C8FFEAEE0808 -:105FE800092C8A88EDB80001C0A14AC8201D1ADC16 -:105FF8004ABC1AD31AD8F01F002B2FCD2EA34A451E -:10600800EE0303285808C0B18A09F0091900E08492 -:1060180001281AD74A184A4C1AD8CCE84A3B049C9B -:10602800F01F00234A3B049CF01F00234A3B049CBA -:10603800F01F0023304A4A3B049CF01F00234A38D3 -:106048003009B0898A88EDB80001C0C1EE03032881 -:10605800201D1AD849181AD249DC1AD8F01F001185 -:106068002FCD4898118948A89088EDB80001C5310E -:106078005C69EE09002871185808C2B11093109590 -:10608800C3080000000015308000D658000016A292 -:1060980080004E0C8002E2A480038C6C800388A8E8 -:1060A800800094C4800388C480005BB48000D668F4 -:1060B800800069888000D65C800055A08000D66288 -:1060C800800067B48000D67200007B07800388F4E4 -:1060D800EE09000AF5330015F2CAFFF8EE0A0325A7 -:1060E800201D5808F00B1700F1FB10046F5A580ACE -:1060F800F40C1700F5FC10041AD31AD51ADC1ADAB6 -:106108001ADB1AD84B681AD74B6C1AD91AD8F01F51 -:1061180000362F6D049C4B598EAA0E9BF01F00343D -:106128005C5CE080009F4B3890093008F00919004A -:10613800E08400971AD74AA84AFC1AD8C3D88A8894 -:10614800EDB80001C0F1301B0E9CF01F002C6F58F9 -:106158001ADC1AD84A281AD74A9C1AD8F01F0022E3 -:106168002FCD8EAA4A7B049CF01F00275C5CC120BF -:106178004A0890093008F0091900C724201D5C6CF2 -:1061880049781ADC1AD71AD84A0CF01F00172FCDF5 -:10619800C678049CE06B00FFF01F001DEF4C005414 -:1061A8004945580CC0D18A08F8081900C5941AD76F -:1061B80048B8498C1AD8F01F000C2FEDC5188A88EA -:1061C8004959E21800021389C4505C69EE09002895 -:1061D80071185808C2211095109BC27880038C6CE6 -:1061E80080038348800094C48000523C8000E350C0 -:1061F800000016A28003891080004E84800389382D -:106208008003B4098000D7708003884C8000DC04C8 -:106218008003896400001530EE09000AF535001581 -:10622800F2CAFFF8EE0A032B7843201D5808F00A3B -:106238001700F1FA10041AD51ADB1AD31ADC1ADA85 -:106248001AD84AC81AD74ACC1AD91AD8F01F002B1C -:106258002F6D4ABB6F5CF01F002B300CC0283FFC31 -:106268004A95580CC0E08A093008F0091900C3A4FF -:106278004A68201D4A6C1AD8F01F00202FEDC32849 -:106288008A88EDB80001C2914A284A396E204A31FD -:106298005800F2001700F00017108E226E484A09C5 -:1062A8006EF35808F20117108E355818C0316FEC8C -:1062B800C058301B0E9CF01F001B49481AD05C7256 -:1062C8001AD15C751AD21AD31AD51ADC496C1AD7A6 -:1062D8001AD8F01F000A2F8D8907EF660014300CBA -:1062E800C0580E9CF01F00113FFC2FCDD832000083 -:1062F80080038C6C80038348800094C480006434DD -:106308008000D66E000016A280038CA880038988BE -:1063180080037BDC80037BE480037DC880037DC42D -:1063280080004E84800389A8800056A0D431203D87 -:10633800300730194B38E06504001892169191091E -:10634800E06007D00A9350070E964AF4C22826CC7C -:1063580058ACE08B001F4ADEFC0C032F3016C198A6 -:106368003006C178680CF01F002AE7DCB010C118AD -:1063780030185008C0E8680CF01F0025EBDCB0109E -:10638800C0883017C068680CF01F0021E1DCB0102D -:106398004A0A029B049CF01F00205BFCCD91580622 -:1063A800C161498870080438C0A4E208032BFACCFC -:1063B800FFF8F01F001A402B580BC0A14988201D78 -:1063C800498C1AD8F01F00182FEDC198300B502BAC -:1063D800F1D5C0100C99FAC5FFFC300650161AD535 -:1063E8001AD6402E5C731ADEF9D0C0101AD70C9A50 -:1063F8001AD31ADB0C9BF01F000D2FAD2FDDD83AF6 -:1064080000007AB800007AC0800382208002DC2C69 -:10641800800389E08002E278800098FC0000000C8C -:10642800800389EC800094C480005D64D4211897AF -:106438001696580CC041E06C00F6D8224C1890888B -:10644800EDB80001C0A14C08201D1ADB1ADC4BFC7A -:106458001AD8F01F003F2FCD4BA89088EDB8000147 -:10646800C0F16C481AD8ED1800241AD8ED18001C91 -:106478001AD84B584B7C1AD8F01F00352FCD0C9BDF -:106488000E9CF01F0035EDDCB008ECC8FFEAEE0802 -:1064980003285808C0804B18201D4B1C1AD8F01F21 -:1064A800002C2FED6EFCF01F002FECC8FFEAEE0861 -:1064B800092C4A489088EDB80001C0A14A28201D3F -:1064C8001ADC4A9C1AD61AD8F01F00212FCDECC826 -:1064D800FFEAEE0803285808C10149A99209F00902 -:1064E8001900C08449881AD74A0C1AD8F01F001816 -:1064F8002FEDE06C00FFD8220E9B2F06EE0600263B -:106508006C1CF01F001B49BB6C1CF01F001B49BB17 -:106518006C1CF01F001B6C1C304A49ABF01F001AA2 -:106528000E9CF01F001A583CE08B00075C5C300A98 -:106538000E9BF01F0017F01F00178F7CD82A000051 -:10654800000016A2800382E8800389F0800094C4CA -:1065580080038A1480004E0C80038A3880039DC013 -:106568008002E2A4800388A8800388C48000D658EB -:10657800800069888000D65C80005ACC8000D6688C -:106588008000659C8000D6728000204480002A002C -:1065980080009504D43118971695580CC041E06CCA -:1065A80000F6D832F01F00473FF8EDDCC008F006CF -:1065B8001800C041E06C00FFD832ECC8FFF8EE08C4 -:1065C80003285808EFD6E108F1F91868F7B901FF70 -:1065D800F1F91E68EE0600083049F1380068F20843 -:1065E8001800E088001E4B89920A3009F20A190047 -:1065F800C0A41AD84B581AD74B5C1AD51AD8F01F12 -:1066080000352FCD0C070A9C3006301BEF6600685A -:10661800F01F0031E06C00FBEF66006CD8325805C3 -:10662800C1504AE89088EDB80001C101EAF800A815 -:106638001AD8EAF8009C1AD8EB3800AD1AD84A38AC -:106648004A7C1AD8F01F00232FCDECC8FFF8EE08BB -:1066580003245804C1D049C89088EDB80001C1810D -:10666800EE060008301BF1330068F132006C0E9C16 -:10667800F01F001C4958201D1AD41AD21AD31AD751 -:106688001AD51ADC498C1AD8F01F00122F8D0A9BD4 -:106698000E9CF01F0016EE0600033002E738006C6F -:1066A800E4081800C7100A9CF01F00113FF8E9DC45 -:1066B800C008F0041800C1D13018E768006CC4A8FD -:1066C800800050AC000016A280038C8C80038A4C9A -:1066D800800094C48000E124000016A880038A7C0E -:1066E80080004E8480038AB0800052C08000E50498 -:1066F800EE060028E762006C711B0E9CF01F002359 -:106708004A389088EDB80001C0E1ECC8FFEAEE080D -:106718000328201D1AD849F81AD649FC1AD8F01FA0 -:10672800001F2FCDECC3FFEAEE03032C580CC0600A -:10673800F01F001B3008EE03092849589088EDB86F -:106748000001C0814938201D496C1AD8F01F001378 -:106758002FED48F89088EDB80001C1610E9C301B00 -:106768000C07EF37006CF01F001048A81AD65C64BD -:106778001AD41AD71ADC48DC1AD51AD8F01F000721 -:10678800300C2FADD832D83A80004D98000016A2B0 -:1067980080038C8C800385B0800094C48002E28CD6 -:1067A8008003862480004E8480038AF0D4311897B1 -:1067B8001695580CC041E06C00F6D832F01F003E28 -:1067C8003FF8EDDCC008F0061800C041E06C00FF9F -:1067D800D8324BA89088EDB80001C1A1EE06000898 -:1067E800F1340068F133006C4B58301B11820E9C59 -:1067F800F01F00344B48201D1AD21AD31AD41AD7C6 -:106808001AD51ADC4B1C1AD8F01F00312F8DEE0652 -:1068180000083009F13A006CF20A1800C060F1393A -:1068280000682FF9F1690068EE060008F134006885 -:106838003088F0041800E08800224A68900930087F -:10684800F0091900C104301B0E9CF01F001E49E816 -:10685800201D1AD41AD71ADC49FC1AD51AD8F01FE9 -:10686800001C2FAD30080C070A9CEF680068301B2D -:10687800F01F001AE06C00FBD83249181189300863 -:10688800F0091800C0500A9B0E9CF01F0015EE0678 -:1068980000043008E939006CF0091800C6100A9C99 -:1068A800F01F00103FF8F00C1800C1D13018E9684B -:1068B800006CC3E8800050AC000016A800007B07FD -:1068C80080004E848003824C80038B2C800094C40B -:1068D800000016A280038B6C8000E124800052C067 -:1068E8008000E5040E9CF01F001F49F89088EDB861 -:1068F8000001C0E1ECC8FFEAEE080328201D1AD801 -:1069080049A81AD649AC1AD8F01F001A2FCDECC4E2 -:10691800FFEAEE04032C580CC060F01F0017300883 -:10692800EE040928EE0600083009F169006C48E811 -:106938009088EDB80001C1410E9C301BEE060006A0 -:10694800ED37006CF01F000D48881AD71ADC48CCC8 -:106958001AD51AD8F01F0007300C2FCDD832D83AE4 -:1069680080005644000016A28003824C800385B044 -:10697800800094C48002E28C80004E8480038B984F -:10698800D4311294580A5F1830091497F204180089 -:106998005F0318961695E7E80008F2081800C55036 -:1069A800335CF01F00406CC98EC8F20800088DC81F -:1069B8006C385808C0614BC89088EDB80001C231E6 -:1069C8004BA89088EDB80001C0918EC81AD84B88A2 -:1069D8004B8C1AD8F01F00382FED4B889088EDB8F3 -:1069E8000001C0C14B28201D4B5C1AD8F01F003293 -:1069F8008ECB6E1CF01F00332FEDED08001A2FF818 -:106A0800ED58001A0A9AED3B00140E9CF01F002E58 -:106A18004A689088EDB80001C1218EC8201D1AD897 -:106A28001ADCED38001430091AD91AD71AD51AD831 -:106A380049F84A6C1AD8F01F00202F8D0E9CF01FC1 -:106A48000024335CF01F002358075F081063C160FF -:106A580049689088EDB80001C0C1201D1AD5ED38ED -:106A680000141AD8492849CC1AD8F01F00132FCD82 -:106A78000A9B0C9CF01F0019C1385804C11048B873 -:106A880090093008F0091900C0B44898201D5C64CA -:106A98001AD7493C1AD41AD8F01F00072FCDD83A74 -:106AA8008000A300000016A6000016A280038C98A0 -:106AB80080038BC8800094C4000016A080037C84E7 -:106AC80080013DB48000713080038BD88000D13CB8 -:106AD8008000A2E680038C108000585480038C3C10 -:106AE800D42148C8189716969088EDB80001C0A11F -:106AF8004898201D1ADB1ADC488C1AD8F01F0008A9 -:106B08002FCDF7D6C0100E9CF01F0006D82200002B -:106B1800000016A280038D0480038C50800094C46A -:106B28008000D984D4213007C1B80C9C0E9B2FF665 -:106B3800F01F000D1895C0F078485808C0C1F01F24 -:106B4800000B0A9CEB35000BF01F00090A9B5C5CEC -:106B5800F01F00085846CEA12FF75827C03030063E -:106B6800CE5BD82280002024800056A080002044DC -:106B780080002068D4214978F00C07085808C071B3 -:106B88004959F20C070AF00A1800C1F04929F20C19 -:106B9800070AF4081800C1904909F80C001CF0080D -:106BA8000017A567EE0C0027120748D99289EDB99E -:106BB8000004C0C11AD848B81ADA48BC1AD71AD87B -:106BC800F01F000A2FCDC02830070E9CD8220000E5 -:106BD8000000153C0000153800007B2C000016A6AC -:106BE8008003901080038DE0800094C4D421169710 -:106BF8001496F01F0005C0609828AC087808301C6F -:106C08008F08D82280006B7CD43149B849B91092DA -:106C1800F00C0708F20C070718961AD7498C1AD8EF -:106C2800EC060014F01F001749732FEDA36431E53B -:106C3800EE070018A568E8080008E60800087009CB -:106C48005809C0C090BA90AB1ADB1AD9702848FC12 -:106C58001AD81ADAF01F000B2FCD2FF7E406070811 -:106C68005C57EE051800F9B70000EE081800CE11C1 -:106C7800D8320000000015380000153C80038DF460 -:106C8800800094C400007B2C80038E0CD431201D1E -:106C98004A181896F00C07073005F80C001849F048 -:106CA800A36849F149F231E349F4EE070019A569EF -:106CB800F0090009E0090009720A580AC1D0923B9C -:106CC800922A8289F40B010CE2190010F8050005DC -:106CD8005C855809C1105C7B5C7AF3D5C010201D17 -:106CE800492C1AD91ADB1ADA1AD61AD25068F01FA8 -:106CF80000102FAD40082FF7E80607095C57EE0390 -:106D08001800F9B70000EE091800CD010A9C2FFD04 -:106D1800D83200000000153C00007B2C000016A6AD -:106D280080038DA00000153880038E28800094C44D -:106D3800D421F01F000B48B8EFDCB0109088EDB8F4 -:106D48000004C0A10E985C781AD84878487C1AD8F4 -:106D5800F01F00072FED0E9CD822000080006C94D5 -:106D6800000016A680038D7080038E4C800094C4AA -:106D7800D4214A181897169631D9F20C1800E088D1 -:106D8800000F90093008F0091900C33449B81ADC1B -:106D980049BC1AD8F01F001B2FEDD822F60B001A99 -:106DA8009088F80C0019E2180010A569F20A002969 -:106DB800495AF40903055808C0A04908201D1ADCDF -:106DC800492C1AD51AD8F01F000F2FCD0A9CF01F96 -:106DD80000103008EC060016EE07001748A9A56752 -:106DE800EE060026F20600068D288D08AC28AC3881 -:106DF800D8220000000016A280038DD080038E6880 -:106E0800800094C400007B2C80038E888002E28C72 -:106E1800D4314948F80C00121896F00C0707A36201 -:106E2800491331E44915EE070018A568E40800087D -:106E3800E60803085808C0500E9C0C9BF01F000C75 -:106E48002FF7EA0607085C57EE041800F9B70000A8 -:106E5800EE081800CE914839300CF2060B08D832EB -:106E68000000153C00007B2C0000153880006D7870 -:106E7800D4211897580CC0E14A189008F80819004E -:106E8800C3C44A08201D4A0C1AD8F01F00202FED51 -:106E9800D82249FAF40B070CF8CEFFFFF80C001CB7 -:106EA800A56CF40B0B0E3008F60B0019F809002935 -:106EB800498CF809000993289308B228B23831E9B7 -:106EC800F20E1800C031F40B0B0848D89088EDB8C2 -:106ED8000004C10148E8F00B07081AD848E8F00B8D -:106EE80007081AD848781AD748CC1AD8F01F0007CC -:106EF8002FCD0E9CF01F000AD8220000000016A219 -:106F080080038D8480038E98800094C40000153C13 -:106F180000007B2C0000153880038DE08002E28C95 -:106F2800D42118970E9CF01F0005C060780C0E9BAA -:106F3800F01F0003CF8BD82280006B7C80006E7816 -:106F4800D421496818971696149512949088EDB82C -:106F58000001C0C14928201D1AD91ADA1ADB1ADC27 -:106F6800490C1AD8F01F00102FAD301B0A9CF01FD7 -:106F7800000FC080301B0A9CF01F000C784858088E -:106F8800C0510C9B0E9CF01F000A5804C0500A9B6D -:106F9800089CF01F0008D822000016A280038D600C -:106FA80080038EAC800094C48000202480006AE8AE -:106FB80080006E78D4211897F01F00061898C02119 -:106FC800D8220E9A782C700990ABF01F0003DA2AA9 -:106FD80080006B7C80006F48D42116961494189515 -:106FE800F01F001E1897C021D8229838982B7809CE -:106FF800F6081900C2B2F5D8C0105804C050F20AF9 -:107008000708AC88C068F20A0709AC892FF8B838B5 -:1070180049389088EDB80004C0D10D881AD86E0898 -:107028001AD88EB81AD848F848FC1AD8F01F000F9A -:107038002FCD8E3B8E28F6081900C0710A9A5C7B0A -:107048006E2C6E09F01F000ADA2A0A9A5C7B782CEB -:10705800F01F0007D82A000080006B7C000016A6ED -:1070680080038D9080038ED4800094C480006F4884 -:10707800D4211897F01F00231896C021D8224A2837 -:107088009088EDB80004C0D178081AD898A81AD802 -:107098008CB81AD849D849EC1AD8F01F001E2FCD41 -:1070A8008C398C28F0091900C020DA2A49A8908860 -:1070B800EDB80004C1614998201DF0070709498807 -:1070C8001AD9F00707081AD8F20818005F191AD950 -:1070D8006C081AD848D8493C1AD8F01F000E2FADB2 -:1070E8006C2C6C090E9A8CABF01F000F48C8F00787 -:1070F800070948A8F0070708F00918005F1CD822FC -:1071080080006B7C000016A680038DBC80038EE88F -:10711800800094C4000016A2000015380000153C39 -:1071280080038F0080006F48D43118951697149308 -:10713800580CC0311894CBD8F60B001A4A58F00BEB -:107148000708F0080019A569F20A00294A2AF40973 -:1071580003095809C1604A1A940B300AF40B190044 -:10716800C0A4201D1AD849E81AD949EC1AD8F01F2A -:10717800001E2FCD49780E9BF007070CF01F001B4F -:10718800301B8ACCF01F001A18961894E0800092E1 -:10719800189B30098ACA0A9CF01F00168A485C8C22 -:1071A800F00C1900C2C048D9920A3009F20A190035 -:1071B800C0B45C781AD848A81AD648FC1AD51AD888 -:1071C800F01F00092FCD0C9C3004F01F000CC718CD -:1071D8000000153800007B2C000016A280039004E4 -:1071E80080038F2C800094C480006D788002DC3C82 -:1071F8008000CEC480038F548002E28C4AE9F207F3 -:10720800070AF4CBFFFFF40A001AA56AEE07001874 -:10721800F2070B0BF40800284A8AF4080008300A21 -:107228009123B02C9106B03A31E8F00B1800C03128 -:10723800F2070B0A4A084A29F0070708F207070964 -:10724800F0091800C1C149F9920A3009F20A190077 -:10725800C0A4201D1AD81AD849B849CC1AD8F01F8A -:10726800001C2FCD4948F00707095809F9BA01FF52 -:10727800F3DAE109F9B9001DF0070B0949189088FC -:10728800EDB80004C1618AC848DAF407070A201D6E -:107298000D891ADA488AF407070A1ADA1AD91AD8A5 -:1072A80048981AD648BC1AD71AD8F01F00092F8D4B -:1072B800089CD8320000153800007B2C0000153CD3 -:1072C800000016A28003900480038F90800094C46D -:1072D80080038FBCD431203D1690502A1895F01F9A -:1072E8000021301BE5DCB010F9D2C010F01F001EE1 -:1072F8001896C2C049D8EA050019F0050707A3691E -:10730800189431E849A1189349ABEE070016A56611 -:10731800F2060006F60600066C0B580BC0B0089C77 -:107328008CAA50095018F01F00148CAA4018140495 -:1073380040092FF7E205070A5C57EE081800F9B76D -:107348000000EE0A1800CE110696402A5800E1F611 -:107358001A00580AF5F21C000C9C2FDDD8320000E8 -:1073680080006C948002DC3C0000153C000015385D -:1073780000007B2C8002E736D431303818971693FA -:107388001494F00C1800E088001B48989009300805 -:10739800F0091900C0353005CA2848681ADC3005DC -:1073A8001AD8485CF01F00052FEDC998000016A2F6 -:1073B80080038DB080038FE0800094C4F80C001A1D -:1073C8004C88F00C0708F0080019A569F20A002992 -:1073D8004C5AF40903095809C1604C4A940B300A05 -:1073E800F40B1900C0A4201D1AD84C181AD94C1C2B -:1073F8001AD8F01F00412FCD4BA80E9BF007070CA1 -:10740800F01F003E0892301B5C72049CF01F003C89 -:1074180018961895C640049A069BF01F003AEE0786 -:1074280000184B03E6070702E4020012A562E4080D -:1074380000224AD83001F0020002300B8506A4244D -:10744800A4310E9CF01F0030852CE60707082FF8A2 -:10745800E6070B0831E9F2081800C031E6070B010E -:107468004A084AA9F0070708F2070709F0091800AF -:10747800C1C149E9920A3009F20A1900C0A4201DC5 -:107488001AD81AD849A84A2C1AD8F01F001B2FCD91 -:107498004948F00707095809F9BA01FFF3DAE10981 -:1074A800F9B9001DF0070B0949089088EDB80004E8 -:1074B800C1610D884959F2070709201D1AD9489951 -:1074C800F20707091AD91AD848985C74491C1AD4C3 -:1074D8001AD61AD71AD8F01F00082F8D0A9CD8324E -:1074E8000000153800007B2C000016A280038DB028 -:1074F80080038F2C800094C480006D788002DC3C6F -:107508008002E736800020240000153C80038F901D -:1075180080038FBCD401E06A05A0300B482CF01F13 -:107528000003D80200007B2C8002E8BCD421202D67 -:10753800FE782800501C500B3FF7109E301CC308E3 -:10754800300B7049EDB90001CFD17049EDB9000990 -:10755800CFD140195809C0B01396F2C5FFFE138960 -:107568005015EDE91089F7D9D010C038F7D7D010E9 -:10757800913B7049EDB90000CFD17C2B40095C8B61 -:107588005809C080B29BF7DBC108B28B40092FE9CC -:107598005009F80A1900E0880006202A5C8A580A6F -:1075A800CD01FE78280070482FEDD822580CC06015 -:1075B800FE782800300A7019C058FE78280030FA82 -:1075C8007019F3DAD20491195EFC202D3008E069B5 -:1075D80013885018F8090249C058401A2FF82FFA92 -:1075E800501A1238CFB12FED5EFCD703D401303CCE -:1075F800F01F0005C060303CF01F0004F01F0004BD -:10760800D402D6038000A3708000A38880014014B0 -:10761800D401580CC060300B303CF01F0004D80275 -:10762800303CF01F0003D8028000A31A8000A35C3E -:10763800D401202D3008B888303CF01F0022303C9F -:10764800F01F0021309CF01F001F307CF01F001D30 -:107658003008501840192FF950192FF8E04861A840 -:10766800CFA1309CF01F00193008501840192FF98D -:1076780050192FF8E05886A0CFA1307CF01F0013D6 -:10768800340B300A492CF01F0013FE782800302AEA -:1076980070C9F3DAD108308A91C970C9F3DAD08495 -:1076A800301A91C970C9F3DAD06191C970C9F3DA97 -:1076B800D001303C91C9F01F00082FEDD80A000016 -:1076C8008000A2A88000A2BE8000A2E6800075F417 -:1076D8008000A3A08000A388D42120AD4C68E3B823 -:1076E8000001D5533017FE6810007109F3D7D20294 -:1076F800303AF1490040E06B1B00EA1B00B7FE7C02 -:107708000C00F01F003E310A201D30081ADA0E99CD -:10771800109B308AFE7C0C00F01F003930080E994F -:107728000E9A109BFE7C0C00F01F0036300BFE7C7E -:107738000C00F01F0035FE7C0C00F01F0034300CEC -:107748001ADC18981899189A1ADC189BFE7C0C00F9 -:10775800F01F002F0E9CF01F002F302BFE7C0C001A -:10776800F01F002DF01F002DD503304AFAC7FFD0B7 -:107778004ABB0E9CF01F002B302B0E9CF01F002ADA -:10778800FAC8FFDC4A99722C109B912CE06AF980A8 -:10779800EA1A0337F2E40000FE7C1800F0E5000066 -:1077A800F01F0023308A4A3B0E9CF01F001E310A4E -:1077B800FAC6FFEC300B0C9CF01F001F3018304B42 -:1077C800FB68002149DCF01F00180C9BFE7C280098 -:1077D800F01F001B3009FE7C2800129B129AF01F34 -:1077E80000190E9C0E96304BF01F000F2FCDFAC7D4 -:1077F800FFD8C2D8800376008000A5088000A4B016 -:107808008000A4CE8000A4E68000A4F48000A470C8 -:107818008000A2228000A4FE8000A3D080039038BC -:107828008002E7368000A2808003901C8000AA1C9A -:10783800800390308002E8BC800390288000A66214 -:107848008000A69C0D8C2FE6F01F000F0E36CFB1DE -:10785800FACBFFFCFE7C2800F01F000C3009FE7CF0 -:107868002800129A129BF01F000AFE7C2800F01FC5 -:107878000009302CF01F0008FE7C2800F01F0005CE -:107888002F6DD8228000A2BE8000A6628000A69C30 -:107898008000A7EC8000A2E6D42130A81896F00C4E -:1078A8001800C0C1E067271020175BF7C13030DB34 -:1078B800FE7C1800F01F0008CF81E0672710201712 -:1078C8005BF7C0800C9BFE7C1800F01F0003CF8183 -:1078D800D822DC2A8000A9AED401178A17B91798D4 -:1078E800B168F1EA118817AAF1EA1088F3E81008DC -:1078F8001AD81ADC483CF01F00042FEDD80200000B -:1079080080039064800094C4D421202D4AB811D9F2 -:10791800BAD97009500911C8BAC81A961895169498 -:10792800581CE08900064A6CF01F0026C448761CE3 -:10793800F01F0025201DEFDCC0084A4C1AD7F01FA5 -:1079480000212FED5825C2A0682CF01F001F201D14 -:10795800EDDCC00849EC1AD6F01F001A30182FEDDC -:10796800F0061800C111305A49AB0E9CF01F001ADE -:1079780030AA49AB0E9CF01F00180E9C308A498B28 -:10798800F01F0015C1883028F0061800C141300AE0 -:107998000E9C149BF01F0013C0E83038F007180045 -:1079A800E08B000A300B0E9CF01F000F1A9B306A08 -:1079B800F01F000E2FEDD82A800396B88003909808 -:1079C800800094C48002DC2C800390C4800390D093 -:1079D800800390E480007380800390EC800390F82B -:1079E800800072DC8000202480005140D421189649 -:1079F8001695582CC45176174B3B0E9CF01F00333C -:107A08001896C1014B2CF01F00334B38FE798000CB -:107A1800B0094B28B0064B28B0064B28B006E08FBB -:107A280001C44B1B0E9CF01F0029C1D14AA89088A5 -:107A3800201D4AEC1AD8F01F00274A8890884ACCA3 -:107A48005008F01F00244A6890884AAC5008F01F7C -:107A580000214A4890884A8C5008F01F001E2FEDDC -:107A6800E08F01A30E9C4A5BF01F0018C0C14A4C6E -:107A7800F01F0018E06900FF4978E08F0195582C45 -:107A8800E089000749FCF01F0013E08F018E762C77 -:107A9800F01F001D18975836E08101876A1649BB08 -:107AA8000C9CF01F000AC53148B85807E08A000846 -:107AB8009009A1A9B0095817C2A1C3089009A1C982 -:107AC800B009C2C8800391048002ECC88003910801 -:107AD800800094C4000016A2000016A6000016A09C -:107AE800000016A8800391148003911C8003913430 -:107AF8008003914C800391648003E18C8003917C26 -:107B0800800391888002DC2C800392144B799208C0 -:107B1800A1A8B2085827C071C0D84B499208A1C87B -:107B2800B208C0884B299208A1A8B2085837C0717A -:107B3800C0A84AF99208A1C8B208C0584AD9920800 -:107B4800A1A8CAC84AB99208A1C8CA884AAB0C9C5D -:107B5800F01F002AC2F14AA85807E08A00089009D5 -:107B6800A3A9B0095817C061C0C89009A3C9B00932 -:107B7800C08849E99208A3A8B2085827C071C0D89C -:107B880049A99208A3C8B208C08849999208A3A82D -:107B9800B2085837C071C0A849599208A3C8B2089A -:107BA800C05849499208A3A8C79849299208A3C868 -:107BB800C758494B0C9CF01F0011C3E149085807EE -:107BC800E08A00089009A1B9B0095817C061C1B886 -:107BD8009009A1D9B009C17848499208A1B8B2085A -:107BE8005827C161C1C80000000016A6000016A0F1 -:107BF800000016A88003921C8002ECC8000016A2A0 -:107C0800800392204B699208A1D8B208C0884B59CA -:107C18009208A1B8B2085837C071C0A84B19920889 -:107C2800A1D8B208C0584B099208A1B8C3784AE94C -:107C38009208A1D8C3384ADB0C9CF01F002DC30161 -:107C48004AC85807E08A00089009A3B9B00958172C -:107C5800C061C0C89009A3D9B009C0884A09920870 -:107C6800A3B8B2085827C071C0D849D99208A3D878 -:107C7800B208C08849B99208A3B8B2085837C07189 -:107C8800C0A849899208A3D8B208C058496992087F -:107C9800A3B8C04849499208A3D8B208C858496B44 -:107CA8000C9CF01F0013C3D149285807E08A00082C -:107CB8009009A5A9B0095817C061C0C89009A5C9FD -:107CC800B009C08848699208A5A8B2085827C151C8 -:107CD800C1B848399208A5C8B208C168000016A6FC -:107CE800000016A0000016A8800392248002ECC8A9 -:107CF800000016A2800392284AC99208A5A8B208D3 -:107D08005837C071C0A84A999208A5C8B208C05887 -:107D18004A799208A5A8CC2B4A599208A5C8CBEB5A -:107D28000C9C4A4BF01F0024C3F14A485807E08ACC -:107D3800000B9009EA19FFFFE8198000B0095817ED -:107D4800C071C1089009F3D9C00FB009C0B849C9BA -:107D58009208EA18FFFFE8188000B2085827C08187 -:107D6800C11849789009F3D9C00FB009C0B848F9CB -:107D78009208EA18FFFFE8188000B2085837C08157 -:107D8800C0E848A89009F3D9C00FB009C08848894D -:107D98009208EA18FFFFE8188000C80B48489009C5 -:107DA800F3D9C00FB009D82A000016A0000016A801 -:107DB800800392308002ECC8000016A2000016A6CC -:107DC800D421582CC2717617495B0E9CF01F001500 -:107DD800C1211897494CF01F0015201D494C1AD78E -:107DE800F01F00120E9C2FF7F01F00122FED5847BE -:107DF800CF51C1380E9CF01F0010201DEFDCC008C9 -:107E080048BC1AD7F01F00090E9CF01F000A2FED7E -:107E1800C04848ACF01F0005D82A000080039238FB -:107E28008002ECC88003923C800094C4800390C414 -:107E380080006C108002DC2C80039250D421207DBD -:107E4800306A18951696FAC7FFEAE06B00FF0E9C99 -:107E5800F01F00385825C1B16C1C4B7BF01F003750 -:107E68001896C4B14B6CF01F00370E9B0C9CF01F8A -:107E780000360E9B301CF01F00340E9B0A9CF01F2E -:107E880000320E9B303CF01F0030C5085825E08AB0 -:107E980000356C1CF01F002D6C2B1897500B169C8E -:107EA800F01F002B58DC5F04585C5F08E9E81008F5 -:107EB800ECC5FFFC109418963008FACCFFF8400B7C -:107EC800F0041800C0500C9AF01F0022C238F01FAE -:107ED800002258375F98580C5F091896F3E8100885 -:107EE800E8081800C0A15807C085C0916A08118920 -:107EF8003308F0091800C030498CC098585C5F18E6 -:107F080058DC5F19F3E80008C050495CF01F000D09 -:107F1800C0D85C570C9BFAC9FFEAFACAFFF80E9C56 -:107F2800F01F00100E9CF01F00102F9DD82A000093 -:107F38008002E8BC800392808002ECC880039288AB -:107F4800800094C48001921C8002DC2C8002EDD059 -:107F58008002EE0C800098688003929C800392DC7B -:107F68008001927080019258D421204D4ABC149609 -:107F7800F01F002B1A9CF01F002B581CC0504AAC55 -:107F8800F01F0027C0A81A9CF01F0028201D1ADC2B -:107F98004A7CF01F00232FEDF01F002618974A6C2B -:107FA800F01F001F5807C0514A4CF01F001DC04861 -:107FB8000E9CF01F00234A376E0CF01F0023C1F0FF -:107FC8006E087018201D1AD8F01F0020500C4A0C9B -:107FD800F01F00136E0870285008F01F001C500C8A -:107FE80049CCF01F000F6E0870385008F01F0017BA -:107FF800500C499CF01F000A2FEDC048497CF01F27 -:108008000008497CF01F00060DC93018F009180057 -:10801800C2A1494CC298000080039314800094C404 -:10802800800191288003932C8000967080039348E8 -:108038008001997C80039358800393A880009784DB -:10804800000080D08000CAE4800096A8800393686E -:10805800800393788003938880039398800393B078 -:10806800800393B8493CF01F0014FACCFFF4300B9E -:10807800F01F0012301B4037FACCFFF8F01F000F3A -:10808800201D1AD750574047F01F000D500C48DCF0 -:10809800F01F000950075047F01F0009500C48AC6A -:1080A800F01F0005F01F0009300C2FED2FCDD8224E -:1080B800800393C4800094C48000C1EC800096A81B -:1080C800800393D080039DC08000495CD421202D7B -:1080D8001695584CE089000649ECF01F001FC3684C -:1080E800FACCFFFC761BF01F001D6A2C4014F01F11 -:1080F800001C18976A3CF01F001A18966A4CF01F6B -:108108000018501418951ADC496C1AD61AD71AD4C4 -:10811800F01F0011089CF3D5C008F5D6C0080E9BC7 -:108128005C7BF01F00112FCD5BFCC10148F8900962 -:108138003008F0091900C0A448D81AD548DC1AD666 -:108148001AD71AD8F01F00042FCD2FEDD82A000017 -:10815800800393DC800094C4800098FC8002DC2CAF -:108168008003941480003958000016A280039054AC -:1081780080039448D4211695583CE089000649CCE0 -:10818800F01F001CC338761CF01F001B18976A2CC0 -:10819800F01F001918966A3CF01F00174978201D37 -:1081A80018941AD649651AD7580CF0051710495C67 -:1081B8001AD5F01F0010089AF7D6C0085C5A0E9C12 -:1081C8005C7CF01F00112FCD5BFCC10148F89009C1 -:1081D8003008F0091900C0A448D81AD648DC1AD7C4 -:1081E8001AD51AD8F01F00032FCDD82A80039488F7 -:1081F800800094C48002DC2C80037DC480037DC889 -:10820800800394B880003C50000016A28003969C1E -:10821800800394DCD421206D1697582CE089000641 -:108228004A4CF01F0025C438761CF01F00246E2B22 -:10823800F8C700011A9CF01F0022304A1A9BFAC6A0 -:10824800FFEC0C9CF01F001F201D40681AD8F01F7F -:10825800001E1ADC49DC1AD7F01F00170C9B0E9C75 -:108268005C5CF01F001BFACCFFE0300BF01F00191C -:10827800301B4087FACCFFE4F01F00162FDD505763 -:108288001AD74056F01F00101AD71ADC492C50870D -:10829800F01F00092FDD50461AD6F01F000B1AD622 -:1082A8001ADC48EC5076F01F00042FCD2FADD82AE9 -:1082B80080039510800094C48002DC2C800098FC18 -:1082C8008002E736800096A8800395388000C19C1C -:1082D8008000C1EC8003955480039564D421FACDC5 -:1082E8000108581CE0890006491CF01F0012C1D87B -:1082F800F6C9FFFCF8CA0001FAC7FFFCE06B0100F1 -:108308000E9CF01F000DC110300948CAFACBFEFCC4 -:108318000E9CF01F000B5C5CC0814418489C1AD866 -:108328001AD7F01F00042FED2BEDD82A800395747F -:10833800800094C480009710800078E08000C4C05A -:1083480080039064D43121AD18961695582CE08995 -:1083580000064A1CF01F0021C3B8FAC7FFFC344AC4 -:10836800300B0E9CF01F001E306AE06B00FFFACC49 -:10837800FFDBF01F001BFAC4FFB8EAC9FFFCECCA18 -:108388000002320B089CF01F00171893C210189AAD -:10839800089B0E9CF01F00143088FB6300242016F5 -:1083A800EA060326FB68003C0C9CF01F00100C9B9F -:1083B800189A30180E9C3089F01F000D581CC08088 -:1083C80048C8201D48CC1AD8F01F00042FED2E6D88 -:1083D800D83A000080039590800094C48002E8BCDD -:1083E800800097108002E7368002EDD080019084EB -:1083F80080039048800395B4D42121AD1696582C5B -:10840800C05049BCF01F001BC308FAC7FFFC344A20 -:10841800300B0E9CF01F0018306AE06B00FFFACC9E -:10842800FFDBF01F0015ECC9FFFC301AFAC6FFB8D5 -:10843800320B0C9CF01F00111895C170189A0C9BF8 -:108448000E9CF01F000F3088FB6500240E9CFB6813 -:10845800003CF01F000C581CC08048B8201D48BCC8 -:108468001AD8F01F00042FED2E6DD82A800395D45A -:10847800800094C48002E8BC800097108002E73630 -:1084880080018FF8800396AC800395ECD431204DA1 -:108498001493189516947406582CC091761C304A7B -:1084A8004A7BF01F0028C0513018C458584CC0806F -:1084B8004A5CF01F00264A6CF01F0024C3D8761BC4 -:1084C8001A9CF01F00240A9A1A9BFACCFFF4F01F9A -:1084D80000224A289088EDB80002C0B1201D40480B -:1084E8001AD849F81AD649FC1AD8F01F00182FCD07 -:1084F800FAC7FFF40C9C0E9BF01F001B682B1A9CFC -:10850800F01F0014304A1A9B0E9CF01F00130E9B9C -:108518000C9CF01F0016683B1A9CF01F000E304A96 -:108528001A9B0E9CF01F000C0E9B0C9CF01F001059 -:108538001A953008A6C82FCDD83A0000800392803B -:108548008002EDE680039610800094C48003964074 -:10855800800098FC8002E736000016A28003903C59 -:10856800800396688000CBC88000CA928000CA74D5 -:10857800D421212D581CE0890006491CF01F001148 -:10858800C1C8F6C9FFFCF8CA0001FAC7FFD8320B08 -:108598000E9CF01F000D1896C1000E9B189AFAC782 -:1085A800FFF90E9CF01F0009300BFB6600270E9C9C -:1085B800F01F0007F01F00072EEDD82A80039684CD -:1085C800800094C4800097108002E736800099A844 -:1085D8008000998CD401F01F0003F01F0003D80A13 -:1085E80080019EF880009820D40148BE1898300970 -:1085F8007C0C580CC0A1F2090019487EFC0900291E -:10860800932A9318930BD8022FF92F4E58F9CF11AC -:10861800DC0A000000001544D401484CF01F000497 -:1086280030194848B089D802800396C0800094C4A5 -:10863800000015F8D4314B68169570065806C050DE -:108648005816E08100BAC938580CE08000B5F01F10 -:1086580000314B18910C1897580CE08000AD19891F -:10866800EC091800C0415805C460C4284AB44AC37C -:108678008906C188EC060018E60800287012049CD8 -:108688005802C0E0F01F002718910E9CF01F00252B -:108698000E9BE20C0D4A049CF01F0023C3102FF61A -:1086A8008906680649D258E6FE98FFE658F6C28160 -:1086B8005805C210049749DCF01F001D3008498690 -:1086C8008508C128F0080018EC0800287009580926 -:1086D800C0807018201D497C1AD8F01F00152FED96 -:1086E8006E082FF88F086E0858E8FE98FFED492CA1 -:1086F800F01F000F4888700CF01F0010C5C80E9CB2 -:1087080048FB49074906F01F0011C2C8000016407F -:108718008002ED8400001644000015400000154456 -:108728008002EDD08002EDE6800396C8800094C4F4 -:10873800800396E0800396C48002E28C80039364F1 -:10874800000015FC000016008002EEB86E08EC0868 -:10875800092C2FF88F085908C070498B300CF01F6E -:108768000018580CCF41301949689109496949786E -:108778007008F0080018F20800284959702A720C8D -:108788007008494B5D18581CC1705805C040492CE9 -:10879800F01F001248E83007340A0E9B910748DCA6 -:1087A800F01F000F48F8700CF01F000F4858301CDD -:1087B8009107D832D83ADA3A800393648002EEB847 -:1087C800000016400000154400001540000015FC8C -:1087D80000001600800396C4800094C48002E8BCA0 -:1087E800000016448002E28CD421202D1897FACB81 -:1087F800FFFCFE7C1800F01F0012583CC080584C4B -:10880800C081E0690100FE7818009109301CC15848 -:10881800401C58DCC03130ACC0B8588CC081F01F47 -:108828000009320CF01F00071BFCC0285C5CF01F1D -:1088380000054018300CAE882FEDD8228000A9C260 -:10884800800078A0D431202D30A1FAC0FFF930D2B1 -:10885800308349B749B630043005009CF01F001A30 -:10886800C2A11BF8E20818005F0AE40818005F09B3 -:10887800124AF80A1800C0904929491A1298740B2C -:10888800950CF20B0B0CC188E6081800C0916E0815 -:108898002018F00C17708F0CEC0C0B04C0686E09D4 -:1088A800EC090B082FF98F096E08E0480050CD61DC -:1088B8008F05CD4B3008109C2FEDD832000016489C -:1088C8000000164C800087F0D401F01F0004301B14 -:1088D800F01F0003D80200008000884C8000863C0E -:1088E800D4314974169714951293580BC0B1680C7B -:1088F800580CC0311896C2181696F01F0012890736 -:10890800C1C868085808C0C1E06C0200F01F000E1A -:10891800890CC061189648DCF01F000DC0E80A9C5D -:10892800E066020048650C33E60617806A0B0C9A6D -:10893800F01F00086A088F080C9CD8320000169CAB -:108948008002E28C8002E2A4800396E8800094C44E -:10895800800090B4D401F01F0002D80A800091086A -:10896800D4213008FAC4FFEC19C9F0091800F9B885 -:108978000100E9F81A01E9F81A02E9F81A004A1898 -:108988001AD84A1818971AD8089B3008E8C9FFF867 -:10899800E8CAFFFC780CF01F001D8F0C2FED580C57 -:1089A800C021DC2AF01F001A300949AA301BE06CEC -:1089B8001388F01F00193009498A301BE06C00FA4F -:1089C800F01F00153009496A301BE06C01F4F01FF4 -:1089D80000123009493A301BE06CEA60F01F000EC3 -:1089E8003009491A301BE06C03E8F01F000B30090E -:1089F80048EA301BE06C03E8F01F0007DA2A0000A1 -:108A08008001365C80013C948000CCA88000CAB00C -:108A180080008A708000956C80008A6480008A5883 -:108A280080008A4C80008A4080008A34D401F01F7C -:108A38000002D8028000C664D401F01F0002D802E8 -:108A480080012984D401F01F0002D8028000B8B048 -:108A5800D401F01F0002D8028000C074D401F01FB6 -:108A68000002D8028000E68CD401F01F0002D80270 -:108A78008001326430194828B0895EFC000016AACB -:108A8800D401319CF01F0003319CF01F0003D80271 -:108A98008000A2D28000A2E6D421204D3FF819C957 -:108AA8001897F0091800F9B80001EFF80E0430081B -:108AB800201D1AD850581AD81AD850685058F01F84 -:108AC800001C49CB6E0CF01F001C0E9949BA49CB0B -:108AD80049CCF01F001D2FCD581CC08049B8201D5F -:108AE80049BC1AD8F01F001B2FEDF01F001BF01F08 -:108AF800001B0E9CF01F001AC0F049A8900930080E -:108B0800F0091900C0F44988201D498C1AD8F01FB3 -:108B180000112FEDC07830194958319CB089F01FE9 -:108B280000153018EF6800082FCDD822800089681A -:108B380080008C5C8000CAEE80008B7C80008BDC1F -:108B480080008A7C80009A188003973C80039DC02F -:108B5800800094C48000998C80019EF880002A9837 -:108B6800000016A28003972880039758000016A4D7 -:108B78008000A300D4211897333CF01F000F300663 -:108B88000FD8EC081800C0C048CCF01F000D6E0CC0 -:108B9800F01F000C6E0CF01F000CAED6C07848BC5D -:108BA800F01F00076E0CF01F000A3FFCF01F0009C1 -:108BB800D82200008000A2E680039774800094C445 -:108BC8008000B1D88000AE50800397908000CABC66 -:108BD80080002E60D42116971896333CF01F00149D -:108BE8000C9CF01F0014201D1ADC493CF01F0013D8 -:108BF80030182FED0FC6F0061800C121490CF01FE0 -:108C0800000F6E0CF01F000F48F849095C5CF20C6D -:108C18001700F00C1710F01F0009AED6C0486E0CF4 -:108C2800F01F000BF01F000BD82200008000A300EB -:108C3800800096E48003979C800094C4800397B8D2 -:108C48008000B950800397D080037FC08000CB8814 -:108C58008000C690D42149471896F01F0014189533 -:108C6800C110301CF01F00126C18201D1AD8F01FFC -:108C78000011500C490CF01F001130182FEDAE8870 -:108C8800D822AE8CF01F000E48E89008EA081900B8 -:108C9800C08448D8201D48DC1AD8F01F00082FEDE2 -:108CA800D8220000000016AB8000CAE480002E60C5 -:108CB800800096A8800397D8800094C480006B2C0D -:108CC800000016A28003995C800397E8D4211897C6 -:108CD800F01F0027300A4A7B4A7CF01F0028300A20 -:108CE8004A7B4A8CF01F00254A7B300A4A7CF01FD9 -:108CF80000230E9A4A6B4A7CF01F0020300A4A6B08 -:108D08004A6CF01F001E4A6B300A4A6CF01F001BA9 -:108D18000E9A4A5B4A5CF01F0019300A4A4B4A5CBB -:108D2800F01F0016300A4A4B4A4CF01F0014300A54 -:108D38004A3B4A4CF01F0011300A4A3B4A3CF01F9C -:108D4800000F300A4A2B4A3CF01F000C300A4A2B0D -:108D58004A2CF01F000A300A4A1B4A2CF01F000751 -:108D6800300A4A1B4A1CF01F0005D82280008620C2 -:108D7800800085DC80039804800085F08000857879 -:108D88008003980C80007E448003981480007F70D4 -:108D98008003981C800079F48003982480007DC8A3 -:108DA8008003982C80008494800398348000633476 -:108DB800800398408000834C80039848800084009A -:108DC80080039850800082E4800398588000821CB9 -:108DD800800398608000817C80039868800080D43C -:108DE800800398748000791080039880D4211897A4 -:108DF800F01F000BF01F000BF01F000BF01F000B03 -:108E08006E0CF01F000B48B811893008F0091800E3 -:108E1800C0406E0CF01F0008D82200008000951496 -:108E2800800088D080009504800193A080013BBC1D -:108E3800000016A480004758D421202D3029EE7850 -:108E48000000F1D9D1A23019F1D9D0033007501858 -:108E58000E9B5007337CF01F000F1A9BFE7C3800D6 -:108E6800F01F000D0E9BE06A01A4FE7C3800F01F85 -:108E7800000B0E9BE06A0348FE7C3800F01F0008D8 -:108E88000E9BFE7C3800F01F00072FEDD822000053 -:108E98008000A2308000A8388000A8F08000A926B1 -:108EA8008000A8D4D401333CF01F0009334CF01FD4 -:108EB8000008335CF01F0006333CF01F0006334CFB -:108EC800F01F0004335CF01F0003D8028000A2A842 -:108ED8008000A2E6D421202DF01F0034F01F0034BA -:108EE800F01F0034F01F0034E06C1B00EA1C00B7D0 -:108EF800F01F00324B28201D4B2C1AD8F01F0032CF -:108F080030CB301CF01F00312FED1897580CC08162 -:108F18004AF8201D4AFC1AD8F01F002B2FED344BBD -:108F2800301CF01F002A8F0CC0814A98201D4A9CD3 -:108F38001AD8F01F00252FED3FF80E9CAEC8F01F81 -:108F48000026300B169CF01F0025F01F0025F01F8F -:108F58000025C0804A48201D49EC1AD8F01F001A85 -:108F68002FEDFACAFFFC0E9B4A0CF01F0021581C7B -:108F7800C0C1401A49FB0E9CF01F001F581CC0516D -:108F88000E9CF01F001ECFDB58CCC04058DCC061DF -:108F9800C03849BCC04849BCC02849BCF01F000AB9 -:108FA800F01F001ACFEB000080008A88800076E06E -:108FB80080008EAC80008E408000AAE88003970C69 -:108FC80080039888800094C48002DC3C800398A8C1 -:108FD80080039DC080008CD4800095C88000C8E4C0 -:108FE8008000895C800398B8800088E880013E880A -:108FF80080008AA0800193BC80008DF4800398E4EF -:109008008003990C8003993080009514D4314A1458 -:1090180058095F081296189716951493A888E06067 -:109028000100E06100FFC2E88920A868E203190096 -:10903800E069FFFFE7D9E828E9F88A02E06901005A -:1090480088E8F2080108682989151039E9F8BA0290 -:10905800EE021608049CF01F0010301CF01F000FD1 -:10906800F01F000F5806C090049CF01F000E301C23 -:10907800F01F000DF01F000D6828101310071005D1 -:109088005C83F1D7C0085803CD01069CD832000094 -:10909800000016AC8000A0408000A19880009ED4FB -:1090A80080009F5C8000A17080009E94D4013009EC -:1090B8005C7AF01F0002D80280009014D40148584E -:1090C80090E9701B120C702AF01F0003D8020000F0 -:1090D800000016AC8002E736D4014888189B118A34 -:1090E8003009F20A1800C07090E9701C120B702A3F -:1090F800F01F0003D8020000000016AC8002E7361B -:10910800D421208D48D8F0E60008FAE70008F0EAF4 -:109118000000FAC8FFF0FAEB0000F0E70008F0EBF7 -:109128000000E06CF980EA1C0337F01F0005300CE2 -:109138002FCD2FCDD82200008003996C8000A1C0CC -:10914800D401FAC9FFFCF01F0002D80280031C1CDE -:10915800D401F01F0002D8028002EE88D401F01F6B -:109168000002D8028002ECACD401F01F0002D80241 -:109178008002F0ECD401F01F0002D8028002E71050 -:10918800D401F01F0002D8028002EE2CD401F01F97 -:109198000002D8028002ED84D401F01F0002D80238 -:1091A8008002ECC8D401F01F0002D8028002EE0C45 -:1091B800D401F01F0002D8028002EDD0D401F01FC4 -:1091C8000002D8028002E87ED401F01F0002D80213 -:1091D8008002E8BCD401F01F0002D8028002E73602 -:1091E800D401F01F0002D8028002E28CD401F01FE3 -:1091F8000002D8028002E8D0D401F01F0002D80291 -:109208008002E2A4D401580CC0707808B08B7808AA -:109218002FF89908D802F9DBC008F01F0002D8021D -:10922800800078A0D431189616971495580AE08AC9 -:1092380000153008109AC0282FF8EE08070BF40B19 -:109248001800CFB10A38F9B50400EBD8E515EDB927 -:109258000001C0313303C0283203E9D9C001C090EE -:109268003004C1082FF42015069B0C9CF01F000D3C -:109278005805FE99FFF9C0682FF42FF70C9CF01FD2 -:1092880000090F8B580BCF91C0782FF42015069B3F -:109298000C9CF01F00045805FE99FFF9089CD83271 -:1092A8008000920CD431204DFAC4FFCC109368177B -:1092B800189568041698580BC0B13308BADB08999A -:1092C800069ABAC8FACBFFFCF01F001FC3985809CA -:1092D8005F1B58AA5F09F7E90009C0605808C04435 -:1092E8005C383016C0283006EECB003A3009FAC791 -:1092F800FFF00EF9C0B8F00A0D00029912985898BC -:10930800F1DBE9082D080EF800985808CF515806E7 -:10931800C1005803C0B0EDB40001C08132DB0A9C23 -:109328002013F01F000A3016C04832D830060EF855 -:109338000899069A0E9B0A9CF01F00030C0C2FCD6F -:10934800D83200008000922C8000920CD431203D4D -:109358003007500A18951696325432D3330230919A -:109368003730C978E8081800E081008E2FF60D889C -:109378005808E0800093E8081800E0800085E608B7 -:109388001800F9B90100F7B600FFF9B90001C038B3 -:109398002FF6A1B90D88E4081800CFB03008C048EE -:1093A800F80E00182FF60D8AF008002EF4CC0030C5 -:1093B800F4CB0030E20B1800FE98FFF4E00A180026 -:1093C800C0A1109A4008110B50084B98580BF00B8D -:1093D8001700C548364BF60A1800C0A1361B400ACC -:1093E8001ADB1AD93019740B2FCA502AC358370BF5 -:1093F800F60A1800C121361A40091ADAF2CAFFFC27 -:10940800501A308A1ADA720B3009310A0A9CF01F96 -:1094180000292FED1807C3C8378BF60A1800C0417A -:10942800400A361BC078358BF60A1800C091400AEE -:10943800341B1ADB1AD9740B2FCA502ACE6B375B30 -:10944800F60A1800C0B1361B400A1ADB1AD93009CF -:10945800740B2FCA502A30AACDAB363BF60A180037 -:10946800C171109A4008700B2FC8FB6B0008500898 -:10947800FACBFFF83008FB6800090A9CF01F000EC1 -:109488001807C0682FF70D8B0A9CF01F000C2FF6E9 -:109498000D885808FE91FF685805EBF81000F9B9D7 -:1094A8000100F1F91E000E9C2FDDD8328003997C53 -:1094B800800092AC8000922C8000920CD401189B02 -:1094C800FACAFFFC300CF01F0002D8028000935447 -:1094D800D40148A972082FF89308F2F800CC58086C -:1094E800C040F2FC00D45D18FE780D003019918957 -:1094F8007078D402D6030000000001184838F0F94B -:1095080000D0700CB33C5EFC00000118D431495601 -:1095180030020C9730152F46EEC1FF2C0E930E9497 -:109528000D88E4081800C18166086E291039E08B9F -:1095380000146C185808C0306C2C5D180D98EA0897 -:109548001800E9F80000EFF90001F3D8E008EFF897 -:109558000A02EDF51E002EC62EC70236CE21D832DD -:1095680000000118D431300E189830A5494C1C96CB -:109578002FCCFCC3FFFF1897F9340008EC0418003F -:10958800C071FDD3C0082ECCEA0E1800CF311C9C48 -:1095980048B530030A96FC0E002EEAF500D0F00517 -:1095A8000D048F040D08EF630008EC0E0026080870 -:1095B800EF6B00098F188D498D3AD83200000118D9 -:1095C800D421300A16971896328B495CF01F001583 -:1095D800300AFE7C0D00149BF01F00134935FE7CF9 -:1095E8000D00EAFB00D0F60B1073A19BF01F0010D2 -:1095F800FE7C0D00F01F000FFE7C0D00F01F000E1A -:10960800EAC9FF2CEB4600CCEB4700D430182F45B5 -:10961800AA882EC51235CFD1D8220000800094D850 -:109628008000A3A08000A594000001188000A580F8 -:109638008000A57A8000A562D401306AF01F00027C -:109648005F0CD8028002E710D401F93A0020F738FD -:109658000020F4081800C020D80AF01F00035F0C8F -:10966800D80200008002E710D42119D919881AD924 -:1096780019C91AD919B91AD919A91AD91999486732 -:109688001AD9486A1AD8312B0E9CF01F00050E9C77 -:109698002FADD822000016E0800399848002EC40A8 -:1096A800D4214058F5D8C008F00916181ADAF5D8A8 -:1096B800C108F1D8C2081ADA48671AD8486A1AD90C -:1096C800310B0E9CF01F00050E9C2FCDD8220000F8 -:1096D800000016F4800399A48002EC40D421488746 -:1096E8001896321A300B0E9CF01F00060C9BED3AB0 -:1096F80000200E9CF01F00040E9CD822000016BC0F -:109708008002E8BC8002E736D431300318971696F9 -:109718001491129218950694C1D805002FF4009C54 -:10972800F01F0012F80300030C33E0880009201D25 -:1097380048FC1AD6F01F000F2FEDC108201DEE05BA -:10974800010B1AD00A9C0C0B48BAF01F000C2FED25 -:1097580018050234CE350E35C021D83A30080AF83B -:10976800EA07010CD83200008002EDD0800399B4DA -:10977800800094C4800399CC8002EC40D4211897CF -:109788002DFCF01F001B201D1ADC49ACF01F001A2D -:109798000E9CF01F001A500C499CF01F00176EC851 -:1097A800498C5008F01F00146EF82FED5818C0416E -:1097B800495CF01F0011EF3800383049F2081800F2 -:1097C800C0E03059F2081800C0603029F2081800CB -:1097D800C091C03848DCC04848DCC02848DCF01FCD -:1097E800000648DCF01F0004D822000080009670B4 -:1097F800800399CC800094C4800096E4800399D0BB -:10980800800399D8800399E8800399F480039A0823 -:1098180080039A1C800384D4D421202DFACCFFFC29 -:10982800F01F000C401870185808C04148ACF01FD1 -:10983800000B3007C0887008F007032CF01F0008E1 -:109848002FF75C57401870191237CF632FEDD822C5 -:1098580080018F0480039A40800094C4800097841C -:10986800D431202D300818921696BAE8169CF01FAD -:10987800001DEDBC0000C04149BCF01F001C3007B2 -:109888002FF649B30E94FAC5FFFCC208660BF6081A -:109898000709E2190044C210E04700405F9C0D8AA6 -:1098A800F60A0709E21900445F09F9E91009E8090D -:1098B8001800C131BADABAC8310A300B0A9C2FE64F -:1098C800F01F000CE4070B0C2FF7ED38FFFF5808CA -:1098D800CDE10E9C5C5CC028300C2FEDD832000026 -:1098E8008002EDD080039A50800094C40000049C4C -:1098F8008002F0ECD421204D1A981AD8FAC8FFF843 -:109908001AD8FAC8FFF01AD8FAC8FFE818971AD870 -:10991800169C49BBF01F001B2FCD584CC221403864 -:10992800E04800FFE08B001E402B580BC1A5E04B20 -:1099380000FFE089001740195809C135E04900FFC8 -:10994800E0890010400A580AC0C5E04A00FFE089D3 -:109958000009B16BF7E811881448F1E91088C028AC -:109968003008F0091618AEB8AE890E9CF3D8C208B4 -:10997800F1D8C108AE99AEA82FCDD82280039A603D -:109988008002EBF4486870085808F9BC00FFF9B980 -:109998000101F1F91E10F9BC01015EFC0000170479 -:1099A800D4214988169770085808C021DC2A580C19 -:1099B800C080189B321AF0CCFFEFF01F0013C0389C -:1099C800F16C003148F85807C080700C0E9B306A63 -:1099D8002CECF01F000DC088700C306A2CECE06B8A -:1099E80000FFF01F000A48787008F139003130088C -:1099F800F0091800C021DA2AF01F0005DA2A000051 -:109A0800000017048002E7368002E8BC80019EF857 -:109A1800D4314A241896169714951292680358035D -:109A2800C3B1338B301CF01F001E890C189BC0B1CA -:109A380049C89088EDB80003C2F1201D49A849BC67 -:109A48001AD8C10849ACF01F001B49691891581C65 -:109A5800C0E09288EDB80003C1F1201D4928496C87 -:109A68001AD8F01F00163FFC2FEDD8326808913243 -:109A7800F16300109106911791259288EDB80003C3 -:109A8800C020D8324888201D48DC1AD8F01F000BA7 -:109A9800029C2FEDD832DC3A000017048002DC3C2F -:109AA800000016A280039A8080039AE080009AC87A -:109AB80080018F2480039AF8800094C480039B203F -:109AC800D431202D1697581CC290C083582CC670CC -:109AD8004A78583CE08101A8C998F01F00264A48F6 -:109AE80018969088EDB80003C0A1F01F00234A38EB -:109AF8001ADC4A3C1AD8F01F00232FED333CF01F24 -:109B08000022334CF01F00216E185808E08001979E -:109B18006E3B0C9C5D18E08F019249589088EDB817 -:109B28000003C08149A8201D49AC1AD8F01F0015B0 -:109B38002FED334CF01F0014333CF01F0014EF39A5 -:109B480000103008F0091800E0800179F01F0012B9 -:109B5800581CE080017448689088EDB80003E081E3 -:109B6800016E201D48A848DC1AD8C659000016A264 -:109B78008001997C800096E480039AC880039B3812 -:109B8800800094C48000A3008000A2E680039CE8C3 -:109B980080039B5480019EF880039B784B589088E3 -:109BA800EDB80003C0814B48201D4B4C1AD8F01F5C -:109BB80000342FED4AF89088EDB80003C0814B18A7 -:109BC800201D4B1C1AD8F01F002E2FED333CF01F20 -:109BD800002F6E285808C0306E3C5D18EF39001011 -:109BE8003008F0091800E080012AF01F0029581CED -:109BF800E080012549F89088EDB80003E081011F55 -:109C0800201D4A084A3C1AD8C1699088EDB800035B -:109C1800C0814A18201D4A1C1AD8F01F00192FEDC0 -:109C28006E085808C0306E3C5D18EF3900103008D7 -:109C3800F0091800E0800103EF390031F00918003D -:109C4800E08000FDF01F00161894FACCFFFCF01F0E -:109C58000015581CC591401870185808C550300593 -:109C6800EEC1FFEFEEC3FFCE0A960A92C488000049 -:109C7800000016A280039ABC80039BAC800094C4A9 -:109C880080039A9880039BC48000A2E680019EF816 -:109C980080039BE880039AA880039C1C8001997C20 -:109CA80080018F04EF390031E4091800C080700882 -:109CB800029CF005032BF01F0041C1F0306A4C0BE9 -:109CC800069CF01F0040C0A040187008069CF005D4 -:109CD800032B2DFBF01F003CC1005806C0A0401804 -:109CE8006CC97008F005032870C81039E0890006AF -:109CF80040187008F00503262FF55C5540187019B8 -:109D08001235CD13C02830060C34C0415804E08108 -:109D1800009658065F1858045F19F1E90009C20057 -:109D2800089B0C9CF01F0025C1D068C8FE58FFC0D6 -:109D3800E08400856CCAF0C9FFF71439E084007F1D -:109D48004A299289EDB90003C0D1201D1ADA1AD820 -:109D580049F84A0C1AD8F01F00202FCDC0385808EF -:109D6800C0C0202DECCBFFDF306A1A9CF01F001B0F -:109D7800F01F001B2FEDC17849489088EDB800030B -:109D8800C0C1EECCFFEFF01F001749181ADC496C70 -:109D98001AD8F01F00112FEDEECCFFEFEF3B00318A -:109DA800F01F0012588CC060589CC2F0581CC21199 -:109DB800C458F01F000FC4288000965080039C38B8 -:109DC8008002EDE680009640000016A280039A8C7F -:109DD80080039C40800094C48002E73680019DDCAB -:109DE800800096E480039C6880019EA0800199CC45 -:109DF80049489088EDB80003C0814938201D493C86 -:109E08001AD8F01F00132FEDF01F0012581CC16064 -:109E180048C89088EDB80003C111201D48A848EC37 -:109E28001AD8C0989088EDB80003C081201D48B8A2 -:109E380048BC1AD8F01F00062FED2FEDD8320000CD -:109E4800000016A280039A8C80039C94800094C41E -:109E580080019EF880039CB080039ABC80039CCC50 -:109E6800D4012FEC580BC080F7DCC008FE7C28001A -:109E7800F01F0005D802F7DCC008FE7C2800F01FA0 -:109E88000003D8028000A6C68000A716D42148C7C0 -:109E9800C098300BFE7C2800F01F000A6E082FF8CF -:109EA8008F086E0CF7DCC008CF51F9DCC288F01FB0 -:109EB800000630194858B089D82200000000170859 -:109EC8008000A7FA80009E680000170CD40148683B -:109ED800300B700CF9DCC288F01F000430094848C8 -:109EE800B089D8020000170880009E680000170C8F -:109EF800D421202D4948301B700CF9DCC288F01F92 -:109F08000013E06B00D7FE7C2800F01F0011FAC791 -:109F1800FFFAE06B00FFFE7C2800F01F000D0E9B8F -:109F2800FE7C2800F01F000B9AB8EDB80007CF217F -:109F38004858300B700CF9DCC288F01F00042FED74 -:109F4800D82200000000170880009E688000A7FA49 -:109F58008000A816D421202D49B8A96C910C49B8C5 -:109F680011893008F0091800C030F01F00193009B5 -:109F780049684957B0896E0C301BF9DCC288F01F5C -:109F88000015E06B0082FE7C2800F01F00136E08AD -:109F9800F3D8C008FAC7FFF8F7D8C10CFE7C280030 -:109FA800F3EB109B0EDBB18BF01F000B0FABFE7CAD -:109FB8002800F01F00090FBBFE7C2800F01F0006D8 -:109FC8002FEDDA2A000017080000170C80009EF811 -:109FD80080009E688000A7FAD42149381897118913 -:109FE8003008F0091800C0604908700CA98CF01FEF -:109FF8000010EEC6FF000F3BFE7C2800F01F000D8E -:10A008000C37CFA14898300B700CF8CCFF00910C9E -:10A01800F9DCC288F01F000830194838301CB089B4 -:10A02800D82200000000170C0000170880009F5C71 -:10A038008000A7FA80009E68D421202D4A78A96C58 -:10A04800910C4A7811893008F0091800C030F01FC7 -:10A05800002530094A284A17B0896E0C301BF9DCF4 -:10A06800C288F01F0021E06B00D2FE7C2800F01FA0 -:10A07800001F6E08F3D8C008FAC7FFF8F7D8C10C5C -:10A08800FE7C2800F3EB109B0EDBB18BF01F001752 -:10A098000FABFE7C2800F01F00150FBBFE7C2800CC -:10A0A800F01F0012E06B00FFFE7C2800F01F000F7D -:10A0B800E06B00FFFE7C2800F01F000CE06B00FF47 -:10A0C800FE7C2800F01F0009E06B00FFFE7C2800E2 -:10A0D800F01F00062FEDDA2A000017080000170C01 -:10A0E80080009EF880009E688000A7FAD421202D69 -:10A0F800498818973009118AF20A1800C070B08987 -:10A108004958700CA98CF01F0015FAC5FFFAEEC665 -:10A11800FF00E06B00FFFE7C2800F01F00110A9B87 -:10A12800FE7C2800F01F000F9A380EC80C37CF218C -:10A138004898300B700CF8CCFF00910CF9DCC28801 -:10A14800F01F000930194838301CB0892FEDD8228B -:10A158000000170C000017088000A0408000A7FA34 -:10A168008000A81680009E68D4211897C088F01F28 -:10A178000006486CF01F000620175C87483C58070B -:10A18800CF71DA2A800090C40000171080009FE089 -:10A19800D4211897C088F01F0006486CF01F0006ED -:10A1A80020175C87483C5807CF71DA2A8000A0F452 -:10A1B80000001710800090E0D4213027FAC4FFEC8B -:10A1C8001896A887C0C80C9A089BFE7C2800F01F28 -:10A1D8000009C020D82A09882FF8A8880988EE081D -:10A1E8001800FE98FFF230094838301CB089D82290 -:10A1F8008000A73C0000170CE1B80000EE18000131 -:10A20800F1D8C201C020D3033019F20B094B994B86 -:10A21800783958085E0CD5035EFCFE681400700996 -:10A22800F3DCD0C191095EFCF8081605A968E0289E -:10A23800F000581BC0D0C063582BC0F0583BC12059 -:10A248005EFF3019F20C0949916991A9C108F60C11 -:10A25800094B915B91ABC0B83019F20C094991696F -:10A26800C0583019F20C0949915991993019F20CDA -:10A27800094C912C5EFDD703D4213007189616940B -:10A288000E95C0880D9B0D8C2FF72FE6F01F00044C -:10A2980018450837CF830A9CD82200008000A230D6 -:10A2A8003018F00C0948A59CA96CE02CF000F9487E -:10A2B800004899185EFC3018F00C0948A59CA96C58 -:10A2C800E02CF000F94800745EFC3018F00C0948E6 -:10A2D800A59CA96CE02CF000F94800785EFC3018C9 -:10A2E800F00C0948A59CA96CE02CF000F948005432 -:10A2F800F948004499185EFC3018F00C0948A59CF0 -:10A30800A96CE02CF000F9480058F9480044991865 -:10A318005EFC301AF8081605F40C0949A968E0280B -:10A32800F000F14900C4143BC080C043582BC0F171 -:10A33800C098F14900A8C038F14900A4F14900B813 -:10A34800C078F14900A8F14900B4C0285EFAF14983 -:10A3580000945EFD3018F00C0948A59CA96CE02C0F -:10A36800F000F94800985EFCF8081605A968E0288E -:10A37800F000F0F800D0F00C0A4CF9DCC0015EFCEB -:10A388003018F00C0948A59CA96CE02CF000F9489D -:10A3980000D85EFCC008D703F3DBC0054898A59B2E -:10A3A800F00B00387018F009092C4878F5DAC0026B -:10A3B800F00A0329FE780800F00B09295EFC00006A -:10A3C80080039CFC8003773CD42148F8E3B8000163 -:10A3D80048E848F9700E48FC3008FE7B0800C0E8E1 -:10A3E8007216EC0A00262FFA8D0C0E3ACFA3F60847 -:10A3F800092E2F892FF85948C0407207300ACF6BB1 -:10A40800D8220000800376008003773C80039CFC00 -:10A418008000A39CE0680083FE790800F00C010C22 -:10A42800F20C0328F0CAFFC0F20A032C580C5E0C89 -:10A438004869F80C1200F2080038F80C111F70185F -:10A44800F00C032C5EFC000080039CFC78C83019DB -:10A45800F1D9D10399C85EFC78C83019F1D9D00177 -:10A46800F1DBD20399C85EFCD421FAC4FFEC68176B -:10A47800680EEFD7C003FDDEC0013004E9D7D00372 -:10A48800E9DED0E1E9D7D103E9DED1E1E9DAD203A7 -:10A49800E9DBD2E1E9D8D303E9D9D3E199147958B2 -:10A4A800EDB80005CFD1D822D4213007405E2F8BDC -:10A4B800EFD8D021EFD9D104EFDAD204EFDED306FA -:10A4C800F80B0927D822F5E910192F8BF3E8102883 -:10A4D800F80B0329F3D8D043F80B09295EFC2F8B1E -:10A4E800F80B0328A1A8F80B09285EFC7958EDB8E9 -:10A4F8000000CFD15EFC7808F1DBD00299085EFC41 -:10A50800EC5BBB9FE08B0004304BC138E068C6BFF2 -:10A51800EA18002D103BE08B0004305BC0A8E0680F -:10A528001200EA18007A103BF9BB0306F9BB0207D0 -:10A5380078A8F1DBD00399A878A8F1DAD10399A813 -:10A548007808A3A899087958EDB80007CFD17808FA -:10A558003019F1D9D00299085EFC7808EDB80004EA -:10A56800CFD07808A1A899087808EDB80004CFD012 -:10A578005EFC301899485EFC7808EDB80004CFD02E -:10A58800992B7808EDB80004CFD05EFCD42130F8C0 -:10A5980014951697F00A18005FBA30181896F00B41 -:10A5A80018005FB9F5E91009C020D82AF00B180087 -:10A5B800C0A1FE7C0C00F01F0015300BFE7C0C00C7 -:10A5C800F01F00136C08EDB80004CFD0A377B1A733 -:10A5D800EFE510878D076C08EDB80004CFD06C0844 -:10A5E800E2180010CFD18D186C08EDB80004CFD058 -:10A5F8006C08EDB80004CFD03FF88D286C08EDB892 -:10A608000004CFD0DA2A00008000A4548000A4609F -:10A618003038F00A18005FB93078F00B18005F88FE -:10A62800F3E81008C1913108F00B1800E08B001511 -:10A63800E06800809908208BF4081601F5DAC0015B -:10A64800F1EB104B580AF9BA0100F9BA0002F7EA1F -:10A65800100A99CA5EFD302C5EFCD4013019189896 -:10A66800F73B000DF20B1800E0880004302CD802EC -:10A67800300AE06900809909301E7019149CF3DED5 -:10A68800D001F3DBD081F3DAD0E130FAF3DAD20487 -:10A698009119D802D4013018F00B18005FBEF00AE7 -:10A6A80018005FB81C48C030302CD8027818F1DB8D -:10A6B800D021F1DAD041F1D9D3089918D80A7819FC -:10A6C8001898EA19000F9919781CE21C0004C100B7 -:10A6D80030E9F20B1800E08B001A7019B16B300CDE -:10A6E800EA1BFFF0E81BFFFF126B911B5EFC303981 -:10A6F800F20B1800E08B000B70192F0B301AF40BBB -:10A70800094B5CDB126B911B5EFC302C5EFCE06835 -:10A718002710C0585808C0215EFF20187849EDB9A5 -:10A728000009CF917818EA18000F9918FC18010051 -:10A7380099085EFDD4313036F737000CEC07180065 -:10A74800E08B0050F733000B301EFC031800E08B41 -:10A758000049F73800083079F2081800E08800420C -:10A768003109F2081800E08B003D7619F205160150 -:10A77800F4050005EA090D04E8C90001E04900FEF6 -:10A78800E08B0030F0CA00080E923008EC1200018D -:10A79800A197F1D7D001F1D2D021F1D3D061F1DA6C -:10A7A800D084F73A0009F1D4D1081789F1DAD20830 -:10A7B800F73A000AF1DAD308FC091800C0C0C093C0 -:10A7C800302AF4091800C090EC091800C0A1C0781C -:10A7D80099C8C06899D8C04899E8C02899F8D83A63 -:10A7E800302CD832301899085EFC784CF9DCC0213E -:10A7F8005EFCE0682710C0585808C0215EFF20188A -:10A808007849EDB90001CF915C7B993B5EFDE0682A -:10A818002710C0585808C0215EFF20187849E2194F -:10A828000201E0490201CF717828300CB6085EFCBD -:10A8380076095829E08800035EFE7618A769109B00 -:10A84800E61BC000120CF3D8C003AFB91649109B21 -:10A85800E61B30001649109BE61B0C001649109B9E -:10A86800E61B03001649109BE61B00C01649109B07 -:10A87800E61B00301649109BE61B000C1649109B7E -:10A88800E61B00031649109BE21B60001649109B4B -:10A89800E21B10001649109BE21B0C001649109B86 -:10A8A800E21B03002FCC1649109BE21B0080109A74 -:10A8B8001649E21A0008109BE2180030E21B00401B -:10A8C8001649F3E81008144899085EFDF6081506BD -:10A8D800582BF9BC0BFFF9D8E80CF9B80805F9F8BA -:10A8E8008A00F9BC08005EFC582BE08800035EFE75 -:10A8F800F6081506F80800082FC87008EDB8000F0C -:10A90800C0C1A76BF3DAC010160C2ECC7808E0187B -:10A918000000F3E810089908F9DAC0105EFC582B1B -:10A92800E08800035EFEA76B160C7818EDB8000FE0 -:10A93800C0A12E4CF3DAC0107808E0180000F3E844 -:10A9480010089908F9DAC0105EFCD401F60E150457 -:10A958001C3AF9BE0210F9BE0308FC0B024BF608BC -:10A968001601F00A003AF40B0D0AF4091603F2C8AE -:10A978000001E048FFFEE0880003DA0A7818E86B77 -:10A988000000E418FFF7E018FECF590EF60E171076 -:10A99800F9BE0000FDE810089918F5DAC003F3EADB -:10A9A80011099989D80A7858EDB80001C030302CBF -:10A9B8005EFCF7DBC009997B5EFD7858E21800E081 -:10A9C800C030304C5EFC7859EDB90000F9BC010389 -:10A9D800F9F90006F00C1700E06A01FFF3DAE02845 -:10A9E800F7F80A005EFCE1B80000EE180001F1D8A3 -:10A9F800C201C020D3033FF9993978595808C020BB -:10AA0800D50330089918999899A8EA68610C9908AB -:10AA18005EFCD703D421201D500A16961897F01F04 -:10AA2800002F400A5806C5500DC83049F2081800D2 -:10AA3800E08800503095EA081800E08B004B0DD9EB -:10AA48003078F0091800E08B00458C39E068010186 -:10AA5800F0091900E08B003EED3900083038F009A4 -:10AA68001800E08B00376C0B0E9CF01F001D581C63 -:10AA7800C3000DC8EA081800C0416E18B1B8C05824 -:10AA880020586E19F3E810688F186E19ED3A00080F -:10AA98000DD8A978F1EA10E812488F18302A8C38B6 -:10AAA800F3D8C010F4081900E08800086E18ADB893 -:10AAB8008F1820298FA9C0586E18F1E910C98F196D -:10AAC8006E18E018FFF08F18300C35088F08C02872 -:10AAD800301C2FFDD82200008000A9EE8000A9526A -:10AAE8004828910C5EFC0000000018E8D431189842 -:10AAF800783E580EC620F90600105806C5E0300901 -:10AB08003FF3129A3344C1780E91E8071800C0A1A8 -:10AB1800F2CAFFFEF4C9FFFF5C7A5C89FC0A070AE7 -:10AB2800C0A8F6071800C4A05C75FC050709E4096D -:10AB380000095C89EC091900C0F2F2C5FFFFF9D9D8 -:10AB4800C0105C85FC0C000CEAC2FFFF19870E914F -:10AB5800E6071800CDA1580AC3003019F20A1800F8 -:10AB6800C0617028E06900802948C0C87028302971 -:10AB7800F20A1800C0412D483409C0482D48E06940 -:10AB880000C0300C3FF7C0D8F60A1800C1705C7ED0 -:10AB9800F00E070CEC0C000C5C8CF20C1900C0D207 -:10ABA800F8CEFFFF5C7C5C8EF00C000CFCC6FFFF4F -:10ABB800198AEE0A1800CE91300CD832D401F9085F -:10ABC800001CF3D8C010F2CEFFFE140EE04E004475 -:10ABD800E088000F48F8201D1AD8E06804E31AD866 -:10ABE80048D848EC1AD8F01F000E2FCDC008786E50 -:10ABF800FC090009F36B00F02FF8786BF3D8C0104C -:10AC0800F6090009F36A00F02FF8F958001CD80279 -:10AC180080039DC480039E0880039D9C800094C48B -:10AC2800D4013439F908001CF2081900E088000F33 -:10AC380048C8201D1AD8E06804EE1AD848A848BCAD -:10AC48001AD8F01F000B2FCDC008786AF3D8C010AF -:10AC5800F4090009F36B00F02FF8F958001CD8022A -:10AC680080039DC480039E5080039D9C800094C4F3 -:10AC7800D401580CC0E14B18201D1AD8E068062BE7 -:10AC88001AD84AF84AFC1AD8F01F002F2FCDC0084E -:10AC9800786A580AC0E14A98201D1AD8E068062C3C -:10ACA8001AD84AA84A7C1AD8F01F00272FCDC00806 -:10ACB800F908001C3439F2081900E088000F49F837 -:10ACC800201D1AD8E068062D1AD84A1849DC1AD867 -:10ACD800F01F001D2FCDC008F7D8C010160A3FFB83 -:10ACE800F56B00F02FF8129B5C88300AF958001CAD -:10ACF800C1584928201D1AD8E06806321AD8494890 -:10AD0800490C1AD8F01F00102FCDC008F1DEB01082 -:10AD1800786EFC090009F36A00F0F0CEFFFFF3D863 -:10AD2800C010F6081900FE98FFF3F958001CF3D973 -:10AD3800C002CE01D802000080039DC480039E8C0F -:10AD480080039D9C800094C480039EB080039EDC99 -:10AD5800D401F908001CF3D8C010F2CAFFFEE04A7B -:10AD68000044E088000F4918201D1AD8E06804F54F -:10AD78001AD848F848FC1AD8F01F000F2FCDC00881 -:10AD8800786AF4090009F5DBC108F36A00F02FF8C6 -:10AD9800786AF3D8C010F4090009F36B00F02FF8B3 -:10ADA800F958001CD802000080039DC480039F1C32 -:10ADB80080039D9C800094C4D401F908001CF3D83A -:10ADC800C010F2CAFFFCE04A0044E088000F49B80E -:10ADD800201D1AD8E06804FD1AD84998499C1AD849 -:10ADE800F01F00192FCDC008786AF4090009F60A87 -:10ADF8001618F36A00F0786A2FF8F3D8C010F4092F -:10AE08000009F5DBC208F36A00F0786A2FF8F3D876 -:10AE1800C010F4090009F5DBC108F36A00F02FF847 -:10AE2800786AF3D8C010F4090009F36B00F02FF822 -:10AE3800F958001CD802000080039DC480039F605D -:10AE480080039D9C800094C4D421F9380035A3D890 -:10AE5800F9680035189678A75807C2406E1C580C38 -:10AE6800C050F01F001130088F186E285808C09184 -:10AE78006E355805C061EF090010EA091900C0E0F5 -:10AE880048A8201D1AD8E06804C51AD84888489CE4 -:10AE98001AD8F01F00092FCDC0080E9CF01F00071C -:10AEA8008DA5D8228001122880039DC480039FA00D -:10AEB80080039D9C800094C48002E28CD421189762 -:10AEC800782C580CC050F01F000830088F286E3CB2 -:10AED800580CC070F01F00043008EF5800108F386D -:10AEE800D82200008002E28CD4211896580CC0E1C8 -:10AEF8004AE8201D1AD8E06805D11AD84AC84ADCA1 -:10AF08001AD8F01F002D2FCDC00878A75807C0E128 -:10AF18004A68201D1AD8E06805D31AD84A784A5CCE -:10AF28001AD8F01F00252FCDC0086E585808C0E069 -:10AF380049E8201D1AD8E06805D41AD84A0849DC1F -:10AF48001AD8F01F001D2FCDC0086E655805C0E047 -:10AF58004968201D1AD8E06805D51AD84998495C6F -:10AF68001AD8F01F00152FCDC0080A9AE06B0134DB -:10AF78000A9CF01F00158F5CC041E06C00FFD822CE -:10AF88009859E0680133F0091900E08B00214878EE -:10AF9800201D1AD8E06805DD1AD848C8485C1AD8B8 -:10AFA800F01F00052FCDC00880039DC480039FB407 -:10AFB80080039D9C800094C480039FD880039FFCDD -:10AFC8008003A0288000D3188003A054EF38001312 -:10AFD800EA081800C0514D3870092FF991097818FE -:10AFE800301B8F684CF9720A8F0AB09BB08B306B9C -:10AFF800B0ABF40B1618B0CBF7DAC2083009B0FAC8 -:10B00800B0DBF5DAC108305BB0B9F1690008F16965 -:10B018000009F169000AF169000BF169000CF16996 -:10B02800000DF169000EF169000FB0EAEF3A001265 -:10B03800F60A18005F0C30ABF60A18005F0BF9EB44 -:10B04800100BF20B1800C0513049F20A1800C0D199 -:10B058000DC9F169000C0DD9F169000D0DE9F1690F -:10B06800000E0DF9F169000F3009ECCAFFD1F16942 -:10B078000010F1690011F1690012F1690013F1691A -:10B088000014F1690015F1690016F1690017F169FA -:10B098000018F1690019F169001AF169001BF0CB79 -:10B0A800FFE4ED35002E3106EA091900F9BC02006B -:10B0B800F5FC380016CC2FF92FFA5C89EC09190039 -:10B0C800CF413009F0CAFFD4129C340B14CC2FF9AD -:10B0D8005C89F6091900CFB13009F0CAFF94129CB7 -:10B0E800E06B008014CC2FF95C89F6091900CFB108 -:10B0F8003639F16900EFF16900EC3829F16900EDA2 -:10B108003539F16900EE344A3009F0C8FF10EF59BB -:10B11800001C10C92FF95C89F4091900CFB1D82A8D -:10B12800000001F0D421580CC0E14A28201D1AD88B -:10B13800E06806141AD84A084A0C1AD8F01F0020EA -:10B148002FCDC00878A75807C0E149A8201D1AD8F4 -:10B15800E06806161AD849B8498C1AD8F01F0018A2 -:10B168002FCDC0086E5C580CC0E14928201D1AD8A4 -:10B17800E06806171AD84948490C1AD8F01F001079 -:10B188002FCDC0086E685808C0E148A8201D1AD8FD -:10B19800E06806181AD848D8488C1AD8F01F000852 -:10B1A8002FCDC008F01F000A30088F688F58D822AA -:10B1B80080039DC48003A09880039D9C800094C454 -:10B1C8008003A0BC8003A0E08003A10C8000D13CD8 -:10B1D800D42130D878A7EF390012F0091800EFF819 -:10B1E8001E12F9B80100EFF81E13300818968FE800 -:10B1F8008F988FB88FA88FD88FC8EF48004CEF482A -:10B208000048EF480044F01F0029EBDCC008C201E9 -:10B21800301A335B0E9CF01F0026307B0E9CF01F0B -:10B2280000250E9CF01F00246E5CEF0B001CF6CB73 -:10B23800FF105C7BF01F00210C983439EECAFFDC4C -:10B248006E5B6E1CF01F001E0C9CF01F001EEF387A -:10B2580000132FF85C58EF6800133099F2081800B3 -:10B26800E0880005E0692710C058E06903E8F009A4 -:10B2780002495C79E06801F4F2C9FE0DF2080C0895 -:10B288000C9CEF58001EF01F00100C9C48FBF01F90 -:10B2980000100C9C48DBF01F000F0C9C48BBF01FF3 -:10B2A800000E0A9CD82200008000AEF08000ABC4DB -:10B2B8008000AC288000AC788000D2108001139008 -:10B2C8008000B12C8000CABC8003B4098000CBC8C0 -:10B2D8008000CA748000CA92D421305878A7EF3908 -:10B2E8000012F0091800EFF81E12F9B80100EFF883 -:10B2F8001E131896F01F0026EBDCC008C2A1301AF6 -:10B30800335B0E9CF01F0023303B0E9CF01F002285 -:10B31800302A339B0E9CF01F001FED1B002C0E9C47 -:10B32800F01F001E0E9CF01F001E6E5CEF0B001C31 -:10B33800F6CBFF105C7BF01F001B0C983439EECA6B -:10B34800FFDC6E5B6E1CF01F00180C9CF01F0017D2 -:10B35800EF3800132FF85C58EF6800133099F208A3 -:10B368001800E0880005E0694E20C058E06907D061 -:10B37800F00902495C790A9CF2C9FE0DE06801F403 -:10B38800F2080C08EF58001ED82200008000AEF02A -:10B398008000ABC48000AC288000AD588000AC7839 -:10B3A8008000D210800113908000B12CD42118960F -:10B3B800580CC0E14AF8201D1AD8E06802F51AD8DE -:10B3C8004AD84AEC1AD8F01F002E2FCDC00878A70B -:10B3D8005807C4E0EF3900123088F0091800C4811A -:10B3E80017B8178A1799B169F3EA118917AAF3EA06 -:10B3F8001089F1E910096EA81039C3A130C8EF68A7 -:10B4080000123008EF680013F01F001E5C5CC28158 -:10B41800301A335B0E9CF01F001C304B0E9CF01F43 -:10B42800001B304A332B0E9CF01F00176EAB0E9C8E -:10B43800F01F00170E9CF01F00176E5CEF0B001C2E -:10B44800F6CBFF105C7BF01F00140C983439493A96 -:10B458006E5B6E1CF01F00120C9CF01F0012EF3880 -:10B4680000132FF8EF6800133148EF58001ED82258 -:10B4780080039DC48003A13880039D9C800094C4F0 -:10B488008000AEF08000ABC48000AC288000ADC066 -:10B498008000AC788000D2108003B405800113903E -:10B4A8008000B12CD421303878A7EF390012F00988 -:10B4B8001800EFF81E12F9B80100EFF81E131896DD -:10B4C800F01F002AEBDCC008C321301A335B0E9C46 -:10B4D800F01F0027303B0E9CF01F0026302A339BBC -:10B4E8000E9CF01F0023E06B02400E9CF01F002210 -:10B4F800304A332B0E9CF01F001E6EAB0E9CF01FC3 -:10B50800001F0E9CF01F001E6E5CEF0B001CF6CB9C -:10B51800FF105C7BF01F001B0C98343949AA6E5B46 -:10B528006E1CF01F001A0C9CF01F0019EF38001356 -:10B538002FF85C58EF6800133099F2081800E0887B -:10B548000005E0692710C058E06903E8F0090249DE -:10B558005C790A9CF2C9FE0DE06801F4F2080C0857 -:10B56800EF58001ED82200008000AEF08000ABC467 -:10B578008000AC288000AD588000ADC08000AC7859 -:10B588008000D2108003B405800113908000B12C94 -:10B59800D4214BD811B9118B119A11A8B16AF5EBC6 -:10B5A800118AF5E81088F3E8100878A78FA8EF3912 -:10B5B80000123068F0091800EFF81E12F9B80100FF -:10B5C800EFF81E131896F01F0031EBDCC008C3E13A -:10B5D800301A335B0E9CF01F002E301B0E9CF01FA0 -:10B5E800002D302A339B0E9CF01F0029ED1B002CE8 -:10B5F8000E9CF01F0029304A337B0E9CF01F00245C -:10B60800301B0E9CF01F0023303B0E9CF01F0021C6 -:10B6180031CB0E9CF01F001F306B0E9CF01F001DDD -:10B628000E9CF01F001E6E5CEF0B001CF6CBFF108B -:10B638005C7BF01F001B0C98343949AA6E5B6E1CAA -:10B64800F01F00190C9CF01F0019EF3800132FF899 -:10B658005C58EF6800133059F2081800E0880005BC -:10B66800FE79EA60C058E06903E8F20809495C79A4 -:10B678000A9CF2C9FE0DE06801F4F2080C08EF58C4 -:10B68800001ED8228003B4098000AEF08000ABC44D -:10B698008000AC288000AD588000AC788000D210C3 -:10B6A8008003B405800113908000B12CD421301898 -:10B6B80078A7EF390012F0091800EFF81E12F9B850 -:10B6C8000100EFF81E131896F01F0039EBDCC008D4 -:10B6D800C501301A335B0E9CF01F0036303B0E9CC0 -:10B6E800F01F0035302A339B0E9CF01F0032ED1BF3 -:10B6F800002C0E9CF01F0031304A332B0E9CF01F9B -:10B70800002D6EAB0E9CF01F002E304A336B0E9C42 -:10B71800F01F00286E9B0E9CF01F0029304A337BD7 -:10B728000E9CF01F0024301B0E9CF01F0023303BA2 -:10B738000E9CF01F002131CB0E9CF01F001F306BB8 -:10B748000E9CF01F001D0E9CF01F001E6E5CEF0B80 -:10B75800001CF6CBFF105C7BF01F001B0C983439E3 -:10B7680049AA6E5B6E1CF01F001A0C9CF01F001992 -:10B77800EF3800132FF85C58EF6800133059F208BF -:10B788001800E0880005FE79EA60C058E06903E81F -:10B79800F20809495C790A9CF2C9FE0DE06801F4D7 -:10B7A800F2080C08EF58001ED82200008000AEF006 -:10B7B8008000ABC48000AC288000AD588000ADC0CC -:10B7C8008000AC788000D2108003B405800113900B -:10B7D8008000B12CD421304878A7EF390012F00945 -:10B7E8001800EFF81E12F9B80100EFF81E131896AA -:10B7F800F01F0025EBDCC008C291301A335B0E9CA9 -:10B80800F01F0022303B0E9CF01F0021302A339B92 -:10B818000E9CF01F001EED1B002C0E9CF01F001D3F -:10B828000E9CF01F001D6E5CEF0B001CF6CBFF108A -:10B838005C7BF01F001A0C983439499A6E5B6E1CB9 -:10B84800F01F00180C9CF01F0018EF3800132FF899 -:10B858005C58EF6800133099F2081800E08800057A -:10B86800E0692710C058E06903E8F00902495C79EB -:10B878000A9CF2C9FE0DE06801F4F2080C08EF58C2 -:10B88800001ED8228000AEF08000ABC48000AC2837 -:10B898008000AD588000AC788000D2108003B405D9 -:10B8A800800113908000B12CD4314A5830167007AB -:10B8B80030A20C9330043055C3E86EA85808C3A0D2 -:10B8C800F1090022F2CA0001F15A0022EC0919001C -:10B8D800C151F1380012E40818005F0AE6081800A0 -:10B8E8005F09F5E91009E8091800C041EA081800DD -:10B8F800C2110E9CF01F0013C1D8F1090020F2CA32 -:10B908000001F15A0020EC091900C141F138001278 -:10B91800E40818005F0AE60818005F09F5E910094D -:10B92800E8091800C041EA081800C0410E9CF01F41 -:10B9380000066E075807CC21D8320000000080CCE2 -:10B948008000B7DC8000B2E0D4211896580CC0E122 -:10B958004C08201D1AD8E068024E1AD84BE84BFC58 -:10B968001AD8F01F003F2FCDC008F9380035A3D8EA -:10B97800F968003578A7F909002CE068023FF0095A -:10B988001900E088008B5807C091350CF01F00356E -:10B998001897E08000838DACC2E86E1C580CC0304C -:10B9A800F01F00316E585808C0E04AA8201D1AD868 -:10B9B800E068026C1AD84AD84A8C1AD8F01F0028B6 -:10B9C8002FCDC0086E285808C0916E385808C0613D -:10B9D800EF090010F0091900C0E049E8201D1AD845 -:10B9E800E068026E1AD84A2849CC1AD8F01F001C01 -:10B9F8002FCDC008350A300B0E9CF01F001EF01F1B -:10BA0800001E8F1C1895C0610E9CF01F001C8DA590 -:10BA1800C178344A49ABF01F001B499B343A6E1C6D -:10BA2800F01F00190C9A499B6E1CF01F00190C9C02 -:10BA3800F01F00185C5CC0700C9CF01F0017E06CD5 -:10BA480000FFD822ED380035A3B8ED680035D822BC -:10BA580080039DC48003A13880039D9C800094C40A -:10BA68008002E2A4800112288003A14880039FA0DD -:10BA78008002E8BC800112008002E28C8003B409D5 -:10BA880080011260800113208000BBBC800111F886 -:10BA98008000B5988000AE50E06C00FFD82200000E -:10BAA800D421202D1896580CC0E14BA8201D1AD877 -:10BAB800E06803781AD84B884B8C1AD8F01F0038E6 -:10BAC8002FCDC00878A75807C0E14B28201D1AD8E9 -:10BAD800E068037A1AD84B384B0C1AD8F01F00309C -:10BAE8002FCDC0086F295BF9C1102E2933C8E06A31 -:10BAF800FFFFF2080D081438F40817B0EF580020BB -:10BB08005808F9B80001EFF80C106F395BF9C1104B -:10BB18002E2933C8E06AFFFFF2080D081438F4082C -:10BB280017B0EF5800225808F9B80001EFF80C11C7 -:10BB38006EB850185808C041FC18FF0050186EC85D -:10BB480050085808C0716EA84019F3E80008A1A869 -:10BB58005008EECBFFD80C9CF01F0013FACBFFFC6B -:10BB68000C9CF01F00121A9B0C9CF01F00110C9CDF -:10BB7800F01F0010EF39001230A8F0091800EFF894 -:10BB88001E12F9B80100EFF81E132FEDD82200009D -:10BB980080039DC48003A16080039D9C800094C4A1 -:10BBA8008003A17C8000CBC88000CA928000CA7440 -:10BBB8008000CB88D43178A71896149574186E290C -:10BBC8005809C0916E395809C061EF0B0010F20B8B -:10BBD8001900C0E04BE8201D1AD8E06805651AD89E -:10BBE8004BC84BDC1AD8F01F003D2FCDC0088A5B2C -:10BBF80032BAF40B1900E088020F118B302AF40BCB -:10BC08001800E0810209F93C002EECCBFFD1F0CA04 -:10BC1800FFE4C0982FF917345C59153EFC0418004E -:10BC2800E08101FAF8091800CF6311FA11CB11D994 -:10BC380011E8B169F3EB1189F3E810896E08F5E9A9 -:10BC480010091039E08101E80E9CF01F00258A4C8C -:10BC5800E06800F0F00C1900E088000FF8CC00F064 -:10BC6800EF5C00105C7CF01F001F8F3CC051EF5C44 -:10BC78000010E08F01D1E06C00F0F01F001A8F2C4B -:10BC88001894C0C16E3C580CE08001C6F01F001625 -:10BC9800EF5400108F34E08F01BF189B3009E06A21 -:10BCA80000F00A9CF01F0011E06800F0F00C190089 -:10BCB800C2004878201D1AD8E068052E1AD848C84E -:10BCC800485C1AD8F01F00052FCDC00880039DC41A -:10BCD80080039FA080039D9C800094C48000AEC414 -:10BCE8008002E2A48002E28C8000CEC48003A1948A -:10BCF8006E3B580BE08001B2E06900F0EF1A0010CB -:10BD08000A9CF01F0036EF080010F8081900E080C0 -:10BD180001A54B38201D1AD8E06805351AD84B18EC -:10BD28004B1C1AD8F01F00312FCDC00819A8305A63 -:10BD3800F4081800E0810100EF3800123019F20809 -:10BD48001800E08100EC30086CA4333B89D889B82E -:10BD580089C8089CF01F0026C0F0F8C8FFFC19AB82 -:10BD6800119919BA1188B16AF5EB118AF5E81088AA -:10BD78001248E948004433AB089CF01F001DC0E09E -:10BD8800F8C8FFFC19AB119919BA1188B16AF5EB1B -:10BD9800118AF5E810881248C0386918A198E9484E -:10BDA800004833BB089CF01F0012C0E0F8C8FFFC35 -:10BDB80019AB119919BA1188B16AF5EB118AF5E82E -:10BDC80010881248C0286918E948004C6828F0C94A -:10BDD800FFF0C0F11298C1C88000CEC480039DC492 -:10BDE8008003A1C880039D9C800094C48000AAF4AD -:10BDF800F1390013F13B0010F13A0011F13800124B -:10BE0800B16AF5EB118AF5E81088F3E8100889A8FB -:10BE1800301B089CF01F0084C0E0F8C8FFFC19AB79 -:10BE2800119919BA1188B16AF5EB118AF5E81088E9 -:10BE3800124889B8303B089CF01F007BC0E0F8C866 -:10BE4800FFFC19AB119919BA1188B16AF5EB118A7F -:10BE5800F5E81088124889C831CB089CF01F007299 -:10BE6800C0E0F8C8FFFC19AB119919BA1188B16A7A -:10BE7800F5EB118AF5E81088124889D8306B089CD0 -:10BE8800F01F00691892C2E01998A38889E8582819 -:10BE9800F9B80B02E9F8BA0E3003C1D8E608150262 -:10BEA800E6C9FFF22FE8E8090029E4080008113E76 -:10BEB800113AB16AF5EE118A118EF5EE108A1191D8 -:10BEC800069CF5E11001F2CBFFFC93112FF3F01F54 -:10BED80000575C5368E81033CE23069C4D4BF01F87 -:10BEE80000536CA43008E93A00123089EF58001E5C -:10BEF800F20A1800E9F91E12E9F81E130C9C300A20 -:10BF0800E8CBFFD8F01F004BE93800132FF8E96899 -:10BF180000133018E958001EC7E820383029F20805 -:10BF28001800E08B007930080C9CEF58001EF01FB9 -:10BF38000042C7183069F2081800C3513019EF38A9 -:10BF48000012F20818005F0B3039F20818005F0978 -:10BF5800F7E91009C0813049F2081800C040F40818 -:10BF68001800C5916CA40C9C3003EF53001EF01F01 -:10BF780000330C9C4AEBF01F00320C9C4ACBF01F9C -:10BF880000310C9C4AABF01F0030E939001230C870 -:10BF98000C9CF0091800E9F31E13E9F81E12F01FB3 -:10BFA800002BC398302AF4081800C351EF38001248 -:10BFB800F2081800C30130086CA4EF58001E336B58 -:10BFC800089CF01F0019C270F8C8FFFC19AB119942 -:10BFD80019BA1188B16AF5EB118AF5E81088124888 -:10BFE80089986828F0C9FFF0C0311298C108F13962 -:10BFF8000013F13B0010F13A0011F1380012B16A58 -:10C00800F5EB118AF5E81088F3E8100889A80C9C6C -:10C01800F01F000F0E9CF01F000F0A9CF01F000E6F -:10C02800D83200008000AAF48000C19C8003B409C3 -:10C038008001384C8000BAA88000CABC8000CBC8F8 -:10C048008000CA748000CA928000B5988000B6B497 -:10C058008000AEC48000D13C335B0E9CF01F00030F -:10C06800FE91FE66CD8B00008000AAF4D4314C18F6 -:10C07800301370073002069430813050C7686EA6BE -:10C088005806C720ED05001EE6051900E0880006E1 -:10C098002015ED55001EC688E6051900C651ED3875 -:10C0A8000012306AED52001EF40818005F0A30C909 -:10C0B800F20818005F09F5E91009300AF4091800B8 -:10C0C800C501E8081800C0B1ED380013E0081800F1 -:10C0D800E08B00360E9CF01F0028C468E2081800A8 -:10C0E800C191ED380013E8081800E08B0010300A01 -:10C0F800ECCBFFD80E9CF01F0021ED380013ED5556 -:10C10800001E2FF8ED680013C2F80E9CF01F001CEB -:10C11800C2B8E0081800C0510E9CF01F001AC248AF -:10C128003049F2081800C0F1ED380013E208180091 -:10C13800E08B00060E9CF01F0014C1680E9CF01FD7 -:10C148000013C0F83039F2081800C0E1ED380013C8 -:10C15800E8081800E08B00060E9CF01F000DC04890 -:10C168000E9CF01F000C6E075807C8A1D8320000BB -:10C17800000080CC8000B6B48001384C8000BAA89A -:10C188008000B2E08000B7DC8000B1D88000B4AC99 -:10C198008000B598D4013019F20C1800E08B001D0E -:10C1A800580B5F1A48D9720958095F19F5E900094F -:10C1B800C13017B9178E179A17A8B16AF5EE118A08 -:10C1C800F5E81088F3E81008C0704858304AF00CB9 -:10C1D800002CF01F0004D80200001D5800001D505C -:10C1E8008002E736D42130181897F00B1800E08B3E -:10C1F80000074868304AF00B002BC038304A484BDB -:10C20800F01F00040E9CD82200001D508003B409C2 -:10C218008002E736D4313013189516911492E60C43 -:10C228001800E088000F4BB8201D1AD8E0680246B5 -:10C238001AD84B984B9C1AD8F01F00392FCDC0083C -:10C248004B89F20C0028F20C072B11BA119911A88E -:10C25800B169F3EB1189F3E81088F5E81008C0E13B -:10C268004AC8201D1AD8E06802471AD84AE84ABCCA -:10C278001AD8F01F002B2FCDC008300AE06B011030 -:10C28800149CF01F002A1897C041E06600FFC758A9 -:10C2980078045804C0E049F8201D1AD8E068024D17 -:10C2A8001AD84A3849DC1AD8F01F001D2FCDC0080B -:10C2B800781630CA089B0C9CF01F001EECC9FFF4CE -:10C2C800AC92ACD3E5D2C110ACA3ACC42011AC8203 -:10C2D80032EC2FF1F2C8FFFF300AC05810CBF5D26C -:10C2E800C0082FF1038BF4C2FFFFE80B18005F139F -:10C2F800F80B18005F16E7E60006E8061800CEF10E -:10C30800B28A0389E8091800C1601099CE3B000081 -:10C318008003A1E48003A22880039D9C800094C42C -:10C3280000001D508003A2408000D3188003A2643F -:10C338008002E8BCF0CBFFFB10C9B089B0A9301966 -:10C34800B099B0B96E180E9C101B5C7BF01F000CE6 -:10C3580048C848D6F0050025335A6C0C0A9BF01FD4 -:10C36800000B6C0C0A9A33590E9BF01F0009EDDC88 -:10C37800C0080E9CF01F00070C9CD8328000D21019 -:10C3880000001D5000001D5880011320800114F08A -:10C398008000D13CD421189A303CF80A1800E08873 -:10C3A800000F4BE8201D1AD8E068028A1AD84BC83B -:10C3B8004BCC1AD8F01F003C2FCDC0084BB8E06713 -:10C3C8000118F4070247F007000730180F8B169979 -:10C3D800F00B1800C0A0C603302BF6091800C0F0F7 -:10C3E800F8091800C4C1C4383008AEABAEB8AE986E -:10C3F800EECBFFF43028300CAE88C3680FA92019A3 -:10C408005C59AEA9C4910FBB2FFB5C5BAEBB0F9C04 -:10C41800304EFC0B1800C251F20C1800C1214A4AD8 -:10C4280015FB15CE15DC15EAB16CF9EE118CF9EA9D -:10C43800108AF7EA100AC050AEB9AEA8AE98D82252 -:10C44800EEF801105808C070EEFA0114300BEECC6B -:10C45800FFF45D183008AE883008EF480110D82284 -:10C46800AEABEECBFFF4F01F0013D8226E282018D5 -:10C478008F28C121EF480110AE88D8224878201DA6 -:10C488001AD8E06802C61AD848B8486C1AD8F01FFB -:10C4980000062FCDC008D8228003A1E48003A28023 -:10C4A80080039D9C800094C4000018F000001D507B -:10C4B8008000C21C8003A29CD431580B5F081292E2 -:10C4C80016974BB914967209189558095F04F1E448 -:10C4D8001004E08100B6580CE08000B31989E8091F -:10C4E8001800E08000AEF01F0033E04C00FFE08B46 -:10C4F80000A84B1B0A9CF01F0031C08137F8AEA47E -:10C50800AE88AE9C3018AEB8D8320A9CF01F002C0A -:10C51800F8081618AE88F1DCC208AEBCAE98F1DC9B -:10C52800C108AEA85BFCE081008F4A63300430305C -:10C5380006910788E0081800C171E80400280A9CE1 -:10C54800F00B1503101B2FFBE20B003B2FCBF01F4A -:10C55800001BC0A1E0680118B13449A8F004000428 -:10C56800E8F8010CC0782FF4E6C3FEE85844CE2161 -:10C578003FF8F0091618AE89F3D8C208AEB8AE99DC -:10C58800F3D8C108AEA95BF8C5E1300748E848DB35 -:10C59800118A0E9C0E9930313043F2C0FFFF178488 -:10C5A80016985804C1211297C358000000001D585E -:10C5B8008002EDD08003A2BC8002ECC880011E106E -:10C5C800000018F0000018ECE2041800C0C117C8F9 -:10C5D800F4080104F40801081838E08A0005F9D4C1 -:10C5E800C0081297F3D0C008F6CBFEE8E609180099 -:10C5F800CD513039F2071800E08B0027494BE0682D -:10C608000118EE080248F6080008118BF20B180012 -:10C61800C1B1F4C9FFFFB0CAF1460110301AF142A6 -:10C628000114B08AF0CCFFF448A80A9BB089F01F27 -:10C63800000A0E9CF01F0009E06C00F2D832E06C92 -:10C6480000F7D832D83AE06C00FFD832000018F072 -:10C65800000018EC8002ED708000C39CD40148985B -:10C6680070085808C0D0300CF01F0007301CF01FAD -:10C678000006302CF01F0004303CF01F0003D802E5 -:10C6880000001D588000C39CD421494C4946F01F26 -:10C6980000156C0518975805C1E1F01F00138D0CA3 -:10C6A800C1A0492B0A9AF01F00120A9A491B6C0C68 -:10C6B800F01F00116C085808C0E05807C0C0EE0908 -:10C6C800161848E8B0B7B089F3D7C208EFD7C10841 -:10C6D800B099B0A7D82200008003A2C800001D5856 -:10C6E80080011E10800112008003B40980011260CD -:10C6F8008000C704800111F800001D50D431E068A3 -:10C7080002001496944AF00A1900E08B00E331986D -:10C71800F00A1900E08800DE4DF75C7A30090E9BBC -:10C728000C9CF01F005E8C48F8081900E08100D2CC -:10C738000F993038F0091800E08B00CCE06501183B -:10C74800AB394D75120530290B8AF20A1800E081C1 -:10C7580000C1AA880FBAF5DAC004AADA0FD80FCB3D -:10C76800F1EB108B0FF80FEC5C8BF1EC108C3009AF -:10C778005C8C0FA8F2081800E084009DF20A1800EB -:10C788005F18301AF40B18005F1AF5E81008F20861 -:10C798001800E0810090EAC4FFF42F4708980F8939 -:10C7A800129AE21A00C0E04A00C0C1502FF7C098A0 -:10C7B800F3DBC0082FF7118BF40B1800C7B12FF863 -:10C7C800F2CB00010F8A5809CF41F20A1800C03095 -:10C7D8002FF8CE6B4B0B30082F4B1739129AE21AF1 -:10C7E80000C0E04A00C0C060120B1789F0091800A9 -:10C7F800CF51F1DCC0082FBB300E301A3047C58846 -:10C808001739129CE21C00C0E04C00C0C060120B3B -:10C818001789FC091800CF512FFB17CC17D9B1691C -:10C82800F3EC118917ECF7330008F3EC108917A221 -:10C8380017FC1781F9E91009F73C0009F9E3108C96 -:10C8480017B35C8CE7E2108317925C83E5E11082F2 -:10C85800F4021900C281F4031900C251EE0C190048 -:10C86800C2218B29E8593A80E0880005E8783A80A7 -:10C878008B28EAC7FEF42F6B304A0E9CF01F000984 -:10C88800EAF801105808C250EAFA01140E9B089CF5 -:10C898005D18C1F800001D5C8000CEC4000018F0CF -:10C8A8008002E7365C7C20182F6C5C58180B5808FF -:10C8B800CA81EAF801105808C070EAFA0114300B6E -:10C8C800EACCFFF45D183008AA883008EB4801105C -:10C8D8000C9CF01F0002D8328000D13CD401F01F1C -:10C8E8000003F01F0003D8028000C8F88000C6903B -:10C8F800D42149A949ABF2CCFEC4F2C8FF54300A8E -:10C90800F2C9FF50910A930AB22A172EF14EFFFC82 -:10C918002F092F081838CF71492949382FD9149C65 -:10C92800E019FFFCF0C6FFDC48D7490E910CEE0A6F -:10C938000405189BC098700493042FFB9109FC0A06 -:10C9480005045C8B0809EA0B1900CF632FC82FEA8E -:10C958000C38CED1D8220000000080D48003A2D8A1 -:10C9680000001F5C000072E88003A394D401580BF8 -:10C97800C200F1DBC002C0E048F8201D1AD8E06808 -:10C98800016B1AD848D848EC1AD8F01F000E2FCDE2 -:10C99800C00848D8F00C03299709F00C092B48B8AF -:10C9A800A56CF00C000CF8CCFF54780820189908F6 -:10C9B800D80200008003A2EC8003A33080039D9C72 -:10C9C800800094C4000072E8000080D4D421189834 -:10C9D800588CE088000F49F8201D1AD8E068013DFE -:10C9E8001AD849D849DC1AD8F01F001D2FCDC00825 -:10C9F80049CE49D9FC0C032CF0CAFFF5580CC230BB -:10CA0800A56AF00B15047807F20B000BFC08092740 -:10CA1800F6CBFF5414097608720A2FF8103AF3F887 -:10CA28003A009708F1DCC002C13048A8201D1AD886 -:10CA3800E068014F1AD848D8488C1AD8F01F000867 -:10CA48002FCDC008A56A140992282FF8B228D82239 -:10CA58008003A2EC8003A35080039D9C800094C4B3 -:10CA6800000072E8000080D48003A370580BC0C097 -:10CA780017B8178A179917ABB169F3EA1189F3EB5D -:10CA8800108BF1EB100B993B5EFC580BC0C017B82C -:10CA9800178A179917ABB169F3EA1189F3EB108B71 -:10CAA800F1EB100B992B5EFC4828910C5EFC000002 -:10CAB800000080D0D4211897F9380035EDB800006F -:10CAC800C0D1A1C8F968003578885808C0205D1819 -:10CAD8006E785808C0300E9C5D18D822F93C003595 -:10CAE800F9DCC0015EFC580CF9FB1A075EFCD703A1 -:10CAF800D421300A18971696302C96CBF01F001ABE -:10CB08001895C041E06600FFC2B80C9BF01F0017E3 -:10CB1800EDDCC008C0500A9CF01F0015C2180A9826 -:10CB280070095809C0301298CFCB6EF95809C15016 -:10CB38006F095809C0E148F8201D1AD8E068025367 -:10CB48001AD848D848DC1AD8F01F000D2FCDC008D5 -:10CB58009305EF480040C048EF4800408FF50C9C13 -:10CB6800D82200008000D3188000CF988000D13CE4 -:10CB78008003A3A88003A44480039D9C800094C4E0 -:10CB8800D4211897F9380035EDB80000C170A1A874 -:10CB9800F968003578885808C0205D186E785808FC -:10CBA800C0300E9C5D18EF380035EDB80005C06147 -:10CBB8000E9CEECBFFFCF01F0002D8228001370C40 -:10CBC800D42117881799B169F3E8118917A8F3E8F0 -:10CBD800108917B81697F1E91009189678181039BE -:10CBE800C27049A8700CC0A8780978356C1810393B -:10CBF800C041301BF01F00160A9C580CCF614958E1 -:10CC08007008C14870095809C1006C1A1439C0D19C -:10CC18000F8A0F99B169F3EA11890FAAF3EA10890B -:10CC28000FBAF5E91009910970385808CEC10F8A72 -:10CC38000FB90F98B168F1EA11880FAAF1EA1088C4 -:10CC4800F3E810088D18D8220000820C8000E12437 -:10CC580000008214D421149712961895F01F001022 -:10CC68005807C0C00FB80F8A0F990FA7B169F3EA28 -:10CC78001189F3E71087F1E710078B275806C0C022 -:10CC88000DB80D8A0D990DA6B169F3EA1189F3E67D -:10CC98001086F1E610068B36D82200008000CBC83B -:10CCA800D4213006999899169926993699A6997695 -:10CCB800998699F6F94600404908FAC4FFEC681EBF -:10CCC8006804F96600351185F96500382FF5B085D7 -:10CCD8001897994EF01F000A0E9C5D145C5C4898EA -:10CCE800580CEC071710F1F90000EFF90A00F1F7FA -:10CCF8000A000E9CD82200000000730C8000CC5C57 -:10CD0800000080CC1898300CC0482FFC70085C5C80 -:10CD18005808CFC15EFC580CF9F81207F9B901019F -:10CD2800F1D9E108F9F81C075EFCD703D401580CC7 -:10CD38005F08580B5F09F3E81008C1304978201DD7 -:10CD48001AD8E068028F1AD84958496C1AD8F01FC7 -:10CD580000162FCDC008964AF4080008B848129C5F -:10CD6800984878095809CF819859F0091900C0E006 -:10CD780048A8201D1AD8E06802971AD848B8489CD5 -:10CD88001AD8F01F00092FCDC0089649990BF20850 -:10CD98000008B848D80200008003A4708003A4B437 -:10CDA80080039D9C800094C48003A4ECD421169732 -:10CDB800F01F00065807EFF81207F9B90101F1D979 -:10CDC800E108EFF81C07D8228000CD34D421580C94 -:10CDD800C0E14B58201D1AD8E06801B01AD84B386A -:10CDE8004B3C1AD8F01F00332FCDC008580BC03168 -:10CDF800169CD8223008F00B1900C154F60911000E -:10CE080098585C89F2081900C0F24A78201D1AD88F -:10CE1800E06801B71AD84A884A5C1AD8F01F00257A -:10CE28002FCDC0081699F93E000C300A3037F40EA1 -:10CE380019005F08EE0E19005F061497104678185F -:10CE4800F4061800C0A0F00B01099919F8CAFFF000 -:10CE58001439C2029918DA2A201E3017EE0E19006A -:10CE6800E08B000CF40B1900C1D4985AF20A19008F -:10CE7800C19316189918C0E848B8201D1AD8E06858 -:10CE880001E61AD848D848AC1AD8F01F000A2FCDA6 -:10CE9800C00898581608B8589848F00B000BB84BBB -:10CEA800D82ADA2A8003A47080039EA480039D9C5C -:10CEB800800094C48003A51C8003A53CD43116913E -:10CEC8001497580CC0E14AD8201D1AD8E068033ED0 -:10CED8001AD84AB84ABC1AD8F01F002B2FCDC00860 -:10CEE800580BC070300518960A920A930A90C388A6 -:10CEF8004A28201D1AD8E068033F1AD84A384A1C25 -:10CF08001AD8F01F00212FCDC0085809C0A08C588E -:10CF1800F208010AF0091900C043F3DAB010C1F8A9 -:10CF2800F1D9C0108C54E8090109EE091900EE097D -:10CF380017B06C1BE9D9B010F9D5C010100BE20C72 -:10CF4800000C089A5C7AF01F0012E8030003081727 -:10CF5800E80500055C835C855C8730096C0658062B -:10CF68005F1AE40719005F18F5E80008E0081800E0 -:10CF7800CCD1069CD83200008003A4708003A5B0F1 -:10CF880080039D9C800094C48003A5D08002E7366E -:10CF9800D431580C5F08580B5F0918961697F3E8B8 -:10CFA8001008C06198499648F0091900C0E24C7809 -:10CFB800201D1AD8E06802FE1AD84C584C5C1AD8C2 -:10CFC800F01F00452FCDC00830050A945806C0E16F -:10CFD8004BE8201D1AD8E06803031AD84BF84BDC3D -:10CFE8001AD8F01F003D2FCDC0088C5808995C79DD -:10CFF8008E53F5D8C010F7D3C010121AF3D5C0104D -:10D00800F6090109123AE7D5E413E8091750F1D9EE -:10D01800E51308985C786C1C100CF1D5C0105C8383 -:10D028006E1BF5D3C010100BF01F002DE604000492 -:10D038008C585C84F0041900E088000F4A38201DE1 -:10D048001AD8E068030F1AD84A684A2C1AD8F01F71 -:10D0580000222FCDC008F0041900EDF60000F9B445 -:10D068000000E60500058E585C85F0051900E0888B -:10D07800000F4968201D1AD8E06803151AD849A876 -:10D08800494C1AD8F01F00142FCDC008F00519001C -:10D09800EFF72000F9B502005807C2908E598E4864 -:10D0A800F0091900C2416E085808C2104878201DBE -:10D0B8001AD8E068031F1AD848C8486C1AD8F01F55 -:10D0C80000062FCDC00800008003A4708003A5F4DB -:10D0D80080039D9C800094C48003A6248002E736C8 -:10D0E8008003A6348003A64C8003A6685806C16056 -:10D0F8008C598C48F0091900C1116C085808C0E017 -:10D108004898201D1AD8E06803241AD84878488C13 -:10D118001AD8F01F00082FCDC0085807FE91FF58F5 -:10D128000E9CD8328003A4708003A66880039D9C5F -:10D13800800094C4D421189B580CC0E14AB8201D23 -:10D148001AD8E068021C1AD84A984AAC1AD8F01FB4 -:10D15800002A2FCDC008F939000C3038F009180022 -:10D16800E088000F4A18201D1AD8E06802281AD84B -:10D178004A284A0C1AD8F01F00202FCDC0083007C3 -:10D18800303530169679F2C800015C885809C0E13C -:10D198004968201D1AD8E06802351AD84988495CC0 -:10D1A8001AD8F01F00152FCDC008B6785808C1B19D -:10D1B800F738000C169CF0C900017604EA0819003B -:10D1C800C031308CC068EC091900E08B0006307C57 -:10D1D800F01F000CC038F01F000C2FF7089B5C579D -:10D1E8005804CD110E9CD8228003A47080039EA4FD -:10D1F80080039D9C800094C48003A6948003A6AC01 -:10D208008000C9748002E28CD421580CC0E14B988C -:10D21800201D1AD8E068015F1AD84B784B7C1AD8C1 -:10D22800F01F00372FCDC0083019F938000CF2086C -:10D2380018005F1A3039F20818005F19F5E900097B -:10D24800C1405808C1203029F2081800C0E04A98A7 -:10D25800201D1AD8E06801631AD84AA84A7C1AD84F -:10D26800F01F00272FCDC0089848F00B1900C3F213 -:10D27800F3D8C0101897F1DBB0105C7B121BC27892 -:10D28800E04BFFFEE08A000F49A8201D1AD8E0688D -:10D2980001771AD849C8499C1AD8F01F00192FCD10 -:10D2A800C0088E481608AE486E075807C0E14918EE -:10D2B800201D1AD8E068017B1AD8494848FC1AD8BA -:10D2C800F01F000F2FCDC008F1DAB0108E59F00909 -:10D2D800010AF2081900FE9BFFD5AE48AE586E0C45 -:10D2E800580CC030F01F000A30088F08D822000000 -:10D2F8008003A4708003A70080039D9C800094C4D1 -:10D308008003A7188003A7348003A7488000D13C76 -:10D31800D431202D16971495581CC0B0C083582CB2 -:10D32800C040583CC0B1C1783004C0583144C0280E -:10D3380030042EC42E445C84C0F84C08201D1AD832 -:10D34800E06800D11AD84BE84BEC1AD8F01F003E21 -:10D358002FCDC00830045825E08B00065815E08210 -:10D3680000DDCBF85835E08100E6308CF01F00373F -:10D378001896E08000F25C740E99E8C8FFFD5C79AD -:10D38800E018FFFCB847E06A02443000F4080108DE -:10D39800F8040004F0090D472ED4E014FFFCAC5744 -:10D3A8009914F965000C99005C77F8C3FDAC0E047C -:10D3B8000833C0E24A18201D1AD8E06800EB1AD8D2 -:10D3C8004A384A0C1AD8F01F00202FCDC008580838 -:10D3D800E089000F4998201D1AD8E06800ED1AD896 -:10D3E80049C8498C1AD8F01F00182FCDC008F20779 -:10D3F800010700980A9918943015E0610243B8753E -:10D40800E0620244C6A850195008308CF01F000F83 -:10D418000E9B189A5C8BF4CEFFF0F6011900F60CFF -:10D428001720E40C173040194008580AC1610C9CB9 -:10D438001496F01F0009C9088003A4708003A76030 -:10D4480080039D9C800094C48000C9D48003A77C7D -:10D458008003A7B08000D13C9508890AF569000CC3 -:10D46800F560000DE047FFFFC0E14BD8201D1AD83A -:10D47800E06801071AD84BB84BBC1AD8F01F003B1C -:10D488002FCDC008951EB45CB44BFDDEC002C0E0D1 -:10D498004B38201D1AD8E068010D1AD84B484B2C80 -:10D4A8001AD8F01F00322FCDC0085C7C8CDB18170F -:10D4B80014946C1CF80B000B1633C0E24A88201D2C -:10D4C8001AD8E06801101AD84AA84A7C1AD8F01F5E -:10D4D80000272FCDC008B4755807FE99FF96C3786A -:10D4E8000E985C782FD8E018FFFC5C74E8CCFFED50 -:10D4F800E01CFFFC100CF01F00201896C2D030086A -:10D50800F8040004AC572ED4B847E014FFFCF968BF -:10D51800000C99149908C1B8307CF01F00181896AF -:10D52800C1B03008AC57F965000CB847990899188C -:10D53800C0E848B8201D1AD8E068013D1AD8490843 -:10D54800489C1AD8F01F00092FCDC0083018AC78B5 -:10D558003008ED68000D0C9C2FEDD8328003A470C4 -:10D568008003A7E480039D9C800094C48003A7F8EF -:10D578008003A77C8002E2A48000C9D48003A82885 -:10D58800D43149B8781918951094300CF2C2FFF4C8 -:10D59800F3310009700718961893C1E8EF380010A6 -:10D5A8000238C1716E585808C1400A9A0E9B6E6CB9 -:10D5B80004995D18C0E05806C0410C95301CC0A8FD -:10D5C8006E388D3868088F388907301C3005C028B8 -:10D5D800300C0E966E37E60C18005F0858075F1976 -:10D5E800F3E80008E6081800CDA1D832000073104F -:10D5F800E06C00FB5EFCD421E067040078A8F90B1E -:10D60800002C78C9F5DBC010F90E003C100AEE0EAC -:10D618001900E0880005E06E0400C0285C7EF4096B -:10D628000107EE0E010EC076F95B002E78CCF40CE3 -:10D63800010CD822F009010A580AE08A00063008CD -:10D64800F958002ED82AF2080108F958002ED82ACD -:10D65800996B5EFCF94B008C5EFCF94B00885EFC14 -:10D66800F94B00985EFC998B5EFCF96A0039F94B1E -:10D6780000945EFC5EFC5EFC48A87008C028703808 -:10D688005808CFE148887008C02870385808CFE19A -:10D6980048687008C02870385808CFE15EFC000060 -:10D6A8000000820C0000821400008220D4014A6825 -:10D6B8007008C30870495809C0E14A48201D1AD8A3 -:10D6C800E06805AC1AD84A284A2C1AD8F01F00225C -:10D6D8002FCDC0085819C0E149C8201D1AD8E068E4 -:10D6E80005AD1AD849D849BC1AD8F01F001B2FCD50 -:10D6F800C00858A9C0E14958201D1AD8E06805AEED -:10D708001AD84978493C1AD8F01F00132FCDC00801 -:10D7180070385808CD0149387008C128704958A98F -:10D72800C0E048A8201D1AD8E06805B11AD848E812 -:10D73800488C1AD8F01F00082FCDC0087038580838 -:10D74800CEE1DA0A0000820C8003A8688003A8AC46 -:10D7580080039D9C800094C48003A8D88003A904FA -:10D76800000082208003A934D43118961497784891 -:10D778005808C0E04C48201D1AD8E068011A1AD889 -:10D788004C284C3C1AD8F01F00432FCDC008580A2B -:10D79800C3514C19720C4C19720A4C19109E9207FD -:10D7A8004C08E069100070052FF70A985C87EE0EA8 -:10D7B8001900F2071790C088F104001C0E93EE04BC -:10D7C8001900CF3070385808CF811898C088F104F4 -:10D7D800001C0E93EE041900CE8070385808CF81D3 -:10D7E8001498C088F104001C0E93EE041900CDD0E3 -:10D7F80070385808CF814AA8B0074A887008C1F81D -:10D80800F109001C0E93EE091900C181700A580A2B -:10D81800E0800099580BE0800096178C1799B16941 -:10D82800F3EC118917ACF3EC108917BCF9E910096E -:10D83800E0800089123AE080008670385808CE11DE -:10D8480049887008C1A8F109001CEE091900C141F6 -:10D85800700A580AC770580BC750178C1799B169C6 -:10D86800F3EC118917ACF3EC108917BCF9E910092E -:10D87800C690123AC67070385808CE6148A870052C -:10D888000A98C2D88003A8688003A96080039D9C79 -:10D89800800094C40000822000008214000001F877 -:10D8A8000000820C0000821CF109001C0E93EE0996 -:10D8B8001900C141700A580AC450580BC430178C5B -:10D8C8001799B169F3EC118917ACF3EC108917BCFF -:10D8D800F9E91009C370123AC35070385808CE518C -:10D8E80049A87008C158F109001CEE091900C0F1D7 -:10D8F800178A1799B169F3EA118917AAF3EA108907 -:10D9080017BAF5E91009700A123AC1C070385808F8 -:10D91800CEB1580BC11017891798B168F1E9118871 -:10D9280017A9F1E9108817B9F3E81008C050304A70 -:10D938000C9CF01F00078D354868ED57001C9106B8 -:10D94800D83AE06C00F5D832000082208002E73631 -:10D958000000821CD4211897169CF01F0008C0B044 -:10D96800F908002C5808C0702288EE081900F00742 -:10D9780017305C870E9CD82280012228D421F90810 -:10D98800002C1897F3D8C010E06CFFFFF5DBC0102F -:10D99800F8090109123AE08A000F4948201D1AD8EF -:10D9A800E06801BD1AD84928492C1AD8F01F00127E -:10D9B8002FCDC008100BE0680800EF5B002CF00BBF -:10D9C8001900EFF8BC160E9CF01F000CE04C01FF8C -:10D9D800E08A000AEF380026A1B80E9CEF680026FE -:10D9E800F01F0007D82200008003A8688003A988D8 -:10D9F80080039D9C800094C48000D5FE80010CECBF -:10DA0800D4211896304CF01F000A1897C0E0ECE8B3 -:10DA18000000F8E90000ECE80008F8E900086C48A4 -:10DA28009948781CF01F00030E9CD8228000C9D4A6 -:10DA38008000CD1ED4211896580CC0311897C0B854 -:10DA4800781C580CC030F01F000518970C9B304C00 -:10DA5800F01F00030E9CD8228000D13C8000C974BE -:10DA6800D42130071896C0880C9C6C06F01F00055E -:10DA7800F80700075C575806CF810E9CD822000093 -:10DA88008000DA3CD4217848189758A85F1A5808BB -:10DA98005F19F5E90009C2005818C1E0F8FC0084D4 -:10DAA800580CC060F01F000D3008EF4800843FF8A4 -:10DAB800EEFC0080EF58003AF01F000930066FECCA -:10DAC800EF460080F01F00066FFCF01F0005EF46D0 -:10DAD800007CEF460078D8228000D13C8000DA68CC -:10DAE800D421169778081638C04176389908C11895 -:10DAF8004B899308C0A870390E39C0614B599308F7 -:10DB08006E399139C06812985808CF614B1993083B -:10DB180030060E9C8F36F01F00306E4858A85F19EB -:10DB280058185F181268EC081800C0C0EF380026B3 -:10DB3800EDB80000C071A1B80E9CEF680026F01F78 -:10DB480000276E485818C3206FE85808C0E04A48B4 -:10DB5800201D1AD8E06804F91AD84A284A2C1AD87D -:10DB6800F01F00222FCDC0086FF85808C0E049C840 -:10DB7800201D1AD8E06804FA1AD849D849AC1AD82E -:10DB8800F01F001A2FCDC008EEF800805808C0E03A -:10DB98004938201D1AD8E06804FC1AD84958492C7D -:10DBA8001AD8F01F00122FCDC00830088F48F01F78 -:10DBB8000012C0E148A8201D1AD8E06805021AD84A -:10DBC80048E8489C1AD8F01F00092FCDC008D82271 -:10DBD800000082188000DA8C80010CEC8003A868B1 -:10DBE8008003A9AC80039D9C800094C48003A9C4D1 -:10DBF8008003A9E08000D6B48003A9F8D42118973F -:10DC080078485808C0E04A68201D1AD8E0680175AD -:10DC18001AD84A484A4C1AD8F01F00242FCDC008F9 -:10DC2800303CF01F00231896C380EF08001CF958F9 -:10DC3800001C6E6899688E48A1B8B8483018994891 -:10DC4800EF38000BF968000BEF38000AF968000A92 -:10DC58006E089908497972080E38C0316E38C108C3 -:10DC680049599308C0A870390E39C06149299308E9 -:10DC78006E399139C06812985808CF6148E99308FD -:10DC880030080E9B8F38302CF01F000C48C948D83C -:10DC98008D8970098D3991060C9CD8228003A8685B -:10DCA8008003AA1880039D9C800094C48000C9D476 -:10DCB8000000821C000082188000C9748000D5F81A -:10DCC80000008214D431204D4B583005700910964D -:10DCD8002FF90A9491090A934B2830627007E08F54 -:10DCE800019E6E485808C0E14AF8201D1AD8E0681D -:10DCF80002571AD84AD84AEC1AD8F01F002E2FCD4E -:10DD0800C0085818C0E14A88201D1AD8E06802588F -:10DD18001AD84A984A6C1AD8F01F00262FCDC00886 -:10DD280058A8C0E14A08201D1AD8E06802591AD834 -:10DD38004A2849FC1AD8F01F001F2FCDC0085828C0 -:10DD4800C071EF38004EE4081800E0800081EF3819 -:10DD5800004E30CAF4081800C7A0EF3800AC10997C -:10DD6800E8081800C300EEF900A82FF9EF4900A849 -:10DD7800493A100AF53AFFFF1439C6B33009EF499A -:10DD880000A8E4081800F9B90801F1D9E808EFF883 -:10DD98008EAC0E9CF01F000BC5C80000000082105E -:10DDA8000000820C8003A8688003AA3C80039D9C25 -:10DDB800800094C48003AA688003AA948003AC38C6 -:10DDC80080010A20EF08003AE6081900F9B90401B1 -:10DDD800F1D9E408EFF84C1D6FF85808C3A0EF0913 -:10DDE800003AEF08004CF0091900C3356E4858286E -:10DDF800C100EF09004AEF0800484CD1A3581208A7 -:10DE0800EF39004EE2090709F0090948EF58004CBC -:10DE1800EF080060EF090056F0091900F00917B083 -:10DE2800EF08003CF3D9C02FEF590058F00A15014C -:10DE3800F0091900EFFA3C2CEF08003CEF53003AC8 -:10DE4800EF5800560E9CF01F003BC0383018C02811 -:10DE580030086E495869C0B16C0B6EDAF60A010ACF -:10DE6800E04A0028E08800042FF85C588ECAEDBA12 -:10DE78000003C39158495F0A58795F091449E809B2 -:10DE88001800C3106C0AEEFC00A0EEF100A4F80123 -:10DE980002416ED9EEFB009CF4090109E20B000E69 -:10DEA800E06A01F4FC0A0D00FAE100080039E08894 -:10DEB80000062FF830115C58C178EF3100ADE20C44 -:10DEC800034BF60A0D0A1439E088000E50180E9C10 -:10DED800F01F0019EF3900AD30012FF9EF6900ADDF -:10DEE8004018C0283001EEFC0080580CC1106ED9D3 -:10DEF8006C0A121AEF09004CF2091006123AC08394 -:10DF08005018F01F000E30004018EF4000806E4996 -:10DF18005839C1516C0A6ED9F4090109E049002841 -:10DF2800E08800182FF85C58C14800008003A85802 -:10DF3800800110608001109C8000DA685899C091B7 -:10DF48006C0A6ED9F4090109E04900F0E08B00047D -:10DF58005808C4900E9CF01F00434C385805C14027 -:10DF680070081037C0E14C18201D1AD8E06802E488 -:10DF78001AD84BF84BFC1AD8F01F003F2FCDC00819 -:10DF88006E388B38C13870090E39C0E04B78201DC7 -:10DF98001AD8E06802E81AD84B884B6C1AD8F01FD8 -:10DFA80000362FCDC0086E399109EEF80098580850 -:10DFB800C0403FBB6E6C5D185801C0F0EF180024DC -:10DFC800201DEEC9FFFC1AD80E9AEF18001C6EAB84 -:10DFD8006F7CF01F002B2FED0E9B302C6E37F01F3F -:10DFE8000029C1C8EF3900382FF9EF690038EF3A36 -:10DFF8000039F20A1800E08B0010EF680038EEF8DC -:10E0080000945808C0600E9B6E6C5D185C5CC04143 -:10E018000E9CF01F001D0E956E375807FE91FE638B -:10E0280049A849B410957006C6086C4858A8C0E0BD -:10E0380048E8201D1AD8E068030C1AD8495848DC6B -:10E048001AD8F01F000D2FCDC00868096CD8F20847 -:10E058000108E04800F0E08B004C0C976C36C4587F -:10E068008000DA8C0000820C8003A8688003AAC4B0 -:10E0780080039D9C800094C48003AAF08001023430 -:10E088008000C97480010CEC00008220000082101E -:10E098008003AB1C6A081036C0E149A8201D1AD8B5 -:10E0A800E068031B1AD84988498C1AD8F01F001851 -:10E0B8002FCDC0086C388F38C1386A080C38C0E0DA -:10E0C8004908201D1AD8E068031F1AD8491848FCC7 -:10E0D8001AD8F01F000F2FCDC0086C388B080C9B86 -:10E0E800302C6C36F01F000C5806CA01C0780C9C06 -:10E0F800F01F000A5807CCF1CE1B2FCDD8320000F4 -:10E108008003A8688003AB4C80039D9C800094C466 -:10E118008003AB748000C9748000DA8CD431202D60 -:10E1280018951691784858A8C0A1189B4A2CF01F3A -:10E1380000230A9B302CF01F0022C3B8780850082F -:10E148007818F903001C5018F9020024797778A68A -:10E15800F8F400987860189B49ACF01F00186BFC25 -:10E16800580CC030F01F00186BEC580CC030F01F72 -:10E178000016EAFC0080580CC030F01F00130A9B00 -:10E18800302CF01F000F5804C040009C3FBB5D14AA -:10E198005801C0F0201D5C72F1D3C0101AD20C9B3C -:10E1A800FAC9FFF4FACAFFF80E9CF01F00082FED19 -:10E1B8002FEDD832000082208000DAE88000C97490 -:10E1C8000000820C8000DA6880010234D42118969D -:10E1D800302CF01F00511897C5114D084D0A189999 -:10E1E8007008740BC0A870DAF60A010A123AF4092A -:10E1F8001720F00C172070385808CF61580CC04011 -:10E20800301BF01F0048302CF01F00431897C30143 -:10E218004C584C3A18997008740E37FBC178F13A8B -:10E228000014EC0A1800E08B000DF60A1800E08BC9 -:10E23800000970D7FC0701071237C033109CC0389B -:10E24800169A12977038149B0E995808CE91580C4C -:10E25800C040301BF01F0033302CF01F002F1897E0 -:10E26800C5704B28F10900D42019F15900D44AF897 -:10E27800F10900D42019F15900D4E06A00B0300B3C -:10E288000E9CF01F002B3408EF6800143FF8EF686D -:10E29800000B4A384A7A70097408F2080008950891 -:10E2A800EF48006CEF480068EF48005CEF4800500A -:10E2B8003008EF6800ADEF680038E0680800EF58F4 -:10E2C800002EEF58002C3068EF58004AEF58004CE9 -:10E2D800E0681000EF580072E0680200EF58003C58 -:10E2E8003FF8EF58003A3018EF5800564928EF48E1 -:10E2F800008CE068DD00EA18006DEF48009CE078CB -:10E3080024F88FD9EF4800A03098EF4800A40E9C5D -:10E31800D82200008000C9D40000822000008210AA -:10E328008000E1240000820C000080D48002E8BC58 -:10E33800000001F48000E5ECD401340CF01F000269 -:10E34800D80200008000E1D4D431189714961293B3 -:10E35800169578445804C0E04C98201D1AD8E068F7 -:10E36800020A1AD84C784C8C1AD8F01F00482FCDC6 -:10E37800C008580BC041E06600F7CB78304A140C4F -:10E38800F01F0043EF560024EF08001CE8081900AE -:10E39800C34110944BF84C0970064C08720B700C72 -:10E3A8004BF9E06A100092082FF80C995C88F00489 -:10E3B8001900F4081790C078F30E001CF00E19002D -:10E3C800CF4072395809CF911899C078F30E001CC4 -:10E3D800F00E1900CEA072395809CF911699C0785D -:10E3E800F30E001CF00E1900CE0072395809CF91B7 -:10E3F8004AB9B208EF58001C4AA84AB9700A72080C -:10E40800F40800089308EF48005CF0C90001E068D0 -:10E418000800EF580060EF58002CEF58002E300825 -:10E428008FC88FA8E0680200EF49006CEF490050E0 -:10E43800EF58003C0A9BE06C0200F01F001C5C8C4B -:10E44800F808100AEF5800583018EF430090EF58BA -:10E458000056EF5C003C30288F48495972080E3846 -:10E46800C0316E38C2C849399308C26870390E394C -:10E47800C221490993086E399139C2288003A868D6 -:10E488008003AB9C80039D9C800094C48002E73687 -:10E498000000820C0000821400008220000001F8B5 -:10E4A80000008210000001F48000D95C0000821C8A -:10E4B8000000821812985808CDA148D9930848D866 -:10E4C80070098F3991073019201D30081AD9109A10 -:10E4D8003029109B0E9CF01F00082FEDEDDCC008C2 -:10E4E800C0410E9CF01F00050C9CD8320000821819 -:10E4F8000000820C8001035080010CECD421189795 -:10E5080078465826C390E08B00075806C0C05816B6 -:10E51800C071C2785846C370C3635876C3C030060A -:10E528000C97C4184A8972081838C0317838C1085D -:10E538004A699308C0A870390E39C0614A399308EE -:10E548006E399139C06812985808CF6149F9930813 -:10E5580030080E9B8F38302C1097F01F001DC0A874 -:10E56800189B49CCF01F001C0E9B303CF01F001874 -:10E5780030070E96C188189B498CF01F00170E9B18 -:10E588000C9CCF5B301BF01F0016EDDCC008C0B13F -:10E598003058C088301BF01F0012EDDCC008C031B5 -:10E5A80030988F4858075F193008F00618005F0A3E -:10E5B800F5E90009F0091800C0400E9CF01F000999 -:10E5C8000C9CD8220000821C000082188000C974AC -:10E5D800000082148000DAE80000820C80010A0042 -:10E5E80080010CECD421169C1497580AC08094CB57 -:10E5F800F01F00070E9CF01F0007D82A5809C030EA -:10E60800149CD822F01F00045C5CD8228000D984B6 -:10E618008000D13C8000E504D42149887007C2A855 -:10E62800EEFB0084580BC140169AEEF8008C58088F -:10E63800C06030090E9B6E6C5D18C078169A1099F0 -:10E648000E9B109CF01F000E5C5CEFFC0A21EF385B -:10E658000026EDB80000C0D1A1B80E9CEF680026D6 -:10E66800F01F0008EF380026E018FFFCEF680026CE -:10E678006E375807CD61D8220000820C8000E5EC87 -:10E6880080010CECD401F01F0007487913882FF89B -:10E698005C58B288EDB80000C031F01F0004D80201 -:10E6A8008000E620000073148000DCCCD4314A6876 -:10E6B80070063058ED3E000C2EC6A58EF00E1900DF -:10E6C800E0880040205E3008A36E30175C8E302151 -:10E6D8003042E7DEC010E06401FFE0650200C2E8F6 -:10E6E800F5D8C010EC0A070BEE0B1800C080C293D7 -:10E6F800EC0A0009E20B1800C1B1C0382FF8C1D8E4 -:10E70800139BE40B1800C1D12FDA063AC1A413BA3F -:10E718002FC813A95C88F5E910895C89F2CA000141 -:10E72800E80A1900EA0917B0F959003CC0781399AA -:10E738005809C070F20800085C88FC081900CD135D -:10E74800D832000000007318D4217848189616971C -:10E75800F138000DEDB80000C1C1169C3007F01F5C -:10E768000020C368F138000DEDB80000C0E16C4826 -:10E77800F13A000CF139000DF3EA1089A1A9F16909 -:10E78800000DA989F169000C6E07F01F0016C0285A -:10E7980049555807C1D06E4811C411DBB16BF7E475 -:10E7A800118B11E48EEEF7E4108B6A0A8CE911F4F0 -:10E7B8000E9CE9EB100B16191409F20E010ECD3759 -:10E7C800C098141B6C1CAC6B5C7BF01F00088D0799 -:10E7D800D8225809FE99FFF7CFBB00008000DA68FD -:10E7E8008000DA3C0000731C8000D210D4314C58F1 -:10E7F80018971188EDB80004E081020C79994C282B -:10E80800F90C006070086FAAF208010BC186103974 -:10E81800C0614BE87008F4080108C1164BB87008CD -:10E82800103AC2914BA87008F139000FF138000E68 -:10E83800F3E81088F8081900E088001E4B487009B2 -:10E84800F338000FF339000EF1E910884AE972092C -:10E858005C88EF490064EF5800604AC97209EF49C3 -:10E8680000685808C080EF3900AC3008F00918007B -:10E87800EFF81EAC4A586F497008F009010B580BA5 -:10E88800E089004C3006EF5600704A2B960BEC0BD3 -:10E898001900C3215C7CEF160060F80A000A6FAC0F -:10E8A800EC0C000C143CC281EF0A003AF60A19007D -:10E8B800C2351039C211EF3800542FF85C58EF6890 -:10E8C80000543039F2081800E088000FEF090056AC -:10E8D800EF08003C12085C88F2081900E088014A39 -:10E8E800EF580056C469F2081800E08101430E9CF5 -:10E8F800F01F0009C3E93008EF680054C3A90000FD -:10E90800000073280000731C0000732400007318B3 -:10E91800000073208001016A5CD91009E08600D1EB -:10E928006F7912185808E08900CCEF380026EDB846 -:10E938000002C081A3C8EF680026EF080058EF580E -:10E948000056300A4D39EF6A004E720BEF6A0054D8 -:10E9580072096F48EF490050F6080108EF09007284 -:10E96800EF580070F2080008EF09004AEF580072EB -:10E97800EF080048A358F2080008EF58004C6E480A -:10E988005838E0880066EF080056EF090058F0098B -:10E998001900E0880006EF09003C1009C0A8EF192B -:10E9A800003CB339F7D8C010F20B0C0AF408000980 -:10E9B8005C89F0091900E088004CEF590056C488BA -:10E9C8006C08EF030074EF48007C6C1CF01F0032E9 -:10E9D800F8031900C0E24B18201D1AD8E06803B3E9 -:10E9E8001AD84AF84AFC1AD8F01F002F2FCDC008B1 -:10E9F800EF0800705808C09020186C49F339000DD2 -:10EA0800EDB90000EFF80C38EF0300746C1CF01F30 -:10EA1800002218130C9CEF530074F01F0024EF0819 -:10EA28000074EA081900C1606FF85808C1316FE82E -:10EA38005808C1014998201D1AD8E06803BF1AD8A0 -:10EA480049B8498C1AD8F01F00182FCDC0084914AE -:10EA580030056FF65806C2D06C4811CBF139000D5D -:10EA6800F3D9C0025F1A11D9B169F3EB118911EB1F -:10EA7800F3EB108911F81248680912188CE9F409A7 -:10EA8800000912085808FE9AFF9DE08F045F0000F5 -:10EA9800000073248000CD0C8003AC608003ACA818 -:10EAA80080039D9C800094C48000DA3C8003ACD035 -:10EAB8003FF8EF58003A3008EF680038C5A830082A -:10EAC800EF580070C5686C08EF030074EF480078D1 -:10EAD8006C1CF01F0021F8031900C0E249F8201D42 -:10EAE8001AD8E06803E01AD849D849EC1AD8F01FB8 -:10EAF800001E2FCDC008EF0800705808C0902018DD -:10EB08006C49F339000DEDB90000EFF80C38EF034C -:10EB180000746C1CF01F001018130C9CEF53007449 -:10EB2800F01F0012EF080074EA081900C2406FF8DD -:10EB38005808C2116FE85808C1E14888201D1AD842 -:10EB4800E06803EA1AD848A8486C1AD8F01F0006EB -:10EB58002FCDC0088000CD0C8003AC608003ACA82A -:10EB680080039D9C800094C48000DA3C8003ACD074 -:10EB78004C5430056FE65806C2106C4811CCF13978 -:10EB8800000D11DAF3D9C002B16AF5EC118A11EC63 -:10EB980011F858095F1B6809F5EC108AF1EA100AA8 -:10EBA8008CE8F20A010AF6080008F4080108C066B1 -:10EBB8006F7810195809FE9AFF886F085808C29094 -:10EBC8004B196F1A7209F4090109C2374AFB760B0F -:10EBD800EF0A0048F6080108F40B140316185C88BD -:10EBE800F00A000A5C8AEF09004AF40B14035C4837 -:10EBF800EF5A0048F20A14021419F2080008F6083D -:10EC08000009EF58004AEF59004C3008EF4800401F -:10EC180049F84A09900A6EA8580AE0800381720BE5 -:10EC2800F60911FF1009E08600B15C7AF0C9FFFF10 -:10EC38001619F20A010A580AE08900A849697216E9 -:10EC48005806C0E14958201D1AD8E06804461AD869 -:10EC58004938494C1AD8F01F00142FCDC008F00BC2 -:10EC6800010BE04B7FFEE08A002348C8201D1AD81C -:10EC7800E06804471AD848D848AC1AD8F01F000AE8 -:10EC88002FCDC008000073240000821000007320FC -:10EC98000000731C000073348003AC608003ACF088 -:10ECA80080039D9C800094C48003AD008CD81638E6 -:10ECB800C3148C48F3D8C0101639C0E44AB8201DD4 -:10ECC8001AD8E06804491AD84A984AAC1AD8F01FEA -:10ECD800002A2FCDC0081618300A5C88C058AC48E6 -:10ECE800AC5A121B6C068CD91639CFA55C3B0C9C10 -:10ECF8005C8BF01F0022C21049C8201D1AD8E0689A -:10ED080004561AD849E849BC1AD8F01F001B2FCD61 -:10ED1800C0085C3B0C9C5C8BF01F0018C0E04938B5 -:10ED2800201D1AD8E068045B1AD84958491C1AD81B -:10ED3800F01F00112FCDC0086C1A4929932A492ABF -:10ED48006EA8740B926C9508F80B000A101AB26A38 -:10ED5800F00A16187249B2F8B2CAF5D8C208F1D842 -:10ED6800C108B2DAB2E8C1B88003AC608003AD1064 -:10ED780080039D9C800094C48000CDD48003AD2086 -:10ED8800000073340000731C101BC097EF38002676 -:10ED9800A1B80E9CEF680026F01F00424C256EA912 -:10EDA8006A08F009010AE08602B7F0CAFFFFEF1B04 -:10EDB800002C121A161A580AE08902AE1039E0819E -:10EDC80001F54BA8906A7048F139000DF3D9C002DB -:10EDD8005F19F40900094B6AB409EF0A002CF20A1A -:10EDE8001900C462F13A000CF139000DF3EA1089F8 -:10EDF8005C89EDB90000C081E219FFFEF169000DE0 -:10EE0800A989F169000C4A98EF0A002CB06A704988 -:10EE1800F339000DEDB90001C031201AB06A4A3645 -:10EE28008CEB6C1CF01F00238C696C48F138000DCA -:10EE3800F1D8C0025F18F208000849D9B20849A9F8 -:10EE480072095C78EF1A002C12086EA9F4090009FF -:10EE58001238C0E04988201D1AD8E068048B1AD8F7 -:10EE68004968497C1AD8F01F00172FCDC008EEF664 -:10EE780000805806E08000BE48C46848F138000D9C -:10EE8800EDB80000C080C4B8109C7008EF4800803E -:10EE9800F01F000DEEF800805808CF71CAA80000D6 -:10EEA80080010CEC0000731C000073340000732018 -:10EEB8008000D2108003AC608003AD3480039D9C39 -:10EEC800800094C48000DA3CF138000DEDB80000F1 -:10EED800C1F16848F139000DF13A000CF3EA108AE3 -:10EEE8005C8A1499A1A95C79F20B1608EDBA0001A5 -:10EEF800C0F0F169000DF16B000C68488869F138C1 -:10EF0800000DF1D8C0025F18F2080008A6086C05C9 -:10EF18000A96F01F00455805C041C6984C324C432C -:10EF28006C4811C5868A11D9B169F3E5118911E5D3 -:10EF38008CEBF3E510890C9C11F5EBE91009F40949 -:10EF48000109640A1409F20B010BCBF7E08F0201E7 -:10EF58004B89EEF80080704811FB11C511DC11E8EF -:10EF6800B16CF9E5118CF9E81088F7E81008F00A97 -:10EF7800010A5C8AB26A7248F138000DEDB80001E6 -:10EF8800C031201AB26A4AB58AEB6A1CF01F002AFF -:10EF98008A696A48F138000DF1D8C0025F18F20892 -:10EFA80000084A39B2085C784A097209F009000A6F -:10EFB800EEF80080704811FB11CC11D911E8B16945 -:10EFC800F3EC1189F3E81089F7E91009123AC0E067 -:10EFD80049A8201D1AD8E06804C31AD84988499C52 -:10EFE8001AD8F01F00192FCDC0080C95EF450080E6 -:10EFF80048F848E9908A7209F40900098FA990082D -:10F00800EF09002CF0091900C22248C8201D1AD89F -:10F01800E06804CD1AD848D848AC1AD8F01F000ABE -:10F028002FCDC0088000DA3C0000731C000073205C -:10F03800000073348000D2108003AC608003AD6C94 -:10F0480080039D9C800094C48003ADA810190E9C79 -:10F05800EF59002CF01F004A4CA8300A7019924B47 -:10F06800F40B1900C0504C8A9509300991194C5875 -:10F078007048F138000DEDB80000C5B14C3913885F -:10F08800A5B8B288C56881098CEAF13B000DF7DBA9 -:10F09800C0025F1BF60A000A14098FA9EF0A002CA8 -:10F0A800F138000D8C69F1D8C002F7D9C0105808A2 -:10F0B8005F1EF9DAC010FC0B000B163CC0E44B488D -:10F0C800201D1AD8E06804F21AD84B284B2C1AD8FD -:10F0D800F01F00322FCDC008F409010958085F1845 -:10F0E800F20801080E9CEF58002CF01F00256C1B3D -:10F0F8009648E2081900C090680C580CC040F01FF0 -:10F108000028C028890B8D126C48F138000DEDB825 -:10F118000000C0810B88A5B8AA886E485848EFF34C -:10F128000A046C080C9CEF480080F01F001EC07891 -:10F1380049D030014944300249453073EEF6008029 -:10F148005806C1006C4811CB11D9B169F3EB11898C -:10F1580011EB6EAAF3EB108911FBF7E910091439CA -:10F16800C930EF380026EDB80000C041A1C80E9C98 -:10F17800CE68A1A8EF680026D83200008000D5FE2E -:10F18800000073340000732C000073298003AC6006 -:10F198008003ADC880039D9C800094C48000CD345A -:10F1A8008000DA3C0000731C0E9CF01F0040EEF655 -:10F1B80000805806C0714BECF01F003EEF4C0080F9 -:10F1C800D8326A093005F2CCFFFF6C4811CB11DA4E -:10F1D800B16AF5EB118A11EBF5EB108A11FBF7EA2E -:10F1E800100A1439C1214B2C8C689869F009190050 -:10F1F800E08800B4F01F002FE08000B05805EBFC59 -:10F208001A00EFFC0A20C0D85805C0D1F20A010B39 -:10F21800C4574A7CF01F0027E08000A0EF4C008014 -:10F228000C9BC3986A4B17F417C217D317EBB1633B -:10F23800E7E21183E7EB108BE9EB100B5CDB120BB9 -:10F24800C2D6F80A010B580BE0890029498CF01F37 -:10F2580000191897E08000826A4811F911CA11DB79 -:10F2680011E8B16BF7EA118BF7E8108B4928F3EB3B -:10F27800100B70088AE9101916095809E08A000964 -:10F28800F00B010B6A1CAA6B5C7BF01F000C8B0750 -:10F298000C9B0E9CF01F000AD8326C0B0C95580B77 -:10F2A800C1001696C93B000080010BF000007334C2 -:10F2B8008000DA080000731C8000D2108000E7503C -:10F2C80014195809E08A004AF138000DEDB8000019 -:10F2D800C4404A3CF01F00238D0CC3F06C4811F960 -:10F2E80011CA11DB11E8B16BF7EA118BF7E8108B43 -:10F2F80049D8F3EB100B70088CE910191609580956 -:10F30800E08A002CF00B010B6C1CAC6B5C7BF01FD3 -:10F318000017D8320E9CF01F0016D832720BF60870 -:10F328000109C0A62FFBEF19002CF60801081218D6 -:10F338005808E08A00130E9CEF380026A1B8EF6841 -:10F348000026F01F000CD8323008FE9FFBB4580985 -:10F35800FE99FE00FE9FFE4BD83200000000733479 -:10F368008000DA080000731C8000D21080010BF0C6 -:10F3780080010CECD4314B86ED0800922FF87819F7 -:10F388004B65ED5800928B091388F1D8C004F20838 -:10F39800002818971693109C4B148908F01F003109 -:10F3A8006A080E9C118BF7DBC004A36B5C3BF01F53 -:10F3B800002EC0718E493138F0091900E08B000B1E -:10F3C8004A580E9CF109009A2FF9F159009AE08FDA -:10F3D80003026A0C069B2F0CF01F0024C0B16A0AB6 -:10F3E800FC19E000F5380010B968E618F00012388A -:10F3F800C0A149980E9CF10900A02FF9F15900A06D -:10F40800E08F02E9F4CBFFF48EC830692F0A0E9C16 -:10F41800F01F00175C8CC080ED0800980E9C2FF838 -:10F42800ED580098C11868080E9CF13B000CA58B9C -:10F43800F60B10FCF01F000CC1C0ED08009A0E9CE2 -:10F448002FF8ED58009AED0800962FF8ED58009621 -:10F45800E08F02C6000080D40000733000007318EB -:10F468008000D67C8000CDD48001255880011E2CD8 -:10F47800680811CA11D9B169F3EA118911EAF3EAE6 -:10F48800108911FAF5E91009F20A1618B0CAF5D967 -:10F49800C208B0F9B0DAF5D9C108B0EA4B28910929 -:10F4A8006808F1390008F13A0009B16AF5E9118AEA -:10F4B800F139000AF5E9108AF139000BF3EA100A6C -:10F4C800F4091618F1690008F3DAC208F16A000BAA -:10F4D800F1690009F3DAC108F169000A4A386804D9 -:10F4E800910AE938000DF5D8C002F1D8C0064A0BD8 -:10F4F800B6884A086A09580A5F1A8E4514055C8559 -:10F50800B00549D87006CA586C485808C0E149B8CF -:10F51800201D1AD8E06800B71AD84998499C1AD80B -:10F52800F01F00192FCDC00858A8C0E14938201D88 -:10F538001AD8E06800B81AD84948492C1AD8F01FD8 -:10F5480000122FCDC0085818C24148C8201D1AD82B -:10F55800E06800B91AD848E848AC1AD8F01F000A81 -:10F568002FCDC0080000731C00007324000073280E -:10F57800000073200000820C8003AC608003ADF0B3 -:10F5880080039D9C800094C48003AE188003AE4421 -:10F59800098A0998F1EA1088ED0A0024F00A19008E -:10F5A800C56109AA09B8F1EA1088ED0A001CF00A39 -:10F5B8001900C4D1F33A000CF338000DB168F1EA30 -:10F5C8001188F33A000EF1EA1088F33A000FF5E8D3 -:10F5D80010086C1A103AC3B1F33A0010F33800114E -:10F5E800B168F1EA1188F33A0012F1EA1088F33AA7 -:10F5F8000013F5E810086C0A103AC2916C380C3800 -:10F60800C0E14CA8201D1AD8E06800C21AD84C885E -:10F618004C8C1AD8F01F00482FCDC008580CC06079 -:10F6280099384C6870098D3991066C380C38E0812E -:10F6380001A14BE8201D1AD8E06800C81AD84C0868 -:10F648004BCC1AD8F01F003C2FCDC0080C9C6C3650 -:10F658005806FE91FF5BE08F05296C4858A8C0E06A -:10F668004B28201D1AD8E06800D21AD84B584B1CDA -:10F678001AD8F01F00312FCDC008098B0998ED0A60 -:10F688000024F1EB1088F00A1900C77109AC09BB16 -:10F69800ED08001CF7EC108BF6081900C6E1F33CE6 -:10F6A800000CF33B000DB16BF7EC118BF33C000E33 -:10F6B800F7EC108BF33C000FF9EB100B6C1C163CAD -:10F6C800C5C1F33C0010F33B0011B16BF7EC118B93 -:10F6D800F33C0012F7EC108BF33C0013F9EB100B22 -:10F6E8006C0C163CC4A1498B178CEDBC0002E08061 -:10F6F800013AEDBC0001C2D1494B6CAC760BF60C5B -:10F70800010CC2D6ED14002C081C580CE089002806 -:10F718005C7A201D5C751ADA48DCEA0B000B5C7811 -:10F72800F2CAFFF0780CC7688003AC608003AE6C47 -:10F7380080039D9C800094C40000820C8003AE98D6 -:10F748008003AEC4000073280000731C00007324FB -:10F75800EDBC0000C0414CC870088DD84CB8900969 -:10F768003008F0091900E08000FEED3800260C9CF6 -:10F77800A1B8ED680026CF486C365806FE91FF6F99 -:10F788004C3870050C98CF286A0A580AC130F33CE7 -:10F798000010F33B0011B16BF7EC118BF33C001236 -:10F7A800F7EC108BF33C0013F9EB100B163AE081E1 -:10F7B80000DC09AB09BAF5EB108AEB0B001CF40B63 -:10F7C8001900E08100D25808C0706A3991394B0895 -:10F7D80070098B3991054AF81188EDB80004C1F118 -:10F7E8004AD8700913AB139A13B8201D1389F1EB8B -:10F7F8001088F5E910894A5B1AD9968C4A794A8BA0 -:10F808007209760BF2CAFFF0F80B000B4A5C780C11 -:10F818002FFC2F49F01F00242FEDCA48EDB8000136 -:10F82800E08100A1EB3C0014F01F00201896C08175 -:10F8380049F8F109009C2FF9F159009CC938497819 -:10F848007008F0C9FFF0C0311298C108F1390013EF -:10F85800F13B0010F13A0011F1380012B16AF5EBF2 -:10F86800118AF5E81088F3E810088D08EB08001CE9 -:10F87800ED58001C48987008F0C9FFF4C1A112980F -:10F88800C27800000000821000007320000082147B -:10F898000000732800007318000073300000731C08 -:10F8A80000007324800102348000E1D4000080D479 -:10F8B800F139000FF13B000CF13A000DF138000E60 -:10F8C800B16AF5EB118AF5E81088F3E810088D188D -:10F8D8004C587008118B1199F3EB1089ED590024DD -:10F8E80030398D494C197209F2CBFFFF8DCB8DABA6 -:10F8F800F13B000FF138000EF7E81088ED5800587A -:10F90800ED5800608A48E2180199AC486A684B8A49 -:10F918002019740C8D688D3C6A889506ED49006441 -:10F928008D880C9CF01F0033ECCBFFFCED1C003CD9 -:10F93800F01F00313019ED5C003C201D30081AD949 -:10F94800109A3129109B0C9CF01F002C2FED5C5C49 -:10F95800C0600C9C300BF01F002AC0480C9CF01FA4 -:10F9680000290E9CC3C80A986A355805FE91FF0EF7 -:10F9780049D56A08F13C000DF9DCC006F01F0022E9 -:10F988005806E08003504A188E4A6A09911791492F -:10F99800B06A30096E1A9109912A49D8910949D853 -:10F9A800B089ECFA0084580AC3C0ECF8008C5808F7 -:10F9B800C0500C9B6C6C5D18C06810990C9B109C17 -:10F9C800F01F00155C5CC041ED4C0084C2A80E9C81 -:10F9D8004928F10900962FF9F1590096F01F0010F7 -:10F9E800D8320000000073180000731C0000820C5D -:10F9F8008000E6B48000D95C800103508000E124D7 -:10FA080080010CEC8000D67E000073340000732C5B -:10FA1800000073298000E5EC000080D48000D13C10 -:10FA28004A9891064A981188EDB80002C3216C489B -:10FA38005828C0814A6870096D781039E081026BD6 -:10FA4800C1D84A49720A6CA9F4090109E08602631F -:10FA5800ED1A002C14195809E089025DE08F032182 -:10FA680049D8201D1AD8E06802271AD849B849CCC5 -:10FA78001AD8F01F001C2FCDC00849B91388A3B8A5 -:10FA8800B288ED380026A1C8ED680026E08F024351 -:10FA9800EDB80001C0616C4820285818E08B00A21E -:10FAA800492870088DD830080C9CED6800ADF01F0F -:10FAB80000106C4820285878E08B022D48D9F208AD -:10FAC800032F000000008224000073280000732424 -:10FAD8000000731C8003AC608003AEF480039D9C1F -:10FAE800800094C400007329000082108000E6B4EE -:10FAF8008003AC404CF811891298E218001259287A -:10FB0800C7A14CD8700A6DF8704811FB11C711DCF9 -:10FB180011E8B16CF9E7118CF9E81088F7E81008DA -:10FB28002FF8103AC681ED0800722FF8ED580072D0 -:10FB38004C287008ED4A0050F0CA00012FF88DC813 -:10FB48008DA84BF87008F139000FF138000EF3E872 -:10FB58001088ED5800603048ED4A00648D48EC0884 -:10FB6800000BED1C003CF01F00375C8CF808100AF5 -:10FB7800ED5C003CED580058ED0900563018F009CE -:10FB88001900C021A17CED5C0056ED0800745808EE -:10FB9800C0E14AD8201D1AD8E06802591AD84AB8D4 -:10FBA8004ABC1AD8F01F002B2FCDC00820186DFCB6 -:10FBB800ED5800747808ED48007C5808F9B800FF43 -:10FBC800F9B80100EDF81E4EED58003AF01F00227A -:10FBD800ECF800905808C050300A0C9B6C6C5D180B -:10FBE800ED380026A1B80C9CED680026F01F001B1C -:10FBF800E08F0191EDB90004E081018D4908700999 -:10FC080013AB139A13B8201D1389F1EB1088F5E98B -:10FC18001089493B1AD9968C4929488B7209760B69 -:10FC2800F2CAFFF0F80B000B483C780CC7980000AC -:10FC380000007328000073240000731C0000731870 -:10FC48008000D95C8003AC608003AF1480039D9C66 -:10FC5800800094C48000DA3C80010CEC0000732022 -:10FC6800000073304C281188EDB80004C5E14C1829 -:10FC7800700C6D485CD81808C3D66D78F808010870 -:10FC88005808E089003830488D486C885808C0E129 -:10FC98004B98201D1AD8E068027E1AD84B784B8CF6 -:10FCA8001AD8F01F00382FCDC008300A0C9B6C6C96 -:10FCB8005D185C5CC0700C9C301BF01F0033E08F3B -:10FCC80001A7ED0700560C9CF01F0030ED080070EE -:10FCD8005808F9B901FFF1D9E108EDF81C383019D5 -:10FCE800ED08003CF2071900C021A178ED58005634 -:10FCF800C2E84A78700913AB139A13B81389F1EB69 -:10FD08001088F5E910894A3B201D1AD94A29968797 -:10FD180072094A2BF2CAFFF0760BEE0B000B2F4943 -:10FD2800F01F001F2FEDCF68EDB80001E08100F350 -:10FD380049A870096CA820181039E08100EC0C9CC7 -:10FD4800F01F0018CE780C9CF01F0010496811882D -:10FD5800EDB80005E08100DFED380026A1B80C9C65 -:10FD6800ED680026F01F00113078CC1800007328C9 -:10FD7800000073248003AC608003AF2C80039D9C3B -:10FD8800800094C48000E1248000E7F40000731828 -:10FD980000007320000073300000731C80010234DF -:10FDA800800101000000732980010CEC0C9CF01FFD -:10FDB800003E4BE84BE91188E2180020C2D01388B6 -:10FDC800EDB80004C1F14BB870096D781039C1A1C4 -:10FDD800ED380026A1B80C9CED680026F01F00360F -:10FDE8000C9CF01F00364B6972080C38C5604B59E3 -:10FDF8009308C05870390C39C69012985808CFB17A -:10FE0800C6D8ED380026A1B80C9CED680026F01F76 -:10FE1800002A3088C6C81388EDB80004E081007B4A -:10FE28004A4870096D781039C7513068C6080C9C6B -:10FE3800F01F001D49D81188EDB80005C6B1ED388E -:10FE48000026A1B80C9CED680026F01F001B0C9C36 -:10FE5800F01F001A49A972080C38C1F04999930893 -:10FE6800C05870390C39C32012985808CFB1C368EC -:10FE78000C9CF01F000D48E81188EDB80004C4A1DF -:10FE880048C870096D781039C4510C9CF01F000BDC -:10FE980048B972080C38C0316C38C21848999308B0 -:10FEA800C1B800008000E7F400007329000073283F -:10FEB8000000732480010CEC8000DA8C0000820CB6 -:10FEC8000000821870390C39C0614C0993086C39EC -:10FED8009139C06812985808CF614BC99308300807 -:10FEE8008D384BB870098D39910630A88D48C128D6 -:10FEF8000C9CF01F00384B881188EDB80004C0A195 -:10FF08004B6870096D781039C0514B591388A5A8F2 -:10FF1800B2884B381188EDB80003C091ECF800980E -:10FF28005808C0803FAB6C6C5D18C048EDB8000441 -:10FF3800C0A10C9B4ABCF01F002C0C9B302CF01F5E -:10FF4800002BC658ED0A0070580AC090ECF80088DB -:10FF58005808C0505C7A0C9B6C6C5D184A48700855 -:10FF68005808C24049C91389EDB90003F1F9080DD1 -:10FF7800F9BA0001F3DAE039F1F90E0D49CAECF8E3 -:10FF8800008C5808C070740A30090C9B6C6C5D18A2 -:10FF9800C0781099740A0C9B109CF01F00165C5CCA -:10FFA800C05049387008ED48008448D81188EDB829 -:10FFB8000005C271ECF8008C5808C1D030090C9BC0 -:10FFC800129A6C6C5D18C1D800008218000082205B -:10FFD8008000E7F4000073280000732400007329F0 -:10FFE8000000820C8000DAE88000C9740000732CDD -:08FFF8008000E5EC10990C9B60 -:02000004800179 -:10000000109A109CF01F002E30094AE80C9C9109B0 -:10001000F01F002D30064AB891064AC76E1C580CD6 -:10002000C330F01F002B8F16C2F86A0BF738000D93 -:10003000EDB80002C2604A78F10C00A02FFCF15C20 -:1000400000A0F10C00962FFCF15C0096179C17A6FF -:1000500017B8178BF9EB108B201D49F972091ADBC1 -:1000600049EB968CF2CAFFF0F1E6108849CB2F4994 -:10007000760BF80B000B49BC780CF01F001B2FED22 -:100080000E9CF01F0013F01F0019C1714988201D3C -:100090001AD8E06801771AD84968497C1AD8F01F45 -:1000A00000172FCDC0085808FE90FCE0FE9FFCEB27 -:1000B00049387006FE9FFB67D83200008000E5ECEF -:1000C0000000822480010CEC000073348000D13CDD -:1000D000000080D400007330000073200000731C07 -:1000E00000007324800102348000D6B48003AC6029 -:1000F0008003AF4080039D9C800094C40000822058 -:10010000D42179F95809C3107208F8CEFF88F9484C -:10011000007C79E8C038109E70085808C1C0704B48 -:1001200017F617C417D5B165EBE41185724A17EBC2 -:1001300015F7EBEB108B15C5EDEB100B15D615EA8B -:10014000B166EDE51186EDEA108AEFEA100AF60ACB -:10015000010ACE2693089D093008F9480040F93875 -:10016000004E2FF8F968004ED822D42179F95809A9 -:10017000C600F9380026EDB80002C5B07208F8CE06 -:10018000FF88F948007C79E8C038109E700858084C -:10019000C1C0704B17F617C417D5B165EBE41185D4 -:1001A000724A17EB15F7EBEB108B15C5EDEB100B47 -:1001B00015D615EAB166EDE51186EDEA108AEFEA8B -:1001C000100AF60A010ACE26930830089D09F9485C -:1001D0000040F938004E2FF8F9090056F968004E32 -:1001E000F5D9C02FF9080060F7D8C02FF009190021 -:1001F000F60817B0F4081780F9580058F908003CC1 -:10020000F00915015C78A178F91A0058103AF9F94B -:100210005C2CF9380026A3A8F909003CF9680026EF -:10022000F20815011009F90800581009F95900568B -:10023000D822D703D43118941693149112921096A1 -:100240004097300A314B301CF01F00391895C6D04A -:1002500098593138F0091900E08B000F4B58201DD8 -:100260001AD8E068031F1AD84B384B4C1AD8F01F25 -:1002700000342FCDC0080E9878175C78AEB8A988E6 -:10028000AEA8E0685014EF68000DA988EF68000C74 -:10029000E8081618AEC8F1D4C208AED8E608161899 -:1002A000EF680008F1D3C208F3D6C010EF68000968 -:1002B000AE993088A9893006AEF4EF63000BAE89A1 -:1002C000EF66000FEF660012EF660013EF66001096 -:1002D000EF660011EF68000E3069049A029BE9D4C2 -:1002E000C108E7D3C108AEE4EF63000A98C8F01F65 -:1002F00000155C7CEF6C0011A98CEF6C0010201DC8 -:10030000491C30671AD70C98F9070090049A2FF708 -:10031000029BE06900FFF95700900A9CF01F000B58 -:100320000A9CF01F000B2FEDD83200008000D3187C -:100330008003AF5C8003AFA480039D9C800094C4C5 -:1003400080011E2C000080D4800122948000D13CCA -:10035000D43120BD14915098414A505A12961897A2 -:100360003009F20119005F08F20A18005F0AF1EA89 -:10037000000AF20A1800C110F3D6C002C0E14C789E -:10038000201D1AD8E06800AD1AD84C584C5C1AD819 -:10039000F01F00452FCDC008580B5F195089126817 -:1003A000C0E04BE8201D1AD8E06800AF1AD84BF81F -:1003B0004BCC1AD8F01F003C2FCDC008EF080072BC -:1003C000E2081900C0B2EF380026EA18FFFFE8186B -:1003D000FF80EF680026E08F02E34058F3D8C001A9 -:1003E000E2180002F9B8010CF009002950296FB099 -:1003F000EF02007431F8F0021900E08800144AC8D6 -:10040000F109009C2FF9F159009CE06C00FFEF38D6 -:100410000026EA18FFFFE818FF80EF680026E08F4B -:1004200002C36FF85802C2605808C1404028A38830 -:100430002FB8AD685C883003503B50A8F7D1B0109E -:10044000409A504BF5DAC001069406980695506A1A -:10045000C3796FE85808CEB14908201D1AD8E06862 -:1004600000D01AD8493848FC1AD8F01F000F2FCDF9 -:10047000C0085808C0416FE85808CD904878201D42 -:100480001AD8E06800D31AD848B8486C1AD8F01FB8 -:1004900000062FCDC00800008003AF5C8003AFD4FE -:1004A00080039D9C800094C48003B028000080D409 -:1004B0008003B0688003B0A450195008EF03003CDB -:1004C000304CF01F0042401918954008E080023C73 -:1004D000300B990B991B5809C0301894C118580853 -:1004E000C0E14BB8201D1AD8E06800EF1AD84B982D -:1004F0004B9C1AD8F01F00392FCDC008910C5C73AB -:10050000402A4069E60A010840435C73E6080D434F -:100510005C835809C3904028300AE608000B149CFD -:100520005C7BF01F002F8B1CE080020EF5D3C01007 -:10053000402B98D9F40B00081039C0E44A48201D1C -:100540001AD8E06800FF1AD84A684A3C1AD8F01F47 -:1005500000232FCDC008501AF01F0023401A18980E -:1005600040895809C0A0402B6A195008721C160C0B -:10057000403BF01F001E4008F00200026A185C8237 -:1005800070188B28C3D8406A402B149CF01F0014AD -:100590008B1CE08001D9F01F0014407AF8020002A1 -:1005A0005C82580AC2D0F7D3C010301A303CF01F1A -:1005B000000C189B6A1C580BC1C1F01F000D40694C -:1005C0008B19E08F01C100008000C9D48003AF5CAB -:1005D0008003B0D880039D9C800094C48000D31811 -:1005E0008003B0E88000CD0C8002E7368000D13C6B -:1005F000403897182FF28B285C82F01F003F320B97 -:10060000F6021900E08B01A0AA63314B6A1CF01FAF -:10061000003BC0904BA8F10900A42FF9F15900A4A8 -:10062000E08F0192EF39001C6A1870188B48B0896E -:10063000EF39001DB099EF3900246A48B0A9EF39AD -:100640000025B0B9E00916186A48B0C9F3D0C2084D -:10065000B0F0B0D9F3D0C108B0E96A48F16C00132A -:10066000F16C00126A48F13A000CF139000DF3EA1E -:100670001089E019FFC0EDE910095C79F169000DFE -:10068000A989F169000C405AEB6A000E404806182F -:100690005C88F3D3C0105048403B6A48120B503B73 -:1006A00040AA1200F139000DF3D9C006F5E910098E -:1006B0005C79F169000DA989F169000C0A98300A8A -:1006C000404BF40B19005F1B507B169A58045F09CE -:1006D000300B124AF60A1800FE91FEF0F5D2B01067 -:1006E000503A6FE05800E08000C260085808C0909F -:1006F0001090CFCB8000CD348000CDD4000080D4CA -:1007000080EA6048F139000DF3D9C0025F1B140B79 -:10071000E08000C45809E08100C1F7D6C0025F0C38 -:10072000301BF60618005F0BF9EB100BF20B1800EC -:10073000E08000B488EBEF19003C140B123BE08919 -:1007400000ADE13B000EE939000EF20B1800E0812C -:1007500000A5684911FE13FB504B11CC11DBB16BA6 -:10076000F7EC118B11ECF7EC108BFDEB100B160A6C -:1007700013CB13D8B168F1EB118813EB4049F1EBBF -:100780001088F3E81008103AE08100884028681CBF -:10079000F00B11EC5C8BF01F0037C0E04B68201DA4 -:1007A0001AD8E06801691AD84B484B5C1AD8F01F78 -:1007B00000352FCDC0086818905AF80A1900C0A15A -:1007C00070098919910C4032109C20125C82F01F34 -:1007D000002EF1D6C001681BC220580BC05188689A -:1007E000F6081900C0E04A48201D1AD8E0680177D1 -:1007F0001AD84A684A2C1AD8F01F00222FCDC008F8 -:100800006048F13A000CF139000DF3EA1089A1A912 -:10081000F169000DA989F169000CC1E8580BC050BD -:100820009659F0091900C0E14938201D1AD8E0682E -:10083000017A1AD84968492C1AD8F01F00122FCD16 -:10084000C008601CF01F001380698868F208000867 -:10085000A068680881080835E0051700E1F3020682 -:10086000089B304CF01F000CC198EF440078C16821 -:100870008000CDD48003AF5C8003B11C80039D9CBD -:10088000800094C48000D13C8003B1308003B1501B -:100890008000CD348000C97481040C98EDB600014D -:1008A000C040EDB60000C0312FF15C81EDD6C00133 -:1008B000EFF81826F9B90120F1D9E138EFF81E2632 -:1008C0006FB9F1D1C010F2080008EF520074EF4880 -:1008D000006CEF0800720218EF5800725802C14015 -:1008E0006FF85808C1116FE85808C0E14AF8201D98 -:1008F0001AD8E06801A11AD84AD84AEC1AD8F01FD1 -:10090000002E2FCDC00858055F193008F0031900DC -:100910005F1AF5E90009F0091800C4406A48580850 -:10092000C410409CE21C0002C3D1F13A000CF13922 -:10093000000DF3EA1089A3B9F169000DA989F169E5 -:10094000000CC318EF380026EA18FFFFE818FF80F4 -:10095000EF6800264998F109009C2FF9F159009C95 -:100960005804C040089CF01F0016EF0900743008BE -:10097000F0091900C1406FF85808C1116FE8580814 -:10098000C0E148A8201D1AD8E06801B41AD84888E8 -:10099000488C1AD8F01F00082FCDC008E06C00FF6B -:1009A000C028300C2F5DD8328003AF5C8003B16467 -:1009B00080039D9C800094C4000080D48000DA688D -:1009C000D421784E1298587E5F07584E5F09EFE9A0 -:1009D0001009C081582EC060583EC040E06C00F83D -:1009E000D822580AC031149CD822201D30095C7AC4 -:1009F0001AD9F01F00032FED5C5CD8228001035050 -:100A0000D4013008201D109A16991AD8149B30185A -:100A1000F01F00032FED5C5CD80200008001035042 -:100A2000D431189679F45804C05179E45804E08020 -:100A300000CE6848F133000DE7D3C001C06088697B -:100A40003008F00919005F03300A5C53301C14337E -:100A5000F9BB0114F9BB0015F01F005D1895E0808B -:100A600000B698593138F0091900E08B000F4D9805 -:100A7000201D1AD8E068040F1AD84D784D7C1AD87A -:100A8000F01F00572FCDC008684811FA11CB11D9BB -:100A900011E8B169F3EB1189F3E81089ED38001C16 -:100AA0007817F5E91009AE88EF3A000CED38001D13 -:100AB000AE98EF38000DF1EA1088ED3A0024AEAAA6 -:100AC000ED3B0025AEBBF20B1618AEF9AECBF7D955 -:100AD000C208F3D9C108AEDBAEE9ED390028EF69F1 -:100AE0000008ED390029EF690009ED39002AEF69A6 -:100AF000000AED39002BE018FFC0EF69000BA5A834 -:100B00005C88F5D8C010EF6A000DF40B1608EF6B87 -:100B1000000CED39002EEF69000EF1D8C006300947 -:100B2000E8185000ED3A002F5C78EF6A000FEF688C -:100B3000000DEF690011EF690012EF690013EF6912 -:100B40000010A988EF68000CED19002E6CA8F208BF -:100B500000088DC85803C110EF39000CEF38000DA4 -:100B6000F1E91088E018FFC0E8180011EF68000DE7 -:100B7000A988EF68000CC068682811897818F169A5 -:100B80000014ECC4FFFC8AC83069089A0C9B0A9CCC -:100B9000F01F00145C7CEF6C0011A98C4929EF6CEC -:100BA0000010F30C00902FFCF35C0090306C201DC3 -:100BB000ED39000B089A1ADC0C9B30080A9CF01FD8 -:100BC000000B0A9CF01F000A2FEDD8328000D318CA -:100BD0008003AF5C8003AFA480039D9C800094C41D -:100BE00080011E2C000080D4800122948000D13C22 -:100BF000D431300A1895314B301CF01F003918934E -:100C0000C041E06C00FED832EB380026EB39001C06 -:100C1000E018FFFCEB6800266B787817AE89EB399B -:100C2000001DAE99EB390024F00B1618AEA9F3D8CD -:100C3000C208EB3A0025AEF8F1D8C108AECBAEBA87 -:100C4000AED9AEE86AA8F0091618EF690008F3D823 -:100C5000C208E06A5010EF690009F3D8C1083004F7 -:100C6000EF68000BEF69000AF40B1608EB19002E71 -:100C7000EF6B000CEF6A000DEF69000FEF640012DC -:100C8000EF640013EF640010EF640011F20A16081D -:100C9000F2080008EF6A000E8BC8EAC6FFFC0A9B48 -:100CA0000C9A98C83069F01F000F5C7CEF6C001143 -:100CB000A98CEF6C0010306CEB38000AEB39000B9C -:100CC000201D0C9A1ADC0A9B069CF01F0007069C4C -:100CD000F01F0006089C2FEDD83200008000D318CA -:100CE00080011E2C800122948000D13CD431202D23 -:100CF0004AE8189770081838E08001A3F9080056F0 -:100D0000F9090060F0091900F20817805C785008B2 -:100D100079E6F9380026E2180002C1E05806C170F1 -:100D20008CEB6C48794911CCF609010911DBB16BE8 -:100D3000F7EC118B11FA11E8F7E81088400BF5E891 -:100D40001008F20800081638E08800070E9CF01F13 -:100D500000185C5CC7696FF55805C0B1EEC9FF8427 -:100D6000EEC2FFFC5019300349214930C2B9109539 -:100D70006A085808CFD1CF3BF13C000CF139000D87 -:100D8000F3EC108C5C8CEDBC0002C1F148B8201D66 -:100D90001AD8E06802471AD8489848AC1AD8F01F09 -:100DA000000A2FCDC00800000000822480010BF053 -:100DB000000080D4000082108003AF5C8003B18407 -:100DC00080039D9C800094C46FF95809C150EF3B8B -:100DD00000261699E2190044C0F16FE95809E08035 -:100DE0000133720E580EC081926EEF09003CF20E74 -:100DF0001900E08301296C09EF4900786E495829F0 -:100E0000C0E0A5AC5C7CF16C000DA98CF16C000C11 -:100E1000EF390026E019FFFCEF6900266EA9F20AFF -:100E20001618F16A0008F5D9C208F16A0009F5D967 -:100E3000C108F169000BF16A000AEF1A002EF16A8D -:100E4000000FF40B1608F16B000EF40900098FC9AE -:100E5000ED39000EEDB90000C061E06B0200EA1B45 -:100E60000204915BEF08003A3FF9F2081900F9B863 -:100E70000000EFF80C1D6E085808C071049CF01FAC -:100E80000075C45078188F086F085808C121600990 -:100E90006C48EF49004011F911CB11DA11E8B16A41 -:100EA000F5EB118AF5E81088F3E81008EF480044E4 -:100EB0006C1C6C4478199848985A9914E8090109EF -:100EC000121A1218B85AB84830695C78049A0E9B06 -:100ED000E9630010E9630011F01F005F30695C7C7A -:100EE000E96C0011A98CE96C0010E30800902FF860 -:100EF000201DE35800901AD9049AEF38000AEF3900 -:100F0000000B0E9B6C1CF01F00552FED6C4811FA66 -:100F1000F139000DF3D9C0025F1B11CC8CE9F60941 -:100F2000000911DB11E8B16BF7EC118BF7E81088C1 -:100F3000F5E810086F7AF2080008101AC037EF4879 -:100F4000005C5809C3B08D036FF85808C041EF46E4 -:100F5000007CC3286C4A15FE15C46A4915DBB16BC9 -:100F6000F7E4118B15E4F7E4108BFDEB100B13CEB7 -:100F700013FC13DAB16AF5EE118A13EEF5EE108A5E -:100F8000144CF60C010CC177401AC058109A700826 -:100F90005808C0E0704913C413FC13DEB16EFDE4C1 -:100FA000118E13E4FDE4108E1C4C161CCF068D0828 -:100FB0009506C0788B060C95C0480C9CF01F002845 -:100FC0006FE65806C3706C4811CC6F4A8CEB11D990 -:100FD000141BB169F3EC118911ECF3EC108911FCCD -:100FE000F9E91009F6090009400B1639FE98FEC60A -:100FF000EF3900AC3008F0091800C1C18CEB6C4827 -:10100000F60A010A11F911CC11DB11E8B16BF7EC0A -:10101000118BF7E81088F3E81008100AEF18006049 -:10102000103AF9B80B00EFF8BA2AF9B80B01EFF84B -:10103000BEACEF380026F1D8C007EF680026300CB0 -:101040002FEDD832E21B00A0FE91FED7CD2B000081 -:101050008001222880011E2C800122948000DA3C2D -:10106000D401189879FA580AC170149B7609580966 -:10107000C030129BCFCB71EC970CF1490040F14985 -:10108000007CF139004E2FF9F14A0078109CF1698B -:10109000004EF01F0002D80280010CECD431300A5F -:1010A0001896314B301CF01F00401895C7B0985966 -:1010B0003138F0091900E08B000F4BC8201D1AD8F9 -:1010C000E06803C91AD84BA84BAC1AD8F01F003AF5 -:1010D0002FCDC008ED39001C78176D78AE89ED3939 -:1010E000001DAE99ED3900242018AEA9F00B16189A -:1010F000ED3A0025F3D8C208AEF8F1D8C108AECB5E -:10110000AEBAAED9AEE86CA8F0091618EF690008BF -:10111000F3D8C208E06A5010EF690009F3D8C1089B -:101120003004EF68000BEF69000AF40B1608ED19A4 -:10113000002EEF6B000CEF6A000DEF69000FEF64FB -:101140000012EF640013EF640010EF640011F20A64 -:101150001608F2080008EF6A000E8DC8ECC3FFFC09 -:1011600098C83069069A0C9BF01F00145C7CEF6CE9 -:101170000011A98C4929EF6C0010F30C00902FFC92 -:10118000F35C0090306C201DED39000B08981ADCE0 -:10119000069A0C9B0A9CF01F000B0A9CF01F000A89 -:1011A0002FEDD8328000D3188003AF5C8003AFA44A -:1011B00080039D9C800094C480011E2C000080D47C -:1011C000800122948000D13CF9390010A3C948A8BD -:1011D000F969001011BA118B119911A8B169F3EBDB -:1011E0001189F3E81088F5E8100899183008F958C3 -:1011F00000145EFC8003B409997A996B5EFCD703F6 -:10120000D421301CF01F00071897C080320A300B21 -:10121000F01F00053FF8EF68000B0E9CD82200007D -:101220008000C9D48002E8BCD40148C9189B720868 -:101230001838C0D178389308C0C870395809C060D0 -:101240001639F7F90003F1F90A0370385808CF612D -:10125000301CF01F0003D802000082288000C974EF -:10126000D4214AB83009700E1C98C148103CC111F5 -:101270005809C0E04A78201D1AD8E06802541AD8EC -:101280004A584A6C1AD8F01F00262FCDC0083019D2 -:1012900070385808CEC1580BC0C017B817861797BA -:1012A00017ABB167EFE61187EFEB108BF1EB100B8B -:1012B000990B580AC2211C98E06A1000E0667FFF73 -:1012C0003007C0C8F10B0012F40B1900C061F6CA58 -:1012D000FFFF1C985C8AC0287038EC0A19005F1563 -:1012E00058085F1BEBEB000BEE0B1800CEC1580843 -:1012F000C040E06C00F5D822F95A00125809C0200D -:10130000D82A993E4828910C129CD82200008228A5 -:101310008003B19C8003B1E080039D9C800094C455 -:10132000D4213008169614951897F9090012F0097F -:101330001900C071300A189BF01F00145C5CC231A8 -:101340005806C0C00DB80D8A0D990DA6B169F3EA13 -:101350001189F3E61086F1E61006EF380010A3A815 -:101360008F16EF680010EF55001448987008109C15 -:10137000C0581837C021D82A783C580CCFB18F38C4 -:1013800048389107D82200008001126000008228AE -:10139000D43112971093169414911895F9090012EC -:1013A0003008F0091900C091300A189BF01F004561 -:1013B000E5DCC008E0810084308B089CF01F00420F -:1013C000C0310896C0E8300A308B301CF01F003F57 -:1013D0001896C041E06200FFC728089BF01F003C40 -:1013E0008C593078F0091900E08B000F4B98201DC4 -:1013F0001AD8E06801C51AD84B784B8C1AD8F01F60 -:1014000000382FCDC008EB3900120E986C175C78AD -:10141000AE893009EB3A0013AEB8AE9AA988AEF99E -:10142000AEE9AEA86A085808C041E6C2FFFCC10890 -:1014300066191238C0C00836C041E06200F7C3F830 -:101440000C9CE06200F7F01F0027C3980A928CC83A -:10145000F0091608AED8AEC9EB390010EDB900009E -:10146000C1403119029A049B0C9CF01F001F5C8C38 -:10147000F1DCC010AEF8A988AEE8580CF9B800FF4E -:10148000EFF80E07EFF80E0631181AD3049BEB396C -:10149000000B029A1AD80C9CEB38000AF01F0013BC -:1014A0002FEDE5DCC0080836C0400C9CF01F000D95 -:1014B00048F8F10900782FF9F1590078049CD832E6 -:1014C000800112608000CDD48000D3188000CDB49C -:1014D0008003B19C8003B1EC80039D9C800094C488 -:1014E0008000D13C80011E2C80012064000080D44B -:1014F000D421202D1897501B149C500A1296F01FCF -:10150000000C401B1898400AC0A148A8E06C00FCE1 -:10151000F10900862FF9F1590086C078F3D6C01082 -:101520000E9CF01F00055C5C2FEDD8228001222864 -:10153000000080D480011390D401F8CAFFFCF9198F -:101540000014F01F00035C5CD8020000800114F05E -:10155000D431203D4D98F109007A2FF9F159007AE4 -:10156000781716910F8818955C8898CAF3D8C0042C -:101570002FE9A369123AC0A5F1D8C004F00B1502F7 -:101580005C3BF01F004F1894C0904CC80A9CF109B6 -:1015900000822FF9F1590082C1D96A12EECCFFF016 -:1015A000029B502CF01F004705980583F1E3108340 -:1015B00005B805AE1896F1EE108E5C835C8E34484B -:1015C000F00E1900C2413438F0031900E081008B9D -:1015D00062A85808E080008770145804E0800083F7 -:1015E00068185808E0800092EF3A000CEF39000DBF -:1015F000B169F3EA1189EF3A000EF3EA1089EF3A84 -:10160000000FF5E910091238C6D1C7F84AE8089961 -:10161000700A089B1498500AC618F10C0012FC0CB2 -:101620001900C5A15806C041700C580CC1B0EF306C -:101630000010EF3C0011B16CF9E0118CEF3000129A -:10164000F9E0108CEF300013F60618005F1AE1EC99 -:10165000100C700018305F0CF5EC100CF60C180034 -:10166000C3B05804E08100D6F13C0010E21C000435 -:10167000F0041700CCE8701C580CC150EF3A000C75 -:10168000EF30000DB160E1EA11805010401AEF30E8 -:10169000000EF5E010805010EF30000F401A14409B -:1016A000003CC1A1400A10945809C0F0703893382A -:1016B000893A48589104C148000080D48000CDD4B4 -:1016C00080012558000082284C88F109008E2FF9EE -:1016D000F159008EC058109970385808C9F1580453 -:1016E000C141EF3A0010EF380011B168F1EA1188FA -:1016F000EF3A00126219F1EA1088EF3A0013F5E8A8 -:1017000010081039C6D1300405F805E9F1E9108850 -:10171000C130402A8AC83119EECBFFF40A9CF01F71 -:1017200000345C8CC0904B180A9CF10900802FF9A2 -:10173000F1590080C4F83F8B0A9CF01F002EC0E0D6 -:101740004AD8201D1AD8E06801141AD84AB84ACCE1 -:101750001AD8F01F002C2FCDC0085804C0D06866DE -:101760005806C3E0089BF1D3C010EEC9FFF40A9AF3 -:10177000687C5D16C5585806C261EF380010FC1928 -:10178000E000B968E618F0001238C1D00F8B0A9C4F -:10179000F7DBC0042FEBA36BF01F00166A180E389E -:1017A000C0E04958201D1AD8E068012F1AD84968AE -:1017B000493C1AD8F01F00132FCDC008303B0A9CBB -:1017C000F01F001248980A9CF10900882FF9F1597E -:1017D0000088F109007E2FF9F159007EC0280A9C8B -:1017E000F01F000BC1D80000000080D480011E2C27 -:1017F0008000CDD48003B19C8003B11C80039D9CEC -:10180000800094C48003B21C800118FC8000D13C8D -:10181000F10C0014E60C1900FE91FF5FC2DB2FDD16 -:10182000D8320000D431189316921494324B300AF7 -:10183000301CF01F00241897C43098593238F00932 -:101840001900E08B000F4A08201D1AD8E068012E0D -:101850001AD849E849EC1AD8F01F001E2FCDC0084D -:101860007816661531CAAC94AC823004ACC4ACD4E2 -:10187000ACE4ACF4661B781C2F8CF01F00170C9C9A -:10188000ACA4ACB48EDBF01F00155C7CACBCA98CA6 -:10189000ACAC201D492C30161AD60898F906006009 -:1018A000EACAFFF4E06900FF089B2FF6F9560060D2 -:1018B0000E9CF01F000C0E9CF01F000B2FEDD83279 -:1018C0008000D3188003B2308003B27880039D9CDF -:1018D000800094C48002E73680011F4A000080D453 -:1018E000800122948000D13CD401F5DBC00830BBDC -:1018F000F01F0002D802000080011824D401F5DB9B -:10190000C008303BF01F0002D802000080011824FC -:10191000D4314C62E50800622FF81694E558006255 -:10192000781618970D85EBD5C004A365EA0311005E -:101930005C83069BF01F003EE08101788E493038C1 -:10194000F0091900E08801726E1811893088F009D9 -:101950001800E081015DED380010ED310011B1613A -:10196000E3E81181ED380012E3E81081ED3800134F -:10197000089BF1E11001ECCCFFF0F01F002EC071CC -:10198000E611F000FC18E0001031C0914A780E9C7E -:10199000F10900742FF9F1590074C4498E49307867 -:1019A000F0091900E08801420E9CF01F00235C8CB6 -:1019B000C0A00E9CF01F0021E50800682FF8E55834 -:1019C0000068D832330B0E9CF01F0019C6E00A9B4A -:1019D0000E9CF01F0017189AC0E04998201D1AD8D5 -:1019E000E06800981AD84978497C1AD8F01F001787 -:1019F0002FCDC0088ECB302CF01F00151892E08040 -:101A0000011F98D9EAC8FFF81039C25248C8201DF2 -:101A10001AD8E06800A21AD848E848BC1AD8F01FC3 -:101A2000000B2FCDC0080000000080D48000CDD472 -:101A30008001255880011FAC8000D13C8003B2306A -:101A40008003B2A480039D9C800094C48000D318BE -:101A50008003B2D80E9BF01F00445C5CC0E04C38A1 -:101A6000201D1AD8E06800A51AD84C184C1C1AD8AA -:101A7000F01F00412FCDC008069B6416049CF01F88 -:101A8000003FC0E04B98201D1AD8E06800AB1AD880 -:101A90004BB84B8C1AD8F01F00382FCDC0080E9CC5 -:101AA0000497F01F0038C1383D0B0E9CF01F003327 -:101AB000C0E04AE8201D1AD8E06800B51AD84B08E3 -:101AC0004ACC1AD8F01F002C2FCDC008ED3A000CDC -:101AD000ED39000DB169F3EA1189ED3A000EED3BE5 -:101AE0000010F3EA1089ED3A000FF5E91009ED3A1C -:101AF0000011B16AF5EB118AED3B0012F5EB108A8B -:101B0000ED3B0013F7EA100AF40B16186E18ED6A95 -:101B1000000FED6B000CF7DAC208F5DAC108ED6AC8 -:101B2000000EF20A1618ED690013ED6A0010ED6B55 -:101B3000000DF5D9C208F3D9C108ED6A0011ED69AD -:101B40000012300911AAB08911B9F3EA1089FE7A9E -:101B5000F7FE5C89F4091900E0880016F2C9F7FF66 -:101B6000C14800008000CF988003B2308003B310DA -:101B700080039D9C800094C48000CDD48003B33842 -:101B80008000D13CF2C9F8005C79B0B9A989B0A94C -:101B9000ED380009E818FF00ED680009A988ED6834 -:101BA00000083008314BED68000BED68000A0C9C12 -:101BB000F01F00284A885C7CED6C000BA98CED6C52 -:101BC000000AF10900602FF90A9BF15900600E9C90 -:101BD000F01F00221898C0E04A18201D1AD8E068AB -:101BE00000D71AD849F84A0C1AD8F01F00202FCD78 -:101BF000C00830191AD4189A1AD9ECCBFFF4E0694E -:101C000000FF0E9CF01F001A2FEDC0B8E508007011 -:101C10002FF8E5580070E50800662FF8E5580066D3 -:101C20000E9CF01F0014D8320E9CF01F001248A822 -:101C3000F109006A2FF9F159006AD8320E9CF01FA1 -:101C4000000D4858F10900742FF9F1590074D83289 -:101C500080011F4A000080D48000CDD48003B230C0 -:101C60008003B36C80039D9C800094C48001206439 -:101C70008000D13CD431205D30951988FAC9FFF03D -:101C8000FACEFFFC5009330231033056F0C9003060 -:101C9000EA091800E08B00BAE4081800C03030A749 -:101CA000C1582FFC35891988F20818005F0A378956 -:101CB000F20818005F09F5E91009F9B70008F7BC48 -:101CC00001FFF9B70110F9F81800F8CAFFFF300951 -:101CD0003191F2070244F0C000301004F4CC00014E -:101CE000EA001800E08B0005E8C90030C1E80E9456 -:101CF000E6071800C1D1F0C400615C54EC04180080 -:101D0000E088000EF0C00041EC001800E08B0011EC -:101D1000E2041800E0880004341CC028361C2F6838 -:101D2000F00C010CF9E9104915882FFACD3B32EA85 -:101D3000F4081800C0814008103EC6701CA92FFC92 -:101D40001988CA5B5808C28030CAF40818005F1CA2 -:101D5000320AF40818005F1A146C300AF40C1800E8 -:101D6000C1B030DCF80818005F1730ACF808180074 -:101D70005F1CEFEC000CF40C1800C0E030BC309796 -:101D8000F80818005F1CEE0818005F18F9E8000852 -:101D9000F4081800C3A1FAC8FFFC101EA34E2FFEC2 -:101DA000582EC0B0E0890005580EC2F0C298583EC7 -:101DB000C0F0584EC251C168E064FFFFEA1400FF52 -:101DC0000839E08B00234018F3E81189C198E049F5 -:101DD000FFFFE08B001B4018402AB968F1EA1108A8 -:101DE000C0D8E04900FFE08B0011402A4018B968D4 -:101DF000F1EA1108403AF1EA1088F1E91009580BAC -:101E0000F7F91A00301CC028300C2FBDD832D70388 -:101E1000D401202DFACBFFFCF01F0004F9BC00FF19 -:101E2000FBFC10012FEDD80280011C74D431202D51 -:101E3000300630110C9EC4A898557812E7D5B01022 -:101E4000049430075008C0B8E92800000990202306 -:101E5000E1E810805C835C702FE40007E203190066 -:101E6000FE9BFFF40A944008E214FFFEE7D5C00190 -:101E700008023000E0031900C0400584A964080787 -:101E8000E9D7C010B187E80700070E94E0140000FE -:101E9000C060E9D7C010B187E80700075C77EBD5D1 -:101EA000C001EE0E000EEFDEC010B18EEE0E000E81 -:101EB0005805C0B0EFDEC108EC061101A96E5C56F2 -:101EC000FDDEC010EFEE100E780C580CCB615806FA -:101ED000C080F9DEC108A96EFDDEC010F9EE100E5B -:101EE00017B715BC17851796B166EDE5118617ABC8 -:101EF0001585EDEB108B5C781596EFEB100B15AAA2 -:101F0000EFDBC010B166B18BEDE511860E0BEDEA8B -:101F1000108AF9EA100AF40C1610F5DAC010F60A65 -:101F2000000A180AF4090009F2080008F00E000E71 -:101F3000F1DEC010B18EF00E000EF9DEC010B18ED1 -:101F40001C0C5CDC5C8C2FEDD832D4213008189945 -:101F5000F5DBB010301EC0B8F32600001397202A1E -:101F6000EFE610875C8A5C772FE90E08FC0A1900FF -:101F7000FE9BFFF41699E219FFFE120CEDBB000068 -:101F8000C0411989A9691208F3D8C010B188F208B4 -:101F900000081099E0190000C060F3D8C010B188A3 -:101FA000F20800085CD8F9D8B010D822D431300A31 -:101FB000301414981495C488985B7816EFDBB01031 -:101FC0000C9E3009C0B8FD2200001D932027E7E2D7 -:101FD00010835C875C732FEE06090E93E8071900E7 -:101FE000FE9BFFF3169EE21EFFFE1C06FDDBC001FA -:101FF000EA0E1900C0400D8EA96E1C09FDD9C01053 -:10200000B189FC090009129EE01E0000C060FDD9E4 -:10201000C010B189FC0900095C79F7DBC001F20846 -:102020000008F3D8C010B188F2080008580BC0B0FF -:10203000F3D8C108F40A1101A9685C5AF1D8C0109C -:10204000F3E81008780C580CCB81580AC080F3D8FC -:10205000C108A968F1D8C010F3E810085CD8F9D815 -:10206000B010D832D431201DFAC4FFD8169712937D -:102070001092681518966801580AE0800091500A7D -:10208000314BF01F0055400AC0A04D48E06C00FEE7 -:10209000F109005C2FF9F159005CCC286C148C59C3 -:1020A0003138F0091900E08B000F4CD8201D1AD8E8 -:1020B000E068022C1AD84CB84CBC1AD8F01F004B60 -:1020C0002FCDC0085C53E3E310815C71E961000926 -:1020D000A981E9610008158B1598B168F1EB1188A9 -:1020E00015ABF1EB108815BBF7E81008F00B1618CC -:1020F000E9680013E96B0010F7D8C208F1D8C108ED -:10210000E96B0011E9680012E81245005C72A892C0 -:10211000E4031608A883ED380008A8A8ED380009E4 -:102120004B39A8FCA8B8A8EC9208F7D8C010A8DBD7 -:10213000A98BA8CB2FF8B2085807C0D00F8B0FB9C6 -:102140000F98B168F1EB11880FABF1EB1088F3E851 -:102150001008C051EAC8FFFCEBF81001F00916188E -:10216000E968000FE969000CF3D8C208F1D8C1088A -:10217000E969000DE968000E3008E968000BE968BC -:10218000000A500A314B089CF01F001A5C7CE96C75 -:10219000000BA98CE96C000A400AC038781A2F0A93 -:1021A00048E8F10900482FF9F1590048158B1599B5 -:1021B000B169F3EB118915AB6A18F3EB108915BB04 -:1021C000F7E910091039C1910C9B0A9CF01F000A15 -:1021D000C26800008000CDD4000080D48003B3909A -:1021E0008003B3D880039D9C800094C40000734892 -:1021F00080011F4A8000CAF8EB08002C5808C0B0C4 -:102200008C49F0091900E08800070A9B0C9CF01F1C -:102210000006C0580C9B0A9C6A585D185C5C2FFD38 -:10222000D8320000800125A0D42149781896700783 -:10223000C1680E9CF01F0015C1100D8B0D98B16880 -:10224000F1EB11880DAB6E1AF1EB10886E290DBB06 -:10225000F7E8100814581268C1306E075807CEA16D -:1022600048B66C0C580CC040F01F0008C08148985C -:10227000F10900562FF9F1590056C0286C070E9C41 -:10228000D8220000000080CC8000CAE4000080D08A -:10229000000080D4D421204D1897503B149C502A24 -:1022A000501950084096F01F000D403B402A40193D -:1022B0004008C0A148A8E06C00FCF10900562FF9C5 -:1022C000F1590056C0881ADC0E9C1AD6F01F000582 -:1022D0002FED5C5C2FCDD82280012228000080D415 -:1022E00080012064D4314C05EB08004A2FF87817A0 -:1022F000EB58004A0F980F831694F1E31083189659 -:10230000E609160C3048F0091900C090F01F00379C -:10231000EB08005C2FF8EB58005CC2980FB8E7D3CD -:10232000C1040FA2A363F1E2108298585C82E60810 -:102330001900C0539848E4081900C0B20C9CF01F63 -:10234000002B4A98F10900522FF9F1590052C86840 -:10235000069B0E9CF01F00265C8CC0F00C9CF01FAE -:102360000023EB0800502FF8EB580050EB08004E0C -:102370002FF8EB58004ECD48F7D2C0100C9CEEC0A1 -:10238000FFF0F01F001C0895301249B10A9CF01FA5 -:10239000001BC1D0EAC8FFFCC1A06A185808C17070 -:1023A000EF3A0010EF390011B169F3EA1189EF3A01 -:1023B0000012F3EA1089EF3A0013F5E91009103919 -:1023C000C2A00A9B009CF01F000EC2515802E3F508 -:1023D0001000EBF5000030020835EBF50000580561 -:1023E000CD61C9F8000080D48000D13C80011F4A33 -:1023F0008000D210000080CC8000CAE48001255803 -:10240000EE03000307B807A9F1E910893448F00981 -:102410001900C2A0EF39000CEF38000DB168F1E9E6 -:102420001188EF39000EF1E91088EF39000FF3E859 -:102430001008C1B0089BEECCFFF4F01F003DC0A116 -:10244000EF38000CFC19E000B968E618F00012380B -:10245000C0C10C9CF01F00374B78F109004E2FF9DA -:10246000F159004EC5D808955805C0510C9CF01F75 -:102470000031C5680FE90FF8F1E91088F1D8C00EF6 -:10248000C0700C9CF01F002D1896C4A078174AC885 -:1024900091044AC8089B91070C9CF01F002BC3B104 -:1024A000EF3800095868C0B05918C0405818C11119 -:1024B000C0B8089B0C9CF01F0025C2D8089B0C9C40 -:1024C000F01F0023C288089B0C9CF01F0022C2381A -:1024D000089BEECCFFF0F01F0016C0F1EF380010A3 -:1024E000FC19E000B968E618F0001238C0608D17DA -:1024F000302B0C9CF01F00180C9CF01F000E48E8BD -:10250000F10900582FF9F1590058F109004E2FF93F -:10251000F159004E48A93008930848A99308D83AC1 -:10252000EF3800095918FE91FF77C6BB8001255886 -:102530008000D13C000080D4800129BC0000822CA6 -:10254000000082308000D588800115508000F37C27 -:1025500080011910800118FC19B9198A1998B168FD -:10256000F1EA118819AAF1EA1088F3E81008F0C915 -:1025700000015BD9E08800035EFFF7390035EDB953 -:102580000001C0E1761A1438C0B07629105A126AD8 -:10259000C0715CD9F3E8000812385F0C5EFC5EFD88 -:1025A000D431209D503B506A781B403AF519002CDD -:1025B000F2C80013502B5078214917EA17F8F1EAB6 -:1025C00010885C88109BF1D8C00DE21B2000984356 -:1025D000505B2143308B5018F20B0C0A1897F3DA3A -:1025E000B0105C8312985049A37830025C88314067 -:1025F0005088C938401B405AF1DBC00D14485008C0 -:10260000E3D3B010F1D3C01040791039E08900064F -:10261000400B4081ADBB500B300A314B302CF01FCA -:1026200000421894C3708E58313AF4081900E08BB8 -:10263000000F4BE8201D1AD8E06802C31AD84BC817 -:102640004BCC1AD8F01F003C2FCDC008314A402B8C -:10265000781CF01F003A6E19F1D0C010F208000883 -:102660006816EBD1B0108F188E58F0000100AE50F4 -:10267000C2188E52EA021900EA0217205C82C19049 -:10268000302A300B303CF01F0028C071089CF01F2E -:10269000002CE06C00FFC4586E18B842B852189B6A -:1026A00099180415089C5C85F01F00265805C02069 -:1026B0006E075805CDF1ED65000B40085C78ACF86D -:1026C000A988ACE8E2C8FFEC5C78ACB8A988314BCB -:1026D000ACA8ED65000A0C9CF01F001B5C7CED6C47 -:1026E000000BA98CED6C000A4039406A7258089BB7 -:1026F000129C5D18495BF70800302FF8089CF758CA -:102700000030F01F000F40180213404AE1D2B01011 -:1027100014085C835C8850185803FE91FF6D069C7A -:102720002F7DD8328000D3188003B4108003B45CAE -:1027300080039D9C800094C48002E7368000D13CD9 -:102740008000CD3480011F4A000080D4D40148F8B5 -:1027500070091839C04178099109C128580BC0E1A6 -:1027600048B8201D1AD8E06801341AD8489848ACF7 -:102770001AD8F01F000A2FCDC00878089708189BB8 -:10278000305CF01F0007D8020000734C8003B410C7 -:102790008003B47C80039D9C800094C48000C97435 -:1027A000D43118971696183BC0E14BC8201D1AD893 -:1027B000E06800A41AD84BA84BAC1AD8F01F003A16 -:1027C0002FCDC008580BC11076081838C0E04B3820 -:1027D000201D1AD8E06800A61AD84B484B1C1AD8FE -:1027E000F01F00312FCDC0086E156A1811CA11D91B -:1027F000F3EA1089C0303004C1D8118A1199109CB5 -:10280000B169F3EA118911AA11B8F3EA10891248E3 -:10281000314A8F18EECBFFF8F01F0025301B0A9CC1 -:10282000F01F00240A9CF01F002418940A9CF01F3B -:1028300000236E15C1486A1811B9118A119311A8A5 -:10284000B163E7EA1183E7E81083F3E31003F01FB5 -:10285000001A18040A9C0695F01F00180A9C5805D7 -:10286000CEB10C9B0E9CF01F001649689009F5D95B -:10287000C010083AC0E44898201D1AD8E06800C784 -:102880001AD84918487C1AD8F01F00072FCDC00865 -:102890000819089CB009D8328003B4108003B4989A -:1028A00080039D9C800094C48003B4A48002E7361A -:1028B000800118E88000CD0C8000D13C8001274CBD -:1028C000000073508003B4B8D431300618971692C4 -:1028D0004AB30C94300566080A9B0A9CC3E8EF3A99 -:1028E000000CEF39000DB169F3EA1189EF3A000EDF -:1028F000F3EA1089EF3A000FF5E91009705A123A1D -:10290000C1B1EF3A0010EF390011B169F3EA118952 -:10291000EF3A0012F3EA1089EF3A0013F5E91009D3 -:10292000706A123AC0910FCA0FD9F3EA1089906AFF -:10293000F20A1900C0D02FF5580CC090F13A001FD0 -:10294000F939001FF20A1800E08B0003109C70098F -:102950005809F00B171012985808CC21580CC04099 -:10296000F01F0008180658155F9804365F59F3E801 -:102970000008E8081800CAF10C9CD8320000734C1B -:10298000800127A0D42148C83007700CC108F9384D -:10299000001F7806F0C900015808C050F969001FEF -:1029A0001897C0480E9BF01F00050C9C580CCF01D7 -:1029B000D82200000000734C800127A0D431201DD4 -:1029C0004CD8F10900322FF9F159003278161895D8 -:1029D0000D835C83F3D3C004A3695949C080F10916 -:1029E00000442FF9F1590044E08F02570DF80DE132 -:1029F000F1E110810DB80DA24C07F1E21082F01F39 -:102A000000408E885C815C821894F808000858A801 -:102A1000E08A000D189B0C9CF01F003AC5708E8850 -:102A2000E808000858A8E08900524B783009700780 -:102A30005009C3D8ED39000CED38000DB168F1E94B -:102A40001188ED39000EF1E91088ED39000FF3E837 -:102A500010086E591039C291ED390010ED3800118F -:102A6000B168F1E91188ED390012F1E91088ED390A -:102A70000013F3E810086E691039C1710DC90DD843 -:102A8000F1E910888E69F0091900C0F149A8F1092F -:102A900000462FF9F15900460DE90DF8F1E91088CB -:102AA000F1D8C00DC360C3F850076E075807CC318A -:102AB000E08F021E089B0C9CF01F0012083CC065B2 -:102AC000305CF01F00121897C09148B8F109003C23 -:102AD0002FF9F159003CE08F01E0320A300B0E9CD7 -:102AE000F01F000B30394888EF69001F70098F090B -:102AF0009107C138000080D4000073508000CD0CD5 -:102B0000800128C80000734C8000C9D48002E8BC52 -:102B10008EF8F1D8C00DC070314A0C9BEECCFFF896 -:102B2000F01F004F4CF89009F20400045C84B004DC -:102B30000DE8A598EDB80000C120EF38001EE3D1E4 -:102B4000C00DE7D3C004A371E60310FCE20200024B -:102B5000A1A80602EF68001EEF52001C6A1811BB04 -:102B6000300A11AEF7EE108E118BB09AB0AAB0BA3F -:102B7000B08A1499F5DBC00411FBF40A10FC11ECC7 -:102B8000F7EC108CF9DCB00DA37CF7DCC010B0DBE7 -:102B9000A98B180EB0CB140E10935C8E3016F5DE98 -:102BA000C010B0FAA98AB0EA6E11029BC548761A25 -:102BB00015C015D2E5E010825C82E40C1900C292C7 -:102BC000F6021618B0BBB082E5DBC208F7DBC1081D -:102BD000B092B0AB5809E080008213E213FBF7E239 -:102BE000108BF60C1900E08300FF15DB15CAF7EA1D -:102BF000108AF40E1900E08B00F7EA0A1618B2B535 -:102C0000B28AF5D5C208EBD5C108B29AB2A5C6788A -:102C1000E40C1900E08000E815E015FBF7E0108BEC -:102C2000F60C1900E08300E05809C09013FB13E98B -:102C3000F7E91089E4091900F9B601001582159B1E -:102C40001499B16BF7E2118B15A215BAF7E2108B4C -:102C5000F5EB100B580BCAC1C52900008002E736FE -:102C60000000735013EB13FA11CCF5EB108A11DB53 -:102C7000F7EC108BF60A1900E088000F4BC8201DF6 -:102C80001AD8E068018E1AD84BA84BBC1AD8F01F8E -:102C9000003B2FCDC008EA0B1618B28BF7D5C2083F -:102CA000B2B5B29BEBD5C108B2A511CB11D9F3EBEC -:102CB0001089F20A1900F9B60100C1185801C0E0E4 -:102CC0004AB8201D1AD8E06801971AD84AC84AACF9 -:102CD0001AD8F01F002A2FCDC0088F15EF39001E1B -:102CE000EDB90000E08100E45806E08000E16E19D3 -:102CF000721A15CB15D9F3EB1089E08100D9118B2D -:102D000011951099B165EBEB118511AB11B8EBEB97 -:102D10001085F1E51005C1A807F86A1907EB13CC77 -:102D2000F1EB108B13D8F1EC1088F00B1900E08157 -:102D300000BF13881395B165EBE8118513A81293B2 -:102D4000EBE8108513B8F1E510055805CE61123A8D -:102D5000C1A14878201D1AD8E06801B91AD848984E -:102D6000485C1AD8F01F00052FCDC0088003B410AE -:102D70008003B4D480039D9C800094C48003B4F489 -:102D80008003B52C138A1398B168F1EA118813AA4D -:102D9000F1EA108813BAF5E81008C0E04C68201D6D -:102DA0001AD8E06801BB1AD84C484C5C1AD8F01FFE -:102DB00000452FCDC00813F813E9F1E91088EF0999 -:102DC000001C5C88F0091900C1704BB8201D1AD88E -:102DD000E06801BD1AD84BC84B9C1AD8F01F0039C7 -:102DE0002FCDC0080A9CF01F00394B9818143006EC -:102DF000B0040A9CC5982EC8EF58001C6E187016B7 -:102E00000D880D94B164E9E811840DA8E9E81084F7 -:102E10000DB8314AF1E41004EECBFFF80C9CF01F22 -:102E2000002DEF38001CACA8EF38001D0C9CED65A0 -:102E3000000BACB8ACE5ACF5ED65000A314BF01F0A -:102E400000265C7CED6C000BA98CED6C000A6E1604 -:102E5000C1586815089C3ECBF01F0020089B0C9CB5 -:102E6000F01F001F0B890BB80B94B164E9E91184C2 -:102E70000BA9E9E91084F1E410045804CEB10E9CCA -:102E8000400BF01F00180C9C49178E05F01F000F17 -:102E90001815AE05C0D849480A9CF109003630061D -:102EA0002FF9F1590036F01F0011C02830060C9C94 -:102EB0002FFDD8328003B4108003B53C80039D9C65 -:102EC000800094C48003B5608000CD0C0000735076 -:102ED0008002E73680011F4A8000CDD48000CD34C7 -:102EE0008001274C000080D48000D13C305CF01F72 -:102EF00000061897FE91FDF3FE9FFDDE5809FE9136 -:102F0000FEB3CDDA8000C9D4D4211898F937002E49 -:102F1000761E306CF8071800C0E04948201D1AD80A -:102F2000E06801B41AD84928492C1AD8F01F0012B9 -:102F30002FCDC008306C201C5C5CF20C0706FC0C2A -:102F40000007EF66000EF40C0706EF660014580C3D -:102F5000CF313089FD6C001BFD69001A109C706830 -:102F60005D185C5CD82200008003B5948003B5DC5A -:102F700080039D9C800094C4D4211897580CC0E114 -:102F800049D8201D1AD8E06800941AD849B849CC0D -:102F90001AD8F01F001C2FCDC00878185808C0E1BF -:102FA0004958201D1AD8E06800951AD84968494C3C -:102FB0001AD8F01F00142FCDC0086E186E06109C92 -:102FC0005808C0E148C8201D1AD8E06800991AD8EE -:102FD00048E848BC1AD8F01F000B2FCDC008F01FDE -:102FE000000C0E9B306C0C97F01F000A5806CE6147 -:102FF000D82200008003B5948003B62080039D9CF6 -:10300000800094C48003B62C8003B63C8000D13C81 -:103010008000C974D431201D500B1897580CC0C0C3 -:103020004D084D19118CF80815031818F2080028DE -:1030300070495829C0D030AA30094CBE129C1C924D -:10304000129B2ECE1298149314911490C1980F8A4B -:103050000F99B169F3EA11890FAA7018F3EA108980 -:103060000FBAF5E910091039CE714C08F109002E9C -:103070002FF9F159002ECE480C990A9C089B30A6D6 -:10308000EC031800C0A1FCF6FFFC5806C0611296C4 -:10309000189516941093C498FCF6FFFC5816C2417C -:1030A0005807C0F00F860F95B165EBE611850FA6A6 -:1030B000EBE610850FB6EDE5100564160C35C26021 -:1030C00064051D865805C080F2061800C2B3189525 -:1030D0001694109AC2A80C94F6061800C2331296E1 -:1030E00018951090C2285826C1D15807C1300F86B4 -:1030F0000F95B165EBE611850FA6EBE610850FB6CF -:10310000EDE5100564160C35C0514969109CB28874 -:10311000C9781D85F8051800C053129616941091B1 -:10312000C0481296189516942FF82E4E5C582E42D1 -:1031300030A9F2081800CA11F2031800C061400655 -:10314000EDB60000E081007B4005E2150002E08161 -:1031500000763098F0031800E089000A5C53C498A8 -:103160000000735200007354000080D430A8F001B6 -:103170001800C180E7D1C0084B38E60915030619CD -:10318000F00903285808C2304B08201D1AD8E068FF -:1031900001761AD84AE84AFC1AD8F01F002F2FCD22 -:1031A000C008F0001800C040E7D0C008C108E20A1B -:1031B0001800C4404A48E7DAC008E60615030616B8 -:1031C000F00600266C0CF01F00258D053098F003EA -:1031D0001800E088000F49D8201D1AD8E068018C3B -:1031E0001AD849F849BC1AD8F01F001B2FCDC008C7 -:1031F0004959E6081503300A0618F2080028F0C9F4 -:10320000FFF0930A5807C0D00F8B0FBA0F99B1691E -:10321000F3EB11890FABF3EB1089F5E91009911964 -:103220004899E60815030618F20800282F08300907 -:10323000069CB0C948B8B083C038E06C00FF2FFDD1 -:10324000D8320000000073548003B5948003B64C5C -:1032500080039D9C800094C480012F788003B66415 -:1032600000007352D431494730050E963EF42EC704 -:10327000ECC3FED40F882FF85C58AE88EEF9FFFC43 -:103280005829C061E8081800E08B0009C0F85819F7 -:10329000C0D1F2081800E088000A6C0C580CC0403D -:1032A000F01F00068D05EF45FFFC2E472E46063722 -:1032B000CE21D8320000735480012F78D431306889 -:1032C0001293189616951497F939002EF0091800E4 -:1032D000C0E04B78201D1AD8E06801DA1AD84B58A4 -:1032E0004B5C1AD8F01F00352FCDC008580BC5C055 -:1032F00017891798B168F1E9118817A9F1E91088C1 -:1033000017B9F3E81008C500189B0A9CF01F002CA1 -:103310001894C4A10B88FC19E000B968E618F00005 -:103320001238C420069B0A9CF01F00265C5CE80C47 -:103330001800C3C55C6C4A49F8081503302AF00C24 -:10334000010CF20C00289166F0C9FFF0930A0FDA25 -:10335000F16A000D0FCAF16A000C0FBAF16A000B96 -:103360000FAAF16A000A0F9A1095F16A0009ECC3DE -:10337000FFD10F8AB2C4F16A0008C0F87009701456 -:103380008B09F01F00120E99069A089B0C9CF01FE7 -:103390000010089CF01F000F6A08306C109B580842 -:1033A000CEE1109CD832E06C00F6D8328003B594A0 -:1033B0008003B67880039D9C800094C480012558CA -:1033C00080013014000073548000C97480012F08FC -:1033D0008000D13CD421189E580CC0E14958201DD2 -:1033E0001AD8E068024A1AD84938494C1AD8F01F4E -:1033F00000142FCDC008761AF4C8FFE4F137000F8F -:10340000F136000CF139000DF138000E782BB1695E -:10341000F3E61189F3E810897818EFE910091059DB -:103420001669C061F4CBFFD82ECAF01F0006D8225F -:103430008003B5948003A13880039D9C800094C4D0 -:10344000800132BCD431202D189616911495580C59 -:10345000C0E14CA8201D1AD8E068027F1AD84C8819 -:103460004C8C1AD8F01F00482FCDC00894593378DF -:10347000F0091900E08B000A4C48149CF109002265 -:103480002FF9F1590022C3087414E8C7FFE40F981C -:103490000F89F1E910893018F0091900C1E10FD83E -:1034A0000FC9F1E91089E0680604F0091900C1515B -:1034B0000FB80FA9F1E91089E0680800F0091900B8 -:1034C000C0C1E938001BE939001AF1E91089E06848 -:1034D0000806F0091900C0E04AC80A9CF109002852 -:1034E0002FF9F1590028F109001E2FF9F159001E9A -:1034F000CA184A68F109001A2FF9E8C3FFD6F15932 -:10350000001AFAC2FFFC304A069B049CF01F002000 -:10351000EF380018EF390019B169F3E81189EF3875 -:10352000001AF3E81089EF38001BF1E910096C1854 -:103530005808C0C01039C0A1049B3019E8CAFFDC8C -:103540000C9CF01F00143018C0A83009EECAFFF818 -:10355000FACBFFFC0C9CF01F000F30080FEA0FF9AC -:10356000F3EA1089301AF4091900C1503028F00923 -:103570001900C591C52800008003B5948003A138C7 -:1035800080039D9C800094C4000080D48002E736B4 -:10359000800132BC5808C4D03008AEE83028304A28 -:1035A000AEF8EECBFFF2EECCFFE8F01F0025304A7C -:1035B000069CEC0A000BF01F0022ED39002E30684B -:1035C000F0091800C0E049F8201D1AD8E06802D9B7 -:1035D0001AD849D849DC1AD8F01F001D2FCDC008D1 -:1035E000306820185C58EE080009F33B0008F36BC4 -:1035F0000012E808000AF56B000EE208070BF36BF7 -:103600000008E2080709F56900145808CEB10C9CBF -:103610006C680A9B5D18C0D80C9CFACBFFFCF01FAD -:10362000000DC07848C8F109002C2FF9F159002C81 -:103630000A9CF01F000A2FEDD83200008002E73606 -:103640008003B5948003B5DC80039D9C800094C406 -:103650008000B3B4000080D48000D13CD42178191C -:10366000F338001BF339001A1697F1E91088189601 -:10367000E0690800F2081900C070E0690806F20865 -:103680001900C231C1C8189B0E9CF01F00173E4B99 -:103690000C9CF01F0016C0E04958201D1AD8E068A5 -:1036A00004A41AD84938494C1AD8F01F00142FCD59 -:1036B000C0080E9B0C9CF01F0012C148189A169C63 -:1036C0002D1BF01F0010C0E848F8F10900282FF961 -:1036D000F1590028F109001E2FF9F159001EF01FC1 -:1036E000000BD82A800133D48000CDD48003B59458 -:1036F0008003B36C80039D9C800094C4800122E40D -:1037000080013444000080D48000D13CD431300AA0 -:1037100018941691303C338BF01F0042E8C8FFD15B -:103720001895580CC0A14C08E06700FFF10900246F -:103730002FF9F1590024C738985A3379F20A190041 -:10374000E08B000F4B98201D1AD8E06804311AD87E -:103750004B784B8C1AD8F01F00382FCDC008300999 -:103760007813E6C7FFE4AEE93019AEF93069E93AFB -:10377000002EF20A1800C0E04AC8201D1AD8E068DE -:1037800004391AD84AD84ABC1AD8F01F002B2FCDBA -:10379000C00830664AAB4ABA20165C56F006070CE1 -:1037A000EE060009F36C0008F606070CF36C001235 -:1037B000F406070CE6060009F36C000EF006070C91 -:1037C000F36C00145806CE913042EECCFFF2E802C2 -:1037D000000B049AF01F001C049A029BEECCFFE839 -:1037E000F01F00193069AED2AEC9AEB6AE863088D1 -:1037F000301AAEA8AE9AE769001BE768001A089C69 -:1038000068680A9B5D184888F10900182FF9EFDCF9 -:10381000C008F15900180A9CF01F000C0E9CD83209 -:103820008000D318000080D48003B5948003B6A034 -:1038300080039D9C800094C48003B5DC8003B71690 -:103840008003B58D8002E7368000D13CD4211694E8 -:103850001896189B1497089CF01F00541895E08147 -:1038600000DF09890998B168F1E9118809A9F1E92E -:10387000108809B9FC1AE000F3E810081099E6195D -:10388000F0001439E08000CC5808E08000C9301BFB -:10389000089CF01F00475C5CEA0C1800C0545807F5 -:1038A000E08100CBCC184C39EBDCB008EA081503FA -:1038B0000A18F20800282F0870095809F9B9000100 -:1038C000F1F90A004BB9EA0815030A18F2080028B2 -:1038D0007048F0C900015819E088000F4B68201D9E -:1038E0001AD8E06803A51AD84B484B5C1AD8F01FC9 -:1038F00000352FCDC00858185F0858075F09F3E856 -:103900001008C041E06400FFC078089B0C9CF01FC9 -:10391000002EE9DCC0085807E08000854A5AEA0911 -:1039200015030A19A369F409000870485828C0B1A2 -:103930002F890E9BF40900090C9CECCAFFD1F01FE3 -:103940000023C6B85818C6E110990E98905B904AAB -:10395000F40B1900C111700A580AC0E04968201D13 -:103960001AD8E06803C41AD84998495C1AD8F01FDD -:1039700000152FCDC008F13A000CF20A1800C05112 -:1039800070085808CE41C51890CB300A303CF01F63 -:1039900000111896C4F00E9BF01F000F5C5CC1F084 -:1039A0000C9CF01F000EC468800125588001301463 -:1039B000000073548003B5948003B6D480039D9CAB -:1039C000800094C48001370C80012F088003B6FC6E -:1039D0008000D3188000CF988000D13C306CF01F5D -:1039E000001AC170300899169908EA081503F00505 -:1039F00001054968F00500256A045804C07008985C -:103A000068045804CFD1910CC0288B0C089CD82294 -:103A10000C9CF01F000F089C5C5CD822E06C00F648 -:103A2000D822089C5C5CD8220E960E9CF01F0009E0 -:103A3000CD6B089C5C5C4888F10900242FF9F15992 -:103A40000024D8228000C9D4000073548000D13CE7 -:103A50008000CD1E000080D4D421202D169618970A -:103A6000149531CB0C9CF01F0027C0804A68E06C95 -:103A700000FE90592FF9B059C4180E9B0A9CF01FF4 -:103A80000023C3410B890B98B168F1E911880BA998 -:103A9000F1E910880BB9FC1AE000F3E8100810995E -:103AA000E619F0001439C0F13019BAA935E9BAC9DC -:103AB000F3D8C207BAF8BAD9A988BABCBAE8FAC921 -:103AC000FFFEC1586E1912586E291268C0906E38E8 -:103AD0005808C041E06C00FCC118EEC5FFF40C9A18 -:103AE0000A9B0E9CF01F000AC08848A90C9B0E9CE4 -:103AF000EECAFFD1F01F00085C5C2FEDD822000059 -:103B00008000CDD4000080D4800125588001384C3D -:103B10008003B58D80012F0878983019B0895EFC3C -:103B2000D4217897EF380024EF390025F0091800E8 -:103B3000C021D82AEE080028201D701630086C1904 -:103B40008CCA8CDB20EA1AD620EBF2CCFFF2F01FF5 -:103B500000182FED587CC0F0581CC0310C95C138AE -:103B6000EF3800242FF8F1D8C0030C9CEF68002434 -:103B7000F01F0010E06C00F4D8228ADB6A1CF01FF2 -:103B8000000E6A055805CFA1EF3800242FF8F1D8B0 -:103B9000C0030C9CEF680024F01F00064878E06C1E -:103BA00000F290092FF9B009D82200008001933467 -:103BB0008000D13C80013F7C000080D4D421204D86 -:103BC0001896F01F002D5806C5306C955805C50095 -:103BD0000B885808C4D0E0680600300ABA68E06B69 -:103BE0000600303CF01F00251897C3F03008FACBD0 -:103BF000FFF4AA88781CF01F00229A6B580BC35060 -:103C00005C7BFAC8FFF2FAC9FFFCFACAFFF86E1C27 -:103C1000F01F001C586CC2606E18402B101B40181F -:103C20005C5B0E9C100B5C7BF01F001749789019B1 -:103C30002FF9B0196E19F338001BF339001AF1E9A6 -:103C40001088E0690800F2081900C060E069080601 -:103C5000F2081900C0716C480C9B0E9C5D185C5CEE -:103C6000C0400E9CF01F000A0C9CF01F000A2FCDD4 -:103C7000D822000080013FA08000D31880013F5867 -:103C8000800192DC8000D210000080D48000D13C02 -:103C900080013B20D4211897580CC0E149B8201D61 -:103CA0001AD8E06801491AD8499849AC1AD8F01FC7 -:103CB000001A2FCDC008499899983778F9680036CE -:103CC00036C8F9680037496899584968189B996857 -:103CD000495CF01F0016496CF01F00163628EF688B -:103CE00000353068EECCFFD1EF68002EF01F0012D7 -:103CF000581CC040E06C00F4D822E06805DC300CB1 -:103D0000EF58002CD82200008003B71C8003A13894 -:103D100080039D9C800094C40000746C80013A581C -:103D200080013D5880013B1880013E6880013D388C -:103D300080018F4480019128D40116985C7A189BE9 -:103D40002F29109C5C79F01F00045C7CF9BC00FFFB -:103D5000D80200008000CEC4D42131B918977898D9 -:103D6000965AF20A1900E08B0005E06C00F4D822A4 -:103D7000F1390025F13C0024F2CAFFFFF5DAC00357 -:103D8000183AC041E06C00F2D822F16A0025F0092F -:103D90000028169C911B3F26F01F00050E9CF01F6B -:103DA0000005EC0C1800CFB0D82A00008000CD1E12 -:103DB00080013B20D42130061897E9DBC01030A5E4 -:103DC000C138EE060708201D48BC1AD8F01F000BAA -:103DD0002FED5806C080EC050C085809C041488CEE -:103DE000F01F00062FF60836CED5486CF01F0003F2 -:103DF000D822000080037AF0800094C48003B76862 -:103E0000800384D448CD48D0E3B00001D55348C0E6 -:103E100048C10230C06248C2A505A1240230CFD3F8 -:103E200048A048B10230C06230023003A122023003 -:103E3000CFE3488F000100008003760000000008F7 -:103E4000000009B88003F480000009B800008CC8A5 -:103E500080008EDCD4013018F96800087808580812 -:103E6000C030781C5D18D802D4014869930C931BAC -:103E7000F33800085808C040129CF01F0003DA0A0B -:103E80000000749880013E54D421201D1895169688 -:103E90001494300B30CA49DCF01F001D300B49DC94 -:103EA000F01F001D300B49DCF01F001D497B49DC71 -:103EB000F01F001D1897581CC0400E9C2FFDD822E3 -:103EC000F01F001A1897581CCF910C9B0A9C49862A -:103ED0008D07F01F00181897581CC04030088D0837 -:103EE000CEDB30088D08F01F00141897581CCE61E7 -:103EF000FACBFFFD302CF01F0011F9B701FFFBF8E2 -:103F00000803E9F80A00CDAB00007498800091D056 -:103F100080013F8C80018F3080013F3C80019F6099 -:103F200080013E54800144588001440C0000749488 -:103F300080018F488001443080014110D401169CDB -:103F4000580BC041F01F0004D802300B301CF01F8A -:103F50000002D80280014110D4014879F3380008EA -:103F60005808C021DC0A3008F3680008F01F00037D -:103F7000DA0A00000000749880014284D4015C7B5E -:103F8000F01F0002DA0A00008001433CD401169CB5 -:103F9000F7DAC010F01F0002D80200008001433C95 -:103FA000EBCD40C0203DF01F00164969F3380008F2 -:103FB0005808C04072085808C0402FDDE3CD80C0CB -:103FC000E0680100FAC6FFF4E06C01000CE8F01FA5 -:103FD000000E0C9B1897F01F000D9A5B580BC0A0A9 -:103FE0005C7BFAC8FFF81A99FACAFFFC0E9CF01F16 -:103FF00000080E9CF01F0007CE1B0000800140A4AB -:10400000000074988000920080013F58800192DC8B -:10401000800091E8D40148583019701CF1690009FA -:10402000700A5D1AD8020000000074A8EBCD40CCE5 -:10403000206D49A6FAC7FFF46C2E8F2EECE200002B -:10404000EEE3000016961093FACEFFF0580CC22053 -:104050007C08FC1C8000F1EC100BF4081509BBB8BF -:10406000F1E611C812481648301C9D08F01F000CDC -:104070000E9C30CA1A9BF01F000BFB38000AA68862 -:10408000FB39000B300CA699F01F00052FADE3CDD6 -:1040900080CC7C0BCE3B00008003B774800075B4ED -:1040A00080007534EBCD4080201D4987EF38000833 -:1040B000EDB80000C071EF3900093008F0091800B0 -:1040C000C0402FFDE3CD808030091A98129B129CCE -:1040D000305AF01F000F3FF91B88F2081800CF205C -:1040E0001B98EDB80001CEE13008301C109B302940 -:1040F000E06A00F0F01F000630186E1CEF6800093F -:104100006E095D19CDFB0000000074A88001402CF1 -:10411000EBCD40C0201D301AF40C1800C1B0C08394 -:104120003028F00C1800C2602FFDE3CFC0C01A97F2 -:10413000300630091A98E06A00F1129B301CF01F1B -:1041400000161B98EC081800CF51300C2FFDE3CD62 -:1041500080C018961A9730191A98E06A00F1300B4F -:10416000129CF01F000D1B98EC081800CF51300C6A -:10417000CEEB48A8F1390008F9D9C001F7FA1E00C2 -:10418000F9BC0100F9B8005AF7F80E002FFDE3CD95 -:1041900080C000008001402C000074A8EBCD406876 -:1041A00048F516961893AA4B301CF01F000E0A9C77 -:1041B000310A300BF01F000C069BF5D6C010300CF6 -:1041C000F01F0009304A300B488CF01F0007300CFC -:1041D000F01F00040C9CE3CD80680000000002107A -:1041E000800075B4800075348003B780EBCD40400B -:1041F00020ED30083009FAE90018FAE90000FAE980 -:104200000008FAE9001049BBFAC6FFD4762A8D2AC5 -:10421000F6E80000301CECE90000F01F0017320A3D -:10422000300B1A9CF01F00150C9C30CAFACBFFE033 -:10423000F01F0012300CF01F00103019FB38002A5C -:10424000F2081800C0503FFC2F2DE3CD804048C835 -:10425000F1390008F9D9C001CF8030083039304A2F -:10426000109B301CF01F00072F2DE3CF8040000073 -:104270008003B784800075B480007534000074A892 -:104280008001402CD42130094A881695F169000933 -:104290001896320BF01F00268C085CC82FE8F7D860 -:1042A000B010AA0BEFDCB010F6C90007E06805F902 -:1042B000F0091900E08B00300D890D98F208180004 -:1042C000C220F6071900C182E0640200F9D7C010CD -:1042D0005C7B181BEC0C000CE04B0200E80B17B0E9 -:1042E0005C7BF01F00138A0B0E0CEFDCB010EE0BA2 -:1042F0001900FE9BFFED48F83009118AF20A1800F8 -:10430000C0D1D8220DA8F2081800CDC10DB8F2080E -:104310001800CD813008AA08D822F5DBC010486CFF -:104320000C9BF01F0006D822000074A88001419C5D -:10433000000074A48003B76C8001447CD4314A38F7 -:1043400018921695118A3009F20A1800C3615805AF -:10435000C33049F83004F0C0FFF4E0610200C22825 -:10436000E06602000C970C93301CA006F01F0019A9 -:10437000300B497C314AF01F0018E404000C0E9AFF -:10438000300BF01F0015304A300B494CF01F001263 -:10439000300CF01F0010EA0601080604EBD8B0103C -:1043A000C0B0E2051900FE9BFFDDEDD5B010EFD6E1 -:1043B000C0100E93CDABD832F5DBC010189B488CE3 -:1043C000F01F0008CC5B0000000074A4000001FC9A -:1043D000800075B4800075348003B7808003B770A7 -:1043E0008001447CD401201D3009301C1A98E06AF9 -:1043F00000F5129BF01F0004314CF01F00042FFD4C -:10440000D80200008001402C800075D2D401F01F3A -:104410000007F01F0007C03030CCD802F01F0003A7 -:10442000F01F0003CFA1DA0A800143E4800141ECD0 -:10443000D401314CF01F0006F01F0006C03030CC14 -:10444000D802301CF01F0004DA0A0000800075D288 -:10445000800141EC80007618D4014878910C911BC2 -:10446000F0CCFFF8F01F0005F9BC010CF9BC00010D -:10447000D8020000000074A8800076385EFCD703E4 -:10448000EBCD40F849C56A096A181039C2F08B0CA7 -:10449000EAC7FFF0EAC6FFF4EEC30010EAC4FF70FB -:1044A0000F89EDB90000C091EDB90001C0616C0940 -:1044B0006A081039E08800082F072F060837CF1147 -:1044C000E3CD80F86E19300B169C5D190F883FDA2A -:1044D000F1EA0009EDB80002C0716609EEF8FFF8D4 -:1044E00012088D08CEABAE89CE8B5809CD118B1C2E -:1044F0008B0CCCFB000074B8EBCD408048CE1897F5 -:10450000300AFCCBFFF0F408150417892F88FC084B -:10451000000CEDB90000C0512FFA2F0B588ACF4183 -:104520003018F96800088F0AE3CF9080000074B853 -:104530002FFC4849A56C18091388A1D8B2885EFCE5 -:10454000000074B82FFC4848A56C30091808B089E1 -:104550005EFC0000000074B8EBCD40E0189E14979C -:104560001295587BE08B002C496AF6C8FFFFA568BE -:10457000F408000C1989EDB90001C1F0F608150422 -:104580001296F4080008A1B6F60915012FF9F409EE -:10459000093E740AB8869157FC0A000A913A5805F8 -:1045A000F9BC0001F9B90104EDD9E138F9F81E00B0 -:1045B000F9BC0101E3CD80E0E3CF80E0E3CFC0E0D0 -:1045C000000074B848387019700C121C5EFC0000B2 -:1045D000000074B85EFC300899085EFC1899780CED -:1045E000580CF9B80001F3F80A005EFC300899088D -:1045F0005EFC300899085EFC5EFC5EFC5EFC5EFCC6 -:10460000D401580BC110F80B000B300A487E7C090E -:10461000F40900092FDAF208141FB98810091019DB -:1046200018C9163CCF51D802000074B85EFD5EFF79 -:104630005EFF5EFF5EFF3FDC5EFC78082FF89908A6 -:104640005EFCD401780820189908C020D80A5D1BA8 -:10465000DA0A301899085EFCD401F01F0002D80273 -:1046600080016D6CEBCD406048784889F5DBC01067 -:104670001895189B7006720C5D160A9CF01F0004BA -:10468000E3CF906000007540000074B4800091E8B2 -:10469000D401E06A0088300B485CF01F0006F01F70 -:1046A00000064868300C9118910CD802000074B8CC -:1046B000800091D0800146C000008B545EFCD7037F -:1046C000D401F01F0011F01F0011301B4909169C86 -:1046D000490AF01F00114919491A301B303CF01FDC -:1046E000000EF01F0010300A301BE06C00F0F01FCD -:1046F000000EF01F000E300A302C149BF01F000C2F -:10470000D80A0000800148C0800147888003B79024 -:10471000800146BC800148548003B794800157A4AF -:104720008001499C800147E0800149F480014730C5 -:104730004828F00C092B5EFC00007548EBCD40E0EA -:104740004905189716966A085808C0205D1848E869 -:10475000F007032C580CC061C088F0061800C09008 -:104760002F8C19885808CFA16A085808C080C00843 -:1047700078193028F0091800FE9BFFF8E3CD80E09F -:1047800000007544000075485EFCD703EBCD40FC8B -:104790004935189630120A94EAC3FFF46A0858089B -:1047A000C0D068385808C19030185806CF805816C5 -:1047B000C0305808CF40E3CD80FC48976E28701970 -:1047C000703C700B5D196E2870296E188F29103996 -:1047D000EFF20A003008CEAB0697CF1B000084B47E -:1047E000EBCD40C018961497580BC24049789009F9 -:1047F000F6091900E088001BF60B00184949F20879 -:10480000002C781A74085808C171741E7428103E60 -:10481000C1507C283009951895099D369D07FD6B80 -:10482000001078089D18E3CD80C0307B305CF01F0D -:104830000009E3CD80C0741ECEDB306B305CF01F0E -:104840000005E3CD80C00000000002200000755C80 -:104850008001473CEBCD408049281497129E581B9D -:104860005F8A9009F80919005FB81468C130F80C24 -:10487000001AF60B0019F4CCFFFF48BB48B8F60A43 -:10488000002AF0090029952EF60C09299507E3CD99 -:104890008080302B305CF01F0006E3CD808000006C -:1048A000000002200000755C000084B48001473CD9 -:1048B000D401307B305CF01F0002D8028001473CFD -:1048C000EBCD404030084AB9B2884ABA940858083B -:1048D000C4D04AA95C784AABF00800184A9EA36885 -:1048E000300C2F88F6CAFFF4F20800082F89930CC9 -:1048F000F34AFFFCF34EFFF82F491039CF91F6CE63 -:10490000FFE84A1A49EB301C970C972A971A14981B -:10491000F4C9FED42EC8F148FFF41238CFC1F54ACD -:1049200001342F4BF4CAFEC01C3BCEF1E06A00807C -:10493000300B496CF01F00164948F0C9FF902F0852 -:10494000F148FFFC491A1238CFB130064918F54634 -:10495000007C910A9116310A0C9B48FCF01F000C58 -:1049600048E80C9C9106E3CD8040485BCC9B00005E -:1049700000007598000002200000755C000084B4FF -:10498000800148B0000082340000759C800091D006 -:1049900000007630000076200000761C4848485918 -:1049A000485A91099119913A912A5EFC000002241B -:1049B000800149D4800149EC48484859485A911926 -:1049C0009109913A912A5EFC00000224800149D4A9 -:1049D000800149EC48494858311AEA1A4000143C11 -:1049E0005E085E19800149D480014A0C481C5EFCB7 -:1049F000800149ECD4013019300A303BFC1C4000E6 -:104A0000F01F0002D8020000800186C8EBCD408074 -:104A10004B373099EA194000123CC310E088001F60 -:104A200030B9EA194000123CC2A0C4233139EA1956 -:104A30004000123CC500E069078AEA198000123C78 -:104A4000C241761CF01F0027300A4A77149B314C74 -:104A5000F01F00260E9CE3CD80803019EA1940003B -:104A6000123CC320E08800153079EA194000123C5E -:104A7000C0603089EA194000123CC0713019300A18 -:104A8000303BF01F001B49B70E9CE3CD8080FC1922 -:104A90004000123CCFA130194978300AF149004456 -:104AA000304C149BF01F00110E9CE3CD8080301918 -:104AB000300A303B30ACEA1C4000F01F000D48D7F4 -:104AC0000E9CE3CD8080302B300CF01F000C0E9C30 -:104AD000E3CD808048470E9CE3CD808080014A0C66 -:104AE0008001DA2C800149D480014658800186C8B3 -:104AF000800152F0000087F480018390D401201DD2 -:104B00001A9CF01F0008C07040085818E088000682 -:104B1000F01F00052FFDD802F01F00042FFDD80262 -:104B200080015F4480015EDC80015EB4EBCD40F823 -:104B3000201DFEF805EA189716951496103AC3A0A2 -:104B4000FEF805E0103AC610FEF805DC103AC06029 -:104B50000C970E9C2FFDE3CD80F8E068018CEA18DD -:104B60008000103CE08000F7E068078AEA188000C7 -:104B7000103CE08000ADE0680186EA188000103C3F -:104B8000CE8176170E9CF01F0169F01F0169C0915C -:104B9000FEF805A0EEEA0000F0EB00006E29912976 -:104BA0000C97FEFA0592300BFEFC0590F01F016495 -:104BB000CD1BF01F015F1894C4D1E0680184EA188E -:104BC00080001037E0800185E08B00D2E0680107AB -:104BD000EA1880001037E08001A0E0680183EA183D -:104BE00080001037CB616A170E9CF01F0156E080E1 -:104BF0000230FEF905523048F34800440E9B334C16 -:104C00000C97F01F0152CA6BFEF4053CE0680112DC -:104C1000EA188000E8F300F8103CC540E08B006320 -:104C2000E0680107EA188000103CE08000F7E068C7 -:104C3000010DEA188000103CE080010DE0680105DC -:104C4000EA188000103CC851761C1497F01F0140F0 -:104C5000C81BFEF304F2E0680188EA188000E6F45D -:104C600000F81037E08001B0E08B00ABE068018312 -:104C7000EA1880001037E080018BE0680184EA18B0 -:104C800080001037E080016EE0680107EA188000BC -:104C90001037FE91FF5F6A18303CF13B000BF01FAC -:104CA000012D3019300A303B30CCEA1C4000F01F97 -:104CB000012A300AFEF70470149B301CF01F0127F4 -:104CC000C49B761C1497F01F0126C44B6A1CF01F6E -:104CD0000125300AFEF70490149B314CF01F011F90 -:104CE000C39BE068018AEA188000103CE08000CB9A -:104CF000E068078AEA188000103CCE90E068011551 -:104D0000EA188000103CFE91FF2576150A9CF01FE2 -:104D100001170BC93048F0091800E08001BBE08B97 -:104D2000019B3008F0091800E08001BF6738301996 -:104D300011EAF20A1800E08001DD0A9CF01F010C64 -:104D4000FE90FF08300A0C97305C149BF01F0103A3 -:104D5000C01B76170E9CF01F0107F01F00F5C4F171 -:104D60000E9B33DC0C97F01F00F9CF4AE068018AF4 -:104D7000EA1880001037E08000BDE068078AEA1872 -:104D800080001037E0800099E0680188EA18800010 -:104D90001037FE91FEDF6A170E9CF01F00F7C0A0CF -:104DA000F01F00F63069FEF8039EFEF60376F14927 -:104DB00000440E9B336C0C97F01F00E4CCBAE06803 -:104DC000018EEA1880001037E08000B7E068078A9B -:104DD000EA1880001037FE90FF7BE068018AEA182D -:104DE00080001037FE91FEB66A160C9CF01F00E49E -:104DF0001897E0800114FEF7032ACACA3099FEF81A -:104E000003460C97F1490044FEFA032C300BFEFCDC -:104E10000372F01F00CBC9EA76150A9CF01F00DA76 -:104E2000302B169CF01F00D9FEF702FCF01F00C0CB -:104E30001896E08100DD0A9B337CF01F00C40C9AB9 -:104E40003019303B30ECEA1C4000F01F00C3FE9FDD -:104E5000FE8276160C9CF01F00CE302B304CFEF7F5 -:104E600002C6F01F00CAF01F00B2E08000EC30194B -:104E7000300A303B310CEA1C4000F01F00B7FE9FA7 -:104E8000FE6A76150A9CF01F00BE1897E08000BAF3 -:104E9000300A302C149BF01F00B13078E9480044F0 -:104EA000F01F00A3FE91FE560A9B0C9733BCF01F27 -:104EB00000A7FE9FFE506A1CF01F00AA089AFEF78A -:104EC00002A6089B314CF01F00A5FE9FFE446A1706 -:104ED0000E9CF01F00B0C060FEF9026C3058F34821 -:104EE00000440E9B335C0C97F01F0098FE9FFE332E -:104EF0006A170E9CF01F00A2C0803069FEF80248BD -:104F0000FEF60220F14900440E9B33BC0C97F01FC3 -:104F1000008FFE9FFE206A1B337CF01F008C089AD6 -:104F2000FEF702043019303B30ECEA1C4000F01F61 -:104F3000008AFE9FFE106938301911EAF20A180043 -:104F4000FE90FE086A1CF01F0094FE91FE03189A62 -:104F5000189BFEF70246301CF01F0080FE9FFDFBF1 -:104F60006A150A9CF01F008B1897E08000874F2A73 -:104F7000300BFEFC022AF01F00721897E08000AE92 -:104F800030580C97E7480044FE9FFDE56A150A9CDF -:104F9000F01F006C1897E08000956938301911EA0D -:104FA000F20A1800FE91FDD64E3A300B4FDCF01F8E -:104FB00000641897E08000A930480C97E748004447 -:104FC000FE9FFDC96A160C9CF01F006B1897C2600B -:104FD000F01F006A30684D37E7480044FE9FFDBB74 -:104FE000EACBFFFC301A30DCF01F005C3019300ACD -:104FF000303B30CCEA1C4000F01F0057FE9FFDAB59 -:10500000F01F004BFE90FF4E0E9A3019303B30CC13 -:10501000EA1C4000F01F0050C44B303B30CCEA1C6F -:10502000400030190E9AF01F004C0DEB304CF01F71 -:1050300000490E9A0E9B301C4BB7F01F0048FE9F94 -:10504000FD8A0C9B33ACF01F0041FE9FFD844D3662 -:10505000FE9FFDD63068F0091800FE98FE693828DA -:10506000F0091800FE91FD76300A0C97325C149B13 -:10507000F01F003AFE9FFD6F189A303B30CCEA1CBF -:1050800040003019F01F0034EB3B000D303CCD0BDD -:105090003008FACBFFFC0C9716F8301A30ECF01FF2 -:1050A000002FFE9FFD580A9CF01F003FFE90FD520E -:1050B000300A0C97306C149BF01F0028FE9FFD4BAC -:1050C0000BCB302CF01F00230E9A0E9B301C4B375D -:1050D000F01F0022FE9FFD3F189A303B30CCEA1CA7 -:1050E00040003019F01F001CEB3B000D301CCA0BB8 -:1050F00048D7F01F000FFE91FF750A9B338CF01FFD -:105100000013FE9FFD28189A303B30CCEA1C40006B -:105110003019F01F00110BCB301CC8AB800152F0CE -:10512000800151A8800156388001D9AC800185E406 -:105130000000763880018E9C8001E03C8001EF20E9 -:105140008001E88C000087F480016D6C8001E2D45E -:1051500080018390800186C8800146588001E00864 -:105160008001DA2C800149D48001E2FC80016D4A83 -:105170008001D9C88001E4D080014AFC8001E4307C -:105180008001E0D48001D9FC800183A08001D9E8AE -:105190008001E81C8001E3DC80014A0C8001E7B853 -:1051A0008001E58880016D48EBCD40C04C96189792 -:1051B0003138EA184000103CE0800087E088002485 -:1051C000E068010DEA188000103CC150E088004002 -:1051D000E0680115EA188000103CC0D0E068018A40 -:1051E000EA188000103CC070E0680112EA188000E4 -:1051F000103CC3910E9C4B7AF01F003718960C9C04 -:10520000E3CD80C03018EA184000103CC510E0889B -:10521000002E30D8EA184000103CC1003108EA18CE -:105220004000103CC3F030C8EA184000103CC1B147 -:10523000301C302BF01F00290E9C3019300A303BF7 -:10524000F01F00274A760C9CE3CD80C0E068010582 -:10525000EA188000103CCCF0E0680107EA188000F2 -:10526000103CCC900C9CE3CD80C0E04C008ACC304C -:10527000FC184000103CCF71307949B8300AF14930 -:105280000044149B302CF01F0019300A30FC149B92 -:10529000F01F0016302B300CF01F00100C9CE3CDDB -:1052A00080C0303C302BF01F000D0E9CCC7B48E9B9 -:1052B0007298ABC8300A9398149B303CF01F000BD7 -:1052C0000C9CE3CD80C048A60C9CE3CD80C00000C0 -:1052D000800151A880014B2C800183A0800186C8E9 -:1052E00080015638000087F480014658800149D477 -:1052F000D421FACD00E4FEF602E21898FEF502E0B1 -:10530000ECF700F83109EA194000123CE08000D5C2 -:10531000E08B003630A9EA194000123CE08000C260 -:10532000E088005330C9EA194000123CE08000A830 -:10533000C6A330D9EA194000123CE080011930F9C7 -:10534000EA194000123CC3D1FEFA0298300BFEFC71 -:105350000296F01F00A61896C341189BFEFA02841D -:10536000FEFC028CF01F00A1304C301BF01F00A18E -:105370000C9A0C9B301CF01F00A0C238E06901841D -:10538000EA198000123CE0880011E0690188EA19FE -:105390008000123CC100E08B00A5E0690186EA199B -:1053A0008000123CC0E1C078E0690183EA19800006 -:1053B000123CC363109CFEFA0226F01F0090189561 -:1053C0000A9C2C7DD8223079EA194000123CC7C0D3 -:1053D000E08800973089EA194000123CE08000CF55 -:1053E0003099EA194000123CCEC14FEA300BFEFC66 -:1053F000020EF01F007E1894E08000CF3048ED4888 -:105400000044CDFB4F7A300B4FECF01F0078CD916C -:10541000189A189B4FC5301CF01F0077CD2BE06900 -:105420000107EA198000123CCC60E0690115EA1915 -:105430008000123CC1203139EA194000123CCC11E5 -:10544000300A301C149BF01F006C300A304C149B47 -:105450004EE5F01F0069CB5B6F38301911EAF20A94 -:105460001800C72076160C9CF01F00690C9CF01FDA -:1054700000694E98580CF0051710CA3B303B3019A4 -:10548000300AF01F0066302B303CF01F005A300A03 -:10549000301C149BF01F00584E150A9C2C7DD822FE -:1054A0004D0A300B4DFCF01F00511897C3B0305817 -:1054B000ED480044C86B303B3019300AF01F0057EC -:1054C000302B304CCE3B6C9BE21B0040C2414C5A0F -:1054D0004D5CF01F0046C9D03028ED480044C71B82 -:1054E000E069018AEA198000123CFE90FF65E069DC -:1054F000018EEA198000123CFE91FF64C5CBFC19B5 -:105500004000123CFE91FF5E300A149B149CF01F79 -:10551000003AC57B300A4BC5149B301CF01F003687 -:10552000C50B30481A9BBAE8336CF01F00400E9A46 -:105530003019303B30ECEA1C4000F01F00384B893A -:105540004BB89119C3EB76170E9CF01F00310FC9B1 -:105550003068F0091800FE9BFF354B15F01F003531 -:10556000C2A10E9B338CF01F0031C2BB4AC530195B -:10557000300A303BF01F0029C24B49AA300B4AAC1D -:10558000F01F001ACAA1304849F5BAC81A9B334C1B -:10559000F01F0026C16B306AEECBFFE2FACCFFFCB5 -:1055A000F01F002530481A9BBA68335CF01F001FBB -:1055B000089ACBFB3019300A303B30CCEA1C400053 -:1055C000F01F00160FCB305CF01F000A300A301CB1 -:1055D000149BF01F0009CF5A000087F4800152F09D -:1055E00080018E9C8001E7548001EF208001E03C27 -:1055F000800183908001465880014B2C8001E58812 -:105600008001DA5480014A0C800149D48001E2FC17 -:1056100080016D48800151A8800186C880015638FC -:105620008001E7B88001EA8C80016D6C00000224E3 -:10563000800185E48002E736EBCD40804C9731084D -:10564000EA184000103CC6F0E088001DE068018CBC -:10565000EA188000103CC3B0E088002EE068019397 -:10566000EA188000103CC440E0680194EA18800009 -:10567000103CC2714BC7761CF01F003C0E9CE3CD62 -:10568000808030C8EA184000103CC400E088001D4B -:1056900030D8EA184000103CC21030E8EA18400048 -:1056A000103CC0F14B2A300B4B2CF01F00330E9CEA -:1056B000E3CD8080E0680186EA188000103CC0706D -:1056C0000E9CE3CD8080E04C008ACFB14A5AF01F97 -:1056D000002B18970E9CE3CD8080F01F00294A4ACA -:1056E000300B4A8CF01F00240E9CE3CD8080761C8A -:1056F000F01F0025F01F0025C0514A5B33CCF01F7E -:10570000002549970E9CE3CD80804A39731858983C -:10571000CD803098496AF3480044300B49FCF01FB3 -:105720000016CCFB49C973185888CCB03088F348B0 -:105730000044F2F900F87338301911EAF20A18003F -:10574000C0A03019300A303B30DCEA1C4000F01FAA -:105750000014CB7B486A300B492CF01F0007CB1B91 -:105760008001563880014A0C8001DA4680018E9C07 -:105770008001E03C8001EF2080014B2C80015E34F1 -:105780008001DA448001DA48800185E4000076383F -:1057900080016D6C000087F48001E0D4800186C830 -:1057A0008001E094EBCD40F84A37189416956E18B6 -:1057B0006E090E930E96C118300B301CEA1C400087 -:1057C0005D19300B6C39FC1C40005D196C388D285C -:1057D0006E186E091238C2001039C190300B301C9F -:1057E000EA1C40005D19300B6E19FC1C40005D196D -:1057F0006E188F086E296E381039CDF10A9B089CFF -:105800005D19873C6629123CCF71CE3B0A9B089CF0 -:105810005D198F1CCF0B5805C0706A085818C060FE -:105820000A9CF01F0006E3CD80F8EACCFFFCF01FD5 -:105830000004CF7B00000224800091E88001D3A8FF -:105840004878F14C00F8580CF9F81004F9B9010146 -:10585000F1D9E108F9F81A045EFC0000000087F4B1 -:10586000EBCD40C04948FAC6FFF4F0F700F4580702 -:10587000C051C1E8F8C70008C1B0EECAFFDC740827 -:10588000204D502815C9FB69000C15D8FB68000D88 -:105890006C0850080DC9BAC90DD8BAD8F01F000756 -:1058A0002FCD580CC0516E2C580CCE5118970E9C11 -:1058B000E3CD80C0000087F480018898D40149D9E5 -:1058C000F2F800F41838C0B078285808C2B0784808 -:1058D000201899482F8CF01F0018D802580CF9F89E -:1058E0001004F9BA01FFF1DAE108F9F81A043008F6 -:1058F000F34800F448FA78285808C180F0C9000835 -:10590000F54900F4CE8072482FF89348F4F900F47A -:105910005809CE10724820182F8C9348F01F0006AB -:10592000D80278385808CD41D802F54800F4CD3B6C -:10593000000087F48001F2A0D4014989F2F800F058 -:105940001838C0A078085808C240784820189948EC -:10595000F01F0013D802580CF9F81004F9BA01FF2F -:10596000F1DAE108F9F81A043008F34800F0780A8F -:10597000F34A00F0580ACED074482FF89548487979 -:10598000F2F900F05809CE50724820189348CE1B07 -:1059900078185808CDB1CDFB000087F48001F2A043 -:1059A000EBCD40801897580AC2C07858F608010815 -:1059B0001438E08800274948F0FB00F8580BC190E4 -:1059C000F8CAFFDC15D8204DFB68000D740950297A -:1059D00015C8F6CAFFDCFB68000C7408500815C92E -:1059E000BAC915D8BAD8F01F00092FCD580CC091EC -:1059F0000E9CF01F00070E9CF01F0006E3CF908066 -:105A0000E3CF8080000087F48001889880015938B6 -:105A1000800158BCD4214A141895E8F700F05807C3 -:105A2000C27079383006704AC02810976F387049B4 -:105A30001439E08A00086E080E965808CF710E9649 -:105A400010970A37C0D06A085808C0B00A9CF01FE7 -:105A500000145806C1300A9B0C9CF01F0012D8227B -:105A60006A185808CF416A482FF88B48CF3BE94C59 -:105A700000F078482FF89948D8220A9B0E9CF01F16 -:105A800000090E9CE94500F0F01F00050E9B0A9CE2 -:105A9000F01F0004D8220000000087F48001F2A06B -:105AA0008001F28CEBCD40C04A48FAC7FFF4F0F613 -:105AB00000F05806C051C3D86C065806C3A06D3814 -:105AC000707C2F4CF8E80000212DFAE90024F8EA58 -:105AD0000008FAEB002CF8E80010FAE90034F8EAC4 -:105AE0000018FAEB003CF9380020FB680044F93953 -:105AF0000021FB690045EEE80000FAE90000EEEA4B -:105B00000008FAEB0008EEE80010FAE90010EEEAEF -:105B10000018FAEB0018EF380020FB680020EF397E -:105B20000021FB690021F01F00062EED580CCC501F -:105B30000C9CE3CD80C00000000087F48001891038 -:105B4000EBCD40E0205D7608502817C9FB69000CBA -:105B500017D81697FB68000DF8CBFFE2306A18964D -:105B60001A9CF01F0034F01F00342FCD580CC05188 -:105B7000300C2FFDE3CD80E06E7C2F4CF8E8000068 -:105B8000212DFAE90024F8EA0008FAEB002CF8E8E5 -:105B90000010FAE90034F8EA0018FAEB003CF93892 -:105BA0000020FB680044F9390021FB6900456D388D -:105BB000707C2F4CF8E80000FAE90000F8EA0008D1 -:105BC000FAEB0008F8E80010FAE90010F8EA00180B -:105BD000FAEB0018F9380020FB680020F9390021A1 -:105BE000FB690021F01F00152EED580CCC20320B64 -:105BF000300CF01F00131895CBC0189A0E99491B52 -:105C0000F01F00110BF93008F0091800EDF800132F -:105C1000F1F90807EBF90E07FACCFFFC6D3818D83C -:105C20001A9CED45004CF01F0009301CCA3B0000D7 -:105C30008002E73680018898800189108001D8DCD5 -:105C40008001D3EC8001AD408001D3A8EBCD40C0F2 -:105C500049C649D86C09700A1439C05530070E9CE2 -:105C6000E3CD80C0350CF01F00191897CF906C0859 -:105C70002FF8350A8D08300BF01F0015320B300C51 -:105C8000F01F0014EF4C004C1898C16030084929EF -:105C90008F680E9CF30A017C8F28EF5A001CEF6876 -:105CA000002A8FF88F488F58EF4800408F188F08D0 -:105CB0008F38E3CD80C00E9C1097F01F0008CD0BED -:105CC000000076440000025880009200800091D0CD -:105CD0008001D8DC00000260800091E8EBCD4080BC -:105CE000189778485808E08A0004E3CD8080793816 -:105CF0005808C0402B4CF01F000648697208201855 -:105D00000E9C9308F01F0004E3CD80808001D3A88F -:105D100000007644800091E8D4014899F2FC00F834 -:105D2000580CC0A07848201899483008F34800F86B -:105D3000F01F0004D802F34C00F8D802000087F4EA -:105D400080015CDCEBCD40F84B131894E6F700F8CB -:105D50005807C060189B0E9CF01F002EC1D1E6F7BB -:105D600000F05807C4203006C1285806C0706F38AC -:105D70006D39704A7248103AC064E6F800F80E387F -:105D8000EE0617106E070E955807C0900E9C089BE4 -:105D9000F01F0020CEB00E9CE3CD80F8F01F001E57 -:105DA00058065F18580C5F0918971069EA0918001F -:105DB000C201089B306AEECCFFDCF01F0018089B84 -:105DC000306AEECCFFE2F01F00156F3A0899149C80 -:105DD000493BF01F001430080E9C8F088F18F01FED -:105DE00000120E9CE3CD80F8F01F000B1897CE2B0D -:105DF0000C9CF01F000E0C9CF01F000D0C9CF01F63 -:105E0000000DF01F00051897CD51CC6B000087F4F2 -:105E100080015B4080015C4C800091DC8001D3EC10 -:105E20008001AD4080015A1480015938800158BC6E -:105E300080015CDCEBCD40E04905EAF700F458074F -:105E4000C0D1C158F0C600080E9CF01F000D0E9C7A -:105E5000F01F000C5806C0B00C976E285808CF31C0 -:105E60000E9CF01F00070E9CF01F00063008EB4848 -:105E700000F4E3CD80E00000000087F4800158BC0E -:105E800080015CDC580CC04078185B98C110489ABF -:105E900074991298EDB90001F9BC0101F9BB001029 -:105EA000F3DBE038F5F80A09F9BC00015EFC5EFDA1 -:105EB000000087F4489A7498109CF0091604E21CBC -:105EC0000002F9BB0110F1DBE138F5F81A09F9B865 -:105ED0000101F3D8E12C5EFC000087F4489A749825 -:105EE000109CF0091604E21C0002F9BB01EFF1DB83 -:105EF000E128F5F81A09F9B80101F3D8E12C5EFCA4 -:105F0000000087F448887099129CA589E21C000261 -:105F1000F9BA0101F3DAE148F9B90101F1D9E12C4B -:105F20005EFC0000000087F418994868709CE21C31 -:105F30000002F1F8103FF3F81A00F9BC01015EFC11 -:105F4000000087F418994868709CE21C0002F1F880 -:105F50001041F3F81A00F9BC01015EFC000087F45F -:105F600018984859729CE21C0002F3F81A41F9BCD7 -:105F700001015EFC000087F44839300C7298A7C814 -:105F800093985EFC000087F44839300C7298A5D8CD -:105F900093985EFC000087F4D401E06A0100300BA6 -:105FA000482CF01F0003DA0A00007648800091D0E8 -:105FB000EBCD40C04A0A18967498109CE21C00026F -:105FC000C1D0F4F700F85807C1801099E2190020F9 -:105FD000C270A5C8A7A8F4FB00BC95983009497AFF -:105FE000E06CEA60F01F00163008F0061800C100EF -:105FF0003018F0061800C040301CE3CD80C0311CC2 -:10600000EECBFFE2306AF01F000FE3CF90C0312CDF -:10601000EECBFFE2306AF01F000BE3CF90C0A5B8D3 -:10602000F4FB00B89598E06CEA60487AF01F000431 -:10603000CDCB0000000087F480015F7880014558D7 -:106040008001465880015F88D401F01F0002D80209 -:1060500080018040D40148687098E2180002C03185 -:10606000109CD802F01F0003D8020000000087F443 -:10607000800183FCD40148687098E2180002C031A6 -:10608000109CD802F01F0003D8020000000087F423 -:10609000800183D8D431FACD0188E06A0168300BE1 -:1060A0001A9CF01F002CFAC6FE541A901A9CF01F7E -:1060B000002A581CC03029EDD832FAC5FFF8401824 -:1060C000F0081016EA0800081035C4120A97FAC43E -:1060D000FE98ECC1FFF8C09840182EA7F0081016E3 -:1060E000EA0800081037C3326C08204D50280DC94B -:1060F000FB69000C0DD80E9BFB68000D306A1A9CE2 -:10610000F01F0016F01F00162FCD580CCE60EECBFE -:10611000FFFA310AFACCFE88F01F0010E2E8000016 -:10612000310AE8E90000089BE2E20008FACCFE88A8 -:10613000E8E30008F01F000BCD01189B316A0E9CAC -:10614000F01F0004009CF01F0008CB6B29EDD83A2B -:10615000800091D0800160748002E73680018898C9 -:106160008000917C80016054D431FACD018CE06ACA -:106170000168300BFACCFFFCF01F0050FAC5FE504E -:10618000FACCFFFCF01F004E581CC03029DDD8327D -:10619000402858F8E088007FF0081016FAC1FFF494 -:1061A000E20800081031E0820087E06801685018BA -:1061B000EACBFFF8FAC6FFF002973004FAC0FE946B -:1061C000500BC0C85804C36040282EA7F008101612 -:1061D0002EA6E20800081037C4926A08204D502805 -:1061E0000BC9FB69000C0BD80E9BFB68000D306AD5 -:1061F0001A9CF01F0034F01F00342FCD580CCE3005 -:10620000ECCBFFFE310AFACCFE84F01F002E400BCF -:10621000F6E80000310AE0E90000FACCFE84F6E27C -:106220000008009BE0E30008F01F0028CB005804A2 -:10623000CCC10F89E8091800CC810F98F20818002A -:10624000CC410FA9F0091800CC010FB8F2081800D2 -:10625000CBC10D89F0091800CB810FD8F2081800C6 -:10626000F9B40100EE041700CB0B5804C2400A9B9E -:10627000306A089CF01F0013EACBFFF8310AE8CC23 -:10628000FFFAF01F0010FACCFFFCF01F001129DD0F -:10629000D832F00A1110FAC1FFF4F40A1016E2081D -:1062A000000C300BF01F00053108E0690168502830 -:1062B0005019C7FB3FDCC6BB800091D080016074E1 -:1062C0008002E736800188988000917C80016054CC -:1062D000EBCD40C0208DBACBBA8A189B4968709C20 -:1062E000E21C0002C06118970E9C2F8DE3CD80C088 -:1062F0003008FAC6FFF8504850281A99FACAFFFC2D -:106300000C9CF01F000EC111189740285808C0407F -:106310000C9CF01F000B404C580CCE70F01F000975 -:106320000E9C2F8DE3CD80C00C9CF01F0007581CE5 -:106330005F07CECB000087F48001E1308001D3A855 -:10634000800091E880018E9CEBCD40C0201D491754 -:1063500018966E9CE21C0002C0412FFDE3CD80C068 -:106360001A9CF01F000DEF4600FCEEF801105808D3 -:10637000C051301C2FFDE3CD80C0EECCFEECEF3AD7 -:10638000011BEF3B011AF01F0005301CCF4B000032 -:10639000000087F4800177A4800162D0EBCD4080BB -:1063A000201DBA8C48C76E98EDB80001C0402FFD83 -:1063B000E3CF808030181A99300A308B487CF01F68 -:1063C0000008581CCF511B88EF4801202FFDE3CD5A -:1063D00080800000000087F48003B7A08001776C04 -:1063E000D401201D48B91898729CE21C0002C0E03C -:1063F000300AF368004C308BFAC9FFFC486C12F885 -:106400003018F01F0006581C5F0C2FFDD80200004A -:10641000000087F48003B7A88001776CD401203D89 -:10642000BA8C496A749CE21C0002C0312FDDD8028C -:106430001B8B3038F00B1800E089001DE06832003B -:10644000EA18312EE069352EEA19312EFAE90004F6 -:10645000F4F800F8F3DBB008300A5808F1F91A0F25 -:10646000308B30181A99FACCFFFCF01F0005581C2D -:10647000CDE03FECCDCB0000000087F48001776CCD -:10648000D421206D4A0618976C98EDB80001C040E1 -:10649000300C2FADD822584C5FB8E04C00FF5F198C -:1064A0001268C0303FECCF6B300814995028169A10 -:1064B0005008189B1A951A9CF01F0014CEA01A9C25 -:1064C000F01F0013400818945808C0401A9CF01F91 -:1064D0000011402C580CC030F01F000F5814CD9103 -:1064E0006C98EDB80007C0C15837E08B000AEE0881 -:1064F000150648A9300A1009089C930ACCBB301C29 -:10650000CC9B0000000087F48001E1A480018E9CF8 -:106510008001D3A8800091E800007648EBCD40C010 -:10652000202D496718966E98E2180002C2103FF8B5 -:10653000FACAFFFEBAF8BAA8BAB8BAC8BAD8BAE85E -:10654000300BF01F000F6E98EDB80007C0E1583611 -:10655000E08B000CEC081506300A48A9301C100925 -:10656000930A2FEDE3CD80C02FEDE3CF90C0109CB8 -:106570002FEDE3CD80C00000000087F4800164802F -:1065800000007648EBCD40C0202D49F66C9CE21C03 -:106590000002C2703FF8BAF8BAA8BAB8BAC8BAD8F6 -:1065A000BAE8ECFB00F8580BC260F6CCFFE2303AD8 -:1065B000300BF01F0016FAC7FFFE301CF01F00144E -:1065C000303B0E9A300CF01F00136C99300B129870 -:1065D000ED4B0110A3D88D98EDB90007C050301CC9 -:1065E0002FEDE3CD80C0E06A010048BCF01F000B36 -:1065F000301CCF7BFAC7FFFE303A0E9CF01F000321 -:10660000CDDB0000000087F4800162D08001651CB2 -:106610008001648000007648800091D0D43120DD74 -:10662000FB690010FB68000CFAC9FFA8FEF7023CEA -:1066300018956E981696149272307201E218000244 -:1066400072147223C041300C2F3DD832E04B002031 -:10665000E08800043FFCCF9B584CE08B002158DBC6 -:106660005FBA301BFB380010F60818005F09126A89 -:10667000C030580CC1413078FACCFFD4FB680033ED -:10668000F01F007B3008303C50785058F01F0079E4 -:1066900058D6C070E08B00315856C0303FECCD5B0F -:1066A00030683019FB680033EF49011CFACCFFCD8C -:1066B000F01F0071501C1AD31AD41AD1FB38001CD9 -:1066C00004991AD80C9AFB380043FACCFFDC0A9BD9 -:1066D000F01F006A2FCD580CC1B140585808C05067 -:1066E000FACCFFECF01F0066407C580CCAD0F01FBB -:1066F0000065300CCAAB5906C6C0E0460020CCF19C -:1067000030283029FB680033EF49011CCD0BFACC4F -:10671000FFECF01F005D500C40585808C050FACCF8 -:10672000FFECF01F0057407C580CC030F01F0055A4 -:1067300040085818C8915800EFF81009F9B9010835 -:10674000F1D9E138EFF81A093009FB380010F208E6 -:106750001800C051F9D5B008F01F004C6E98EDB884 -:106760000001C0514C18F0F800FC501840185808AF -:10677000C080FB3A0010FB3B000C089CF01F00445B -:10678000306A089BEECCFEECF01F0042301AFACBC8 -:10679000FFF4EECCFEE6F01F003FEECCFEE5301A33 -:1067A000FACBFFF0F01F003B3018EF480110FB68F8 -:1067B00000326E9C4AD7EDBC0001C120EDBC000741 -:1067C000C061FB38000C50285845C1E1301CC3DBC8 -:1067D00030483039FB680033EF49011CC68B300864 -:1067E0004ADB1099109A109CF01F002CC3401ADC51 -:1067F0003018FAC9FFCA300A308B4A9CF01F0029B2 -:106800006E9C2FFDCDCBEA0915064A780C9AF0094B -:106810000007049BEF650026EF560024EECCFFFC3A -:10682000F01F001C089BEF610036306AEECCFFD8E9 -:10683000F01F00185803C110069B308AEECCFFD21F -:10684000F01F001440288FF0EF68003830188F08D0 -:10685000109CCFBA6E9CCB3B069B308AEECCFFD20D -:10686000F01F0012CF0B0000000087F4800177A416 -:106870008001EF6C80017BD88001E2148001D3A8F5 -:10688000800091E880018E9C8001641C800162D0B0 -:10689000800091DC80015E8480016AF48003B798F7 -:1068A0008001773000007648800091D0EBCD40C069 -:1068B000300749A60E98A7682FF7EC08000B76085A -:1068C0005808C0F10E985847CF714957EF3C004C1B -:1068D000F01F0014EEFC0100F01F0013E3CF90C086 -:1068E00076F8F6C9FFD2F73C00261AD8F6C8FFD8CA -:1068F0001AD91AD8F7390036F6CAFFFC1AD9F73870 -:106900000038F7390027F71B0024F01F00082FCDAF -:10691000581CCD90E3CF80C000007648000087F47B -:10692000800163E0800163488001661C7808301CA8 -:10693000F80A094C201C106C5EFCD70348787008DC -:106940005808C0901838C041C078103CC05070B88A -:106950005808CFC15EFD5EFF0000778C189A48F89A -:10696000709CE21C00025E0C70A8EDB80000C03004 -:10697000305C5EFC48AC780B583BE089000D300978 -:106980004888F00B003891189109950BF6C8FFFF65 -:1069900099085EFF3FDC5EFC000087F4000077880A -:1069A0000000776848D972A8EDB80000C1313008FE -:1069B000780A99D848ABF60A003A741999E974181C -:1069C000F8C9FFCC910C7808301CF60800389119F2 -:1069D0005EFC305C5EFC0000000087F4000077681D -:1069E000EBCD40C0189778B95809C18078C893C8D2 -:1069F0006EC891096E3C580CC050F01F000B300857 -:106A00008F3833CA6EA635AB0E9CF01F00080C9B66 -:106A10000E9CF01F0007E3CF80C078C94858911939 -:106A200078B9CE7B800091E8800091D0800183B05E -:106A30000000778CEBCD40801897580CC180789877 -:106A40005D1848F972095809C051C11872B958093E -:106A5000C0E01237CFC16E785808C0B06E3C580CF9 -:106A6000C060F01F000830088F588F38E3CF908047 -:106A70000E9C301BF01F0004E3CF90800000778C49 -:106A8000800091E8800169E0EBCD4080496972A8FF -:106A9000EDB80000C040305CE3CD8080493870091B -:106AA0001839E08A001E4928F00C00376E09580991 -:106AB000C15072DA580AF3F8000EEFF80A01F3FA3F -:106AC000000DF3F8100EF5F81A0E72E8129C910AF8 -:106AD000F01F00086E095809CED1E3CF90803FCC5B -:106AE000E3CD8080000087F400007788000077689D -:106AF00080016A34EBCD40F81897169614951294DD -:106B0000109333CCF01F000CC1403008990799B89E -:106B10009938995899889996994599649973487ABA -:106B2000301899A8741999C9930CF8C8FFD495180E -:106B3000E3CD80F8800092000000778CD401202DF6 -:106B4000500A48C972A8EDB80000C040305C2FED73 -:106B5000D80248981A99F00B032A3048FA08000B1B -:106B6000F01F0006581CF9BC0001F9BC01FECF0B58 -:106B7000000087F4000077488001F1D8EBCD40C0D9 -:106B8000201D4AC618976CA8EDB80000C441580CE7 -:106B9000C3F0789B580BC3C0780A580AC3954A695A -:106BA000F20A033850085808C061C1A870D85008CC -:106BB0005808C1601037CFB1F40815036EDA580ACF -:106BC000F3D8E009EFF8000EF3F80A01EFF8100E21 -:106BD000F5F81A0E400870DA70E9930A6E9B3F9838 -:106BE0008F18580BC0300E9C5D1B6E8B581BC0500D -:106BF000582BC150580BC0516E2A1A9CF01F000F21 -:106C00000E9C301BF01F000E2FFDE3CF90C02FFD18 -:106C1000E3CF90C0305C2FFDE3CD80C0ECF801B82D -:106C20000E38CEF130094838F14901B8CEAB00003A -:106C3000000087F40000776880016B3C800169E008 -:106C4000D40148C9169E72A8F1D8C001C031305C89 -:106C5000D8024898304A76A9F00C032C1ADAF6C804 -:106C6000FFF833CAF01F00052FFD581C5F0CD80237 -:106C7000000087F4000077488001F164D431204D92 -:106C800030084931189650285018FAC5FFF4FAC256 -:106C9000FFF802901A93FAC4FFFCC098E006032A9A -:106CA000F01F000C0E9B401CF01F000B3049049B92 -:106CB0000A9AE206032CF01F0009304818970A9937 -:106CC0001A9B089C5817CEB02FCDD83200007748B9 -:106CD0008001F1D880016B7C8001F0B4EBCD40E005 -:106CE000201D49356AA8A1A8300A49298BA8149704 -:106CF000930A14984906EC08002C2FF748FA303B09 -:106D0000F01F000F581CC0F10E985887CF5148D87B -:106D1000300991189109301B1A9CF01F000B2FFDB0 -:106D2000E3CD80E06AA8A1C88BA8CF2B000087F430 -:106D300000007788000077488001692C8001F05CB2 -:106D40000000778C8001695C5EFD5EFFEBCD4080CA -:106D5000189778785808C030788C5D180E9CF01F12 -:106D60000003E3CD80800000800091E8D4314B1017 -:106D70001895169260095809C58030047258721926 -:106D80000A38F7B400FF5809CFA10891E80C1502A2 -:106D9000F01F00291893C46060075807C2303006FE -:106DA000C0486E175807C1E06E580A38CFB10E9C24 -:106DB000F01F0022E60609276E485808C0F06E1939 -:106DC0005809EFF80002E1F80A01EFF90001EFF8C5 -:106DD0001002F3F81A026E2891092FF66E17580761 -:106DE000CE415804C1A006953006C0380836C154BB -:106DF0006A07049C6E686E8B5D18491B0E9CF01F21 -:106E000000112FF62FC56E485808CF100E9C48CBA6 -:106E1000F01F000C0836CED5069CF01F000B029C1C -:106E2000D8321891029CD83212941291CB0B0000E8 -:106E300000007794800092008001463A80016D4CFA -:106E400080014642800091E8EBCD4080324CF01F3B -:106E500000081897C080324A300BF01F00060E9CC5 -:106E6000F01F00050E9CE3CD8080000080009200A2 -:106E7000800091D080014652EBCD40FC18961695CB -:106E80001494129310924077F01F000AC100995693 -:106E900099359964998799739942487A3008991875 -:106EA00074199929930CF8C8FFFC9518E3CD80FC60 -:106EB00080016E4800007794D431FACEFFDC189739 -:106EC00016901491129310927C157C04580CC26099 -:106ED00078095809C26049A66C085808C051C09882 -:106EE00070185808C0601039CFC13018109CD832C3 -:106EF000F01F0014C13099509931996399859972A6 -:106F00009944300899186C199929930CF8C8FFFC1A -:106F10008D188F0C3018109CD8323008109CD83245 -:106F200008981AD50499069A029B009CF01F000647 -:106F30002FFD580C5F188F0CCDAB0000000077942C -:106F400080016E4880016E78EBCD40404856ECCC15 -:106F5000FFF8F01F000530088D168D08E3CD804046 -:106F600000007794800145D6EBCD40807847785A71 -:106F70006E18103AE0880004E3CF8080783B6E0CF6 -:106F8000F01F000B6E285808C0406E1B6E0C5D1879 -:106F90006E3CE04C002BC050300A149BF01F0005E3 -:106FA0000E9CF01F0005E3CF90800000800091DC74 -:106FB00080014658800091E8EBCD40C0203D30086C -:106FC00018979928990814961A9C308AF01F001176 -:106FD000FACBFFF80E9CF01F00102FED580CC101EA -:106FE0006E085808C0400E9CF01F000C6E2C580C08 -:106FF000C040F01F000B300C2FFDE3CD80C05806C1 -:10700000FBF81000EDF81A002FFDE3CF90C0000050 -:107010008002E7368001DE6C8001D3A8800091E811 -:10702000EBCD40C0189778185B98C0C0783B580BE0 -:10703000C17078465806C04078685908C050E3CF00 -:1070400090C0E3CF80C0785A590AE08800153FF815 -:107050008D28ECCCFFF4F01F000CE3CF90C0784CEF -:10706000580CCEE06E685908CEB12F4CF01F0006C8 -:10707000E3CF90C06C0CF01F00056E5830198D18CE -:107080008D29CE8B8001A25C800091DCEBCD40E0AD -:10709000201D1697E04C0081E0800088E08A0027E0 -:1070A000E04C0083C2F0C2B4760A1A9C300BF01F89 -:1070B0000064E08A004F585CC490314CF01F0061BE -:1070C0004008913C4009723A580AC7A06E0830093E -:1070D000990899399919EF380008992840083149D9 -:1070E000301A91594008911AC1D8584CC4A0E04CAC -:1070F0000080C330300C2FFDE3CD80E0E04C0085F4 -:10710000CFA16E0A300B1A9CF01F004DE08A0022BE -:10711000585CC1C0EF3900084008300A9119400896 -:10712000915A301B400CF01F0048581CCE41400CB7 -:10713000F01F0046C0B0400B76785808C070300C85 -:10714000F01F0043581C5F0CCD7B2FFDE3CF90E078 -:107150003FEC2FFDE3CD80E07645760A1A9C300B9C -:10716000F01F0037FE9AFFF6585CCF005805C49117 -:1071700040089135400993550FCA4008911ACD2B0C -:107180007626760A1A9C300BF01F002DFE9AFFE23D -:10719000585CCDC05806C1914008301A913640095C -:1071A00093564008911ACBEB760A1A9C300BF01FCD -:1071B0000024FE9AFFCF585CCC900FC9CAEB3FD891 -:1071C00093184009935ACAEBECC5FFED0A9CF01FD7 -:1071D000001D4008913C1899400A743B580BC2406E -:1071E0006E080C9A93089336EECBFFF430162F0CF2 -:1071F0009316F01F00184008915540099316C92BAB -:1072000040060A9CF01F000F8D3C4009723C580C50 -:10721000C1000A9A6E5BF01F000F400891550FC91C -:1072200040089119C7FB3FD895184009935BC7AB3D -:107230003FD893184009935CC75B000080016B3C0A -:1072400080009200800169A48001693C80016C404B -:10725000800091DCEBCD40FC4C151696189476021C -:107260006A095909E088001B4BE7C15878BA580AE7 -:10727000F9F8000CEFF80A01F9F8100CF5F81A0CFF -:10728000201978C8910A8B09F01F00376A0959093B -:10729000E08800056E0C580CCEA16C2338086C36C3 -:1072A000ECCCFFCCF0041800C260F01F003018973F -:1072B000C2F0B8C464080C9A990899A6069B2CCC15 -:1072C0008F9CF01F002B3808F0041800C2303818CB -:1072D000F0041800C2B04A3B30088FB8761A8FCA43 -:1072E0009507EEC9FFD46A0897192FF8301C8B0850 -:1072F000E3CD80FC64495809CD90ECC8FFC9E01883 -:10730000FFFCF009000CF01F00191897CD31E3CDF8 -:1073100080FC318A049BEECCFFF4F01F00156E7ADE -:107320008F2A580AC1018F8ACD7BEEC6FFF4318ABD -:10733000300B0C9CF01F000F049B0C9C308AF01F3C -:10734000000CCCAB6EA82FD8E018FFFC6E9C100C84 -:107350008F8C645BF01F0006CBFB0000000077A061 -:1073600000000234800091E880009200800091DCEF -:10737000800091D0D421207D1297FACEFFD04B29E6 -:1073800018947298EDB80001C040300C2F9DD8229F -:10739000FCE800003006BB295C7A50265046FAC54E -:1073A000FFF8FAC9FFE00A9CF01F00282FED580CE7 -:1073B000C2D05807C0B08F368F5640680E9B0C9CC9 -:1073C0008F28F01F0023581CC2E11A9CF01F0021D7 -:1073D0005BBCC29040076E4C580CC070F01F001E82 -:1073E00030088F388F4840075807C0401A9CF01F5C -:1073F000001B402C580CC030F01F00175804FBF83D -:107400001006E9F81A002F9DDA2A40085808C040F3 -:107410001A9CF01F0012402C580CCB80F01F000E5D -:107420002F9DD82A40085808C0401A9CF01F000B16 -:10743000402C580CC0313FDCCAABF01F00073FDCCA -:10744000CA6B0000000087F48001DF7480016C408B -:1074500080018E9C800091E88001D3A8EBCD40E0B4 -:10746000208D149616951897308A300BF01F001354 -:1074700059F6E08800052F8DE3CF80E00A9B0C9A37 -:107480001A9CF01F000FFAC9FFE030080C09FACC73 -:107490000001F368FFE0F8C6FFFF300B30AA0C9C38 -:1074A000F01F000832EB0ECC0C9CF01F0007CF4100 -:1074B0002F8DE3CF90E00000800091D0800091DC20 -:1074C0008000917080009164D43120AD189E109599 -:1074D00014974C781292709CE21C0002C0511896CE -:1074E0000C9C2F6DD832169AFAC6FFE41C9B0C9C9C -:1074F000F01F00400C9BFAC3FFFCFACAFFDC069C9D -:10750000F01F003D1896581CCEC15807C2F10E91CD -:107510000E90069CF01F0039401818945808C0407F -:10752000069CF01F0037403C580CC030F01F00355F -:107530005BB4C4D05807C170E06B0BB8E0CCFFF46B -:10754000F01F00315BDCC3A0582CC07060285BF8D2 -:10755000C04060188508CC5B029C301B3006F01FD1 -:10756000002BCBFB40988B08CBCB3FF8310C8B0822 -:10757000F01F002718941890C280F8C8FFF4500834 -:10758000109CF01F00248907640930088919089AA3 -:1075900031094A1B109CF01F00211891C20040982D -:1075A000189B9928300CF01F001E581CCB300C9BE8 -:1075B000029C3FD6F01F001BC94B029C301BF01FE2 -:1075C000001340988B08C8DB3FD6C8BB5807CFD004 -:1075D000029C301B3FD6F01F000DC83B400CF01F33 -:1075E0000012089C3FD6F01F0007C7BB000087F4BD -:1075F0008001745C80016FB880018E9C8001D3A8EB -:10760000800091E88001A22880016B7C80009200BC -:107610008001A28C8001702080016AF480016C409E -:10762000800169E08001A27CEBCD40E0209D49F81B -:1076300018991495709CE21C0002C06118960C9C6D -:107640002F7DE3CD80E0169AFAC6FFE8129B0C9CD2 -:10765000F01F00170C9B1A97FACAFFE01A9CF01F44 -:1076600000151896581CCEC11A9CF01F0013400834 -:1076700018965808C0401A9CF01F0010402C580C57 -:10768000C030F01F000F5BB6C0313FD6CD9B300C31 -:107690008B3C8B5C40880A9B8B28F01F000A581C8F -:1076A000CCF03FD6CCDB0000000087F48001745C96 -:1076B00080016FB880018E9C8001D3A8800091E882 -:1076C00080016C40EBCD40FC1895169414921293F7 -:1076D00010974076310CF01F0012C1D099369905F1 -:1076E00099149927189A3008310948EB109CF01F1B -:1076F000000E1896C100069B049C0C9AF01F000B0C -:107700001897581CC0500C9C301BF01F00090E9C91 -:10771000E3CD80FC30070E9CE3CD80FC800092001E -:1077200080016F6880016AF480017628800169E039 -:10773000EBCD406E202D4086129310951491169A31 -:10774000189B1A9CF01F0008069B0C99FAE2000097 -:107750000A9ABB23029CF01F00052FED2FEDE3CD0D -:10776000806E00008001745C80017374EBCD406812 -:10777000202D129310961495169A189B1A9CF01FA0 -:107780000008FAE800000C9ABB29069B0A9C300905 -:10779000F01F00042FED2FEDE3CD80688001745CB5 -:1077A00080017374EBCD40401896303CF01F00040C -:1077B0007848301C8D08E3CD804000008001EF6CDC -:1077C000EBCD406048A618952F060C9CF01F0009D1 -:1077D000303CF01F0009310AF8CBFF8C0A9CF01FE7 -:1077E00000070C9CF01F0006E3CF9060000087F4B8 -:1077F000800145F88001EF6C800091DC800145FA42 -:10780000D42149461894ECC5FFF00A9CF01F0012E1 -:10781000ECF700F85807C0C06F38707B2F4B322A46 -:10782000089CF01F000E0A9CF01F000DDA2A303C65 -:10783000F01F000CC060F9380088EE081800C06026 -:10784000ECCCFFF0F01F0006D82AF8CBFF78CE8BE7 -:10785000000087F4800145F88002E736800145FA90 -:107860008001EF6CEBCD40E049061895ECC7FFF0C6 -:107870000E9CF01F000F303CF01F000EECF600F8DD -:107880005806C0C0ECCBFFE2306A0A9CF01F000A29 -:107890000E9CF01F000AE3CF90E00E9CF01F000743 -:1078A0000C9CE3CD80E00000000087F4800145F8E7 -:1078B0008001EF6C8002E736800145FAEBCD404055 -:1078C000209DE04B0020E08B001CBABB580BC1B1DF -:1078D0003FF8BAA849162F060C9CF01F0011303C47 -:1078E000F01F0010322AFACBFFFEF8CCFF78F01F11 -:1078F000000E0C9CF01F000D2F7DE3CF90402F7DDC -:10790000E3CFC0403008169ABAA8189BFACCFFFC07 -:10791000F01F0007CE0B0000000087F4800145FC3B -:107920008001EF6C8002E736800145FE800091DC2B -:10793000EBCD40E01895303CF01F000B1897C110BC -:1079400048A62F060C9CF01F000A0A9B306AEECC5A -:10795000FF56F01F00080C9CF01F0007E3CF90E0DB -:10796000E3CD80E08001EF6C000087F4800145FCEE -:10797000800091DC800145FED401F01F0002D80296 -:1079800080017930EBCD40EC202D18961697586B7E -:10799000C0503FFC2FEDE3CD80ECFACCFFF8E06364 -:1079A000312EEA13322EE0623100EA12312EB92371 -:1079B00016980C99300A308B1A9CF01F0010301C5E -:1079C000F01F000F48F81893F0C5FFF00A9CF01F55 -:1079D000000E5803C0C00E9A0C9B069CF01F000BB3 -:1079E0000A9CF01F000B2FEDE3CF90EC0A9CF01FD8 -:1079F0000008069CCD0B00008001776C8001EF6CC5 -:107A0000000087F4800145FC800091DC800145FE88 -:107A1000EBCD40E01897303CF01F0018EEC8000195 -:107A200018955818E0880004E3CF80E058175F09E4 -:107A300049366D1858385F0AF5E90009C0E1582742 -:107A40005F08F5E80008C030E3CF90E0F01F000DBC -:107A5000C0A18B47E3CF90E0F01F000B6D185838A2 -:107A60005F0ACEEB303CF01F000578485818CF2055 -:107A7000F01F0005CEFB00008001EF6C000087F4D2 -:107A800080017BC88001F340EBCD40F81696189337 -:107A900076085858E08A002A49A83064F0C5FFF0FB -:107AA00097040A9CF01F0018301CF01F001818974C -:107AB000C160202D189B089A1A9CF01F0015F01F1A -:107AC00000152FED580CC1616C0A0E9B069CF01F2F -:107AD00000120A9CF01F0011E3CF90F80A9CF01FDF -:107AE000000F0E9CE3CD80F830683FFC9708E3CD93 -:107AF00080F80A9CF01F00093FBCE3CD80F800002D -:107B0000000087F4800145F88001EF6C8002E736C1 -:107B1000800188B0800091DC800145FA0050F200BD -:107B2000000FAC003008F9480320F94803245EFC3C -:107B3000EBCD40C016971496F8FE0320FCCBFFFF58 -:107B4000F60A141FE069851FEA1951EBF60904488B -:107B5000A5591419F8FA0324F2091064121B143BF6 -:107B6000C0B0F94B0320F80E0927FCC8FF9CF808A9 -:107B70000926E3CF90C0E3CF80C0D401189EF8FC63 -:107B80000324FCF803201838C1F0F8C8FF9CFC0C53 -:107B9000032CFC08032930089709E069851FEA19BE -:107BA00051EBFCFB0324FC0B09282FFBF6090448CE -:107BB000F60A141FA5591419F2091064F6090109EF -:107BC000FD490324D802D80A4838F0F900F85809CA -:107BD0005F1C5EFC000087F43018198CF00C180054 -:107BE0005F0A3058F00C18005F09124AC0F1306883 -:107BF000F00C1800C0B03028F00C1800C080584CB1 -:107C0000F9BC0003F9BC01005EFC5EFF302C5EFC99 -:107C100048C8F0F800FC5818C0D0C0635828C0D03D -:107C20005838C0505EFF580C5F0C5EFC583C5F8CAF -:107C30005EFC581C5F8C5EFC582C5F8C5EFC000068 -:107C4000000087F4EBCD40C01897169E740A580ABE -:107C5000C0D0753A580AC0A0747A580AC0704FF85C -:107C6000F0F901045889E0880004E3CF80C04FC8D0 -:107C7000F009032F94D8EDB80004CF813008301CF0 -:107C80009D08E3CD80C0F53900C83FF8F009180021 -:107C9000CED0F51B00D2580BCE90F51C00D030266C -:107CA000F4FA00D8F40C002811B9EC091800E080AF -:107CB00000BFF8C8FFFF3009F40800280C9CF0CA88 -:107CC000FFFDC07815882FCAF8081800E08000B0C2 -:107CD0002FF91639CF85CCABF53900C83FF8F0093C -:107CE0001800CC40F51B00D2580BCC00F51C00D07E -:107CF0003016F4FA00D8F40C002811B9EC09180079 -:107D0000E08000A4F8C8FFFF3009F40800280C9CAC -:107D1000F0CAFFFDC07815882FCAF8081800E08067 -:107D200000952FF91639CF85CA1BF53900A43FF805 -:107D3000F0091800C9B0F51B00B2580BC970F51C4A -:107D400000B03026F4FA00B8F40C002811B9EC09A0 -:107D50001800C660F8C8FFFF3009F40800280C9C22 -:107D6000F0CAFFFDC06815882FCAF8081800C58042 -:107D70002FF91639CF95C7ABF53900A43FF8F009B4 -:107D80001800FE90FF74F51B00B2580BFE90FF6FB9 -:107D9000F51C00B03026F4FA00B8F40C002811B934 -:107DA000EC091800C3D0F8C8FFFF3009F408002818 -:107DB0000C9CF0CAFFFDC06815882FCAF80818008F -:107DC000C2F02FF91639CF95C51BF53900A43FF83D -:107DD000F0091800FE90FF4BF51B00B2580BFE9007 -:107DE000FF46F51C00B03016F4FA00B8F40C002879 -:107DF00011B9EC091800C220F8C8FFFF3009F408D7 -:107E000000280C9CF0CAFFFDC06815882FCAF8082E -:107E10001800C1402FF9123BFE99FFF9C27B3028B0 -:107E2000AE8830199D09129CE3CD80C03028AE8801 -:107E30003029301C9D09E3CD80C03018AE88301940 -:107E40009D09129CE3CD80C03018AE883029301CCB -:107E50009D09E3CD80C00000000087F48003B7B027 -:107E60003028F00C1800C390E088001B3048F00C5C -:107E70001800C3503058F00C1800C21030093028D8 -:107E8000F00B1800C160F00B1800E08B001B3018DD -:107E9000F00B1800C100300812385F5C5EFC30182F -:107EA000F00C1800CEC130193028F00B1800CEC1EC -:107EB0003038C02830181039CF045EFE3029CE0B80 -:107EC0003048F00B1800C0703058F00B1800CE414D -:107ED0003028CF2B3048CF0B3039CD2B3049CD0B4C -:107EE000D431307977387075B8891894581AC0D061 -:107EF000C043582AC4C0D83A7738707A94D9EDB9BB -:107F00000004E0800087DA3AEB3900A43FF8F0097A -:107F10001800CF20EB0800B03009F2081900CF405C -:107F2000149112923006307B30533060C1A8E007C4 -:107F30001800C2B03028F0071800C7A03048EE087B -:107F40001800F9BC0003F9BC0100F01F003CE9F780 -:107F50001E002FF6EB1800B00C38FE9AFFD6098BE6 -:107F6000EAF800B8F006002811B70E9CF01F0034A4 -:107F7000FE9AFFF1E20718005F08E60718005F09A4 -:107F80001248E4081800CD40301CCE0BEB3900C875 -:107F90003FF8F0091800CB00EB0800D03009F208D8 -:107FA0001900CB2012913006307B301230533060F4 -:107FB000C1A8E0071800C2B03028F0071800C3A01D -:107FC0003048EE081800F9BC0003F9BC0100F01FAE -:107FD000001BE9F71E002FF6EB1800D00C38FE9AB4 -:107FE000FF94098BEAF800D8F006002811B70E9C20 -:107FF000F01F0013FE9AFFF1E40718005F08E60780 -:1080000018005F091248E2081800CD40301CCE0B62 -:10801000307B305CF01F000AFE9AFF77301CF01FA7 -:108020000007FE90FF723058301CA888D832302CE0 -:10803000C8DB302CCCDB000080017C1080017E602E -:108040003008484A48499508951893085EFC000096 -:10805000000089EC00008C5CEBCD4080189E198BF1 -:10806000580BC130300A3017149CFC0A00092FFA53 -:1080700013982018EE080948F9E81008F9D8B0104C -:10808000163ACF45E3CD8080169CE3CD80807938C9 -:10809000707A3308F53900C8F0091800C0205EFD79 -:1080A000F51800D4E218000C5848C0E0E08A000837 -:1080B0005888C08058C8CF41310C5EFC5808CF01A9 -:1080C0005EFF304C5EFC302C5EFCD703EBCD40E015 -:1080D00030081896109A169C8D084927760E301590 -:1080E000109BC0A8F80A00082FFA11C9EE0B070868 -:1080F000A7D91039C0A01C3ACF652FFB58DBE08B05 -:10810000000E300A780ECF8B6C08EA0B0949124832 -:108110008D082FFB58DBFE98FFF6E3CF90E00000C0 -:108120008003B7F4EBCD40C030069906149EF8C723 -:10813000FFFC1799EC091800C0E00C9AF60A000839 -:1081400011A90EC978082FF899082FFA1798143832 -:10815000FE99FFF61D993008F0091800C0F0300BA9 -:10816000FC0B000811A9EE0B0B0978082FF89908F1 -:108170002FFB1D981638FE99FFF5E3CF90C0EBCD8D -:1081800040F816941897780B68065806E08A002C79 -:10819000F6C8FFFCE8C5FFFCF8080003300E2FCC42 -:1081A000EA0E070A580BE08A00130FC81458F1D8DA -:1081B000C007C1503009C078F80907081458F1D831 -:1081C000C007C0D02FF9123BFE99FFF8597BE08B16 -:1081D000000706CA6E0B2FFB8F0B68062FFE1C369E -:1081E000FE99FFE0E3CF90F8EBCD40FE1894169295 -:1081F0001497780676055805E08A0025ECC8FFFC40 -:10820000F6C3FFFCF8080001300EF4CCFFFCE60ECC -:10821000070A6E0B580BE08A00120FC81458F1D8E9 -:10822000C007C1203009C078F80907081458F1D8F0 -:10823000C007C0A02FF91639CF852FFE1C35FE9937 -:10824000FFE8E3CF90FE5976FE9BFFF902CA68066D -:108250002FF689062FFE64051C35FE99FFDACF2B19 -:10826000D42178045804E08A0027F8C7FFFC493875 -:108270000F8B700C11C6580CE08A0017F0C5FFFC7C -:10828000300EEDEB2008F1D8C007C0F00A9A300993 -:10829000C0782FFA15881658F1D8C007C0602FF99A -:1082A000123CFE99FFF8D82A2FFE2FF7083EC03463 -:1082B0000F8BCE8BDA2A00000000023CD4211897E5 -:1082C00076055805E08A0026F6C6FFFCF8CEFFFCCE -:1082D000300B1694C0482FFB0A3BC1B4EC0B070AC5 -:1082E000E80A1800CF946E0C580CE08A00120FC8F0 -:1082F0001458F1D8C007CF003009C078FC0907082E -:108300001458F1D8C007CE802FF91839CF85D82A54 -:10831000DA2A3248F00C1800C110E08800113488C5 -:10832000F00C1800C0B0E08800183608F00C1800F7 -:10833000C05036C8F00C1800C0E15EFF3128F00CC8 -:108340001800CFC03188F00C1800CF8030C8F00C76 -:108350001800CF405EFD3308F00C1800CFC1CEEB03 -:10836000EBCD40E078055805E08A0010F8C6FFFC28 -:108370003007C0380A37C0940D8C2FF72FF6F01F46 -:108380000004CF90E3CF90E0E3CF80E08001831240 -:108390004838F14B01DCF14C01D85EFC000087F459 -:1083A0004838F14B01ECF14C01E85EFC000087F429 -:1083B000EBCD40801697581BC050582BC080E3CFA0 -:1083C0008080F01F00050E9CE3CD8080F01F00022E -:1083D000E3CF9080800091E8D401580CC070486BC6 -:1083E000760AE04A0168E0880003D80AF01F00031B -:1083F000DA0A0000000089EC800091DCD401580CFE -:10840000C0A078185908E08B0007780AE04A016894 -:10841000E0880003D80A189B482CF01F0003DA0AF2 -:10842000000089EC800091DCEBCD4040350A1896C5 -:10843000F01F000330088D48E3CD8040800091DCC0 -:10844000D401306AF01F0002D8020000800091DCE5 -:10845000D401300CF01F0002DA0A000080016C7CAD -:10846000D421201D189414971296169A1095189BD3 -:108470001A9CF01F001CE08A0032585CC27058063B -:108480005F1858075F191268C241300840099338D5 -:10849000400A95584008301B9115400CF01F0012FF -:1084A000581CC100400C78785808C090189B089C54 -:1084B000F01F000E581CC0A03FDCC098301BF01FFE -:1084C000000C400C78785808CF21301C2FFDD822A2 -:1084D0004008913740099356CDEB3FEC2FFDD82251 -:1084E00080016B3C800169A480016C40800169E0DF -:1084F000EBCD40C018971696303CF01F00283DD8B1 -:108500003079AE88AE9935083F29300BAEB8AEC988 -:1085100030283019AED8EF6B0008AEABAEEBAEF939 -:1085200058065F1AF8F900BC58095F181468F60875 -:108530001800C310F8F800D05818F9B80008EFF880 -:108540000E08F8F800CC5818EFF80808F9B900043C -:10855000F1D9E038EFF80E08F8F800C85818EFF82D -:108560000808F9B90002F1D9E038EFF80E08F8F878 -:1085700000C45818EFF80808F9B90001F1D9E0383B -:10858000EFF80E08F8F900D4EF380008F1E91048C8 -:10859000EF680008E3CD80C08001EF6CEBCD404078 -:1085A0001896303C5C76F01F000E5876E088000488 -:1085B000E3CF804048B8F006032FF90C00C6E3CDA6 -:1085C0008040F90C00CAE3CD8040F90C00CEE3CD29 -:1085D0008040F90C00D2E3CD804000008001EF6CB8 -:1085E0008003B7D4D40130DCF01F0002784CD802ED -:1085F0008001EF6CEBCD40FC207D31CA1893300B2D -:108600001A9C1A92F01F001266045804E08A00189F -:10861000E6C6FFFC30070D852FF72FF60A9CF01FEA -:10862000000DC0A14008FACAFFE4F0C9FFFF100A1C -:108630005009F565FFE80E34FE99FFEF1A9B069C82 -:1086400031CAF01F00052F9DE3CD80FC800091D042 -:1086500080018312800091DCEBCD40E0207D300B67 -:10866000189731CA1A9CF01F00171A956E0B580BF9 -:10867000E08A0024300AFAC6FFFCEEC9FFFC0C9C1D -:10868000149EC0582FF9143BE08A000D2FFA13886E -:10869000FC081800CF8418C82FF96E0B143BFE9904 -:1086A000FFF7F80601061A9B50060E9C31CAF01F10 -:1086B00000062F9DE3CD80E0FAC6FFFC0C9CCF2B7B -:1086C000800091D0800091DCD421129618971695E5 -:1086D0001494580CC1205809C111314CF01F0009E5 -:1086E000C0C09907B8C599249936487A7419994930 -:1086F000930CF8C8FFF49518D822F01F0004D82274 -:1087000080009200000077A4800147E0EBCD40C0DC -:108710001896580CC110308CF01F000C1897C090A0 -:108720000C9CF01F000B8F1C1898C0A030188F08ED -:108730000E9CE3CD80C018970E9CE3CD80C00E9CAC -:108740001097F01F0004CF5B800092008001D920B9 -:10875000800091E8EBCD40C049566C075807C180B6 -:108760006E395809EFF80004EDF80A01EFF810042B -:10877000F3F81A046E4891096E2A0FCB6E0CF01FA5 -:10878000000D0E9CF01F000C6C075807CEA148B8D6 -:10879000F0C7FFEC0E9CF01F000AC071302CF01FD8 -:1087A00000090E9CF01F0008E3CD80C0000077A4F4 -:1087B000800147E0800091E8000087F4800145DCFB -:1087C0008001478C800145ECD4014848300991185C -:1087D0009109F01F0003D802000077A4800187549C -:1087E000EBCD40FE4A0618976C0816951494201895 -:1087F000E0480167E0880004E3CFC0FE580A5F1933 -:108800006C1A300B580A5F181268F6081800CF501F -:10881000183A5FB858FC5F891268F6081800CED085 -:1088200016910C92C0B82FF7641958F75F8A0E3969 -:108830005FB81468E2081800CE00EE031016306A24 -:10884000E6CCFFF80A9BEC0C000CF01F0008CEC130 -:10885000485B089C060B310A2F2BF01F00050E9C6D -:10886000E3CD80FE000089EC8000917C800091DCEB -:10887000EBCD40E018951697300C18960E9A0A9B8F -:108880002F07F01F0005C0452FF62FFCCF8B0C9C47 -:10889000E3CD80E0800187E0D401306AFACCFFFCB0 -:1088A000FACBFFF4F01F00025F0CD8028000917C2D -:1088B000EBCD4068205D3FF8FACAFFDC15D9FB68B4 -:1088C0000013FB68000EFB68000FFB680010FB68DC -:1088D0000011FB680012FAC6FFF8ACD974088D08C5 -:1088E00015C9FAC3FFFEACC93065FACBFFF20A9A8C -:1088F000069CF01F00060A9A069B0C9CF01F0004C1 -:108900005F0C2FBDE3CD80688002E7368000917C4C -:10891000D401FACBFFFCF73900241788F0091800BE -:10892000C020D80AF73A00251798F4081800CFA1FC -:10893000F6CCFFFE2DABF01F00035F0CD802000049 -:108940008000917CEBCD4040211D303CF01F001E8B -:10895000322A1896FACBFFB4FA0A000CF01F001B5B -:10896000ECC6FF78ECE80000FAE90000ECEA000849 -:10897000FAEB0008ECE80010FAE90010ECEA001845 -:10898000FAEB0018ED380020FB680020ED390021DB -:10899000FB690021FB3A00221B88F4081800C05034 -:1089A000300C2EFDE3CD80401B9AFB380023F408E9 -:1089B0001800CF71FACBFFFEFACCFFDCF01F0004E9 -:1089C0005F0CCF0B8001EF6C8002E7368000917C5A -:1089D000EBCD40E0203D4B571896EF3900943FF81F -:1089E000F0091800C3507938707C2F4CF8E800006B -:1089F000209DFAE90000F8EA0008FAEB0008F8E820 -:108A00000010FAE90010F8EA0018FAEB0018F9383B -:108A10000020FB680020F9390021FB690021F01FCC -:108A200000242F7D580CC0412FDDE3CD80E0202DA8 -:108A3000EEC7FF4A306A0E9B1A9CF01F001EF01F03 -:108A4000001E2FED580CC1C02FDDE3CF90E0F8CB16 -:108A5000FFE2306A1A9CF01F0017EECBFF4AFAC6FD -:108A6000FFFA306A0C9CF01F00130C9B1A9C306AB2 -:108A70001A95F01F00125F0C2FDDE3CD80E0ECCBE8 -:108A8000FFE2FAC5FFFA306A0A9CF01F000A0E9B4B -:108A9000306A1A9CF01F00071A9B0A9C306A1A96CB -:108AA000F01F00065F0CCC1B0000026080018944AF -:108AB0008002E736800188B08000917CD401201DBF -:108AC000500C580CC0401A9CF01F00022FFDD80219 -:108AD0008001D3A8D401201D500C580CC0401A9C12 -:108AE000F01F00022FFDD8028001D3A8EBCD40C0BB -:108AF000E06B00E41896300CF01F000A1897C0E0F5 -:108B0000E06A00E40C9BF01F0008ECC9FFF8EECA15 -:108B1000FFF8486B0E9CF01F00060E9CE3CD80C052 -:108B20008001D8DC800091DC8001D3EC8001ACA80E -:108B3000EBCD40C0E06B00EC1896300CF01F000A43 -:108B40001897C0E0E06A00EC0C9BF01F0008ECC92D -:108B5000FFF0EECAFFF0486B0E9CF01F00060E9C63 -:108B6000E3CD80C08001D8DC800091DC8001D3ECB3 -:108B70008001ACA8EBCD40FE129210914A88F0F92A -:108B800000F818933DD8733C316916977874AE8815 -:108B9000AE9930083509AEA8AEB93F283019301665 -:108BA00014954A0B303AAEC8AED9AE36EECCFFF8CB -:108BB000F01F001D069CEF65000BAE76AE66308B95 -:108BC000F01F001A8F5CC290303A496BF01F0016FC -:108BD0006E58B0B28EE86E5C303AF808002C491B33 -:108BE000F01F00116E598EE8F2080028B0B1E919A3 -:108BF00000B0E91800B21208E93900A5A3682F08EF -:108C00001039C030E3CF90FE0F9830092FE8EF59AC -:108C10000010AE98E3CF90FEE3CD80FE000087F415 -:108C200080017B1C800091DC8001D3ECD431201DBD -:108C3000314E1697330BAE9EAE8B1090FACBFFD809 -:108C40007618500818921493129176055805E08A08 -:108C50000006EA0815042EA8AE983016303AAE1673 -:108C600049E4EECCFFFCE8CBFFFCF01F001D049CA8 -:108C7000AEF3AE56AE46AE75EA0B15042F8BF01F61 -:108C800000198F4CC280303AE8CBFFFCF01F001473 -:108C90006E48B0B18EC86E4CE8CBFFFCF808002CD3 -:108CA000303AF01F000F6E498EC8F2080028B0B0AD -:108CB0003289AE695805E08A000D6E488EC98EDC97 -:108CC000EA0A1504120C400BF00C002CF01F0004F3 -:108CD0002FFDDA3A2FFDD83280017B1C800091DC19 -:108CE0008001D3ECEBCD40E0201D500B1897580CC1 -:108CF000C070169A4C4C0E9BF01F0044C6404C4668 -:108D000030080DA9F0091800C050301C2FFDE3CD2C -:108D100080E0ECCCFFE4F01F003FCF815807C2F0A9 -:108D2000301CF01F003DC3304B751A9B4B6CF01F7D -:108D3000003B1897C320F01F003A3018ED4C00CCD0 -:108D4000ACA80E9C3005400BED5500D04B07F01F32 -:108D500000351896581CC3F1EECCFFE4F01F00322A -:108D60004B28F1090142EA091900CD006E98EDB8CF -:108D7000000ECCC0F01F002E0C9CCC9B4A25EAF9BB -:108D80000320EAF803241039CCC1CD0BECCCFFE46E -:108D9000F01F0025301CCBBBECF801245818C04054 -:108DA000301CF01F0024ECCCFFE4F01F001FEAF998 -:108DB0000324EAF803201238CA90301CF01F001672 -:108DC000301CCA5B492AF50B00D2F80B1900C0A071 -:108DD0003FBCC9DBEECCFFE4AEA5F01F00133FBCE7 -:108DE000C96B3018F55800D24909F3080142F6085A -:108DF0001900CEF07498EDB8000ECEB0F01F000C44 -:108E00003FBCC85B000084CC80017B30000087F44D -:108E1000800145DC80019F3080017B7A800145C460 -:108E200080014664800145EC000002608001FBFC8B -:108E30008001A128EBCD40C01897F01F0015C1B0EC -:108E40006E4849468D186E598D2930096E2C8F2930 -:108E50006E486E3BE2180080F9B80001EDF80E0292 -:108E6000F01F000D1897581CC0803008300CACA8BB -:108E7000E3CD80C0E3CF90C0F01F00083008ED4C78 -:108E800000CCED5800D00E9CE3CD80C08001C6A080 -:108E9000000087F480014664800145C4EBCD40802A -:108EA000491A18977498EDB80001C111F4F801241B -:108EB0005818C0A07848951878599529F01F000BCC -:108EC000C091E3CD8080109CE3CD80803FBCE3CD9A -:108ED000808030086E2C6E3B8F28F01F0005E3CD9C -:108EE00080800000000087F48001C6A080018CE42F -:108EF000106104000000000040200700FFFFFFFF9A -:108F0000000000004869F2F802045828C0205EFE04 -:108F1000580CCFE0F2C8FFF099085EFF000077AC74 -:108F20005EFDD7034828912C913B5EFF000077AC93 -:108F300048384849910C930B5EFC000000007540D6 -:108F4000000074B45EFCD703D431202D500C3008DF -:108F5000FAC1FFF81690109402D84A424A43E269D7 -:108F60005A4C089A0819029B009C40085D181895F5 -:108F70005804C0B1584CF80A1780F9BA0B0449DB01 -:108F8000401CF01F001DC2E140165805C1000A97A1 -:108F90005907EE0A1780F9BA0B100C9B1417140628 -:108FA00064085C7A660C5D185807CF310A04E24405 -:108FB0005A4BFE98FFD65875E088000D4018EACC51 -:108FC000000848CBF00C000C2F8B308AF01F000AF1 -:108FD000C0913009009C129A129B40085D182FED39 -:108FE000DA3A30DC2FEDD83200007540000074B45E -:108FF00080018EF08000917CEBCD40FC49F8189404 -:10900000F0C3FDDCF0C7FFBC3072C0B8321A089B59 -:109010000A9CF01F001B1896C1D02C470637C16070 -:10902000EEC5002C5804CF316E08109C5808CF6054 -:10903000F01F00148F04EF44FFF86E185808CEE1BB -:109040008F248F322C470637CEC15804C0D0E3CFCF -:10905000C0FC6ABC580CC080F01F000A8B968BB60F -:109060006AC85808C030E3CF90FC8BD8301C3078E9 -:109070008BE8E3CD80FC0000000077AC8000917CA1 -:10908000800091E8EBCD40FE109114961895169251 -:109090001293F4C80008E0480037E08B00185859D4 -:1090A000C18049D8F0C4FE08F0C7FFE86EB8580880 -:1090B000C1300E9C321A0A9BF01F0018C1D02C47F9 -:1090C0000837CF51307CE3CD80FE30ACE3CD80FE5D -:1090D000129CE3CD80FEECCBFFFF049CF01F001040 -:1090E0000A9B8FBC8F968FD18FE30E9C321AF01F94 -:1090F000000DE3CF90FE6EBCF01F000B049CECCB88 -:10910000FFFFF01F00078FE38FBC8F968FD1E3CF57 -:1091100090FE0000000077AC8000917C8000918878 -:10912000800091DC800091E8D401487BF6F80204CD -:109130005828C020DC0AF6CBFE04306AF01F00037A -:10914000DA0A0000000077AC800091DCEBCD40FE35 -:10915000209D580B5F09580A5F08169314941069F4 -:10916000C341580BC4514A9264585808C2E03005B4 -:10917000FAC1FFFD0A970A9CC0D8ED3A0020FB38DF -:109180000023F4081800C2E00E9C64580E38E088F2 -:10919000001E64482FF7F00C03265803CEF1306A06 -:1091A000089B5804C0A0202D1A9CF01F0019F01F26 -:1091B00000192FED580CC0E05805C0506AC96CC8A2 -:1091C0001238CE350C95CE1B30050A9C2F7DE3CD91 -:1091D00080FE306A089BECCCFFDFF01F000FCD5102 -:1091E000CECB029B0C9CF01F000CCCF1CD9B189BAE -:1091F000069AFACCFFFDF01F0009FB6300234832FA -:1092000064585808CB51CE1B000077AC8002E7367B -:10921000800188B08000917C800091DCEBCD4060C3 -:10922000306A202D169618951A9CF01F0009F01F21 -:1092300000090C9A5F0B0A9CF01F00072FED581CC9 -:10924000F9BC0001F9BC01FFE3CD80608002E73684 -:10925000800188B080016480D4015C6CF01F000440 -:10926000581CF9BC0001F9BC01FFD8028001641C44 -:10927000EBCD406E202D1293189116921495300B61 -:10928000308A1A9CF01F0012306A069B1A96202D15 -:109290001A9CF01F0010F01F001030085F091AD848 -:1092A0000A9A1AD6049B1AD3029C1AD83038F01F97 -:1092B000000B2FAD5BFCC070581CF9BC01FF2FEDFB -:1092C000E3CD806E304C2FEDE3CD806E800091D0E9 -:1092D0008002E736800188B08001661CEBCD406ECD -:1092E00010911892169314951296F01F00113008E1 -:1092F0000C991AD80A9A1AD1069B049CF01F000DEB -:109300002FED583CE0890007582CC085306CE3CD28 -:10931000806E584CC070E3CFC06E5BECC050581CE0 -:10932000CFB1E3CF906E30BCE3CD806E8001A1DC85 -:109330008001F7D8EBCD4040201D10964978F0FE13 -:109340000204582EC0503FFC2FFDE3CD804030EE8C -:10935000FAC8FFFC10DE300E1A985C761ADE1AD6B8 -:10936000F01F000F2FEDFE5CFC17E0890010FE5C83 -:10937000FC16C114FE5CFB4FC070FE5CFBB4C0B0B9 -:10938000FE5CFAECCE11307CCE0B5BECC040581C7E -:10939000CDB1CDBB30BCCD9B000077AC8001F54496 -:1093A000D4014858F0F902045809C030F01F0003F6 -:1093B000D8020000000077AC80014480EBCD40E88B -:1093C0004D56189514971693E06A0218300B0C9CB2 -:1093D000F01F00524D288D05700C8D133005A36CC5 -:1093E000ED450204F01F004F8D4CC031E3CFC0E8C3 -:1093F0000A9CF01F004D581CCFA11AD5F1D7C00808 -:109400000A990A9A310B320CF01F00482FFD581CA4 -:10941000CEE1F01F0047581CCEA11AD50A980A9930 -:109420004C4A0A9B302CF01F00442FFD580CCDF005 -:1094300030670A981AD70A994BEA0A9B322CF01F18 -:10944000003E2FFD580CCD3030780A991AD84B9A2F -:109450000A980A9B323CF01F00382FFD580CCC7044 -:109460001AD50E9C0A980A994B2A0A9BF01F0032C3 -:109470002FFD580CCBC030270A981AD70A994ADA20 -:109480000A9B304CF01F002C2FFD580CCB001AD734 -:109490000A984A8A0A990A9B305CF01F00272FFD20 -:1094A000580CCA50301C0A981ADC0A994A1A0A9BAE -:1094B000F01F00212FFD580CC9A030390A981AD985 -:1094C00049CA0A990A9B31CCF01F001B2FFD580C8A -:1094D000C8E0F01F001A581CC8A1F01F0019581C42 -:1094E000FE91FF860A980C9730490C9A495B0A9CBA -:1094F000F01F0015FE90FF7C189A308B493CF01F3E -:109500000014581CFE91FF74ED4C0204EF45020C50 -:10951000E3CD80E8000077AC800091D000000258D5 -:1095200080009200800200AC8002067C8001FFB4C3 -:109530008001984C80016E788001FD8C8001A00034 -:109540008001955080016AF48003B8048001762878 -:10955000EBCD40E078185B98C031E3CFC0E078569F -:109560005866CFC1783B0C9A4985EAC7FE040E9C29 -:10957000F01F0017303A497B0E9CF01F0017C131D5 -:10958000F01F00163026EB460204F01F00150C9C5D -:10959000F01F00146A195809C14048C8700C5D19C1 -:1095A000E3CF80E037A83C49EB6801FC30E80C9B36 -:1095B0000E9CEB6901FDEB6801FEF01F000BCE1B5A -:1095C000129CE3CD80E00000000077AC800091DCCD -:1095D0008003B80C8000917C8001FD8080020290A5 -:1095E0008002023480017984EBCD40FC7875580B01 -:1095F000F9B80100F7F81A001693EB3900C83FF8E4 -:10960000F0091800C250EB0900D03008F009190029 -:10961000C4D0307430073022EE061502EAF800D8C4 -:109620000C082FF711BC089BF01F0027E08A0009E7 -:10963000EAF800D80C0811B45803E7F21A00EB1846 -:1096400000D00E38FE99FFEA089CE3CD80FCEB3891 -:1096500000A4F2081800C250EB0900B03008F0096D -:109660001900C240307430073012EE061502EAF8D5 -:1096700000B80C082FF711BC089BF01F0013E08AFC -:109680000009EAF800B80C0811B45803E7F21A0010 -:10969000EB1800B00E38FE99FFEA089CE3CD80FC81 -:1096A000787992D8EDB80004C040307CE3CD80FCDE -:1096B000307B305CF01F0004FE9AFFF9305CE3CD94 -:1096C00080FC000080017E60D431201D4D876E58E3 -:1096D0005808C0E030060C996E48F009032CF01FC2 -:1096E00000552FF66E580C990C38FE9BFFF730068C -:1096F0001A9B8F560C9CF01F00501A94400C580C6B -:10970000C0312FFDD832A36CF01F004C1890CFA0B1 -:10971000400A0C9BA36AF01F004A40085808E08AE0 -:1097200000260C950096C0782FF52FC640080A3801 -:10973000E08A001D350CF01F00418D0CCF614009FF -:109740005809E08A000F009530062FF66A0C580C75 -:10975000C040F01F003840092FC50C39FE99FFF7B3 -:10976000009CF01F00342FFDD8321A9B009CF01F84 -:1097700000324B4972084009F0090D488F585808CB -:10978000CE00300408930891A363E003000264084C -:109790006E467135344CF01F0029F9410040060631 -:1097A0008D0C6A796E48F2CBFFF2F0030306F33AB0 -:1097B000000D0C9CF01F00246A78F139000D306A0E -:1097C000ED690020ECCCFFDF640B2E2BF01F001E98 -:1097D000029B0A9CF01F001DED6C00386A498DC980 -:1097E0006A585808F9B805008DD86A79F338005ED0 -:1097F000ED6800276A7992C88DA80BF9ED59002C05 -:1098000030290BEAF20A1800E2081710F9B8000133 -:109810008DF830286E49F20309062FF4F00A18007B -:1098200008936E580838FE9BFFB1C8AB000077ACB8 -:10983000800091E88002105880009200800091D052 -:1098400000000258800091DC800195E8EBCD40C01B -:10985000201D1696582BC680E0880013586BC590C3 -:10986000587BC2D0583BC4804C076E295809C05061 -:109870004BE80C9C703B5D192FFDE3CD80C0580B6D -:10988000C0F14BA7EEF902085819C6C0EEF8020C59 -:109890003019A1D8EF690210EF48020CCE7B581B9B -:1098A000CE414B273008EEF9020C4B1AA3A9EF6802 -:1098B0000210A1D9B488EF49020CCD8B4ACA3008F6 -:1098C0001589F0091800C4C14A87EEF8020CEDB8FA -:1098D0000001CD31EF380210F2081800CCE1F01F82 -:1098E0000025F01F0025EEF8020C3016E018FFF9F5 -:1098F000EF48020CCBBBF01F002049C7EEF9020C69 -:10990000EDB90004CBA11298A5C8EF48020CCAEB30 -:1099100049673019EEF8020CEF690210A1D8300641 -:10992000EF48020CCA3B4917EEF8020CA3C81A9C78 -:10993000EF48020CF01F001140085828C050F01FDB -:10994000000DF01F000D300A4898B08AEF39021060 -:10995000F4091800C9204858F16A0210C87BB4887D -:10996000C8CB4838B089C89B000077AC000079C4E8 -:1099700080021298800196C8800177A4D401201D2E -:1099800048F9F2F802045828C0302FFDD80AF339FC -:1099900002103008F0091800C0711A9CF01F00096D -:1099A00040085828CF31F01F0008CF00F8CAFFE266 -:1099B000300B169CF01F00052FFDD802000077AC7D -:1099C000800177A4800210FC8001914CEBCD408097 -:1099D000201D4967EEF802045828C0503FFC2FFDB7 -:1099E000E3CD8080F01F0012C051302C2FFDE3CD5D -:1099F0008080EEF9020CEDB90002CF10EDB9000144 -:109A0000C031309CCEDB1A9CF01F000A4008580879 -:109A1000CED0F01F0009581CCE21EEF8020CA3A8EE -:109A2000EF48020CCDDB0000000077AC800210FC98 -:109A3000800211088001F370EBCD40C020AD189872 -:109A40001697580BC07076DC581CC0402F6DE3CDC4 -:109A500080C0109BF13A0020FAC6FFFE0C9CF01F5C -:109A6000001B0C9B209D322A1A9CF01F0019F01F2E -:109A700000192F7D580CCEB0793CFACBFFDCF01FDB -:109A8000001640985818C150C0923058F808180075 -:109A9000F9BC0003F9BC0102CDAB5828C030301C22 -:109AA000CD6B5807C0D06EC85808C0A0305CCCFB46 -:109AB0005807C0806EC85808C050304CCC8B307CE2 -:109AC000CC6B306CCC4B00008002113C8002E7363E -:109AD0008001F2BC800195E8D43120EDFEF3029CB8 -:109AE000FAC1FFA4E6F8020C18971694E2180006D3 -:109AF000C040309C2F2DD832F01F00A1C040308CC8 -:109B00002F2DD832E74C02085807C130BA8CF5D453 -:109B1000C008FAC6FFFEBA9A0E9B0C9CF01F009973 -:109B20000C9C1B9BF01F0098581CC0802F2DDC3A0A -:109B3000BA97BA87FAC6FFFECF4B029CF01F00937C -:109B40001892581CCF41029A089B0E9CF01F00905F -:109B50001890C580E6C7FFE8E6C6FE08EF3A002089 -:109B6000E1380020F4081800E08000A02C470C37F2 -:109B7000CF6130070E950E9B009CF01F0086E136EA -:109B800000381897CD40585CE08000C2E08B00B9E7 -:109B9000583CE08000B4584CC020300CF01F007ED0 -:109BA0003048F0061800E08000A83054E80618009D -:109BB000E08000983028F0061800E080009A300C11 -:109BC000F01F0076E8061800E080008F300CF01FD0 -:109BD00000745837E08B007960F85818C710301CB3 -:109BE000F01F0070300B4F0CF01F0070CA00F01F08 -:109BF0000070581CC9C1E6F8020CA1B8E748020C75 -:109C0000C7ABFAC5FFCE306A029B0A9CF01F005D0D -:109C1000FAC6FFDE0C9CF01F00673FF81AD00C9BC1 -:109C20001AD2310A1AD8204D1A9CF01F00630A9BE1 -:109C3000202D306A1A9CF01F00600499209DE6CC0C -:109C4000FDECFB380069FAEA0048FAE20050FB68D4 -:109C50000021FAEB0000FB380068FAEA0058FAE34A -:109C60000008FAE20060FAEB0010FAE30018FB6863 -:109C70000020303A0098129B4C03F01F00502EED4C -:109C80001895581CFE91FF54009BE6FC0214F01F2F -:109C9000004C5BBCC620580CC3E1189BE6FC0214C8 -:109CA000F01F00483FFCC27B0E9C009BF01F00464B -:109CB000FE91FF5E6EB55805EA071700C5DB302C34 -:109CC000F01F0038C90B5805FE90FF320A9AE13B9D -:109CD0000020009CF01F003D3018E7480208C7DB59 -:109CE000301CF01F002E301CF01F002DC73B302C05 -:109CF000F01F002AC6CB303CCFCB301CC50B586CB4 -:109D0000C080587CFE91FF4B308CC49B307CC47B60 -:109D1000305CC45B344CF01F002E089A18960E9BE2 -:109D2000F01F0018029B306AED640020ECCCFFDFCE -:109D3000F01F001400991AD60A984A6A009B31CC89 -:109D4000F01F00252FFD580CC0E0E6F8020C0A9C1D -:109D5000A1B8E748020CCCFA009BE6FC0214F01F05 -:109D60000019CC8A189BE6FC0214F01F00160C9C0C -:109D7000F01F001A3FFCCBFA000077AC800210FC09 -:109D8000800091DC800178BC800179788001914C61 -:109D900080019A3880015F60800163488001639C84 -:109DA00080017A1080018F208001FD408001F3A0A6 -:109DB000800177C08002E73680020BFC80020A70C7 -:109DC00080020B408000917C800214708000920021 -:109DD00080019E0080016E78800091E8D401202DE2 -:109DE000FACAFFF415D8BAD87409500915C8300B4F -:109DF000BAC8169CF01F00022FEDD80280019AD835 -:109E0000EBCD40E049F51697EAFC0214300BF01F49 -:109E1000001EF01F001EEEC6FFDFEF3B00200C9A75 -:109E20000E9CF01F001BC150EAF8020CA1D8202D97 -:109E30000C9BEB48020C306A1A9CEF360020F01F96 -:109E400000150C9B0E9CF01F00142FED581CC060D9 -:109E5000EAF8020CEDB80001C0600E9CF01F000F84 -:109E6000E3CD80E0301B300CF01F000D302B300CA8 -:109E7000F01F000B0E9CF01F0009E3CD80E00000F6 -:109E8000000077AC80020B40800196C88001914CA5 -:109E90008002E73680019AD8800091E88001984CD2 -:109EA000EBCD40E0202D18951697580CC0513FFC83 -:109EB0002FEDE3CD80E0580BCFB0E04B0020FE9BB0 -:109EC000FFF8FAC6FFFE306AE06B00FF0C9CF01F43 -:109ED0000008306A202D0C9B1A9CF01F00060E9B78 -:109EE0000A9CF01F00052FEDCE4B0000800091D0A2 -:109EF0008002E73680019AD8EBCD408048B7EEF873 -:109F000002045828C030E3CFC080F01F0009581C5D -:109F1000F9BC0109EFF80083F9B90010F1D9E03874 -:109F2000EFF80A83E3CD8080000077AC80020A84DA -:109F3000D40148B9F338000A104CF36C000A7218C7 -:109F40005808C0B05828C0803028726C9318301B55 -:109F500072595D19D80AD80ADA0A0000000079C8D7 -:109F60004828916B915C5EFC000079C8EBCD40C045 -:109F7000203D5CBBBA89502B109714965CC85C8856 -:109F80005807C0513FFC2FDDE3CD80C05C784959B4 -:109F90005018B28C3048FAC9FFF8300A306B492C9F -:109FA000F01F0012581CCEF11B89491A1898B48969 -:109FB000306B1A99300A48FCF01F000C581CCE3147 -:109FC00048D8300AB007306B304848CCFA0800094E -:109FD000F01F0006581CCD7148989146CD5B0000DB -:109FE00000007A288003B8108001776C0000025CC2 -:109FF0008003B8180000025E8003B820000079C812 -:10A00000EBCD40C030074A161AD78D078D17ED6784 -:10A010000008ED670009ED67000A8D378D470E983F -:10A020000E9949BA0E9B302CF01F001A2FFD580CC8 -:10A03000C0413FFCE3CD80C01AD70E980E99496A03 -:10A040000E9B304CF01F00132FFD580CCF301AD749 -:10A050000E980E99491A0E9B32ECF01F000E2FFD40 -:10A06000580CCE8031483019E06A138830AB0E9C12 -:10A07000F01F000B581CCDE10E9BECCCFFF4F01F41 -:10A080000009581CCD71CD7B000079C88001A0F07B -:10A0900080016E788001A1A08001A0A480019F6C46 -:10A0A000800144F8D401F01F000E48EA74085838C3 -:10A0B000C12030289508F539000A3008F009180049 -:10A0C000C020D8023018300B9518487C487AF01F11 -:10A0D0000008D80230089508D80200008001DA365E -:10A0E000000079C88001DA5880018E348001EF20A9 -:10A0F000EBCD408048973018EF6800086E4958094A -:10A10000C0A0308CF01F00066E4C3009485A6E3BE0 -:10A11000F01F0005E3CD8080000079C880019F30EA -:10A120008001A1CC80014558D4014989F80C11FF68 -:10A13000F338000A106CF36C000AC1E1F33800092F -:10A14000F8081800C19072185808C161F338000867 -:10A15000F8081800C06072085808C0F05818C0C04D -:10A160003018300B931848AA48ACF01F000B300B86 -:10A17000331CF01F000AD802301B485A930B488C3E -:10A18000F01F0005D8020000000079C880018E345D -:10A190008001DA588001EF2080016D6C8001DA8443 -:10A1A000EBCD404048766C3CF01F0007308CF01F30 -:10A1B000000730083009ED6800088D09E3CD8040C4 -:10A1C000000079C8800145308001A128D401308C7D -:10A1D000F01F0002D80A00008001A128EBCD4080CA -:10A1E00048E76E185828C030E3CD80806E58300B99 -:10A1F0006E6C5D18300B8F1B4899F2FA0324F2F84D -:10A2000003201438C040169CF01F0006300B332C7E -:10A21000F01F0005E3CD8080000079C8000084CCE9 -:10A2200080018CE480016D6CEBCD40C018971696D0 -:10A23000F01F0009C0C06E0C581CC0700C9B0E9C17 -:10A24000F01F0006CF91302CE3CD80C03FDCE3CD82 -:10A2500080C000008001462C80014636EBCD404096 -:10A26000301818969908F01F00040C9CF01F00038A -:10A27000E3CD80408001463280014634D401580C41 -:10A28000C030F01F0002D80280014630D4013008EF -:10A290009908F01F0002D8028001462ED401189EB2 -:10A2A000580AC0C196199688F9D9C010103CC165EA -:10A2B000F2C8FFFF973AB618D802581AC06096192C -:10A2C000F2C8FFFFB618D802969996881039C0F4E4 -:10A2D0007648F0090709B889CF3B1D897648F00C0C -:10A2E0000B099619F2C8FFFFB618D8023008973844 -:10A2F000B8889619F2C8FFFFB618D802EBCD408097 -:10A300001897580AC1D1961C9689FDDCC010FCC86C -:10A31000FFFF1238F7FA4A03F7F85004F1DEE508B8 -:10A32000EFF95801F1F95E00EFFA5800F1FA5E0119 -:10A33000F7FC5201F8C8FFFEB618E3CD8080581A2A -:10A34000C070961CF8C8FFFEB618E3CD8080969AC0 -:10A350009689F4C8FFFF1238C09476481408119902 -:10A36000B889118AB89A961CCEEB30089738B8088D -:10A37000961CF8C8FFFEB618E3CD8080EBCD408078 -:10A38000189E169C580AC0F1961B9889EFDBC010E6 -:10A39000EEC8FFFD1238C205F6C8FFFC993AB8189E -:10A3A000E3CD8080581AC070981BF6C8FFFCB8181F -:10A3B000E3CD8080969B9889F6C8FFFD1238C1C412 -:10A3C000784A160A15B8BC8815A9BC991598BCA876 -:10A3D0001589BCB9CEAB1DB8784A0E0AB4881DA940 -:10A3E000B4991D98B4A81D89B4B9981BF6C8FFFC90 -:10A3F000B818E3CD8080300899389D08981BF6C8BE -:10A40000FFFCB818E3CD8080EBCD4068189316951B -:10A410001496F01F000C0C9A0A9BE6CCFFFFF01F6D -:10A4200000090C9A0A9BE6CCFFFEF01F00060C9A6E -:10A430000A9BE6CCFFFDF01F0003E3CD806800001F -:10A440008001A29CD4211697189596141496F01F9B -:10A4500000080C9A0E9BEACCFFFEF01F00060BC80A -:10A460005808F1D4E108EFF81C01D8228001A2FCC1 -:10A470008001A408EBCD4068189316951496F01F40 -:10A4800000060C9A0A9BE6CCFFFCF01F0003E3CD0C -:10A49000806800008001A37CEBCD4068189316957E -:10A4A0001496F01F00090C9A0A9BE6CCFFFCF01FE3 -:10A4B00000070C9A0A9BE6CCFFFAF01F0004E3CDDC -:10A4C000806800008001A37C8001A2FCEBCD406885 -:10A4D000189316951496F01F000F0C9A0A9BE6CC61 -:10A4E000FFFCF01F000D0C9A0A9BE6CCFFFBF01F4F -:10A4F000000A0C9A0A9BE6CCFFFAF01F00070C9AA0 -:10A500000A9BE6CCFFF9F01F0004E3CD8068000051 -:10A510008001A37C8001A29CEBCD40681893169526 -:10A520001496F01F000C0C9A0A9BE6CCFFFCF01F5F -:10A53000000A0C9A0A9BE6CCFFFAF01F00080C9A5E -:10A540000A9BE6CCFFF9F01F0005E3CD8068000010 -:10A550008001A37C8001A2FC8001A29CEBCD40681D -:10A56000189316951496F01F00150C9A0A9BE6CCCA -:10A57000FFFCF01F00120C9A0A9BE6CCFFF8F01FBC -:10A5800000100C9A0A9BE6CCFFF6F01F000D0C9A07 -:10A590000A9BE6CCFFF4F01F00090C9A0A9BE6CC5C -:10A5A000FFF0F01F00070C9A0A9BE6CCFFEEF01FAD -:10A5B0000004E3CD806800008001A37C8001A2FC40 -:10A5C000EBCD4068189316951496F01F00090C9A6D -:10A5D0000A9BE6CCFFFCF01F00060C9A0A9BE6CC17 -:10A5E000FFF8F01F0003E3CD806800008001A37C2A -:10A5F000EBCD4068189316951496F01F00060C9A40 -:10A600000A9BE6CCFFFCF01F0003E3CD806800004E -:10A610008001A37CEBCD4068189316951496F01F2B -:10A62000000C0C9A0A9BE6CCFFFCF01F00090C9A68 -:10A630000A9BE6CCFFF8F01F00060C9A0A9BE6CCBA -:10A64000FFF4F01F0003E3CD806800008001A37CCD -:10A65000EBCD4068189316951496F01F00330C9AB2 -:10A660000A9BE6CCFFFCF01F00300C9A0A9BE6CC5C -:10A67000FFF8F01F002D0C9A0A9BE6CCFFF4F01FA8 -:10A68000002B0C9A0A9BE6CCFFF2F01F00280C9AD4 -:10A690000A9BE6CCFFF0F01F00250C9A0A9BE6CC43 -:10A6A000FFEEF01F00220C9A0A9BE6CCFFECF01F95 -:10A6B000001F0C9A0A9BE6CCFFEAF01F001C0C9AC4 -:10A6C0000A9BE6CCFFE8F01F00190C9A0A9BE6CC27 -:10A6D000FFE6F01F00160C9A0A9BE6CCFFE4F01F81 -:10A6E00000130C9A0A9BE6CCFFE2F01F00110C9AB3 -:10A6F0000A9BE6CCFFE1F01F000E0C9A0A9BE6CC09 -:10A70000FFE0F01F00090C9A0A9BE6CCFFDCF01F6B -:10A7100000060C9A0A9BE6CCFFD8F01F0005E3CD9B -:10A72000806800008001A37C8001A2FC8001A29CC3 -:10A73000EBCD4068189316951496F01F00120C9AF2 -:10A740000A9BE6CCFFFCF01F00100C9A0A9BE6CC9B -:10A75000FFFBF01F000D0C9A0A9BE6CCFFFAF01FDE -:10A76000000A0C9A0A9BE6CCFFF9F01F00070C9A2E -:10A770000A9BE6CCFFF8F01F0004E3CD80680000E0 -:10A780008001A37C8001A29CEBCD406818931695B4 -:10A790001496F01F00060C9A0A9BE6CCFFFCF01FF3 -:10A7A0000003E3CD806800008001A37CEBCD40680E -:10A7B000189316951496F01F00060C9A0A9BE6CC87 -:10A7C000FFFCF01F0003E3CD806800008001A37C44 -:10A7D000EBCD4068189316951496F01F00060C9A5E -:10A7E0000A9BE6CCFFFCF01F0003E3CD806800006D -:10A7F0008001A37CEBCD4068189316951496F01F4A -:10A8000000060C9A0A9BE6CCFFFCF01F0003E3CD88 -:10A81000806800008001A37CEBCD406818931695FA -:10A820001496F01F00060C9A0A9BE6CCFFFCF01F62 -:10A830000003E3CD806800008001A37CEBCD40687D -:10A84000189316951496F01F00060C9A0A9BE6CCF6 -:10A85000FFFCF01F0003E3CD806800008001A37CB3 -:10A86000EBCD4068189316951496F01F00060C9ACD -:10A870000A9BE6CCFFFCF01F0003E3CD80680000DC -:10A880008001A37CEBCD4068189316951496F01FB9 -:10A8900000060C9A0A9BE6CCFFFCF01F0003E3CDF8 -:10A8A000806800008001A37CEBCD4068189316956A -:10A8B0001496F01F00060C9A0A9BE6CCFFFCF01FD2 -:10A8C0000004E3CD806800008001A37C8001A650D5 -:10A8D000EBCD4068189316951496F01F00060C9A5D -:10A8E0000A9BE6CCFFFCF01F0003E3CD806800006C -:10A8F0008001A37CEBCD4068189316951496F01F49 -:10A9000000090C9A0A9BE6CCFFFCF01F00060C9A8B -:10A910000A9BE6CCFFF8F01F0003E3CD806800003F -:10A920008001A37CEBCD4068189316951496F01F18 -:10A9300000060C9A0A9BE6CCFFFCF01F0003E3CD57 -:10A94000806800008001A37CEBCD406818931695C9 -:10A950001496F01F00090C9A0A9BE6CCFFFCF01F2E -:10A9600000060C9A0A9BE6CCFFF8F01F0003E3CD2B -:10A97000806800008001A37CEBCD40681893169599 -:10A980001496F01F00090C9A0A9BE6CCFFFCF01FFE -:10A9900000060C9A0A9BE6CCFFF8F01F0003E3CDFB -:10A9A000806800008001A37CEBCD40681893169569 -:10A9B0001496F01F00060C9A0A9BE6CCFFFCF01FD1 -:10A9C0000003E3CD806800008001A37CEBCD4068EC -:10A9D000189316951496F01F00090C9A0A9BE6CC62 -:10A9E000FFFCF01F00060C9A0A9BE6CCFFF8F01F54 -:10A9F0000003E3CD806800008001A37CEBCD4068BC -:10AA0000189316951496F01F00060C9A0A9BE6CC34 -:10AA1000FFFCF01F0003E3CD806800008001A37CF1 -:10AA2000EBCD4068189316951496F01F00090C9A08 -:10AA30000A9BE6CCFFFCF01F00060C9A0A9BE6CCB2 -:10AA4000FFF8F01F0003E3CD806800008001A37CC5 -:10AA5000EBCD4068189316951496F01F00090C9AD8 -:10AA60000A9BE6CCFFFCF01F00060C9A0A9BE6CC82 -:10AA7000FFF8F01F0003E3CD806800008001A37C95 -:10AA8000EBCD4068189316951496F01F00060C9AAB -:10AA90000A9BE6CCFFFCF01F0003E3CD80680000BA -:10AAA0008001A37CEBCD4068189316951496F01F97 -:10AAB00000060C9A0A9BE6CCFFFCF01F0003E3CDD6 -:10AAC000806800008001A37CEBCD40681893169548 -:10AAD0001496F01F00060C9A0A9BE6CCFFFCF01FB0 -:10AAE0000003E3CD806800008001A37CEBCD4068CB -:10AAF000189316951496F01F00060C9A0A9BE6CC44 -:10AB0000FFFCF01F0004E3CD806800008001A37CFF -:10AB10008001A29CEBCD4068189316951496F01F07 -:10AB200000060C9A0A9BE6CCFFFCF01F0004E3CD64 -:10AB3000806800008001A37C8001D434EBCD4068A4 -:10AB4000189316951496F01F00330C9A0A9BE6CCC6 -:10AB5000FFDEF01F00310C9A0A9BE6CCFFD4F01FF9 -:10AB6000002F0C9A0A9BE6CCFFC2F01F002D0C9A16 -:10AB70000A9BE6CCFFBFF01F002B0C9A0A9BE6CC89 -:10AB8000FFBCF01F00290C9A0A9BE6CCFFB0F01F17 -:10AB900000270C9A0A9BE6CCFFACF01F00250C9A0C -:10ABA0000A9BE6CCFFA4F01F00230C9A0A9BE6CC7C -:10ABB000FF9CF01F00210C9A0A9BE6CCFF98F01F27 -:10ABC000001F0C9A0A9BE6CCFF8CF01F001D0C9A0C -:10ABD0000A9BE6CCFF72F01F001B0C9A0A9BE6CC86 -:10ABE000FF68F01F00190C9A0A9BE6CCFF44F01F87 -:10ABF00000170C9A0A9BE6CCFF50F01F00150C9A28 -:10AC00000A9BE6CCFF30F01F0013E3CD8068000004 -:10AC10008001D3448001D2DC8001D2748001CAF863 -:10AC20008001C9D88001D8608001CA688001CA9CAF -:10AC30008001CA0C8001C9A48001D4348001CDB444 -:10AC40008001CE848001D5588001D6B08001D4E443 -:10AC50008001CFFCEBCD4068189316951496F01F39 -:10AC6000000F0C9A0A9BE6CCFFFCF01F000D0C9A1B -:10AC70000A9BE6CCFFFAF01F000B0C9A0A9BE6CC6D -:10AC8000FFF9F01F00080C9A0A9BE6CCFFF8F01FB2 -:10AC90000006E3CD806800008001A37C8001A2FC57 -:10ACA0008001A29C8001AB3CEBCD406C14951296C8 -:10ACB00018921693E06A00DC129B0A9CF01F001A9F -:10ACC000ECC9FF98EACAFF98069B049CF01F001786 -:10ACD000ECC9FFBCEACAFFBC069B049CF01F001431 -:10ACE000ECC9FF68EACAFF68069B049CF01F0011CC -:10ACF000ECC9FF50EACAFF50069B049CF01F000EEF -:10AD0000ECC9FF44EACAFF44069B049CF01F000BF9 -:10AD1000ECC9FF30EACAFF30069B049CF01F000814 -:10AD2000E3CD806C8002E7368001D1588001D24C9F -:10AD30008001D1E88001D1C08001D21C8001CF9C6C -:10AD4000EBCD40EC1296F2E80000F4E90000ECE8EC -:10AD50000008F4E90008ECE20010F4E30010ECE86D -:10AD6000001814971695F4E90018E06B00E85D15DB -:10AD70008F7CC0D030CA6C7BF01F00066E7A6C7975 -:10AD8000149C0A9B2F492F4AF01F0003E3CD80EC4F -:10AD9000800091DC8001ACA8EBCD40C014971696E2 -:10ADA00074385808C160949E948AF60E00081438CE -:10ADB000F5DEE916F9B80900EFF89A03580CC090CF -:10ADC0005809C0C1189B0C9A6E4C1C0CF01F000A4D -:10ADD0008E180C08AE18E3CD80C05819CFA16E4B69 -:10ADE0000C9A1C0BF01F00048E180C08AE18E3CD53 -:10ADF00080C00000800091DCEBCD40E016971496F7 -:10AE00001895581AC0B0F01F000C0C99189B0E9A98 -:10AE10000A9CF01F000AE3CD80E09698968614996C -:10AE20001016169A0C9BF01F00053008EA060B0856 -:10AE3000E3CD80E0800091B88001AD98EBCD406813 -:10AE4000189316951496F01F00060C9A0A9BE6CCF0 -:10AE5000FFFCF01F0004E3CD806800008001A37CAC -:10AE60008001ADF8EBCD4068189316951496F01F4D -:10AE700000060C9A0A9BE6CCFFFCF01F0004E3CD11 -:10AE8000806800008001A37C8001ADF8EBCD4068B4 -:10AE9000189316951496F01F000F0C9A0A9BE6CC97 -:10AEA000FFFCF01F000C0C9A0A9BE6CCFFF8F01F89 -:10AEB00000090C9A0A9BE6CCFFF4F01F00060C99DF -:10AEC0000A9AE6CCFFF0320BF01F0003E3CD806856 -:10AED0008001A37C8001AD98EBCD40681893169556 -:10AEE0001496F01F000C0C9A0A9BE6CCFFFCF01F96 -:10AEF00000090C9A0A9BE6CCFFF8F01F00060C999B -:10AF00000A9AE6CCFFF4320BF01F0003E3CD806811 -:10AF10008001A37C8001AD98EBCD40681893169515 -:10AF20001496F01F000C0C9A0A9BE6CCFFFCF01F55 -:10AF300000090C9A0A9BE6CCFFF8F01F00070C9959 -:10AF40000A9AE6CCFFF7303BF01F0004E3CD80689F -:10AF50008001A37C8001A29C8001AD98EBCD40686C -:10AF6000189316951496F01F00180C9A0A9BE6CCBD -:10AF7000FFFCF01F00150C9A0A9BE6CCFFF8F01FAF -:10AF800000120C9A0A9BE6CCFFF4F01F000F0C9AFB -:10AF90000A9BE6CCFFF0F01F000C0C9A0A9BE6CC53 -:10AFA000FFECF01F000A0C9A0A9BE6CCFFEAF01FA8 -:10AFB00000080C990A9AE6CCFFE9303BF01F000527 -:10AFC000E3CD80688001A37C8001A2FC8001A29C6B -:10AFD0008001AD98EBCD4068189316951496F01F3C -:10AFE00000280C9A0A9BE6CCFFFCF01F00250C9A67 -:10AFF0000A9BE6CCFFF8F01F00220C9A0A9BE6CCD5 -:10B00000FFF4F01F00200C9A0A9BE6CCFFF2F01F21 -:10B01000001E0C9A0A9BE6CCFFF1F01F001B0C9A55 -:10B020000A9BE6CCFFF0F01F00180C9A0A9BE6CCB6 -:10B03000FFEFF01F00150C9A0A9BE6CCFFEEF01F05 -:10B0400000120C990A9AE6CCFFED306BF01F000F4E -:10B050000C9A0A9BE6CCFFE7F01F000B0C9A0A9BA8 -:10B06000E6CCFFE6F01F00080C990A9AE6CCFFE553 -:10B07000320BF01F0006E3CD806800008001A37C46 -:10B080008001A2FC8001A29C8001AD98EBCD4068BC -:10B09000189316951496F01F00150C9A0A9BE6CC8F -:10B0A000FFFCF01F00120C9A0A9BE6CCFFF8F01F81 -:10B0B000000F0C9A0A9BE6CCFFF4F01F000C0C9AD0 -:10B0C0000A9BE6CCFFF0F01F000A0C9A0A9BE6CC24 -:10B0D000FFEEF01F00080C990A9AE6CCFFED303B1A -:10B0E000F01F0005E3CD80688001A37C8001A2FCF5 -:10B0F0008001A29C8001AD98EBCD40681893169515 -:10B100001496F01F00120C9A0A9BE6CCFFFCF01F6D -:10B1100000100C9A0A9BE6CCFFFBF01F000D0C9967 -:10B120000A9AE6CCFFFA302BF01F000A0C9A0A9B11 -:10B13000E6CCFFF8F01F00050C9A0A9BE6CCFFF462 -:10B14000F01F0002E3CD80688001A37C8001A29CF7 -:10B150008001AD98EBCD4068189316951496F01FBA -:10B1600000120C9A0A9BE6CCFFFCF01F00100C9A10 -:10B170000A9BE6CCFFFBF01F000D0C990A9AE6CC67 -:10B18000FFFA302BF01F000A0C9A0A9BE6CCFFF85E -:10B19000F01F00050C9A0A9BE6CCFFF4F01F00029A -:10B1A000E3CD80688001A37C8001A29C8001AD98E2 -:10B1B000EBCD4068189316951496F01F000C0C9A6E -:10B1C0000A9BE6CCFFFCF01F000A0C9A0A9BE6CC17 -:10B1D000FFFBF01F00070C990A9AE6CCFFFA302B10 -:10B1E000F01F0004E3CD80688001A37C8001A29C55 -:10B1F0008001AD98EBCD4068189316951496F01F1A -:10B2000000090C9A0A9BE6CCFFFCF01F00070C9982 -:10B210000A9AE6CCFFFB303BF01F0004E3CD8068C8 -:10B220008001A37C8001A29C8001AD98EBCD406899 -:10B23000189316951496F01F00090C9A0A9BE6CCF9 -:10B24000FFFCF01F00070C990A9AE6CCFFFB303B8D -:10B25000F01F0004E3CD80688001A37C8001A29CE4 -:10B260008001AD98EBCD4068189316951496F01FA9 -:10B2700000090C9A0A9BE6CCFFFCF01F00070C9912 -:10B280000A9AE6CCFFFB303BF01F0004E3CD806858 -:10B290008001A37C8001A29C8001AD98EBCD406829 -:10B2A000189316951496F01F000C0C9A0A9BE6CC86 -:10B2B000FFFCF01F00090C9A0A9BE6CCFFF8F01F78 -:10B2C00000070C990A9AE6CCFFF7303BF01F000408 -:10B2D000E3CD80688001A37C8001A29C8001AD98B1 -:10B2E000EBCD4068189316951496F01F000C0C9A3D -:10B2F0000A9BE6CCFFFCF01F00090C9A0A9BE6CCE7 -:10B30000FFF8F01F00070C990A9AE6CCFFF7303BD4 -:10B31000F01F0004E3CD80688001A37C8001A29C23 -:10B320008001AD98EBCD4068189316951496F01FE8 -:10B33000000C0C9A0A9BE6CCFFFCF01F00090C9A4B -:10B340000A9BE6CCFFF8F01F00070C990A9AE6CC9E -:10B35000FFF7303BF01F0004E3CD80688001A37C41 -:10B360008001A29C8001AD98EBCD406818931695A2 -:10B370001496F01F000C0C9A0A9BE6CCFFFCF01F01 -:10B3800000090C9A0A9BE6CCFFF8F01F00070C9905 -:10B390000A9AE6CCFFF7303BF01F0004E3CD80684B -:10B3A0008001A37C8001A29C8001AD98EBCD406818 -:10B3B000189316951496F01F00090C9A0A9BE6CC78 -:10B3C000FFFCF01F00070C990A9AE6CCFFFB303B0C -:10B3D000F01F0004E3CD80688001A37C8001A29C63 -:10B3E0008001AD98EBCD4068169514961893F01F28 -:10B3F00000220C990A9AE6CCFFFC308BF01F001F4C -:10B400000C9A0A9BE6CCFFF4F01F001B0C9A0A9BD7 -:10B41000E6CCFFF0F01F00180C9A0A9BE6CCFFEC7C -:10B42000F01F00150C9A0A9BE6CCFFE8F01F0012F3 -:10B430000C9A0A9BE6CCFFE4F01F000F0C9A0A9BC3 -:10B44000E6CCFFE0F01F000E0C9A0A9BE6CCFFDE74 -:10B45000F01F000B0C9A0A9BE6CCFFDCF01F0008E3 -:10B460000C990A9AE6CCFFDA302BF01F0004E3CDEA -:10B47000806800008001A37C8001AD988001A2FC5F -:10B48000EBCD4068189316951496F01F00090C9A9E -:10B490000A9BE6CCFFFCF01F00070C990A9AE6CC49 -:10B4A000FFFB303BF01F0004E3CD80688001A37CEC -:10B4B0008001A29C8001AD98EBCD40681695149652 -:10B4C0001893F01F00060C990A9AE6CCFFFC308B0B -:10B4D000F01F0003E3CD80688001A37C8001AD985C -:10B4E000EBCD4068189316951496F01F00090C9A3E -:10B4F0000A9BE6CCFFFCF01F00070C990A9AE6CCE9 -:10B50000FFFB303BF01F0004E3CD80688001A37C8B -:10B510008001A29C8001AD98EBCD406818931695F0 -:10B520001496F01F00100C9A0A9BE6CCFFFCF01F4B -:10B53000000E0C990A9AE6CCFFFB306BF01F000B53 -:10B540000A9AE6CCFFF50C99306BF01F00080C9AB4 -:10B550000A9BE6CCFFEFF01F0004E3CD80680000FB -:10B560008001A37C8001A29C8001AD98EBCD406856 -:10B57000169514961893F01F000C0C990A9AE6CCB5 -:10B58000FFFC306BF01F00090C9A0A9BE6CCFFF61B -:10B59000F01F00070C9A0A9BE6CCFFF5F01F000491 -:10B5A000E3CD80688001A37C8001AD988001A29CDE -:10B5B000EBCD4068169514961893F01F000D0C996A -:10B5C0000A9AE6CCFFFC306BF01F000A0A9AE6CC20 -:10B5D000FFF60C99302BF01F00070C9A0A9BE6CC63 -:10B5E000FFF4F01F0005E3CD806800008001A37C1C -:10B5F0008001AD988001AB3CEBCD40681695149668 -:10B600001893F01F000D0C990A9AE6CCFFFC306BE2 -:10B61000F01F000A0A9AE6CCFFF60C99302BF01FB7 -:10B6200000070C9A0A9BE6CCFFF4F01F0005E3CD5F -:10B63000806800008001A37C8001AD988001AB3C54 -:10B64000EBCD4068169514961893F01F00100C99D6 -:10B650000A9AE6CCFFFC306BF01F000D0C9A0A9B97 -:10B66000E6CCFFF6F01F000B0C9A0A9BE6CCFFF429 -:10B67000F01F00080C990A9AE6CCFFF2302BF01F5D -:10B680000004E3CD806800008001A37C8001AD98B8 -:10B690008001A2FCEBCD4068169514961893F01F1C -:10B6A000000A0C990A9AE6CCFFFC306BF01F0007E9 -:10B6B0000C990A9AE6CCFFF6302BF01F0004E3CD7C -:10B6C000806800008001A37C8001AD98EBCD4068CC -:10B6D000169514961893F01F000A0C990A9AE6CC56 -:10B6E000FFFC306BF01F00070C990A9AE6CCFFF6BE -:10B6F000302BF01F0004E3CD806800008001A37CA4 -:10B700008001AD98EBCD4068189316951496F01F04 -:10B7100000220C9A0A9BE6CCFFFCF01F00200C9A3A -:10B720000A9BE6CCFFFAF01F001D0C9A0A9BE6CCA0 -:10B73000FFF8F01F001A0C990A9AE6CCFFF6306B5E -:10B74000F01F00170C9A0A9BE6CCFFF0F01F0015C3 -:10B750000C9A0A9BE6CCFFEFF01F00120C990A9A94 -:10B76000E6CCFFEE302BF01F000E0C9A0A9BE6CCC5 -:10B77000FFECF01F00090C9A0A9BE6CCFFE8F01FD3 -:10B7800000060C9A0A9BE6CCFFE4F01F0007E3CD0D -:10B79000806800008001A37C8001A2FC8001AD983C -:10B7A0008001A29C8001AB3CEBCD406816951496BD -:10B7B0001893F01F000C0C990A9AE6CCFFFC306B32 -:10B7C000F01F00090C9A0A9BE6CCFFF6F01F000759 -:10B7D0000C9A0A9BE6CCFFF5F01F0004E3CD8068CD -:10B7E0008001A37C8001AD988001A29CEBCD4068D4 -:10B7F000169514961893F01F000C0C990A9AE6CC33 -:10B80000FFFC306BF01F00090C9A0A9BE6CCFFF698 -:10B81000F01F00070C9A0A9BE6CCFFF5F01F00040E -:10B82000E3CD80688001A37C8001AD988001A29C5B -:10B83000EBCD4068189316951496F01F00120C9AE1 -:10B840000A9BE6CCFFFCF01F00100C9A0A9BE6CC8A -:10B85000FFFAF01F000D0C9A0A9BE6CCFFF8F01FD0 -:10B86000000A0A9AE6CCFFF60C99306BF01F00072D -:10B870000C9A0A9BE6CCFFF0F01F0005E3CD806830 -:10B880008001A37C8001A2FC8001AD988001AB3CCB -:10B89000EBCD4068189316951496F01F00100C9A83 -:10B8A0000A9BE6CCFFFCF01F000E0C9A0A9BE6CC2C -:10B8B000FFFAF01F000B0C990A9AE6CCFFF8306BE8 -:10B8C000F01F00080C990A9AE6CCFFF2302BF01F0B -:10B8D0000005E3CD806800008001A37C8001A2FC0C -:10B8E0008001AD98EBCD4068189316951496F01F23 -:10B8F00000090C9A0A9BE6CCFFFFF01F00060C998A -:10B900000A9AE6CCFFFE302BF01F0003E3CD8068DF -:10B910008001A29C8001AD98EBCD406816951496ED -:10B920001893F01F00130C990A9AE6CCFFFF306BB6 -:10B93000F01F00100C9A0A9BE6CCFFF9F01F000CD8 -:10B940000C9A0A9BE6CCFFF8F01F00090A9AE6CC95 -:10B95000FFF70C99306BF01F00070C9A0A9BE6CC9E -:10B96000FFF1F01F0003E3CD806800008001A29C7E -:10B970008001AD98EBCD4068189316951496F01F92 -:10B9800000060C9A0A9BE6CCFFFCF01F0004E3CDF6 -:10B99000806800008001A37C8001B918EBCD40686D -:10B9A0001696149518931499169A306BF01F000888 -:10B9B0000A9A0C9BE6CCFFFAF01F00060A9A0C9B31 -:10B9C000E6CCFFF9F01F0003E3CD80688001AD985D -:10B9D0008001A29CEBCD4068189316951496F01F39 -:10B9E00000060C9A0A9BE6CCFFFCF01F0004E3CD96 -:10B9F000806800008001A37C8001B99CEBCD406889 -:10BA0000189316951496F01F00090C9A0A9BE6CC21 -:10BA1000FFFFF01F00060C990A9AE6CCFFFE306B80 -:10BA2000F01F0003E3CD80688001A29C8001AD98E7 -:10BA3000EBCD4068189316951496F01F00060C9AEB -:10BA40000A9BE6CCFFFCF01F0004E3CD80680000F9 -:10BA50008001A37C8001B9FCD4011499169A308B23 -:10BA6000F01F0002D80200008001AD98EBCD4068C5 -:10BA7000169514961893F01F00090A9AE6CCFFFC5D -:10BA80000C99306BF01F00060C9A0A9BE6CCFFF66F -:10BA9000F01F0004E3CD80688001A37C8001AD9895 -:10BAA0008001A2FCEBCD4068189316951496F01F08 -:10BAB00000090C9A0A9BE6CCFFFCF01F00070C99CA -:10BAC0000A9AE6CCFFFB303BF01F0004E3CD806810 -:10BAD0008001A37C8001A29C8001AD98D4011499BF -:10BAE000169A320BF01F0002D80200008001AD98B8 -:10BAF000EBCD4068189316951496F01F00180C9A19 -:10BB00000A9BE6CCFFE0F01F00160C9A0A9BE6CCDD -:10BB1000FFDEF01F00140C9A0A9BE6CCFFDDF01F3D -:10BB200000110C990A9AE6CCFFDC306BF01F000E76 -:10BB30000C9A0A9BE6CCFFD6F01F000C0C9A0A9BCD -:10BB4000E6CCFFCEF01F00070C9A0A9BE6CCFFCD97 -:10BB5000F01F0004E3CD80688001BADC8001A2FC04 -:10BB60008001A29C8001AD988001BA58EBCD40685D -:10BB7000189316951496F01F00060C9A0A9BE6CCB3 -:10BB8000FFFCF01F0004E3CD806800008001A37C6F -:10BB90008001BAF0D4011499169A303BF01F0002CC -:10BBA000D80200008001AD98EBCD40E018971695C3 -:10BBB0001496F01F000D6E1C580CC0800C990A9A48 -:10BBC0006E0BF01F000AE3CD80E05816C0918A99F1 -:10BBD0006A4812088F186E098A181208AA18E3CD4D -:10BBE00080E000008001A37C8001AD98EBCD40682F -:10BBF000189316951496F01F00060C9A0A9BE6CC33 -:10BC0000FFFCF01F0004E3CD806800008001A37CEE -:10BC10008001BBA8EBCD4068189316951496F01FD1 -:10BC200000100C9A0A9BE6CCFFFCF01F000E0C994A -:10BC30000A9AE6CCFFFB303BF01F000B0A9AE6CCD9 -:10BC4000FFF80C99308BF01F00080C9A0A9BE6CC89 -:10BC5000FFF0F01F0006E3CD806800008001A37CA8 -:10BC60008001A29C8001AD988001BBA8EBCD40680B -:10BC7000169514961893F01F00090A9AE6CCFFFC5B -:10BC80000C99308BF01F00060C9A0A9BE6CCFFF44F -:10BC9000F01F0004E3CD80688001A37C8001AD9893 -:10BCA0008001BBA8EBCD40801697189B580AC0F1C5 -:10BCB0008E1C8E89FDDCC010FCC8FFF91238C285CD -:10BCC000F8C8FFF88F3AAE18E3CD8080581AC070DC -:10BCD0008E1CF8C8FFF8AE18E3CD80808E9A8E894E -:10BCE000F4C8FFF91238C2C46E48140811F9B889B3 -:10BCF00011EAB89A11D9B8A911CAB8BA11B9B8C914 -:10BD000011AAB8DA1199B8E9118AB8FACE2B17F846 -:10BD10006E4A1C0AB48817E9B49917D8B4A817C991 -:10BD2000B4B917B8B4C817A9B4D91798B4E8178923 -:10BD3000B4F98E1CF8C8FFF8AE18E3CD8080300B44 -:10BD4000308A8F3BF01F00028E1CCC4B800091D0BC -:10BD5000EBCD4068189316951496F01F000C0C9AC2 -:10BD60000A9BE6CCFFF8F01F000A0C9A0A9BE6CC6F -:10BD7000FFF6F01F00070C9A0A9BE6CCFFF4F01FB9 -:10BD80000005E3CD806800008001BCA48001A2FC16 -:10BD90008001AB3CEBCD40F8206D169714961499BA -:10BDA0001895169A306BF01F002D0C9A0E9BEACC5A -:10BDB000FFFAF01F002B0C9A0E9BEACCFFF9F01F44 -:10BDC00000280C9A0E9BEACCFFF8F01F00260C9A74 -:10BDD0000E9BEACCFFF0F01F00240C9A0E9BEACCDD -:10BDE000FFECF01F0021318A0E9B1A9CF01F001FF0 -:10BDF000EAC3FFE81A940C9A1A9B069CF01F001ADB -:10BE00005816C1801A9B0C9A6A7CF01F00199A98E8 -:10BE10008E992048F00901098B690C9A069C0E9BAB -:10BE2000F01F00116A698E181208AE182FADE3CD0D -:10BE300080F86A698E182FC81208E06B00E8BA080B -:10BE40006E5CF01F000C8B7CCF20505C1A9B0C9A10 -:10BE5000F01F0007CE3B00008001AD988001A29C3E -:10BE60008001BCA48001A37C800091DC8001BD50D6 -:10BE70008001D3ECEBCD4068189316951496F01F13 -:10BE800000120C9A0A9BE6CCFFFCF01F00100C9AE3 -:10BE90000A9BE6CCFFFAF01F000D0C9A0A9BE6CC39 -:10BEA000FFF8F01F00090C9A0A9BE6CCFFF4F01F84 -:10BEB00000060C9A0A9BE6CCFFF0F01F0005E3CDCC -:10BEC000806800008001A37C8001A2FC8001BD94F9 -:10BED000EBCD40E0189716951496F01F000B0C9AC6 -:10BEE0000A9BEECCFFFCF01F00090FD93008F009C7 -:10BEF0001800C0700C9A0A9BEECCFFF8F01F0004EB -:10BF0000E3CD80E08001A37C8001B8E48001BD9492 -:10BF1000EBCD4060202D301A18951696FACCFFFE16 -:10BF2000F01F00089A181BF92FE8F0090109AC0965 -:10BF30001BCA8B5A1BD88B482FEDE3CD80600000C5 -:10BF40008001A444EBCD40E07808975818971696E6 -:10BF50007859E049003FE0880004E3CF80E0FEF834 -:10BF6000029AF009032F78455815E0800127E04533 -:10BF70000080CF41780C301AF01F00A1E3CF90E091 -:10BF800078485808C391780C301AF01F009EE3CF10 -:10BF900090E07848F0C90005E049008FFE9BFFDF84 -:10BFA000FEF80264F009032F7848E0480081E08041 -:10BFB000010CE08A002BE0480083E0800118E08556 -:10BFC0000110E0480085CCA1780C301AF01F008FDA -:10BFD000E3CF90E0780C301AF01F008DE3CF90E0B3 -:10BFE0007848F0C90001E049009BFE9BFFB8FEF8CD -:10BFF0000222F009032FE0480081CB01780C301AAF -:10C00000F01F0085E3CF90E05848E08000E4E0486E -:10C010000080CA41781A300B780CF01F00806E0C3B -:10C020000C9B301AF01F007EE3CF90E0780C301AA2 -:10C03000F01F007CE3CF90E0780C301AF01F007AFC -:10C04000E3CF90E0780C301AF01F0078E3CF90E057 -:10C05000780C301AF01F0076E3CF90E0780C301A9D -:10C06000F01F0074E3CF90E0780C301AF01F0072DC -:10C07000E3CF90E0780C301AF01F0070E3CF90E02F -:10C08000780C301AF01F006EE3CF90E0780C301A75 -:10C09000F01F006CE3CF90E0780C301AF01F006ABC -:10C0A000E3CF90E0780C301AF01F0068E3CF90E007 -:10C0B000780C301AF01F0066E3CF90E0780C301A4D -:10C0C000F01F0064E3CF90E0780C301AF01F00629C -:10C0D000E3CF90E0780C301AF01F0060E3CF90E0DF -:10C0E000780C301AF01F005EE3CF90E0780C301A25 -:10C0F000F01F005CE3CF90E0780C301AF01F005A7C -:10C10000E3CF90E0780C301AF01F0058E3CF90E0B6 -:10C11000780C301AF01F0056E3CF90E0780C301AFC -:10C12000F01F0054E3CF90E0780C301AF01F00525B -:10C13000E3CF90E0780C301AF01F0050E3CF90E08E -:10C14000780C301AF01F004EE3CF90E0780C301AD4 -:10C15000F01F004CE3CF90E0780C301AF01F004A3B -:10C16000E3CF90E0780C301AF01F0048E3CF90E066 -:10C17000780C301AF01F0046E3CF90E0780C301AAC -:10C18000F01F0044E3CF90E0780C301AF01F00421B -:10C19000E3CF90E0780C301AF01F0040E3CF90E03E -:10C1A000780C301AF01F003EE3CF90E0780C301A84 -:10C1B000F01F003CE3CF90E0780C0A9AF01F003AA1 -:10C1C0000A9CE3CD80E0780C301AF01F0038E3CFF2 -:10C1D00090E0780C301AF01F0036E3CF90E0780C36 -:10C1E000301AF01F0034E3CF90E0780C301AF01FC3 -:10C1F0000032E3CF90E000008003B8288001AAEC71 -:10C200008001A4988003B9288001B3248001A37C15 -:10C210008003BB688001A4CC800091D08001BC1455 -:10C220008001BAA48001A4748001BA6C8001AC546E -:10C230008001AA808001AE8C8001AAC88001AAA4D6 -:10C240008001AA208001AF5C8001A9CC8001A9787F -:10C250008001A9488001A8F48001A8D08001A884A9 -:10C260008001A8608001B1548001B1B08001B1F4B7 -:10C270008001A8188001AA508001B0F88001A83C74 -:10C280008001A7F48001B4E08001B56C8001B5B0F5 -:10C290008001B5F88001B6408001BED08001B5189C -:10C2A0008001B9748001AE3C8001B3AC8001A6145A -:10C2B0008001B3688001B2E0EBCD40C012971499C1 -:10C2C0008E96109A582CC280E08A0008584CC360A1 -:10C2D000587CC190E3CF80C0580CC0A0581CCFB18F -:10C2E00058EBFE9BFFF9FEF80312F00B032F580BDF -:10C2F000CF21129C0E9BF01F00C28E98F006010CFD -:10C30000E3CD80C0202BE04B007FFE9BFFE5FEF8D5 -:10C3100002F2F00B032F582BE080015DE089001A38 -:10C32000580BC260581BCD71129C0E9BF01F00B6BB -:10C330008E98F006010CE3CD80C0580BCCC1129C46 -:10C340000E9BF01F00B28E98F006010CE3CD80C06A -:10C35000584BC170E0850148585BCBD1129C0E9BB5 -:10C36000F01F00AB8E98F006010CE3CD80C0129C4C -:10C370000E9BF01F00A88E98F006010CE3CD80C044 -:10C38000129C0E9BF01F00A48E98F006010CE3CDCA -:10C3900080C0129C0E9BF01F00A18E98F006010C2D -:10C3A000E3CD80C0129C0E9BF01F009D8E98F0067E -:10C3B000010CE3CD80C0129C0E9BF01F009A8E985A -:10C3C000F006010CE3CD80C0129C0E9BF01F00967E -:10C3D0008E98F006010CE3CD80C0129C0E9BF01FDE -:10C3E00000938E98F006010CE3CD80C0129C0E9B4A -:10C3F000F01F008F8E98F006010CE3CD80C0129CD8 -:10C400000E9BF01F008C8E98F006010CE3CD80C0CF -:10C41000129C0E9BF01F00888E98F006010CE3CD55 -:10C4200080C0129C0E9BF01F00858E98F006010CB8 -:10C43000E3CD80C0129C0E9BF01F00818E98F00609 -:10C44000010CE3CD80C0129C0E9BF01F007E8E98E5 -:10C45000F006010CE3CD80C0129C0E9BF01F007A09 -:10C460008E98F006010CE3CD80C0129C0E9BF01F4D -:10C4700000778E98F006010CE3CD80C0129C0E9BD5 -:10C48000F01F00738E98F006010CE3CD80C0129C63 -:10C490000E9BF01F00708E98F006010CE3CD80C05B -:10C4A000129C0E9BF01F006C8E98F006010CE3CDE1 -:10C4B00080C0129C0E9BF01F00698E98F006010C44 -:10C4C000E3CD80C0129C0E9BF01F00658E98F00695 -:10C4D000010CE3CD80C0129C0E9BF01F00628E9871 -:10C4E000F006010CE3CD80C0129C0E9BF01F005E95 -:10C4F0008E98F006010CE3CD80C0129C0E9BF01FBD -:10C50000005B8E98F006010CE3CD80C0129C0E9B60 -:10C51000F01F00578E98F006010CE3CD80C0129CEE -:10C520000E9BF01F00548E98F006010CE3CD80C0E6 -:10C53000129C0E9BF01F00508E98F006010CE3CD6C -:10C5400080C0129C0E9BF01F004D8E98F006010CCF -:10C55000E3CD80C0129C0E9BF01F00498E98F00620 -:10C56000010CE3CD80C0129C0E9BF01F00468E98FC -:10C57000F006010CE3CD80C0129C0E9BF01F004220 -:10C580008E98F006010CE3CD80C0129C0E9BF01F2C -:10C59000003F8E98F006010CE3CD80C0129C0E9BEC -:10C5A000F01F003B8E98F006010CE3CD80C0129C7A -:10C5B0000E9BF01F00388E98F006010CE3CD80C072 -:10C5C000129C0E9BF01F00348E98F006010CE3CDF8 -:10C5D00080C0129C0E9BF01F00318E98F006010C5B -:10C5E000E3CD80C0129C0E9BF01F002D8E98F006AC -:10C5F000010CE3CD80C000008003BDD88001A49869 -:10C600008003BE148001BC6C8001AE648001A5C0B3 -:10C610008001B4B88001A5F08001B8308001B29CDF -:10C620008001B6948001B6CC8001B9D48001BA30C3 -:10C630008001BB6C8001B7048001B7EC8001BA6C4B -:10C640008001B8908001BE748001A5188001A55CAE -:10C650008001B7A88001A7308001A7888001AE8C37 -:10C660008001AED88001A7D08001AB148001AF1843 -:10C670008001A9FC8001A9A88001AFD48001A92470 -:10C680008001B08C8001A8A88001B22C8001A7ACE9 -:10C690008001B2648001BBEC8001B4808001B3E40E -:10C6A000EBCD40FE208D306A18977853784578019D -:10C6B000FAC2FFE6300B049CF01F00384B88F139BA -:10C6C000010BE06AFFFFFB69001E300B1A9CF01F94 -:10C6D0000035302A1A9B049CF01F0033029A302840 -:10C6E0001A990A9B069CF01F00319A194B08F9D938 -:10C6F000C0101188103CF9B60200F1DCE318E06AC2 -:10C7000000FFF1DAE326EDD9E309FBF93C01F9D6A4 -:10C71000E30C1A944A78118A580AC060F4C80001E0 -:10C72000F9E80008C2918F3CF01F00238F2CC31042 -:10C730006E3A300BF01F0019FB66001F6E2BFB6377 -:10C74000001CFB65001D8E78F5D8C01020281A9CAF -:10C75000FB58001AF01F0013049C1A9B300AF01FAC -:10C7600000121A99029A0A9B069C3008F01F000FCB -:10C770002F8DE3CF90FE9A18F4C90001F9E9000962 -:10C78000F40901095C591208120CBA181206CCCB34 -:10C790002F8DE3CD80FE0000800091D0000087F453 -:10C7A0008001C7B88001A4448001C2B8000079E5C7 -:10C7B000000079E48000920030083019B838B818C9 -:10C7C000B828B80A3008994B993999285EFCD703E4 -:10C7D000EBCD4068189316951496F01F00090C9A3B -:10C7E0000A9BE6CCFFFFF01F00060C9A0A9BE6CCE2 -:10C7F000FFFEF01F0004E3CD806800008001A29CD2 -:10C800008001A2FCEBCD40681696149518931499FC -:10C81000169A303BF01F00050A9A0C9BE6CCFFFDF0 -:10C82000F01F0003E3CD80688001AD988001A29CD9 -:10C83000EBCD40681696149518931499169A303BD0 -:10C84000F01F00050A9A0C9BE6CCFFFDF01F0003C9 -:10C85000E3CD80688001AD988001A29CD431FACEEE -:10C86000FFDC189616971494129210907C157C0198 -:10C87000581AC2D0C153582AC1300D893FF8F00967 -:10C880001800C2100D98E2081900E08B0005E008BE -:10C890001900C6E23FF83009AC88AC99D83A8E1836 -:10C8A000AE383FF80D89F0091800C0D00C9C089AEA -:10C8B0000E9BF01F0034089A0E9BECCCFFFFF01F7C -:10C8C0000031CDCB3008300CAC98D83296285808BF -:10C8D000C4C0B618AE3830088B08AC983FFAAC8AA2 -:10C8E0008E198E08F2081900FE98FFEE1494ECC31E -:10C8F000FFFFC1D8E8081800EDF41E000D9A8E184D -:10C900008E89F408000B5C781019123AE089002631 -:10C91000AE1B6A082FF88B080D89E8091800CB3187 -:10C920008E198E08F2081900FE98FFCEAE39301A23 -:10C930000E9B0C9CF01F0013301A0E9B069CF01FE0 -:10C9400000110D88E4081800CD618E888E990D9A2B -:10C950001218103AE08A000E3FF83009AC88AC9902 -:10C960008E182028AE08C8AB9618B628CB4BDA3AFA -:10C970006A0A6E293018F00A094810498F29C7EB56 -:10C980008001A29CEBCD4040201D1A9E9AF65C7857 -:10C990001ADE1AD6F01F00032FED2FFDE3CD8040E5 -:10C9A0008001C85CEBCD40E0302818951AD8169667 -:10C9B00014973069F01F00072FFD580CC0700E9AB5 -:10C9C0000C9BEACCFFFEF01F0004E3CD80E00000EA -:10C9D0008001C9848001A2FCEBCD40E0301818959D -:10C9E0001AD81696149732A9F01F00072FFD580C7D -:10C9F000C0700E9A0C9BEACCFFFEF01F0004E3CD42 -:10CA000080E000008001C9848001A29CEBCD40E061 -:10CA1000305818951AD8169614973029F01F001020 -:10CA20002FFD580CC190EACCFFFE0E9A0C9BF01F14 -:10CA3000000D0E9A0C9BEACCFFFCF01F000B0E9A27 -:10CA40000C9BEACCFFFBF01F00080E9A0C9BEACC73 -:10CA5000FFFAF01F0005E3CD80E000008001C984EB -:10CA60008001A2FC8001A29CEBCD40E0301818951B -:10CA70001AD8169614973039F01F00072FFD580C5E -:10CA8000C0700E9A0C9BEACCFFFEF01F0004E3CDB1 -:10CA900080E000008001C9848001A29CEBCD40E0D1 -:10CAA000306818951AD8169614973049F01F001060 -:10CAB0002FFD580CC190EACCFFFE0E9A0C9BF01F84 -:10CAC000000D0E9A0C9BEACCFFFDF01F000A0E9A97 -:10CAD0000C9BEACCFFFCF01F00080E9A0C9BEACCE2 -:10CAE000FFFAF01F0005E3CD80E000008001C9845B -:10CAF0008001A29C8001A2FCEBCD40E0301818958B -:10CB00001AD81696149730A9F01F00072FFD580C5D -:10CB1000C0700E9A0C9BEACCFFFEF01F0004E3CD20 -:10CB200080E000008001C9848001A29CD43120BD36 -:10CB30005019500818961697581AC390C272E06898 -:10CB400000FDE06900DD1AD8300A3018F01F005CE3 -:10CB50002FFD580CC1E0300A0E9BECCCFFFEF01FFD -:10CB60000059300A0E9BECCCFFFDF01F0056300A36 -:10CB70000E9BECCCFFFCF01F0053ECCCFFFB0E9B9C -:10CB8000300AF01F0050301CC048582AC040301CEA -:10CB90002F5DD83219893FF8F0091800E080008B2A -:10CBA0009618301C2FA8B6182F5DD832761850581A -:10CBB000B1485038760A504AF6E80008F8C2FFFE3D -:10CBC000FAE90018F8C3FFFDF6EA0010F8C9FFFB08 -:10CBD000FAEB0020F8C4FFFC50293FF5FAC0FFD85B -:10CBE000E06100FDC0680D998E382FE81208AE286C -:10CBF0001AD030181AD1E06900DD109A0E9B0C9CF7 -:10CC0000F01F00312FED580CC4105805FBF5500AE9 -:10CC1000FBF8400AF9B90401F1D9E408EBD8E405BE -:10CC2000301A0E9B049CF01F0027301A0E9B069CA6 -:10CC3000F01F0024301A0E9B089CF01F00220DA844 -:10CC40003009F2081800CD010DB83509F2081800B6 -:10CC5000CCB10DC83F29F2081800CC61301A0E9BE8 -:10CC6000402CF01F00180DD84019F2081800CBC155 -:10CC70004038301CAE28F80509496E2812488F2824 -:10CC800040095809C8509305C84B4038FB58001458 -:10CC9000FAE80020EEE90010FAEA0010EEEB0000DE -:10CCA000FAE80018EEE90008AC9C3FF8AC882F5D6C -:10CCB000D8323008B898300CC6CB00008001C98447 -:10CCC0008001A29C8001C85CD431207D1895169704 -:10CCD00014961293581AC110C0B2300830290C9A19 -:10CCE0000E9B0A9CF01F0032C5712F9DD832582A26 -:10CCF000CF50301C2F9DD83276185018760AF0008D -:10CD00001410500A1A91F6E80008F8C4FFFAFAE97C -:10CD100000083FF6F6EA0010FAC2FFE8FAEB00104E -:10CD2000C1A85806FBF65006FBF84006F9B9040105 -:10CD3000F1D9E408EDD8E406301A0E9B089CF01FE8 -:10CD4000001D0BE8E6081800C1D00B998E382FE8BB -:10CD50001208AE2804983029301A0E9B0A9CF01F46 -:10CD60000014CE01BA20E2E80010EEE90010E2E87B -:10CD70000000EEE90000E2EA0008EEEB00082F9D5B -:10CD8000D83230186E29F006094AAE201449109C9A -:10CD90008F292F9DD8320B982FF8EACCFFFA0C9AE6 -:10CDA0000E9BAA98F01F0003301CCA5B8001CB2C9D -:10CDB0008001A29CEBCD40EC206D301918971693A2 -:10CDC0001495F01F002DC0412FADE3CD80ECEECCCB -:10CDD000FFF90A9A069BF01F00290A9A069BEECCDF -:10CDE000FFF8F01F00260A9A069BEECCFFF7F01F13 -:10CDF00000230A9A069BEECCFFF6F01F00210A9A48 -:10CE0000069BEECCFFF2F01F001E0A9A069BEECCAA -:10CE1000FFEEF01F001B0A9A069BEECCFFEAF01F04 -:10CE2000001858055F0858255F091248CCE06608CD -:10CE30005008661886160A9A5018EBD8B010BA1522 -:10CE4000E6E80008FAE900082026E6E20010E068BB -:10CE500000FD0A16AE961A9BFAE300100E9C1AD833 -:10CE6000E06900DD3018F01F00072FFD2FADE3CD86 -:10CE700080EC00008001CCC88001A29C8001C7D05A -:10CE80008001C984EBCD40EC206D18971693149562 -:10CE9000582AC18119893FF8F0091800F9F91801D9 -:10CEA000F7F81201F9BA0102F1DAE108F1D9E10863 -:10CEB000F7F81C01F9B80000F9F80E012FADE3CD29 -:10CEC00080EC3009F01F0019CFA0EECCFFF90A9AD0 -:10CED000069BF01F00170A9A069BEECCFFF8F01F86 -:10CEE00000145805CEC166085008661886160A9ABE -:10CEF0005018EBD8B010BA15E6E80008FAE90008B7 -:10CF00002026E6E20010E06800FD0A16AE961A9BA5 -:10CF1000FAE300100E9C1AD8E06900DD3018F01F0B -:10CF200000052FFDCCCB00008001CCC88001A29C65 -:10CF30008001C984D42112951497580A5F095805B5 -:10CF40005F08169A1248C2510B986E29F0C4FFFE72 -:10CF5000F2C800015BD8E08B0015129C089B5D1A9B -:10CF600018965806C0C06E086E192FF80809089A5E -:10CF70000A9B8F088F190C9CF01F00080C9CD8226C -:10CF8000089B5D1A300818968F2C8F188F08CEAB2F -:10CF900030060C9CD8220000800091DCEBCD40FCD8 -:10CFA00012951494580A5F0958055F0818921248A0 -:10CFB0001693C191300995296A085808E08A00162D -:10CFC00012966A270E99089A069B049CF01F000B84 -:10CFD0002FF6EEF7FFF86A085807F7B701F80C3894 -:10CFE000FE99FFF2E3CD80FCEAE80000F4E90000DE -:10CFF0006A2A892AE3CD80FC8001CF34EBCD40FC46 -:10D0000018931695581AC2C0C053582AC5E0E3CDEC -:10D0100080FC782778085808FE9AFFFB7819580991 -:10D02000FE9AFFF79698300612087649F208000437 -:10D030000F9A0E9B2FEA1414089CF01F00332FF652 -:10D04000EEF7FFF866085807F7B701F80C38FE99B5 -:10D05000FFF166198A181208AA18E3CD80FC9628F9 -:10D060005808C3C0B618F9D8B010AA3C300830121E -:10D0700087088718872810948A1C8A0E189AFC0C37 -:10D080001900C212F7DAC0106A46EC0B00081199B9 -:10D09000F2C7FFFE5827C250F1DEC0101618103735 -:10D0A000E0890020E40409496A2B2FF4F3EB00081F -:10D0B000C1C0F4070008AA18F9D8B010189AFC0CDF -:10D0C0001900CE13E3CD80FC781C580CFE9AFFA10A -:10D0D00096181808B618E3CD80FC961CB62CCC6BBD -:10D0E000AA0CFDDCB010CCBBF3EB1008069A8A99B1 -:10D0F0008B28EC090009485B6A5CF01F00058A1A5E -:10D100008A0ECD8B800091DC8001D3EC8001CF347E -:10D11000EBCD40F83FF510941697149340661388B2 -:10D12000EA081800C05130070E9CE3CD80F858047F -:10D130005F1858065F991268CF700C9B5D1718979F -:10D14000C0600C9A089BF01F0004CEFBA685A69C2D -:10D15000CECB0000800091DCEBCD40C0129EF2E807 -:10D160000000F4E9000014977C2A8F2A18961D8984 -:10D17000169C3FF8F0091800C1401D993058F0097D -:10D180001800E088000F2039E06A5556EA1A555514 -:10D19000F20B141FF20A04481619F2090019C028EC -:10D1A00030091AD9189B1C990C9C7C280E9AF01FE8 -:10D1B00000042FFD8F2CE3CD80C000008001D11032 -:10D1C000EBCD406CF2E20000F4E3000072289528F9 -:10D1D0001495722813961AD6F01F00032FFD8B2C7E -:10D1E000E3CD806C8001D110EBCD406FF2E2000006 -:10D1F000F4E30000F2E00008F4E10008F2E20010BD -:10D20000F4E300101495725813961AD6F01F000319 -:10D210002FFD8B5CE3CD806F8001D110EBCD406F93 -:10D22000F2E20000F4E30000F2E00008F4E100089C -:10D23000724895481495724813961AD6F01F000349 -:10D240002FFD8B4CE3CD806F8001D110EBCD406C76 -:10D25000F2E20000F4E30000722895281495722889 -:10D2600013961AD6F01F00032FFD8B2CE3CD806C94 -:10D270008001D110D421310418971AD41696149530 -:10D2800030183329F01F00142FFD580CC0B058057A -:10D29000C0E18C986C4C0F9A100CEECBFFFEF01F87 -:10D2A000000F0F998C181208AC18D8225815CFA16E -:10D2B0000F9AE80A1800E08800073FF83009AE88A6 -:10D2C000AE99CF0B8C986C4BEECCFFFE100BF01F81 -:10D2D0000003CE8B8001C984800091DCD4213018FA -:10D2E000189716961495308410991AD4F01F0014CC -:10D2F0002FFD580CC0B05805C0E18C986C4C0F9AAB -:10D30000100CEECBFFFEF01F000F0F998C181208C7 -:10D31000AC18D8225815CFA10F9AE80A1800E08857 -:10D3200000073FF83009AE88AE99CF0B8C986C4B54 -:10D33000EECCFFFE100BF01F0003CE8B8001C984E2 -:10D34000800091DCEBCD40E0320930081AD9189505 -:10D35000169714961099F01F00132FFD580CC0F06B -:10D360005806C0F18E986E4C0B9A100CEACBFFFE5B -:10D37000F01F000D0B998E181208AE18E3CD80E057 -:10D380005816CF918E986E4B0B9A100BEACCFFFE7D -:10D39000F01F00050B998E181208AE18CF0B000075 -:10D3A0008001C984800091ACD421201D7809189691 -:10D3B000F2C800015BD8E08B0014F2C80008C0E09E -:10D3C0001A943005C0280E98500870079105680C13 -:10D3D000F01F00068D055807CF712FFDD8223008A9 -:10D3E00099082FFDD8220000800091E8EBCD40C0C5 -:10D3F00018971696F6CCFFF8F01F000DC130EEF826 -:10D40000FFF8EEC900089908F8C7FFF8930C9916C1 -:10D410000C9AE06B00FF0E9CF01F00060E9CE3CD03 -:10D4200080C018970E9CE3CD80C000008000920061 -:10D43000800091D0EBCD40FC32E818931AD81692B8 -:10D44000149430683079F01F00232FFD580CC03140 -:10D45000E3CD80FC089A049BE6CCFFFEF01F001E83 -:10D4600007993058F0091800E088001F2039E06A59 -:10D470005556EA1A5555F20B141FF20A0448F20BDE -:10D4800001055814C18030060C972FF6662C0899B8 -:10D490000E0C049A2FD7303BF01F00100C35FE996C -:10D4A000FFF6E3CD80FC5814F9B80000E7F80A0253 -:10D4B000E3CD80FCEA050017645C0E9BF01F0008BA -:10D4C000872CCC700E9A300BF01F0006CDDB0000CD -:10D4D0008001C9848001BB948001AD988001D3ECA8 -:10D4E000800091D0D421189616951497582AC161BE -:10D4F00019893FF8F0091800F9F91801F7F8120135 -:10D50000F9BA0102F1DAE108F1D9E108F7F81C01F2 -:10D51000F9B80000F9F80E01D82230083049F01FA0 -:10D52000000CC0C00D98F0C400045817C0800E99BC -:10D530000A9A089B6C2CF01F0007D822089B6A5C93 -:10D54000F01F00058D2CCF41CF9B00008001CB2C1C -:10D550008001AD988001D3ECEBCD40FC206D189498 -:10D5600016951493582AC18119893FF8F0091800BB -:10D57000F9F91801F7F81201F9BA0102F1DAE10834 -:10D58000F1D9E108F7F81C01F9B80000F9F80E012B -:10D590002FADE3CD80FC30083019F01F0040CF9054 -:10D5A0006A1E501E6A0A500AEAE80008FAE90008F2 -:10D5B000EAEA0010FAEB0010EDDEB0105813C600D6 -:10D5C000E8C7FFFA0999ECC8FFFE12080E9CE5D8DF -:10D5D000B010069A0A9BF01F00328A18E40819005E -:10D5E000CD82069A0A9BE8CCFFF8F01F002E8A181D -:10D5F000E4081900CCE2E8CCFFF4069A0A9BF01F7D -:10D600000028685C88693008F0091900C0E01896A5 -:10D6100030070C9C2FF7069A0A9BF01F00222FC69A -:10D6200088E80E38FE99FFF78A18E4081900CB1233 -:10D63000069AE8CCFFF20A9BF01F0019685888E9A7 -:10D64000887AF009002C3008F00A1900C0E018961A -:10D6500030070C9C2FF7069A0A9BF01F00132FC669 -:10D6600088F80E38FE99FFF78A18E4081900C912E5 -:10D67000069A0A9BE8CCFFF0F01F0009C8ABE8C788 -:10D68000FFFA30EA300B0E9CF01F0008099B6A5C21 -:10D69000F01F0007895CC97B8001CB2C8001A2FCB4 -:10D6A0008001C8308001C804800091D08001D3EC93 -:10D6B000EBCD40FC206D189416951493582AC18127 -:10D6C00019893FF8F0091800F9F91801F7F8120163 -:10D6D000F9BA0102F1DAE108F1D9E108F7F81C0121 -:10D6E000F9B80000F9F80E012FADE3CD80FCE06839 -:10D6F00000FF33091AD83008F01F00532FFD580CD3 -:10D70000CF406A1E501E6A0A500AEAE80008FAE989 -:10D710000008EAEA0010FAEB0010EDDEB010581332 -:10D72000E0800085E8C7FFFE0999ECC8FFFE1208FB -:10D730000E9CE5D8B010069A0A9BF01F00448A1888 -:10D74000E4081900CD22069A0A9BE8CCFFFCF01FE2 -:10D7500000408A18E4081900CC82E8CCFFF8069A49 -:10D760000A9BF01F003A684C88493008F0091900FC -:10D77000C0E0189630070C9C2FF7069A0A9BF01F02 -:10D7800000342FC688C80E38FE99FFF78A18E408BF -:10D790001900CAB2069AE8CCFFF60A9BF01F002BCC -:10D7A000684888C9885AF009002C3008F00A190026 -:10D7B000C0E0189630070C9C2FF7069A0A9BF01FC2 -:10D7C00000252FC688D80E38FE99FFF78A18E4087E -:10D7D0001900C8B2069A0A9BE8CCFFF4F01F001BA0 -:10D7E0008A18E4081900C812069AE8CCFFF20A9BCE -:10D7F000F01F001688C988D81208684A8879F4088A -:10D80000002C3008F0091900FE90FF7018963007C0 -:10D810000C9C2FF706990A9A310BF01F000F2F0668 -:10D8200088F80E38FE99FFF6C60BE8C7FFFE30EA0F -:10D83000300B0E9CF01F0009099B6A5CF01F00086A -:10D84000894CC73B8001C9848001A2FC8001C8309B -:10D850008001C8048001AD98800091D08001D3EC94 -:10D86000EBCD40E0E06800FE18971AD816951496A4 -:10D8700030483059F01F00162FFD580CC031E3CD51 -:10D8800080E0EECCFFFE0C9A0A9BF01F00120C9A6F -:10D890000A9BEECCFFFDF01F000F0C9A0A9BEECC0A -:10D8A000FFFCF01F000C5816C0A00F9B0C990A9AA1 -:10D8B0006E2C203BF01F0008E3CD80E00F9B6A5CDC -:10D8C000203BF01F00068F2CCF11CDAB8001C98407 -:10D8D0008001A29C8001AD988001D3ECEBCD40E0AB -:10D8E00018951696F6CCFFF8F01F000CC12099167B -:10D8F00030089908F8C7FFF80C9A5805EBF71A0595 -:10D90000E06B00FF0E9CF01F00060E9CE3CD80E054 -:10D9100018970E9CE3CD80E080009200800091D0AB -:10D92000EBCD40C0201DF8C60008300C6C1BF01F6A -:10D930000014C1A0500C3007C1286C1B400CF01F14 -:10D9400000111897C1406C1AECCBFFF8EF4AFFFCAE -:10D950000E9CF01F000D6C065806C0505807CEE113 -:10D960004007CF2B400C2FFDE3CD80C01A9CF01F49 -:10D9700000070E9C2FFDE3CD80C000008001D8DCA5 -:10D980008001D3EC800091DC8001D3A8D401E06851 -:10D990000081301999489959189A7408129C11CE2F -:10D9A000F20E18005F089708D802D703486830398C -:10D9B000F0FA00F830089569985BF00B19005F0CDD -:10D9C0005EFC0000000087F419C8300A4869F2F9CB -:10D9D00000F8F4081800F9BC0001F9BC0100F3FCE0 -:10D9E0001A065EFC000087F448483009F0FA00F897 -:10D9F000301C95695EFC0000000087F448B8985A16 -:10DA0000F0FB00F83178F00A1900E08B000B3018B9 -:10DA1000F00A0948E4180080E01803FEC0205EFF09 -:10DA20003008301C97685EFC000087F478185808AE -:10DA30005F0C5EFC5EFF19C830192018F208180050 -:10DA40005FBC5EFC5EFD5EFD19C93008F009180080 -:10DA50005F0C5EFC5EFD5EFFEBCD4080308B189767 -:10DA6000991B300CF01F00078F0CC0803078E069E4 -:10DA700000818F588F49E3CF9080E3CD80800000F4 -:10DA80008001D8DCEBCD40C018971696308B991BDF -:10DA9000300CF01F00108F0CC160301830298F58E7 -:10DAA0008F4948D8B826118948C8B8E948C71189AC -:10DAB000B8F96EB899086EBC580CC0752FFC8FBCB5 -:10DAC000E3CF90C0E3CD80C0F01F0006CF9B0000E5 -:10DAD0008001D8DC00007A280000025C000087F496 -:10DAE00080018450EBCD40FE1897FACCFFE01694ED -:10DAF000781330CB14928F1B129178061095300C4E -:10DB0000F01F00118F0CC1A0307830498F588F4919 -:10DB10009905B8E6B8F1F9630008B8C4B8D248B8B6 -:10DB200048B9B084B28248B76EB899086EBC580C38 -:10DB3000C0752FFC8FBCE3CF90FEE3CD80FEF01FBD -:10DB40000006CF9B8001D8DC000079E5000079E475 -:10DB5000000087F480018450EBCD40FC1897FACC8C -:10DB6000FFE4314B781414938F1B129278061095B2 -:10DB7000300CF01F00158F0CC2003018F3D4C01009 -:10DB80008F488F589913B8429935F9560010F954B7 -:10DB9000001248E7F1D6C0100A481248F9B800FF51 -:10DBA000F9B80100B8586EB999096EBC580CC07527 -:10DBB0002FFC8FBCE3CF90FCE3CD80FCF01F000472 -:10DBC000CF9B00008001D8DC000087F480018450E6 -:10DBD000D401780A3009740B15F8129C129AF01FC0 -:10DBE0000002DA0A80018460D401780A3009740BDB -:10DBF000F538000B129C129AF01F0002DA0A00009E -:10DC000080018460D401780A3009740BF538000B68 -:10DC1000129C129AF01F0002DA0A00008001846050 -:10DC2000D401780A3009740BF538000B129C129A53 -:10DC3000F01F0002DA0A000080018460D401780A33 -:10DC40003009740BF538000B129C129AF01F000279 -:10DC5000DA0A000080018460D401780A3009740B6C -:10DC6000F538000B129C129AF01F0002DA0A00002D -:10DC700080018460D401780A3009740B15F8129C75 -:10DC8000129AF01F0002DA0A80018460EBCD40F89E -:10DC900030C618979916169414930C9B300CF01FED -:10DCA00000108F0C1895C160307831690C9A8F582C -:10DCB000089B8F49F01F000B48B66CB88B086CBCF2 -:10DCC000580CC0A52FFC8DBC301C6A088708E3CD1A -:10DCD00080F8E3CD80F8F01F0005CF6B8001D8DC21 -:10DCE000800091DC000087F480018450EBCD40F887 -:10DCF000308618979916169414930C9B300CF01FCD -:10DD000000108F0C1895C160307831490C9A8F58EB -:10DD1000089B8F49F01F000B48B66CB88B086CBC91 -:10DD2000580CC0A52FFC8DBC301C6A088708E3CDB9 -:10DD300080F8E3CD80F8F01F0005CF6B8001D8DCC0 -:10DD4000800091DC000087F480018450EBCD40F826 -:10DD500033C618979916169414930C9B300CF01F29 -:10DD600000108F0C1895C160307831390C9A8F589B -:10DD7000089B8F49F01F000B48B66CB88B086CBC31 -:10DD8000580CC0A52FFC8DBC301C6A088708E3CD59 -:10DD900080F8E3CD80F8F01F0005CF6B8001D8DC60 -:10DDA000800091DC000087F480018450EBCD40F8C6 -:10DDB000318618979916169414930C9B300CF01F0B -:10DDC00000108F0C1895C160307831190C9A8F585B -:10DDD000089B8F49F01F000B48B66CB88B086CBCD1 -:10DDE000580CC0A52FFC8DBC301C6A088708E3CDF9 -:10DDF00080F8E3CD80F8F01F0005CF6B8001D8DC00 -:10DE0000800091DC000087F480018450EBCD40F865 -:10DE1000330618979916169414930C9B300CF01F28 -:10DE200000108F0C1895C160307831090C9A8F580A -:10DE3000089B8F49F01F000B48B66CB88B086CBC70 -:10DE4000580CC0A52FFC8DBC301C6A088708E3CD98 -:10DE500080F8E3CD80F8F01F0005CF6B8001D8DC9F -:10DE6000800091DC000087F480018450D421189751 -:10DE7000169530CB991B300CF01F00128F0C1896A2 -:10DE8000FAC4FFEC580CC190302830098F588F49E4 -:10DE900048D76EB899086EBC580CC1052FFC8FBCD2 -:10DEA0005805EDF81000EBF81A00089BECCCFFFCCD -:10DEB000308AF01F0006DA2AD822F01F0005CF0BA7 -:10DEC0008001D8DC000087F4800091DC8001845060 -:10DED000EBCD40E018961695310B991B300CF01FD6 -:10DEE00000108D0C1897C1503078317A0A998D58EE -:10DEF0008D4A48CBF8CAFFFCF01F000B48B56AB842 -:10DF00008F086ABC580CC0752FFC8BBCE3CF90E027 -:10DF1000E3CD80E0F01F0006CF9B00008001D8DC3D -:10DF20008001D3EC8001D158000087F48001845037 -:10DF3000EBCD408078076E285808C0B0300C189A96 -:10DF40005C586E0B3109300CF01F0009E3CF908054 -:10DF5000310CF01F00086E189908EF390016991956 -:10DF60006E3899286E4999396E28CEAB800184604D -:10DF700080009200EBCD40FC189716931495314B1E -:10DF80001294991B300CF01F001C8F0C1896FAC2CB -:10DF9000FFE4580CC200302830198F588F495805BB -:10DFA000C1C18D455C7549576EB88D086EBC580C63 -:10DFB000C1F52FFC8FBC5804EDF81000E9F81A00E9 -:10DFC000049B308AECCCFFFCF01F000D301C8D351B -:10DFD000E3CD80FCE3CF80FC5C750A9CF01F000958 -:10DFE0008D4CCF90069B0A9AF01F0005CDDBF01FE9 -:10DFF0000006CE1B8001D8DC000087F4800091DC95 -:10E000008000920080018450EBCD40801897F93C4D -:10E01000000BF01F00084888F0F900F85809C0709C -:10E02000EECBFFFC310A313CF01F0004E3CF9080BF -:10E0300080015FB0000087F480014658D42130C8C9 -:10E040001896109B4904300CE8F500F88D18F01F65 -:10E05000000F8D0C1897C120301830D98D582FCC57 -:10E06000EACBFFE28D49F01F000A68B88F0868BC50 -:10E07000580CC0552FFC89BCDA2AD822F01F0005A5 -:10E08000CFBB0000000087F48001D8DC8001844011 -:10E0900080018450D42130CB1897991B300CF01F8D -:10E0A000000B8F0C1894C1004898301530868F559E -:10E0B0008F462FCCF0FB00F82E2BF01F00060A9C99 -:10E0C000E966000AD822D8228001D8DC000087F453 -:10E0D00080018440EBCD40E030CB1896991B300C8A -:10E0E000F01F00108D0C1897C1703018305948E59A -:10E0F0008D588D492FCCEAFB00F82E2BF01F000B1A -:10E100003028AE586AB98F096ABC580CC0752FFC0C -:10E110008BBCE3CF90E0E3CD80E0F01F0005CF9B08 -:10E120008001D8DC000087F48001844080018450A5 -:10E13000EBCD40FC30C518969915169414931292A5 -:10E140000A9B300CF01F00138D0C1897C1D03018AB -:10E150008D458D580A9A300BF01F000FEECCFFFC56 -:10E16000089BF01F000E078848D6EF68000A058953 -:10E17000EF69000B6CB88F086CBC580CC0752FFC95 -:10E180008DBCE3CF90FCE3CD80FCF01F0006CF9B5D -:10E190008001D8DC800091D080018440000087F4A9 -:10E1A00080018450EBCD40FC30C51896991516942B -:10E1B000149312920A9B300CF01F00128D0C1897CA -:10E1C000C1B0301830B98D588D490A9A300BF01F04 -:10E1D000000E306AAEC4AED3049BEE0A000CF01FF2 -:10E1E000000B48B66CB88F086CBC580CC0752FFC7F -:10E1F0008DBCE3CF90FCE3CD80FCF01F0006CF9BED -:10E200008001D8DC800091D0800091DC000087F490 -:10E2100080018450D431203D502B5018FACEFFD0CD -:10E2200033857C3499157C181896149312917C00D0 -:10E2300050087C220A9B300CF01F00228D0C18978E -:10E24000C370301830A98D580A9A8D49300BF01FD1 -:10E25000001E069A029BEECCFFFCF01F001CEF5341 -:10E2600000244028049BEF680026EF600027306AF6 -:10E27000EECCFFD8F01F00155804C1C0089B308AAF -:10E28000EECCFFD2F01F00114008EF6800364018B6 -:10E2900048F6EF6800376CB88F086CBC580CC05556 -:10E2A0002FFC8DBC2FDDDA3AF01F000ACFBB2FDD2B -:10E2B000D832089B308AEECCFFD2F01F0003CE5B31 -:10E2C0008001D8DC800091D0800091DC000087F4D0 -:10E2D00080018450D4012FCC7808202D500819C912 -:10E2E000BAC919D8BAD8F01F00052FED580CF9B8E3 -:10E2F000010DF9F81A06DA0A80015860D40148D8ED -:10E30000F8CBFFF5F0F900F8733C7808204D502861 -:10E3100019C9FB69000C19D8306AFB68000D1A9CFA -:10E32000F01F0005F01F00052FCD580C5F1CD80210 -:10E33000000087F48002E73680018898EBCD40FE2C -:10E340003007FAC5FFE0189116924A134A1466087E -:10E350000E38E08A00216A08204D50280BC9FB695D -:10E36000000C0BD8EE061504FB68000DE806000A49 -:10E3700015D8BAD87409500915C8BAC8F01F0016C4 -:10E380002FCD580CC0A12FF75907CE2118970E9CFE -:10E39000E3CD80FEEE061504E80600060A9B0C9C01 -:10E3A000F01F000EF3D2C001EE081501AC692FF882 -:10E3B000E808093166090E39FE99FFEBEEC9FFFF47 -:10E3C00048380E9C9109E3CD80FE000000008C5C73 -:10E3D00000008B5C8001889880018440EBCD4080F8 -:10E3E000300819C9F0091800C10048E8F0F700F832 -:10E3F0005807C130F01F000C0E9CF01F000C0E9C43 -:10E40000F01F000BE3CF8080486830A9F0FA00F8D5 -:10E41000301C9569E3CD80800E9CE3CD80800000A8 -:10E42000000087F480015D188001593880015CDCB0 -:10E43000EBCD40E01896F01F00224A2A0DE9F4F7D0 -:10E4400000F85809C1103018F0091800C32030280E -:10E45000F0091800C31030488F687498300CABC8AE -:10E460009598E3CD80E06F3930D8322A8F68496CB7 -:10E47000727B2F4BF01F00156F3C3FF8787BF7390C -:10E4800000C8F0091800C130202DF71600D47845D7 -:10E49000306AEECBFFE21A9CF01F000C0C9B0A9C2A -:10E4A000F01F000B301C2FEDE3CD80E0E3CF90E0B8 -:10E4B00030088F68CD3B30588F68CD0B8001F00459 -:10E4C000000087F400008C608002E7368001E33CA6 -:10E4D000EBCD40E01896F01F00284A8A0DE9F4F7CA -:10E4E00000F85809C1503018F0091800C3603028EE -:10E4F000F0091800C3906F0830492FF88F69EF4872 -:10E5000000407498300CABC89598E3CD80E06F392B -:10E5100030D8322A8F6849AC727B2F4BF01F00191C -:10E520006F3C3FF8787BF73900C8F0091800C1301C -:10E53000202DF71600D47845306AEECBFFE21A9C06 -:10E54000F01F00100C9B0A9CF01F000F301C2FEDD9 -:10E55000E3CD80E0E3CF90E06F0830092FF88F69BA -:10E56000EF480040CCFB6F0830592FF88F69EF4817 -:10E570000040CC8B8001F004000087F400008C6028 -:10E580008002E7368001E33CD421310B1896991BB9 -:10E59000300CF01F00198D0C1897C28030183049CC -:10E5A0008D588D494955302CEAF400F8F01F0014BD -:10E5B000E8CBFFE21896EECCFFF8F01F00126C38A3 -:10E5C000AE38EAF901045819C0D03008AE2830B886 -:10E5D00089686AB98F096ABC580CC0952FFC8BBC3E -:10E5E000DA2AEAF8011C5818CF20D82AF01F0006B2 -:10E5F000CF7B00008001D8DC000087F48001EF6C45 -:10E600008001844080018450EBCD40F81897169427 -:10E6100030CCF01F0046303CF01F00441895302CE1 -:10E62000F01F0042E06A00EC1896E06B00FF0E9CC1 -:10E63000F01F003FE8CBFFE2EECCFFF6F01F003DFD -:10E640006C384BD9AE289208AE483DD86939727BF8 -:10E65000F73A009AF00A1800C480F73900803DD8D4 -:10E66000F0091800C52030050A93F01F00349838CF -:10E67000AE381896F93900A83FF8F0091800C09094 -:10E68000F8C9FF58EECAFF584ADB0E9CF01F002D58 -:10E69000ED3900CC3FF8F0091800C1900E9CECC990 -:10E6A000FF34EECAFF344A6BF01F0027089CF01FAE -:10E6B0000027583CE089000C4A587099ABC99199E1 -:10E6C0003FFA301CEF6A009EE3CD80F85805CF502A -:10E6D000EECCFF62069BF01F001F49D9301C7298D8 -:10E6E000ABA89398E3CD80F8F73900A03008F00983 -:10E6F0001800CB41EAF900B85819CB01F72800A25D -:10E700001295F003161FCB2BF73900863018F0094D -:10E710001800CAA1EAFC00B8581CCA61F728008892 -:10E720001895F003161FCA2B8001EF6C800091D062 -:10E73000800184400000025E8001EFF88001D3EC8C -:10E740008001D1E88001D21C8001808E000087F416 -:10E75000800184F0D421E06800EC1897109B4924D4 -:10E76000300CE8F500F88F18F01F00108F0C189689 -:10E77000C090301830798F588F490A9BF01F000CD9 -:10E78000C021D82A0C9CF01F000B30C88B6868B9D8 -:10E790008D0968BC580CC0452FFC89BCDA2AF01FD3 -:10E7A0000006CFCB000087F48001D8DC8001E608AA -:10E7B0008001F03080018450D421E06800EC18978B -:10E7C000109B4924300CE8F500F88F18F01F00105A -:10E7D0008F0C1896C090301830698F588F490A9B5B -:10E7E000F01F000CC021D82A0C9CF01F000B30C871 -:10E7F0008B6868B98D0968BC580CC0452FFC89BC72 -:10E80000DA2AF01F0006CFCB000087F48001D8DCA5 -:10E810008001E6088001F03080018450EBCD40405B -:10E82000201D18961A9CF01F001849888C69F0FB6F -:10E8300000F85809C1203018F0091900C0B030287C -:10E84000F0091900C170770830492FF89769F74827 -:10E8500000402FFDE3CF80407738301911EA301C9B -:10E86000F20A1800F9B8000CF7F80A062FFDE3CDFC -:10E870008040770830592FF89769F74800402FFDFE -:10E88000E3CF8040800177A4000087F4D401496879 -:10E8900019C9F0FA00F85809C1803028F0091800A9 -:10E8A000C1803048F0091800C0503018F009180035 -:10E8B000C180750830492FF89569F548004019CB9B -:10E8C000302CF01F000AD80A3088301C9568D80216 -:10E8D000750830592FF89569F548004019CBCF1BC2 -:10E8E000301BCEFB000087F480018390D431215D82 -:10E8F000303C169614911290F01F00584D83F8C4C6 -:10E90000FFB0189531CA089B069CF01F0056C0A1A5 -:10E910006D3830AA707BE6CCFFE42D2BF01F005140 -:10E92000C7B06D38FAC7FFC8707B0E9CF6CAFFC827 -:10E930002D2BF01F004D089B0E9CF01F004CC0417A -:10E94000300C2EBDD83231CA0E9BFA0A0002049C4C -:10E95000F01F0047049CF01F004730080E9A500833 -:10E960001A97089B1A9CF01F00446D38707930E8A4 -:10E97000F33A005EF00A1800C670EB3A0074580AC9 -:10E98000CE006D387079EB380075F33B005EF60809 -:10E990001800C0F0EACCFF8A3009C0581938F608D0 -:10E9A0001800C0502FF9123AFE99FFFA123ACC9093 -:10E9B000049CF01F0032CC50049B1A9CF01F0030C6 -:10E9C0001A9B029CF01F002F049B009CF01F002D3F -:10E9D000089B31CA4A2CF01F00266D3830AA707B84 -:10E9E000E6CCFFE42D2BF01F00226D38312A707B1E -:10E9F000E6CCFFDA2C8BF01F001E029B304AE6CCDF -:10EA0000FFC8F01F001B009BE6CCFFC4304AF01F7C -:10EA10000018301CC97B6D38312A707BE6CCFFDAD8 -:10EA20002C8BF01F0010FE91FF7E304AE6CBFFC812 -:10EA3000029CF01F000FE6CBFFC4009C304AF01F81 -:10EA4000000C301CC7FB049CF01F000FFE90FF7AE7 -:10EA50001A9CF01F000EC92B8001EF6C000079E8B2 -:10EA60008000917C80018124800182BC800091DC47 -:10EA700080018658800181E8800182608001817E6A -:10EA8000800180CC80018360800185F4EBCD40FC67 -:10EA9000FACD0110300733095407FEF3022EE6F8D1 -:10EAA00000F854281896129B0E9C8D19F01F0088B0 -:10EAB0008D0C1895E080008A3018303C8D588D4CB4 -:10EAC000F01F0084FACBFEFC1894FACAFEF8FACCC8 -:10EAD000FEF2F01F0081442871390E9CE06B00ECBF -:10EAE0007277F01F007BC710540CE0680420B83820 -:10EAF000442B7738707992D9EDB90000C6B0EDB9E2 -:10EB00000001C06144099238A1B8B238442BE8F83A -:10EB100000B85808C0C07738707A94D9EDB90009A8 -:10EB2000C06144099238A9B8B238442BFAC2FEF148 -:10EB3000441A049CF01F006944185818E08000A58E -:10EB4000C6823079FB38010FF2081800C050440922 -:10EB50009238A5A8B238440CF01F0061049CF01F45 -:10EB600000614428E74C0100EACAFFF071390A9CB1 -:10EB70004DDBF01F005E6858AA286869AA394D3C31 -:10EB800069B85808C440442B773870793078F33A24 -:10EB90000074F00A1800C240EAC9FFF4EACAFFF89C -:10EBA000300CF01F0053581CC53030063018E748B1 -:10EBB000004444095809C0A0FACCFF00F01F004DE2 -:10EBC0000C9C2BCDE3CD80FC30060C9C2BCDE3CDF3 -:10EBD00080FC44099238A1A8B238442BC99BF8F8AC -:10EBE00001AC5808C050F8CCFE54F01F004230CBA6 -:10EBF000300CF01F0037E74C01AC189AC080442855 -:10EC0000713B76794B8B28C9F01F003B442BCC5BC2 -:10EC10005828CA51442C1A9B2E2CF01F00381A96E3 -:10EC20001AD61ADC442BFB380116FB390117EF3AD0 -:10EC300000CF169CF6CBFF34F01F003144283289F8 -:10EC4000F15900D8442CF01F00262FEDC88BE8F8AE -:10EC500000B85808C2916AB93FF8F368009A3028A2 -:10EC60003039E7480044442891694426F01F0025C4 -:10EC7000ED4C004466B88B0866BC580CC2352FFCBE -:10EC800087BC3016C94B440BEF3A00AF169CFB38DB -:10EC9000010EFB39010FF6CBFF58F01F001B440C8F -:10ECA000F01F000FC5CB44287139727A94D8EDB8A3 -:10ECB0000001CD21189B6ABCF8CCFF66F01F001341 -:10ECC000CCFBF01F0013CDDB000087F48001D8DC03 -:10ECD0008001EF6C80017C4480017EE08001F03097 -:10ECE00080017BD88001D3EC8001AD408001E8EC4D -:10ECF0008001D3A88001D1588001887080018C2CBC -:10ED0000800145C480018B74800184F080018450AF -:10ED1000D431203D189616971493303CF01F0070A4 -:10ED2000301831798D588D4930086C068F0858039A -:10ED3000EDF81805E7F81A0018950DC40898A7D83B -:10ED4000C0505898C0302FDDD83A0DD93018F0098E -:10ED50001800C1003008F0041800F9B80500EFF8F9 -:10ED60005A00F9BC0501F9BC0401EFFC4A002FDD93 -:10ED7000D832303CF01F005A6C98F93A0074F13BDD -:10ED8000005E580ACE80F9380075F6081800C0A059 -:10ED900028AC30092FF91439CDE41938F00B1800DC -:10EDA000CFA1ECC0FFF8009CF01F004E1891CD30B1 -:10EDB0006BB85808C090793870793078F33A00749D -:10EDC000F00A1800C6E0FACCFFF8F01F0047581C04 -:10EDD000C0A0F01F0046029B835C350A31DCF01FA7 -:10EDE0000044CB9B40285818CF51FACCFFFCF01FB1 -:10EDF0000041581CCEF1401820785818FE9BFFEBBC -:10EE00004BD8F0F900F85809CE501A9CF01F003B7F -:10EE1000581CCE01400820285818FE9BFFDC6C9E31 -:10EE20002F4EFCE80000212DFAE90024FCE8000840 -:10EE3000FAE9002CFCE20010FAE30034FCE80018C8 -:10EE4000FAE9003CFD3C0020FB6C0044FD38002149 -:10EE5000322AFB6800454AAB1A9CF01F002AF01FBB -:10EE6000002A2EED580CCB606C9A3FF8F53900C89B -:10EE7000F0091800CAF06008F51B00D4202D6C6C56 -:10EE8000500801C9BAC901D8BAD8F01F0020A56C32 -:10EE900049FB310A180B315CF01F00152FEDC9AB8F -:10EEA0004955EAF801AC5808C050EACCFE54F01FAE -:10EEB000001930CB300CF01F0018EB4C01AC189A45 -:10EEC00048D5580CFE90FF816338494B707928C9AA -:10EED000F01F00136A98ABB88B98C76B8001EF6C7A -:10EEE00080015D44800177A4800145C480014658BB -:10EEF00080015F44000087F480015F2800008C607F -:10EF00008002E736800189108001E33C00008B5CC1 -:10EF10008001D3A88001D8DC8001D3EC8001D158D6 -:10EF2000EBCD40E0206D300818991495502850081A -:10EF30001A9C1A965D191897C10140085808C040DC -:10EF40001A9CF01F0009402C580CC030F01F00071D -:10EF50000E9C2FADE3CD80E01A9C5D15581C5F0719 -:10EF6000CEDB00008001D3A8800091E858DCE08867 -:10EF700000035EFD49B8F00C032F49B8F0CCFFF454 -:10EF80005EFC4998F0CCFFE45EFC4978F0CCFFD4FD -:10EF90005EFC4958F0CCFFCC5EFC4938F0CCFFC495 -:10EFA0005EFC4918F0CCFF305EFC48F8F0CCFF1C4A -:10EFB0005EFC48D8F0CCFEF45EFC48B8F0CCFEBC59 -:10EFC0005EFC4898F0CCFE945EFC487C5EFC486891 -:10EFD000F0CCFFFC5EFC4848F0CCFE785EFC000004 -:10EFE0008003C01400000260483930089318930869 -:10EFF0005EFC000000008C844828700C5EFC000061 -:10F0000000008C84EBCD40C0487618976C1C580CDF -:10F01000C030F01F00060E9CF01F00058D1CE3CDD4 -:10F0200080C0000000008C8480018AD480018AECBA -:10F03000EBCD40C0487618976C0C580CC030F01FD0 -:10F0400000060E9CF01F00058D0CE3CD80C0000073 -:10F0500000008C8480018ABC80018B30D4211894FC -:10F060001696149530CCF01F00121897C1D03018A6 -:10F0700099069915F0060946EC0C1502F01F000CD4 -:10F080008F2CC0F05806E08A000B3009129A6E28C7 -:10F09000F009092A2FF91236FE99FFFB8907DA2AAF -:10F0A0000E9CF01F00043FDCD8220000800092007C -:10F0B000800091E8D4311893169214901291580C54 -:10F0C000C36078093018760CF0090945580CC390D4 -:10F0D000189468160A36C1A468075807C0606E48BD -:10F0E0000238C1B03FCCD832662CF8060327580747 -:10F0F000CF71ECC8FFFFF808002CC0582FF8190793 -:10F100005807CEE110960A38CFA5089CF01F0013CF -:10F1100030083FEC8508D832029A009C6E3BF01F05 -:10F120000010301C89166E088908D832760C580CED -:10F13000C040F01F000ADA3A66093018F0090945A4 -:10F14000308CF01F00081894C060850C30089918A6 -:10F150009908CC0BD8320000800091E8800091DC47 -:10F1600080009200D431109412907818409618952F -:10F17000169214910C9B780A089C5D181893318C98 -:10F18000F01F00131897C1F00C9CF01F00118F3C6A -:10F19000C170089B0C9AF01F000F30088F468F1229 -:10F1A0008F218F508F086A29F203002C78085808A5 -:10F1B000C0C0109970085808CFD19307DA3A0E9C56 -:10F1C000F01F00053FDCD8329907DA3A8000920040 -:10F1D000800091DC800091E8D431203D501C500B20 -:10F1E000149112921090580AC4307418009B740A3B -:10F1F000129C5D18A36C502C6228F00C0307580772 -:10F20000C3706E450A990035C3610E940E93C09881 -:10F210006E075807C2D008936E490A39C2C10E94CE -:10F220006E3B0A9A049CF01F00181896CF214019D3 -:10F230006E18930840086E2991098F1C8F2C6E3C24 -:10F24000F01F00128F468F3640296228F009000C0B -:10F2500078090E39EFF80000F9F80A00EFF810000D -:10F26000E7F81A000E9CF01F00092FDDDA3A3FEC98 -:10F270002FDDD8326E385808CFB00039CF903FCC50 -:10F280002FDDD8328000917C800091E8163C5E0C26 -:10F290007808971C990B97085808F1FB1A015EFC37 -:10F2A00078195809F9F81000F3F81A007808580886 -:10F2B000F1F91A013008990899185EFCD40149380F -:10F2C000FACEFFFC709CE21C0002C1D0209DFD3AEA -:10F2D0000021FB6A0021FCE80000FAE90000FCEADA -:10F2E0000008FAEB0008FCE80010FAE90010FCEA5C -:10F2F0000018FAEB0018FD380020FB680020F01F12 -:10F3000000042F7DD8020000000087F480015AA479 -:10F31000D4014898709CE21C0002C0C0300930CC77 -:10F32000EA1C4000303B129AF01F0004F01F00045A -:10F33000301CD802000087F4800186C88001875401 -:10F34000D4014898709CE21C0002C0C0300930DC37 -:10F35000EA1C4000303B129AF01F0004F01F00042A -:10F36000301CD802000087F4800186C880018754D1 -:10F37000D4014898709CE21C0002C0C03009310CD6 -:10F38000EA1C4000303B129AF01F0004F01F0004FA -:10F39000301CD802000087F4800186C880018754A1 -:10F3A000EBCD4080495818977098E2180002C04190 -:10F3B000109CE3CD8080F01F00126F38302911EAD5 -:10F3C000F20A1800C0D03009303B129A307CEA1C97 -:10F3D0004000F01F000CF01F000CE3CF90806E681F -:10F3E0005898CF213009303B129A30BCEA1C4000BB -:10F3F000F01F0004CF1B0000000087F4800158407C -:10F40000800186C88001875458DBE08A0012F939F0 -:10F41000000C3078F0091800E08B000C595BE08A92 -:10F420000008F939000E3AA8F0091800C0D05EFDB6 -:10F430003888F0091800CFC1F939000D38E8F00913 -:10F4400018005F0C5EFCF938000FF2081800CF01BD -:10F45000F93900103038F0091800CEA1F93900113F -:10F460003008F0091800CE41F93A0012F20A1800EB -:10F47000CDF1F9380013F4081800CDA1F9390014C2 -:10F480003888F0091800CD41F939001538E8F0093D -:10F4900018005F0C5EFCD7033019482891095EFC08 -:10F4A00000007A38EBCD40C0208D48D730088E0957 -:10F4B000F0091900C101E06AFFFF300B1A9CF01F30 -:10F4C00000091A9B302AFACCFFE8F01F00079A18AF -:10F4D0001A96AE088E0C2F8DE3CD80C000007A2ADC -:10F4E0008001C7B88001A498D401F01F00054858D6 -:10F4F000F139010B120C5C8CD80200008001F4A4DD -:10F50000000087F4EBCD4060208D306AFAC5FFE63D -:10F51000300B0A9CF01F00091A9CE06AFFFF300BB9 -:10F52000F01F00070A9C1A9B302AF01F00061A964B -:10F530009A1C2F8DE3CD8060800091D08001C7B8E8 -:10F540008001A444D43120DDFEF60234FACEFFA8B7 -:10F55000189516916C9C1494129310907C177C0251 -:10F56000E21C0002C0312F3DD832FEF802167009AD -:10F570005809C041FE7CFBB4CF7BECF8012458183D -:10F58000C041FE7CFC17CF0BECC9FFE85019129C60 -:10F59000F01F007D581CE08000E30D890D98F009F4 -:10F5A0001800E08200E6302CF01F0078E08000D2E6 -:10F5B0006CB850282FF88DB85807FBF91002EFF9F6 -:10F5C0001A00F01F0073C0E0029B0A9CF01F00713C -:10F5D000E08000C96C98EDB80006C0414E88402913 -:10F5E00091D9F01F006D6008EFDCB010F3D7C010A8 -:10F5F00050091039E08B006C0D882FF8AC880D99FC -:10F60000F0091800C061300A320C149BF01F00632F -:10F61000E8C800020E08FB58002EED38010B30043C -:10F62000FB680032400A300BFB640030FB640031A1 -:10F63000FB640033069CF01F005A069BFAC7FFF4D8 -:10F64000400A0E9CF01F0057300A0E9BFACCFFD2E6 -:10F65000F01F0055ED38010BF9D2C003BA78F01F46 -:10F660000053300CFB520028FB5C002AE041003EB6 -:10F67000E0880008EB39000C3888F0091800C2D087 -:10F680004028300A50980E9BFACCFFDCF01F00484F -:10F690004009ECCCFFE88109F01F0046F01F00464E -:10F6A0003008ED4C00CCED5800D04C49F30A014233 -:10F6B000F00A1900C0604B297298EDB8000EC031F5 -:10F6C000301CC52BF01F003E301CC4EBECCCFFE817 -:10F6D000F01F00383FFCC48BEB39000D38E8F0090F -:10F6E0001800CCF1EB39000E3018F0091800CC915D -:10F6F000EB39000F3038F0091800CC313028EB3BE3 -:10F700000012F00B18005F1A3FE8F00B18005F19A9 -:10F71000126AE80A1800CB51EB380013E218001DFA -:10F720005818CAF1EB380014E21800C85888CA917A -:10F73000189A31F9EA090708F4081800CA212FF9C4 -:10F74000E049003FCF81E0680400FB58002AC99BD4 -:10F75000401CF01F0018FE7CFAECC06BFE7CFC160F -:10F76000C03BECCCFFE8F01F00133FECCFDA401CAD -:10F77000F01F0010FE7CFB4FCF7A0000000087F4E2 -:10F7800000007A38800145DC80019F3080015F04F1 -:10F790008001F4088001F4E880014658800091D08F -:10F7A0008001C7B88001A4448001859C8001A49891 -:10F7B000800145EC800145C4000002608001FBFC33 -:10F7C000D401302CF01F0003300948389109D802C9 -:10F7D0008001A12800007A38D431FACD01385009CF -:10F7E000FACEFEA416971896FEFB031C14947C1305 -:10F7F0007C00F6F801245818C460FEFA030A749CD1 -:10F80000E21C0002C05118970E9C2B2DD832E068E4 -:10F8100000F8FAC5FEFCF5D7C0100C9B0A9C548872 -:10F82000549654A730025472F01F00B8FAC1FEE497 -:10F830000A9B029CF01F00B644C95879E08B00284F -:10F840003018F0090948E2180085C2104488FAC946 -:10F85000FFF45012502854D944D80A9B5478029C83 -:10F86000F01F00ACC1C1302744D95809CCE0FAC818 -:10F87000FFF41039CCA0FACCFECCF01F00A70E9CF0 -:10F880002B2DD83230270E9C2B2DD832448B300CA8 -:10F89000F01F00A2E08000B354DCCDFB44C9E04976 -:10F8A000003FE088000B300744B8EDB80007E08067 -:10F8B000009EF01F009BCD9BFEF80268F009032F0D -:10F8C000ECCAFFFC1588EC08000889080DD81589DA -:10F8D000400BEE0901093067F208010A970A44B8A3 -:10F8E000CE5B44B8F0C90001E0490097E088008988 -:10F8F000447CF01F008D44C8189A300944BC303B4A -:10F90000BFBCF9E8108CF01F0089F01F0085301B88 -:10F91000300CF01F008744B83027CC8B44B8E04847 -:10F920000082C090E08900A9E0480080C040E04823 -:10F930000081CEE10E9B0C9CF01F007ECE9B44B854 -:10F94000E0480082E08000C4E08900915978E080BE -:10F9500000C4E0480081CCD1029CF01F0077CD8B21 -:10F9600044B85808C7E144D65803EDF81000E7F84A -:10F970001A008C28A008FB1A0106445814088908AC -:10F98000FB190104F20A0105400A30EB95056807EE -:10F990000E9CF01F006AE08000AE4DB9F2F801D075 -:10F9A0005808E080009E0A9B0E9C5D18E08000993C -:10F9B00030270DE84D4BF768007B44B8C77B44B84F -:10F9C0005818CB90E0480080CA31CB5B447B44BCE4 -:10F9D000F01F005B44BCF8C800805818FE9BFF99DC -:10F9E000029B5C5CF01F0057C93B30084C69300B30 -:10F9F000B2A8169CF01F0054C5DB3FD7C06B4D3832 -:10FA0000F009032F029CF01F0052C82B029CF01F2C -:10FA10000051C7EB029CF01F0050C7AB029CF01FC7 -:10FA2000004FC76B029CF01F004EC72B029CF01FBB -:10FA3000004DC6EBF01F004C4B3AF54C00D4C68B82 -:10FA4000029CF01F004AC64B029CF01F0049C60BE7 -:10FA5000029CF01F0048C5CB447CF01F0047C58BBB -:10FA6000E0480081C1403027C21BF0C8008F5828F1 -:10FA7000FE9BFF40C4DBE0480084FE90FF5DFE95E6 -:10FA8000FF5BE0480085FE91FF44C55B49E91388B0 -:10FA900020185C58B28844D7C29049BB7698E218C7 -:10FAA0000040C20076D96E081039E088002944B8B9 -:10FAB000A7D854B85803F9B70003EFF81000E7F8D7 -:10FAC0001A00F9B70103FBF8104BCF0A447B32EC64 -:10FAD000F01F002AC1DB029CF01F0029C19B3047A8 -:10FAE000C69B0FD8F768007ACE3B302CF01F00255C -:10FAF000CD5BF01F0025CF403FE7C5CBF01F0023B3 -:10FB0000CD7B0000000087F48001C7B88001BF10E2 -:10FB10008001BF448001D3A88001D8DC80018754D4 -:10FB20008003C04C8001870C800186C880016A88F0 -:10FB3000800237E8800208948001F4088001708C0C -:10FB40008001725480018CE48003C14C8002084023 -:10FB50008002085880020864800208708002087CD5 -:10FB600080020888800145C48002084C8002083465 -:10FB7000800209B48001DA3480016D6C8002094092 -:10FB80008001A12880015F048001F310EBCD406863 -:10FB90003006493C1AD61AD649250C9899064929A7 -:10FBA000492A302B0A9CF01F001249231AD60C98C0 -:10FBB0001AD60699490A303BEACCFFFCF01F000C2C -:10FBC0000C981AD606991AD6EACCFFF848BA305BD8 -:10FBD000F01F0007301C2FADE3CD806800007A389D -:10FBE00000007A2C8001F4988003C3AC80016EB8C9 -:10FBF0008001F7C08003C3C48003C3E05EFCD70369 -:10FC0000EBCD40E0203D1897580CC1F07938707A60 -:10FC100094D9EDB90001C1D04C166C785828C15068 -:10FC20000E9CF01F0040C110ED3900943FF8F00920 -:10FC30001800C1405017FACAFFFC1A9BFACCFFF615 -:10FC4000F01F0039581CC180301C2FDDE3CD80E04F -:10FC50004B366C785818CE51CF8B202D306A1A9CB9 -:10FC60004AFBF6CBFF4AF01F0031F01F00312FEDA9 -:10FC7000580CCEB1CE0BFAC5FFF5400A401B0A9CCA -:10FC8000F01F002C581CCE113079FB38000BF20805 -:10FC90001800C35140187139727A94D8EDB8000435 -:10FCA000CD404A5AF4F801045818C3206DE85808AA -:10FCB000C1D1ED3B008049AA580BC2806F387079E2 -:10FCC000F5380081F33C005EF8081800C1F0F4CA72 -:10FCD000FF7E3009C0581538F8081800C0402FF9C9 -:10FCE0001639CFA516395F0CCB1B48D973F85808C5 -:10FCF000CE10F4F801AC5808CDD1CA7B0A9CF01F95 -:10FD0000000FF01F000FCA10CCDB3009CECB3059EA -:10FD1000FB38000BF2081800C981CC9B0000026080 -:10FD2000800189D080017C448002E736800188B060 -:10FD300080017EE0000087F480017BD880017C1088 -:10FD4000EBCD40E048D818961695F0F700F058072C -:10FD5000C0E00E9CF01F000AC0715806C0A00E9CA7 -:10FD60000A9B5D16C0606E075807CF41E3CF80E065 -:10FD70000E9CE3CD80E00000000087F48001FC00D1 -:10FD8000D401F01F0002D80280021500EBCD40F82C -:10FD9000204DE0683100EA18312EE069312EEA1971 -:10FDA000322E306CFAE90000F01F00631894E080F6 -:10FDB00000B9303CF01F00611896301CF01F005F46 -:10FDC000306A202D189B18951A9CF01F005DF01FBB -:10FDD000005D2FED580CE080008732B80A9C1AD8DD -:10FDE000308930084D8A306BF01F00582FFD1A9370 -:10FDF000ECFC00D8F01F0056ECFC00DCF01F0055B6 -:10FE0000ECFC00E4F01F0054ECFC00E8F01F005391 -:10FE1000ECFC00ECF01F0052ECFC00F0F01F005175 -:10FE2000ED3C00B7F01F00506DC85808F9B801014B -:10FE3000EDF81A1BED3C006FF01F004CECFC012CA0 -:10FE4000F01F004BF01F004BF01F004BF01F004B4A -:10FE5000F01F004BECF800F85808C6616D084C978D -:10FE6000EF4800D8ECFC0130F01F0047300830A903 -:10FE700032B54C6A1AD5E06B0080EECCFED8F01F8C -:10FE80000033EEC6FE58304A300B0C9CF01F004089 -:10FE900030081AD530594BFA0C9C304BF01F002B10 -:10FEA0004BD82FEDF10A01423009F20A1900C26065 -:10FEB0006E99EDB9000EC201A7B930688F9950381C -:10FEC0001A9CFAC8FFF8FAC9FFF4089A308BF01FA1 -:10FED00000331897581CC140089CF01F00312FCDEB -:10FEE000E3CF80F8189A0A991A933068308B1A9CDD -:10FEF000F01F002CC7EBF01F002C6E99CDEB089C77 -:10FF0000F01F00273009303B129A311CEA1C4000D8 -:10FF1000F01F0026F01F00260E9C2FCDE3CD80F8A9 -:10FF20002FCDE3CD80F8300A301B149CF01F002148 -:10FF3000C96B0000800092008001EF6C8002E73600 -:10FF4000800188B08003B804800176C480020594E3 -:10FF500080020538800204DC8002048080020424D0 -:10FF6000800203C8800202F880020374800202D477 -:10FF70008002078C800168AC8002017080020EFC58 -:10FF8000000087F48002031C8003C400800091D02D -:10FF90008003C40C00000260800174C8800091E8F6 -:10FFA0008001776C8001FBFC800186C8800187544A -:10FFB00080020B34EBCD406830094AF63068ACA9BA -:10FFC000AC893129314AAC988D99300530130A9BA0 -:10FFD000ED4500ECED4500E88DA58DC5ED550040E3 -:10FFE000ED550042ED55004EED4500D88DB3ECCCFB -:10FFF000FEF0F01F0022ED450124F01F0021ED5519 -:02000004800278 -:1000000000D0ED4C00CCED5500D249ECF01F001EA5 -:10001000F01F001EED4501B8F01F001DF01F001D70 -:10002000F01F001D0A9BECCCFF48F01F001C0A9B30 -:10003000ECCCFF44F01F0019069BECCCFF40F01FF6 -:100040000017069BECCCFF3CF01F0014ED4300446E -:10005000F01F0013F01F001330DCF01F0013F93CF9 -:10006000000FF01F0012F01F0006ED4C01CC069CA3 -:10007000E3CD8068000087F4800091D0800145C402 -:10008000000084CC80017B24800237D080016CDCAE -:100090008001FB8C8001EFE8800144F8800187C873 -:1000A000800205EC8001EF6C800202B8EBCD40606D -:1000B000E06A01F8300B49D518960A9CF01F001C25 -:1000C000F01F001C0C9CF01F001CEACCFFF4F01F7A -:1000D000001BEACCFFE0F01F0019EACCFFF0F01F94 -:1000E0000017EACCFFECF01F0016EACCFFE8F01F87 -:1000F0000014EACCFFE4F01F0012300930DC1AD9FA -:100100001298129A129BF01F000FF01F000FF01FA1 -:10011000000FF01F000FF01F000FF01F000F301C2A -:100120002FFDE3CD80600000000087F4800091D0B7 -:1001300080016F4880021124800145D6800145F27C -:100140008002067C80014690800149B88001804091 -:1001500080015F98800201584848300A4849911848 -:10016000910A930A5EFC000000007A3C00007A4489 -:10017000D421219D4A846808F3D8C001FB6900633B -:10018000E2180002C14030183005FB6800634A3CA9 -:10019000F01F00233018189BFAC9FF9D300A49FC54 -:1001A000F01F0020581CC2802E7DD8225809C1C0E3 -:1001B000109549D870065806CEB0EA050019FA091C -:1001C00000170C9B0E9C306A2FA72FF5F01F00170D -:1001D0006C265806CDD05905CF516808F1D8C0011A -:1001E000F0051700CD5B306AE06B00FF1A9C3015FC -:1001F000F01F000FCDFB48FCF01F0009EA050018B6 -:10020000189BA1781A99300A48ACF01F00062E7D81 -:10021000D822000000007A448003C414800091B802 -:100220008001776C00007A3C800091DC800091D0E6 -:100230008003C41CD40148697208104C930CEDBCB7 -:100240000002C021DA0AF01F0003D80200007A443D -:1002500080020170EBCD408048C76E095809C1305B -:10026000722A580AF3F80003EFF80A01F3F81003B2 -:10027000F5F81A037238129C910AF01F00056E09F6 -:100280005809CEF1E3CF908000007A3C800091E8DD -:10029000D401F01F0007581CC020D802485972082A -:1002A000EDB80002CFB0F01F0004D8028002025463 -:1002B00000007A4480020170F8C900013058F0094A -:1002C0001800E08B00054838B09C5EFF3FCC5EFC18 -:1002D000000087F4D401201DFAC9FFFC12DC1A9932 -:1002E0003048300A307B483CF01F00032FFDD80215 -:1002F0008003C43C8001776CD401201D3018BA8C77 -:100300001A99300A306B484CF01F0004581C5F0CDF -:100310002FFDD8028003C45C8001776CEBCD406870 -:10032000201D48F61893FAC5FFFC2F060AFC0C9C0A -:10033000F01F000C303CF01F000CF94301300C9C06 -:10034000F01F000A0A993018300A307B488CF01FE1 -:100350000009581C5F0C2FFDE3CD8068000087F476 -:10036000800145FC8001EF6C800145FE8003C46C78 -:100370008001776CEBCD4040201D48E6BA8C2F06FB -:100380000C9CF01F000D303CF01F000C1B88F9483E -:10039000006C0C9CF01F000A30181A99300A309B30 -:1003A000488CF01F0009581C5F0C2FFDE3CD8040E6 -:1003B000000087F4800145FC8001EF6C800145FE60 -:1003C0008003C4748001776CEBCD4068201D1898C1 -:1003D0005CB81895FAC3FFFC48D606D82F060C9CCB -:1003E000F01F000C303CF01F000CF94500F00C9C95 -:1003F000F01F000A1A993048300A309B488CF01FD1 -:100400000009581C5F0C2FFDE3CD8068000087F4C5 -:10041000800145FC8001EF6C800145FE8003C480B3 -:100420008001776CEBCD4068201D18985CB818955A -:10043000FAC3FFFC48D606D82F060C9CF01F000C10 -:10044000303CF01F000CF94500EC0C9CF01F000A3A -:100450001A993048300A309B488CF01F0009581C0C -:100460005F0C2FFDE3CD8068000087F4800145FC20 -:100470008001EF6C800145FE8003C48C8001776CA5 -:10048000EBCD4068201D18985CB81895FAC3FFFCA6 -:1004900048D606D82F060C9CF01F000C303CF01FED -:1004A000000CF94500E80C9CF01F000A1A9930482E -:1004B000300A309B488CF01F0009581C5F0C2FFD40 -:1004C000E3CD8068000087F4800145FC8001EF6C7B -:1004D000800145FE8003C4988001776CEBCD4068B5 -:1004E000201D18985CB81895FAC3FFFC48D606D8AA -:1004F0002F060C9CF01F000C303CF01F000CF9453F -:1005000000E40C9CF01F000A1A993048300A309B16 -:10051000488CF01F0009581C5F0C2FFDE3CD80684C -:10052000000087F4800145FC8001EF6C800145FEEE -:100530008003C4A48001776CEBCD4068201D18981F -:100540005CB81895FAC3FFFC48D606D82F060C9C59 -:10055000F01F000C303CF01F000CF94500DC0C9C37 -:10056000F01F000A1A993048300A309B488CF01F5F -:100570000009581C5F0C2FFDE3CD8068000087F454 -:10058000800145FC8001EF6C800145FE8003C4B012 -:100590008001776CEBCD4060201D48F5BABC2F057B -:1005A0000A9CF01F000E303CF01F000DFAC6FFFC45 -:1005B0000D78F94800D80A9CF01F000A0C993018F1 -:1005C000300A306B488CF01F0009581C5F0C2FFD5F -:1005D000E3CD8060000087F4800145FC8001EF6C72 -:1005E000800145FE8003C4BC8001776CEBCD40C028 -:1005F000206D49EC3008F939010DF93B010850082C -:1006000050281AD9F93A010C1ADAFAC7FFF8F93961 -:10061000010AF93A01090E9CF01F00152FED580C44 -:10062000C10140085808C0401A9CF01F0012402C1D -:10063000580CC040F01F0010300C2FADE3CD80C02F -:100640001A9CF01F000E400818965808C0401A9CCB -:10065000F01F0008402C580CC030F01F000758163F -:100660005F0C2FADE3CD80C0000087F48001DAE499 -:100670008001D3A8800091E880018E9CD4214C0792 -:10068000405EEF6C0108EF6B0109EF6E010D1495F0 -:100690001294109A3019F2081800C120EEF801B037 -:1006A0005808C3D05828C4C04B5CEF3B01B5338811 -:1006B000F00B1800C5403398F00B1800C440EF6AE7 -:1006C000010CF01F0030EDDCB010F01F002F0C0CFF -:1006D0005C5C5805C1E11895F01F002A1815EF65FC -:1006E000010AF01F0029EDDCB010F01F00260C0CF1 -:1006F0005C5C5804C3F11894F01F00221814EF64D6 -:10070000010B6E98EDB80001C031F01F0020DA2A0D -:10071000EA0C1800FE98FFE23FCCD822EF3901B571 -:100720003348F0091800CC11EF3901B63418F0093C -:100730001800FE98FFC630E8EF68010CCC3BEF696B -:10074000010CCC0BEF3901B63408F0091800FE9803 -:10075000FFB8301948A8F169010CCB4BF93901B643 -:100760003408F0091800FE98FFA835A8F968010CB4 -:10077000CA9BE80C1800FE9BFFD1CBFB000087F45E -:100780008001F4A48001F504800205ECEBCD40E08B -:10079000303CF01F002330CB18954A26300CF01F58 -:1007A0000022ED4C01AC1897C360303BF01F001FD6 -:1007B0008F2CECF901AC72275807C2903078300BBF -:1007C000B2883068ECFA01ACB498ECF901ACB2AB89 -:1007D000ECF801ACB0BBECF901ACB2CBECF801AC7D -:1007E000EB390075702AB489ECF801ACEB39007470 -:1007F000702AB499ECF801ACEAFB00847029B2AB22 -:10080000ECFC01ACF01F000AE3CF90E0ECCCFE540E -:10081000F01F00080E9CE3CD80E000008001EF6C2B -:10082000000087F48001D8DC8001D3EC800208D47A -:100830008001D3A8D401F01F0002DA0A8001DA5641 -:10084000D401F01F0002DA0A8001DF30D401F01F6A -:100850000002DA0A8001DBE8D401F01F0002DA0AA4 -:100860008001DC04D401F01F0002DA0A8001DC20E0 -:10087000D401F01F0002DA0A8001DC3CD401F01F31 -:100880000002DA0A8001DC58D401F01F0002DA0A03 -:100890008001DC74D401201D1A9BF01F000CC09055 -:1008A00040085808C06048AA7499EDB90000C030EB -:1008B0002FFDDA0A1298A1C831CC9598300A149B02 -:1008C000F01F00042FFDDA0A8001D98C000087F4A4 -:1008D00080014658EBCD40C0206D4958189B709C54 -:1008E000E21C0002C06118970E9C2FADE3CD80C0C2 -:1008F00030081A96502850081A9CF01F000EC1119B -:10090000189740085808C0401A9CF01F000B402C54 -:10091000580CCEB0F01F00090E9C2FADE3CD80C067 -:100920001A9C3017F01F0006CEDB0000000087F491 -:100930008001DED08001D3A8800091E880018E9CE8 -:10094000EBCD4080201D300A1A9BF01F0017C0F02D -:1009500040085808C0F149576E99EDB9000BC071B5 -:10096000EEF801A84917F1D8C001C1212FFDE3CF4E -:10097000908048E76E99EDB90000CF01A1C9300A17 -:100980008F9931CC149BF01F000A6E99CE7BEEFC40 -:1009900001ACF01F00086E98301CABD88F982FFD6B -:1009A000E3CD80808001ED10000087F4800146587F -:1009B000800208D4D401F01F0002DA0A8001DBD0E3 -:1009C000EBCD40FC206D4A5318951097169266980F -:1009D0001496109C1294E21C0002C2D05BF5C30175 -:1009E000303CF01F001F300BF3D7C010F5D4C010FF -:1009F0001AD90C981ADAF3D2C010504B502BFAC601 -:100A0000FFF8F93B00F70A9A0C9CF01F00162FED37 -:100A1000580CC1B1189740085808C0401A9CF01FE4 -:100A20000012402C580CC030F01F00100E9C2FAD4F -:100A3000E3CD80FC18970E9C2FADE3CD80FCEDB884 -:100A40000000CCF13FB7CF3B6698A1A81A9C8798CD -:100A50003017F01F0007CE0B000087F48001EF6C09 -:100A60008001DB588001D3A8800091E880018E9C32 -:100A7000D40130085C7B1099109AF01F0002D80254 -:100A8000800209C0D4013008364B1099109A109C8E -:100A9000F01F0002D8020000800209C0EBCD40E048 -:100AA00020AD3006507CFB6B00201497500650267A -:100AB0001A95FACAFFDCFACBFFE81A9CF01F00195E -:100AC000C111189640085808C0401A9CF01F001623 -:100AD000402C580CC030F01F00150C9C2F6DE3CD3E -:100AE00080E05807C09040980E9B0C9C8F28F01F08 -:100AF0000010581CC0611A9C3016F01F000ECE3B2F -:100B000040085808C0401A9CF01F0007402C580CA1 -:100B1000C0313FD6CE3BF01F00053FD6CDFB0000D5 -:100B20008001DC8C8001D3A8800091E880016C40BA -:100B300080018E9CD401F01F0002D80280020A9C22 -:100B4000EBCD40E0209D3018189A1697F00C09481C -:100B50004A5B7609F1E9000CC06118970E9C2F7D65 -:100B6000E3CD80E0F00811FF12683006507A970854 -:100B7000500650261A95FACAFFE0FACBFFE81A9CF5 -:100B8000F01F001AC1E05807C09040880E9B0C9CD3 -:100B90008F28F01F0017581CC1611A9C3017F01FD6 -:100BA000001540085808C0401A9CF01F0013402C44 -:100BB000580CCD50F01F00110E9C2F7DE3CD80E02E -:100BC0001897CF0B40085808C0401A9CF01F000A25 -:100BD000402C580CC0313FD7CC2BF01F00083FD71A -:100BE000CBEB000000007A4C8001DCEC80016C4013 -:100BF00080018E9C8001D3A8800091E8EBCD40F865 -:100C0000216DFAC6FF901897FB69000EFB68000F74 -:100C1000FB6B0010FB6A00116CF46D036D15ECCCDE -:100C2000FFD4F01F0038306ABA6CECCBFFDCFACC92 -:100C3000FFEDF01F00350D88FB6800190D99ECCB16 -:100C4000FFFEFB69001A320AFACCFFE5F01F002E06 -:100C50004AEE30097C0B301CF809094AF5EB000814 -:100C6000C0902FF95899CF9130060C9C2EADE3CD52 -:100C700080F8F7EA10089D085BF9CF705024FB63F9 -:100C8000001250195807EFF91A003006FAC7FFC4CE -:100C900050F65116FACAFFAC1A9B0E9CF01F001CAE -:100CA000C111189640F85808C0400E9CF01F00195A -:100CB000411C580CCDB0F01F00180C9C2EADE3CD9C -:100CC00080F85805C09041580A9B0C9C8B28F01F57 -:100CD0000013581CC0610E9C3016F01F0011CE3B53 -:100CE00040F85808C0400E9CF01F000A411C580CE8 -:100CF000C0313FD6CBBBF01F00083FD6CB7B0000F6 -:100D000080018058800091DC00007A4C8001DD4C2D -:100D10008001D3A8800091E880016C4080018E9C06 -:100D2000D42120DD4B0510946A0E4126F1DEC0016E -:100D3000C0B0EDBE0001C411EDBE0002C411300709 -:100D40000E9C2F3DD82210973018FB6B002A508A3A -:100D50005077FDE8100850998B08FB540028580C78 -:100D6000F9F71A001A953007FACAFFD05007502732 -:100D7000FACBFFE81A9CF01F001DC101189740082C -:100D80005808C0401A9CF01F001A402C580CCD90F7 -:100D9000F01F00180E9C2F3DD8225806C09040C866 -:100DA0000C9B0E9C8D28F01F0014581CC0C11A9C6F -:100DB0003017F01F0012CE4B30173028CC7B302775 -:100DC0003048CC4B40085808C0401A9CF01F00081F -:100DD000402C580CC0313FD7CB4BF01F00063FD7FB -:100DE000CB0B000000007A488001DDAC8001D3A865 -:100DF000800091E880016C4080018E9CEBCD40E04A -:100E0000207D300616975006189B50261A95FACA70 -:100E1000FFE81A9CF01F001AC111189640085808E4 -:100E2000C0401A9CF01F0017402C580CC030F01F17 -:100E300000160C9C2F9DE3CD80E05807C1904068C0 -:100E40000E9B0C9C8F28F01F0011581CC1104008ED -:100E50005808C0401A9CF01F000B402C580CC0D002 -:100E6000F01F000930060C9C2F9DE3CD80E01A9CFA -:100E70003016F01F0007CD3B1896CDCB8001DE0C5D -:100E80008001D3A8800091E880016C4080018E9C95 -:100E9000D40120CDFB5A0012FB590014FACAFFCC32 -:100EA000502874197408FB590016501874397428A6 -:100EB000FB59001AFB580018745974485039FB58F4 -:100EC000001C74797468FB590020FB58001E74994B -:100ED000748850A95098300974A8FB6C0022FB5B01 -:100EE0000010FB68002C74BBFB6900231A9CF01FE8 -:100EF00000032F4DD802000080020DFCEBCD40EE28 -:100F000020CD3FF94CC850A950B94CC93005303CF0 -:100F100091059305F01F004A322A18961A971A9CD9 -:100F20000A9BF01F0048FAC3FFDE306AE06B00FF47 -:100F3000069CF01F00441AD5ED38004F1AD86D28D2 -:100F40001AD86D191AD9ED1800361AD8ED190032D1 -:100F50001AD96CE81AD8ED19002E1AD9ED18002A02 -:100F60001AD8ED1900261AD9ED1800221AD86C6982 -:100F700030BB1AD9301C6D08ED1900FEED3A001F88 -:100F8000F01F0031ECFB01282F4DF6C80001581866 -:100F9000E0880045ED3100F7ECCAFF8C30153006D3 -:100FA0001AD61AD540D81AD8F4E80000206D069B4E -:100FB000FAE900081A9CF4E20008306AFAE300102B -:100FC000F01F0022EF380021209DFB680021EEE891 -:100FD0000000FAE90000EEE20008FAE30008EEE89B -:100FE0000010FAE90010EEE20018FAE30018EF38FA -:100FF0000020029BFB6800200A990C98FACCFF9015 -:10100000303AF01F00130C9A2EED0C9B40ACF01FF1 -:1010100000110A9C2F4DE3CD80EE1AD50A98FACC28 -:10102000FFD05C5B0A99FE7AFF6AF01F000B2FFD70 -:10103000CB2B000000007A4C00007A488001EF6C56 -:10104000800091D080020E908002E73680020BFC77 -:1010500080020A9C80020D20D431202D500B189163 -:101060004A1776026E9CE21C0002C350304C5011AD -:101070005801E2021700F01F001DEEF700F0189073 -:101080005807C2D030043013C0A82FF45802C1B1A1 -:101090005801F9B301FF5805C1100A9760B66E05F3 -:1010A000F01F00130C9A189B0E9CF01F0012CEE04C -:1010B0000E9CF01F00115805CF114008069C9104AA -:1010C0002FEDD83240182012110C0E9B5018F01F33 -:1010D000000BCE2B1893069C2FEDD8320E943013B4 -:1010E000CEDB0000000087F48001EF6C800145C476 -:1010F000800159A080015CDC800184284828F0FC34 -:1011000000F85EFC000087F4486871195879F9B856 -:101110000001F9F80A00F9B80100F9F81A005EFFB9 -:10112000000087F44828F14C007C5EFC000087F446 -:101130004828F14C01D05EFF000087F4EBCD40C0A1 -:1011400018971496E04A0020E088000830083FF91C -:10115000B898B889E3CF80C02FECF01F00043008A6 -:10116000AE96AE88E3CF90C0800091DCEBCD40FC22 -:10117000206D18941695F01F00431897C1A0F939F7 -:1011800000CC3FF8F0091800C3910896EF3900A889 -:101190003FF8F0091800C5414BB8F0F700F85807C0 -:1011A000C0A1EC040104301C8B042FADE3CD80FC06 -:1011B0000896CF3BE06AFFFF300B1A9CF01F00330C -:1011C0006F38302A707C1A9B2F4CF01F00311A9216 -:1011D0006A0A9A93063AC0442FADE3CFC0FC0C9B39 -:1011E0001A9C5C7AF01F00296F380606707C1A9BE7 -:1011F0002F4C300AF01F0026CD5BE06AFFFF300B5A -:101200001A9CF01F0022302AEEC2FF341A9B049C65 -:10121000F01F00201A966A0A9A93063ACDE55C7A86 -:10122000089B1A9CF01F00191A9B049C300AF01F9F -:1012300000196A08E803000606188B08CA8BE06AE2 -:10124000FFFF300B1A9CF01F0011302AEEC7FF5829 -:101250001A9B0E9CF01F00101A926A0A9A93063A83 -:10126000CBC50C9B5C7A1A9CF01F00081A9B0E9C45 -:10127000300AF01F00096A08060606188B08C8DB4A -:101280008001EFF8000087F48001C7B88001D344E3 -:101290008001D6B08001D558D401F01F0002D802D9 -:1012A00080015D18EBCD40F8FACD00803225149313 -:1012B00018941297BA85FAC6FFFF0C9CF01F001B0A -:1012C000300806063019AC85AC981A951A9A498BE5 -:1012D000089CF01F0018C0503FFC2E0DE3CD80F895 -:1012E0000E9CF01F0015E04C0040C1701AD7493A1F -:1012F000E06B00800A9CF01F00120A9A3019491B0B -:10130000089CF01F000C2FFD1897580CCE61089C0C -:10131000F01F000D0E9CCE2B0E9A089C3019489B96 -:10132000F01F0004CDB0CD9B800091DC8003C4FC95 -:1013300080023BB8800091B8800399D0800091482A -:101340008003C50480024328D421210D300B4B6655 -:10135000169CF01F00368D0CC2B078075807C2A04B -:101360006F985808C2704B283014EF4400641A95E7 -:10137000340B1AD84AFA0A9CF01F002F08990A9ACF -:101380004AEB0E9CF01F002E2FFD580CC2506C082B -:10139000700CF01F002C6C09300893086C08700961 -:1013A0004A98722A910A6C09300893486C0C2F0DE8 -:1013B000D822F01F00261897CF70F01F00254A583A -:1013C0004A59118A4A5B0E9CF01F0025C2056E29FE -:1013D00049D89109CE9B08994A2A4A3B0E9CF01F96 -:1013E0000018C1C14A18340B1AD8492A0A9CF01FA8 -:1013F000001208990A9A49EB0E9CF01F00112FFD6C -:10140000580CC0C13088EF480054CC9B0E9CF01F94 -:10141000000D6C0930089308CC7B0E9CF01F00096E -:10142000CB7B000000008C8C80023B4C8003C50805 -:10143000800399D0800091488003C4FC80023BB8AF -:1014400080024190000003FC80024F4080023B225A -:10145000000004000000042800000404800212A41C -:101460008003C5108003C5148003C5188003C538E8 -:10147000D421169849871495189B109A49740E9C8C -:10148000A888F01F00170A9B30064965EF66002008 -:10149000341A0A9CF01F001449484959EB66004071 -:1014A000700B720CF01F00131896C0C0F01F0012D2 -:1014B0000A99098A0E9B0C9CF01F00106D185808A1 -:1014C000C021D822ECCAFFDC0A9C3209341BF01F71 -:1014D000000CD8220000040400000400800091DC0D -:1014E00000000428800091AC000003FC00008C8CFC -:1014F00080023B0680023B22800212A480023A68EE -:10150000D421210D328A300B1A9CF01F00301A9C16 -:1015100030073014504750544AD5F01F002E8B0C22 -:101520001A96C4A0FAC6FFD8318A0E9B0C9CF01FF5 -:1015300000274A984A990C9B50E850A96A0CF01F62 -:1015400000281896C3B04A7CF01F00274A761AD7A5 -:10155000304B1AD70E984A694A6AEC0B000CF01F00 -:1015600000260E981AD74A591AD74A5A302B0C9C83 -:10157000F01F00210E981AD74A291AD74A2A311B80 -:10158000ECCCFFF8F01F001C0E981AD749F91AD7B7 -:1015900049FA312BECCCFFF4F01F00170E982F8D79 -:1015A000ECCCFFF01AD749B91AD749BA315BF01F12 -:1015B0000012089C2FED2F0DD8226A0CF01F001787 -:1015C0000C9C8B06CF9B0000800091D000007A50CD -:1015D00080022B4C8003C5448003C54C80022C0440 -:1015E000800216FC8002113000007A5480021670CE -:1015F0008003C55480016EB8800217408003C3ACDD -:10160000800216C48003C5708002168C8003C58CCE -:101610008002161C8003C5A480022AF8EBCD40C0CE -:1016200021AD189798E8EDB80000C181368A300BDB -:101630001A9CF01F000C306A0E9B1A9CF01F000AC7 -:101640006E2830195C3850395028488870091A962D -:101650001A9A720C306BF01F00062E6DE3CD80C01D -:10166000800091D0800091DC00007A508002792CBB -:10167000D40148587009300A720C301BF01F000367 -:10168000D802000000007A508002792CEBCD404057 -:1016900021AD368A300B1A9CF01F000830084889AB -:1016A000500872081A961A9A700C302BF01F000519 -:1016B0002E6DE3CD80400000800091D000007A5074 -:1016C0008002792CEBCD404021AD368A300B1A9C3C -:1016D000F01F000830184889500872081A961A9AA4 -:1016E000700C302BF01F00052E6DE3CD8040000004 -:1016F000800091D000007A508002792CD401487883 -:10170000700EF6C9000E189AF8CBFFFA2F2A7C0C3F -:10171000F01F0003DA0A000000007A50800224E083 -:10172000D401580CC051304CF01F0004D802304C8A -:10173000F01F0003D80200008001A12880019F3023 -:10174000EBCD40E0FACD0170FACCFE98F01F001905 -:10175000581CC22145A85818E088001FE068010005 -:10176000FACBFE901A9C16D8F01F00131A95189603 -:10177000FAC7FF00368A300B0E9CF01F0010581677 -:10178000C11048F870090E9A720C300BF01F000D52 -:101790002A4DE3CD80E0300CF01F000B2A4DE3CD45 -:1017A00080E045B85808FE9AFFEE540D5418CEABB1 -:1017B00080015F448002116C800091D000007A505B -:1017C0008002792C80021720000000000000000039 -:1017D000EBCD40C0F8F800D418971696F0F80088C2 -:1017E000F8FA00E85808C040F8FC00C45D185876C4 -:1017F000C1A058065F0858365F091248C11030185A -:10180000EF4800ECEEF900D473985808C050300B44 -:10181000EEFC00C45D18EF4600E8E3CD80C05846FA -:10182000CEF0CFABEEF800EC5808CF603008301B9C -:10183000EF4800ECEF4B00F0EEF800D47198580838 -:10184000CE81CEABD401F01F0002D802800217D0A7 -:10185000F8FC00E85EFCD401F8F800D471A8580840 -:10186000C050F8FC00C45D18D802109CD802D40106 -:10187000F8F800D471185808C050F8FC00C45D187E -:10188000D802DC0AD401F8F800D471285808C050F6 -:10189000F8FC00C45D18D802DC0AD703EBCD408009 -:1018A0003008F8F90108F94801085809C031C08822 -:1018B0000E997207129CF01F00045807CFA1E3CDC8 -:1018C00080800000800091E8D401F8FC00DCF01F6B -:1018D0000002D8028002B4A4D401F8FC0090F01FEA -:1018E0000002D80280023B8CD401F8FC0090F01F6B -:1018F0000002D80280023C84EBCD40C01696F8F777 -:1019000001085807C051C0B86E075807C080EECC18 -:10191000FFFC306A0C9BF01F0004CF710E9CE3CDDE -:1019200080C000008000917CD4011699F8F801185D -:101930005808C0A1F8F800D470285808C0C0F8FCB6 -:1019400000C45D18D802F8CBFF64306A129CF01F07 -:101950000003D80ADC0A0000800091DCEBCD40F8DF -:1019600020AD1897F8F801185808C06030070E9C91 -:101970002F6DE3CD80F8F8F800D470385808CF7098 -:10198000F8FC00C41A9B1A935D181895CF05EEF861 -:1019900001185808C431EEF800D470285808CE70E9 -:1019A000FAC4FFE0EEFC00C4089B5D18CE05EEFC17 -:1019B000009078465806C301EEF800D45808C2C01B -:1019C000700C49BBF01F001BEFFC0024F9B60001AE -:1019D000EFFC102478075807C111CCAB5806C0B0F3 -:1019E0006E885808CC50EECBFFE8306A089CF01F98 -:1019F0000012CBE06E075807CBB0EEF80194580800 -:101A0000CFA16E581035CEB16E4B0A9A1A9CF01FBA -:101A1000000ACE70CE4B3006CDEBFAC4FFE0306A40 -:101A2000EECBFF64089CF01F0005CC2B8003C65C46 -:101A3000800091A08000917C800091DCD401F01F97 -:101A40000002D8028002195CD42120AD3008FB5876 -:101A50000024508816961897F6F801845818C0404C -:101A60003FFC2F6DD82277185808CFB0F8F500B892 -:101A70005885C2205905CF512DCB0A9A1A9CF01FC8 -:101A800000171A940A9A303BEEFE00D47C5858088E -:101A9000CE801ADA1AD43009EF490104EEFC00C4F2 -:101AA00030681AD8FACAFFD430181ADA48CA7C56F5 -:101AB0005D162FCDCD7B2DCB318A1A9CF01F0007F0 -:101AC0000A9AECCBFFCCFACCFFE8F01F00041A9482 -:101AD000320A302BCDAB0000800091DC80039C38B3 -:101AE000D42118951696F01F000F1897C05078381B -:101AF0002FF89938D82A310CF01F000B1894C0F039 -:101B00000C9B306A2FCCF01F000930188938EAF995 -:101B100001088909EB4401080E9CD822DC2A000048 -:101B2000800218F880028F24800091DCEBCD40FC0D -:101B3000EDD9C010407218941693ECCCFFFC1495AC -:101B4000910CF01F00161897C190E8F800907039BA -:101B5000EC081608B893B889B8B6B8A85805C100FB -:101B60000C9A0A9BF8C6FFFC0C9CF01F000D0E9C03 -:101B70005802E5F61A00E3CD80FCE3CD80FC0C9A18 -:101B80000A9BF8C6FFFC0C9CF01F00060E9C580236 -:101B9000E5F61A00E3CD80FC80009200800091DC25 -:101BA000800091D0D401401E5C791ADEF01F000243 -:101BB0002FFDD80280021B2CEBCD40F8203DF8F819 -:101BC00000BC1493129458485F0A58285F0918976C -:101BD00016961449C0603FF70E9C2FDDE3CD80F8C8 -:101BE000F8FC00DCF01F002BC0305816CF50EEC5BB -:101BF000FF64306A4A8B0A9CF01F0028C0D1EEF8BF -:101C000000D470285808C060EEFC00C41A9B5D1810 -:101C1000C370EEC5FF043008F7D6C0081AD8F3D455 -:101C2000C010FAC8FFF4069A0E9CF01F001D2FFD8D -:101C30001896580CCD1040296E2C580CC1001298E3 -:101C40000A9B0C99E06A888EF01F001618970C9C6E -:101C5000F01F00150E9C2FDDE3CD80F8EEF800D4C8 -:101C600071845804C0B01298EEFC00C40A9B0C9911 -:101C7000E06A888E5D141897CEBB3FF7CE9B306A22 -:101C8000485B1A9CF01F0005CC501A95CC5B0000F5 -:101C900080028F78800217C88000917C80021B2C04 -:101CA00080028154800091E8EBCD40C0189EEFDAAD -:101CB000C010782C580CC0600E9AF01F0009E3CDBC -:101CC00080C0FCFA00D475865806C0700E9AFCFCE1 -:101CD00000C45D16E3CD80C0E3CFC0C08002815454 -:101CE000D421497A1894301BF01F0016300A089B43 -:101CF000495CE8C5FF64F01F0015E8F701085807C4 -:101D0000C1C03006C0680E966E0C580CC1601897A2 -:101D1000306A0A9BEECCFFFCF01F000DCF51580635 -:101D2000EFF80000E9F80A42EFF81000EDF81A00A9 -:101D30000E9CF01F0008D822D82200008003C66441 -:101D400080023A1A80023058800274008000917C30 -:101D5000800091E8D401F01F0002D80280021CE04C -:101D6000EBCD408048FA1897301BF01F000FEEF8BB -:101D700000BC5818C0F00E9B300A48CCF01F000C75 -:101D80000E9CF01F000C0E9C307BF01F000BE3CD6F -:101D900080800E9C305BF01F0008E3CD8080000047 -:101DA0008003C68880023A1A8002360080027400DE -:101DB00080021CE0800217D0EBCD4040486A1896A4 -:101DC000301BF01F00060C9B300A485CF01F00051A -:101DD000E3CD80408003C6A880023A1A8002360014 -:101DE00080027400EBCD40F81894F8FC00CC580C3D -:101DF000C360E8F800D05808E08A00321897E8C3BA -:101E0000FF643005C0A8580AC200EEC7FF64E8F8B6 -:101E100000D00A38E08A00242FF5E8F600B0306AD6 -:101E2000069B0E9CF01F0015CF115806C0E06C5A9F -:101E30006EA81438CE91EECCFFFA6C4BF01F000F59 -:101E4000C0406C5A580ACE215807C0906F5AEECB4A -:101E5000FFD4E8FC00DCF01F000AC0403FFCE3CDEB -:101E600080F8EECBFFA8E8FC00DCEEFA0080F01F63 -:101E70000005CF60CF4B00008000917C8002B58CC4 -:101E80008002B52CD4211895E06C009CF01F001B3B -:101E90001897C310EAF401185804C2A1EAF800D454 -:101EA00070C85808C250189B301AEAFC00C45D186C -:101EB0001898C1E50E9C3016E06B009CF0060D46AC -:101EC000EC0B024BF01F000E58065F09580C5F1810 -:101ED0001248E8081800F8071710EAFC00CCF01FB9 -:101EE0000009089CEB4600D0EB4700CCD8220E9CA2 -:101EF000F01F0004DC2A000080009200800091F4B2 -:101F0000800091E8EBCD40801897F01F0008C031A9 -:101F1000E3CD80800E9CF01F0006C0550E9CF01F84 -:101F20000003CF7BE3CFC08080021DE480021E84CB -:101F3000EBCD40FE208D18961697149512921091B5 -:101F4000580BC580F6FB0080580BC0E16F5B580B47 -:101F5000C3210C9CFEFA02E4303BF01F00B93FFCA9 -:101F60002F8DE3CD80FE7568EDB80001CF011A9A80 -:101F7000EECCFFA8F01F00B3CEA16B484029126839 -:101F8000CE606B3840191268CE206B584039126809 -:101F9000CDE0FEFA02B2301B0C9CF01F00A9EEC48B -:101FA000FFD4302A303BECFC00DCF01F00A8089C7A -:101FB0006F5AC4386B68EDB80000CCC1EEC4FFD4D2 -:101FC0001A9A089CF01F009FCC516B484029126858 -:101FD000CC106B3840191268CBD06B58403912685E -:101FE000CB90FEFA026A301B0C9CF01F0095301A51 -:101FF000CDAB7568E21800021A93F9B40102F9B486 -:102000000001F8FC00DC1A9BF01F0092C1F05BECB1 -:10201000C4001A9C320A300BF01F008F6B48502806 -:102020006B3950196B585038089A303BECFC00DC87 -:10203000F01F0086300C189A189BECFC00DCF01F97 -:102040000087C3602F8DE3CFC0FE402A6B49F3EABF -:102050000008C0D0401A6B39F3EA0008C110403ABA -:102060006B59F3EA0008C1B04004CDFB1AD9302BFC -:102070001ADA0C9C4FAAF01F00722FEDCCBB1AD9B4 -:10208000302B1ADA0C9C4F7AF01F006D2FEDCC2B01 -:102090004F5A302B0C9CF01F006ACBCB1AD9302B37 -:1020A0001ADA0C9C4F1AF01F00662FEDCB3B580735 -:1020B000EE0B1700F60A1700F9B80158EFD8E10B3C -:1020C000EFFA1020ECFC00DCF01F0069CBC16B487C -:1020D0004029F1E90009EDB90004C5D0EDB90003CC -:1020E000C750EDB90002E081009430484E1AED4827 -:1020F00000B8301B0C9CF01F00526B384019F1E9FE -:102100000009EDB90004C500EDB90003C7513088DE -:102110004D9AED4800B4301B0C9CF01F00496B58E1 -:102120004039F1E90009EDB90000E080007FEDB928 -:102130000001C55130284D1AED4800BC301B0C9CE5 -:10214000F01F003FECFA00BC306BECFC00DCF01F31 -:10215000003FECFA00B4304BECFC00DCF01F003B1D -:10216000ECFA00B8305BECFC00DCF01F0038029A9F -:10217000049BECFC00DCF01F00421894FE91FF640D -:102180006B57E2170002C191ECFC00DCF01F003D30 -:102190000E9CCE7A31084BCAED4800B8301B0C9C1F -:1021A000F01F0027CABB31084B8AED4800B4301B32 -:1021B0000C9CF01F0023CB4BECFC00DCEACBFFDCDB -:1021C000320AF01F0033089CCCCA30884B1AED4805 -:1021D00000B8301B0C9CF01F001AC90BEDB90004AD -:1021E000FE91FF3231084ACAED4800BC301B0C9CFE -:1021F000F01F0013CA8BEDB90000FE91FF25301BC4 -:102200004A6AED4B00B40C9CF01F000DC89BEDB961 -:102210000001FE91FF1930284A1AED4800B8301B22 -:102220000C9CF01F0007C6AB301B49EAED4B00BC0D -:102230000C9CF01F0003C87B8003C8EC80023A1A94 -:102240008002BD688003C6C08002B4D48003C6E0AB -:102250008002C04C800091D08002B58C8003C734CE -:102260008003C7788003C7008003C7BC8002B52CF9 -:102270008003C8288003C86C8003C8B08002B64CB5 -:102280008002B9EC8003C8008003C8588002B91CE2 -:102290008003C8148003C8CC8003C8808003C84072 -:1022A0008003C894EBCD40C07758EDB80003F9B86F -:1022B0000008F9F80A2FF9B80104F9F81A2F18974D -:1022C000300A1696F8FC00DC149BF01F0025300A3B -:1022D000EEFC00DC149BF01F0023300AEEFC00DC57 -:1022E000149BF01F002130183009ECCBFECCEF48D6 -:1022F00000B8EF4800B4EF4900C02FF976085858ED -:10230000E08B00225808C2512FCB5849CF71EEFA0A -:1023100000BC306BEEFC00DCF01F0014EEFA00B4E1 -:10232000304BEEFC00DCF01F0011EEFA00B8305B21 -:10233000EEFC00DCF01F000DEEFC00DCF01F000CDA -:10234000E3CD80C03048EF4800B8EF4800B4CE0B72 -:102350003028EF4800B8EF4800B4CDAB8002B58C10 -:102360008002B52C8002B5EC8002B4D480028F804C -:10237000EBCD40E0205D1897F8F600B0F8F800BC0F -:102380005828C57059085F0958485F081248C2901C -:10239000302BEEFC00E0F01F002F314A300B1A9C6E -:1023A000F01F002D1A95EEFA00BC588AC200EEF814 -:1023B00000905808C03070785028149958895F18D8 -:1023C00058195F191069ECF8017CEEFC00E01A9ACC -:1023D0000C9B50495038F01F00212FBDE3CD80E009 -:1023E000300BEEFC00E0F01F001BCD8B30085018C6 -:1023F000301B500BECF900F0F3EB0008FBFB1A016B -:10240000EDB90001C120EEF800905808C1F0EEFCD3 -:1024100000D4580CCD10780C491BF01F0012FBFCA7 -:102420000A01EEFA00BCCC4B4018A1B85018CECB34 -:10243000300BF8FC00E0F01F000C300BEEFC00E06D -:10244000F01F000AEEF800BCC9EB3089CB8B00000E -:1024500080026178800091D08002581C8003C65CA5 -:10246000800091A0800261A48002618CEBCD40E0ED -:10247000189716951496F8F800905808C0D0704830 -:102480005808C0A1F8FC00D4580CC060780C48EB88 -:10249000F01F000EC1501AD648DA1AD5301B0E9C18 -:1024A000F01F000C300A0E9B48BCF01F000C0E9968 -:1024B0000C9B0A9C3008488AF01F00092FEDE3CDE1 -:1024C00080E000008003C65C800091A08003C960AA -:1024D00080023A1A800230588002740080027474BC -:1024E000D4211295169614941897F8F900BC5849FF -:1024F000C1C0F8FA00F4580AC10158895F08581998 -:102500005F0B104BF40B1800F9BB000AF9BB014636 -:10251000F01F0019EEFA00F4F4C8FFFFEF4800F4D2 -:10252000EEF900945809C020D822306A0C9BEECCFA -:10253000FF04F01F0012EEF800BC5828C111EEF89D -:1025400000D471585808C040EEFC00C45D180A99C8 -:10255000089A0C9BEEFC00DCF01F0009D8220A99B7 -:10256000089A0C9BEEFC00E0F01F0006FE99FFDECF -:10257000CE7B00008002246C800091DC8002C3CC02 -:10258000800261FCEBCD406C1ADA18951ADB1692CA -:102590001493301B48AAF01F000B48B6300A0A9B60 -:1025A0000C9CF01F000A0A990C9A069B049C3008A8 -:1025B000F01F00072FEDE3CD806C00008003C99071 -:1025C00080023A1A8002360080027400800274741D -:1025D000D401F01F0002D80280022584EBCD40C058 -:1025E000189E1497109CFCF800BC5888C240580BE9 -:1025F000C1A0FCCAFF64FCF600D46C585808C19016 -:102600001ADC16981AD9300BFCFC00C41ADBFD4BFF -:102610000104490E0E991ADE301B6C565D162FCD43 -:10262000E3CD80C0FCF600D448BA6C585808CE916F -:10263000E3CFC0C0585CF9B80002F9B80104580BE8 -:10264000C040FD4800B4CD6BFD4800B8482ACD4BD2 -:1026500080037E2080039C38EBCD40F8FACEFFE863 -:1026600018967C35F8F400D47C037C17685C7C2ECB -:10267000580CC0F01AD51ADE300E1AD71AD3ED4E08 -:102680000104ECFC00C468565D162FCDE3CD80F844 -:10269000E3CFC0F8D42118951694F8F70104580731 -:1026A000C020D822F8F900D472585808C4C01AD7EC -:1026B000F94701041AD70E981AD74B6A1AD70E9BFE -:1026C0007256F8FC00C40E995D16EAF900D42FCDBD -:1026D00072585808C3801AD7EB4701041AD70E98CE -:1026E0001AD74ACA1AD70E9B7256EAFC00C4301990 -:1026F0005D16EAF900D42FCD72585808C2401AD797 -:10270000EB4701041AD70E981AD74A2A1AD70E9BFC -:102710007256EAFC00C430295D16EAF900D42FCDC8 -:1027200072585808C1001AD7EB4701041AD70E98FF -:102730001AD7498A1AD70E9B7256EAFC00C4303960 -:102740005D162FCD5804C200EAFA00D47458580818 -:10275000C12030091AD91AD9EB4901041AD91298A3 -:102760001AD9129B7456EAFC00C4089A5D16EAFA5C -:1027700000D42FCD75A85808C070089B3019300AB6 -:10278000EAFC00C45D183018EB480104D8220000B0 -:1027900080039C38D421204DF8F900D41897169561 -:1027A00073885808C2C11094F8C6FFEAC1C8EEFC8D -:1027B00000C45D1B1AD4189B0E984C19E06A888ED1 -:1027C0000C9CF01F00408F2C2FFD580CC111580598 -:1027D000C140189B305CF01F003CEEF900D47388B8 -:1027E0005808C0D1737B580BCE31169CCE4BEECB24 -:1027F000FFF0F01F0036C1302FCDDC2A7378580867 -:10280000C0B0EEFC00C45D18C070189B306AEECCFE -:10281000FFF0F01F002F6E2C580CCEA1EF39007A7C -:102820003008F0091800C3A1EEF800D47048580829 -:10283000C100301BEEFC00C45D18C0B4EEF800D43B -:1028400071485808C0601A9BEEFC00C45D18C214A1 -:10285000300B0E9CF01F001FEEF800D47099580941 -:10286000C070300BEEFC00C45D19EEF800D470A807 -:102870005808C050301BEEFC00C45D183018EF48FB -:1028800000C84959300C72082FF893082FCDD82270 -:102890004038F1D8C002CDD0CB0B300848891AD8C7 -:1028A000E06A888E0E98EECBFFF0EECCFF86F01F2C -:1028B00000058F3C2FFD580CCB81C9FB800224E022 -:1028C0008002819C80028F1C800281E4800091DC68 -:1028D0008002269400007A6CEBCD40E018971695A4 -:1028E000300BF01F001DEEC6FF64306A49BB0C9C24 -:1028F000F01F001BC2E0EEF801185808C1F00C9B55 -:102900000E9CF01F00183006EEFC00DC0C9BEF461E -:1029100000B0F01F00150C9A0C9BEEFC00E0F01FBD -:1029200000130C9BEEFC00E0F01F00110C9BEEFC72 -:1029300000E0F01F0010E3CD80E0EEF800D470D886 -:102940005808CDE00A9A0C9BEEFC00C45D18CD8BB4 -:102950001896CD6B800217D0800217C88000917C3A -:10296000800226948002B9D48002581C800261E85B -:10297000800261D4D401F01F0002D802800228D85E -:10298000EBCD40C01897F8F800C45808C230303B6F -:10299000F01F003DEEF800D470495809C070300BAC -:1029A000EEFC00C45D19EEF800D470A95809C0709F -:1029B000300BEEFC00C45D19EEF800D47098580896 -:1029C000C050300BEEFC00C45D18300B0E9CF01FA5 -:1029D000002F6E2C3006F01F002E8F266E3C580CF8 -:1029E000C040F01F002B8F36EEF800E45808F9B80D -:1029F0000100EFF81A39EEFC0090580CC060F01F8F -:102A000000253008EF480090EEFC008CF01F0022FB -:102A10003006EEFC00DC0C9BEF46008CF01F001F24 -:102A2000EEFC00E0F01F001EEEFC00DCEF4600E0D4 -:102A3000F01F001CEEFC00DCF01F001BEEFC00DCB5 -:102A4000F01F001A0E9CEF4600DCF01F0019EEFC90 -:102A500000CCF01F00110E9CEF4600D0EF4600CCDA -:102A6000F01F00140E9CF01F0014EEFC00C4580C64 -:102A7000C070EEF800D470785808C0205D18E3CD1F -:102A800080C00000800228D88002269480028174D1 -:102A9000800242B4800091E88002B4CC800256ECFF -:102AA00080029438800294088002C0788002189CCA -:102AB00080021DB880021CE0EBCD4080169778099B -:102AC0001639C0F1761899080E9CF01F000A0E9C6A -:102AD000F01F0009E3CF808072180E38C060109993 -:102AE0005809CFB1E3CFC0806E189318CEEB000029 -:102AF00080022980800091E8EBCD40801897580C27 -:102B0000C051C1980E9CF01F000D6E0B580BCFB139 -:102B1000F01F000BF01F000B6E4C580CC060F01F34 -:102B2000000A6E4CF01F00096E8CF01F00080E9C0E -:102B3000F01F0006E3CD808080022AB88002724C2C -:102B40008002728480028F20800091E8EBCD40C02B -:102B50001897580CC05130060C9CE3CD80C0F01F74 -:102B60000021CFA1334CF01F00201896CF606E08D3 -:102B70006E19991899296E286E89993899996E3C21 -:102B8000580CC040F01F00198D4C6E7C580CC04092 -:102B9000F01F00168D8C6E498D59495891096E5A57 -:102BA0008D6A4948910A49486E698D7991090C9C52 -:102BB000F01F0012C11130196C988DB95808EDF949 -:102BC0001A0C6C285808CC906C185808CC606C4CC7 -:102BD000F01F000BCC200C9C3006F01F000ACBDB52 -:102BE0008002720880028F24800091940000046C9F -:102BF00000007AA400007AA0800275F880028F1E7F -:102C000080022AF8D431204D580C5F08580B5F0918 -:102C1000189316971248C05030050A9C2FCDD83211 -:102C2000E06C011CF01F00C01895CF803018F948E7 -:102C3000010CFEF102F66E22620B580BC100580225 -:102C4000E0800144E2C4FFFC3006760B049CF01FD8 -:102C500000B8C0C02FF6090B580BCF810A9CF01F9B -:102C600000B50A9CF01F00B4CD8BE2060328EB48A8 -:102C700000D46E0C580CE0800122F01F00B0EB4C29 -:102C8000008CF01F00AFEB4C0090CE906E185808EF -:102C9000C0A0785CF01F00A86E1CEAF60090F01F40 -:102CA00000A78D5C6E385808C0C0EAF8009070BC70 -:102CB000F01F00A16E3CEAF60090F01F00A08DBC52 -:102CC000EAF800905808CCB06E4C580CCC80F01F3D -:102CD000009DE04C0063FE9BFFC3EAC1FFEA364A59 -:102CE0006E4B029CF01F00986E5C580CE08100F95E -:102CF0006620340CF01F008C1897CB10FEF8024CA5 -:102D00008F78FEF8024AFEF9024A8F98FEF80248D0 -:102D10008F058F458F658F898FC83006FEF4023C82 -:102D20008F168FA4FEF202388FB2EAF900907288F3 -:102D30008FD8EAF9009072988FE8EAF9009072A8AB -:102D40008FF8F01F0088EB4C00E0E08000C20C9B85 -:102D5000F01F00850C9BEAFC00E0F01F0084EAF8FD -:102D600000D470685808E08000A7029B0A9C5D1898 -:102D7000EB4C00C4FE90FF74EAF8009070BBEAF8D8 -:102D800000D470895809C0605D19FE95FF69EAF8A2 -:102D900000D471685808C0F0EAFC00C45D181897A8 -:102DA000C0A0029BF01F0062C0600E9B364A029CCE -:102DB000F01F006534CCF01F005CFE90FF514EC840 -:102DC0004EC9991899294EC84EC9993899494EC883 -:102DD0004EC9995899694EC84EC9997899894EC873 -:102DE0004EC9999899A94EC84EC999B899D94EC853 -:102DF0004EC999C899E94EC84EC9F9440040F942F4 -:102E00000044990599F8F9490048F01F0069EB4C16 -:102E100000DCFE90FF25EB39007A3008F00918003D -:102E2000C5C1300A029BF01F0063EAF80090EAFC7B -:102E300000DC707BF01F0060EAFB00E0EAFC00DCD5 -:102E4000F01F005EEAFA009074C85808C60174D8F2 -:102E50005808C52174EA580AC080302BEAFC00DC0F -:102E6000F01F0057FE91FEFC009B0A9CF01F0055CE -:102E7000FE95FEF6EACBFFF0EAFC00DCF01F005204 -:102E80003FF8EB4800E4EAF900D473485808C0D092 -:102E90001A9BEAFC00C45D18C0814038EDB80002FE -:102EA000C0413018EB4801188B0366088B18870562 -:102EB000FE9FFEB5EB4800C4CD2A6E3B6E1CF01F92 -:102EC0000043EB4C0090CFDAF94B00D4CD3A0E9C86 -:102ED000F01F0019FE9FFEC4EACAFF86CA4BF01F0E -:102EE000001958FCFE9BFEBC6E5B310AEACCFF86E3 -:102EF000F01F0015CFEA109A301BEAFC00DCF01F2F -:102F00000030FE91FEADEAFA0090CA5B109A300BD9 -:102F1000EAFC00DCF01F002AFE91FEA2EAFA009013 -:102F2000C97B000080028F2400000470800091A003 -:102F300080022980800091E88000919480021348EB -:102F4000800091B8800091AC80021D60800225DC79 -:102F500080021BB8800218C8800218E8800218D8C6 -:102F60008002609C800261E8800261D48002184483 -:102F700080021850800225D0800229748002304CD3 -:102F8000800226588002360080021A3C80021928EE -:102F900080021CA880021F0480021BA480021D5412 -:102FA0008002186E80021884800218568002C0DCED -:102FB0008002B4C08002B4B88002B4CC8002B4D421 -:102FC000800227948002B90480023B4CEBCD40E0A4 -:102FD000306A18971695F8C6FF64497B0C9CF01F61 -:102FE0000017C270EEF801185808C1800C9B0E9CA7 -:102FF000F01F00130E9CF01F00133006EEFC00DCE7 -:103000000C9BEF4600B0F01F00100C9A0C9BEEFCDE -:1030100000E0F01F000EE3CD80E0EEF800D470E891 -:103020005808CE500A9A0C9BEEFC00C45D18CDFBEC -:103030001896CDDB800217C88000917C8002269410 -:10304000800276648002B9D48002581CD401F01F3B -:103050000002D80280022FCCEBCD40C0499BF8C7BC -:10306000FF641896306A0E9CF01F0017EDFB189C49 -:10307000E06800A2EDD8E007EDFB08A20FD81AD84F -:103080000FC91AD90FB81AD80FA91AD90F9848FA28 -:103090001AD80C9C1ADB302BF01F000D0E9B0C9CD9 -:1030A000F01F000CECFC00DCF01F000B303B0C9C14 -:1030B000F01F000A30182FADED4800A8E3CD80C006 -:1030C000800217C88000917C8003C9B880023A1A38 -:1030D00080021AE08002BA1C80022FCCD431FACDD3 -:1030E00000D03007F94700A8189516941491580B92 -:1030F000E0800217F6F60084E8CCFFFA76ABF01F0A -:10310000012A1AD61ADC09D81AD809C91AD909B855 -:103110001AD809A91AD909981AD809890A9C1AD95A -:10312000FEFA0488302BF01F01220E9B306A2F8D8F -:10313000EACCFF64F01F011F306A089BEACCFF5EF7 -:10314000F01F011D0A9CF01F011D300AEAFC00DC83 -:10315000149BF01F011B635AEDBA0003C061E2F833 -:1031600001745808E08100B1301063795809C0E05B -:10317000E1D9C0011298EDB90001E08000A4EDB9D9 -:103180000002F9B80004E1D8E030EAF800D4710890 -:103190005808C060009BEAFC00C45D18635A5804DC -:1031A000C07069585808C5A0F1DAC002C6E114978A -:1031B000E2170013C5B1029B0A9CF01F0102FAC876 -:1031C000FF9453375028089B0A9CF01F00FFEAF831 -:1031D00000B45828E08001BAE089007F5818E080E8 -:1031E000017130285038EAF800B85828C7F058283C -:1031F000E08900805818E080016230285048EAF9E0 -:1032000000BC58495F0B58895F08F7E81008C78071 -:10321000E2C9FECCE2C8FF0C16963007EC1600019E -:103220005019500812931092505766095809E081BE -:1032300001122FF72FC32F025847CF81EAF900BCA4 -:103240005889C671E2F800F04059F1D8C002F3E89D -:103250001008E08101311096C5F8E8F800805808A0 -:10326000CA70F1DAC002CA40C1083509FAC8FF3095 -:1032700010D9029AFAC9FF94300B50290A9CF01F0A -:1032800000D3CA202CCDD832E2F801485808E0819A -:10329000010FEAF900B0089A300BEAFC00DCF01FDD -:1032A00000CCE080017A3509FAC8FF3010D9029AC3 -:1032B000FAC9FF94089B50290A9CF01F00C4C8401B -:1032C000CE2BA1B0C5DBE2F801785808F9B00004B4 -:1032D000F9B00105C4BB5848C8605908C831303935 -:1032E0005039EAF800B85828C83130195049C88B0D -:1032F0005848C8505908C82130395049C81B3008AF -:103300005058E2C8FECC30165018E2C8FF0C5008E6 -:103310005909E080011FEAF800D470A85808C0508D -:103320000C9BEAFC00C45D18303B0A9CF01F00A90E -:10333000354AFAC7FFE8300B0E9CF01F009E580478 -:10334000E0800126E8F8008450645098E8C8FFFA4D -:10335000507868A95089E2FA0184581AE080009EEA -:103360004029403850A950C84049433850D950B836 -:10337000EAF800BC5848E08000E7E0890088581867 -:10338000E08000A43018510A4014400350E850F087 -:10339000FACAFFAC0899069BFACCFF9C7208580841 -:1033A000C040F54BFFF0720814A82FC92F0B183A34 -:1033B000CF61E2F801445198EAF601185806E0801E -:1033C0000089FEFA0212302B0A9CF01F0079301996 -:1033D000EAF800BC5908E080008F5809E0800098A6 -:1033E000305B300A0A9CF01F007D40585808C1C06D -:1033F000EAF800D471485808C170FACBFF44EAFCDF -:1034000000C45D18C1114328EDB80001C0D1189760 -:103410004F30189268095809E08100A12FF72FC496 -:103420002F035847CF81EAF800B05808C070103118 -:10343000C050EAFC00E0F01F006BEAFC00DC029BDD -:10344000EB4100B0F01F00680A9CF01F00682CCD13 -:10345000D832EAFB00D4E2FA014476585808C13069 -:103460001AD91AD23009EB4901041AD94DC90E3ABA -:103470005F081AD94DEA76560E99301BEAFC00C453 -:103480005D162FCD30165056CD5A5888C2005908B7 -:10349000FE91FF7A3048C78BE2F901A45809FE9AE1 -:1034A000FF6140985808FBF90A09C5BB6368F1D869 -:1034B000C021CF0A50375047C2FB30085048CA0AD3 -:1034C00030085038FE9FFE913008C5EB3038C5CB30 -:1034D000EAF800D470F85808FE90FF750E9BEAFCDD -:1034E00000C45D18FE95FF6F0C99EAF800BC5908FE -:1034F000FE91FF75029B0A9CF01F003E0A9CF01F84 -:10350000003E307B0A9CF01F0033C70BEAF80090A6 -:1035100070495819F9BB000AF9BB013CC63B745B02 -:10352000744CF01F00214B5A1ADC302B0A9CF01F00 -:103530000020306A089BEACCFF5EF01F001E2FFDC2 -:10354000FE9FFE023028C20B30195039FE9FFE4DFF -:10355000029B0A9CF01F0027CDFAEAFB00D4E2FA96 -:10356000014476585808FE90FF5B1AD91AD3EB42F3 -:1035700001041AD20E3A5F081AD00E99765649CA3B -:10358000301BEAFC00C45D162FCDC49B6248507806 -:1035900062595089CE1A301BEAFC00E0F01F001877 -:1035A000FE9FFE8380023A1C8003C9F880023A1A0B -:1035B000800091D0800091DC80021DB88002B5ECC3 -:1035C000800222A48002269480021F308002938011 -:1035D000800217D08003CA6C8002246C80037E2096 -:1035E000800257488002B9D48002237080039C383F -:1035F00080021A4880021CE08003CA488002559667 -:10360000EBCD40C021AD1897F8F800AC5808C68142 -:10361000F8F6010CEEFB009076095809C061C8F875 -:1036200072095809E080008CF2F801945808CF9193 -:103630003008EF48010C76495809C670EEFC00D4FA -:10364000580CC0E04DAB780CF01F005AEFF8002486 -:10365000F1FC0A04EEFB009076485808C560EEF8CD -:1036600000E85818E088008D760AEEF800C858186F -:10367000C3F0580AC090103AC041C3981438C370C0 -:10368000740A580ACFC15826C04076485828C690B8 -:10369000580AEFFA1A32F9B80001EFF80A32EEF9D7 -:1036A00001105809C04176485818C710EEF80118A3 -:1036B0005808C4F1580AF40B1700F60A1700F5FB76 -:1036C0001004F5FA1005EEF800D470B85808C410CC -:1036D000EEFC00C45D18C3D12E6DE3CD80C0F8F6BA -:1036E000010C5806C9812E6DE3CD80C0740A580ABA -:1036F000CCB0F4F801945808CFA175885808CC4193 -:1037000076485828CF41CC0B0E9CF01F002BCE5092 -:10371000EEF800B05808EFFC0A2C0E9CF01F0027B2 -:10372000300B1A9C368AF01F00261A961A9A0E9CA5 -:10373000300BF01F00242E6DE3CD80C05806FE91A3 -:10374000FF790E9C301BF01F00202E6DE3CD80C052 -:103750000E9C300A30ABF01F001D2E6DE3CD80C0F3 -:10376000580AC1D074085808EFFA1A32F9B80001A3 -:10377000EFF80A320E9C300BF01F0015CAEB302B0D -:103780000E9CF01F0011EEFB0090C6FBEF480110ED -:10379000129A0E9C303BF01F000BC9FB30180E9C98 -:1037A000EF4800C8149BF01F0009C97B8003C65C6A -:1037B000800091A08002195C80022370800091D06B -:1037C0008002792C800217D080022584800230DCB0 -:1037D0004848300A48499118910A930A5EFF000050 -:1037E00000007A7000007A78EBCD40681695189347 -:1037F000F6CCFFEDF01F0022314A1896300BF01F77 -:1038000000210A9A8D15ECCCFFF0069BF01F001EDC -:1038100049EAF5090042AC09F50800422FF8F558CD -:10382000004249B530088D286A198D3993062F86D4 -:103830008B1649866C08F0C9FFFF8D095909E0888D -:1038400000180A936A0C782A580AF9F80003E7F876 -:103850000A01F9F81003F5F81A0320197838910ACB -:103860008D09F01F000D6C095909FE9BFFED300A10 -:10387000326C149BF01F0009E3CF90688000920027 -:10388000800091D0800091DC000087F400007A7005 -:1038900000007A78800091E880014658EBCD40E046 -:1038A00030961697305E300B33A51989F2C8003078 -:1038B000EC081800E08B0019F2CA0030580AC2C5A3 -:1038C0001999F2C80030EC081800E08B0017F2C814 -:1038D00000305808C215F1EA1048EE0B0B08585B8F -:1038E000C291E3CF80E0F2C80061FC081800E08BD1 -:1038F000000EF2CA0057CE3BF2C80061FC08180067 -:10390000E08B000DF2C80057CE5BF2C80041FC0806 -:103910001800E088000DE3CFC0E0F2C80041FC08C9 -:103920001800FE9BFFFAF2C80037CD4BF2CA0037F1 -:10393000CC6B19A8EA081800CEF12FFB586BCD20EC -:103940002FDCCB4BEBCD40E016961497580AC4C041 -:10395000300B3095305EC1B8F2CA0030580AC365EA -:103960001999F2C80030EA081800E08B0021F2C86B -:1039700000305808C2B5F1EA10485808C275EC0B7F -:103980000B082FFB1637E08800302FEC1989F2C89E -:103990000030EA081800FE98FFE1F2C80061FC0858 -:1039A0001800E08B000EF2CA0057CD9BF2C80061F0 -:1039B000FC081800E08B000DF2C80057CDBBF2C820 -:1039C0000041FC081800E088000DE3CFC0E0F2C819 -:1039D0000041FC081800FE9BFFFAF2C80037CCAB90 -:1039E000F2CA0037CBCBE3CF80E0F6CA00015E6CB1 -:1039F000F80A000913882FF85C58B2885E1CF6C8D4 -:103A00000002100CC08819882FF85C58B888201C58 -:103A100058085E1C201ACF875EFC5EFCEBCD40C0D0 -:103A200049071696189BE0460020F9B60B200E9C1D -:103A30000C9AF01F000D3008EE060B080F8858088E -:103A4000C0D00E9C35E935FA2208F2081800F9FAC0 -:103A5000BE002FFC19885808CF81482CE3CD80C0C8 -:103A600000007A7C800091DCEBCD40FE189114922E -:103A7000169C1293580BC2A0E20B00045809C20016 -:103A800002973006C0881835E08A001418070C33F6 -:103A9000E0880018E4060708E80701051AD80E9C1C -:103AA00048CA0A9B2FF6F01F000C2FFD580CCEC4FD -:103AB0003008EE01010CE968FFFFE3CD80FE0297BC -:103AC0003008EE01010CE968FFFFE3CD80FE000045 -:103AD0008003DA3080009148580CC140F8FC00D0D7 -:103AE000580CC1002FCCF8F8FFFC5808C0417809E9 -:103AF0005809C0901638C0302F8CCF6B7808143816 -:103B0000CFC15EFF5EF9780C580C5E0C7828163831 -:103B1000C0515EFC782816385E0C780C580CCFB17A -:103B20005EFC30383189F94800F0F9480058F9480E -:103B3000005431E8F949004CF94800503FF9E06879 -:103B40000576F949017CF948019C5EFCEBCD40E02B -:103B500018961695344CF01F000C1897C1103018A9 -:103B60009978993899485806C0500C9CF01F000766 -:103B70008F5C5805C0500A9CF01F00048FBC0E9C3F -:103B8000E3CD80E080028F2480009194EBCD40C093 -:103B9000169679075807C051C0C86E375807C090AD -:103BA0006E0C0C9BF01F0004CF910E9CE3CD80C0E7 -:103BB000E3CF80C0800091A0EBCD40FC1695189417 -:103BC000580C5F0B58055F081493104B1292C040BD -:103BD0003FFCE3CD80FC580ACFC048E73006C06800 -:103BE0002FF62E07E0460038CF406E0B0A9CF01FE0 -:103BF000000ACF710699049A089B0E9C6E185D18F6 -:103C0000F9BC01FFF9BC0000E0460038CE31CE1B04 -:103C10008003CC00800091A0EBCD40801897580C19 -:103C2000C0A0780CF01F00056E1CF01F00040E9C55 -:103C3000F01F0002E3CD8080800091E8D421189429 -:103C4000169579075807C1A03006C0680E966E3CDD -:103C5000580CC14018970A9B6E0CF01F0009CF71D9 -:103C60005806EFF81003EDF81A03EFF80003E9F82F -:103C70000A100E9CF01F0003D82ADC2A800091A0B5 -:103C800080023C18EBCD406016961895760BF01F1D -:103C900000056B088D38EB460040E3CD80600000E6 -:103CA00080023C3CD431202D500B129CF01F003C74 -:103CB0001890C730198A580AC670300118965011EA -:103CC000320230930294C0382FF60D8AE40A1800AD -:103CD0005F08E60A18005F091248E8081800CF518B -:103CE000580AC2C00D87E40718005F18E6071800DD -:103CF0005F191268E8081800C4505807C4300C95C2 -:103D0000C0385807C0D02FF50B87E40718005F189C -:103D1000E60718005F191268E8081800CF31AA8476 -:103D20004A0B0C9CF01F0020C171A1A15807C06074 -:103D3000EAC6FFFF0D8A580ACCA1009CF01F001BA9 -:103D40005801C2404008F141005C40195809C25175 -:103D5000129C2FEDD832496B0C9CF01F0013C03120 -:103D6000A1B1CE5B0C9C493BF01F000FF9B80004D9 -:103D7000E3D8E031FBF91001F7B901FFFBF91A01B3 -:103D8000CD6B0C95CCDBF01F0009300840093FFCDF -:103D9000F348005C2FEDD8322FEDDC3A800091948F -:103DA0008003D304800091A0800091E88003D30CAD -:103DB0008003D314EBCD40FE169CF01F00451891F4 -:103DC000C6B0198A580AC7A0189630023203309438 -:103DD000E80A18005F08E60A18005F091049300871 -:103DE000F0091800C0E0109B2FF60D8AE60A1800B3 -:103DF0005F08E80A18005F091248F6081800CF515A -:103E0000580AC4500D87E80718005F18E607180025 -:103E10005F1910693008F0091800C3705807C350C3 -:103E2000109A0C95C0385807C0D02FF50B87E607BD -:103E300018005F18E80718005F191268F4081800E6 -:103E4000CF3130084A3BAA880C9CF01F0023C0F1F8 -:103E5000A5A25807C060EAC6FFFF0D8A580ACB9199 -:103E6000029CF01F001E049CE3CD80FE49CB0C9CFD -:103E7000F01F0019C031A3B2CEDB49AB0C9CF01F80 -:103E80000016C0E1A3A2CE6B0C95CDCB029CF01F17 -:103E900000135802CE913FF2049CE3CD80FE492BE3 -:103EA0000C9CF01F000DC031A1B2CD4B0C9C48FB07 -:103EB000F01F0009C071A1A2CCDBF01F00083FF287 -:103EC000CD3B029C3FF2F01F0005CCEB80009194AB -:103ED00080039A74800091A0800091E880039A6C1E -:103EE0008003D31C8003D3248003C8E4EBCD40803F -:103EF0001697149C129BF01F00085BFCC031E3CFA7 -:103F0000C0801898E018FFE1CFB1EF4C0050109C32 -:103F1000E3CD808080023DB4EBCD40801697149CA9 -:103F2000129BF01F00085BFCC031E3CFC0801898E3 -:103F3000E018FFE6CFB1EF4C004C109CE3CD808041 -:103F400080023DB4D431201D500B129CF01F00485C -:103F50001891E080007F198A580AC6B0300218967E -:103F6000049032033094E80A18005F08E60A18004B -:103F70005F0910493008F0091800C0E0109B2FF6C7 -:103F80000D8AE60A18005F08E80A18005F0912485F -:103F9000F6081800CF51580AC2F00D87E80718003C -:103FA0005F18E60718005F1910693008F00918005B -:103FB000C3E05807C3C0109A0C95C0385807C0D04A -:103FC0002FF50B87E60718005F18E80718005F1940 -:103FD0001268F4081800CF3130084A6BAA880C9C8C -:103FE000F01F0025C161A1B25807C060EAC6FFFFFB -:103FF0000D8A580ACB91029CF01F00205802C1B0D4 -:104000004009F34200545800C241009C2FFDD832B1 -:1040100049BB0C9CF01F0018C031A1A2CE6B499B7C -:104020000C9CF01F0015C0E1A3B2CDFB0C95CD5B3D -:10403000F01F0012300840093FFCF34800542FFDE8 -:10404000D832491B0C9CF01F000CC051A3A2CCDB42 -:104050002FFDDC3A0C9C48DBF01F0007F9B800107C -:10406000E5D8E032F7B001FFCC0B0000800091945E -:104070008003C8C4800091A0800091E88003D32C05 -:104080008003D3348003C8E48003C8E0D431202DFA -:10409000500B129CF01F00391890C6D0198A580A8C -:1040A000C610300118955011320230930294C03876 -:1040B0002FF50B8AE40A18005F08E60A18005F096A -:1040C0001248E8081800CF51580AC2C00B87E4070D -:1040D00018005F18E60718005F191268E808180052 -:1040E000C3F05807C3D00A96C0385807C0D02FF67F -:1040F0000D87E40718005F18E60718005F191268BB -:10410000E8081800CF31AC8449DB0A9CF01F001D81 -:10411000C171A1A15807C060ECC5FFFF0B8A580A06 -:10412000CCA1009CF01F00185801C1E04008F141EB -:10413000005840195809C1F1129C2FEDD832493B63 -:104140000A9CF01F0010C031A1B1CE5B0A9C490B44 -:10415000F01F000CCFA040192FF95019CDCB0A96B3 -:10416000CD3BF01F0009300840093FFCF3480058E0 -:104170002FEDD8322FEDDC3A800091948003D340AC -:10418000800091A0800091E88003D3448003D3484D -:10419000EBCD40401896784CF01F00466D2CF01F78 -:1041A0000045ECFC00D0F01F00436DACF01F004157 -:1041B0006DCCF01F00406DECF01F003EECFC008069 -:1041C000F01F003CECFC0088F01F003AECFC009073 -:1041D000F01F0038ECFC0094F01F0036ECFC009857 -:1041E000F01F0034ECFC009CF01F0032ECFC00A03F -:1041F000F01F0030ECFC00A4F01F002EECFC00A827 -:10420000F01F002CECFC00ACF01F002AECFC00B00E -:10421000F01F0028ECFC00B4F01F0026ECFC00B8F6 -:10422000F01F0024ECFC00BCF01F0022ECFC00C0DE -:10423000F01F0020ECFC00C4F01F001EECFC00C8C6 -:10424000F01F001CECFC00CCF01F001AECFC00D4AA -:10425000F01F0018ECFC00D8F01F0016ECFC00DC8E -:10426000F01F0014ECFC00E0F01F0012ECFC00E872 -:10427000F01F0010ECFC00ECF01F000EECFC0150F5 -:10428000F01F000CECFC016CF01F000AECFC01803C -:10429000F01F0008ECFC018CF01F0006ECFC01A0F4 -:1042A000F01F00040C9CF01F0003E3CD80400000D1 -:1042B000800091E8EBCD40C0189678085808C031CE -:1042C000C0880E987007109CF01F00155807CFA1EA -:1042D0006D085808C031C0880E987037109CF01FC8 -:1042E00000115807CFA16C5CF01F000F6C6CF01F21 -:1042F000000E6C8CF01F000C6C9CF01F000B6CAC63 -:10430000F01F00096CBCF01F00086C1CF01F0006B9 -:104310000C9CF01F0005E3CD80C00000800241909E -:1043200080023C18800091E8EBCD4040320818969E -:104330001AD8E0691000F8C8FFDC785A784B792C5D -:10434000F01F000430182FFDED480044E3CD8040FD -:104350008002B254D421F60815011695F0C6FFFF6D -:1043600018940C9CF01F00061897C0600A99089AD0 -:104370000C9BF01F00040E9CD822000080028F24AA -:1043800080023A68EBCD40E016951896F6CCFFFD1A -:10439000F01F00091897C0C00C9B0A9A322618C655 -:1043A000F01F0006EE0500093008B296B2A80E9C78 -:1043B000E3CD80E080009200800091DCD401580CB5 -:1043C000C1D0580BC160198835E92208F2081800DD -:1043D000E08B0013129A3009C088F80907082208F8 -:1043E000F4081800E08B00092FF9123BFE9BFFF741 -:1043F000F01F0003D802F01F0003D802800243849C -:1044000080024354D4011698F6FC0140580CC06059 -:10441000189BF0CCFEDCF01F0002D802800243BCE7 -:10442000D4011698F6FC013C580CC060189BF0CCE7 -:10443000FEECF01F0002D802800243BCD4011698A3 -:10444000F6FC0138580CC060189BF0CCFEFCF01F45 -:104450000002D802800243BCD4011698F6FC013455 -:10446000580CC060189BF0CCFF0CF01F0002D80263 -:10447000800243BCEBCD40F831EC1694F01F0028CD -:104480001896C3906979F8C3FFE2EDB90000C360E4 -:104490001897EDB90001C1614A294A380C37F20872 -:1044A0001710E60701051AD84A0A0A9B0E9CF01F4E -:1044B00000202FFD580CC1C51835E08A001A1807D6 -:1044C0006979EDB90002C171496949780C37F20880 -:1044D00017100E9C1AD8E6070107496A0E9BF01FB9 -:1044E00000142FFD580CC0451837E089000530082E -:1044F000E768FFFF0C9CE3CD80F848B848EA1AD87B -:1045000031EBF01F000B2FFD580CCF2559DCFE9925 -:10451000FFF0EC0C00076979CBDB000080028F24F0 -:104520008003936480037E208003D35880009148E9 -:104530008003D3648003D350EBCD40F81894332C20 -:10454000F01F003E1896C650F8C3FFCEEDB400042D -:10455000C6301897EDB40003C1514B994B980C37F6 -:10456000F2081710E60701051AD84B7A0A9B0E9C31 -:10457000F01F00362FFD580CC4951835E08A00470F -:104580001807EDB40002C1514AD94AE80C37F208C5 -:104590001710E60701051AD84ADA0A9B0E9CF01F8D -:1045A000002B2FFD580CC3251835E08A0030180762 -:1045B000EDB40001C1514A294A280C37F2081710FE -:1045C000E60701051AD84A3A0A9B0E9CF01F001F05 -:1045D0002FFD580CC1B51835E08A00191807EDB445 -:1045E0000000C171496949780C37F20817100E9C18 -:1045F0001AD8E6070107498A0E9BF01F00142FFD09 -:10460000580CC0451837E08900053008E768FFFFFF -:104610000C9CE3CD80F848B8490A1AD8332BF01F18 -:10462000000B2FFD580CCF25E04C0031FE99FFEF19 -:10463000EC0C0007C90B000080028F2480039364F8 -:1046400080037E208003D374800091488003D37C54 -:104650008003D3888003D3908003D36CD401774C3C -:10466000F01F0002D802000080024538D401773CD8 -:10467000F01F0002D802000080024538EBCD40F860 -:10468000332C1693F01F00401896C6906759F8C453 -:10469000FFCEEDB90001C6601897EDB90000C16109 -:1046A0004BA94BB80C37F2081710E80701051AD8C8 -:1046B0004B8A0A9B0E9CF01F00382FFD580CC4C576 -:1046C0001835E08A004A18076759EDB90003C1613F -:1046D0004AE94AF80C37F2081710E80701051AD81A -:1046E0004AEA0A9B0E9CF01F002C2FFD580CC34574 -:1046F0001835E08A003218076759EDB90002C16128 -:104700004A294A380C37F2081710E80701051AD869 -:104710004A3A0A9B0E9CF01F00202FFD580CC1C581 -:104720001835E08A001A18076759EDB90004C171FD -:10473000496949780C37F20817100E9C1AD8E80717 -:104740000107498A0E9BF01F00142FFD580CC0452D -:104750001837E08900053008E968FFFF0C9CE3CDBD -:1047600080F848B8490A1AD8332BF01F000B2FFDE8 -:10477000580CCF25E04C0031FE99FFEFEC0C000700 -:104780006759C8CB80028F248003936480037E2006 -:104790008003D3A4800091488003D3B08003D390DA -:1047A0008003D3BC8003D398EBCD40C030AC1696C9 -:1047B000F01F00181897C1806D69EDB90000C17035 -:1047C000189A301BEDB90001C0F149384939580B2E -:1047D000F0091700149C1AD9EECBFFF6141B490AF6 -:1047E000F01F00102FFD0E9CE3CD80C048B848EAB2 -:1047F0001AD830ABF01F000B2FFD580CCF55589C2A -:10480000FE99FFF3EE0C000A6D69300BCDCB000072 -:1048100080028F248003936480037E208003D3D0A2 -:10482000800091488003D3C8EBCD40C01697768CAA -:10483000580CC05118960C9CE3CD80C0314CF01F31 -:1048400000101896CF90EF38001DEF3A00181AD8D4 -:10485000EF39001C1AD9EF38001B1AD8EF39001AAB -:104860001AD9EF380019314B1AD81ADA485AF01F02 -:10487000000630082FADED680013CDEB80009200EC -:104880008003DA4880009148EBCD40E078351696F9 -:10489000314CF01F000A1897C0C0EC050308488A85 -:1048A0001AD8314BF01F000730082FFDEF680013B6 -:1048B0000E9CE3CD80E00000800092008003DD6864 -:1048C00080009148EBCD40801697772C580CC09013 -:1048D000F01F0009189B6F2CF01F0008E3CD8080AB -:1048E000771C580CC060F6CCFFDC320BF01F0004C4 -:1048F000E3CD8080800091B88002438480024354DD -:10490000EBCD40807838F60800076E085808C0C024 -:10491000784C580CC0C0F60C030C189B109CF01F70 -:104920000007E3CD8080109CE3CD8080109CF01FB9 -:1049300000046E08CF3B0000800243BC800091B8A9 -:10494000EBCD40F83228169418961989F009180012 -:10495000C0A0F01F001BEBDCC001C19030070E9C13 -:10496000E3CD80F8F8C7FFFF322B0E9CF01F001537 -:10497000CF6019985808CF31B8880E9CF01F0010EE -:10498000890C0E9CF01F00101897CEABF80316018F -:10499000E6CCFFFFF01F000D1897CE200C9C069A66 -:1049A0000E9BF01F000BC051EE030B0C8903CD8B47 -:1049B0000E9C0A97F01F0007CD3B0000800091B8C5 -:1049C00080009158800091948000920080023944C8 -:1049D000800091E8D421205D18951094129C1696C1 -:1049E000F01F000F1897C1906C0A590AE08B001451 -:1049F000189B0A9CF01F000B0E9CF01F000B48BA7E -:104A00001AD4314BFACCFFFCF01F0009300C2FFDFB -:104A10002FBDD822F01F00042FBDDC2A80024940A0 -:104A2000800091DC800091E88003D3D88000914819 -:104A3000D4013038F6CCFEDCF6CBFEC0F01F00020D -:104A4000D8020000800249D4D4013028F6CCFEEC14 -:104A5000F6CBFEC4F01F0002D8020000800249D449 -:104A6000D4013018F6CCFEFCF6CBFEC8F01F0002D5 -:104A7000D8020000800249D4D4013008F6CCFF0CE3 -:104A8000F6CBFECCF01F0002D8020000800249D411 -:104A9000EBCD40F8201D18971693129C1A9BF01F1F -:104AA00000171895C2306E595809C0504008103987 -:104AB000E08B00206E695809C04040081039C133AE -:104AC0006E366E44E60600066C0CF01F000D8D0578 -:104AD0006E4C580CC0504008300CE60409082FFDFD -:104AE000E3CD80F80A9CF01F00062FFDE3CFC0F84D -:104AF000F01F00033FFCCF4B80024940800091E84B -:104B0000EBCD40FEF6F700D05807C0510E94089C3C -:104B1000E3CD80FE364CF01F00191894CF90EEC6FE -:104B2000FFFCF8C3FF9C189749514962ECFCFFFC5D -:104B3000580CC2116C0B580BC1A02F86F01F00122D -:104B4000CF600837E2081700E40817101ADCE60700 -:104B500001051AD80E9C48DA0A9BF01F000D2FEDB4 -:104B60001807580CC0451835FE99FFE23008E76871 -:104B7000FFFFCCEB6C0BCE2B80028F2480037E20BA -:104B800080039364800271BC8003D3E48000914869 -:104B9000D431205D500B129CF01F0056502CE08049 -:104BA000008E198A580AE080009B3009402650196F -:104BB000503912905049320230931294C0382FF677 -:104BC0000D8AE40A18005F08E60A18005F09124817 -:104BD000E8081800CF51580AC4E00D87E407180010 -:104BE0005F18E60718005F191268E8081800C64049 -:104BF0005807C6200C95C0385807C0D02FF50B8732 -:104C0000E40718005F18E60718005F191268E80843 -:104C10001800CF31AA842FF0403CE00B1503F01FA1 -:104C200000361891C4E040490C9CE20900060C9B38 -:104C3000F01F00328D1C6C085808C141580CC1018E -:104C400040182FF850185807C15040482F88504836 -:104C5000EAC6FFFF0D8A580AC3C05031CB3B591C2E -:104C6000C2404009F2F801782FF8F348017858075C -:104C7000CED15031E0C8FFFFF0071503402CF01FE4 -:104C800000200E9B403CF01F001CC2E0F8000039E1 -:104C90003008931893084008F14C00D04019580987 -:104CA000C0D1129C2FBDD8324009F2F801742FF800 -:104CB000F3480174CC9B0C95CAEB3FFC2FBDD83256 -:104CC000403CF01F000F402CF01F000D2FBDDC3AC0 -:104CD000E0C8FFFF5031F0071503CD1B501A308795 -:104CE000503A1490CCCB403CF01F00053FFCCE7BEB -:104CF00080009194800091F48002720C800091E811 -:104D0000D4213228129716951389F0091800C0A0F3 -:104D1000320A2DCB0E9CF01F00271896C2F03FFCE4 -:104D2000D822EEC6FFFF322B0C9CF01F0023C3C01D -:104D3000F8060107EEC80008E0480037FE9BFFF1C7 -:104D40006B2C580CC060F01F001D0E3CC2606B2C19 -:104D50003004EB440044F01F001AEECCFFFFF01FBC -:104D60000019EB4C0048CDC00C9B0E9AF01F0016AA -:104D70006B28089CF0070B04D822EF390040F80993 -:104D80001800CCE16B2CF01F000E3018EB460048E9 -:104D90000C9CEB480044D8220E9A0C9B6B2CF01F05 -:104DA000000BCD61CBEB0C9CF01F00041897CC3BA3 -:104DB0008002394480009158800091B8800091E8C9 -:104DC00080009200800091DC8000917CEBCD4080DF -:104DD0001697129C2E8BF01F0006F9BC01FFF9B844 -:104DE0000001EFF80A08E3CD808000008002389CC3 -:104DF000EBCD40C018976E38129CF00B000630AA1D -:104E0000300BF01F000C8D0C18996E585808C030EC -:104E1000103CC0956E6C580CC0401839E0890007F2 -:104E2000E3CF80C08D08E3CFC0C08D0CE3CFC0C0FE -:104E300080009170D42116941895782B580BE08A35 -:104E400000557817683E6E0C78381C38C410EECACE -:104E5000FFFC3009C058150C78381C38C3902FF966 -:104E60001639CFA52FFB0E9CA36BF01F00241896BC -:104E7000C3506A2C580CE08A003B6C08683E7039BD -:104E80001C39C355ECC8FFFC300AC0A81097700845 -:104E9000F40B15027039EEC8FFFC1C39C2052FFA5D -:104EA000143CFE99FFF5F4C8FFFFEC0A002BA36841 -:104EB0001697F80A010AEC08000CA36AF01F00100C -:104EC0008F048B166A28300C2FF88B28D82218985C -:104ED000781C580CCFD19114D822DC2AF4C8FFFFDB -:104EE000EC0B000BA368CE6B7817CBDB0C97300A6A -:104EF00030480C9BCDFB0000800091F4800091C4F1 -:104F0000D4211895781CF01F000D300C8B1C8B2CB5 -:104F10006A075807C0F0189618948F140E9B0A9CC5 -:104F2000F01F00076E07F9B605FF5807CF710C9CFC -:104F3000D8220E96CFDB0000800091E880024E342C -:104F4000D421189578095809C1E03FFAC028109972 -:104F50007228F4080C4A72085808CFA1F4C4FFFF65 -:104F60001296E06C01A8F01F000A1897C0A09924BF -:104F70005806EDFC1A00EBFC0A000A9CF01F000525 -:104F80000E9CD82212961294CEDB000080028F2451 -:104F900080024F005EFD5EFD5EFD5EFD5EFD5EFD1E -:104FA000D401584BC0E0E0880007586BC0A0587B84 -:104FB000C040D802580BC091300CF01F0005D80239 -:104FC000301CF01F0003D802D80200008002172016 -:104FD000D401581BC070300A323C149BF01F0005EE -:104FE000D80A300A322C149BF01F0002D80A0000A5 -:104FF00080014658EBCD40FE201D1094129216956C -:10500000F01F0057E8C8FFF25C7C4D69F00C000609 -:10501000F33A0109580AC060EC0A0D085809E0810A -:10502000008F3003500CE6060001029CF01F004E7A -:105030000A9B1897306A400CEE0C000CF01F004BD6 -:10504000400C306A4CAB140CEE0C000CF01F004707 -:10505000400C302A4C7B2F4CEE0C000CF01F004310 -:10506000400C089A049B2F2CEE0C000CF01F003F04 -:10507000FAC8FFFC3005114A0E991AD5EE0A000C49 -:105080001AD5EC0A010A30EBF01F003B2FED581C3B -:10509000C5914009EC090108E048003EE08B001092 -:1050A0008E085CC806085CC8AED3029B0E9CAE0896 -:1050B000F01F0032300C2FFDE3CD80FEEE09000E14 -:1050C0003888FD39000CF0091800CEB1FD39000D0B -:1050D00038E8F0091800CE51FD38000EF808180025 -:1050E000CE01FD39000F3038F0091800CDA130286D -:1050F000FD3A0012F00A18005F1B3FE8F00A1800A2 -:105100005F19126BEA0B1800CCC1FD380013E218CE -:10511000001D5818CC61FD380014E21800C85888EA -:10512000CC01FCCAFFC1FCC9FFE1C0482FF914390A -:10513000C0E01388F6081800CFA0CB3BF4090103A8 -:10514000C72B0E9CF01F000E3FFCCB6B0FC92FA985 -:10515000EE0900091388A3A8B288CA3B8001F4E8CD -:10516000000087F480009200800091DC00007AA8A3 -:105170008003D6548001F54480014664800091E8A4 -:10518000D401201D3068FACBFFFC16D81A9B486C5E -:10519000F01F00064848581CF00C1700F9BC01002D -:1051A0002FFDD80200007AA880017A88EBCD40401C -:1051B000310A1696300B0C9CF01F000630F930783F -:1051C0008D198D09300C30398D288D39E3CD804013 -:1051D000800091D0D401F01F0002D80A80016048FD -:1051E000EBCD4068206DFAC3FFEE1496069C306A42 -:1051F000F01F0010FAC5FFFE0C9B310A0A9CF01F3D -:10520000000D0A9B204D310A1A9CF01F000B069BD3 -:10521000202D306A1A9CF01F0008F01F00082FADE7 -:10522000581CF9BC01FFF9BC00002FADE3CD80682C -:10523000800091DC8002E73680016094EBCD40680D -:10524000206DFAC3FFEE1496069C306AF01F001022 -:10525000FAC5FFFE0C9B310A0A9CF01F000D0A9B49 -:10526000204D310A1A9CF01F000B069B202D306A3E -:105270001A9CF01F0008F01F00082FAD581CF9BC45 -:1052800001FFF9BC00002FADE3CD8068800091DC08 -:105290008002E73680016168D401F01F0005581CC8 -:1052A000F9BC01FFF9BC0000D80200008001F370D6 -:1052B000D401F01F0005581CF9BC01FFF9BC000027 -:1052C000D80200008001F310D401169CF01F0004E6 -:1052D000581CF9BC01FFF9BC0000D802800163E052 -:1052E000D431207DFACEFFC050287C027C387C1758 -:1052F00050087C2E501E16901894149B1293580A36 -:10530000C5C0FAC5FFEA306A0A9CF01F0031202DA3 -:10531000306A0A9B1A9CF01F002FF01F002F5802C2 -:105320005F1858075F1918912FED1268C181300678 -:105330005800C26168193018F0030948F00811FFDD -:10534000F1E9000C891C580CC365BFBC891CF01F17 -:10535000002318975817C2F02F9DDC3A5887FE9B00 -:10536000FFFDFAC6FFF2308A300B0C9CF01F001CC8 -:105370000E9A049B0C9CF01F00165800CDC04028CC -:1053800058015F091AD8069C1AD630381AD530163B -:10539000404A403B1AD6F01F00136819EC03094835 -:1053A0001248F1D8C01F189789180C9CF01F000EE6 -:1053B0002FCDCD1B2F9DD83AFAC5FFEA306AE06B9E -:1053C00000FF0A9CF01F0006CA3B0000800091DC31 -:1053D0008002E736800188B080016584800091D02A -:1053E0008001661C8001639CEBCD40C01896308C18 -:1053F000F01F00091897C0C0300899069918F01FCF -:105400000007301CF01F00060E9CE3CD80C0E3CDEA -:1054100080C0000080028F248001604880017A10E3 -:10542000EBCD4080209D1697FACCFFFEF01F0009BF -:10543000581CC0402F7DE3CFC0800E9C1BBAFACB16 -:10544000FFFCF01F00051BBC2F7DE3CD808000001A -:1054500080017800800091DCEBCD4080202D580B3E -:10546000C120FAC7FFFE306A0E9CF01F000C0E9C94 -:10547000F01F000B581CF9BC01FFF9BC00002FED18 -:10548000E3CD8080FAC7FFFE306AE06B00FF0E9C20 -:10549000F01F0004CEDB0000800091DC8001793039 -:1054A000800091D0EBCD4040485B1896F01F00057E -:1054B0000C9CF01F0005E3CD8040000080039C3869 -:1054C00080025458800091E8EBCD40C0202DFAC7EF -:1054D000FFFE16960E9CF01F0008581CC0402FEDD2 -:1054E000E3CFC0C00E9B0C9C306AF01F00042FED70 -:1054F000E3CF80C080017864800091DCEBCD40C0B8 -:1055000018977939580BC0305839C0E03018EF4837 -:1055100000BC3038EF48004C1039C0808F2830086C -:105520008F58E3CD80C0F949004C6F682FF8EEFA30 -:10553000010CEF4800586FA830098F288F59301B95 -:10554000746C7486487A5D16EEF80094EEF900905B -:105550002FF82FF9EF480094EF490090E3CD80C079 -:1055600080037E20580C5E0C580BF9FB4A19580A30 -:10557000F9FA4A225809F9F94A1A5808F9F84A1B5F -:105580005EFC580CF9F81024F9B90101F1D9E108D1 -:10559000F9F81A245EFC580C5E0C580BF9B801019E -:1055A000F9F81A45F9FB0A455EFCD703EBCD40C07C -:1055B0001897580CC04079385858C030E3CD80C097 -:1055C000F8F8010C3009706C7086488A301B5D1643 -:1055D000EEF80094EEF900902FF82FF9EF480094C0 -:1055E000EF490090E3CD80C080037E20580CF9FC89 -:1055F00010315EFC580CC0B0F8F800D45808C070E8 -:10560000F8F800D89708F8FC00D45EFC300897083A -:105610005EF8D703580CC040588BE08800035EFD4D -:1056200048D8F00B032FF8FC00E05EFCF8FC00DC2F -:105630005EFC78BC5EFCF8FC00805EFC79FC5EFCE5 -:10564000F8FC00845EFC784C5EFC797C5EFC786C37 -:105650005EFC00008003D6FC580C5E0C588B5EBCD0 -:1056600048E8F00B032FF94A00E05EFCF94A00DC41 -:105670005EFC99BA5EFCF94A00805EFCF94A007C47 -:105680005EFCF94A00845EFC994A5EFCF94A005CC3 -:105690005EFC996A5EFC00008003D720580CC05065 -:1056A000580BC031783C5EFC5EFD580C5E0C580B0C -:1056B000F9FA0A035EFCD401580CC0A0F8FC010CF6 -:1056C000580CC06078A85808C030780C5D18D80213 -:1056D000D401580CC021D80AF8FC010C580CCFC0DA -:1056E00078B85808CF90780C5D18D802EBCD408080 -:1056F0001897580CC1E0189A300B48FCF01F000FA7 -:105700000E9A300B48ECF01F000DEEFC00C0F01FAD -:10571000000DEEFC00CCF01F000CEEFC00D4F01FDE -:10572000000AEEFC010CF01F00080E9CF01F0006A2 -:10573000E3CD80808002608C800274008002602053 -:10574000800270E0800091E8D401580CC050F8FC51 -:1057500000C0F01F0002D80280026410D401580C6F -:10576000C050F8FC00C0F01F0002D802800264287C -:10577000D401189A580CC0A030583019F8FC00C059 -:10578000F548004C95C9F01F0002D802800263BAA8 -:10579000EBCD40801897580BC04079E85888C0403E -:1057A0003018EF4800BC30193088EF490044EF480A -:1057B00000788F99EEFC00C0F01F0004F9B80100DA -:1057C000EFF81A39E3CD8080800263B2EBCD40E080 -:1057D000201D189716951496580CC0513FFC2FFDAC -:1057E000E3CD80E0F8FC00C0F01F000ACF801A9BD8 -:1057F000EEFC00C0F01F0008189BCF10400C0C3CC2 -:10580000CEF30C9A0A9CF01F0005300CCE9B0000D2 -:10581000800263B2800263CE800091DCEBCD40C099 -:1058200018971496580CC1F0F94B00C4580AC1B02F -:1058300074087419F94800F8F94900FC7428F9480B -:105840000100F8FC00C0580CC0E0742BF01F0007EA -:105850006C3BEEFC00C0F01F00066C4BEEFC00C081 -:10586000F01F0004E3CD80C0800263A6800263AC19 -:1058700080026408D431FACD00A81897F8F600CC5D -:105880005806C0F0F8F800F85808C0B00DA80DB9D7 -:10589000F3E81089F8F800D02FC91039E088000427 -:1058A0002D6DD832ECC4FFFC0999500909A0F01FF6 -:1058B000006FFAC1FFF8340A029B0E9CF01F006CC7 -:1058C0001895CEF5590CE0800090580CCEA132020C -:1058D0005012EEF800E45808C7D1E8C5FFE4FAC357 -:1058E000FF68310A0A9B069CF01F0062310A300BE8 -:1058F0000A9CF01F00610DAA0DB9049BF3EA108900 -:10590000FACCFFD8EEFA00CC0A982FC9F01F005B42 -:10591000310A0A9B069CF01F005AC7614009E1E961 -:1059200010880DB9EBD8B0100DA8F3E81089320833 -:10593000F2CE002CF00519005FB9E04E00205F9A0E -:10594000124AF80A1800CAD15C751C35C630580EC8 -:10595000CA81FAC3FF88029B0A9A069CF01F004581 -:105960003018308AEF4800E4E8CBFFFDEECCFF189A -:10597000F01F0040EEFC010C78965806C0D0E93AC2 -:10598000001B0A98149B0699780CE21B0080F5DA3C -:10599000C0025D16C865E939001B3008F00918001F -:1059A000C5753018EF48011CEEF901185809C0718F -:1059B000EEF800FCEDB80000FE90FF7430188FD8B0 -:1059C000EEFC010C78785808FE90FF6C780C5D189E -:1059D000C68B308AE8CBFFFDEECCFF18F01F002805 -:1059E000FE94FF60C7BB189A029B0E9CF01F00201C -:1059F000FE91FF580A9A029BFACCFFD80A92F01F38 -:105A0000001D5015C67B069B0A9C310AF01F001929 -:105A1000C48BFAC6FFB8E8CBFFF50C9C310AF01F27 -:105A20000015049A029BFACCFFA8F01F0012FAC3DB -:105A3000FF880A9AE8CBFFD4069CF01F000E40199D -:105A40000C9A2F090A9B069CF01F000EC8AB301859 -:105A5000EF480118EEF9011C5809CB11EEF800FCD3 -:105A6000EDB80001CAC1C1DB8002575C800257CC8F -:105A7000800091DC800091D080028EF88000917CC3 -:105A800080029C38D431201D3003189730140695BD -:105A900030213040EF4500BC6F4A580AE08000C911 -:105AA0006F585808E08100C56E7C580CE08100C238 -:105AB0006EB85808E08000BE6F385828EFF41A2FEF -:105AC000EEF8010CEF41004C3009706C7086FEFA64 -:105AD000051E029B5D16EF4400548FC5EEF800983A -:105AE000EEF900902FF82FF9EF480098EF49009059 -:105AF0006E7C580CC0516EB85808E08100EC6FC83D -:105B0000EF4400705818EFF41A2F6FD85808E0814E -:105B100000F8580CE08100A76EE85808E08100A367 -:105B20006FE8F0C900015879E08B000EFEF804C45C -:105B3000F009032FEF4400BCEF410078EF4500402F -:105B4000EF4400C8EEFC00C0F01F012BE08000B560 -:105B5000EF4400BC2FF3E0430064C9D10E9A300B30 -:105B6000FEFC0498F01F012630090E98FEFA048C02 -:105B7000129B129CF01F0123EEF9010C72285808A9 -:105B8000C0E0EEF801105808C0A058185F0B3008AC -:105B90000E9CEF480110723A72285D182FFDD83222 -:105BA000EEF80088EF4400BCEF4000788F55EF45D9 -:105BB000007CEF4500C88F08CC6B6E585808E08118 -:105BC00000DF6E4B580BE08100D06E085808C161B1 -:105BD0003078EF4400BCEF480078EF440048CB3BFE -:105BE000EEF900845809E08101846FF85808E081DB -:105BF000015C6E4B580BE08100B86E685808CA30E3 -:105C00000E9CF01F0101C9FB6E485808E08100A9F5 -:105C10006E585808E08100B06E685808C9406F0897 -:105C20005808C910300B0E9CF01F00F7C8CB6E7CD3 -:105C30006EA95809C2F16F885808C2C06F38EF4585 -:105C400000605818EFF41A2FEF44004CEF4500584D -:105C5000EF4500548FC58FE4EF450118EF45011C57 -:105C6000C49B6FE8EEFC00CC5818EFF41A2FEF44F9 -:105C70000078F01F00E6EEFC00D4EF4500CCF01FEA -:105C800000E3EEFC00C0EF4500D4F01F00E18FE51B -:105C9000C5AB580CCD416EB85808CD105829C3B0CB -:105CA0005819C4706F3820185878FE9BFF26FEF9EB -:105CB0000362F208032FEEF800BC5808FE91FF4C77 -:105CC000C5CB6E585808E08100FE6ED85808E080B9 -:105CD00000FE6FC95819FE90FF1A5829FE91FF1E49 -:105CE0006FD85808FE90FF1A0E9CEF490070EF44E1 -:105CF00000BCF01F00C96E7CEF450074C0BB0E9C59 -:105D0000EF4400BCEF410070F01F00C36E7CEF4514 -:105D10000074C00B6F885828CC606F388FC45898B7 -:105D2000EFF41A2FEF4100603098EF48004CCE4A54 -:105D30006F885818CB806F3858A8EFF91A2FEEF9F2 -:105D4000010C30A88FC5EF440060EF48004CFEFA0C -:105D5000029E7286726C302B0A995D16CC0A6F080F -:105D60005808FE90FF573068EF4400BC8FF4EF48AE -:105D70000078CE9A6F085808FE90FF503038EF44F4 -:105D800000BC8F05EF440080EF480078CDCA6E69F3 -:105D90005809C0A06ED85808E0810117EEF800F845 -:105DA0005808E08100FC6E485808E08100EB6E88DE -:105DB0005808C0506ED85808E08000E46F28580892 -:105DC000C050300B0E9CF01F00956E7CC93A6F7866 -:105DD0005808C8018F88EF4400BCEF40004CEF48E2 -:105DE0000058EF4800448FF8EF4800488F98EF4480 -:105DF0000040C82A6E1B580BCE606E585808FE90A3 -:105E0000FF6A3089EF4400BCEF49004CEF44005C6E -:105E1000C73A6E2B580BC2716F696FB81039CD330A -:105E20006ED85808C2003058EF4400BCEF48004C10 -:105E30008FC4EF440110FE9FFE60580AFE91FF4B95 -:105E4000EF4A011CEF4400BCEF44004CEF4A0060F5 -:105E5000EF4A0058EF4A00548FCA8FE4EF4A011806 -:105E6000FE9FFE4B6E685808C7B16E485808C78140 -:105E70006E585808CC71580BFE91FF2D6F696FB8A2 -:105E80001039FE93FF286ED85808FE91FF24307811 -:105E90008FCBEF48004CEF4400BC6F98EF410110EE -:105EA0008F18FE9FFE2AEEF80088EF4900C8EF44E5 -:105EB00000BCEF4000788F59EF49007C8F08FE9FAF -:105EC000FE436ED85808E081008AEF4400BCEF44DE -:105ED000004CEF450060EF450058EF4500548FC57A -:105EE0008FE4EF450118EF45011CFE9FFE06305977 -:105EF000EF4400BCEF4900781A9BEEFC00C0F01F95 -:105F000000481892C290EEF8010C4009189A708669 -:105F1000706C300B5D16049CF01F003CEEF800C85E -:105F20005808EFF81028F9B90101F1D9E108EFF8A4 -:105F30001A28EFF80029F9B90001F1D9E008EFF8C3 -:105F40000A29EEF90090EEF8009C2FF92FF8EF499E -:105F50000090EF48009CEF450084FE9FFDF5EF4464 -:105F600000BCEF40004CEF450058EF4500448FF572 -:105F7000EF4500488F958F85EF440040FE9FFDBDA3 -:105F80003078EF4400BCEF48004C8FC56F98EF416C -:105F900001108F186E7CFE9FFDAEEEF800FC5808D5 -:105FA000FE91FF038FD4EEFC010C78785808C040B6 -:105FB000780C5D186E695809FE90FEF76ED8580887 -:105FC000FE90FEF36E7C3059EF4400BCEF49004C6C -:105FD0008FC4EF440110FE9FFD8E3088EF4400BC5B -:105FE000EF48004CEF44005CFE9FFD8780037E205D -:105FF0008003D744800268308002608C8002740085 -:106000008002747480025790800091E88002653CA1 -:106010008003D76480025874800254FC800263E6D7 -:10602000EBCD408076085808F9B901FFF1D9E108B5 -:10603000F7F81A0076185808F9B901FFF1D9E10804 -:10604000F7F81A0176285808F9B901FFF1D9E108E3 -:10605000F7F81A0276385808F9B901FFF1D9E108C2 -:10606000F7F81A03169718991698486A300B301CDF -:10607000F01F00050E9CF01F0005E3CD808000009E -:10608000800260208002747480025A84D401169CBD -:10609000F01F0002D802000080025A84D421203D63 -:1060A0001895E06C0120F01F00221897C38031E89A -:1060B0003039F9480088F948006833C8F949006C5C -:1060C000F9480064F945010C300430CA99A4089BD2 -:1060D0001A9CF01F00186AF850286ADA500A6AE819 -:1060E0005018EEF8010C1A99704A493B0E9CF01FAB -:1060F0000013EF4C00C01A961898C14030160E9C41 -:106100008F76F01F000F0E9C8F74F01F000D0E98FD -:1061100008990C9C48BA089BF01F000B0E9C2FDDC1 -:10612000D8220E9C1097F01F0009CF9B80028F246D -:10613000800091D0000004788002711C80025A8493 -:106140008002602080027474800091E8D401580CB1 -:10615000C090F8F800D45808C050F8F800805808EB -:10616000C020D8023018F94800809958F01F00026A -:10617000D802000080025A84D401580CC04099AB68 -:10618000F01F0002D802000080025A84D401580C8B -:10619000C060F94B00E0994BF01F0002D8020000EC -:1061A00080025A84EBCD40801897580CC090996BB0 -:1061B000F94B00DC580BC0610E9CF01F0005E3CDCD -:1061C0008080F8FC00C0F01F0003CF7B80025A845F -:1061D000800263BAD401580CC04099DBF01F000262 -:1061E000D802000080025A84D401580CC04099BBE8 -:1061F000F01F0002D802000080025A84EBCD40E07C -:10620000189714951296580CC3A0F8F8008C2FF824 -:10621000F948008C5839E08B0009F8F800A82FF8ED -:10622000F94800A8E3CF80E01588306AF94800B04B -:10623000F8CCFF4CF01F0042ECCA00040BA90BB8CD -:10624000F1E910861436E08B00130B99300CF80935 -:106250001800C4603038F0091800C130EEF800A80A -:10626000301C2FF8EF4800A8E3CD80E0EEF800AC3A -:10627000300C2FF8EF4800ACE3CD80E0E3CF80E0B6 -:10628000E046002BE088004C3FE80BCBF00B1800F9 -:106290005F0A3028F00B18005F09124AF80A18004C -:1062A000CEE13018F00B1800C3A1EEFC00CCF01FBB -:1062B00000252FC60C9CF01F0024EF4C00CCC2F030 -:1062C0000C9A0A9BF01F001E0E9CEF4600D0301661 -:1062D000EF460074F01F001D0C9CE3CD80E0EEF84B -:1062E00001145808C100300830398FC8EF48011434 -:1062F0008F29EF49004CEEFC010C78C85808C030DB -:10630000780C5D18EEFC00D4F01F000E0C9CEF46DC -:1063100000D8F01F000DEF4C00D4C031E3CF90E067 -:10632000EACBFFFCEEFA00D8F01F00050E9C3016F9 -:106330008F56F01F00060C9CE3CD80E0800091DCBE -:10634000800091E88000920080025A84EBCD40806A -:10635000189779685808C0B079BB580BC08070494D -:106360005D193008EF480058EF48006CE3CD80809D -:10637000EBCD40C01897580BC04078085878C04003 -:106380003018EF48006030786FA68F086F9C6C293A -:10639000300A305B5D196FA86F9C7029301A304B42 -:1063A0005D19E3CD80C0F94B00745EFCF94B00B081 -:1063B0005EFC580CF9FC10135EFC580CF9B8010196 -:1063C000F9F81A06F9B9010BF9F91A005EFC580C34 -:1063D000C08079485808C05079589708794C5EFCBD -:1063E000300897085EF8580CC0C0791A580AC09057 -:1063F000792897083009F9490048F94900445EFABC -:106400003008109A97085EFAF94B00C45EFCD70377 -:10641000D401580CC040483BF01F0003D8020000D4 -:106420008003D7B08002634CEBCD40801897580CA6 -:10643000C0F079A8300B7019799C5D19C0916E6815 -:106440005808C0606E2820385818E0880004E3CD52 -:1064500080806F485808F9B80101EFF81A136FA847 -:106460006F9C7029301A300B5D19EEFC00A4483A7D -:10647000302BF01F0003CECB8003D7BC80023A1A2A -:10648000EBCD40801897580BC040780858B8C040F2 -:106490003018EF4800606F4930B88F085809F9B8D4 -:1064A0000101EFF81A136FA86F9C7029301A300B96 -:1064B0005D196FA86F9C7029300A305B5D196FA859 -:1064C0006F9C301A7029304B5D19EEFC00A4484ACD -:1064D000302BF01F0004E3CD808000008003D81C27 -:1064E00080023A1AEBCD40C01897580BC04078088C -:1064F00058C8C0403018EF48006030C86FA68F08F9 -:106500006F9C6C29301A302B5D196FA86F9C702915 -:10651000300A305B5D196FA86F9C301A7029304BC0 -:106520005D19EEFC00A4484A302BF01F0004E3CDB7 -:1065300080C000008003D86080023A1AEBCD406032 -:106540001896784CF01F000B30056D1C8D45F01F20 -:1065500000096D4CED450044F01F00066DA8ED45A7 -:1065600000500A9A6D9C70290A9B5D19E3CD8060EA -:10657000800091E8EBCD40E01897580BC4F0780804 -:106580005808C4C130088F086FD95809C0B06F6867 -:106590005808C08070985808C0506FBB0E9C5D189A -:1065A000C4114A4B0E9CF01F00246FA83006301512 -:1065B0008F16EF4500408F268F666EFA70490C9B50 -:1065C0006F9C5D196FA80C9A70290C9B6F9C5D19CC -:1065D0006FA80C9A7029302B6F9C5D196F4CF01FBF -:1065E00000176FA80A9BEF460050EF46004C0C9A2C -:1065F00070296F9C5D193FF80C9A8F386FA5303B5E -:106600006F9C6A295D196FA80C9A7029304B6F9C9A -:106610005D19EF4600C0E3CD80E03018EF48006020 -:10662000CB2B6F686FBB70A90E9C5D19CBFB000074 -:106630008003D8948002634C800091E8EBCD40E069 -:10664000205D1897580BC04078085858C040301843 -:10665000EF48006030588F086F695809C4406FA830 -:10666000FACBFFF070596F9C5D19310A300B189509 -:106670001A9CF01F00256F1C6EE850086E295019F7 -:106680006E6850286F095039F01F002030086F6B7A -:10669000EF48005CEF480044EEC8FFB81A9A0A9928 -:1066A0001AD80E9C405876566FBB5D16EF4C0044CE -:1066B00040188FE82FFD5808C1616F785808C13124 -:1066C00040188F2840298F694038EF4800406F6894 -:1066D00070695809C08070785808C0506FBB0E9C14 -:1066E0005D19C0412FBDE3CD80E06F4CF01F000766 -:1066F0006F68EECAFFAC70796FBB0E9C5D19EF4CF2 -:106700000050CF1B800091D0800091E8EBCD4080FD -:106710001897580BC04078085868C0403018EF48A8 -:10672000006030686E4C8F08F01F001A6F18580810 -:10673000C2E0EEF800B05808C2216EA86F2C8F3866 -:10674000F01F00158F4CC0706F2A6F1BF01F0013D5 -:106750006F288F586FA8301A7029303B6F9C5D19D5 -:106760006FA86F9C7029300A305B5D196FA86F9C11 -:1067700070496EFA300B5D19E3CD8080310AEECBA3 -:10678000FF7CEECCFF6CF01F0005CD8B8F48CE9BBD -:10679000800091E880009200800091DCEBCD40FC0D -:1067A000201D79A81897169214931294799C700959 -:1067B0005D191896C2F06F685808C23070C8580842 -:1067C000C2000E9C1A9A6FBB5D181895C1A0400CB0 -:1067D0002FBC870CF01F0015C1D03028B892B888A4 -:1067E00030188699B8B9A9891897B8A9B8C80A9B6A -:1067F000400A2FBCF01F000E0E9C2FFDE3CD80FC45 -:106800005804C0416DCC580CC0A16DB86DA5580599 -:10681000C0A130070E9C2FFDE3CD80FC6DD81895EC -:106820005008CD6B5008CD4B80009200800091DC69 -:10683000D431209D3004F8C9FF7CF8C8FF6C18974C -:1068400050195008F8C0FFB808956FA8EF450060D0 -:10685000301B70196F9C5D19C0706FA8306B701978 -:106860006F9C5D19C2F16FA8306B70196F9C5D1938 -:10687000C140EEF800C45808C101EEF800C0E0487D -:106880000032E08A0025E0480033E080011C6F8878 -:106890005808C1003014CDAB6E085818F9B8010182 -:1068A000EFF81A18EF4500C030188F086F885808A5 -:1068B000CF216F7C580CE80C1700F9BC01012F7D2B -:1068C000D832301B0E9CF01F01EECE2B6E0958A95A -:1068D000FE9BFFDFFEF807ACF009032F30183029CC -:1068E000EF4800608F09CD4B300B0E9CF01F01E686 -:1068F000CCFB6E196EB81039C760300B0E9CF01FC0 -:1069000001E2CC6B6EA96E381039E0800137300B94 -:106910006E8E580EC1B06E685808C1806EAA6E396E -:10692000123AE08000BBEEF800B05808C0F0F2C8A0 -:10693000FFFFF1D8C008103AE08000B0F2C8FFFEB7 -:10694000F1D8C008103AE08000A96E2C582CC20083 -:106950006E985808E08001236E685828E080011F77 -:106960006EAA6E39123AE0800146EEF800B058087F -:10697000C0F0F2C8FFFFF1D8C008103AE080013B38 -:10698000F2C8FFFEF1D8C008103AE08001346E78FA -:1069900058085F1A3008F5EB0009F0091800E0818B -:1069A000010FEC1B0001F5EB0008F2081800E08075 -:1069B00001056EBB1699582BE080012A6E16580609 -:1069C000C071581BE080021B582BE08101630C3B17 -:1069D000E080014F0C995919C0F1580EC0416FE881 -:1069E0005808C0A0300B0E9CF01F01A8C51B6EEB11 -:1069F000580BFE90FF7C300B0E9CF01F01A5C48B42 -:106A00006FA8305B70196F9C5D19C7016FA8307B50 -:106A100070196F9C5D19C0506E685808FE91FF395F -:106A20006FA8300B70396F9C5D19C0516E68582883 -:106A3000FE90FF2F6FA8308B70196F9C5D19FE912F -:106A4000FF286FA8189B70396F9C5D19C0516E6844 -:106A50005828FE91FF1E6FA8307B70196F9C5D193E -:106A6000C0806E285828C0506E685808FE90FF11EC -:106A70006E185918E080025C5998FE91FF0AEEF8F2 -:106A800000805808FE90FF056E685808FE90FF01D0 -:106A90006E285848FE91FEFD300B0E9CF01F017DC4 -:106AA000CF7A6FA8306B70196F9C5D19FE90FEF164 -:106AB000EEFB00C4580BFE91FEEC0E9CF01F017023 -:106AC000CE7A3328EEFC00A4FEFA05CC1AD8302B7F -:106AD000F01F0172EEF800C0301B16080E9CEF4844 -:106AE00000C0F01F016F2FFDCD3A6FAA3038FACBEE -:106AF000FFE08F0830136F9CEF43006074595D19FD -:106B00008F95507C8F85EF4500788F758FA58FB559 -:106B10008FC58FD55F0A408B1896583B5F88104A07 -:106B2000EA0A1800C23119A919B8F1E910885068A9 -:106B3000103BC1C319988FA8EEF900B05809C09056 -:106B4000069C4019FACAFFE8FACBFFE4F01F015592 -:106B50000D893028F0091800E080011CE08B008DC1 -:106B60003018F0091800E0800123EEF800C02FF87B -:106B7000EF4800C0FE9FFE8D6E785808FE90FEC95B -:106B8000EEF800B05808C080310A400B401CF01FDE -:106B90000146FE91FEBE301BCBCA580EFE90FEF998 -:106BA0006E685808FE91FEF56E185918FE91FEDACF -:106BB000583CFE91FED7CECA6E19C0EB301830A9F2 -:106BC000EF4800608F096F1CF01F01386E485808AD -:106BD000C1A06E5CF01F0136EF4C0044FE90FE59E0 -:106BE0006E5A6E4BF01F01336E58EF480048FE9FFF -:106BF000FE50300B0E9CF01F012AFE9FFE4A30090A -:106C000050494048EF480044FE9FFE436F08580833 -:106C1000FE90FED6301830996FAA8F09EF480060B9 -:106C20007458FACBFFE86F9C5D1819A919B818962B -:106C3000F1E910885848E08B01476F1CF01F011BD9 -:106C4000305CEF450044EF4C00486EA6F01F011881 -:106C5000E08001853029B896B889EF18004AB8C994 -:106C6000B8B8A988B8A8EF4C0044FE9FFE12584C53 -:106C7000FE90FEB3CB8A3038F0091800E08000DCCB -:106C80003048F0091800FE91FF7230188F98C6EB5B -:106C900030181693EF48006030496FA8E04B00FEB3 -:106CA000EFF3000D8F096EC670096F9C5D19069A8F -:106CB0000C9BF01F0101E08100C36F1CF01F00FB63 -:106CC0006FA8EF4500446EA270096F9C5D19503C9F -:106CD000FACCFFE8F01F00F91893C9206EB8E0481D -:106CE00000FEE08101516FA8406670096F9C5D193C -:106CF00030C8505CA376EF480048ECCCFFECF01FA6 -:106D000000EC1891E080012E3FE9B892B8C9302913 -:106D1000B889F8C8FFFBB0A5B085B095F8C9FFF8F1 -:106D20003038B285B295B2A5B2B8504CF8C2FFF473 -:106D30000A96C298661A6ED81438C210405CF01FCA -:106D400000DE049AE4CBFFFC580CC1903FE814C865 -:106D50008689B4896608A988B4986609B4A907C861 -:106D6000B68886A9B6996618A988B6A86619B6B96C -:106D7000F6C2FFFC60082FF62F88810866F35803DF -:106D8000E0800099660B6EC81638CD50661ACD7B30 -:106D90006E185918FE91FEEB40685848FE98FEE7C1 -:106DA0003018EF4800780DC98FB9CE0A406A584AAA -:106DB000FE98FEDD30188F780DC98FB9E04900FECE -:106DC000FE91FED558BAFE98FED2ECC9FFFB139C8B -:106DD000138A13A8F1EA1108F1EC1088ECCBFFF844 -:106DE0008FC817AC17B81789179AF1E91188F1EA1B -:106DF0001108F1EC10888FD8CB9A6FA83089EF4B2F -:106E000000608F09FACBFFE0705A6F9C5D1AFEFAA2 -:106E100002AE302BEEFC00A4F01F00A06F1CF01F90 -:106E200000A30C99EF460044009A6EAB0E9CF01F35 -:106E300000A5C1AB30188F88FE9FFE990C9C069B65 -:106E4000F01F00A1FE90FF3B6FD85808C0906F6AFA -:106E5000580AC06074096EC81039E0800086FEFBD5 -:106E6000026A0E9C3006F01F009A6EB88F186F6C85 -:106E7000580CE08000CD5806C54078B86FBB0E9C1A -:106E80005D18EF4C006C6FB65806E08000CA6F6A60 -:106E90006ECB30188F287429FEFA02381AD91AD30B -:106EA0001ADB302BEEFC00A4F01F007C2FDDFE9FD0 -:106EB000FCF05806C4206F285C78A2B8A988A2A864 -:106EC000FE9FFEA1F0CC0004F0C20005F01F007888 -:106ED0001893FE90FEB45802C120ECCCFFFB300AA0 -:106EE00035DB1938F0C90021F6091800F9B80B5F35 -:106EF000E60A0B082FFA1432FE9BFFF53008E60273 -:106F00000B084F581AD34F5A1AD8302BEEFC00A456 -:106F1000F01F0062069CF01F00652FEDFE9FFE8FA4 -:106F200078380E9C5D18EF4C006CCAEB6FF858086F -:106F3000FE90FCAFFE9FFDAA04983FE910C9B0A6E1 -:106F4000B086B096E4C9FFFCB2B6B286B296B2A6DD -:106F50006F282F88EF480048CB0B0A9CFE9FFE85C8 -:106F60005045FE9FFE5074181033FE91FF7A7499BD -:106F70005809FE90FF766FBB0E9C5D19FE90FF7165 -:106F80003016C74B3058406CEF4800482FACF01F0C -:106F900000481896FE90FE35B89230283039B888EF -:106FA000B8C9504CF8C2FFFB50250A91C1A8661A17 -:106FB0006EB8103AC130403CF01F003FC0F0660888 -:106FC0005808C5A040285808C0913FE904C93018A6 -:106FD000502860082FF12FF8810866F35803C0602D -:106FE000660B580BCE50661ACE7B5801EFF8101284 -:106FF000E5F10E00EFF80012F7B800FFEFF80A1203 -:107000005C78ACB8A988ACA8FE9FFDFD069B6ECC51 -:10701000F01F002DEF4C0058FE90FE51C2DB6FA810 -:107020006F9C70095D196F6870291AD91AD36EC8E0 -:1070300018921AD8302B4AAAEEFC00A4F01F0017B1 -:10704000EF4600588F268F1658025F1B6EB92FDD52 -:1070500058D95F081668EC081800FE90FE30E4F876 -:1070600001605808FE91FC15E4F801685808FE908C -:10707000FE26FE9FFC0E661804C8CACB800265740B -:107080008003D7848002670C8002663C80026370B4 -:10709000800264808003D8A080023A1A800264E4EF -:1070A00080028D9C8000917C800091E8800092009D -:1070B000800091DC80023AD8800271E48003D8F02D -:1070C0008002679C800271908003D9248002634C07 -:1070D0008003D9708003D8D08003D3E48003D930F3 -:1070E000EBCD40801897580CC0E0488BF01F00088B -:1070F0000E9CF01F0008EEFC00ACF01F00070E9C79 -:10710000F01F0006E3CD80808003D9AC8002634C81 -:107110008002653C8002D298800091E8EBCD40F877 -:10712000203D1896169414931295E06C00C8F01F39 -:1071300000151897C1C033C8F946006499F8F9449E -:107140000068F94300A430CA300B1A9CF01F000EEF -:107150006A2850286A0950096A181A9C5018F01FAA -:10716000000BEF4C00AC1A961898C0500E9C2FDD07 -:10717000E3CD80F80E9C1097F01F0005CF8B000028 -:1071800080028F24800091D08002D2C4800091E8D8 -:10719000189948A8700C580CC051C0D878FC580CED -:1071A000C0A078081238CFB1781816385E0C78FC79 -:1071B000580CCF815EFD000000007AB01899489805 -:1071C000700C580CC051C0C878FC580CC09078089E -:1071D0001238CFB178181638CF81782C5EFC5EFD5E -:1071E00000007AB0189B4888700C580CC0A0189901 -:1071F000300A2FFA72F95809CFD1149897085EFC1B -:107200001898CFDB00007AB05EFDD703EBCD40E0ED -:1072100048D81896169570075807C051C0E86EF701 -:107220005807C0B06E2C0C9BF01F0008CF916E0861 -:107230008B086E1CE3CD80E030088B08109CE3CDFA -:1072400080E0000000007AB0800091A0EBCD40C04B -:1072500048B70E966E095809C0B072F88D08129C96 -:1072600072D85808C0705D186E095809CF71E3CD07 -:1072700080C0129CF01F0003CEEB000000007AB02B -:10728000800091E8EBCD40C048D66C485808C0312A -:10729000C0880E987057109CF01F000A5807CFA1A5 -:1072A0006C6CF01F000930086C3C8D68F01F000505 -:1072B0006C8CF01F0004E3CD80C0000000008C90B7 -:1072C000800091E880014544EBCD40F8495718967D -:1072D000169314946E2B12952FFB6E3CA56BF01F2A -:1072E0000012C1D06E28A568F80809066E29A569A4 -:1072F000F8090009932593146E2AF4081504F80878 -:10730000000891336E188F3C2FFA1036EFF69A0171 -:107310008F2A3018300C8FC8E3CD80F8E3CFC0F847 -:1073200000008C90800091F4EBCD404CE0634DD395 -:10733000EA1310621896F01F000DF8030648A7899B -:10734000E06A03E8F20A0248F8080109121CF20A8E -:10735000024AF80304428D1ABF5CA743E60C010CF5 -:107360008D0CE3CD804C0000800145C4EBCD408006 -:10737000202D4A076E495809C2C06E581039C29074 -:107380001A9CF01F001D6E484009700A1439C2444F -:107390007018401BF40901091618C276F00B141F6F -:1073A000E06A03E8F20A024AE0694DD3EA19106282 -:1073B000F0090448A7491619F20A000C580CE08A93 -:1073C000000E300948DA6E6BF01F000D6E488F58C2 -:1073D0002FEDE3CD80801439C030301CCF3B7018C6 -:1073E000401B103BCFB4CD7B2019F028BDC0CD7B16 -:1073F00000008C9080027328800275188001455827 -:10740000D43149A0189516931492604C580CC2B010 -:1074100030060C940C91785778480A38C09018962A -:107420000E9C5807CF91F01F0012089CD8325BF3D6 -:107430005F0A782906395F081448E2081800CF006F -:107440005BF25F0A783904395F081448E2081800D3 -:10745000CE705806E1F70A04EDF71A052FF4F01F75 -:107460000005CDFB1894CE0B00008C908002736C4D -:10747000800091E8EBCD40FC18961695149212947A -:107480001093318CF01F00211897C3A0F01F00202B -:107490006E0A6E1B0C0AEA0B000B8F0A8F1BEE5B49 -:1074A000423FE08A000B2FFAEE3B42408F0A8F1BCF -:1074B000EE5B423FFE99FFF98F248F338F423008F5 -:1074C0008F58494C78495809C1D072081438E0895E -:1074D000001A2F0CC0A8F2CCFFEC72595809C0A0BA -:1074E00072081438E0890007103ACF617218103B17 -:1074F000CF348F599907F01F0008E3CF80FCE3CF0A -:10750000C0FC2F0CCF7B000080009200800273280B -:1075100000008C908002736CEBCD40E0202D49661A -:107520001A9CF01F00166C475807C1F040096E08FE -:107530001238E089001B3005C05840096E08103928 -:10754000C1451039C0516E1940181238C0E56E5847 -:107550008D558D486E3B6E486E2C5D180E9CF01F4D -:1075600000086C475807CEA1F01F00062FEDE3CFAF -:1075700080E0000000008C9080027328800091E879 -:107580008002736CEBCD408049A76E3E580EC2B0AE -:107590006E2A580AC280E08A002B7C081838C27014 -:1075A000FCC9FFF0300BC05872082F091838C050C2 -:1075B0002FFB163AFE99FFFA143BC170201A163AB7 -:1075C000C0F0161AF60C1504A56AFC0C000C2FFB73 -:1075D000A56BFC0B000BF01F00086E2A201A301858 -:1075E0008F2A8FC8E3CD8080E3CD8080300BCE7BA7 -:1075F00000008C90800091C4EBCD406048861895C7 -:10760000334A300B0C9CF01F0007ECCCFFE88D05D3 -:10761000301BF01F0005E3CF8060000000008C905D -:10762000800091D0800144F80050F2010100000078 -:107630000000000000000000F6F800DC5808C05010 -:10764000F8F800F85808C0205EFDF6FB00D0580B93 -:10765000CFC076085808C04176185808CF602F8BE5 -:10766000CF9BD703EBCD4080300B1897F01F001352 -:10767000306A300BEECCFF64F01F0011306A300B23 -:10768000EECCFF5EF01F000E300BEEFC00E0F01FB2 -:10769000000D300BEEFC00E0F01F000BEEF800BC1C -:1076A0005828C030E3CD8080EEFC00E0300BF01FA6 -:1076B0000007E3CD80800000800217D0800091D0C9 -:1076C000800261E8800261D4800261A4EBCD408039 -:1076D0001897F8F800945808C160300BF94B0094E3 -:1076E000F8F800D470985808C040F8FC00C45D1841 -:1076F000486A302B0E9CF01F0006300A0E9C149B2B -:10770000F01F0004E3CD80808003D9D480023A1AB0 -:1077100080022584D431209D500C761558155F9831 -:107720007607169058075F1910693008F00918009D -:10773000E08000B8EEC4FFFF0989F2C6FFFE0C35F9 -:10774000E08500B010923DD33301C168E208180013 -:10775000C2800C0758155F9958075F181268E40833 -:107760001800E080009EEEC4FFFF0989F2C6FFFE0C -:107770000A36E08900960C150F88E6081800CE71CD -:10778000305AF4091800FE98FFE6EECCFFFE306A8E -:107790004DFBF01F0060C0B00F88E2081800CDA1BB -:1077A00009883019F2081800FE98FFD540080E9B92 -:1077B0000C9AF0FC00DCF01F00581897C711400A23 -:1077C000FACBFFFCF4FC00DCF01F0054C21540793A -:1077D0005809C1E040685808E0890007C19840682E -:1077E0001037C1644079EE0B1504F20B000B400911 -:1077F0003008F2FC00DC2FF71099109AF01F0048B7 -:10780000CEF14008301BF0FC00E0F01F004660465F -:10781000605558065F1958155F981069C760ECC429 -:10782000FFFF0989F2C7FFFE0E35C6F53003069249 -:107830000691C1A85802C0610D88330AF4081800E7 -:10784000C3A00E060E1558065F1858155F991268EA -:10785000E2081800C3F0ECC4FFFF0989F2C7FFFE7D -:107860000A37E08900385803CE610D883DDAF40804 -:107870001800CE113058F0091800FE98FFDD306A6C -:107880004A3BECCCFFFEF01F0023CD5140090E9A7D -:107890000C9BF2FC00DC3013F01F0023CCCB600704 -:1078A0005807CB604009300AF2FC00DC149BF01F43 -:1078B000001ACAEB09883019F2081800FE98FFC3B5 -:1078C00040080E9A0C9BF0FC00DC3012F01F0017F1 -:1078D000CB9B5803C0F05802C0B160485808C08024 -:1078E0004008049AF0FC00DC049BF01F00102F7D80 -:1078F000D83260465806CF004009300AF2FC00DC5E -:10790000149BF01F0009CE8B3002CF5B80027628DB -:107910008000917C8002B5EC8002C04C8002938094 -:10792000800255968002B58C8002B52CD431FACDF8 -:10793000009018911497586BE08B00C4FEF807482C -:10794000F00B032F580AC0A0F8F800907009739A42 -:10795000580AC0410E9BF01F01CD304B029CF01F16 -:1079600001CCE2F801185808E0810312FAC7FF942D -:10797000E2F800D470285808C4C00E9BE2FC00C492 -:107980005D18C475E2C6FF64306A0C9B0E9CF01F44 -:1079900001C1C3F0FB3800711AD8FB3900741AD941 -:1079A000FB3800771AD8FB39007A1AD9FB38007DEA -:1079B0001AD8FB390080FEFA06DE1AD9301B029C69 -:1079C000F01F01B6306A0E9B0C9CF01F01B5306AA7 -:1079D000300BE2CCFF5EF01F01B3E2FA00BC2FAD2A -:1079E000584A5F08590A5F091248C081588AE080E6 -:1079F000030C0E9B029CF01F01ACE2F80090704952 -:107A00005819E08102D5E2F800B05808E08002D0B1 -:107A1000FB3800711AD8FB3900741AD9FB3800778B -:107A20001AD8FB39007A1AD9FB38007D1AD8FB39ED -:107A30000080302B1AD9FEFA0672029CF01F0197C3 -:107A4000E2FB00B02FAD580BC040029CF01F019824 -:107A50000E9BE2FC00DCF01F0197622CF01F0196E8 -:107A6000300BE2FC00E0F01F0195300BE2FC00E07F -:107A7000F01F0193E2F800BC5828C061300BE2FC13 -:107A800000E0F01F0190301BE2FC00E0F01F018BD2 -:107A9000300BE34B00F4E2F900BC59095F0A584986 -:107AA0005F081448F6081800E0800216029CF01FD8 -:107AB0000186307B029CF01F0176029CF01F01833F -:107AC0002DCDD832580ACFD0149B7439F8FC00DC85 -:107AD000742AF01F017F2DCDD832F8FB00BC590B62 -:107AE000CF00F8F800E85858E08002355838E08BAD -:107AF0000234E2C7FF64306AFEFB05D80E9C2F8B70 -:107B0000F01F0164EE0B1710E06800A2E3D8E00B51 -:107B1000029CF01F0171E2FC00DCF01F0170FEFA14 -:107B200005BE302B029CF01F015DE2FA00BC584AF2 -:107B30005F08590A5F091248C0B1588AE08002976D -:107B400030080E9BE3480104029CF01F0157029C81 -:107B5000F01F01642DCDD832FEFA058C303BF01FAA -:107B6000014F5807E08002806E0858085F1B169A84 -:107B7000E2FC00DC301BF01F015DFACCFF94F01F2B -:107B8000015CE2F800985808E08001D541B9F2089C -:107B90000108E048003CE08A01A6E34900982DCDA9 -:107BA000D832F01F0154E08501EBE2F900907248F1 -:107BB0005828C870E2F800AC5808C831E2FA00CC86 -:107BC0001094500AE2F000D072285808E08A00A908 -:107BD000300850187218401AF00A032850585800FC -:107BE000E08A0097400530020A96C11808973003D2 -:107BF00030142FF2ECC6FF6404305F983009E9E8D6 -:107C00000008F2081800E08000970E940C9B029C7C -:107C10000C93F01F0139C05078385818FE99FFE8CE -:107C20006D585808C051ECF800805808CE004059F3 -:107C30005809CDD0ECC8FFFAECCAFFA8ECC9FFD4B4 -:107C40005048502A50394057C0486E175807CCF05A -:107C5000EEF801945808CFA16CAA6E58103ACF6183 -:107C60006E4B404CF01F010BCF116E885808E0811D -:107C700000E16F6AEDBA0001C061ECFB0080580BB7 -:107C8000E08100E3F1DAC001300AF4081800CDE029 -:107C90006D5B580BCDB0FACAFF94403CF01F011742 -:107CA000CD516F6841B91268CD106F3841C9126863 -:107CB000CCD06F4841D91268CC906F5841E9126816 -:107CC000CC5058065F04C96B149BF01F00F02DCDFB -:107CD000D832149B2EACF01F010A1896FE91FEF2CA -:107CE0006F9B580BE080012A581BFE91FEEBE34B83 -:107CF00000D8029CF01F00FB622CF01F01028326BB -:107D0000CE0A5803E08100BF0E94E2F900904018BB -:107D10002FF850187228401A103AFE95FF5DE2F8CD -:107D200001085808E0800121029CF01F00F7E2F9E9 -:107D30000090C4BB5804CE600E923006C108049770 -:107D4000089930032FF6EAC5FF640C305F98F3E81A -:107D500000083009F2081800CD500E920A9B029CD0 -:107D60000A93F01F00E5C05078385818FE99FFE9D3 -:107D700040585808CE50EACAFFFA4057506AC078B7 -:107D80006AA8103AC5006E175807CDA0EEF8019406 -:107D90005808CFA16E5A580ACF416E885808C1E1E1 -:107DA0006F5BEDBB0002C040EDBB0003CED1F1DB49 -:107DB000C002C0806B585808CE71EAF8008058089D -:107DC000CE31EEF8014C5808C110EB190088EDB91E -:107DD0000001CDA058055F09CB6B306AEECBFFE800 -:107DE0000A9CF01F00ACCD01CDCB1099EEC8FECCA3 -:107DF0002FF9700A580AC2612FC85849CFA1EDBBAC -:107E00000003C071EEF800F0F1D8C002F9BA010128 -:107E1000EB190088EDB90004C030580A5F0A580A0F -:107E2000CB30CD6B6E4B406CF01F009ACAD1CB6B40 -:107E3000306AEECBFFE80C9CF01F0096FE91FF0726 -:107E4000C19B301ACDDBFACAFF94402CF01F00AB67 -:107E5000C0306F6AC18B6F6A41B8F5E80008FE90C8 -:107E6000FF136F3841C91268FE90FF0E6F4841D969 -:107E70001268FE90FF096F5841E91268FE90FF04F6 -:107E8000C21BE2F800A85808C131306AE2CBFF6497 -:107E9000069CF01F0080C170E2F800E85838C081ED -:107EA000306AE2CBFF5E069CF01F007AC0C00E9BDA -:107EB000029CF01F007FE08100B50E9A069B029C99 -:107EC000F01F0092009A400BE2FC00DCF01F0090D3 -:107ED000FE9FFDF8169A029C30ABF01F008EFE9FAD -:107EE000FDEE3017FEFA0230303B029CE34700946F -:107EF000F01F006AE06B2710300CF01F0088E2F8DA -:107F000000D470985808C0500E9BE2FC00C45D1865 -:107F100030EB029CF01F0082300A029BFEFC020440 -:107F2000F01F0081300802994FEA109B33CCF01FFC -:107F3000007F41B9FE9FFE33E2F800D85808FE905A -:107F4000FDC1E34B00D8029C301BF01F0079FE9F5F -:107F5000FDB9582BC780E07A86A0300B029CF01F39 -:107F60000075FE9FFDC8305BE2F801105818C7206D -:107F7000029C300AF01F006FFE9FFDA4E2F9009002 -:107F800072485828FE90FD9E301BCEFBFAC7FF9426 -:107F9000E2C6FF64306A0C9B0E9CF01F0041E2F8C1 -:107FA00001185808FE91FCF8FE9FFCE4029CF01FAB -:107FB00000621896C230F8FB0194580BC1F1795851 -:107FC000E2180013C351189B029CF01F005CE2F8FA -:107FD00000B05808C0701036C050E2FC00E0F01F3E -:107FE0000058E2FC00DC0C9BE34600B0F01F00559B -:107FF000029CF01F0055FE9FFD0D029C303BF01FC0 -:108000000053FE9FFD5FE2F800B05808FE90FCF3BD -:10801000F0F800F0F1D8C002FE91FCEDFE9FFCEFFD -:10802000029C300A30ABF01F0043FE9FFD4B350928 -:10803000FAC8FF70189A10D9029CFAC9FFE4F01F21 -:108040000044CC6B4C3AF01F0015E2F800E8FE9FAC -:10805000FD4F72485818F9B80002E3F80A44F9BB1A -:108060000000C87B0E9BFE9FFD84E2F800B058081C -:10807000FE90FD68F0F800F0F1D8C002FE91FD62BC -:10808000FE9FFD678003D9B880027714800217D065 -:108090008000917C8003D9F880023A1A800091DC3C -:1080A000800091D0800226948003DA3880027638EE -:1080B0008002BA4C80028172800261E8800261D441 -:1080C000800261A480021CE080021DB88002979C9F -:1080D0008002762880021AE08002BA1C8003DAA8A7 -:1080E000800276648003DAE48002D19C80028F549F -:1080F00080021E84800218F88002BD68800091A072 -:10810000800281748002189C800230DC800298A476 -:108110008002246C8003DB0480028F1C800228D83C -:10812000800276CC800274008002747480022794EE -:10813000800225848002195C800222A480025748B4 -:108140008002B9D48002237080022FCC80021F30BD -:108150008003DA68580C5E0E5E1DD401201D3008C5 -:10816000767C3009BA881A9A7668129B5D182FFDC2 -:10817000D8025EFCEBCD40801897580CC090789CDC -:10818000580CC035F01F00040E9CF01F0004E3CD16 -:108190008080000080027584800091E8EBCD40F87B -:1081A0001896129510944063328CF01F000B1897AC -:1081B000C0F00C9B311AF01F00093FFC8F658F74D3 -:1081C0008F838F9C30090E9A485BF01F00060E9C2F -:1081D000E3CD80F880028F24800091AC8002815A28 -:1081E000800272C8D4011698306AF8CBFFEF109C59 -:1081F000F01F0002D80A0000800091DCD431213D3C -:1082000076FE511E760A503A761950497628505813 -:10821000763E506E764A507A7669508976785098D4 -:10822000768E50AE769A50BA76B950D976C850E864 -:1082300076DE189850FEF8C9FFF876EA510A7654AF -:1082400076AB500C5019E02BA44F50CB110EF8CB4D -:10825000FFF45008512E403A700340487205502BED -:10826000E069A478EA19D76AFC0900091409760ABA -:10827000E06BB756EA1BE8C7F40B000B100BF5E5F3 -:108280002008066814581009E06870DBEA182420FA -:10829000EBE3200AF20E1507FDE9139E060EFDEA38 -:1082A000000A0A5A1005140BFDE32008F606150C07 -:1082B000EDEB13461C06EDE800080658405AE0694D -:1082C000CEEEEA19C1BD14051005EDEE2008EA0B4B -:1082D0001511F7E512FB0C0BF7E800081C58120308 -:1082E0004069120310034078E6051516E0690FAFE8 -:1082F000EA19F57CEBE312A5F00900091605F7E68B -:108300002008EBE800080C581C091009EBEB2008CA -:10831000F2031507E7E913930A03E7E80008165884 -:10832000E06AC62AEA1A4787E80A000A0C0A100A15 -:10833000E7E52008F402150CE5EA13420602E5E839 -:1083400000080A58408EE0694613EA19A830FC0973 -:10835000000916091009E5E32008F2061511EDE9F8 -:1083600012F60406EDE800080658409AE06B950105 -:10837000EA1BFD46F40B000B0A0B100B40A840C98A -:10838000F60E1516FE395BB1FDEB12AEE06A98D819 -:10839000EA1A69800C0E40BBF00A000AEDE22008E0 -:1083A000FDE80008045840C1060A50C9100AE069F7 -:1083B000F7AFEA198B44FDE62008F6090009F40B33 -:1083C0001507F7EA139B1C0BF7E800080C58F7EEAB -:1083D000200A0C0104091009F206150CEDE91346F8 -:1083E0001606EDEB2008EDEA000A1C5A1401E2051E -:1083F0001511EBE112F50C05EBE80008165840DA10 -:10840000E069D7BEEA19895CF40900091C09100962 -:1084100040E8F20E1516E06A1122EA1A6B90FDE9A7 -:1084200012AEF00A000A0A0EEBE62008160AFDE872 -:10843000000840FB0C58E0697193EA19FD98100A96 -:10844000F6090009FDE52008F40B1507F7EA139B70 -:108450001C0BF7E800080A580C0910094108F2063D -:10846000150CE06A438EEA1AA679EDE91346F00A84 -:10847000000A1606F7EE2008EDE800081C580A0A64 -:10848000100A4118F4051511E0690821EA1949B4E8 -:10849000EBEA12F5F00900090C05EDEB2008EBE81A -:1084A000000816581C091009F2031516E7E912A373 -:1084B0000A03E7E520080C680A58404EE06A256286 -:1084C000EA1AF61EFC0A000A160A408B100A40D867 -:1084D000F40E1505E069B340EA19C040FDEA13BE89 -:1084E000F6090009060E403B0C09E0665A51EA16EF -:1084F000265EF0060006FDE320080A68065810090B -:10850000E062C7AAEA12E9B6F6020002F20B150908 -:10851000F7E9137B41191C0BF7EE200806681C587D -:108520000A0606021006E063E681EA13D8A1F20308 -:108530000003EC09150EF3E613291609F3EB2008E6 -:108540001C68165840CA10024078E065105DEA15B4 -:10855000D62FE0611453EA110244E8050005F40146 -:1085600000011C051601E40A1514E06EFBC8EA1EA2 -:10857000E7D3F5E212CAF00E000E120AF5E9200860 -:10858000166840BB125812031005E066CDE6EA16E5 -:1085900021E1F6060006EA0B1505F7E513BB140BFF -:1085A000F7EA2008126841091458E06507D6EA1571 -:1085B000C3371001F2050005E2091509F3E113794B -:1085C0001609F3EB20081468165810034068140EBF -:1085D0001606E60A150EE0620D87EA12F4D5F5E3F9 -:1085E000132AF0020002120AF5E92008166840ABCF -:1085F00012581205100EE06314EDEA13455AF60303 -:108600000003FC0B1514F7EE12CB140BF7EA20084D -:10861000126840F91458E061E905EA11A9E310066F -:10862000F2010001EC091505F3E613B91609F3EBA5 -:10863000200814681658100540581402E066A3F884 -:10864000EA16FCEFEA0A1509F0060006F5E5137ACA -:10865000120AF5E9200816681258409E1002160307 -:10866000E40B150EF7E2132B140BF7EA200812683F -:108670001458E06502D9EA15676F1003FC05000580 -:10868000E60E1514FDE312CE160EFDEB200814685D -:1086900016581201100140A840E91406E060F68166 -:1086A000EA108771E20A1505F0000000F5E113BA3F -:1086B0001C0AF5EE200816681C58E0624C8AEA1283 -:1086C0008D2A1006F2020002EC091509F3E613796F -:1086D0001409F3EA20081C681458160540DB10053D -:1086E0004108E434C6BEE0616122EA116D9DE80AEA -:1086F0000007F6010001E066380CEA16FDE5F00619 -:108700000006EA08150EF1E513281208F1E9200B1E -:10871000F7EA000A125A1C021402407A404E120074 -:108720001001E063CFA9EA134BDEF4030003E40A6F -:108730001514F5E212CA100AF5EB200BF5E8200833 -:10874000EE0B000BF6091504F3EB13C914091258CC -:1087500014061000F3EA200AE065EA44EA15A4BE14 -:10876000E008150BFC050005F1E01358120512088E -:10877000105A10031401F1E92009E20B1510F7E17A -:10878000130B100B1659F7E820081206EC0E1517FC -:10879000FDE6129E160E1C5810054098FDEB200AAF -:1087A000EA061504E0694B60EA19F6BBEDE513C66D -:1087B000F00900091C0616090C5AEDEE20081403F6 -:1087C00040CBE605150BEBE313550C050A58E06AA0 -:1087D000BC70EA1ABEBF1009F60A000AEBE62008D0 -:1087E000F20B1510F7E9130B0A0B16581C0A100AA6 -:1087F00040F8F40E1517E0697EC6EA19289BFDEAD9 -:10880000129EF0090009160EF7E520081C580C0905 -:1088100010094038F2061504E06A27FAEA1AEAA1BC -:10882000EDE913C6F00A000A1C06FDEB20080C58FF -:108830000A0A100A4068F405150BE0693085EA1948 -:10884000D4EFEBEA1355F00900090C05EDEE200812 -:1088500016090A58408B1009E06A1D05EA1A0488B7 -:10886000EBE62008F60A000AF20B1510F7E9130BE5 -:108870000A0B16581C0A100A40B8F40E1517E069C6 -:10888000D039EA19D9D4FDEA129EF0090009160E72 -:10889000F7E520081C580C09100940E8F2061504F9 -:1088A000E06A99E5EA1AE6DBEDE913C6F00A000A88 -:1088B0001C06FDEB20080C580A0A100A4118F405A2 -:1088C000150BE0697CF8EA191FA2EBEA1355F009D1 -:1088D00000090C05EDEE200816090A58405B100946 -:1088E000E06A5665EA1AC4ACEBE62008F60A000A0C -:1088F000F20B15101C0AF7E9130BE0692244EA1980 -:10890000F4290A0B1658100A4032F40E15171202F9 -:10891000FDEA129EEA0811FF160E409AFDE81008C3 -:10892000E069FF97EA19432A1658F40900090A0971 -:108930000C0241061002F60811FFE40A1506F5E2E2 -:1089400013AA1C0AF5E810081C58F2080005E06993 -:1089500023A7EA19AB941206FC0811FFEC0B000BDD -:10896000EA06150AEDE513661406EDE8100814583A -:10897000F6080008E069A039EA19FC93F00B150F1E -:10898000FA243942F7E8131BE80900050C0BEA0E3C -:10899000000EF40811FFF7E810080C58E06959C3FD -:1089A000EA19655BFC08000540E2EA0E15151202A3 -:1089B000FDE512BEEC0811FF160EFDE81008165872 -:1089C000E40A000AE069CC92EA198F0CF40800026C -:1089D0004068F00900090C09E40A1506F60811FFC1 -:1089E000F5E213AA1C0AF5E810081C58F208000268 -:1089F000E069F47DEA19FFEF40C1FC0811FF1201A4 -:108A0000E406150AE20B000BE0695DD1EA198584E2 -:108A1000EDE213661406EDE8100814584045F60818 -:108A200000011205E20B150FEA0E000EF7E1131B11 -:108A3000F40811FF0C0BE0697E4FEA196FA8F7E804 -:108A4000100840A30C581203E60A000AFC080005AF -:108A5000EC0811FFEA0E1515FDE512BE160EFDE835 -:108A600010081658F4080003411AF60811FFE069CF -:108A7000E6E0EA19FE2CF4090009E60A15060C09DD -:108A8000F5E313AA1C0AF5E810081C58F2080003C5 -:108A90004088E0694314EA19A301F00900091609A6 -:108AA000FC0811FF40FBE605150AEBE3136514050E -:108AB000EBE810081458F2080008E06911A1EA195F -:108AC0004E08F6090009F20E000EF006150FE069D7 -:108AD0007E82EA19F753EDE81316F40811FF0A062F -:108AE000EDE810080A58FC080001407E120EEA0862 -:108AF00011FFFC0A000AE20E1515FDE112BE0C0E74 -:108B0000FDE810080C58F40800094128F20A15067F -:108B1000F5E913AA1C0AF4080009E068F235EA181E -:108B2000BD3A990940D91009EC0811FFF205000B74 -:108B3000F5E8100840091C58720CF6080001E069BD -:108B4000D2BBEA192AD740581208E20B150AF006E0 -:108B50000009F7E1136BFC0811FF140BF7E810088C -:108B60001458F208000640B8E069D391EA19EB8680 -:108B7000F0090009F20E0008F40A11FF400EEC099A -:108B8000150FF3E613191609F20C000CF3EA100A9C -:108B9000165AF00A0006EC081515F1E612B8100C8A -:108BA0009D0C401A7408120895084028700916098F -:108BB00091092EDDD832D703EBCD40E03809764855 -:108BC000F1D8C066F608000AF56900181895F00A91 -:108BD000113F1697F6080008F0CCFFE7587AE08BB3 -:108BE0000056300BF01F002DEEC6FFE8EECCFFA8BC -:108BF0000C9B1798178917BAF3E8108917A8F1EAA0 -:108C00001088F3E8110916A9183BCF410C9B0E9C64 -:108C1000F01F0023338A300B0C9CF01F00200C9BAC -:108C2000ECCCFFC81798178917BAF3E8108917A872 -:108C3000F1EA1088F3E8110916A9183BCF416E48F4 -:108C40006E590C9B0E9CEF480050EF490054F01FEA -:108C500000140E9BEECCFFF01798178917BAF3E8B3 -:108C6000108917A8F1EA1088F3E8110916A9183B32 -:108C7000CF410E9B0A9C310AF01F000A0E9C304A1D -:108C8000300BF01F0006E3CD80E0208A300BEEC6EB -:108C9000FFE8F01F0002CC4B800091D0800281FCE5 -:108CA000800091DCEBCD40FC1493784AF40300384B -:108CB000103AF9F98005F9F9B005F7B90BFFF9F9A0 -:108CC000BA059948E608161DF20800089958189444 -:108CD0001692F1DAC066C381F8C5FFE8E043003FB1 -:108CE000E088002C3006EAC7FFC0E406000B340A17 -:108CF0000A9CF01F00290A9B1798178917BAF3E8F6 -:108D0000108917A8F1EA1088F3E8110916A90E3B9B -:108D1000CF410A9B089CF01F00212C06E6060108A3 -:108D2000E048003FFE9BFFE3E6C80040E7D8C006EE -:108D3000E018FFC02C081002069A049B0A9CF01F42 -:108D40000016E3CD80FCF00711402E88100C0E3386 -:108D5000C1D30E9AF01F0010E8C5FFE8E8CCFFA8C9 -:108D60000A9B1798178917BAF3E8108917A8F1EA30 -:108D70001088F3E8110916A9183BCF410E130E0213 -:108D80000A9B089CF01F0005CAAB069AF01F000260 -:108D9000E3CD80FC800091DC800281FCEBCD40FCC7 -:108DA000216DE0682301EA186745E06EAB89EA1E91 -:108DB000EFCD30075008501EE068DCFEEA1898BA84 -:108DC000E06E5476EA1E1032504750575028503EFD -:108DD00018931292580CC140149416951A962FF7B6 -:108DE000090A0B0B1A9CF01F00080E33FE9BFFF9BB -:108DF0001A9B049CF01F00052EADE3CD80FC1A9653 -:108E0000CF8B000080028CA480028BB8D431FACDC5 -:108E10000088501C500B14931292109142B0585A73 -:108E2000E08B0056E04B0040E08B0054FAC4FFF8A2 -:108E3000340A300B089CF01F002E400A401B089C8F -:108E40000896F01F002CFAC5FFB808970D88EC189B -:108E500000360CC80A36CFB1340851845128580363 -:108E6000C110FACCFF9CFACBFFB4300AE60E150213 -:108E7000E40A030818A8E20A030916A92FCA1C3A33 -:108E8000CF81E6CCFFFF00990A9AFAC3FFA0069BA8 -:108E9000F01F0019340A300B089CF01F0015400A1F -:108EA000401B089CF01F00130F88EC18005C0EC8D4 -:108EB0000C37CFB1310C3408513C5184519000999A -:108EC0000A9A069B5128302CF01F000B2DEDD8324A -:108ED000FAC6FF881A9A0C99FACBFFFC301CF01FD7 -:108EE0000006310850165008CA2B0000800091D0AF -:108EF000800091DC80028D9CD401202D501A5009F5 -:108F0000301A1AD8FAC9FFF8FAC8FFFCF01F00039C -:108F10002FFD2FEDD802000080028E0C5EFC5EFE5D -:108F20005EFCD703EBCD40C01896F01F00061897E3 -:108F3000C0500C9A300BF01F00040E9CE3CD80C093 -:108F400080009200800091D0D401F01F0002D80A66 -:108F500080014600D401F8CBFFFCF01F0002D80AC4 -:108F6000800145D4780C580C5E0C3008F948004C50 -:108F7000780C580CCFC15EFC580CF9FC10435EFC19 -:108F8000580CF9B80100F9F81A435EFCEBCD40E04B -:108F9000189716961495314CF01F0005F9F71A032F -:108FA000F9F61A04F9F51A02E3CD80E080028F2465 -:108FB000EBCD40E01696149578075807C160580627 -:108FC000C080306A0C9BEECCFFC0F01F000AC0A12D -:108FD0005805C0B0EECCFFFC310A0A9BF01F00051B -:108FE000C0406E075807CEC10E9CE3CD80E0000064 -:108FF0008000917CEBCD4040781820181696991887 -:10900000784B78390C9C5D190C9CF01F0003E3CD64 -:1090100080400000800091E8EBCD4080202D300A98 -:109020001897189B49BCF01F001C300A0E9B49BCC6 -:10903000F01F00196E085808C2201A9CF01F001873 -:109040006E08400A70EC0E993008141C109BF8084A -:109050000C4C490A2FFCF01F00136E2BF6FA010C82 -:10906000580AC1006E08400A712C0E99141C300871 -:1090700048AAF8080C4C109BF01F000A2FEDE3CD16 -:109080008080F6CBFEB80E9CF01F0007CF80CEBBD1 -:10909000800290E4800274008002913080028F543C -:1090A0008002747480028FB0EBCD40C01896580CCB -:1090B000C1407809300899085809C031C0880E9914 -:1090C0007207129CF01F00065807CFA10C9CF01FDE -:1090D00000050C9CF01F0002E3CD80C0800091E8E9 -:1090E00080029018EBCD4080202D18971A9CF01F1D -:1090F000000E6E0A580AC0C1C1087408149B8F087C -:10910000300A0E9CF01F00096E0A580AC06074E90C -:1091100040081039FE9AFFF30E9CF01F00052FED5A -:10912000E3CD808080028F5480028FF480029018FB -:10913000D4013008782AF548010C7829F2FC0104A2 -:10914000F01F0002D8020000800255ACD43120CDBF -:109150001096782814941293E04A00205FBAF0F930 -:109160000160189758295F18169241511448C05051 -:1091700030060C9C2F4DD832354CF01F00621890F1 -:10918000CF80089A049B2ECCF01F005F81D4FAC9CF -:10919000FFE450965083FAC5FFF84DC81AD5303A0F -:1091A000089B049C4DA65086F01F005AE0C8FFFCA7 -:1091B0000A9B5018310A109CF01F0053FACCFFD4C0 -:1091C000F01F0055E0C8FFC0502840BC6E29F2F8DF -:1091D0000150F808000881E86E2AF4FB0150F4F908 -:1091E0000154E06A851FEA1A51EBB739F20A0648C2 -:1091F000301AA599180981FAE1490048306A402CD3 -:10920000069BF01F0041E141004C2FFD6E06580601 -:10921000C2903005C0680C956C0C580CC58018962F -:10922000ECCBFFC0306A069CF01F003CCF516CD8DD -:109230000838C5505805EDF80000EFF80A00EDF8C1 -:109240001000EBF81A006E29F2F8010C0C38F9B88E -:109250000000F3F80A430C9B301A0E9CF01F0030FC -:109260006E066E1859F8E08A00155806C3200C9A4D -:1092700015088F086E28F0F90128ECCBFFC0720C9E -:1092800072F85D180C9B300A0E9CF01F00256E06CC -:109290005806C1F060EA6CE8103AC074C1A872E8E0 -:1092A0001438E089000612966C095809CF9181099B -:1092B0008D006E2C6E18400A401B2FF88F18F8F99D -:1092C00001280096720C72E85D18C54B6E06CCAB97 -:1092D00081068F000E9CF01F0013CECB089A049BD2 -:1092E000ECCCFFECF01F000DCA61310A400BECCC56 -:1092F000FFFCF01F000AC9F1009CF01F000BC3AB7C -:1093000080028F24800091DC8003DB248003DB9CBF -:109310008002B14480028F548000917C80028FF4DF -:1093200080029018800091E8EBCD4080189E78076D -:10933000580BC06116970E9CE3CD80806E075807CE -:10934000CFB06F381638CFB11AD814997C286EDA9E -:10935000F0C8FEC8EECBFFEC1C9CF01F00092FFDEF -:10936000580CF8071700EFF8100EF9F81A0EF80766 -:109370001710F9B80101F9F81A14CDEB8002914CDD -:10938000EBCD40FC1897300CEF4C010C1496129268 -:109390001094EEF50108580BC080169A189B0A9C91 -:1093A000F01F0016EF4C010C58065F13EEFC010C89 -:1093B000580C5F09F3E30008C16158045F18F3E833 -:1093C0000008C0A05803C0800C9A049B0A9CF01FA0 -:1093D000000CEF4C010C580CF9BC00FFF9BC01006B -:1093E000E3CD80FC300A0C9B0A9CF01F00045F094F -:1093F000EF4C010CCE3B000080028FB0800293281E -:109400000000000000000000EBCD4080580CC100BF -:10941000F8F901103008F94801105809C031C08826 -:109420000E997207129CF01F00045807CFA1E3CDDC -:1094300080800000800091E8EBCD40C01897580C68 -:10944000C250F8F801245808C210189B300A491C71 -:10945000F01F0011EEFC0124F01F00103006306AEE -:109460000C9BEF460124EECCFEE4F01F000DEEFC59 -:109470000114F01F000CEF460114EEFC0118580C0B -:10948000C050F01F0008EF460118E3CD80C0000077 -:109490008002996880027400800256EC800091D0AE -:1094A00080028174EBCD40F8205D189716951494D6 -:1094B000F8F601245806C0503FFC2FBDE3CD80F8DC -:1094C000F8FA012817D81AD817C91AD917B81AD80C -:1094D00017A91AD917981AD81789301B1AD9740CDA -:1094E0004C6AF01F0047EEC3FEC81AD60E984C59BE -:1094F000E06A88C7069BEEFC0140F01F0043EF4C7A -:1095000001142F9D580CC6F0EEFC0144580CC0E02D -:109510001AD6069B0E984BB9E06A88C7F01F003A2E -:10952000EF4C01182FFD580CC5E0340CF01F00372C -:109530001896C5B0EEF8012870099909EEF80128CF -:109540003019700A4B2899199928994A99374B185C -:10955000EEF9012C998899599967EEF8012871095B -:1095600099A9EEF80128711999B9F01F002BEF4C59 -:109570000124C3D0314A300B1A9CF01F0028EEF9A9 -:1095800001305804E9F8105FFBF81A03300650293F -:109590001A9A089B50165006EEFC0124F01F00207A -:1095A000306830593FFAEEFC0124149BF01F001D77 -:1095B000306A0A9BEECCFEE4F01F001B301BEEFC71 -:1095C0000124F01F001A301BEEFC0124F01F0018CC -:1095D0000C980E99497A0C9BEEFC0158F01F00166E -:1095E0000C9CC6CB3FECC6AB3FCCC68B0C9CF01F93 -:1095F00000133FDCC63B00008003DBA880023A1A60 -:1096000080029AF08002819C80028F2480029A243A -:10961000800299C48002609C800091D08002581C16 -:1096200080025564800091DC800261D4800261E890 -:109630008002996880027474800091E8EBCD40FC50 -:109640001897F8F801105808C6F0F8F801284CAA45 -:10965000700C301BF01F0049EEF801245808C0A020 -:10966000EEF801284C6A700C301BF01F0044E3CD6B -:1096700080FCEEF801605828CF41EEF80128700C0C -:1096800070295D19587CCED1EEF8016C5818CE9136 -:10969000EEF501105805C410EEC2FEB8EAC3FFFC97 -:1096A000300A069BEEFC0108F01F0036306A189461 -:1096B000069B049CF01F0034C0605804C3706948C6 -:1096C0005808C341EB3800091AD8EB3800081AD8FB -:1096D0000BF81AD80BE8EEF601281AD80BD91AD9CC -:1096E0000BC84AAA1AD8301B6C0CF01F00242FADEF -:1096F0005804C090EEF90128E8CAFFFC069B720CE2 -:1097000072E85D186A080A9CEF480110F01F0020FB -:10971000EEF501105805CC31EEF8012849DA700C4D -:10972000301BF01F0016E3CD80FCEB3800091AD87F -:10973000EB380008EEF601281AD80BF81AD80BE817 -:109740001AD80BD91AD90BC8493A1AD8301B6C0C45 -:10975000F01F000A6A08069BEEFA0134EF48011078 -:109760000E9CF01F000E0A9CF01F00092FADE3CDE8 -:1097700080FC00008003DBEC80023A1A8003DC14DA -:1097800080028FB08000917C8003DCA0800091E893 -:109790008003DCFC8003DC4C800294A4EBCD40F819 -:1097A0001695189414931297F8FB0134580BC05077 -:1097B000F6F801485808C5D15807C4C0E8F60110AA -:1097C0005806C4A03007C0680C976C0C580CC440F5 -:1097D0001896306A0A9BECCCFFFCF01F002CCF518E -:1097E0005807EDF81000EFF81A00EDF80000E9F85E -:1097F0000A44E04303E7E08A003BE8FA0110580A14 -:10980000C4006C3B74381638C065C3B8723816385B -:10981000C054129A74095809CFA18D0995061AD31C -:109820000BD80B8CE8F601281AD80BC91AD90BB83B -:109830001AD80BA91AD90B98495A1AD8301B1ADC16 -:109840006C0CF01F0014089CF01F00132F9DE3CD3B -:1098500080F8E3CD80F8310CF01F00101896C0F0AE -:10986000306A0A9BECCCFFFCF01F000D8D33CC6BF3 -:109870000A9AF8FC0108F01F000BC9FBE3CD80F841 -:109880008D0AE9460110CCCB8000917C8003DD2459 -:1098900080023A1A8002963C80028F24800091DC7C -:1098A00080029328EBCD40F8208D169414971895DC -:1098B000F8F801345808C470F01F0027EEC6000104 -:1098C000C426E068009C1A93EC080248E8080007E8 -:1098D000EAC4FEB8C0682016EEC7009C5806C3351F -:1098E000EAF901346EAA7258103ACF61724BEECC8D -:1098F000FFFAF01F001ACF01306A089B0E9CF01F80 -:109900000017CEA0EEFB0080580BCE601A9AEECC6A -:10991000FFA8F01F0013CE01189A0E9BEAFC010865 -:10992000F01F0010C13079485808CD604048EDB8AC -:109930000000CD213019E06A03E80E9B0A9CF01F5D -:10994000000ACCAB2F8DE3CD80F84048F3D8C0019E -:10995000CF3B0000800294088000917C8002BD68AB -:1099600080028FB08002979CEBCD4060F9380121D6 -:10997000F8F501281AD8F93901201AD9F938011F48 -:109980001AD8F939011E1AD9F938011D1AD8F9392E -:10999000011C489A1AD9302B18966A0CF01F000740 -:1099A0000C9CF01F00070C9CF01F00062FADE3CDB0 -:1099B000806000008003DD6C80023A1A80029438D7 -:1099C0008002963CEBCD40E0201D1897F8F801147A -:1099D0005808C0613FF60C9C2FFDE3CD80E0F8F8FD -:1099E0000128300C5C791ADC5C5B700C70D6FAC80C -:1099F000FFFC5D162FFD1895580CCED01899400825 -:109A0000E06A88C7EECBFEE4EEFC0114F01F000410 -:109A100018960A9CF01F0003CDFB000080028154C1 -:109A2000800091E8EBCD40E0208D14971896580BFC -:109A3000C2614A781AD8EEF60128EF3801211AD807 -:109A4000EF3901201AD9EF38011F1AD8EF39011E5A -:109A50001AD9EF38011D1AD8EF39011C49DA1AD981 -:109A6000302B6C0CF01F001C0E9CF01F001C0E9C79 -:109A7000F01F001B2F9D2F8DE3CD80E01A95320A39 -:109A80001A9BF01F0018C1211A9B320AEEF801340C -:109A90008F8A1AD8EEC9FEE4EEC8FEC8EEFC0108B3 -:109AA000F01F001149182FFDCC6B0C9C310A1A9B3A -:109AB000F01F000CC090EEF8012848DA700C302B33 -:109AC000F01F0005CB7B1A9B310ACE1B8003AD2C07 -:109AD0008003DE1880023A1A800294388002963C95 -:109AE000800257CC8002914C8003DDB48003DDCC32 -:109AF000EBCD40F81897169514931294F8F80124BA -:109B00005808C090F8C6FEE4306A48BB0C9CF01FB1 -:109B1000000BC031E3CD80F80C9C306A0A9BF01F2B -:109B20000007CF910899069A0A9BEEFC0124F01FCA -:109B30000004CF1B800294008000917C800261FCB5 -:109B4000EBCD40F8FACD01001293109418961697B9 -:109B5000149530081A99F2080B082FF8E048010014 -:109B6000CFB1300E1A9C1C9BEC0B0709198AFC0A1A -:109B700000081208FAC9FF00FDD8C0081C09F33814 -:109B8000FF0018C8F36AFF002FFBFAC8FF000E3B66 -:109B9000F9BB0200103CCE915805C4C0300E1C9792 -:109BA0001C9CF8C8FFFFFACAFF00F9D8C008180AC1 -:109BB000F53BFF00F60E0008FAC9FF00FDD8C0080B -:109BC0001C09F338FF00F568FF00F36BFF002FF767 -:109BD0000E35FE9BFFE85804C2A006963007F8C871 -:109BE000FFFFFACAFF00F9D8C008180AF539FF00CC -:109BF000F20E0008FACBFF00FDD8C0081C0BF738A6 -:109C0000FF00F568FF00F769FF00F538FF00100955 -:109C1000F3D9C008FACAFF00120A0D89F538FF000F -:109C200012580CC82FF70E34FE9BFFDB2C0DE3CD32 -:109C300080F80A9E0A9CCD0BD401129E16981899A2 -:109C40001C9B149C300AF01F0002D80280029B402B -:109C500000000000D431FACD0180340AFAC4FEC0FD -:109C6000510C089CF01F04BF688A516A689950A97A -:109C700068A8509868B65086684568216830416683 -:109C800050E5685250D2686A50CA687950B968087D -:109C90005158E3E8200868D50C580A586812F00AB1 -:109CA000150150F2F5E813FA517A68E868F640E5D4 -:109CB00040A9105940980C580A5802580059F00A07 -:109CC00015010459F5E813FAF20215014178E5E9A6 -:109CD00013F2519A518240C54089105968C80458FE -:109CE00040E20A58045840D6F00A15010C59F5E82C -:109CF00013FA005951AA419840B640D5416240CA72 -:109D0000F2071501EFE913F768D9105968E80E5802 -:109D1000045814580C590A59F0051501F20615019A -:109D2000EBE813F5EDE913F640B851C551B641A281 -:109D300068F940AA416504591459105941780C58E2 -:109D400040960C580A58F2021501F00A1501E5E98F -:109D500013F2F5E813FA41C851EA51D2408640A502 -:109D6000409A418910594198045868C204581458BF -:109D70000C590A59F0051501F2061501EBE813F527 -:109D8000EDE913F6408851F6520541E268DA68C5FC -:109D9000EFE220091459105941A80C5868E60C58F4 -:109DA0000A58F2021501F00A1501E5E913F2F5E887 -:109DB00013FA52124208522A41B968F668D568EA85 -:109DC000105941C804584172045814580C590A5982 -:109DD000F0051501F2061501EBE813F5EDE913F6B0 -:109DE0005245523668F84222418A417541D9045998 -:109DF0001459105941E80C5841960C580A58F2026F -:109E00001501F00A1501E5E913F2F5E813FA4248E5 -:109E1000418641A5525241F9105942080E59045841 -:109E20000C5941920A580458526AF20A1501F5E990 -:109E300013FAF0091501F3E813F9426841B641C578 -:109E400041A2527A52894219105942280C59145889 -:109E50000E590A580458F20A1501F5E913FAF009E7 -:109E60001501529AF3E813F9428852A941D641B537 -:109E700041E2423910594248145841CA0458145812 -:109E80000C5941FA0A59F0051501F2061501EBE8E3 -:109E900013F5EDE913F641D852C542A241E552B699 -:109EA00042590459145942CA105942680C58420682 -:109EB0000C580A5841F6F20E1501F0021501FDE9A1 -:109EC00013FEE5E813F2421942781458420A42257B -:109ED000125842890C581C59F00615010A59EDE830 -:109EE00013F61459F20A1501F5E913FA0C951493B7 -:109EF000423952E652FA4216424A52D24298045825 -:109F0000125842A90C580A5942261459F00A150150 -:109F1000F5E813FA0C59530A1496F2081501425A3F -:109F2000F1E913F84239109C531842B806581458F6 -:109F3000426A125842C90C591459424A1459F00A3B -:109F40001501F5E813FAF2081501F1E913F8109B71 -:109F500053384278FDEC20091059425810595019D5 -:109F60004289E5EA200812584269125840195008FF -:109F70004018A178F1E913F8400953484008A17846 -:109F8000F1E913F853584298EBEB20091059427845 -:109F9000105942A850194349E7E92009105942884D -:109FA000105940185009532A4019A179F3E813F9C0 -:109FB000400853694009A179F3E813F953794358EC -:109FC000EDE8200942B810594298105942C850197A -:109FD0004369F9E92009105942A81059401850095D -:109FE0004019A179F3E813F9400853894009A17990 -:109FF000F3E813F943785399F5E8200942B81C595E -:10A00000105950194389F7E92009129842C9045898 -:10A010001258401950084018A178F1E913F8400986 -:10A0200053A84008A178F1E913F8434953B843987D -:10A0300010590A591C59501943A94358125840192C -:10A04000065804584012A172E5E913F253C2F00217 -:10A050001501E5E813F243B84369105943780C59E8 -:10A060000A5943C50A581858065853D2F202150126 -:10A07000E5E913F2F0091501F3E813F943D853F9B0 -:10A08000438910594398145904580C5916581858B4 -:10A0900053E243F54342F20C1501F0061501F9E9CC -:10A0A00013FCEDE813F643A943B80A5918580459AC -:10A0B0001459435A145816585406436A4402F20677 -:10A0C0001501F0051501EDE913F6EBE813F543482A -:10A0D00054255416435543C904591459105943D8AB -:10A0E000F20215010C58E5E913F2437654320C588C -:10A0F0000A58F00A1501F5E813FA544A890A442966 -:10A1000043864365437A43E8125843F90C5804598F -:10A110000A584392F0061501EDE813F654568916D5 -:10A1200004591459F2051501EBE913F55465892515 -:10A13000444243AA4389F9E2200814581258F00215 -:10A140001501E5E813F25472439544090C5943B6DE -:10A1500089320C590A59F20A1501F5E913FA548AA1 -:10A16000894A43C6446943A5441812580C580A58F2 -:10A17000F0061501EDE813F6549643BA4429045944 -:10A1800043D2895604591459F2051501EBE913F528 -:10A1900054A58965448243EA43C944380458145895 -:10A1A0001258F0021501E5E813F254B243D54449C0 -:10A1B0000C5943F689720C5944080A59446A045AE6 -:10A1C000105A0C5AF2061501EDE913F654C6447BF9 -:10A1D00089860C5BF4061501EDEA13F654E6441586 -:10A1E00044A243E9445889A60A5B045818581258F7 -:10A1F000F0051501EBE813F554D58995185BF602C7 -:10A200001501E5EB13F254F289B2444A4489449BA8 -:10A210000A590C5B4405442644A804581458F3E634 -:10A22000200A0C580A5A5028E0657999EA155A8292 -:10A23000504A410644325116441AEE050009F7E22D -:10A2400020081458E062EBA1EA126ED95038507918 -:10A25000040E0C99506EE068BCDCEA188F1B0C9A57 -:10A26000100C2F8A505C512A1306511941087403AF -:10A27000720C2F485138410A2F0A514A700A41483E -:10A28000700941580A08F0090009EC081505F1E6C3 -:10A2900013B8F2080008F5E3200918691459F00909 -:10A2A000000740F80A08F00A0009F80B151EF7EC41 -:10A2B000122BF7E320080C680658F2080008EE0994 -:10A2C0001505F3E713B9EC0A151EF009000EF5E6C3 -:10A2D000122AFC091505F7EA2008F3EE13B9EFE896 -:10A2E000000816580A01EE0C151E0601F9E7122C9B -:10A2F0001001F9EA200812011C68E209150514583A -:10A30000F3E113B90A001600100040E812000A0831 -:10A31000F00A0009FC0B151EF7EE122BF7EC2008D3 -:10A3200002681858F2080008E0091505F3E013B9AF -:10A33000F009000640D80A08F00C0009E20A151ED0 -:10A34000F5E1122AF5EB200800681658F20800081B -:10A35000EC091505F3E613B9F009000E40C80A0828 -:10A36000F00B0009E00C151EF9E0122CF9EA2008A8 -:10A370000C681458F2080008FC091505F3EE13B92F -:10A38000F009000340B80A08F00A0009EC0B151E9A -:10A39000F7E6122BF7EC20081C681858F2080008A2 -:10A3A000E6091505F3E313B9F009000641680A0848 -:10A3B000F00C0009FC0A151EF5EE122AF5EB200838 -:10A3C00006681658F2080008EC091505F3E613B9FB -:10A3D000F009000E40A90A091609E60C151EF9E35A -:10A3E000122CF9EA20080C681458F2080008FC093D -:10A3F0001505F3EE13B9F009000340980A08F00AB6 -:10A400000009EC0B151EF7E6122BF7EC20081C6870 -:10A410001858F2080008E6091505F3E313B9F00926 -:10A42000000640890A091809FC0A151EF5EE122AD1 -:10A43000F5EB200806681658F2080008EC09150527 -:10A44000F3E613B9F009000E68C80A08F00B00091A -:10A45000E60C151EF9E3122CF9EA20080C681458D2 -:10A46000F2080008FC091505F3EE13B9F009000124 -:10A4700068D90A091409EC0B151EF7E6122BF7EC44 -:10A4800020081C681858F2080006E2091505F3E1D7 -:10A4900013B968E8EC0900030A08F00C0009FC0A8B -:10A4A000151EF5EE122AF5EB200802681658F20880 -:10A4B0000008E6091505F3E313B9F009000E68F981 -:10A4C0000A091609E20C151EF9E1122CF9EA200816 -:10A4D00006681458F208000BFC091505F3EE13B9D1 -:10A4E0004178F60900000A08F00A0009E606151E80 -:10A4F000EDE31226EDEC20081C681858F208000A5B -:10A50000E0091505F3E013B9F409000341890A09CC -:10A510001809FC0A151EF5EE122AF5E62008006857 -:10A520000C58F208000CE6091505F3E313B941983D -:10A53000F80900010A08F0060009E00B151EF7E013 -:10A54000122BF7EA200806681458F2080008E209FE -:10A550001505F3E113B94077F009000E1407FC0963 -:10A560001505E60A151EF3EE13B9F5E3122AF5EB0D -:10A57000200802681658EE080008F009000341A8F8 -:10A580000408F00B0009E20C151EF9E1122CF9EA9F -:10A5900020081C58F2080008E6091505F3E313B972 -:10A5A000F009000541B904091409FC0B151EF7EE6A -:10A5B000122BF7EC20080658F2080008EA091505E6 -:10A5C000F3E513B9F009000641C80408F00C0009CE -:10A5D000E60A151EF5E3122AF5EB20080A58F208E0 -:10A5E0000008EC091505F3E613B9F009000E41D98E -:10A5F00004091609EA0C151EF9E5122CF9EA2008DF -:10A600000C58F2080008FC091505F3EE13B9F0091F -:10A61000000541E80408F00A0009EC0B151EF7E6F6 -:10A62000122BF7EC20081C58F2080008EA0915055F -:10A63000F3E513B9F009000641F904091809FC0A09 -:10A64000151EF5EE122AF5EB20080A58F20800084C -:10A65000EC091505F3E613B9F009000E42080408E9 -:10A66000F00B0009EA0C151EF9E5122CF9EA200896 -:10A670000C58F2080008FC091505F3EE13B9F009AF -:10A680000005421904091409EC0B151EF7E6122BFC -:10A69000F7EC20081C58F2080008EA091505F3E554 -:10A6A00013B9F009000642280408F00C0009FC0A5E -:10A6B000151EF5EE122AF5EB20080A58F2080008DC -:10A6C000EC091505F3E613B9F009000E4239040947 -:10A6D0001609EA0C151EF9E5122CF9EA20080C58A7 -:10A6E000F2080008FC091505F3EE13B9F00900059E -:10A6F00042480408F00A0009EC0B151EF7E6122B7D -:10A70000F7EC20081C58F2080008EA091505F3E5E3 -:10A7100013B9F0090006425904091809FC0A151E6C -:10A72000F5EE122AF5EB20080A58F2080008EC09A9 -:10A730001505F3E613B9F009000E42680408F00BA2 -:10A740000009EA0C151EF9E5122CF9EA20080C584C -:10A75000F2080008FC091505F3EE13B9F00900032F -:10A76000427904091409EC0B151EF7E6122BF7ECDD -:10A7700020081C58F2080008E6091505F3E313B990 -:10A78000F0090005428904091809FC0A151EF5EEB6 -:10A79000122AF5EB20080658F2080008EA09150508 -:10A7A000F3E513B9F009000E429904091609E60C05 -:10A7B000151EF9E3122CF9EA20080A58F208000BDA -:10A7C000FC091505F3EE13B9F609000042A90409C6 -:10A7D0001409EA06151EEDE51226EDEC20081C58BA -:10A7E000F208000AE0091505F3E013B9F4090003C3 -:10A7F00042B9FC0A151E0409F5EE122A1809F5E6FD -:10A80000200800584065F208000C1405E6091505FB -:10A81000E00B151EF3E313B9F7E0122BF809000162 -:10A82000F7EA200AE2081505065AF1E113B842C911 -:10A8300004090C091409E60A151EF208000EF5E3D6 -:10A84000122AF5EB20080258EA080008E066BCDC92 -:10A85000EA168F1BFC091505F3EE13B9F009000089 -:10A8600042D80C08E20C151EF00B0002F9E1122C84 -:10A87000FDEC0008FDEC100914691049E00815050D -:10A88000F1E013B8E4090009F208000242E80C08FC -:10A89000FC0B151EF00A0005F7EE122BE1EB000889 -:10A8A000E1EB100918691049E4081505EA090009E7 -:10A8B000F1E213B8E00A151EF2080005F5E0122ACD -:10A8C00042F9E5EA00080C09F20C0003E5EA100978 -:10A8D00016691049EA081505F1E513B8E6090009FB -:10A8E000F208000343080C08E40C151EF00B0006E8 -:10A8F000F9E2122CEBEC0008EBEC1009146910499A -:10A90000E6081505EC090009F1E313B8EA0B151E7A -:10A91000F2080006F7E5122B4319E065BCDCEA15E6 -:10A920008F1BE7EB00080A09F20A000AE7EB10099F -:10A9300018691049EC081505F1E613B8F409000987 -:10A94000F208000243280A08E60A151EF00C000C63 -:10A95000F5E3122AEDEA0008EDEA1009166910493C -:10A96000E4081505F8090009F1E213B8EC0C151E0E -:10A97000F208000EF9E6122C4339E5EC00080A094A -:10A98000F20B000BE5EC100914691049FC081505E1 -:10A99000120BF1EE13B84349F6080005E40B151E3F -:10A9A000F7E2122BE062BCDCEA128F1BFDEB000821 -:10A9B0000409F20A000AFDEB100918691049EA08B7 -:10A9C0001505F1E513B8F4090009F208000643582B -:10A9D0000408FC0A151EF00C000CF5EE122AEBEA36 -:10A9E0000008EBEA100916691049EC081505F8098A -:10A9F0000009F1E613B8EA0C151EF208000EF9E59D -:10AA0000122C4369EDEC00080409F20B000BEDEC8D -:10AA1000100914691049FC081505F1EE13B8F60980 -:10AA20000009F208000543780408EC0B151EF00A33 -:10AA3000000AF7E6122BFDEB0008FDEB1009186980 -:10AA40001049EA081505F4090009F1E513B8FC0AF4 -:10AA5000151EF2080006F5EE122A4389EBEA0008FB -:10AA60000409F20C000CEBEA100916691049EC0815 -:10AA70001505F1E613B8F8090009F208000E43982D -:10AA80000408EA0C151EF00B000BF9E5122CEDEC96 -:10AA90000008EDEC100914691049FC081505F609C9 -:10AAA0000009F1EE13B8EC0B151EF2080005F7E6ED -:10AAB000122B43A9FDEB00080409F20A000AFDEB82 -:10AAC000100918691049EA081505F1E513B8F409E9 -:10AAD0000009F208000643B80408FC0A151EF00C31 -:10AAE000000CF5EE122AEBEA0008EBEA10091669F1 -:10AAF0001049EC081505F8090009F1E613B8EA0C4D -:10AB0000151EF208000EF9E5122C43C9EDEC000801 -:10AB10000409F20B000BEDEC100914691049FC0854 -:10AB20001505F1EE13B8F6090009F208000343D841 -:10AB30000408EC0B151EF00A000AF7E6122BFDEBD9 -:10AB40000008FDEB100918691049F4090009E6082E -:10AB50001505F1E313B8F208000543E90409FC0AFE -:10AB6000151EF20C000CF5EE122AE7EA0008E7EADF -:10AB7000100916691049F8090009EA081505F1E5F8 -:10AB800013B8F208000E43F90409E60C151EF20B87 -:10AB9000000BF9E3122CEBEC0008EBEC1009146944 -:10ABA00010494057FC0815051407F1EE13B8F609D3 -:10ABB000000AEA0B151EF7E5122BFDEB0009F4085D -:10ABC0000003FDEB1008E60A15051868F5E313BA53 -:10ABD0001248EE080009F20A00054409E06AC1D6ED -:10ABE000EA1ACA6214091809FC06151EEDEE1226AF -:10ABF000EDEB20080658F2080008EA091505F3E510 -:10AC000013B9F009000A4419E068C1D6EA18CA620B -:10AC100010091609E60C151EF9E3122CF9E62008B6 -:10AC20000A58F2080008F4091505F3EA13B9EA0B0B -:10AC3000151EF0090003F7E5122B4429E065C1D683 -:10AC4000EA15CA620A090C09F7EC20081458F20840 -:10AC50000008E6091505F3E313B9F009000EFC0935 -:10AC60001505F3EE13B9F406151EEDEA1226443A63 -:10AC7000EDEB20080A0A0658180A100A120A44497D -:10AC80000A091609E60C151EF9E3122CF9E620084C -:10AC90001C58F2080008F4091505F3EA13B9FC057D -:10ACA000151EF0090003EBEE1225E6091505EBEC85 -:10ACB0002008F3E313B91458E062C1D6EA12CA625D -:10ACC000445B040B0C0BF406151E100BEDEA122668 -:10ACD000120BEDE52008F60915050658F3EB13B93C -:10ACE000446A040A180A100A4478F409000E040899 -:10ACF000F0050009E60A151EF5E3122AF5E620081C -:10AD00001658F2080008FC091505F3EE13B9F0090E -:10AD10000005448904090C09F60C151EF9EB122CE8 -:10AD2000F9EA20081C58F2080008EA091505F3E5BD -:10AD300013B9F009000344980408F00A0009FC0B59 -:10AD4000151EF7EE122BF7EC20080A58F20800083F -:10AD5000E6091505F3E313B9F009000E44A9040947 -:10AD60001809EA06151EEDE51226EDEB2008065837 -:10AD7000F2080008FC091505F3EE13B9F009000507 -:10AD8000EA091505F3E513B944BAE60C151E040AE1 -:10AD9000F9E3122C160AF9E620081C58100A120AC8 -:10ADA00044C904090C09FC0B151EF7EE122BF7EC35 -:10ADB00020080A58F2080002F4091505F3EA13B94D -:10ADC00044D8E409000EE069C1D6EA19CA62120843 -:10ADD000EA06151EF00C0009EDE51226EDEB200841 -:10ADE0001458F2080008FC091505F3EE13B9F00930 -:10ADF000000CE068C1D6EA18CA62F405151EF8090D -:10AE00001505EBEA1225F3EC13B944EA100AEBE658 -:10AE10002008160A1C58100AFC02151EF40900012D -:10AE2000E5EE1222E06AC1D6EA1ACA62E5E5200818 -:10AE3000E20915051858F3E113B944FB140B404A15 -:10AE40000C0BA17A100B44B8F609000E4049F5E945 -:10AE500013FA14584459F1E9200B4438E069C1D67B -:10AE6000EA19CA6289CAF7E820074108F806151EE0 -:10AE7000120AEDEC1226700CEDE22008120C0258BA -:10AE8000FC091505F3EE13B90A0AE203151E100AB0 -:10AE9000E7E11223120AE7E62008E069C1D6EA19C1 -:10AEA000CA621C5840354030A170E1E513F0E0095A -:10AEB000000BF4091505040BF3EA13B9100B402835 -:10AEC0004021120BE065C1D6EA15CA62A171E3E820 -:10AED00013F1E2050008F0060009FC02151EE5EE7C -:10AEE0001222E5E320081458F2080008F6091505B7 -:10AEF000F3EB13B9F406151EF009000EEDEA122665 -:10AF0000EE051501410AEBE713F5EDE220080A0C06 -:10AF10001658060CFC091505100CF3EE13B9120CAB -:10AF2000950C411972081C089308F609151E412A50 -:10AF3000F3EB1229740812089508413870090C09BE -:10AF4000910989D089E189F541466C080408089C7B -:10AF50008D08340A300BF01F00042A0DD83200008F -:10AF6000800091DC800091D0EBCD40F878581494AB -:10AF7000A37AF40800099959123AF9F98006F9F907 -:10AF8000B006F7B90BFFF9F9BA06FDD8C066E808B4 -:10AF9000161DF2080008996818951693E80E000926 -:10AFA000E049003FE08B000F3006FCCCFFE4E606F2 -:10AFB000000BEA0C000CE806010AF01F0014E3CDB8 -:10AFC00080F8FC061140FCCCFFE40C9AEA0C000C63 -:10AFD000F01F000EEACBFFE40A9CF01F000DECC846 -:10AFE000FFC11034E088000FE60600070E9B0A9CA4 -:10AFF0002C07F01F00072C06ECC8FFC11034FE9B85 -:10B00000FFF7300ECD3B0000800091DC80029C54A5 -:10B01000D421202D16961895300B1A94583BF9B868 -:10B020000B14F9B80818F60911FFEC08030AF3D954 -:10B03000C002A379F4090A4AE80B0B0A2FFB588BCC -:10B04000CEE1301A49EBC038301A49EB0C9CF01FA6 -:10B05000001E6C58E21801F8E04801C0CF61308A48 -:10B060001A9B0C9CF01F00183007EE081602EE0920 -:10B0700011FFEC08032AF3D9C002A379F4090A4AA4 -:10B08000EA070B0A2FF75947CF11300B340AECCCE3 -:10B09000FFE4F01F000E0E9A300B0C9CF01F000B0B -:10B0A000ECCCFFEC308A300BF01F00081A9C308A81 -:10B0B000300BF01F00062FEDD82200008003DE5871 -:10B0C00080029C508002AF68800091D0EBCD40FCA4 -:10B0D000217DE0682301EA186745E06EAB89EA1E2E -:10B0E000EFCD5008E068DCFEEA1898BA3007501E31 -:10B0F0005028E06E5476EA1E1032E068E1F0EA185B -:10B10000C3D250675057503E504818931292580C73 -:10B11000C140149416951A962FF7090A0B0B1A9C26 -:10B12000F01F00070E33FE9BFFF91A9B049CF01FD3 -:10B1300000052E9DE3CD80FC1A96CF8B8002AF6870 -:10B140008002B010D431FACD008C501C500B1493F7 -:10B150001292109142C0585AE08B0056E04B0040CA -:10B16000E08B0054FAC4FFF8340A300B089CF01F3F -:10B17000002E400A401B089C0896F01F002CFAC5C0 -:10B18000FFB808970D88EC1800360CC80A36CFB106 -:10B190003408518451285803C110FACCFF9CFACBD3 -:10B1A000FFB4300AE60E1502E40A030818A8E20A02 -:10B1B000030916A92FCA1C3ACF81E6CCFFFF0099DC -:10B1C0000A9AFAC3FFA0069BF01F0019340A300B3D -:10B1D000089CF01F0015400A401B089CF01F00133C -:10B1E0000F88EC18005C0EC80C37CFB1314C340816 -:10B1F000513C5184519000990A9A069B5128302C59 -:10B20000F01F000B2DDDD832FAC6FF881A9A0C9970 -:10B21000FACBFFFC301CF01F0006314850165008D6 -:10B22000CA2B0000800091D0800091DC8002B0CC5D -:10B23000D401202D501A5009301A1AD8FAC9FFF833 -:10B24000FAC8FFFCF01F00032FFD2FEDD80200000D -:10B250008002B144D43121AD5009502B501A1892BC -:10B2600042395809C6D0504850593008FAC7FFAC87 -:10B270005038FAC3FFD4FAC0FFC0FAC4FFE8049CF8 -:10B28000F01F003140382FF850381AD34038518819 -:10B2900040285168FAC8FF98519830484046517884 -:10B2A000B986FB380013FAC9FFA0FB68006B189B36 -:10B2B0000E98FB66006840454046302A1891B185DB -:10B2C000049CFB650069A986FB66006AF01F001FED -:10B2D000314A069B009CF01F001E2FFD40085818A5 -:10B2E000E08A001C301608983149069A029B049C9B -:10B2F000F01F0018314A089B069CF01F0015009AA9 -:10B30000089B17381589125814C80E3ACFB12FF67A -:10B3100040080C38FE99FFE940560C985946F9B69A -:10B320000B140C180C9A5058009B404CF01F00084E -:10B3300040585808C05040480C085048CA1B2E6D51 -:10B34000D8320000800091B88002B144800091DCC6 -:10B350008002B230D43120EDFACEFFA4109530082F -:10B3600018927C14149716911296FB680036FB68AD -:10B3700000377C00149CF01F00275804C3003018CD -:10B38000FAC9FFC9508850685097FAC8FFCA505C84 -:10B3900050B6507550A950C85934E0880023300782 -:10B3A000FAC3FFECFAC6FFDCC088FB680036E8078A -:10B3B00001055935E088001CE00700080C991AD8EF -:10B3C0002EC70698304A029B049CF01F00132FFDE5 -:10B3D000FB3800362FF80E34FE9BFFE92F2DD832B4 -:10B3E00008953007FAC3FFECFAC6FFDC0C99069803 -:10B3F0001A96049C1AD6029B304AF01F00070A9A3C -:10B400000C9BE007000CF01F00052FFD2F2DD832FC -:10B41000800091B88002B144800091DC00000000FF -:10B4200000000000EBCD4080129E1097584CC26087 -:10B43000E08A0013588CC140590CC101590B5F18A8 -:10B4400058FA5FA91248C0A130689D083039300C05 -:10B450008F09E3CD8080582CC1E0E3CFC080E04B62 -:10B4600000205F1859FA5FA91248CF8130689D0803 -:10B470003029300C8F09E3CD808058DB5F1858CA23 -:10B480005FA91248CEB130099D093018129C8F086F -:10B49000E3CD8080585B5F18584A5FA91248CF40BF -:10B4A000E3CFC080580C5E0CF8F8010C5808F9B8CE -:10B4B0000100F9F81A435EFC580CF9FB1A4C5EFCCB -:10B4C000580CF9FA1A51F9FB1A505EFC580CF9FBAA -:10B4D0001A415EFC580CC080586BE08800035EFD8A -:10B4E0004928F00B032F5EFEF94A016C5EFDF94A14 -:10B4F00001685EFDF94A01645EFDF94A01605EFD86 -:10B50000580ACF20F94A01585EFDF4C80001E0480E -:10B510000063FE9BFFEAF94A01545EFD580ACE40E3 -:10B52000F94A01505EFD00008003DE5CEBCD40E097 -:10B53000189716951496580CC130F8FC0180F01F2E -:10B54000001158055F0858065F091248C0B030085E -:10B55000EF480188EF480180109CE3CD80E0E3CF05 -:10B56000C0E00C9CF01F0008EF4C0180CF900A9BBC -:10B570000C9AF01F0006300CEF460188E3CD80E006 -:10B58000800091E880009200800091DCEBCD40E0EB -:10B59000189716951496580CC130F8FC017CF01FD2 -:10B5A000001158055F0858065F091248C0B03008FE -:10B5B000EF480184EF48017C109CE3CD80E0E3CFAD -:10B5C000C0E00C9CF01F0008EF4C017CCF900A9B60 -:10B5D0000C9AF01F0006300CEF460184E3CD80E0AA -:10B5E000800091E880009200800091DCEBCD40E08B -:10B5F000189716951496580CC130F8FC0174F01F7A -:10B60000001158055F0858065F091248C0B030089D -:10B61000EF480178EF480174109CE3CD80E0E3CF60 -:10B62000C0E00C9CF01F0008EF4C0174CF900A9B07 -:10B630000C9AF01F0006300CEF460178E3CD80E055 -:10B64000800091E880009200800091DCEBCD40FE0C -:10B65000189716961493580CC031E3CFC0FE7409A6 -:10B66000F8F801605828C5E0F8F1016CF8F50168B8 -:10B67000F8F201645979FE98FFF23DD8304AB68855 -:10B68000ECCCFFFEFEFB0238F01F008E30083019B4 -:10B69000ACF8ACE9ECC4FFF85905E08000A158858E -:10B6A000E08000AA5845E08100BC0A9AFEFB02181F -:10B6B000089CF01F00843018A8C8E8C9FFFB3008B8 -:10B6C000B288E8C5FFFA5902E08000905882E08114 -:10B6D000009F304A4FDB0A9CF01F007A3018AAC83E -:10B6E000EAC9FFFB3008B2882FA55811E080008A14 -:10B6F0005821E08100A5304A4F5B0A9CF01F007181 -:10B70000EAC9FFFCEC0811FE1208AC98F206010C25 -:10B71000CA56870CEEF501745805E08000C1E3CFEE -:10B7200080FEF8F8010CF8F2016C5808F9B801280D -:10B73000F9B80016F8FA0168F8F401641039C8E3A2 -:10B7400033083009B688B6B93018B6A8F6C5FFFC7C -:10B75000590AC6F0588AE0800082584AE081009772 -:10B760004DCB0A9CF01F00573018AAC8EAC9FFFB4E -:10B770003008B2882FA55904C6B05884E081007EF5 -:10B78000304A4D5B0A9CF01F004F3018AAC8EAC926 -:10B79000FFFB3008B2882FA55812C661304A4CFB17 -:10B7A0000A9CF01F0048EAC8FFFC300AB08AB09A31 -:10B7B000EAC9FFFAEEF8010C5808CA503018B288EE -:10B7C000EAC9FFF9EACCFFF8B28A310AEEFB010CB4 -:10B7D0002FCBF01F003CEAC9FFE8C95B304A4C0B95 -:10B7E000089CF01F0038C68B304A4BDB0A9CF01FC8 -:10B7F0000035C75B304A4B5B089CF01F0032C5CB5D -:10B80000304A4B8B0A9CF01F002FC7BB5812FE9189 -:10B81000FF26304A4B4B0A9CF01F002AC60B5825C6 -:10B82000FE91FF1D304A4B1B089CF01F0026C44BA5 -:10B83000304A4AFB0A9CF01F0023C97B5901FE9144 -:10B84000FF0E304A4ABB0A9CF01F001EC5AB304AAF -:10B850004A7B0A9CF01F001BC99B304A49EB0A9C9B -:10B86000F01F0018C82B5822FE91FEF9304A4A2BCF -:10B870000A9CF01F0014C98B5814FE91FEF0304A48 -:10B8800049EB0A9CF01F000FC81B582AFE91FEE7E7 -:10B89000304A49BB0A9CF01F000BC67BF01F001901 -:10B8A000EF4C0174FE90FEDB0C9B660AF01F000556 -:10B8B00066080A9CEF480178E3CD80FE8003DE989D -:10B8C000800091DC8003DEA08003DE8C8003DE7CC0 -:10B8D0008003DE888003DE808003E1EC8003E1E406 -:10B8E0008003DE9C8003DEA48003DE948003DEB44C -:10B8F0008003DEB08003E1E88003DEA88003DE84FD -:10B9000080009200D401580CC060F8CCFEC8306AA8 -:10B91000F01F0002D8020000800091DCD4011898CA -:10B92000580CC040918AF01F0002D802800091DCC0 -:10B93000EBCD40F8208D189416971493F6C6FFF0BF -:10B94000F8F501685885C2E0E8F801645818C1604C -:10B950006EC8E8F901286E0B1AD81AD66E2849CAA3 -:10B960001AD81AD3720C72666E186E395D162FCD06 -:10B97000580CC1552F8DE3CF80F86EC9E8FA012825 -:10B980006E0B1AD91AD66E291AD91AD3740C74668A -:10B990006E3948FA5D162FCD580CCED42F8DE3CFDB -:10B9A000C0F80C9B310A1A9CF01F000A0A9AEECBD1 -:10B9B000FFD8FACCFFF0F01F00070A9AEECBFFE0A9 -:10B9C000FACCFFE81A96F01F0003CBFB80039C38EB -:10B9D000800091DCD401580CC070F94B0134F8FCA4 -:10B9E0000108F01F0002D80280028F64D401580CB5 -:10B9F000C110F8F8010C5808C08070DAF0CBFFECE9 -:10BA0000998AF01F0005D802320A109B998AF01F0C -:10BA10000003D802800091DC800091D0EBCD408003 -:10BA20001897F01F000AEEF801287029700C5D19B4 -:10BA3000585CEFF80057F9B90001F1D9E008EFF8C8 -:10BA40000A57E3CD8080000080029438EBCD40C0DF -:10BA500018971696580CC190306AF8CCFEB8F01FB3 -:10BA6000000F308A300BEECCFF10F01F000D3008B5 -:10BA700030190C9BEF4800F8EF4900EC306AEECC2F -:10BA8000FEE4F01F0008C030E3CD80C00E9CF01F24 -:10BA90000006E3CD80C00000800091DC800091D0E2 -:10BAA0008000917C80029438EBCD40C016971496AC -:10BAB000F6F8010C1838C0D0768A78D8103AC03021 -:10BAC000E3CD80C0F8CBFFEC0E9CF01F000ECF91B1 -:10BAD0003008EF48010C5806CF41320A0C9B0E9CEF -:10BAE000F01F0009EEF90128301B720C72485D1836 -:10BAF000EEF801280C9A700C70390C9B5D19CE1B66 -:10BB00008000917C800091D0D431189716941493C2 -:10BB1000300B324A069CEE040005F01F0052EEC6C0 -:10BB2000FFFF0C35E0880034E8C800013DD2EE0884 -:10BB30000004C0D8E4091800C2B01499F2C8FFFE8E -:10BB40001007EEC6FFFF0C35E08800220F89E409DC -:10BB50001800C4B10837C1B00D8A580AC180F4C8B2 -:10BB6000FFFEEE0800081035C4733308F009180012 -:10BB7000CE2187270D882FE887380D89F2C8FFFE70 -:10BB80001007EEC6FFFF0C35FE9BFFE2D83A580ABD -:10BB9000CFE03058F00A1800E08B003FEEC8FFFB02 -:10BBA0001035E08B002B14993061E2091800FE98E3 -:10BBB000FFC7EEC0FFFE304A4ABB009CF01F002BBF -:10BBC000C3900D89E2091800FE98FFBA009C304A24 -:10BBD0004A7BF01F0026C071EEC9FFFA87790D88F5 -:10BBE000204887880D89CABB0D8AF4C8FFFEEE087D -:10BBF00000081035CBB2DC3A14993138F00A18003D -:10BC0000FE98FFD4304A49BBEECCFFFEF01F001770 -:10BC1000C1900D89CCAB304A497BEECCFFFEF01FC2 -:10BC20000013C0610FE93018F0091800C1000D8A37 -:10BC3000CB6BEEC9FFFA87590D88204887680D89BC -:10BC4000C7EBEEC8FFFA87480D89C79B0FF8F808C5 -:10BC50001800CEE187070D882FE887180D89C6FBED -:10BC6000800091D08003DE788000917C8003DEAC80 -:10BC70008003DE908003DE98EBCD4080304A189739 -:10BC8000496BF01F0017C031E3CF9080304A495B09 -:10BC90000E9CF01F0013C041302CE3CD8080304A51 -:10BCA000491B0E9CF01F000EC041308CE3CD8080FC -:10BCB000304A48EB0E9CF01F000AC041310CE3CD26 -:10BCC00080800E9C304A48ABF01F0005F9BC000490 -:10BCD000F9BC0100E3CD80808003DEA88000917C68 -:10BCE0008003DE848003DE808003DEB48003DE8890 -:10BCF000EBCD4080304A1897496BF01F0017C031D8 -:10BD0000E3CF9080304A495B0E9CF01F0013C04186 -:10BD1000302CE3CD8080304A491B0E9CF01F000E72 -:10BD2000C041308CE3CD8080304A48EB0E9CF01F40 -:10BD3000000AC041310CE3CD80800E9C304A48ABF4 -:10BD4000F01F0005F9BC0004F9BC0100E3CD8080C0 -:10BD50008003DEA48000917C8003DE948003DE8C6F -:10BD60008003E1E48003DEA0EBCD40FC189416963E -:10BD70001497580BC160198B3308F00B1800C1D011 -:10BD80003008301595789548956895589505308810 -:10BD90009535952895185876E08B009BE3CFC0FC2D -:10BDA000301830898F7B8F4B8F6B8F5B9538950860 -:10BDB00095299519E3CFC0FC300531099545956566 -:10BDC000955595759529951930289508301A8F3A0B -:10BDD0005836FE98FFE51988F6081800CE01199923 -:10BDE000ECC800021039CDB119B919A8F1E91088D1 -:10BDF000F4081900CD4120465836E08A01112FC4BD -:10BE0000089CF01F008A8F2C20465816E08A010BF0 -:10BE10008F15E8CCFFFC19991988F1E91082CBF055 -:10BE2000ECC30002E40815021033CB95F8C4FFFE02 -:10BE300030056E16089CF01F007D0C4C8F1C2FC423 -:10BE400020432FF50A32FE99FFF65813E08A00E5E9 -:10BE5000300A8F3A09990988F1E91082CA00202333 -:10BE6000E40815021033C9B5E8C6FFFE14956E3418 -:10BE7000304A4EFB0C9CF01F006FE08100C430186C -:10BE800008488F382FC620432FF50A32FE99FFF15C -:10BE90005813E08A00940D990D88F1E910888F48B5 -:10BEA000E6CB0002581BE08A008AECCCFFFE199812 -:10BEB0001989F3E810898F59F6C80002A56912386C -:10BEC000C7F5F8C8FFFE300C8F68E3CD80FC1989F8 -:10BED0003DD8F0091800FE91FF631999ECC80002E3 -:10BEE0001039FE91FF5D304A4D3B2FECF01F0051A1 -:10BEF0001893FE91FF5509F909E8F1E91088EA085D -:10BF00001900FE91FF4DECCA0008583AE08A005E25 -:10BF1000E8CCFFF8F01F00498F2CECCA000C0A3A5D -:10BF2000E08A00578F13E8CCFFF419991988F1E9DA -:10BF30001082FE90FF35F4C30002E40815021033AE -:10BF4000FE95FF2EF8C4FFFE30056E16089CF01F0C -:10BF5000003B0C4C8F1C2FC420432FF50A32FE9956 -:10BF6000FFF65813E08A0042300A8F3A099909888F -:10BF7000F1E91082FE90FF142023E408150210332B -:10BF8000FE95FF0EE8C6FFFE14956E340C9C304AF9 -:10BF90004ABBF01F0028C211301808488F382FC63E -:10BFA00020432FF50A32FE99FFF25813E08A00145D -:10BFB0000D880D99F1E910888F48E3CF80FC300897 -:10BFC0008F58109CE3CD80FC580AFE99FEE9581A60 -:10BFD000FE90FEE6E3CF80FC304A49AB0C9CF01F9C -:10BFE0000015C0613028CDAB5813CF51CD8A0C9CC1 -:10BFF000304A495BF01F000FF9B80010F9B8010092 -:10C00000CCDB0C9C304A491BF01F000AF9B8000237 -:10C01000F9B80100C36B5813CD11CC1A5806FE991C -:10C02000FEBF5816CCB1CBBA8002BC788003E1ECDD -:10C030008000917C8003DE988002BCF08003DE9C4F -:10C040008003DE7C8003DEB08003E1E8D401580C7D -:10C05000C021DC0AF8F801745808CFC0169AF8FB22 -:10C060000178109CF01F0004F9BC01FEF9BC00002F -:10C07000D80200008002BD68EBCD40801897580CB4 -:10C08000C1D0F8FC0108F01F000F300A0E9B48ECED -:10C09000F01F000EEEFC0174F01F000DEEFC017CA1 -:10C0A000F01F000BEEFC0180F01F0009EEFC0128E0 -:10C0B000F01F00070E9CF01F0006E3CD80800000FB -:10C0C000800290A88002C0D080027400800091E8B5 -:10C0D000D401F01F0002D8028002963CEBCD40C094 -:10C0E0001896E06C018CF01F00131897C19030185F -:10C0F000E069A8C0F94800ECF9490150346833C937 -:10C10000F9480154F9460128F9490158189A189B31 -:10C11000489CF01F000AEF4C01081898C0400E9C84 -:10C12000E3CD80C00E9C1097F01F0005CF9B000050 -:10C1300080028F248002BAA880028F8C800091E850 -:10C14000EBCD4060149E1DD81896158CECF5012897 -:10C150001AD81DC91AD91DB81AD81DA91AD91D98DF -:10C1600048CA1AD81ADC1ADB303B6A0CF01F000AE6 -:10C17000ECF90128311B720C72585D18ECF901289A -:10C18000300A720C7238149B5D182F9DE3CD8060CD -:10C190008003DF4880023A1AEBCD40C0205D109743 -:10C1A000581BC130582BC0402FBDE3CD80C0310B90 -:10C1B0001A98F01F00091A961A9B0E9C310AF01F5C -:10C1C00000072FBDE3CD80C0310BF01F00052FBD50 -:10C1D000E3CD80C08002B230800091DC80028EF816 -:10C1E000D431201DFACEFFD81894500B149012961B -:10C1F00010917C237C077C12306A49AB129CF01FA3 -:10C20000001AC1D05803C0800698009B400C0499C6 -:10C210000E9AF01F00160C9BE8F501280498F5D142 -:10C22000C0100E996A0C6AA65D16E8FC0104F01FA6 -:10C2300000100E9CF01F000F2FFDD832E8C5FEB88D -:10C24000306A488B0A9CF01F0008CDD1E8F801281D -:10C250000A9B700C70995D19EA061740CD4B0000DF -:10C260008002B41C8000917C8002C19880025582BB -:10C27000800091E8EBCD40E0189716961495F8F8F9 -:10C2800001685848E0800081E08A00495888C780EA -:10C290005908C4F04C19EEF801645848C480584855 -:10C2A000E089004A5818C6605828C6604BB81AD9A9 -:10C2B0001AD8EEFA01280DD81AD80DC91AD90DB816 -:10C2C0001AD80DA91AD90D981AD80D89302B1AD958 -:10C2D000740C4B3AF01F0033EEF801282F8D700BD1 -:10C2E000707C300AF01F0030EEF90128720C72C821 -:10C2F0005D18EEF90128307B720C72185D18580534 -:10C30000C201EEFC010C580CC07079485808F9B80D -:10C310000100F9F81A14E3CD80E05818C33058280A -:10C32000CBA14A29EEF801645848CBA14A08CC0BAE -:10C330004A09CB2B5888C2205908CB9149D8CB8BBE -:10C34000EEF801280C9B700C71263019303A5D16FE -:10C35000301BEEFC0104F01F0018EEF8016C5828A9 -:10C36000C15030080E99495A109B301CF01F001420 -:10C37000CC9B4948C9DB48D8C9BB4938C99B492926 -:10C38000C8BB4909C89B48A9C87B301BEEFC010407 -:10C39000F01F000ECE7B00008003C6288003DF74F0 -:10C3A00080023A1A800274008003DF088003DF10E5 -:10C3B00080039A74800261D48002C0D080027474B9 -:10C3C0008003C8E480039A6C800261A4D431FACD62 -:10C3D00000DC1897169314951296E0490062E08BE2 -:10C3E000000630060C9C2C9DD832129CF01F034492 -:10C3F0001892E08000D60C9A0A9BF01F034205A910 -:10C4000005B8F1E910880599F5D8B0103038F00971 -:10C410001800C0603006049CF01F033BCE4BECC8F4 -:10C420000004EBDAC01030090A385F3AE045005EDC -:10C430005F88F5E8100CF20C1800CED13FE8E4C19B -:10C44000FFFC038AF00A18005F1B3028F00A18006E -:10C450005F19F7E90004F8041800CDD1EEFC0104DF -:10C46000F01F032A039903A8F1E91088EDD8B01052 -:10C47000FDD6C003506E1C9930182019F009190020 -:10C48000E08800043FF6CC8BEEF8016459085F0A9F -:10C490003028F00E19005F19126AE80A1800C080EF -:10C4A000EEF801685908CEF0EDB60003CEC0EEF804 -:10C4B00000F85808E08100ABE1D6C0100098E218FF -:10C4C0002080CE10009AE21A0800502ACDC12FC554 -:10C4D00000995055E21901005039C641405AE339DC -:10C4E000005DE338005E263AF1E91088F7D8B01015 -:10C4F000E9DBC010083AE0830598EEF9016058299D -:10C50000E0800550EDB00003E0810333E21000301D -:10C51000CBA140395809E08001CAEEF90128305B0F -:10C52000720C72185D18039903A8F1E91088E339B9 -:10C53000005DEBD8B010E33B005EFACAFF50F7E9AC -:10C54000108BE2CCFFA1F01F02F243185808C04044 -:10C55000EDB5000CC231EEC3FEB8EEF60134EEF8D4 -:10C56000017C5808E08004E742C95809E08004C80B -:10C57000EEFB017C580BC79042DAEEF80184103ACA -:10C58000C70042FE42EC1ADE14981ADC069A0E9C92 -:10C59000FEFB0B80F01F02E02FED3016C3DB3FF6F1 -:10C5A000C22BE2C6FFB3FAC4FF84310A0C9B089C7D -:10C5B000F01F02D440685C785048EEF800A8580894 -:10C5C000C301EEF800A45808FE90FF5E310A300B5C -:10C5D0000C9CF01F02D2049A404BEECCFFDC0C986E -:10C5E0004059F01F02CF0C9B089C310AF01F02CD6E -:10C5F000FE91FF4A308AE2CBFFFBEECCFF10F01F2A -:10C6000002C13018EF4800F8C6AB308AEECBFF10FD -:10C61000E2CCFFFBF01F02C3FE99FF503FF6CFCAEA -:10C62000402B310A0C9CF01F02BD049A404B0C9821 -:10C630004059EEC5FF9C0A9CF01F02B9310A0C9BC1 -:10C64000089CF01F02B8CBE13018EF4C00A80A9B01 -:10C65000EF4800A4340AEECCFFDCF01F02AACCBBEA -:10C66000129CF01F02B0C10142EC580CC160EEFBFD -:10C670000180580BC12042FEEEF80188103EC090A8 -:10C6800042C942DAC81B42FE42C942EC42DAC7CB79 -:10C690001C9AF01F02A4CF81EEF801605818E080C8 -:10C6A00000E6320AE2CBFFF3EECCFF34F01F029D2E -:10C6B000FE91FF7503B903C8F1E91088F3D8B010F3 -:10C6C000EEF801645888E08000CC5908E08000CA88 -:10C6D000EEF80128FAC9FF2C1AD970D6700C35F97A -:10C6E000FAC8FF24300A303B5D162FFD1896580C0F -:10C6F000FE90FF55EEF80160E06900FE5828F20850 -:10C700001710435AB48840680A99E2190200F1E907 -:10C7100010094358E8190108F20B1608B09B435A58 -:10C72000B4A9EEF801605828E0810093300843591D -:10C73000B2B8435AB4C8435C308AE2CBFFFB2FBC8B -:10C74000F01F02704358300AF16A005D4359F36AE2 -:10C75000005E4358406A2B381AD84379E068888EC7 -:10C760001AD9EECBFFDC1AD606990E9CF01F026E8A -:10C770003018EF4800EC5C752FDDEDB50006C0F118 -:10C78000FEFA09A8F4E80000FAE9007CEEF801647A -:10C790005888E08003F65908E08003D90A90E21037 -:10C7A0000200C0E0EEFA01283019740C069B7528CF -:10C7B000129A5D18301BEEFC0104F01F025DEEF8CA -:10C7C0000128306B700C70195D1943165806FE90E5 -:10C7D000FEE64328FAC4FF84F0C50002334A300B5A -:10C7E000089CF01F024EE0450020FE9BFED80D88FD -:10C7F000F1D8C00252280D89F3D9C041C050EEF8DB -:10C80000016458185F095209ECCBFFFE0A9AFACC72 -:10C81000FF74F01F023C0A9A52B50898FAC9FF7CCF -:10C820000A9BEEFC0168F01F0243FE91FEB8E2CACB -:10C83000FFC3089B0E9CF01F0240FE91FEB0009AC1 -:10C84000069B0E9C3016F01F023DFE9FFDE6435CEA -:10C85000302AE2CBFFFD2FDCF01F022AC6DB3208B4 -:10C86000F0091900FE91FE9BC34B42EB580BFE9062 -:10C87000FF1A58065F1AEEF9018058095F0814681C -:10C88000FE90FF116D68EDB80001FE91FF0C42F8BB -:10C89000069A1AD80E9C1ADBFEFB08A442F842E95D -:10C8A000F01F021D2FEDFE9FFE7AEEF90128720C9B -:10C8B00072885D18FE90FE73EEF80128305B700CF4 -:10C8C00070195D19403BFAC6FF50324A0C9CF01FAC -:10C8D0000213EEF801605828C0C1E338005DE33B65 -:10C8E000005E0C9AF7E8108BE2CCFFA1F01F020863 -:10C8F00043065806C0E0EEFC010C580CE08003D162 -:10C90000F8CBFFFC310A0C9CF01F0206E08003C04C -:10C910003005EEF8016C5818E08000D45805C0606E -:10C92000EEFB016C581BE080029BEEF800EC58080F -:10C93000E08102B5EEC8FF545008EECAFEB8EEC959 -:10C94000FF9CE2C8FFF3508AEEC6FEC850A950987B -:10C95000306A6E85408B0C9CF01F01F2E08500FB75 -:10C96000306A408BFAC0FFD0009CF01F01E60C9BA0 -:10C97000306AFACCFFCAF01F01E3320A409B400C38 -:10C98000F01F01E8E08500D0320A409BFACCFFC4DA -:10C99000F01F01DC320A400BFACCFFA4F01F01D9D2 -:10C9A000340E1ADE40BE00991ADE34C80A9BFEFA25 -:10C9B00007920E9CF01F01E4EEC5FF6CFAC3FF7CEA -:10C9C0000A9B308A069CF01F01CF0A9CEEC6FF64CA -:10C9D000308A0C9BF01F01CB069B0C9C308AF01F09 -:10C9E00001C93018EF4800A82FEDEEF50178EEF000 -:10C9F00001745800FE90FDD3EEFA0128FAC8FF2812 -:10CA0000E9D5B0101AD8E8C9FFA1740C74D6FAC8D9 -:10CA1000FF285C79300A303B5D162FFD1893580CC7 -:10CA2000FE90FDBDEEF80160E06900FE5828F208B6 -:10CA30001710436AB48843683019B0994066436858 -:10CA40005C760C9AA3BAB0AAEEF901605829C631F7 -:10CA500030084369B2B8436AB4C8436CE2CBFFFB09 -:10CA6000308A2FBCF01F01A74368F3D4C108F169D5 -:10CA7000005D43680A9AF165005E009B436C2A1CC6 -:10CA8000F01F01A0400B436C320A2F3CF01F019DA8 -:10CA9000408940AB43682B381AD8436C0C9A1ADC97 -:10CAA000E068888E1AD30E9CF01F019F40CBEECC1D -:10CAB000FF34320A3016F01F01932FDDFE9FFCADCC -:10CAC000EEFC0104580CFE90FF2B320A0E9BF01F67 -:10CAD000019FC361320A8F8AEEF8013406991AD891 -:10CAE0000E9BEEC8FEC8EEFC0108F01F0199580627 -:10CAF0005F1AEEF9010C2FFD58095F081468FE90CB -:10CB0000FF0F0C9A069BEEFC0108F01F0192FE91AC -:10CB1000FF0EC05B436C302AE2CBFFFD2FDCF01F21 -:10CB20000179C9CB400B320AFACCFFC4F01F017562 -:10CB3000320A409BFACCFFA4F01F0172C32B310ACA -:10CB40000E9BEEFC0104F01F0181E08101B4310A6B -:10CB5000CC3B0C9BFAC0FFD0306A009CF01F0169EF -:10CB6000306A408BFACCFFCAF01F0166C07B009B85 -:10CB7000E21B2000FE91FD13403A580AFE90FD0F83 -:10CB8000334AFAC0FFD0009CF01F0164EEF901287F -:10CB90007228720C5D1850BC039903A8F1E9108843 -:10CBA000E339005DE7D8B010E338005EF1E91088A2 -:10CBB000EEF90160F7D8B0105829E080011303B9ED -:10CBC00003C8F1E910895189EBDBC0100A34E08316 -:10CBD00000CB3028406EF00E1900E08001D80A9694 -:10CBE000129B0098FAC9FFC80C9AEEFC0168F01F6E -:10CBF0000151E08100B9F5D3C010F1DAC082501ABA -:10CC000050F830194068F2081900E08000C7302859 -:10CC1000406EF00E1900E08000A4401AF1DAC0C1A5 -:10CC2000C050EEF8016458185F0850D8EEF801289B -:10CC3000306B700C70195D19009BE2CAFFC30E9C2B -:10CC4000F01F013D1895FE91FCAAEEF80128FAC9E3 -:10CC5000FF2C0A9A1AD9303B700C70D635F9FAC8F5 -:10CC6000FF245D162FFD1894580CFE90FC98EEF8EA -:10CC70000160E06900FE5828F20817104066435A28 -:10CC80005C76B488E21300304358E8130300E7E60B -:10CC9000100CF80B1608B09B4359B2ACEEF80160CB -:10CCA0005828E08102234358B0B54359B2C5435CCC -:10CCB000E2CBFFFB308A2FBCF01F01124358300A31 -:10CCC000F16A005D4359F36A005E43582B381AD865 -:10CCD00043790C9A1AD9EEC6FEB81AD40C99E068BA -:10CCE000888EEECBFFDC0E9CF01F010F2FDD40B9CC -:10CCF0005879E08101F1EEF801685848E08001E6DA -:10CD0000E08901DC5818E080014B5828E08001469A -:10CD1000FEF804441AD8EEFA0128EF38014D1AD86B -:10CD2000EF39014C1AD9EF38014B1AD8EF39014AC3 -:10CD30001AD9EF3801491AD8EF390148302B1AD9DE -:10CD4000740CFEFA0416F01F0106EEF80128307B81 -:10CD5000700C701930165D192F9DFE9FFB5EF1D58A -:10CD6000C003C0A0EEF80128306B700C70193016AB -:10CD70005D19FE9FFB52E0460020FE9BFFF5EC0B89 -:10CD80001603FAC9FFC0E2CAFFA1EECCFFCCF01F28 -:10CD900000F5FE90FF44CE7B310AE2CBFFD3FAC40C -:10CDA000FF84089CF01F00D7310AEECBFFCCFACCF1 -:10CDB000FF74F01F00D4E0450020FE9BFFD5FAC6AB -:10CDC000FFC00A9AE2CBFFA10C9CF01F00CE0A988C -:10CDD0000C99089CE06A0100320BF01F00E3C1EBE4 -:10CDE0005C7BFACAFF50E2CCFFA1F01F00C94318D8 -:10CDF0005808CB90F3D3C0105019EDB9000CCB31CB -:10CE000043282028FAC9FFC8109A5188149B00981B -:10CE1000EEFC0168F01F00C7CA61431B1788F1D8F8 -:10CE2000C00250F81789F3D9C041C050EEF8016430 -:10CE300058185F0950D94328F0CA0002E04A002080 -:10CE4000FE9BFF922FEBFACCFFC0F01F00AEEEF975 -:10CE50000128306B720C72185D18CEFAEEF80128BA -:10CE600030091AD9129A700C70D6FAC8FF285D16CC -:10CE70002FFD1893580CFE90FB92EEF5012818999F -:10CE8000EECBFEB84358E06A888E6A0C6AA65D163F -:10CE9000069CF01F009DFE9FFB82EECEFF54320BDE -:10CEA000500E1C9CF01F00B1C1F1EF4C00ECFE9F36 -:10CEB000FD46EEF80128FEFA02B6700C303BF01F7A -:10CEC00000A8EEF80128FEFA02AA700C303BF01F11 -:10CED00000A4EEF8010C5808FE90FB613008EF4802 -:10CEE000010CFE9FFD1FEEF80128FEFA028A700C6D -:10CEF000303B3016F01F009AFE9FFA8F42EC580C20 -:10CF0000FE91FBB7EEF8017C5808C061EEF8018095 -:10CF10005808FE90FBC342F830091AD8069A1AD96D -:10CF20000E9C42F8FEFB0254F01F007B2FEDFE9F8B -:10CF3000FB36EEF801805808FE91FB18EEF9012847 -:10CF4000720C72B85D18FE9FFB111099303BEEF821 -:10CF500001605828C180E2CCFFC31AD9EEC8FFBCDB -:10CF6000EEFA012830691AD830181AD930091ADCBB -:10CF7000740C7466069A5D162FCDFE9FFC11302B43 -:10CF80003209CE6BFACCFF84CE9B5875FE98FEEC2E -:10CF9000EAC60008FE9FFE264F98CBDA4F98CBBA20 -:10CFA000EDB0000CFE91FAB0EEF800A45808FE9027 -:10CFB000FA6B3018406EF00E1900C490406AF20A05 -:10CFC0001900FE91FAA1F1D4C003FE91FA5DF6C8F2 -:10CFD00000085C88109550785C750A9CF01F00482A -:10CFE0001896FE90FA51E2C4FFA11899089AEA0B2C -:10CFF0001603EECCFFCCF01F005BC2310A9A0C9BEB -:10D00000089CF01F00400C9CF01F003F4078EA098C -:10D0100016085C58E369005DE368005E5C59F1E95D -:10D020001084FE9FFA711ADA1AD4EEF801284D6ABC -:10D03000700C302B3FF6F01F004A2FEDFE9FF9EDEC -:10D040000C9C3FF6F01F0030FE9FF9E7FAC6FF8404 -:10D05000310AE2CBFFD30C9CF01F002A310AEECB41 -:10D06000FFCCFACCFF74F01F00270898E2C9FFA19B -:10D070000C9CE06A0100320BF01F003BE339005DBD -:10D08000E338005EF1E91084FE9FFA3E0E9CF01F2B -:10D09000003FEEFC0104F01F003EFE9FFC480C9A8E -:10D0A000069BEEFC0108F01F002BEF4C010CFE91DB -:10D0B000FC293015FE9FFC2F5888C0A05908FE910E -:10D0C000FE294B48FE9FFE284B38FE9FFE254B381D -:10D0D000FE9FFE22401A0C9BE21A02000E9C3016A4 -:10D0E000F01F0016FE9FF999435C302AE2CBFFFD4A -:10D0F0002FDCF01F0004FE9FFDDC0000800092008A -:10D10000800091DC800091E88002575C8002BB08BF -:10D110008003E0488002C140800091D08002C19825 -:10D120008000917C8002C1E08003E1DC800261D458 -:10D130008002B4248002B9308002C2748003E0848B -:10D140008003E1788002B354800257CC8002914C76 -:10D1500080028FB08003C6288003E19080023A1AD3 -:10D160008002D8A080029B4080028F488003E0F0BC -:10D170008003E1308003E14C8003E0048003DF089A -:10D180008003C8E48003DFC88002B9EC80025770D6 -:10D1900080039A748003DF1080039A6CD431204D91 -:10D1A0001894F8F80128E8F9016416955909F9B3BB -:10D1B0000002F9B301011492700C1A9070991A9B35 -:10D1C0005D19C635E8F80128FAC9FFF8300A1AD9FE -:10D1D000303B700C70D635F9FAC8FFF05D162FFDA4 -:10D1E0001891580CC520E8F80160E06900FE402A5B -:10D1F0005828F2081710B4880697E8F800A4ABB7CF -:10D200005808C050E0680900E7E810075805E068D2 -:10D210000400EFD8E1375802F9B80108EFD8E13738 -:10D220004028F3D7C108B09940283006B0A740295C -:10D23000B2B64028308AB0C6E8C5FF04402C0A9B2D -:10D240002FBCF01F00130A9C308BF01F00124028E7 -:10D25000F166005D4029F366005E0E99E219010057 -:10D26000FBF81002F9BA014DF1DAE1091AD9404888 -:10D2700000991AD8069A1AD1089CE068888EE8CBE3 -:10D28000FFDCF01F00052FDD2FCDD832800091DCB0 -:10D29000800239EA8002C1E0EBCD40804879720813 -:10D2A000201893081897C031F01F00050E9CF01F3E -:10D2B0000005E3CD8080000000007AB48002D2F83F -:10D2C000800091E8EBCD40C048976E065806C041FB -:10D2D000F01F0008C0916E082FF8304C8F08F01F27 -:10D2E0000006E3CD80C00C9CE3CD80C000007AB482 -:10D2F0008002D30480028F24D401F01F0002D802E0 -:10D300008002D996D401F01F0002D8028002D9947D -:10D31000D4211789179A17B8F1E9118817A9F1EAEA -:10D320001108F1E91088990817CA17D8B168F1EA0D -:10D33000118817EA17F91258F1EA10889918F73A84 -:10D340000008F739000BF7380009B168F1EA1188D5 -:10D35000F73A000A1258F1EA10889928189EF73A0D -:10D36000000CF738000DF739000FF8C5FFE4B1687D -:10D37000F73C000EF1EA11883007125849B4F1EC7D -:10D38000108C49B69D3CC038149C2F05E80707084F -:10D390002F0EFCF9FFF0F3E82189EC0C0F88E2185E -:10D3A000FF001059EC0C0F98E61800FF1059EC0C18 -:10D3B0000FB8F1D8C1081059FCF8FFF4EC0C0FAB12 -:10D3C000A96BE61BFF0016599D091059FCF8FFF8E0 -:10D3D0009D1910599D29FCF8FFFCF3E8200A8B0ADF -:10D3E0002FF758A7CD21D8228003E2F08003E6FC76 -:10D3F000EBCD40FE1892F01F002F0493E4CBFF60AA -:10D40000E4C4FFFCE4C5FF5CE4C6FFF8E4C7FF58D2 -:10D41000E4CEFFF4E4CCFF54E4C1FFB06609760823 -:10D4200087089709680A6A0889088B0A6E086C09D8 -:10D430008D088F097C0A78089D08990A2F03210B13 -:10D440002F0421052F0621072F0E210C023BCE7140 -:10D45000E4C4FFF030134985498608972F046E0A0B -:10D46000EC0A0F98EA080F9EEC0A0F88EA080F9C56 -:10D47000EC0A0FB8EA080F9BEC0A0FA8F809150888 -:10D48000FC0A1510F3EC1389F5EE130A1659EA0895 -:10D490000F9BF6081518F1EB1288105914590EA9B4 -:10D4A0000E34CDE12FF358A3CD91E3CD80FE0000E3 -:10D4B0008002D3108003E2FC8003E6FCD431209D7F -:10D4C000F736000E505A178A780917B8F1EA118812 -:10D4D000179A1258F1EA210817AEF1EE208E506E1D -:10D4E000781817CA17F9105917D8F3EA2189F3E801 -:10D4F000210917EEF3EE208E507E7828F7390008C8 -:10D50000F73A000B105AF7380009F5E9218AF73984 -:10D51000000AF5E8210AF5E920827839F73A000C8B -:10D52000F738000FFEF7034412581894F1EA2188E7 -:10D53000F739000DF8CAFF60F1E92108500AF1E659 -:10D5400020800E91E0081618406AEE080326F3DAF0 -:10D55000C008F1D2C208EE090329EE080328504999 -:10D560005038407AEE0A0F9950296878684B105667 -:10D570004068EE000FACEE080FBA4079165AEE097B -:10D580000F8BF6081508F1EB1388F8091518105AD7 -:10D59000F3EC1289EE020F9C125AF8081510F1EC08 -:10D5A0001308F5E82008685E68654079EE090FBB4E -:10D5B00050884068EE020F8C1C5BEE080FAEF80836 -:10D5C0001508F1EC1388EE000F9A105BFC09151892 -:10D5D000F4081510F3EE1289F1EA1308125B407992 -:10D5E000F7E82003EE000F8BF6081508F1EB13881F -:10D5F000EE020FBCEE090FAE0A5CFC091518105CB8 -:10D60000F3EE12894068125CEE080F9B404A4048D6 -:10D61000F6091510A968F3EB1309F1EA1388F9E983 -:10D620002000105640394038B968F1E912882E04BC -:10D63000105640294028B169400AF3E81309EDE982 -:10D6400020021434C770E4081618408AF3DAC008C0 -:10D65000E208032EE2090326F1D0C208E2030F9983 -:10D66000E20803255019E2020FACE2030F8B6809B0 -:10D67000F6081508F1EB1388E20A0FBA125AF809F6 -:10D680001518105AF3EC1289E2000F9C125AF80890 -:10D690001510F1EC1308F5E82008E2030FBB506801 -:10D6A00040886819E2000F8AE2080FAC125BF408A8 -:10D6B0001508F8091518F1EA1388F3EC1289E2004D -:10D6C0000FBAE2020F9C105BF8081510125BF1EC28 -:10D6D0001308F7E8200850786829E2030FAC125AC3 -:10D6E000F8091518F3EC1289E2020F8BF6081508F9 -:10D6F000F1EB1388105A125A4089E2090F9B6839DE -:10D70000F6081510F1EB1308125EF5E82002EC099B -:10D710001508EA081518F3E61389F1E51288125E78 -:10D720004019105EB1694018F3E81309FDE92000C3 -:10D73000C0AB4089F1D3C1084CDBFDD9C008F60865 -:10D740000706E40A1618EBD0C208F60A0709F60520 -:10D750000708F60E070CF9E9118CF3D3C008F9E8B5 -:10D76000110C4088B988F608070AF6090708F3D2B1 -:10D77000C208F1EA1188F609070AF3D0C108680E59 -:10D78000F1EA1108F609070AF1EA10881C58F009B5 -:10D790001618405AB4B8B4894059F00A1610A9882E -:10D7A000B29AB2A8E6091618F609070AF3D0C0081B -:10D7B000F6090708F1EA1188408AF3DAC208F60987 -:10D7C000070AF3D2C108F1EA1108F609070A40591D -:10D7D000681EF1EA10881C58B2F8F0091618405A71 -:10D7E000B4C94059F00A1610A988B2DAB2E8E009C3 -:10D7F0001618F609070AF3D2C008F6090708F3D38A -:10D80000C208F1EA1188F609070AF1EA1108408A0C -:10D81000F3DAC108F609070A4059682EF1EA1088C0 -:10D820001C58F368000BF0091618405AF5690008F7 -:10D830004059F00A1610A988F36A0009F368000A33 -:10D840006839405AF9E6108C125CF8081618F80985 -:10D850001610F56C000FF568000CA98CF569000D29 -:10D86000F56C000E2F7DD8328003E2FC8003E1F0DE -:10D87000EBCD40C01897590BC030E3CF80C0E06CAF -:10D8800000B0F01F00061896CF900E9BF01F00040A -:10D890000C9CE3CD80C00000800092008002D3F099 -:10D8A000D431209D129714961895500B308A0C9BFA -:10D8B000FAC2FFE4049CF01F0034ECCBFFF8400AEE -:10D8C0000E9CA37AF01F00300A9C310BF01F002F32 -:10D8D0001893C57040082018EE08003840095028F9 -:10D8E0005C39400A5C59F40A00285019E9D8C0088C -:10D8F0003050FAC7FFF4FAC1FFEC40095809E08A3A -:10D90000002940251296308A049B0E9CF01F001EB1 -:10D91000FB390013E806000812580A9BFB68001345 -:10D92000308A029CF01F00180E9A0E9B069CF01F76 -:10D930000018308A0E9B049CF01F001320160A9CCE -:10D94000308A2085029BF01F00105806FE99FFDDEB -:10D95000401A2010E80A0008E9D8C0085BF0CCE1C2 -:10D96000069CF01F000C049C3A691988F208180004 -:10D97000C0812FFCFAC8FFDC103CCF812F7DD83A44 -:10D980002F7DDC3A800091DC8002D8708002D4BC0C -:10D99000800091E85EFD5EFCD4311A97202D109E28 -:10D9A000129514965809C4911638E0880057F0086B -:10D9B0001200C0D0F608094BF0091120FC08094EEE -:10D9C000F4090A49F4080946F3EB100BFC0516109C -:10D9D000F9DEC010F6050D0AEC0816101499F1EBEB -:10D9E0001108B93A103AE088000C20191C08103EC2 -:10D9F000E08B0007103AF7B90B01F1DEEB08F00AF3 -:10DA0000010BEDD6C010F6050D0AEDEB11061498CA -:10DA1000F40C024C0C3CE088000A20181C060C3E5A -:10DA2000E08B00050C3CF7B80B01F1E9110B300C51 -:10DA3000169A189B2FEDD8321639E08B0051F20C54 -:10DA40001200C53114385F8916355F381049F8095E -:10DA50001800C450301BC4585808C0513019F2087F -:10DA60000D08109EFC081200E08100911C1BFC05B3 -:10DA70001610F3DEC010301CF6050D0AEC08161067 -:10DA8000F4090243F1EB1108149B1033E088000CF9 -:10DA9000201B1C08103EE08B00071033F7BB0B0166 -:10DAA000F1DEEB08F0030103EDD6C010E6050D0230 -:10DAB000EDE311060498E40902490C39E088000AF4 -:10DAC00020181C060C3EE08B00050C39F7B80B0142 -:10DAD000F1EB110B169A189B2FEDD832300B169CD8 -:10DAE000169A189B2FEDD832F20C0945F80E11202A -:10DAF000F00C0943F40E0A46F00E0A48F60E0A4EE0 -:10DB00000A48F0011610FC010D04EEE5FFF8F60CD2 -:10DB10000949EBD8C010EDE910090896F20E16106D -:10DB2000EEF4FFF8EC05024BFDE4110E1C3BE0881F -:10DB300000072016100E1C38E088006D161EF3D961 -:10DB4000C010FC010D00F3E11109009BE005024E3D -:10DB5000123EE0880007201B10091238E0880055AB -:10DB6000F7E6110B1C19F60306420639C0935F094C -:10DB7000F40C094C043C5F38F3E80008C020201B7B -:10DB8000300C169A189B2FEDD832F6080949FC087C -:10DB9000094EF0011120FC051610F4010A42F601AD -:10DBA0000A411242E2050D00F3DEC010E406161031 -:10DBB0000093EDE11106E009024C0C3CE0880007FF -:10DBC00020131C060C3EE088002CEC0C0101F7D25F -:10DBD000C010E2050D00F7E1110B009CE0090241C5 -:10DBE0001631E088000C201C1C0B163EE08B000751 -:10DBF0001631F7BC0B01F7DEEB0BF4080946021BEC -:10DC0000F9E3110CC3AB123EF3D8EB09F7BB0B01E0 -:10DC1000CA8B1C3BF7B60B01FDD8EB0EC90B0C3CB5 -:10DC2000F7B30B01EDDEEB06CD1BD703D40130AA11 -:10DC3000300BF01F0002D8028002F0ECD4014848FB -:10DC4000169A189B700CF01F0003D802000005986C -:10DC50008002DC54D421F40B024BF01F00151897FE -:10DC6000C230F8FAFFFCE01AFFFC204AE04A002428 -:10DC7000E08B00181898593AE088000F300910A975 -:10DC800010A959BAE088000910A910A9E04A002497 -:10DC9000C03110A910A9300910A991199109C048E3 -:10DCA000300BF01F00040E9CD82200008002E2BC62 -:10DCB0008002E8BCD421300EF6C80001F60614013B -:10DCC000F808002818991897C07870046E050EA4FB -:10DCD00091052FFE20480C3ECF95F40B000B1897B2 -:10DCE000F6C80001300EF8080028A15BC078700566 -:10DCF0006E060EA591062FFE2048163ECF95F4C85D -:10DD00000001A15AF808002C3008C078780E720B78 -:10DD100012AE990B2FF8204C1438CF95D822D70388 -:10DD2000D431205D502C503816971496580C5F0B48 -:10DD300058075F0C1295F9EB100B40E33008F00B1D -:10DD40001800E081028058095F09580A5F08F3E86B -:10DD50000008F6081800E08102764BE4402B6808C2 -:10DD60001638E0840270EE08032C580CE080026B39 -:10DD70004B9BF01F003AC06168082FF88908E08FBC -:10DD8000026268085808C05130184B598908930836 -:10DD90005806C14032D90D88F20818005F0232B926 -:10DDA000F20818005F08E5E81008C0805802F9B2D0 -:10DDB0000101F9B200022FF6C0884AACF01F002A18 -:10DDC000F9B20102F9B200004A5870085818C61199 -:10DDD0005812C2B049F95822C4A0129872043001F6 -:10DDE00032DB32BA7009F2C0FFFFEE09032C580C87 -:10DDF000E080023B1989F6091800C0805803E080D2 -:10DE00000225F4091800E081022150015014492B29 -:10DE1000F01F0012C411EE04002C029B301A2FF4E4 -:10DE2000F01F0012E08F022148A87009EE090328B4 -:10DE30005808C2F0118A32DBF60A1800C2A0580353 -:10DE4000E080020832BBF60A1800E0810203C21823 -:10DE500000007AB88003EC008002ECC800007ABCB5 -:10DE60008003EC04800326948002DCB47208EE0880 -:10DE700003285808C0E0118832D9F2081800C09071 -:10DE80005803E08001E032B9F2081800E08101DBBC -:10DE90003009500950195805E08000A44BE4680887 -:10DEA000302AEE08032C4BDBF01F003DC0D0580396 -:10DEB000E08000986808EE080328118932B8F0095C -:10DEC0001800E081008F4B7468085818E081008AC0 -:10DED0004B187008302AEE08032C4B0BF01F003053 -:10DEE000F9B80002E9F80A004AB468084AD1EE0815 -:10DEF000032C620833DB100CF01F002B1893C0E1D9 -:10DF00006808EE08032CF01F002968096208EE0972 -:10DF10000323F80801081803C08868086209EE089E -:10DF20000328F8080108121850430A910C933FF493 -:10DF300030001096C4784989720849A9EE08032C6C -:10DF400072080C9A100CF01F0016C3A1620CF01F8F -:10DF500000171836C051069600944043C3C85BF4BE -:10DF6000C2E0493870085808C7C062081AD848A8E3 -:10DF700070096E08EE090329A564EA04030A1ADA97 -:10DF80001AD91AD848B8700848BB702CF01F000B7B -:10DF90002FCDC67800007AB88003EC008002E7102D -:10DFA00000007ABC8002ECAC8002EDD0000004A43A -:10DFB000000005988003EC1480031FE800942FF004 -:10DFC0002F01620B580BCB81069640435BF4C031A6 -:10DFD0000898C0A8E8081504EA0800087018C048A6 -:10DFE0003FF83003109458065F19F3E403F9C03189 -:10DFF0003006C5484BE162084BE3EE08032966088A -:10E000000C9CF208070BF01F003C1896C2D14BB8CD -:10E0100070085808C11062096608EE090329F20861 -:10E0200007081AD86E081AD84B5870084B5B702C2A -:10E03000F01F00352FED4AF8700B2FFB910B4AC9EA -:10E04000720AEE0A032CF80B070C300BF60C1800C2 -:10E05000F7BA00FFF3FA0A00F9B90001F1F90A0072 -:10E0600033F8109CC818199833A9F2081800C0306A -:10E070003008C08819A9F0091800F9B80002F9B8E9 -:10E08000010149CA49A97209EE09032974030D8ADD -:10E090002FF3F203000349D9930A5818C1505828A6 -:10E0A000C0405808C6C0C208078933D8F009180014 -:10E0B000F7B300FF4968078A3009F20A1800C10166 -:10E0C00030069106C718078933D8F0091800F7B34E -:10E0D00000FF30080789F0091800C1B048C8910353 -:10E0E0003019484891093006C5F8000000007AB898 -:10E0F00000007ABC8002ECAC000004A4000005988B -:10E100008003EC5080031FE8000004A000007AC0E8 -:10E110004C08402B70082FF81638C2954BE8700851 -:10E120005808C1C06E084BD71AD86E084BCB702C5C -:10E13000F01F003C2FFD5BF4C0906E08A5644BAB54 -:10E14000EA0403091AD9702CC0686E080D894B7B4C -:10E150001AD9702CF01F00332FFD4AE933A8720A38 -:10E16000109C2FFA930A4B299308C6D84B19EE0836 -:10E17000032A3018930A10964AF9C1584AE95BF409 -:10E18000C0D1720A2FFA930A4A2B760BEE0B032B9F -:10E19000F60A070AF00A1800C03130189308300850 -:10E1A0004A49109693085802C1B140094A285809B3 -:10E1B0005F19700858185F08F3E80008E4081800B1 -:10E1C000C0F04018ECCAFFFFEE08002C400BF01F17 -:10E1D000001B40182FF8F006000648E8C0A8496860 -:10E1E00070085818C07148B870092FF9F206000677 -:10E1F00091065BF4C240403B580BF7F41A00A5644B -:10E2000008056A3C6A285808C1E0910C300CC1B876 -:10E2100000007AB8000004A4000005988003EC70A8 -:10E2200080031FE88003EC948003EC9C000004A0B2 -:10E2300000007AC000007ABC8002DCB448C8700CD0 -:10E24000C0283FFC2FBDD83291002FF1FE9FFDCC9E -:10E25000488B97084888F2CAFFFF3019910A129C30 -:10E2600048389109CF0B48489104CECB000004A058 -:10E2700000007AC000007AB8D40130091AD9129887 -:10E28000F01F00022FFDD8028002DD20D401484893 -:10E29000189B700CF01F0003D802000000000598C6 -:10E2A0008003217CD4014848189B700CF01F0003A8 -:10E2B000D8020000000005988002E2BCD431F6C705 -:10E2C000FFF518955967F9B70810F9B80BF8EFD8AA -:10E2D000EB2716375F38F1E713F8C05030C899388C -:10E2E000E08F01F4F01F0050E04701F7E08B001CC5 -:10E2F000EE0316034CD8F003003870361036C061B8 -:10E30000ECC8FFF870361036C0C06C18E018FFFC7F -:10E310006C3AEC0800090A9C6C289528913AC4785C -:10E320002FE3C4D8EE081609C041EE031603C278E5 -:10E330005848E08B0006EE0316062C83C2085948A5 -:10E34000E08B0005F0C3FFA5C1A8E0480054E08BB6 -:10E350000006EE03160C2923C128E0480154E08B87 -:10E360000006EE03160F2893C0A8EE031612E0482D -:10E370000554E088000437E3C02828434ABAF40370 -:10E38000003A7436C1986C19E019FFFCF207010BD2 -:10E3900058FBE08A00042013C1186C38580BC0B534 -:10E3A0006C2AEC0900090A9C912A95387218A1A8D8 -:10E3B0009318CBD810961436CE712FF349BAF4CCFB -:10E3C000FFF878261836C6F06C19E019FFFCF20742 -:10E3D000010858F8E0890091993C992C5808C055DB -:10E3E000EC0900090A9CCE3BE04901FFE08B0013D9 -:10E3F000A399F4090038702B8D388D2B9736912610 -:10E40000A3497418301BF6090949F1E91009951957 -:10E41000C4A8F20816095848E08B000AF20A16064A -:10E420002C8AC2488002E8CA0000059C5948E08B4B -:10E430000005F0CAFFA5C1A8E0480054E08B000623 -:10E44000F20A160C292AC128E0480154E08B000684 -:10E45000F20A160F289AC0A8F20A1612E0480554CC -:10E46000E088000437EAC028284A4C8BF60A0034BA -:10E4700068280838C0E17619A34A301EFC0A094A08 -:10E48000F3EA100A1099971AC0A870280838C060DB -:10E49000701AE01AFFFC1439CF9370398D398D282A -:10E4A00091369326E6081402301B4B84F608094B7C -:10E4B0006818103BE08B006EF7E80009C0B1E0136C -:10E4C000FFFCA17B2FC3C0382FC3A17BF7E8000955 -:10E4D000CFC0E803003E06921C916236C2E86C1A77 -:10E4E000E01AFFFCF407010858F8E08A00156C3ABE -:10E4F0006C299529933A0E99EC070007A1A9993741 -:10E5000099278D19EE0809088F2C8F3CA1A80A9C29 -:10E510008F18C0D86C395808C0F5EC0A000A741876 -:10E52000A1A80A9C95186C2893289139F01F00180F -:10E53000ECCCFFF8D83212960236CD212FF2F1D270 -:10E54000C002C0302F81CCAB1C98F3D3C002C08175 -:10E550006819F60811FFF3E800088918C078F0C9B7 -:10E560000008201370081238CF10A17B6818103BE8 -:10E57000E08B0010580BC0D00493C0382FC3A17B90 -:10E58000F7E80009CA71CFBB0000059C8002E8CC07 -:10E5900068236612E012FFFC0E325F39E4070108BF -:10E5A00058F85FAAF5E91009E08000A24C887001D4 -:10E5B0004C882F0170080E015BF8C0402811E01153 -:10E5C000FF80029B0A9CF01F004418965BFCC6E08B -:10E5D000E6020008103CC0320833C6814BFA7409C9 -:10E5E000E209000995091036C0A1F5D6C007C0712F -:10E5F000E20200026828A1A29112C4C84B5A740B0F -:10E600005BFBC0319506C068EC0900094B3A101954 -:10E610009509F1D6C003F00911085808F20817103F -:10E62000EDD8E1062808EC0100010A9CE3D1C007FF -:10E63000F0010101029BF01F00284A885BFCEC0CF2 -:10E640001700F9B1000070090C1C8926020C120198 -:10E65000A1AC91018D1C0833C1D058F2E08B0005AC -:10E6600030188D18C238305920C2E012FFF8E60287 -:10E670000008912991196618F1D8C001E5E8100841 -:10E68000871858F2E0880007E6CBFFF80A9CF01FD5 -:10E6900000144949720A491870081438F3F8BA008E -:10E6A0004919720A1438F3F8BA0068287018E0188B -:10E6B000FFFC0E385F390E1858F85FAAF5E910090B -:10E6C000C1600A9CF01F0009D83A000000007ACC13 -:10E6D000000009A88002EBC800007AD08003217CEA -:10E6E00000007AC800007AC48002E8CC6826A1A89D -:10E6F0000E99A1A98D19EC0700070A9C89278F188C -:10E70000F01F0003ECCCFFF8D83200008002E8CC08 -:10E71000D4013008C0D8F808070EF6080709201AF7 -:10E720002FF8F20E1800C040FC09010CD802580A5C -:10E73000CF31149CD802588AC2F5F9EB1009E219BE -:10E740000003E0810097E04A0020C3B4F4081402FB -:10E75000F0091108FE09002F7669996976599959CF -:10E7600076499949763999397629992976199919E5 -:10E7700076099909F608002BF8080028E01A00032A -:10E78000F40A1104FE0A002F17A9B0A91799B0992D -:10E790001789B0895EFCF40A1109FE0A002F17F9E7 -:10E7A000B8F917E9B8E917D9B8D917C9B8C917B965 -:10E7B000B8B917A9B8A91799B8991789B8895EFC8B -:10E7C000EBCD40C01899220AB707B326B707B32686 -:10E7D000B707B326B707B326220ACF742F0AC0653E -:10E7E000B707B326B707B326210A5C3AFE0A003FF3 -:10E7F000D703D703F736000EF366000EF736000D89 -:10E80000F366000DF736000CF366000CF736000BCC -:10E81000F366000BF736000AF366000AF7360009C4 -:10E82000F3660009F7360008F3660008F7360007BC -:10E83000F3660007F7360006F3660006F7360005B4 -:10E84000F3660005F7360004F3660004F7360003AC -:10E85000F3660003F7360002F3660002F7360001A4 -:10E86000F3660001F7360000F3660000E3CD80C0D8 -:10E87000201AF60A0709F80A0B09CFB15EFCD40189 -:10E88000183BC192F60A0009123CC152F80A000B6B -:10E890003008C068F208070E201AF6080B0E201880 -:10E8A000580ACF91D802F6080709201AF8080B0970 -:10E8B0002FF8C0283008580ACF71D8021898C038ED -:10E8C00010CB201A580ACFD15EFC5EFC5EFCD70349 -:10E8D000D4014848169A189B700CF01F0003D80208 -:10E8E000000005988002E8E8D431201D16941892A3 -:10E8F000149B5804C051F01F005B1895C5B9500A0D -:10E90000F01F0059400BE8C10008F6C6FFF5621C75 -:10E910005966F9B60810F9B80BF8EDD8EB2616369B -:10E920005F38F1E613F8C05030C830058538C42987 -:10E930001890E010FFFC0C30E08401124CB8E200AB -:10E94000000970250A39C090721AA1CAF20A000A99 -:10E95000741AEDBA0000C220721AE01AFFFCF4002B -:10E9600000030A39C131ECC7FFF00E33C195E2064E -:10E9700000090C13A1A393139129049C6218089514 -:10E98000F1D8C00110468316C1390C33C0957228E6 -:10E990000297723993289139CE48300A1499EDBC08 -:10E9A0000000E080009D6207E20701076E1CE01C8A -:10E9B000FFFC5809C5E0F80000030A39C4811403BC -:10E9C000ECC9FFF01233C5556E3A6E299529933A7A -:10E9D000EEC5FFF8E0CA0004E04A0024E08B002501 -:10E9E0000A99593AE088001A09098B0909098F39EF -:10E9F000EEC9FFF059BAE0880011090B930B090921 -:10EA00008F59EEC9FFE8E04A0024C071090A930A51 -:10EA1000EEC9FFE0090A8F7A090A12AA680A930A66 -:10EA2000681A931AC0785008089B0A9CF01F0010BF -:10EA30004008EE0600090C13A1A393139129049C2E -:10EA40006E18F1D8C00110468F16CB2814030C3372 -:10EA5000C10572287239932891396E286E39C0F831 -:10EA60008002E2BC8002E8CA0000059C8002E87EC9 -:10EA7000F80000030C33C3356E396E2893289139A2 -:10EA8000E0CA0004EECCFFF8E04A0024E08B00244A -:10EA9000593AE088001A0908990809088F38EECC1D -:10EAA000FFF059BAE08800110908990809088F5841 -:10EAB000EECCFFE8E04A0024C07109089908EECCCA -:10EAC000FFE009088F78090818A8680899086818ED -:10EAD0009918C478089BF01F0039C438049CF01FB3 -:10EAE00000381895C3A06218F8C90008A1C8E20848 -:10EAF00000081039C07172130297E013FFFC000385 -:10EB0000C308E0CA0004E04A0024E08B0020089912 -:10EB10001898593AE0880014130B10AB130B10AB84 -:10EB200059BAE088000D130B10AB130B10ABE04A81 -:10EB30000024C051130A10AA130A10AA130A10AA1B -:10EB4000720A910A72199119C048089BF01F001BA4 -:10EB5000089B049CF01F001B049CC2A80093029712 -:10EB6000E60601096E1858F9E0880016F1D8C001D0 -:10EB7000EDE810088F181298A1A8EE06000BF60910 -:10EB8000000997187218A1A82F8B9318049CF01FE6 -:10EB9000000DC0B8F1D8C001E7E810088F18EE03E7 -:10EBA00000036618A1A88718049CEEC5FFF8F01FA3 -:10EBB00000060A9C2FFDD8328002E87E8002E2BC6B -:10EBC0008003217C8002E8CCD42130081897487655 -:10EBD000169C8D08F01F00065BFCC0516C0858089D -:10EBE000EFF81A03D822000000008CC48002F1E87C -:10EBF0005EFDD703D421217DE06802041697BA6830 -:10EC0000504C500CF01F000B3008512850D848A829 -:10EC100050983FF8BA784898505C501CFAC9FF9059 -:10EC20000E9A700C1A9BF01F00062E9DD822000031 -:10EC30008002EDD08002EBF00000059880030C4CC0 -:10EC4000D421217D4988FAC9FF9016977006580B88 -:10EC5000C064E068008B3FFC8D38C228580BF60872 -:10EC600017005807F9BB01FFEFDBE10850585028A7 -:10EC7000E0680208BA683FF8504C500CBA781A9B0A -:10EC80000C9CF01F000A5BFCC044E068008B8D38D0 -:10EC90005807F9B90100FBF81000F1F91E002E9D8C -:10ECA000D8220000000005988002F5685C5BC0284F -:10ECB0002FFC19885808C050F6081800CFA15EFC38 -:10ECC000580B5E0C5E1DD703F9EB100AE21A000325 -:10ECD000C341780A76095CEAC170123AC151781AC8 -:10ECE00076195CEAC110123AC0F1782A76295CEAFA -:10ECF000C0B0123AC091783A76395CEAC0502F0C15 -:10ED00002F0B123ACE70F9DAC308F7D9C3085E0C9C -:10ED1000161C5E1CF9DAC208F7D9C2085E0C161C74 -:10ED20005E1CF9DAC108F7D9C1085E0C161C5E1C1E -:10ED30005C5A5C59121A5EFA178A1989580A5E09D8 -:10ED400014195E19179A1999580A5E0914195E194F -:10ED500017AA19A9580A5E0914195E1917BA19B920 -:10ED6000580A5E0914195E192FCB2FCCCE6B000008 -:10ED70003008F6080709F8080B092FF85809CFA141 -:10ED80005EFCD703D4014848189B700CF01F0003A9 -:10ED9000D8020000000005988002ED9CD42118974D -:10EDA0001696169CF01F0008F8C5FFFF0E9C0A9BE4 -:10EDB000F01F00061897C0500A9A0C9BF01F000421 -:10EDC0000E9CD8228002EDD08002E2BC8002E736A1 -:10EDD00030091898C0282FF8118AF20A1800CFC1FC -:10EDE000F00C010C5EFC580AC0815EFA580AC0B0F3 -:10EDF0005808C0902FFC2FFB201A19881789F0099A -:10EE00001800CF50198C1788101C5EFC3008103A7F -:10EE10005E0CF6080709F8080B092FF85809CF818E -:10EE2000103A5E0CF8080B092FF8CFBBD401484804 -:10EE3000169A189B700CF01F0003D802000005986A -:10EE40008002EE44D421300816951696C0282FF67D -:10EE5000580AC060201A0D89F0091800CF910A16CF -:10EE6000ECCBFFFFF01F00071897C0800A9B0C9A9D -:10EE7000F01F00053008EE060B080E9CD82200009B -:10EE80008002E2BC8002E736D42118981696580B0F -:10EE9000C0C03007C0481897F8C8FFFF109C0C9BF3 -:10EEA000F01F0005CF91C048F01F000318970E9C7B -:10EEB000D82200008002ECACD421201D4A351897DE -:10EEC0006A04E8F600E85806C351500B350CF01FF1 -:10EED00000206A08E94C00E8F0F900E89326930660 -:10EEE0009316F0F900E893469336F0F900E893663C -:10EEF0009356F0F900E893B693A6F0F900E893D69C -:10EF000093C6F0F900E893F693E6F0F900E8F346CB -:10EF10000044F3460040F0F900E8F346004CF346A5 -:10EF20000048F0F900E8F366001CF0F800E8400B38 -:10EF30009196486870080E9CF0FA00E83019F01FAE -:10EF400000052FFDD8220000000005988002E2A4F1 -:10EF50008002EF54D421580CC041740C580CC2905C -:10EF600018981697113EC0A80C3EC0815809C030B1 -:10EF7000109CCF7B9508B889D8220F365806CF5100 -:10EF8000580EC051950E1C9CD822129810991697B5 -:10EF9000133E0F361C36C0A1580EFC091700F9BBF2 -:10EFA0000100F1FB1E009509D8225806CF31CEEBA7 -:10EFB000D822D703D431203D4CC8502C700116986C -:10EFC000113EE20E0706E2160008CFB1E04E002D1A -:10EFD000C041113E3016C058E04E002BC021113EFA -:10EFE00058095F0C59095F053007F9E51005EE0572 -:10EFF0001800C1E0E04E0030C131118535843783FF -:10F00000E80518005F04E60518005F05E9E510054E -:10F01000EE051800C050119E31092FE8C098580C19 -:10F02000C070E04E0030F9B90008F9B9010AE06C8F -:10F03000FFFFEA1C7FFF3007FC1580000E930E36A1 -:10F04000F80517000E9CEA090D0408925005E20E1F -:10F050000704E1D4C001F9B00137F9B000575010EE -:10F06000FCC500300890E2100004C0814010E9D4D3 -:10F07000C002FC0001055804C1C01235C1A4043C03 -:10F080005FBEFDE713FEE60E1800C101043C5F0EF3 -:10F0900040070E355F97EFEE000EE60E1800C061D8 -:10F0A000B33C3017EA0C000CC0283FF7113ECD0BE3 -:10F0B0005BF7C0E1E069FFFFEA197FFFFC1C8000FD -:10F0C00040205806F20C170032298139C0485806F2 -:10F0D000FBBC0100580AC0705807F9B901FFF1D90B -:10F0E000E10B950B2FDDD8320000049CD401485869 -:10F0F0001499169A189B700CF01F0003D802000098 -:10F10000000005988002EFB43028D6733FFC358BA1 -:10F11000580C5E4C482A950B5EFC000000008CC425 -:10F120003058D6733FFC358B580C5E4C482A950BF3 -:10F130005EFC000000008CC43038D6733FFC358B79 -:10F14000580C5E4C482A950B5EFC000000008CC4F5 -:10F150003048D6733FFC358B580C5E4C482A950BD3 -:10F160005EFC000000008CC430B8D6733FFC358BC9 -:10F17000580C5E4C482A950B5EFC000000008CC4C5 -:10F180003098D6733FFC358B580C5E4C482A950B53 -:10F190005EFC000000008CC4D421210D16971A9B40 -:10F1A000F01F0011C0343FFCC1C84008AE08401831 -:10F1B000AE1840288F184038AE484048AE584058E6 -:10F1C000AE684068AE7840888F4840A88FB840C885 -:10F1D0008FC840D88F5840E8300C8F7840F88F980F -:10F1E0002F0DD8228002F180D40148C87009580937 -:10F1F000C03148B99109489948AA7208F00C000C2E -:10F20000143CE08B0004930CC068F01F000730C86A -:10F2100099083FF8109CD80200007AF800008CC8CA -:10F220000000F00080031D20D431208DFAC4FFBC03 -:10F23000504B682E505812967C0B7005506E580B30 -:10F24000F40B17006803681140493008C2C92FFB4E -:10F25000325C178AF80A18005F1EF00A18005F1C5B -:10F26000FDEC000CF00C1800CF31580AE0800129A9 -:10F27000300C3FFA1890503A18941892F80C003C51 -:10F280001697507C4CDC0F3AF80A070E407C1C0C99 -:10F290004CBEFC0C070E201E500E4CAEFC0C070C96 -:10F2A000507C400C587CE08B00F84C7EFC0C032F0B -:10F2B000368BF60A1800E08000F0371BF60A1800BB -:10F2C000C07034CBF60A1800C051A3B4CE58A5B410 -:10F2D000CE380F8B36CAF40B1800C051A5B4EECB54 -:10F2E000FFFFCDB8A5A4CD88EBD5C005367CF80AC4 -:10F2F0001800E08B0027365BF60A1800C48234FB46 -:10F30000F60A1800C480E08B000C345BF60A180083 -:10F31000C3E0347BF60A1800C3A0344BC088358B99 -:10F32000F60A1800C2C0E08B0007355BF60A180029 -:10F33000C351C318363BF60A1800C2F0364BC0E87A -:10F34000370BF60A1800C250E08B000D36EBF60AB8 -:10F350001800C1F0E08B0014369BF60A1800C1E1DA -:10F36000C0E8375BF60A1800C0A0378BF60A180011 -:10F37000C060373BF60A1800C111C0B8EDB40004F4 -:10F38000C0A0EDB40005C0913020C0883040C068F6 -:10F390003030C0483010C0283000403B5BFBC040DC -:10F3A000E20B0920C7985860E08B00776C0AEACC22 -:10F3B000FFFF486EFC00032F8003EE088003ED641E -:10F3C0008003ECF88003ECAC8003ECCCF4CBFFF8CA -:10F3D0008D0BF4EA0000E605083AC0F8F4CBFFFC18 -:10F3E0008D0B740AE605093AC088F4CBFFF88D0B43 -:10F3F000F4EA0000E605083A0E9B1895C4E8620A94 -:10F400005BFAC0B150195028E06A0080300B029CB2 -:10F41000F01F004D40284019E4CC00010E9B503CE9 -:10F42000F20C0C49C3A8620A5BFAC0B1501950280B -:10F43000E06A0080300B029CF01F00434028401916 -:10F440002012300A0E9BE202092AF2020C49C2582D -:10F4500016976C0AF4CBFFFC8D0B740A0E9BE60525 -:10F46000093A2FF5C1A8F4C20030C068E4020022B6 -:10F470002FF7F40200120F8A580AC0E0230A589AA4 -:10F48000FE98FFF6C0982FF70F8A580AC050230A3B -:10F49000589AFE98FFFA0E9B407C30BAF40C180084 -:10F4A000FE91FEEE4042178C0A325F4AF00C1800C3 -:10F4B0005F1CF9EA000AF00A1800FE91FECB300842 -:10F4C000404E178AE2050021F00A1800FC091710C7 -:10F4D000E6050038069EC2A8620A583AC1E0E089F3 -:10F4E0000007581AC1A0582AC181C058585AC0C034 -:10F4F000C0B5C1386C0AF4CCFFF88D0CF4E2000002 -:10F50000F0E30000C1086C0AF4CCFFF88D0CF4E2C3 -:10F510000000F0E30000C0786C0AF4CCFFFC8D0C16 -:10F52000740A910A2FF52F882FC11235FE9AFFD643 -:10F530001C934052406E85059D0B404BE60B003CF2 -:10F540002F8DD8328002E8BCD42114977428580833 -:10F55000C0419518109CD822F01F000330088F1866 -:10F560008F28D82280032320D431FACD068850A9D1 -:10F57000169014971893580CC06078685808C031DA -:10F58000F01F004E4CE81030C0316600C0A84CD8C7 -:10F590001030C0316610C0584CB81030E7F000028F -:10F5A0008068EDB80003C04160485808C071009BF6 -:10F5B000069CF01F0046E0810B4080681099E2191C -:10F5C000001A58A9C3D18079300AF4091900C385FB -:10F5D000A1D8FB5805B86088FB4805CC60A8FB485B -:10F5E00005D4FAC8FFD4FB4805BCFB4805ACE0686D -:10F5F0000400FB4805C0FB4805B43008FB5905BAB8 -:10F600000E9A40A9FAC7FA54FB4805C4069C0E9B03 -:10F61000F01F002F506CC0950E9B069CF01F002D14 -:10F62000406EF9BE01FF506EFB0805B8EDB800064C -:10F63000E0810B058068A7A8A068E08F0B00300868 -:10F64000FAC4F9F85098FB480678409CFB480674C9 -:10F65000FB48067CFB48068050573FF8FB44067089 -:10F66000FB48052C506C1896069150204055C02838 -:10F670002FF50B88300B325AF60818005F19F40882 -:10F6800018005F181268F6081800CF314059EA09CF -:10F690000107C2E0FAF806780E088909FB480678E7 -:10F6A0008917FAF806742FF8FB4806745878E08931 -:10F6B00000132F84C1A8000080031F388003EF2CA3 -:10F6C0008003EF4C8003EF6C80031C388002F568E8 -:10F6D00080031D2CFACAF990402B029CF01F00A158 -:10F6E000E0810AA6FAC4F9F840680E0850680B8851 -:10F6F0003007EE081800E0800A8AEAC2FFFF3003F4 -:10F700005052FB6706873FFE50745043503E0690B0 -:10F71000508506920C944057C0683FFC0A97503CB5 -:10F72000C02830000F38C0281292E0480063E08003 -:10F7300001CCE0890045E0480039E0890026E04836 -:10F740000031E0840198E048002BE0800101E0896D -:10F75000000FE0480023E080008EE048002AE080AF -:10F76000008CE0480020E0810897C7B8E048002EF0 -:10F77000E08000F1E0480030E080017BE048002DAF -:10F78000E081088ACE28505750420897408540743F -:10F790001092E048004FE0800439E0890008E0481A -:10F7A0000044E081087DE08F01DEE0480055E08004 -:10F7B00005DFE0480058E0810873C428E048006F86 -:10F7C000C430E089001FE0480069C450E089000AA5 -:10F7D000E0480064C400E0480068E081085DC63984 -:10F7E000E048006CE0800163505750420897408524 -:10F7F00040741092E048006EE0810852E08F02ED04 -:10F80000E0480073E0800553E089000BE048007099 -:10F81000E08004F9E0480071E081083EC5295057B6 -:10F8200050420897408540741092E0480075E0808F -:10F8300005A0E0480078E0810833E08F06964CABE5 -:10F84000509BE08F06945057408508975042407473 -:10F85000E08F03DD50574085089750424074C83907 -:10F86000FB380687300AF4081800FE91FF5D320865 -:10F87000C6E8A1A3C58B0F89F2C800305898E08B69 -:10F88000001EEEC8FFFF300B2309F60B002BF20B16 -:10F89000001B1139F2CA0030589AFE98FFF7E04970 -:10F8A0000024FE91FF40E04B0020E08909C1201BAD -:10F8B000FAF90680123BC095C108FAF90680ECCA35 -:10F8C000FFFF1236C1F5C268FAC9F9781097F20B3A -:10F8D000003BF6F2FDA4C358FAC7F9841AD7109773 -:10F8E000FAC2FAD01AD2FAC8FBCC029C1AD8FAC8CB -:10F8F000F974FAC9FFCC40BAF01F001C2FDD780262 -:10F90000C208FACEF9781496FC040038F0F2FDA48F -:10F91000C18840A859F9E0890011F0CBFFFC50AB39 -:10F920007002FACCF978F8090038F142FDA42FF9F9 -:10F930001496FB490680C058700214962FC850A830 -:10F940005802FE94FEF15C32A3A3CEDAFB68068770 -:10F95000CEAA0F38E048002AC0A03009C7D800005E -:10F960008002F5488003EDD08002F2280F88F0C9AC -:10F9700000305899E08B001EEEC5FFFF300B2308C6 -:10F98000F60B002BF00B001B0B38F0C90030589918 -:10F99000FE98FFF7E0480024FE91FEC5E04B0020F2 -:10F9A000E0890946201BFAF80680103BC095C10883 -:10F9B000FAF90680ECCAFFFF1236C1F5C288FACA0E -:10F9C000F978F40B003BF6FBFDA4503BC3C8FAC921 -:10F9D000F9841AD9FAC8FAD01AD8FAC8FBCC029C12 -:10F9E0001AD8FAC8F974FAC9FFCC40BAF01F027AE3 -:10F9F0002FDD780C503CC278FACEF9780E95FC04D5 -:10FA000000381496F0F8FDA45038C1D840A859F930 -:10FA1000E0890014F0CBFFFC700850AB5038FACCF2 -:10FA2000F978403BF8090038F14BFDA42FF90E9509 -:10FA3000FB4906801496C07870090E952FC850397E -:10FA4000149650A840385808FE95FE690A97C6BA21 -:10FA5000F40B00190F38F209002BF0CA0030589A45 -:10FA6000FE98FFF83FFEF20E0C495039C5FAA7B3D5 -:10FA7000C5AA30092308F2090029F00900190F3836 -:10FA8000F0CA0030589AFE98FFF7E0480024FE9133 -:10FA9000FE4DE0490020E08908CBF2C4000130109F -:10FAA000FE9FFE42A7A3FE9FFE3F0F89F0091800AC -:10FAB000C0512FF7A5B3FE9FFE37A5A3FE9FFE34CE -:10FAC000A5B3FE9FFE3150575042089740854074C1 -:10FAD0000C99FAF806805800C1D01037C064FACCEF -:10FAE000F978F8070037C1D8FAC8F9841AD8FAC8E3 -:10FAF000FAD01AD8FAC8FBCC1AD8FAC8F974FAC9DD -:10FB0000FFCC0A9A0E9B029CF01F02332FDD19B81E -:10FB1000C2282FF61039C084FACBF978F6070037DF -:10FB2000EF38FDA7C18840A959F8E0890012F2CA50 -:10FB3000FFFC50AA7209FAC2F978E408003A2FF8DB -:10FB4000F549FDA4FB480680F1D9C008C04813B8A8 -:10FB50002FC950A9300EFB680648FB6E0687E08F60 -:10FB600006A7A5A30C92EDB30005C4D1FAF8068050 -:10FB70005800C1E01037C064FACCF978F8070037B4 -:10FB8000C1F8FAC8F9841AD8FAC8FAD00A9A1AD869 -:10FB9000FAC8FBCC1AD8FAC9FFCCFAC8F9740E9B84 -:10FBA000029CF01F020D2FDD781A7809C288ECC282 -:10FBB000FFFF1036C0A4FACBF978F6070037EEFA4B -:10FBC000FDA8EEF9FDA4C1B840A959F8E0890013D9 -:10FBD000F2CAFFF850AAFAC6F978721AEC08003B8C -:10FBE0007209F74AFDA8F749FDA42FF8FB480680E3 -:10FBF000C068F2C8FFF8721A50A87209049650093A -:10FC0000501ACD58EDB30004C441FAF806805800EC -:10FC1000C1D01037C064FACEF978FC070037C1E8CC -:10FC2000FAC8F9841AD8FAC8FAD00A9A1AD8FAC8BF -:10FC3000FBCC0E9B1AD8029CFAC8F974FAC9FFCC07 -:10FC4000F01F01E52FDD780AC218ECC2FFFF103665 -:10FC5000C084FACCF978F8070037EEFAFDA4C16841 -:10FC600040A959F8E0890010F2CAFFFC50AAFACB6B -:10FC7000F978720AF6080039F34AFDA42FF8FB4818 -:10FC80000680C048720A2FC950A90496501AC8D8D5 -:10FC9000EDB30006C481FAF806805800C1D01037D1 -:10FCA000C064FAC8F978F0070037C1E8FAC8F984E7 -:10FCB0001AD8FAC8FAD01AD8FAC8FBCC1AD8FAC897 -:10FCC000F974FAC9FFCC0A9A0E9B029CF01F01C27C -:10FCD0002FDD9818C238ECC2FFFF1036C084FAC678 -:10FCE000F978EC070037EF08FDA6C18840A959F85C -:10FCF000E0890012F2CAFFFC50AA7209FACEF97824 -:10FD0000FC08003A2FF8F549FDA4FB480680F1D91C -:10FD1000B010C04892182FC950A950180496BF5867 -:10FD20005008C458FAF806805800C1D01037C06493 -:10FD3000FACBF978F6070037C1E8FAC8F9841AD87F -:10FD4000FAC8FAD00A9A1AD8FAC8FBCC0E9B1AD86D -:10FD5000029CFAC8F974FAC9FFCCF01F019F2FDD8D -:10FD6000780AC218ECC2FFFF1036C084FACAF978CC -:10FD7000F4070037EEFAFDA4C16840A959F8E089FC -:10FD80000010F2CAFFFC50AAFAC6F978720AEC0811 -:10FD90000039F34AFDA42FF8FB480680C048720AD8 -:10FDA0002FC950A90496501ABF5A500AFAEA000007 -:10FDB000580A5C2BC0E43008FAEA00003009F00A67 -:10FDC000010AF20B014B32D8FAEB0000FB68068700 -:10FDD0003010E08F04E30C99EDB30005C471FAF81C -:10FDE00006805800C1D01037C064FACAF978F40709 -:10FDF0000037C1D8FAC8F9841AD8FAC8FAD00A9AD2 -:10FE00001AD8FAC8FBCC0E9B1AD8029CFAC8F9740F -:10FE1000FAC9FFCCF01F01702FDD780AC2082FF657 -:10FE20001039C084FAC9F978F2070037EEFAFDA458 -:10FE3000C16840A959F8E0890010F2CAFFFC50AA35 -:10FE4000FAC3F978720AE6080039F34AFDA42FF8DC -:10FE5000FB480680C048720A2FC950A94062049826 -:10FE60009512BF589508FE9FFC03EDB30004C441F2 -:10FE7000FAF806805800C1D01037C064FACEF9787D -:10FE8000FC070037C1D8FAC8F9841AD8FAC8FAD0E2 -:10FE90000A9A1AD8FAC8FBCC0E9B1AD8029CFAC848 -:10FEA000F974FAC9FFCCF01F014C2FDD780AC208A3 -:10FEB0002FF61039C084FACCF978F8070037EEFA3B -:10FEC000FDA4C16840A959F8E0890010F2CAFFFCFE -:10FED00050AAFACBF978720AF6080039F34AFDA461 -:10FEE0002FF8FB480680C048720A2FC950A9406904 -:10FEF0009509FE9FFBBDE2130040C440FAF806805E -:10FF00005800C1D01037C064FAC8F978F00700373C -:10FF1000C1D8FAC8F9841AD8FAC8FAD00A9A1AD8F5 -:10FF2000FAC8FBCC0E9B1AD8029CFAC8F974FAC91D -:10FF3000FFCCF01F01292FDD780AC2082FF61039F7 -:10FF4000C084FAC3F978E6070037EEFAFDA4C16869 -:10FF500040A959F8E0890010F2CAFFFC50AAFAC281 -:10FF6000F978720AE4080039F34AFDA42FF8FB4837 -:10FF70000680C048720A2FC950A9406EB40EFE9F79 -:10FF8000FB77FAF806805800C1D01037C064FACC6D -:10FF9000F978F8070037C1D8FAC8F9841AD8FAC82E -:10FFA000FAD00A9A1AD8FAC8FBCC0E9B1AD8029C2F -:10FFB000FAC8F974FAC9FFCCF01F01072FDD780ADF -:10FFC000C2082FF61039C084FACBF978F60700374B -:10FFD000EEFAFDA4C16840A959F8E0890010F2CA00 -:10FFE000FFFC50AAFAC3F978720AE6080039F34A0E -:10FFF000FDA42FF8FB480680C048720A2FC950A9FB -:02000004800377 -:1000000040629502FE9FFB34A5A30C99EDB3000559 -:10001000C571FAF806805800C2601037C0A4FACE45 -:10002000F978FC070037EEEAFDA4FAEB0000C1887E -:10003000FAC8F9841AD8FAC8FAD01AD8FAC8FBCC88 -:100040001AD8FAC8F974FAC9FFCC0A9A0E9B029C16 -:10005000F01F00E12FDDF8E80000FAE900003000B1 -:10006000E08F03992FF61039C0B4FAC8F978F00779 -:100070000037EEEAFDA4FAEB0000E08F038C40A904 -:1000800059F8E0890016F2CAFFF850AAF2EA000017 -:10009000FAEB0000FACAF978F4080039FAEA00002D -:1000A000F2EBFDA42FF8FB480680E08F0374F2EA20 -:1000B00000002F89FAEB000050A9E08F036CEDB32C -:1000C0000004C141FAF806805800C0801037C60409 -:1000D000FACAF978F4070037C7782FF61039C774D1 -:1000E000FAC9F978F2070037C6F8EDB30006C45133 -:1000F000FAF806805800C1D01037C064FACCF978FD -:10010000F8070037C1D8FAC8F9841AD8FAC8FAD063 -:100110001AD8FAC8FBCC1AD8FAC8F974FAC9FFCCB5 -:100120000A9A0E9B029CF01F00AC2FDD9818C22883 -:100130002FF61039C084FACBF978F6070037EF08AC -:10014000FDA6C18840A959F8E0890012F2CAFFFC57 -:1001500050AA7209FAC2F978E408003A2FF8F54972 -:10016000FDA4FB480680F1D9B010C04892182FC9F1 -:1001700050A95C785018C418FAF806805800C1D00D -:100180001037C064FACCF978F8070037C1D8FAC83C -:10019000F9841AD8FAC8FAD00A9A1AD8FAC8FBCC45 -:1001A0000E9B1AD8029CFAC8F974FAC9FFCCF01F4A -:1001B000008A2FDD780AC2082FF61039C084FACBE6 -:1001C000F978F6070037EEFAFDA4C16840A959F89E -:1001D000E0890010F2CAFFFC50AAFAC2F978720A4C -:1001E000E4080039F34AFDA42FF8FB480680C04814 -:1001F000720A2FC950A9501A300E500E1C90E08F71 -:1002000002CA505750420897408540740C99FAF83A -:1002100006805800C1D01037C064FACCF978F807CE -:100220000037C1D8FAC8F9841AD8FAC8FAD01AD84F -:10023000FAC8FBCC1AD8FAC9FFCCFAC8F9740A9AE2 -:100240000E9B029CF01F00642FDD7809C2182FF668 -:100250001039C084FACBF978F6070037EEF9FDA41F -:10026000C17840A959F8E0890010F2CAFFFC50AAF1 -:10027000FAC2F9787209E408003AF549FDA42FF8AA -:10028000FB480680C058F2C8FFFC50A8720933082A -:10029000300EFB6806844D1C37885019A1B3FB68EB -:1002A0000685500E509CE08F02755057300B50421F -:1002B000FB6B06870897408540740C99FAF8068016 -:1002C0005800C1D01037C064FACAF978F407003773 -:1002D000C1D8FAC8F9841AD8FAC8FAD01AD8FAC814 -:1002E000FBCC0E9B1AD80A9AFAC8F974FAC9FFCC4B -:1002F000029CF01F00392FDD7807C2082FF6103955 -:10030000C084FAC9F978F2070037EEF7FDA4C16896 -:1003100040A959F8E0890010F2CAFFFC50AA720700 -:10032000FAC2F978E4080039F347FDA42FF8FB4836 -:100330000680C04872072FC950A9403E580EC1051B -:100340001C9A300B0E9CF01F0026E08002B6F807C6 -:100350000105403C1835E08902B0E08F02AF0E9CE9 -:100360003000F01F00201895E08F02A9A5A30C997A -:10037000EDB30005C581FAF806805800C2001037B9 -:10038000C064FACBF978F6070037C208FAC8F984D6 -:100390001AD8FAC8FAD00A9A1AD80E9BFAC8FBCC17 -:1003A000029C1AD8FAC8F974FAC9FFCCF01F000AE7 -:1003B0002FDDF8EA0000FAEB0000C3282FF6103911 -:1003C000C124FACAF978F4070037EEE8FDA4FAE987 -:1003D0000000C2688002F2288003EDE4800328A4B4 -:1003E0008002EDD040A959F8E0890015F2CAFFF863 -:1003F00050AAF2EA0000FAEB0000FACAF978F40811 -:100400000039FAEA0000F2EBFDA42FF8FB48068061 -:10041000C078F2EA00002F89FAEB000050A93010F2 -:10042000E08F01B9EDB30004C141FAF8068058002D -:10043000C0801037C604FACAF978F4070037C778C5 -:100440002FF61039C774FAC9F978F2070037C6F8E1 -:10045000EDB30006C451FAF806805800C1D0103739 -:10046000C064FACCF978F8070037C1D8FAC8F98423 -:100470001AD8FAC8FAD01AD8FAC8FBCC1AD8FAC8CF -:10048000F974FAC9FFCC0A9A0E9B029CF01F0086F1 -:100490002FDD9818C2282FF61039C084FACBF978CE -:1004A000F6070037EF08FDA6C18840A959F8E08992 -:1004B0000012F2CAFFFC50AA7209FAC2F978E408E5 -:1004C000003A2FF8F549FDA4FB480680F1D9B01099 -:1004D000C04892182FC950A95C785018C418FAF86F -:1004E00006805800C1D01037C064FACCF978F807FC -:1004F0000037C1D8FAC8F9841AD8FAC8FAD00A9ACB -:100500001AD8FAC8FBCC0E9B1AD8029CFAC8F97408 -:10051000FAC9FFCCF01F00642FDD780AC2082FF65D -:100520001039C084FACBF978F6070037EEFAFDA44B -:10053000C16840A959F8E0890010F2CAFFFC50AA2E -:10054000FAC2F978720AE4080039F34AFDA42FF8D8 -:10055000FB480680C048720A2FC950A9501A300EB5 -:100560003010500EC1794D1C509CEDB30005C541B3 -:10057000FAF806805800C2201037C0A4FACBF978E8 -:10058000F6070037EEE8FDA4FAE90000CF28FAC824 -:10059000F9841AD8FAC8FAD00A9A1AD80E9BFAC85F -:1005A000FBCC029C1AD8FAC8F974FAC9FFCCF01F28 -:1005B000003E2FDDF8EA0000C0C8ECCAFFFF10368D -:1005C000C0B4FAC9F9781496F2070037EEEAFDA430 -:1005D000FAEB0000CCE840A959F8E0890016F2E6F1 -:1005E0000000F2CBFFF8FAE7000050ABFAC6F9784A -:1005F000EC080039FAE60000F2E7FDA42FF81496A3 -:10060000FB480680CB68F2E600002F89FAE700007D -:1006100050A91496CAE8EDB30004C161FAF8068047 -:100620005800C0801037C6A4FACEF978FC0700370E -:10063000C838ECCAFFFF1036E0840082FACCF978A3 -:10064000F8070037C788EDB30006C4D1FAF8068072 -:100650005800C1D01037C064FACCF978F8070037D9 -:10066000C1F8FAC8F9841AD8FAC8FAD01AD8FAC860 -:10067000FBCC1AD8FAC8F974FAC9FFCC0A9A0E9BB7 -:10068000029CF01F00092FDD9818C2A8ECCAFFFFDA -:100690001036C0D4FACBF9781496F6070037EF0875 -:1006A000FDA6C1E88002F2288003EDE440A959F8D4 -:1006B000E0890013F2CBFFFC50AB7209FAC6F9785F -:1006C000EC08003B2FF8F749FDA4FB480680149680 -:1006D000F1D9B010C058921814962FC950A95C785F -:1006E0005018C458FAF806805800C1D01037C064BA -:1006F000FACCF978F8070037C1F8FAC8F9841AD8A3 -:10070000FAC8FAD00E9B1AD8FAC8FBCC0A9A1AD8A3 -:10071000029CFAC8F974FAC9FFCCF01F00C42FDD9F -:10072000780BC248ECCAFFFF1036C094FACBF978B8 -:10073000F60700371496EEFBFDA4C18840A959F8CE -:10074000E0890011F2CBFFFC50ABFAC6F978720BCE -:10075000EC080039F34BFDA42FF81496FB480680F3 -:10076000C058720B14962FC950A9501B300E500E52 -:100770004008401C300B18485F18E7E80008F608EE -:100780001800C0703308FB620685A1B3FB680684BD -:100790003020300AFB6A068740395809C025A7D3A4 -:1007A0004038401758085F194008FAC5F9900E48BC -:1007B00030025F18F3E81008E4081800C5E03018AC -:1007C000F0001800C0603028F0001800C051C3E8E5 -:1007D0000A970690C2C80A97FAE80000F5D8C00345 -:1007E0002D0A0EFAF00B1603F20C1603F7E911DBD3 -:1007F0001899169858085C29CF21FAE90000EDB342 -:100800000000C4613309F20A1800C4200EF9C408BC -:10081000F01F008730A82D0A3009AE8AFAEA0000DE -:10082000F01F008416991498FAE90000EECC00013C -:1008300030A83009FAEA00001897589A5C2BFE9B02 -:10084000FFE91BF800932D08C2080A97FAE8000098 -:10085000F5D8C004409EFC0A070A0EFAF20B1604F3 -:10086000F00A1604F5E911CA1699149858085C297B -:10087000CF01FAE90000C0C85800C091EDB30000F4 -:10088000C061FAC7F9913308AE88C0280A970E15DF -:100890004030C14850425057407410925802E08096 -:1008A00001B6300CFB620648FB6C06873015300041 -:1008B000FAC7F9B8C03840353000069A0699E21AEE -:1008C0000002E2190084508A5079EA000C42FB3899 -:1008D0000687300BF6081800F7B201FF580AF7B286 -:1008E00001FE5809C4514048041850385808E0899E -:1008F000001DC3E8FB4C06784CFE310C890E891CA8 -:10090000FB4B0674587BE08900042F84C0B8FACAF8 -:10091000F990402B029CF01F0049E0810189FAC444 -:10092000F9F8403B210B503BFAF90678FAF80674C7 -:10093000F2CCFFF0F0CBFFFF4BFA403E590EFE9990 -:10094000FFDB1C09890AFB490678891EFB4B0674EC -:10095000587BE08900042F84C0B8FACAF990402B74 -:10096000029CF01F0036E0810163FAC4F9F8FB38FD -:100970000687300CF8081800C1F0FAF80678FAC9B2 -:10098000F9792FF88909FB4806783019FAF80674C6 -:1009900089192FF8FB4806745878E08900042F84E1 -:1009A000C0B8FACAF990402B029CF01F0024E081E5 -:1009B000013FFAC4F9F8408B580BC1F0FAF80678F9 -:1009C000FAC9F97C2FE88909FB4806783029FAF83A -:1009D000067489192FF8FB4806745878E0890004DA -:1009E0002F84C0B8FACAF990402B029CF01F001364 -:1009F000E081011EFAC4F9F8407AE04A0080C5118E -:100A00004049041950395809E0890029C4A848C848 -:100A1000310EFB4C06788908891EFB4B0674587B07 -:100A2000E08900102F84C1788002F228800373408F -:100A30008002D9988003EDF88002F5488003ECE845 -:100A4000FACAF990402B029CF01F0052E08100F09E -:100A5000FAC4F9F8403C210C503CFAF90678FAF84F -:100A60000674F2CCFFF0F0CBFFFF4CBA403E590EBB -:100A7000FE99FFCF1C09890AFB490678891EFB4BAA -:100A80000674587BE08900042F84C0B8FACAF99034 -:100A9000402B029CF01F003FE08100CAFAC4F9F825 -:100AA0000A105800E089001BC3B8FB4C0678310AD5 -:100AB0004B9C891A890CFB4B0674587BE089000417 -:100AC0002F84C0B8FACAF990402B029CF01F003165 -:100AD000E08100AEFAC4F9F82100FAF90678FAF8D4 -:100AE0000674F2CCFFF0F0CBFFFF4ABA5900FE9932 -:100AF000FFDE0009890AFB4906788910FB4B067462 -:100B0000587BE08900042F84C0B8FACAF990402BC2 -:100B1000029CF01F0020E081008BFAC4F9F8FAF87B -:100B2000067889158907F0050005FAF80674FB4573 -:100B300006782FF8FB4806745878E08900042F8463 -:100B4000C0A8FACAF990402B029CF01F0012C6F10F -:100B5000FAC4F9F8E2130004C41040470417580718 -:100B6000E089001CC3B8FB4C067889058913FB4B50 -:100B70000674587BE08900042F84C098009A402BAB -:100B8000029CF01F0004C531FAC4F9F82107C0988F -:100B90008002F5488003ECE84AB53103FAC0F990C9 -:100BA000FAF90678FAF80674F2CCFFF0F0CBFFFF02 -:100BB0004A5A5907FE99FFD90E09890A8917FB4934 -:100BC0000678FB4B0674587BE08A0009FACAF99054 -:100BD000402B029CF01F001DC2A140684049E4095F -:100BE0000C4204085068FAF806785808C080FACA1F -:100BF000F990402B029CF01F0015C1913003FAC4FC -:100C0000F9F8FB430674FE9FF53302934020FAF88F -:100C100006785808C080029CFACAF990009BF01F21 -:100C2000000BC0613008FB480674C0284020806873 -:100C3000EDB80006C0313FF25062406CFE3DF978DD -:100C4000D83200008003EDF88002F548D431FACDA7 -:100C500001E03007503C16961295507A5087505755 -:100C60000E930E905047407E1D8957795809E080B9 -:100C700007A22FFE4D5C507E780C502CF809070817 -:100C8000E2180008C1B06C185808E08900070C9BF6 -:100C9000403CF01F004FCE816C084CCBF0C9FFFFE9 -:100CA000760A1188F4080708EDB80003CDD16C1856 -:100CB0008D0920182FF08D18CE7BE0490025E081AA -:100CC000008906941091109236CA344C358E407BC0 -:100CD0001739507B364BF6091800E08000BBE08BDB -:100CE0000042F8091800E08000B4E08B0021339B3B -:100CF000F6091800E08B01D2330BF6091800E082E8 -:100D00000094325BF6091800C640E08B000B5809CE -:100D1000E080074F324BF6091800E08101BFC8A8F8 -:100D200032ABF6091800E08101B9C6D8FC091800F9 -:100D3000E08000A4E08B000C34CBF6091800C7005B -:100D400034FAF4091800E08101A9C8C835BAF409D9 -:100D50001800E0800098363AF4091800E081019EFE -:100D6000C9E836FBF6091800C7E0E08B0017369B90 -:100D7000F6091800C720E08B0008368BF60918002A -:100D8000E081018CC4F8F4091800C3F036EAF409D4 -:100D90001800E0810183C8D8373AF4091800C1303F -:100DA000E08B0008370AF4091800E0810177C7A832 -:100DB000375AF4091800C5C0378AF4091800E081D1 -:100DC000016DC5B83029C7590000049C800328BCB8 -:100DD0006C185808E08900080C9B403CF01F006428 -:100DE000E08106E0407A6C08F539FFFF118AF20ACB -:100DF0001800E08106E02FF82FF08D086C182018FD -:100E00008D18C32BA5A1C64B407B1789F409180088 -:100E1000C0512FFBA1B1507BC5BBA1A1C59BA1B106 -:100E2000C57BA3A1C55BE4020022A17223021202CA -:100E3000C4FBE0420020E08B0007E4C4000130184E -:100E40003002C46B3168403A9538E08F06ABA1A1FF -:100E50004C8930AE5089C2B84C6C300B508C505B12 -:100E6000C279A1A14C4A3089508A5059C2194C2EDE -:100E700030AC508E505CC1C94BFBA9B1508B310ACC -:100E8000C169301950085019407BFACCFFD4F01FCB -:100E9000003BA7A1507C40194008C0B9A7A1300968 -:100EA000C0894B59E81102205089310E505EC009AB -:100EB000EDB10004FE90FED9EDB10002C441580826 -:100EC000C2500E34C064FACCFE20F8040024C2786C -:100ED000FACAFED40A99F407002A0E98130B14AB31 -:100EE0002FF81034CFC4EEC9FFFFEE0811FFF0C792 -:100EF000FFFF2FE808080807EA080025F2070007A7 -:100F0000FAC8FED4F0040324C1C8E6C8FFFF0E33BC -:100F1000C094FACBFE201093F6040024E8F4FF4CB2 -:100F2000C1086A042FC559F7E089000B1093FACA6B -:100F3000FE20F40700282FF7F144FF4CC02810933F -:100F4000A800C92AEDB10000C1A15808E0800088BE -:100F50000E34C635FACAFED40A99F407002A0E9850 -:100F6000130B14AB2FF81034CFC4C678800328BC01 -:100F70008002EFB480032E6C800329ECE2110002A2 -:100F8000C4805808C2500E34C064FACCFE20F80465 -:100F90000024C278FACAFED40A99F407002A0E98EF -:100FA000130B14AB2FF81034CFC4EEC9FFFFEE08BB -:100FB00011FFF0C7FFFF2FE808080807EA0800251F -:100FC000F2070007FAC8FED4F0040324C1C8E6C83B -:100FD000FFFF0E33C094FACBFE201093F6040024DA -:100FE000E8F4FF4CC1086A042FC559F7E089000BEB -:100FF0001093FACAFE20F40700282FF7F144FF4CA3 -:10100000C0281093E008141F89108908FE9FFE2D48 -:101010005808C2500E34C064FAC9FE20F2040024FD -:10102000C278FACAFED40A99F407002A0E98130B64 -:1010300014AB2FF81034CFC4EEC9FFFFEE0811FF38 -:10104000F0C7FFFF2FE808080807EA080025F207A5 -:101050000007FAC8FED4F0040324C1C8E6C8FFFFA5 -:101060000E33C094FAC2FE201093E4040024E8F486 -:10107000FF4CC1086A042FC559F7E089000B109393 -:10108000FACEFE20FC0700282FF7F144FF4CC028C1 -:1010900010938900FE9FFDE9402CF8090709EDB97E -:1010A0000000C021A1A14C7B30AA508B505A30398E -:1010B0006C1A580AE089000C501950080C9B403CEF -:1010C000F01F004140194008E081056CEDB10006B9 -:1010D000C151C1F86C1A201A8D1A580AE08A00040E -:1010E0008D0CC0B8501950080C9B403CF01F0036C6 -:1010F00040194008E08105562FF06C0A4B3EF4CCB5 -:10110000FFFF7C0B158AF60A070AEDBA0003CE3002 -:101110005829E08001C05839E080031D5819E0804B -:10112000011B029CE21C0010502C5802F9B2000175 -:10113000E3D1C001E080009B580CC0303001C4985E -:101140005808C2500E34C064FACBFE20F6040024C6 -:10115000C278FACAFED40A99F407002A0E98130B33 -:1011600014AB2FF81034CFC4EEC9FFFFEE0811FF07 -:10117000F0C7FFFF2FE808080807EA080025F20774 -:101180000007FAC8FED4F0040324C228E6C8FFFF13 -:101190000E33C094FACAFE201093F4040024E8F43D -:1011A000FF4CC1686A042FC559F7E08900111093FC -:1011B000FAC9FE20F20700282FF7F144FF4CC0883F -:1011C0008002EFB4800328BC0000049C10930891B7 -:1011D00030044D5E7C081034E08004E46C08118912 -:1011E000FAC8FE200808F169FFCC6C1820188D1889 -:1011F0006C082FF8308A8D08300BFACCFE2CF01FCB -:10120000004B2FF4FAC8FE2C0899FACAFE54029B30 -:10121000403CF01F00475BFCE08004C4580CC061F8 -:10122000402C580CC051830CC0385BECC0B0080097 -:10123000402B2012580BF9B40100F7B100FCFBF46D -:1012400000026C185808E089000B0C9B403CF01F12 -:101250000039C0505804C050E08F04A45802CBA1FC -:10126000402A580AFE91FD01C718402E580EC1A011 -:101270006C186C090438C0F4100910128D091001A3 -:101280000C9B403CF01F002BCF405801E08101E651 -:10129000E08F0488040904188D098D180401E08F7B -:1012A00001DD5808C2500E34C064FACCFE20F804A8 -:1012B0000024C278FACAFED40A99F407002A0E98CC -:1012C000130B14AB2FF81034CFC4EEC9FFFFEE0898 -:1012D00011FFF0C7FFFF2FE808080807EA080025FC -:1012E000F2070007FAC8FED4F0040324C258E6C887 -:1012F000FFFF0E33C094FACBFE201093F6040024B7 -:10130000E8F4FF4CC1986A042FC559F7E08900142E -:101310001093FACAFE20F40700282FF7F144FF4C7F -:10132000C0B80000000009AC8002E8BC800328407F -:10133000800328BC1093049A089C0C99301BF01F62 -:1013400000C9E080042FF800000040492FF95049FF -:10135000FE9FFC8B5802F9B200FFEDB10004C261A0 -:1013600030040891C1286C188D0920188D182FF4AD -:101370000832E080008D5808E08900080C9B403C52 -:10138000F01F00B9E08100846C08FACEFE20F0C99D -:10139000FFFF1188FC080008F138FE4CE208180035 -:1013A000CE315804C741E08F04065808C2500E34AD -:1013B000C064FACCFE20F8040024C278FACAFED435 -:1013C0000A99F407002A0E98130B14AB2FF8103467 -:1013D000CFC4EEC9FFFFEE0811FFF0C7FFFF2FE8F3 -:1013E00008080807EA080025F2070007FAC8FED433 -:1013F000F0040324C1C8E6C8FFFF0E33C094FACB43 -:10140000FE201093F6040024E8F4FF4CC1086A049F -:101410002FC559F7E089000B1093FACAFE20F40794 -:1014200000282FF7F144FF4CC02810930891300892 -:10143000C1886C1A201A8D1A133A02CA8D095802F3 -:10144000C1D06C195809E089000D50080C9B403C34 -:10145000F01F00854008C0500831C101E08F03A291 -:101460006C0AFACEFE2014992012158AFC0A000A92 -:10147000F53AFE4CF00A1800CDD1E2040104E080F8 -:10148000039A404C2FFC504C3008A2880800FE9F65 -:10149000FBEC029BE21B0010502B5802F9B200FF3C -:1014A000E3D1C001E08000BC580BC050FACAFE2452 -:1014B000506AC4385808C2500E34C064FAC9FE20BD -:1014C000F2040024C278FACAFED40A99F407002A6A -:1014D0000E98130B14AB2FF81034CFC4EEC9FFFFD6 -:1014E000EE0811FFF0C7FFFF2FE808080807EA0819 -:1014F0000025F2070007FAC8FED4F0040324C1C88F -:10150000E6C8FFFF0E33C094FACEFE201093FC0411 -:101510000024E8F4FF4CC1086A042FC559F7E0899C -:10152000000B1093FACCFE20F80700282FF7F144A7 -:10153000FF4CC0281093506430014CC4C598680813 -:101540001031E080032FFAC8FE200208F169FFCCB9 -:101550006C1820188D186C082FF8308A8D08300B05 -:10156000FACCFE2CF01F00422FF1FAC8FE2C029993 -:10157000FACAFE54406B403CF01F003E5BFCE0802A -:101580000311580CC041406B970CC0385BECC23063 -:10159000406A740CF01F0038C100FAC4FE20020437 -:1015A0002354C088098B201120140C9A403CF01F52 -:1015B00000335801CF81C2C80200402920125809C7 -:1015C000F8011710FBF80006F7B800FCFBF80A0654 -:1015D000FBF100026C185808E089000B0C9B403CA2 -:1015E000F01F0021C0505801E08102DCC1186C08D6 -:1015F00058025F1A11894A2E300C7C08F00907083E -:10160000EC180008F5E80238F8081800C991402BDA -:10161000580BFE91FB2A406A950BC98A402E580E42 -:10162000C300C1086C188D0A20188D182FF10232E2 -:10163000C1405808E08900070C9B403CF01F000A9D -:10164000C0C16C0848ECF0CAFFFF78091188F208A5 -:101650000708EDB80003CE710200FE9FFB060000F4 -:10166000800320B8800328BC000009AC8002E8BCDD -:10167000800328408003274880032FF40000049C47 -:101680005808C2500E34C064FACBFE20F604002481 -:10169000C278FACAFED40A99F407002A0E98130BEE -:1016A00014AB2FF81034CFC4EEC9FFFFEE0811FFC2 -:1016B000F0C7FFFF2FE808080807EA080025F2072F -:1016C0000007FAC8FED4F0040324C1C8E6C8FFFF2F -:1016D0000E33C094FACAFE201093F4040024E8F4F8 -:1016E000FF4CC1086A042FC559F7E089000B10931D -:1016F000FAC9FE20F20700282FF7F144FF4CC0285A -:1017000010930891C1286C1920198D19113902C93B -:101710008D085802C1506C185808E08900070C9BCE -:10172000403CF01F0059C0C16C094D8E12987C0AD4 -:1017300013892012F4090709EDB90003CE51404C7A -:101740002FFC504C08103008E2000000A288FE9FD9 -:10175000FA8CE4C90001E0490026E08B0005300B5B -:10176000506BC058E4CA00273272506A3009FACE72 -:10177000FE54509950A7E8110D80502E35894057DE -:101780006C0A339C158AF80A1800E08B0015338B1D -:10179000F60A1800C4E2330BF60A1800C270E08B98 -:1017A000004532BBF60A1800C51032DBF60A1800F5 -:1017B000C7C1C4C8F20A1800C4E0E08B000AF4CB29 -:1017C0000041305EFC0B1800E08B0070C398361CA3 -:1017D000F80A1800C6A3366BF60A1800E088003134 -:1017E000378EFC0A1800C611C368029BEDB1000BCE -:1017F000C3C15807E06B0200E3DBE031F9B7000832 -:10180000EDB1000AC041E011FA7FC2F8409B406C84 -:101810002FFB580CF7BC0101FBFC1A06F7B201FFC5 -:10182000E011FC7F509BC248499EFC070417C0B8DA -:10183000497CF80704175887E0890006C36858A751 -:10184000E08A0034E011F47FC108EDB10007C2D195 -:10185000A7D1C0B8029BE21B0600E04B0200C251B8 -:10186000A9D13107E8110500402B16CA502B6C1A7C -:10187000201A8D1A580AE08A000D6C0A2FFA8D0A78 -:10188000C1180000800328BC0000049C8003EF08FE -:10189000501950080C9B403CF01F00BD40194008F7 -:1018A000C0412012FE91FF6E505740A7EDB10008D5 -:1018B000C161FAC9FE54402A123AE088000B40295F -:1018C0000C9A137B403C50085029F01F00B240088E -:1018D000FAC9FE5440221232E080016D029AE21AE7 -:1018E0000010E081014B402EBC8A50084059FACBD1 -:1018F000FE54403C40825D1202994008E2190020EB -:10190000C2A05808C1400E34C064FACEFE20FC04C8 -:101910000024C1D9FACAFED40A99F407002A0E9805 -:10192000130B14AB2FF81034CFC4CF68E6C8FFFFF9 -:101930000E33C064FACBFE20F6040024C0796A049A -:101940002FC559F7E08901151093FACAFE20F40754 -:101950000028C0A9EDB10002C4415808C2500E349D -:10196000C064FAC9FE20F2040024C278FACAFED488 -:101970000A99F407002A0E98130B14AB2FF81034B1 -:10198000CFC4EEC9FFFFEE0811FFF0C7FFFF2FE83D -:1019900008080807EA080025F2070007FAC8FED47D -:1019A000F0040324C1C8E6C8FFFF0E33C094FAC296 -:1019B000FE201093E4040024E8F4FF4CC1086A04FC -:1019C0002FC559F7E089000B1093FACEFE20FC07D3 -:1019D00000282FF7F144FF4CC0281093A80CCCA886 -:1019E000F5D1C001C2A05808C1400E34C064FACB82 -:1019F000FE20F6040024CAB8FACAFED40A99F407F5 -:101A0000002A0E98130B14AB2FF81034CFC4C8481B -:101A1000E6C8FFFF0E33C064FACAFE20F4040024B7 -:101A2000C9586A042FC559F7E08900A31093FAC971 -:101A3000FE20F2070028C988E2110002C5904D6916 -:101A400040821232C091FACBFE544059403C5008BB -:101A5000F01F0052C088FACBFE544059403C500859 -:101A6000F01F004F40085808C2500E34C064FACE30 -:101A7000FE20FC040024C278FACCFED40A99F807B0 -:101A8000002C0E98130E18AE2FF81034CFC4EEC9E8 -:101A9000FFFFEE0811FFF0C7FFFF2FE80808080757 -:101AA000EA080025F2070007FAC8FED4F004032470 -:101AB000C1C8E6C8FFFF0E33C094FACCFE201093D5 -:101AC000F8040024E8F4FF4CC1086A042FC559F754 -:101AD000E089000B1093FAC9FE20F20700282FF7C7 -:101AE000F144FF4CC0281093891A890BC438580858 -:101AF000C2500E34C064FAC8FE20F0040024C2783C -:101B0000FACAFED40A99F407002A0E98130B14ABF4 -:101B10002FF81034CFC4EEC9FFFFEE0811FFF0C755 -:101B2000FFFF2FE808080807EA080025F20700076A -:101B3000FAC8FED4F0040324C1C8E6C8FFFF0E3380 -:101B4000C094FAC2FE20E40400241093E8F4FF4C91 -:101B5000C1086A042FC559F7E089000B1093FACE2B -:101B6000FE20FC070028F144FF4C2FF7C0281093FB -:101B7000890C404C2FFC504CFAC8FE54409B10106E -:101B8000402A1600F4000000FE9FF86F800328BC76 -:101B900080032FF480032E6C80032CE480032B340D -:101BA00040495809C0508C68EDB80006C0313FF874 -:101BB0005048404C288DD832D421217D1497189656 -:101BC000129A5807C064E068008B99383FFCC2281D -:101BD0005807EE0C1700F9B901FFEFD9E10C109985 -:101BE000E0680208BA683FF8504B505C500B502C2C -:101BF000BA781A9B0C9CF01F00095BFCC044E0689B -:101C0000008B8D385807F9B90100FBF81000F1F985 -:101C10001E002E9DD82200008002F568D401129883 -:101C20001499169A189B483C780CF01F0003D802B0 -:101C30000000059880031BB8D4214B3818961697DE -:101C4000700C580CC06078685808C031F01F002F25 -:101C50004AF81037C0514AC870087007C0E84AD81F -:101C60001037C0514A8870087017C0784AA81037DA -:101C7000C0414A58700870278E68EDB80003C1E073 -:101C8000EDB80004C3E1EDB80002C1516EDB580BA2 -:101C9000C0A0EEC8FFBC103BC0400C9CF01F001F52 -:101CA00030088FD88E68E018FFDBAE6830088F18D8 -:101CB0006E488F088E68A3B8AE686E485808C0B1E9 -:101CC0008E68E2180280E0480200C0500C9C0E9B17 -:101CD000F01F00138E69F1D9C001C07030088F2841 -:101CE0006E585C388F68C068EDB90001EFF81005D8 -:101CF0008F286E485808C0618E68EDB80007C02173 -:101D0000DC2AD82A0000059880031F388003EF2CB6 -:101D10008003EF4C8003EF6C8003217C8003276CF1 -:101D20004828700C2F4C5EFC00000598D4211697B3 -:101D3000189676485808C7D0580CC060786858087C -:101D4000C031F01F003D4BD81037C0316C07C0A820 -:101D50004BB81037C0316C17C0584BA81037EDF78F -:101D600000028E6A1498EDBA0003C420ABBAAE6AC2 -:101D70006E185808E08900066F085808E08A005A73 -:101D80006EB85808C560E21A1000C0306F55C0F830 -:101D900030196E8B0C9C5D1818955BFCC0816C38FB -:101DA00059D8C4708E68A7A8AE68D8228E68EDB8DE -:101DB0000002C0916E1810156ED85808EFF8101078 -:101DC000EBD8E1156EB80C9C30090A9A6E8B5D1841 -:101DD0008E680A3CC261ABD8300C6E49AE688F1C6D -:101DE0008F09EDB8000CC251EF450054D8226E4562 -:101DF0005805C1F06E04F5DAC0028F05F9B801008C -:101E0000EFF800050A148F28C11808990A9A6EA8DD -:101E10006E8B0C9C5D181814580CE08900078E68B6 -:101E2000A7A83FFCAE68D82218055804FE99FFEF1A -:101E3000D82A000080031F388003EF2C8003EF4C6A -:101E40008003EF6CD401189B580CC0714868487B24 -:101E5000700CF01F0007D8024868700CF01F0003D8 -:101E6000D80200008003ECA880031D2C800325E825 -:101E7000000005985EFC5EFCD401483BF01F0003A7 -:101E8000D80200008003629080032640D42116957A -:101E9000F606105CECCBFFF4F01F00071897C0901B -:101EA0009915300B2F4C0C9A8F2C8F0BF01F0003C1 -:101EB0000E9CD8228002E2BC8002E8BCD42149C832 -:101EC000189670076E685808C0410E9CF01F0019E4 -:101ED000EEC7FF2830056E2C6E18C0689869EA09B5 -:101EE0001900C1202A4C2018CFA76E085808C071CD -:101EF000304B0C9CF01F00108F0CC0306E07CECB07 -:101F000030C88D38D8223008F948004C99089928F3 -:101F1000991899489958996899D899E8F9480048C2 -:101F20003FF8B8783018B868D82200008003ECA8D1 -:101F300080031F3880031E8CD421189678675807B9 -:101F4000C4714A48301599A8F94700D8F94700DC10 -:101F5000F94700E09965F01F00208D0C0C9CF01FE4 -:101F6000001E8D1C0C9CF01F001C6C093048930750 -:101F7000B268931793276C18B27793479357936778 -:101F80009389910791179127494E495B939E93AB93 -:101F9000494A495493BA93C43099B069B07591C411 -:101FA0009147915791679188919E91AB91BA8D2CF1 -:101FB00031289907B868991799273028B87899C4B3 -:101FC0009967999E99AB99BA99479957998CD82254 -:101FD00080031E7880031EBC80032B1080032AD848 -:101FE00080032AAC80032A9CD4014858169AFAC967 -:101FF000FFFC189B700CF01F0003D802000005982E -:1020000080033424D43114901291169310971895AC -:10201000F20A02425802C0310491C418580CC06040 -:1020200078685808C031F01F001F49F81037C031D8 -:102030006A07C0A849D81037C0316A17C05849C8C4 -:102040001037EBF700026E185808C03430088F18AC -:102050000496C148F01F00176E08080308160E9B6F -:10206000F00400040A9C8F04F01F0013C070E40603 -:102070000109F2000D081091C1286E146E08069C2B -:10208000089A109B0836FE9BFFE70C9AF01F000988 -:102090006E080C088F086E180C188F18029CD83226 -:1020A00080031F388003EF2C8003EF4C8003EF6C1C -:1020B0008002E736800328BCD40112981499169A3E -:1020C000189B483C780CF01F0003D80200000598CC -:1020D00080032004D42116951897F01F00234A345A -:1020E00068287016E016FFFCECC8FF91F0050105AA -:1020F000E015FF80EAC50080E045007FE08A00230C -:10210000300B0E9CF01F001A68280C08103CC1A16F -:10211000EA0B11000E9CF01F00165BFCC171300B26 -:102120000E9CF01F00136828F808010958F9E08A8E -:10213000000AA1A9911948F8700948F8F80901099D -:1021400091090E9CF01F000DD82A68280A16A1A636 -:102150009116489870090A190E9C9109F01F000702 -:10216000DA2A00008002E8CA0000059C8002EBC861 -:10217000000009A800007AD08002E8CCD42116968D -:102180001897580BE08000CAF01F004E20864CEADA -:102190006C18742EF9D8C001A1C8EC080009721B94 -:1021A000E01BFFFC1C39C1D1F6080008580CC081A7 -:1021B0006C09121612086C3B6C299729933B1099F5 -:1021C0009526A1A98D194C1972091238C0634C08C3 -:1021D0000E9C700BF01F003F0E9CF01F003FD8229A -:1021E000931B580CC030300CC1086C0EF4C5FFF8BE -:1021F0001C161C086C2E0A3EF9BC0001EDF51003FC -:10220000EBFE1A02FDF51A03F20B000E7C1EEDBE6A -:102210000000C1301608580CC0C14ABE722B2F8E68 -:102220001C3BC071973697268D2B8D3B301CC058B8 -:10223000722B7239932B97391099EC080908A1A9D0 -:102240008D19580CC671E04801FFE08B0013A3986C -:10225000F4080039722B8D398D2B97369326A348BD -:102260007419301BF6080948F3E810089518C528BA -:10227000F00916095849E08B0006F00B16062C8B66 -:10228000C2D85949E08B0005F2CBFFA5C278E049DE -:102290000054E08B0006F00B160C292BC1F8E04926 -:1022A0000154E08B0006F00B160F289BC178F00B51 -:1022B0001612E0490554E088001137EBC0F8000021 -:1022C0008002E8CA0000059C000009A400007ACC46 -:1022D000800320D48002E8CC284BF40B003C782902 -:1022E0001839C0E17418A34B301CF80B094BF1EB03 -:1022F000100B1298951BC0A872291839C060721A69 -:10230000E01AFFFC1438CF9372388D388D2993363C -:1023100091260E9CF01F0002D82200008002E8CC1B -:10232000D431203D14941895169774285808E080ED -:10233000014A9668EDB80003C04176485808C0C10C -:102340000E9B0A9CF01F00A1C0708E68A7A8AE6803 -:1023500030988B38C3598E6368000696E2160002E7 -:10236000C2103003E06204000696C04860036016A5 -:102370002F805806CFC0E0460400EC091780E4091E -:1023800017B0069A6EA86E8B0A9C5D181816580C2A -:10239000E08A0114682818188928E08001141803BD -:1023A000CE9BE7D3C001C07050060C930C91501522 -:1023B0000892CA0806960891C048600360162F80EC -:1023C0005806CFC08E686E241099E2190200C570BD -:1023D0000836C4531099E2190480C4106E4B6E097C -:1023E000161950096E59109CF209001A3028F40889 -:1023F0000C08FAE9000410944009E21C04002FF9CB -:102400000C091238F2041730580CC110089B0A9CB2 -:10241000F01F006F1892C150400A6E4BF01F006D04 -:102420008E68E018FB7FA7B8AE68C0E8089A0A9CDF -:10243000F01F00691892C0816E4B0A9CF01F006764 -:1024400030C88B38CBA8400A4009E80A010AE409E1 -:1024500000088F548F2A8F088F420C940836EC04A2 -:102460001730069B089A6E0CF01F005D6E08080876 -:102470008F086E2808180C948F28C30808365FBA96 -:102480006E0C6E48103C5FB8F5E80008F2081800C2 -:10249000C0E0069B089AF01F00526E0808080E9BC9 -:1024A0008F080A9CF01F004FC190C8786E591236F1 -:1024B000C0A36EA8069A6E8B0A9C5D181894E089DA -:1024C000000EC7B80C9A069BF01F00456E080C085A -:1024D0000C948F086E280C188F28622808188328FF -:1024E000C71008160803C6DB6003601130082F8090 -:1024F00050085801CFA0400A580AC181029A30AB57 -:10250000069CF01F0039F9B80101F9D8E106EDD3B6 -:10251000E116F9B90101FBF91A00F9B80001E3D895 -:10252000E006F9B80001FBF80A000236EC04178057 -:10253000E20417B06E596E25F20500050A345F9A61 -:102540006E0C6E48103C5FB8F5E80008300AF408DD -:102550001800C0E0069B0A9AF01F00216E080A08C6 -:102560000E9B8F08401CF01F001FC180C2681234F0 -:10257000C0A56EA8069A6E8B401C5D181895E08960 -:10258000000EC1B8089A069BF01F00156E080808D7 -:1025900008958F086E2808188F280A16C0710E9BA0 -:1025A000401CF01F0010C091500664280A188528AE -:1025B000C0900A110A03C9EB8E68A7A8AE683FFC59 -:1025C000C028300C2FDDD83280031C388002E2BCDA -:1025D0008002E7368002E8E88003217C8002E87E02 -:1025E00080031D2C800328A4D43130051893169045 -:1025F0000A91F01F00123FF2E6C7FF28C1786E264D -:102600006E142F46C0D88C08E2081900C0808C18C0 -:10261000E4081900C040069C5D1018452A462014A5 -:10262000ECCB000C5804CF046E075807CE91F01F76 -:1026300000040A9CD832000080031E7480031E76BA -:10264000D43130051691F8C7FF280A92F01F001008 -:102650003FF3C1686E266E142F46C0C88C08E4088C -:102660001900C0708C18E6081900C0305D111845BB -:102670002A462014ECCC000C5804CF146E075807DF -:10268000CEA1F01F00040A9CD832000080031E7403 -:1026900080031E76D401201D4848189B1A9A700C9E -:1026A000F01F00032FFDD80200000598800326B01C -:1026B000D431169414921895F01F00204A08700720 -:1026C0005807C050300633DA0C98C0780A9CF01FC7 -:1026D000001D0E9CD8322FF6E8060709F0091800F5 -:1026E0005F1BF40918005F191669F0091800CF4143 -:1026F000C1A8029C0C9A089BF01F0013C1216E0117 -:102700000C010388E6081800C0C148D870080A9C6C -:102710001017A3478507F01F000BE2CCFFFFD8324C -:102720002FC7C02833D36E015801CE410A9CF01F39 -:102730000005029CD8320000800361BC000009B093 -:10274000800361BE8002EDE6E04C00FFE0880003FC -:102750005EFD48487008F00C070CE21C00085EFCA7 -:102760000000049C481C5EFC8003EF8CD42120FDFB -:10277000966816971896E2180002C3C1967BF00B74 -:102780001900C0551A9AF01F002AC0F48E650A98E5 -:10279000ABB8E2150080AE683004E0680400F9B51B -:1027A0000140F0051700C1B84018E218F000E048F9 -:1027B00020005F04E0488000C0D16EB949D81039CC -:1027C000C0918E68E0650400ABA8EF450050AE688C -:1027D000C0688E68E0650400ABB8AE680A9B0C9CCC -:1027E000F01F00158E68C0D1EDB80009C1E0A1B896 -:1027F000AE68EEC8FFB98F488F0830188F58C1589F -:10280000A7B88F4CAE688F5548C88F0C8DA8580458 -:10281000C0C08E7CF01F000AEFF81206F9B9010162 -:10282000F1D9E138EFF81C062F1DD822800362A8E9 -:1028300080032AAC8002E2BC80031E788002F1682B -:10284000D42118971096580AC041149B3019486A31 -:10285000F01F00065BFCC06130088D08E068008A4C -:102860008F38D82280037E208003286C201D5809D1 -:102870005F09580BFA0B1700580A5F18F3E80008B5 -:102880003009F2081800C0303FECC0B8580AC03117 -:10289000149CC078158997091589F00918005F1CE8 -:1028A0002FFD5EFCF7DBC008C068201A19881638B7 -:1028B0005E0C2FFC580ACFA15EFAD703D4211697DD -:1028C0001896580CC06078685808C031F01F00385E -:1028D0004B881037C0316C07C0A84B781037C03117 -:1028E0006C17C0584B581037EDF7000230088F189E -:1028F0008E68EDB80005C590EDB80002C1A0EDB836 -:102900000004C060A7A8AE6830988D38C4D8EDB870 -:102910000003C0B10E9B0C9CF01F0029C4618E689F -:102920008F6CA3D88F2CAE688E68A3A8AE68C14800 -:102930006EDB580BC110EEC8FFBC103BC0400C9CB6 -:10294000F01F0020300C6F088FDC8F185808C04033 -:102950006EF88F08D8226E485808C0510E9B0C9C08 -:10296000F01F00198E68F1D8C002C0604978498B09 -:10297000700CF01F00186E4A6E980C9C8F0A6E59EE -:102980006E8B5D188E688F1CADD8AE68580CE08ACF -:102990000003D82A580CC041A5B8AE68C058A7A8F3 -:1029A000AE6830088F18DC2ADC2A000080031F384C -:1029B0008003EF2C8003EF4C8003EF6C80031D2C11 -:1029C0008003217C8003276C8003ECA8800329D43A -:1029D00080032640D4019868E21800095898C02066 -:1029E000D80AF01F0002D80280031E44D431189E7A -:1029F0001738E048005EC030300AC0381738301A47 -:102A00003009FC090B0A2FF9E0490100CFB1580841 -:102A1000C041F6CC0001D832149632D4EC16000135 -:102A2000300735D5C0381498129BFC080B06F6C940 -:102A3000FFFF178A129CE80A1800C090EA0A1800E3 -:102A4000C1E0EE0A1800CF01169CD832138C103C5E -:102A50005F53E04C005D5F0AE7EA100AEE0A1800D7 -:102A6000C03032D8CE2BF0CAFFFFFC0A000A14C6D1 -:102A70002FF81838CFD52FEB2FE9CDCBD8321498BB -:102A8000F5DBC01FF00C1100104CFC187FF0F5ECCA -:102A900013FCF00C010CBF9C5EFCD703D401967BA9 -:102AA000F01F0002D8020000800353E0D4211697E3 -:102AB000967BF01F00098E681099ADC95BFCEFF999 -:102AC0000C06EFFC1A15E0691000F1D9E138EFF8B7 -:102AD0001C06D822800362D4D421966816971495D8 -:102AE0001294E21801001896C0603029300A967BD3 -:102AF000F01F00068E68ADC808990A9A8E7B0C9C60 -:102B0000AE68F01F0003D822800362D4800353B460 -:102B1000D4211697967BF01F0007C0656F581808E0 -:102B2000EF480054D8228E68ADC8AE68D8220000A5 -:102B30008003694CD431208D4DB8500B7008507C07 -:102B4000502A1295501816970F36401AF4060704AB -:102B5000E2140008CFA1E046002DC0410F3630142A -:102B6000C058E046002BC0210F3658055F085905B4 -:102B70005F0A3009F1EA100AF20A1800C1D0E046F3 -:102B80000030C1210F8A358B378CF60A18005F0B95 -:102B9000F80A18005F0A144BF20B1800C0500F9689 -:102BA00031052FE7C0985808C070E0460030F9B5ED -:102BB0000008F9B5010A5804C0713FF0E061FFFF59 -:102BC000EA117FFFC0483000FC118000EA03141FA7 -:102BD0000A980699009A029BF01F00340699505AF1 -:102BE0000A98009A029BF01F0032069C14981699CE -:102BF000300A30003001149E109212934019F206F0 -:102C0000070BF3DBC001F9B90137F9B90057506977 -:102C1000ECC80030EDBB0002C0804069F7DBC002A9 -:102C2000EC090108580BC2D00A38C2B40430E601DE -:102C300013005FB9F3EA13FAFC0A1800C1F104307B -:102C4000E60113005F09405A14385F9AF5E900095C -:102C5000FC091800C131E005064AEA010249504862 -:102C6000F8000349BF58F20B000B5038FAE0000C93 -:102C70001400E20B0041301AC0283FFA0F36CBFB9C -:102C80005BFAC1715804C0713FF0E061FFFFEA11C7 -:102C90007FFFC0483000FC11800032284079933813 -:102CA000C10800000000049C800373408002D99892 -:102CB0005804C07030083009F0000100F2010141F1 -:102CC00040285808C0B0580AF9B801FFEFD8E10A07 -:102CD000FBFA1A00402940089308009A029B2F8DA6 -:102CE000D8320000D431209D4DE816927008508CE7 -:102CF000505A1295504816970F36404EFC0607035F -:102D0000E2130008CFA1E046002DC0410F3630137A -:102D1000C058E046002BC0210F3658055F08590502 -:102D20005F0A3009F1EA100AF20A1800C1D0E04641 -:102D30000030C1210F8A358B378CF60A18005F0BE3 -:102D4000F80A18005F0A144BF20B1800C0500F96D7 -:102D500031052FE7C0985808C070E0460030F9B53B -:102D60000008F9B5010AEA04141F0A9808993FFA05 -:102D70003FFBF01F003D0899502B503A0A983FFA4C -:102D80003FFBF01F003A300B300830094041E206AB -:102D9000070EE1DEC001ECCC00305800F9B101377C -:102DA000F9B100571C90E2100004C061EC01010C65 -:102DB000FDDEC002C3700A3CC354FAE000080038CC -:102DC000E20913005FBE3000FDEB13FBE00B1800BF -:102DD000C261FAE00008143C5F9E0038E20913006B -:102DE0005F0B3000FDEB000BE00B1800C181F0051C -:102DF0000640EA09024BFAE10000E808034BF6013D -:102E00000001507C5001BF5CFAE00000506C301BA8 -:102E1000FAE800180008F2010049C0283FFB0F360D -:102E2000CB6B5BFBC071322840803FF981383FF8A3 -:102E3000C0985803C07030043005E8080108EA095A -:102E40000149405E580EC080580BF9BA01FFEFDA15 -:102E5000E102405A9502109A129B2F7DD832000051 -:102E60000000049C8002D99880037340D431203D37 -:102E70004C48502C70011698113EE20E0705E215E1 -:102E80000008CFB1E04E002DC041113E3015C058B2 -:102E9000E04E002BC021113E58095F0C59095F0616 -:102EA0003007F9E61006EE061800C1E0E04E0030EB -:102EB000C131118635843783E80618005F04E606C1 -:102EC00018005F06E9E61006EE061800C050119ED5 -:102ED00031092FE8C098580CC070E04E0030F9B9A5 -:102EE0000008F9B9010A3FF3E6090D023007500363 -:102EF0000E9C0E93E20E0704E1D4C001F9B0013735 -:102F0000F9B000575010FCC600300890E2100004E1 -:102F1000C0814010E9D4C002FC0001065804C1C0C1 -:102F20001236C1A4043C5FBEFDE713FEE60E180096 -:102F3000C101043C5F0E40070E365F97EFEE000EB6 -:102F4000E60E1800C061B33C3017EC0C000CC02832 -:102F50003FF7113ECD0B5BF7C061322940200E9C3C -:102F60008139C0485805FBBC0100580AC070580799 -:102F7000F9B901FFF1D9E10B950B2FDDD832000033 -:102F80000000049CD421169776DBEEC8FFBC103BF2 -:102F9000C171E06B0400F01F0015C250E06804002E -:102FA0008FDC8FE8EF380046F8CCFC03B8A8EF3888 -:102FB0000045B898EF380044B8888F0CC1386EE5EA -:102FC000EA041501089AF01F000A1896C0C00A9A70 -:102FD000189BF80500050A9CF01F00068FE48F057A -:102FE0008FD6D82ADC2A00008002E2BC8002E8E802 -:102FF0008002E736D4211697149618955BFBC650CD -:10300000580CC06078685808C031F01F00314B1868 -:103010001036C0316A06C0A84AF81036C0316A16A8 -:10302000C0584AE81036EBF600028C68A5D8AC68A8 -:10303000EDB80002C140EDB80004C461EDB8000372 -:10304000C0B10C9B0A9CF01F0026C3E18C688D6CFC -:10305000A3D88D2CAC688C68A3A8AC680E946CD8EF -:103060005C545808C1006C196CE81039C0650A9CA2 -:103070000C9BF01F001CC2816C0820188D08B084C6 -:103080000897C0C86C495809C0C06C081238E0885D -:10309000000911770837C0518D086C182FF8C12826 -:1030A0006C18ED4800406C088DF8ECC8FFBC8DD85A -:1030B00030388DE8ECC8FFBAED6400468D080897FB -:1030C00030188D18C0283FF70E9CD82280031F3877 -:1030D0008003EF2C8003EF4C8003EF6C80031D2CEA -:1030E00080032F84D431208DFAC4FFBC504B682E4E -:1030F000505812967C0B7005506E580BF40B17004D -:103100006803681140493008C2C92FFB325C178A36 -:10311000F80A18005F1EF00A18005F1CFDEC000C96 -:10312000F00C1800CF31580AE0800129300C3FFA2A -:103130001890503A18941892F80C003C1697507C4E -:103140004CDC0F3AF80A070E407C1C0C4CBEFC0C01 -:10315000070E201E500E4CAEFC0C070C507C400C91 -:10316000587CE08B00F84C7EFC0C032F368BF60A63 -:103170001800E08000F0371BF60A1800C07034CB4E -:10318000F60A1800C051A3B4CE58A5B4CE380F8BA0 -:1031900036CAF40B1800C051A5B4EECBFFFFCDB872 -:1031A000A5A4CD88EBD5C005367CF80A1800E08BC5 -:1031B0000027365BF60A1800C48234FBF60A1800B2 -:1031C000C480E08B000C345BF60A1800C3E0347B4B -:1031D000F60A1800C3A0344BC088358BF60A1800D5 -:1031E000C2C0E08B0007355BF60A1800C351C31854 -:1031F000363BF60A1800C2F0364BC0E8370BF60A29 -:103200001800C250E08B000D36EBF60A1800C1F032 -:10321000E08B0014369BF60A1800C1E1C0E8375B6A -:10322000F60A1800C0A0378BF60A1800C060373BBA -:10323000F60A1800C111C0B8EDB40004C0A0EDB486 -:103240000005C0913020C0883040C0683030C04890 -:103250003010C0283000403B5BFBC040E20B09202F -:10326000C7985860E08B00776C0AEACCFFFF486E85 -:10327000FC00032F8003F2708003F1D48003F16817 -:103280008003EFC88003EFE8F4CBFFF88D0BF4EA7E -:103290000000E605083AC0F8F4CBFFFC8D0B740A79 -:1032A000E605093AC088F4CBFFF88D0BF4EA00007C -:1032B000E605083A0E9B1895C4E8620A5BFAC0B1AD -:1032C00050195028E06A0080300B029CF01F004D1E -:1032D00040284019E4CC00010E9B503CF20C0C49F4 -:1032E000C3A8620A5BFAC0B150195028E06A008096 -:1032F000300B029CF01F0043402840192012300A76 -:103300000E9BE202092AF2020C49C25816976C0A77 -:10331000F4CBFFFC8D0B740A0E9BE605093A2FF5E2 -:10332000C1A8F4C20030C068E40200222FF7F40202 -:1033300000120F8A580AC0E0230A589AFE98FFF636 -:10334000C0982FF70F8A580AC050230A589AFE983F -:10335000FFFA0E9B407C30BAF40C1800FE91FEEE92 -:103360004042178C0A325F4AF00C18005F1CF9EAE1 -:10337000000AF00A1800FE91FECB3008404E178A72 -:10338000E2050021F00A1800FC091710E6050038D4 -:10339000069EC2A8620A583AC1E0E0890007581A9E -:1033A000C1A0582AC181C058585AC0C0C0B5C13840 -:1033B0006C0AF4CCFFF88D0CF4E20000F0E300009E -:1033C000C1086C0AF4CCFFF88D0CF4E20000F0E3C5 -:1033D0000000C0786C0AF4CCFFFC8D0C740A910AD2 -:1033E0002FF52F882FC11235FE9AFFD61C9340521D -:1033F000406E85059D0B404BE60B003C2F8DD8326F -:103400008002E8BCD421149774285808C04195184C -:10341000109CD822F01F000330088F188F28D82264 -:1034200080032320D431FACD06BC5109169114979C -:103430001895F01F0056780C50CC5805C0706A687B -:103440005808C0410A9CF01F00524D281031C0316D -:103450006A01C0A84D081031C0316A11C0584CF83B -:103460001031EBF100028268EDB80003C041624800 -:103470005808C071029B0A9CF01F0049E0810F941C -:1034800082681099E219001A58A9C3D18279300ACA -:10349000F4091900C385A1D8FB5805D06288FB4800 -:1034A00005E462A8FB4805ECFAC8FFBCFB4805D45C -:1034B000FB4805C4E0680400FB4805D8FB4805CC80 -:1034C0003008FB5905D20E9A4109FAC7FA3CFB486D -:1034D00005DC0A9C0E9BF01F003350BCC0950E9B70 -:1034E0000A9CF01F003140BEF9BE01FF50BEFB0830 -:1034F00005D0EDB80006E0810F598268A7A8A26840 -:10350000E08F0F543008FB4806B4FB480690FB4898 -:10351000068CFB4806B03008300950A75078FAC432 -:10352000F9E03FF85059FB440688FB480544129CDB -:10353000506950D950E950B9129740A2325A300818 -:10354000C0282FF20589F00918005F1BF409180044 -:103550005F19F3EB000BF00B1800CF4140ABE40B0D -:103560000106C300FAF806900C08890BFB48069088 -:103570008916FAF8068C2FF8FB48068C5878E089F3 -:1035800000152F84C1C800008003276480031F3802 -:103590008003EF2C8003EF4C8003EF6C80031C381A -:1035A0008003342480031D2CFACAF978029B0A9CFC -:1035B000F01F0071E0810EF4FAC4F9E040BA0C0A81 -:1035C00050BA05893008F0091800E0800ED930099A -:1035D000FB6806BB0E96E4C8FFFF3FFE50945041C7 -:1035E0000E940491508950A8502E50391293129085 -:1035F00010970A92C0783FFC0A97502CC038300BC5 -:10360000503B0F38C0281290F0C90020E049005804 -:10361000E08B0A4A4D9AF409032F50A750800C976B -:103620000495089602924D6940941090404150D9FB -:10363000E08F08AA3008FB3906BBF0091800CE213C -:103640003208C6E8A1A3CDEB0F89F2C80030589824 -:10365000E08B001DEEC8FFFF300B2309F60B002B9B -:10366000F20B001B1139F2CA0030589AFE98FFF78E -:10367000E0490024CC51E04B0020E0890E90201B53 -:10368000FAF906B4123BC095C108FAF906B4ECCABF -:10369000FFFF1236C1F5C268FACEF9441097FC0B51 -:1036A000003BF6F0FD88C3581097FAC8F9501AD8B5 -:1036B000FAC8FAB81AD8FAC8FBB4029A1AD8049C05 -:1036C000FAC8F940FAC9FFB4F01F002E2FDD7800C8 -:1036D000C208FACCF9441496F8040038F0F0FD88DA -:1036E000C188410859F9E0890011F0CBFFFC510B6A -:1036F0007000FACBF944F6090038F140FD882FF943 -:103700001496FB4906B4C058700014962FC851088F -:103710005800FE94FF785C30A3A3C74B32B8FB6817 -:1037200006BBC70B0F38E048002AC0303009C80874 -:103730000F88F0C900305899E08B0026EEC5FFFFD6 -:10374000300B2308F60B002BF00B001B0B38F0C9D5 -:1037500000305899FE98FFF7E0480024FE91FF5191 -:10376000E04B0020E0890E1B201BFAF806B4103B4A -:10377000C115C188800334048003F0048003EDD0B8 -:10378000800330E4FAFA06B4ECC9FFFF1436C1F541 -:10379000C288FACAF944F40B003BF6FBFD88502BB3 -:1037A000C3C8FAC8F9501AD8FAC8FAB81AD8FAC869 -:1037B000FBB4029A1AD8049CFAC8F940FAC9FFB4BB -:1037C000F01F017B2FDD780C502CC27812960E95DD -:1037D000FAC9F944F2040038F0F8FD885028C1D83D -:1037E000410859FAE0890014F0CBFFFC7008510B36 -:1037F0005028FAC6F944402EEC0A0038F14EFD88F4 -:103800002FFA0E95FB4A06B41296C078700C0E95EE -:103810002FC8502C12965108402B580BFE95FEEDE8 -:103820000A97CF0AF20900290F38F4090019F0CAE3 -:103830000030589AFE98FFF83FFAF20A0C495029D6 -:10384000CE4AA7B3CDFA30092308F2090029F009BE -:1038500000190F38F0CA0030589AFE98FFF7E04878 -:103860000024FE91FED2E0490020E0890D98F2C4C8 -:10387000000130195039CC6AA3B3CC4AA7A3CC2A93 -:103880000F8836CEFC081800C0412FF7A5B3CBAA8D -:10389000A5A3CB8AA5B3CB6A50A750800C971090F4 -:1038A00008960495409402920E994041FAF806B4A5 -:1038B000403C580CC1D01036C064FACBF944F6062F -:1038C0000036C1D8FAC8F9501AD8FAC8FAB81AD8C6 -:1038D000FAC8FBB41AD8FAC8F940FAC9FFB4049A76 -:1038E0000C9B0A9CF01F01322FDD19B8C2282FF75C -:1038F0001039C084FACAF944F4060036ED38FD8B5D -:10390000C188410959F8E0890012F2CAFFFC510A46 -:103910007209FAC6F944EC08003A2FF8F549FD8817 -:10392000FB4806B4F1D9C008C04813B82FC95109E3 -:10393000FB680660300E30083012FB6806BB502E64 -:10394000E08F08C450A750800C9704950896029207 -:10395000409410904041A5A3C0A850A750800C9758 -:10396000049508960292409410904041EDB30005F2 -:10397000C511FAF806B4403C580CC1E01036C064DA -:10398000FACBF944F6060036C208FAC8F9501AD83C -:10399000FAC8FAB80C9B1AD8FAC8FBB41AD8FAC9F4 -:1039A000FFB4FAC8F940049A0A9CF01F01012FDD08 -:1039B000781B7809C2B8EECAFFFF1037C0B4FAC945 -:1039C000F9441497F2060036ECFBFD8CECF9FD8807 -:1039D000C1D8410959F8E0890014F2CBFFF8510B26 -:1039E000FAC6F944721BEC08003C7209F94BFD8CD5 -:1039F000F949FD882FF81497FB4806B4C078F2C83F -:103A0000FFF8721B1497510872091698FAE9000022 -:103A1000CAE8EDB30004C171FAF806B4403E580E8E -:103A2000C0801036C694FACCF944F8060036C8288F -:103A3000EECAFFFF1037E0840081FACBF944F606A6 -:103A40000036C778EDB30006C4B1FAF806B4403CBE -:103A5000580CC1D01036C064FACBF944F6060036D3 -:103A6000C1F8FAC8F9501AD8FAC8FAB81AD8FAC878 -:103A7000FBB41AD8FAC8F940FAC9FFB4049A0C9BEF -:103A80000A9CF01F00CB2FDD9818C268EECAFFFF1A -:103A90001037C094FAC9F9441497F2060036ED08BD -:103AA000FD8AC1A8410959F8E0890013F2CBFFFC57 -:103AB000510B7209FAC6F944EC08003B2FF8F7499C -:103AC000FD88FB4806B41497F1D9B010C05892187D -:103AD00014972FC951095018BF585008C488FAF8D4 -:103AE00006B4403C580CC1D01036C064FACBF9443F -:103AF000F6060036C1F8FAC8F9501AD8FAC8FAB86A -:103B00000C9B1AD8FAC8FBB4049A1AD80A9CFAC8B3 -:103B1000F940FAC9FFB4F01F00A62FDD780BC248A8 -:103B2000EECAFFFF1037C094FAC9F944F206003616 -:103B30001497ECFBFD88C188410959F8E089001110 -:103B4000F2CBFFFC510BFAC6F944720BEC080039BA -:103B5000F34BFD882FF81497FB4806B4C058720B3E -:103B600014972FC95109501BBF5B500BFAEA000094 -:103B7000580A5C2BC0E43008FAEA00003009F00A69 -:103B8000010AF20B014B32D8FAEB0000FB6806BBCE -:103B90003018E08F071150A750800C9704950896B5 -:103BA00002924094109040410E99EDB30003C4116D -:103BB000FAF806B4403A580AC1901036C645FAC819 -:103BC000F9501AD8FAC8FAB81AD8FAC8FBB40C9B3C -:103BD0001AD8049AFAC8F940FAC9FFB40A9CF01F2F -:103BE00000742FDD78165076C4882FF71039C0C4C2 -:103BF000FACEF944FC060036ECFCFD8C507CECF669 -:103C0000FD885056C668410959F8E0890010F2CA8B -:103C1000FFF8721B510A7209FACAF944507B5059D5 -:103C2000F4080039405B407AC47872185078C4C8F0 -:103C3000FAF806B4403E580EC2301036C094FACCA2 -:103C4000F944F8060036ECFBFD8C507BCD9BFAC89E -:103C5000F9501AD8FAC8FAB8049A1AD8FAC8FBB4B4 -:103C60000C9B1AD80A9CFAC8F940FAC9FFB4F01F95 -:103C700000502FDD781A507A780C505CC2A82FF7CC -:103C80001039C094FAC9F944F2060036ECF8FD8CFC -:103C90005078CB6B410959F8E0890015F2CAFFF85A -:103CA00072167209510A5059FACEF9445076FC083E -:103CB0000039405B0C9AF2EBFD882FF8FB4806B404 -:103CC000C088721C507CF2C8FFF851087209505924 -:103CD000405B407AF01F00371896C1503008300919 -:103CE000405B407AF01F0034C04032D8FB6806BB0E -:103CF0004B284B36A7D3E0400047F00617A03032E0 -:103D0000E08F06E7405B407AF01F002EC0C05026CF -:103D10004AD84AE6A7D3E0400047F00617A0303261 -:103D2000E08F06DD402A5BFAC04130695029C11896 -:103D3000E04000475F09E04000675F08F3E81008D3 -:103D4000F8081800C06040285808F9B80001502849 -:103D500040784059FAE90694A9A3FAF8069458085D -:103D6000C065405E300C506E509CC078405B32DACB -:103D7000EE1B8000509A506BE04000465F09E04027 -:103D800000665F08F3E810085048C0404022303910 -:103D9000C228E04000455F09E04000655F084046FA -:103DA0001049EC091800C1314022C148800330E4B9 -:103DB0008003697880036FC08003F2408003F2447F -:103DC00080032A7E8003F2488003F24C402EFCC21E -:103DD000FFFF3029FAC8F95C1AD8FAC8F9541AD882 -:103DE000FAC8F94C0A9C1AD80498409B40AAF01FC4 -:103DF00001E0E04000475F19E04000675F18189657 -:103E00002FDDF3E80008C041EDB30000C301EC0270 -:103E1000000C503C404B580BC1500D893308F00941 -:103E20001800C0B130083009406B407AF01F01D152 -:103E3000FBB20001FBF20BAB403AFAF806AC100AF9 -:103E4000503A406B30083009407AF01F01CAC090E8 -:103E50004039FB4906A4C05810C9FB4806A4C02835 -:103E60003309FAF806A4403E1C38CF73E0400047FF -:103E70005F09E04000675F08F3E81008FAF906A45C -:103E80000C1950695808C0B0FAF806AC5BD8C05598 -:103E9000402C1838E08A006A2020C058E0400065B5 -:103EA000E0890046FAFB06ACFB60069C201BFB4B3E -:103EB00006ACC0475C3B32D8C02832B8FB68069DD0 -:103EC000589BE08A001DFAC9FA3530AA12980E9C58 -:103ED0000C92F60A0C060E9B2D0B10FB0C9B5896B1 -:103EE000FE99FFF92D0B1897049610FBFACAF96298 -:103EF000C038113B14CB1238CFD3C0982D0B3308E8 -:103F0000FB6B069FFB68069EFACAF960FAC8F96463 -:103F1000F408010850E81092406B1602581BE08923 -:103F20000005EDB30000C3512FF2C338E040006636 -:103F3000C1C1FAF206AC5802E08A000C402A580AC5 -:103F4000C041EDB30000C2512FF240291202C0B8A7 -:103F500040285808C061EDB30000C0303012C1984D -:103F600040222FE23660C158FAF206AC406E1C3295 -:103F7000C065EDB30000F7B200FFC0A8E40811026D -:103F8000406C5802F00217A0F9B20901180236700D -:103F9000409B580BE080059D32D8FB6806BBE08F44 -:103FA000059C50A704950C970292089640414094B6 -:103FB0000E99EDB30005C481FAF806B4403E580EE0 -:103FC000C1D01036C064FACCF944F8060036C1D826 -:103FD000FAC8F9501AD8FAC8FAB8049A1AD8FAC81E -:103FE000FBB40C9B1AD80A9CFAC8F940FAC9FFB472 -:103FF000F01F01612FDD780AC2082FF71039C08445 -:10400000FACBF944F6060036ECFAFD88C16841099E -:1040100059F8E0890010F2CAFFFC510AFAC6F944C7 -:10402000720AEC080039F34AFD882FF8FB4806B401 -:10403000C048720A2FC9510940BE1C98951EBF582E -:104040009508FE9FFA7CEDB30004C480E2130040A3 -:10405000C450FAF806B4403C580CC1D01036C064C5 -:10406000FACBF944F6060036C1D8FAC8F9501AD886 -:10407000FAC8FAB8049A1AD8FAC8FBB40C9B1AD832 -:104080000A9CFAC8F940FAC9FFB4F01F013B2FDDC2 -:10409000780AC2082FF71039C084FACAF944F40626 -:1040A0000036ECFAFD88C168410959F8E089001032 -:1040B000F2CAFFFC510AFAC6F944720AEC08003948 -:1040C000F34AFD882FF8FB4806B4C048720A2FC98E -:1040D000510940BEB40EFE9FFA32FAF806B4403CD5 -:1040E000580CC1D01036C064FACBF944F60600363D -:1040F000C1D8FAC8F9501AD8FAC8FAB8049A1AD826 -:10410000FAC8FBB40C9B1AD80A9CFAC8F940FAC941 -:10411000FFB4F01F01192FDD780AC2082FF71039FC -:10412000C084FACAF944F4060036ECFAFD88C16886 -:10413000410959F8E0890010F2CAFFFC510AFAC699 -:10414000F944720AEC080039F34AFD882FF8FB485D -:1041500006B4C048720A2FC9510940BE950EFE9F91 -:10416000F9EE50A750800C9704950896029240945F -:1041700010904041A5A3C0A850A750800C9704956B -:1041800008960292409410904041EDB30005C5D1CD -:10419000FAF806B4403C580CC2601036C0A4FACB02 -:1041A000F944F6060036ECE8FD88FAE90000C1881B -:1041B000FAC8F9501AD8FAC8FAB8049A1AD80C9B57 -:1041C000FAC8FBB40A9C1AD8FAC8F940FAC9FFB475 -:1041D000F01F00E92FDDF8EA0000FAEB00003008DC -:1041E000E08F03E7EECAFFFF1037C0B4FAC9F94405 -:1041F0001497F2060036ECEAFD88FAEB0000C1885D -:10420000410959F8E0890018F2E60000F2CBFFF806 -:10421000FAE70000510BFAC6F944EC080039FAE657 -:104220000000F2E7FD882FF81497FB4806B44038E9 -:10423000E08F03BFF2E600004038FAE700002F8964 -:1042400014975109E08F03B5EDB30004C161FAF88A -:1042500006B4403E580EC0801036C674FACCF944FD -:10426000F8060036C808EECAFFFF1037C7F4FACBCD -:10427000F944F6060036C768EDB30006C4A1FAF8A3 -:1042800006B4403C580CC1D01036C064FACBF94497 -:10429000F6060036C1F8FAC8F9501AD8FAC8FAB8C2 -:1042A0001AD8FAC8FBB41AD8FAC8F940FAC9FFB448 -:1042B000049A0C9B0A9CF01F00B02FDD9818C2686E -:1042C000EECAFFFF1037C094FAC9F9441497F206FA -:1042D0000036ED08FD8AC1A8410959F8E0890013AC -:1042E000F2CBFFFC510B7209FAC6F944EC08003B13 -:1042F0002FF8F749FD88FB4806B41497F1D9B010A0 -:10430000C058921814972FC951095C785018C46886 -:10431000FAF806B4403C580CC1D01036C064FACB51 -:10432000F944F6060036C1F8FAC8F9501AD8FAC8A6 -:10433000FAB80C9B1AD8FAC8FBB4049A1AD80A9C8B -:10434000FAC8F940FAC9FFB4F01F008B2FDD780BD3 -:10435000C248EECAFFFF1037C094FAC9F944F2060A -:1043600000361497ECFBFD88C188410959F8E089B3 -:104370000011F2CBFFFC510BFAC6F944720BEC08AA -:104380000039F34BFD882FF81497FB4806B4C0584A -:10439000720B14972FC95109501B300E500E1C98E8 -:1043A000E08F030750A750800C970495089602925F -:1043B000409440410E99FAF806B4403C580CC1D0E4 -:1043C0001036C064FACBF944F6060036C1D8FAC8F4 -:1043D000F9501AD8FAC8FAB81AD8FAC8FBB41AD8D9 -:1043E000FAC9FFB4FAC8F940049A0C9B0A9CF01F62 -:1043F00000622FDD7809C2182FF71039C084FACA7D -:10440000F944F4060036ECF9FD88C178410959F801 -:10441000E0890010F2CAFFFC510AFAC6F944720999 -:10442000EC08003AF549FD882FF8FB4806B4C0585F -:10443000F2C8FFFC510872093308FB6806B83788D8 -:10444000300EFB6806B94CDC5019A1B3500E50DC9D -:1044500030283780E08F02AD50A750801090300890 -:10446000FB6806BB0C970495089602924094404165 -:104470000E99FAF806B4403B580BC1D01036C06410 -:10448000FACAF944F4060036C1D8FAC8F9501AD865 -:10449000FAC8FAB81AD8FAC8FBB40C9B1AD8049A0E -:1044A000FAC8F940FAC9FFB40A9CF01F00332FDDA7 -:1044B0007806C2082FF71039C084FAC9F944F20609 -:1044C0000036ECF6FD88C168410959F8E089001012 -:1044D000F2CAFFFC510A7206FACEF944FC08003910 -:1044E000F346FD882FF8FB4806B4C04872062FC972 -:1044F0005109402C580CC105189A300B0C9CF01F28 -:104500000020E08002E9F8060102402B1632E08923 -:1045100002E3E08F02DE300A0C9C502AF01F0019E3 -:104520001892E08F02DC50A750800C9704950896F3 -:104530000292409410904041A5A3C0A850A750807B -:104540000C97049508960292409410904041EDB368 -:104550000005C611FAF806B440395809C2C0103631 -:10456000C124FAC8F944F0060036C2E88003552C8D -:1045700080036F32800330E48003EDE4800328A4DD -:104580008002EDD0FAC8F9501AD8FAC8FAB81AD889 -:10459000FAC8FBB41AD8FAC8F940FAC9FFB4049AA9 -:1045A0000C9B0A9CF01F00C82FDDF8E80000FAE918 -:1045B0000000C2E8EECAFFFF1037C0B4FAC8F944E1 -:1045C0001497F0060036ECEAFD88FAEB0000C2080A -:1045D000410959F8E0890016F2E60000F2CBFFF835 -:1045E000FAE70000510BFAC6F944EC080039FAE684 -:1045F0000000F2E7FD882FF81497FB4806B4C08846 -:10460000F2E600002F89FAE70000510914973018EC -:10461000E08F01CFEDB30004C161FAF806B4403E6B -:10462000580EC0801036C674FACCF944F80600362D -:10463000C808EECAFFFF1037C7F4FACBF944F606F4 -:104640000036C768EDB30006C4A1FAF806B4403CD2 -:10465000580CC1D01036C064FACBF944F6060036C7 -:10466000C1F8FAC8F9501AD8FAC8FAB81AD8FAC86C -:10467000FBB41AD8FAC8F940FAC9FFB4049A0C9BE3 -:104680000A9CF01F00912FDD9818C268EECAFFFF48 -:104690001037C094FAC9F9441497F2060036ED08B1 -:1046A000FD8AC1A8410959F8E0890013F2CBFFFC4B -:1046B000510B7209FAC6F944EC08003B2FF8F74990 -:1046C000FD88FB4806B41497F1D9B010C058921871 -:1046D00014972FC951095C785018C468FAF806B4C9 -:1046E000403C580CC1D01036C064FACBF944F606F1 -:1046F0000036C1F8FAC8F9501AD8FAC8FAB80C9BB3 -:104700001AD8FAC8FBB4049A1AD80A9CFAC8F94015 -:10471000FAC9FFB4F01F006C2FDD780BC248EECA57 -:10472000FFFF1037C094FAC9F944F2060036149717 -:10473000ECFBFD88C188410959F8E0890011F2CBF2 -:10474000FFFC510BFAC6F944720BEC080039F34B2D -:10475000FD882FF81497FB4806B4C058720B1497C5 -:104760002FC95109501B300E3018500EC21950A7D6 -:1047700050800C970495089602924D4C40941090EE -:10478000404150DCEDB30005C551FAF806B4403B9A -:10479000580BC2201036C0A4FACAF944F4060036F9 -:1047A000ECE8FD88FAE90000CF58FAC8F9501AD8A9 -:1047B000FAC8FAB8049A1AD80C9BFAC8FBB40A9C37 -:1047C0001AD8FAC8F940FAC9FFB4F01F003F2FDD2C -:1047D000F8EA0000C0C8EECAFFFF1037C0B4FAC93B -:1047E000F9441497F2060036ECEAFD88FAEB000073 -:1047F000CD18410959F8E0890016F2E60000F2CB25 -:10480000FFF8FAE70000510BFAC6F944EC0800394A -:10481000FAE60000F2E7FD882FF81497FB4806B48B -:10482000CB98F2E600002F89FAE7000051091497AF -:10483000CB18EDB30004C171FAF806B4403E580E2F -:10484000C0801036C6C4FACCF944F8060036C85801 -:10485000EECAFFFF1037E0840084FACBF944F60675 -:104860000036C7A8EDB30006C4E1FAF806B4403C30 -:10487000580CC1D01036C064FACBF944F6060036A5 -:10488000C1F8FAC8F9501AD8FAC8FAB81AD8FAC84A -:10489000FBB41AD8FAC8F940FAC9FFB4049A0C9BC1 -:1048A0000A9CF01F00092FDD9818C2A8EECAFFFF6E -:1048B0001037C0D4FAC9F9441497F2060036ED084F -:1048C000FD8AC1E8800330E48003EDE4410959F832 -:1048D000E0890013F2CBFFFC510B7209FAC6F944D0 -:1048E000EC08003B2FF8F749FD88FB4806B4149705 -:1048F000F1D9B010C058921814972FC951095C789B -:104900005018C468FAF806B4403C580CC1D01036B0 -:10491000C064FACBF944F6060036C1F8FAC8F9507B -:104920001AD8FAC8FAB80C9B1AD8FAC8FBB4049A79 -:104930001AD80A9CFAC8F940FAC9FFB4F01F00C996 -:104940002FDD780BC248EECAFFFF1037C094FAC9BA -:10495000F944F20600361497ECFBFD88C188410942 -:1049600059F8E0890011F2CBFFFC510BFAC6F9446B -:10497000720BEC080039F34BFD882FF81497FB48B5 -:1049800006B4C058720B14972FC95109501B300E32 -:10499000500E4008401C18485F18E7E80008C07037 -:1049A0003308FB6006B9A1B3FB6806B830283009AC -:1049B000FB6906BB402B580BC025A7D3402A4009F2 -:1049C000580A5F1A4016FAC2F9780C495F19F5E9DE -:1049D0001009C5C03019F2081800C0603029F2086B -:1049E0001800C041C3C80496C3080496FAE8000042 -:1049F000F5D8C0032D0A0CFAF00B1603F20C1603BF -:104A0000F7E911DB1899169858085C29CF21FAE9C3 -:104A10000000EDB30000C4513309F20A1800C410BD -:104A20000CF9C3F8FAEA000030A83009F01F008E34 -:104A300030A82D0A3009AC8AFAEA0000F01F008B7A -:104A400016991498FAE900002016FAEA0000589A1C -:104A50005C2BFE9BFFE91BF82D08C2080496FAE8C0 -:104A60000000F5D8C00440DEFC0A070A0CFAF20B7D -:104A70001604F00A1604F5E911CA16991498580894 -:104A80005C29CF01FAE90000C0C85808C091EDB315 -:104A90000000C061FAC6F9793308AC88C0280496D2 -:104AA0000C12C1C850A7508040940C9710900495E8 -:104AB00040415808E0800464FB680660300C300810 -:104AC0003012FB6806BB502CFAC6F9A0C078300B38 -:104AD000502BC0484022300A502A4029E4090C4992 -:104AE000FB3806BB5039069E3009E21E0002F20870 -:104AF0001800FBF81003F7B801FFFBF81A03069B38 -:104B0000580EFBFC1003F7BC01FEFBFC1A03E21B72 -:104B1000008450FE509BC451408A4039121A504ABA -:104B2000580AE089001FC3D82F092FF84D0E310C09 -:104B3000FB490690890E891CFB48068C5878E08951 -:104B400000042F84C0B8FACAF978029B0A9CF01FAF -:104B50000049E0810425FAC4F9E0404B210B504B99 -:104B6000FAF90690FAF8068C4C1A404E590EFE9946 -:104B7000FFDD1C092FF8890AFB490690891EFB48B6 -:104B8000068C5878E08900042F84C0B8FACAF978F6 -:104B9000029B0A9CF01F0037E0810402FAC4F9E08E -:104BA0003009FB3806BBF2081800C1F0FAF806908D -:104BB000FAC9F9452FF88909FB4806903019FAF827 -:104BC000068C89192FF8FB48068C5878E089000478 -:104BD0002F84C0B8FACAF978029B0A9CF01F0025FE -:104BE000E08103DEFAC4F9E040FC580CC1F0FAF8A9 -:104BF0000690FAC9F9482FE88909FB480690302940 -:104C0000FAF8068C89192FF8FB48068C5878E08949 -:104C100000042F84C0B8FACAF978029B0A9CF01FDE -:104C20000015E08103BDFAC4F9E0409BE04B008031 -:104C3000C511408A4039121A504A580AE089002B9F -:104C4000C4982F092FF848CE310CFB490690890EE5 -:104C5000891CFB48068C5878E08900102F84C178A5 -:104C6000800330E4800373408002D9988003F250BF -:104C7000800334048003F260FACAF978029B0A9C2C -:104C8000F01F004CE081038CFAC4F9E0404B210B8B -:104C9000504BFAF90690FAF8068C4C7A404E590EB1 -:104CA000FE99FFD11C092FF8890AFB490690891E3D -:104CB000FB48068C5878E08900042F84C0B8FACAF3 -:104CC000F978029B0A9CF01F003BE0810369FAC45B -:104CD000F9E0402C041C502C580CE089001FC3D86C -:104CE0002F092FF84B4B310AFB490690890B891A83 -:104CF000FB48068C5878E08900042F84C0B8FACAB3 -:104D0000F978029B0A9CF01F002BE0810349FAC44A -:104D1000F9E0402921095029FAF90690FAF8068CA1 -:104D20004A5A402E590EFE99FFDD1C092FF8890AB8 -:104D3000FB490690891EFB48068C5878E0890004E0 -:104D40002F84C0B8FACAF978029B0A9CF01F001998 -:104D5000E0810326FAC4F9E0EDB30008C0B0FAF828 -:104D6000069089128906F0020002FB420690E08F4D -:104D700001DBE0400065E08A01DD30083009405B7E -:104D8000407AF01F000EC7E0FAF8069048C92FF8E5 -:104D90008909FB4806903019FAF8068C89192FF812 -:104DA000FB48068C5878E089000D2F84C14800002C -:104DB000800334048003F26080036F328003A6C056 -:104DC000FACAF978029B0A9CF01F0078E08102E899 -:104DD000FAC4F9E0FAF806AC406C1838C055EDB3E7 -:104DE0000000E081026DFAF806902FF840CBFB48F6 -:104DF00006903019FAF8068C890B2FF88919FB48B0 -:104E0000068C5878E08900042F84C0B8FACAF97873 -:104E1000029B0A9CF01F0065E08102C2FAC4F9E01F -:104E2000406620165806E089001DE08F02492F09D0 -:104E30002FF8FB49069089028910FB48068C5878A8 -:104E4000E08900042F84C0B8FACAF978029B0A9C52 -:104E5000F01F0056E08102A4FAC4F9E02106C03830 -:104E60004D323100FAF90690FAF8068C4D0A5906CF -:104E7000FE99FFDF0C09890AFB4906902FF8891675 -:104E8000C559FAFA06AC580AE0890096FAF8069075 -:104E90004C892FF88909FB4806903019FAF8068CDE -:104EA00089192FF8FB48068C5878E08900042F8474 -:104EB000C0B8FACAF978029B0A9CF01F003CE08156 -:104EC000026FFAC4F9E0FAF806AC5808C081406AEB -:104ED000580AC051EDB30000E08101F240C9FAF870 -:104EE00006902FF88909FB4806903019FAF8068CCD -:104EF00089192FF8FB48068C5878E08900042F8424 -:104F0000C0B8FACAF978029B0A9CF01F0028E08119 -:104F10000247FAC4F9E0FAF206AC5C325802E089C2 -:104F2000001DC3B82F092FF8310EFB4906908900E8 -:104F3000891EFB48068C5878E08900042F84C0B88D -:104F4000FACAF978029B0A9CF01F0018E081022837 -:104F5000FAC4F9E02102C0284950FAF90690FAF89B -:104F6000068C493A5902FE99FFDF04092FF8890A95 -:104F7000FB4906908912FB48068C5878E0890004AA -:104F80002F84C0B8FACAF978029B0A9CF01F000768 -:104F9000E0810206FAC4F9E0406CFAF8069089064E -:104FA000891C1808CBE80000800334048003F260F9 -:104FB0008003A6C0FAF90690FAF8068C406B163A00 -:104FC000C6D516092FF88906FB490690891BFB48B0 -:104FD000068C5878E08900042F84C0B8FACAF978A2 -:104FE000029B0A9CF01F006FE08101DAFAC4F9E02D -:104FF000FAF606AC406A14165806E089001CC3B8DD -:105000002F092FF8FB49069089028910FB48068C6E -:105010005878E08900042F84C0B8FACAF978029B56 -:105020000A9CF01F0060E08101BBFAC4F9E0210690 -:10503000C0384DD23100FAF90690FAF8068C4DAA24 -:105040005906FE99FFDF0C092FF8890AFB490690E3 -:105050008916FB48068C5878E08900042F84C0B874 -:10506000FACAF978029B0A9CF01F004EE081019871 -:10507000FAC4F9E0EDB30000E081012240C9FAF87A -:1050800006902FF88909FB4806903019FAF8068C2B -:1050900089192FF8FB48068CC04914092FF8FB49E1 -:1050A00006908906891AFB48068C5878E089000426 -:1050B0002F84C0B8FACAF978029B0A9CF01F003905 -:1050C000E081016EFAC4F9E040C88908FAF8069058 -:1050D0002FF83019FB4806908919FAF8068C2FF83A -:1050E000FB48068CFAF206AC5878E08900042F845D -:1050F000C0B8FACAF978029B0A9CF01F002AE08126 -:10510000014FFAC4F9E00406FAF806AC8906FAF988 -:1051100006904066406E1016F208010889161C08B9 -:10512000FB480690FAF8068C2FF8FB48068CCB98C3 -:10513000406C581CE0890006EDB30000E081008758 -:10514000FAF806902FF83019FB4806908906FAF80D -:10515000068C89192FF8FB48068C5878E0890004E2 -:105160002F84C0B8FACAF978029B0A9CF01F000D80 -:10517000E0810116FAC4F9E0FAF806902FF840CB66 -:10518000FB4806903019FAF8068C890B2FF889191C -:10519000FB48068C5878E08900092F84C10800007C -:1051A000800334048003F260FACAF978029B0A9CF7 -:1051B000F01F006FE08100F4FAC4F9E03008300914 -:1051C000405B407AF01F006B40682018580CC0D13B -:1051D0002FF689188906FAF606901006FAF8068C5A -:1051E000FB4606902FF8C2F810965808E089001C7C -:1051F000C4982F092FF8FB49069089028910FB48B3 -:10520000068C5878E08900042F84C0B8FACAF9786F -:10521000029B0A9CF01F0056E08100C2FAC4F9E02C -:105220002106C0384D423100FAF90690FAF8068C92 -:105230004D1A5906FE99FFDF0C09890AFB490690B1 -:105240002FF88916FB48068CC0E8FAF806902FF86C -:105250003019FB4806908906FAF8068C89192FF850 -:10526000FB48068C5878E08900042F84C0B8FACA3D -:10527000F978029B0A9CF01F003EE0810091FAC47D -:10528000F9E040EAFAF806901408FAC9F964FB4814 -:105290000690891AFAF8068C89092FF8FB48068CC3 -:1052A0005878E08900042F84C0A8FACAF978029BD4 -:1052B0000A9CF01F002FC731FAC4F9E0E213000482 -:1052C000C3D04086403912165806E089001AC368D8 -:1052D0002F092FF8FB49069089038912FB48068C99 -:1052E0005878E08900042F84C098009A029B0A9C99 -:1052F000F01F001FC541FAC4F9E02106C05849F368 -:105300003102FAC0F978FAF90690FAF8068C49BA2F -:105310005906FE99FFDF0C092FF8890A8916FB4907 -:105320000690FB48068C5878E08A0009FACAF9789A -:10533000029B0A9CF01F000EC32140BC4036408EE9 -:10534000EC0E0C48100C50BCFAF806905808C080BF -:10535000FACAF978029B0A9CF01F0005C201300BC3 -:10536000FAC4F9E0FB4B068CFE9FF0E9800334049D -:1053700080036F328003F2608003F250FAF80690E7 -:105380005808C0800A9CFACAF978029BF01F0009ED -:10539000C0613008FB48068CC02840418268EDB8E7 -:1053A0000006C0313FFA50BA40BCFE3DF944D83245 -:1053B00080033404D42116981897109C3008149B4D -:1053C0004866129A8D08F01F00065BFCC0516C08FD -:1053D0005808EFF81A03D82200008CC48002F1505C -:1053E000D421300818974876169C8D08F01F0006C7 -:1053F0005BFCC0516C085808EFF81A03D822000073 -:1054000000008CC48002F108D431202D1897784810 -:1054100076460C38C034300CC858ECC2FFFCF6C3DA -:10542000FFECF6020329F802032C2FF92016F809E5 -:105430000D08F6020022EEC4FFEC10955808C410C7 -:105440003009069A08981291500B700EB18E501EBA -:10545000150EFC001610FDDEC010EA0E0341FDD152 -:10546000C010B181401BEA000240E2000000E3D01E -:10547000C010021B501B700BE3DBC0100209F20EC0 -:10548000010EB01EFC091410401EFC090009B009F1 -:10549000E00116102FC8B149043AFE98FFD8400B1E -:1054A000580CC0F1ECC8FFFBEE080028C0282016FD -:1054B00020480838E088000570095809CF908F46C9 -:1054C0000E9CF01F001AC2D52FF508983009070B63 -:1054D000F60A1610700CF7DBC010F80E1610141E2A -:1054E000F5DCC010161A120AB01AB14AFC0A0009FB -:1054F000B0092FC8B1490433FE98FFEBECC8FFFB9D -:10550000EE0803295809C0D1EE080028C02820164B -:1055100020480838E088000570095809CF908F4668 -:105520000A9C2FEDD8320000800363EED43121AD08 -:10553000FAC4FF7418971695682C50C96816680944 -:1055400050E81494512CFAE5000851596E9558050D -:10555000C091310CF01F004799358F9C9915992502 -:1055600099056E9972085808C0F0721A911A301A8B -:105570007219F4090949109B91290E9CF01F003EF5 -:105580006E9830099109402810945808C064F1D8E9 -:10559000C01F50283018C02830088D08FC1C7FF030 -:1055A00040260C98E6187FF01838C1C1E068270F34 -:1055B000415B9708403A580AC061EDD6C014C0312B -:1055C0004AECC0284AEC41295809E08005DEF8C8B9 -:1055D000FFFD3009118AF20A1800C190F8C8FFF8DF -:1055E000C168FAEA00083008FAEB003C3009F01F05 -:1055F0000025C1103018415A950841294A285809F8 -:10560000C041109CE08F05C1109C2FF841258B08EC -:10561000E08F05BBFAC8FF9CFAC9FFA0FAEA003C7C -:105620000E9CEBD6C28BF01F001918935805C0D002 -:10563000FAEA003C3004F1DBC014EAC503FF109B1A -:105640005174EA1B3FF0C3284188419C100CF8C5F7 -:10565000FBCEE0450020E08A001BF8CCFBEE403B8F -:10566000EA081140F60C0A4CEC0809460C4CC148FB -:105670008002E2A4800364208003F3708003F37C43 -:1056800080036F328003A6C0800364D0EA0C11202F -:10569000403AF40C094CF01F006BFC18FE10301956 -:1056A000EAC50433F00B000B51793008FC193FF8C0 -:1056B000F01F0065E0684361EA18636FE06987A73F -:1056C000EA193FD2F01F0061E068C8B3EA188B60A6 -:1056D000E0698A28EA193FC6F01F005D0A9C149011 -:1056E0001691F01F005CE06879FBEA18509FE069B2 -:1056F0004413EA193FD3F01F005514981699009AE5 -:10570000029BF01F005314901691F01F00533008B5 -:1057100018963009009A029BF01F0050C0C00C9CE4 -:10572000F01F004C14981699009A029BF01F004C31 -:10573000F7B600015966E088000530185148C128C5 -:105740004C88FAEA003CF0060238F01F0044F9B435 -:105750000000FBF40A14F7B60101F9BC0100FBFCE0 -:105760001A14419020100A10C04650403000C04822 -:10577000300B5C30504BEC0211005806FBFA400431 -:10578000F5D6E40AFBFA4A04FBF64A11F9B2040022 -:10579000E1D6E510F9B90500FBF95A1140C858984F -:1057A000E08B00205858F9B40A01FBF5900CF7B5CE -:1057B0000904FBF59A0CF9B4090040CC583CC2D05E -:1057C000E0890005582CC101C18840CB584BC0600E -:1057D000585BC0A1301A50DAC228301950D9C0F82D -:1057E0003008301450C83FF5301C300B509550DC59 -:1057F0000A91312850EBC208300A50DA40E95809C2 -:10580000E089000730185098109150E8C15840E5E1 -:1058100050950A910A98C108300C50DC40EBEC0B13 -:10582000000B509B16982FF85808E089000510913E -:105830003018C028109130096E9A95193049C178F6 -:1058400080036E4A80036B7C800369A480036D181B -:1058500080036E5280036E2480036FC080036F321A -:105860008003F38C6A1AA1792FFA8B1A6E95F2CA0B -:10587000FFEC103AFE98FFF86A1B0E9CF01F0053D5 -:1058800058E15F888B0CF1E400046E987008508832 -:10589000E08001985806E08A0040F3D6C0044CC866 -:1058A000F0090234FAE50018EC041404EDB4000425 -:1058B000C0303025C0F84C78F0E80020FAEA003C0F -:1058C000E9D4C004F01F0044303514981699FAE961 -:1058D00000084C0C50A30C931896C0F8FAEA001874 -:1058E000EDB40000C081ECE800002FF5F01F003B94 -:1058F000FAEB0018A1542F865804CF11FAE80018CB -:10590000FAEA00080696F01F003440A3149816998E -:10591000FAE90008C2D8EC081100C0313025C2886D -:105920004ACCF0041404501CF1D8C0044A89FAEAA5 -:10593000003CF2080238F01F0029401C506330255B -:105940000C93FAEB00081896C0F8FAEA0008EDB4D8 -:105950000000C081ECE800002FF5F01F0020FAEBFA -:105960000008A1542F865804CF1106964063414A7F -:10597000580AC370FAE8000858015F94FAE9001861 -:105980003008FC193FF0FAEA0018F01F0015F9BCC6 -:105990000000F9BC0101E9EC000CC2304098580845 -:1059A000E08A010C3008FC194024ECC40001FAEA3A -:1059B00000182FF55064F01F0009409414981699B0 -:1059C000FAE90008C1080000800364588003F38CE2 -:1059D0008003F45480037028800369A480036FC09F -:1059E000506602940A9CF01F0069FAE80008F01F54 -:1059F00000683008FC19401CF01F006614981699C6 -:105A0000FAE90028FC18FCC040A5100550A5580470 -:105A1000C211FAEA00083008FC194014F01F005EB9 -:105A200040BCFAEB000814981699189A0A9BF01FCC -:105A3000005BE08102740A9840B9EE188000FAEA2F -:105A40000008109512980A99F01F0054E081025E38 -:105A5000CB484D39E8C8000140D55805C4F0300C9A -:105A6000F2080238513C300AFC1B3FE0F01F004DA9 -:105A7000FAE800284085F01F0048FAEB0028FAEA0F -:105A80000008F01F0049516CF01F0040149816994F -:105A9000FAEA0008F01F0040FAEB000841682D0800 -:105AA0000AC841392FF95139FAE80028F01F003BA4 -:105AB000E081035AFAE80008300AFC1B3FF0F01FAF -:105AC0000036FAE80028F01F0035FAEA002830080E -:105AD000FC194024E08100E8413C083CC6E4F01F8A -:105AE000002C3008FAEB0028FC194024FAEA0008E0 -:105AF000F01F0027FAEB0008CC3B40850805F208B0 -:105B0000023A5135FAE800284085F01F0021FAEBEF -:105B10000028FAEA0008F01F0024516CF01F001B57 -:105B200014981699FAEA0008F01F001BFAEB000817 -:105B300041682D080AC8413C1835C3713008FC196A -:105B40003FE0FAEA0028F01F00134085FAE8000859 -:105B50000805F01F0012E08100A7FAE80028300ACB -:105B6000FC1B3FE0F01F000C14981699FAEA00089D -:105B7000F01F000AC22033090A98117AF20A1800AD -:105B8000E08102F21095CF9B80036E52800369A4DE -:105B900080036D1880036B7C80036FC08003F38CDF -:105BA0008003702880036E243008FC194024F01F05 -:105BB0000056FAEB0008CAEBFAEA003CFAEB0008E0 -:105BC00058E65FAB418A3008F40911FFF7E903F9A1 -:105BD000F0091800E080008140EA58015FA9F3EA6B -:105BE00003F94CAAF4060234FAE50010F009180093 -:105BF000C1405801E081018A3008FC194014089A1C -:105C00000A9BF01F0041FAE80008F01F0041E08104 -:105C1000017D0292E08F018540853014FAE8001082 -:105C2000FAEA0008F01F003BF01F003B1892F01F3B -:105C3000003BFAE80010F01F003414981699FAEAB5 -:105C40000008F01F0037FAEB0008E4C8FFD00AC8CC -:105C5000FC19402430080234C331FAE80008F01F70 -:105C600000311691149014980299FAEA0010F01F6E -:105C7000002EC1A1FAE80010009A029BF01F002B31 -:105C8000E0800271E5D2C001C0F1E08F026C408A71 -:105C90001438C0301095C098330840892FF6B28868 -:105CA0004088C088406633990A98117AF20A180031 -:105CB000CEF0506611892FF9B089E08F0255F01FA0 -:105CC00000122FF4FAEB000830083009F01F00171B -:105CD000CA60E08F024840D85808C0510498009527 -:105CE00040D4C4A840C55815E08900224174580426 -:105CF000C040F4C9FBCDC0484199F209113604985F -:105D00000095C2F8800369A48003F38C80036F5868 -:105D10008003702880036E2480036E5280036B7CA6 -:105D200080036D1880036FC080036F32E2C80001EA -:105D30005801E0051740E2091740E1D1E515F9B92E -:105D400005001032E5D8E418F1D2E518E5D8E502EF -:105D5000FBFC5011F9D8E50CFBFC5A11F9B8050011 -:105D6000404B120B5008504B1200301B0E9CF01F82 -:105D7000010840081894404A58055F99580A5F9AEC -:105D8000F5E90009C080404CF8050D49121C1210BD -:105D9000504C12155802E08A002740DB580BC1D046 -:105DA0005808E08A0017109A5008089B0E9CF01FB4 -:105DB00000F9069A189B18940E9CF01F00F718998A -:105DC000069B50190E9CF01F00F5401940081293D5 -:105DD000E408010AC080C028049A069B0E9CF01FAC -:105DE00000ED1893301B0E9CF01F00E9411A189229 -:105DF000580AE08A0007189B0E9CF01F00E61892D4 -:105E000040C95819E089001440385808C101402998 -:105E1000F1D9C014C0C11298E6187FF0C080404C80 -:105E2000301B2FFC2FF0504C506BC038300A506A9A -:105E300041195809C031301CC09864482FC8E40883 -:105E4000032CF01F00D7F80C1120404BF80B000872 -:105E5000F1D8C005C0C0F00811205848E08A0006FB -:105E60002048100B504BC0785848C070404A2E480C -:105E7000100A504A100010055800E08A0008069BDE -:105E8000009A0E9CF01F00C7189340495809E08AF9 -:105E90000008049B129A0E9CF01F00C21892414801 -:105EA0005808C1B0049B069CF01F00BFC164069B4C -:105EB000300930AA0E9CF01F00BD2016189340DC5C -:105EC000580CC0314091C098089B4091300930AACD -:105ED0000E9CF01F00B6189458015FA940CB582BB8 -:105EE0005F98F3E80008C2505801C111049B029961 -:105EF000305A0E9CF01F00AD1892189B069CF01FA4 -:105F000000AAE089000FC0383002049440EA30094A -:105F10005CDA4085506A5049C0F9089240660494A2 -:105F20002FF65066331840850AC830085048C049DB -:105F300040DC580CE08000B55805E08A0008089B5A -:105F40000A9A0E9CF01F00971894406B580BC031B2 -:105F5000089CC138681B0E9CF01F0095684A189574 -:105F6000E8CBFFF42FEA2F4CA36AF01F00920A9BA4 -:105F7000301A0E9CF01F008B5044403A3019F5DA6D -:105F8000C001189450DA40855099502650E1049B86 -:105F9000069CF01F0089404BF8C0FFD0069CF01F04 -:105FA0000082089A506C049B0E9CF01F008418918C -:105FB00078385808C0303016C068189B069CF01F0F -:105FC000007A18960E9C029BF01F007440CCEDECFA -:105FD0001008C0D140DB580BC0A14026E04000397A -:105FE000C300406A580AE0890024C2F84069580991 -:105FF000C085129840CC1848C1D140DB580BC1A1D4 -:106000000C9940265809E08A0021069B301A0E9C04 -:10601000F01F0064049B1893F01F0063E0890006E2 -:10602000C141EDB00000C111E0400039C0A02FF027 -:10603000C0C85806E08A000C4026E0400039C04144 -:1060400033980AC8C6782FF00AC0C7580AC0409AC9 -:1060500040E9123AC430069B300930AA0E9CF01F6A -:106060000053404818930838C091109B300930AA5B -:106070000E9CF01F004E504CC0E8404B300930AA37 -:106080000E9CF01F004A089B504C300930AA0E9C11 -:10609000F01F00461894409C2FFC509CC79B301862 -:1060A0000690408508930C941096049B009CF01F6A -:1060B00000422D0C0ACC0236C0A4009B300930AA45 -:1060C0000E9C2FF6F01F00391890CF0B0896300B5E -:1060D0000694504B00931890C0284026069B301A17 -:1060E0000E9CF01F0030049B1893F01F002FE089D6 -:1060F0000012C1B1E1D0C001C0D1C17840891238CD -:10610000C0301095C0882FF650663318408CB88880 -:10611000C138339A0A981179F4091800CF002FF981 -:10612000B089C0981095C02833090A98117AF20AEC -:106130001800CF905066049B0E9CF01F0018580466 -:10614000C120404B083B5F19580B5F18F3E800086B -:10615000C0400E9CF01F0011089B0E9CF01F000F0A -:10616000C02850660E9C069BF01F000C3008AA88C1 -:106170004068415A2FF841299508408C5809FBF88E -:106180001012F1F51A002E6DD8320000800368005D -:10619000800368A0800366F88003642080036300A6 -:1061A00080036664800363EE80036818800364588C -:1061B0008002E736800354088003658C5EFC5EFC39 -:1061C000D42118961697580BC0311695C508F01FA4 -:1061D00000295806C0706C685808C0410C9CF01F1C -:1061E00000264A681037C0316C07C0A84A481037EB -:1061F000C0316C17C0584A381037EDF700028E696D -:106200003008F0091900C051F01F001F3005C2F816 -:106210000E9B0C9CF01F001D6EC818955808C0609E -:106220006E8B0C9C5D18F9B505FF8E68EDB8000704 -:10623000C0516E4B0C9CF01F00166EDB580BC0A0BB -:10624000EEC8FFBC103BC0400C9CF01F0011300892 -:106250008FD86F2B580BC0700C9CF01F000D3008AE -:10626000EF4800483008AE68F01F00070A9CD822AB -:1062700080031E7480031F388003EF2C8003EF4CD3 -:106280008003EF6C80031E7680031D2C8003217C2D -:10629000D4014848189B700CF01F0003D80200007E -:1062A00000000598800361C0D42116981897109CAF -:1062B00030084876149B8D08F01F00065BFCC05127 -:1062C0006C085808EFF81A03D822000000008CC4AC -:1062D0008002F198D42116981897109C3008149BCE -:1062E0004866129A8D08F01F00065BFCC0516C08CE -:1062F0005808EFF81A03D82200008CC48002F1205D -:106300001898E01C0000F0091510580CF20817004E -:10631000F9BC0010F9BC0100109AF0091508E61A42 -:10632000FF00F7BC00F8F2081700109AF0091504F6 -:10633000E61AF000F7BC00FCF2081700109AF0090A -:106340001502E61AC000F7BC00FEF2081700580854 -:106350005E5CEDB8001EF9BC0120F7BC00FF5EFCDE -:1063600018997808F9D8C003C150EDB80000C021D1 -:106370005EFD109BF00A1601E21B0002A388580B79 -:10638000F3FA1A00F9BC0101F3F80A00F9BC0002A3 -:106390005EFCF5D8C010F00B1610580AF60817006E -:1063A000F9BC0010F7D8C008F00A1608580BF7BC63 -:1063B00000F8F4081700F7D8C004F00A1604580BC8 -:1063C000F7BC00FCF4081700F7D8C002F00A160268 -:1063D000580BF7BC00FEF4081700EDB80000C060D1 -:1063E000A198C031320C5EFC2FFC93085EFCD401F6 -:1063F00018987649784C121CC1312FB9A369120B39 -:10640000F00900092EC8134E174A143EC060F9BCAB -:1064100003FFF9BC0201D8021039FE9BFFF6D80237 -:10642000D4211897169578965806C091310CF01F14 -:10643000000A99368F9C9916992699065805C0909E -:106440006A196E987038F009032A8B0AF009092539 -:10645000D82200008002E2A4D421189716967895DD -:106460005805C091310CF01F001999358F9C991572 -:10647000992599056E956A385808C0B1310A304B94 -:106480000E9CF01F00138B3C6E98703C580CC1B0F2 -:106490006E987038F0060028700C580CC0407809CF -:1064A0009109C0E80E9C30170E9BEE060947EECA14 -:1064B000FFFBA36AF01F0006C060991699273008F9 -:1064C00099389948D82200008002E2A48002DC5466 -:1064D000D431202D1693129610951492301BF01F74 -:1064E0000029F3D3C0145009F1D3C01FF0011614D2 -:1064F000FC1A0010F3DAE139FBF91A00189458027B -:10650000C1E0FACCFFF818D2F01F001F4018C0D02D -:106510004009F80A1120F20A094AF5E810088958DA -:10652000F20C0A495009C028895840085808F9B3A4 -:106530000102F9B3000189688943C0981A9CF01FD1 -:106540000012301340082E0C894389585801C0901E -:10655000E2C1043318018D01F80C11358B0CC0D841 -:10656000E6C8FFFCF8CC0432A5738D0CE808032CB8 -:10657000F01F000618138B03089C2FEDD832000083 -:10658000800364588003636080036300D4317448DF -:106590007645169714961015C1312FB8EECEFFEC44 -:1065A000A368F408000BEE080008114A1749123AD4 -:1065B000C030C0E2C0781C38FE9BFFF9C4A8580563 -:1065C000C0640E9830150C971096C02830056E1BCD -:1065D000F01F00246E496C4499352FB4F2C5FFFBBF -:1065E000EC040024EE0500252EC62EC7F8C8FFECEB -:1065F000300A0F0E0D0BFC021610F6031610FDDE0E -:10660000C010E4030103F7DBC010FC0B010BF60A1A -:10661000000AB01AB14AE60A000AB00A2FC8B14A05 -:106620000836CE83C0D80F0BF60E1610F7DBC0105D -:10663000160AB01AB14A1C0AB00A2FC8B14A0A3762 -:10664000CF33C0282019114A580ACFD09949D832DF -:10665000300BF01F00043018994830089958D83290 -:1066600080036458D43116977646F40214052FF649 -:10667000149318940406761B6E28C0382FFBA1785B -:106680001036FE99FFFD089CF01F001A300918957E -:10669000F8C8FFEC129AC03810AA2FF90439CFD5E8 -:1066A0006E4BE7D3C0052FBBEEC9FFECEE0B002B02 -:1066B0005803C130E60C1120300A7202E40309428B -:1066C000044A10AA130AF40C0A4A1639CF73910A25 -:1066D000580AC0702FF6C058130A10AA1639CFD323 -:1066E000089C20160E9B8B46F01F00030A9CD83294 -:1066F0008003645880036420D431202D7649744887 -:10670000169614951039EC081750EA061750F00544 -:1067100017506C2876437442761BE4030007103749 -:10672000F7BB09FFF01F0036EEC4FFFBF8C9FFEC12 -:10673000F8040024300A1298C02810AA0838CFE3C1 -:106740002FB32FB2EC030023EA020022ECCBFFECC4 -:106750005012EACAFFECC44894955805C20012983A -:106760001696300E50090D02E400161070017009E3 -:10677000B181E5D2C010E0050341AB32E1D9C010D0 -:106780000002E40E000EB01EB18E1C01B001E20E3C -:1067900016102FC80636CE834009910E94865806EF -:1067A000C1D072021298169E3005B0121D0190825F -:1067B000E1D1C010AD30E0020002E4050005B005F3 -:1067C000B185B1812FC8AD319092E20200020A0278 -:1067D000E4051610063ECEA391022FCA2FC9401819 -:1067E000103ACBB3C02820175807E08A00050948A3 -:1067F0005808CFA099472FEDD83200008003645885 -:10680000D4211697301BF01F00043019995799496D -:10681000D822000080036458D431300812951697AE -:1068200018967644F6C9FFEC720BF60C1610F7DBDF -:10683000C010F40C024CF40B0345F7D5C010B18521 -:106840001805EA0C1510F80B000B12AB2FF8B185E8 -:106850000838CEB55805C1D06E281034C1456E1B1E -:106860000C9C2FFBF01F000C6E4AEECBFFF418932C -:106870002FEA2F4CA36AF01F00090E9B0C9CF01FFF -:1068800000080697E8C8FFFF2FB48F48EE040925DB -:106890000E9CD832800364588002E736800364205F -:1068A000D431149618971694F1DAC002C0902018CB -:1068B0004A19F208032A3009F01F00201894A34651 -:1068C000C3706E955805C091310CF01F001D9935AD -:1068D0008F9C9915992599056E9366255805C0D109 -:1068E000E06B02710E9CF01F0017872C3008189582 -:1068F0009908C038069C1895EDB60000C0C1089BE9 -:106900000A9A0E9CF01F0010089B18930E9C069488 -:10691000F01F000EA156C0C06A035803CEC10A9AE8 -:106920000A9B0E9CF01F00088B0C9903CE5B089C01 -:10693000D83200008003F380800368188002E2A44C -:1069400080036800800366F880036420D4211698D1 -:106950001897109C3008149B4866129A8D08F01FF7 -:1069600000065BFCC0516C085808EFF81A03D822E7 -:1069700000008CC48002F1381498FC197FF0F5DB1C -:10698000C01FF00B1100F7E81008F5E813F8F20843 -:106990000108F00C1100F9E81008F00C141F2FFC8E -:1069A0005EFCD703F5EB101CE08000DCD421F7E996 -:1069B000200EEFDBC28B3015C430AB6BF7EA136BE4 -:1069C000AB6AF7D5D3C2EDD9C28BC5C0A1785CF94B -:1069D000F3D5D2ABE04707FFC770E04607FFC740DB -:1069E000EE06000CE02C03FEF6080644F40907440A -:1069F000F4080646F609064A0807F405004A5C0B47 -:106A0000EDBB0014C050A1775CFA5CFB201C580C55 -:106A1000E08A006FE04C07FFE084009CF7DCD28B3B -:106A2000EDEA11F6EFE61217EE178000F1B7042039 -:106A30000E0A5C0BEDBE001FEFBB001FD822E41B4B -:106A4000000FF40C1200F6061200F7BC03E1F80682 -:106A50001730F7B60201E0460020C0D4EC0C11203C -:106A6000F606094BF40C0A4C184BF406094A20B6FA -:106A70000C17CAABF406094BC640300A20B60C17F7 -:106A8000CA3BE419000FF00C1200F2051200F7BC2B -:106A900003EAF8051730F7B5020AE0450020C0D434 -:106AA000EA0C1120F2050949F00C0A4C1849F005CE -:106AB000094820250A16C8FBF0050949C4203008FA -:106AC00020250A16C88BE419000FE41B000F144B95 -:106AD0001049E04707FFC091580BC381E04607FF0C -:106AE000C3815809C360C3285809C330C2F85C3C4D -:106AF0002FFCF1BC04C0E04C0020C114F8081120A8 -:106B00000E46EE0C0A47F40809491247F40C0A4AEB -:106B1000F6080949124AF60C0A4BC83BF80811203E -:106B2000F9B90000C030F60809490E46EDEA101622 -:106B3000F40C0A4AF3EA1007F60C0A4A300BC71B9A -:106B40001C9BE61B8000300AD8223FFB3FFAD8226C -:106B5000F06B0000EDBE001FEFBB001F300AD82213 -:106B6000F7E9200BE61B8000F9D9C28BE04C07FF48 -:106B70005E1C3FFA3FFB5EFCEE198000F7E9200C3B -:106B8000E08600CAEBCD40E0169CE61C8000BFDB2F -:106B9000BFD9103AF20B1300C0921697129B0E99B0 -:106BA0001497109A0E98EE1C8000F6071614AB7B13 -:106BB000F7EA135BAB7ABFBBF2061614C440AB799D -:106BC000F3E81359AB78BFB9E04707FFC4F00E26CE -:106BD000C120EC051120E0460020C7C2F005094E97 -:106BE000F2050945F0060A48F2060A490A48580E15 -:106BF0005F1E1C48101AF609014BF6061200C0E091 -:106C0000C783EC0E1120F606094BF40E0A4E1C4BFE -:106C1000F406094A0C17E08A0039F4091515AB9AF5 -:106C2000F5EB115AAB9BF7D7D28B184BFC178000B2 -:106C3000EDBA0000F7B701FF0E395F29120A5C0BAD -:106C4000E3CD80E0AB79F3E81359AB78F3E8100EAD -:106C5000F9B60101EE0E1100F9B70001EFBB001FFC -:106C6000F7EA100EF9B70000CB0BBFDBF7EA100E06 -:106C7000C081E04607FFC050F9E7114BE3CD80E04B -:106C80003FFA3FFBE3CD80E05C372FF7F1B704C05C -:106C9000E0470020C114EE081120F40809495F16EE -:106CA000F4070A4A0C4AF6080949F5E9100AF407FC -:106CB0000A4B3007CB3BEE081140F608094914494E -:106CC0005F16F6070A4A0C4A300B3007CA7BE3CD41 -:106CD00080E0F1B604C0F00E1700C040F205094E86 -:106CE000104EF2060A483009580E5F1E1C48C83B79 -:106CF000F4061200F9B70300F9B60300F9BC03006B -:106D0000F7B602E0F406094B300A0C17FE9AFFBEF4 -:106D1000C85B0000EE198000F7E9200CFE96FF2EFC -:106D2000EBCD40E0169CE61C8000BFDBBFD9123BD8 -:106D3000C0721697129B0E991497109A0E98300EE7 -:106D4000EFDBC28BF7DBC014B5ABEDD9C28BC5F05E -:106D5000F3D9C014B5A9E04707FFC2500E26C0F012 -:106D6000EC051120E0460020C352F005094EF20563 -:106D70000945F0060A48F2060A490A48100AF609C7 -:106D8000004BEDBB0015C340F7D7D28B184BF9DA97 -:106D9000C001184EEE1E8000F1BE04201C0A5C0BE0 -:106DA000E3CD80E0B5CBF7EA100EC101E04607FF66 -:106DB000C030E3CD80E0B5C9F3E8100EC071300AF1 -:106DC000FC1B7FF0184BE3CD80E03FFA3FFBE3CDA7 -:106DD00080E0F1B604C0F00E1700C060F205094E65 -:106DE00058085F18104EF2060A483009CC8BFDEEA9 -:106DF000101EA19B5D0A5D0E2FF7E04707FFF9BA51 -:106E00000000F9BB0000F9BE0000CBFB30165807AC -:106E1000CA31B5CB100AF609004B184BE3CD80E020 -:106E2000580B5E6DF60C1501B59CE02C03FF5E3D22 -:106E3000F80C111F1699AB7BBFBBF7EA135BF60C7E -:106E40000A4BA1795E2B5C3B5EFBF8CB0000300C5B -:106E5000C038189B5C4B300A5E0BD401E069041EFD -:106E6000F6081200C170C0C3F00E1120F608094BDD -:106E7000F40E0A4E1C4BF408094A1019C0B8F40865 -:106E80001200F9B80300F7B802E0F408094B300A21 -:106E900010195809E08900305C392FF9E0490036B3 -:106EA000C043300B300AC2682F69F2081120E04954 -:106EB0000020C0B2F408094EF6080948F4090A4A4D -:106EC000F6090A4B104BC088F608094E144E169A64 -:106ED000300BF4090A4AEDBA0000C0921C7EC04192 -:106EE000EDBA0001C0422FFAF7BB02FF5CFC5D0B5C -:106EF0005D0AD802E06803FFEDBA000BF7B800FFA7 -:106F0000100A5C0BF7B903FEE04907FFC055300AD1 -:106F1000FC1BFFE0C0C8EDBB001FF7B90101AB9A35 -:106F2000F5EB115AA17BAB9BF7E9115BA17C5D0BE3 -:106F3000D802103AF20B1300C080A17BA179144B48 -:106F4000124B104B5E0F5EFDA17BFC1CFFE0580A4C -:106F5000F80B13005E8F5EFD1ADE1AD7A17B5F3C33 -:106F6000A1795F375CFCFC1EFFE0580AFC0B1300A4 -:106F7000E08B001D5808FC091300E08B0018580B2B -:106F8000F5BA0000C1501B071B0E583CC0A0581C8E -:106F9000C0335E0F5E1D103AF20B13005E2F5E3D94 -:106FA0001438F60913005E2F5E3D1B07D80A5817E8 -:106FB0005F0C5809F5B800001B071B0E5E0F5EFC46 -:106FC0001ADE1AD7A17B5F3CA1795F375CFCFC1EFF -:106FD000FFE0580AFC0B1300E08B001D5808FC0969 -:106FE0001300E08B0018580BF5BA0000C1501B07C6 -:106FF0001B0E583CC0A0581CC0335E0D5E1F103ADB -:10700000F20B13005E2D5E3F1438F60913005E2D5F -:107010005E3F1B07D80A58175F1C5809F5B80000D7 -:107020001B071B0E5E0D5EFCEBCD40FFF7E9200E4B -:10703000F6071614A97BF7EA137BA97ABDBBE41BFC -:107040003FFFABD7E08000CCE04707FFE08400B50E -:10705000F2061614A979F3E81379A978BDB9E419F1 -:107060003FFFABD6E08000E2E04607FFE08400B2DD -:107070000C17FE37FC01FC1C8000F8031601E9D94F -:10708000C3625CD4E7D4D382E6090644F80501253F -:10709000E6050644EA031502E6090644F80501255B -:1070A000E6050644EA031502E6090644F80501254B -:1070B000E6050644EA031502E6080640E40907402F -:1070C000E609064402045C05A365EBE413E5A3644A -:1070D0005C34F8050145E6040640E4050740E60592 -:1070E000064402045C05EA031502E7E413E3E80240 -:1070F0001502E6080640E4090740E60906440204D2 -:107100005C05A365EBE413E5A3645C34F805014575 -:10711000E6040640E4050740E605064402045C0573 -:10712000EA031502E7E413E3E8021502E60A064063 -:10713000E40B0740E60B064202025C03EDB3001CC1 -:10714000C090A1725CF32017A39AF5EB11DAA39B10 -:10715000C058A58AF5EB11CAA58B5807E08A008BA9 -:10716000E012FF00E8120080E6080640E40907404C -:10717000E4080644E60906480005F00100485C09F9 -:10718000F9D2C10158045C25F4081300F609130074 -:107190005F36F8061700E40A1608F5E3118AE60BD5 -:1071A0001608F7D7D28BEDBE001FEFBB001F0C0AED -:1071B0005C0BE3CD80FFE41B000F144BE08100A7C4 -:1071C000F2061614ABD6E04607FFE08100A4C9E83A -:1071D000E419000F1049E081009AC928A37BF7EA5F -:1071E00013DBA37AF5EB1004E08000A0F604120094 -:1071F000C170C0C3E8051120F604094BF4050A4527 -:107200000A4BF404094A0817C0B8F4041200F9B490 -:107210000300F7B402E0F404094B300A0817A38A0C -:10722000F5EB11EAA38BC11BA379F3E813D9A3787B -:10723000F3E81004C6F0F2041200C170C0C3E80500 -:107240001120F2040949F0050A450A49F0040948E9 -:107250000816C0B8F0041200F9B40300F7B402E055 -:10726000F004094930080816A388F1E911E8A38958 -:10727000CFCA5C372FF7F1B704C0E0470020C154F4 -:10728000EE061120E4070A42E606094C1842E6071A -:107290000A43F4060941F4070A4AF606094C184A5B -:1072A000F6070A4B3000C158EE061120F9B0000075 -:1072B000F9BC0000C050F4060940F606094CE60788 -:1072C0000A423003F4070A411841F6070A4A300B14 -:1072D000E012FF00E8120080E6080646E4090746CF -:1072E000E4080644E60906480C05F00700485C0976 -:1072F0003007F9D2C1010034E2051300C46B1C9BB6 -:10730000E61B8000300AE3CD80FF3FFB300AE3CD6F -:1073100080FFF5EB1004C0901C9BE61B8000EA1B6D -:107320007FF0300AE3CD80FFF1E91015CEF0E9D906 -:10733000C28BE04407FFCE41F1E910C5CE10CE6B01 -:10734000D4311A97202D109C1295149E16931696E0 -:107350005809C4411638E088005AF0081200C0D01D -:10736000F6080946F808094CF00B1120F408094EFC -:10737000F40B0A4BF7E61006F80A1610EBDCC01007 -:10738000EC0A0D02FC091610EA02024BF3E31109A4 -:10739000123BE08800091809123CE08B0005123B03 -:1073A000F3DCEB09F20B010BFDDEC010F60A0D0A4F -:1073B000FDEB110EEA0A024A1C3AE0880009180E99 -:1073C0001C3CE08B00051C3AFDDCEB0EFC0A010ABC -:1073D000300BF4080A4A2FEDD8321639FE9BFFFD18 -:1073E000F2091200C46114385F8B06355F3AF7EA80 -:1073F000100AF20A1800C060FC08010AE6050146FE -:10740000149E0C9B1C9A2FEDD8325808C05130198D -:10741000F2080D08109CF8081200E0810084EC0CC2 -:10742000010BF8031610EBDCC010F6030D0AFC0983 -:107430001610EA0A024AF3EB1109123AE088000931 -:107440001809123CE08B0005123AF3DCEB09141921 -:10745000FDDEC010F2030D02FDE3110EEA02024A46 -:107460001C3AFE98FFB5180E1C3CFE9BFFB1CACB20 -:10747000F20E1120EA090945F609094BE60E0A4306 -:10748000F0090941F4090942F00E0A48F40E0A4ACB -:107490000A48164AF0061610F9D8C010E6060D0480 -:1074A000F4031610089BE7E51103E80C02450635C6 -:1074B000E0880007201B10030638E0880072F5DA28 -:1074C000C0100A13E6060D04F5E51106E80C024C9F -:1074D000089A0C3CE0880007201A10060C38E08857 -:1074E000005AF5EB110B1816F601064A149C1636D5 -:1074F000C0735F0514325F3AEBEA000AC060F8011E -:107500000104F608014B089CE40C010AEC0B01464F -:10751000EC090A4BF4090A4AEC0E09460C4A2FED15 -:10752000D832F0011120F4010A4BF808094CEC089C -:107530000949EC010A41F7E91009F8031610EBDCE0 -:10754000C010E2030D00F20B1610EA00024EF7E144 -:10755000110B163EE0880006180B163CE088002749 -:10756000F60E0101F3D9C010E2030D00F3E1110999 -:10757000EA00024B123BE08800091809123CE08B3C -:107580000005123BF3DCEB09F20B010BF408094E8A -:10759000C4DB0C3CF7BA0B01EDD8EB06CA3B063551 -:1075A000F7BB0B01E7D8EB03C8BB163EF7DCEB0BD0 -:0275B000CD8B81 -:10760000C0080000C0080000C0080000C00800005A -:10761000C0080000C0080000C0080000C00800004A -:10762000C0080000C0080000C0080000C00800003A -:10763000C0080000C0080000C0080000C00800002A -:10764000C0080000C00800000000000000000000AA -:10765000C008000000000000000000000000000062 -:10766000C008000000000000000000000000000052 -:10767000C008000000000000000000000000000042 -:1076800000000000000000000000000000000000FA -:1076900000000000000000000000000000000000EA -:1076A00000000000000000000000000000000000DA -:1076B00000000000000000000000000000000000CA -:1076C00000000000000000000000000000000000BA -:1076D00000000000000000000000000000000000AA -:1076E000000000000000000000000000000000009A -:1076F000000000000000000000000000000000008A -:10770000C0080000300CF01F0012580CF80F1710C2 -:10771000D603301CF01F000E580CF80F1710D603BC -:10772000302CF01F000B580CF80F1710D603303C0C -:10773000F01F0007580CF80F1710D60300000104C3 -:107740004000011280000120C000012E8000A41C16 -:107750000000000000000000000000000000000029 -:107760000000000000000000000000000000000019 -:107770000000000000000000000000000000000009 -:1077800000000000000000000000000000000000F9 -:1077900000000000000000000000000000000000E9 -:1077A00000000000000000000000000000000000D9 -:1077B00000000000000000000000000000000000C9 -:1077C00000000000000000000000000000000000B9 -:1077D00000000000000000000000000000000000A9 -:1077E0000000000000000000000000000000000099 -:1077F0000000000000000000000000000000000089 -:1078000073656E645265706C790000006765745F23 -:10781000646174615F7463705F636D645F63620071 -:107820006765745F7265706C795F686F73745F62AF -:10783000795F6E616D655F63620000006765745F0C -:107840007265706C795F7363616E5F6E6574776F7C -:10785000726B735F636200006765745F7265706C62 -:10786000795F6964785F6E65745F63620000000031 -:107870007365745F706173737068726173655F6361 -:107880006D645F63620000007365745F6B65795FB0 -:10789000636D645F6362000063616C6C5F7265704E -:1078A0006C795F6362000000617661696C5F64619E -:1078B00074615F7463705F636D645F636200000096 -:1078C0007365744D6170536F636B4D6F6465000039 -:1078D0006765745374617274436D6453657100001D -:1078E0007365745F6E65745F636D645F63620000EF -:1078F0007365745F69705F636F6E6669675F636D00 -:10790000645F63620000000073656E644572726FAD -:107910007200000073746172745F736572766572D1 -:107920005F7463705F636D645F6362007370695F4F -:10793000736C61766552656365697665496E74003E -:107940006765745F636C69656E745F737461746599 -:107950005F7463705F636D645F63620073656E6420 -:107960005F646174615F7564705F636D645F6362BF -:1079700000000000636865636B4D7367466F726D4E -:107980006174000073746172745F7363616E5F6E23 -:1079900065745F636D645F6362000000666F756E9F -:1079A00064486F737442794E616D65007365745FEE -:1079B0006B65795F636D645F63620000696E697413 -:1079C0005370690073746172745F636C69656E747F -:1079D0005F746370000000007370695F706F6C6C9F -:1079E000000000006765745F726573756C745F6397 -:1079F0006D645F636200000073746F705F636C6935 -:107A0000656E745F7463705F636D645F63620000D2 -:107A100073746172745F7365727665725F7463709C -:107A2000000000007365745F706173737068726149 -:107A300073655F636D645F63620000007365745F0C -:107A4000726573756C745F636D6400007365745F59 -:107A5000646E735F636F6E6669675F636D645F63B7 -:107A6000620000006765745F73746174655F7463BE -:107A7000705F636D645F6362000000007265715F38 -:107A80007265706C795F686F73745F62795F6E6145 -:107A90006D655F636200000073746172745F636C94 -:107AA00069656E745F7463705F636D645F636200C9 -:107AB000572D5B25735D2057726F6E67207465725A -:107AC0006D696E6174696F6E20696E6465783A25C0 -:107AD00064206E506172616D3A2564206964783A61 -:107AE00025642031366269743A25640A000000007A -:107AF0003078257820000000572D5B25735D2049E4 -:107B00006E646578206F7574206F662072616E6791 -:107B1000653A2025640A00005B25735D20535349B4 -:107B2000443A25730A0000005B25735D20525353CD -:107B3000493A25640A0000005B25735D20454E43E9 -:107B4000543A25640A0000005B25735D205365618B -:107B5000726368696E6720666F7220486F73743A4B -:107B60002069703D3078257820666F756E643D25FC -:107B7000640A00005B25735D20666F756E64486F54 -:107B8000737442794E616D653A20466F756E64205C -:107B9000486F73743A206E616D653D25732069707E -:107BA0003D307825780A00005B25735D20696653B7 -:107BB00074617475733A256420726573756C743AD8 -:107BC00025640A004C69737420436F6D6D616E64A7 -:107BD000732066756C6C210A000000005245434515 -:107BE000495645005452414E534D4954000000003F -:107BF0005B25735D204D6170205B25642C20257012 -:107C00002C2025735D0A00005B25735D20535049CD -:107C100020696E697469616C697A6174696F6E203C -:107C20006661696C65642100572D5B25735D204595 -:107C300072726F7220636F6E6669677572696E67C4 -:107C4000205350490A000000572D5B25735D202505 -:107C5000645D20446973616C6C2E2025642F25645B -:107C600020636D643A25640A00000000572D5B25EF -:107C7000735D2025645D20446973616C6C2E202542 -:107C8000640A00005B25735D3A200000572D5B25D8 -:107C9000735D2025645D204E6F7420666F756E6481 -:107CA00020656E6420636D643A20307825780A0080 -:107CB0005B25735D2025732025640A00572D5B2505 -:107CC000735D20456E64206F6620636D6420706173 -:107CD00072616D73000000005B25735D2064617448 -:107CE00061417661696C3A25640A0000572D5B2575 -:107CF000735D2054544350206E6F7420666F756E10 -:107D00006420666F7220736F636B3A25640A00000B -:107D10005B25735D20736F636B3A25642073746118 -:107D200074653A25640A00005B25735D20737461F5 -:107D300074653A25640A00005B25735D2053746105 -:107D40007274204E6574776F726B205363616E207E -:107D500025640A00572D5B25735D206572723D25F1 -:107D6000640A00005B25735D204C6F6F6B696E6762 -:107D700020666F7220486F73743A206E616D653DA6 -:107D800025730A005B25735D20466F756E6420487D -:107D90006F73743A206E616D653D25732069703D87 -:107DA000307825780A0000005B25735D2053746FDE -:107DB0007020636C69656E7420736F636B3A256421 -:107DC0000A00000055445000544350005B25735D89 -:107DD00020416464723A307825782C20706F727478 -:107DE0003A25642C20736F636B3A25642C207072E3 -:107DF0006F743A25730A0000572D5B25735D205080 -:107E0000726576696F757320636C69656E74202581 -:107E100070206E6F742073746F7070656420210A17 -:107E2000000000005B25735D205374617274204371 -:107E30006C69656E74202573202570205B30782571 -:107E4000782C2025642C2025645D204F4B210A00CE -:107E50005B25735D20537461727420436C69656E99 -:107E600074202573202570205B307825782C202500 -:107E7000642C2025645D204641494C4544210A007C -:107E8000572D5B25735D205374696C6C20636F6E96 -:107E90006E65637465642E2E2E776169740A000026 -:107EA000572D5B25735D20494620646F776E2E2E1B -:107EB0002E776169740A00005B25735D205374613D -:107EC000727420536572766572202573205B256479 -:107ED0002C2025645D204F4B210A0000572D5B2587 -:107EE000735D2053746172742053657276657220DD -:107EF0002573205B25642C2025645D204641494C78 -:107F00004544210A000000005B25735D2025702098 -:107F10006E756D506172616D3D2564207061726D8A -:107F200073546F4368616E67653D25640A00000005 -:107F30005B25735D2025645D206E69663A2570209F -:107F40006C7769705F616464723D307825780A00EF -:107F50005B25735D20257320706172616D733D2513 -:107F6000640A00005B25735D20506173733A20251D -:107F7000732025640A000000572D5B25735D2025C2 -:107F800073203A204661696C656420746F206164D7 -:107F90006420706173737068726173650A00000019 -:107FA000436F6E6E65637420746F206E6574776FB7 -:107FB000726B2E2E2E0000006572723D25640A0041 -:107FC0004F4B0A00572D5B25735D205353494420C6 -:107FD0006C656E206F7574206F662072616E6765C8 -:107FE000000000005B25735D2025730A000000007F -:107FF000572D5B25735D2053656E642053504920D7 -:108000006572726F72210A003D3D3E003C3D3D00AD -:10801000572D5B25735D20556E6B6E6F776E2063F9 -:108020006D6420307825780A00000000572D5B250C -:10803000735D2025645D20436865636B20666F7205 -:108040006D6174206D7367206661696C6564210AD7 -:1080500000000000444F574E000000005550000043 -:1080600049462020207374617475733A2025730A81 -:1080700000000000434F4E4E207374617475733AD4 -:108080002025730A00000000536F636B6574206E37 -:108090002E3A256428256429205B307825785D20D8 -:1080A000257320257320616464723A257320706FF4 -:1080B00072743A25640A00005B2564207470637052 -:1080C0002D25705D2D5374617475733A25640A0013 -:1080D0005B746C63702D25705D2D537461747573C2 -:1080E0003A25640A000000005B757063702D2570EE -:1080F0005D20666C6167733A3078257820206C6F5C -:1081000063616C3A25735B307825785D2D25640AB0 -:108110000000000072656D6F74653A257328307831 -:108120002578292D25640A004E4F0000594553003B -:108130004461746120617661696C3A25730A0000BC -:108140002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D5F -:108150002D2D2D2D2D2D2D2D2D2D2D2D2D2D0A009F -:108160005B25735D205363616E206E6F7420636FB7 -:108170006D706C65746564210A0000005B25735D99 -:10818000204E6574776F726B73206E6F7420666F0C -:10819000756E64210A000000636F756C64206E6F59 -:1081A0007420616C6C6F6361746520616C6C206716 -:1081B0007569206E65742061727261790A00000031 -:1081C000636F756C64206E6F7420616C6C6F63619B -:1081D000746520616C6C20677569206E6574730A24 -:1081E000000000005B25735D202564202D20257391 -:1081F000205B25645D2D202564202D202564202D05 -:1082000020307825780A000D000B000C000A0000D1 -:108210007365745F726573756C745F636D64000081 -:108220008000636C800063988000637E80006398A8 -:108230008000638E80006398800063648000639890 -:10824000800063688000638A800063786174637073 -:108250005F706F6C6C5F636F6E6E00007564705F53 -:10826000737461727400000072656D6F76654E659F -:1082700077436C69656E74436F6E6E0061756470F0 -:108280005F726563765F6362000000006765745328 -:1082900074617465546370006172645F7463705FCD -:1082A00073746F7000000000617463705F636F6EC1 -:1082B0006E5F6572725F6362000000006765744EF6 -:1082C0006577436C69656E74436F6E6E4964000038 -:1082D000617463705F636F6E6E5F636C695F65721C -:1082E000725F636200000000617463705F616363CA -:1082F0006570745F636200007564705F73746172AF -:10830000740000005B25735D20747463703A2570FF -:108310002069643D25642C20747063623D25700AD9 -:1083200000000000572D5B25735D204E6F205661C5 -:108330006C696420636C69656E7420666F7220746A -:108340007463703A25700A005B25735D2025645DB7 -:1083500020747463703A257020747063623A2570DB -:108360002073746174653A2564206C7063623A25E9 -:10837000702073746174653A2564206C6566743A84 -:1083800025642073656E743A25640A00572D5B25B9 -:10839000735D20544350206E6F7420696E69746958 -:1083A000616C697A656420747463703A2570207416 -:1083B0007063623A2570206C7063623A25700A001F -:1083C000572D5B25735D204E6F2056616C696420CC -:1083D000496420666F7220747463703A257020704F -:1083E00063623A25700A00005B25735D2062756642 -:1083F0003A2570206C656E3A25640A00572D5B257E -:10840000735D2054544350205B25705D3A20636FA8 -:10841000756C64206E6F7420616C6C6F6361746541 -:1084200020706275660A0000572D5B25735D20542D -:10843000544350205B25705D3A207564705F73650E -:108440006E642829206661696C65640A000000007A -:108450005B25735D2054544350205B25702D25709F -:108460005D3A20636F6E6E65637420256420256419 -:108470000A0000005B25735D206C6566743D256411 -:10848000206C656E3A25640A000000005B25735D70 -:10849000207463705F7772697465206661696C65CA -:1084A000642025702073746174653A2564206C65BE -:1084B0006E3A2564206572723A25640A0000000055 -:1084C000572D5B25735D2074746370203D3D204EF5 -:1084D000554C4C210A0000005B25735D20747463C9 -:1084E000703A2570207063623A2570206275663A92 -:1084F0002570206C656E3A25640A00005B25735D6B -:1085000020272573270A00005B25735D20506163D7 -:108510006B65742073656E74207063623A257020F9 -:108520006C656E3A2564206475723A2564206C652A -:1085300066743A25640A00005B25735D2054544339 -:1085400050205B25705D3A20636C65616E536F63EC -:108550006B53746174655F63622025640A000000D8 -:108560005B25735D20436C6F73696E672074706365 -:10857000623A2073746174653A30782578206572A8 -:10858000723A25640A0000005B25735D20436C6F1E -:1085900073696E67206C7063623A207374617465EE -:1085A0003A30782578206572723A25640A00000016 -:1085B0005B25735D2046726565696E672070617921 -:1085C0006C6F61642025642D25700A005B25735D46 -:1085D00020436C6F73696E6720747063625B2570F3 -:1085E0005D3A2073746174653A307825782065723D -:1085F000723A25640A000000572D5B25735D204305 -:10860000616E6E6F7420636C6F73652069643A25C8 -:10861000642D2570207075742070656E64696E67B6 -:108620000A0000005B25735D202D2D2D2D2D2D2D95 -:108630002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0A8D -:1086400000000000572D5B25735D2074746370205B -:108650003D204E554C4C210A000000005B25735D07 -:1086600020666C75736820646174613A207470636D -:10867000623A2570206572723A25640A0000000093 -:10868000572D5B25735D2054544350205B25705D4E -:108690003A20636F6E6E656374696F6E20657272E7 -:1086A0006F723A202564206375727249643A2564BA -:1086B0000A00000041626F727420636F6E6E656322 -:1086C00074696F6E0A000000572D5B25735D20549E -:1086D000544350205B25705D3A20636F6E6E656376 -:1086E00074696F6E206572726F723A202564206122 -:1086F00072673A25700A0000572D5B25735D205480 -:10870000544350205B25705D3A2066726565206D8C -:10871000656D6F72790A00005B25735D20554450CA -:1087200020496E7365727420257020736F636B3AF5 -:10873000256420616464723A257320706F72743A04 -:1087400025640A00572D5B25735D20545443502047 -:108750005B2D5D3A20696E76616C6964206D6F6493 -:10876000650A0000572D5B25735D2054544350204B -:108770005B2D5D3A20696E76616C6964206E62756E -:10878000660A0000572D5B25735D2054544350202A -:108790005B2D5D3A20696E76616C69642062756656 -:1087A0006C656E0A00000000572D5B25735D205438 -:1087B000544350205B2D5D3A20636F756C64206ECE -:1087C0006F7420616C6C6F63617465206D656D6F93 -:1087D000727920666F7220747463700A0000000062 -:1087E000572D5B25735D2054544350205B25705DED -:1087F0003A20636F756C64206E6F7420616C6C6FCF -:1088000063617465207063620A0000005B25735D1C -:108810002025732C20757063623A25702025733AE9 -:1088200025640A00572D5B25735D20545443502066 -:108830005B25705D3A2075647020636F6E6E6563B2 -:1088400074206661696C65640A000000572D5B2521 -:10885000735D2054544350205B25705D3A2062695B -:108860006E64206661696C6564206572723D256482 -:1088700020506F727420616C726561647920757329 -:1088800065640A005B25735D2025732C206C6F6383 -:108890003A307825782D25642072656D3A30782538 -:1088A000782D25640A0000005B25735D20416C6C07 -:1088B0006F63207061796C6F61642025642D257071 -:1088C0000A000000572D5B25735D2054544350204F -:1088D0005B25705D3A20636F756C64206E6F742049 -:1088E000616C6C6F63617465207061796C6F616439 -:1088F0000A0000005B25735D205B747063625D2D70 -:108900002570207061796C6F61643A25700A0000EF -:10891000572D5B25735D2054544350205B25705DBB -:108920003A2074637020636F6E6E656374206661B5 -:10893000696C65640A0000005B25735D2042454652 -:108940004F52452042494E4420747463703A25705A -:10895000206C7063623A2570207063623A25700A59 -:1089600000000000572D5B25735D205454435020B8 -:108970005B25705D3A206C697374656E2066616971 -:108980006C65640A00000000572D5B25735D205361 -:108990007461727420736572766572204641494C29 -:1089A0004544210A000000005B25735D20545443B8 -:1089B00050205B25702D25705D3A206E6275663DF6 -:1089C00025642C206275666C656E3D25642C2070D4 -:1089D0006F72743D2564202825732F2573290A00A2 -:1089E0007574726C3A6E3A703A7600002573000026 -:1089F0005B25735D2041524420544350205B257019 -:108A00005D3A20616363657074206E6577205B2535 -:108A1000705D0A005B25735D206C6F63616C3A25A5 -:108A2000642072656D6F74653A2564207374617497 -:108A3000653A25640A0000007061796C6F616420FA -:108A40006E6F74206672656564210000572D5B258A -:108A5000735D2041524420544350205B25705D20BB -:108A60006172673D257020726574726965733D257A -:108A7000642061626F72740A000000005B25735D00 -:108A8000206B656570416C697665436E743A256448 -:108A9000206B6565705F69646C653A25642070655C -:108AA00072736973745F636E743A25640A00000020 -:108AB0005B25735D2041524420544350205B257058 -:108AC0002D25705D206172673D257020726574727E -:108AD0006965733D25642070656E642E636C6F73E9 -:108AE000653A2564206C656E3A25640A0000000032 -:108AF0005B25735D2041524420544350205B257018 -:108B00002D25705D2074727920746F20636C6F73F3 -:108B1000652070656E64696E673A256420657272BF -:108B20003A25642069643A25640A00005B25735D78 -:108B30002041524420544350205B25702D25705D08 -:108B4000206172673D257020726574726965733D9E -:108B500025642070656E642E636C6F73653A2564BE -:108B600020636F6E6E3A25640A000000572D5B2566 -:108B7000735D2041524420544350205B25702D25C5 -:108B8000705D206172673D25702072657472696541 -:108B9000733D25640A0000005B25735D204152444B -:108BA00020544350205B25702D25705D2074727910 -:108BB00020746F20636C6F73652070656E64696EDE -:108BC000673A25640A0000005B25735D206C656EC2 -:108BD0003A25640A000000005B25735D20736F6313 -:108BE0006B3A2564207063623A2570207062756666 -:108BF0003A2570206572723A256420627566537456 -:108C00006F72653A2570206C656E3A25640A000023 -:108C10005B25735D20617463705F726563765F636B -:108C20006220703D4E554C4C206F6E20736F636B0D -:108C30003A2564207063623A25700A00572D5B253F -:108C4000735D206572723D256420703D25700A00B9 -:108C50005B25735D205265636569766564202570C8 -:108C6000206C656E3A25640A000000006174637030 -:108C70005F737461727400007463705F73656E6417 -:108C80005F646174615F70636200000061746370AF -:108C90005F706F6C6C000000617463705F7265637D -:108CA000765F6362000000006172645F7463705FEE -:108CB000737461727400000067657446697273743E -:108CC000436C69656E7400006172645F7463705F09 -:108CD00064657374726F7900636C6F73655F636F43 -:108CE0006E6E000073656E6455647044617461005B -:108CF000696E736572744E6577436C69656E744313 -:108D00006F6E6E0061636B5F726563766564000011 -:108D10007463705F636F6E6E6563745F636200009F -:108D200073656E645463704461746100636C6F7347 -:108D3000655F636F6E6E5F7063620000636C656198 -:108D40006E536F636B53746174655F636200000000 -:108D50007463705F646174615F73656E74000000BA -:108D600061636B416E6446726565446174610000C5 -:108D7000676574417661696C5463704461746142E3 -:108D80007974650066726565744461746100000001 -:108D9000676574546370446174614279746500005E -:108DA00063616C634D657267654C656E0000000021 -:108DB000696E73657274427566000000697341766E -:108DC00061696C5463704461746142797465000038 -:108DD00066726565744461746149647800000000DE -:108DE0005B25735D202570205B25642C25645D0A5E -:108DF00000000000686561644275663D256420746A -:108E000061696C4275663D25640A000025645D2039 -:108E10007063623A2570204275663A202570204CB6 -:108E2000656E3A25640A00005B25735D20205B2592 -:108E3000645D3A206C656E3A2564206964783A2551 -:108E40006420746F743A25640A0000005B25735D2A -:108E500020417661696C61626C6564206461746153 -:108E60003A2025640A000000572D5B25735D2069B8 -:108E70006478427566206F7574206F662072616E2B -:108E800067653A2025640A005B25735D2025702004 -:108E90006964783A25640A00572D5B25735D20428A -:108EA0007566203D3D204E554C4C21005B25735D81 -:108EB0002041636B207063623A2570206C656E3AC6 -:108EC000256420736F636B3A256420646174613A92 -:108ED00025700A005B25735D206765743A25642060 -:108EE00025702025640A00005B25735D206368659A -:108EF000636B3A25642025642025700A0000000079 -:108F00005B25735D2046726565202570206F74684F -:108F1000657220627566202564207461696C3A254B -:108F20006420686561643A25640A0000572D5B255A -:108F3000735D204F76657277726974696E6720621F -:108F40007566666572202570206964783A2564210B -:108F50000A000000572D5B25735D20706275665F07 -:108F6000636F70795F7061727469616C20666169AA -:108F70006C65643A207372633A25702C20647374B4 -:108F80003A25702C206C656E3A25640A00000000BA -:108F9000572D5B25735D2041766F696420746F20C7 -:108FA0004F76657277726974652064617461205BC5 -:108FB00025642D25645D210A000000005B25735D9A -:108FC00020496E736572745B25645D3A2025703AA2 -:108FD00025642D2564205B25642C25645D0A000032 -:108FE000572D5B25735D20536F636B206F75742065 -:108FF0006F662072616E67653A20736F636B3D2503 -:1090000064000000696E736572745F70427566007B -:109010006765745F70427566000000000000E10043 -:1090200008040000000000000F01110110011301ED -:109030000E01110110010F0106000500636D645F50 -:109040007365745F69700000636D645F736574704D -:1090500061737300636D645F7374617274436C69F0 -:1090600000000000466F756E6420486F73743A20EC -:109070006E616D653D25732069703D307825780AF5 -:109080000000000075736167653A206474203C310C -:109090007C303E0A0000000075736167653A2073FA -:1090A000656E64556470205B736F636B5D0A097352 -:1090B0006F636B3A20736F636B6574204E756D62DE -:1090C00065720A00536F636B65743A2025640A0069 -:1090D0005061747465726E547970653A2025640A23 -:1090E0000000000050726F766100000031323334AE -:1090F000353637383930000046696E65546573740B -:10910000000000006F6666004465627567204F4688 -:10911000460A00007072696E740000004465627552 -:10912000672009656E61626C65643A203078257845 -:109130000A000000566572626F736520656E616299 -:109140006C65643A20307825780A000044756D70AB -:109150002009656E61626C65643A20307825780A72 -:1091600000000000504F6F6C6C2009656E61626CEE -:1091700065643A20307825780A00000044656275FD -:1091800067204F4E0A00000075736167653A2064DE -:1091900065627567203C73656374696F6E3E203C41 -:1091A0006C6576656C3E0A0973656374696F6E3A27 -:1091B00020696E69742C20636D2C207370692C20DB -:1091C000746370202C207574696C2C207761726E2A -:1091D0000A096C6576656C20203A203020286F667D -:1091E00066292C203120286F6E292C2032202876E9 -:1091F0006572626F7365290A096F723A206465624D -:109200007567207072696E742F6F6E2F6F66660AB5 -:1092100000000000696E697400000000737069004E -:1092200074637000636D00007574696C0000000069 -:109230007761726E00000000616C6C0044756D70A7 -:1092400020416C6C20427566666572730A000000EE -:1092500075736167653A2064756D7050627566203C -:109260005B736F636B5D0A09736F636B3A20736F97 -:10927000636B6574204E756D6265720A00000000B4 -:109280006E6F6E650000000044656C6574696E6702 -:1092900020574550206B6579730A0000757361672C -:1092A000653A207365746B6579203C6B65795F69FD -:1092B00064782028302D33293E203C6B6579206965 -:1092C0006E206865783E0A09206F723A20736574D3 -:1092D0006B6579206E6F6E650A000000205745505F -:1092E000206B6579206D75737420626520313020A4 -:1092F000285745502D343029206F722032362028CF -:109300005745502D31303429206469676974730AD8 -:1093100000000000776C5F61706920766572736988 -:109320006F6E2076322E372E300A00006661696C2F -:10933000656420746F20676574206D6163206164CB -:1093400064726573730A0000687720616464723A1E -:109350002025730A000000006C696E6B2073746135 -:109360007475733A20000000697020616464723A79 -:10937000202573202D2000006E65746D61736B3A9B -:10938000202573202D200000676174657761793A8C -:109390002025730A00000000697020696E746572F0 -:1093A0006661636520697320646F776E0A00000050 -:1093B00064686370203A2000656E61626C65640ABF -:1093C0000000000064697361626C65640A0000005B -:1093D000444E533A202573202D2000007573616799 -:1093E000653A207374617274436C69203C697061E2 -:1093F0006464723E203C706F72743E203C736F63F5 -:109400006B3E203C7463702830292F7564702831BE -:10941000293E0A00537461727420636C69656E742E -:10942000206F6E206164647220307825782C207063 -:109430006F727420256420736F636B202564206D28 -:109440006F64652025640A00572D5B25735D2053EA -:109450007461727420636C69656E74206F6E207025 -:109460006F727420256420736F636B2025642070F5 -:10947000726F74202564206D6F646520256420461A -:1094800041494C45440A000075736167653A207391 -:1094900074617274537276203C706F72743E203C1B -:1094A000736F636B3E203C7463702830292F7564A2 -:1094B000702831293E0A00005374617274202573AC -:1094C00020736572766572206F6E20706F727420E3 -:1094D000256420736F636B2025640A00572D5B257C -:1094E000735D2053746172742025732073657276E6 -:1094F0006572206F6E20706F727420256420736F08 -:10950000636B202564204641494C45440A00000015 -:1095100075736167653A20736574646E73205B319F -:109520002D325D206161612E6262622E6363632E63 -:109530006464640A0000000053657420444E5320A4 -:1095400073657276657220256420746F2025730A16 -:10955000000000003D3D3E20444E53313A2025732B -:109560000A0000003D3D3E20444E53323A20257310 -:109570000A00000075736167653A20676574486F7B -:109580007374203C686F73746E616D653E0A0000F1 -:1095900075736167653A207770617373203C7373EC -:1095A00069643E203C706173737068726173653EDC -:1095B0000A0000002573203A204661696C6564202A -:1095C000746F20616464207061737370687261737A -:1095D000650A000075736167653A20647061737392 -:1095E000203C737369643E0A000000002573203A32 -:1095F000204661696C656420746F2064656C6574D5 -:109600006520706173737068726173650A00000091 -:1096100075736167653A206970636F6E666967206C -:109620003C69703E203C6E65746D61736B3E203CFE -:10963000676174657761792D69703E0A00000000EA -:1096400020206F72203A206970636F6E6669672010 -:109650006E6F6E652028746F20656E61626C652088 -:1096600044484350290A00005B25735D206E6966FB -:109670003A2570206C7769705F616464723D307860 -:1096800025780A0075736167653A20636F6E6E65B1 -:109690006374203C737369643E0A0000636D645F09 -:1096A000737461727453727600000000636D645FBE -:1096B00064656C70617373004D494D4C4644000005 -:1096C0000A24200024200000617661696C61626CCC -:1096D0006520636F6D6D616E64733A0A000000006F -:1096E000202025730A000000636F756C64206E6F84 -:1096F0007420616C6C6F63617465206669726D774C -:10970000617265206275666665720A00547565202F -:109710004D61722032362032323A30393A353420B7 -:109720003230313300000000776C5F696E69745F1E -:10973000636F6D706C6574655F6362006661696C10 -:10974000656420746F20696E697420776C20636F84 -:109750006E6E206D67720000572D5B25735D205380 -:109760007069206E6F7420696E697469616C697AC2 -:1097700065640A006C696E6B20646F776E2C2072D2 -:10978000656C6561736520646863700A00000000A1 -:109790006C696E6B20646F776E0A00006C696E6B8B -:1097A0002075702C20636F6E6E6563746564207421 -:1097B0006F20222573220A007265717565737469C2 -:1097C0006E672064686370202E2E2E20000000003B -:1097D0004641494C45440A00626F756E6420746FBF -:1097E0002025730A00000000572D5B25735D20497A -:1097F0006E74657266616365206E6F74207570218A -:109800000A0000007363616E00000000636F6E6EFB -:10981000656374007365746B6579000073746174BB -:1098200075730000646562756700000064756D7093 -:10983000427566006970636F6E66696700000000BC -:10984000747463700000000077706173730000002F -:109850006470617373000000676574486F7374000F -:10986000736574444E53000073746172745372765E -:10987000000000007374617274436C6900000000A2 -:1098800073656E645564700041726475696E6F2013 -:109890005769666920537461727475702E2E2E207C -:1098A0005B25735D0A0000006F7574206F66206D84 -:1098B000656D6F72790000006661696C6564207483 -:1098C0006F207072657061726520666F72206669C4 -:1098D000726D7761726520646F776E6C6F61640A78 -:1098E00000000000436F756C64206E6F7420646527 -:1098F0007465637420776C206465766963652C20D9 -:1099000061626F7274696E670A000000496E766169 -:109910006C6964206669726D776172652064617438 -:10992000612C2061626F7274696E670A000000002A -:109930004661696C656420746F2073746172742071 -:10994000776C20696E697469616C697A6174696F9A -:109950006E0A0000312E312E3000000069705F73F6 -:1099600074617475735F63620000000002000000A0 -:1099700000B71B000800000100010000286E756C94 -:109980006C290000253032782D253032782D253095 -:1099900032782D253032782D253032782D25303211 -:1099A00078000000256C752E256C752E256C752EA3 -:1099B000256C75007373696420746F6F206C6F6E13 -:1099C0006720286D6178202564290A00257320000E -:1099D00022257322000000002052535349202564A1 -:1099E0002064426D200000002041642D486F6320F8 -:1099F00000000000202857455020656E6372797082 -:109A000074696F6E290000002028544B495020656E -:109A10006E6372797074696F6E2900002028434369 -:109A20004D5020656E6372797074696F6E29000005 -:109A3000202020002530325820000000256300003F -:109A40006E6F206E65747320666F756E640A000019 -:109A5000496E76616C6964206C656E6774680A0093 -:109A600025642E25642E25642E256400544B495010 -:109A70000000000043434D500000000057455000D7 -:109A8000776C5F636D5F696E6974000073656C6508 -:109A900063745F6E65740000776C5F636F6E6E5FFA -:109AA0006C6F73745F636200776C5F7363616E5F8A -:109AB000636F6D706C6574655F636200776C5F6582 -:109AC00076656E745F636200776C5F6D6564696173 -:109AD0005F636F6E6E65637465645F636200000050 -:109AE0005B25735D20434D3A206F7574206F6620AF -:109AF0006D656D6F72790A005B25735D20434D3A89 -:109B000020636F756C64206E6F7420726567697373 -:109B1000746572206576656E742063620A000000C9 -:109B20005B25735D20434D3A20696E697469616CF1 -:109B3000697A65640A0000005B25735D20434D3A35 -:109B400020636F6E6E656374656420746F20257387 -:109B50000A0000005B25735D20434D3A20636F6E61 -:109B60006E656374206661696C65642C2073636143 -:109B70006E6E696E670A00005B25735D20434D3A87 -:109B800020636F756C64206E6F74207374617274DF -:109B9000207363616E20616674657220636F6E6E00 -:109BA000656374206661696C210A00005B25735D42 -:109BB00020434D3A20646973636F6E6E656374650C -:109BC000640A00005B25735D20434D3A20636F6E8D -:109BD0006E656374696F6E206C6F73742C20736391 -:109BE000616E6E696E670A005B25735D20434D3AB6 -:109BF00020636F756C64206E6F742073746172746F -:109C0000207363616E20616674657220636F6E6E8F -:109C1000656374206C6F7374210A00005B25735DAB -:109C200020434D3A207363616E20636F6D706C65E5 -:109C30007465640A00000000FFFFFFFFFFFF0000E3 -:109C40005B25735D20434D3A20526F616D696E67ED -:109C50002066726F6D207273736920256420746FA3 -:109C60002025640A000000005B25735D20434D3A07 -:109C7000204E6F2063616E64696461746520666F55 -:109C8000756E6420666F7220737369642022257379 -:109C9000220A00005B25735D20434D3A206661690E -:109CA0006C656420746F20636F6E6E6563740A0068 -:109CB0005B25735D20434D3A206661696C656420C5 -:109CC000746F207363616E0A000000005B25735D92 -:109CD00020434D3A20756E68616E646C6564206542 -:109CE00076656E740A000000776C5F636F6E6E5F5E -:109CF0006661696C7572655F636200000000000157 -:109D0000000018500000000B00001854000000096B -:109D1000000018800000000F000018A400000001DF -:109D2000000018E000000001000018E4000000013D -:109D300000001810000000010000181400000001CD -:109D400000001818000000010000181C00000001AD -:109D5000000018200000000100001824000000018D -:109D600000001828000000010000182C000000036B -:109D700000001830000000010000183C0000000145 -:109D8000000018400000000100001844000000011D -:109D900000001848000000010000184C4173736572 -:109DA0007274696F6E2022257322206661696C656A -:109DB00064206174206C696E6520256420696E20C2 -:109DC00025730A002E2E2F7372632F534F4654575C -:109DD0004152455F4652414D45574F524B2F5345D7 -:109DE0005256494345532F4C5749502F6C77697051 -:109DF0002D312E332E322F7372632F636F72652FC6 -:109E0000646863702E630000646863705F6F7074D1 -:109E1000696F6E3A20646863702D3E6F7074696F6D -:109E20006E735F6F75745F6C656E202B2032202B14 -:109E3000206F7074696F6E5F6C656E203C3D2044CE -:109E40004843505F4F5054494F4E535F4C454E006E -:109E5000646863705F6F7074696F6E5F6279746558 -:109E60003A20646863702D3E6F7074696F6E735F23 -:109E70006F75745F6C656E203C20444843505F4FA3 -:109E80005054494F4E535F4C454E00006468637018 -:109E90005F6F7074696F6E5F747261696C65723A3E -:109EA000206468637020213D204E554C4C0000001A -:109EB000646863705F6F7074696F6E5F74726169FC -:109EC0006C65723A20646863702D3E6D73675F6FD6 -:109ED000757420213D204E554C4C0A006468637017 -:109EE0005F6F7074696F6E5F747261696C65723AEE -:109EF00020646863702D3E6F7074696F6E735F6F5E -:109F000075745F6C656E203C20444843505F4F5031 -:109F100054494F4E535F4C454E0A000064686370CD -:109F20005F6F7074696F6E5F73686F72743A2064EC -:109F30006863702D3E6F7074696F6E735F6F7574B8 -:109F40005F6C656E202B2032203C3D2044484350FE -:109F50005F4F5054494F4E535F4C454E0000000038 -:109F6000646863705F6F7074696F6E5F6C6F6E674B -:109F70003A20646863702D3E6F7074696F6E735F12 -:109F80006F75745F6C656E202B2034203C3D20443F -:109F90004843505F4F5054494F4E535F4C454E001D -:109FA0007265706C79207761736E277420667265B4 -:109FB00065640000646863705F6372656174655F07 -:109FC000726571756573743A206E657469662021D7 -:109FD0003D204E554C4C0000646863705F637265B1 -:109FE0006174655F726571756573743A2064686346 -:109FF0007020213D204E554C4C0000006468637079 -:10A000005F6372656174655F726571756573743ADB -:10A0100020646863702D3E705F6F7574203D3D2035 -:10A020004E554C4C00000000646863705F637265BD -:10A030006174655F726571756573743A20646863F5 -:10A04000702D3E6D73675F6F7574203D3D204E55DA -:10A050004C4C0000646863705F6372656174655F97 -:10A06000726571756573743A20636865636B2074FB -:10A07000686174206669727374207062756620630B -:10A08000616E20686F6C64207374727563742064F1 -:10A090006863705F6D736700646863705F64656CAC -:10A0A0006574655F726571756573743A206E657469 -:10A0B000696620213D204E554C4C00006468637059 -:10A0C0005F64656C6574655F726571756573743A1C -:10A0D000206468637020213D204E554C4C000000E8 -:10A0E000646863705F64656C6574655F72657175E3 -:10A0F0006573743A20646863702D3E705F6F757489 -:10A1000020213D204E554C4C0000000064686370D7 -:10A110005F64656C6574655F726571756573743ACB -:10A1200020646863702D3E6D73675F6F75742021C6 -:10A130003D204E554C4C00006E6574696620213DF3 -:10A14000204E554C4C0000007062756620705F6FA9 -:10A150007574207761736E2774206672656564007C -:10A16000646863705F62696E643A206E65746966E4 -:10A1700020213D204E554C4C000000006468637067 -:10A180005F62696E643A206468637020213D204EEE -:10A19000554C4C00726574203D3D2073697A656FA3 -:10A1A000662873747275637420646863705F6D737E -:10A1B0006729202D20444843505F4F5054494F4E4B -:10A1C000535F4C454E000000726574203D3D206495 -:10A1D0006863702D3E6F7074696F6E735F696E5F38 -:10A1E0006C656E002E2E2F7372632F534F4654579B -:10A1F0004152455F4652414D45574F524B2F5345B3 -:10A200005256494345532F4C5749502F6C7769702C -:10A210002D312E332E322F7372632F636F72652FA1 -:10A22000646E732E63000000646E73207365727633 -:10A230006572206F7574206F66206172726179009B -:10A24000646E732073657276657220686173206E28 -:10A250006F20495020616464726573732073657464 -:10A260000000000070627566206D75737420626571 -:10A2700020696E206F6E652070696563650000005F -:10A28000617272617920696E646578206F757420DF -:10A290006F6620626F756E6473000000756E6B6E82 -:10A2A0006F776E20646E735F7461626C6520656E9B -:10A2B0007472792073746174653A00006C6F636125 -:10A2C0006C686F73740000003230382E36372E32CF -:10A2D00032322E3232320000000400040004000248 -:10A2E000002000050002001E002000002E2E2F730B -:10A2F00072632F534F4654574152455F4652414D6A -:10A3000045574F524B2F53455256494345532F4CB7 -:10A310005749502F6C7769702D312E332E322F73A1 -:10A3200072632F636F72652F6D656D702E63000011 -:10A330006D656D705F667265653A206D656D207044 -:10A34000726F7065726C7920616C69676E6564000C -:10A350006D656D705F6D616C6C6F633A20747970C0 -:10A3600065203C204D454D505F4D41580000000098 -:10A370006D656D705F6D616C6C6F633A206D656DBE -:10A38000702070726F7065726C7920616C69676E95 -:10A3900065640000001C002000B0002400140020B0 -:10A3A00000080010025400002E2E2F7372632F53EA -:10A3B0004F4654574152455F4652414D45574F52C3 -:10A3C0004B2F53455256494345532F4C5749502F15 -:10A3D0006C7769702D312E332E322F7372632F6399 -:10A3E0006F72652F6E657469662E6300626F6775A4 -:10A3F0007320706275663A206C656E20213D207472 -:10A400006F745F6C656E20627574206E6578742061 -:10A410003D3D204E554C4C210000000073686F7587 -:10A420006C64206E6F74206265206E756C6C207396 -:10A43000696E636520666972737420213D206C61CA -:10A4400073742100696620666972737420213D204F -:10A450004E554C4C2C206C617374206D75737420B8 -:10A46000616C736F20626520213D204E554C4C007D -:10A470002E2E2F7372632F534F4654574152455F10 -:10A480004652414D45574F524B2F53455256494323 -:10A4900045532F4C5749502F6C7769702D312E330F -:10A4A0002E322F7372632F636F72652F7062756621 -:10A4B0002E630000286820213D204E554C4C292059 -:10A4C000262620287420213D204E554C4C2920283A -:10A4D00070726F6772616D6D65722076696F6C6105 -:10A4E000746573204150492900000000702D3E74AE -:10A4F0006F745F6C656E203D3D20702D3E6C656E07 -:10A5000020286F66206C6173742070627566206904 -:10A510006E20636861696E2900000000696E6372D5 -:10A52000656D656E745F6D61676E697475646520D5 -:10A530003C3D20702D3E6C656E0000006261642021 -:10A5400070627566207479706500000070627566CF -:10A550005F74616B653A20696E76616C6964206234 -:10A5600075660000706275665F74616B653A20699C -:10A570006E76616C6964206461746170747200004D -:10A58000706275665F74616B653A20696E76616CA6 -:10A590006964207062756600646964206E6F74205F -:10A5A000636F707920616C6C2064617461000000DD -:10A5B000706275665F636F70795F706172746961F4 -:10A5C0006C3A20696E76616C696420627566000081 -:10A5D000706275665F636F70795F706172746961D4 -:10A5E0006C3A20696E76616C696420646174617094 -:10A5F00074720000706275665F636F70793A2074E0 -:10A600006172676574206E6F742062696720656E81 -:10A610006F75676820746F20686F6C6420736F7546 -:10A6200072636500705F746F20213D204E554C4C65 -:10A63000000000006F66667365745F746F203C3DB8 -:10A6400020705F746F2D3E6C656E00006F666673E0 -:10A6500065745F66726F6D203C3D20705F66726F3F -:10A660006D2D3E6C656E0000706275665F636F7085 -:10A6700079282920646F6573206E6F7420616C6C7B -:10A680006F77207061636B65742071756575657394 -:10A69000210A0000706275665F667265653A207314 -:10A6A000616E6520747970650000000070627566E7 -:10A6B0005F667265653A20702D3E726566203E20A9 -:10A6C00030000000702D3E746F745F6C656E203D2D -:10A6D0003D20702D3E6C656E202B20712D3E746FD9 -:10A6E000745F6C656E000000702D3E746F745F6C5B -:10A6F000656E203D3D20702D3E6C656E00000000B3 -:10A70000706275665F7265616C6C6F633A20702071 -:10A71000213D204E554C4C00706275665F7265613C -:10A720006C6C6F633A2073616E6520702D3E747996 -:10A730007065000067726F77203C206D61785F75EF -:10A7400031365F7400000000706275665F7265618B -:10A750006C6C6F633A207120213D204E554C4C00AB -:10A76000706275665F616C6C6F633A206261642031 -:10A7700070627566206C617965720000636865635C -:10A780006B20702D3E7061796C6F6164202B20709E -:10A790002D3E6C656E20646F6573206E6F74206F44 -:10A7A000766572666C6F77207062756600000000D7 -:10A7B000504255465F504F4F4C5F42554653495AA1 -:10A7C00045206D75737420626520626967676572E4 -:10A7D000207468616E204D454D5F414C49474E4D98 -:10A7E000454E540072656D5F6C656E203C206D6156 -:10A7F000785F7531365F7400706275665F616C6C8E -:10A800006F633A207062756620712D3E7061796CBD -:10A810006F61642070726F7065726C7920616C6911 -:10A82000676E656400000000706275665F616C6C45 -:10A830006F633A206572726F6E656F7573207479FD -:10A8400070650000706275665F636F707920666185 -:10A85000696C656400000000010203040506070737 -:10A8600007070707070000002E2E2F7372632F5370 -:10A870004F4654574152455F4652414D45574F52FE -:10A880004B2F53455256494345532F4C5749502F50 -:10A890006C7769702D312E332E322F7372632F63D4 -:10A8A0006F72652F7463702E630000007463705FB5 -:10A8B000706362735F73616E653A20616374697679 -:10A8C00065207063622D3E737461746520213D20A4 -:10A8D000434C4F53454400007463705F7063627370 -:10A8E0005F73616E653A2061637469766520706399 -:10A8F000622D3E737461746520213D204C49535490 -:10A90000454E00007463705F706362735F73616EC5 -:10A91000653A20616374697665207063622D3E73C9 -:10A920007461746520213D2054494D452D5741499E -:10A93000540000007463705F706362735F73616ED4 -:10A94000653A207477207063622D3E73746174657C -:10A95000203D3D2054494D452D57414954000000AC -:10A960007463705F62696E643A2063616E206F6E1B -:10A970006C792062696E6420696E207374617465FD -:10A9800020434C4F534544007463705F7265637697 -:10A9900065643A206C656E20776F756C6420777201 -:10A9A0006170207263765F776E640A00756E7365FE -:10A9B0006E74207365676D656E7473206C65616B72 -:10A9C000696E6700756E61636B6564207365676DA2 -:10A9D000656E7473206C65616B696E6700000000C2 -:10A9E0006F6F736571207365676D656E7473206C2E -:10A9F00065616B696E6700007463705F7063625FAE -:10AA000072656D6F76653A207463705F7063627310 -:10AA10005F73616E652829007463705F6C6973747D -:10AA2000656E3A2070636220616C726561647920A2 -:10AA3000636F6E6E65637465640000007463705FBD -:10AA4000736C6F77746D723A2061637469766520F8 -:10AA50007063622D3E737461746520213D20434C08 -:10AA60004F5345440A0000007463705F736C6F7746 -:10AA7000746D723A20616374697665207063622D2B -:10AA80003E737461746520213D204C495354454EFA -:10AA90000A0000007463705F736C6F77746D723AB4 -:10AAA00020616374697665207063622D3E73746102 -:10AAB000746520213D2054494D452D574149540A84 -:10AAC000000000007463705F736C6F77746D723A8E -:10AAD000206D6964646C652074637020213D20746E -:10AAE00063705F6163746976655F706362730000B1 -:10AAF0007463705F736C6F77746D723A20666972FD -:10AB0000737420706362203D3D207463705F6163E5 -:10AB1000746976655F706362730000007463705FD0 -:10AB2000736C6F77746D723A2054494D452D5741BF -:10AB30004954207063622D3E7374617465203D3DFD -:10AB40002054494D452D5741495400007463705FAE -:10AB5000736C6F77746D723A206D6964646C6520F4 -:10AB600074637020213D207463705F74775F70633D -:10AB7000627300007463705F736C6F77746D723A08 -:10AB800020666972737420706362203D3D20746397 -:10AB9000705F74775F706362730000007463705F4E -:10ABA000636F6E6E6563743A2063616E206F6E6CC6 -:10ABB0007920636F6E6E65637465642066726F6D75 -:10ABC00020737461746520434C4F5345440000006A -:10ABD00053594E5F53454E540000000053594E5F89 -:10ABE000524356440000000045535441424C4953DF -:10ABF0004845440046494E5F574149545F31000083 -:10AC000046494E5F574149545F320000434C4F5311 -:10AC1000455F574149540000434C4F53494E47004C -:10AC20004C4153545F41434B0000000054494D4593 -:10AC30005F5741495400000003060C18306078004B -:10AC40008000FAFC8000FC6C8000FD4E8000FDB4AA -:10AC50008000FE368000FD4E8000FE788000FEF809 -:10AC60002E2E2F7372632F534F4654574152455F18 -:10AC70004652414D45574F524B2F5345525649432B -:10AC800045532F4C5749502F6C7769702D312E3317 -:10AC90002E322F7372632F636F72652F7463705F30 -:10ACA000696E2E63000000007063622D3E736E6457 -:10ACB0005F71756575656C656E203E3D20706275CF -:10ACC000665F636C656E286E6578742D3E70290032 -:10ACD0007463705F726563656976653A2076616C4E -:10ACE0006964207175657565206C656E67746800B0 -:10ACF000696E7365672E7020213D204E554C4C00C7 -:10AD0000696E73616E65206F6666736574210000FD -:10AD10007062756620746F6F2073686F72742100A3 -:10AD2000706275665F686561646572206661696CF2 -:10AD3000656400007463705F726563656976653A87 -:10AD4000207365676D656E74206E6F742074726910 -:10AD50006D6D656420636F72726563746C792074C5 -:10AD60006F207263765F776E640A00007463705FB1 -:10AD7000726563656976653A207365676D656E74A3 -:10AD8000206E6F74207472696D6D656420636F72DC -:10AD9000726563746C7920746F206F6F73657120B6 -:10ADA00071756575650A00007463705F726563652F -:10ADB0006976653A207463706C656E203E2072631C -:10ADC000765F776E640A00007463705F7265636516 -:10ADD0006976653A206F6F736571207463706C6576 -:10ADE0006E203E207263765F776E640A000000007A -:10ADF0007463705F696E7075743A2061637469760C -:10AE000065207063622D3E737461746520213D205E -:10AE1000434C4F53454400007463705F696E707516 -:10AE2000743A20616374697665207063622D3E73A5 -:10AE30007461746520213D2054494D452D57414989 -:10AE4000540000007463705F696E7075743A20611D -:10AE50006374697665207063622D3E7374617465F6 -:10AE600020213D204C495354454E00007463705FCF -:10AE7000696E7075743A207063622D3E6E657874E9 -:10AE800020213D2070636220286265666F72652014 -:10AE900063616368652900007463705F696E707533 -:10AEA000743A207063622D3E6E65787420213D20D7 -:10AEB00070636220286166746572206361636865EF -:10AEC000290000007463705F696E7075743A2054D5 -:10AED000494D452D57414954207063622D3E73748E -:10AEE000617465203D3D2054494D452D57414954DD -:10AEF000000000007463705F696E7075743A2070B2 -:10AF000063622D3E737461746520213D20434C4F74 -:10AF1000534544007063622D3E736E645F717565C6 -:10AF200075656C656E203E20300000007063622DF8 -:10AF30003E61636365707420213D204E554C4C008A -:10AF40007463705F696E7075743A207463705F70BB -:10AF50006362735F73616E65282900002E2E2F7364 -:10AF600072632F534F4654574152455F4652414DED -:10AF700045574F524B2F53455256494345532F4C3B -:10AF80005749502F6C7769702D312E332E322F7325 -:10AF900072632F636F72652F7463705F6F75742EA9 -:10AFA00063000000636865636B20746861742066E9 -:10AFB0006972737420706275662063616E20686FB9 -:10AFC0006C6420737472756374207463705F68645A -:10AFD000720000007463705F656E71756575653A27 -:10AFE000207061636B6574206E65656473207061A9 -:10AFF000796C6F61642C206F7074696F6E732C2094 -:10B000006F722053594E2F46494E202870726F6739 -:10B0100072616D6D65722076696F6C617465732005 -:10B0200041504929000000007463705F656E7175BE -:10B030006575653A206C656E20213D2030207C7C52 -:10B0400020617267203D3D204E554C4C2028707287 -:10B050006F6772616D6D65722076696F6C61746582 -:10B0600073204150492900007463705F656E7175EB -:10B070006575653A207062756673206F6E20717514 -:10B08000657565203D3E206174206C656173742098 -:10B090006F6E65207175657565206E6F6E2D656DBF -:10B0A000707479007463705F656E71756575653A6B -:10B0B000206E6F207062756673206F6E20717565EB -:10B0C0007565203D3E20626F7468207175657565F9 -:10B0D0007320656D707479007573656720213D205C -:10B0E0004E554C4C00000000636865636B2074682B -:10B0F0006174206669727374207062756620636182 -:10B100006E20686F6C642074686520636F6D706C6E -:10B11000657465207365676C656E000070627566A6 -:10B120005F686561646572206661696C65640A00C8 -:10B1300046494E20656E71756575656420746F674C -:10B140006574686572207769746820646174610051 -:10B150007A65726F2D6C656E6774682070627566B3 -:10B16000000000007463705F656E71756575653A07 -:10B170002076616C6964207175657565206C656EFB -:10B1800067746800525354206E6F74206578706540 -:10B190006374656420686572652100002E2E2F732C -:10B1A00072632F534F4654574152455F4652414DAB -:10B1B00045574F524B2F53455256494345532F4CF9 -:10B1C0005749502F6C7769702D312E332E322F73E3 -:10B1D00072632F636F72652F7564702E63000000B9 -:10B1E000726562696E64203D3D203000636865636E -:10B1F0006B20746861742066697273742070627564 -:10B20000662063616E20686F6C642073747275636E -:10B2100074207564705F686472000000702D3E7069 -:10B2200061796C6F6164203D3D20697068647200D3 -:10B230002E2E2F7372632F534F4654574152455F42 -:10B240004652414D45574F524B2F53455256494355 -:10B2500045532F4C5749502F6C7769702D312E3341 -:10B260002E322F7372632F636F72652F697076347D -:10B270002F69636D702E6300636865636B2074686B -:10B2800061742066697273742070627566206361F0 -:10B290006E20686F6C642069636D70206D657373D8 -:10B2A0006167650069636D705F696E7075743A20DF -:10B2B0006D6F76696E6720702D3E7061796C6F617D -:10B2C0006420746F2069702068656164657220660F -:10B2D00061696C65640A0000636865636B2074686B -:10B2E0006174206669727374207062756620636190 -:10B2F0006E20686F6C642073747275637420746858 -:10B30000652049434D502068656164657200000006 -:10B3100069636D705F696E7075743A20636F7079E0 -:10B32000696E6720746F206E657720706275662085 -:10B330006661696C65640A0069636D705F696E704F -:10B3400075743A20726573746F72696E67206F72DC -:10B350006967696E616C20702D3E7061796C6F61F8 -:10B3600064206661696C65640A00000043616E27B1 -:10B3700074206D6F7665206F7665722068656164F4 -:10B38000657220696E207061636B65740000000057 -:10B390002E2E2F7372632F534F4654574152455FE1 -:10B3A0004652414D45574F524B2F534552564943F4 -:10B3B00045532F4C5749502F6C7769702D312E33E0 -:10B3C0002E322F7372632F636F72652F697076341C -:10B3D0002F69702E63000000636865636B207468DA -:10B3E000617420666972737420706275662063618F -:10B3F0006E20686F6C64207374727563742069705A -:10B400005F68647200FFFFFFFF00000000000000A3 -:10B410002E2E2F7372632F534F4654574152455F60 -:10B420004652414D45574F524B2F53455256494373 -:10B4300045532F4C5749502F6C7769702D312E335F -:10B440002E322F7372632F636F72652F697076349B -:10B450002F69705F667261672E630000746869739C -:10B46000206E656564732061207062756620696E68 -:10B47000206F6E65207069656365210073616E6978 -:10B48000747920636865636B206C696E6B656420FA -:10B490006C697374000000007072657620213D2095 -:10B4A00069707200707265762D3E6E657874203D0D -:10B4B0003D2069707200000069705F72656173738E -:10B4C0005F70627566636F756E74203E3D20636CBD -:10B4D000656E0000636865636B20667261676D6509 -:10B4E0006E747320646F6E2774206F7665726C6162 -:10B4F000700000006E6F2070726576696F75732042 -:10B50000667261676D656E742C2074686973206D56 -:10B51000757374206265207468652066697273743F -:10B5200020667261676D656E7421000073616E69DB -:10B53000747920636865636B0000000076616C6954 -:10B54000646174655F646174616772616D3A6E65B0 -:10B5500078745F70627566213D4E554C4C0000005A -:10B5600076616C69646174655F646174616772615E -:10B570006D3A646174616772616D20656E64213D2E -:10B58000646174616772616D206C656E00FFFFFF1E -:10B59000FFFFFF002E2E2F7372632F534F46545719 -:10B5A0004152455F4652414D45574F524B2F5345EF -:10B5B0005256494345532F4C5749502F6C77697069 -:10B5C0002D312E332E322F7372632F6E65746966A0 -:10B5D0002F6574686172702E630000006E65746977 -:10B5E000662D3E6877616464725F6C656E206D7570 -:10B5F0007374206265207468652073616D652061D5 -:10B6000073204554484152505F4857414444525F6B -:10B610004C454E20666F722065746861727021001F -:10B620007120213D204E554C4C000000712D3E7084 -:10B6300020213D204E554C4C00000000722D3E70E4 -:10B6400020213D204E554C4C000000006172705F7F -:10B650007461626C655B695D2E71203D3D204E55C5 -:10B660004C4C000069203C204152505F5441424CF8 -:10B67000455F53495A4500006E657469662D3E6802 -:10B6800077616464725F6C656E203D3D204554486F -:10B690004152505F4857414444525F4C454E000070 -:10B6A000636865636B207468617420666972737483 -:10B6B00020706275662063616E20686F6C64207311 -:10B6C0007472756374206574686172705F68647207 -:10B6D000000000006172705F7461626C655B695D9F -:10B6E0002E7374617465203D3D2050454E44494E93 -:10B6F00047206F7220535441424C45006E6F2070BA -:10B7000061636B65742071756575657320616C6C20 -:10B710006F77656421000000000000002E2E2F735B -:10B7200072632F534F4654574152455F4652414D25 -:10B7300045574F524B2F53455256494345532F4C73 -:10B740005749502F6C7769702D706F72742D312EA0 -:10B75000332E322F48442F69662F6E657469662F29 -:10B76000776C69662E6300000A09000052580000D9 -:10B7700054580000FFFFFF740000000001FFFFFFAE -:10B780000000FFFFFFFFFF400000000001FFFFFF80 -:10B7900041505000484D4700312E352E312E370094 -:10B7A000312E352E312E3100312E352E312E3400F2 -:10B7B00080017C7C80017C7480017C7C80017C6ABF -:10B7C00080017DCA80017D7880017D2A80017CD83E -:10B7D00080017C86800185D2800185CA800185CA6E -:10B7E000800185D2800185C2800185C2800185BA31 -:10B7F000800185BA02040B0C121618242C30424822 -:10B80000606C0000322E312E312E310078C40E00D3 -:10B81000352E332E31000000352E332E350000003A -:10B82000352E332E340000008001BF808001BF928E -:10B830008001BFA88001BF5A8001BF668001BFD4CC -:10B840008001BF5A8001BFE08001BF5A8001BF5A0A -:10B850008001BF5A8001BF5A8001BF5A8001BF5A80 -:10B860008001BF5A8001BF5A8001BF5A8001BF5A70 -:10B870008001BF5A8001BF5A8001BF5A8001BF5A60 -:10B880008001BF5A8001BF5A8001BF5A8001BF5A50 -:10B890008001BF5A8001BF5A8001BF5A8001BF5A40 -:10B8A0008001BF5A8001BF5A8001BF5A8001BF5A30 -:10B8B0008001BF5A8001BF5A8001BF5A8001BF5A20 -:10B8C0008001BF5A8001BF5A8001BF5A8001BF5A10 -:10B8D0008001BF5A8001BF5A8001BF5A8001BF5A00 -:10B8E0008001BF5A8001BF5A8001BF5A8001BF5AF0 -:10B8F0008001BF5A8001BF5A8001BF5A8001BF5AE0 -:10B900008001BF5A8001BF5A8001BF5A8001BF5ACF -:10B910008001BF5A8001BF5A8001BF5A8001BF5ABF -:10B920008001BF5A8001BF7C8001C0448001BF5AA2 -:10B930008001C0448001BF5A8001C17C8001BF5A90 -:10B940008001C1708001BF5A8001C1648001BF5A6B -:10B950008001BF5A8001BF5A8001BF5A8001C1AC2B -:10B960008001BF5A8001BF5A8001C1A08001BF5A27 -:10B970008001C1948001BF5A8001BF5A8001BF5A23 -:10B980008001BF5A8001BF5A8001BF5A8001BF5A4F -:10B990008001BF5A8001BF5A8001BF5A8001BF5A3F -:10B9A0008001BF5A8001BF5A8001BF5A8001BF5A2F -:10B9B0008001BF5A8001BF5A8001BF5A8001BF5A1F -:10B9C0008001BF5A8001BF5A8001BF5A8001BF5A0F -:10B9D0008001BF5A8001BF5A8001BF5A8001BF5AFF -:10B9E0008001BF5A8001BF5A8001BF5A8001BF5AEF -:10B9F0008001BF5A8001BF5A8001BF5A8001BF5ADF -:10BA00008001BF5A8001BF5A8001BF5A8001BF5ACE -:10BA10008001BF5A8001BF5A8001BF5A8001BF5ABE -:10BA20008001BF5A8001BF5A8001BF5A8001BF5AAE -:10BA30008001BF5A8001BF5A8001BF5A8001BF5A9E -:10BA40008001BF5A8001BF5A8001BF5A8001BF5A8E -:10BA50008001BF5A8001BF5A8001BF5A8001BF5A7E -:10BA60008001BF5A8001BF5A8001BF5A8001BF5A6E -:10BA70008001BF5A8001BF5A8001BF5A8001BF5A5E -:10BA80008001BF5A8001BF5A8001BF5A8001BF5A4E -:10BA90008001BF5A8001BF5A8001BF5A8001BF5A3E -:10BAA0008001BF5A8001BF5A8001BF5A8001BF5A2E -:10BAB0008001BF5A8001BF5A8001BF5A8001BF5A1E -:10BAC0008001BF5A8001BF5A8001BF5A8001BF5A0E -:10BAD0008001BF5A8001BF5A8001BF5A8001BF5AFE -:10BAE0008001BF5A8001BF5A8001BF5A8001BF5AEE -:10BAF0008001BF5A8001BF5A8001BF5A8001BF5ADE -:10BB00008001BF5A8001BF5A8001BF5A8001BF5ACD -:10BB10008001BF5A8001C02C8001C1588001C02C17 -:10BB20008001C02C8001C1888001BF5A8001C044BF -:10BB30008001BF5A8001C0508001BF5A8001C050AF -:10BB40008001BF5A8001C02C8001BF5A8001C02CE7 -:10BB50008001C0388001C0388001C0388001BF5AE0 -:10BB60008001C02C8001C02C8001C14C8001BF5AD3 -:10BB70008001BF5A8001C1408001BF5A8001BF5A75 -:10BB80008001BF5A8001BF5A8001BF5A8001BF5A4D -:10BB90008001BF5A8001BF5A8001BF5A8001BF5A3D -:10BBA0008001C1348001BF5A8001BF5A8001BF5A51 -:10BBB0008001BF5A8001BF5A8001BF5A8001BF5A1D -:10BBC0008001C1288001BF5A8001BF5A8001BF5A3D -:10BBD0008001BF5A8001BF5A8001BF5A8001BF5AFD -:10BBE0008001BF5A8001BF5A8001BF5A8001BF5AED -:10BBF0008001BF5A8001BF5A8001BF5A8001BF5ADD -:10BC00008001BF5A8001BF5A8001BF5A8001BF5ACC -:10BC10008001BF5A8001BF5A8001BF5A8001BF5ABC -:10BC20008001BF5A8001BF5A8001BF5A8001BF5AAC -:10BC30008001BF5A8001BF5A8001BF5A8001BF5A9C -:10BC40008001BF5A8001BF5A8001BF5A8001BF5A8C -:10BC50008001BF5A8001BF5A8001BF5A8001BF5A7C -:10BC60008001BF5A8001BF5A8001BF5A8001BF5A6C -:10BC70008001BF5A8001BF5A8001BF5A8001BF5A5C -:10BC80008001BF5A8001BF5A8001BF5A8001BF5A4C -:10BC90008001BF5A8001BF5A8001BF5A8001BF5A3C -:10BCA0008001BF5A8001BF5A8001BF5A8001BF5A2C -:10BCB0008001BF5A8001BF5A8001BF5A8001BF5A1C -:10BCC0008001BF5A8001BF5A8001BF5A8001BF5A0C -:10BCD0008001BF5A8001BF5A8001BF5A8001BF5AFC -:10BCE0008001BF5A8001BF5A8001BF5A8001BF5AEC -:10BCF0008001BF5A8001BF5A8001BF5A8001BF5ADC -:10BD00008001BF5A8001BF5A8001BF5A8001BF5ACB -:10BD10008001BF5A8001BF5A8001BF5A8001BF5ABB -:10BD20008001BF5A8001BF5A8001BF5A8001BF5AAB -:10BD30008001BF5A8001BF5A8001BF5A8001BF5A9B -:10BD40008001BF5A8001BF5A8001BF5A8001BF5A8B -:10BD50008001BF5A8001BF5A8001BF5A8001BF5A7B -:10BD60008001BF5A8001BF5A8001BF5A8001C11CA7 -:10BD70008001C1108001BF5A8001C1048001BF5AF7 -:10BD80008001BF5A8001BF5A8001C0F88001C0EC19 -:10BD90008001BF5A8001BF5A8001C0E08001BF5AB4 -:10BDA0008001BF5A8001C0D48001C0C88001C0BCDE -:10BDB0008001C0B08001C0A48001C0988001C08C07 -:10BDC0008001BF5A8001C0808001C0748001BF5AC9 -:10BDD0008001C0688001C05C8001C48E8001C47C89 -:10BDE0008001C46A8001C4588001C4468001C43403 -:10BDF0008001C3928001C3928001C4228001C410DB -:10BE00008001C3FE8001C3EC8001C3DA8001C3C896 -:10BE10008001C3B68001C3A48001C3A48001C4A073 -:10BE20008001C2D48001C2D48001C2D48001C5C0C7 -:10BE30008001C5AE8001C59C8001C2D48001C2D4FE -:10BE40008001C58A8001C2D48001C2D48001C57836 -:10BE50008001C5668001C5548001C5428001C5309E -:10BE60008001C51E8001C50C8001C4FA8001C4E8B0 -:10BE70008001C2D48001C4D68001C4C48001C2D470 -:10BE80008001C2D48001C2D48001C2D48001C2D456 -:10BE90008001C2D48001C2D48001C2D48001C2D446 -:10BEA0008001C2D48001C2D48001C2D48001C2D436 -:10BEB0008001C2D48001C2D48001C2D48001C2D426 -:10BEC0008001C2D48001C2D48001C2D48001C2D416 -:10BED0008001C2D48001C2D48001C2D48001C2D406 -:10BEE0008001C2D48001C2D48001C2D48001C2D4F6 -:10BEF0008001C2D48001C2D48001C2D48001C2D4E6 -:10BF00008001C2D48001C2D48001C2D48001C2D4D5 -:10BF10008001C2D48001C2D48001C2D48001C2D4C5 -:10BF20008001C2D48001C2D48001C2D48001C2D4B5 -:10BF30008001C2D48001C2D48001C2D48001C2D4A5 -:10BF40008001C2D48001C2D48001C2D48001C2D495 -:10BF50008001C2D48001C2D48001C2D48001C2D485 -:10BF60008001C2D48001C2D48001C2D48001C2D475 -:10BF70008001C2D48001C2D48001C2D48001C2D465 -:10BF80008001C2D48001C2D48001C2D48001C2D455 -:10BF90008001C2D48001C2D48001C2D48001C2D445 -:10BFA0008001C2D48001C2D48001C2D48001C2D435 -:10BFB0008001C2D48001C2D48001C2D48001C2D425 -:10BFC0008001C2D48001C2D48001C2D48001C2D415 -:10BFD0008001C2D48001C2D48001C2D48001C2D405 -:10BFE0008001C2D48001C2D48001C2D48001C2D4F5 -:10BFF0008001C2D48001C2D48001C2D48001C2D4E5 -:10C000008001C2D48001C2D48001C2D48001C2D4D4 -:10C010008001C4B28001EFCA8001EFCE8001EF7AC7 -:10C020008001EF7A8001EF828001EF8A8001EF9238 -:10C030008001EF9A8001EFA28001EFAA8001EFB2A8 -:10C040008001EFBA8001EFC28001EFD68001F96074 -:10C050008001F93E8001F9CC8001F8A68001F9BE8B -:10C060008001F91C8001F8A68001F8E28001F8A6A1 -:10C070008001F8A68001F8A68001F8A68001F8A644 -:10C080008001F8A68001F8A68001F8A68001F8A634 -:10C090008001F8A68001F8A68001F8A68001F8A624 -:10C0A0008001F8A68001F8A68001F8A68001F8A614 -:10C0B0008001F8A68001F8A68001F8A68001F8A604 -:10C0C0008001F8A68001F8A68001F8A68001F8A6F4 -:10C0D0008001F8A68001F8A68001F8A68001F8A6E4 -:10C0E0008001F8A68001F8A68001F8A68001F8A6D4 -:10C0F0008001F8A68001F8A68001F8A68001F8A6C4 -:10C100008001F8A68001F8A68001F8A68001F8A6B3 -:10C110008001F8A68001F8A68001F8A68001F8A6A3 -:10C120008001F8A68001F8A68001F8A68001F8A693 -:10C130008001F8A68001F8A68001F8A68001F8A683 -:10C140008001F8A68001F8A68001F8C08001FA58A5 -:10C150008001F8F08001F8F08001F90E8001F8F01C -:10C160008001F8F08001F8F08001F8F08001F8F02B -:10C170008001F8F08001F8F08001F8F08001F8F01B -:10C180008001F8F08001F90E8001F8F08001F8F0EC -:10C190008001F8F08001F8F08001F8F08001F8F0FB -:10C1A0008001F8F08001FA488001F8F08001F8F091 -:10C1B0008001F8F08001F8F08001F8F08001F8F0DB -:10C1C0008001F8F08001F8F08001F8F08001F8F0CB -:10C1D0008001F8F08001F8F08001F8F08001F8F0BB -:10C1E0008001F8F08001F8F08001F8F08001F8F0AB -:10C1F0008001F8F08001F8F08001F8F08001F8F09B -:10C200008001F8F08001F8F08001F8F08001F8F08A -:10C210008001F8F08001F8F08001F8F08001F8F07A -:10C220008001F8F08001F8F08001F8F08001F8F06A -:10C230008001F8F08001F8F08001F8F08001F8F05A -:10C240008001F8F08001F8F08001F8F08001F8F04A -:10C250008001F8F08001F8F08001F8F08001F8F03A -:10C260008001F8F08001F8F08001F8F08001F8F02A -:10C270008001F8F08001F8F08001F8F08001F8F01A -:10C280008001F8F08001F8F08001F8F08001F8F00A -:10C290008001F8F08001F8F08001F8F08001F8F0FA -:10C2A0008001F8F08001F8F08001F8F08001F8F0EA -:10C2B0008001F8F08001F8F08001F8F08001F8F0DA -:10C2C0008001F8F08001F8F08001F8F08001F8F0CA -:10C2D0008001F8F08001F8F08001F8F08001F8F0BA -:10C2E0008001F8F08001F8F08001F8F08001F8F0AA -:10C2F0008001F8F08001F8F08001F8F08001F8F09A -:10C300008001F8F08001F8F08001F8F08001F8F089 -:10C310008001F8F08001F8F08001F8F08001F8F079 -:10C320008001F8F08001F8F08001F8F08001F8F069 -:10C330008001F8F08001F8F08001F8F08001F8F059 -:10C340008001F8F08001F8F08001F8F08001F8F049 -:10C350008001F90E8001FA348001F8F08001F90EB5 -:10C360008001F8F08001F8F08001F8F08001F8F029 -:10C370008001F8F08001F8F08001F8F08001F90EFA -:10C380008001F8F08001F8F08001FA2C8001FA2495 -:10C390008001FA1C8001FA148001FA0C8001FA0471 -:10C3A0008001FA408001F8F08001FA5057455F495A -:10C3B0004E445F38303231315F434F4E4E45435427 -:10C3C0004544000057455F494E445F3830323131B3 -:10C3D0005F444953434F4E4E454354494E47000036 -:10C3E00057455F494E445F38303231315F494253DF -:10C3F000535F444953434F4E4E4543544544000018 -:10C40000332E312E322E312E34000000352E3233B1 -:10C4100000000000352E32322E320000352E32322E -:10C420002E310000352E322E39000000352E3138E5 -:10C430002E310000352E31382E320000352E3232AA -:10C440002E340000352E32342E320000352E323498 -:10C450002E310000352E31312E310000352E322E96 -:10C4600032000000352E31362E320000352E3136A6 -:10C470002E310000312E312E312E323200000000DC -:10C48000352E322E31392E3500000000352E322E59 -:10C4900031392E3400000000352E322E31392E3342 -:10C4A00000000000352E322E31392E3200000000FF -:10C4B000352E322E31392E3100000000352E322E2D -:10C4C00031000000352E31312E320000352E313151 -:10C4D0002E330000352E31312E340000352E31310F -:10C4E0002E350000352E31312E360000352E3131FB -:10C4F0002E380000352E31312E37000073736964F9 -:10C500000000000070736B004A756E6B41500000B4 -:10C5100057534300656170005746412D53696D7054 -:10C520006C65436F6E6669672D456E726F6C6C65E6 -:10C53000652D312D300000006964656E7469747971 -:10C54000000000006E7277696669000064656661CC -:10C55000756C740057455F494E445F383032313155 -:10C560005F444953434F4E4E4543544544000000F9 -:10C5700057455F494E445F50414952574953455FC3 -:10C580004D49435F4552524F5200000057455F49A5 -:10C590004E445F47524F55505F4D49435F4552529D -:10C5A0004F52000057455F494E445F43414E444956 -:10C5B000444154455F4C495354000000494E4143A7 -:10C5C0005449564500000000444953434F4E4E45E0 -:10C5D00043544544000000005343414E4E494E47EA -:10C5E000000000004153534F43494154494E470016 -:10C5F0004153534F43494154454400003457415936 -:10C600005F48414E445348414B45000047524F5507 -:10C61000505F48414E445348414B4500434F4D50B5 -:10C620004C45544544000000554E4B4E4F574E006C -:10C630004354524C2D4556454E542D5445524D4968 -:10C640004E4154494E47202D207369676E616C201E -:10C650002564207265636569766564007769726533 -:10C660006400000043616E63656C6C696E672061F5 -:10C67000757468656E7469636174696F6E2074693E -:10C680006D656F75740000005750413A2045415068 -:10C690004F4C2070726F63657373696E6720636FB0 -:10C6A0006D706C657465000043616E63656C6C69E8 -:10C6B0006E67207363616E207265717565737400B7 -:10C6C00052534E3A207573696E672049454545209F -:10C6D0003830322E3131692F44392E3000000000BD -:10C6E0005750413A207573696E672049454545208A -:10C6F0003830322E3131692F44332E3000000000A3 -:10C700005750413A204661696C656420746F20700F -:10C7100061727365205750412049452066726F6DE4 -:10C72000206173736F63696174696F6E20696E66EF -:10C730006F0000005750413A2044726976657220BC -:10C74000757365642064697361626C6564206772E7 -:10C750006F75702063697068657220307825782065 -:10C76000286D61736B203078257829202D20726523 -:10C770006A656374000000005750413A20447269B2 -:10C7800076657220757365642064697361626C6597 -:10C790006420706169727769736520636970686588 -:10C7A00072203078257820286D61736B20307825D1 -:10C7B0007829202D2072656A656374005750413ACC -:10C7C00020447269766572207573656420646973AC -:10C7D00061626C6564206B6579206D616E6167656F -:10C7E0006D656E74203078257820286D61736B201C -:10C7F0003078257829202D2072656A6563740000E1 -:10C800005750413A207573696E672047544B204357 -:10C81000434D50005750413A207573696E67204769 -:10C82000544B20544B4950005750413A207573697E -:10C830006E672047544B205745503130340000007C -:10C840005750413A207573696E672047544B205703 -:10C8500045503430000000005750413A207573694C -:10C860006E672050544B2043434D50005750413A7F -:10C87000207573696E672050544B20544B4950000B -:10C880005750413A207573696E672050544B204EC3 -:10C890004F4E45005750413A207573696E67204BE3 -:10C8A00045595F4D474D54203830322E31580000E5 -:10C8B0005750413A207573696E67204B45595F4D5B -:10C8C000474D54205750412D50534B005750413A3B -:10C8D000207573696E67204B45595F4D474D542055 -:10C8E0005750412D4E4F4E45000000005750413AE1 -:10C8F000204661696C656420746F2073656C6563A4 -:10C9000074205750412F52534E0000004661696C0D -:10C91000656420746F20706172736520746865208F -:10C92000636F6E66696775726174696F6E206669A0 -:10C930006C652027257327202D2065786974696E22 -:10C94000670000005265636F6E6669677572617497 -:10C95000696F6E20636F6D706C65746564000000B4 -:10C9600053657474696E672061757468656E746967 -:10C97000636174696F6E2074696D656F75743A20B8 -:10C98000256420736563202564207573656300004A -:10C9900053657474696E67207363616E207265718C -:10C9A000756573743A2025642073656320256420BF -:10C9B000757365630000000041757468656E746985 -:10C9C000636174696F6E20776974682025303278EE -:10C9D0003A253032783A253032783A253032783A72 -:10C9E000253032783A253032782074696D656420BC -:10C9F0006F75742E00000000547279696E672074A0 -:10CA00006F206173736F63696174652077697468FF -:10CA100020253032783A253032783A253032783A4B -:10CA2000253032783A253032783A2530327820284D -:10CA3000535349443D2725732720667265713D2570 -:10CA400064204D487A290000547279696E67207419 -:10CA50006F206173736F63696174652077697468AF -:10CA60002053534944202725732700004173736FD7 -:10CA700063696174696F6E20726571756573742086 -:10CA8000746F2074686520647269766572206661CF -:10CA9000696C6564000000007770615F7375707089 -:10CAA0006C6963616E742076302E352E31300A4306 -:10CAB0006F7079726967687420286329203230307A -:10CAC000332D323030382C204A6F756E69204D611D -:10CAD0006C696E656E203C6A4077312E66693E2037 -:10CAE000616E6420636F6E7472696275746F7273C5 -:10CAF00000000000546869732070726F6772616D86 -:10CB0000206973206672656520736F667477617241 -:10CB1000652E20596F752063616E2064697374728D -:10CB2000696275746520697420616E642F6F72206C -:10CB30006D6F646966792069740A756E6465722028 -:10CB4000746865207465726D73206F662074686503 -:10CB500020474E552047656E6572616C20507562A6 -:10CB60006C6963204C6963656E73652076657273CA -:10CB7000696F6E20322E0A0A416C7465726E6174A0 -:10CB80006976656C792C207468697320736F66749C -:10CB900077617265206D61792062652064697374C4 -:10CBA0007269627574656420756E6465722074685C -:10CBB00065207465726D73206F66207468650A4223 -:10CBC0005344206C6963656E73652E205365652040 -:10CBD000524541444D4520616E6420434F505949B0 -:10CBE0004E4720666F72206D6F72652064657461B8 -:10CBF000696C732E0A0000002530325800000000D6 -:10CC00008003C4FC80024A908002490000000010AA -:10CC100000000014000000000000002000000000E0 -:10CC20008003D3EC80024DF0800248880000006051 -:10CC300000000000000000000000000100000000F3 -:10CC40008003D3F880024DCC800248280000000009 -:10CC500000000000000000000000000000000000D4 -:10CC60008003C50480024D00800248C4000000001B -:10CC700000000000000000000000000000000001B3 -:10CC80008003D4008002408C800247A8000000008E -:10CC90000000000000000000000000000000000094 -:10CCA0008003D40880023F448002467C00000000DC -:10CCB0000000000000000000000000000000000074 -:10CCC0008003D41480023F188002466C00000000EC -:10CCD0000000000000000000000000000000000054 -:10CCE0008003D42080023EEC8002465C00000000FD -:10CCF0000000000000000000000000000000000034 -:10CD00008003D42880023CA4800244740000000008 -:10CD10000000000000000000000000000000000013 -:10CD20008003C51480024B9080024B00000000007D -:10CD300000000000000000000000000000000000F3 -:10CD40008003C53880024A908002490000000068D4 -:10CD50000000006C00000000000000000000000067 -:10CD60008003D43480024A908002490000000070A1 -:10CD7000000000740000000000000000000000003F -:10CD80008003D44880024A90800249000000007865 -:10CD90000000007C000000100000002000000001E6 -:10CDA0008003D45080024A90800249000000008035 -:10CDB00000000084000000000000000000000000EF -:10CDC0008003D45480024A90800249000000008809 -:10CDD0000000008C000000000000000000000001C6 -:10CDE0008003D46080024A908002490000000090D5 -:10CDF0000000000000000000000000000000000033 -:10CE00008003D46880024A908002490000000094A8 -:10CE10000000000000000000000000000000000012 -:10CE20008003D47080024A9080024900000000987C -:10CE300000000000000000000000000000000000F2 -:10CE40008003D47C80024A90800249000000009C4C -:10CE500000000000000000000000000000000000D2 -:10CE60008003D48880024A9080024900000000A01C -:10CE700000000000000000000000000000000001B1 -:10CE80008003D49C80024A9080024900000000A4E4 -:10CE90000000000000000000000000000000000092 -:10CEA0008003D4A480024A9080024900000000A8B8 -:10CEB0000000000000000000000000000000000072 -:10CEC0008003D4B480024A9080024900000000AC84 -:10CED0000000000000000000000000000000000052 -:10CEE0008003D4C880024A9080024900000000B04C -:10CEF0000000000000000000000000000000000032 -:10CF00008003D4D480024A9080024900000000B41B -:10CF10000000000000000000000000000000000011 -:10CF20008003D4E080024A9080024900000000B8EB -:10CF300000000000000000000000000000000000F1 -:10CF40008003D4F080024A9080024900000000BCB7 -:10CF500000000000000000000000000000000000D1 -:10CF60008003D50080024A9080024900000000C082 -:10CF700000000000000000000000000000000001B0 -:10CF80008003D51480024A9080024900000000C44A -:10CF90000000000000000000000000000000000091 -:10CFA0008003D52080024A9080024900000000C81A -:10CFB0000000000000000000000000000000000071 -:10CFC0008003D53080024A9080024900000000CCE6 -:10CFD0000000000000000000000000000000000051 -:10CFE0008003D54480024A9080024900000000D4AA -:10CFF0000000000000000000000000000000000031 -:10D000008003D54C80024A9080024900000000D87D -:10D010000000000000000000000000000000000010 -:10D020008003D55480024A9080024900000000DC51 -:10D0300000000000000000000000000000000000F0 -:10D040008003D55C80024A9080024900000000E025 -:10D0500000000000000000000000000000000001CF -:10D060008003D56080024A9080024900000000E8F9 -:10D0700000000000000000000000000000000000B0 -:10D080008003D56C80024A9080024900000000ECC9 -:10D090000000000000000000000000000000000090 -:10D0A0008003D65C80024DF080024888000000E4D6 -:10D0B0000000000000000000000000000000000070 -:10D0C0008003D57480024DF080024888000000F093 -:10D0D0000000000000000000000000000000000050 -:10D0E0008003D58080024A78800244580000000006 -:10D0F000000000000000000000000000000000012F -:10D100008003D58C80024A608002443C000000000D -:10D11000000000000000000000000000000000010E -:10D120008003D59880024A48800244200000000015 -:10D1300000000000000000000000000000000001EE -:10D140008003D5A480024A3080024404000000001D -:10D1500000000000000000000000000000000001CE -:10D160008003D5B080024DF0800248880000014461 -:10D1700000000000000000000000000000000000AF -:10D180008003D5C080024DF0800248880000000C6A -:10D19000000000000000000000000000000000008F -:10D1A0008003D5CC80024DF0800248880000017CCD -:10D1B000000000000000000000000000000000006F -:10D1C0008003D5DC80024A90800249000000018083 -:10D1D000000000000000000000000000000000004F -:10D1E0008003D5E880024DF0800248880000019C51 -:10D1F000000000000000000000000000000000002F -:10D200008003D5F880024DF0800248880000018438 -:10D21000000000000000000000000001000000000D -:10D220008003D60080024DF0800248880000006430 -:10D2300000000000000000000000000200000000EC -:10D240008003D60880024DF0800248880000014823 -:10D2500000000000000000000000000100000000CD -:10D260008003D62080024DF080024888000001949F -:10D2700000000000000000000000000100000000AD -:10D280008003D62C80024A9080024900000001A051 -:10D29000000000000000000000000000000000008E -:10D2A0008003D63480024DF0800248880000019847 -:10D2B000000000000000000000000001000000006D -:10D2C0008003D63C80024DF0800248880000014C6B -:10D2D000000000000000000000000001000000004D -:10D2E0008003D64880024DF080024888000001A4E7 -:10D2F00000000000000000000000271000000000F7 -:10D300002A0000004F50454E000000005348415293 -:10D31000454400004C454150000000005745503145 -:10D320003034000057455034300000005750412D34 -:10D3300045415000494545453830323158000000DC -:10D340005750410052534E005750413200000000E8 -:10D3500025734F50454E00002573534841524544B4 -:10D360000000000025734C454150000025734343E5 -:10D370004D5000002573544B49500000257357450C -:10D3800050313034000000002573574550343000D0 -:10D3900025734E4F4E45000025735750412D505375 -:10D3A0004B00000025735750412D454150000000AF -:10D3B000257349454545383032315800257357505B -:10D3C000412D4E4F4E45000025735750410000003F -:10D3D000257352534E0000007765705F6B657925A9 -:10D3E0006400000025732573000000007363616E04 -:10D3F0005F73736964000000627373696400000006 -:10D4000070726F746F0000006B65795F6D676D748B -:10D4100000000000706169727769736500000000A8 -:10D4200067726F7570000000617574685F616C678A -:10D4300000000000616E6F6E796D6F75735F6964D7 -:10D44000656E74697479000065617070736B0000BB -:10D450006E61690070617373776F72640000000021 -:10D4600063615F636572740063615F70617468001B -:10D47000636C69656E745F6365727400707269765F -:10D480006174655F6B657900707269766174655F60 -:10D490006B65795F706173737764000064685F66C1 -:10D4A000696C65007375626A6563745F6D6174634E -:10D4B00068000000616C747375626A6563745F6D07 -:10D4C000617463680000000063615F6365727432B9 -:10D4D0000000000063615F7061746832000000004A -:10D4E000636C69656E745F6365727432000000007E -:10D4F000707269766174655F6B6579320000000057 -:10D50000707269766174655F6B6579325F706173A3 -:10D510007377640064685F66696C653200000000C0 -:10D520007375626A6563745F6D617463683200006D -:10D53000616C747375626A6563745F6D617463684E -:10D5400032000000706861736531000070686173BB -:10D5500065320000706373630000000070696E0044 -:10D56000656E67696E655F69640000006B65795F71 -:10D57000696400006561706F6C5F666C6167730061 -:10D580007765705F6B657930000000007765705FCC -:10D590006B657931000000007765705F6B657932EB -:10D5A000000000007765705F6B6579330000000054 -:10D5B0007765705F74785F6B6579696478000000E7 -:10D5C0007072696F72697479000000006561705F44 -:10D5D000776F726B61726F756E6400007061635F6C -:10D5E00066696C6500000000667261676D656E7447 -:10D5F0005F73697A650000006D6F6465000000006C -:10D600007573655F7770730070726F6163746976AC -:10D61000655F6B65795F63616368696E67000000D1 -:10D6200064697361626C65640000000069645F7323 -:10D6300074720000706565726B6579006D6978655C -:10D64000645F63656C6C00006672657175656E631E -:10D6500079000000888E000077696669656E6769E9 -:10D660006E65000057694669456E67696E65000022 -:10D670008003D6588003D664800254C880025420A8 -:10D6800080024F98800252E0800253E8800254A446 -:10D690000000000080024F9A800252C880024F941E -:10D6A00080024F96800252B08002529880024F9CB6 -:10D6B00080024F9E8002523C800251E0800251D491 -:10D6C000800251AC00000000000000008002518088 -:10D6D00080024FF480024FD00000000000000000E4 -:10D6E000000000000000000000000000000000003A -:10D6F000000000000000000080024FA08002564E93 -:10D700008002564A80025646800256408002563CAD -:10D7100080025636800256328002562C80025626EF -:10D72000800256928002568C800256888002568271 -:10D730008002567C80025676800256728002566CB9 -:10D740008002566680025B3480025C0880025BE0E7 -:10D7500080025BBA80025BA080025B3480025B3493 -:10D7600080025B3480025DC280025E3A80025E12FB -:10D7700080025D8E80025CC280025AF680025DF4F7 -:10D7800080025DCE800268DC80026AA280026A00AC -:10D7900080026904800268F2800269EE800268DC1F -:10D7A000800268DC800268E8800268E8800268E83D -:10D7B000696E76616C696461746500004354524C13 -:10D7C0002D4556454E542D4541502D535543434507 -:10D7D0005353204541502061757468656E746963C8 -:10D7E0006174696F6E20636F6D706C657465642021 -:10D7F0007375636365737366756C6C7920286261F9 -:10D80000736564206F6E206C6F776572206C617930 -:10D810006572207375636365737329004354524CBA -:10D820002D4556454E542D4541502D5355434345A6 -:10D830005353204541502061757468656E74696367 -:10D840006174696F6E20636F6D706C6574656420C0 -:10D850007375636365737366756C6C7900000000A3 -:10D860004354524C2D4556454E542D4541502D465E -:10D8700041494C55524520454150206175746865B9 -:10D880006E7469636174696F6E206661696C65644A -:10D8900000000000494E495449414C495A45000096 -:10D8A0004541503A206D6F7265207468616E202585 -:10D8B000642061757468656E7469636174696F6E04 -:10D8C00020726F756E6473202D2061626F72740018 -:10D8D0004354524C2D4556454E542D4541502D4EE6 -:10D8E0004F54494649434154494F4E2000000000DF -:10D8F0004354524C2D4556454E542D4541502D53C1 -:10D900005441525445442045415020617574686526 -:10D910006E7469636174696F6E207374617274658B -:10D92000640000004745545F4D4554484F44000093 -:10D930004541503A204661696C656420746F2069E6 -:10D940006E697469616C697A6520454150206D6526 -:10D9500074686F643A2076656E646F722025752056 -:10D960006D6574686F642025752028257329000073 -:10D970004354524C2D4556454E542D4541502D4D46 -:10D980004554484F44204541502076656E646F727F -:10D99000202575206D6574686F6420257520282505 -:10D9A00073292073656C656374656400454150207C -:10D9B0006465696E697400008002794480027ADAD5 -:10D9C00080027B5880027BA280027CC880027CD2CD -:10D9D00080027AC45750413A20544B495020636F1B -:10D9E000756E7465726D656173757265732073749D -:10D9F0006F707065640000004173736F63696174D8 -:10DA0000656420746F2061206E6577204253533A1D -:10DA10002042535349443D253032783A25303278FC -:10DA20003A253032783A253032783A253032783A11 -:10DA300025303278000000004173736F63696174B0 -:10DA40006564207769746820253032783A25303251 -:10DA5000783A253032783A253032783A25303278A3 -:10DA60003A253032780000005750413A20342D5783 -:10DA700061792048616E647368616B6520666169D5 -:10DA80006C6564202D207072652D73686172656409 -:10DA9000206B6579206D617920626520696E636F06 -:10DAA00072726563740000004354524C2D45564514 -:10DAB0004E542D444953434F4E4E45435445442004 -:10DAC0002D20446973636F6E6E656374206576659F -:10DAD0006E74202D2072656D6F7665206B6579738D -:10DAE000000000004D69636861656C204D4943206A -:10DAF0006661696C757265206465746563746564DC -:10DB000000000000544B495020636F756E746572BD -:10DB10006D65617375726573207374617274656489 -:10DB200000000000000000080000000600000006E1 -:10DB3000496E646578202F204141202F20504D4BA5 -:10DB40004944202F2065787069726174696F6E2076 -:10DB500028696E207365636F6E647329202F206FB0 -:10DB600070706F7274756E69737469630A00000077 -:10DB7000256420253032783A253032783A25303203 -:10DB8000783A253032783A253032783A2530327872 -:10DB9000200000002025642025640A00504D4B2001 -:10DBA0004E616D650000000052534E3A207374615F -:10DBB0007274696E67207072652D61757468656E28 -:10DBC0007469636174696F6E2077697468202530A9 -:10DBD00032783A253032783A253032783A25303268 -:10DBE000783A253032783A253032780052534E3A1E -:10DBF0002070726F63657373696E6720504D4B536D -:10DC0000412063616E646964617465206C6973743A -:10DC10000000000052534E3A206E6F7420696E204F -:10DC20007375697461626C652073746174652066D4 -:10DC30006F72206E6577207072652D6175746865EE -:10DC40006E7469636174696F6E00000052534E3ADE -:10DC500020504D4B53412063616E6469646174656B -:10DC600020253032783A253032783A253032783AE9 -:10DC7000253032783A253032783A253032782073A0 -:10DC8000656C656374656420666F72207072652DC3 -:10DC900061757468656E7469636174696F6E0000A4 -:10DCA00052534E3A20504D4B53412063616E64698C -:10DCB0006461746520253032783A253032783A250F -:10DCC0003032783A253032783A253032783A253079 -:10DCD000327820646F6573206E6F74206E656564A2 -:10DCE000207072652D61757468656E746963617406 -:10DCF000696F6E20616E796D6F72650052534E3A96 -:10DD0000206E6F206D6F72652070656E64696E673E -:10DD100020504D4B53412063616E646964617465AA -:10DD20007300000052534E3A2061646465642050D1 -:10DD30004D4B53412063616368652063616E646984 -:10DD40006461746520253032783A253032783A257E -:10DD50003032783A253032783A253032783A2530E8 -:10DD60003278207072696F202564000052534E3A59 -:10DD7000207072652D61757468656E746963617475 -:10DD8000696F6E207769746820253032783A2530C3 -:10DD900032783A253032783A253032783A253032A6 -:10DDA000783A253032782074696D6564206F757417 -:10DDB00000000000636F6D706C657465642073759E -:10DDC000636365737366756C6C79000052534E3AE9 -:10DDD000206661696C656420746F20676574206DCE -:10DDE00061737465722073657373696F6E206B6500 -:10DDF000792066726F6D207072652D617574682070 -:10DE00004541504F4C207374617465206D616368A7 -:10DE1000696E65730000000052534E3A20707265BF -:10DE20002D61757468656E7469636174696F6E20C5 -:10DE30007769746820253032783A253032783A256F -:10DE40003032783A253032783A253032783A2530F7 -:10DE50003278202573000000800000008002B51C8D -:10DE60008002B50A8002B5008002B4FA8002B4F4E0 -:10DE70008002B4EE8002B4E8000FAC010050F20260 -:10DE8000000FAC02000FAC01000FAC050050F20215 -:10DE9000000FAC040050F2010050F2010050F201FA -:10DEA0000050F2050050F200000FAC00000FAC0370 -:10DEB0000050F200000FAC0449454545203830328F -:10DEC0002E315820286E6F20575041290000000045 -:10DED0005750412F49454545203830322E31582F73 -:10DEE00045415000575041322F4945454520383073 -:10DEF000322E31582F45415000000000575041321A -:10DF00002D50534B000000005745502D3430000079 -:10DF10005745502D313034007061697277697365EF -:10DF20005F6369706865723D25730A67726F75700B -:10DF30005F6369706865723D25730A6B65795F6D13 -:10DF4000676D743D25730A005750413A20257320B0 -:10DF5000287372633D253032783A253032783A257D -:10DF60003032783A253032783A253032783A2530D6 -:10DF7000327829005750413A204B6579206E656709 -:10DF80006F74696174696F6E20636F6D706C657416 -:10DF90006564207769746820253032783A253032FC -:10DFA000783A253032783A253032783A253032784E -:10DFB0003A25303278205B50544B3D25732047542E -:10DFC0004B3D25735D0000005750413A20496E7665 -:10DFD000616C6964204541504F4C2D4B657920663A -:10DFE00072616D65202D206B65795F6461746120BD -:10DFF0006F766572666C6F7720282564203E202539 -:10E000006C752900494520696E20332F34206D73CB -:10E010006720646F6573206E6F74206D6174636830 -:10E02000207769746820494520696E2042656163E4 -:10E030006F6E2F50726F62655265737020286E6F1D -:10E040002049453F29000000494520696E20332FB3 -:10E0500034206D736720646F6573206E6F74206D5C -:10E0600061746368207769746820494520696E206F -:10E07000426561636F6E2F50726F62655265737097 -:10E0800000000000506F737369626C6520646F77E5 -:10E090006E67726164652061747461636B2064658E -:10E0A000746563746564202D2052534E207761732C -:10E0B00020656E61626C656420616E642052534E0F -:10E0C0002049452077617320696E206D7367203386 -:10E0D0002F342C20627574206E6F7420696E20427C -:10E0E0006561636F6E2F50726F6265526573700069 -:10E0F0005750413A204661696C656420746F20670F -:10E100006574206D61737465722073657373696FD4 -:10E110006E206B65792066726F6D204541504F4CC3 -:10E12000207374617465206D616368696E65730046 -:10E130005750413A204B65792068616E647368617D -:10E140006B652061626F7274656400005750413ADC -:10E15000204661696C656420746F20676574207265 -:10E16000616E646F6D206461746120666F7220530C -:10E170004E6F6E6365000000506169727769736568 -:10E18000206B657920657870616E73696F6E000031 -:10E190005750413A2047726F75702072656B6579F0 -:10E1A000696E6720636F6D706C6574656420776954 -:10E1B000746820253032783A253032783A2530326A -:10E1C000783A253032783A253032783A253032782C -:10E1D000205B47544B3D25735D00000000000000AC -:10E1E000000000000050F204000FAC02000FAC0170 -:10E1F00052096AD53036A538BF40A39E81F3D7FBBC -:10E200007CE339829B2FFF87348E4344C4DEE9CB05 -:10E21000547B9432A6C2233DEE4C950B42FAC34E7A -:10E22000082EA16628D924B2765BA2496D8BD12530 -:10E2300072F8F66486689816D4A45CCC5D65B692D4 -:10E240006C704850FDEDB9DA5E154657A78D9D8478 -:10E2500090D8AB008CBCD30AF7E45805B8B3450698 -:10E26000D02C1E8FCA3F0F02C1AFBD0301138A6BB2 -:10E270003A9111414F67DCEA97F2CFCEF0B4E673E2 -:10E2800096AC7422E7AD3585E2F937E81C75DF6E90 -:10E2900047F11A711D29C5896FB7620EAA18BE1BF6 -:10E2A000FC563E4BC6D279209ADBC0FE78CD5AF49C -:10E2B0001FDDA8338807C731B11210592780EC5FE2 -:10E2C00060517FA919B54A0D2DE57A9F93C99CEF3E -:10E2D000A0E03B4DAE2AF5B0C8EBBB3C835399613F -:10E2E000172B047EBA77D626E169146355210C7D7D -:10E2F00001020408102040801B36000051F4A75092 -:10E300007E4165531A17A4C33A275E963BAB6BCB8D -:10E310001F9D45F1ACFA58AB4BE303932030FA55FF -:10E32000AD766DF688CC7691F5024C254FE5D7FC9D -:10E33000C52ACBD726354480B562A38FDEB15A49B2 -:10E3400025BA1B6745EA0E985DFEC0E1C32F750232 -:10E35000814CF0128D4697A36BD3F9C6038F5FE70C -:10E3600015929C95BF6D7AEB955259DAD4BE832DE8 -:10E37000587421D349E069298EC9C84475C2896A95 -:10E38000F48E797899583E6B27B971DDBEE14FB6AE -:10E39000F088AD17C920AC667DCE3AB463DF4A1869 -:10E3A000E51A31829751336062537F45B16477E05B -:10E3B000BB6BAE84FE81A01CF9082B947048685892 -:10E3C0008F45FD1994DE6C87527BF8B7AB73D3236E -:10E3D000724B02E2E31F8F576655AB2AB2EB280758 -:10E3E0002FB5C20386C57B9AD33708A5302887F29C -:10E3F00023BFA5B202036ABAED16825C8ACF1C2B3A -:10E40000A779B492F307F2F04E69E2A165DAF4CD90 -:10E410000605BED5D134621FC4A6FE8A342E539D94 -:10E42000A2F355A0058AE132A4F6EB750B83EC3913 -:10E430004060EFAA5E719F06BD6E10513E218AF9C1 -:10E4400096DD063DDD3E05AE4DE6BD4691548DB5EB -:10E4500071C45D050406D46F605015FF1998FB2444 -:10E46000D6BDE997894043CC67D99E77B0E842BDD5 -:10E4700007898B88E7195B3879C8EEDBA17C0A47EE -:10E480007C420FE9F8841EC90000000009808683E1 -:10E49000322BED481E1170AC6C5A724EFD0EFFFB14 -:10E4A0000F8538563DAED51E362D39270A0FD96453 -:10E4B000685CA6219B5B54D124362E3A0C0A67B1C6 -:10E4C0009357E70FB4EE96D21B9B919E80C0C54F29 -:10E4D00061DC20A25A774B691C121A16E293BA0A21 -:10E4E000C0A02AE53C22E043121B171D0E090D0BAC -:10E4F000F28BC7AD2DB6A8B9141EA9C857F119855E -:10E50000AF75074CEE99DDBBA37F60FDF701269F39 -:10E510005C72F5BC44663BC55BFB7E348B4329765D -:10E52000CB23C6DCB6EDFC68B8E4F163D731DCCAB6 -:10E53000426385101397224084C61120854A247DAA -:10E54000D2BB3DF8AEF93211C729A16D1D9E2F4BEC -:10E55000DCB230F30D8652EC77C1E3D02BB3166CEE -:10E56000A970B999119448FA47E96422A8FC8CC4AF -:10E57000A0F03F1A567D2CD8223390EF87494EC722 -:10E58000D938D1C18CCAA2FE98D40B36A6F581CF5A -:10E59000A57ADE28DAB78E263FADBFA42C3A9DE4DB -:10E5A0005078920D6A5FCC9B547E4662F68D13C202 -:10E5B00090D8B8E82E39F75E82C3AFF59F5D80BE74 -:10E5C00069D0937C6FD52DA9CF2512B3C8AC993BE8 -:10E5D00010187DA7E89C636EDB3BBB7BCD267809DA -:10E5E0006E5918F4EC9AB701834F9AA8E6956E65B8 -:10E5F000AAFFE67E21BCCF08EF15E8E6BAE79BD973 -:10E600004A6F36CEEA9F09D429B07CD631A4B2AF86 -:10E610002A3F2331C6A5943035A266C0744EBC375C -:10E62000FC82CAA6E090D0B033A7D815F104984A6E -:10E6300041ECDAF77FCD500E1791F62F764DD68D3F -:10E6400043EFB04DCCAA4D54E49604DF9ED1B5E320 -:10E650004C6A881BC12C1FB84665517F9D5EEA0439 -:10E66000018C355DFA877473FB0B412EB3671D5A1D -:10E6700092DBD252E91056336DD647139AD7618C8C -:10E6800037A10C7A59F8148EEB133C89CEA927EEEA -:10E69000B761C935E11CE5ED7A47B13C9CD2DF5941 -:10E6A00055F2733F1814CE7973C737BF53F7CDEACD -:10E6B0005FFDAA5BDF3D6F147844DB86CAAFF38150 -:10E6C000B968C43E3824342CC2A3405F161DC372FF -:10E6D000BCE2250C283C498BFF0D954139A80171FE -:10E6E000080CB3DED8B4E49C6456C1907BCB846143 -:10E6F000D532B670486C5C74D0B85742C66363A517 -:10E70000F87C7C84EE777799F67B7B8DFFF2F20DB7 -:10E71000D66B6BBDDE6F6FB191C5C55460303050A4 -:10E7200002010103CE6767A9562B2B7DE7FEFE1978 -:10E73000B5D7D7624DABABE6EC76769A8FCACA45B1 -:10E740001F82829D89C9C940FA7D7D87EFFAFA153B -:10E75000B25959EB8E4747C9FBF0F00B41ADADEC18 -:10E76000B3D4D4675FA2A2FD45AFAFEA239C9CBFA0 -:10E7700053A4A4F7E47272969BC0C05B75B7B7C28E -:10E78000E1FDFD1C3D9393AE4C26266A6C36365A4D -:10E790007E3F3F41F5F7F70283CCCC4F6834345CC1 -:10E7A00051A5A5F4D1E5E534F9F1F108E2717193D1 -:10E7B000ABD8D873623131532A15153F0804040CC5 -:10E7C00095C7C752462323659DC3C35E30181828DA -:10E7D000379696A10A05050F2F9A9AB50E070709D5 -:10E7E000241212361B80809BDFE2E23DCDEBEB264C -:10E7F0004E2727697FB2B2CDEA75759F1209091BB2 -:10E800001D83839E582C2C74341A1A2E361B1B2DF4 -:10E81000DC6E6EB2B45A5AEE5BA0A0FBA45252F664 -:10E82000763B3B4DB7D6D6617DB3B3CE5229297B1B -:10E83000DDE3E33E5E2F2F7113848497A65353F5D7 -:10E84000B9D1D16800000000C1EDED2C402020605E -:10E85000E3FCFC1F79B1B1C8B65B5BEDD46A6ABE5C -:10E860008DCBCB4667BEBED97239394B944A4ADE4E -:10E87000984C4CD4B05858E885CFCF4ABBD0D06B19 -:10E88000C5EFEF2A4FAAAAE5EDFBFB16864343C569 -:10E890009A4D4DD766333355118585948A4545CFBA -:10E8A000E9F9F91004020206FE7F7F81A05050F0C2 -:10E8B000783C3C44259F9FBA4BA8A8E3A25151F352 -:10E8C0005DA3A3FE804040C0058F8F8A3F9292AD2A -:10E8D000219D9DBC70383848F1F5F50463BCBCDF60 -:10E8E00077B6B6C1AFDADA75422121632010103055 -:10E8F000E5FFFF1AFDF3F30EBFD2D26D81CDCD4CF3 -:10E90000180C0C1426131335C3ECEC2FBE5F5FE11B -:10E91000359797A2884444CC2E17173993C4C4570F -:10E9200055A7A7F2FC7E7E827A3D3D47C86464AC61 -:10E93000BA5D5DE73219192BE6737395C06060A06C -:10E94000198181989E4F4FD1A3DCDC7F442222663F -:10E95000542A2A7E3B9090AB0B8888838C4646CA0B -:10E96000C7EEEE296BB8B8D32814143CA7DEDE79C5 -:10E97000BC5E5EE2160B0B1DADDBDB76DBE0E03B45 -:10E9800064323256743A3A4E140A0A1E924949DBEE -:10E990000C06060A4824246CB85C5CE49FC2C25D85 -:10E9A000BDD3D36E43ACACEFC46262A6399191A8DB -:10E9B000319595A4D3E4E437F279798BD5E7E73242 -:10E9C0008BC8C8436E373759DA6D6DB7018D8D8CA2 -:10E9D000B1D5D5649C4E4ED249A9A9E0D86C6CB48F -:10E9E000AC5656FAF3F4F407CFEAEA25CA6565AFE8 -:10E9F000F47A7A8E47AEAEE9100808186FBABAD525 -:10EA0000F07878884A25256F5C2E2E72381C1C24DD -:10EA100057A6A6F173B4B4C797C6C651CBE8E8238E -:10EA2000A1DDDD7CE874749C3E1F1F21964B4BDDFD -:10EA300061BDBDDC0D8B8B860F8A8A85E07070907E -:10EA40007C3E3E4271B5B5C4CC6666AA904848D8B3 -:10EA500006030305F7F6F6011C0E0E12C26161A350 -:10EA60006A35355FAE5757F969B9B9D017868691BF -:10EA700099C1C1583A1D1D27279E9EB9D9E1E13899 -:10EA8000EBF8F8132B9898B322111133D26969BBB4 -:10EA9000A9D9D970078E8E89339494A72D9B9BB6E4 -:10EAA0003C1E1E2215878792C9E9E92087CECE49F0 -:10EAB000AA5555FF50282878A5DFDF7A038C8C8F64 -:10EAC00059A1A1F8098989801A0D0D1765BFBFDA10 -:10EAD000D7E6E631844242C6D06868B8824141C375 -:10EAE000299999B05A2D2D771E0F0F117BB0B0CBFD -:10EAF000A85454FC6DBBBBD62C16163A002020201F -:10EB000020202020202028282828282020202020DD -:10EB100020202020202020202020202020881010AD -:10EB20001010101010101010101010101004040409 -:10EB300004040404040404101010101010104141C7 -:10EB400041414141010101010101010101010101B5 -:10EB500001010101010101011010101010104242C9 -:10EB60004242424202020202020202020202020285 -:10EB70000202020202020202101010102000000025 -:10EB80000000000000000000000000000000000085 -:10EB90000000000000000000000000000000000075 -:10EBA0000000000000000000000000000000000065 -:10EBB0000000000000000000000000000000000055 -:10EBC0000000000000000000000000000000000045 -:10EBD0000000000000000000000000000000000035 -:10EBE0000000000000000000000000000000000025 -:10EBF0000000000000000000000000000000000015 -:10EC00002D2D0000504F5349584C595F434F5252DD -:10EC10004543540025733A206F7074696F6E20600D -:10EC200025732720697320616D626967756F75733D -:10EC30002028636F756C6420626520602D2D25731C -:10EC400027206F7220602D2D257327290A000000D0 -:10EC500025733A20696E76616C6964206F707469FF -:10EC60006F6E202D2D20602D2563270A00000000E7 -:10EC700025733A20617267756D656E7420726571D7 -:10EC8000756972656420666F72206F7074696F6E4B -:10EC9000206000002D2D2573270A00002D256327F5 -:10ECA0000A00000043000000000004A88002F4668F -:10ECB0008002F4888002F2B08002F2E88002F4520E -:10ECC0008002F4508002F3FE8002F4268002F3DC1E -:10ECD0008002F3DC8002F3CC8002F3DC8002F3EAF2 -:10ECE0008002F3EA8002F3DC3030303030303030F4 -:10ECF000303030303030303001020B040B0506016B -:10ED00000B01020B040B0506010B0B0B03040B0597 -:10ED10000B0B0B0B0B0B040B050B0B0B0B0B0B0B50 -:10ED20000B0B0B0B0B05080B040B0B070B0B0B0949 -:10ED30000B040B050B0B0B0B0A0B040B0B0B0B0B38 -:10ED40000B0B0B040B0B0B0B0B0B0B030B0B0B0B22 -:10ED50000B0B0B0B080B0B0B0B0B0B00000000003D -:10ED6000000000000001000304000000000001009A -:10ED7000030400000000000007030400000000007E -:10ED80000000030400000000000000000400000078 -:10ED90000000020003040000000000010005060559 -:10EDA0000000000001000506000000000000000354 -:10EDB0000400000000000008000000000000000047 -:10EDC000080000000000000000000000000000003B -:10EDD0003031323334353637383941424344454691 -:10EDE0000000000030313233343536373839616253 -:10EDF0006364656600000000202020202020202081 -:10EE000020202020202020200808080808080808C2 -:10EE10000808080808080808080808080808080872 -:10EE2000080808080808080807080807020808076B -:10EE30000808060708070508000101010101010192 -:10EE40000101080808080808080408040404040468 -:10EE50000808080803080804080808040804080843 -:10EE6000040808080808080808040804040404043E -:10EE70000304030803080404040308040304080843 -:10EE8000040803080808080808080808080808080B -:10EE900008080808080808080808080808080808F2 -:10EEA00008080808080808080808080808080808E2 -:10EEB00008080808080808080808080808080808D2 -:10EEC00008080808080808080808080808080808C2 -:10EED00008080808080808080808080808080808B2 -:10EEE00008080808080808080808080808080808A2 -:10EEF0000808080808080808080808080808080892 -:10EF00000808080808080808000A000100020003B1 -:10EF1000000400050006000700080009000A000BB5 -:10EF2000000C000D000E000F00100000000000009B -:10EF300000000000000000000000000000000000D1 -:10EF400000000000000000000000000000000000C1 -:10EF500000000000000000000000000000000000B1 -:10EF600000000000000000000000000000000000A1 -:10EF70000000000000000000000000000000000091 -:10EF800000000000000000000000000080037FB4CB -:10EF900080037E2080037E2080037E2080037E20ED -:10EFA00080037E2080037E2080037E2080037E20DD -:10EFB00080037E20FFFFFFFFFFFFFFFF49534F2D20 -:10EFC000383835392D310000800333228003334433 -:10EFD0008003316C800331A48003330E8003330C33 -:10EFE000800332BA800332E2800332988003329881 -:10EFF0008003328880033298800332A6800332A6D1 -:10F00000800332988003363480034AA480034AA4E4 -:10F010008003364480034AA480034AA480034AA4A0 -:10F0200080034AA480034AA480034AA4800336488C -:10F030008003371C80034AA48003371880033724D9 -:10F0400080034AA480033842800338468003384650 -:10F0500080033846800338468003384680033846AC -:10F0600080033846800338468003384680034AA42C -:10F0700080034AA480034AA480034AA480034AA4CC -:10F0800080034AA480034AA480034AA480034AA4BC -:10F0900080034AA48003394480033B9680034AA43A -:10F0A00080033B9680034AA480034AA480034AA4B9 -:10F0B00080034AA48003387880034AA480034AA4CA -:10F0C0008003416280034AA480034AA480034AA4C7 -:10F0D00080034AA480034AA48003452680034AA4EF -:10F0E00080034AA48003361A80034AA480034AA4FA -:10F0F00080034AA480034AA480034AA480034AA44C -:10F1000080034AA480034AA480034AA480034AA43B -:10F11000800338988003395A80033B9680033B96DE -:10F1200080033B968003387C8003395A80034AA4CD -:10F1300080034AA48003388080034AA480033FA24E -:10F1400080034178800343A48003389480034AA459 -:10F150008003445880034AA48003453C80034AA4AA -:10F1600080034AA48003476E01020B040B050601CD -:10F170000B01020B040B0506010B0B0B03040B0523 -:10F180000B0B0B0B0B0B040B050B0B0B0B0B0B0BDC -:10F190000B0B0B0B0B05080B040B0B070B0B0B09D5 -:10F1A0000B040B050B0B0B0B0A0B040B0B0B0B0BC4 -:10F1B0000B0B0B040B0B0B0B0B0B0B030B0B0B0BAE -:10F1C0000B0B0B0B080B0B0B0B0B0B0000000000C9 -:10F1D0000000000000010003040000000000010026 -:10F1E000030400000000000007030400000000000A -:10F1F0000000030400000000000000000400000004 -:10F2000000000200030400000000000100050605E4 -:10F2100000000000010005060000000000000003DF -:10F2200004000000000000080000000000000000D2 -:10F2300008000000000000000000000000000000C6 -:10F24000494E4600696E66004E414E006E616E008A -:10F2500020202020202020202020202020202020AE -:10F26000303030303030303030303030303030309E -:10F27000080808080808080808080808080808080E -:10F2800008080808080808080808080808080808FE -:10F2900007080807020808070808060708070508FE -:10F2A0000001010101010101010108080808080825 -:10F2B00008040804040404040808080803080804EF -:10F2C00008080804080408080408080808080808CA -:10F2D00008040804040404040304030803080404E1 -:10F2E00004030804030408080408030808080808BD -:10F2F000080808080808080808080808080808088E -:10F30000080808080808080808080808080808087D -:10F31000080808080808080808080808080808086D -:10F32000080808080808080808080808080808085D -:10F33000080808080808080808080808080808084D -:10F34000080808080808080808080808080808083D -:10F35000080808080808080808080808080808082D -:10F36000080808080808080808080808080808081D -:10F37000496E66696E697479000000004E614E0046 -:10F3800000000005000000190000007D3FF00000B3 -:10F390000000000040240000000000004059000070 -:10F3A00000000000408F40000000000040C38800C3 -:10F3B0000000000040F86A0000000000412E848038 -:10F3C00000000000416312D0000000004197D78484 -:10F3D0000000000041CDCD65000000004202A05FAA -:10F3E0002000000042374876E8000000426D1A9481 -:10F3F000A200000042A2309CE540000042D6BCC4FE -:10F400001E900000430C6BF5263400004341C37985 -:10F4100037E080004376345785D8A00043ABC16DF8 -:10F42000674EC80043E158E460913D004415AF1DAC -:10F4300078B58C40444B1AE4D6E2EF504480F0CFCC -:10F44000064DD59244B52D02C7E14AF644EA784309 -:10F4500079D99DB44341C37937E080004693B8B56C -:10F46000B5056E174D384F03E93FF9F55A827748D5 -:0CF47000F9301D3275154FDD7F73BF3C75 -:10F480000000000455736167653A2074746370204E -:10F490002D742F2D72205B2D6F7074696F6E735DEC -:10F4A00020686F73740A20202020202020202D6CDB -:10F4B0002020202020206C656E677468206F6620F5 -:10F4C00062756673207772697474656E20746F203C -:10F4D0006E6574776F726B202864656661756C74F5 -:10F4E0002031303234290A20202020202020202DD5 -:10F4F0006E2020202020206E756D626572206F6660 -:10F500002062756673207772697474656E20746FFB -:10F51000206E6574776F726B202864656661756C08 -:10F52000742031303234290A20202020202020204D -:10F530002D70202020202020706F7274206E756D39 -:10F5400062657220746F2073656E6420746F20286A -:10F5500064656661756C742032303030290A202071 -:10F560002020202020202D752020202020207564A0 -:10F57000700A20202020202020202D7620202020EE -:10F580002020766572626F73650A000080039954CB -:10F59000000000000000000000000000000000006B -:10F5A000000000000000000000000000000000005B -:10F5B000000000000000000000000000000000004B -:10F5C000000000000000000000000000000000003B -:10F5D000000000000000000000000000000000002B -:10F5E000000000000000000000000000000000001B -:10F5F000000000000000000000000000000000000B -:10F6000000000000000000000000000000000000FA -:10F6100000000000000000000000000000000000EA -:10F6200000000000000000000000000000000000DA -:10F6300000000000000000000000000000000000CA -:10F6400000000000000000000000000000000000BA -:10F6500000000000000000000000000000000000AA -:10F660000000000400000000ABCD00000000196E97 -:10F6700010000000FFFFFFFFFFFFFFFFFF7590007E -:10F68000000001FFFFFFFFFEFFFFFFFFFF751000FF -:10F69000000001FFFFFFFFFE00050000800149ECB4 -:10F6A000800149EC800149EC800149EC0000000038 -:10F6B000000002340000000C02040B0C1216182487 -:10F6C0003048606C000000000000000000000000F6 -:10F6D00000000010010000146D3E86B0FFFFFFFF28 -:10F6E000FFFF0000000003E800000001000000012F -:10F6F00000000320000000010000000000000008DE -:10F70000000000020000006400000000000000058E -:10F710000000000F000000050000000F000013882B -:10F7200000001388000007D00000138800003E800E -:10F73000000000020000000C02040B0C121618243A -:10F740003048606C00000000000000000000000075 -:10F7500000000000000000000D0102030405060780 -:10F7600008090A0B0C0D000000000011FF0000004A -:10F770000000000000000000000000000000000089 -:10F780000000000000000000000000000000FFFF7B -:10F79000FFFFFFFF00000001000000030000000168 -:10F7A0000000000100000000000000010000000156 -:10F7B0000000000100000001000000000000000146 -:10F7C0000000000A00000005000000000000000525 -:10F7D00000000000FFFFFFFF00000001000000002C -:10F7E00000000002FF000000000000000000000018 -:10F7F0000000000000000000000000000000000009 -:10F80000000000000000FFFFFFFFFFFF00000001FD -:10F810000000000300000000000007D000000064AA -:10F8200003010100060200000000000C82848B8CA2 -:10F83000129618243048606C0000000000000000A0 -:10F8400000000000000000000000000100000001B6 -:10F85000000000010014000000000014000007D0A8 -:10F860000000000000000001000000000000000691 -:10F8700000000001FFFFFFFF0A00000064756D6DCE -:10F88000795F7373696400000000000000000000ED -:10F890000000000000000000000000000000000068 -:10F8A000303030313032303330343035303630373C -:10F8B0003038303930613062306330643065306602 -:10F8C0003130313131323133313431353136313714 -:10F8D00031383139316131623163316431653166DA -:10F8E00000000000000000028003D670000000004D -:10F8F000800255EC80025614800256588002569CB5 -:10F90000800256AA800255F4800256B6800256D074 -:10F910008002614C8003EAFD0000003F000000010E -:10F920008003EF2C8003EF4C8003EF6C000000009D -:10F9300000000000000000000000000000000000C7 -:10F940008003ECA4000000000000000000000000A4 -:10F9500000000000000000000000000000000000A7 -:10F960000000000000000000000000000000000097 -:10F970000000000000000000000000000000000087 -:10F980000000000000000000000000000000000077 -:10F990000000000000000000000000000000000067 -:10F9A0000000000000000000000000000000000057 -:10F9B0000000000000000000000000000000000047 -:10F9C0000000000000000000000000000000000037 -:10F9D0000000000000000000000000000000000027 -:10F9E0000000000000000000000000000000000017 -:10F9F0000000000000000000000000000000000007 -:10FA000000000000000000000000000000000000F6 -:10FA1000000004A800000000000000000000059C99 -:10FA20000000059C000005A4000005A4000005AC32 -:10FA3000000005AC000005B4000005B4000005BCE2 -:10FA4000000005BC000005C4000005C4000005CC92 -:10FA5000000005CC000005D4000005D4000005DC42 -:10FA6000000005DC000005E4000005E4000005ECF2 -:10FA7000000005EC000005F4000005F4000005FCA2 -:10FA8000000005FC00000604000006040000060C4F -:10FA90000000060C00000614000006140000061CFE -:10FAA0000000061C00000624000006240000062CAE -:10FAB0000000062C00000634000006340000063C5E -:10FAC0000000063C00000644000006440000064C0E -:10FAD0000000064C00000654000006540000065CBE -:10FAE0000000065C00000664000006640000066C6E -:10FAF0000000066C00000674000006740000067C1E -:10FB00000000067C00000684000006840000068CCD -:10FB10000000068C00000694000006940000069C7D -:10FB20000000069C000006A4000006A4000006AC2D -:10FB3000000006AC000006B4000006B4000006BCDD -:10FB4000000006BC000006C4000006C4000006CC8D -:10FB5000000006CC000006D4000006D4000006DC3D -:10FB6000000006DC000006E4000006E4000006ECED -:10FB7000000006EC000006F4000006F4000006FC9D -:10FB8000000006FC00000704000007040000070C4A -:10FB90000000070C00000714000007140000071CF9 -:10FBA0000000071C00000724000007240000072CA9 -:10FBB0000000072C00000734000007340000073C59 -:10FBC0000000073C00000744000007440000074C09 -:10FBD0000000074C00000754000007540000075CB9 -:10FBE0000000075C00000764000007640000076C69 -:10FBF0000000076C00000774000007740000077C19 -:10FC00000000077C00000784000007840000078CC8 -:10FC10000000078C00000794000007940000079C78 -:10FC20000000079C000007A4000007A4000007AC28 -:10FC3000000007AC000007B4000007B4000007BCD8 -:10FC4000000007BC000007C4000007C4000007CC88 -:10FC5000000007CC000007D4000007D4000007DC38 -:10FC6000000007DC000007E4000007E4000007ECE8 -:10FC7000000007EC000007F4000007F4000007FC98 -:10FC8000000007FC00000804000008040000080C45 -:10FC90000000080C00000814000008140000081CF4 -:10FCA0000000081C00000824000008240000082CA4 -:10FCB0000000082C00000834000008340000083C54 -:10FCC0000000083C00000844000008440000084C04 -:10FCD0000000084C00000854000008540000085CB4 -:10FCE0000000085C00000864000008640000086C64 -:10FCF0000000086C00000874000008740000087C14 -:10FD00000000087C00000884000008840000088CC3 -:10FD10000000088C00000894000008940000089C73 -:10FD20000000089C000008A4000008A4000008AC23 -:10FD3000000008AC000008B4000008B4000008BCD3 -:10FD4000000008BC000008C4000008C4000008CC83 -:10FD5000000008CC000008D4000008D4000008DC33 -:10FD6000000008DC000008E4000008E4000008ECE3 -:10FD7000000008EC000008F4000008F4000008FC93 -:10FD8000000008FC00000904000009040000090C40 -:10FD90000000090C00000914000009140000091CEF -:10FDA0000000091C00000924000009240000092C9F -:10FDB0000000092C00000934000009340000093C4F -:10FDC0000000093C00000944000009440000094CFF -:10FDD0000000094C00000954000009540000095CAF -:10FDE0000000095C00000964000009640000096C5F -:10FDF0000000096C00000974000009740000097C0F -:10FE00000000097C00000984000009840000098CBE -:10FE10000000098C00000994000009940002000011 -:0CFE2000FFFFFFFF0000000100007AFC63 -:040000058000000077 -:00000001FF diff --git a/firmwares/wifishield/binary/wifiHD_2_1.elf b/firmwares/wifishield/binary/wifiHD_2_1.elf deleted file mode 100644 index 9217d48..0000000 Binary files a/firmwares/wifishield/binary/wifiHD_2_1.elf and /dev/null differ diff --git a/firmwares/wifishield/binary/wifi_dnld.elf b/firmwares/wifishield/binary/wifi_dnld.elf deleted file mode 100644 index 11ec3dd..0000000 Binary files a/firmwares/wifishield/binary/wifi_dnld.elf and /dev/null differ diff --git a/firmwares/wifishield/binary/wifi_dnld.hex b/firmwares/wifishield/binary/wifi_dnld.hex deleted file mode 100644 index bf2c05c..0000000 --- a/firmwares/wifishield/binary/wifi_dnld.hex +++ /dev/null @@ -1,10470 +0,0 @@ -:0200000480007A -:10000000E08F100000000000000000000000000071 -:1000100000000000000000000000000000000000E0 -:1000200000000000000000000000000000000000D0 -:1000300000000000000000000000000000000000C0 -:1000400000000000000000000000000000000000B0 -:1000500000000000000000000000000000000000A0 -:100060000000000000000000000000000000000090 -:100070000000000000000000000000000000000080 -:100080000000000000000000000000000000000070 -:100090000000000000000000000000000000000060 -:1000A0000000000000000000000000000000000050 -:1000B0000000000000000000000000000000000040 -:1000C0000000000000000000000000000000000030 -:1000D0000000000000000000000000000000000020 -:1000E0000000000000000000000000000000000010 -:1000F0000000000000000000000000000000000000 -:1001000000000000000000000000000000000000EF -:1001100000000000000000000000000000000000DF -:1001200000000000000000000000000000000000CF -:1001300000000000000000000000000000000000BF -:1001400000000000000000000000000000000000AF -:10015000000000000000000000000000000000009F -:10016000000000000000000000000000000000008F -:10017000000000000000000000000000000000007F -:10018000000000000000000000000000000000006F -:10019000000000000000000000000000000000005F -:1001A000000000000000000000000000000000004F -:1001B000000000000000000000000000000000003F -:1001C000000000000000000000000000000000002F -:1001D000000000000000000000000000000000001F -:1001E000000000000000000000000000000000000F -:1001F00000000000000000000000000000000000FF -:1002000000000000000000000000000000000000EE -:1002100000000000000000000000000000000000DE -:1002200000000000000000000000000000000000CE -:1002300000000000000000000000000000000000BE -:1002400000000000000000000000000000000000AE -:10025000000000000000000000000000000000009E -:10026000000000000000000000000000000000008E -:10027000000000000000000000000000000000007E -:10028000000000000000000000000000000000006E -:10029000000000000000000000000000000000005E -:1002A000000000000000000000000000000000004E -:1002B000000000000000000000000000000000003E -:1002C000000000000000000000000000000000002E -:1002D000000000000000000000000000000000001E -:1002E000000000000000000000000000000000000E -:1002F00000000000000000000000000000000000FE -:1003000000000000000000000000000000000000ED -:1003100000000000000000000000000000000000DD -:1003200000000000000000000000000000000000CD -:1003300000000000000000000000000000000000BD -:1003400000000000000000000000000000000000AD -:10035000000000000000000000000000000000009D -:10036000000000000000000000000000000000008D -:10037000000000000000000000000000000000007D -:10038000000000000000000000000000000000006D -:10039000000000000000000000000000000000005D -:1003A000000000000000000000000000000000004D -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E000000000000000000000000000000000000D -:1003F00000000000000000000000000000000000FD -:1004000000000000000000000000000000000000EC -:1004100000000000000000000000000000000000DC -:1004200000000000000000000000000000000000CC -:1004300000000000000000000000000000000000BC -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:10047000000000000000000000000000000000007C -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:1005300000000000000000000000000000000000BB -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000000000BA -:1006400000000000000000000000000000000000AA -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:10068000000000000000000000000000000000006A -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C000000000000000000000000000000000002A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:1007000000000000000000000000000000000000E9 -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:1007400000000000000000000000000000000000A9 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C0000000000000000000000000000000000029 -:1007D0000000000000000000000000000000000019 -:1007E0000000000000000000000000000000000009 -:1007F00000000000000000000000000000000000F9 -:1008000000000000000000000000000000000000E8 -:1008100000000000000000000000000000000000D8 -:1008200000000000000000000000000000000000C8 -:1008300000000000000000000000000000000000B8 -:1008400000000000000000000000000000000000A8 -:100850000000000000000000000000000000000098 -:100860000000000000000000000000000000000088 -:100870000000000000000000000000000000000078 -:100880000000000000000000000000000000000068 -:100890000000000000000000000000000000000058 -:1008A0000000000000000000000000000000000048 -:1008B0000000000000000000000000000000000038 -:1008C0000000000000000000000000000000000028 -:1008D0000000000000000000000000000000000018 -:1008E0000000000000000000000000000000000008 -:1008F00000000000000000000000000000000000F8 -:1009000000000000000000000000000000000000E7 -:1009100000000000000000000000000000000000D7 -:1009200000000000000000000000000000000000C7 -:1009300000000000000000000000000000000000B7 -:1009400000000000000000000000000000000000A7 -:100950000000000000000000000000000000000097 -:100960000000000000000000000000000000000087 -:100970000000000000000000000000000000000077 -:100980000000000000000000000000000000000067 -:100990000000000000000000000000000000000057 -:1009A0000000000000000000000000000000000047 -:1009B0000000000000000000000000000000000037 -:1009C0000000000000000000000000000000000027 -:1009D0000000000000000000000000000000000017 -:1009E0000000000000000000000000000000000007 -:1009F00000000000000000000000000000000000F7 -:100A000000000000000000000000000000000000E6 -:100A100000000000000000000000000000000000D6 -:100A200000000000000000000000000000000000C6 -:100A300000000000000000000000000000000000B6 -:100A400000000000000000000000000000000000A6 -:100A50000000000000000000000000000000000096 -:100A60000000000000000000000000000000000086 -:100A70000000000000000000000000000000000076 -:100A80000000000000000000000000000000000066 -:100A90000000000000000000000000000000000056 -:100AA0000000000000000000000000000000000046 -:100AB0000000000000000000000000000000000036 -:100AC0000000000000000000000000000000000026 -:100AD0000000000000000000000000000000000016 -:100AE0000000000000000000000000000000000006 -:100AF00000000000000000000000000000000000F6 -:100B000000000000000000000000000000000000E5 -:100B100000000000000000000000000000000000D5 -:100B200000000000000000000000000000000000C5 -:100B300000000000000000000000000000000000B5 -:100B400000000000000000000000000000000000A5 -:100B50000000000000000000000000000000000095 -:100B60000000000000000000000000000000000085 -:100B70000000000000000000000000000000000075 -:100B80000000000000000000000000000000000065 -:100B90000000000000000000000000000000000055 -:100BA0000000000000000000000000000000000045 -:100BB0000000000000000000000000000000000035 -:100BC0000000000000000000000000000000000025 -:100BD0000000000000000000000000000000000015 -:100BE0000000000000000000000000000000000005 -:100BF00000000000000000000000000000000000F5 -:100C000000000000000000000000000000000000E4 -:100C100000000000000000000000000000000000D4 -:100C200000000000000000000000000000000000C4 -:100C300000000000000000000000000000000000B4 -:100C400000000000000000000000000000000000A4 -:100C50000000000000000000000000000000000094 -:100C60000000000000000000000000000000000084 -:100C70000000000000000000000000000000000074 -:100C80000000000000000000000000000000000064 -:100C90000000000000000000000000000000000054 -:100CA0000000000000000000000000000000000044 -:100CB0000000000000000000000000000000000034 -:100CC0000000000000000000000000000000000024 -:100CD0000000000000000000000000000000000014 -:100CE0000000000000000000000000000000000004 -:100CF00000000000000000000000000000000000F4 -:100D000000000000000000000000000000000000E3 -:100D100000000000000000000000000000000000D3 -:100D200000000000000000000000000000000000C3 -:100D300000000000000000000000000000000000B3 -:100D400000000000000000000000000000000000A3 -:100D50000000000000000000000000000000000093 -:100D60000000000000000000000000000000000083 -:100D70000000000000000000000000000000000073 -:100D80000000000000000000000000000000000063 -:100D90000000000000000000000000000000000053 -:100DA0000000000000000000000000000000000043 -:100DB0000000000000000000000000000000000033 -:100DC0000000000000000000000000000000000023 -:100DD0000000000000000000000000000000000013 -:100DE0000000000000000000000000000000000003 -:100DF00000000000000000000000000000000000F3 -:100E000000000000000000000000000000000000E2 -:100E100000000000000000000000000000000000D2 -:100E200000000000000000000000000000000000C2 -:100E300000000000000000000000000000000000B2 -:100E400000000000000000000000000000000000A2 -:100E50000000000000000000000000000000000092 -:100E60000000000000000000000000000000000082 -:100E70000000000000000000000000000000000072 -:100E80000000000000000000000000000000000062 -:100E90000000000000000000000000000000000052 -:100EA0000000000000000000000000000000000042 -:100EB0000000000000000000000000000000000032 -:100EC0000000000000000000000000000000000022 -:100ED0000000000000000000000000000000000012 -:100EE0000000000000000000000000000000000002 -:100EF00000000000000000000000000000000000F2 -:100F000000000000000000000000000000000000E1 -:100F100000000000000000000000000000000000D1 -:100F200000000000000000000000000000000000C1 -:100F300000000000000000000000000000000000B1 -:100F400000000000000000000000000000000000A1 -:100F50000000000000000000000000000000000091 -:100F60000000000000000000000000000000000081 -:100F70000000000000000000000000000000000071 -:100F80000000000000000000000000000000000061 -:100F90000000000000000000000000000000000051 -:100FA0000000000000000000000000000000000041 -:100FB0000000000000000000000000000000000031 -:100FC0000000000000000000000000000000000021 -:100FD0000000000000000000000000000000000011 -:100FE0000000000000000000000000000000000001 -:100FF00000000000000000000000000000000000F1 -:1010000000000000000000000000000000000000E0 -:1010100000000000000000000000000000000000D0 -:1010200000000000000000000000000000000000C0 -:1010300000000000000000000000000000000000B0 -:1010400000000000000000000000000000000000A0 -:101050000000000000000000000000000000000090 -:101060000000000000000000000000000000000080 -:101070000000000000000000000000000000000070 -:101080000000000000000000000000000000000060 -:101090000000000000000000000000000000000050 -:1010A0000000000000000000000000000000000040 -:1010B0000000000000000000000000000000000030 -:1010C0000000000000000000000000000000000020 -:1010D0000000000000000000000000000000000010 -:1010E0000000000000000000000000000000000000 -:1010F00000000000000000000000000000000000F0 -:1011000000000000000000000000000000000000DF -:1011100000000000000000000000000000000000CF -:1011200000000000000000000000000000000000BF -:1011300000000000000000000000000000000000AF -:10114000000000000000000000000000000000009F -:10115000000000000000000000000000000000008F -:10116000000000000000000000000000000000007F -:10117000000000000000000000000000000000006F -:10118000000000000000000000000000000000005F -:10119000000000000000000000000000000000004F -:1011A000000000000000000000000000000000003F -:1011B000000000000000000000000000000000002F -:1011C000000000000000000000000000000000001F -:1011D000000000000000000000000000000000000F -:1011E00000000000000000000000000000000000FF -:1011F00000000000000000000000000000000000EF -:1012000000000000000000000000000000000000DE -:1012100000000000000000000000000000000000CE -:1012200000000000000000000000000000000000BE -:1012300000000000000000000000000000000000AE -:10124000000000000000000000000000000000009E -:10125000000000000000000000000000000000008E -:10126000000000000000000000000000000000007E -:10127000000000000000000000000000000000006E -:10128000000000000000000000000000000000005E -:10129000000000000000000000000000000000004E -:1012A000000000000000000000000000000000003E -:1012B000000000000000000000000000000000002E -:1012C000000000000000000000000000000000001E -:1012D000000000000000000000000000000000000E -:1012E00000000000000000000000000000000000FE -:1012F00000000000000000000000000000000000EE -:1013000000000000000000000000000000000000DD -:1013100000000000000000000000000000000000CD -:1013200000000000000000000000000000000000BD -:1013300000000000000000000000000000000000AD -:10134000000000000000000000000000000000009D -:10135000000000000000000000000000000000008D -:10136000000000000000000000000000000000007D -:10137000000000000000000000000000000000006D -:10138000000000000000000000000000000000005D -:10139000000000000000000000000000000000004D -:1013A000000000000000000000000000000000003D -:1013B000000000000000000000000000000000002D -:1013C000000000000000000000000000000000001D -:1013D000000000000000000000000000000000000D -:1013E00000000000000000000000000000000000FD -:1013F00000000000000000000000000000000000ED -:1014000000000000000000000000000000000000DC -:1014100000000000000000000000000000000000CC -:1014200000000000000000000000000000000000BC -:1014300000000000000000000000000000000000AC -:10144000000000000000000000000000000000009C -:10145000000000000000000000000000000000008C -:10146000000000000000000000000000000000007C -:10147000000000000000000000000000000000006C -:10148000000000000000000000000000000000005C -:10149000000000000000000000000000000000004C -:1014A000000000000000000000000000000000003C -:1014B000000000000000000000000000000000002C -:1014C000000000000000000000000000000000001C -:1014D000000000000000000000000000000000000C -:1014E00000000000000000000000000000000000FC -:1014F00000000000000000000000000000000000EC -:1015000000000000000000000000000000000000DB -:1015100000000000000000000000000000000000CB -:1015200000000000000000000000000000000000BB -:1015300000000000000000000000000000000000AB -:10154000000000000000000000000000000000009B -:10155000000000000000000000000000000000008B -:10156000000000000000000000000000000000007B -:10157000000000000000000000000000000000006B -:10158000000000000000000000000000000000005B -:10159000000000000000000000000000000000004B -:1015A000000000000000000000000000000000003B -:1015B000000000000000000000000000000000002B -:1015C000000000000000000000000000000000001B -:1015D000000000000000000000000000000000000B -:1015E00000000000000000000000000000000000FB -:1015F00000000000000000000000000000000000EB -:1016000000000000000000000000000000000000DA -:1016100000000000000000000000000000000000CA -:1016200000000000000000000000000000000000BA -:1016300000000000000000000000000000000000AA -:10164000000000000000000000000000000000009A -:10165000000000000000000000000000000000008A -:10166000000000000000000000000000000000007A -:10167000000000000000000000000000000000006A -:10168000000000000000000000000000000000005A -:10169000000000000000000000000000000000004A -:1016A000000000000000000000000000000000003A -:1016B000000000000000000000000000000000002A -:1016C000000000000000000000000000000000001A -:1016D000000000000000000000000000000000000A -:1016E00000000000000000000000000000000000FA -:1016F00000000000000000000000000000000000EA -:1017000000000000000000000000000000000000D9 -:1017100000000000000000000000000000000000C9 -:1017200000000000000000000000000000000000B9 -:1017300000000000000000000000000000000000A9 -:101740000000000000000000000000000000000099 -:101750000000000000000000000000000000000089 -:101760000000000000000000000000000000000079 -:101770000000000000000000000000000000000069 -:101780000000000000000000000000000000000059 -:101790000000000000000000000000000000000049 -:1017A0000000000000000000000000000000000039 -:1017B0000000000000000000000000000000000029 -:1017C0000000000000000000000000000000000019 -:1017D0000000000000000000000000000000000009 -:1017E00000000000000000000000000000000000F9 -:1017F00000000000000000000000000000000000E9 -:1018000000000000000000000000000000000000D8 -:1018100000000000000000000000000000000000C8 -:1018200000000000000000000000000000000000B8 -:1018300000000000000000000000000000000000A8 -:101840000000000000000000000000000000000098 -:101850000000000000000000000000000000000088 -:101860000000000000000000000000000000000078 -:101870000000000000000000000000000000000068 -:101880000000000000000000000000000000000058 -:101890000000000000000000000000000000000048 -:1018A0000000000000000000000000000000000038 -:1018B0000000000000000000000000000000000028 -:1018C0000000000000000000000000000000000018 -:1018D0000000000000000000000000000000000008 -:1018E00000000000000000000000000000000000F8 -:1018F00000000000000000000000000000000000E8 -:1019000000000000000000000000000000000000D7 -:1019100000000000000000000000000000000000C7 -:1019200000000000000000000000000000000000B7 -:1019300000000000000000000000000000000000A7 -:101940000000000000000000000000000000000097 -:101950000000000000000000000000000000000087 -:101960000000000000000000000000000000000077 -:101970000000000000000000000000000000000067 -:101980000000000000000000000000000000000057 -:101990000000000000000000000000000000000047 -:1019A0000000000000000000000000000000000037 -:1019B0000000000000000000000000000000000027 -:1019C0000000000000000000000000000000000017 -:1019D0000000000000000000000000000000000007 -:1019E00000000000000000000000000000000000F7 -:1019F00000000000000000000000000000000000E7 -:101A000000000000000000000000000000000000D6 -:101A100000000000000000000000000000000000C6 -:101A200000000000000000000000000000000000B6 -:101A300000000000000000000000000000000000A6 -:101A40000000000000000000000000000000000096 -:101A50000000000000000000000000000000000086 -:101A60000000000000000000000000000000000076 -:101A70000000000000000000000000000000000066 -:101A80000000000000000000000000000000000056 -:101A90000000000000000000000000000000000046 -:101AA0000000000000000000000000000000000036 -:101AB0000000000000000000000000000000000026 -:101AC0000000000000000000000000000000000016 -:101AD0000000000000000000000000000000000006 -:101AE00000000000000000000000000000000000F6 -:101AF00000000000000000000000000000000000E6 -:101B000000000000000000000000000000000000D5 -:101B100000000000000000000000000000000000C5 -:101B200000000000000000000000000000000000B5 -:101B300000000000000000000000000000000000A5 -:101B40000000000000000000000000000000000095 -:101B50000000000000000000000000000000000085 -:101B60000000000000000000000000000000000075 -:101B70000000000000000000000000000000000065 -:101B80000000000000000000000000000000000055 -:101B90000000000000000000000000000000000045 -:101BA0000000000000000000000000000000000035 -:101BB0000000000000000000000000000000000025 -:101BC0000000000000000000000000000000000015 -:101BD0000000000000000000000000000000000005 -:101BE00000000000000000000000000000000000F5 -:101BF00000000000000000000000000000000000E5 -:101C000000000000000000000000000000000000D4 -:101C100000000000000000000000000000000000C4 -:101C200000000000000000000000000000000000B4 -:101C300000000000000000000000000000000000A4 -:101C40000000000000000000000000000000000094 -:101C50000000000000000000000000000000000084 -:101C60000000000000000000000000000000000074 -:101C70000000000000000000000000000000000064 -:101C80000000000000000000000000000000000054 -:101C90000000000000000000000000000000000044 -:101CA0000000000000000000000000000000000034 -:101CB0000000000000000000000000000000000024 -:101CC0000000000000000000000000000000000014 -:101CD0000000000000000000000000000000000004 -:101CE00000000000000000000000000000000000F4 -:101CF00000000000000000000000000000000000E4 -:101D000000000000000000000000000000000000D3 -:101D100000000000000000000000000000000000C3 -:101D200000000000000000000000000000000000B3 -:101D300000000000000000000000000000000000A3 -:101D40000000000000000000000000000000000093 -:101D50000000000000000000000000000000000083 -:101D60000000000000000000000000000000000073 -:101D70000000000000000000000000000000000063 -:101D80000000000000000000000000000000000053 -:101D90000000000000000000000000000000000043 -:101DA0000000000000000000000000000000000033 -:101DB0000000000000000000000000000000000023 -:101DC0000000000000000000000000000000000013 -:101DD0000000000000000000000000000000000003 -:101DE00000000000000000000000000000000000F3 -:101DF00000000000000000000000000000000000E3 -:101E000000000000000000000000000000000000D2 -:101E100000000000000000000000000000000000C2 -:101E200000000000000000000000000000000000B2 -:101E300000000000000000000000000000000000A2 -:101E40000000000000000000000000000000000092 -:101E50000000000000000000000000000000000082 -:101E60000000000000000000000000000000000072 -:101E70000000000000000000000000000000000062 -:101E80000000000000000000000000000000000052 -:101E90000000000000000000000000000000000042 -:101EA0000000000000000000000000000000000032 -:101EB0000000000000000000000000000000000022 -:101EC0000000000000000000000000000000000012 -:101ED0000000000000000000000000000000000002 -:101EE00000000000000000000000000000000000F2 -:101EF00000000000000000000000000000000000E2 -:101F000000000000000000000000000000000000D1 -:101F100000000000000000000000000000000000C1 -:101F200000000000000000000000000000000000B1 -:101F300000000000000000000000000000000000A1 -:101F40000000000000000000000000000000000091 -:101F50000000000000000000000000000000000081 -:101F60000000000000000000000000000000000071 -:101F70000000000000000000000000000000000061 -:101F80000000000000000000000000000000000051 -:101F90000000000000000000000000000000000041 -:101FA0000000000000000000000000000000000031 -:101FB0000000000000000000000000000000000021 -:101FC0000000000000000000000000000000000011 -:101FD0000000000000000000000000000000000001 -:101FE00000000000000000000000000000000000F1 -:101FF00000000000000000000000000000000000E1 -:08200000481F0000800026309B -:10200800D40148D8E3B80001D553FE6A100030194E -:102018007508F1D9D202F5480040F01F0008F01FFA -:102028000008D503E06CF980EA1C0337F01F0005AF -:10203800D8020000800032008000259880002B68BC -:10204800800026D4EBCD40FC169518961492129B6E -:10205800580AE08A003B0B893008F0091800C520AF -:102068003009129A2FF9EA090708F4081800CFB1C5 -:102078001232E08900493002EDBB0001C26133032E -:10208800EDBB0000C2613004C0A85806C3806C09CB -:10209800B28C6C082FF88D082FF52FF40B8C580C88 -:1020A800CF515802E08A000F04975806C2406C09C5 -:1020B800B2836C082FF88D0820175807FE99FFF790 -:1020C8000404089CE3CD80FC3203EDBB0000CDC0C6 -:1020D8005802FE9AFFDA04975806C1706C09B28359 -:1020E8006C082FF88D0820175807FE99FFF70494FD -:1020F8003002CD5B069CF01F0007CDFBF01F0005EA -:10210800CCCB30091212CB9B069CF01F0002CECB21 -:1021180080002680EBCD40FC203DFACEFFD81497F6 -:102128007C037C1A10941892169E580BC4405809C8 -:102138005F1858A75F091268C34130063008FB686A -:10214800000B580EC430F4CC003AFAC9FFF5FC076E -:102158000D0A16985898F1DCE9082D0812F8149E13 -:10216800580ACF6112955806C0C10C970699089A6B -:102178000A9B049CF01F001A0E0C2FDDE3CD80FC97 -:102188005804C140EDB30001C1115802C230640ABD -:1021980032D9B48964082FF8850820143017CE7B0B -:1021A800580BCCC45C3E3016CCAB129532D83007F5 -:1021B8000AF8CDDB109A3308BA9B0699BA881A9B9D -:1021C800F01F00072FDDE3CD80FCFAC9FFF512955B -:1021D800CCBB32DCF01F0003CE1B00008000204C7B -:1021E80080002680D431201D189516971496178CD8 -:1021F800580CE08000B43004325132D033033092AE -:10220800E20C1800C1705805C6E06A09B28C6A0869 -:102218002FF88B082FF42FF70F8C580CCF21580567 -:10222800EBF91000F9B80100F3F81E00089C2FFD27 -:10223800D8322FF70F8A580ACF30E20A1800C500A3 -:10224800E00A1800F9BC0100F7B700FFF9BC00016B -:10225800EFFA0800C0482FF7A1BC0F8AE60A180059 -:10226800CFB0F4C80030E4081800E08B0063300BEE -:10227800F60B0028F40800182FF7F0CB00300F8A6F -:10228800F4C80030E4081800FE98FFF43738F00A64 -:102298001800C2C03648F00A1800C3403708F00AD0 -:1022A8001800C3E03788F00A1800C4503588F00ACF -:1022B8001800C4903758F00A1800C4803638F00A5D -:1022C8001800CAA16C08BA8830081899169ABA98E2 -:1022D8001A9B0A9C2FC6F01F00231804C9DB325C26 -:1022E8005805C941F01F0020C96B0D081899169AA6 -:1022F8000A9C49EB5808F00B1710F01F001A180435 -:10230800C8BB361916981AD930AA1ADC30196C0BC2 -:102318000A9C2FC6F01F00162FED1804C7DB3619CC -:10232800308A1AD916981ADA30096C0B310ACF1B81 -:10233800300BCADB169836191AD9310A1ADC30095B -:102348006C0BCE7B16983419CF8B361916981AD980 -:1023580030AA1ADC30096C0BCDCB1894C61B0000D0 -:102368008000204C80002680800034008000211CE2 -:10237800D401189BFACAFFFC300CF01F0002D802E7 -:10238800800021ECEBCD40E014951696A98CF01F47 -:1023980000095805C0A03007F01F0007EC070B0C18 -:1023A8002FF70E35FE9BFFFAF01F0004E3CD80E007 -:1023B80080002E7C80002F3080002D14EBCD40E073 -:1023C80014951696A98CF01F00095805C0A030076F -:1023D800EC07070C2FF7F01F00060E35FE9BFFFADF -:1023E800F01F0004E3CD80E080002D9C80002E20AB -:1023F80080002CC8EBCD4040204D49BCF8E80008CF -:10240800FAE90008F8EA0000498CFAEB0000304BC2 -:10241800F01F00171A9BFE7C2800F01F00163009D9 -:10242800FE7C2800129A129BF01F0013FE7C2800E5 -:10243800F01F0012302CF01F00121A96204DECE805 -:102448000008FAE90008ECEA0000E06CF980EA1CF0 -:102458000337FAEB0000F01F000B2FCD2FCDE3CD93 -:1024680080400000800034088000341880002C4030 -:1024780080002874800028B480002A2480002C70F2 -:1024880080002FF8EBCD40F8F01F0033F01F003329 -:102498004B3CF01F0034F01F00343018F00C1800CB -:1024A800C5204B2CF01F002FE06701004B0C3006B5 -:1024B800F01F002C4AF40E95C088E2675A4C0C179E -:1024C800E0470100EA0717B0E806000B0C9C0E9ADB -:1024D8000E06F01F0029E2465A4BFE98FFF0E0670F -:1024E80001004A6C3006F01F001F4A550E930E9AE1 -:1024F8004A3B0C9CF01F0023E80600093008EA0854 -:10250800070B138AF40B1800C1312FF82FF9103775 -:10251800FE9BFFF70E06E2465A4BE08B0019E26776 -:102528005A4C0C17E0470100E60717B0CE1BEC0821 -:1025380000081ADA494C1ADB1AD8F01F000A2FDDF6 -:10254800E3CF80F8491CF01F0007CAFB490CF01FB5 -:102558000005CF7B80002008800023FC80028E6C61 -:102568008000237880002FA480028E8480028E8CC5 -:1025780080003420800023C480028EAC0000000854 -:102588008000238C80028EC880028E7C80028EF4AC -:10259800EBCD4040303AE06B1B00EA1B00B7FE7CF5 -:1025A8000C00F01F001A30083019109B308AFE7C8E -:1025B8000C0031061AD6F01F001630083019109B8F -:1025C800129AFE7C0C00F01F0013300BFE7C0C00EE -:1025D800F01F0011FE7C0C00F01F00103009FE7C7B -:1025E8000C001AD9129B1AD91298129AF01F000CD3 -:1025F800301CF01F000C302BFE7C0C00F01F000A72 -:102608002FDDE3CD8040000080002B0C80002AB035 -:1026180080002AD280002AEA80002AF880002A6AEC -:1026280080002C8A80002B0248CD48D0E3B00001FE -:10263800D55348C048C10230C06248C2A505A1248C -:102648000230CFD348A048B10230C0623002300314 -:10265800A1220230CFE3488F000100008000320041 -:10266800000000080000000880028FC00000000879 -:10267800000001E88000248CD401189BFE7C18001F -:10268800F01F0002D802000080002742EBCD404036 -:10269800203D30083049FB680008BA383088500CB3 -:1026A8001696BAC8302BBAD9486CF01F00070C9A96 -:1026B8001A9BFE7C1800F01F00052FDDE3CD80403B -:1026C80080028F1C80002C40800027ACD401189B0E -:1026D800E06CE100F01F0002D802000080002694A0 -:1026E800D401F6081503A56B143BF9BE0810F00BCE -:1026F80017B0F9BE0B08F6091601F20A0039F20BF9 -:102708000D08109AF00B1603F6C80001E048FFFE0A -:10271800E08B00147818E8690000E418FFF7E01867 -:10272800FECF590EF9B9000010499919F1DAC00322 -:10273800F7E811089988D80ADA0A58ABC0F0E069B6 -:10274800270F7858EDB80001C051F1DBC00999781E -:102758005EFD5809C1002019CF5BE069270F785842 -:10276800EDB80001C04130D89978CEAB5809C030D7 -:102778002019CF6B5EFEE1B80000EDB80010C0E094 -:10278800D3033FF899387858D503300899189998A1 -:1027980099A8EA69610C99095EFC3FF8993878585C -:1027A800CF5BD703D421169714951896F01F002EE7 -:1027B8005807C2000FC93048F0091800E088001B0C -:1027C8003094E8091800E08B00160FD93078F0092A -:1027D8001800E08B00108E39E0680101F00919003B -:1027E800E08B0009EF3900083038F0091800E0885C -:1027F8000003DA2A0A9A6E0B0C9CF01F001C581C66 -:10280800CF900FC9E8091800C2906C182059F1E957 -:1028180010688D18EF3900086C1A0FD8A978F1E9FB -:1028280010E814488D1830288E39F0091900E0880E -:1028380000106C18ADB88D188EB920298DA96C18A8 -:10284800E018FFF08D183509300C8D09D8226C1866 -:102858005C79F1E910C88D18CF3B6C18B1B88D18A8 -:10286800CDAB00008000277E800026E8D401301818 -:10287800F739000DF0091800E0880005302E1C9C7F -:10288800D802E068008030199908300A7818F73BB8 -:10289800000D149EF1D9D00130F9F1DBD081F1DAC5 -:1028A800D0E1F1D9D20499181C9CD802EBCD408014 -:1028B8003018149E1297F00A18005FBAF00B18002F -:1028C8005FB91449C0B17818F1DBD021F1DED041ED -:1028D800F1D7D3089918E3CF8080302CE3CD8080DE -:1028E800D4017818189EEA18000F9918781CE21C71 -:1028F8000004C08030E8F00B1800E0880013302C8A -:10290800D8023038F00B1800FE9BFFFB7C1AF6C883 -:10291800FFF03019F20809495CD914699D19D802E9 -:102928007C19F6081510300CEA18FFF0E818FFFFBC -:1029380012689D18D802E0692710C0485809C0E0FD -:1029480020197848EDB80009CFA17818EA18000FC7 -:102958009918FC19010099095EFD5EFFEBCD40FC5A -:1029680030321893F73C000CE40C1800E08B000997 -:10297800F735000B3014E8051800E0880005302C06 -:10298800E3CD80FCF73E00083078F00E1800FE9882 -:10299800FFF83108F00E1800FE9BFFF37618F009D7 -:1029A8001601F4090009F2080D06ECCA0001E04A14 -:1029B80000FEFE9BFFE65806CE35FCC90008F80865 -:1029C8001601300AEC1C0001F5D8D001178EF5DC91 -:1029D800D021F7380009F5D5D061F5D9D084F73979 -:1029E800000AF5D6D108F5D8D208F5D9D308E80EEB -:1029F8001800C0F0C0B33028F00E1800C0D0E40EA4 -:102A08001800CBE187FAE3CF80FC87CAE3CF80FCCC -:102A180087DAE3CF80FC87EAE3CF80FC3018990897 -:102A28005EFCE0692710C0485809C0A02019784802 -:102A3800EDB80001CFA1F1DBC01099385EFD5EFF53 -:102A4800E0692710C0485809C0C020197848E21822 -:102A58000201E0480201CF817828300CB6085EFCFC -:102A68005EFFEBCD40E0FAC5FFF018976A166A0ED4 -:102A7800EDD6C003FDDEC001300CF9D6D003F9DE77 -:102A8800D0E1F9D6D103F9DED1E1F9DAD203F9DBE5 -:102A9800D2E1F9D8D303F9D9D3E18F1C6F58EDB837 -:102AA8000005CFD1E3CD80E0EBCD4040300E40268D -:102AB8002F8BFDD8D021FDD9D104FDDAD204FDD663 -:102AC800D306F80B092EE3CD80402F8BF5E91019BA -:102AD800F3E81029F80B0328F1D9D043F80B09289B -:102AE8005EFC2F8BF80B0328A1A8F80B09285EFCC5 -:102AF8007958EDB80000CFD15EFC7808F1DBD00240 -:102B080099085EFCEC5BBB9FE08B0018304B78A803 -:102B1800F1DBD00399A878A9F3DAD10399A9780849 -:102B2800A3A899087958EDB80007CFD178083019CB -:102B3800F1D9D00299085EFCE068C6BFEA18002DFA -:102B4800103BE088000CE0681200EA18007A103B9D -:102B5800F9BB0306F9BB0207CDBB305BCD9BC008B0 -:102B6800EBCD40C048E8E3B8000148E9300C7206F4 -:102B780048DE48E9FE770800720B580BC070721ADD -:102B8800300814AE2FF81638CFD3EE0C09262F894B -:102B98002FFC594CCF21E3CD80C0000080003200CB -:102BA8008000333C80002B6680028F20E068008321 -:102BB800FE790800F00C010CF20C032AF4C8FFC0DF -:102BC800F208032C580C5E0CF80812004859F0085B -:102BD800111FF20A0039721AF408032C5EFC000077 -:102BE80080028F20F8081605F0091508E029F00082 -:102BF800581BC150C0823018F00C094C936C93AC30 -:102C0800932C5EFD582BC110583BC0205EFF301836 -:102C1800F00C094C935C939C932C5EFDF60C094CCC -:102C2800935C93AC932C5EFD3018F00C094C936CBC -:102C3800939C932C5EFDD703D42118961694580BB9 -:102C4800C0F030050A970D9B0D8C2FF72FE6F01F6B -:102C5800000618450E34FE9BFFF80A9CD8221695EC -:102C6800CFDB000080002BEC3018F00C0948A59C45 -:102C7800A96CE02CF000F9480054F9480044991870 -:102C88005EFCFE6914007208F1DCD0C193085EFC9A -:102C9800D401580BC091F8CBFFFEFE7C28005C5B8A -:102CA800F01F0006D802F8CBFFFEFE7C28005C5B14 -:102CB800F01F0003D80200008000293E800028E8A9 -:102CC800EBCD408048E76E0CF1DCC008C0D0300B7B -:102CD800FE7C2800F01F000B6E08F0CCFFFF8F0C65 -:102CE800F1DCC008CF51F9DCC288300BF01F0006B8 -:102CF80030194868B089E3CD80800000000001E009 -:102D080080002A2A80002C98000001E4D401486839 -:102D1800300B700CF9DCC288F01F000430094848F9 -:102D2800B089D802000001E080002C98000001E47E -:102D3800EBCD40C0201D301B49366C0CF9DCC28835 -:102D4800F01F0012E06B00D7FE7C2800F01F001077 -:102D5800FAC7FFFEE06B00FFFE7C2800F01F000CA6 -:102D68000E9BFE7C2800F01F000B9A98EDB8000718 -:102D7800CF216C0C300BF9DCC288F01F00042FFD4A -:102D8800E3CD80C0000001E080002C9880002A2A52 -:102D980080002A48EBCD40C0201D49B6A96C8D0C97 -:102DA80049A730080F89F0091800C030F01F001833 -:102DB80030086C0CAE88F9DCC288301BF01F001597 -:102DC800E06B0082FE7C2800F01F00136C08F7D827 -:102DD800C008F1D8C10CFAC6FFFCF7E8109BFE7CCE -:102DE80028000CDBB18BF01F000C0DABFE7C28001B -:102DF800F01F00090DBBFE7C2800F01F00072FFD07 -:102E0800E3CF90C0000001E0000001E480002D380D -:102E180080002C9880002A2AEBCD40E049151896AE -:102E28000B893008F0091800C16148F70C9BFE7C3B -:102E38002800F01F000E6E08F0CCFFFF8F0CF7DCA7 -:102E4800C008C071F9DCC288F01F00093018AA88D0 -:102E5800E3CF90E048476E0CA98CF01F0006CE7BAC -:102E6800000001E4000001E080002A2A80002C987C -:102E780080002D9CEBCD40C0201D4A76A96C8D0C9E -:102E88004A6730080F89F0091800C030F01F002485 -:102E980030086C0CAE88F9DCC288301BF01F0021AA -:102EA800E06B00D2FE7C2800F01F001F6C08F7D8EA -:102EB800C008F1D8C10CFAC6FFFCF7E8109BFE7CED -:102EC80028000CDBB18BF01F00180DABFE7C28002E -:102ED800F01F00150DBBFE7C2800F01F0013E06BEF -:102EE80000FFFE7C2800F01F0010E06B00FFFE7C56 -:102EF8002800F01F000DE06B00FFFE7C2800F01F8B -:102F0800000AE06B00FFFE7C2800F01F00072FFD81 -:102F1800E3CF90C0000001E0000001E480002D38FC -:102F280080002C9880002A2AEBCD40C0201D4966DD -:102F380030090D88F2081800C1F14947E06B00FF1D -:102F4800FE7C2800F01F0012FACBFFFEFE7C280052 -:102F5800F01F00106E08F0CCFFFF8F0CF7DCC008E4 -:102F6800C071F9DCC288F01F000C3018AC881BBC9B -:102F78002FFDE3CD80C04857AC896E0CA98CF01F9B -:102F88000007CDDB000001E4000001E080002A2AF0 -:102F980080002A4880002C9880002E7CEBCD404091 -:102FA800201D3008FAC6FFFC301B0CE8300CF01F5F -:102FB800000EE06B00D7FE7C2800F01F000CE06BD1 -:102FC80000FFFE7C2800F01F00090C9BFE7C2800F7 -:102FD800F01F0007300B169CF01F00032FFDE3CFF6 -:102FE8009040000080002C9880002A2A80002A48FF -:102FF800EBCD40E03028FAC7FFF01896AE88109560 -:10300800C028AE880C9A0E9BFE7C2800F01F000892 -:10301800C0C10F882FF85C58EA081800FE98FFF323 -:103028004848B08CE3CF90E0E3CF80E0800029648B -:04303800000001E4AF -:10320000C0080000C0080000C0080000C00800009E -:10321000C0080000C0080000C0080000C00800008E -:10322000C0080000C0080000C0080000C00800007E -:10323000C0080000C0080000C0080000C00800006E -:10324000C0080000C00800000000000000000000EE -:10325000C0080000000000000000000000000000A6 -:10326000C008000000000000000000000000000096 -:10327000C008000000000000000000000000000086 -:10328000000000000000000000000000000000003E -:10329000000000000000000000000000000000002E -:1032A000000000000000000000000000000000001E -:1032B000000000000000000000000000000000000E -:1032C00000000000000000000000000000000000FE -:1032D00000000000000000000000000000000000EE -:1032E00000000000000000000000000000000000DE -:1032F00000000000000000000000000000000000CE -:10330000C0080000300CF01F0012580CF80F171006 -:10331000D603301CF01F000E580CF80F1710D60300 -:10332000302CF01F000B580CF80F1710D603303C50 -:10333000F01F0007580CF80F1710D6030000010407 -:103340004000011280000120C000012E80002BB43B -:10335000000000000000000000000000000000006D -:10336000000000000000000000000000000000005D -:10337000000000000000000000000000000000004D -:10338000000000000000000000000000000000003D -:10339000000000000000000000000000000000002D -:1033A000000000000000000000000000000000001D -:1033B000000000000000000000000000000000000D -:1033C00000000000000000000000000000000000FD -:1033D00000000000000000000000000000000000ED -:1033E00000000000000000000000000000000000DD -:1033F00000000000000000000000000000000000CD -:10340000286E756C6C2900000200000000B71B00DC -:1034100008000001000100000F011101100113015B -:103420001061040000000000300000001061040082 -:103430003861040000000000020000002061040068 -:10344000306104000000000004000000306104004E -:1034500000000000000000000000000010610400F7 -:103460003C0000000000EEEEEEEE18F09FE518F0D4 -:103470009FE518F09FE518F09FE50000A0E118F027 -:103480009FE518F09FE544000000B4080000B40870 -:103490000000B4080000B408000000000000E408C8 -:1034A00000003C003C00000000090000000000009B -:1034B00000000FE11F00C0E3130080E3C00080E3C1 -:1034C00000F02FE11CF09FE53D0200EB5A0200EBFB -:1034D0008D0200EB01008FE210FF2FE141F0DEFBD7 -:1034E00001F0DCFD3C0078000000FEE700005C001D -:1034F00000007847C046010000EA7847C046170040 -:1035000000EA8C119FE5002091E500300FE1841165 -:103510009FE5FD20A1E880019FE580219FE5012036 -:1035200042E00D0040E03C00B4000000020050E129 -:10353000280000AA68019FE50D0050E1020000BAD2 -:10354000042010E4042081E4FAFFFFEA58119FE50B -:1035500058019FE5000081E53C119FE550019FE582 -:10356000000081E51EFF2FE13C00F0000000481143 -:103570009FE5000091E524119FE5000081E52C11F5 -:103580009FE538019FE5000081E51EFF2FE17402F1 -:1035900000EB10019FE528119FE5042091E4042031 -:1035A00000E404219FE5020051E13C002C010000F1 -:1035B000FAFFFF1AF0109FE5FD20B1E803F02FE1BC -:1035C000E0109FE5002081E5E8109FE5F4209FE5ED -:1035D000002081E5021080E2000020E0010040E2CE -:1035E00011FF2FE101008FE210FF2FE13C00680185 -:1035F000000001F09CF87847000001008FE210FF06 -:103600002FE101F094F87847000003002DE9001045 -:103610000FE1001080E5B8109FE5041080E5001070 -:10362000A0E1100080E2FC1FA0E80020A0E13C0027 -:10363000A40100000130A0E10300BDE8080083E51B -:103640000C1083E5D300A0E300F021E10060A2E8C4 -:1036500000104FE1041082E4D200A0E300F021E169 -:103660000060A2E800104FE1041082E4D100A0E362 -:103670003C00E001000000F021E1007FA2E8001022 -:103680004FE1041082E4D700A0E300F021E10060E4 -:10369000A2E800104FE1041082E4DB00A0E300F098 -:1036A00021E10060A2E800104FE1001082E5000077 -:1036B00093E53C001C02000000F02FE11EFF2FE10B -:1036C000200000000403000020EE0100D8030000E9 -:1036D0000000000018F09FE5100100000803000042 -:1036E000EEEEEEEE2403000020020000B0B5041C54 -:1036F000631C0B4D3C005802000001D16C6910E0C6 -:1037000000F06CFB0948FFF70CFFEC60084A5168B9 -:1037100050688842FCD00220287001218A2001F0E4 -:1037200012F8201CB0BD3000070051020000000359 -:103730000700B0B5051C3C0094020000002400F016 -:1037400050FB1448FFF7F0FE13491448C1600121F3 -:10375000134A490391601349CA7808239A43CA70EF -:10376000CA7804231A43CA706B1C0DD00E4B5A68DA -:1037700059689142FCD0BE213C00D0020000197370 -:10378000197A112291431972197AC907FCD40221BE -:103790000170FFF7D0FE201CB0BD91020000FFFFBA -:1037A000FF003000070000100700000007000003C2 -:1037B000070000000000000000003C000C030000B7 -:1037C00000000000000000000000000000000000F9 -:1037D00000000000000000000000000000000000E9 -:1037E00000000000000000000000000000000000D9 -:1037F0000000000000000000000000003C00480342 -:1038000000000000000000000000000000000000B8 -:1038100000000000000000000000000000000000A8 -:103820000000000000000000000000000000000098 -:1038300000000000000000000000000000003C004C -:1038400084030000000000000000000000000000F1 -:103850000000000000000000000000000000000068 -:103860000000000000000000000000000000000058 -:103870000000000000000000000000000000000048 -:103880003C00C00300000000000000000000000039 -:1038900000000000000000000000000000000047E1 -:1038A000084710471847204728473047384710B582 -:1038B000041C101C00F023F903C410BC08BC1847FA -:1038C00000003C00FC03000010B4042A0ED3031CCB -:1038D0000B439B070AD108C810C9A34202D1043A7E -:1038E000042AF8D2A34201D004380439002A02D1B4 -:1038F000002010BC7047D30701D5013205E00378E2 -:103900000C7801313C00380400000130A34207D19B -:1039100003780C7801310130A34201D1023AF1D190 -:10392000181BE9E70000784700000020A0E304002E -:1039300051E30800003A03C010E20D00000A04C081 -:103940006CE202005CE33C00740400000120C0E46F -:103950000120C0A40120C0C40C1041E0060000EA10 -:1039600081CFB0E10120C0240120C0240120C04447 -:103970001EFF2FE1784700000020A0E300402DE962 -:103980000230A0E102C0A0E13C00B004000002E06F -:10399000A0E1201051E20C50A0280C50A0282010CB -:1039A0005122FBFFFF2A011EB0E10C50A0280C00A1 -:1039B000A0480040BDE80111B0E1042080241EFFB2 -:1039C0002F010120C0440120C0443C00EC04000051 -:1039D000400411E30120C0141EFF2FE178470000CE -:1039E000030052E33E00009A03C010E20800000A00 -:1039F0000130D1E402005CE30C2082E001C0D194EC -:103A00000130C0E40130D134042042E23C002805FA -:103A1000000001C0C0940130C034033011E21E0028 -:103A2000000A042052E22F00003A03C031E70200EE -:103A300053E30800000A0F00008A2C34A0E104C000 -:103A4000B1E5042052E20C3C83E1043080E43C0008 -:103A500064050000F9FFFF2A011081E2230000EA5B -:103A60002C38A0E104C0B1E5042052E20C3883E117 -:103A7000043080E4F9FFFF2A021081E21B0000EA13 -:103A80002C3CA0E104C0B1E5042052E20C3483E1F7 -:103A90003C00A0050000043080E4F9FFFF2A031079 -:103AA00081E2130000EA7847000010402DE9202051 -:103AB00052E20500003A1850B1281850A0281850BA -:103AC000B1281850A02820205222F9FFFF2A02CE48 -:103AD000B0E13C00DC0500001850B1281850A028C7 -:103AE0001800B1481800A0481040BDE802CFB0E16E -:103AF00004309124043080241EFF2F01822FB0E176 -:103B00000120D1440130D12401C0D1240120C0447E -:103B10000130C0243C001806000001C0C0241EFF74 -:103B20002FE178470000FF3001E20210A0E10324FA -:103B300083E1022882E188FFFFEA784700008024C1 -:103B400010E200006042413032E000106122A1C169 -:103B500070E02000003A3C005406000021C470E0F0 -:103B60000F00003A0004A0E1FF2482E321C270E0CC -:103B70001700003A21C470E00900003A0004A0E1F7 -:103B8000FF2882E321C470E00004A021FF2C8223DF -:103B900021C270E00E00003A3C009006000000C018 -:103BA00070E28300002A2004A021A1C370E08013EA -:103BB00041200220A2E021C370E000134120022036 -:103BC000A2E0A1C270E0801241200220A2E021C246 -:103BD00070E0001241200220A2E03C00CC06000070 -:103BE000A1C170E0801141200220A2E021C170E05B -:103BF000001141200220A2E0A1C070E0801041200D -:103C00000220A2E001C070E0001041200220B2E0DA -:103C1000E5FFFF2AC30F32E0A30F80E03C00080756 -:103C20000000001061221EFF2FE1784700000020F5 -:103C3000A0E3A1C170E02000003A21C470E00F00B1 -:103C4000003A0004A0E1FF2482E321C270E01700E3 -:103C5000003A21C470E00900003A0004A0E13C00F1 -:103C600044070000FF2882E321C470E00004A02183 -:103C7000FF2C822321C270E00E00003A00C070E2E7 -:103C80005000002A2004A021A1C370E0801341202D -:103C90000220A2E021C370E0001341200220A2E034 -:103CA0003C0080070000A1C270E080124120022089 -:103CB000A2E021C270E0001241200220A2E0A1C1D6 -:103CC00070E0801141200220A2E021C170E00011CB -:103CD00041200220A2E0A1C070E08010412002201B -:103CE000A2E03C00BC07000001C070E000104120D1 -:103CF0000220B2E0E5FFFF2A0200A0E11EFF2FE153 -:103D0000784700000A1040E2200140E0200280E0F5 -:103D1000200480E0200880E0A001A0E1002180E0F4 -:103D2000821051E03C00F8070000010080520A10A8 -:103D300081421EFF2FE130B4441C810708D0017876 -:103D40000130002902D1001B30BC70478107F6D139 -:103D50000B4AD50102C88B1A8B432B40FAD0001BAB -:103D60000A0601D103383C0034080000EFE70A04DA -:103D7000120E01D10238EAE70902090EE7D1013833 -:103D8000E5E7000001010101F0B4031C041C0C4331 -:103D9000A4070CD1104DEF0102E00431043A10C326 -:103DA000042A04D30C68661B3C0070080000A6437C -:103DB0003E40F5D0002A07D00C7801311C70013349 -:103DC000002C03D0013AF7D1F0BC7047012AFBD98F -:103DD000511E00221A7001330139FBD1F4E70101B1 -:103DE0000101784700000200A0E33C00AC0800009D -:103DF0000210A0E32EFEFFEA1F402DE900000FE1B4 -:103E0000C00080E300F02FE18100A0E30210A0E3F6 -:103E100001208FE212FF2FE100F0E6FC784700005E -:103E20001F40BDE8FEFFFFEA1F502DE93C00E808F7 -:103E3000000001008FE210FF2FE100F040FB784707 -:103E400000001F50BDE804F05EE21F502DE90100A4 -:103E50008FE210FF2FE100F018FB784700001F50A1 -:103E6000BDE804F05EE200BD01B500A000473C00E3 -:103E70002409000000300FE1C030C3E303F021E16A -:103E800001008FE210FF2FE101BD01B500A0004746 -:103E900000300FE1C03083E303F021E101008FE245 -:103EA00010FF2FE101BD000018009FE5041090E411 -:103EB0003C0060090000000051E30200000A0420F9 -:103EC00090E4002081E5F9FFFFEA0EF0A0E17C0913 -:103ED0000000000000004400000044000000D8037F -:103EE0000000D8030000D80300000000000000001C -:103EF00000003C009C090000440000004400000059 -:103F0000440000000080010000800100108E0100CC -:103F1000108E010088F8010001000000001004006C -:103F2000C433040000000400000000000E50A0E1B3 -:103F300058409FE53C00D8090000040094E40100CB -:103F400050E305F0A001041094E4042094E403007D -:103F500000EB040094E4041094E4070000EBF5FF88 -:103F6000FFEA010050E10EF0A001020051E104302F -:103F70009014043081143C00140A0000FBFFFF1A67 -:103F80000EF0A0E114209FE5002092E5010050E131 -:103F900004208014FCFFFF1A0EF0A0E1800900004D -:103FA000CC0900000008000020E60100130000001A -:103FB0005356435F000400003C00500A000020EE0E -:103FC0000100120000004952515F0002000020F27F -:103FD0000100110000004649515F8000000020F4FC -:103FE0000100170000004142545F00000000A0F4EF -:103FF00001001B000000554E445F3C008C0A00008D -:1040000000000000A0F401001F0000005553525FA3 -:10401000010000000E50A0E100600FE18C409FE520 -:10402000041094E4010051E30900000A040094E440 -:10403000011080E00310C1E3042094E43C00C80AAE -:104040000000C02082E302F02FE104D041E204200E -:1040500094E4130000EBF2FFFFEA06F02FE105F015 -:10406000A0E10E50A0E100600FE144409FE5041084 -:1040700094E4010051E30800000A040094E43C00C9 -:10408000040B0000011080E00310C1E3042094E45D -:10409000C02082E302F02FE104D041E2042094E446 -:1040A000F3FFFFEA06F02FE105F0A0E1010050E187 -:1040B00004208014FCFFFF1A0EF0A0E13C0A00006F -:1040C0003C00400B00000160C046C046C04670473F -:1040D0000000101E10EE020011E3FCFFFF1A100E8C -:1040E00001EE101E10EE020011E3FCFFFF1A1EFF8E -:1040F0002FE1101E10EE010011E30300000A101E54 -:1041000011EE3C007C0B0000001080E50100A0E3F4 -:104110001EFF2FE1000020E01EFF2FE18D46974695 -:104120007847C04678FDFFEA10B5041C032801D982 -:1041300000F0ACFB0C484068002800D003240B487A -:10414000016809483C00B80B00001230002905D076 -:1041500006216143405CC300181804E00621614356 -:10416000405C142358430A300006000E10BDD47A78 -:104170000100A869010080B5094A0949032000F03F -:10418000F2F9084908203C00F40B00000860486080 -:1041900007491D2001F0B2FC06491E2001F0AEFCCB -:1041A00080BD0000006C01003127000000100700F6 -:1041B0002925000031250000054980B508208860C8 -:1041C0001D2001F0BFFC1E203C00300C000001F05F -:1041D000BCFC80BD000000100700021C081CD12A96 -:1041E00080B501D105F019FC80BD034980B50020E0 -:1041F0000880052005F0D5FB80BDB074010080B5B6 -:10420000542801D106F0CDF880BD3C006C0C0000B4 -:10421000B0B5104D021C0124012A0D48296806D0B2 -:10422000C42A03D16A68002A05D0AC60B0BD0EF084 -:1042300089FB6C6008E00022AA606C600EF082FBD3 -:104240000021042012F0C8FC06F0D8F83C00A80CAD -:104250000000B0BD0000C4600100BC740100054A4C -:104260005169081A116909681031814201D85061F9 -:104270007047002070478C6E010001494968401A60 -:1042800070478C6E010001484069704700003C0097 -:10429000E40C00008C6E0100024A5169081850615C -:1042A000704700008C6E01000E490F4810B51922AE -:1042B000920141608918C1600B4900220C310160F4 -:1042C0000A49826009680123DB03C918084C41616F -:1042D0003C00200D00002168002902D0074901613F -:1042E00001E000F00CF8226010BD44DC01008C6E8F -:1042F0000100C809000034580100C4090000014849 -:10430000024908617047C80900008C6E0100082846 -:1043100005D23C005C0D0000034B8000195002499F -:1043200020310A5070470000646D010070B5061C12 -:104330000D480D1C0068141C002803D1201C00F03F -:1043400009FC70BD280601D500F022FE221C291CA4 -:10435000301C08F03C00980D0000DDFD011C0348F6 -:1043600054304369321CFFF71BFB70BD0000506DD9 -:104370000100F8B5061C0D481F1C0068151C0C1C1C -:10438000002802D1281C00F0E8FB200601D500F02F -:1043900002FE2A1C211C3C00D40D0000301C08F039 -:1043A000BDFD011C0348543043693A1CFFF7FBFA7A -:1043B000F8BD0000506D0100F8B5F1284ED12A4833 -:1043C00069468269FFF7EEFA274900265439C86822 -:1043D0008B68C2000130D5183C00100E0000072881 -:1043E000C86000D1CE6022486C680068002803D005 -:1043F0000021201C08F03BFB6E6025682089A9780D -:104400000239401AE978401A2081A8782818023821 -:1044100020606E782878082817D23C004C0E0000E7 -:10442000300607D5271C201C00F07AFC041C381C21 -:1044300000F09CFB28780F49403980000A58002A78 -:1044400004D0311C201CFFF7B3FA08E0052100E07E -:104450000421062000F010FA201C00F03C00880E19 -:10446000000087FB300601D500F0A1FDF8BD012159 -:10447000062000F004FAF9E70000A46D0100CC5C0E -:104480000100F8B51A4D194F01245435291C032099 -:104490007C60174B184A05F0F4FB002802D03C0062 -:1044A000C40E0000002038601FE03C600721281C7B -:1044B000EA69FFF783FA382000F080FC0024B86036 -:1044C000B868E60035186846022100F075FB2860E0 -:1044D000281C00F0A5FDB868815906485430026ACE -:1044E0003C00000F0000FFF76CFA0134072CEADBF8 -:1044F0000020F8603861F8BD0000506D0100819A1D -:104500000000619A0000054880B50068002805D0C9 -:1045100003485430426A0021FFF753FA80BD506DC2 -:1045200001003C003C0F00007047000070B50A4ECF -:10453000094D084C083EA169002907D03068416048 -:10454000007B81006958FFF73EFAF4E70349022037 -:10455000087070BD00100700E07E01000002070037 -:1045600070B50A4E3C00780F0000094D084C083E1B -:10457000E169002907D070684160007B81006958BB -:10458000FFF724FAF4E703490220087070BD001019 -:104590000700E07E010000020700B0B5094D041CD1 -:1045A000281C202240303C00B40F00000549FFF7D2 -:1045B0009FFAE068E86020692861A06AA8626068E4 -:1045C0006860B0BD7052010000100700F8B500240B -:1045D0000023202801DB012407E0084E8000355825 -:1045E000074FBD4200D02B1C3C00F00F00003150A3 -:1045F0001360002C03D0211C822000F052F9201CF3 -:10460000F8BDE07E010075750000B0B50B4D041CCF -:10461000286800280FD0201C12F0B7FD00280AD00F -:10462000217A287A0A070007000F3C002C100000AE -:10463000120F9042297201D00120B0BD0020B0BD00 -:1046400070780100F0B5424E051C306885B0002836 -:1046500063D000240020002D06D06978182903D1EA -:10466000E979012900D10120002845D03C006810DB -:1046700000000020B07281004A19937A5906890F10 -:10468000DB0604D5B37A01278F403B43B372D27A5D -:1046900013091207120F934205D301228A401443D3 -:1046A00001AA8900505001300428E4DBB07A3C00B4 -:1046B000A4100000204001070DD5410709D5C1070E -:1046C00005D5810701D5002405E0029902E0019992 -:1046D00000E003990491410709D5C10705D5810779 -:1046E00001D5002403E0029900E001990391C1077C -:1046F0003C00E010000005D5810701D5002401E051 -:1047000002990191800701D5002422E00F2C20D1CD -:10471000706800280BD0049A02AB00920ACB019A71 -:10472000281C0BF08AFB0020706010E017E0307A44 -:10473000297A3C001C11000000070907090F000F2F -:10474000884207D0049A02AB00920ACB019A281C37 -:104750000BF076FB287A307201200F2C00D000205D -:1047600005B0F0BD0120FBE7707801000D4A70B57F -:10477000116800203C005811000000290ED0117A69 -:1047800009060BD5537A947A032101252A1C8A4005 -:104790001E1C164003D0224001D1012070BDFF3104 -:1047A00009060916F2D570BD00007078010010B539 -:1047B000084C206800283C009411000004D0606878 -:1047C000002801D10BF0C0FB00200021002207C40B -:1047D0000C3C0120606010BD70780100014901208F -:1047E0000860704770780100F8B50E4D041C002079 -:1047F0006872201C12F0DEFC3C00D0110000002882 -:1048000012D00020032101220F1A161C237ABE4069 -:10481000334004D06B7A161C864033436B720130F0 -:104820000006000E0328EFD9F8BD70780100920051 -:1048300051188A7A1207120F02703C000C12000005 -:10484000CA7A1207120F4270CA7A12098270097B63 -:1048500081807047034A0F21527A0120914300D092 -:10486000002070477078010040070549400F054A55 -:104870000956527A01200A4000D100203C0048121B -:104880000000704700005E46010070780100124A87 -:1048900070B5537A947AFF20032101252A1C8A409F -:1048A0001E1C164014D0224012D10806000E07D05C -:1048B000012807D0022807D0032807D107203C0091 -:1048C0008412000070BD032070BD012070BD052062 -:1048D00070BDFF2070BDFF3109060916E1D570BD1E -:1048E00070780100F8B5041C13480D1C816800297C -:1048F00005D0017B002901D104734573F8BD0F4E2B -:104900003C00C0120000311C20318A7900AB1A70C3 -:10491000C97959704268002A07D020022843011C37 -:104920000020FFF77EF8002804D12A1C211C00205B -:1049300011F00FF800AB1888F084E2E70000885A05 -:1049400001003C00FC1200000010070080B50121AE -:104950008120FFF7CDFF80BD0149012088607047AD -:10496000885A0100054980B500208860087B00282E -:1049700002D0497BFFF7BCFF80BD0000885A0100D0 -:10498000024A011C3C003813000050685160704717 -:104990000000885A010010B50C1C07F064FA04618D -:1049A000002010BD0000FFB50E1C1F1C382081B078 -:1049B00000F03DFA1D49041C4869002801D14C61F2 -:1049C00000E0046030013C0074130000009000041B -:1049D000000C00F015FA051C0099FFF78BF8002079 -:1049E000731E04E001014A1910326A5001309842E6 -:1049F000F8D300012D503821201CFFF77BF8A5606B -:104A00006560E6850C2060863C00B0130000AF2096 -:104A10008001E0610E20E086002020600198E060C7 -:104A2000386860610399044808600448386005B03C -:104A30000020F0BD0000FC5A0100DD150100FD164C -:104A40000100021C081CF02A80B53C00EC13000099 -:104A500004D0F12A07D106F009FB80BD07F00CFA5B -:104A60000DF0A8FA80BD01210220FFF74DFF80BDA7 -:104A70000149002048617047FC5A0100002802D01B -:104A8000002900D0C1607047F8B5171C3C002814FD -:104A900000000E1C051C1C1C1C3007F0C8F8016926 -:104AA000426980688919891A814206D2231C3A1CFE -:104AB000311C281C00F005F8F8BD0020386020608B -:104AC000FAE7FFB585B0059801270E1C1C303C00A5 -:104AD0006414000007F0AEF8041C808804300390D2 -:104AE0002C48049080790290A069B04217D2351A00 -:104AF00011E00398FFF716FC002806D101218E2053 -:104B0000FFF708FF0025002705E02168016020600D -:104B10003C00A0140000A0690130A061013DEBD26F -:104B2000002F35D0A069801BA06120698019206109 -:104B30006169401AE168884203D907218E20FFF796 -:104B4000ECFE25682F1C701E019500E03F680138BF -:104B5000FCD23C00DC140000386820600298049904 -:104B600088712E682C60321D0092291C2031012290 -:104B7000281D059B08F07AFCBD4201D0351CF0E7EA -:104B800000203861019807990430086008980437BC -:104B9000076009B03C0018150000F0BD02980499A8 -:104BA0008871F9E700002010070038B5041C151CB7 -:104BB00000200C6009E0E268201C0092A38A2168B2 -:104BC000A26908F056FC201CE468002CF3D1286090 -:104BD00038BD80B50CE03C0054150000C2688A4224 -:104BE00008D10021C160002803D106218E20FFF7E3 -:104BF0009DFE80BD101C0028F7D0EFE710B5041C07 -:104C00000CD0A069002806D12069002803D006F046 -:104C1000F7FD00202061201C3C009015000006F0EC -:104C2000F2FD10BD000010B5002809D0C46803E0F3 -:104C3000FFF7E7FF201CF9E7002CF9D1FFF7E1FFB0 -:104C400010BD011C002004E00A89C9681018000486 -:104C5000000C0029F8D1704700003C00CC15000082 -:104C600000E0081CC1680029FBD17047F8B5061C9C -:104C70000C1C1C2000F068FA051C002E01D1002C31 -:104C800002D1301C012103E0201C00F05DFA00215C -:104C9000002200920A1C011C231C281C3C00081640 -:104CA000000008F0F2FB281CF8BDB0B503329208F2 -:104CB00092001404240C09191D1CC9180904090CBC -:104CC000FFF7D7FF018902681219091B491B02600F -:104CD0000181B0BD0000F8B50A4CA021201C3C00A9 -:104CE00044160000FEF72AFF0020261CA036074DC0 -:104CF00007E00C21414349190EC9271D0EC7203476 -:104D00000130A642F5D1F8BDD05C0100C83F0100DA -:104D1000F7B5C468061C0025002C82B023D020897A -:104D20003C0080160000904220D3E168871A019170 -:104D30000021E16003990020FFF7A1FF051C2089F5 -:104D4000C01B20812A680399301C00F016F82089C6 -:104D5000C01920810199201CFFF7B1FE211C281CDD -:104D6000FFF73C00BC160000ADFE291C301CFFF70D -:104D7000A9FE0120002D00D1002005B0F0BD0000EB -:104D8000F7B5041C0E1C002001E0201C0C1CE1687F -:104D90000029FAD12789B7420AD3B81B0004000CB6 -:104DA000208121683C00F816000009180298321C86 -:104DB000FEF7FBFEFEBDF11B0D042D0C002819D0E3 -:104DC0000189A94216D3491B0904090C0181006815 -:104DD000411802982A1CFEF7E8FE21680298721B0F -:104DE0004019FEF7E2FE3C00341700002089C01B8A -:104DF00020812068C0192060DFE703218E20FFF7A3 -:104E0000ADFDDAE7F8B5041C002613E02189002087 -:104E1000FFF73EFF051C228921680068FEF7C8FEE7 -:104E2000002E01D12E1C03E03C0070170000291C4D -:104E3000381CFFF750FEE4682F1C002CE9D1301C11 -:104E4000F8BDB0B5041C0089401A050420682D0C7B -:104E50004018291CFFF71FFF2189491B2181E168A8 -:104E6000C160E060B0BD10B503303C00AC1700007D -:104E7000094A810810683D24084B6401890009181B -:104E80001B19994201D8116010BD0F218020FFF736 -:104E90006BFD002010BD0000B4CF010014C801005C -:104EA00010B511F061FF041C03D10D213C00E8177F -:104EB00000008020FFF75BFD201C10BD0000B0B596 -:104EC000011F0B680D480022834204D001321030CC -:104ED000032AF9D301E0032A06D30924211C8020E8 -:104EE000FFF745FD201CB0BD054B00249A793C001E -:104EF0002418000085680D6081609A71F5E7000054 -:104F00002057010020100700B0B50021104A0023EF -:104F1000D468844204D201331032032BF8D301E069 -:104F2000032B01D304210EE00A4CA37990680028DA -:104F30003C006018000002D1A371032106E005685F -:104F40009560A371002901D104C0B0BD8020FFF796 -:104F500014FD0020B0BD2057010020100700A03034 -:104F6000008A4007400F08280FD201A31B5C5B009A -:104F70009F443C009C18000005030305070709092E -:104F800001207047002070470220704703207047BF -:104F900004207047B0B5104D6869002807D00E494D -:104FA00000222C3103C90143032006F0CFFF0B4C34 -:104FB000002203CC3C00D8180000083C0143032029 -:104FC00006F0AFFF03CC084307494A6802434A6032 -:104FD0008A681043886001206861B0BD0000647376 -:104FE0000100B058010010000700B0B50C1C0FF014 -:104FF000A8FA054DE86A3C0014190000002806D103 -:10500000002C04D0201C0FF0B7FD01202870B0BD8B -:10501000F46E0100054980B5886A002804DA002092 -:10502000886201210DF042FD80BD0000AC7E0100D0 -:10503000F8B51E4D041C00203C00501900006862A9 -:10504000A8701C480078C00722D5B82003591A4818 -:1050500000780E2809D10A1C803206D0184E0D2087 -:10506000325C8A4201DD0138FAD1591E0B061B0E53 -:10507000AB70AB620E280BD208E03C008C1900002C -:105080006218B032127B824202D8581AA86202E03B -:1050900001390029F4DA0EF035F9009000AB1878E8 -:1050A0005978814200D95878ED30E8700121201CF0 -:1050B0000DF002FDF8BD0000AC7E01003C00C819F7 -:1050C00000001D75010011670100C75201000E4963 -:1050D00010B508698B68C200D4186268002A0FD125 -:1050E00001300861072801D100200861201C00F070 -:1050F00024F8054821685430026AFEF7ECFC3C00B5 -:10510000041A000010BD06210620FFF74BFC10BD5D -:10511000506D010008490979C907084A08D400E020 -:10512000081CC1680029FBD101890431018100E01C -:105130000020D0627047000060800700046C01000E -:105140003C00401A000010B5041C19218901002000 -:10515000FFF7C5FD011C60602068FFF7E0FC606898 -:1051600021680830086010BD00000A2801DA042018 -:1051700004E0502801DA052000E00720044A1178F5 -:1051800038233C007C1A0000C000184099430843B3 -:105190001070704788000700B0B5051C07484068CC -:1051A00008E00169A94204D1446805F0C7FD201C4C -:1051B00000E040680028F4D1B0BD0000587501003F -:1051C000F8B500253C00B81A000006F084FD114F28 -:1051D000041CBE792068002807D1A0880430FFF79E -:1051E000F2F8002806D101210FE001682160A169D1 -:1051F0000139A16110C0051C20690130206161697D -:10520000401AE16888423C00F41A000003D90721E3 -:105210008E20FFF7D3FBBE71281CF8BD20100700BD -:10522000B0B509F0BBFF2F4C0028207403D001213A -:1052300001200AF071FC2B4D1435286800284DD050 -:1052400001210F2011F082FD3C00301B0000288955 -:1052500008F0FBFF011C01220F2011F040FDE07857 -:105260000125022836D10AF0C6F800280AD00BF032 -:1052700092FB1E490968401811F05FF8002801D11F -:1052800002202FE0E078022824D13C006C1B0000B3 -:1052900060702570606801281CD015481038817B2B -:1052A000002904D185730F20134910F001FC08F088 -:1052B0004FFE002807D00E4801219838006901F000 -:1052C000B7FD002805D001200EF00CFD3C00A81B06 -:1052D000000001200EF01DFCB0BD05F0DCFEB0BDED -:1052E000E078002801D12570F7E7032000E00420D2 -:1052F0000DF08DFAB0BD846601006C570100E90322 -:10530000010070B5041C002100200A4D00E03C00A3 -:10531000E41B00000131CB005A191679012E02D08E -:105320005279A24202D00B29F4D370BD0B29FCD2D2 -:10533000C80001215A192858117170BD3858010050 -:10534000054880B5007F2423044958434018006A6B -:105350003C00201C0000FEF7DAFB80BD0000D47981 -:1053600001009446010080B504F037FF002011F0E1 -:1053700084FC002080BDB0B5054C051C206BE16AA3 -:1053800002F0E3FD291CA06A02F011FBB0BDA46C81 -:1053900001003C005C1C0000B0B5031C081C141C80 -:1053A000002B0C4D09D06969890001310A04120CE7 -:1053B0002280291CFEF73EFC0AE0011C281C2288E2 -:1053C000FEF738FC2088012802D98008013868617E -:1053D0000120B0BD3C00981C0000206E0100F1B51A -:1053E00000980026C168086809891C2934D3C1883F -:1053F000FF23013399422FD10188C91A2CD141884A -:10540000082929D10179062926D14179042923D1F6 -:1054100000250024071C3C00D41C000018370BE0BA -:10542000A000411804310422381CFEF78BFB002831 -:1054300001D1012504E001340A494869A042EFD8AE -:105440000849087800280AD0012801D0022806D18E -:10545000002D04D10098C0683C00101D0000FFF72B -:1054600042FC0126301CF8BD0000206E01000148FE -:10547000406870470000206E01000249486001202A -:10548000486170470000206E010070B5041C0126C1 -:1054900003F0EFFA251C103500283C004C1D0000DD -:1054A00004D00020207703F0F1FB07E003F038FD83 -:1054B000002809D00120207703F0CEFC011C062231 -:1054C000281CFEF7C3FB02E0022020770026301CD8 -:1054D00070BD00000348807AC00703493C00881D66 -:1054E0000000C00F88627047000040900700A46C65 -:1054F00001000149012088627047A46C0100064840 -:10550000807AC107064AC90F91622021800700D422 -:105510000021A032117070470000409007003C004D -:10552000C41D0000A46C0100074A1268074B9B6968 -:105530001A4001D0012200E000220A600121002A65 -:1055400000D000210160704710000700A46C01002A -:10555000012202600A607047B0B50D1C011C583171 -:105560003C00001E0000041C0622281DFEF777FBED -:10557000211C5E310622281C0A30FEF770FB211C1C -:1055800064310622281C1030FEF769FBB0BDFEB561 -:1055900000251D72171C0E1CB26D0021921950328D -:1055A000D27A3C003C1E00001C1C5A720078321C4F -:1055B0008032C007C017013001900898029200287D -:1055C00001D1307F2BE037480068002800DD011C46 -:1055D0000198002802D00898012810D1029A906BF7 -:1055E000002806D03C00781E0000884201D9451AE8 -:1055F000013D7019B03003E0B56D013D70195030B8 -:10560000007B0FE0029A106A002807D0884201D977 -:10561000451A013D7019A030007903E0BD69013DD4 -:105620007819007FA0723C00B41E00000EF00CF848 -:105630000E2811D1A07A08F067FF00280CD07868F6 -:10564000002805D11B480025007808F04BFF02E038 -:10565000451E7819007AA072029A5069002817D066 -:105660000898012814D0A07A3C00F01E000008F031 -:105670004EFF00280FD00198002807D0022020728A -:10568000706C80194030C079607204E07D68013D23 -:105690007819007AA072029AA07A916908F051FFF5 -:1056A0002060029A607A916908F03C002C1F00008B -:1056B0004BFF6060A07AE0722573FEBDD47E0100CE -:1056C000905701000006000E002A8CB501D08A22F6 -:1056D00000E0882200AB1A800CF0C2F80190684606 -:1056E0000BF0BCFA8CBD0000011C08483C00681F90 -:1056F000000080B50068002809D049680220002910 -:1057000000D101200106090E002006F0D8FF80BD5F -:105710000000206701001CB50190041C443001AA60 -:10572000694611F0B8FD00280BD0A06900213C00AB -:10573000A41F0000C207D20F0220FFF7C9FF0021FB -:10574000201C0FF0D9FE1CBD04219820FFF772F930 -:10575000F9E700008CB500AB84211980054B021CD1 -:10576000181C998A0CF08EF8019068460BF07CFAB0 -:105770003C00E01F00008CBD0000707C0100704701 -:105780000000064980B5C96814234031897A044A6B -:105790005943891880000858FEF7E9F980BD707CEC -:1057A00001005447010080B50020FFF7D6FF80BDFF -:1057B00000003C001C20000080B512481149808A7E -:1057C0000A8B00210028C2B00CD1012A05D0022A80 -:1057D00015D000AB5A800E2207E0022200AB5A809F -:1057E000998004E000AB5A800D2200AB9A8000AB98 -:1057F0001880FF203C00582000009871D97168463D -:1058000000F0D1F942B080BD0000707C010010B5FD -:1058100009F05FFC002005F02AF9034CE08A05F04E -:1058200036F9201C0FF0B3FE10BD707C01001CB5D2 -:1058300009F04FFC07203C009420000000AB074C0F -:105840001880E18A201C0CF00BF8019068460BF0E0 -:1058500017FA201C0FF09EFE1CBD0000707C01009A -:1058600080B502219820FFF7F1F880BD10B5154CE6 -:10587000C2B0A08A002803D03C00D020000001283C -:105880001ED1022000E00120E168403188722069C9 -:1058900008F023FD021C0C4818388088E1680FF0DE -:1058A000A4FEA08A00AB18800120588000209880B8 -:1058B000FF219971D871684600F03C000C2100006E -:1058C0007BF942B010BD03219820FFF7C5F8F8E737 -:1058D000707C01007047000080B503480FF060FE47 -:1058E000002005F0CDF880BD707C010080B5024835 -:1058F0000FF056FE80BD0000707C01003C00482186 -:10590000000080B502219820FFF7A9F880BD80B57E -:105910000320FFF734FF80BD0000F0B5214E0027C3 -:10592000B18A301C002504240029008BC3B01ED18D -:10593000012807D0311C498B022812D100293C00D4 -:105940008421000007D1002405E000240125022065 -:1059500000ABD8801F810FF07FFF002C10D1F168C1 -:105960000520403188720EE000291AD100ABD880A2 -:105970000E2002E000ABD8800D2000AB188107E0BC -:105980003C00C0210000301C0FF013FE201CFFF76C -:10599000FCFE002D08D0B08A00AB9880FF209872E2 -:1059A000DF7201A800F011F943B0F0BD0000707C77 -:1059B000010010B5002005F06CF8044CE08A05F0F9 -:1059C00078F83C00FC2100000FF04CFF201C0FF089 -:1059D000F3FD10BD707C010080B50420FFF7D8FEF8 -:1059E00001480FF0E9FD80BD707C010080B5022008 -:1059F000FFF7CEFE012005F05FF802480FF0DCFD56 -:105A000080BD00003C0038220000707C010080B5A1 -:105A10000320FFF7C0FE80BD0000B0B51D4DC2B031 -:105A2000288B00ABFF21588099710021D971AA8A77 -:105A30000024012A18D12A1C528B02280FD1002AD7 -:105A400016D1032058803C007422000099802C1C41 -:105A5000FF22981DE969FEF73BF9E1680420403117 -:105A6000887210E0002A06D101240E2001E00124F2 -:105A70000D2000AB9880281C0FF0A4FD0420FFF738 -:105A80008DFE002C05D0A88A3C00B022000000AB9F -:105A90001880684600F0A5F842B0B0BD0000707CE8 -:105AA000010010B5002005F000F8034CE08A05F075 -:105AB0000CF8201C0FF089FD10BD707C010080B532 -:105AC0000420FFF76EFE01480FF03C00EC220000BE -:105AD0007FFD80BD707C010080B50220FFF764FE71 -:105AE000012004F0F5FF02480FF072FD80BD0000B8 -:105AF000707C010080B50320FFF756FE80BD0000DA -:105B0000B0B5194D0424A98A281C028B3C00282317 -:105B10000000C2B0012914D1408B042A0BD1002807 -:105B200000D100240FF0ADFE002C19D1E96805204A -:105B30004031887217E0002810D100AB5A800E2047 -:105B400002E000AB5A800D2000AB988019803C0029 -:105B500064230000FF2098710020D871684600F08F -:105B600049F842B0B0BD281C0FF038FD201CFFF7EB -:105B700021FEF6E7707C010010B5002004F09EFFC6 -:105B8000034CE08A04F0AAFF201C0FF027FD10BD93 -:105B90003C00A0230000707C010080B50420FFF7CA -:105BA0000CFE01480FF01DFD80BD707C010080B52A -:105BB0000220FFF702FE012004F093FF02480FF0DD -:105BC00010FD80BD0000707C0100B0B50A4D011CC5 -:105BD00044313C00DC230000041C0622281CFEF794 -:105BE00089F8EC60206903F097F8011C0622A818D8 -:105BF000FEF780F80420FFF7F7FDB0BD707C0100D0 -:105C000090B5041C808893B0002806D01549062260 -:105C1000488018313C0018240000881FFEF76DF8FA -:105C200068460CF014F82088012808D16088032801 -:105C300005D1A088002802D106200CA90870A079FF -:105C40000621FF2804D0E079002801D0011C08318A -:105C50000B2008AA50723C0054240000201C08F0BD -:105C60003BFF039068460BF031F813B090BD000085 -:105C7000587C0100074B1A78824201D0002907D0D6 -:105C8000FF201870044801880122520391430180CB -:105C9000704700004C7B01003C00902400003280E3 -:105CA000070010B5041C0C2307495843401800791D -:105CB0000AF04FF901200349A04008390A7810433F -:105CC000087010BD0000747A0100034A00211154CD -:105CD000800030321058017070473C00CC24000026 -:105CE000E07A010010B5041C052801D3FEF712FF6D -:105CF000201CFFF7EDFF0021201C0EF089FB10BDDA -:105D0000054980B58860087F242304495843085812 -:105D1000FDF76CFF80BD0000D47901003C00082530 -:105D200000009446010080B501219120FEF7C7FED6 -:105D300080BD024A11688143116070470000786E8F -:105D4000010080B5FEF7E9FE80BD80B5FEF7E5FEF7 -:105D500080BD80B500F031FA80BD034980B53C00BC -:105D6000442500000420886000F0D0F980BD0000C8 -:105D70000030070080B500F099FA80BD80B500F0D2 -:105D800099FB80BD38B5202815D20D4C221C20323D -:105D9000957900AB1D70D2795A700A4B82009950E8 -:105DA0003C008025000001218140084801604268D4 -:105DB0001143416000AB1888E08438BD0121FF2009 -:105DC000FEF783FEF9E70010070030740100004081 -:105DD0000700202809D20549064B82009950054A40 -:105DE00051683C00BC250000012383409943516069 -:105DF00070470000A97500003074010000400700E2 -:105E0000024A11680843106070470000786E010074 -:105E10000B48016803221204114301600168072244 -:105E2000120691433C00F825000001225206891811 -:105E300001600168120C11430160016852081143AE -:105E400001607047000080000700FEB51C4E051C75 -:105E5000B08AF26812D00124002909D1116D02AA7A -:105E600001ABFEF7F8FE3C00342600000298002843 -:105E700001D000240BE001AA02A9281CFEF770FF44 -:105E800005E0116D02AA002401ABFEF701FF0E49E7 -:105E9000081C2030827900AB1A70C07958703068C5 -:105EA000002802D1029830603C007026000002E019 -:105EB00002987268D060019800AB70601888C8843E -:105EC000F068C06CF060201CFEBD247E0100001054 -:105ED0000700F8B5041C54271D4E00203060706088 -:105EE00067433804151C000CB1823C00AC2600004E -:105EF000FFF796F8082130610026174A14E0031CCA -:105F0000243342610361C661018308330360B12316 -:105F10004360031C6433C3600C230381031C5433AC -:105F20004C3028C0013C181C002CE8D13C00E8266D -:105F30000000094E07223069D243C1195050021C9B -:105F4000103280398A63F060B06000210020FFF7D2 -:105F500088FF3069F060B060F8BD247E01009100D8 -:105F600005000148406A70470000E87D01003C00E0 -:105F7000242700000148008870470000FC6B0100E6 -:105F8000064980B508880130088005490820086066 -:105F900004498869886100F021F880BDFC6B01002C -:105FA0000010070000300700034A0120121D06CA36 -:105FB0003C0060270000914200D100207047E87D3E -:105FC0000100064800B5C07C002803D1FFF7EFFFB1 -:105FD000002801D0012000BD002000BD0000A080ED -:105FE000070010B5041C800702D506F03EFD03E053 -:105FF000E0073C009C27000001D506F0E3FD6007A8 -:1060000001D5FEF7ABFD10BD024A011C10681160FE -:1060100070470000E87D010038B5204D2C1C20346D -:10602000A07900AB1870E0795870FEF727FA00AB42 -:106030001888E8843C00D82700001A488178082294 -:1060400091438170817811438170174841688022A3 -:1060500091434160016811430160002001306428D0 -:10606000FCD3A0790F4D00AB1870E079104C58703C -:10607000201C103000F03C0014280000DFFB002042 -:10608000C043A061FFF79CFF002809D00A490869B6 -:106090000130086100203C318968486306F0EEFC5D -:1060A00000AB1888E88438BD001007000000070026 -:1060B000F4000700003007003C0050280000E87D95 -:1060C00001000A4880B5006A002801D0FEF7C1F936 -:1060D000074807493C30806810304861012008615A -:1060E0000549086880229043086080BD0000E87D73 -:1060F000010000300700F40007003C008C2800007D -:1061000080B50CF0CBFE06F0BFFC80BD0149C86233 -:1061100070470000E87D0100024A916A08439062DE -:1061200070470000E87D01001823064958434018D5 -:106130000021027903681A70013108303C00C82838 -:1061400000000329F8D370470000285201000349DA -:10615000002800D0011C024881627047000085754C -:106160000000046C0100F8B5FFF733FF284F00284A -:1061700004D0FFF7C8FF386A01303862F86A3C0083 -:1061800004290000002802D0018904390181386BFC -:106190000025002808D00B203D6310F0E5FA1E49C9 -:1061A000086821229043086038783C211B4A41430B -:1061B0008C18FF22796A3A7000290CD0B969013134 -:1061C0003C0040290000B9617D62BD68002D04D00B -:1061D000636B7A6B0021FDF747FDF8BD042803D3FC -:1061E00001218420FEF7A1FC3869261C01303861AA -:1061F00020363078022803D00C218420FEF795FC4D -:1062000035703C007C290000A1690029E8D0636B4F -:10621000303420780C1C00217A6BFDF727FDDFE776 -:10622000046C0100F400070018DB010010B50B4CF2 -:10623000606A00280ED00A4800F012FB002060625D -:10624000A468002C3C00B829000005D07E23DB4365 -:1062500000220121FDF70DFD10BDE0690130E06174 -:1062600010BD046C010000300700094841683F225E -:10627000120491430D2212048918416041680122E1 -:106280005202914341603C00F429000003488178A8 -:1062900081708178817070478000070000000700DE -:1062A000F0B50125082400200E4A0F4900263C23A2 -:1062B0004343D1529B185D719B605E611C82C02775 -:1062C000DF602027FE549E613C00302A000030270A -:1062D000FE54074F3F182037013005289F63E9D34C -:1062E0000548FF3201329062F0BD18DB0100BEBAF2 -:1062F000000030800700066C0100014948607047CB -:106300000000046C01000549085C3C006C2A000098 -:10631000054949684018C006C00E0449203048723B -:1063200070470000A0570100046C010000800700C6 -:1063300080B515218420FEF707FC80BDF8B54348E1 -:1063400084680334424D04E0201C10F03C00A82A6D -:106350000000B9F8002871D12869C007F7D53E4878 -:1063600028603E4A141C2034207900903C233C498C -:10637000584345182879FFF7CCFF281C3A490830C4 -:1063800048600126081C0660686A00280DD03C00A1 -:10639000E42A0000A96A926A354B9F68D71B1A68E5 -:1063A000511879188A425A6800D800E0013206C0B4 -:1063B000E86AFEF787FF2D49E86A4860301C0E60E6 -:1063C00066791FE02B484661047F2949201C50391B -:1063D0003C00202B0000896AFDF75AFC009884429B -:1063E00010D03C202249604340188769002F09D013 -:1063F0000021203001707E23DB4302210022201C7B -:10640000FDF74CFC0120A0408643002EDDD1E96958 -:1064100000293C005C2B000003D03020405DFDF7DC -:106420003AFC164C503C606A002803D00A218420B4 -:10643000FEF796FB20352878012803D00B21842015 -:10644000FEF78EFB02202870E068013000E007E0D4 -:10645000E06000983C00982B00002070009860706D -:106460000A4800686063F8BD0000000107000040B2 -:106470000700010000013080070018DB0100003038 -:106480000700546C010000A00700786E01003C2258 -:106490003C234A4309493C00D42B0000B0B55418B2 -:1064A00058434518211C3822281CFDF7E5FCA06B39 -:1064B0000078A96B0870002020342070B0BD000067 -:1064C00018DB01003C230749584310B54418203419 -:1064D0002078022803D10D213C00102C00008420DC -:1064E000FEF747FB0020207010BD18DB0100FFB550 -:1064F0003C2048431A4981B04418261C2036307885 -:10650000151C0F9F022803D104218420FEF731FBC4 -:106510000120307025710B9930223C004C2C00007A -:1065200061800A99E1620D99A1610C99E1610E996E -:106530006162A762019911557E21C9436163049983 -:10654000002900D10020061C281C08F08BF8002828 -:1065500001D0022000E00020A16B30433C00882CD9 -:106560000000087005B0F0BD000018DB010080B528 -:1065700014218420FEF703FB80BD0148407870475A -:106580000000046C010002480069C007C00F70479A -:10659000000000400700011C3C23044A59433C0012 -:1065A000C42C00008918203109780120002900D06E -:1065B0000020704718DB01000848406A00280AD113 -:1065C000074A002120239B5C022B04D001313C327E -:1065D0000529F7D37047012070470000046C0100C3 -:1065E0003C00002D000018DB0100F8B50E1C041C57 -:1065F000171CFEF782FE201C114C606001202060F9 -:10660000104D686901306861686A002803D007216D -:106610008420FEF7BAFAA068400703D5062184203B -:10662000FEF73C003C2D0000B3FA08480069002842 -:1066300003DAAA218420FEF7ABFA02206862AE607A -:106640002F70F8BD00300700046C01000040070007 -:10665000044A518010710348034908304860012002 -:10666000086070473C00782D00003C6C0100003051 -:1066700007000021002305E002894360C06851182B -:106680000904090C0028F7D104310804000C7047F4 -:106690000000024A516B0843506370470000046CCD -:1066A000010038B50A4C3C00B42D0000221C2032F9 -:1066B000957900AB1D70D2795A7003684068064A1C -:1066C0005065054813655030816000AB1888E08440 -:1066D00038BD000000100700046C010098B50D4C97 -:1066E000201C2030817900AB3C00F02D0000197097 -:1066F000C07958700A4800F0ECF809490020486257 -:10670000FFF769FF002803D012218420FEF749FA21 -:1067100000AB1888E08498BD00000010070000302E -:106720000700046C01000348017A3C002C2E000095 -:10673000FE2291430A310172704700000080070079 -:1067400090B50E4C85B0A078022814D10320A0701B -:106750000B4900200022049202900391E18801225B -:1067600001920091617820782269E3683C00682EEC -:10677000000008F094FD044809F07FF905B090BDD1 -:106780000000B4790100ADB6000071B60000B0B5EC -:106790000C4DAC790C490978002903D001290ED0A1 -:1067A000022908D1C288002A09D0012381683C004F -:1067B000A42E000002200FF0C1F803E00221862081 -:1067C000FEF7F8F9AC71B0BD20100700A079010008 -:1067D00080B5026807494A600379CA78CB700079AE -:1067E000904206D003481430008907F027FE06F0D7 -:1067F0003C00E02E0000ABFA80BD8466010070B55D -:10680000164C154DA0780026983D012803D1286923 -:1068100008F0FBFCA6706068012803D000212869FD -:1068200000F0FFFB0E4829690CF031FA01200CF052 -:10683000E4F83C001C2F0000E078012802D0012081 -:10684000607000E06670064814304168012906D186 -:106850000660416F002902D00020FDF74CFA70BDA0 -:10686000846601003463010030B500220023012555 -:106870002C1C94403C00582F0000044001D0CA5406 -:10688000013301320E2AF6DB181C30BD0000FFB5C3 -:1068900001270026051C022081B00090002D18D091 -:1068A0002878FF2815D0002410E0281980780A994C -:1068B000002901D001063C00942F000008D507F004 -:1068C000E9FE0E2803D0012181400E4300E000279D -:1068D00001346878A042EBDC0098029D01380090FA -:1068E000DFD10398311C814302D003980640002772 -:1068F0000498066005B0381C3C00D02F0000F0BDA5 -:10690000000002210160642101E0013902D0026827 -:106910009207FAD40120002900D10020704710B559 -:106920000020C443054B022201015A50C9188C6053 -:1069300001300828F8DB10BD00003C000C300000DE -:1069400000300700F0B5051C6035C76A041C287BC1 -:10695000002F8BB015D0082815D202A31B5C5B005A -:106960009F4400000704040709090C0C01260021BC -:1069700009E0002606E00226022104E03C0048303F -:1069800000000326032101E0042601218C22125974 -:1069900007912649069004910020039005970892DC -:1069A000E0692269211C7031019121490090700039 -:1069B0004018603002920388591C01801E483C0038 -:1069C000843000000288A1680AA809F0E1FF606035 -:1069D000E87AA16AC9070007000EC90D0843616A79 -:1069E0002269C907890D01430120002A00D1002036 -:1069F00080030843216AC9030843082108430A9910 -:106A00003C00C03000000880201CFEF798FE206982 -:106A1000002804D1201C0AF082F90BB0F0BD807967 -:106A2000062801D9FEF70FF9206906498079800010 -:106A30000958201CFDF774F9EFE7792F0100C469AC -:106A400001003C00FC3000000861010074570100A7 -:106A500010B5041C58308AB00EF07CFE221C803227 -:106A60005168002901D0117A07E0002804D080691C -:106A7000800701D5032100E00121D2680791224956 -:106A8000002008923C003831000004910022059259 -:106A900006900390E06922690090211C70311C4827 -:106AA000019102920389591C01811A480288A16848 -:106AB00009A809F076FF60606B20005DA16A226979 -:106AC000C9070007000E3C0074310000C90D0143E6 -:106AD0000120002A00D10020800308430999088082 -:106AE000201CFEF735FE2069002804D1201C0AF086 -:106AF0001FF90AB010BD8079062801D9FEF7ACF85D -:106B000020690749807980003C00B03100000958B5 -:106B1000201CFDF711F9EFE70000BD2F0100246AEA -:106B2000010008610100745701003EB5051C0069B1 -:106B3000042107F0D2FA002809D042780232011C61 -:106B40006846FDF788F9E86A6C463C00EC310000C5 -:106B5000029000E00024281C143002F003FB0028FF -:106B600004D0211C281C05F0A5FE3EBD002CFCD045 -:106B70000249201C4969FDF7E2F8F6E7447D01006F -:106B800070B51E1C18235843064B049D3C00283248 -:106B900000001950C418002060616260A660E560C2 -:106BA0000FF0B9FD206170BD0000B87D0100024A00 -:106BB000011C9069916170470000447D010001480B -:106BC000406B70470000447D01000449044B3C00C9 -:106BD00064320000CA6809695C3B5B68C91A4143BA -:106BE00050187047A07D01000148007870470000F0 -:106BF0007869010080B506220149FDF735F980BDAD -:106C0000FE670100F0B589B00093164F131C0E1CEF -:106C10003C00A0320000041C3A1C01F062FF01A9F4 -:106C200006A8A26802F00BF901AA06A9381C636A3B -:106C300002F081FC051C012814D10C48FC21C8512C -:106C4000381C02F00CF80321301C07F052FA00281F -:106C500007D03C00DC320000807800F033FC201CC0 -:106C600010300EF047FD00E00025281C09B0F0BDF3 -:106C7000F4670100C138000010B5074C0648062231 -:106C8000211D0838FDF7F6F801F0FCFF00F042FC8A -:106C9000201C02F03C001833000027FC10BDF467F4 -:106CA00001000849C96800290AD0064A0132517812 -:106CB00012784843002A01D108187047101870470D -:106CC000013070470000447D0100044B0549002855 -:106CD0005A6900D0011C3C0054330000101C59615B -:106CE00070470000447D0100B9750000074900208D -:106CF0000A78022A09D10A7C002A05D1CA68002A2A -:106D000003D04969002900D001207047786901004B -:106D10000C4A80B5012151603C009033000009F01D -:106D20006AF809481C308169002907D00023836173 -:106D300000220021002000F0D2F880BD00220021B6 -:106D4000034800F05CF980BD00005C69010051352A -:106D50000000B0B50C1C012816D13C00CC3300005B -:106D60000E4D022C09D100F02BFA00280ED06869D4 -:106D700000280BD1211C13200CE0032CFAD100F0C9 -:106D8000F9F9002802D0287C0028F3D0B0BD211CDE -:106D90000006000E04F062FCB0BD00003C000834A8 -:106DA000000078690100B0B50C4C002525746561C0 -:106DB000E56000F03CFA00F034FA07481C38056141 -:106DC00009F033FF2078002802D104F06EFAB0BD3C -:106DD0000228FCD104F0A5FBB0BD786901003C009D -:106DE000443400000C4880B50178002912D0C068F6 -:106DF00000280FD108481C38406900280AD10748EC -:106E00000068002806D000220721102010F0A0F909 -:106E100002F02CFC80BD000078690100D4670100FD -:106E20003C0080340000F8B51D4E1C4D041CF06879 -:106E300002271C3D002807D0E868002804D0FDF791 -:106E4000C2FE002800D0BC43002C14D03770F0687C -:106E5000144F002810D0E00717D4FDF7B4FE002827 -:106E600013D03C00BC3400007069002806D1E868EB -:106E7000002801D0FDF71AFF0DF00AFAF8BD686985 -:106E8000002805D109480068002801D0012C04D150 -:106E9000391C201C0EF052FDF0E704F01DFB02F03F -:106EA000EBFBEBE73C00F83400007869010050C3CD -:106EB0000000D467010005484169002904D0406AF8 -:106EC000002801D001207047002070470000786939 -:106ED000010010B5041C0649002048600860886065 -:106EE00008F09BFF07213C00343500001220227976 -:106EF00010F03AF910BD00005C6901000149012061 -:106F000008607047E8670100F8B5071C0E1C08F020 -:106F1000A3FA134D041C6868002817D0002F02D074 -:106F2000A868032813D300203C0070350000A86037 -:106F30006860211C0F200EF0F0FE2868002803D0A6 -:106F4000002C06D1012002E0012C02D10020FFF725 -:106F5000FAFEF8BD721C0021044800F068F8A86829 -:106F60000130A860F5E75C6901003C00AC35000029 -:106F7000513500000A4980B5CA68002A0BD0426822 -:106F8000002A09D000224A6202680A6202680721C8 -:106F9000172010F0EFF880BD0120486280BD00008E -:106FA0007869010070B5144D846CE9683C00E835DF -:106FB0000000002917D04030EC614078002801D152 -:106FC00001206862286A0E4E001BB0420CD208F005 -:106FD0003AFE296A401AB04203D202220721132046 -:106FE00009E004F0B6FA70BD0748A9680BF03C0050 -:106FF00024360000BDFE221C0721162010F0C0F828 -:1070000070BD000078690100A086010034630100B2 -:107010000A4980B500208861086900280CD007481B -:107020001C300078002807D001F0D2FF022803D1DD -:107030003C006036000000F012F900F0BCF880BDA2 -:1070400000005C690100F0B5061C0C1C151C91B019 -:1070500001A84021FCF70DFF00216846FDF7A7FFBE -:10706000049001A806220849FCF731FF062202A875 -:1070700002303C009C3600000649FCF72BFF00ABB9 -:10708000DC760C95311C01A807F04EF811B0F0BD6C -:1070900012610100F8670100031C081C191C114B48 -:1070A00080B506D0042111800422191CFCF712FFC0 -:1070B00016E004223C00D8360000011C181CFCF726 -:1070C0000CFF09481038006900280CD007480C3024 -:1070D0000078002807D001F084FF022803D100F0D7 -:1070E000C4F800F06EF8012080BD6C690100F8B5AD -:1070F000041C0F1C00253C0014370000002601F082 -:1071000073FF02282FD11949012F086807D1021CEB -:1071100022400AD120430860A04206D104E00028A2 -:1071200003D0A043086000D10125486800281AD187 -:10713000002D17D0012048603C0050370000381C5B -:1071400008F089FE0B481C308169002907D0002314 -:107150008361002200210020FFF7F1FE06E00022FB -:1071600000210448FFF77BFF00E00126301CF8BD3A -:1071700000005C690100513500003C008C370000C4 -:10718000031C081C191C124B80B506D00421118069 -:107190000422191CFCF7AAFE18E00422011C181C8A -:1071A000FCF7A4FE0A481030C16800290ED0007810 -:1071B00000280BD001F01EFF022807D13C00C83781 -:1071C000000000F064F800F02EF8002801D109F06A -:1071D0007AFD012080BD6869010010B50A4C206964 -:1071E000002809D0A169002906D17D21C9004143A9 -:1071F000032207200FF0E1FE2169012000293C0055 -:107200000438000000D1002010BD00005C690100BE -:1072100010B5054C002803D0FDF79AFCE06010BDC6 -:1072200001200021E16010BD786901000A480A4987 -:1072300010B5C0681C39C968002803D0002901D0E6 -:107240003C0040380000012400E00024002C03D062 -:10725000022207200FF0B7FE201C10BD0000786945 -:10726000010010B5094C0020216900290CD0064905 -:107270001C310978002907D000F009F80120A0612D -:1072800020693C007C3800007D23DB00584310BDA2 -:107290005C69010080B5032107200FF0D1FE80BD9D -:1072A00080B5022107200FF0CBFE80BD064880B5D7 -:1072B0000078002801D0FDF729FD002207211120C8 -:1072C0000FF07CFF3C00B838000080BD00007869FA -:1072D000010010B5041C101C064A516100F0A3F80F -:1072E0001020002C00D11120002207210FF069FF8F -:1072F00010BD5C6901000149486270470000447D8F -:10730000010010B5094C3C00F4380000E069002889 -:107310000CD1E0620120E0610BF008FD0BF074FE7F -:10732000012000F0B5F80FF04DFA606310BD0000C9 -:10733000447D0100054980B50020C861886300F0E4 -:1073400089F800F001F902F03C003039000091FBAF -:1073500080BD447D010010B5012838D10806000E1B -:10736000052832D11D4C2078012809D002281BD0D5 -:1073700003282AD102F07DFB00F06FF8012010E015 -:107380001748216B0BF01BFD0BF03C006C39000023 -:1073900041FE15480069032801D3C00703D5012128 -:1073A000206B07F019FF022000F078F810BD0F489D -:1073B000006820640A485C30C16802698918C160AD -:1073C00003F0CCFC032000F069F801203C00A83950 -:1073D0000000E06210BD092100E008210920FDF74E -:1073E00076FC10BD0000447D010034630100F468A8 -:1073F0000100786E0100B0B50F4C2078651E0128A1 -:107400000FD10020FFF7A1FC0C49098849083C0076 -:10741000E4390000401A0FF019F9002804D0287848 -:10742000012807D0022805D02078002804D1287828 -:10743000032801D10120B0BD0020B0BD457D010071 -:10744000F46701000149C86470470000447D0100F1 -:107450003C00203A00000449054A8968126D012069 -:10746000914200D3002070470000F4680100447D81 -:10747000010010B5064C206B07F0F9FEA06B002848 -:1074800003D10348216B0BF092FC10BD0000447D3A -:1074900001003C005C3A00003463010004480078BD -:1074A000022801D0032801D1012070470020704735 -:1074B000447D0100F8B5071CFFF7D0FF061C012F23 -:1074C000264D1FD0022F45D0032F12D12448254B23 -:1074D00000696A693C00983A000041085A43234B0E -:1074E000D4188C4200D90C1C002E05D01E495B39E3 -:1074F0000978002900D1041C0522211C09200FF065 -:1075000080FD184A5C3A1770F8BDFFF7D6FB0028DB -:1075100002D0286900283C00D43A00000ED004F0C4 -:10752000CFFB134B6969114A59435C3AD26B8918F6 -:10753000884201D9441A04E0002402E004F0AEFDC0 -:10754000041C002EDBD009485B3800780128D6D116 -:10755000084B9C4202D958423C00103B00002418C2 -:10756000D0E70024CEE704F0AEFBCAE70000F468E1 -:107570000100A07D0100983A00008813000080B54A -:10758000052109200FF07DFD02490020087080BD13 -:107590000000447D010070B5061C3C004C3B00001F -:1075A0000DF0BCFAFFF7CEFE094C0A48216B0BF038 -:1075B00021FC012501213006000EA56307F03AFEEB -:1075C000054829020958002900D1056170BD000055 -:1075D000447D010034630100F46701003C00883BF6 -:1075E0000000024A116C0843106470470000447D9B -:1075F000010080B5FFF7BFFE0BF0A1FB80BD024A82 -:10760000011C1069116170470000447D0100F3B551 -:10761000061C002089B0F84C0890E26908253C005F -:10762000C43B0000002A03D006A907A8FCF706FC0B -:10763000301CF34E0027203682286FD015DC01283D -:1076400018D080286BD1EE4D803DA868012867D105 -:1076500068680FF01BF8002863D1012101200DF0AC -:107660003C00003C00009DF808F0DBFD0BB0F0BDD5 -:1076700083286DD0842855D1E7E00A980A2804D2DF -:1076800003A31B181B5A5B009F44F6E00000EE00AA -:107690000B00F700F700F700F7002F0088008B00C1 -:1076A000AD003C003C3C000000F056FE002817D026 -:1076B000D64A803AD16A0698814216D0062100281F -:1076C00000D107210D062D0E00280ED0CF4A012033 -:1076D000803A50650FF0A0F8CC4A803A506604E03A -:1076E000002116203C00783C00000FF0DCFC012556 -:1076F000022005902EE2C6488038406D00282ED02A -:10770000C6492069C44D40180EF0C1FF002812D0B0 -:107710000FF085F8C14949424018BD4920618039C0 -:10772000486E40190EF03C00B43C0000BBFF00283E -:1077300011D00AE0F7E017E2B2E0B0E0B649206904 -:107740008039496E401AA84205DBB349B54D8039EE -:107750004F6503F027FB0622291C16200FF072FC50 -:1077600047E095E000F0FEFD3C00F03C0000002802 -:1077700042D1AA4DC43DEF6008F019FD03F015FB9E -:10778000A86A002802D0FFF74CFFAF62A4488038F7 -:1077900000680021FFF7F9FC08F03FF909211620E5 -:1077A0000FF087FC0022162183203C002C3D0000B6 -:1077B0000FF040FDFFF786FC21E000F01BFE1EE00D -:1077C00006F054FA974D803DA96F401A0490069830 -:1077D000002801D0AF6502E0A86D002808D19148CB -:1077E000C4380078800703D5924847603C00683D64 -:1077F000000000F002FE0498FF382338142802D25B -:107800000120E86353E0EF6351E0874AB57A803A9C -:10781000002D4CD00DF071FF00F0ADFD071C82482B -:107820008038406FFF305F300EF03DFF021C3C009F -:10783000A43D00007E488038406D00281AD100F039 -:10784000F1FD002816D1042D02D1002F12D11BE02A -:10785000002F06D0022D14D079484068002809D0A6 -:1078600012E0002A10D14B21C90001230922162061 -:107870003C00E03D00000FF0D6FC6E4A7348803AB1 -:1078800011680BF0D8FA18E00121002001E0012175 -:10789000012000F02AFE10E0674A6C49803A906EA1 -:1078A00040189066012508958BE104216CE1614A3E -:1078B00066483C001C3E0000803A11680BF0AAFAB2 -:1078C00088E1AF60A86FE8676348016DA967079A10 -:1078D0001420002A00D1002008181230A866707801 -:1078E000B0703078707002203070A069FCF7C2FA76 -:1078F000EF64A86F3C00583E0000E96F594B401AF6 -:10790000984212D2686D069988420ED030780228CB -:107910000BD80EF09CFFA96F0822401A5249091A91 -:107920003B1C16200FF085FC00E0AF6501200590A0 -:107930000890434802253C00943E0000C438C168CA -:10794000002972D10121C1604948006B00286CD028 -:1079500008F066FC69E03C480022019280388068AB -:10796000012804D1384880388760012048E13A482E -:10797000012343603448C4383C00D03E0000007806 -:1079800000280AD100F025FE002806D0FF21913101 -:107990000123092216200FF052FC2C498039486F30 -:1079A000896F421A039206F076F928498039896F67 -:1079B000039A401A0290372000013C000C3F00005F -:1079C000101A50280DD223488038406D002804D169 -:1079D0000298FF385538142801D2012200E0002215 -:1079E0000192039A0120FF3A0B3A502A00D300205B -:1079F000049000280AD017488038C06F3C00483FE8 -:107A00000000081A9B21C900401A142801D2012243 -:107A100000E000220092002A11D00F4D0120803D8D -:107A200068650EF020FF68660125012116200FF021 -:107A30005EFB002116200FF05AFB00E0BAE03C008C -:107A4000843F0000F07902283CD8054A803A516C06 -:107A5000002937D1136C111C002B33D116E0000024 -:107A6000246D010050C30000C05C15007099140023 -:107A7000B057010034630100E204000000900700E9 -:107A80003C00C03F0000530700001E020000C85722 -:107A900001004A6D002A02D0B27A022A15D1009A5A -:107AA000002A03D0CA6D0132CA6500E0CF65019A91 -:107AB000002A0BD08A6FCB6FD21A5A4B9A4202D24D -:107AC0008A6D3C00FC3F0000013200E001228A6523 -:107AD00000E08F650499002901D102280BD9544A8E -:107AE00002281ED9D06F616888421AD1916F081A96 -:107AF0005049884215DD4E4B986FE168401A7D2150 -:107B0000C90088423C00384000000BDD6169401A22 -:107B1000002804DD021140111018401801E0801007 -:107B200008186061586FE0600398FF382338142804 -:107B300009D20298FF382338142804D23E4A906FA5 -:107B40005064906A90643C00744000000EF09AFE0D -:107B50003A49496C401A3B49884201D937494F6438 -:107B6000394903984018142807D23449C86B0028B3 -:107B700003D0886F0864886A88640EF083FE2F49FA -:107B8000096C401A314988423C00B040000001D9DC -:107B90002C48076404200590082116200FF0B9FA3C -:107BA0002848406D002802D00499002908D02949AE -:107BB000002800D129493B1C062216200FF057FB54 -:107BC000022D09D0062D0AD0072D3C00EC40000004 -:107BD00013D107E001211620FDF7D6F81EE01A4A5E -:107BE00057639763184A0698D06207991163536BDD -:107BF00018435063906B084390630598002805D0A4 -:107C000005980CF05FFA05980CF0D2F93C00284179 -:107C10000000082D05D00D4844388570281C03F05D -:107C2000DCFD1149E069884200D161E5089800282F -:107C3000FBD0B07A0228F8D1012116200FF06FFA9C -:107C400002200DF0E8FE53E50000530700003C0061 -:107C500064410000A46C010020A10700204E000038 -:107C60003FFBFFFFA086010050C30000C05C150071 -:107C7000F11D00007047000070470000F8B5214872 -:107C80000068214D6969084001D1012700E0002703 -:107C90003C00A04100001D4D0126696A002900D06A -:107CA00000261B4D1A482C1CA030027A281C40309C -:107CB00080341023B74210D10125C580002900D09F -:107CC00000231A43111C017301200EF088FE0820C6 -:107CD00020703C00DC41000000221621802013E0CF -:107CE0001127C7802E1C0B4D002900D100231A43F9 -:107CF000111C017301200EF075FE08202070306DFC -:107D000000221621686782200FF0D0FAF8BD00002B -:107D1000100007003C0018420000A46C0100009015 -:107D20000700B0B50F4D041CAA7A0121081C002AD7 -:107D300000D00020002C00D0002188420AD0002C66 -:107D400004D100F042FB00F0D6FA03E000F0D9FACB -:107D500000F009F8A87A3C00544200000249E439D6 -:107D60004871AC72B0BD0000446D010080B53EF0BA -:107D700055F802490120087080BD0000687E0100AE -:107D8000F3B501208DB00F1C012408900EF092FD78 -:107D9000061C00F0B5FA09903C009042000000F08B -:107DA00080FB0790FEF73FFA051C00210C9108F0BC -:107DB000F0FB002801D1012000E000200A90FEF72E -:107DC00012FD05F0E0FE0B90002D23D0288841071E -:107DD00020D4291D04910A3500063C00CC42000045 -:107DE000800E01212028039500D000210D1C04984D -:107DF00006F038FD0C90049806F010FD002808D01D -:107E0000039801F087FA002803D0002D01D101204A -:107E100000E000200C9901430C91FCF73C00084362 -:107E2000000023FF00282FD007F099FF051C07F062 -:107E3000B2FF0490FFF7F3F80C990143002D06D030 -:107E40000498F04A301A904201D2012000E000204C -:107E500008430C900B980A9B1843011C0B913C00A3 -:107E60004443000005F0CEFE00281AD1002D06D0B4 -:107E70000498E749301A884201D2012000E000202E -:107E80000C990843051C00F01FFB284303E000F099 -:107E90001BFB0C9908430C9000F0D4FB0B99014399 -:107EA0003C00804300000B91DC49C868002801D0E9 -:107EB0000138C86008F0E7FB069008F090FD311A21 -:107EC00005910699D648814208D8002F08D1059916 -:107ED0004008814204D90699814201D900248BE0EF -:107EE000D0483C00BC4300000599D04D814226D2C9 -:107EF000E879102806D2002F21D1CC48A038806A1A -:107F000000281CD109F062FF0490002802D1002053 -:107F1000C34913E009F010FE002803D0C448C0692B -:107F20000028F4D03C00F84300000498052803D052 -:107F3000C148006A002865D1BB49486A002823D09F -:107F40000138486200F087FF002811D0BB4805992E -:107F500081420DD201F09BF804300DF0EEFC403070 -:107F6000C17A01294ED03C0034440000807A0028B8 -:107F700001D0052849D301F0DFF8022810D0002FE6 -:107F800002D10698002840D10020089082E1AA483A -:107F9000A038C068002838D0A8488069486234E01A -:107FA0000AA903C9084345D03C0070440000A34817 -:107FB0002978A038022940D8406D00280AD09F486F -:107FC000A2492038C06840180EF0C7FB002801D035 -:107FD000012100E00021964A906A002802DA640834 -:107FE00064002AE0002909D1954B3C00AC44000014 -:107FF000A03B5B6D002B02D005280DDB01E00728BC -:108000000ADB0120C043906264088E4964000020AE -:10801000A039886514E0D1E0394311D18949A039EC -:10802000CB6D002B02D1896D012909D93C00E844B0 -:108030000000079B002B01D1072801DB64086400C6 -:1080400001309062BDE07D4988690490002088611C -:108050000C9800282CD007F066FC002802D00220E3 -:10806000044325E07A48C06A002804D177483C00E0 -:1080700024450000A038C06800281CD104980028BE -:108080000DD12878102802D3E878022802D928795F -:10809000102804D304246B4901228A6194E06C48BF -:1080A000A038406D002871D005F0A2FD00286DD0E9 -:1080B0003C00604500006408640088E0FFF75BFA5C -:1080C00000281AD068480078022801D1002F14D166 -:1080D0000020FEF770FE301A0490FFF76CFA0028BB -:1080E00007D0FFF71EFA002803D05D4904988842A4 -:1080F0004FD33C009C45000005F06CFD00284BD19F -:1081000053490878032808D188680122D207301A19 -:10811000904241D201220A7057E054480078022868 -:1081200001D1002F51D14A4988685149801B8842AA -:1081300007D901203C00D8450000FEF742FE7D2112 -:1081400009014018444988604A480078022804D14F -:10815000079B002B01D1012000E00020474B47493D -:10816000584340183C498968891B884230D9079B8D -:108170000020039300F03C001446000079FF0290B9 -:10818000FFF7D8F9049001F057F80499029A514387 -:108190004843019000F0DCFF411C01980122484354 -:1081A000111C00E01BE0314B5B6A834200D30021CD -:1081B000039B0122002B00D03C005046000000220F -:1081C0002C4B51439B6A0122834200D30022500072 -:1081D000081803D023490320087003E00998C068F9 -:1081E000062808D90224089800286ED01D490020CE -:1081F000C8614861A5E01A4948693C008C46000006 -:1082000000280AD1002F05D001224A61C8698018D0 -:10821000C8610AE00020C86103E0002F05D10020FA -:1082200048610D98002800D1C8680020089008789F -:1082300001282FD002284BD1002F08D13C00C8467E -:108240000000E878002802D12878102843D2287945 -:10825000102840D248680A69301A904267D3012238 -:108260000A7038E00000E204000010270000687E79 -:108270000100A086010088130000446D01003C004D -:1082800004470000C857010050C30000983A00009E -:10829000C0570100400D0300C4090000B20C0000EB -:1082A00000200B9A0A9BC0431A4337D0002F35D1C8 -:1082B000079B002B08D06A78022A2FD92A78102A27 -:1082C0003C00404700002CD22A79102A29D2254BA5 -:1082D0001A6C002A06D09A6A9F6CBA4202D11F20FB -:1082E0001FE02EE0204B5A6C002A03D01F4FB31A18 -:1082F000BB4216D31C4B002A05D09A6A9F6CBA4227 -:1083000001D13C007C4700000F200DE0079A002AB5 -:1083100004D0EA79202A01D1002005E0EA79102A68 -:1083200001D3032000E09A6A124A126802400BD17E -:1083300001200890022008700F4808614E6064E731 -:10834000FFE701203C00B8470000089060E70C49B7 -:10835000886A002801DA013002E0002801DD0020EF -:108360008862002008620899200408430FB0F0BD1D -:108370000000A46C010071020000082007005307F0 -:108380000000687E01003C00F447000070470000D8 -:1083900000487047507E010080B53DF07FFD0249E6 -:1083A0000120087080BD00003C7E0100F8B50D1C66 -:1083B0000EF0C8FA2649041C886A264E002801D00F -:1083C000042003E0706A00283C003048000001D01F -:1083D000013870620027002D02D0B761F7610AE012 -:1083E000B0691C490130B061496D002903D00328F0 -:1083F00001D90120F061B460F168009108F0F7FC48 -:10840000F0600099884202D030623C006C48000065 -:1084100034610BE000F090F8002801D0114800E032 -:1084200011483169611A814200D937620B4A0C4800 -:10843000D16C2030002901D00A2103E0017A002903 -:1084400001D0FF310172002D03D1017A3C00A84810 -:108450000000002900D0916A007A002800D1176539 -:10846000F8BDA46C01003C7E0100A60E0000A861CE -:10847000000070470000064980B58968002907D0D0 -:108480000521002800D104210806000E03F03C005D -:10849000E448000005FA80BD606C010007480068F0 -:1084A00007494A69104001D0012000E00020496AD4 -:1084B000884201D10120704700207047100007005A -:1084C000A46C010070B50EF049FA021C00F03AF8F5 -:1084D0003C0020490000104900280ED0081CA031A3 -:1084E0000E780E4B102E01D3806F03E049781029CF -:1084F0000ED3C06FC018841A0AE0081C803045698A -:1085000008498D4201D90C1C05E0C068101A2C1ACC -:10851000002C3C005C49000000DA6419201C70BD8E -:10852000A46C0100A60E000050C3000080B505F049 -:10853000B7FB002802D007F01FFF80BD034800787A -:108540000028FAD007F070FB80BD0000606C0100CD -:10855000034901203C00984900004969032900D8DB -:10856000002070470000606C0100B0B50A4D002487 -:108570002878012803D005F06AFB0406240EFEF7D4 -:10858000D2FC0002204302D1686A002801D10120F8 -:10859000B0BD0020B0BD3C00D4490000606C0100BB -:1085A0000121012800D000210148416270470000EC -:1085B000606C0100154810B504681548006A002871 -:1085C00014D0FFF7CBFF00280ED111481149C43059 -:1085D0004069884208D2CC083C00104A0000A04202 -:1085E00005D3FFF77EFFA04201DA0C4C01E0FF2427 -:1085F00091347D200001844204D900221621832079 -:108600000EF0BDFE01230922211C16200EF0A7FE4C -:1086100010BDB0570100606C01003C004C4A0000E6 -:10862000C05D00001027000070B5051C0E1C00F096 -:1086300043F800280FD0084C2078C00703D405F079 -:10864000ABF909F031FE002D05D02078800702D467 -:10865000301C02F0FDFE70BD606C01003C00884AD9 -:108660000000B0B5002818D01148814215D210483A -:108670000C1C0D1807F0DFFA81000918A14201D285 -:10868000400003E041000918A14201D2241A06E08B -:108690004100A14203D24008F8E7064D074C3C00D8 -:1086A000C44A00000EF072F90019291C07F0DCFA28 -:1086B000B0BD000080B92A00530700004C1D000027 -:1086C00088130000B0B505F0FDFA002813D1FEF7BD -:1086D000B5FE0A4C0A4D0028606300D028600EF0F9 -:1086E0003C00004B000055F9216A002904D1E169E2 -:1086F000401A2968884201D90120B0BD0020B0BDD0 -:108700000000606C0100B057010080B5FFF7DDFF8D -:10871000002805D005F0B7FA002801D1012080BD5E -:1087200000203C003C4B000080BD000010B50A4C0E -:108730000021A268002A03D0A16002F083F910BDD5 -:108740006160011C002204200EF036FD0348216800 -:108750000AF008FC10BD0000BC740100C4600100F8 -:1087600070B5051C3C00784B000001D1FCF7C1FB43 -:10877000204CE06A002815D01F4BA0695843C60B57 -:1087800020884643F0008019E660FBF71CFEA842F3 -:1087900005D8301CFBF717FE8019A84202D2002032 -:1087A000E06020E0E5603C00B44B0000002D1DD0EF -:1087B0002688A0697043C103281CFBF7A5FD6061F2 -:1087C0000D48321C291C3030FBF70AFC0C4B606949 -:1087D0005843C00B606201F0B7FDA062E06800285A -:1087E00004D02069A168FBF73C00F04B0000F4FBCB -:1087F00070BD0548A168FBF7EFFB70BD0000C874B1 -:10880000010040420F00C0C62D0088130000F1B5E2 -:108810003E4800AB8178C0783E4F0A07040758787D -:108820003B49120F085C1439240F3C002C4C00000B -:10883000801878600130B8601878354D085C0019F0 -:10884000B8610130F861EB7833481E09334B1838B2 -:1088500081785E43AB781D09C8236B43002908D19A -:108860002B4D2D783D60C5607D25ED003C00684CAA -:1088700000005D1B2C4B07E0274D6D783D60C56007 -:108880004B252D015D1B284BF618022000F057F8F0 -:10889000281AF8602248221C18388178032000F03A -:1088A0004EF8301A3862396800AB79615A783C006A -:1088B000A44C00005623F9685A43891AF960C8315C -:1088C00039611849183989780029B96911D100AB83 -:1088D0001A78134B143B9A5C531C59430A2359438F -:1088E000144B591A51430A235943401A386212490A -:1088F0003C00E04C000010E000AB1A780A4B143B3F -:108900009A5C531C59430A2359430D4B591A51433E -:108910000A235943401A0B49386240187862F8BD5F -:1089200000000C5A0100665A010094780100A086EC -:1089300001003C001C4D000000487100B0D68C00C6 -:1089400088100000803801005812000070110100EA -:1089500030B5194B0228DD6806D1002904D12B1C43 -:108960000C339C1A64235C43022809D1012907D1E6 -:1089700064237D243C00584D0000E4006B431C1927 -:10898000A0235343E41A0A235A43032809D1002998 -:1089900007D11323FF24E4006B431B199B1A1C1CF3 -:1089A0005C43032808D1012906D10E2005496843FC -:1089B0004018801A041C3C00944D00004443201CC5 -:1089C00030BD00007C7801008408000010B5074C21 -:1089D0000C2360780549143158434018406801F071 -:1089E0004FFC0021607802F04BFF10BD4C7B010072 -:1089F0000C48F8B540780C233C00D04D00000A49E3 -:108A0000584314314418261D60CE301C0BF00BFD6A -:108A10000027412047550548291C02F0F0FE281C7C -:108A200001F031FC0434C0C4F8BD4C7B010055801A -:108A30000000B0B50A4D4C2128783C000C4E0000D7 -:108A4000094A41438C1822680121FBF7E1FA287892 -:108A500001F0FAFB3C23E056411E012007F034FBF5 -:108A6000B0BD00003C7C010058E301000C23074925 -:108A70005843401880B54068416B00293C00484E7F -:108A8000000002D00BF0FBFD80BD0BF02CFD80BD83 -:108A90000000607B010038220A4B4243D2180029B3 -:108AA00080B504D0022907D10BF0FBFC80BDD26A4F -:108AB0000121FBF7B0FA80BD03218620FCF73C00C2 -:108AC000844E00000FFA80BDD4E40100B0B5040666 -:108AD000240E0C200E49604340184568A86B0028FE -:108AE00003D10021201CFDF7E1FA201C07F0F2FF62 -:108AF000002808D0281C6030C179012903D9FF3132 -:108B00003C00C04E0000C171FF3181710121201C69 -:108B100002F0C5FEB0BD607B010070B50006000E1E -:108B2000051C4C230A49584344183C20005DFF3083 -:108B300006063616281C01F090FB0021281C22682E -:108B4000FBF73C00FC4E00006FFA311C002007F0E0 -:108B5000C7FA70BD58E301000C220F4B4243D218F4 -:108B600010B5546800290DD002290FD12C20005DCA -:108B7000002803D007210C20FCF7BAF9201C0BF0C9 -:108B8000BBFC10BD3C00384F0000002102F08DFE00 -:108B900010BD04210C20FCF7AEF910BD0000607B75 -:108BA000010080B5002907D00C230549584340181F -:108BB00040680BF04AFC80BD012102F076FE80BDCA -:108BC0000000607B01003C00744F000010B5041CE5 -:108BD000002905D002291AD1201C0BF0EBFC10BD96 -:108BE0000D4804700D4807F007F90D48018801226F -:108BF0001203114301804C200A4960434018403061 -:108C00000078FDF75DFD201C3C00B04F00000AF02D -:108C1000D4F810BD03218620FCF773F910BD3C7C0D -:108C20000100054E00003280070058E30100FFB547 -:108C3000051C012083B001900C205D4A6843861812 -:108C40000127002974680ED002293C00EC4F000077 -:108C50006AD12C20005D002803D006210C20FCF7EF -:108C600053F9201C0BF020FD07B0F0BD524814381A -:108C70004570A06B002807D0504807F07FF801210D -:108C8000281CFDF725FA1CE04D4807F03C00285051 -:108C9000000077F84A48143805704B4801880122D3 -:108CA0005203114301804020005DFDF712FDB068C2 -:108CB000002809D1281C07F064FFB060002803D108 -:108CC00009210C20FCF723F90598002803D03C006B -:108CD00064500000E06C0130E0640EE06720005D4D -:108CE000002807D1E06C002804D139480238C06A56 -:108CF000A06409E0206D002801D0002704E0281CB2 -:108D000007F000FF0028E5D105982065201C2030E1 -:108D10003C00A0500000626A0290817B281C07F092 -:108D200078FF002F19D0201C6030C1794A1CC27115 -:108D30008079814202D2012001E040E000200190D0 -:108D400000280AD025480078800706D500F00DFBE2 -:108D5000011C3C00DC500000201C0BF015FD0190B4 -:108D6000019800280FD00298007B022803D1201C14 -:108D700004F0D0FE84E7012800D07EE7211C301CDF -:108D800004F0E2FE7CE7251C6035E879FF30A8712D -:108D9000687A06F03C00185100009DFC0DF047FE7B -:108DA000071C05F012FF3F180298817B20690430F0 -:108DB00000F035FA616A05F0EAFE39186B7A3088FE -:108DC0008031094A0DF091FE5DE703210C20FCF78C -:108DD000AAF858E700003C0054510000607B0100F5 -:108DE000A54D0000C94D0000328007001D7501002F -:108DF0008D4E0000FFB581B01F1C051C141C101CFB -:108E00000A9E00F0F5FC291C1031201D0622FBF7FC -:108E1000B7F9A88E2080E88E3C0090510000608059 -:108E20000299201C00F007F9FF34013466602760C6 -:108E300005B0F0BD0000F8B50F1C1E1C051C141C6D -:108E4000101C00F0D8FCA888391C2080288960807C -:108E5000201C00F0F0F8FF3401343C00CC5100003D -:108E60006660F8BD70B5041CC0680568201C14302D -:108E7000061C00F00FFB002816D0012202212069F9 -:108E800005F0F8FA002801D0FBF724FF00220221A8 -:108E9000206905F0EFFA002806D0FBF73C000852E5 -:108EA000000001FF002802D0301C0BF07CFB688919 -:108EB0008007C00F03F0A7F818230449584340184F -:108EC000C168002902D0201CFBF7D4F870BD94675C -:108ED0000100F8B5041C101C0D1C191CFF223C00DD -:108EE000445200000027FF2D25D0002905D04B88D3 -:108EF000002B02D000F050FC15E00021104E4B007A -:108F00009E190223F65E864201DD0A1C04E001314F -:108F10000906090E2629F1D3094E500080194E2367 -:108F20003C0080520000C05E272A07D20649203943 -:108F300049574731401A2060012702E07E20C04394 -:108F40002060381CF8BDFA470100B0B50C1C7E212A -:108F5000051C0020C943002C0FD0101C05F06BFD30 -:108F600000283C00BC52000002D0211CC93901E09D -:108F7000211C86390220C043FBF7B4F9011C0120F3 -:108F80002960B0BD98B5141C00220092221CFDF788 -:108F900043FE98BD054980B5086005490120C861B8 -:108FA000012100203C00F852000003F01CFE80BDAF -:108FB000000020670100AC7C010080B5002100208A -:108FC00003F011FE06F00DFB02490020086080BD91 -:108FD000000020670100034901200969002900D130 -:108FE0000020704700003C0034530000106701006F -:108FF00003480069002801D040697047002070478D -:109000001067010070B5161C0D1C041C002801D04F -:10901000012C07D100F036FA002805D013F0CAF968 -:10902000002801D1012070BD3C00705300000120D8 -:10903000002C00D000200A4C043461C4103C00F025 -:1090400024FA002802D000F0C6F901E000F0E5F8AB -:10905000C030C36B221D07CAFBF720F8002070BD8B -:109060000000D4670100F8B50D1C3C00AC530000B3 -:109070000021041C281C05F0E3F9231CFF332133D5 -:10908000FF27002805D02222011C181CFBF796F8A8 -:1090900000E01F700321281C05F0D2F9261CFF36C2 -:1090A0004136002805D00322011CB01C3C00E853C7 -:1090B0000000FBF786F800E0B7700121281C05F0DE -:1090C000C2F9002807D0011C201CFF300A224630BC -:1090D000FBF777F800E077713221281C05F0B3F92F -:1090E000002807D0011C201CFF30122250303C0009 -:1090F00024540000FBF768F800E0F7730621281CF1 -:1091000005F0A4F9002807D0011C201CFF30042220 -:109110006330FBF759F8F8BDFF346134A770FAE704 -:10912000084980B50968002801D107480168081C72 -:109130003C006054000005D103219020FBF71DFF87 -:10914000002080BD01F0D7FB80BD1C6701002067B7 -:10915000010080B5FFF7E7FF80BDF0B5002484462D -:1091600000200BE08740174007D014230B4D4343EA -:109170005B193C009C5400001B7C65462B55013458 -:10918000013001273B1C0E2800D300230E883D1C14 -:10919000A64200DC00252B40E7D10C80F0BD00008A -:1091A0007440010078B5041C01202070082000AB39 -:1091B0000D1C18803C00D8540000161CA01C6946E9 -:1091C000FFF7D1FF00AB0022D243198882406170C3 -:1091D00032202870102018803240A81C6946FFF702 -:1091E000C2FF00AB1888687078BD80B502F035FF0B -:1091F0000021002800D03C00145500000169081C23 -:1092000080BD00000549002801D0C86800E0086959 -:10921000002801D00430704700207047106701001B -:1092200003480069002801D00430704700207047CF -:1092300010670100024800693C00505500000028FA -:10924000FFD1704700001067010010B5054C206980 -:10925000002803D104219020FBF79BFE206910BD5C -:1092600000001067010010B5041C00F040F9002850 -:1092700001D0002010BD201C00F03C008C550000E7 -:1092800057F9002801D0012010BD022010BD0000B8 -:1092900070B50F4E041C30680D1C002807D0211C2F -:1092A000043005F0C1FB002801D030680BE0094A0A -:1092B0001068002809D0211C141C04303C00C8553B -:1092C000000005F0B4FB002802D020689C3000E0CC -:1092D0000348405D70BD206701001C670100CC475A -:1092E0000100044900200969002902D0FF31013141 -:1092F000886970470000106701000148007A3C004F -:109300000456000070470000AC7C0100FEB5061C4E -:1093100000201F1C141C0029029019D0012926D0FE -:10932000022947D12648007805F0A0FBA0720AF078 -:109330004FFC0E2809D1A07A05F0AAFB002804D022 -:109340003C00405600002048007805F092FBA072D7 -:10935000002020722FE01D4D2868002801D1FBF766 -:1093600052FE00972A68231C1832111C301CFCF78F -:10937000DEFB26E0301C0CF0CAFB051C02D0A868FE -:1093800000283C007C56000008D1134800680028E3 -:1093900001D1FBF73BFE104800681830021C0E4854 -:1093A00000970168231C1831301CFCF7C3FB002D0B -:1093B0000AD040352888800606D40020206003E0CB -:1093C000012190203C00B8560000FBF7F4FD029804 -:1093D000FEBDB069010090570100206701001C67C5 -:1093E000010080B5002002F04AFE1823054A5843C8 -:1093F000801840690121002800D04178081C80BDF8 -:109400000000946701003C00F4560000024908691E -:10941000002800D1C8687047106701000348C06881 -:10942000002801D004307047002070471067010009 -:1094300010B5054CE068002803D105219020FBF70A -:10944000BDFDE06810BD00003C0030570000106713 -:109450000100F8B50D1C002A03D01149124F0E78F7 -:1094600001E0114F0C26082E01D2341C00E0082424 -:10947000012101704470391C221C0230FAF7CBFE26 -:10948000321B002A07DD322028703C006C57000098 -:109490003919A81C6A70FAF7C1FEF8BDFF202870C0 -:1094A00000206870F9E70000A4690100B0690100BC -:1094B000905701000149486270470000946701001D -:1094C000034980B508600121012003F03C00A85742 -:1094D0000000C5FB80BD1C67010080B50021012094 -:1094E00003F0BDFB06F0B9F802490020086080BD1A -:1094F00000001C67010003490120C968002900D150 -:10950000002070470000106701000348C0683C005D -:10951000E4570000002801D04069704700207047E0 -:109520001067010080B50221012003F09BFB80BD84 -:10953000054A80B512690021002A03D0111D05F0EB -:1095400091FA011C081C80BD10670100064A80B515 -:109550003C002058000012690021002A05D0111C8F -:10956000FF31213105F08BFA011C081C80BD10670A -:109570000100054A80B5D2680021002A03D0111DE0 -:1095800005F073FA011C081C80BD10670100064A33 -:1095900080B53C005C580000D2680021002A05D04C -:1095A000111CFF31213105F06DFA011C081C80BD32 -:1095B00010670100FFB50D1C1F1C87B0109E002412 -:1095C00002F072FD1823134958430858002819D097 -:1095D000041C331C3C00985800003A1C281C0999B4 -:1095E000FAF79FFD041C14D0182000AB1880AA685D -:1095F00001A86946FFF7E7FD6A4601A9002007F0C8 -:1096000044FE002805D10A2100E00F219020FBF73D -:10961000EAFC201C0BB03C00D4580000F0BD000058 -:109620009467010010B5002402F044FD1823054999 -:10963000584340188068002802D0FAF771FD0124D1 -:10964000201C10BD9467010080B5024B00F04EF85D -:1096500080BD0000106701003C001059000080B57B -:10966000024B00F046F880BD000011670100F8B51C -:109670000E1C151C00281C4910D048681C4A288064 -:10968000002007E00B181C7A142363439B181B7CF3 -:10969000335401302B888342F4DC3C004C590000E9 -:1096A00024E000200F1C002408600FE0305D05F06E -:1096B00007FA0E2801D10020F8BD391908720122DD -:1096C000396882401143081C386001342888A04260 -:1096D000ECDC28887860FFF7B7FE00283C0088594A -:1096E000000006D00169002903D07F21C9430BF097 -:1096F00052FB0120E3E72C7D01007440010010B50E -:109700001C1C00280BD020780E2805D214230C4AEC -:1097100058438018007C00E0002008700EE03C00F8 -:10972000C4590000087805F0D1F92070FFF792FEC7 -:10973000002806D00169002903D07F21C9430BF01E -:109740002DFB012010BD00007440010080B52720D2 -:10975000C04309F031FC80BD80B52720C04309F02B -:109760003C00005A000039FC80BD80B5282009F07B -:1097700042FC80BD000080B5282009F04AFC80BD75 -:109780000000B0B5012828D1012901D0FBF76BFCFE -:10979000FFF7E9FD02281AD107F013FC124C2169EA -:1097A00088423C003C5A000015D007F00DFC2061B7 -:1097B00020687D24E40044430DF0AEF9051C07F059 -:1097C0000BFC281A844200D9241A0122211C0A20E9 -:1097D0000DF0B2FDB0BD002109200CF075FCB0BD4C -:1097E00007210A203C00785A0000FBF714FCB0BDAA -:1097F0000000D46701007D20024900010860704725 -:109800000000D467010010B5816D041CFF304630A4 -:109810000CF0D1FC201CFF305030A16D0CF0CBFCC3 -:1098200010BDB0B5041C3C00B45A00000D1C02F081 -:1098300059FC201C02F056FC1823044958434018D8 -:109840001822291CFAF770FDB0BD000094670100D2 -:1098500010B5041C09F0BCFB201C09F0C7FB10BDAF -:1098600010B5041C09F0D0FB3C00F05A0000201C8D -:1098700009F0DBFB10BD70B50C78061C48884D78EC -:10988000E200801AE900401A011C414312312420F1 -:10989000FAF791FD211C6143C9004018291C694356 -:1098A000C90042180C4988790C4B3C002C5B000025 -:1098B00053430C4A1360537B34021460527B88710B -:1098C00001335810084B801A0121490258430028DF -:1098D00000DA494208188012213870BD20100700B4 -:1098E000EC04000000A00700030300003C00685BDC -:1098F000000010B5041C06210430FAF770FCFF20AC -:109900002130FF210155201CFF3041308170417111 -:10991000C173FF2063300155002020616061FF3476 -:109920000134A060E06010BD000070B5061C3C0072 -:10993000A45B0000081C58609A601C1C1E60151C6B -:109940009B8AE28A311C02F0A1FC281AE06070BDFB -:1099500070B5041C081C111C1E1C0025EB43221CA6 -:1099600018320BF0F7FB221CFF325032111C0A395F -:109970003C00E05B00000123201C00F0C6F80C282E -:1099800010D00125201C0BF0ACFA201C00F019F8B7 -:10999000201C00F00AF8201C00F029F8311C201CC3 -:1099A0000BF017FA281C70BD0000FF211D3109586B -:1099B00080303C001C5C00008907002901DA01218D -:1099C00000E00021C1627047011C803100220A635F -:1099D000074A1268002A09D04288920606D5FF304D -:1099E0000130C069400701D40120086370470000BE -:1099F000AC6901003C00585C000080B5011C4A883D -:109A00000020520505D5FF310131C969490700D44D -:109A1000012006F0ECFB80BD0000F8B5051C98683D -:109A2000171C0E1C1C1C002802D1201C0CF031F845 -:109A3000AB69391C301C3C00945C0000A2680BF040 -:109A400095FBF8BDF8B5161C0D1C1F1C002402F078 -:109A500061FB18230649584340184368002B05D082 -:109A60003A1C311C281CFAF78EFB0124201CF8BD7F -:109A70009467010080B507F03C00D05C0000C5FA97 -:109A8000094908610868002802D17D2000010860AA -:109A900008687D21C9004143002301220A200DF0FE -:109AA0004EFD80BD0000D467010080B501210A2071 -:109AB0000DF097FC80BDF8B50E1C3C000C5D00005D -:109AC0005168141C1268A5680B1C751B5719974226 -:109AD00000D20131426800258A4202DD0125626020 -:109AE00005E09A4203D10168B94200D90125002D51 -:109AF00009D001682160A660A38AE28A3C00485D23 -:109B00000000606802F0D7FB301AE060281CF8BD46 -:109B1000000080B502F007FB1823034958434018A2 -:109B20001821FAF798FB80BD000094670100FEB58C -:109B3000041C081C111C1E1C0C25012200923C0058 -:109B4000845D0000A26902ABFDF7F0F8002845D063 -:109B500002982721021C0A4001D1084302902149A2 -:109B6000A069084006D00298014003D14921C900EC -:109B700008430290A06D0299884230D0002E2DD06B -:109B80003C00C05D00004021201C5830FAF769FB02 -:109B9000029800250026371CA06519E0C00711D5E2 -:109BA000F019001970300571281C04F0D4FF00284A -:109BB00004D0A01980300572013603E0E01960304E -:109BC00005703C00FC5D0000013701352D06029850 -:109BD0002D0E4008029002980028E2D18420065100 -:109BE000F0192067E765002500E00B25281CFEBD65 -:109BF000D83A000038B5051C081C111C0024E243AB -:109C00006B46FFF73C00385E00004FFA002805D095 -:109C1000A86900990140814200D10124201C38BD6F -:109C200000007CB5056A8669041CC068FBF7B7FBB9 -:109C3000E169FBF7DAFA201CE2694030C18B128936 -:109C40008918C18306493C00745E000001940091AC -:109C50002869331C82880168E068C06800F0F2F966 -:109C60007CBD0000915E0000B0B5D1685569C86840 -:109C7000141C144B0CE002689A4207D1C268CA60F7 -:109C80000021C1600160FBF73C00B05E000073FB87 -:109C900003E0011CC0680028F0D1E068C068E860FB -:109CA000E068C560201C4030C18B2A898918C183B7 -:109CB0002068002802D0FFF7BAFFB0BD044804F0C6 -:109CC0004EF9006A07F077FAB0BD3C00EC5E000088 -:109CD000A07E0100A06A0100F1B582B00298066979 -:109CE000011C083660314568019182E01021002096 -:109CF0002F69FBF763FB6861018908390904090CC6 -:109D000001816869006840180821FBF73C00285F62 -:109D1000000057FBE86168697188006820220180B3 -:109D2000716841600199497B89011143C17000212B -:109D300081702820FBF775FC3988041CC181A86B51 -:109D4000002803D1012080020843E08106223C0064 -:109D5000645F0000391D201C1030FAF7C5FA391C69 -:109D60000A310622201C16300090FAF7BDFA391C81 -:109D700010310622201C1C30FAF7B6FAE189254A78 -:109D80005C201140012292031143405BE1810F21CD -:109D90003C00A05F000008406084201C2030162199 -:109DA000817100212170E96B002907D02969098B95 -:109DB0000907090F2170A184182181710622601CF6 -:109DC0000099FAF794FA7068000EE071706800026A -:109DD000000E3C00DC5F0000207270680004000E82 -:109DE00060727068A0727088000AE07270882073D8 -:109DF000708801300004000C708002D1706801305E -:109E00007060AC61029828622D68002D00D079E75F -:109E1000029804493C00186000004268044804F0BD -:109E200074F8FEBD00008FC7FFFF3DDA0000A06A96 -:109E30000100B0B5074D2878032808D000242C7005 -:109E40006968002903D00120FAF7C8F96C60B0BD39 -:109E500000009C7301003C0054600000F8B52B4BDF -:109E6000D86A002850D02A48011CFF310131CA6845 -:109E70000132CA601A6C002A02D14A6901324A6171 -:109E80000A6901320A61DA68002A04D01F4A0132E5 -:109E90001278002A02D18A693C00906000000132E9 -:109EA0008A610025071D18261A4A6E43743290599C -:109EB000002829D0B4186069002825D160680028DE -:109EC00002D00168002905D1A16800291CD00968C9 -:109ED000002919D0002805D0E1683C00CC600000C2 -:109EE0000131E1600068814211D3A068002806D0EA -:109EF0002169006808180CF0A3FD002807D0064A65 -:109F00000120606174329159381CFAF770F90135FB -:109F1000022DCBDBF8BD0000447D01003C00086150 -:109F20000000F4670100F8B50F1C0025041C002890 -:109F300025D0201C04F003FE002806D0FFF7FFF810 -:109F4000041CFFF750FB061C07E0201CFFF791FBE9 -:109F5000061C201CFFF76FFB041C002E06D03C00E3 -:109F600044610000FFF74CFB002802D001250120CE -:109F700007E0002C06D0FFF7EFF8002802D00125FB -:109F800000203860281CF8BDB0B5C568041C0DF071 -:109F90008FFC207EC10708D5E168A94205D9226956 -:109FA0003C0080610000914202D3E18A0131E182EC -:109FB000810708D5E168A94205D22269914202D8F9 -:109FC000E18A0131E182400706D5E06821698842D3 -:109FD00002D1E08A0130E082E08AA18A88420DD372 -:109FE000607E3C00BC61000002280BD02068E16864 -:109FF000042207F065FB607E002803D1206808F08A -:10A00000ABFFB0BD0020E082B0BD000070B5061C03 -:10A010000C232049584345180020A860301C06F046 -:10A0200091FE041C3C00F8610000686033D0012000 -:10A03000A8702C20005D022803D1201C03F045FEEF -:10A0400010E0616B00290AD0012804D1211C281CD2 -:10A0500003F055FE06E0201C0AF00DFC02E0201C77 -:10A060000AF03DFB0D483C003462000014384168A2 -:10A07000002910D0201C4030028B1207920F012AB9 -:10A0800009D0808B32020009000410438122024370 -:10A090000C200DF0B7F90CF0A5FD606470BD000058 -:10A0A000607B0100FFB5081C3C0070620000111CC1 -:10A0B0000C32202414430C4A83B00CAE526860CE9C -:10A0C00094700024D47093630D234027BB52946195 -:10A0D000148401220292321C00900191231C291C3D -:10A0E000039800F066F907B0F0BD3C00AC620000D8 -:10A0F000A07E0100F8B5041C0027114E1DE0E068A9 -:10A10000002870680CD1808800070DD101210C480F -:10A11000FBF784F9C460E86070688188013102E06F -:10A120008188228989188180E068391C3C00E862B6 -:10A130000000002801D17168C96D251C6160041CF4 -:10A14000002CDFD1F8BDA07E0100064910B549689A -:10A15000002305E08A88048912198A804360C06858 -:10A160000028F7D110BDA07E010010B509493C00C0 -:10A1700024630000002449680AE08A880389D21811 -:10A180008A80C368221C002B00D1CA6D4260181C53 -:10A190000028F2D110BD0000A07E0100011C134870 -:10A1A00010B54068002309E082880C89121982806A -:10A1B0003C00606300004B60CA68002A00D1416621 -:10A1C000C9680029F3D1011C68318164C364436507 -:10A1D00082880823111C08318907890F591A5023D6 -:10A1E000195251188180011C406E4831C16010BD68 -:10A1F00000003C009C630000A07E010010B50749F0 -:10A2000000244B6806E0C268211C002A00D1D96DE9 -:10A210004160101C0028F6D110BD0000A07E010096 -:10A2200070470000FEB5061C0C480C1C40688021DD -:10A23000817000213C00D8630000C170151C4022D1 -:10A2400081631152816101840020042202920090F6 -:10A250000191291C201C1A1C331C00F0BCF8FEBD07 -:10A260000000A07E010070B5061C1748807802210E -:10A27000164A884390703C0014640000101C8078DB -:10A280000843111C887013480024C4707020FBF729 -:10A29000D9F9114D70216860FAF734F83007000FD2 -:10A2A00069689030C8650D4868220880081C28300D -:10A2B00089604861082008823C0050640000081C46 -:10A2C00038304863203848645A20505406480831D2 -:10A2D0004164446570BD0000070058000700A07E7F -:10A2E0000100DEC00000003007000A4B10B5586DB9 -:10A2F0000A490022496800244A623C008C6400003C -:10A300005C654B6E002B01D0DA604A668B6D002BCA -:10A3100003D00A6E0021F9F79CFF10BD0030070042 -:10A32000A07E0100094910B508880130088001208D -:10A33000074980020860074CA26D002A3C00C864EF -:10A34000000005D00521D1200DF06FF90120A06596 -:10A3500010BDB07401000010070000300700FFB509 -:10A3600083B00CAE86468C460E4A43CE0FAD0F1C12 -:10A3700052680C3730CD9770D37096630D263C0031 -:10A38000046500004027BE52059E9661138400229A -:10A3900002922A1C00900191211C6046734600F035 -:10A3A00029F807B0F0BD0000A07E0100FFB5101C29 -:10A3B0001A1C0C1C191C6023FF3213430C4A83B077 -:10A3C0003C00406500000CAE526860CE93700023E4 -:10A3D000D37093634027BB5293611384032202928C -:10A3E0000191291C321C0090201C039B00F005F8F1 -:10A3F00007B0F0BD0000A07E0100F8B5051C1148B3 -:10A400001C1C3C007C650000089B079F4068DE0028 -:10A4100081650266002181800D488159201CF9F771 -:10A4200022FF0B4830184168281CF9F71CFF074928 -:10A4300006984968002C88620F8600D12C1C0548BC -:10A440004C6245653C00B86500000121016501646E -:10A45000F8BDA07E01009052010000300700FFB55A -:10A4600083B00DAE60CE0C9F081C111CD219FF32B8 -:10A47000402414430B4A526894700024D4709363B0 -:10A4800040239F5294613C00F46500001484022232 -:10A490000292321C00900191231C291C0398FFF7A3 -:10A4A000B5FF07B0F0BD0000A07E01004C210D4AB1 -:10A4B000414310B58C180C490978884207D105F042 -:10A4C000C7FD0A48018801223C00306600001203E3 -:10A4D00091430180201C30300C23C156407B8142C7 -:10A4E00002DD208D0CF0E5FB10BD58E301003C7C43 -:10A4F000010032800700011C603180B5CA798B7978 -:10A500009A4207D9487A0C2307493C006C66000040 -:10A510005843085A0CF0D0FB80BD2030007B012846 -:10A52000FAD1487A05F040FD80BD0000607B010053 -:10A5300010B5041C1C21F9F703FF0348A080E0803C -:10A5400020816081A08110BDFFFF00003C00A86653 -:10A550000000FFB5041C002083B00D1C062C0290E7 -:10A5600038D21F4AFF26C10089188978A14203D139 -:10A57000C0008018467804E0013000060016062866 -:10A58000F1DBFF2E24D00193201C0DF0E8F93C00F4 -:10A59000E4660000002805D02421281C01AB02AA93 -:10A5A000FAF730FE1049F00030390F58310609161D -:10A5B000281C059A019BF9F76EFE061C10D1201C81 -:10A5C0000DF0D0F900280BD0281C6969FAF712FEAB -:10A5D0003C00206700000298686104E0062C01D36B -:10A5E000072600E00826301C07B0F0BD0000CC5A5A -:10A5F000010010B50C1C09F086F8002802D0201CC0 -:10A6000009F0B5F810BDFEB5134D041CAE69002E5F -:10A610001CD03C005C670000104F30377868604306 -:10A62000011C2888F9F7D2FF39686143411801A855 -:10A63000321CF9F737FE0298296A401828620BD4B9 -:10A64000E969884208D9A969401A2862019801304D -:10A6500001E000203C009867000002900190019802 -:10A66000FEBDC8740100F8B5002828D00024144DA0 -:10A6700000E0013461000919491949780029F8D12D -:10A6800063001B1903330722694603F0D4FB002C37 -:10A690000FD0002000993C00D46700000AE042007F -:10A6A0001218AE5C531852195E71567801309E71C3 -:10A6B0009278DA71A042F2DB00980322023003495B -:10A6C000F9F77EFEF8BD0000EB620100E8620100D0 -:10A6D000B0B5051C081CFAF73C00106800009DFF8F -:10A6E000041C281CFAF7D9FE211CFAF7FCFD201CDB -:10A6F000B0BDF3B544480C1C007881B0012872D17C -:10A70000FAF782F8414DE86A41490860E86B486011 -:10A710004048FAF7A6F9E86A00283C004C680000B7 -:10A72000FCDA221C0F2001990AF0A4F8384D022708 -:10A730002F63384A64260020AA21083213180130FA -:10A740000004000C64281974F8D3168100205060AE -:10A75000101C103010600025171CD2603C00886867 -:10A76000000008E0281CF9F7A2FF413178190135F3 -:10A770002D042D0C0174B542F4D3264D6F630120D6 -:10A780002863244DE86A0028FBDA0B223B1C244E88 -:10A7900003E00132642A00D10022101C0C213C008D -:10A7A000C46800000139755C1F183F7CBD42F3D1BD -:10A7B000013800D563200029F4D1184E501CF16BEC -:10A7C0001A4A101C0138FDD1F06B884201D0011CDF -:10A7D000F7E702273763164D9021281CF9F7CEFDC5 -:10A7E0003C0000690000281C28302860281C10301C -:10A7F0002F81E860281C20302861042100E00CE053 -:10A800002983E861ED62756301203063221C892091 -:10A8100001990AF038F800202863FEBD00000857AF -:10A8200001003C003C69000000300700108E010070 -:10A8300074FF010009570100204E0000E4FE0100F2 -:10A8400080B513281ED0F02816D109F0B5F90028DC -:10A8500013D10DF0BFFA11F00DFC00220421C42029 -:10A860000CF01CFF3C0078690000094800210078CA -:10A8700005F03FFD05F093F807490120086080BD11 -:10A88000011C0120FAF787FC80BD00F032F880BD82 -:10A8900000006A5701003CD90100B0B50CF0FFF987 -:10A8A0000B49022448603C00B46900000A48046176 -:10A8B0000120772109030861084D6868800702D4E8 -:10A8C00068682043686009F0C7F96868A043686059 -:10A8D0000020B0BDE060010000300700000107006B -:10A8E00080B50123032200213C00F0690000022012 -:10A8F0003CF0F1FA002801D0FAF781FC80BD1CB5CC -:10A90000FCF7F5FAFAF719FE01F003F90024211C0F -:10A91000684601F0E2FB00AB1878012803D002285A -:10A9200001D0032801D10CF0B2FC3C002C6A0000DD -:10A93000013424062416062CECDBFAF709F9FAF7A1 -:10A94000E7FCFAF733FAFAF76DFAFBF7DFFF05F0E9 -:10A950004DFB06F081FC0BF07DF907F029FC114856 -:10A960001021016009010160C90201603C00686AB0 -:10A97000000089000160202101600421016008219C -:10A98000016040210160802101608900016049006F -:10A9900001604900016049000160C9030160890B41 -:10A9A0000160F9F741FF1CBD0000001007003C00EA -:10A9B000A46A000080B53BF04FF83BF07DF9FAF750 -:10A9C0004BF980BDF8B5002500240022002871D085 -:10A9D000434FB9680B1ABB60F868391C0130F86046 -:10A9E000896A002B1EDC0224002906DAFB699842E2 -:10A9F0003C00E06A000006DD3B69984209DD07E0A3 -:10AA0000BB69984201DC012403E07B69984200DDC8 -:10AA10000324786A002808D000207862032C01D132 -:10AA2000022402E0022C00D101242E48012C0079DE -:10AA300018D13C001C6B0000BB78994215DA3B78BA -:10AA40007B7039700131B96201D50131B962B96ADF -:10AA50000125994203D1042804D2013000E00020EE -:10AA600038710122002933DA27E0032C35D1002682 -:10AA7000002807D03C00586B00001E498140386A0E -:10AA800008180CF05CF800282CD01B480078400710 -:10AA900005D5F8683969884201DB0323FE56B86A98 -:10AAA000B04212DD01217962397801257970387060 -:10AAB0000138B86288423C00946B000001D000214C -:10AAC000397100280CDA0720387100E012E007E045 -:10AAD0003879002809D0FF30387106E0002A02D00A -:10AAE0000CF0F8F83862002C04D0FEF797FD291C12 -:10AAF00008F0FCFBF8BD00003C00D06B0000AC7E11 -:10AB0000010050C300001D75010080B510680028C9 -:10AB100002D000F00AF880BD0348C069806808F0E0 -:10AB2000B2F980BD0000846A010010B5041CC06841 -:10AB3000C068002801D1FAF77AFB3C000C6C0000D9 -:10AB4000E068E169C068231C014AFFF7D7FB10BD2C -:10AB5000DD6B0000B0B5051C0C210020FAF7D6FC17 -:10AB6000041C006800214160016029880181698816 -:10AB70004181291CFF312131201C03F03C00486C2D -:10AB8000000077F9291CFF314631201C03F071F9D0 -:10AB9000291CFF315031201C03F06BF9291CFF31B7 -:10ABA0004331201C03F065F9291CFF316331201C5F -:10ABB00003F05FF904480068002802D0201C3C0024 -:10ABC000846C0000FFF78EFD201CB0BDE462010024 -:10ABD000F8B5051C0C1C04D105211820FAF702FB5E -:10ABE0004DE0291C12310622601CF9F725FC221CBD -:10ABF00030320026002100201670344B1B5C2F8A57 -:10AC00003C00C06C0000DF40FF0707D51778013318 -:10AC100001371770671830377B70013101300E280B -:10AC2000EEDBA87B6072107800282BD02A481E210A -:10AC3000095C271C1037217201686181C189217765 -:10AC400081893C00FC6C00007973C18AA181018B71 -:10AC5000E181428A211C60314A80828A8A801F49B0 -:10AC60002C31097A002909D002290AD10122626215 -:10AC70006272428BA281808BE08103E001216662D7 -:10AC800000E000213C00386D0000E87B084001D165 -:10AC90000020F8BDA868431C09D0221C1232009283 -:10ACA000931D0232211C01F09CFAA06200E0A66212 -:10ACB000687B291C1D3120740B4820222062201C37 -:10ACC0004230BE73F9F73C00746D0000C1FB4034A4 -:10ACD0002670687E0449607068682C3148600120E5 -:10ACE000DAE7000090580100C86E010091020100EF -:10ACF00070B5161C0D1C041C002806D00C20FAF799 -:10AD000047FD30C0083806723C00B06D000070BDD1 -:10AD1000002070BD0000011C054880B5006801D00E -:10AD2000012100E00021FCF7A0FC80BD00000C79AF -:10AD3000010070B50E1C041C002801D1FAF78FFA2F -:10AD4000064D2868002801D0FAF73C00EC6D0000A1 -:10AD500089FA04482E60C4600121017070BD0000B2 -:10AD6000A87E01003000070010B5074C20680028BD -:10AD700001D1FAF777FA054800692168F9F7DFFA97 -:10AD80000020206010BD0000A87E01003C00286E5D -:10AD900000003000070001200549C00680B50860AA -:10ADA0000022032154200CF0B8FC80BD00000010EC -:10ADB000070080B500220421C4200CF0AEFC80BD49 -:10ADC0000000044880B500880249FFF7B8FF3C0046 -:10ADD000646E000080BD0000754B0000C874010067 -:10ADE000F8B5061C31480025C0680C1C002830D07E -:10ADF0002E482F4F0430007838762C4804304078A5 -:10AE00003881002A0BD0F9F7A5FA1F20B876201C4C -:10AE10003C00A06E0000F9F7F6F925480430807870 -:10AE2000B87643E02548224984424D6902D26C43FA -:10AE3000E40B0FE01F48211C806A0090F9F723FC07 -:10AE40000099021C4A43A11A1A4A6943526AC90B63 -:10AE500050433C00DC6E00004418022C01D8002056 -:10AE6000F8BDF9F77DFA1F20B876201CF9F7AEF986 -:10AE7000041C114804308078B8760F4F7D6AAC42CC -:10AE800004D2201CFFF722FC051C12E0211C281C08 -:10AE9000F9F7FCFB3C00186F0000061C6843201A01 -:10AEA000FFF717FC051C002404E0786AFFF711FC8B -:10AEB00045190134B442F8D3281CD4E70000C87403 -:10AEC000010030000700C0C62D00011C7D2080B5A8 -:10AED000C000F9F772FB3C00546F00000249886122 -:10AEE0004008C86180BD0000C874010010B5064C60 -:10AEF000211C00200BF042FA211C00200BF00AFA62 -:10AF000000F068FE10BD0000856F000030B50F4DE9 -:10AF10002A78042A19D8002A3C00906F000017D024 -:10AF2000002107E04B005B185C190123E4568442C2 -:10AF300002DA01318A42F5DC8A4200D10139480047 -:10AF4000401840198178024A343A1170C078507024 -:10AF500030BD0075010030B5111C3C00CC6F000005 -:10AF6000383185B09162082111860023141C011C20 -:10AF70005363C068154D0BE00268AA4206D1C2684F -:10AF8000CA60C3600360FAF7D1FA03E0011CC0682D -:10AF90000028F1D1221C4032082120683C000870B2 -:10AFA0000000FAF764FB0B49201C4830029004941F -:10AFB0000391E069828801686E2001920091221C51 -:10AFC0005632035D211C28312068FFF758FA05B07E -:10AFD00030BDA07E0100D57000001CB507493C00C3 -:10AFE00044700000021C01900091C069131C848809 -:10AFF000016810684833221CFFF708F91CBD0000E7 -:10B00000C96F000010B5141C184803F089F8A0425D -:10B0100001D0FAF745F90422201C4030A16AF9F763 -:10B020003C0080700000BDF9002802D101202062A0 -:10B0300005E0002020628420005D002803D1201C50 -:10B0400009F023FB05E02068FAF779FA201CFAF7EB -:10B05000A4FBE0698079062806D1206A0649002809 -:10B0600003D03C00BC70000008690130086110BDCD -:10B0700048690130486110BDA06A010028610100E3 -:10B080001CB5141C154803F051F8A04201D0FAF782 -:10B090000DF9201C4F300279417900AB12021143A7 -:10B0A000C27812043C00F870000011438278120646 -:10B0B0001143009101784078090208439880201CD0 -:10B0C000694606F03CF9002803D1201C09F0E3FA98 -:10B0D0001CBD2068FAF739FA201CFAF764FBF7E781 -:10B0E0000000A06A01003C0034710000BCB51F4D97 -:10B0F000141C281CDC3003F01FF8A04201D0FAF722 -:10B10000DBF8A06C00AB027881781202114302795F -:10B110001204114342791206114300918179C079DA -:10B12000000208439880201C3C00707100006946B2 -:10B1300006F00BF9002817D001280ED1ED6C002D78 -:10B140000BD08020025DE06C0121002800D100219D -:10B1500060686B460A30F9F723F92068FAF7FBF9C3 -:10B16000201CFAF726FBBCBD201C3C00AC71000083 -:10B1700000F08EFEFAE70000C4690100BCB5041CB3 -:10B18000406A0025002803D06068008B05072D0F5A -:10B19000221C403208212068FAF77EFAA168019546 -:10B1A0000091211C221C6032206850313C00E87163 -:10B1B00000000D1CE36809F0E2FFE069806B0028E5 -:10B1C00003D1FEF7E8FA002801D0182000E0102093 -:10B1D000064901940091E169082309680A18211CB5 -:10B1E0002831281CFFF787F9BCBD357100003C00F1 -:10B1F0002472000010B5101C3830906204201086B4 -:10B20000002050631068141C40320421FAF74AFAF7 -:10B21000231C211C2831024A2068FFF7BDF810BD0D -:10B22000657000000EB5C369021C9888054902923A -:10B230003C0060720000019100901B6810689169E9 -:10B240000322FFF7AEF90EBD0000257200000EB517 -:10B25000021C0649102000900292131C01911068F4 -:10B26000002270330021FFF79CF90EBD000025720B -:10B2700000003C009C72000010B5031C002100205F -:10B28000084C00E00131CA00A2589A4202D00B29B2 -:10B29000F8D310BD0B29FCD2C90009190020087190 -:10B2A000012010BD385801008CB500AB86211980F3 -:10B2B000011C04483C00D872000006F0EEFE01902C -:10B2C000684606F0FAF88CBD0000707C010010B5ED -:10B2D000041C0D480D4994B00480062218310C302E -:10B2E000F9F7FBF801A807F0A2F80C2009A94872A9 -:10B2F00000AB1C8002213C0014730000684603F080 -:10B30000DBFF049001A806F0D1F814B010BD0000D6 -:10B31000587C010080B504F045FE05F053FA80BD6D -:10B3200010B5194CE068002806D0611C0878002888 -:10B3300003D14878FF3008703C005073000010BD06 -:10B34000FF300006000E0870A1680029F7D0002821 -:10B35000F5D10E4854308178002903D1C178FF31EE -:10B36000817010BDFF310906090E8170F9D1A16904 -:10B370000029F6D0808803F0D0FB3C008C730000DD -:10B38000044A011C5C320C3205CA801AA269F9F722 -:10B390001FF810BD447D0100F0B5041C4068002575 -:10B3A0000179002285B0C907CB1769490133896A41 -:10B3B000102905D36649C039086B01303C00C873B9 -:10B3C000000008638EE021680E68F678B706FF0F6C -:10B3D000B609002B049706D063691F1C1B6A5037FF -:10B3E0009F4200D10125002D02D063691B6A04E051 -:10B3F0003C23594F7343DB190433E3619F883C00BE -:10B4000004740000002F70D09B79022B6ED0042BA7 -:10B4100017D0062B69D10868A06108890438088113 -:10B4200020680168043101604E4900295DD0049F05 -:10B43000BA425AD14948221C1C3002F065FE05B0C0 -:10B440003C0040740000F0BD0968251CCA794035F5 -:10B45000261CEA738B79221C503213704B796036AC -:10B4600053700B7993704B78D37009781171002168 -:10B4700029721621B173616A002906D0018B090770 -:10B48000090F3C007C7400002972B1811821B1734E -:10B49000011C0A31201C06224930F9F733F8606894 -:10B4A00014220188E982011D201C5830F9F72AF87E -:10B4B000E88A30490840012189030843E8827089FD -:10B4C0000F2108403C00B874000070812068018999 -:10B4D00008390181206801680831016008210020D5 -:10B4E000FAF783F8051C026820680821FAF7FBF8D0 -:10B4F0002068FAF774F82149C5602FE030E0FFE7D3 -:10B50000216860680A683C00F47400008023A2642B -:10B510001E55E564557913792D025B1995792D0433 -:10B520005B19D5792D065B19957812781202AA1845 -:10B5300015040A892D0C083A0A8121680A68083224 -:10B540000A60E169021C0A323C003075000001A863 -:10B5500009680BF03EF9E0692B1C0168201C703073 -:10B5600001AA0BF086F9094901226DE72068FAF774 -:10B5700022F8201CFAF74DF970E7846A010068612F -:10B580000100557200008FC7FFFF3C006C75000082 -:10B59000417000007972000080B502218220F9F725 -:10B5A00093FE80BD704700007047000070470000A8 -:10B5B00070470000704700007047000070470000AF -:10B5C00080B5C068F9F7FAFF012080BD3C00A8757E -:10B5D000000080B50021FF20F9F779FE80BD70479B -:10B5E000000070470000012070477047000070475E -:10B5F0000000704700007047000080B506219920C8 -:10B60000F9F765FE80BDB0B500250129124C3C005C -:10B61000E47500000FD10AF00FFC00281DD06178FE -:10B620003C235943091904310162611C416284625F -:10B63000041C503406E000290FD13C2050432570F3 -:10B6400004190434002C08D02068002802D02021DE -:10B650003C0020760000F8F718FFA5800720A071B5 -:10B66000B0BD6861010070B5041C002101F041FC0F -:10B670006068002801D0216801602068002801D09E -:10B6800061684160124E7068A04201D160687060CC -:10B69000E0683C005C76000000280BD0002506E046 -:10B6A000E068E900411814200BF0E2FF0135308812 -:10B6B0008542F5DB0621201C4430F8F7E9FE206BBB -:10B6C000002801D0F9F786FFE069002801D0FAF7D9 -:10B6D000AFF870BD3C009876000058750100F0B5D9 -:10B6E0001D4F059D3F6801261C1C331C002F00D0F8 -:10B6F0002B1C1D062D0E002906D011780E23164F87 -:10B700000918097A6B4310E02178002913D0FF3122 -:10B710000DE0012901D93C00D476000001311170FF -:10B7200011780E230F4F490811700918097A6B43DD -:10B73000DB19595C21702178002902D11178002988 -:10B74000EAD10948C068002805D02178301C0029BA -:10B7500000D10020F0BD01203C0010770000F0BDBA -:10B76000000018670100246701005C670100AC7CE1 -:10B77000010084460020F0B5002909D011781A4E46 -:10B78000B170194EB178717031700121316127E0CB -:10B79000164E0123F15663465F683C004C7700006B -:10B7A0000023F6560125CC0FB74200D90025002C06 -:10B7B00001D0002DE8D10E4F3B69002B03D0002DA6 -:10B7C00001D1167002E01C4301D111700120012447 -:10B7D000002B00D000243C61002C02D03C00887774 -:10B7E0000000711C397001E0FF3179700028D5D05C -:10B7F0000120F0BD0000AC7C010090B50A4C002097 -:10B8000093B0206103906846002108F084FD207AFF -:10B81000022801D1E06B00E0206CE06101203C00D7 -:10B82000C477000008F08AFD13B090BDF46E0100EB -:10B83000F7B5051C88880C1C82B01F4F002800D16A -:10B8400000270498002801D1F9F78AFD1B483B1C0A -:10B850000068211C0268281C0092049AFEF73CF83C -:10B860003C0000780000061C22D00321049802F05E -:10B87000B8FF00281BD08078012103F0E4FFA088E6 -:10B88000A18E484300040F49000C088003F081F9A1 -:10B890000122002D00D10022011C0E200BF0C9FE58 -:10B8A000002F3C003C78000008D10021281C02F049 -:10B8B000BDFC03E00026281C00F00AF8301C05B08F -:10B8C000F0BD0000C1A10000E4650100A87C0100FA -:10B8D00010B5041CFEF738F80121002C00D100211E -:10B8E0000E200BF03C0078780000DDFE10BDF8B5AE -:10B8F000071C0BF094FAFDF7BCFE002602281E4D33 -:10B9000001D02E70F8BDFDF73EF8041CF9F759FC84 -:10B91000002814D0FDF777F8002810D002F0F9FBCA -:10B92000002801D000243C00B478000000E0154C51 -:10B93000331C211C072216200BF066FF687880213B -:10B940000843687002F00AFC0028DED128788007DE -:10B95000DBD4FDF723F9002805D12878C00702D5EC -:10B96000FDF742F8D1E702F03C00F0780000CDFB93 -:10B970000028CDD02878022108432870211C381CCB -:10B98000FDF7C1F8C4E7606C01007102000010B55A -:10B99000124C01202070FEF7F0F90121A068FBF79E -:10B9A000F4FEA06803F087FF0D483C002C790000EE -:10B9B000A16807F023FDFBF755FFE06800280DD0D4 -:10B9C000094906200AF024FD084905200AF020FD57 -:10B9D000FBF76EFF002801D005F0F8FC10BD000059 -:10B9E0007869010034630100E13500003C006879AA -:10B9F0000000B1350000F0B5244D234C687C203C9C -:10BA00009BB0002808D0022803D820890138208163 -:10BA100037E000276F7434E01C4E68221436311C66 -:10BA20000C3101A8F8F709FE1848338901213C00C0 -:10BA3000A479000044300A1C002B007B00D1021CBA -:10BA40001206120E0DAF3A709446AA7B931930334A -:10BA50005B7B7B70EA7301321206120E0027824272 -:10BA6000AA7301D3AF7304E06246012A01D1776063 -:10BA70003C00E079000000E071600648074A803829 -:10BA800081674267682201A9F8F7DDFD278108F088 -:10BA900012FD1BB0F0BD84660100E92E0000F1B577 -:10BAA00086B006990020886106988468808D656854 -:10BAB00001283C001C7A00004CD9354949680591A1 -:10BAC000002947D00022002100230390281C96461D -:10BAD000944606680496F2788026B2433F2A2ED810 -:10BAE000D706FF0E0126BE40371C049E5209B678C9 -:10BAF0007600B2183C00587A0000264E92001C36A0 -:10BB0000B2583A401ED003E002900289C068511832 -:10BB10000028F9D10598814214D870460130864634 -:10BB2000002B04D06046D86001986246D06003982C -:10BB30000138039006D03C00947A0000231C24684E -:10BB40006068029A01909446C9E77046012807D9B7 -:10BB50002A1C00213F2001F051FF051C0698856139 -:10BB6000281C01F0B3FF0E480068002807D02868A1 -:10BB7000018840790231091A3C00D07A0000281C63 -:10BB800001F0E5FCA2680698C06806990B69291CBB -:10BB9000F8F77CFC034908690130086107B0F0BD83 -:10BBA0000000FC5A0100CC5C010010B5094A80007D -:10BBB0001258D006C00E0130074B3C000C7B000031 -:10BBC0001C68002CFCDB5A602022121A914019607C -:10BBD00019680029FCDB10BDE86001003020070077 -:10BBE000B0B5124C00252570A168114807F032FC51 -:10BBF0006561FBF7A3FEE06800280DD03C00487BA0 -:10BC00000000FBF7A4FE012107200BF070FD0A499C -:10BC100006200AF04CFC094905200AF048FCA068FF -:10BC200003F067FE0021A068FBF7CDFD05F0ABFB3C -:10BC3000B0BD7869010034630100E13500003C00CB -:10BC4000847B0000B135000010B50F4C207C00282B -:10BC500019D16069002816D1E068002806D00A488A -:10BC60001C38C068002801D005F0CEFB0121072058 -:10BC70000BF040FDA06803F03FFE0448A16807F008 -:10BC80003C00C07B0000DBFB0120207010BD786908 -:10BC900001003463010070B50E4C0122A368E56811 -:10BCA000268A5D1BB54201D1002206E025680133DA -:10BCB0002E68A3602660043503C5002A04D1012143 -:10BCC0009D203C00FC7B0000F9F752FB70BD03494E -:10BCD0000220086070BD000044E30100402007001E -:10BCE00080B502F0B9F880BD80B502212D20F9F7AA -:10BCF0003FFB002080BD000080B502212A20F9F71B -:10BD000037FB00203C00387C000080BD000080B57F -:10BD100001212B20F9F72FFB022080BD00000149F3 -:10BD20000120086170477C780100F8B5061C0C23DF -:10BD30000F1C1749584345186C68301C0BF03FFE28 -:10BD4000002F09D1301C3C00747C000003F0EEFE93 -:10BD5000412007551148211CFFF7A6FFF8BD4120DF -:10BD60000755A06B002803D0201C00F0DFF9F5E791 -:10BD7000201C00F0DBF9AC68002C02D00020A86089 -:10BD8000EDE7301C05F034F93C00B07C0000041CE9 -:10BD9000E8D108210C20F9F7F4FAE3E70000607B12 -:10BDA000010055800000074A80B55070516012783C -:10BDB000064B80005201D218101840380268081C47 -:10BDC000F8F77BFB80BD786901003C00EC7C00004B -:10BDD000FC420100B0B50A49041CC870084DE435A6 -:10BDE000A87A0871082C01D3F9F7FCFAA87A05495A -:10BDF00040014018A1004058F8F760FBB0BD0000BA -:10BE0000606C01008043010080B500283C00287D63 -:10BE1000000001D009F01DF980BDB0B5051C0C1C57 -:10BE200000200860686809F036FB6C60B0BD10B592 -:10BE3000041C09F034FB2168002900D1646010BDA6 -:10BE400000000021016040607047F8B546683C0082 -:10BE5000647D0000041C406A351C0A35002804D0AB -:10BE6000201CF9F789FD071C00E00427291C6069E4 -:10BE700000F0F6FC79000F18BA88F18A051C8A4296 -:10BE800005D13088000502D504F0BEFB3CE02868EF -:10BE90003C00A07D000000280FD001328A4204D16E -:10BEA000F9F70FFC2168C1600BE0F9F7F0FBF08AAD -:10BEB000000704D00021296029E0080727D1206865 -:10BEC0002860F08AB8801348016801310160318828 -:10BED00049053C00DC7D000018D429682160002160 -:10BEE0002960E16900290DD0897902290AD1082148 -:10BEF0002186211C3831A162221CDC30084902F065 -:10BF000081F9F8BD201C00F05FF8FAE7201CF9F772 -:10BF1000EFFCF6E73C00187E00002068F9F7BDFB57 -:10BF2000F7E7C4690100B9710000F8B50F1C097882 -:10BF30000124C90721D502F08CFF002801D000247C -:10BF40001BE00E4E756E002D17D0346E0622311C8C -:10BF5000381CF8F7D4FA3C00547E0000002805D1C4 -:10BF60000120002C00D00020041C03E0013D063617 -:10BF7000002DEED1002C03D1024EB06E0130B06620 -:10BF8000201CF8BD1079010030B5051C00200649C1 -:10BF900000221C23CC56AC423C00907E000001D114 -:10BFA000081C30BD01324831012AF5D330BDCC6DBB -:10BFB000010010B5084C00221C235343E358834270 -:10BFC00004D11C20504300190A6010BD01320E2A12 -:10BFD000F2D3002010BDDC7101003C00CC7E0000DB -:10BFE000F0B5416895B0071C90371391041CF878A0 -:10BFF000251C8035C6072879F60F4A4902284DD1FD -:10C000000A6D002A4AD04868013048600AF058FF9B -:10C0100044490861486113990979C9073C00087FC0 -:10C02000000001D441498861206806220690A16879 -:10C0300003A8F8F7EEFA062204A80230E168F8F740 -:10C04000E8FA07A806222169F8F7E3FAB87808ABFE -:10C05000002198700C96636A201CA0300A1C3C00DA -:10C06000447F0000002B02D0028A5207520F08AB17 -:10C07000DA7000AB998413990988C90BD984696B6C -:10C0800010AB1091A96B1191808B29491881096D12 -:10C0900003A8F8F732FA2979686B0BF04DFD29797E -:10C0A0003C00807F0000A86B0BF067FD3DE000289E -:10C0B00038D1486D1490002834D0206806220390AF -:10C0C000A1686846F8F7ABFA062268468018E1686E -:10C0D000F8F7A5FA05A806222169F8F7A0FA0021C9 -:10C0E00004913C00BC7F0000B97808A810AB017235 -:10C0F0000896E9680B9169794172686B0E90A86B9C -:10C100001090288DD880688D1881E1690CA80029CD -:10C1100004D089790170206A0D9001E00721017037 -:10C12000684614993C00F87F0000F8F7EFF902E048 -:10C130002068F9F7CAFA201CF9F7F5FB15B0F0BD35 -:10C140000000C4690100B0B5041CC0680622018962 -:10C150000C3101810568211C0C3D0560A818F8F719 -:10C1600064FA0622A1183C0034800000281CF8F76D -:10C170005FFAA08F0009E062206303480169201C78 -:10C18000F8F7C7F9B0BD00007C790100F8B5061CCE -:10C190006036051C707A0C23254958434418A86B57 -:10C1A0000027002806D0A0783C00708000000128FD -:10C1B00003D1A770707A0AF0B6FD2A1C0C218020EA -:10C1C0000BF095FBA86B002833D0A07802280BD089 -:10C1D000042822D1A7702F1C4037787802280CD170 -:10C1E000707A0AF0A0FD18E003203C00AC8000004B -:10C1F000A0701249002014390969F8F790F90FE08E -:10C200002C1C07E078784121221C08550C21802045 -:10C210000BF070FB6034607A04F020FF041CF1D155 -:10C22000707A4035A98B0002090909043C00E880B6 -:10C2300000000843812101430C200BF0A0FAF8BD57 -:10C240000000607B0100F8B51C49051C886A0130BC -:10C250008862281C0BF07DFD041C11D02B1C2033A0 -:10C260001E1C5A79201CB4301979144FFDF73C007C -:10C270002481000089F8AA7A201CB830B179FDF732 -:10C28000B9F8002F04D101212868FAF76DFAF8BD3A -:10C290006068BC21C08A085328680021FAF764FA54 -:10C2A000002809D00649C86A0130C862002CEED0C7 -:10C2B0003C0060810000201CF9F747FBEAE7201CE6 -:10C2C000F8F73CF9E6E7C4690100A1FF0000F8B502 -:10C2D000164C051F0022211CA03103E02868A04253 -:10C2E00009D02034A142F9D1002A04D102218E20A4 -:10C2F000F9F73C009C81000083F8F8BD0D4FBE7932 -:10C30000606901306061F8F797FDA84207D1A08805 -:10C310000430F8F797FDE0690130E06105E020683E -:10C3200028602560A0690130A061BE71E5E70000CA -:10C33000D05C01003C00D8810000201007000029DB -:10C3400001DB062901DB02207047064BC9005A5C5D -:10C35000C91802704A7842708A78827049684160D0 -:10C36000002070470000CC5A0100B0B50D1C041C21 -:10C37000052801D3F9F73C001482000075F8104835 -:10C380004068002800D00324102D00D30F2506207C -:10C390000B496043123140184178807849190906E9 -:10C3A000090E884200D2011C01208840054901384D -:10C3B000096808400004000C3C005082000002F0B4 -:10C3C00044FEB0BD0000D47A010008200700B0B5DB -:10C3D000041C0D1C09F0CFFD002803D1201C09F01E -:10C3E00082FD0561B0BD80B50AF097FD034A0C32AD -:10C3F00006CA8918081A80BD00003C008C82000023 -:10C40000A07D010070B50B4C049E64680DE065686A -:10C41000854209D1207A0870E068106020691860B0 -:10C42000207D3080012070BD2468002CEFD10020D9 -:10C4300070BD0000A46E010010B5041C3C00C88251 -:10C4400000002030817B20690430FDF764F9011C75 -:10C450006220025B636A4034207802F0CEFD10BD9A -:10C4600000000B4910B508888A690A2350435843D5 -:10C470000ED0084A53899488D2881B1952043C0074 -:10C4800004830000520C9A18C96806324A430A21F4 -:10C490005143F8F7FDF910BDC874010030000700E2 -:10C4A00010B5431C01D1104810BD0F4A0E4B943AF1 -:10C4B0001268443B1B7A10E0546884420CD1002976 -:10C4C0003C00408300000FD1022B03D1D47B022C0F -:10C4D0000AD204E0002B05D1D47BE40704D412680F -:10C4E000002AECD1002010BD101C10BD0000386FD8 -:10C4F0000100011C0120012900D00020704700B577 -:10C50000021C3C007C830000FDF7CEF8002808D018 -:10C51000101CFFF7F1FF1823034958434018006926 -:10C5200000BD002000BD00009467010080B5002818 -:10C5300000D10848074900685031097A002902D023 -:10C54000022904D13C00B883000000E0012100F082 -:10C5500006F880BD002080BD0000A46E0100124AD4 -:10C56000124B127A2C3B002A03D15A68002A18D1A8 -:10C5700004E0022A02D19A68002A12D100207047F2 -:10C58000C27B8A4201D03C00F4830000032A0AD116 -:10C59000827E012A07D1027F01321206120E027733 -:10C5A000C37E9A42EED200680028ECD170470000AA -:10C5B000F46E0100F7B58446002001270024002511 -:10C5C00088B007E06246525D3C0030840000002ADB -:10C5D00005D0AB006E46F25001358D42F5D3002DEB -:10C5E00000D00120002828D00027164C6E4622E0FB -:10C5F000201C00F030F8012801D0072806D10021C6 -:10C60000201C00F034F8316888423C006C84000043 -:10C6100001D2022714E02068C9000C18083C201C35 -:10C6200000F01CF8072807D10120012D00D00020C0 -:10C630002468002800D10834013D0436002DDAD1E9 -:10C640000A9804600BB0381CF0BD00003C00A884C0 -:10C650000000205201000068002901D08002800AF9 -:10C66000704710B540688000440F082C03D30221A6 -:10C670008720F8F7ECFE201C10BD002902D00068CE -:10C68000800D704740688005800D704700003C00B9 -:10C69000E484000010B540684001440F052C03D32A -:10C6A00005218720F8F7D6FE201C10BDF8B5051C23 -:10C6B000880A00901C488E05C069B60D171C1C1C0A -:10C6C000002805D1184881698D421DD0856111E08F -:10C6D0003C0020850000FDF7E8F8154909780E298F -:10C6E00007D1002805D0114950310623C956F9F762 -:10C6F00006FA0E490020C8618D61291C201CF8F73C -:10C70000E2F87943201CF8F7DEF808484161201C64 -:10C7100000993C005C850000F8F7D8F805484069AE -:10C720000A18A24201D2401801E04018001B800202 -:10C730008019F8BDAC7C010011670100F8B50F1C31 -:10C74000061C141C1D1C07F0A1FC0E2809D1201C7E -:10C7500002F0FCFB3C0098850000002804D008484B -:10C76000007802F0E4FB041C0121002EAC7200D022 -:10C77000391C201C02F007FC2860002028726C7213 -:10C78000F8BD90570100031C0A4810B50024021C94 -:10C79000A03203E081883C00D4850000994209D290 -:10C7A00020308242F9D1002C04D102218E20F8F7EA -:10C7B0005DFE002010BD0000D05C0100FFB5061C2E -:10C7C000002081B010601F1C0125141C301CFFF7D5 -:10C7D0006DFF052812D202A33C00108600001B5CEE -:10C7E0005B009F440000030303030800391C301C56 -:10C7F000FFF755FF03E00298F8F7EBF801302060EF -:10C8000004E005218720F8F734FE00252068802801 -:10C8100004D906218720F8F72CFE3C004C86000046 -:10C820000025281C05B0F0BD70B5174C606C0028C1 -:10C8300001D001201DE0164E144D3188A06C002857 -:10C8400008D02878814205D9F8F74CF80138FAF772 -:10C8500051FE0EE0E06C00280AD000203C008886E3 -:10C860000000FAF74AFE29783288914204D99042B2 -:10C8700002D9101C00E0081CFAF7DFFDE16B441A36 -:10C880000AF081FB201A00D5002070BD0000447D15 -:10C890000100F8600100FC600100FFB5274E3C007C -:10C8A000C4860000041CB0790F1C151C81B00090D8 -:10C8B0000AF06CFBC11923480768002F05D10A2133 -:10C8C0008020F8F7DFFD05B0F0BD1E4840688446C3 -:10C8D000002801D100220EE082680368AB4207D134 -:10C8E0003C00008700000379A34204D10B21802083 -:10C8F000F8F7CBFD23E0C0680028F1D1134BF868AE -:10C9000018603D603C71B96004988D1A38616046CA -:10C91000002305E08468A41AAC4203DA031CC06853 -:10C9200000283C003C870000F7D1F860002B08D1BC -:10C9300007483B1C47600848064A00880AF08AFB03 -:10C9400000E0DF600098B071C3E70000201007002E -:10C950007C5D0100213801002C740100F3B583B027 -:10C96000041C09D03C0078870000201C049909F0C1 -:10C970008EFB002803D0201C303005B0F0BD0AF03B -:10C980000EFB1E4A0026049F019600900292029C14 -:10C990000025391C201C143002F0C5FA002801D0F3 -:10C9A000261C03E001353C00B48700001C34042D34 -:10C9B000F2D3002E22D10198134F013001900228AA -:10C9C000E8D30121C906029A00201369009CE31AEA -:10C9D0008B4201DD191C161C01301C320428F4D3D3 -:10C9E0003068002801D0F8F73C00F0870000D3FE43 -:10C9F000301CFDF74AFF301C143006220499F7F76B -:10CA00007AFE009C301C3461BDE7306A010034427C -:10CA10000100094910B54C6903E0E168814203D087 -:10CA20002468002CF9D101E0002C3C002C88000087 -:10CA300003D102210220F8F737FD201C10BD0000B1 -:10CA4000FC5A010010B5C30706D5084B5C690C43BE -:10CA50005C611C7E14431C76800706D5044843693C -:10CA600019434161017E1143017610BD3C00688885 -:10CA70000000FC5701001858010070B50D1C041C83 -:10CA8000161C00F008F8A007C0170130321C291C42 -:10CA900000F021F870BD10B5C30706D5084B5C69DE -:10CAA0008C435C611C7E94431C76800706D53C0059 -:10CAB000A4880000044843698B434361017E91438D -:10CAC000017610BDFC570100185801000322111F08 -:10CAD00080B5012000F002F880BD000030B5151CC3 -:10CAE0000C1C002887B002D01C22224901E02249F8 -:10CAF0003C00E08800001C226846F7F764FE0599B8 -:10CB000000AB1A7E8C43201C9543029A291C0240DC -:10CB10000292019A02400192009A02400092039A06 -:10CB200002400392987C08409874587C08405874DE -:10CB3000187C3C001C89000008401874D87C084010 -:10CB4000D87402991048416101AA06CA91438161D3 -:10CB50008168019A114381608168009A91438160E4 -:10CB600000AA06CA11434268114341604168039A12 -:10CB7000914341603C005889000004A80BF001F883 -:10CB800007B030BD0000FC5701001858010010002C -:10CB9000070010B5041C011C012008F0E0F9002C6E -:10CBA00002D003F01CFF10BDFEF7D1FC10BDF0B5A4 -:10CBB0000C1C010E01233C00948900001B06090691 -:10CBC00099429FB028D11749084000211A2800D364 -:10CBD0000221002919D1C500134F10A8EE19B288FF -:10CBE0002168F7F79DFD201CF8F7EAFD7A5901A9A5 -:10CBF00010A8F7F707FD00283C00D089000005D0F9 -:10CC0000109801A90190B07900F09DF81FB0F0BD17 -:10CC10002A20F8F75EFC201CF8F7D5FDF6E7032183 -:10CC20002A20F8F756FCF1E700007FFFFF002445BB -:10CC3000010010B50C1C802802D03C000C8A0000BA -:10CC4000812808D103E0201C00F006F910BD201C4B -:10CC5000F8F7BCFD10BD03212C20F8F73DFCF6E7EA -:10CC6000F0B50C1C00218BB00A91010E01231B06AC -:10CC7000090699422AD118490840061C3C00488AF6 -:10CC80000000062E01D3072124E02089F8F7F1FEE9 -:10CC900022892168051CF7F74CFD201CF8F799FD47 -:10CCA000F4000F4E281C0AAA69463359F7F7B4FC62 -:10CCB000002801D0012807D12868694600903C006F -:10CCC000848A0000A01900790A9A00F009F9281C4A -:10CCD000F8F7B0FE0BB0F0BD01212B20F8F702FCF5 -:10CCE000F8E700007FFFFF00284601000A1C010E44 -:10CCF00001231B060906994280B508D05B009942C2 -:10CD00003C00C08A00000BD10006000E111C00F090 -:10CD10000EF980BD05490140101C05F0A2F980BD47 -:10CD200001212D20F8F7E1FB80BD7FFFFF0080B5DA -:10CD3000011C0F2000F013F880BD80B5011C0420F9 -:10CD400000F03C00FC8A00000DF880BD80B5011C9D -:10CD5000172000F007F880BD80B5011C012000F00D -:10CD600001F880BDF8B5041C061C802084430F1C0C -:10CD7000192C01D3F8F7EAFB0848045D211C0020B8 -:10CD8000F8F750FD3C00388B0000051C221C391CB4 -:10CD90000068F7F7DAFC2A1C311C0720F8F711F9B4 -:10CDA000F8BDF4450100F8B50D1C161C041C1F1C31 -:10CDB00008210020F8F739FD142201680E4B724358 -:10CDC000D2180C71127C3C00748B00004A710D600B -:10CDD0000B4A8F7112687F2A03D95205520E8023A5 -:10CDE0001A43CA71074A0023516801315160021C7D -:10CDF00081210020F8F708F9F8BD00007440010017 -:10CE0000FC5A0100806E01003C00B08B0000B0B500 -:10CE1000041C08210020F8F70EFD218BE27D051C83 -:10CE200009055207520F490C006811438180A17D0A -:10CE300014230E4A59438918097CC171E16A0160C3 -:10CE4000E168281CF8F717FC0A483C00EC8B00004E -:10CE50000068002801D0F7F7F1FB07490431886822 -:10CE60000130886000212A1C0020236BF8F7D2F8DB -:10CE70000120B0BD744001007C6E01000148806853 -:10CE800070470000806E010010B5041C3C00288C27 -:10CE9000000092B0016868460822F7F762FC00AB18 -:10CEA00098884007400FD87798884004000D188470 -:10CEB000D888588400980D900594208908382081DE -:10CEC000059801680831016000200A900C903C0030 -:10CED000648C00000021112009F078FB0549064A06 -:10CEE000086801300860022102A801F0CDFC12B0F0 -:10CEF00010BD0000806E0100558B0000021C012057 -:10CF00000006084380B52B210AF08AFD80BD000091 -:10CF10003C00A08C0000F7B5041C061C8020844354 -:10CF2000171C062C01D3F8F726FB0B48055D291CBE -:10CF30000020F8F78CFC041C006801992A1CF7F704 -:10CF400016FC391C201CF8F7A2FB221C311C002304 -:10CF500002203C00DC8C0000F8F768F8FEBD000001 -:10CF6000204601000A1C011C80B500230120F8F7AF -:10CF70005DF880BDFFB59FB01F1C051C0A301E90D8 -:10CF80001CAA1DA90AF000FF002871D0002F09D0AB -:10CF90000A2100203C00188D0000F8F75EFC0668AE -:10CFA000041C301DFAF7AFFA05E004210020F8F761 -:10CFB00054FC0668041C28893649012208807080C8 -:10CFC000E88814A9308019A8FCF7F5FCFCF7FFFBF2 -:10CFD000011CFF3121313C00548D0000201C01F068 -:10CFE000EFF819A9201C01F0EBF814A9201C01F09E -:10CFF000E7F8201C2099FDF74BFD0022022101F0EB -:10D0000033FD061C1C9900208861301CF8F71CFABF -:10D01000002E0BD0307A00283C00908D000002D00A -:10D020004021084330721C980222816911438161BA -:10D0300004E01C9902228869904388611DAA06CAEF -:10D0400001A805F058FB09A8002F02D00222427265 -:10D0500001E000214172049401A83C00CC8D000045 -:10D0600004F07AFB01211C9808F0C8FF002F04D0BF -:10D070001C980122816911438161A8881C9C01F0E0 -:10D080009FFE021C211C00E004E00748408809F0D4 -:10D090001FF804E03A1C00210520F9F73C00088E37 -:10D0A00000009BF8002023B0F0BDFC600100987CDC -:10D0B0000100F8B5041CC0680568A01D01F095FFCB -:10D0C000002845D0211C1431201C6A460AF055FE68 -:10D0D00000283DD0FCF77DFA002839D100983C00AB -:10D0E000448E00004B21095C012934D1042609F04B -:10D0F00019F9688800281BD1A8880321890388436F -:10D1000015490026088001220221206901F0B8FC9F -:10D11000041C14D000988069800710D5F8F79AF99C -:10D120003C00808E0000201CF8F7DDF8002809D1B3 -:10D13000F8F77FF901260098022281699143816105 -:10D14000002101E00098022108F061FF0098806949 -:10D15000A988C207D20F301CF9F745F8F8BDFA606C -:10D1600001003C00BC8E00001CB5046900230022B5 -:10D17000002C13D14B24245C022C03D1022905D0AE -:10D18000012203E0022901D101220123002A05D056 -:10D19000009004200193694609F036FA1CBD000096 -:10D1A000B0B5041C3C00F88E0000F2210F200C4D9D -:10D1B0000AF099FB287808280BD201A31B5C5B00BE -:10D1C0009F440703030808080808002C01D105F054 -:10D1D000BCFBB0BD012CFCD1FF2007F038FAB0BD7C -:10D1E0000000746601003C00348F00008CB5054AD5 -:10D1F00000AB1172009019716946082009F00AFA13 -:10D200008CBD0000AC7C0100F3B5041CC06806278F -:10D2100085B0066809F026FF984948632069032114 -:10D2200001F008FC964D00283C00708F00004DD0A6 -:10D230009549403109798078814247D1012120699F -:10D2400001F0FBFB02902069322101F0F6FB019016 -:10D25000021C8D480299FCF746FF002836D00023B7 -:10D260008A480299019AFCF7E4FE3C00AC8F00006A -:10D270000B282ED1864A51887089414003910B1C9E -:10D2800084490B4025D150800399171C00290BD0ED -:10D290000399480502D5381CFCF740FE039988061F -:10D2A00002D5381CFCF724FE2A2120693C00E88FB7 -:10D2B000000001F0C8FB00280DD08078E9698142A8 -:10D2C00009D0E861381CFCF716FE381CFCF707FE95 -:10D2D000381CFCF726FE0027201C20300490407AE2 -:10D2E000082871D10AF0D1FC0020686100233C00BD -:10D2F000249000002B61A86866490130A86030893D -:10D300005C31888201F07AFD62495C310861226AF1 -:10D3100004981821007A01F033FEE16A4018039066 -:10D320005C48006A00280DD0002F0BD1594801231A -:10D330003C00609000005C3001681B0700223068F0 -:10D3400009F049FF002800D105270021A06B0AF051 -:10D35000CEFC0021206C0AF0E8FC4F4B03CE039A70 -:10D360005C33FCF788FD00204C4E0521B06320693A -:10D3700001F03C009C9000006FFB011C01D1F060AB -:10D380001CE00120F0608878454A01321070C878AE -:10D390005070474A1070306900280AD04A780879DE -:10D3A000053109F0DDFA3169F7F785F9F0680028F1 -:10D3B00004D03B4A3C00D89000000132107800288D -:10D3C00008D10020A861716A002903D0201C143004 -:10D3D000F7F774F9344A5C321069316A411800E099 -:10D3E00020E00A23D0680A2209F0FBFE002807D0BB -:10D3F0002D4A316A5C323C0014910000D068401A1A -:10D400001169401A7060294A5C32D0683062F06954 -:10D41000002804D0FAF700FD0120FAF7A1FCFAF782 -:10D4200081FC2748006803F007F90698002803D11B -:10D430001E4E0023B36016E03C00509100001C4ECD -:10D440000120B060069801684068B06519487165B0 -:10D450005430C088002809D0B169002906D001F0F5 -:10D46000DCFC011CE06AB269F7F72FF9002F15D137 -:10D4700012480169002908D101213C008C9100006B -:10D4800001612A68002A03D000210020F7F720F963 -:10D4900009490023CB622B616B6106F0B5F807B038 -:10D4A000F0BD6B680648002BF9D0021D111C381C1A -:10D4B000F7F70FF9F3E70000447D01003C00C89145 -:10D4C0000000F4680100F467010003080000F86040 -:10D4D0000100C467010008B5F8F72FFD009000AB0C -:10D4E000188800280CD005F050FF00AB5988188828 -:10D4F00005F06DF9FEF797F80320FBF70EF83C00F6 -:10D500000492000008BD0120FFF7B2FB002008F0E4 -:10D510008DFEF7E7F8B54F498C68206A00680578FA -:10D52000FCF768FA002812D02A07920F0121012A7D -:10D5300000D00021002903D02906090F0B2906D1AC -:10D540003C00409200002A21095D08189030007BC1 -:10D55000F9F70DFC414F3C3FB86B796BF7F7C0F81A -:10D56000A06C0026C660606B800804D0B8690130EA -:10D57000B86106F0DCF9394D28698005800F08D1C3 -:10D5800078693C007C920000042101307861606B76 -:10D590004008400008436063B86A002803D0606B0D -:10D5A000082108436063201C203000903968F7F799 -:10D5B0009AF80320000228602B498868A063C86895 -:10D5C000E06308793C00B8920000C006C00E251C3C -:10D5D000403528714879687123483C384662009884 -:10D5E000807A01F05EFD00210028214A01D01178E7 -:10D5F00003E09378DB0700D55178A971002804D0A7 -:10D600001B49143108683C00F4920000206400E0DB -:10D610006E80B86AC00702D5FF202871AE71E6613E -:10D62000B8680130B8607968884203D00B21852042 -:10D63000F7F7C4FF0D498868C06C8860FB6A002B4F -:10D640000CD00E4AD47B002B3C003093000002DD4E -:10D650007F2C05D201E0002C02D0D47BE318D373D9 -:10D66000FE62C968884203D105218520F7F7A9FF2A -:10D67000F8BD247E010000400700A0800700E8807C -:10D68000070040000700FEB5304C3C006C930000E2 -:10D69000A06B216BF7F733F82D493C318E68708B06 -:10D6A000062804D2E0690130E0610E203085284967 -:10D6B0003C310D68002D03D103218520F7F784FF4D -:10D6C000244845613562318DEF6804393C00A893E8 -:10D6D00000000C0401210291240C002101911D483D -:10D6E0003C30808AA04203D32C81EE6000240BE002 -:10D6F000002F04D103218520F7F769FF04E03D1CCA -:10D70000201A0404FF68240C0298002804D03C006E -:10D71000E493000012490120086100200290019862 -:10D7200001300190002CDDD10C480C4C3C300760DE -:10D7300001983065B564306A0068606260680130E5 -:10D740006060A1680131884203D00A218520F7F783 -:10D750003C002094000041FF04480068A062FEBD28 -:10D760000000E87D010000300700786E0100B0B5D0 -:10D77000051C01210F200AF0F8F8F2210F200AF011 -:10D78000F4F80C480C4C0068143C00280CD0E078ED -:10D7900001283C005C94000009D00122291C0F20C4 -:10D7A0000AF0ACF86078022806D0012003E0607827 -:10D7B000022801D000206070B0BD00009866010012 -:10D7C0000222002880B500D1032203490E200AF06E -:10D7D0009BF800203C009894000080BD000050C3DE -:10D7E0000000F8B50023002200282ED00689046826 -:10D7F000751E2D04B61AF6072D0CF60FB4460EE072 -:10D80000A75CA618023300977778A7540232120457 -:10D81000009F120C00293C00D4940000777001DDB9 -:10D820008B4215DAAA42EED3C068002810D00289D4 -:10D83000002AF9D06246002A0BD00268665D17788C -:10D8400002336755167001220029D2DD8B42D0DBEE -:10D85000F8BD0022CDE700003C0010950000B0B5F7 -:10D86000041C0D1C0120F8F75EFB0D490028C8615F -:10D8700014D062684260A27C0272A268C260E26850 -:10D880000261228A02750A1D0A621268002AFFD10B -:10D89000026048600020A86001203C004C95000018 -:10D8A000B0BD0120FAE70000A46E0100B0B5041C71 -:10D8B00040680D1C431C02D1211C094808E00020CF -:10D8C000F8F734FB064994390861002803D0211C7D -:10D8D00000F048FE00E00120A86001203C0088958F -:10D8E0000000B0BD0000386F010080B50121972015 -:10D8F000F7F785FE002080BD000038B50A1C143201 -:10D900000092131F051C083A0C1C16314068FEF7E4 -:10D910006CFE002801D0002000E0012069683C0076 -:10D92000C4950000A0606160012038BD10B50C1CDA -:10D93000017A00290FD0012909D0022903D1002141 -:10D9400000200AF073FC00202071012010BD416806 -:10D9500001200AF06BFC00F00DF9F4E780B50449F2 -:10D960003C000096000048680138486001D107F08B -:10D970006EFB002080BDAC790100B0B5051C0C1C0D -:10D9800000F04FFEA060686860600120B0BDB0B5D7 -:10D99000051C0C1C00F06FFEA06068686060012030 -:10D9A000B0BD3C003C960000081C00210022002372 -:10D9B0000EC008C001207047F8B50F1C041C207968 -:10D9C000202801D2202020716679002E02D12579ED -:10D9D00000220DE02579291C301CF7F74FF80029AB -:10D9E00001D1321C3C007896000004E0704380199D -:10D9F00005062D0E321CE079291C00F0F2F9207A80 -:10DA00002F49C007C00F08602E480078C00743D5D3 -:10DA1000A1792C4AC80748D42C4E16608B072B4896 -:10DA200008D5CC0801233C00B4960000A340036055 -:10DA3000490704D52849116001E0402101601368BD -:10DA4000264AB34210D1546801680C4354601468EC -:10DA50000C4001D0516100E0916154680C43546066 -:10DA600094682143916013E03C00F0960000547CE0 -:10DA700001680C435474147C0C4003D0147C0C4398 -:10DA8000147402E0147C8C431474547C0C4354745E -:10DA9000947C21439174B34205D100220168032094 -:10DAA000FFF78DF809E0006800213C002C9700008A -:10DAB0000206120E0320FFF785F801E00B48106004 -:10DAC000002038717D71F7F7E9FD0120F8BD0000F5 -:10DAD000CC5C0100040007005C5B0100B99B000006 -:10DAE000585B0100959B0000100007003C00689700 -:10DAF0000000559B0000B0B50D1C04300024FEF75B -:10DB0000D6FA01206C60B0BD0000F0B5077A43681A -:10DB1000041C0E480E1C00680125011C9BB006E089 -:10DB20004A689A4202D18F76002502E009683C00DB -:10DB3000A49700000029F6D1002D05D1217A0129F2 -:10DB400002D101A9F8F7A8F86068043621C61BB015 -:10DB50000120F0BDA46E010010B50C1C08F0AEFC55 -:10DB60006060012010BD000010B50C1C07F084FAA5 -:10DB70003C00E097000004F054FF002060600120AA -:10DB800010BD0020C043486001207047000010B560 -:10DB90000C1C0079FAF707F8002801D0002000E0FB -:10DBA00002206060012010BD00001CB5064C2068FA -:10DBB00000283C001C98000007D009F0C5FA01902D -:10DBC000206841686846F6F7D6FD1CBDAC790100B7 -:10DBD0000149086070470000AC7901000EB5064BA2 -:10DBE0001B68002B06D00290009101926846D9680C -:10DBF000F6F7C1FD3C00589800000EBD0000AC795E -:10DC000001001CB5041C07F04CFA064841680131BC -:10DC10004160009400210191006801686846F6F7B0 -:10DC2000ADFD1CBD0000AC79010080B5F8F7A3F88C -:10DC300080BD80B5021C3C00949800008021032028 -:10DC400000F05CF8011C034800224369F6F79BFDD5 -:10DC500080BD0000A46D0100F8B50C1C1349051C23 -:10DC60000868161C0130086000202061221C103258 -:10DC7000281D0021071C00923C00D098000003F0F2 -:10DC8000DEFE20712069002810D00104090C00205C -:10DC9000F7F779FE3060291D03C9A060E1603068A4 -:10DCA0000168009A381C03F0CAFE20710120F8BDFB -:10DCB00000001075010080B5021C3C000C990000AA -:10DCC0000821042009F04EFF032080BD10B5074A4B -:10DCD0000C1C516801315160011C1031C2680430C4 -:10DCE00003F0F0FE2071002010BD0000107501004F -:10DCF000044980B581610821021C03203C00489939 -:10DD0000000009F032FF032080BD95D80000F7B570 -:10DD1000071C161C0621002082B0F7F73AFE051CEE -:10DD200020480078062800D928812C680020A77098 -:10DD30000399E170311C03E00A8910180F1C3C00A4 -:10DD400084990000C9680029F9D16B4601AA211DF8 -:10DD500000F034F800AB187860711878002817D0FC -:10DD600011484068002808D019780020F7F714FE01 -:10DD7000011C381CF7F730FD0AE03868002802D192 -:10DD80003C00C09900003F600120B86100AB1978E9 -:10DD900038894018388100AB9888311C02382080BF -:10DDA000281CF7F71CFD281C05B0F0BD0000C85C5E -:10DDB000010001794279008889180239401A7047B8 -:10DDC00000003C00FC99000070B5084D2C78AD783F -:10DDD0002018061C002D03D070190138013DA843FE -:10DDE0001080801B18700C7070BD0000C85C0100B2 -:10DDF000B0B504680C4A218852780231914211D2A0 -:10DE0000551AF7F73C00389A0000C9FD016800294F -:10DE100002D10060012181610189491901812088B5 -:10DE200040192080607940196071B0BD0000C85C65 -:10DE3000010080B500220621F12009F0A2FE80BD7C -:10DE40000000031C02483C00749A000003704170FB -:10DE500082707047C85C0100B0B5081C0968151CC9 -:10DE60008C78F7F785FD0449A0000958002902D0F5 -:10DE7000281CF6F79EFCB0BD846D0100FEB5041CA5 -:10DE8000C07AA17AC607F60F3C00B09A0000321C97 -:10DE9000201D01F03CF86069254FC10737D5B869EE -:10DEA000002801D0F6F787FC2068056828888007DD -:10DEB00034D101AA02A9281C01F00BFC281C01F096 -:10DEC00012FC0078C0070AD460693C00EC9A00009C -:10DED000800726D4331C291CA27A20697D69F6F7B5 -:10DEE00072FC1EE000AB187A002803D0012806D08F -:10DEF000022816D1281C796AF6F761FC11E000AB04 -:10DF000018790E2801D00F280BD1281C3C00289B23 -:10DF10000000396AF6F756FC06E00007800F03D1CF -:10DF20002069F969F6F74EFC786B2121013078639E -:10DF3000221C802009F031FEFEBD287A01000B4929 -:10DF400018B50878C00711D50A4A101C20303C00CB -:10DF5000649B0000847900AB1C70C079587008780D -:10DF600040231843087005480078087000AB1888F3 -:10DF7000D08418BD0400070000100700E060010015 -:10DF800070470000054910B58879054B1A7C054C8F -:10DF90003C00A09B0000246862401A74887110BD88 -:10DFA00000002010070010000700585B0100044922 -:10DFB0000A6804480068024001D0886170474861DF -:10DFC000704710000700585B0100021C012000068A -:10DFD00008433C00DC9B000080B52A2109F0E6FDE7 -:10DFE00080BD000010B5041C002903D0812907D191 -:10DFF000812000E08020221C2C2109F0D7FD10BDDB -:10E0000002212C20F7F74CFB201CF7F7C3FC10BDB6 -:10E0100080B5B4B03C00189C0000012806D08228CE -:10E020001CD11AA807F035FC34B080BD812913D16A -:10E030000D480C4A816900685032814202D0D16A91 -:10E04000012902D01178022902D107F00AF9EBE781 -:10E050006946F7F75AFE3C00549C0000E7E70121AF -:10E0600000E002211820F7F721FBE0E7A46E010091 -:10E07000B0B5041C0068174D9AB0686308F03EFA0A -:10E0800020791449134A50392C3A02280AD1906851 -:10E090008002A861C868E8613C00909C00000220F2 -:10E0A000287207F0E4F81AB0B0BD031C0020002B62 -:10E0B0000BD152689202AA610A1C8968E961287230 -:10E0C00010686946F7F727FEEDE7A861012028727E -:10E0D0002870002006F07DFAE5E73C00CC9C0000AB -:10E0E000F46E0100704700007047000080B5012108 -:10E0F0000720F7F7E1FA80BD70470000F8B500246B -:10E10000194A0026D56811680435081C916002E0A0 -:10E11000011C4019086053688342F9D83C00089DEF -:10E12000000001341032032C0E60EED3F6F7F1FF3D -:10E1300010481049124C0860104900200122192390 -:10E140005B010C2543431B1945434A511F1C6D18A5 -:10E15000AB606B6000251E1C14369E60331C3C00B7 -:10E16000449D00000135272DF8DB013003289F6016 -:10E17000E8DBF8BD2057010014C80100B4CF01004E -:10E1800018D90100B8CF0100B0B5074C251CC03527 -:10E19000286B1E2100F0F2F9A26B201CDC30296BE9 -:10E1A0003C00809D000000F0B6F9B0BD0000C469DD -:10E1B00001000020102210B50A4905E00C2343435A -:10E1C0005C180C34CC5001300F28F7D30C23584383 -:10E1D0000950044841600160028200218160C160F1 -:10E1E00010BD3C00BC9D000084E2010044E301003E -:10E1F00010B5084CA06A002803D10748F9F7E8FEDB -:10E20000A0620448443000680121F9F795FC60627F -:10E2100010BD0000606C0100CD260100FFB50D1C93 -:10E22000041C1E1C3C00F89D000081B00A9F1C21AC -:10E23000F6F74DFB0398A061256025612681A68233 -:10E24000E76005B0F0BD70B50D1CA421041C0830BA -:10E25000F6F73DFB201C44300622291CF6F765FB2F -:10E2600018483C23411C3C00349E00006162417808 -:10E2700059430918897A062901D1A06202E0211CBC -:10E280004D31A16241783C235943081804300F49AD -:10E2900020620B88002B15D0AC20005D0B4A183291 -:10E2A00000028018B030E0603C00709E00008D6875 -:10E2B000002008E0E268C1005450E668820052196C -:10E2C00071184A6001309842F4DB70BD000068614B -:10E2D0000100587501001FB5041C6034617A031CED -:10E2E000806A084A0291019003923C00AC9E0000B3 -:10E2F000E279181C20300092447B827B5E20C15A58 -:10E3000018690430231C02F07FFE1FBD394E000047 -:10E31000B0B50B1C01886920C05C86B00E4A049120 -:10E32000039005920D4D596A9A6A2D683C00E89E4B -:10E3300000000124002D00D0041C0A48005D01915A -:10E3400002920090181C2030447B827B5E20C15AD0 -:10E3500018690430231C02F0A4FE06B0B0BD514F72 -:10E360000000186701000A61010001898A1C3C0055 -:10E37000249F000002810268023A0260080A090232 -:10E38000084310807047000070B5051C08780E1C0B -:10E39000FF2814D0717802310020F7F745FB041CE8 -:10E3A00002890068311CF6F7CFFA002D06D0281C30 -:10E3B0003C00609F0000F7F734FB211CF7F757FA89 -:10E3C00000E0251C281C70BD0000FFB50F1C1E1CA2 -:10E3D000041C981C0104090C002081B0F7F727FBEE -:10E3E000051C0068002C386003990170386846707D -:10E3F00006D03C009C9F0000201CF7F715FB291C51 -:10E40000F7F738FA00E02C1C201C05B0F0BD000026 -:10E4100070B51048046804600F4920200860A0050A -:10E420000E4E02D5706AF6F705FAE00102D5306E9D -:10E43000F6F700FA3C00D89F00000A480440002587 -:10E4400007E0E00703D5A8003058F6F7F6F90135E4 -:10E450006408002CF5D170BD0000004007000010DA -:10E46000070030740100FFFDFFFE80B5072180200A -:10E47000F7F749F980BD3C0014A00000F8B5144B33 -:10E4800082009C58CA060127391CD20E9140114ABD -:10E490001160114E4000851915E06060207BC100BD -:10E4A000891910310A780D239A430A70391C81406A -:10E4B00031730749000108313C0050A000004018AA -:10E4C000084A416842608068F6F7BEF9287B002858 -:10E4D000E6D1F8BD0000A473010000100700006041 -:10E4E0000700D175000003490120097A002900D1F5 -:10E4F000002070470000047A01003C008CA000005E -:10E5000003490120897A002900D1002070470000CA -:10E51000147A0100B0B50024FAF776FC002814D074 -:10E52000012408F07DFE0A4D0A4B00215A18A03242 -:10E530001278102A06D38A00D218926F3C00C8A025 -:10E540000000821AAA4200D2002401310329F0D32C -:10E55000201CB0BD00008B080000A46C0100014825 -:10E56000C068704700007869010070B50D1C041C7C -:10E57000161CFDF72EFE0020E0602661A5603C0021 -:10E5800004A1000070BD0000F8B5171C0E1C041C8F -:10E59000002801D0002E01D1F7F7F2F8A06807F0AB -:10E5A00049F9051C01D1F7F7EBF8291C6E60AF6043 -:10E5B000201CFDF7FDFDE068411CE160002803D14F -:10E5C0003C0040A100000548216905F02CF92068B5 -:10E5D000A84202D1381CF6F748F9F8BD0000C46023 -:10E5E00001000022013910B505E00C2353431C182B -:10E5F0000C34C45001328A42F7D300210C235A4311 -:10E6000081503C007CA1000010BD0000B0B5041C8E -:10E6100001D1F7F7BBF8201CFDF7DAFD011C856876 -:10E62000A06807F009F9E0680138E06003D1064806 -:10E63000216905F0E7F82168002903D08868496856 -:10E64000F6F711F93C00B8A10000281CB0BDC46069 -:10E650000100012100288CB500D100210E2009F015 -:10E6600032FA832000AB1880002004F00CF80190EF -:10E67000684603F07AF98CBD000080B508F0DFFD34 -:10E6800006490A8906493C00F4A10000096E411AB6 -:10E690000B0C5918891A0904090C401A80BD000096 -:10E6A00000900700A46C010070B5041C887E0D1C4E -:10E6B000202803D903211820F7F740F800262676F2 -:10E6C000A87E291C1B3160763C0030A20000201C73 -:10E6D0001D30AA7EF6F75FF96868291C6060A8689B -:10E6E0001331A060A87B06222073E87B6073287C2E -:10E6F000A073687CE073A8892082A87CE0762677E6 -:10E70000201C1230A676F6F746F93C006CA20000F9 -:10E710006068431C1DD0114D6D61286800281AD017 -:10E72000227B011C0B7B9A4201D3206014E00B1C5E -:10E73000096800290BD00E7BB24208D20B68002B6F -:10E74000F0D01E7BB242EDD323600C603C00A8A247 -:10E75000000001E021601C60002070BD26602C607C -:10E76000FAE7A46E0100134AB0B5516801240029EC -:10E770001ED0131DD1611362436804E0106200686B -:10E78000D061002814D0D06945689D42F6D13C0084 -:10E79000E4A20000106A814204D15160D06900688F -:10E7A000086002E0D16909680160D069FCF7CEFF1A -:10E7B000002800D00024201CB0BD0000A46E010081 -:10E7C000B0B5174D01242968002927D06D61296152 -:10E7D0003C0020A30000436804E0686100682861F1 -:10E7E00000281DD0286942689A42F6D1AA692B698F -:10E7F0009A4200D1A9616A69914203D129600068F7 -:10E80000086006E0006810602868002801D107F061 -:10E81000CCFE3C005CA300002869FCF79DFF0028AB -:10E8200002D0002400E00124201CB0BDA46E010031 -:10E83000B0B5051C0748446807E0211C4431281C7A -:10E8400000F0D6FC002802D16468002CF5D1201C11 -:10E85000B0BD00003C0098A300005875010070B5E1 -:10E860000D1C141C00280B4E08D0706E0623584354 -:10E870000204120C311C281C228007E0218806208B -:10E88000F6F7A7F970662288291C301CF6F795F870 -:10E89000012070BD00003C00D4A3000010790100ED -:10E8A00080B5032803D8044AC000115080BD01215F -:10E8B0002620F6F75BFF80BD7C790100B0B5051C12 -:10E8C000C0680189392939D30468A079882835D1ED -:10E8D000E0798E2832D1207A3C0010A40000012873 -:10E8E0002FD1607A03282CD1207B022801D0FE286A -:10E8F00027D1607B1D210840012822D1A07BC8219F -:10E90000084008281DD1A81DFBF7E1F9002818D000 -:10E910001920215C002914D101303C004CA40000D6 -:10E920003928F9DB688B04210843688303F0D6FE9D -:10E93000002809D1002300222620044909F092F979 -:10E940000348006801F084F9B0BD000050C3000026 -:10E950000C790100B0B5084CA36801333C0088A4D1 -:10E960000000A3600C1C09D02568002D03D0237A79 -:10E970006168F5F7A3FF201CF7F7A9F9B0BD9479FA -:10E98000010070B5041CC06801890568082953D3CB -:10E990000622281C5549F5F79EFF002837D13C0078 -:10E9A000C4A40000E988524E043E812924D1E568C0 -:10E9B0002968087A4A7A000280180004000C420B89 -:10E9C0000005000DE27520834B8900204200B25AF9 -:10E9D0009A4206D128890C38020A00021043488165 -:10E9E0003C0000A5000002E001300228F1D3E068FD -:10E9F00001890A390181E06801680A311CE00022BE -:10EA000000204300F35A8B4201D1012202E0013081 -:10EA10000228F6D3002A11D107E036490622063132 -:10EA2000281C3C003CA50000F5F75EFF002808D13B -:10EA3000E068018906390181E068016806310160FA -:10EA400010E0E068FFF7E2FC0CE002310181E068D1 -:10EA5000016802390160E06800890238020A000298 -:10EA6000104308803C0078A50000E0680325028977 -:10EA70000168244E022A10D90988082905D0C1232B -:10EA8000DB00994203D1012502E0002500E00225C8 -:10EA9000E9007158002900D10225F7F704F8E900D0 -:10EAA0008919898888423C00B4A5000000D9032553 -:10EAB000A11D201CFDF734FC002800D10325022DE8 -:10EAC00005D0032D07D1E068F6F7E2FF70BD201CEA -:10EAD000FDF71CFD70BDE068018902390181E06825 -:10EAE000016802310160E8003C00F0A500003158E7 -:10EAF000201CF5F7F1FE0028EFD1E0680189023112 -:10EB00000181E068016802390160E3E700006A46BC -:10EB100001007C79010070B50E1C041C151CF7F770 -:10EB20008CFB00282AD01B4908683C002CA600005A -:10EB300001300860002E0AD0012E0BD0022E0FD11A -:10EB4000201C04F0CDF8201CFFF7D6FE0CE00821B5 -:10EB5000E06802E0C121E068C90004F035F903E093 -:10EB600002212620F6F720FEE27DE16A3C0068A63D -:10EB70000000281CFCF795FB206300202062A062A7 -:10EB8000201C00F06CFE70BDE068F6F78AFF002DD7 -:10EB9000F9D0E37D00220120E16AF5F7A7FE70BD00 -:10EBA00000009479010080B5012804D105483C009B -:10EBB000A4A60000006801F009F980BD0321262009 -:10EBC000F6F7F8FD80BD00000C790100F8B5061CD1 -:10EBD00080790024C0072DD5F0680068417A11299A -:10EBE00028D1C1880A0A09021143C90422D1017837 -:10EBF0003C00E0A60000114F0907890E0818418863 -:10EC00000A0A090211430D042D0C432D396801D164 -:10EC1000CA070ED4442D06D1C90704D5243000F00C -:10EC200022FB002805D00648854206D138688007B7 -:10EC300003D53C001CA700000124F068F6F73AFF5A -:10EC4000201CF8BD7C5A01006C07000080B500282C -:10EC500007D00021262008F07BFF0248006801F061 -:10EC6000BBF880BD0C79010010B5041C094A081CD2 -:10EC7000516801313C0058A7000051600021216219 -:10EC8000A162E27DE16AFCF718FB2063201CF7F724 -:10EC9000E6FA201C00F0EFFD10BD947901000CB5E0 -:10ECA000021C081C0021019100926A4601A900F093 -:10ECB00002F80CBD00003C0094A7000070B513687A -:10ECC000002B1ED000260B68002B02D113681B6896 -:10ECD0000B6013681C681B89E51808E05C781C1938 -:10ECE00002340C601C78844201D1181C70BD0B6882 -:10ECF000AB42F3D31368DB683C00D0A7000013607D -:10ED00000E601368002BE1D1002070BD000070B5CB -:10ED1000031C20D018681E89051C16E00478DD2C21 -:10ED200010D18478002C0DD1C478502C0AD10479EC -:10ED3000F22C07D144798C4204D13C000CA800008D -:10ED400002290CD18479944209D0447820180230E9 -:10ED5000441BB442E5DBDB68002BDED1002070BD34 -:10ED6000044980B50A780A20002A00D0486A00F0D9 -:10ED7000D1F880BD1C750100B0B5174C3C0048A807 -:10ED800000002068002829D0164DE869002825D108 -:10ED900001F03FFA002821D1FFF741FC00281DD1E6 -:10EDA0002068A969401808F0D6F9002816D002F0AA -:10EDB00006FD2168401808F0CEF900280ED03C006E -:10EDC00084A800000120E86100222521802008F0AD -:10EDD0008FFF0648296A04F083FD0121286A00F0AC -:10EDE00089FFB0BDE85901001C75010034630100C2 -:10EDF00070B5051C0024FAF70BFF184E716A401815 -:10EE00003C00C0A8000000F08EF800280BD104F0F0 -:10EE1000FEFB0021252008F0B0FE0322291C281C3F -:10EE200000F0AFF818E0706A441E00F07CF800288B -:10EE300012D10C48316A04F056FD0121306A00F00D -:10EE40005CFF3C00FCA800000020FAF70DFE06F075 -:10EE500003F8002300222520054908F03FFF201C6D -:10EE600007F0FCFA70BD00001C750100346301005E -:10EE70001027000080B5012807D080280DD100227E -:10EE8000002108483C0038A90000F8F79AFE80BD30 -:10EE9000012902D106490020C86104F0BEFB80BDF3 -:10EEA00005212520F6F7A7FC80BD61A900001C758F -:10EEB00001000021002880B501D1034841680122EA -:10EEC000252008F02CFE3C0074A9000080BD000045 -:10EED000E85901000249C8680138486270470000DB -:10EEE0001C75010038B5031C081C191C114B06D0F9 -:10EEF000012111800A1C191CF5F7AAFD17E00D4D20 -:10EF0000011C2C781288181C3C00B0A90000F5F7F1 -:10EF1000A2FD287884420DD000236B61002803D025 -:10EF2000002007F0A4FA05E0002200210020009252 -:10EF3000F8F723FC012038BD00001C75010070B5F6 -:10EF4000041C012608F0E1F9051C3C00ECA90000B6 -:10EF50000020FAF78BFD444302F040FC02F03EFC37 -:10EF6000011C231C0022281C08F07CFA002813D165 -:10EF70000A48231C00228169281C08F073FA002823 -:10EF80000AD1F8F719FC011C231C00223C0028AA16 -:10EF90000000281C08F069FA002800D10026301C67 -:10EFA00070BD1C75010070B50D1C041C161C07F00B -:10EFB00076F900280DD0FAF752FE002809D0FF306C -:10EFC00001304368002B04D0221C291C301C3C005B -:10EFD00064AA0000F5F7BBFC70BD000080B50121FC -:10EFE0001D2008F0DFFD074A0748116901605169DB -:10EFF00041600649496881600021C16003F074FCEA -:10F0000080BD00002861010048750100905C01008E -:10F010003C00A0AA000070B5041C406B002835D04D -:10F020001D4D00262878002824D04120005D0028AE -:10F0300003D108F076F9A8611BE0696901316961C3 -:10F04000A868002808D0814206D12069011C10312F -:10F0500004303C00DCAA00008222FFF7ADFF6868A4 -:10F0600000280AD06969814207D12069011C10314A -:10F0700004300222FFF7A0FF6E6168780521084086 -:10F0800008D0074800780E2803D36034E079FBF7F6 -:10F09000CFFF70BD3C0018AB00000348066070BD98 -:10F0A00000001C75010010670100D47E0100800281 -:10F0B0007047142330B5094D4B435B195B68082436 -:10F0C000002B00D1022438235A43054B8900D21863 -:10F0D000515A026809193C0054AB0000511A0160F2 -:10F0E00030BD0000744001008C410100F8B5071CE0 -:10F0F0002C48141C2C4A484386468018800D8446B0 -:10F100002B482A4A06261D1C48434A430E2F40D24C -:10F1100001A3DB5D5B009F443C0090AB0000060850 -:10F120000A0F14181D202724272B2F31C8001FE099 -:10F1300088001DE0214970464018000D18E01F4A64 -:10F140008018800D401821E01E481018000D1DE0A9 -:10F150001D4970464018400D0AE03C00CCAB000051 -:10F160001B49401801E01B481018400D11E01A49D6 -:10F17000401805E060462080002016E0174810186F -:10F18000800D06E0164902E016484843164940182B -:10F19000C00D03308008800020802E803C0008AC29 -:10F1A0000000F8BDFF21FF20F6F749FB002020807A -:10F1B0002880F6E70000D1451700FFFF3F00E33845 -:10F1C0000E0055551500FFFF0F00A9AA2A01701C5B -:10F1D0003700FFFF1F00CBCC4C00701C47003C00E9 -:10F1E00044AC0000A9AA7A00701C6700A9AABA0062 -:10F1F00084F61200EC25B4000449002801D009224D -:10F2000000E014224A80486070470000A4690100B1 -:10F2100080B50622F5F740FC80BD0000BCB5151C8A -:10F220003C0080AC0000041C04310904090C01AA54 -:10F230006B46FFF76AFF3820064968434018A10073 -:10F24000405A00AB99884018198840180004000CF7 -:10F25000BCBD8C410100BCB5041C151C01AA6B4649 -:10F26000FFF73C00BCAC000053FF38200549684361 -:10F270004018A100405A00AB998840180004000CC7 -:10F28000BCBD00008C41010080B500280FD00029D2 -:10F290000DD002780B789A4209D1FF2A05D0427826 -:10F2A0000232F5F73C00F8AC000081FB002801D1E8 -:10F2B000012080BD002080BD000080B506220449E9 -:10F2C000F5F775FB002801D1012080BD002080BD2D -:10F2D00000005E400100011C49780120002900D097 -:10F2E0000020704700003C0034AD000080B50622CD -:10F2F000F5F760FB002801D1012080BD002080BD12 -:10F3000080B5FFF7C7FF80BD80B506220449F5F739 -:10F3100051FB002801D1012080BD002080BD0000EC -:10F3200012610100011C80203C0070AD000081438F -:10F330008A080E201C2A10B506D2034C5200A35C8A -:10F340008B4201D11019407810BDFC4101001423FB -:10F350000249584340184068704774400100202219 -:10F36000011C80B50248F5F752FD3C00ACAD000031 -:10F3700080BD0000486101000806000E022801D18E -:10F38000002070470120704700290CD00749096808 -:10F39000002908D01423064958434018C0680028A3 -:10F3A00001D0012070470020704700003C00E8AD0C -:10F3B0000000AC6901007440010010B5041C062275 -:10F3C000011C0448F5F77DFB0622211C0348F5F7D4 -:10F3D00078FB10BD00001261010040800700002989 -:10F3E00001D10020704738235A43074BD2183C0004 -:10F3F00024AE00008300D25A14235843054BC01892 -:10F4000040881018081A0A380004000C70470000E1 -:10F410008C41010074400100F8B5071C081C161C43 -:10F420001C1C191C00F05AF8051C1435221C311C38 -:10F430003C0060AE0000381CFFF70BFF28180004EA -:10F44000000CF8BD000000B500F04BF80A300004D5 -:10F45000000C00BD0000F8B5071C081C161C1C1C85 -:10F46000191C00F03EF845001E35221C311C381CCA -:10F47000FFF73C009CAE0000EFFE28180004000CD3 -:10F48000F8BD0000FFB50F1C81B00AA9141C1E1C9A -:10F4900003C900F029F8051C1E35211C301C00F0A2 -:10F4A00023F82D18221C391C0198FFF7D5FE2818C7 -:10F4B0000004000C3C00D8AE000005B0F0BD0A49C5 -:10F4C00080B50988092904D0142907D101018000D9 -:10F4D00000E0C10008180004000C80BDFF21FF20DF -:10F4E000F6F7D1F9002080BD0000A669010038239D -:10F4F0005943064A14233C0014AF000089188200C7 -:10F50000895A054A58438018408808180004000C9E -:10F51000704700008C41010074400100024803491B -:10F5200000684000085A7047A86901005440010073 -:10F530000A20704710B5041C3C0050AF0000FDF7D6 -:10F5400062FF201C10BDB0B5041CC0680568A01D7A -:10F55000FFF7F5FE002818D0211C1431201C08F0FC -:10F56000E2FD002811D0298809482022818269887B -:10F570000183A98806354183C5613C008CAF00003A -:10F580003021095D1154616B41620120F7F728F8C1 -:10F59000201CB0BD707C010070B5041CC068211C2B -:10F5A00014310568201C08F0C1FD002808D0054E64 -:10F5B000F06802F0CFFD2888F08203203C00C8AF3D -:10F5C0000000F7F710F8201C70BD707C01003EB5FC -:10F5D000041CC0680568A01DFFF7B7FE002821D0F5 -:10F5E000211C1431201C02AA08F077FD002819D034 -:10F5F00002984B21095C002910D0012914D03C004D -:10F6000004B0000002290CD129880D2000AB18801D -:10F61000201C03F051F80190684602F05DFAF6F7FD -:10F62000B5F80021029806F09FFE201C3EBD07F0B1 -:10F6300029F8029800218069C207D20F0420F6F74A -:10F640003C0040B000007FFFEEE710B5041CFDF762 -:10F65000E6FE201C10BD3EB5051C00F040FE002853 -:10F6600015D1281C1430FAF7CEFB00280FD0052145 -:10F670002869FFF786FB041C09D00522211C684677 -:10F68000F5F73C007CB000003DFA05340294684672 -:10F6900003F01AFB2A1C0D218F2008F08FFB00209D -:10F6A0003EBD000010B5041CFAF798F8201C05F0C8 -:10F6B000E5F8201C10BD0000B0B5041C0069002155 -:10F6C00094B0FFF73C00B8B0000061FB6946FBF75F -:10F6D00026F800281ED00098FAF729FA011C01A884 -:10F6E00002F0D7F90098FAF7D2F90490052009AD95 -:10F6F000687202A8211C06220230F5F706FA0120E2 -:10F700000890216A0A903C00F4B00000282009917A -:10F71000005D287201A800F069F8201C14B0B0BD8B -:10F72000FFB5161C1F1C81B00A9D4C20F6F790FBFC -:10F73000041C143006220299F5F7EAF9201C06226F -:10F740000199F5F7E5F928203C0030B100000021CF -:10F750000655E1602762002D01D08E2000E08D204B -:10F76000221C0D2108F033FB05B0F0BD0000B0B540 -:10F77000051C4C20F6F76FFB041C4C22291CF5F7E6 -:10F7800026FA2920405D0D282CD23C006CB10000E7 -:10F7900001A31B5C5B009F44281A281E060A282828 -:10F7A0000E2822121600221C0D218C201AE0221C89 -:10F7B0000D21832016E0221C0D21842012E0221C42 -:10F7C0000D2185200EE0221C0D2186203C00A8B1D1 -:10F7D00000000AE0221C0D21872006E0221C0D21DA -:10F7E000892002E0221C0D218B2008F0F6FAB0BD22 -:10F7F000E868F6F7E6F9201CF6F711FBB0BDFEB598 -:10F80000051C9020F6F72DFB041C9021F5F73C0019 -:10F81000E4B100005BF9374E0127F069042803D9F1 -:10F82000706B013070634DE03348B16B04F0D0F879 -:10F8300001202062A87E211C803102910870221CC8 -:10F840006032019200202F1C20379072787A2B1C96 -:10F850003C0020B200001433D072E868AA1DA060FA -:10F86000E86B48604420405D0872291C201C05F0AC -:10F87000AAFC686A00280AD1019A201C937A02998E -:10F88000221C703258300978FAF7DBF906E03A7A30 -:10F89000231C3C005CB20000E869296A7033FDF764 -:10F8A0008DF93020405D184907280BD15820005DA4 -:10F8B000C007C0170130E06100202061201CF7F76D -:10F8C0003FFF18E00122201C05F0ACFF071C12D0FE -:10F8D00003F006FF3C0098B20000F36D002B06D049 -:10F8E00060682030827B616B381CF5F799F8E86816 -:10F8F000F6F773F9201CF6F79EFAFEBDF0690130A9 -:10F90000F061FAE70000C4690100346301000531C9 -:10F91000000070B5061C3C00D4B200000D1C0904A8 -:10F92000090C0020F6F77CF9041C2A1C311C006825 -:10F93000F5F706F9201C70BD4088704703781B0757 -:10F940009B0F0B70007800091070704704307047EF -:10F9500004307047D42101703C0010B30000002136 -:10F96000417070470000C421017000214170704750 -:10F970000000B4210170002141707047000001496E -:10F98000486570470000C469010001490865704777 -:10F990000000C4690100014988653C004CB30000C7 -:10F9A00070470000C4690100F8B55F4F051CB868D6 -:10F9B0000130B86007F024FD38619020F6F766FA50 -:10F9C000041C9021F5F794F8286B271C6063688B62 -:10F9D0008037261CC007C00F2062688B3C0088B3AC -:10F9E0000000603602214007C00F2063688B80074B -:10F9F000C00FF860287F3870B172002808D1F9F77D -:10FA0000C8FF002802D00120606201E00120A0624E -:10FA1000F868002803D00021022006F0CCFF3C004B -:10FA2000C4B300002B1C1033AA1D291C201C05F098 -:10FA3000DFFBA86A00280CD13978022907D0221CE4 -:10FA40007032201C5830B37AFAF710F908E001261A -:10FA50005EE0AA7D231C286A696A7033FDF7C0F84E -:10FA60003C0000B40000E96800200989002900D1A9 -:10FA70000420F0723878012814D10027009000206B -:10FA800006E02969012903D1A969012789071AD547 -:10FA900006F079FC0028F4D1012F14D10098012838 -:10FAA00011D13C003CB4000008E0201C583006F0A6 -:10FAB000E1FC00280AD08069800707D5F07A082188 -:10FAC0000843F0720120E062E87D3073E868A060CE -:10FAD000E06A002812D01A4FF86B00280ED0307B55 -:10FAE000F5F7DEFE3C0078B40000002809D0211CA8 -:10FAF000381C4030FCF755FC1448B96B03F089FF03 -:10FB0000F8BD104F1248B96B03F083FF0022201C90 -:10FB1000104905F0A2FE061C03D1386A0130386294 -:10FB2000EEE7201CF6F73C00B4B400009FF9E8684B -:10FB3000F6F76EF803F0F2FD0448836D002BE2D077 -:10FB40000022301C296BF4F786FFDCE7C469010052 -:10FB5000C4600100346301001130000010B50A20B8 -:10FB600007F0FEFC07F05EFC3C00F0B400000B491F -:10FB700044180CE0201C07F090FB002807D0F7F792 -:10FB800034F9002803D012218620F5F7CAFEF7F7D2 -:10FB90002CF90028EED101F080FD10BD0000409C42 -:10FBA000000010B50C1C011C174A3C002CB50000CD -:10FBB0000129506904D080291DD0812921D11CE060 -:10FBC0009178012915D102219170141C011C104853 -:10FBD00003F028FF0121606900F02EF9606901F04F -:10FBE0005FFC2070A088A16900230A4A3C0068B528 -:10FBF000000007F07EFC10BD222106E001F01DFC94 -:10FC0000201C00F04AF810BD1C212020F5F78FFEC3 -:10FC100010BDB4790100346301003D2E000070B5C1 -:10FC20001C4CA078002832D0052830D060693C00F8 -:10FC3000A4B5000000F0EAF8184EB579A0780128C4 -:10FC40000BD002280ED0032810D0042817D1421F51 -:10FC50008021202008F008F80EE00021202008F084 -:10FC600031F80CE0A08807F01DFC05E0207800F0DA -:10FC70003C00E0B5000039FA002000F0C4FD6069E6 -:10FC800001F0E1FB0520A070B571606900F061F939 -:10FC900000222021812008F0D6F870BD0000B47940 -:10FCA000010020100700B0B50D4D041CA8780028F5 -:10FCB00014D03C001CB60000686900F00BF90A483B -:10FCC000696903F0A7FEA88807F09EFB002C02D00C -:10FCD000687800F079FF0020A870A968201CF4F76C -:10FCE000CAFEB0BDB479010034630100064B80B593 -:10FCF000997803293C0058B6000006D10421997078 -:10FD00002021021C802008F0A4F880BD0000B479F6 -:10FD1000010010B50C4CA17803290FD11030FAF76F -:10FD2000DEF8002809D0207800F0E5F9002000F086 -:10FD300070FD002105483C0094B60000FCF79CFAD9 -:10FD400010BD1B212020F5F701FE10BDB479010084 -:10FD500051B60000094980B58978032909D100F01E -:10FD6000CDF9002000F058FD01210548FCF784FA88 -:10FD700080BD17212020F5F73C00D0B60000E9FD3A -:10FD800080BDB479010051B6000070B5104C1D1C47 -:10FD9000A378061C0498002B18D10123A3702261BC -:10FDA000E6606170A060A561002007F0ACFAA08059 -:10FDB000301CF7F73CFBE08007F03C000CB700007C -:10FDC0004FFBC721C900281A411A0022202007F042 -:10FDD00057FF70BDB4790100B0B5041C0D1C00F0D4 -:10FDE00009F8201C00F024F8002D01D0FFF7D4FE04 -:10FDF000B0BD0000B0B50C4C051CA0683C0048B775 -:10FE0000000000280FD10A48017E022211406160E3 -:10FE1000017E11430176072003F049FC206003F0C6 -:10FE200098FF03F0EEFFA0682843A060B0BD407CBF -:10FE300001000C8007000A4938B50A1C20323C003A -:10FE400084B70000947900AB1C70D279074C5A70CB -:10FE5000E268002A02D1064D01236B701043E06076 -:10FE600000AB1888C88438BD00100700407C010032 -:10FE700000500700B0B5051C002901D000F028F89B -:10FE80003C00C0B70000064C60782169084303D1EC -:10FE900001210E2006F0C5FD206928432061B0BD78 -:10FEA000000018630100B0B50A4C051C226900204F -:10FEB000002A0CD1002900D004E06078002802D18B -:10FEC00004F03C00FCB7000069FB6070281C06F0E1 -:10FED000EFFC0120B0BD00001863010010B5084C14 -:10FEE000607800280AD006F0E3FC002060702069EA -:10FEF000002803D001210E2006F096FD10BD000061 -:10FF0000186301003C0038B80000094980B50B694E -:10FF1000834204D14A78002A01D1012200E0002264 -:10FF200083430B61002A03D000210E2006F07FFDE1 -:10FF300080BD1863010080B50120F6F756FE80BD34 -:10FF4000000010B5041C3C0074B8000000F004F878 -:10FF5000201C00F01FF810BDB0B50C4D041CA868A3 -:10FF6000A0420FD10720296808F08CFB68680222A4 -:10FF700007490028087E01D0104300E0904308762E -:10FF800004F0C4F8A868A0433C00B0B80000A86022 -:10FF9000B0BD407C01000C8007000A4938B50A1C3E -:10FFA0002032947900AB1C70D279074C5A70E26809 -:10FFB000824202D1064D00236B708243E26000ABA7 -:10FFC0001888C88438BD001007003C00ECB8000059 -:10FFD000407C010000500700B0B5051C0A4C002110 -:10FFE0006069FFF711FF042001F046F901F088FB7A -:10FFF00000220421042001F08BF8281C01F04AFAA9 -:02000004800179 -:100000006069FFF7A7FFB0BD407C01003C0028B944 -:10001000000080B501F077FA80BDB0B50D4D01212B -:100020002869FFF7F4FEFFF72AFE00F02CFB00F032 -:1000300084FA002400220421201C01F06CF8013411 -:100040002406240E042CF5D32869FFF786FF3C0014 -:1000500064B90000B0BD0000407C0100F8B5051C8B -:100060000E1C074C171C01212069FFF7D3FE3A1C18 -:10007000311C281C01F052F82069FFF771FFF8BD10 -:10008000407C0100FFB589B0061C16981D1C002895 -:100090003C00A0B9000001D02948149028680088CD -:1000A0000006800E202801D0142817D10AAA18248F -:1000B000182105CAFFF777F9071C281C0189A142FE -:1000C00002DD006801190BE0C068641A0028F5D150 -:1000D0000F213C00DCB900008620F5F761FC00210F -:1000E00001E00021002718480890807907900C2033 -:1000F000164A704380180479049112991598149A3D -:1001000001910390059700950AAB0292211C301CC7 -:100110000CCBF7F73C0018BA000003F90125B540F5 -:100120000C4E083E3078284006D0201C00F0C9FD57 -:100130003078A843307003E0201C139900F043FF8F -:1001400007A903C988710DB0F0BD952400002010E7 -:100150000700747A01003C0054BA0000B0B5041CDA -:100160000C230949584340180079051C00F092FE01 -:10017000281CF7F7C7F80120034AA040083A117875 -:1001800081431170B0BD0000747A010010B5054CB8 -:100190002078002803D11A213C0090BA0000862064 -:1001A000F5F707FC207810BD000018630100014836 -:1001B0004078704700002C63010080B5F6F7D1FE4F -:1001C00000F01BF980BDFEB50168051C0C680E1C13 -:1001D0002178880771D16869C2073C00CCBA000059 -:1001E0006ED580076DD5E87AC20708070909029124 -:1001F0004549800FD20F00284F6805D0012809D04B -:10020000022821D003285BD1FF23201CA97AF4F710 -:1002100074FC55E002980B280AD00C283C0008BB5F -:1002200000000FD00D284ED1394FF868F4F761FC6B -:100230000020C0435AE0354FA97ABB68201CF4F770 -:100240005BFC40E0324F3869F4F753FC3BE000219F -:10025000019102990020FF23090701D401203C00ED -:1002600044BB000013E03189192901D3267E07E041 -:10027000152904D31826711A49190E7B00E00026AF -:10028000B10602D4012073075B0F01210191002800 -:1002900003D0A97A201CF4F736FC0199012915D165 -:1002A0003C0080BB0000F006C60F20881B4FE48A8C -:1002B000F96B0005C00F00291AD04B1C18D0002E76 -:1002C0000AD0002808D03888844213D002980C281D -:1002D00001E01DE012E00DD0081C01F076F90028C5 -:1002E00003D13C00BCBB000000F0A6FAF4F70AFC06 -:1002F0000020C043F863002E0DD03C800020F8633E -:1003000009E020880006800E202804D1044F201C1C -:10031000B96AF4F7F8FB291C0248FBF7EFFFFEBDB2 -:10032000287A01003C00F8BB0000A59A00000348B1 -:1003300080B50078002100F0FCFB80BD0000186350 -:100340000100044B054900281A6800D0011C101C4C -:10035000196070470000D4790100957500000548C8 -:1003600080B5007F24233C0034BC0000044958437E -:100370004018C069F4F7CCFB80BD0000D4790100BF -:1003800094460100021C064880B581628260007FAD -:1003900024230449584340188069F4F7B9FB80BD11 -:1003A000D4790100944601003C0070BC000080B587 -:1003B000002000F03CFB002000F06DFA00F065FA30 -:1003C0000449C86A0130C862081F008807F0C1F8F4 -:1003D00080BDD4790100064880B500210177C16A4B -:1003E0000131C1620438008807F03C00ACBC000059 -:1003F000B3F803F0D1F980BDD479010080B505F0E0 -:10040000E9FA80BD80B5002803D1012004F022FA6A -:1004100080BD012003F0E6FB80BD00000349012000 -:100420004978002900D00020704700003C00E8BC5B -:1004300000002C63010070B5134D2878002820D1EE -:1004400001212E1C7068FFF712FD0021072006F025 -:100450002AFB0D480024047104F0EDF806F0D5F9EC -:10046000012028700A4804604460F6F74CFD3C0007 -:1004700024BD0000F7F75EF8FFF7A2FF00F0A8FD2B -:100480000548716803F020FB012070BD2C6301005A -:100490005000070080000700C4600100B0B51E4C8A -:1004A0002078012835D1251C69681C4803F020FB01 -:1004B0003C0060BD000004F0F0F81A4801684908EB -:1004C00049000160016801221143016000F02BFE28 -:1004D00000F01BFC06F099F8F6F729FEF6F72DFC64 -:1004E00000202070FFF783FF00F08BFD0F4881781C -:1004F00008223C009CBD000091438170817811432B -:1005000081700C49102008716868FFF75FFDF7F7EC -:1005100039F8F6F74DFD0121072006F0CDFA01204C -:10052000B0BD00002C630100C4600100F0000700B2 -:10053000000007003C00D8BD000050000700034940 -:100540000120897A012900D0002070470000147A28 -:100550000100B0B5154D041C287A002820D1F9F708 -:1005600000FC02281CD101202872E868002810D065 -:100570002068296808603C0014BE000069680D48C6 -:1005800003F0C2FA01216868FFF7C8FC00222420AA -:10059000616807F0CFFBB0BD002028722168012000 -:1005A000F4F7CFFAB0BD00202168F4F7CAFAB0BD65 -:1005B000047A0100346301003C0050BE000004488E -:1005C00080B5007A012802D1002002F0F0FE80BD43 -:1005D0000000047A010080B5012807D0802809D1E5 -:1005E0000748007A002804D0012000E0002002F033 -:1005F000DEFE80BD0E212420F5F73C008CBE0000FD -:100600000BFA80BD047A0100F8B53A4E051CB07AA9 -:10061000002869D1F9F7AEFB022865D13648006899 -:10062000002861D03548716803F074FA01217068C0 -:10063000FFF77AFC6C20F5F7B9FC041C3C00C8BE3F -:1006400000006C21F4F7E7FA30682C220460296876 -:1006500081606968C160002111548162A968002924 -:1006600002D0E968016105E006F05DFF69684018A5 -:10067000316808617068FFF714FD692108553C0076 -:1006800004BF00000020F9F709FB01273B1C061CF2 -:10069000221C24320021F9F779FB1C480321008831 -:1006A00089030843211C40310091488318481021D8 -:1006B00060601848A060A76367630020F5F74CFBF3 -:1006C0003C0040BF0000E06002890099CA830768CF -:1006D000311C381D2761FEF78EFE381C0A300F4989 -:1006E000FEF789FEA4203880002004F0DEFB002203 -:1006F0001F20696807F02DFBF8BDFFE7002029687F -:10070000F4F73C007CBF00002EFAF8E7147A0100F1 -:10071000805A010034630100FA60010099EC000086 -:1007200015ED000012610100064880B5817A0029AC -:1007300007D0006804222030017B1143017302F0CE -:100740006BFD80BD3C00B8BF0000147A010010B5FD -:10075000044CA07A012803D106F0F1FE21688861DB -:1007600010BD147A0100031C081C1F4970B50A68EB -:10077000012B1CD0802B05D0832B30D1887A002808 -:1007800014D029E053693C00F4BF0000002B0ED0C8 -:100790009469D5692E1B0C695D1B361BB610A41914 -:1007A0000C61CC682D1BAD106419CC60936102F014 -:1007B00081FD70BD022812D1906A0C1C0028F8D06F -:1007C00007F00EFAA07A01283C0030C00000F3D1F7 -:1007D0002068816A0029EFD12030017B0822114373 -:1007E000017370BD02F021FD70BD0E211F20F5F7D1 -:1007F00028F970BD0000147A010002490C3103C9C8 -:10080000401870470000147A01003C006CC00000E2 -:10081000054880B5006804222030017B1143017334 -:1008200007F0E4F980BD0000147A010070B5164CA1 -:100830000E1CA17A00291CD02168086107F032FA49 -:10084000002817D020680025056200223C00A8C0BF -:10085000000083211F2007F094FA6068FFF703FC73 -:10086000216804222031087B2B1C90430873311C23 -:1008700000221F2007F061FB70BD20680822203095 -:10088000017B1143017302F0D6FC70BD00003C00F7 -:10089000E4C00000147A010080B500F077FC00F09D -:1008A0006FFC00F029FF00F05DFA00F0C5F800F0E1 -:1008B00085FF80BD80B5FAF785FA80BD0148C06824 -:1008C00070470000287A01000349002800D0011C6D -:1008D0003C0020C100000248C160704700008175E3 -:1008E0000000287A010001480249C86070478175FC -:1008F0000000287A01000149886170470000287AC9 -:1009000001000149002088617047287A01000349ED -:1009100000283C005CC1000000D0011C0248C161FD -:100920007047000089750000287A010003490028FB -:1009300000D0011C02488162704700008D750000E4 -:10094000287A01000349002800D0011C02480162F6 -:10095000704700003C0098C1000091750000287AA3 -:1009600001000349002800D0011C024801617047C2 -:10097000000099750000287A0100014802490861C9 -:10098000704781750000287A0100021C081C802A2B -:1009900080B502D100F03C00D4C1000007F880BD52 -:1009A0001E212120F5F762F880BD0000B0B5104D82 -:1009B000041CA86B0130A863696B091A281C006B22 -:1009C0000C2903D90021FFF791FA03E0082901D18E -:1009D000FFF732FB201C00F03C0010C200004DF974 -:1009E0006069400701D503F00CFC201CE96AF4F7AC -:1009F000DBF8B0BD0000287A01000349002800D0D0 -:100A0000011C0248416270470000B5750000287A59 -:100A1000010003490120096C00293C004CC2000080 -:100A200000D1002070470000287A010010B5074C63 -:100A3000E16B002901D1E06304E0814202D0002093 -:100A4000C043F8E706F09CFD206410BD287A010041 -:100A50000148006C70470000287A01003C0088C201 -:100A60000000054980B5002048638863FF210931F3 -:100A700015221020F6F7FBF980BD287A0100034902 -:100A8000002800D0011C0248816070470000C17539 -:100A90000000287A01000349002800D0011C3C0016 -:100AA000C4C200000248C16270470000C575000062 -:100AB000287A0100044B054900285A6800D0011C1F -:100AC000101C596070470000287A0100C9750000A9 -:100AD0000349002800D0011C024841617047000012 -:100AE0003C0000C30000CD750000287A01000F4BC8 -:100AF00010B5D968002919D00E4C0021CA0012196E -:100B0000403AD26B824202DA01310329F6D3481C03 -:100B10001A780006000E904208D018700806000EE1 -:100B2000041C3C003CC30000F6F7BAFA201C03F09A -:100B30001BFD10BD186301003C42010010B5144CB0 -:100B4000E168002922D02178124BCA00D218403A1D -:100B5000D36B834202DA481C20700BE0926B824216 -:100B600014DDFF313C0078C300000806000E207041 -:100B700003D119218620F4F78EFF2078FF3000067C -:100B8000000EF6F790FA2078FF300006000E03F012 -:100B9000EEFC10BD0000186301003C420100094852 -:100BA0000021018141813C00B4C300008181C181E9 -:100BB000074A02800123DB0243808280C2804176A3 -:100BC00031218176012101767047000030800700D5 -:100BD000FFFF000080B50120F6F7F8F80120F6F7D6 -:100BE000DBFC0120F6F75AFA3C00F0C300000120BC -:100BF00000F0F1FD0120F7F7C6FB80BD000010B545 -:100C0000114C002907D1002802D10120E06006E044 -:100C10000021E16003E0012907D1002801D0207004 -:100C200003E018218620F4F73CFF3C002CC40000B0 -:100C30002078FF300006000EF6F73EFA2078FF30ED -:100C40000006000E03F09CFC10BD000018630100BC -:100C5000054980B50968884205D0FEF7FFFB00F022 -:100C600087FAFFF72BFC80BDA86901003C0068C42F -:100C7000000001494870704700002C6301000149E1 -:100C8000C860704700004C7B0100034901200978CF -:100C9000002900D00020704700002C630100044AA6 -:100CA000002802D0906901309061D06940183C0062 -:100CB000A4C40000D0617047905C0100FEB5041C24 -:100CC00000680568281CFEF727FF071C6069154EA1 -:100CD000C007C00F21D001AA02A9281CFEF712FFED -:100CE0003878C0070CD46069800708D500AB187A43 -:100CF0003C00E0C40000002801D0022802D1706A44 -:100D000001307062FEBD00AB187A002801D00228C5 -:100D1000F8D1706A01307062B06A0130B062F1E7F8 -:100D2000F06A0130F062EDE70000905C01000249DA -:100D300048693C001CC50000013048617047000054 -:100D4000905C01007047000070470000011C4031BA -:100D500010B50A8B1207920F012A33D04A781A492C -:100D6000041C6034002A0B6A22D1E279012A02D9DC -:100D7000CC6801343C0058C50000CC60022A02D97E -:100D80000C6901340C610C6801340C60446B002C5C -:100D900003D00469247CE40702D54C6801344C601C -:100DA000806B002802D0086B01300863002A0CD049 -:100DB0009818013808E03C0094C50000012A01D0D1 -:100DC000022A02D1886801308860E0791818086228 -:100DD00010BD0000905C01007047000001490A202E -:100DE00008817047C47A0100F0B5324F041C78784E -:100DF00085B0C007C00F03903C00D0C50000B87894 -:100E000002900120A0400490391C88702C48008872 -:100E100006F00BFC0190FEF7AEFC0430294EA50055 -:100E200071590979884206D0FEF7A5FC7159043042 -:100E3000087101207870002078703C000CC600001A -:100E400021480121204E3038015571590320087086 -:100E500006F0C6FB061CFEF791FC36180E3609E0BC -:100E6000301C06F0F5FA002804D023218620F4F780 -:100E700033FE03E0F6F734FB0028F1D03C0048C60F -:100E80000000124813493C3800780872201CF4F71F -:100E9000A2FA0E4E715908710398002801D0012161 -:100EA000797009480088019906F0BDFB0298B87076 -:100EB000094949790498884203D0242186203C00BE -:100EC00084C60000F4F70EFE05B0F0BD0050070028 -:100ED000D0790100107B010080800700508007005E -:100EE000B0B50D1C041C052801D3F4F729FE052D0F -:100EF00001D3F4F725FE0B4AA8001158A0001058A2 -:100F00003C00C0C600000EC90EC0062106220648DD -:100F100069432A380918624310180622F3F70FFFB5 -:100F200002483038415D0155B0BD107B0100B0B5BD -:100F3000041C0E480D1C80780121A140084003D0FC -:100F400001213C00FCC600008620F4F7D1FD0621FB -:100F50000622094869430918624310180622F3F76C -:100F6000F1FE201CF4F740FA034AA1002A3251583E -:100F70000871B0BD00500700E67A0100034980B552 -:100F8000002048603C0038C7000007F032F980BDFF -:100F90000000D47A010010B5041C052801D3F4F731 -:100FA000D8FD0749087A074A107001200872FEF739 -:100FB000F4FB044A0430A1003C325158087110BDC2 -:100FC0000000808007003C0074C70000D47A010054 -:100FD000034980B50120486007F00EF980BD00008C -:100FE000D47A010010B5041C052801D3F4F7B4FD30 -:100FF000201CF5F78FFE0021201CFBF731FD01219D -:10100000002800D0011C09043C00B0C70000090CF6 -:10101000201C04F022FA10BD000006490120054BF7 -:10102000886000203C33002182009A581170013002 -:101030000528F9DB7047D47A01000F4938B5002044 -:1010400088600E48011C20318A793C00ECC7000002 -:1010500000AB1A70C9790A4C094D59700C343C35F3 -:1010600000210322635C002B02D08B00EB581A7026 -:1010700001310529F6DB00AB1988C18438BD0000B9 -:10108000D47A010000100700FFB5144F3C0028C8B7 -:101090000000041CBE790D1C81B00F2000F0B9F8CF -:1010A0002A1C104D0090211C281CF4F7DEFC211C8A -:1010B000A81D039AF4F7D9FC211C281C0C30049AB3 -:1010C000F4F7D3FC211C281C12300A9AF4F73C00D8 -:1010D00064C80000CDFC07F09BF8009800F076F89B -:1010E000BE7105B0F0BD000020100700E67A0100D7 -:1010F00010B50020F6F726F80749887800090001A6 -:1011000088700024201CF5F711FE01342406240EFB -:101110003C00A0C80000042CF7D310BD0000005014 -:10112000070080B502F0E3FB034881780F221143EA -:10113000817080BD000000500700F8B50D1C041C34 -:10114000052801D3F4F717FDA600002D114F07D194 -:10115000B8593C00DCC80000816800290ED14078F5 -:1011600000280BD002E0FF352D062D0E291C201C77 -:10117000FBF788FC011C201C04F07EF906490120C5 -:101180003039085504483C388068002802D1B959E4 -:10119000032008703C0018C90000F8BD0000107B57 -:1011A000010080B504F0CDF980BD10B5041C052800 -:1011B00001D3F4F7E6FC201CF5F7C1FD0020054A39 -:1011C000A10051588860044988780122A240104348 -:1011D000887010BD00003C0054C90000107B010065 -:1011E00000500700024A9178084390707047000051 -:1011F00000500700F8B50C4FBE790F2000F018F82A -:10120000051C0024201CF4F70DF9084AA1005158D0 -:10121000087101342406240E3C0090C90000042CFF -:10122000F3D3281CFFF7E1FFBE71F8BD00002010CA -:101230000700107B0100B0B508498D788A78054019 -:1012400082438A7006F0F9F9041C0A34201C06F067 -:1012500034F90028FAD0281CB0BD3C00CCC90000ED -:101260000050070001490A2008817047387B0100BF -:10127000F8B510480426041CE034051C383D00274E -:10128000201C1C30E460A06127610B48A682E0614D -:101290002762A7620620A084201CFEF73C0008CA33 -:1012A000000087FC201C0C30F6F7B7F90549383CE4 -:1012B000AC420880E7D1F8BD0000D4E4010012611F -:1012C0000100487B0100F7B5051C0C230F1C1249D7 -:1012D00058434418208806F0EAF9A07801283C0019 -:1012E00044CA00001AD16668022F05D15C20805BD9 -:1012F00002990009884211D1281CFEF7FBFF301C1F -:10130000F9F7FAFD0420A070391C281CFBF7F4F84B -:10131000034AE8003C32115801311150FEBD000073 -:101320003C0080CA0000607B01000120064A0021C9 -:101330000C234B439B189B78002B00D000200131DD -:101340000429F5DB7047607B010070B5041CFFF7D2 -:10135000EAFC002803D120210C20F4F7F6FB261C20 -:1013600060363C00BCCA00000021F171E164606B92 -:10137000251C4035002831D0FFF704F90122120363 -:1013800000282069018801D0914300E011430180C9 -:10139000206901220088D2022883201C583001884D -:1013A000914301803C00F8CA0000A36B5208002B57 -:1013B00010D091430180288B0007800F012815D0A1 -:1013C0002E20015D20690430F8F741FD616AFEF7C7 -:1013D000A8F904E011430180201CFBF7CCFB6883D3 -:1013E00004E0206941803C0034CB0000A88B2169D7 -:1013F000C882E068F6F720F93080606D002804D0DC -:1014000000220321707AFEF70DFF201C00F0B6F9D0 -:10141000707A06F045F870BDB0B5002406F022F9E8 -:10142000094A00210C234B433C0070CB00009D185F -:101430006B685B6CAD78C31A012D02D1A34200DD4D -:101440001C1C01310529F0D3201CB0BD0000607BBD -:101450000100B0B5041C06F0A8FE0C20084960434A -:101460004518288806F035F968683C00ACCB0000C8 -:10147000002806D02030007B012802D1201CFFF775 -:10148000A3FAB0BD607B0100FFB585B00FAE60CEA2 -:1014900038201E497043171C4418FFF77FF80122BB -:1014A0001203002803D02088904320803C00E8CB22 -:1014B000000002E02188114321801198391CE0626C -:1014C0000598F8F7D0FC011C2B1C381C069AFEF777 -:1014D00020F960800622201D0F49F3F772FC231CBF -:1014E0000898303318700E980C49587065633C00AA -:1014F00024CC0000002002900122049209480391AC -:101500005A780188019200911978243B301C626B53 -:10151000FEF7A8FE09B0F0BDD4E40100126101009D -:101520005D4E0000487B0100FFB587B0109812AFF8 -:101530003C0060CC00008C46A2CF4C23304C6B4367 -:101540001C19161C159A2785271C303706970597F6 -:1015500000233B73059F78731198271C60646160BA -:10156000226040373E70614661870798311CF8F76A -:1015700080FC3C009CCC00000599C8730A987870E8 -:10158000301CFEF773F8002801D0012000E0002095 -:10159000410002200140119A0120002A00D10020C0 -:1015A00008433872201C2E300799FDF7CFFF281C06 -:1015B00004F0AEF83C00D8CC0000FEF7FEFF4C2251 -:1015C000124B6A43D218012109032A32002804D0A1 -:1015D000101C12888A43028002E0108808431080A1 -:1015E0000B490020039106990290002204920848BA -:1015F0000A7B4188231C3C0014CD0000019200911D -:1016000079780833281C6268FEF738FE0BB0F0BD0D -:1016100058E30100754F00003C7C0100B0B50C1C84 -:10162000012827D0802830D1E06C002808D069201C -:10163000005D1849C00040183C0050CD0000043047 -:10164000016801310160201CFFF7E9FB134D503D9B -:10165000E868002805D02E20005DFEF710F802F0A3 -:1016600042FE201C6168F3F72FFB403460780028AD -:1016700002D106F012F8A860B0BD3C008CCD00008D -:101680002006000E8128FAD1220C2004000E02212F -:10169000FEF7E6FDB0BD0A210C20F4F77DFAB0BDDF -:1016A0009C7B0100F8B5184E184F051C3479B879A9 -:1016B0000090201CF5F77CFF002806D03C00C8CD28 -:1016C0000000124838384068854201D1002D03D10E -:1016D00010218620F4F763FA0D490020383948605C -:1016E0000421201CFFF759FC0421201CF5F7EBFE18 -:1016F0000C21064A6143303A89180C7104203C00E1 -:1017000004CE000030710098B8710F20FFF7A6FDDD -:10171000F8BD0000A47A010020100700F8B5041CF1 -:101720000F20FFF7C1FDF5F73BFF0125002800D092 -:101730000025164EB079164F00903879042801D153 -:101740003C0040CE0000002C03D111218620F4F78C -:101750002CFA1048290638384460090E0C1C042065 -:10176000FFF721FC0321201CFFF741FC211C042072 -:10177000F5F7AFFE0C21074A69430420303A891877 -:1017800008713C007CCE00003C710098B071201CB8 -:10179000FFF750FD0420F8BD20100700A47A0100D7 -:1017A0000C2302495843401880687047747A01003E -:1017B0006030C1798079814201D9012070470020D1 -:1017C000704700003C00B8CE0000014880687047B8 -:1017D00000004C7B010038B56921095C1823104AD0 -:1017E000594389188A6801328A604B69D21ACB68DA -:1017F000934200D2CA6000220B4C0260221C2032AD -:10180000957900AB1D703C00F4CE0000D2795A707F -:101810000A68002A01D1486000E0106000AB08604F -:101820001888E08438BD0000C47B01000010070068 -:1018300018230A495843411808690130086148686B -:10184000002809D0486901303C0030CF00004861D1 -:10185000486802684A60002A00D10A607047002088 -:101860007047C47B0100F8B5124E104D0F4C0A278B -:10187000211C0020E0602A31221C1832A160626124 -:1018800027820C4AE061A26160623C006CCF0000DC -:1018900006202084081CFEF7D7F9201C0830F5F735 -:1018A00001FF4C3CAC427080E5D1FF203070F8BDA8 -:1018B00088E401000CE301003C7C0100126101009E -:1018C000F8B5041C0B480E1C171C44703C00A8CF34 -:1018D000000005F000FF051C391C301CFDF7ABFFB4 -:1018E0000C21054A28180A30614308325050034839 -:1018F000891800688860F8BD00006C7A0100786E75 -:10190000010070B50B4E051C7078FF280FD03C000D -:10191000E4CF00000C23084C58430834205805F04D -:101920001DFE002806D170780C23584300198168E9 -:101930002943816070BD00006C7A010080B53021C0 -:101940000148F3F743FA80BDECE5010010B505F05E -:101950003C0020D00000C5FE0A4944180CE0201CC1 -:1019600005F0F7FD002807D0F5F751FE002803D059 -:1019700013218620F4F731F9F5F749FE0028EED15E -:1019800010BDB0360000FFB58BB0199B0D1C041CB8 -:101990001A203C005CD00000002B169900D11820C2 -:1019A00001901498002827D0FF20199B0130002BAC -:1019B00001D1182300E01A230433824204D3D01A41 -:1019C000400840000004000C0D906A480088C21ACC -:1019D0001204120C3C0098D000000492002908D098 -:1019E0008979664A4900515A049A511A0A04120C1C -:1019F0000492049A824205D90020049002E06048D3 -:101A000004900D9001980104090C0A910020F4F74C -:101A100084FA009000683C00D4D0000000260690B4 -:101A20002060002005900E9800240005000C09900D -:101A30001A980D9F4007400F089007940395002DBA -:101A40000DD02889B84204D836183F1A07D0ED685F -:101A5000F5E73904090C281C3C0010D10000F4F70C -:101A600038FBEFE7002E02D10799002971D1271C1E -:101A70006C20F4F788FB0799041C002920D10794F7 -:101A80000020A0611898271C606017982437A06078 -:101A90000698206115980FC80FC73C004CD1000074 -:101AA00014985C2160630998085319986921E063D0 -:101AB0001B9808551C9860651998002823D0089831 -:101AC000069908831FE06C22201C0799F3F71AFA85 -:101AD0003C60019862213018C85315983C0088D1A9 -:101AE00000004021807AC8550020B86306980A9902 -:101AF000F4F71FFAF8600299F4F73BF9201C403024 -:101B0000818B059A1207120F1143818303985E217E -:101B100002900198224A30180853126801213C00B3 -:101B2000C4D10000081C002A00D01B980006049AAB -:101B3000000E964203D92C2211551B4904E0159939 -:101B40002C22097A11551949085C662108551C9800 -:101B5000002801D01F200855002D03D0E86803900D -:101B60003C0000D20000002000E009E0E860059899 -:101B7000002601300004000C0D9F0590039D6DE7C9 -:101B80000098E0600299F4F7FAF800202060012143 -:101B9000A1636034608007980FB0F0BD000006615B -:101BA00001003C003CD200005C4301003809000009 -:101BB000186701000E6101000A6101000148006818 -:101BC00070470000C46A01000249091D03C940189A -:101BD00070470000C46901000148006970470000B7 -:101BE000C46901003C0078D2000001484069704798 -:101BF0000000C46901000148806970470000C469A1 -:101C0000010070B50D4E0020351C4035F0630DE02D -:101C1000A068F4F77AF9B36D002B04D000220120FC -:101C2000616BF3F795F83C00B4D20000201CF4F788 -:101C30009DFA281CFAF742FD041CECD170BD00008F -:101C4000C4690100F8B51A4F0026F86B00282CD0A3 -:101C5000381C403000901DE01648B96B02F05CF86B -:101C60000022201C144903F03C00F0D200007BFF4E -:101C7000051C04D1386A0130386201360DE0A068D5 -:101C8000F4F749F9BB6D002B04D00022281C616BCE -:101C9000F3F764F8201CF4F76CFA0098FAF711FDDA -:101CA000041CDCD10748B96B02F03C002CD30000C7 -:101CB00025F80020F863301CF8BD0000C46901005D -:101CC0003463010011300000C460010001490120AB -:101CD000C8637047C469010080B50020054A00212F -:101CE0001C2343439B1801300428D9663C0068D369 -:101CF0000000F8DBFCF7FDFC80BDC4690100014970 -:101D0000C86470470000C4690100014988647047D5 -:101D10000000C4690100B0B5041C0D1C211C028E1A -:101D2000806A4031F3F72FF8002816D102213C00D9 -:101D3000A4D30000201CF4F76FFAE269C000101869 -:101D4000828BAB889A4204D182692B689A4208D26E -:101D500001E09A4205D2002118300CCD0CC000E001 -:101D60000121081CB0BD0000F8B5061C002744681E -:101D70003C00E0D300000FE00949486A01304862A6 -:101D8000A069002802D0F4F700FAA761266225684E -:101D9000201CFFF752FB2C1C002CEDD1F8BDC469B0 -:101DA00001000330074A8108136850681B688900E6 -:101DB00009183C001CD400008B4201D3516000E0A4 -:101DC00000209060704700008C6E010070B5124ECC -:101DD0008038C50070590C1C002804D101210D2049 -:101DE000F3F72EFF0DE02069002805D1A81981889E -:101DF000E06801F03C0058D4000047FA20617159B6 -:101E0000201CF2F7BBFF041C002C07D0E068002860 -:101E100001D0F4F792F8201CF4F7BDF970BD5442DC -:101E2000010070B5041C0D1C0E490622F3F735F8AD -:101E30000026E66166623C0094D400000720302151 -:101E40000855E663281CF8F76BF8A076201C1430C0 -:101E50000622291CF3F724F80622291CA018F3F700 -:101E60001FF8266170BD00001261010080B5FDF70A -:101E700085FE80BD014948603C00D0D40000704719 -:101E80000000E4650100024980B54968F2F77CFF73 -:101E900080BDE465010080B5F4F7E5F9074907481E -:101EA0000EC90EC018380068002802D002F0B7FA38 -:101EB00080BD02F09EFA80BD00003C000CD5000001 -:101EC000B058010090730100054980B58968002071 -:101ED000002900D103200006000EFAF7E3FB80BDC5 -:101EE000606C010080B5034806220349F2F7DEFF6B -:101EF00080BD000040800700126101003C0048D511 -:101F00000000B0B5041C0C4D0B1C211C00200C3D26 -:101F10000029094C05D02878211C1080021C181CAF -:101F200007E011880E2907D80A06120E191C201C7A -:101F30002A70F2F7BEFF0120B0BDB06901003C007D -:101F400084D5000010B500200A4A012111600A4C16 -:101F50000AE0021C016A5032914205D061783C23AC -:101F6000594309190431016204F0BAFB0028F0D189 -:101F700010BD0000DC62010068610100044880B50A -:101F80003C00C0D500000068002803D0011C1020D0 -:101F900004F0C7FE80BD286101000322111F80B537 -:101FA0000020FBF776F980BD000080B50BF0B9FA90 -:101FB00080BDFFB583B0161C002101911F1C0821B4 -:101FC00002AA3C00FCD50000FAF70EFF041C2AD13F -:101FD00002984168490001D4092424E0FAF752FF2D -:101FE0003860029841684902CD0F291CFAF744FF76 -:101FF000011C306038680006000E00F01BF8002855 -:1020000001D10A243C0038D600000FE03168029864 -:102010002B1C01AAFAF7D7FF002806D00198002848 -:1020200004D004990968814200D2032401980499DC -:10203000086007B0201CF0BD000070B5051C0E1C28 -:10204000012400F084FF3C0074D60000002808D072 -:10205000032D01D0042D04D10320C003864200D3F8 -:102060000024201C70BD00007CB5151C061C0C1C37 -:10207000291C6A4601ABFFF7A5FF002802D1002CFE -:1020800001D103207CBD17483C00B0D6000000AB56 -:1020900006601879072821D202A31B5C5B009F44CD -:1020A00000001D040406101713000420EDE72A1C8D -:1020B000211C0120009BF2F781FE002812D106208E -:1020C000E3E72A68009905E000983C00ECD60000A0 -:1020D0004278811C01E02A686946201CF2F7FEFE66 -:1020E00003E004218720F3F7CFFD0020D0E70000B4 -:1020F000F86B0100F7B586B00E1C082105AA0698FA -:10210000FAF77EFE041C45D1059841683C0028D7AB -:10211000000002904902C90F002504950391089F11 -:10212000FAF7D5FE019002A903C9FAF7C6FE019994 -:10213000052914D202A35B5C5B009F4400000E03E0 -:10214000060C030087420ED807E087420BD83C00FC -:1021500064D700000125C01B049007E0874205D129 -:10216000012503E005218720F3F794FD002D01D11F -:10217000032415E005984168002969DA3A4A06996E -:102180001160FAF791FE071C05980399FAF786FE8D -:102190003C00A0D70000051C011C381CFFF75FFFA6 -:1021A000002801D10A245EE0072F57D202A3DB5D8D -:1021B0005B009F440000530404062E504800042492 -:1021C00051E00498002801D1002714E0089908186C -:1021D00000043C00DCD70000000CF4F72BF8071CCF -:1021E000311C089AF2F786FE089804993818F2F71D -:1021F0002FFE089804993E1C40180890311C0020BE -:1022000008AAF2F7ECFD002800D10524002F2DD0FC -:10221000381CF3F73C0018D80000EDFF29E00399C3 -:10222000002904D0059840688702BF0A00E0002713 -:10223000311C281C089AF2F760FE0499002903D08B -:1022400008982818F2F707FE002F12D0F2F7CCFDFD -:102250000FE0311CA81C3C0054D80000089AF2F78B -:102260004FFE0898687007E0FFE7072404E00824A1 -:1022700003218720F3F71AFD201C09B0F0BD0000F0 -:10228000F86B01009EB51C1C00AB19720092002275 -:1022900001946946FBF708FA3C0090D800009EBD07 -:1022A00000008FB5029200220090019003916946D0 -:1022B0000420FBF7FCF98FBD0000B0B50C1C012811 -:1022C0000AD0032819D004282CD1606801F035FC0D -:1022D000011C83200CCC22E01C203C00CCD8000048 -:1022E00014496043401814494518281CF8F746FC67 -:1022F000A968002903D0221C082005F071FEB0BD9A -:10230000208CC82801D3042004E0652801D30220D2 -:1023100000E001202084201C03F0DCFA3C0008D9F6 -:1023200000002268E368011C8220FFF7B4FFB0BD03 -:10233000A0210820F3F7C3FCB0BDDC71010064EEFE -:10234000FFFF0348044A81685161C068906170478B -:102350000000F4680100C07101000349044A3C0018 -:1023600044D90000086B90608868D0607047000016 -:10237000905C0100C071010000B5FFF7F1FFFFF7AD -:10238000E3FF00BDB0B50D1C002814D00B490C4C68 -:1023900088686269C968801AA269891A401804D0DD -:1023A0003C0080D9000064235943F2F7C4FE206149 -:1023B000FFF7CDFF206928600120B0BD0020B0BD2F -:1023C0000000F4680100C0710100B0B50D1C0028C8 -:1023D00017D00C490D4C086BA2688968801AE26816 -:1023E000891A3C00BCD90000401807D022889042CE -:1023F00004D964235943F2F7A1FE6060FFF7B6FFEA -:10240000606828600120B0BD0020B0BD905C010074 -:10241000C07101007CB51068002802D000F024F8DB -:102420007CBD0F483C00F8D90000C0698468E068B2 -:10243000256AA669F3F7E3FDE169F3F706FD201CC1 -:10244000E2694030C18B12898918C1830749019420 -:1024500000912869331C82880168E068C068F8F739 -:102460001EFCE0E700003C0034DA0000846A010052 -:10247000915E0000F0B58569066A041CC06885B0ED -:10248000C068002801D1F3F757FC0A49029504946B -:102490000391306982880168262001920091435D92 -:1024A000E068E1692A1C0E323C0070DA0000C06866 -:1024B000F8F737FD05B0F0BD0000E9D9000010B510 -:1024C000141C0548FCF77BFBA068F3F79EFDE16850 -:1024D000C160201CF5F7BBFA10BDA06A01007CB5F5 -:1024E000041C6030027BA16900913C00ACDA000062 -:1024F0000192221C211C3831A06848320D1C6369EE -:1025000003F07AFB08210020F3F788FDE0602669DC -:10251000B16B002901D0102300E018230549019474 -:1025200000913168CA180823011C281C3C00E8DA15 -:102530000000F8F720FD7CBD000081DA0000F0B556 -:102540004668171C041C0121301C9BB0FAF70DFCD7 -:102550000025002803D013490A7A012A01D1012558 -:102560001CE088624E612089C861608900283C00B7 -:1025700024DB000003D000200884488404E0E068E5 -:102580000884208A4884608A8884086B002803D1E4 -:1025900001A803F077FC04E001200861002002F0AC -:1025A00039FB3D711BB00120F0BD0000F46E01004D -:1025B0003C0060DB000010B5041CF7F7E8FB0028C6 -:1025C00011D14B20005D01280DD1201C04F085FAAB -:1025D0000021201C04F0F3F8A0690021C207D20FEB -:1025E0000420F4F7D8F910BD000038B5041C04F03D -:1025F00036F93C009CDB0000002803D04030807A94 -:10260000002825D10C2029210855211C0622A018BC -:10261000F2F7A0FC201C06220E49F2F79BFC0120D9 -:10262000E06160620720302108550025E56306203F -:1026300000AB18803C00D8DB0000E068002801D027 -:10264000F3F7DBFC02216846FDF773FBE060201C1A -:10265000FFF769FCE560201C38BD12610100FEB582 -:10266000051C0E1C152000AB98801421171C00209F -:10267000F3F7E3FC02903C0014DC0000046806223F -:10268000311C601D2571F2F76BFC0622391C201CE1 -:102690000B30F2F765FC01A8FFF752FCFEBD00000D -:1026A00080B50023FBF75CF880BD000070B5051C09 -:1026B00008350F4E291C041C3C0050DC000006228B -:1026C000301CF2F750FCA088B082281C05F0A1FF56 -:1026D00000280BD0E0883061281C04F0CCF8A188D9 -:1026E000403041800020F4F7B8F902E00420F4F70C -:1026F000A0F9002070BD707C01003C008CDC000063 -:1027000080B50020FBF7F8FB80BD000070B5041C0D -:102710000430051CFDF732F8002809D00020F7F737 -:1027200037FC002804D00622011C281CF2F71EFCEE -:102730000A4E0622291C301CF2F718FC3C00C8DCAB -:1027400000006089F082281C05F069FF002803D092 -:102750000220F4F788F902E00520F9F7F4FA0020E6 -:1027600070BD707C010010B5041C007904281CD2D7 -:102770006079012801D0032804D1002201213C0006 -:1027800004DD0000A01DF9F769FC6079002804D180 -:1027900022790021F9F762FC0AE0032808D100241D -:1027A000221C00210020F9F759FC0134042CF7DB2E -:1027B000012010BDF0B597B0171C051C0430041C97 -:1027C0003C0040DD000015AA16A905F0E2FE002835 -:1027D0002ED015984B21095C002923D0012902D065 -:1027E00002291FD101E004F090F9AD7A1348169E3A -:1027F00005800622211C0830F2F7C1FB221C311C87 -:1028000002A83C007CDD000000F074FB0A200AA94D -:10281000487200AB9D80022101A8FDF79FFA059048 -:1028200002A8FFF795FBF3F7F7F90021159803F0DD -:10283000E1FF002000E00120387117B00120F0BD59 -:10284000987C01003C00B8DD000080B50120FBF75A -:1028500062FB80BD0000B0B5041C807D151C0A1C05 -:10286000C007C0170130211CF9F7FBFC002803D179 -:10287000042028710120B0BD206AF7F776FE606A57 -:10288000F7F77BFE206A3C00F4DD0000FEF788FAD3 -:102890000020B0BD10B5141CC27981798088F7F78B -:1028A000A1FA2071012010BD80B50123FAF770FF55 -:1028B00080BD0000F0B5041C081C00210F2891B059 -:1028C00000D30221002941D13C0030DE0000C000CD -:1028D000244F1090C619B288216802A8F2F75BFB5A -:1028E0002189B088091A002907DD09042268090C2A -:1028F0001018F3F7C0FB051C00E00025B07980211B -:10290000884317497831095C00203C006CDE0000E8 -:10291000F3F7B4FB071C00681349019010980B589B -:10292000019A291C02A8F2F7ACFA0090281CF3F7D0 -:1029300073FB201CF3F782FB0098002808D0029854 -:1029400001990860B079391CFAF720FF3C00A8DE35 -:10295000000011B0F0BD381CF3F761FBF9E72D2042 -:10296000F3F7F5F9201CF3F76CFBF2E700002444C1 -:10297000010070B5051C2035061CA879042848D232 -:10298000E979012913D1301C283003F092FF3C0073 -:10299000E4DE000000283FD0011C8C310165A979DC -:1029A0004C22041C11548118416250340462E11E0F -:1029B00081620BE000292FD13C2218494243541870 -:1029C000174A04341268002A00D14870002C23D022 -:1029D0003C0020DF0000351C3035E879012801D0AB -:1029E000052801D10620E8712022311D2068F2F768 -:1029F000DEFAB08CA080E879A071A8790025A063E8 -:102A0000012060810020E0602E36E80000191830B7 -:102A100008223C005CDF0000311CF2F7CBFA0135E4 -:102A2000042DF5D3012070BD68610100DC62010056 -:102A300010B5041CC07A012801D0032807D1201D3D -:102A400003F040FF002802D0A17A40304173E07AC1 -:102A5000002801D03C0098DF0000032802D1A07AB2 -:102A600002490870012010BD00006861010070B5C6 -:102A70000E1C0321041C301CFCF7E1FB002801D0D4 -:102A8000857800E000250B48321C00680368207C34 -:102A90008007C00F211C3C00D4DF0000F7F762FE66 -:102AA000002805D00121281CFDF7FEFB002000E0D6 -:102AB000082003F0C5FF002070BD0000E4650100A0 -:102AC00080B5426800880121490608432D2105F0A0 -:102AD000D3FB80BD034901203C0010E00000497891 -:102AE000022900D0002070470000846601008CB5E8 -:102AF00001281FD100290DD001290BD0022901D0B6 -:102B0000032916D10020F9F714FC932000AB18809C -:102B1000002008E0012900D000203C004CE000002B -:102B2000F9F70AFC832000AB1880022000F0CCF8F3 -:102B300001906846FFF73AFA8CBD01210E20F3F7A9 -:102B40001BF9F9E7FFB5171C1E1C1421002083B0E8 -:102B5000F3F7ACFA051C0468122000AB3C0088E0D7 -:102B6000000098800622601D0399F2F732FA0020D7 -:102B7000207127730499201CE172311C06220D304C -:102B8000F2F727FA029501A8FFF713FA07B0F0BD94 -:102B90000000F8B5061C0F1C0C210020F3F73C00C8 -:102BA000C4E0000089FA0568041C281D0622311CB7 -:102BB000F2F712FA6F81201CF8BD0000B0B5041CBA -:102BC0000D1C08210020F3F777FA01688C718D80C5 -:102BD000B0BD0000F7B50E1C1021171C0020F3F744 -:102BE0003C0000E100006BFA0468051C201D062271 -:102BF0000099F2F7F4F96681A781281CFEBDF3B5B0 -:102C00000C1C0821002085B0F3F759FA061C076850 -:102C1000E068002802D00599012904D1059838718F -:102C200000203C003CE10000787156E0036801217F -:102C3000039320690290FCF717FB051C02983221D0 -:102C4000FCF712FB0022D243011C281C04ABF7F74F -:102C5000B9F8002804D1301CF3F702FA00263CE052 -:102C6000002D05D03C0078E100006878093807287D -:102C700001D8322028701C210020F3F726FA019099 -:102C80000568011C301CF3F740F9E068F3F70BFA14 -:102C9000A861E1680198F3F738F90020E060059831 -:102CA0008021084338713C00B4E100000120211C60 -:102CB00014317871281C0622F2F79AF9029A292019 -:102CC0000092005D0121E26A082800D00021281C42 -:102CD000039B02F09DFFA06B2861206C68617F3030 -:102CE00001D10F206861301C3C00F0E1000007B00A -:102CF000F0BD10B5041C08210020F3F7ECF90168C1 -:102D00000C7110BD00000148006870470000286188 -:102D100001000149086070470000E4650100021CE1 -:102D200001200006084380B52D213C002CE2000064 -:102D300005F0C0FA80BD000080B5012807D0F12859 -:102D400025D0F32827D1022002F0BCF980BD00294C -:102D50001AD0012903D0F229F8D188211CE01048AB -:102D60000178002905D140780128EFD13C0068E2C4 -:102D7000000000F016FA80BD0B4814300089FCF703 -:102D80005AFC011C01220F2005F09FF980BD04F0C0 -:102D900052FA80BD0020FAF732FE80BD02210F20DA -:102DA000F3F705F880BD84660100014800783C0017 -:102DB000A4E2000070470000746601000149002091 -:102DC00048607047EC650100F8B50E1C134D011CFE -:102DD000141C6822281C1F1C0C30F2F771F90F49D3 -:102DE0000020AC394860012129601921192C6E6737 -:102DF0003C00E0E2000000D3211C2981094914397C -:102E000088738F74C878012808D001210F2005F03D -:102E10009CF91920FCF715FCFBF799F80120F8BD87 -:102E200000009866010080B5012802D100F02FF85B -:102E300080BD3C001CE3000001211D20F2F7C0FF13 -:102E400080BD00007047000001200749000580B5E3 -:102E5000886000228021162005F04CF904F034FD32 -:102E60000249086180BD000000100700246D0100C8 -:102E7000064A80B53C0058E30000D16A814207D180 -:102E8000107F2423044958434018C068F2F735F8EE -:102E900080BDD4790100944601001D481CB500781E -:102EA00000282DD01C480068002829D01A4A1A4B47 -:102EB000043211681C693C0094E30000A14222D155 -:102EC00051685B6999421FD1164949689368C91ACC -:102ED000814219D2D06814490130D0600968884213 -:102EE0000CD90622FF216846F2F72EF9F3F7ACFC65 -:102EF000011C0023002268463C00D0E3000002F0E1 -:102F0000CEF901221D200A4905F0F7F81CBDF7F79C -:102F100088F904228118081CFCF727FBF6E71C75CA -:102F200001004475010028610100905C0100F05926 -:102F30000100A086010080B501683C000CE400009F -:102F4000002915D10079022812D1081CF7F780F862 -:102F500000280DD003F0F2FC0830418F002907D182 -:102F60008069002804D08079062801D1FCF718FB7D -:102F700080BD000001490020886270473C0048E4A1 -:102F8000000078690100B0B5054D041CA91DFFF7CC -:102F900014F80622291CA018F2F74BF8B0BD707C7B -:102FA0000100B0B5041C151CFFF707F80622291C08 -:102FB000A018F2F73EF8B0BD000080B50A303C0022 -:102FC00084E40000F7F7BCF90123002803D005488A -:102FD0000078012804D100220021002003F0C6FD62 -:102FE00080BD0000A079010080B5002300220021EF -:102FF000002003F0BBFD80BDB0B5054DAC790A1CC7 -:103000003C00C0E40000011C0123012003F0B1FDDD -:10301000AC71B0BD000020100700F8B5061C0C1CF8 -:10302000880702D5F6F747FA10E060070ED5174F6C -:10303000A320C05D154D102800D3154D04F059FC98 -:10304000B96F3C00FCE40000401A291A0120F6F791 -:10305000C1FAE0071149C00F48600CD00D4C443C48 -:10306000207803280FD1002E06D0F6F7F9F9011CBD -:103070000120F6F7AFFAF8BD09490120F6F7AAFAE0 -:10308000012020703C0038E50000F7E70121301CEA -:10309000F6F789FAF2E7A60E0000A46C0100C40955 -:1030A0000000B057010040420F0080B5062804DB45 -:1030B0000521FF20F2F79FFE80BD034AC00011509A -:1030C0000121801801713C0074E5000080BD000002 -:1030D0009C5A01000148806870470000D0600100E0 -:1030E000B0B5084C251D281C216800F0F1FE002811 -:1030F00003D101210448F2F7CFFA281C216800F01F -:10310000FBFEB0BDC06001003C00B0E500002C102B -:103110000700B0B5104D0C1CA868002802D104F0BF -:10312000F4FB2860201C04F038FB0121032003F08D -:10313000C4FE04F0F0FBA86800280BD104F0E5FB06 -:103140002968001B401A696840183C00ECE5000043 -:103150004108401828600120A860B0BDD06001007F -:10316000F8B51F4E0024B068002802D104F0D0FB4F -:10317000706005F061F804F08FFB051CF9F766FE3E -:103180003168184A41181268E80B002A3C0028E60A -:10319000000000D1A80A401885421FD9144F2D1AEB -:1031A000381C2030817900AB1970C079587005F057 -:1031B0006EF8002803D102218F20F2F728FE291C87 -:1031C0000C48F268F8F709FC002804D0011C3C0008 -:1031D00064E60000281CFFF7A5FF012400AB188857 -:1031E000F88405F047F8201CF8BD0000D06001000D -:1031F000F474010000100700891301000149012047 -:10320000C8607047D0600100064880B5006801289A -:103210003C00A0E6000007D10448AC38016903482F -:1032200000F079FEF3F72BFA80BD98660100346355 -:10323000010080B542788168007903F0DEFF002844 -:1032400001D1F5F7B6F980BD00001FB504F069FBA8 -:10325000F6F73C00DCE6000091FF164C022803D193 -:10326000FFF7DCFD042802D3002020701FBDFBF710 -:10327000F7FC0028FAD1606A0028F7D02078800790 -:10328000F4D40921162004F093FF012020700B4C88 -:10329000094902903C0018E700000194009104F0F5 -:1032A00046FB001903906846FDF7B5FB0022162186 -:1032B000842005F03EF8DCE70000606C010061ED61 -:1032C000000040420F00234870B580789CB0012870 -:1032D0003ED1204C09A83C0054E70000803C611C12 -:1032E000FEF792FE042011AD6872A06F19A9189024 -:1032F0007C20005D012608711D20005D002806D09D -:1033000010961296FCF7F6FA2872207A1190F3F7CD -:10331000CDFF6A21085340343C0090E700000022B2 -:1033200001A906A8F6F7CDFF211C0020FBF7CBFB77 -:1033300006A9FBF7C8FB01A9FBF7C5FB0A49096809 -:10334000002907D0331C0A226946FBF7DAFB009AF2 -:10335000072191700C9009A8FEF73C00CCE7000013 -:103360007BFE1CB070BD000084660100E4620100B9 -:10337000F8B5041CC068FF22016812020E1C087B0D -:10338000497B090211400843051C311C0622A01884 -:10339000F1F77CFE0622B118201CF1F73C0008E88A -:1033A000000077FE280A290208430004032149028D -:1033B000000C884208D2E06801890E390181E0687A -:1033C00001680E310160F8BD0026201C103003F0AA -:1033D000E8FA218B002905D1E17D00290BD03C00C2 -:1033E00044E800008069800708D4E068012601896C -:1033F00002390181E0680168023106E0E068018974 -:1034000006390181E0680168063101601449002035 -:103410000B1F42009A5AAA4202D11149063102E01A -:103420003C0080E8000001300228F5D3E068062265 -:103430000068F1F734FE012ECBD1812000AB18805B -:10344000E17D208B49030843310308430004000C4D -:10345000010A000208435880E06819880068C180AA -:1034600059883C00BCE800000181B5E76A460100CC -:10347000B0B50D1C01890622083101810468044998 -:10348000083C0460201CF1F70DFEE580B0BD000093 -:103490006A460100F8B5002901D0002801D10020BA -:1034A000F8BD09043C00F8E80000090CF2F743FFFE -:1034B000061C051C002720E02C892968022C01D25B -:1034C000022001E048780230844202DD241A091803 -:1034D000F4E7844210D0011B0A040104090C120C09 -:1034E000281CF2F79EFE3C0034E90000002806D1BB -:1034F000E868F2F72DFEEF602889001B2881ED684F -:10350000002DDCD1301CD1E7F8B58568041C80693A -:103510002E1C00280DD07168F2F7F6FDA069F2F7B5 -:1035200017FE06E00021C1603C0070E90000F16078 -:10353000A08D36680138A085F0680028F5D1306884 -:10354000A060A08D01380004000CA08502D0201CD2 -:10355000F9F739F82A4F2A480068002803D00621D5 -:103560006868FAF77CFD686800683C00ACE9000018 -:10357000817800292BD1C178002930D1218E0139E1 -:103580002186FBF715F8A16A081AA062E169884252 -:1035900003D904210220F2F767FCB86800281ED086 -:1035A0001A49208E49680C22521A90423C00E8E9E0 -:1035B000000008D319239B01AF2292015943A06A4E -:1035C000511A88420ED200210C2003F0ACFC0020DE -:1035D000B86007E0012905D1C078172802D1A08E74 -:1035E0000138A0862A1D06CAE0686369F1F73C002D -:1035F00024EA0000DCFCB54201D02D68B4E7A08DC0 -:10360000002803D10548B96900F09EFCF8BD000010 -:10361000FC5A0100CC5C010018570100C460010095 -:103620008907074BCA0F80B5197C002906D0814352 -:103630003C0060EA0000197403D10721152004F052 -:10364000A2FE80BD00007869010080B5011C012048 -:10365000FFF7E9FF80BD80B5011C0220FFF7E3FF03 -:1036600080BDB0B51B4C6068FCF72FFF20680025BB -:1036700040683C009CEA0000002803D0FDF718FCDD -:10368000206845606068FCF7C5FE1448616800F07A -:1036900061FCA07A012805D0022803D020680068C8 -:1036A00000F0DEF801211F2004F0B2FD00211F20F0 -:1036B00004F0AEFD3C00D8EA000002211F2004F017 -:1036C000AAFDA57221682C20405C8968F1F776FC80 -:1036D0006068FCF7E4FE20680562B0BD0000147A63 -:1036E00001003463010004490A68C868926A002A2C -:1036F00001D0096908183C0014EB00007047000075 -:10370000147A0100B0B5134C051CA07A01380228C8 -:1037100019D801211F2004F081FD2068FC23011C21 -:103720002030027B1A400273002D0FD001231A4370 -:103730000273A07A032807D13C0050EB000001205F -:1037400001F0E7FD002801D1FFF797FFB0BD4B6204 -:10375000B0BD022111430173F6E7147A010010B5E0 -:10376000041C0A30F6F743FE00280CD022880A49D0 -:103770000B7A9004C00F002B06D13C008CEB0000AC -:103780001206920E202A00D10120C86010BD002828 -:10379000FCD100222421802004F004FE10BD000092 -:1037A000047A010080B5021C1F21802004F0FAFD7C -:1037B00080BD0000F8B51D4E041C30683C00C8EB0D -:1037C00000001D1C4768201CF1F70AFCFBF787FA74 -:1037D000002804D0281CF2F72AFB002828D12088D2 -:1037E000400525D430680068FEF759F9002803D158 -:1037F000FDF789FAF1F7EDFB3068002540683C00E1 -:1038000004EC0000002803D0FDF764FB306845603D -:1038100020880009000703D104F0C8F86188451822 -:1038200030684561816A0131816220888004C10F5E -:103830000248F8F7CDFFF8BD147A0100B1EB0000A3 -:103840003C0040EC0000B0B50E4C051C6068FCF775 -:10385000F6FD0C48616800F092FB0021242004F082 -:10386000ECFC0022D2438021242004F0B8FC00208C -:10387000E0602072206801682806000EF1F7B0FBB6 -:10388000B0BD3C007CEC0000047A01003463010010 -:1038900010B5041CC068F2F785FC201CF2F7B0FDDF -:1038A00010BD000070B51C4E051CB07A2C1C4034B5 -:1038B000022826D1A08B3189884222D13068416A02 -:1038C000002908D03C00B8EC00002030007BC00785 -:1038D00004D5012001F02FFD002818D160780028C0 -:1038E00009D1306802232030027B0D495208520072 -:1038F0001A43027301E0FF21F53101221F2004F079 -:103900006EFC0320B0723C00F4EC000002E0281CC6 -:10391000FFF7C4FF6078002803D1291C012003F0C1 -:1039200029FB70BD147A010050C30000B0B5041C1F -:103930006034E0790E4D00280AD10220A872286870 -:103940004068002804D10B483C0030ED0000FDF732 -:10395000D0FA2968486004F038F82968C861FFF790 -:10396000E0FE29680969081A03F06FFF002801D0FA -:10397000E079A071B0BD147A0100C1EB0000F8B588 -:10398000041C002604F021F8051C3C006CED00002E -:10399000224800270770A10704D0E107C90F016280 -:1039A000C5610126416B002934D1002E32D0061C9E -:1039B000F9F744FF316B1A4B411AA20712D5DA68A6 -:1039C000002A08DD91421A6802DA14093C00A8EDC9 -:1039D0000000A21806E01409121B03E00A4302D1FA -:1039E0001A6852001A60B7630AE0B26B0132B26320 -:1039F000022A1A6801DD940800E01409121B1A60FB -:103A0000D9603063F56218680849884201D93C00E2 -:103A1000E4ED0000196003E0642801D2642018601E -:103A2000F5F7FCFDF8BD0000606C0100B057010027 -:103A300020A10700FEB5041C0020504D0021686144 -:103A40002069FBF7B3FC071C20690321FBF7AEFCE0 -:103A50003C0020EE0000002803D0807829788842BE -:103A600063D1474D201C1430391C061C2A7802F003 -:103A70005AFA002859D1E068056841480195583044 -:103A80000290FBF76AFF3E4D193500280BD0281C29 -:103A9000FBF73C005CEE000055FF00281ED1311CF6 -:103AA000281CFBF765FF002842D017E0281CFBF715 -:103AB00049FF002806D0391C0298FBF763FF002855 -:103AC00036D00BE0391C0298FBF75CFF00282FD0A2 -:103AD000311C281C3C0098EE0000FBF74CFF00282E -:103AE00029D0301CF6F7ADFC294A1832117C002988 -:103AF00004D0516A002901D000281CD1906A002806 -:103B00003BD01378019D01216D8901202B409B073B -:103B100011D0A36B1E4E3C00D4EE00001D1C7F355F -:103B20009836002D14D0558A002D08D15569AB4226 -:103B30000FDA0020174D01236B610AE029E0F578C8 -:103B4000022D06D1144F55693F68ED19AB4200DADA -:103B50000020236C1D1C7F353C0010EF000010D0AE -:103B6000558A002D03D19569AB420AD208E0F57859 -:103B7000022D06D10B4E95693668AD19AB4200D2C5 -:103B80000021084308D0106A002801D0F1F74BFA51 -:103B90000021201C01F0B9F9FEBD3C004CEF0000F3 -:103BA000EC650100C4670100CC6701003EB5056A01 -:103BB000041CC068F2F734FBE169F2F757FA201CE5 -:103BC0004030C18B0431C1832B6910499879062894 -:103BD0000AD1988801910294009060693C0088EFB6 -:103BE00000001B680168E0680322C0680AE0022840 -:103BF0000BD11020009001910294E068A369C06885 -:103C000000220021F7F70FFB3EBDF2F7A6F9FBE714 -:103C10000000BDEF000080B5D1685069C9683C0064 -:103C2000C4EF0000C160D168C860111C4031CB8B6B -:103C300000891818C8831068002802D0FFF7BCFF5D -:103C400080BD0348FBF7CCF8006AFEF7F5F980BDAC -:103C5000A06A0100F8B5061C0A2430070109A00774 -:103C60003C0000F0000001430F1C0A4D2F6004F0DF -:103C7000FAFEAD682801000FB04205D0013CF4D235 -:103C800001219B20F2F741F92802000A082E01D1F8 -:103C900031050843F8BD600007000122D20580B558 -:103CA00000213C003CF00000042004F0DDFC0F206B -:103CB000FFF7D6FF0F2109040840000C80BD00006B -:103CC00080B50548FDF74AF90448FDF77BF804483C -:103CD000FDF76CF880BD000089340100ED24000080 -:103CE000111C00003C0078F0000080B50248F3F79A -:103CF0002AFC80BD0000D124000080B5F2F753F902 -:103D000080BD80B50021002001F051FE032002F0AB -:103D100046FF80BD0000064880B5C169002906D174 -:103D2000016A002903D13C00B4F00000816B034814 -:103D300000F05EF980BD0000C46901003463010039 -:103D400010B5044C206AFCF7B3FB0348216A00F06D -:103D50004FF910BD1C75010034630100B0B50D4C66 -:103D6000207C002802D001213C00F0F00000FDF78B -:103D700086F900252570A068012803D10020A560E0 -:103D800001F08FF8A078012805D103489838006920 -:103D9000FCF7EFFBA570B0BD00008466010080B5A4 -:103DA0000021012001F009FE80BD3C002CF1000043 -:103DB00038B569460025F8F7B7FE041C01D101208B -:103DC00038BDA068002804D00099A131082004F073 -:103DD00073FA1C21201CF1F7A3F9281CF0E700005E -:103DE000FEB5071C4C233949584344183C0068F180 -:103DF0000000251C4035287A37494876211C30318F -:103E000002910C23C856421C0A73497B884246DA49 -:103E10003248007880073ED500200190F6F7AFFACF -:103E200000282ED0AC210958002901D0E4303C00F4 -:103E3000A4F1000000E0CC30061C4068002825D02A -:103E40000299087B012811D1201C2E302978F6F721 -:103E5000EDF9716803E07218127A824203D9FF31DA -:103E60000906090EF7D1A97001200190231C3E33E9 -:103E70003C00E0F100001A1D301C00970199F8F792 -:103E800058FA002811D0A8788019007A00E00020A4 -:103E9000687068780121FBF7E0FD6060381C01F074 -:103EA00014FE381C01F0A5FBFEBD0299087BFF3013 -:103EB00048733C001CF20000381CFCF719FC03F0AE -:103EC000C3FD061CFBF78EFE41007618687861681A -:103ED000FBF76AFE3118208D3B1C054A03F012FEE9 -:103EE000E5E7000058E30100308007001D75010080 -:103EF000D54E00003C0058F20000031C044880B579 -:103F000002792030034900F030F880BD0000AC7C1D -:103F10000100C4670100031C044880B5C278383032 -:103F2000034900F022F880BD0000AC7C0100C867A6 -:103F30000100031C04483C0094F2000080B5827923 -:103F40005030034900F014F880BD0000AC7C010043 -:103F5000CC670100031C044880B5427968300349EE -:103F600000F006F880BD0000AC7C0100D0670100C5 -:103F700010B5002484800B603C00D0F20000191CB6 -:103F8000514301601906091610220630F1F79FF916 -:103F900010BDB0B5064D0024AC60EC60EC612C6245 -:103FA00002F0F1FC00F00DF8EC622C70B0BD447D25 -:103FB000010080B580210148F1F73C000CF30000BE -:103FC000C7F880BD04660100F8B5074F002400263D -:103FD00018206043C519EE6003F042FD103501342E -:103FE000022C41C5F4DBF8BDB87D0100002303605D -:103FF000044B002900D1191C4160002A3C0048F301 -:10400000000000D11A1C82607047BD75000010B519 -:10401000074C206801302060202803D958215820FF -:10402000F1F79DFF216801200139884010BD605BD8 -:104030000100B0B50D1C041C2168002000293C00C3 -:1040400084F300000AD0A943216007D1A068F1F7EA -:1040500023F8002802D1216829432160B0BD000067 -:10406000B0B50D1C041C2168002029432160A94221 -:1040700007D16068F1F710F8002802D12168A94340 -:104080003C00C0F300002160B0BD1A4BB0B59A6A85 -:1040900000280BD0002A07DBB8242458013CA41ABE -:1040A0000019B030007B02E00E2000E00D205D6AB8 -:1040B000124C002D01D0207800E0205CFF24A834B1 -:1040C000C4403C00FCF300009C60F524C4409C61AB -:1040D000FD24C440DC61FF242934C4405C61FF241A -:1040E0005334C44000200C3311C3002905D0002AEA -:1040F00003DC0221504200F065FBB0BDAC7E010044 -:10410000B85201003C0038F4000010B5134C1348BD -:10411000211CFF3169310EC90EC0211CFF31242240 -:1041200075310F48F1F751F8211CFF313C229931CC -:104130000D48F1F7A6F8FCF7A2FF211CFF31102271 -:10414000D5310948F1F73C0074F4000041F8211C16 -:10415000FF312822E5310748F1F796F810BD00003D -:1041600040630100008007000C80070030800700DA -:1041700080800700A0800700F8B5002859D004F01F -:104180004BF9F8F7B3FB00223C00B0F4000001212A -:10419000132004F07CF92A492948496C0160002168 -:1041A0002948C9434160264C1434616C8160A16C7C -:1041B000C1600020254D022601016E500A194F19D9 -:1041C000503204370ECA013008283C00ECF40000DD -:1041D0000EC7F4DB1422211CCC311E48F1F75AF82B -:1041E0001D4881780909090181700021C170417061 -:1041F000211CE0310A78027049784170211CE831B5 -:1042000030220830F1F746F8211CFF313C0028F538 -:104210000000502219311248F1F73FF88320800046 -:10422000142221181048F1F738F811204001842297 -:1042300021180D48F1F731F8FFF773FF201CF1F753 -:1042400028FDF8BDFFF76DFFFBE7082007003C00E5 -:1042500064F500002C6301004020070000300700D7 -:104260000040070000500700006007001000070032 -:1042700000900700F8B5051C1848C068002825D034 -:10428000164E013674783078271A7919201CF1F708 -:104290003C00A0F500004BF80090291C201CF1F711 -:1042A000B2F8C119201CF1F742F8601A3070701E84 -:1042B000806800280DD05336F4780099201CF1F75F -:1042C000A2F8B178611A4118201CF1F79CF8601A25 -:1042D000B0703C00DCF5000003485C300169C26846 -:1042E00069435118C160F8BD447D0100B0B50C4D63 -:1042F000E868296940187D2109014418201C03F051 -:104300000BFB00280AD003F0CFFB011B2869F1F753 -:104310007DF801303C0018F600000004000CFFF7A7 -:10432000B2FFB0BD0000A07D010070B5104C606808 -:104330008025A84360602068284320600D4E301C13 -:104340001030F3F7C8FC002803D107218520F1F7CE -:104350002AFE084800213C0054F6000080684163B2 -:10436000C06C10307061012030612068A84320606B -:1043700070BD0000F400070000300700247E01003B -:10438000011C0020052980B509D202A35B5C5B00FB -:104390009F440000030303033C0090F60000030069 -:1043A000FFF7CFFC80BD0122920280B500210720DB -:1043B00004F0ABF980BD80B540220021002004F05C -:1043C000A4F903220021002004F09FF980BD70B5FC -:1043D0000E1C051C141C08280ED13C00CCF6000055 -:1043E00000F000FC0E2801D1142000E01020E103B1 -:1043F00000D50138C0060A49C00E887108E0092DB1 -:1044000006D1A00401D5002000E00120F3F7B0F9A7 -:104410003440211C321C281C04F07AF93C0008F7B7 -:10442000000070BD00000080070070B50024132953 -:1044300011D8002801D1084E0825012801D1074EC6 -:10444000092500F078FA002805D0021C311C281C30 -:10445000FFF7C3FF0124201C70BDF8FF07003C00DC -:1044600044F70000FFFF00000122D20280B50021C6 -:10447000072004F053F980BD0F22120407214904DC -:1044800080B5092004F04AF980BD000080B5002104 -:10449000042004F01BFC4021002004F017FC044918 -:1044A0003C0080F700000020886002480969203045 -:1044B000FFF709FE80BD64730100B0B560210020E4 -:1044C00004F007FC114D002400220420295D04F0B3 -:1044D00028F90C2003F09BFB01342406240E052C44 -:1044E000F2D33C00BCF700000F2200210A2004F0A8 -:1044F0001BF96121002004F0EFFB064901208860D0 -:10450000044809692030FFF7CDFDFF202D30B0BDF4 -:10451000A858010064730100F8B5061C1248C67063 -:104520000120FFF73C00F8F70000FDFB0127BF0268 -:10453000041CB843011C012004F0D1FB0320FFF749 -:10454000F2FB051CB843011C032004F0C8FB301C1F -:1045500000F09FF900F057F8211C012004F0BFFB88 -:10456000291C032004F03C0034F80000BBFB0020B1 -:10457000F8BD00006473010080B5002240210020D6 -:1045800004F0D8F880BD000070B5051C0124092096 -:10459000FFF7CCFB0F210904884303218904E204BF -:1045A000052D124E20D202A33C0070F800005B5D86 -:1045B0005B009F44000006090C100300032109045E -:1045C0000CE00121090409E00121490406E0F36837 -:1045D000042B05D902E0F368042B01D8014301E064 -:1045E0001043011C092004F080FB3C00ACF80000E3 -:1045F000201C70BD0024FBE7647301000121C90584 -:10460000002880B502D00A1C002100E0002204200E -:1046100004F096F880BD0000F0B591B0002640216E -:1046200001A8F0F7DDFD2A4FB87901223C00E8F837 -:104630000000520300900021062004F084F860215D -:10464000002004F058FB6121002004F054FB0820F6 -:1046500003F0EFFA00240F20FFF771FB4005050F70 -:10466000A80001A9095801AA013101340C2C3C0011 -:1046700024F900001150F1D30020810001AA515803 -:10468000B14201D90E1C051C01301028F5D30620BB -:10469000FFF758FB0F2149028843690208430121B3 -:1046A00049030143062004F029FB0D488468643463 -:1046B0003C0060F9000008E0201C03F05AF90028D3 -:1046C00003D001219520F1F798FC0F20FFF73DFB67 -:1046D0000004F1D5872003F0B2FA0098B87111B048 -:1046E000F0BD201007000001070010B5174C6169EC -:1046F00000293C009CF9000004D00A21132003F09B -:1047000047FE10BD011C1248012900780CD0112968 -:10471000F7D1052803D101211320F1F771FC20788E -:104720000728EED102210AE0052807D006280AD082 -:104730000728F7D03C00D8F900000828E4D1002071 -:1047400005E001211320F1F75EFC10BD012002F00D -:104750006CFD10BD00007C7801000D4980B5097822 -:10476000032901D100280BD0072901D1002807D047 -:10477000022901D100283C0014FA000003D10529C8 -:1047800009D1002807D00020FCF728FD00221321C2 -:10479000112003F0C1FE80BD7C78010080B50622A7 -:1047A0000821002003F0DEFF80BD0000074880B52F -:1047B0004069002801D1F1F73C0050FA000033FFB6 -:1047C0000549054A0868506148689061012080BD2C -:1047D000000064730100B058010010000700074892 -:1047E00080B54069002801D1F1F71DFF0549054A50 -:1047F000086890614868506101203C008CFA000014 -:1048000080BD000064730100B05801001000070073 -:1048100011B500AB597814480123C056002209187D -:104820000B061B161321132B02DD00AB597007E09A -:10483000002B02DA00AB5A7002E01C1C3C00C8FAE4 -:10484000000000AB5C7000AB1B7818180006001667 -:10485000132802DD00AB197006E0002802DA00AB75 -:104860001A7001E000AB1870009818BD0000647366 -:10487000010038B50C1C154900AB496813253C00F4 -:1048800004FB00000091597809185970197808182C -:10489000187019881048022CC18001D0002C0BD14F -:1048A00000AB1878132800D91D7000AB19780020D0 -:1048B000FFF7EEFD022C01D0012C09D100AB587896 -:1048C0003C0040FB0000132800D95D7000AB597814 -:1048D0000120FFF7E0FD38BD000064730100A0581F -:1048E000010070470000B0B5041C0E28134D04D021 -:1048F0001249A00000194D3945180620FFF73DFA6E -:104900000F493C007CFB0000E02209191039C97BEB -:104910009043490111400143062004F00DFA291C7F -:104920000520094A03F030FF08481F2200191038FB -:10493000C07BC104D204082003F026FFB0BD0000F4 -:10494000B40900003C00B8FB000014450100FF0F53 -:104950000000C05801007047000080B506490028DB -:1049600001D1086880BD012801D1486880BDF1F7F8 -:1049700090FB002080BD7C730100014840687047B7 -:104980000000A05801003C00F4FB00000448012393 -:104990000449C056C95640180004000C7047000076 -:1049A000A0580100A258010001484068704700006B -:1049B00064730100F8B5051C0E1C00F055F9041CC9 -:1049C00000F058F900282CD03C0030FC0000B30067 -:1049D000601E002D1C4E19491A4A06D10B250E2CBB -:1049E00000D1194AD258085608E0012D1CD19A1856 -:1049F0000436081808250E23126DC056071C4743BD -:104A0000FB00DF19124B3F2158433C006CFC0000B7 -:104A1000114BA9400C1C3818C0181440EC40C011B0 -:104A200060431B0AC018801203D1012004E000205B -:104A3000F8BD3F2800DD3F203060A84008408A4391 -:104A40001043F5E7CC590100DC5801003C00A8FCFC -:104A500000007C7301007C5901000606000026005E -:104A60000200034808B5C08800AB1880009808BD54 -:104A70000000A0580100B0B50B4D094C0E206C6031 -:104A8000FFF78DF90949021CC8600106090E3C00B8 -:104A9000E4FC0000133A022A02D91738042800D88F -:104AA0000021081C6C60B0BD041802006000070003 -:104AB000647301000A4898B502781321142A00D3C0 -:104AC00001704278142A00D34170064C6068FFF7E9 -:104AD0003C0020FD0000BDFE009000AB1888E08087 -:104AE00000F075FF98BDA4580100A05801000348CC -:104AF00080B541780120FFF7E6FC80BD0000A65894 -:104B00000100034880B501780020FFF7DCFC80BD80 -:104B100000003C005CFD0000A6580100B0B5054D4A -:104B20000024201CFFF744F90134102C01C5F8D3F0 -:104B3000B0BD0000D4440100044980B58870044928 -:104B400080000958072004F00FF980BD647301004C -:104B5000D05801003C0098FD0000B0B53F24021C75 -:104B6000002A01D108200B23012A01D109200823A2 -:104B7000251C9D40002900D101213F2900D9211C7D -:104B800099400A1C291CFFF77CFCB0BD000091B5C0 -:104B9000124900AB1A783C00D4FD00000878114C93 -:104BA00080180006000E207049785A788918090686 -:104BB000090E13221328617000D92270132900D91D -:104BC0006270084908480639C98881802178002028 -:104BD000FFF782FC617801203C0010FE0000FFF727 -:104BE0007EFC98BD0000A4580100A6580100647323 -:104BF000010070B51D4D041C28780E1C032803D13C -:104C000002211120F1F735FA201C00F04EF800289F -:104C100025D0287801280AD168683C004CFE0000A5 -:104C2000002807D00121112003F0EEFB0120696864 -:104C3000F0F7BDFA6C706E60201CFFF7C1FC041C1D -:104C400000F0D4FE002C02D06868002802D1F6F7EC -:104C5000D9F870BD012028700122211C3C0088FE7B -:104C60000000112003F09FFB70BD02211120F1F71D -:104C700006FA70BD00009C73010080B5012805D1C3 -:104C8000002904D0012901D1F6F7BFF880BD0549FC -:104C90000878032802D00020087080BD03213C0062 -:104CA000C4FE00001120F1F7EDF980BD9C730100F6 -:104CB00001484078704700009C730100011C0139D5 -:104CC00001200E2900D300207047000010B5134CBE -:104CD000207801280ED1606800280DD00121112014 -:104CE0003C0000FF000003F098FB01206168F0F732 -:104CF00067FA00206060207001E003280ED00021D8 -:104D0000112003F08AFBFFF724FCFFF7C0FB0549E5 -:104D1000087B40084000087303202070012010BD6C -:104D200000003C003CFF00009C730100880007006D -:104D300010B50D4C2078032813D1002020700B48AB -:104D4000017B012211430173FFF770FCFFF718FC90 -:104D5000002806D002212170011C0022112003F03E -:104D60002BFB01203C0078FF000010BD00009C736D -:104D700001008800070080B50549002804D0002004 -:104D8000086003F05AFA80BD0120086080BD805A97 -:104D90000100FEB5051C8035041CA8682979066849 -:104DA000201CA03002293C00B4FF00001CD169790E -:104DB000082901D00C2917D101216162A96809686D -:104DC000098B0182A9690191008AC00605D5606836 -:104DD0000088400501D4012000E000200290052059 -:104DE00001A902F0B7F902E03C00F0FF0000002149 -:104DF00061620182A9681A230A89676A181C002F58 -:104E000000D11820101A0881A8680168626A002A77 -:104E100000D11823C9180160A86841C43088083C33 -:104E2000400403D5201CF7F7BCF93C002C0001001E -:104E3000FEBD0021E1613079C00703D4201CF7F7E3 -:104E400091FEF5E7201CF7F743FFF1E7F7B5051CE6 -:104E50000A30061CF5F7A4FA144F041C3988F2F73F -:104E600083FE328878680280728802303C006800D5 -:104E700001000280B18841806988029A201CFAF7FB -:104E8000CEFE0B4D08356880FBF72BFE0121090390 -:104E90000028288801D0884300E00843288004487F -:104EA000002200211430F2F732FE201CFCF73C00F7 -:104EB000A400010085FAFEBD247B010010B5134C4F -:104EC0001149201CFF3069300EC90EC0201CFF3074 -:104ED000242275300E49F0F717FA201CFF303C22CF -:104EE00099300C49F0F76CFA201CFF301022D530B5 -:104EF0003C00E00001000949F0F709FA201CFF30EE -:104F00002822E5300749F0F75EFA10BD0000008066 -:104F10000700406301000C8007003080070080809C -:104F20000700A0800700B0B500283FD021484168A5 -:104F3000214C3C001C0101006160C168E160016915 -:104F40002161806AA0621E491C48096814384164C6 -:104F50001C48251C3C350FC80FC5201C80224C3036 -:104F60001949F0F733FA1422201CCC301749F0F716 -:104F70002DFA38223C0058010100201CE030154970 -:104F8000F0F727FA201CFF30502219301349F0F7B0 -:104F900020FA83208000142220181049F0F719FA13 -:104FA00011204001842220180E49F0F712FAFFF771 -:104FB0008EFFF8F794FB3C0094010100B0BDFFF7B1 -:104FC00089FFB0BD00100700406301000820070002 -:104FD0004020070000300700004007000050070095 -:104FE0000060070010000700009007000C4980B522 -:104FF000012048600A4814383C00D00101000078C4 -:10500000012804D008489438406F002803D00020BD -:1050100000F01FF880BD08680028FBD00348F2F7B5 -:105020007AFE80BD000098660100FFFF000080B599 -:10503000002809D1F2210F2003F03C000C020100EE -:1050400013FA00220F21F12003F0CCFA80BD0120D9 -:10505000F8F76AFE80BD000010B5041C032000F0C4 -:10506000C9F900210F2003F0FFF9FFF765F80B499C -:1050700000204874FBF7E6FA094800683C00480243 -:105080000100002803DC02214042FFF752FC0448E3 -:1050900014300068002802D0201CF2F742FE10BD38 -:1050A000000084660100D47E0100064980B50978BD -:1050B000042905D0052903D0062901D007293C0081 -:1050C0008402010001D1FEF7BDFD80BD74660100C0 -:1050D00010B5094CE06800280BD107482C38008A2D -:1050E000C00704D5002101206268F9F7C9FA012040 -:1050F000E060012010BD0000F46E01008CB5021CC0 -:105100003C00C0020100081C111CFDF728FF0190A3 -:10511000002805D0172000AB18806846FDF7FFF87F -:105120008CBDF1B52E4CAEB0002525632069012859 -:1051300003D101A801F0A1F84EE00126284F267006 -:10514000503F3C00FC020100B869F8F74FF82549D0 -:105150002C3900281DD0E06A01281AD1088A0F1CBA -:10516000800704D5002102206268F9F78FFA388A97 -:10517000000707D5E068012804D1002108206268F3 -:10518000F9F784FA3C00380301000022182182203C -:10519000266303F036FA25E0088A0E1C800704D542 -:1051A000002102206268F9F774FA308A000707D5F7 -:1051B000E068012804D1002108206268F9F769FA43 -:1051C000308A400704D53C0074030100002200210E -:1051D0000420F9F761FA2E98012804D01E950921C0 -:1051E0001BA8FFF797FFE562BD61E5602FB0F0BD3A -:1051F000F46E010080B50720FEF7A0FE00210F200D -:1052000003F044F90C4801783C00B0030100002988 -:105210000FD00221017088380078002804D0074997 -:105220001031487C01304874F2220F20054903F008 -:10523000FCF800220F21F32003F0E9F980BD746629 -:10524000010080841E0010B5041C3C00EC0301002A -:10525000F2210F2003F020F9012C0AD10848084957 -:1052600000681439002805D0C878022802D1F7F761 -:10527000AFFA10BD002048700520FEF765FE10BD96 -:1052800098660100F8B5284E3021351C3C002804F2 -:10529000010060352889895D884203D10020FFF72D -:1052A000F6FEF8BD341C70340121217041188019BC -:1052B0003030298140781D4F183F3870002808D0C1 -:1052C0000021FBF7C2F9002807D12078FFF73C0046 -:1052D000640401009BFFE7E701210F20F0F71AFFAC -:1052E00014480121803081703869FBF755FA20732A -:1052F00000210F2003F0D6F8707A01280ED10E4855 -:105300000068002804D0387802F0DAFA002805D0C6 -:105310003C00A0040100307F60730320207071897D -:1053200005E005202070A888FAF73BFB011C00224D -:105330000F2003F086F8BAE7000004660100E4627B -:10534000010070B5041C02F06CFC364B191CA03136 -:105350000A783C00DC040100102A02D20A79102AE3 -:1053600001D3012500E00025304ECA798036012C9A -:1053700012D00025022C2ED0042C3CD15C6B002CCA -:1053800039D19C6F001B2A4CA04234D9B268986A6C -:10539000824231D03C00180501004D7234E0B06803 -:1053A0009C6A0222A04221D1586B00281ED1002DF8 -:1053B0001CD1487A192820D03468986F6400001BEB -:1053C00074680019FF301C4C3930A04216D248795D -:1053D0008C79001930283C005405010011D31022AB -:1053E0000FE05C6B012C06D1B0689A6A904200D144 -:1053F0004D72002205E09C6F001B124CA04200D3AE -:10540000202206E04A7A192A01D201324A72202269 -:10541000B06030689B6F98423C009005010004D159 -:10542000002A00D148794A7106E0102A04D370603E -:10543000336048798871F6E7CA7170BD0000A46CCA -:105440000100A304000071020000350C00000548B3 -:1054500080B5817B002905D000213C00CC050100EE -:10546000817303490F2001F00FFF80BD74660100B6 -:10547000E9030100F8B5041C02F0E2FB051C384EFC -:10548000201C3749341CA0341022443901282CD068 -:1054900004284ED1371C743609CE26783C00080605 -:1054A0000100C01A202E04D1304EB04201D900268E -:1054B0004E613E1C3F6C002F48D1776C002F45D1C8 -:1054C000B76A002F3DD0776B002F3AD0274FB842F4 -:1054D00037D26078102806D3F06F181A244B3C009E -:1054E00044060100984201D2E270F5664869062838 -:1054F0002FD201302CE02078202801D106234B61E7 -:1055000002232371B36A002B19D04969032916D9E4 -:10551000716B736D594012D0E178102910D3617806 -:105520003C0080060100331C10290CD3D96F691A86 -:10553000134DA94207D2586C002802D0986C00285D -:1055400000D12271F8BD0228FCD12270FAE7486927 -:10555000002801D0013848610A49F06E401802F075 -:10556000B0FA3C00BC0601000028EED00120E0703B -:1055700006482818F066E8E7A46C0100E204000081 -:105580001A06000053070000002D3101005A620284 -:1055900080B541680979C90713D5C16900290DD0C3 -:1055A000897902293C00F80601000AD10821018608 -:1055B000011C38318162021C06480449F9F7FDFCE0 -:1055C00080BDF7F7DCFB80BDF7F723FB80BDB97129 -:1055D0000000A06A010010B50024002803D002F0EA -:1055E000E8FE002817D03C00340701000C4C0120D5 -:1055F000A0722068002141620A490268C9786032BD -:105600009171218901312181006840308183FBF74C -:1056100031FC20680068FCF7A1F90124201C10BDB2 -:10562000147A01000E6101003C00700701007FB593 -:10563000061C1E481D1C438802881C21002090B0B7 -:10564000F0F745FF03900468FF2101312180082015 -:1056500060800620207104206071C001002D00D1FF -:10566000081CE08001A80230311C3C00AC0701009E -:10567000051CFAF75FFA10496846FAF75BFA201C36 -:1056800008306946FAF756FA291C201C1230FAF73E -:1056900051FA10AB9888002201212083D8886083BA -:1056A0001889E081588920826846F9F73C00E807AC -:1056B000010017FF14B070BD0000146E01001261EC -:1056C0000100B0B5041C1848251C0078603580071F -:1056D000002808DAE879002805D0F4F770FF011CEB -:1056E000201C00F078F929882E20005DF2F73C009C -:1056F000240801009FFAE87900280BD1201C4030D3 -:10570000018B22691180418B22695180808B216934 -:10571000C88207E0012805D1206901220188D20250 -:10572000114301806A7AE0680249F2F753FAB0BD8A -:105730003C00600801001D750100D14F000090B5CC -:10574000041C38230C495843431885B000200A49EB -:105750000290181C012203910949049230304278CA -:1057600009880192009101785A6B0C33201CFBF7D9 -:105770007CF83C009C08010005B090BDD4E4010019 -:105780005D4E0000487B010090B585B0031C0020F1 -:1057900002900A49181C0022049260300391C279D9 -:1057A0000188019200915A6ADC682033997B407A23 -:1057B000231CFBF73C00D80801005DF805B090BD44 -:1057C00000000D4F0000074980B5886A002808D105 -:1057D00001208862F0F7AFFC011C03480022F2F7B9 -:1057E000B8FE80BD00007869010041E40000F0B51A -:1057F0009BB0002820D03C0014090100011C08A81F -:10580000FCF7B2FD01201190032010AD2872042096 -:10581000687205A800226946F4F700FF00240026FC -:1058200005A90020F9F7FCFA6946F9F7F9FA0B9097 -:1058300008A8FCF7BBFD01343C0050090100022C14 -:105840002E72F0DB1BB0F0BD000090B5041C4C23A1 -:105850000C495843431885B000200A4902900022A1 -:1058600004923C200391C25C084841880192412087 -:105870000091C15C5A680833201C3C008C0901006F -:10588000FBF702F805B090BD58E30100754F00002A -:105890003C7C0100F8B50E1C224C3821171C051C5D -:1058A000201CEFF775FD231C2533211C243110200B -:1058B0006A46F9F71DF800AB188807213C00C809B3 -:1058C00001001A4A02382084201C20308170C570E3 -:1058D000111C0673477334312163303262630179DE -:1058E000251C103521812060E5601888401A20832E -:1058F000201C28302061201CF9F711F80D483C00CD -:10590000040A01000068002807D00621201CF8F7CF -:1059100047FD1021281CF8F743FD084802210162C9 -:1059200044620121016206480068EFF7D5FCF8BD2A -:105930008C8E0100E4FE0100CC5C01000030070009 -:105940003C00400A01005C5B0100F0B5061C4036DB -:10595000318B041C251C0807800F6035012885B099 -:105960003BD0E879002805D120690180B08B2169FE -:10597000C88207E0012805D1206901220188D202EE -:1059800011433C007C0A0100018020480078800718 -:1059900026D5E879002823D0A06B00281CD0F4F786 -:1059A0002FFE002809D0B8210958002905D0302140 -:1059B000095DB4300818077A00E000270121381C7F -:1059C000FAF786F93C00B80A010004902069043017 -:1059D000391CF4F76CFD0499FAF7D3F902E0201CA6 -:1059E000F7F7F9FB7083708B216900224880094921 -:1059F0000A48049203910290EA7929880192009161 -:105A0000626AE36820343C00F40A0100A17B687AF2 -:105A1000FAF74CFF05B0F0BD1D750100D14F000035 -:105A2000DD2F0100FEB5041C261C012020360029B4 -:105A300002902ED05820005B0007800F012801D172 -:105A4000CC3100E0B43148683C00300B01000D1C43 -:105A5000002824D0201C6030C2790121012A00D006 -:105A60000021271C626D3037002A04D03A1C281C04 -:105A7000F6F7E7FD07E0427A231C683300923A1CF0 -:105A8000281CF6F79AFD029038783C006C0B010058 -:105A90004019007A0121B073FAF726F901E00020DD -:105AA000B0736062B07B0D2801D9F0F7BBFB0298A0 -:105AB000FEBD0000FFB5041C8030251C5E3500785B -:105AC000AE1DAF1F002883B012D1F4F73C00A80B25 -:105AD0000100C7FB002807D006980599029004989A -:105AE0000190A66167610DE00498069902900598FF -:105AF0000190666105E004A903C90290069801902F -:105B00006761A5610622381CEFF78BFC06223C007A -:105B1000E40B0100281C0299EFF786FC0622301CDA -:105B20000199EFF781FC07B0F0BD0000B0B50D1C86 -:105B3000041C052801D3F0F77BFB0249A00008589C -:105B40008560B0BD107B0100F8B5FFF759F9051C61 -:105B50003C00200C0100FEF7E8FF041C281CFFF7A6 -:105B600058F9002842D0691E214D4A00204B1C3DA7 -:105B7000AE5C985C3040D6180123F6565219D256C6 -:105B8000964201DD151C00E0351C184B2A3B595686 -:105B900051183C005C0C0100B14200DB311C0E1CB2 -:105BA000002826D0FEF7BEFF009000AB18781249FF -:105BB0000023C95600AB1522101A5B78001B401851 -:105BC000D21A121B51180022854202DB00AB1A7058 -:105BD00002E0401B3C00980C010000AB18708E42A4 -:105BE00002DB00AB5A7002E0881B00AB58700098D3 -:105BF000FFF78DF801F0FFF8F8BDE6780100657356 -:105C0000010070B5084E064D00240620604380193F -:105C10000622291CEFF73C00D40C010011FC0134D2 -:105C2000052CF5DB70BD00004E470100E67A01004F -:105C3000034880B501680348FEF742FB80BD0000C1 -:105C4000A8790100C4600100034880B501680348D9 -:105C5000FEF74AFB80BD00003C00100D0100A87952 -:105C60000100C460010010B500280AD0064CA169EB -:105C7000002901D1002000E00968F7F738FBA06196 -:105C800010BD002010BDA46E0100F3B5374883B0ED -:105C9000029080790E1C002701903C004C0D010001 -:105CA0003448354A016A039C031C1B69A14201D098 -:105CB000936100E0536131498A6896423FD02D4894 -:105CC0008E60C1680024251C00292D4809D0002EB3 -:105CD0000BD028480124C06A240300283C00880D0A -:105CE000010006D0012704E0002E01D0051CF9E7D1 -:105CF000041C002F06D0FBF71EFB1F48016822483A -:105D0000FEF7FBFA201C28430ED02A1C211C012080 -:105D100002F021FE2A1C211C022002F01CFE3C0085 -:105D2000C40D01002A1C211C032002F017FE002FC5 -:105D300006D1134801681648FEF7CEFAFAF742FD7D -:105D4000039C002C01D101F0E1FF01A903C9887176 -:105D500001F0DCFF0A4C0A4B443CA1692269083B74 -:105D60003C00000E0100411A002A03D01A685118A5 -:105D7000196002E05A6851185960A061266105B0A7 -:105D8000F0BD20100700A46C010010000700B05700 -:105D9000010000106000847301001CB54C23084909 -:105DA00058433C003C0E01004418201C4030417810 -:105DB0006268009101923F210B5D618F0078626CF7 -:105DC000FAF728F8A0851CBD58E30100B0B5164DC0 -:105DD000A969002925D02C1C3034207A002820D035 -:105DE000002381223C00780E0100182002F089FC7B -:105DF000207AFF300006000E207212D10C482821B4 -:105E00002C38095C2172297A002901D1006A00E04E -:105E1000406AA9698002814203D24900814201D2CD -:105E2000A961B0BDA8613C00B40E0100B0BD01F095 -:105E30001DF9B0BDF46E01007FB5051C04206B4652 -:105E40001B180290002628186A4602A9FCF78AFB54 -:105E5000002806D100AB1879042808D01879032847 -:105E600005D000AB187910213C00F00E010008436A -:105E700004B070BD03A9E868F6F7D3FF002805D089 -:105E80000398202108430006000EF1E703A9002033 -:105E9000F6F7C7FF041C01D10220E9E7E86800AB70 -:105EA0002060009860601879A0763C002C0F0100FB -:105EB000A88C6076E8692061688CA082288C2076A6 -:105EC00069690948814200D9081CA060201C02F0C1 -:105ED000A1FDA168002904D0039AA132082002F094 -:105EE00037FB301CC7E70000A08601003C00680FAC -:105EF0000100FEB5061C40780124062850D3C11EBF -:105F00000320EFF75EFB00900E2849D800200AE03E -:105F10004100091889194A798979511801390E29DE -:105F200000D90024013000998842F1DB002C3C00AC -:105F3000A40F010037D00322B11C1B48EFF7A4FACD -:105F40001A4C1C21201CEFF74DFA002528E06900AF -:105F5000491902918A1953791548435493790F18B6 -:105F60007B70D379BB700723D2560192445C0FE05B -:105F70003C00E00F0100201CFEF77BFF002807D04B -:105F80000C4A600080180121103881730199C17397 -:105F900001342406240E07480299405C79784018A1 -:105FA000A042E8D8013500988542D3DBFEBDE86207 -:105FB00001003C001C100100E6780100EB620100CA -:105FC00001680F2901DD0F2101600168002901DA54 -:105FD0000021016070470000F8B5041C1E48221D16 -:105FE00005680092161C231C0F1CCC332A1C201C95 -:105FF0007030A16D3C005810010000F03EF9009691 -:10600000A16D27200140231CE433201C2A1C5C3096 -:1060100000F033F9134800780E2801D2012585409D -:106020001148A1690078294000070BD4480703D51F -:10603000080701D504203C00941001008143880624 -:1060400003D5480601D520208143231CB4332A1CE4 -:10605000201C3030009600F013F9391C201CF0F79A -:1060600047FCF8BD2C7D0100106701001D75010083 -:10607000B0B5F2F727FCFEF73C00D010010009F99B -:106080000F48002545700E480D4C00885B34A082F7 -:10609000F9F723FD2061A08A002804D00121890599 -:1060A000EFF70DFBE18205480138456001F055FE30 -:1060B000021C231C00210020F4F73C000C110100FD -:1060C00049FDB0BD457D0100F467010070B5161CA7 -:1060D0005A89041C04989207920F00250029A27186 -:1060E00009D00521F9F724FB002801D0C07800E091 -:1060F0000120E07100E0E571E560A6603C00481118 -:10610000010070BD0000FEB5051C0E229C30164932 -:10611000EFF7CFF9291C281C8030883100242F1C70 -:106120006037029101902006000E061CF9F70DFE63 -:10613000002803D001984268029901E0EA6D3C0012 -:1061400084110100391C002A0DD0002003E00B5CF3 -:10615000B34202D801309042F9DB08181038C07BF6 -:1061600029199031087301340E2CDFD3FEBD0000D5 -:10617000CC470100FFB581B0141C101C06220D1C79 -:106180003C00C0110100191C0B9E0A9FEFF797F904 -:106190000622391CA018EFF792F9E6602C60102057 -:1061A00028816E600198E86005B0F0BD000070B510 -:1061B000041C002020615820005D0E1C151CC00727 -:1061C000C0173C00FC1101000130E061216B002987 -:1061D00036D11E490968294332D0A168898A00292D -:1061E0002ED000280BD0201C583000F0F3FD0028E2 -:1061F0001BD0816A026A406A0978007806E0144A76 -:106200003C2311783C0038120100507843439A181F -:106210000432002D03D1022901D0032902D16D21BE -:1062200022610855206900280DD08188002901D1FC -:10623000012070BD8079022805D1221C074907483A -:10624000F8F74BFF02E03C0074120100201CEFF74E -:10625000B5F8002070BD00002861010068610100F0 -:10626000A1DA0000A06A010010B500210020F9F7B2 -:1062700039FEC400F9F754FE2418F9F747FE08491F -:1062800020180988084C40183C00B012010006494B -:10629000098840186061F9F746FE054909884018E9 -:1062A0004000A06110BD0261010004610100D479C9 -:1062B0000100A66901001140081C10B51C1C191C26 -:1062C00008311860F1F731FE60603C00EC1201000B -:1062D00010BD0000F8B5061C22480F1C4168914211 -:1062E00003D000218160C1604260C46815E02820AD -:1062F0001D4960434018051C0622311CEFF770F859 -:10630000002807D1A81D391CF9F710FD3C002813FF -:106310000100002801D00120F8BD01342407240F1A -:10632000124880688442E5D1104C2823A0680F4DA4 -:10633000584340190622311CEFF7D3F8A0682823F0 -:106340005843401906302222391CEFF7CAF83C00A6 -:1063500064130100A06801300007000FA060E1682D -:10636000814203D101310807000FE0600020D6E729 -:10637000EC650100A0F4010010B50021032000F03D -:10638000E5FF054CA068002804D101F007FD616815 -:106390003C00A0130100401A606010BD0000D060F6 -:1063A000010002680A6001607047011C0068002853 -:1063B00001D002680A6070470000FEB5141C1D1C65 -:1063C0000022D24301ABF3F782FF01980026284058 -:1063D00001903C00DC1301000025002720601EE036 -:1063E0000121B9400A1C024018D0884301903906A7 -:1063F000090E7019001902910177081CF9F7C6FC03 -:10640000002806D0301C0019013602993030017086 -:1064100004E0281C3C001814010001350299001901 -:106420000172013701980028DDD17019A061656003 -:10643000E662FEBD0000B0B5144D041C287A0128A8 -:1064400002D10420F6F7ADF9211CA86AF5F721FC6A -:10645000002803D104203C0054140100F6F7A4F9ED -:10646000B0BD02202870288C002800D06081688C84 -:10647000002800D0A081A88C002800D0E081E86925 -:1064800001230204120C201C0249FCF719FFB0BDC5 -:10649000F46E0100A17700003C0090140100F8B5F3 -:1064A000194E051CB069002800D13068FFF73BFC8D -:1064B000154F041C503700280BD06068291C7860E9 -:1064C00001203863201CF5F7EAFB002804D10020E6 -:1064D000F8BD0023FB62FAE700233C00CC14010066 -:1064E0002377F86A002801D10120F862387A012860 -:1064F00007D0F86906490204120C281CFCF7E6FED6 -:1065000001E0FB62B3610120E5E70000A46E010039 -:10651000DD02010070B50D1C041C161C3C000815A2 -:106520000100042C1BD21048834207D258000F49A7 -:10653000EFF7FBF8FF30000A013800E000201F35BC -:10654000EA066107090ED20E11437207520D11437C -:106550000006000A0843064AA100505070BD3C00E6 -:106560004415010001218D20EFF7ACFE70BD000045 -:10657000409C000000803801E8600100094A80006A -:106580001058400940010722024307480368002BC6 -:10659000FCDB42600906016001680029FCDB082081 -:1065A0003C008015010070470000E86001003020C9 -:1065B0000700B0B5041C0D1C0749A00008580028AE -:1065C00003D102218D20EFF780FE291C201CF6F755 -:1065D000A8FAB0BD0000E8600100B0B5041C0D1CB5 -:1065E00007493C00BC150100A0000858002803D151 -:1065F00002218D20EFF76CFE291C201CFFF7C4FF41 -:10660000B0BD0000E8600100F8B50D1C161CF7F7DE -:1066100017F9041C2868404F817800293BD1C178C4 -:10662000002958D13C00F8150100F8F7F8F9228E3E -:10663000618E8A4204D0A16A0918E069814210D9AA -:106640003849321C486B01304863206A01302062AF -:10665000386801303860E0686369291CEEF7D8FEBD -:10666000F8BD013212043C0034160100120C2286DF -:10667000A162B868002834D12C480C2300681B1A8A -:106680009A4207D219239B01AF2292015843101A54 -:10669000814226D30120B86001210C2000F07AFE4F -:1066A0001FE001291DD1C0783C0070160100172899 -:1066B0001AD1A08EE18E884214D3E968096809795D -:1066C00009060FD5606A321C01306062E0686369B8 -:1066D000291CEEF7A3FEE868016808310B2000F0E2 -:1066E0005CFEC3E70130A086A08D3C00AC16010023 -:1066F000E18D884204D103210220EFF7F5FDB8E7D0 -:1067000060684560866000686060F8680130F86025 -:10671000A08D411CA1850028ABD10848B969FDF7BF -:1067200061FE221C0221F12002F064F83C00E81610 -:106730000100A1E70000FC5A0100905C010018571D -:106740000100C460010080B5021C0221F02002F0AB -:1067500054F880BD0000002803D102484178C907E1 -:10676000FCD5704700000400070080B500063C001F -:106770002417010001D1F1F771FE80BD80B5F4F757 -:10678000E5FA80BD80B5F6F7EBF880BD0149002041 -:10679000087470477869010080B5C00703D50249C5 -:1067A000012000F01DFC80BD50C300000006000E5B -:1067B0003C0060170100012880B502D1F6F7E1F92D -:1067C00080BD0028FCD1F1F74CFE80BD000080B5F3 -:1067D000F6F7D7F980BD034980B500200874F6F7B5 -:1067E000FEF980BD00007869010080B50006000E4A -:1067F000F1F73C009C17010071FE80BD10B5012827 -:1068000008D0022803D0032801D0EFF7A7FDF6F740 -:10681000E9F910BD01F0F8FA041CFAF75DFD241A3D -:10682000FAF73EFD084900280BD0486A002808D036 -:10683000064884423C00D817010005D2011B012202 -:10684000072001F0F4FEE5E700204861E2E77869FF -:10685000010050C30000094980B5486900280CD0E8 -:10686000086ACA69801A002807DD002048610121F2 -:10687000072001F010FF3C0014180100F6F7B8F9EA -:1068800080BD00007869010080B500F0E7FB80BDA5 -:1068900080B500F03FFC0020F7F7D4FC80BD00007D -:1068A00080B500F037FCFDF76FFCF5F773FD30F0B5 -:1068B00047FB80BD044880B53C0050180100C16A08 -:1068C000006BF2F7DEFF0120F7F789F880BDA46CBA -:1068D000010010B5F3F741F80D4C002804D0012059 -:1068E000E064F7F7B2FC10BD01210120F3F7E9F8ED -:1068F000FDF74DFC606D002803D03C008C180100B2 -:10690000F3F782F8002801D0F5F74AFD0120F2F7ED -:10691000C1FC10BDA46C0100044880B5C16A006BC5 -:10692000F2F7B2FF0120F7F75DF880BDA46C01001B -:1069300080B500F0F5FBF5F733FDFCF73C00C81817 -:10694000010031FDF9F7CBFF0420F2F7A6FC80BD72 -:106950000000034880B5C16A006BF2F798FF80BD64 -:106960000000A46C010080B500F0DDFB0020F7F70B -:106970003CF830F0EEFA80BD000080B500213C000C -:10698000041901000120FFF719FA0120F2F788FC31 -:1069900080BD000080B500F0C9FBFCF707FD0121B8 -:1069A0000120FFF70BFA0420F2F77AFC80BD00000B -:1069B00080B500220021002000F08AFB80BD00008D -:1069C0003C0040190100034880B5826A012104207F -:1069D00000F081FB80BDD479010080B50022002148 -:1069E000032000F078FB80BD0000034880B5826A78 -:1069F0000121042000F06FFB80BDD479010080B537 -:106A000000223C007C1901000021032000F066FBFD -:106A100080BD0000064880B5816842690069511850 -:106A2000814203D90121012000F058FB80BD000004 -:106A3000D4790100064880B58288816800695118C0 -:106A4000814203D93C00B81901000121022000F065 -:106A500048FB80BD0000D479010010B5084C207BB4 -:106A6000216AF9F79CFAA1694218A0682169801887 -:106A7000884203D90121022000F033FB10BDD479F4 -:106A8000010080B500223C00F41901000021002023 -:106A900000F02AFB80BD00000006000E012880B532 -:106AA00002D1F6F78FF880BD0028FCD1F1F7FAFC8F -:106AB00080BD000080B5F6F785F880BD80B5000682 -:106AC000000EF1F729FD80BD3C00301A0100B0B581 -:106AD00002250228104C0BD1FBF747FC002801D1FE -:106AE000FEF74FFF2570A1680C48FDF7A8FCB0BD6C -:106AF00003280DD108487D231C380069DB0058436A -:106B0000191C40184108022000F03C006C1A0100DA -:106B100091FA2570B0BDF8F731F9B0BD7869010080 -:106B20003463010010B5054CE068002801D1EFF78F -:106B300039FC0220207000F0AFFA10BD7869010026 -:106B4000034880B5826A0121042000F03C00A81AA5 -:106B50000100D3FA80BDD479010080B50022002164 -:106B6000032000F0CAFA80BD000080B50022002199 -:106B7000002000F0C2FA80BD0000034880B54269E1 -:106B80000121012000F0B9FA80BDD47901003C0058 -:106B9000E41A0100064880B58288002A02D001214B -:106BA000022002E000220021002000F0A9FA80BDAE -:106BB000D479010010B5064C207B216AF9F7FEF963 -:106BC000A16942180121022000F09AFA10BD0000CC -:106BD0003C00201B0100D479010080B50022002177 -:106BE000002000F090FA80BD000038B5FAF741FEB1 -:106BF0000020F0F780F8009000AB1C885D88F8F763 -:106C00003CF9002C02D0FDF79EFA02E00120F6F7D5 -:106C10000AFF3C005C1B0100291C201CFCF7B8FC8F -:106C2000002C02D0F5F7E0FB02E0002000F0DCF9D8 -:106C30000320002C00D102200006000EF2F74EFBCC -:106C400038BD0000034880B5826A0121042000F0AD -:106C50005DFA80BD3C00981B0100D479010080B52D -:106C600030F09BF980BD80B500220021032000F0A8 -:106C700050FA80BD0000034880B54269012101201F -:106C800000F047FA80BDD4790100044880B58288BD -:106C9000002A03D001213C00D41B0100022000F097 -:106CA0003BFA80BDD479010010B5064C207B216AE7 -:106CB000F9F790F9A16942180121022000F02CFA9D -:106CC00010BD0000D479010080B5FCF793FB0121D1 -:106CD0000120FFF797F804203C00101C0100F2F798 -:106CE00006FB80BD000080B52FF06BFB00280AD0AA -:106CF0000120F2F7FCFAFAF72AFC002802D104205E -:106D0000F6F75DF880BD03211620EFF732FB80BD5A -:106D10000000024880B50068EEF73C004C1C010002 -:106D2000C5FB80BDD4790100034880B542690121CB -:106D3000012000F0F7F980BDD479010080B530F072 -:106D400035F980BDB0B5184CAA20005D042819D1D2 -:106D50000125E562256301F093F8A0663C00881CDC -:106D6000010001F0FCFDF2F72EFE00280ED00220FB -:106D7000F2F7C3FAA56001F086F864306060FAF7B4 -:106D80008AFD01210120FFF746F8B0BD0120F2F78E -:106D9000B4FA0020A06000210120FFF73CF83C007D -:106DA000C41C0100F2F766FE0028F1D0FAF776FD68 -:106DB000B0BD0000A46C010080B50020EFF7D6FE46 -:106DC00080BD000080B50120EFF7D0FE80BD00003F -:106DD000AC21095C024A09028918C0318160704700 -:106DE0003C00001D01007075010080B5012804D130 -:106DF00003C90968EEF764FB80BD01211420EFF799 -:106E0000C4FA80BD0000002802D1024840687047E3 -:106E10004068704700005875010010B50024F8F76D -:106E20001CFB3C003C1D0100002804D04030807A4F -:106E3000052800D10124201C10BD000004480021B9 -:106E4000406801E0016340680028FBD17047000002 -:106E500058750100B0B5041C0D1CF7F7A5F84034B7 -:106E6000E572B0BD3C00781D0100F8B5071CF8F7CD -:106E7000FAFA041C04D005211420EFF78CFA28E05C -:106E80000025144928024618301C443006221249B5 -:106E9000EEF72DFB002802D1AC208555341C0135BE -:106EA000032DEED3002C3C00B41D010014D0391C7E -:106EB000201CF8F72BF80949002020601839486891 -:106EC0006060002800D004604C60CA68002A03D0CB -:106ED0000121201CEEF7FEFA201CF8BD70750100A0 -:106EE0005846010080B5F8F73C00F01D0100C1FADA -:106EF000002804D106211420EFF753FA80BDF5F7DE -:106F000016FC80BD000080B5F8F7B3FA80BD10B55F -:106F1000094C2188022903D11420EFF742FA04E03A -:106F2000A3688A009850481C20803C002C1E010059 -:106F3000208801380004000C10BD000058750100C5 -:106F40000B1C111C084A80B51288904206D2DA68E0 -:106F5000C0001218142001F0BBFB80BD03211420D7 -:106F6000EFF722FA80BD0000587501003C00681E52 -:106F70000100084A80B51288904206D2C968C00054 -:106F80000918142001F0DBFB80BD04211420EFF769 -:106F90000EFA80BD0000587501000149C8607047B5 -:106FA00000005875010080B506224430EEF73C0021 -:106FB000A41E0100ABFA002801D1012080BD0020F1 -:106FC00080BD00001CB5144C2069002823D0207817 -:106FD0000A2801D000F0FCF8002060610F484079D9 -:106FE000A070002801D0012815D1FDF7EDFE019019 -:106FF0003C00E01E0100FDF782FE009000AB187916 -:107000001978401A187158795978401A58710198AE -:10701000F2F789FE0520207000F0BFF91CBD7C78D6 -:1070200001000C5A010008B5044A009014320020F7 -:10703000024B3C001C1F01000249F1F77DF908BD1D -:107040002C750100B1A80000B0B5002806D00128B9 -:1070500006D0022807D10C4C012507E00B4C04E0B8 -:107060000A4C2A3C01E0084CB634002500F02CFF05 -:107070000749896E3C00581F01000919091AA142ED -:1070800000D900212A1C162001F031FBB0BD71028D -:1070900000000C050000A46C01008CB500AB8E2133 -:1070A0001980FCF738F901906846FBF7A6FA8CBD09 -:1070B0000000BFB5134A3C00941F010001910D1C54 -:1070C000117C8843041C2143081C1074A0070BD5B5 -:1070D0000E4800900120029000F0FCFE0C49401880 -:1070E00003906846F9F76AFFE0070CD5F1F72CFD2D -:1070F000002803D0074885423C00D01F010000D281 -:107100000190064800906846F9F709FFBFBD78690D -:10711000010081EA000010270000A086010075EA46 -:10712000000010B50A4C606900280ED10120606192 -:10713000A1680748FDF7CBF900213C000C200100B5 -:10714000A068F9F7D1FB01220720044901F0D8FA21 -:1071500010BD00007869010034630100983A000016 -:1071600010B50C1C111C064A002B107003D000280F -:1071700002D1F9F7F5FD10BD201CF9F73C004820BD -:10718000010001FE10BDA0790100B0B50A4C051C3C -:10719000E36A201F0133E3620088002906D0A1685A -:1071A00089182161054A00F0FCFE01E000F0CFFEE5 -:1071B0002577B0BD0000D479010055E300003C0004 -:1071C00084200100011C034880B54088FFF7ECFED5 -:1071D00080BD0000987C0100034880B5C168183864 -:1071E0008088FFF7E1FE80BD707C010080B5002142 -:1071F000162001F0BFFA0121162001F0BBFA80BD74 -:107200003C00C020010010B50B4C20780A2810D09B -:10721000012060610A21132001F0AFFA0A2060709A -:107220002070FDF73CFB0120FDF7E9FB0020FAF799 -:10723000C4F910BD00007C78010010B50C4C002092 -:107240000B493C00FC2001002063E062503988615A -:107250002070084838210C38007A08558121182000 -:1072600001F08EFA2069012802D10020F5F73EFBDB -:1072700010BD0000F46E0100B0B51C4C00252C229E -:10728000011D201C3C00382101009AB0EEF739FAAC -:1072900018492C31081C007A8A69002A13D1022867 -:1072A00003D1A068002820D004E000281DD1606828 -:1072B00000281AD0800288610E4869462438006888 -:1072C000EFF7CBFB11E03C00742101000022022803 -:1072D00003D1A068002809D104E0002808D1606823 -:1072E000002803D18A61FFF7B1FF01E080028861C5 -:1072F000281C1AB0B0BD0000C86E0100F8B50C49DA -:10730000022048600B4900053C00B02101000860E4 -:107310000B4FB868F9687C68451A2E1C04E0A06819 -:107320006168EEF709F92468013DF8D27C60F868DD -:107330008019F860F8BD402007000010070044E302 -:107340000100F8B51F4E041C30693C00EC2101001F -:107350000121F9F799FA1D49600040181038817B26 -:107360001B4A5172C07B10741A4F1B4D0E2C0AD150 -:1073700001220221082001F0F3FB0320FF2141310B -:107380003986142108E00222012108203C0028222D -:10739000010001F0E8FB1249022039861021A97191 -:1073A000E8711048114A00191038C07B002803D03A -:1073B00001215173107301E0002050730021201C43 -:1073C000FDF7E5FD3069F9F708FBF8BD00003C006A -:1073D00064220100407C0100764601000C80070019 -:1073E0003080070000800700FF0100005C570100AB -:1073F000D080070010B5154C144A217800201832AF -:1074000005291DD006291BD0072901D0082906D13E -:107410003C00A022010091680520102900DB062015 -:1074200020700120A178002861700BD00020FAF7AD -:10743000DCF800216078F4F73CFA0A221E211320C0 -:1074400001F07FF910BDD16907201029E8DB082081 -:10745000E6E73C00DC2201007C780100B0B50D1CA1 -:10746000011C041C44310020F6F740FA3034002D92 -:1074700007D00EC80EC408C8103808C4F4F7C4F901 -:10748000B0BD1ECC1EC0B0BDF8B5081C111CF4F771 -:1074900087FA084C3C00182301000025084E084FCD -:1074A00006E0306B002803D035632068EEF755F80E -:1074B00038680028F5D0F8BD00005C5B0100E4FEF0 -:1074C0000100845A010080B50006000E00F007F8A4 -:1074D00080BD80B50A1C3C0054230100232101F02B -:1074E0002BFA80BDB0B50D1C041C122803D301215A -:1074F0002320EEF79BFF0649A000085804E012C8BD -:10750000281CEEF72EF8201C0028F8D1B0BD000092 -:10751000685B0100F8B50E1C3C00902301000025BB -:10752000041C122803D301212320EEF782FF134805 -:10753000A700C45908E02068B04203D103212320EA -:10754000EEF777FF251C6468002CF4D10C4A043A4E -:107550001068002801D0416811603C00CC23010074 -:10756000002804D102212320EEF766FFF8BD002198 -:1075700041600660002D01D06860F7E70149C851FD -:10758000F4E70000685B010070B50E1C051C0024C8 -:10759000122803D301212320EEF74EFF3C000824DC -:1075A00001000D4BAA00985804E00168B14204D0D4 -:1075B000041C40680028F8D170BD0028FCD0002CC5 -:1075C000416801D1995000E061600021034A0160E7 -:1075D000043A11684160106070BD685B01003C00B6 -:1075E00044240100F3B581B0002817D00178FF29A9 -:1075F00014D04578441902348027013C2678013D97 -:10760000BE43301CF8F782FC012181400298014002 -:1076100002D03E43301C2070002DEED1FEBD000094 -:107620003C0080240100104B10B55968411A0F2905 -:107630000DDC0E22D243914209DB1A1C926800290C -:1076400001DD002A03DA00290DDA002A0BDC0433FD -:1076500003C3FDF710FD041CFDF713FD002802D045 -:10766000201C3C00BC240100FFF792FE10BD00006E -:1076700018630100F8B5644C071C6078A178884253 -:107680000FD1081CFDF7CEF8E060042060700A22DC -:107690001E21132001F070F800216078F4F724F91E -:1076A000F8BD04283C00F82401006ED1584EFDF7C7 -:1076B000BCF800907178041C0020052921D201A398 -:1076C0005B5C5B009F440B0F141A02005148514948 -:1076D000604341187D20C000EEF787F811E0872055 -:1076E00060434D4902E03C003425010045204D49EE -:1076F0006043401808E04C48CD2109016043401A1E -:1077000002E0462060438238060648480721007997 -:107710003616081A001900906846FEF75FFD381CFF -:10772000FDF72EFB0099424A3C00702501004900FC -:10773000515A48433949041C8878002801D001284F -:107740001ED13549002803D13A480578042002E0CB -:10775000384845780C203049C968491B0818009002 -:107760006846FEF73EFD009833493C00AC25010019 -:1077700040002031085A2A494443C868A84201D928 -:10778000012500E000252E4821184000EEF7A2F860 -:10779000041C002D03D0FDF7C3FA02E03DE0FDF725 -:1077A000F3FA002F02D125480E3801E03C00E8250D -:1077B000010023480A380168611ACB1C01DB032948 -:1077C00000DD04600168A14201D2013104E0A14260 -:1077D00003D9002901D0013901600168381CFDF787 -:1077E000C0FB104C0A2060700A221320A1683C00E4 -:1077F0002426010000F0D2FF606800F0F7FA0028AC -:1078000000D15FE700F0BAFB1149002340180E4990 -:1078100060601E39C856B042F3D00E70311C002093 -:10782000FFF784FE4EE7FFF715FE4BE77C7801007B -:107830003C006026010060D7FFFF608F0100540B01 -:107840000000C90900008EFEFFFF0C5A0100125A09 -:10785000010020A1070040420F0030B50C4BFE2470 -:107860001B880440C0075D076D0FDB08C00F9C42FA -:107870000BD83C009C260100A218043A9A4207D378 -:107880001A1B895C0122AA40114001D00221084341 -:1078900030BD0000FA60010080B5002803D0011C53 -:1078A0001420F5F7FFFA80BDB0B5041CF7F708FD0A -:1078B000134D00283C00D82601001DD1A00716D585 -:1078C00002208443114801222A624068002813D014 -:1078D000F2F751F900280FD10B48E430807A0128E3 -:1078E00000D00022111C0120F2F7A5F904E000F0FD -:1078F0004EFBE861F2F73C00142701006BF9A96A1E -:10790000002902D0201CEDF75CFEB0BD606C0100C8 -:10791000B05701002048B0B58168012904D1007832 -:10792000002801D1FDF772FD1B4D803D2C1C7034E9 -:1079300020780338052818D23C005027010001A305 -:107940001B5C5B009F44041527272700FBF7F1FF12 -:10795000607B011CFF3161730028F7D10420207087 -:10796000A889F8F7DAF9011C00220F2000F025FFA2 -:10797000B0BDEFF7CEFF6A21495B3C008C270100C8 -:1079800088420BD0E889F8F7CBF9011C00230022CC -:107990000F2000F0F7FF07202070B0BDFDF73AFE82 -:1079A000B0BD000084660100F0B585B0041C038002 -:1079B000180C60800D1C5178107809023C00C82713 -:1079C00001004840A080D178907809024840E080CA -:1079D0005179107909024840208168461A491422D9 -:1079E000EDF7E3FE00230020D907C90F8C464200C3 -:1079F0005607760F6146891949006E5C49193C00AB -:107A00000428010049786F4609024E4081007958E8 -:107A10000F4F4900615A01304E403106360A760058 -:107A2000C90D795AF61901277F02F6193688714077 -:107A3000A65A8919A1520528DCDB2089C018013318 -:107A40003C0040280100082B2081D2DB05B0F0BDAE -:107A50000000D8560100D8520100F0B5051C0C1CDE -:107A60001E1C002089B04100535A013006AF7B52E2 -:107A70000528F8DB108900AB3A498019588468461C -:107A800018223C007C280100EDF798FE0020410000 -:107A90000A195278635C6F46120253408200BA584A -:107AA00006AF5200BA5A314F013053401A061B0A32 -:107AB0005B00D20DBA5ADB1901277F02DB191B8844 -:107AC0005A4006AB3C00B82801005B5AD21806ABFE -:107AD0005A520628DEDB617B207B00AB090248405E -:107AE000598C48404108C0034840198B40181883FE -:107AF000E17BA07B09024840198B48404108C00344 -:107B00004840598B40183C00F4280100588302205B -:107B1000410006AA8A18203AD28B01305308D203BA -:107B20005A4006AB5B5AD21806AB5A520628EFDB16 -:107B3000300A28707004400E202108436870AE702F -:107B40006178207800AB09023C00302901004840F0 -:107B5000598C4840C005000EE8700020410006AA7C -:107B6000535A4A190130137106AB595A090A517117 -:107B70000628F3DB09B0F0BD0000EC560100D85236 -:107B80000100F0B54668051C60303C006C2901001E -:107B900085B0049060E068680C2107690020EEF76A -:107BA0002DFE7061018904390904090C0181706995 -:107BB000006840180421EEF721FEF0617069202171 -:107BC000046804980422407B800108433C00A829F3 -:107BD0000100E07028694089A07028694089000A86 -:107BE000207029690C31A018EDF79BFD2078202129 -:107BF0004006400E0843607028690A300188013150 -:107C00000904090C018004D128690C3001683C008A -:107C1000E4290100013101603562617920790902AE -:107C20004018A17909044018E17909064318009326 -:107C3000A0782178090240180404240C1020EEF7E3 -:107C400013FFB06128693A1C0168009B01A80A3241 -:107C50003C00202A0100FFF7C8FE2869231C0168A8 -:107C6000B06901AAFFF711FF3668002E9CD10349C5 -:107C700004486A68F7F763FB05B0F0BD0000FD6BD0 -:107C80000000A06A0100013807494000095C002992 -:107C900006D03C005C2A010004491C39085C00281D -:107CA00001D001207047002070470000E6780100F5 -:107CB000FEB5051C002002901348171C00680C1C20 -:107CC0008678301CFDF728FA002801D10298FEBD05 -:107CD000002D08D13C00982A0100206800AB1871E3 -:107CE00060685871A068987103203880291C301C86 -:107CF00001AA00F00EF8002DECD000AB197921603C -:107D0000597961609979A1600C213980E2E7F86BBB -:107D10000100F8B5151C3C00D42A0100421E0138B0 -:107D200047003F181F483E18002906D001240322AF -:107D3000311C281CEDF704FD32E06878012400288E -:107D400005D02978081801380E2800D90024002C05 -:107D500026D0002A07D12A213C00102B010012480E -:107D6000EDF79FFC1C211148EDF79BFC0F48032207 -:107D7000291C301CEDF7E7FC0C487178C05DB27827 -:107D800000290ED0002A0CD001224318084D06E02D -:107D90004100491910398A73B7783C004C2B010017 -:107DA0000130CF738342F6D8FEF760F8201CF8BD8F -:107DB000EB620100CA78010070B5051C1C48002365 -:107DC000C056431C32D1A87AF8F70CF900260028D7 -:107DD000184C08D0E869E16B00290BD13C00882BD6 -:107DE000010066630121E163A66306E0A869E16B17 -:107DF000002902D06663A663E663A16B0131A1632B -:107E0000820301D50E4A1043E26B002A00D04042A3 -:107E1000626B1018606308290BD1002801DD3C005B -:107E2000C42B0100012003E0002803DA0020C04336 -:107E3000EFF762FE6663A66370BD0000F46B01009D -:107E4000846A01000000FEFF0C21054A41438918A5 -:107E500080B58978002901D1F3F7F2FA80BD0000DE -:107E60003C00002C0100607B010080B5011C00205B -:107E7000F7F703FA80BD80B5011C0120F7F7FDF983 -:107E800080BD02498968401AC00F70470000000198 -:107E9000070002498968081AC017013070470001BD -:107EA00007003C003C2C010005494A6801231A43A5 -:107EB0004A608A681018886048689843486070472C -:107EC0000001070010B5154B00210A019A58002A3D -:107ED00017D101240A019C50D21810730023537348 -:107EE000022301283C00782C01000E4A05D1C8006D -:107EF0008018103002789A4304E0C80080181030CF -:107F000002781A43027002E001310829E0DB0829F7 -:107F100004D101219920EEF7FEFA03490804000C70 -:107F200010BDAC7301003C00B42C010000600700E0 -:107F3000FFFF0000F7B5194F194E0C1CC100C919FD -:107F4000B268103181B0013A4A600B781D1C0D22D5 -:107F500093430B70012282403A73124B0001039A43 -:107F6000C0188260104A101C3C00F02C0100203028 -:107F7000877900AB1F70C0795870B0680330002358 -:107F8000261A01D5041C01234C600D70002B04D06F -:107F9000201CFFF78AFF0028FAD000AB1888D08495 -:107FA000FFBD00600700000107003C002C2D010010 -:107FB000AC7301000010070030B50020C0430B4C2B -:107FC000094B0022D10009190D7CED0707D549693D -:107FD0009D68491B00D50021814200D2081C013256 -:107FE000082AEFDB30BD0000000107003C00682DCF -:107FF000010000600700B0B508280BD2084D04014D -:108000002959002904D000F04AF800202851B0BDB9 -:10801000022100E003219920EEF789FAB0BDAC738C -:108020000100034900014018417B082211433C0034 -:10803000A42D010041737047AC73010001488068B2 -:10804000704700000001070070B50B4E094D00227B -:10805000D0008419207CC00707D56069FFF726FF90 -:10806000002802D0A868323060610132082AEFDBB4 -:108070003C00E02D010070BD000000010700006021 -:108080000700024AC00080180174704700000060B9 -:1080900007000449C0004118087C0823021C9A43C9 -:1080A0000A74704700000060070070B5082817D2F6 -:1080B0000E493C001C2E01008A680E4D013AC10099 -:1080C00049194A610C4B9A7910310C780D26B4434A -:1080D0000C700121814029739A71094A07490001F6 -:1080E0008018416070BD05219920EEF729FA70BD16 -:1080F000000107003C00582E01000060070020101E -:108100000700D1750000AC730100F8B59E461A4B0C -:1081100094469B681A4CC2001219013B5361151C0E -:10812000184CA6792A1C103213780D27BB43137004 -:108130000127124B87403C00942E01001F73A6714B -:10814000124E0001801963464360734683601378C2 -:10815000407BA679012718433843143500AB1E70C5 -:10816000E4795C70064B9B680333CC1A00D5191C6C -:108170002960107000AB18883C00D02E0100034C21 -:10818000203CE084F8BD00010700006007002010DB -:108190000700AC73010000B5011CFFF75EFF421839 -:1081A000101CFFF792FE0028FAD000BD0000891ACB -:1081B000401A9918884201D801203C000C2F010078 -:1081C0007047002070470000F8B50F1C041C002801 -:1081D00001D1EEF7EFF9211C0120FFF719FA412038 -:1081E000005D002801D1002504E0022801D1052509 -:1081F00000E00125E068EEF729FBA66B3C00482F64 -:108200000100002E10D0002F06D02F20025D206A22 -:10821000416B281CEDF744FAA069002801D0EEF765 -:1082200046FC206AEEF743FC201CEEF740FC301CB5 -:10823000F8BDB0B5041CC06B002809D020693C0013 -:10824000842F0100008BEEF755F9002803D0211C84 -:108250000620FFF7E3F9084D201CA96DFFF7BAFFD0 -:10826000002807D0E8680130E860286A01382862F1 -:10827000FCF778F8B0BD0000C469010010B5064CE9 -:108280003C00C02F0100E16DFFF7A7FF002804D0DC -:10829000E0690138E061FCF768F810BD0000C469CE -:1082A00001000C230C495843401810B54468A168DC -:1082B000002902D0201CEDF7F3F9E06B002808D06C -:1082C00020693C00FC2F0100008BEEF719F9002813 -:1082D00002D0201CF9F726F910BD0000607B0100D8 -:1082E000F8B522494868800006D40120400708609C -:1082F0004A69920000D448601D4F787EC306012071 -:10830000021CDB0E3C00383001009A400A6079699B -:108310008C688C602107890F09D0210704D50B21B7 -:108320009E20EEF728F900E078640C208443124880 -:108330003D68065D6C682C3406E0A0680068A060AB -:10834000E968281CEDF73C0074300100B2F9013EE9 -:10835000F6D2A068806800280DD0408900280AD095 -:10836000786C002807D178698068800703D10C21D8 -:108370009E20EEF703F9F8BD00100700CC6D010058 -:10838000B4440100094980B53C00B0300100087ECA -:10839000C206D20E01209040074A106000200A69F0 -:1083A000C04390600868243106C90369EDF786F977 -:1083B00080BDCC6D010000100700F8B54468061CB4 -:1083C0002C3420680D1C806800903C00EC300100CB -:1083D000002800D0C5602068006820604068002840 -:1083E00003D00A219E20EEF7CFF820684560281CB4 -:1083F00002E000224260081CC1680029F9D17168BE -:1084000060270B1C40339C469B78CA7E3C00283179 -:1084100001005B011207120F3B401A438B8FFF27AD -:108420003F041B043B401A4390231A4342606346B7 -:108430009A780132D207D20F9A70896BC160216895 -:1084400088600098002801D00098C5600A4F3C0061 -:1084500064310100BD79A06900280CD00022A2611E -:1084600074686069EFF72EFFE06A616940684860F0 -:10847000616901200860BD71F8BD0000201007008F -:10848000FEB544680F1C01942C34201C123002905D -:108490003C00A03101002CE00C20EEF700FB051C95 -:1084A000606800281DD10298002100900020EEF79E -:1084B0000EFA061C00980421EEF709FA011C019837 -:1084C000C07E0007000FD03070600198C07E0007AA -:1084D000000F3C00DC310100F0304860301CEEF74A -:1084E00019F96560E66001E0206805606068286051 -:1084F000256000206860A860381CFF300006000E70 -:10850000391C071C0029CAD16068A060FEBD0000AC -:10851000FFB5051C3C0018320100081C002681B084 -:10852000F4F72FFE041C02D06068FF2801D1062654 -:1085300028E0211C20310A78012A01D1032621E0FC -:10854000012725600F7011C51D48083D686103981B -:108550006A46E86004983C005432010028611A48D9 -:10856000A8611A48E8611A4828621A486862207EA1 -:10857000A168EDF7B3FE002806D1607EE1686A4687 -:10858000EDF7ACFE002807D00426311C9E20EEF744 -:108590000DF8301C05B0F0BD3C00903201006A4679 -:1085A0000F491D20EDF79DFE01210D48490701608F -:1085B000227E3B1CD206D20E93404360627ED206DE -:1085C000D20E974047604160E6E731330100D9326F -:1085D000010091310100DD3001003C00CC3201008E -:1085E000FD320100713301000010070042682C3297 -:1085F000506843680B6081684B890B818368002158 -:10860000D9604160816000685060002070470000C0 -:1086100070B54268FF269187106B0C043C0008334C -:108620000100051C3604344043685968B1432143B6 -:1086300059600068A842F7D1106B516940684860E2 -:1086400051690120086070BD0000B0B54368081C86 -:1086500059629A6200250AE04581C4682A1C3C00E0 -:1086600044330100002C03D19A7E1207120F1032FE -:108670004260201C0028F2D118694160196901206C -:10868000086002480068EDF737F8B0BD5C5B010098 -:1086900001200549400780B58860044801680D2025 -:1086A0003C0080330100FEF7E6FF80BD00000010B3 -:1086B0000700C4600100F8B50E4F0C4E002448209E -:1086C0006043C5194821281CEDF77BF81C20604346 -:1086D0008119281D1C22EDF7FEF81C23E8560549D8 -:1086E000FBF73C00BC330100CDF80134012CE9D389 -:1086F000F8BD0000B8440100CC6D01001532010046 -:10870000FFB5051C0A30061C81B0F2F7DDF8184FE2 -:10871000041C3988EFF7BCFC3288786802807288C4 -:10872000023002803C00F8330100B188124E4180D3 -:10873000288808364005002805DA6988039A201C35 -:10874000F7F701FD00E000207080F8F75EFC0121E2 -:1087500009030028308801D0884300E008433080B6 -:108760000548002200213C00343401001430EFF7AA -:1087700065FC201CF9F774F805B0F0BDB07A010073 -:1087800010B50E4C6068F8F795F92068006A00286B -:1087900013D1F8F7BFFC002808D021680120086237 -:1087A0001F210022832000F03C00703401009FF95B -:1087B00002E06068F8F721FAFFF797FC216808618A -:1087C00010BD147A0100FEB51B4E0F1C1D1C141C9D -:1087D000B060081CF7F72BFFB08034733562381C8B -:1087E00001AA02A9F7F725FF00AB3C00AC34010059 -:1087F000187A012818D118790B2808D1307F242342 -:108800000F49584340188068ECF788FFFEBD00AB65 -:1088100018790A2808D1F7F739FD071C291C201CF4 -:10882000F7F716FD3818B080307F24233C00E83479 -:1088300001000449584340184068ECF772FFE8E72C -:108840000000D479010094460100B0B5FFF753FC55 -:10885000041CFBF7FCFA0C4D29680969091B0C1A6A -:1088600002211F2000F08BF8142C06DD02223C00B0 -:1088700024350100211C1F2000F050F80120B0BD5C -:1088800029680120896A0029F9D00020B0BD0000C4 -:10889000147A0100F8B51A4D071CAE790121194C64 -:1088A00000202268002A14D1AE71A268D06806CADE -:1088B0003C0060350100ECF73CFFAE790021134A23 -:1088C000506901305061A0688068A0606268904281 -:1088D00006D10120206003E001300C340328E3DBE3 -:1088E000002F08D100290AD00A484068002806D085 -:1088F000FAF73C009C350100F5FF03E0012F03D09F -:10890000002901D1AE71CEE7AE71F8BD201007008D -:1089100018D90100A8600100705D010080B5012335 -:10892000F5F77CF880BD000080B50023F5F776F8F8 -:1089300080BD00003C00D8350100F8B5134B002481 -:108940001B8898421BD2114BC000C01845680668AE -:108950002868002817D10E4FA8684368B34209D190 -:10896000C3688B4206D10368934201D0531C01D1E6 -:108970000124476080683C00143601006B68834224 -:10898000EED103E001218020EDF740FE201CF8BD70 -:1089900056570100845D010029E30000F8B5174F28 -:1089A0000A1CBE79164D00236C6807E021689142CD -:1089B00002D12179814204D03C0050360100231CB1 -:1089C000E468002CF5D117E0002C15D0002B0DD158 -:1089D000E3680D486B600088002B02D1FFF7D1FBE4 -:1089E00006E00A4A9968FFF7F6FB01E0E068D86004 -:1089F0002868E0602C6002E001213C008C36010018 -:108A0000FFF7A4FFBE71F8BD201007007C5D0100D8 -:108A10002C7401002138010070B5094EB579F9F7C1 -:108A2000AFFE041C09D0201CEDF70CFB05498A6839 -:108A300080188860086801300860B5713C00C8364D -:108A40000100201C70BD20100700A860010009482B -:108A500080B54068021C0BE00169002907D0824202 -:108A600004D0816805480088FFF7E5FA80BDC0683A -:108A70000028F1D180BD7C5D01002C7401003C0018 -:108A800004370100054880B54268002A04D0044834 -:108A900000889168FFF7D2FA80BD00007C5D01007C -:108AA0002C74010005480168002904D0C068002822 -:108AB00001D00120704700207047000018D9010044 -:108AC0003C004037010080B5F6F7D1FA80BD131C99 -:108AD0000D4AB0B5128890420FD203290DD20A4A2E -:108AE000C00014580A4DAC4207D113500C2359430F -:108AF000084BC91880184160B0BD02218020EDF7F5 -:108B000094FD3C007C370100B0BD000056570100C9 -:108B1000845D010009A0000018D90100F8B50F1C00 -:108B20001E1C151C041C111CFFF74AFF331C2A1CB9 -:108B3000391C201CF4F78AFFF8BD0000F7B59446F5 -:108B4000FF2921D03C00B837010015480088814238 -:108B500021D2144A154EC8008518B4796868026895 -:108B6000002A03D1031D0CCB9A4211D043689A68A6 -:108B700042600E4A176901371761B4710022026022 -:108B80000098D86060463C00F43701001860197402 -:108B900028685860FEBDB471062100E007218020DE -:108BA000EDF74CFDF6E7000056570100845D01002B -:108BB00020100700A8600100B0B5144D6C68002CAF -:108BC00001D0844204D00C213C00303801008020C8 -:108BD000EDF737FDB0BDFFF7B8FAA168401A0D49AF -:108BE000884203DA10218020EDF72BFD21792268DD -:108BF0000120FFF7ACFFE3686B60002B05D007484E -:108C0000064A00889968FFF7FEFA3C006C380100BC -:108C10002868E0602C60B0BD7C5D010018FCFFFF9F -:108C2000213801002C740100B0B5154C0820211C1E -:108C300080310870134A4104116013480068134DD5 -:108C40006B69184001D1102000E000203C00A838DA -:108C50000100A8235B5D1843231C40331873516047 -:108C600020788008800020700020FFF712FBFFF7BB -:108C700072FA643028660138A06120780321084325 -:108C80002070B0BD000000900700001007003C00FD -:108C9000E438010010000700A46C010038B50A4C4C -:108CA000211C20318A7900AB1A70C979074D59709F -:108CB0006978884203D1F8F713FCFF20687000AB95 -:108CC0001888E08438BD0000001007004C7B0100CC -:108CD0003C0020390100F8B50B1C061C041D7F3335 -:108CE00014D033685D18356023881F180623FF569B -:108CF000EB1B336023881818817120880130000431 -:108D0000000C2080904201D300202080101C31688C -:108D1000ECF73C005C3901006DFEF8BD0E490A7CA1 -:108D200083781A430A74427883789A430B7C93437E -:108D30000B748A7C43781A438A748A7C03789A433A -:108D40008A74027843781A434B7C1A434A744A7CEB -:108D5000C07882433C00983901004A747047100083 -:108D60000700B0B5064D00242006000EEDF7F7F819 -:108D7000A100695808710134042CF5DBB0BD107BEB -:108D800001000B480C497D234269DB00002AC86BB7 -:108D900007D0C0181A013C00D43901009042C863C2 -:108DA00001D90748C8637047FF38F538C86398424F -:108DB000F9D2CB6370470000F4680100447D0100E4 -:108DC0007017000070B50D1C041C161CFBF7F6FA9A -:108DD000B0432843011C201C3C00103A010000F065 -:108DE000CCFA70BD000080B50B4A002909D00229D9 -:108DF0000FD1011C0848D2783830FFF778FF0649B8 -:108E000006E0011C044812792030FFF770FF034987 -:108E1000086080BD0000AC7C01003C004C3A0100C1 -:108E2000C8670100C467010080B50B4A002909D05A -:108E300002290FD1011C084852796830FFF75AFF08 -:108E4000064906E0011C044892795030FFF752FFB2 -:108E50000349086080BD0000AC7C01003C00883AFA -:108E60000100D0670100CC67010008B50421009122 -:108E7000817E4368032906D1011C0C3101206A461A -:108E8000ECF79AFC08BD1968C160FBE7000010B55B -:108E9000031C0020084C0021CA00121992783C00E3 -:108EA000C43A01009A4203D1C8000019406810BDBD -:108EB0000131090609160629F1DB10BDCC5A010063 -:108EC000F8B50F1C161C0025FEF78EF9041C0AD0FD -:108ED0004A20005D052806D1381CF1F781FE0028E4 -:108EE0003C00003B010001D001253460281CF8BD86 -:108EF000000070B50D1C161C0024FEF778F9002840 -:108F00000BD04A21095C052907D10169002904D148 -:108F10003060F1F704FD01242860201C70BDF8B515 -:108F2000061C3C003C3B010000250C1C081CF1F712 -:108F30005DFE002801D0002105E0201CF1F774FE41 -:108F4000002814D00121301CF4F780FB0090002889 -:108F50000DD0084F01250622311C381CECF7C2FC4D -:108F60000622211C3C00783B0100B818ECF7BDFC40 -:108F70000098F860281CF8BD0000707C01000021FA -:108F8000002806D04278072A03D1C079012800D1F1 -:108F90000121081C7047F8B5051C0027164EF1F793 -:108FA00028FE002807D03C00B43B0100F1F7C0FBCD -:108FB000002810D10024F1F7BBFC06E0F1F702FE17 -:108FC000002808D00124F1F799FD011C0622301C6D -:108FD000ECF78EFC0127002F0DD0211C281CF4F784 -:108FE0003BFB011C054806223C00F03B0100063813 -:108FF000C160291CECF77FFC0120F8BD0020FCE7D4 -:109000000000767C0100F0B5071C006802210468AE -:10901000786987B00140002500290591744E12D06F -:1090200022880121130502D4C0073C002C3C01001A -:10903000C11701316F480029006801D0013004E0F8 -:109040001106890E2D2901D1033030602088800758 -:1090500067D17869C00764D503AA04A9201CF7F773 -:109060004BFB00AB187C002807D0187C3C00683C08 -:109070000100022858D1187B4007400F042853D81C -:1090800020790599C007C01701300290002902D14C -:109090000298002848D10599002904D020880005AD -:1090A00001D400203060C020EDF7CBFD051C3C0052 -:1090B000A43C0100201C0A300690FEF7ADF8061C07 -:1090C000281C08302388021D111DDB0506D5069BD0 -:1090D0000360201C10301060201D0EE0231D136063 -:1090E0002288920505D5221C10320260069B0B6077 -:1090F0003C00E03C010004E0069B0360201C1030B3 -:1091000008602869F1F743FC002808D0012812D034 -:10911000022858D100AB187C002854D112E000ABD3 -:10912000187C02280BD1002E4DD04B20805D0228E8 -:1091300049D13C001C3D010007E063E000AB187C16 -:10914000002802D1381CFEF71BFF2088410430485C -:1091500011D5002E52D000AB197C002926D00299DF -:10916000002902D0B06A007800E0007801281DD004 -:10917000032843D13C00583D01001AE000AB197CA4 -:10918000022916D1197B042913D0197B0C2910D080 -:109190002249096800290CD0002E0AD00299002922 -:1091A00002D0B06A007800E00078012829D00328B6 -:1091B00027D02822391C3C00943D0100281C88300F -:1091C000ECF70AFC00AB197C281C80300171197B7C -:1091D00041716C606E611BE00599002914D0114843 -:1091E000846C002C10D00022002E04D04036B07ABF -:1091F000052800D1012200923C00D03D0100F87A00 -:10920000BA7A2969C307DB0F0698ECF700FB281C24 -:10921000EDF707FD0025281C07B0F0BD0000C46A6B -:1092200001006861010028610100C469010080B586 -:109230000220FFF770F880BD00003C000C3E0100EA -:10924000B0B51D4D012817D0A22806D0A32803D100 -:1092500001211520FFF708FCB0BD002901D11748F6 -:1092600002E07D20C000484300230122011C286049 -:109270001520FFF7A7FCB0BD012904D03C00483EF3 -:1092800001000229FAD100F02AF8B0BD6C68F5F7A8 -:10929000DEFCFEF7A8FF6860002C09D029680A23CD -:1092A0005943001B884203D901211520EDF717FA15 -:1092B000012215202968FFF7A6FBB0BD00003C0085 -:1092C000843E0100047901000087930301200449D2 -:1092D000400380B5086003211520EDF703FA80BD37 -:1092E00000100700074880B5BE210173017A1022E3 -:1092F000114301720023022215200349FFF768FC85 -:109300003C00C03E010080BD000000030700809FBC -:10931000D50080B5002803D00A1C1521A22002E048 -:1093200000221521A320FFF766FC80BD000010B5C8 -:1093300000F019F80A48BE210173037A1022934302 -:1093400001243C00FC3E0100234303720173017AB7 -:109350009143202211430172022215200249FFF796 -:109360005BFB10BD00030700809FD50080B5022184 -:109370001520FFF785FB0448BE210173017A1122F5 -:10938000914301723C00383F010080BD00000003A2 -:109390000700F8B5061C051C60360027446822E06B -:1093A00008210020EDF741FB6061018904390904BF -:1093B000090C01816069006840180421EDF735FB54 -:1093C000E0616069717B3C00743F010000688901C5 -:1093D000C17029690C310322ECF7BAFA28690C3004 -:1093E0000168013101602562A7612468002CDAD18F -:1093F000024903486A68F6F7B3F8F8BDFD6B000050 -:10940000A06A010080B500073C00B03F01000009E0 -:109410000902090A084302490860FFF720FF80BDDE -:1094200000006000070008001400C8000000E80306 -:10943000000010001400C8000000E80300001C0039 -:109440001400C8000000E80300003C00EC3F0100ED -:109450002401070032000000E8030000400601007C -:109460000600000007000000416E62697E64616FC3 -:109470006F00000052656C6561736520365F375F71 -:109480003135204275696C6420323A353C00284001 -:1094900001003239382053657020303420323030AA -:1094A000392031373A31333A3230202848573D3469 -:1094B0003A332C4254434F455829000000003200F3 -:1094C0001C00102030405060FFFFFFFFFFFF3C00FA -:1094D00064400100000000000100000001000000E5 -:1094E00000000000E8037000000000000100000020 -:1094F0000000000002000000D0073800000000005B -:109500000100000001000000040000007C151500AF -:109510003C00A0400100000000000100000001002C -:1095200000000B00000070171E0001000000010089 -:109530000000000000000C000000282316000100BD -:109540000000010000000000000012000000F82AE6 -:109550000B003C00DC4001000000000001000000A6 -:109560000100000016000000E02E120001000000C3 -:1095700001000000000000001800000050460E002E -:1095800001000000010000000000000024000000B5 -:10959000F05508003C0018410100010000000000E7 -:1095A0000000010000002C000000C05D0E00010062 -:1095B0000000010000000000000030000000E88012 -:1095C0000400010000000000000001000000420053 -:1095D0000000A08C0A003C00544101000100000082 -:1095E00001000000000000004800000080BB0A00ED -:1095F0000100000001000000000000006000000009 -:10960000F0D20A000100000001000000000000008C -:109610006C000000C00090003C0090410100C000C0 -:109620009000C00090001400100014001000C00052 -:1096300090001400100014001000C00090001400EE -:109640001000C0009000140010001400100014005E -:109650001000C0009000600048003C00CC410100B8 -:109660006000480014001000140010006000480062 -:1096700014001000140010006000480014001000D6 -:1096800060004800140010001400100014001000C6 -:10969000020004010B020C03120416053C000842F0 -:1096A00001001806000E000E2407000E2C083009D9 -:1096B000000E000E000E420A000E480B000E000EB7 -:1096C000000E000E000E600C000E000E6C0D00006F -:1096D00000000000000000000080C0FFFFFF3C0011 -:1096E00044420100B6FFFFFFD3FFFFFFC9FFFFFFAA -:1096F000FFFFFF7F000000000000000000000000EE -:1097000000000000000000000000000051B0000058 -:109710000C00000051B000000C00000059AF000028 -:109720003C008042010000000000A5AF00000000E6 -:1097300000004DAF00000600000000000000000027 -:10974000000045B00000060000000000000000001E -:109750000000D5AF000000000000ADB00000000028 -:1097600000003C00BC42010095DB0000000000004E -:1097700095DB00000000000099B000000C00000024 -:1097800000000000000000000000000000000000D9 -:1097900000000000000000000000000000000000C9 -:1097A000000000003C00F8420100000000002D17FE -:1097B00001003517010021170100D99C000049174D -:1097C00001003D170100D19C0000D19C00001D1A32 -:1097D0000100D19C0000011A0100311A0100251A74 -:1097E00001003D1701003C0034430100811A0100D3 -:1097F000D19C000079170100D99C00005D17010081 -:10980000A11701009517010081170100211801001F -:10981000F5170100000008000C000000100008000F -:1098200008000000010000003C007043010002003D -:109830000000040000000800000010000000191CD7 -:1098400001008941000089410000854100008541F7 -:1098500000008541000085410000894100008541EC -:10986000000085410000351B01003C00AC430100B5 -:109870009D1B0100011C010089410000894100007D -:109880008941000085410000651801002918010088 -:1098900039180100BD180100894100004D18010070 -:1098A000A518010085410000011901003C00E843B2 -:1098B0000100D9180100ED180100151901008941B6 -:1098C0000000894100008941000085410000894174 -:1098D000000089410000691C010089410000711CE1 -:1098E00001008941000089410000FDDB00003C00CF -:1098F000244401001D7C000000008000F5DA000017 -:1099000014008100FDDD000008008200C5DD0000BC -:109910003800830045DC00001000840099DC000062 -:109920000C00860039DC00001000880011DE000009 -:109930003C006044010010008A0035DD00000C008E -:109940008C00ADDF00001C008E00C9DE0000380076 -:109950008F00EDDC00003800900075DF00000C0087 -:1099600091008DDC00000C009300B9DD00000C00BC -:1099700094003C009C44010000080808100C0C0CEA -:10998000080C080C080C0808080814080814003013 -:109990000001010200000000AD300100153001009F -:1099A00020300700303007000607020300000000E7 -:1099B000000000003C00D8440100FFFFFF00FFFF53 -:1099C000FF00FFFFFF000000000080C90200943F7D -:1099D0000300E08B5A00053A8500C8F20600F84CF7 -:1099E000560020A73D00B74A0000B74A000000001B -:1099F0000000000000003C001445010001010102CC -:109A00000202030303040404050600002D7C000089 -:109A10000000FF00FD9500000800FF00ED9700002A -:109A200008008200CD9500000C0083004D960000D8 -:109A30000C0085002D7C00003C005045010000001A -:109A4000FF002D7C00000000FF002D7C00000000C6 -:109A5000FF003D9600000C008900D9970000080027 -:109A60008A00919500000800FF002D7C0000000096 -:109A7000FF002D7C00000000FF003C008C45010031 -:109A8000F997000008008D002D7C00000000FF0009 -:109A90002D7C00000000FF00C997000030009000FE -:109AA0001195000018009100159600000800920022 -:109AB000599500003C009300299600003C00C845E1 -:109AC000010008009400A19500000800950081970E -:109AD00000000C0096006D97000010009800000038 -:109AE00000000000FF00000000000000FF00000870 -:109AF00008080808000000100800000800103C00DA -:109B000004460100080C0C0C0C1C0C0C0800000096 -:109B10000D8B0000F58A0000E98A0000018B00002F -:109B200014080C0C100C0000B1980000800000001C -:109B300019990000810000003D7C000080000000B9 -:109B40003C00404601003D99000082000000099958 -:109B50000000830000003D7C000085000000000044 -:109B6000000000000102020104040808813780F3AC -:109B7000AAAA03000000AAAA030000F86DA96DA913 -:109B80006EA93C007C4601006EA86EA86EA86FA767 -:109B90006FA76FA76FA66FA670A670A570A4000030 -:109BA000B51B0100C91B0100E11B0100E59C000081 -:109BB000A51B0100E59C0000891B0100D59C00004D -:109BC000D59C00003C00B8460100D11A0100E51AFE -:109BD0000100051B0100251B0100B11A0100E59CD5 -:109BE00000009D1A0100D59C0000C11A01008919CE -:109BF0000100A9190100C9190100F1190100791921 -:109C00000100E59C00003C00F446010065190100DC -:109C1000D59C0000D59C0000D59C0000D59C000080 -:109C2000D59C0000D59C0000D59C0000551C01006F -:109C3000451C0100451C0100D59C0000D59C00007E -:109C4000D59C0000D59C00003C0030470100D59C0D -:109C5000000055190100E59C00004119010031196F -:109C60000100D59C000002050A00000002040A0061 -:109C70000000C5200000212100002521000039211D -:109C8000000049210000552100003C006C47010004 -:109C900061210000ED2100000D22000021220000C2 -:109CA0003D22000049220000C5220000E122000000 -:109CB000F5220000E91F0000E91F0000E91F000075 -:109CC000E91F0000E91F0000112300003C00A84725 -:109CD00001001D23000089230000A5230000B923F3 -:109CE0000000112000001D2000006D2000008D20CC -:109CF0000000B92000000001020303050606080960 -:109D000008090909C480CA8080808080D0803C0016 -:109D1000E4470100D6D9DCDFE2808080E5E880807E -:109D20008080EBEEF1F4F7FAFD0001000200030081 -:109D30000400050006000700080009000A000B00E7 -:109D40000C000E00100011001300160018001B007C -:109D50003C00204801001E00220026002B0030009D -:109D600036003C0044004C0055005F006B0078005A -:109D700086009700A900BE00D500EF00FF7F0C0011 -:109D8000060002000000FEFFFCFFFBFFFAFFF9FFE8 -:109D9000F8FF3C005C480100F7FFF6FFF5FFF4FF19 -:109DA000F3FFF2FFF1FFF0FFEFFFEEFFEDFFECFF3F -:109DB000EBFFEAFFE9FFE8FFE7FFE6FFE5FFE4FF6F -:109DC000E3FFE2FFE1FFE0FFDFFFDEFFDDFFDCFF9F -:109DD000DCFF00003C00984801000000000000008B -:109DE0000000B17C4100115A40E2B27C4100055AAA -:109DF00040E2AF7C4100F95940E2B07C4100ED59AE -:109E000040E2246701000E0000E35C6701000E00E1 -:109E100000E30A6101003C00D4480100010000E3B6 -:109E20000E610100010000E3326701000E0000E353 -:109E30006A6701000E0000E30B610100010000E30E -:109E40000F610100010000E3406701000E0000E324 -:109E5000786701000E0000E33C00104901000C612E -:109E60000100010000E310610100010000E34E6702 -:109E700001000E0000E3866701000E0000E30D61A3 -:109E80000100010000E311610100010000E3C0488E -:109E900001000400000AE04801003C004C490100B8 -:109EA0000400000A004901000400000A20490100E2 -:109EB0000400000A18670100040000E2287501018F -:109EC0007DA940E22C750100040000E2207501002C -:109ED000040000E244750100040000E23C008849EF -:109EE0000100F0590100040000E200000000000041 -:109EF00000000000000000000000247501000400C4 -:109F000000E2B87C0100040000E28DA9000001001D -:109F100000DA1D750100010000E2C46701003C0089 -:109F2000C4490100040000E200000000000000003D -:109F3000215900000E0000D9C8670100040000E2AA -:109F4000CC670100040000E2D0670100040000E2D9 -:109F500065D90000040000DAA5D90000040000DA89 -:109F60003C00004A010001590000010000DA32679C -:109F700001000E0000E36A6701000E0000E31159C2 -:109F80000000010000DA0000000000000000B048FE -:109F900001000200000AA04801000200000A404936 -:109FA00001003C003C4A01000500000A684901002C -:109FB0000900000A6C570100040000E2386101004A -:109FC000040000E20000000000000000AC6E010090 -:109FD000040000E2B06E0100040000E270570100CE -:109FE000040000E23C00784A0100E8590100080042 -:109FF00000E3DC5801144DFD40E32C59011439FDF8 -:10A0000040E3C05801000E0000E300000000000023 -:10A0100000000000000000000000647341003D2EBD -:10A0200044E27C5901143C00B44A01009D2F44E3F2 -:10A030005C5701000E0000E2792E0400010000DBF5 -:10A04000A0580100020000E3A2580100020000E352 -:10A05000A05701000E0000E3D1880100010000DAE2 -:10A060001D890100040000DA3C00F04A01009588D7 -:10A070000100040000DB312F04000E0000D9C52EC2 -:10A0800004000E0000D9686C010115D540E2C057EC -:10A090000100080000E3C8570100340000E39C6C95 -:10A0A0000100080000E3B05801033C002C4B010004 -:10A0B000E9D440E2BC580100040000E29DA3000086 -:10A0C000600000D970790100040000E27879010095 -:10A0D000040000E27C5A0100040000E25D1C000064 -:10A0E000110000D9246E0100040000E23C00684B1E -:10A0F000010018580105D5D540E3FC5701001400B4 -:10A1000000E3048E0103E5D540E3005B0100040099 -:10A1100000E2185B0100400000E2D4670100040087 -:10A1200000E28D370000040000DBBD3600003C007B -:10A13000A44B0100040000DBFC600100020000E20F -:10A14000907D0100040000E270690100040000E25B -:10A150000000000000000000B04901001A00000AE1 -:10A16000904B01000600000AA458810005FD40E361 -:10A170003C00E04B0100804A01000C00000A0C5A30 -:10A180008101252D44E3E04A01000300000A186321 -:10A190004100FDBB40E208570100010000E29C487D -:10A1A0000100040000E20000000000000000F84A86 -:10A1B00001003C001C4C01000200000ACC740100AC -:10A1C000030000E365734100A92E44E2F659010142 -:10A1D000D12C44E3084B01000400000A07000000F2 -:10A1E0000100006A284B01000200000A887D01007E -:10A1F000040000E23C00584C010000750104656F4A -:10A2000040E3BC7801000E0000E3384B010004007D -:10A21000000A0457010004000062584B01000200CC -:10A22000000A804B01000200000A684B0100030095 -:10A23000000A8C7D01003C00944C0100040000E207 -:10A24000392D0400040000DB947D0100040000E2CD -:10A2500000000000000000000000000000000000FE -:10A260000000000000000000104001000000006439 -:10A27000A84C01000400000A3C00D04C0100000082 -:10A28000000000000000C84C01000100000AD04C92 -:10A2900001000200000A0000000000000000E77A50 -:10A2A0000100010000E2E87A0100010000E2000084 -:10A2B000000000000000ED7A01003C000C4D0100A0 -:10A2C000010000E2EE7A0100010000E2000000005F -:10A2D00000000000F37A0100010000E2F47A0100BE -:10A2E000010000E20000000000000000F97A010017 -:10A2F000010000E2FA7A0100010000E23C00484D52 -:10A300000100E84C01000300000A004D01000300B9 -:10A31000000A184D01000300000A304D010003003F -:10A32000000A905C0100040000E2945C010004005B -:10A3300000E2985C0100040000E29C5C01003C002B -:10A34000844D0100040000E2A05C0100040000E272 -:10A35000A45C0100040000E2A85C0100040000E22B -:10A36000AC5C0100040000E2B05C0100040000E20B -:10A37000B45C0100040000E2B85C0100040000E2EB -:10A380003C00C04D0100BC5C0100040000E2C05C68 -:10A390000100040000E2C45C0100040000E2905CE3 -:10A3A0000100380000E3684D01000E00000AD84D9E -:10A3B0000100020000FA1261810131D540E306611B -:10A3C00001003C00FC4D0100020000E20B610100B5 -:10A3D000010000E30F610100010000E308610100DA -:10A3E000020000E2507B0100040000E200000000D7 -:10A3F00000000000384E01000E0000649C5701016F -:10A40000918841E33C00384E01006E41676FE26580 -:10A4100060696F20414200000000F04D010009001A -:10A42000000A484E01000100000AE84D0100010049 -:10A43000000A0000000000000000484D0100040078 -:10A44000000A286101013C00744E0100BDD540E2C4 -:10A450006961410085D540E230610100040000E2FD -:10A4600034610100040000E23C610100040000E2EC -:10A4700034610100040000E244610100040000E2D4 -:10A48000000000000400006A3C00B04E0100704E65 -:10A4900001000800000A18610100020000E21C61CE -:10A4A0000100040000E220610100020000E22461DA -:10A4B0000100040000E2B84E01000200000AC84E8C -:10A4C00001000200000AD84E01003C00EC4E0100E1 -:10A4D0000200000A96480100060000E3E062010065 -:10A4E000040000E2000000000400006A9B7D0100FF -:10A4F000010000629C7D010002000062607C01009E -:10A50000040000E2010000000400006A3C00284F43 -:10A5100001002D6301000100006200000000000046 -:10A520000000000000000000000049D500000E00FF -:10A5300000D9F467010002000062467D01000100BD -:10A5400000629C7C0100040000E2987C01003C0059 -:10A55000644F010002000062A07C0100060000625E -:10A56000587C010002000062647C01000600006269 -:10A570005A7C0100020000626A7C01000600006251 -:10A58000010000000400006AE4620100040000E22F -:10A590003C00A04F0100E8620100030000E200005F -:10A5A00000000400006A000000000400006A0100CE -:10A5B00000000400006A000000000400006A0000BF -:10A5C00000000400006A000000000400006A0000AF -:10A5D00000003C00DC4F01000400006A00000000A5 -:10A5E0000400006A000000000400006A000000008F -:10A5F0000400006A000000000400006A000000007F -:10A600000400006A000000000400006A000000006E -:10A610000400006A3C001850010000000000040023 -:10A62000006A000000000400006A0000000004004E -:10A63000006A000000000400006A0000000004003E -:10A64000006AF04E01002A00000A01000000040028 -:10A65000006A752A01003C00545001000C0000DB28 -:10A66000020000000400006A752A01000C0000DBF3 -:10A67000030000000400006A752A01000C0000DBE2 -:10A68000040000000400006A752A01000C0000DBD1 -:10A69000050000000400006A3C0090500100752A8B -:10A6A00001000C0000DB060000000400006A752AAF -:10A6B00001000C0000DB070000000400006A752A9E -:10A6C00001000C0000DB080000000400006A752A8D -:10A6D00001000C0000DB090000003C00CC50010030 -:10A6E0000400006A752A01000C0000DB0A0000006B -:10A6F0000400006A752A01000C0000DB0B0000005A -:10A700000400006A752A01000C0000DB0C00000048 -:10A710000400006A752A01000C0000DB3C000851AF -:10A7200001000D0000000400006A752A01000C0001 -:10A7300000DB0E0000000400006A752A01000C0016 -:10A7400000DB485001000200000A585001000200DE -:10A75000000A685001000200000A785001003C0025 -:10A76000445101000200000A885001000200000A62 -:10A77000985001000200000AA85001000200000ADF -:10A78000B85001000200000AC85001000200000A8F -:10A79000D85001000200000AE85001000200000A3F -:10A7A0003C0080510100F85001000200000A0851ED -:10A7B00001000200000A185101000200000A405086 -:10A7C00001000100000AE84E01000100000A00003B -:10A7D0000000000000000000000000000000B04E7B -:10A7E00001003C00BC5101000100000A0000000013 -:10A7F00000000000285101000E00000A00000000C7 -:10A800000000000000000000000000000000000048 -:10A810000000000000000000000000000000000038 -:10A82000000000003C00F8510100985101000C00AC -:10A83000000A504E01000400000AE04C0100010033 -:10A84000000A0000000000000000C04B01001D00D5 -:10A85000000AF85101000500000A248007000000EA -:10A8600000001D8007003C00345201000800000079 -:10A870002A8007005C00000024800700020000001E -:10A880001D800700200000002A8007006A000000E9 -:10A8900024800700020000001D8007002000000047 -:10A8A0002A8007006A0000003C007052010000018D -:10A8B00002030405060708090A0B0C0D0E0F101100 -:10A8C00012131415161718191A1B1C1D1E1F0163CD -:10A8D0000000A1630000C5630000B1620000C56311 -:10A8E0000000216300004D6300003C00AC520100F9 -:10A8F000A163000001630000A163000006050505D7 -:10A9000005050505050505050505030506070809EF -:10A910000A0A0C0D0E0F0F1011000000A5C684F8D6 -:10A9200099EE8DF60DFFBDD6B1DE54913C00E85294 -:10A93000010050600302A9CE7D5619E762B5E64DCD -:10A940009AEC458F9D1F408987FA15EFEBB2C98EAF -:10A950000BFBEC4167B3FD5FEA45BF23F75396E479 -:10A960005B9BC2751CE1AE3D6A4C5A6C417E3C005B -:10A970002453010002F54F835C68F45134D108F987 -:10A9800093E273AB53623F2A0C08529565465E9D75 -:10A990002830A1370F0AB52F090E36249B1B3DDF47 -:10A9A00026CD694ECD7F9FEA1B129E1D74582E3412 -:10A9B0003C00605301002D36B2DCEEB4FB5BF6A424 -:10A9C0004D7661B7CE7D7B523EDD715E9713F5A665 -:10A9D00068B900002CC160401FE3C879EDB6BED451 -:10A9E000468DD9674B72DE94D498E8B04A856BBB2C -:10A9F0002AC53C009C530100E54F16EDC586D79A49 -:10AA000055669411CF8A10E9060481FEF0A04478BF -:10AA1000BA25E34BF3A2FE5DC0808A05AD3FBC21A1 -:10AA2000487004F1DF63C17775AF634230201AE5E7 -:10AA30000EFD6DBF3C00D85301004C811418352623 -:10AA40002FC3E1BEA235CC88392E5793F25582FC34 -:10AA5000477AACC8E7BA2B3295E6A0C09819D19EC8 -:10AA60007FA366447E54AB3B830BCA8C29C7D36B50 -:10AA70003C2879A7E2BC3C00145401001D1676ADB9 -:10AA80003BDB56644E741E14DB920A0C6C48E4B82F -:10AA90005D9F6EBDEF43A6C4A839A43137D38BF2B6 -:10AAA00032D5438B596EB7DA8C0164B1D29CE04940 -:10AAB000B4D8FAAC07F325CF3C0050540100AFCA1C -:10AAC0008EF4E9471810D56F88F06F4A725C24380D -:10AAD000F157C773519723CB7CA19CE8213EDD96AB -:10AAE000DC61860D850F90E0427CC471AACCD890C1 -:10AAF000050601F7121CA3C25F6A3C008C540100DA -:10AB0000F9AED06991175899273AB92738D913EB7C -:10AB1000B32B3322BBD270A98907A733B62D223CB1 -:10AB2000921520C94987FFAA78507AA58F03F85952 -:10AB30008009171ADA6531D7C684B8D03C00C854EA -:10AB40000100C382B029775A111ECB7BFCA8D66DB9 -:10AB50003A2CC6A5F884EE99F68DFF0DD6BDDEB170 -:10AB6000915460500203CEA9567DE719B5624DE6B7 -:10AB7000EC9A8F451F9D8940FA87EF15B2EB3C0098 -:10AB8000045501008EC9FB0B41ECB3675FFD45EA3C -:10AB900023BF53F7E4969B5B75C2E11C3DAE4C6A44 -:10ABA0006C5A7E41F502834F685C51F4D134F90848 -:10ABB000E293AB7362532A3F080C955246659D5E43 -:10ABC0003C0040550100302837A10A0F2FB50E096F -:10ABD00024361B9BDF3DCD264E697FCDEA9F121B9D -:10ABE0001D9E5874342E362DDCB2B4EE5BFBA4F6F9 -:10ABF000764DB7617DCE527BDD3E5E711397A6F533 -:10AC0000B9683C007C5501000000C12C4060E31F86 -:10AC100079C8B6EDD4BE8D4667D9724B94DE98D410 -:10AC2000B0E8854ABB6BC52A4FE5ED1686C59AD7B5 -:10AC3000665511948ACFE9100406FE81A0F078448D -:10AC400025BA4BE33C00B8550100A2F35DFE80C07D -:10AC5000058A3FAD21BC7048F10463DF77C1AF7551 -:10AC600042632030E51AFD0EBF6D814C1814263565 -:10AC7000C32FBEE135A288CC2E39935755F2FC8202 -:10AC80007A47C8ACBAE73C00F4550100322BE69590 -:10AC9000C0A019989ED1A37F4466547E3BAB0B8322 -:10ACA0008CCAC7296BD3283CA779BCE2161DAD76A8 -:10ACB000DB3B6456744E141E92DB0C0A486CB8E4FD -:10ACC0009F5DBD6E43EFC4A63C003056010039A81D -:10ACD00031A4D337F28BD5328B436E59DAB7018C5E -:10ACE000B1649CD249E0D8B4ACFAF307CF25CAAF1F -:10ACF000F48E47E910186FD5F0884A6F5C723824DB -:10AD000057F173C79751CB23A17C3C006C560100CF -:10AD1000E89C3E2196DD61DC0D860F85E0907C424B -:10AD200071C4CCAA90D80605F7011C12C2A36A5FB1 -:10AD3000AEF969D0179199583A2727B9D938EB134A -:10AD40002BB32233D2BBA970078933A73C00A85686 -:10AD500001002DB63C221592C9208749AAFF5078E0 -:10AD6000A57A038F59F809801A1765DAD73184C696 -:10AD7000D0B882C329B05A771E117BCBA8FC6DD600 -:10AD80002C3A0400000000000000010000003C001C -:10AD9000E45601000200000003000000050000006E -:10ADA000000000000100000002000000030000009D -:10ADB00004000000010000000172657145727252CA -:10ADC0006561736F6E000000010000000500000067 -:10ADD0003C0020570100C48E0100249A01000000AD -:10ADE000000030000000249A0100A4B2010000001D -:10ADF00000006C000000A4B2010014C801000000B3 -:10AE00000000C00000001020304050BB30000100A6 -:10AE100000003C005C5701001416181A1C1E20226A -:10AE20002426282A2B2C01007017000001000000A6 -:10AE30000D250000413F0100652901000D2500009E -:10AE4000F55E0000413F0100413F010002040B0C90 -:10AE5000121618243C00985701003048606C01001D -:10AE60000000101010101010101010101010101002 -:10AE700000006400000001000000FFFFFFFF010070 -:10AE80000000000210121100000118000000020072 -:10AE90000000010000003C00D45701000000000049 -:10AEA000000000000200000004000000000000009C -:10AEB00000000000E093040040420F00000000008A -:10AEC0000100000000800000DF40CFFD0040830053 -:10AED00000000000010200003C00105801000000CA -:10AEE0000000000000000000000040008081000021 -:10AEF0008000BFFF7F7E0102000000000000000014 -:10AF0000000001000000786F010000000000B86F31 -:10AF1000010000000000F86F01003C004C580100E7 -:10AF2000000000003870010000000000787001008F -:10AF300000000000B870010000000000F87001007F -:10AF4000000000003871010000000000787101006D -:10AF50000001000090710100000100003C008858D1 -:10AF60000100A87101000001000000050A01060BA4 -:10AF700002070C03080D040900000303010100048B -:10AF800000040406161E1F0000000000000100005F -:10AF900080000000000000FFFFFF181818183C0098 -:10AFA000C458010018181818181818181818000094 -:10AFB000618B4A00618F4A00618B4A0005E3C00043 -:10AFC00005CBC00005BBC00085BAC00085A2C0008B -:10AFD0008592C000858AC000857AC0004589C0007E -:10AFE0003C00005901004571C0004569C000456141 -:10AFF000C0004559C0004551C0004549C000454109 -:10B00000C0004539C0004531C0004529C000452178 -:10B01000C000602D0600602D0600602D0600602D2A -:10B0200006003C003C590100602D06006028060027 -:10B030005026060050210600501F0600501C060036 -:10B04000501A06005018060050160600501406004C -:10B050005012060050100600500E0600500C06005C -:10B06000500A06003C00785901002B0B06001D75A4 -:10B07000C0001D75C0001D75C0001D75C0001D7588 -:10B08000C0001D75C0001D6DC000DD5BC000DD4B44 -:10B09000C000DD43C000DD3BC000DD33C000DD2B60 -:10B0A000C000DD23C0003C00B4590100DD1BC0001E -:10B0B000DD13C000DD13C000DD13C000DD13C000D0 -:10B0C000DD13C000050505040403030202010100AD -:10B0D000000005050504040303020201010000004D -:10B0E00000000000881300003C00F0590100070038 -:10B0F000000080005B004002E0FDF200B8FCA4010B -:10B1000000000F0000000F000000030B9F5F07010D -:10B110002A04210417040E040404FB03F103E803CA -:10B12000C903AA038A036B034C033C002C5A010099 -:10B130002D030E03EE02EC02010316032B03400362 -:10B1400055036A037F039403A903BE03D303E803F3 -:10B15000BE0394036A030002040607090A0B0C0DE0 -:10B160001010101010101010101000033C00685A3E -:10B17000010005080B0E1010101010101010101008 -:10B18000101010100000010000000100000000007D -:10B1900000000000000000000000000000000000AF -:10B1A00000000000000000000000000000003C0063 -:10B1B000A45A010000000000000000000000000090 -:10B1C000000000000000000000000000000000007F -:10B1D000000000000000000000000000000000006F -:10B1E000000000000000000000000000000000005F -:10B1F0003C00E05A010000000000000000000000D8 -:10B20000000000000000000000000000000000003E -:10B21000000000000000000000000000000000002E -:10B22000000000000000000000000000000000001E -:10B2300000003C001C5B010000000000000000005A -:10B2400000000000000000000000000000000000FE -:10B2500000000000000000000000000000000000EE -:10B2600000000000000000000000000000000000DE -:10B27000000000003C00585B0100000000000000DE -:10B2800000000000000000000000000000000000BE -:10B2900000000000000000000000000000000000AE -:10B2A000000000000000000000000000000000009E -:10B2B0000000000000003C00945B01000000000062 -:10B2C000000000000000000000000000000000007E -:10B2D000000000000000000000000000000000006E -:10B2E000000000000000000000000000000000005E -:10B2F00000000000000000003C00D05B01000000E6 -:10B30000000000000000000000000000000000003D -:10B31000000000000000000000000000000000002D -:10B32000000000000000000000000000000000001D -:10B33000000000000000000000003C000C5C010068 -:10B3400000000000000000000000000000000000FD -:10B3500000000000000000000000000000000000ED -:10B3600000000000000000000000000000000000DD -:10B370000000000000000000000000003C00485CED -:10B3800001000000000000000000000000000000BC -:10B3900000000000000000000000000000000000AD -:10B3A000000000000000000000000000000000009D -:10B3B00000000000000000000000000000003C0051 -:10B3C000845C01000000000000000000000000009C -:10B3D000000000000000000000000000000000006D -:10B3E000000000000000000000000000000000005D -:10B3F000000000000000000000000000000000004D -:10B400003C00C05C010000000000000000000000E3 -:10B41000000000000000000000000000000000002C -:10B42000000000000000000000000000000000001C -:10B43000000000000000000000000000000000000C -:10B4400000003C00FC5C0100000000000000000067 -:10B4500000000000000000000000000000000000EC -:10B4600000000000000000000000000000000000DC -:10B4700000000000000000000000000000000000CC -:10B48000000000003C00385D0100000000000000EA -:10B4900000000000000000000000000000000000AC -:10B4A000000000000000000000000000000000009C -:10B4B000000000000000000000000000000000008C -:10B4C0000000000000003C00745D0100000000006E -:10B4D000000000000000000000000000000000006C -:10B4E000000000000000000000000000000000005C -:10B4F000000000000000000000000000000000004C -:10B5000000000000000000003C00B05D01000000F1 -:10B51000000000000000000000000000000000002B -:10B52000000000000000000000000000000000001B -:10B53000000000000000000000000000000000000B -:10B54000000000000000000000003C00EC5D010075 -:10B5500000000000000000000000000000000000EB -:10B5600000000000000000000000000000000000DB -:10B5700000000000000000000000000000000000CB -:10B580000000000000000000000000003C00285EF9 -:10B5900001000000000000000000000000000000AA -:10B5A000000000000000000000000000000000009B -:10B5B000000000000000000000000000000000008B -:10B5C00000000000000000000000000000003C003F -:10B5D000645E0100000000000000000000000000A8 -:10B5E000000000000000000000000000000000005B -:10B5F000000000000000000000000000000000004B -:10B60000000000000000000000000000000000003A -:10B610003C00A05E010000000000000000000000EF -:10B62000000000000000000000000000000000001A -:10B63000000000000000000000000000000000000A -:10B6400000000000000000000000000000000000FA -:10B6500000003C00DC5E0100000000000000000073 -:10B6600000000000000000000000000000000000DA -:10B6700000000000000000000000000000000000CA -:10B6800000000000000000000000000000000000BA -:10B69000000000003C00185F0100000000000000F6 -:10B6A000000000000000000000000000000000009A -:10B6B000000000000000000000000000000000008A -:10B6C000000000000000000000000000000000007A -:10B6D0000000000000003C00545F0100000000007A -:10B6E000000000000000000000000000000000005A -:10B6F000000000000000000000000000000000004A -:10B700000000000000000000000000000000000039 -:10B7100000000000000000003C00905F01000000FD -:10B720000000000000000000000000000000000019 -:10B730000000000000000000000000000000000009 -:10B7400000000000000000000000000000000000F9 -:10B75000000000000000000000003C00CC5F010081 -:10B7600000000000000000000000000000000000D9 -:10B7700000000000000000000000000000000000C9 -:10B7800000000000000000000000000000000000B9 -:10B790000000000000000000000000003C00086005 -:10B7A0000100000000000000000000000000000098 -:10B7B0000000000000000000000000000000000089 -:10B7C0000000000000000000000000000000000079 -:10B7D00000000000000000000000000000003C002D -:10B7E00044600100000000000000000000000000B4 -:10B7F0000000000000000000000000000000000049 -:10B800000000000000000000000000000000000038 -:10B810000000000000000000000000000000000028 -:10B820003C008060010000000000000000000000FB -:10B830000000000000000000000000000000000008 -:10B8400000000000000000000000000000000000F8 -:10B8500000000000000000000000000000000000E8 -:10B8600000003C00BC60010000000000000000007F -:10B8700000000000000000000000000000000000C8 -:10B8800000000000000000000000000000000000B8 -:10B8900000000000000000000000000000000000A8 -:10B8A000000000003C00F860010000000000000003 -:10B8B0000000000000000000000000000000000088 -:10B8C0000000000000000000000000000000000078 -:10B8D0000000000000000000000000000000000068 -:10B8E0000000000000003C00346101000000000086 -:10B8F0000000000000000000000000000000000048 -:10B900000000000000000000000000000000000037 -:10B910000000000000000000000000000000000027 -:10B9200000000000000000003C0070610100000009 -:10B930000000000000000000000000000000000007 -:10B9400000000000000000000000000000000000F7 -:10B9500000000000000000000000000000000000E7 -:10B96000000000000000000000003C00AC6101008D -:10B9700000000000000000000000000000000000C7 -:10B9800000000000000000000000000000000000B7 -:10B9900000000000000000000000000000000000A7 -:10B9A0000000000000000000000000003C00E86112 -:10B9B0000100000000000000000000000000000086 -:10B9C0000000000000000000000000000000000077 -:10B9D0000000000000000000000000000000000067 -:10B9E00000000000000000000000000000003C001B -:10B9F00024620100000000000000000000000000C0 -:10BA00000000000000000000000000000000000036 -:10BA10000000000000000000000000000000000026 -:10BA20000000000000000000000000000000000016 -:10BA30003C00606201000000000000000000000007 -:10BA400000000000000000000000000000000000F6 -:10BA500000000000000000000000000000000000E6 -:10BA600000000000000000000000000000000000D6 -:10BA700000003C009C62010000000000000000008B -:10BA800000000000000000000000000000000000B6 -:10BA900000000000000000000000000000000000A6 -:10BAA0000000000000000000000000000000000096 -:10BAB000000000003C00D86201000000000000000F -:10BAC0000000000000000000000000000000000076 -:10BAD0000000000000000000000000000000000066 -:10BAE0000000000000000000000000000000000056 -:10BAF0000000000000003C00146301000000000092 -:10BB00000000000000000000000000000000000035 -:10BB10000000000000000000000000000000000025 -:10BB20000000000000000000000000000000000015 -:10BB300000000000000000003C0050630100000015 -:10BB400000000000000000000000000000000000F5 -:10BB500000000000000000000000000000000000E5 -:10BB600000000000000000000000000000000000D5 -:10BB7000000000000000000000003C008C63010099 -:10BB800000000000000000000000000000000000B5 -:10BB900000000000000000000000000000000000A5 -:10BBA0000000000000000000000000000000000095 -:10BBB0000000000000000000000000003C00C8631E -:10BBC0000100000000000000000000000000000074 -:10BBD0000000000000000000000000000000000065 -:10BBE0000000000000000000000000000000000055 -:10BBF00000000000000000000000000000003C0009 -:10BC000004640100000000000000000000000000CB -:10BC10000000000000000000000000000000000024 -:10BC20000000000000000000000000000000000014 -:10BC30000000000000000000000000000000000004 -:10BC40003C00406401000000000000000000000013 -:10BC500000000000000000000000000000000000E4 -:10BC600000000000000000000000000000000000D4 -:10BC700000000000000000000000000000000000C4 -:10BC800000003C007C640100000000000000000097 -:10BC900000000000000000000000000000000000A4 -:10BCA0000000000000000000000000000000000094 -:10BCB0000000000000000000000000000000000084 -:10BCC000000000003C00B86401000000000000001B -:10BCD0000000000000000000000000000000000064 -:10BCE0000000000000000000000000000000000054 -:10BCF0000000000000000000000000000000000044 -:10BD00000000000000003C00F4640100000000009E -:10BD10000000000000000000000000000000000023 -:10BD20000000000000000000000000000000000013 -:10BD30000000000000000000000000000000000003 -:10BD400000000000000000003C0030650100000021 -:10BD500000000000000000000000000000000000E3 -:10BD600000000000000000000000000000000000D3 -:10BD700000000000000000000000000000000000C3 -:10BD8000000000000000000000003C006C650100A5 -:10BD900000000000000000000000000000000000A3 -:10BDA0000000000000000000000000000000000093 -:10BDB0000000000000000000000000000000000083 -:10BDC0000000000000000000000000003C00A8652A -:10BDD0000100000000000000000000000000000062 -:10BDE0000000000000000000000000000000000053 -:10BDF0000000000000000000000000000000000043 -:10BE000000000000000000000000000000003C00F6 -:10BE1000E4650100000000000000000000000000D8 -:10BE20000000000000000000000000000000000012 -:10BE30000000000000000000000000000000000002 -:10BE400000000000000000000000000000000000F2 -:10BE50003C0020660100000000000000000000001F -:10BE600000000000000000000000000000000000D2 -:10BE700000000000000000000000000000000000C2 -:10BE800000000000000000000000000000000000B2 -:10BE900000003C005C6601000000000000000000A3 -:10BEA0000000000000000000000000000000000092 -:10BEB0000000000000000000000000000000000082 -:10BEC0000000000000000000000000000000000072 -:10BED000000000003C009866010000000000000027 -:10BEE0000000000000000000000000000000000052 -:10BEF0000000000000000000000000000000000042 -:10BF00000000000000000000000000000000000031 -:10BF10000000000000003C00D466010000000000AA -:10BF20000000000000000000000000000000000011 -:10BF30000000000000000000000000000000000001 -:10BF400000000000000000000000000000000000F1 -:10BF500000000000000000003C001067010000002D -:10BF600000000000000000000000000000000000D1 -:10BF700000000000000000000000000000000000C1 -:10BF800000000000000000000000000000000000B1 -:10BF9000000000000000000000003C004C670100B1 -:10BFA0000000000000000000000000000000000091 -:10BFB0000000000000000000000000000000000081 -:10BFC0000000000000000000000000000000000071 -:10BFD0000000000000000000000000003C00886736 -:10BFE0000100000000000000000000000000000050 -:10BFF0000000000000000000000000000000000041 -:10C000000000000000000000000000000000000030 -:10C0100000000000000000000000000000003C00E4 -:10C02000C4670100000000000000000000000000E4 -:10C030000000000000000000000000000000000000 -:10C0400000000000000000000000000000000000F0 -:10C0500000000000000000000000000000000000E0 -:10C060003C0000680100000000000000000000002B -:10C0700000000000000000000000000000000000C0 -:10C0800000000000000000000000000000000000B0 -:10C0900000000000000000000000000000000000A0 -:10C0A00000003C003C6801000000000000000000AF -:10C0B0000000000000000000000000000000000080 -:10C0C0000000000000000000000000000000000070 -:10C0D0000000000000000000000000000000000060 -:10C0E000000000003C007868010000000000000033 -:10C0F0000000000000000000000000000000000040 -:10C10000000000000000000000000000000000002F -:10C11000000000000000000000000000000000001F -:10C120000000000000003C00B468010000000000B6 -:10C1300000000000000000000000000000000000FF -:10C1400000000000000000000000000000000000EF -:10C1500000000000000000000000000000000000DF -:10C1600000000000000000003C00F068010000003A -:10C1700000000000000000000000000000000000BF -:10C1800000000000000000000000000000000000AF -:10C19000000000000000000000000000000000009F -:10C1A000000000000000000000003C002C690100BD -:10C1B000000000000000000000000000000000007F -:10C1C000000000000000000000000000000000006F -:10C1D000000000000000000000000000000000005F -:10C1E0000000000000000000000000003C00686942 -:10C1F000010000000000000000000000000000003E -:10C20000000000000000000000000000000000002E -:10C21000000000000000000000000000000000001E -:10C2200000000000000000000000000000003C00D2 -:10C23000A4690100000000000000000000000000F0 -:10C2400000000000000000000000000000000000EE -:10C2500000000000000000000000000000000000DE -:10C2600000000000000000000000000000000000CE -:10C270003C00E06901000000000000000000000038 -:10C2800000000000000000000000000000000000AE -:10C29000000000000000000000000000000000009E -:10C2A000000000000000000000000000000000008E -:10C2B00000003C001C6A01000000000000000000BB -:10C2C000000000000000000000000000000000006E -:10C2D000000000000000000000000000000000005E -:10C2E000000000000000000000000000000000004E -:10C2F000000000003C00586A01000000000000003F -:10C30000000000000000000000000000000000002D -:10C31000000000000000000000000000000000001D -:10C32000000000000000000000000000000000000D -:10C330000000000000003C00946A010000000000C2 -:10C3400000000000000000000000000000000000ED -:10C3500000000000000000000000000000000000DD -:10C3600000000000000000000000000000000000CD -:10C3700000000000000000003C00D06A0100000046 -:10C3800000000000000000000000000000000000AD -:10C39000000000000000000000000000000000009D -:10C3A000000000000000000000000000000000008D -:10C3B000000000000000000000003C000C6B0100C9 -:10C3C000000000000000000000000000000000006D -:10C3D000000000000000000000000000000000005D -:10C3E000000000000000000000000000000000004D -:10C3F0000000000000000000000000003C00486B4E -:10C40000010000000000000000000000000000002B -:10C41000000000000000000000000000000000001C -:10C42000000000000000000000000000000000000C -:10C4300000000000000000000000000000003C00C0 -:10C44000846B0100000000000000000000000000FC -:10C4500000000000000000000000000000000000DC -:10C4600000000000000000000000000000000000CC -:10C4700000000000000000000000000000000000BC -:10C480003C00C06B01000000000000000000000044 -:10C49000000000000000000000000000000000009C -:10C4A000000000000000000000000000000000008C -:10C4B000000000000000000000000000000000007C -:10C4C00000003C00FC6B01000000000000000000C8 -:10C4D000000000000000000000000000000000005C -:10C4E000000000000000000000000000000000004C -:10C4F000000000000000000000000000000000003C -:10C50000000000003C00386C01000000000000004A -:10C51000000000000000000000000000000000001B -:10C52000000000000000000000000000000000000B -:10C5300000000000000000000000000000000000FB -:10C540000000000000003C00746C010000000000CE -:10C5500000000000000000000000000000000000DB -:10C5600000000000000000000000000000000000CB -:10C5700000000000000000000000000000000000BB -:10C5800000000000000000003C00B06C0100000052 -:10C59000000000000000000000000000000000009B -:10C5A000000000000000000000000000000000008B -:10C5B000000000000000000000000000000000007B -:10C5C000000000000000000000003C00EC6C0100D6 -:10C5D000000000000000000000000000000000005B -:10C5E000000000000000000000000000000000004B -:10C5F000000000000000000000000000000000003B -:10C600000000000000000000000000003C00286D59 -:10C610000100000000000000000000000000000019 -:10C62000000000000000000000000000000000000A -:10C6300000000000000000000000000000000000FA -:10C6400000000000000000000000000000003C00AE -:10C65000646D010000000000000000000000000008 -:10C6600000000000000000000000000000000000CA -:10C6700000000000000000000000000000000000BA -:10C6800000000000000000000000000000000000AA -:10C690003C00A06D01000000000000000000000050 -:10C6A000000000000000000000000000000000008A -:10C6B000000000000000000000000000000000007A -:10C6C000000000000000000000000000000000006A -:10C6D00000003C00DC6D01000000000000000000D4 -:10C6E000000000000000000000000000000000004A -:10C6F000000000000000000000000000000000003A -:10C700000000000000000000000000000000000029 -:10C71000000000003C00186E010000000000000056 -:10C720000000000000000000000000000000000009 -:10C7300000000000000000000000000000000000F9 -:10C7400000000000000000000000000000000000E9 -:10C750000000000000003C00546E010000000000DA -:10C7600000000000000000000000000000000000C9 -:10C7700000000000000000000000000000000000B9 -:10C7800000000000000000000000000000000000A9 -:10C7900000000000000000003C00906E010000005E -:10C7A0000000000000000000000000000000000089 -:10C7B0000000000000000000000000000000000079 -:10C7C0000000000000000000000000000000000069 -:10C7D000000000000000000000003C00CC6E0100E2 -:10C7E0000000000000000000000000000000000049 -:10C7F0000000000000000000000000000000000039 -:10C800000000000000000000000000000000000028 -:10C810000000000000000000000000003C00086F65 -:10C820000100000000000000000000000000000007 -:10C8300000000000000000000000000000000000F8 -:10C8400000000000000000000000000000000000E8 -:10C8500000000000000000000000000000003C009C -:10C86000446F010000000000000000000000000014 -:10C8700000000000000000000000000000000000B8 -:10C8800000000000000000000000000000000000A8 -:10C890000000000000000000000000000000000098 -:10C8A0003C00806F0100000000000000000000005C -:10C8B0000000000000000000000000000000000078 -:10C8C0000000000000000000000000000000000068 -:10C8D0000000000000000000000000000000000058 -:10C8E00000003C00BC6F01000000000000000000E0 -:10C8F0000000000000000000000000000000000038 -:10C900000000000000000000000000000000000027 -:10C910000000000000000000000000000000000017 -:10C92000000000003C00F86F010000000000000063 -:10C9300000000000000000000000000000000000F7 -:10C9400000000000000000000000000000000000E7 -:10C9500000000000000000000000000000000000D7 -:10C960000000000000003C003470010000000000E6 -:10C9700000000000000000000000000000000000B7 -:10C9800000000000000000000000000000000000A7 -:10C990000000000000000000000000000000000097 -:10C9A00000000000000000003C007070010000006A -:10C9B0000000000000000000000000000000000077 -:10C9C0000000000000000000000000000000000067 -:10C9D0000000000000000000000000000000000057 -:10C9E000000000000000000000003C00AC700100EE -:10C9F0000000000000000000000000000000000037 -:10CA00000000000000000000000000000000000026 -:10CA10000000000000000000000000000000000016 -:10CA20000000000000000000000000003C00E87072 -:10CA300001000000000000000000000000000000F5 -:10CA400000000000000000000000000000000000E6 -:10CA500000000000000000000000000000000000D6 -:10CA600000000000000000000000000000003C008A -:10CA70002471010000000000000000000000000020 -:10CA800000000000000000000000000000000000A6 -:10CA90000000000000000000000000000000000096 -:10CAA0000000000000000000000000000000000086 -:10CAB0003C00607101000000000000000000000068 -:10CAC0000000000000000000000000000000000066 -:10CAD0000000000000000000000000000000000056 -:10CAE0000000000000000000000000000000000046 -:10CAF00000003C009C7101000000000000000000EC -:10CB00000000000000000000000000000000000025 -:10CB10000000000000000000000000000000000015 -:10CB20000000000000000000000000000000000005 -:10CB3000000000003C00D87101000000000000006F -:10CB400000000000000000000000000000000000E5 -:10CB500000000000000000000000000000000000D5 -:10CB600000000000000000000000000000000000C5 -:10CB70000000000000003C001472010000000000F2 -:10CB800000000000000000000000000000000000A5 -:10CB90000000000000000000000000000000000095 -:10CBA0000000000000000000000000000000000085 -:10CBB00000000000000000003C0050720100000076 -:10CBC0000000000000000000000000000000000065 -:10CBD0000000000000000000000000000000000055 -:10CBE0000000000000000000000000000000000045 -:10CBF000000000000000000000003C008C720100FA -:10CC00000000000000000000000000000000000024 -:10CC10000000000000000000000000000000000014 -:10CC20000000000000000000000000000000000004 -:10CC30000000000000000000000000003C00C8727E -:10CC400001000000000000000000000000000000E3 -:10CC500000000000000000000000000000000000D4 -:10CC600000000000000000000000000000000000C4 -:10CC700000000000000000000000000000003C0078 -:10CC8000047301000000000000000000000000002C -:10CC90000000000000000000000000000000000094 -:10CCA0000000000000000000000000000000000084 -:10CCB0000000000000000000000000000000000074 -:10CCC0003C00407301000000000000000000000074 -:10CCD0000000000000000000000000000000000054 -:10CCE0000000000000000000000000000000000044 -:10CCF0000000000000000000000000000000000034 -:10CD000000003C007C7301000000000000000000F7 -:10CD10000000000000000000000000000000000013 -:10CD20000000000000000000000000000000000003 -:10CD300000000000000000000000000000000000F3 -:10CD4000000000003C00B87301000000000000007B -:10CD500000000000000000000000000000000000D3 -:10CD600000000000000000000000000000000000C3 -:10CD700000000000000000000000000000000000B3 -:10CD80000000000000003C00F473010000000000FF -:10CD90000000000000000000000000000000000093 -:10CDA0000000000000000000000000000000000083 -:10CDB0000000000000000000000000000000000073 -:10CDC00000000000000000003C0030740100000082 -:10CDD0000000000000000000000000000000000053 -:10CDE0000000000000000000000000000000000043 -:10CDF0000000000000000000000000000000000033 -:10CE0000000000000000000000003C006C74010005 -:10CE10000000000000000000000000000000000012 -:10CE20000000000000000000000000000000000002 -:10CE300000000000000000000000000000000000F2 -:10CE40000000000000000000000000003C00A8748A -:10CE500001000000000000000000000000000000D1 -:10CE600000000000000000000000000000000000C2 -:10CE700000000000000000000000000000000000B2 -:10CE800000000000000000000000000000003C0066 -:10CE9000E474010000000000000000000000000039 -:10CEA0000000000000000000000000000000000082 -:10CEB0000000000000000000000000000000000072 -:10CEC0000000000000000000000000000000000062 -:10CED0003C00207501000000000000000000000080 -:10CEE0000000000000000000000000000000000042 -:10CEF0000000000000000000000000000000000032 -:10CF00000000000000000000000000000000000021 -:10CF100000003C005C750100000000000000000003 -:10CF20000000000000000000000000000000000001 -:10CF300000000000000000000000000000000000F1 -:10CF400000000000000000000000000000000000E1 -:10CF5000000000003C009875010000000000000087 -:10CF600000000000000000000000000000000000C1 -:10CF700000000000000000000000000000000000B1 -:10CF800000000000000000000000000000000000A1 -:10CF90000000000000003C00D4750100000000000B -:10CFA0000000000000000000000000000000000081 -:10CFB0000000000000000000000000000000000071 -:10CFC0000000000000000000000000000000000061 -:10CFD00000000000000000003C001076010000008E -:10CFE0000000000000000000000000000000000041 -:10CFF0000000000000000000000000000000000031 -:10D000000000000000000000000000000000000020 -:10D01000000000000000000000003C004C76010011 -:10D020000000000000000000000000000000000000 -:10D0300000000000000000000000000000000000F0 -:10D0400000000000000000000000000000000000E0 -:10D050000000000000000000000000003C00887696 -:10D0600001000000000000000000000000000000BF -:10D0700000000000000000000000000000000000B0 -:10D0800000000000000000000000000000000000A0 -:10D0900000000000000000000000000000003C0054 -:10D0A000C476010000000000000000000000000045 -:10D0B0000000000000000000000000000000000070 -:10D0C0000000000000000000000000000000000060 -:10D0D0000000000000000000000000000000000050 -:10D0E0003C0000770100000000000000000000008C -:10D0F0000000000000000000000000000000000030 -:10D10000000000000000000000000000000000001F -:10D11000000000000000000000000000000000000F -:10D1200000003C003C77010000000000000000000F -:10D1300000000000000000000000000000000000EF -:10D1400000000000000000000000000000000000DF -:10D1500000000000000000000000000000000000CF -:10D16000000000003C007877010000000000000093 -:10D1700000000000000000000000000000000000AF -:10D18000000000000000000000000000000000009F -:10D19000000000000000000000000000000000008F -:10D1A0000000000000003C00B47701000000000017 -:10D1B000000000000000000000000000000000006F -:10D1C000000000000000000000000000000000005F -:10D1D000000000000000000000000000000000004F -:10D1E00000000000000000003C00F077010000009B -:10D1F000000000000000000000000000000000002F -:10D20000000000000000000000000000000000001E -:10D21000000000000000000000000000000000000E -:10D22000000000000000000000003C002C7801001D -:10D2300000000000000000000000000000000000EE -:10D2400000000000000000000000000000000000DE -:10D2500000000000000000000000000000000000CE -:10D260000000000000000000000000003C006878A2 -:10D2700001000000000000000000000000000000AD -:10D28000000000000000000000000000000000009E -:10D29000000000000000000000000000000000008E -:10D2A00000000000000000000000000000003C0042 -:10D2B000A478010000000000000000000000000051 -:10D2C000000000000000000000000000000000005E -:10D2D000000000000000000000000000000000004E -:10D2E000000000000000000000000000000000003E -:10D2F0003C00E07801000000000000000000000099 -:10D30000000000000000000000000000000000001D -:10D31000000000000000000000000000000000000D -:10D3200000000000000000000000000000000000FD -:10D3300000003C001C79010000000000000000001B -:10D3400000000000000000000000000000000000DD -:10D3500000000000000000000000000000000000CD -:10D3600000000000000000000000000000000000BD -:10D37000000000003C00587901000000000000009F -:10D38000000000000000000000000000000000009D -:10D39000000000000000000000000000000000008D -:10D3A000000000000000000000000000000000007D -:10D3B0000000000000003C00947901000000000023 -:10D3C000000000000000000000000000000000005D -:10D3D000000000000000000000000000000000004D -:10D3E000000000000000000000000000000000003D -:10D3F00000000000000000003C00D07901000000A7 -:10D40000000000000000000000000000000000001C -:10D41000000000000000000000000000000000000C -:10D4200000000000000000000000000000000000FC -:10D43000000000000000000000003C000C7A010029 -:10D4400000000000000000000000000000000000DC -:10D4500000000000000000000000000000000000CC -:10D4600000000000000000000000000000000000BC -:10D470000000000000000000000000003C00487AAE -:10D48000010000000000000000000000000000009B -:10D49000000000000000000000000000000000008C -:10D4A000000000000000000000000000000000007C -:10D4B00000000000000000000000000000003C0030 -:10D4C000847A01000000000000000000000000005D -:10D4D000000000000000000000000000000000004C -:10D4E000000000000000000000000000000000003C -:10D4F000000000000000000000000000000000002C -:10D500003C00C07A010000000000000000000000A4 -:10D51000000000000000000000000000000000000B -:10D5200000000000000000000000000000000000FB -:10D5300000000000000000000000000000000000EB -:10D5400000003C00FC7A0100000000000000000028 -:10D5500000000000000000000000000000000000CB -:10D5600000000000000000000000000000000000BB -:10D5700000000000000000000000000000000000AB -:10D58000000000003C00387B0100000000000000AB -:10D59000000000000000000000000000000000008B -:10D5A000000000000000000000000000000000007B -:10D5B000000000000000000000000000000000006B -:10D5C0000000000000003C00747B0100000000002F -:10D5D000000000000000000000000000000000004B -:10D5E000000000000000000000000000000000003B -:10D5F000000000000000000000000000000000002B -:10D6000000000000000000003C00B07B01000000B2 -:10D61000000000000000000000000000000000000A -:10D6200000000000000000000000000000000000FA -:10D6300000000000000000000000000000000000EA -:10D64000000000000000000000003C00EC7B010036 -:10D6500000000000000000000000000000000000CA -:10D6600000000000000000000000000000000000BA -:10D6700000000000000000000000000000000000AA -:10D680000000000000000000000000003C00287CBA -:10D690000100000000000000000000000000000089 -:10D6A000000000000000000000000000000000007A -:10D6B000000000000000000000000000000000006A -:10D6C00000000000000000000000000000003C001E -:10D6D000647C010000000000000000000000000069 -:10D6E000000000000000000000000000000000003A -:10D6F000000000000000000000000000000000002A -:10D700000000000000000000000000000000000019 -:10D710003C00A07C010000000000000000000000B0 -:10D7200000000000000000000000000000000000F9 -:10D7300000000000000000000000000000000000E9 -:10D7400000000000000000000000000000000000D9 -:10D7500000003C00DC7C0100000000000000000034 -:10D7600000000000000000000000000000000000B9 -:10D7700000000000000000000000000000000000A9 -:10D780000000000000000000000000000000000099 -:10D79000000000003C00187D0100000000000000B7 -:10D7A0000000000000000000000000000000000079 -:10D7B0000000000000000000000000000000000069 -:10D7C0000000000000000000000000000000000059 -:10D7D0000000000000003C00547D0100000000003B -:10D7E0000000000000000000000000000000000039 -:10D7F0000000000000000000000000000000000029 -:10D800000000000000000000000000000000000018 -:10D8100000000000000000003C00907D01000000BE -:10D8200000000000000000000000000000000000F8 -:10D8300000000000000000000000000000000000E8 -:10D8400000000000000000000000000000000000D8 -:10D85000000000000000000000003C00CC7D010042 -:10D8600000000000000000000000000000000000B8 -:10D8700000000000000000000000000000000000A8 -:10D880000000000000000000000000000000000098 -:10D890000000000000000000000000003C00087EC6 -:10D8A0000100000000000000000000000000000077 -:10D8B0000000000000000000000000000000000068 -:10D8C0000000000000000000000000000000000058 -:10D8D00000000000000000000000000000003C000C -:10D8E000447E010000000000000000000000000075 -:10D8F0000000000000000000000000000000000028 -:10D900000000000000000000000000000000000017 -:10D910000000000000000000000000000000000007 -:10D920003C00807E010000000000000000000000BC -:10D9300000000000000000000000000000000000E7 -:10D9400000000000000000000000000000000000D7 -:10D9500000000000000000000000000000000000C7 -:10D9600000003C00BC7E0100000000000000000040 -:10D9700000000000000000000000000000000000A7 -:10D980000000000000000000000000000000000097 -:10D990000000000000000000000000000000000087 -:10D9A000000000003C00F87E0100000000000000C4 -:10D9B0000000000000000000000000000000000067 -:10D9C0000000000000000000000000000000000057 -:10D9D0000000000000000000000000000000000047 -:10D9E0000000000000003C00347F01000000000047 -:10D9F0000000000000000000000000000000000027 -:10DA00000000000000000000000000000000000016 -:10DA10000000000000000000000000000000000006 -:10DA200000000000000000003C00707F01000000CA -:10DA300000000000000000000000000000000000E6 -:10DA400000000000000000000000000000000000D6 -:10DA500000000000000000000000000000000000C6 -:10DA6000000000000000000000003C00AC7F01004E -:10DA700000000000000000000000000000000000A6 -:10DA80000000000000000000000000000000000096 -:10DA90000000000000000000000000000000000086 -:10DAA0000000000000000000000000003C00E87FD3 -:10DAB0000100000000000000000000000000000065 -:10DAC0000000000000000000000070B50125074EB6 -:10DAD000AD0375610A20FAF76CFF30688003C40F4C -:10DAE000B5610A20FAF765FF201C70BD00003C00FC -:10DAF000248001001000070070B501256D04002886 -:10DB0000104C01D0656100E0A56160682843606049 -:10DB1000A0682843A0600A20FAF74EFF0126B6034A -:10DB200066610A20FAF748FFA6610120FAF744FF70 -:10DB30003C0060800100A068A843A06060682843A2 -:10DB400060600A20FAF73BFF70BD1000070070B557 -:10DB50000125104C6D046561606828436060A06811 -:10DB60002843A060EE08A6610A20FAF728FF666144 -:10DB70000A203C009C800100FAF724FFA5610A20DE -:10DB8000FAF720FFA6610A20FAF71CFFA068A84355 -:10DB9000A06060682843606070BD0000100007004E -:10DBA00070B501250E4C6D04A56160682843606066 -:10DBB000A06828433C00D8800100A060EE086661A0 -:10DBC0000A20FAF702FF65610A20FAF7FEFEA66155 -:10DBD0000A20FAF7FAFEA068A843A060606828430C -:10DBE000606070BD00001000070070B5051C0024C7 -:10DBF0008026281C30403C0014810100FFF788FF7C -:10DC00006806050E0134082CF6DBFFF76DFF70BDCA -:10DC100080B5021C0B218020FBF73EFB80BD00007D -:10DC2000F8B512480025071CFF37061D0137281CD0 -:10DC3000F9F7EAFD041C17D03C005081010020696F -:10DC4000002804D0E06A002803D00020E062251CF0 -:10DC5000F0E77B68002B05D0321C211C44310120E9 -:10DC6000E8F734F9201C4430F9F737FEE2E7F8BD55 -:10DC7000000020F70100114870B53C008C810100C4 -:10DC80000068FF281DD1FF203230FAF7A7FE0E4DA5 -:10DC90006C680E48FAF7A2FE6868241A012000F0AA -:10DCA00095FD6E680948FAF799FE6868211C0A39E3 -:10DCB000301A884202D30A34A04202D93C00C881FB -:10DCC0000100002000F085FD70BDF4740100000328 -:10DCD00007009303000070B500F04DF80120EDF748 -:10DCE00034F9114D182168600020E9F7F2F9286035 -:10DCF00004688020208000260622FF21201D3C0091 -:10DD0000048201006680E8F70BFA201C0A300949FA -:10DD1000F2F72EFD201C10300749F2F729FDE682AC -:10DD200003CDE9F7F9F8024901201439886070BD84 -:10DD300090D901001261010024F701007047000032 -:10DD40003C004082010010B5064C00220220E16830 -:10DD5000F0F711FB6078022801D100F01AF910BD2C -:10DD6000000040D9010080B5A120FFF750FF80BD21 -:10DD7000000040000E21084080B5A030FFF747FFAB -:10DD800080BD3C007C82010010B5054C2068002855 -:10DD900004D0E9F787F900202060606010BD000022 -:10DDA00090D9010010B5074C0121074A21610220DA -:10DDB0001070616100F0D6FC00F0C8FB201CEDF78C -:10DDC0009FFA10BD3C00B882010020F701007CD909 -:10DDD000010070B5021C081C0225002A134E14D045 -:10DDE00000F011FC3078012108433070307828436E -:10DDF000307000207D214901B279920700D50134AD -:10DE000001308842F8DB3C00F4820100201C70BD28 -:10DE10003078A843307030784008400030700549B1 -:10DE200048680122120490434860012070BD000040 -:10DE3000880007006C000700FFB509AE002060CE27 -:10DE4000286000239C4630603C0030830100694616 -:10DE500001AA17E0DB070ED5124B1C56631C0AD033 -:10DE600001272B68A7403B432B601368DB0702D5D3 -:10DE700033683B4333600B685B080B6013685B08D7 -:10DE8000136001300B68002B01D03C006C83010053 -:10DE90002228E2D3634601332020022B9C4602A9AC -:10DEA00003AAF2DBFFBD0000B48D0100B0B5041C75 -:10DEB0000D1C1E2100220320054BF9F7B3F8211C8D -:10DEC0000320F9F7F5F8291C0320F9F73C00A88393 -:10DED0000100F1F8B0BD80380100B0B51C4C1C4DFC -:10DEE0002178022909D0032919D004291FD0052936 -:10DEF00023D1002000F017FB23E0686114481C3098 -:10DF0000C16802698918C16000F02FFBE0683C001D -:10DF1000E48301000138E06016D13220E060FFF7B1 -:10DF2000A3FE11E0002000F001FB00F02DFC012019 -:10DF3000207009E0002000F0F9FAFFF745FF03E048 -:10DF400005210B20E8F746FF68696168E7F7DDFF08 -:10DF50003C0020840100B0BD00007CD9010020F706 -:10DF60000100F7B5041C171CFFF721FE200AFFF77C -:10DF700018FF2006000EFFF762FEFFF718FEA12033 -:10DF8000FFF75DFE002516E0002000244006060E87 -:10DF9000FFF73C005C840100D1FD0006000E304319 -:10DFA0000134082CF5DB291C019A0135BD4250547F -:10DFB00001DA002000E00120FFF7D4FDBD42E6DBDE -:10DFC000FFF71EFEFEBD000080B5FFF719FE092118 -:10DFD000890300223C00988401000220F0F7E9F94F -:10DFE00080BD0921890380B500220220F0F7C9F91C -:10DFF000012109488903816142680A4342608268BD -:10E000001143816001214904816182688A438260F1 -:10E010004268114341603C00D484010080BD00008F -:10E0200010000700F0B5041CC0687B4E056830780E -:10E0300085B0012801D0022872D100212069F2F7B1 -:10E0400041F97649F2F724FC002869D0201C2030E1 -:10E05000417A082902D1724A3C0010850100002152 -:10E060005161007A226A1821F2F7C9FBE16A371C74 -:10E0700040186C49029030780E1CFF360A1D01369C -:10E080000128049207D0654A02991C32281CEDF73A -:10E09000E2FB00286BD0322120693C004C85010056 -:10E0A000F2F716F9019020690121F2F711F9011C2C -:10E0B0005E480123019AEDF707FC002804D15B4874 -:10E0C000EDF792FA0021B96056481C308168EAF7F2 -:10E0D00019FC201C143003900499F2F73C00888549 -:10E0E0000100D5FB002805D10022BA6004980399ED -:10E0F000F2F76BFB4F4928890988884203D0002238 -:10E100004C49BA60088003212069F2F7E4F800283E -:10E1100010D04649827820310B7994469A423C00CF -:10E12000C485010009D00022BA6062460A71807875 -:10E130000121F3F705F900E077E006212069F2F705 -:10E14000CDF8002808D081783A4840308288914242 -:10E1500002D00022BA6081802A212069F2F7BEF83D -:10E160003C000086010000280DD08078F169334A18 -:10E17000814208D00021B960F061101CEDF709FB65 -:10E180002F48EDF7FAFA38783B1C012817D1022006 -:10E1900018702A4F01233B61274B03CD1C33083DE8 -:10E1A000029A3C003C860100EDF7B0FA381CEDF70E -:10E1B000D7F83268002A03D000210120E7F7C4FE17 -:10E1C00000F0F4F9201CF9F7D5FB071C11D1201C35 -:10E1D000F9F788FB071C2ED001233B616889402199 -:10E1E000C85373683C0078860100002B04D0211CC2 -:10E1F0000020049AE7F7ACFE0123FB62206932217C -:10E20000F2F775F8051C20690121F2F770F80E4E3F -:10E21000011C2A1C301CEDF7C0FB00280ED1322156 -:10E220002069F2F764F83C00B4860100051C2069FF -:10E230000121F2F75FF8011C3B1C2A1C301CEDF792 -:10E24000D7FA05B0F0BD00007CD9010040F801000C -:10E2500020F70100021C081C802A80B506D0812A04 -:10E2600003D004210B20E8F73C00F0860100D9FD23 -:10E2700080BDFFF75CFE80BD000003488178FF2968 -:10E2800001D0007970470020704780F8010030B558 -:10E2900089B000930E4D131C041C2A1CECF725FDBD -:10E2A00001A906A8A268ECF7CEFE3C002C8701006D -:10E2B00001AA06A9281C636AEDF744FA041C012888 -:10E2C00004D1281CEDF72CF800F04AF8201C09B006 -:10E2D00030BD000020F7010080B5EDF72BF800F00D -:10E2E0007DF80248EDF702FA80BD00003C00688727 -:10E2F000010020F7010080B500280BD10648EDF79A -:10E30000F8F900F06EF80120EDF7EBFA034903206D -:10E31000F9F735FE80BD20F701006D870100B0B52B -:10E32000104D041C131C2A1C88B0ECF702FD3C00A5 -:10E33000A4870100211C0A310622281DE7F7A4FE4C -:10E34000694605A86269ECF787FE281CECF7EEFF2A -:10E350007F23DB43281C6A4605A9EDF7F9F900F095 -:10E360001DF808B0B0BD000020F701000A4880B5D4 -:10E370003C00E08701000178002906D0022901D085 -:10E38000052907D10321017080BD0121017000F032 -:10E390002EFA80BD03210B20E8F74FFD80BD7CD90C -:10E3A0000100094980B50878002806D0022801D06C -:10E3B00005283C001C88010005D10420087080BDA0 -:10E3C000FFF738FD80BD02210B20E8F739FD80BD45 -:10E3D0007CD9010080B502210B20044AFAF782FFA4 -:10E3E000F6F786FD0249086180BD0000DD86010068 -:10E3F0007CD901003C00588801000C4880B50178A8 -:10E4000006290ED202A35B5C5B009F44000006035A -:10E4100007070706002000F0C2F880BD0521017043 -:10E4200080BD04210B20E8F70EFD80BD00007CD9E3 -:10E430000100704700003C009488010010B50D4BAE -:10E44000041C181C1030002C08D0DB885B045B0C0B -:10E450000B80807B48800420108008E0DA8801244B -:10E46000E40322400C882243DA804988817301202A -:10E4700010BD0000300007003C00D088010070B5DE -:10E48000104E021C0023F056002A02D0087001240E -:10E4900015E00023CD56854201D1012070BD281C16 -:10E4A00000F05FF9041C0AD00748357000680028A6 -:10E4B00003D000210A20F9F728FD3C000C89010057 -:10E4C00000F016FA201C70BDF46B01003CD901006D -:10E4D000031C081C002B80B506D0042111800422E7 -:10E4E0000449E7F7E3FD02E0006800F0CFF90120FE -:10E4F00080BD0000F474010010B5FFF73C004889AE -:10E50000010097FBFFF789FC041CFFF7B8FBFFF73E -:10E5100084FC002C02D1012800D110BD002010BDC8 -:10E520000000F8B5204F041C78780E1C02282ED06D -:10E530001E4AF968916114231D49584340183C0054 -:10E5400084890100417BB878F8F714FE00F08AF95D -:10E55000002504E00021B878F8F70CFE0135787842 -:10E560001423144958434018807AA842F2DC00254D -:10E5700008E00021B878F8F7FDFD0F48006820702A -:10E580003C00C089010001340135B542F4DB094A81 -:10E59000F86850617878022806D1B868321C211CCE -:10E5A0000004000CFFF725FDB8688019B860F8BDBD -:10E5B000000040D9010010000700648D01003020E8 -:10E5C00007003C00FC89010070B5061C0C4D0024BE -:10E5D0002C70FFF739FC0A4818211C30AC60E7F7B3 -:10E5E00043FD08484461F9F763F9002E06D1064857 -:10E5F0002969F6F7A7FC0020ECF7B0FE70BD00001B -:10E600007CD901003C00388A010020F70100346306 -:10E61000010030B5124C85B0206800281CD00F488E -:10E6200014388068002801D1FFF7C1FB206800235F -:10E63000006801AA04300121ECF7D1FD0849084A1D -:10E6400008310C3100923C00748A010003C900AB10 -:10E650004518997B019A20682B1CF2F72BFE05B018 -:10E6600030BD000090D901002981010010B5134C84 -:10E67000142360705843124BC1188A88E2801858DE -:10E68000E060087AA070FF283C00B08A010012D038 -:10E69000002208210D4BF8F722FD00220220E1683C -:10E6A000EFF7BDFE0A49E06848614A6802434A60E4 -:10E6B0008A68104388606078022801D1FFF7DFFC88 -:10E6C00010BD40D90100648D01003C00EC8A0100BE -:10E6D000B80B000010000700FE300006000E0621F7 -:10E6E000154B4143585C82061448920E4271C9187A -:10E6F0004A78D206D20E027142780C231A43427035 -:10E7000042788B78920892009B079B0F3C00288BE5 -:10E7100001001A4342700278C0239A4340320270CB -:10E72000027838231A4302700278C97804239A4386 -:10E730008900194011430170012070470000D88DF5 -:10E740000100880007008FB50020029003903C0074 -:10E75000648B0100074802AA03A900910192438932 -:10E76000028903C8FFF7D4FB03980299FFF704FC62 -:10E770008FBD0000048E010008494A78002A03D1A9 -:10E78000888000208860704714235A43044BD218B5 -:10E790003C00A08B0100D2884243C88842438A6073 -:10E7A000704740D90100648D0100F8B5254E041C66 -:10E7B000307A400840003072B07A0020B0720127F1 -:10E7C000012C204D01D0FC4213D1307B38433073F3 -:10E7D00000223C00DC8B0100211C0020FFF76EFBB7 -:10E7E000631C01D13F21E973B17AA0221143B172B8 -:10E7F000317A39433172F8BD307B400840003073C4 -:10E800000122211C0120FFF759FB01200021E9739F -:10E81000B17A02223C00188C01001143B172B17A26 -:10E8200004221143B172B17A30221143B172317AAC -:10E830003943317208494A6880239A434A600A681A -:10E840001A430A60317B39433173D7E700008800EF -:10E850000700400007003C00548C01006C000700DA -:10E86000B0B50E4D0E482969F6F79EFB0D48ECF742 -:10E8700093FD0D48094C00881C34A082F1F75AFF23 -:10E880002061FAF797F8021C231C00210020ECF706 -:10E890008BFF3220E860FFF73C00908C0100A5FA66 -:10E8A000B0BD7CD9010034630100DD84010020F794 -:10E8B0000100B0B50A4D687800280ED0142308492D -:10E8C00058434018447A06E0A868E0400106090E63 -:10E8D000A878F8F776FC083CF6D53C00CC8C010013 -:10E8E000B0BD000040D90100648D0100011C144836 -:10E8F000B0B501601348027F02239A430277027F7A -:10E90000012422430277104D00290CD0012200215E -:10E910000320EFF79FFD0D49487CA0433C00088D84 -:10E9200001004874687A20436872B0BD017F2143BA -:10E930000177687A400840006872012200210320B4 -:10E94000EFF7B1FDB0BDF47401003000070088009E -:10E9500007001000070010B5074C211C00203C00E8 -:10E96000448D0100F9F756FB05480023C0560128E5 -:10E9700003DD211C0020F9F719FB10BD651A00000A -:10E98000F46B01000000020008010100021804FFFE -:10E9900082E8D78000000000008000000001000134 -:10E9A0003C00808D010000180006020305010100F3 -:10E9B00000000000000080000100FF1000FFFFFFCA -:10E9C000FFFFFF0000000000020020000100021015 -:10E9D0000006020305010100000004050607080CFB -:10E9E0000D0E3C00BC8D0100FF1415161718191BE5 -:10E9F0001C1DFF1A1113120F10FF0200FF01030963 -:10EA00000A0B0000300D02000000280E0300000079 -:10EA10001E0C00000000300D020100001E0C000161 -:10EA20000000230D3C00F88D0100020100001D0DC7 -:10EA3000020100000000FFFEFB6D000080000200EC -:10EA400000000000000000000000000000000000C6 -:10EA500000000000000000000000000000000000B6 -:10EA60000000000000003C00348E010000000000A7 -:10EA70000000000000000000000000000000000096 -:10EA80000000000000000000000000000000000086 -:10EA90000000000000000000000000000000000076 -:10EAA00000000000000000003C00708E010000002B -:10EAB0000000000000000000000000000000000056 -:10EAC0000000000000000000000000000000000046 -:10EAD0000000000000000000000000000000000036 -:10EAE000000000000000000000003C00AC8E0100AF -:10EAF0000000000000000000000000000000000016 -:10EB00000000000000000000000000000000000005 -:10EB100000000000000000000000000000000000F5 -:10EB20000000000000000000000000003C00E88E33 -:10EB300001000000000000000000000000000000D4 -:10EB400000000000000000000000000000000000C5 -:10EB500000000000000000000000000000000000B5 -:10EB600000000000000000000000000000003C0069 -:10EB7000248F0100000000000000000000000000E1 -:10EB80000000000000000000000000000000000085 -:10EB90000000000000000000000000000000000075 -:10EBA0000000000000000000000000000000000065 -:10EBB0003C00608F01000000000000000000000029 -:10EBC0000000000000000000000000000000000045 -:10EBD0000000000000000000000000000000000035 -:10EBE0000000000000000000000000000000000025 -:10EBF00000003C009C8F01000000000000000000AD -:10EC00000000000000000000000000000000000004 -:10EC100000000000000000000000000000000000F4 -:10EC200000000000000000000000000000000000E4 -:10EC3000000000003C00D88F010000000000000030 -:10EC400000000000000000000000000000000000C4 -:10EC500000000000000000000000000000000000B4 -:10EC600000000000000000000000000000000000A4 -:10EC70000000000000003C001490010000000000B3 -:10EC80000000000000000000000000000000000084 -:10EC90000000000000000000000000000000000074 -:10ECA0000000000000000000000000000000000064 -:10ECB00000000000000000003C0050900100000037 -:10ECC0000000000000000000000000000000000044 -:10ECD0000000000000000000000000000000000034 -:10ECE0000000000000000000000000000000000024 -:10ECF000000000000000000000003C008C900100BB -:10ED00000000000000000000000000000000000003 -:10ED100000000000000000000000000000000000F3 -:10ED200000000000000000000000000000000000E3 -:10ED30000000000000000000000000003C00C8903F -:10ED400001000000000000000000000000000000C2 -:10ED500000000000000000000000000000000000B3 -:10ED600000000000000000000000000000000000A3 -:10ED700000000000000000000000000000003C0057 -:10ED800004910100000000000000000000000000ED -:10ED90000000000000000000000000000000000073 -:10EDA0000000000000000000000000000000000063 -:10EDB0000000000000000000000000000000000053 -:10EDC0003C00409101000000000000000000000035 -:10EDD0000000000000000000000000000000000033 -:10EDE0000000000000000000000000000000000023 -:10EDF0000000000000000000000000000000000013 -:10EE000000003C007C9101000000000000000000B8 -:10EE100000000000000000000000000000000000F2 -:10EE200000000000000000000000000000000000E2 -:10EE300000000000000000000000000000000000D2 -:10EE4000000000003C00B89101000000000000003C -:10EE500000000000000000000000000000000000B2 -:10EE600000000000000000000000000000000000A2 -:10EE70000000000000000000000000000000000092 -:10EE80000000000000003C00F491010000000000C0 -:10EE90000000000000000000000000000000000072 -:10EEA0000000000000000000000000000000000062 -:10EEB0000000000000000000000000000000000052 -:10EEC00000000000000000003C0030920100000043 -:10EED0000000000000000000000000000000000032 -:10EEE0000000000000000000000000000000000022 -:10EEF0000000000000000000000000000000000012 -:10EF0000000000000000000000003C006C920100C6 -:10EF100000000000000000000000000000000000F1 -:10EF200000000000000000000000000000000000E1 -:10EF300000000000000000000000000000000000D1 -:10EF40000000000000000000000000003C00A8924B -:10EF500001000000000000000000000000000000B0 -:10EF600000000000000000000000000000000000A1 -:10EF70000000000000000000000000000000000091 -:10EF800000000000000000000000000000003C0045 -:10EF9000E4920100000000000000000000000000FA -:10EFA0000000000000000000000000000000000061 -:10EFB0000000000000000000000000000000000051 -:10EFC0000000000000000000000000000000000041 -:10EFD0003C00209301000000000000000000000041 -:10EFE0000000000000000000000000000000000021 -:10EFF0000000000000000000000000000000000011 -:10F000000000000000000000000000000000000000 -:10F0100000003C005C9301000000000000000000C4 -:10F0200000000000000000000000000000000000E0 -:10F0300000000000000000000000000000000000D0 -:10F0400000000000000000000000000000000000C0 -:10F05000000000003C009893010000000000000048 -:10F0600000000000000000000000000000000000A0 -:10F070000000000000000000000000000000000090 -:10F080000000000000000000000000000000000080 -:10F090000000000000003C00D493010000000000CC -:10F0A0000000000000000000000000000000000060 -:10F0B0000000000000000000000000000000000050 -:10F0C0000000000000000000000000000000000040 -:10F0D00000000000000000003C001094010000004F -:10F0E0000000000000000000000000000000000020 -:10F0F0000000000000000000000000000000000010 -:10F1000000000000000000000000000000000000FF -:10F11000000000000000000000003C004C940100D2 -:10F1200000000000000000000000000000000000DF -:10F1300000000000000000000000000000000000CF -:10F1400000000000000000000000000000000000BF -:10F150000000000000000000000000003C00889457 -:10F16000010000000000000000000000000000009E -:10F17000000000000000000000000000000000008F -:10F18000000000000000000000000000000000007F -:10F1900000000000000000000000000000003C0033 -:10F1A000C494010000000000000000000000000006 -:10F1B000000000000000000000000000000000004F -:10F1C000000000000000000000000000000000003F -:10F1D000000000000000000000000000000000002F -:10F1E0003C0000950100000000000000000000004D -:10F1F000000000000000000000000000000000000F -:10F2000000000000000000000000000000000000FE -:10F2100000000000000000000000000000000000EE -:10F2200000003C003C9501000000000000000000D0 -:10F2300000000000000000000000000000000000CE -:10F2400000000000000000000000000000000000BE -:10F2500000000000000000000000000000000000AE -:10F26000000000003C007895010000000000000054 -:10F27000000000000000000000000000000000008E -:10F28000000000000000000000000000000000007E -:10F29000000000000000000000000000000000006E -:10F2A0000000000000003C00B495010000000000D8 -:10F2B000000000000000000000000000000000004E -:10F2C000000000000000000000000000000000003E -:10F2D000000000000000000000000000000000002E -:10F2E00000000000000000003C00F095010000005C -:10F2F000000000000000000000000000000000000E -:10F3000000000000000000000000000000000000FD -:10F3100000000000000000000000000000000000ED -:10F32000000000000000000000003C002C960100DE -:10F3300000000000000000000000000000000000CD -:10F3400000000000000000000000000000000000BD -:10F3500000000000000000000000000000000000AD -:10F360000000000000000000000000003C00689663 -:10F37000010000000000000000000000000000008C -:10F38000000000000000000000000000000000007D -:10F39000000000000000000000000000000000006D -:10F3A00000000000000000000000000000003C0021 -:10F3B000A496010000000000000000000000000012 -:10F3C000000000000000000000000000000000003D -:10F3D000000000000000000000000000000000002D -:10F3E000000000000000000000000000000000001D -:10F3F0003C00E0960100000000000000000000005A -:10F4000000000000000000000000000000000000FC -:10F4100000000000000000000000000000000000EC -:10F4200000000000000000000000000000000000DC -:10F4300000003C001C9701000000000000000000DC -:10F4400000000000000000000000000000000000BC -:10F4500000000000000000000000000000000000AC -:10F46000000000000000000000000000000000009C -:10F47000000000003C005897010000000000000060 -:10F48000000000000000000000000000000000007C -:10F49000000000000000000000000000000000006C -:10F4A000000000000000000000000000000000005C -:10F4B0000000000000003C009497010000000000E4 -:10F4C000000000000000000000000000000000003C -:10F4D000000000000000000000000000000000002C -:10F4E000000000000000000000000000000000001C -:10F4F00000000000000000003C00D0970100000068 -:10F5000000000000000000000000000000000000FB -:10F5100000000000000000000000000000000000EB -:10F5200000000000000000000000000000000000DB -:10F53000000000000000000000003C000C980100EA -:10F5400000000000000000000000000000000000BB -:10F5500000000000000000000000000000000000AB -:10F56000000000000000000000000000000000009B -:10F570000000000000000000000000003C0048986F -:10F58000010000000000000000000000000000007A -:10F59000000000000000000000000000000000006B -:10F5A000000000000000000000000000000000005B -:10F5B00000000000000000000000000000003C000F -:10F5C000849801000000000000000000000000001E -:10F5D000000000000000000000000000000000002B -:10F5E000000000000000000000000000000000001B -:10F5F000000000000000000000000000000000000B -:10F600003C00C09801000000000000000000000065 -:10F6100000000000000000000000000000000000EA -:10F6200000000000000000000000000000000000DA -:10F6300000000000000000000000000000000000CA -:10F6400000003C00FC9801000000000000000000E9 -:10F6500000000000000000000000000000000000AA -:10F66000000000000000000000000000000000009A -:10F67000000000000000000000000000000000008A -:10F68000000000003C00389901000000000000006C -:10F69000000000000000000000000000000000006A -:10F6A000000000000000000000000000000000005A -:10F6B000000000000000000000000000000000004A -:10F6C0000000000000003C007499010000000000F0 -:10F6D000000000000000000000000000000000002A -:10F6E000000000000000000000000000000000001A -:10F6F000000000000000000000000000000000000A -:10F7000000000000000000003C00B0990100000073 -:10F7100000000000000000000000000000000000E9 -:10F7200000000000000000000000000000000000D9 -:10F7300000000000000000000000000000000000C9 -:10F74000000000000000000000003C00EC990100F7 -:10F7500000000000000000000000000000000000A9 -:10F760000000000000000000000000000000000099 -:10F770000000000000000000000000000000000089 -:10F780000000000000000000000000003C00289A7B -:10F790000100000000000000000000000000000068 -:10F7A0000000000000000000000000000000000059 -:10F7B0000000000000000000000000000000000049 -:10F7C00000000000000000000000000000003C00FD -:10F7D000649A01000000000000000000000000002A -:10F7E0000000000000000000000000000000000019 -:10F7F0000000000000000000000000000000000009 -:10F8000000000000000000000000000000000000F8 -:10F810003C00A09A01000000000000000000000071 -:10F8200000000000000000000000000000000000D8 -:10F8300000000000000000000000000000000000C8 -:10F8400000000000000000000000000000000000B8 -:10F8500000003C00DC9A01000000000000000000F5 -:10F860000000000000000000000000000000000098 -:10F870000000000000000000000000000000000088 -:10F880000000000000000000000000000000000078 -:10F89000000000003C00189B010000000000000078 -:10F8A0000000000000000000000000000000000058 -:10F8B0000000000000000000000000000000000048 -:10F8C0000000000000000000000000000000000038 -:10F8D0000000000000003C00549B010000000000FC -:10F8E0000000000000000000000000000000000018 -:10F8F0000000000000000000000000000000000008 -:10F9000000000000000000000000000000000000F7 -:10F9100000000000000000003C00909B010000007F -:10F9200000000000000000000000000000000000D7 -:10F9300000000000000000000000000000000000C7 -:10F9400000000000000000000000000000000000B7 -:10F95000000000000000000000003C00CC9B010003 -:10F960000000000000000000000000000000000097 -:10F970000000000000000000000000000000000087 -:10F980000000000000000000000000000000000077 -:10F990000000000000000000000000003C00089C87 -:10F9A0000100000000000000000000000000000056 -:10F9B0000000000000000000000000000000000047 -:10F9C0000000000000000000000000000000000037 -:10F9D00000000000000000000000000000003C00EB -:10F9E000449C010000000000000000000000000036 -:10F9F0000000000000000000000000000000000007 -:10FA000000000000000000000000000000000000F6 -:10FA100000000000000000000000000000000000E6 -:10FA20003C00809C0100000000000000000000007D -:10FA300000000000000000000000000000000000C6 -:10FA400000000000000000000000000000000000B6 -:10FA500000000000000000000000000000000000A6 -:10FA600000003C00BC9C0100000000000000000001 -:10FA70000000000000000000000000000000000086 -:10FA80000000000000000000000000000000000076 -:10FA90000000000000000000000000000000000066 -:10FAA000000000003C00F89C010000000000000085 -:10FAB0000000000000000000000000000000000046 -:10FAC0000000000000000000000000000000000036 -:10FAD0000000000000000000000000000000000026 -:10FAE0000000000000003C00349D01000000000008 -:10FAF0000000000000000000000000000000000006 -:10FB000000000000000000000000000000000000F5 -:10FB100000000000000000000000000000000000E5 -:10FB200000000000000000003C00709D010000008B -:10FB300000000000000000000000000000000000C5 -:10FB400000000000000000000000000000000000B5 -:10FB500000000000000000000000000000000000A5 -:10FB6000000000000000000000003C00AC9D01000F -:10FB70000000000000000000000000000000000085 -:10FB80000000000000000000000000000000000075 -:10FB90000000000000000000000000000000000065 -:10FBA0000000000000000000000000003C00E89D94 -:10FBB0000100000000000000000000000000000044 -:10FBC0000000000000000000000000000000000035 -:10FBD0000000000000000000000000000000000025 -:10FBE00000000000000000000000000000003C00D9 -:10FBF000249E010000000000000000000000000042 -:10FC000000000000000000000000000000000000F4 -:10FC100000000000000000000000000000000000E4 -:10FC200000000000000000000000000000000000D4 -:10FC30003C00609E01000000000000000000000089 -:10FC400000000000000000000000000000000000B4 -:10FC500000000000000000000000000000000000A4 -:10FC60000000000000000000000000000000000094 -:10FC700000003C009C9E010000000000000000000D -:10FC80000000000000000000000000000000000074 -:10FC90000000000000000000000000000000000064 -:10FCA0000000000000000000000000000000000054 -:10FCB000000000003C00D89E010000000000000091 -:10FCC0000000000000000000000000000000000034 -:10FCD0000000000000000000000000000000000024 -:10FCE0000000000000000000000000000000000014 -:10FCF0000000000000003C00149F01000000000014 -:10FD000000000000000000000000000000000000F3 -:10FD100000000000000000000000000000000000E3 -:10FD200000000000000000000000000000000000D3 -:10FD300000000000000000003C00509F0100000097 -:10FD400000000000000000000000000000000000B3 -:10FD500000000000000000000000000000000000A3 -:10FD60000000000000000000000000000000000093 -:10FD7000000000000000000000003C008C9F01001B -:10FD80000000000000000000000000000000000073 -:10FD90000000000000000000000000000000000063 -:10FDA0000000000000000000000000000000000053 -:10FDB0000000000000000000000000003C00C89FA0 -:10FDC0000100000000000000000000000000000032 -:10FDD0000000000000000000000000000000000023 -:10FDE0000000000000000000000000000000000013 -:10FDF00000000000000000000000000000003C00C7 -:10FE000004A001000000000000000000000000004D -:10FE100000000000000000000000000000000000E2 -:10FE200000000000000000000000000000000000D2 -:10FE300000000000000000000000000000000000C2 -:10FE40003C0040A001000000000000000000000095 -:10FE500000000000000000000000000000000000A2 -:10FE60000000000000000000000000000000000092 -:10FE70000000000000000000000000000000000082 -:10FE800000003C007CA00100000000000000000019 -:10FE90000000000000000000000000000000000062 -:10FEA0000000000000000000000000000000000052 -:10FEB0000000000000000000000000000000000042 -:10FEC000000000003C00B8A001000000000000009D -:10FED0000000000000000000000000000000000022 -:10FEE0000000000000000000000000000000000012 -:10FEF0000000000000000000000000000000000002 -:10FF00000000000000003C00F4A001000000000020 -:10FF100000000000000000000000000000000000E1 -:10FF200000000000000000000000000000000000D1 -:10FF300000000000000000000000000000000000C1 -:10FF400000000000000000003C0030A101000000A3 -:10FF500000000000000000000000000000000000A1 -:10FF60000000000000000000000000000000000091 -:10FF70000000000000000000000000000000000081 -:10FF8000000000000000000000003C006CA1010027 -:10FF90000000000000000000000000000000000061 -:10FFA0000000000000000000000000000000000051 -:10FFB0000000000000000000000000000000000041 -:10FFC0000000000000000000000000003C00A8A1AC -:10FFD0000100000000000000000000000000000020 -:10FFE0000000000000000000000000000000000011 -:10FFF0000000000000000000000000000000000001 -:02000004800278 -:1000000000000000000000000000000000003C00B4 -:10001000E4A101000000000000000000000000005A -:1000200000000000000000000000000000000000D0 -:1000300000000000000000000000000000000000C0 -:1000400000000000000000000000000000000000B0 -:100050003C0020A2010000000000000000000000A1 -:100060000000000000000000000000000000000090 -:100070000000000000000000000000000000000080 -:100080000000000000000000000000000000000070 -:1000900000003C005CA20100000000000000000025 -:1000A0000000000000000000000000000000000050 -:1000B0000000000000000000000000000000000040 -:1000C0000000000000000000000000000000000030 -:1000D000000000003C0098A20100000000000000A9 -:1000E0000000000000000000000000000000000010 -:1000F0000000000000000000000000000000000000 -:1001000000000000000000000000000000000000EF -:100110000000000000003C00D4A20100000000002C -:1001200000000000000000000000000000000000CF -:1001300000000000000000000000000000000000BF -:1001400000000000000000000000000000000000AF -:1001500000000000000000003C0010A301000000AF -:10016000000000000000000000000000000000008F -:10017000000000000000000000000000000000007F -:10018000000000000000000000000000000000006F -:10019000000000000000000000003C004CA3010033 -:1001A000000000000000000000000000000000004F -:1001B000000000000000000000000000000000003F -:1001C000000000000000000000000000000000002F -:1001D0000000000000000000000000003C0088A3B8 -:1001E000010000000000000000000000000000000E -:1001F00000000000000000000000000000000000FF -:1002000000000000000000000000000000000000EE -:1002100000000000000000000000000000003C00A2 -:10022000C4A3010000000000000000000000000066 -:1002300000000000000000000000000000000000BE -:1002400000000000000000000000000000000000AE -:10025000000000000000000000000000000000009E -:100260003C0000A4010000000000000000000000AD -:10027000000000000000000000000000000000007E -:10028000000000000000000000000000000000006E -:10029000000000000000000000000000000000005E -:1002A00000003C003CA40100000000000000000031 -:1002B000000000000000000000000000000000003E -:1002C000000000000000000000000000000000002E -:1002D000000000000000000000000000000000001E -:1002E000000000003C0078A40100000000000000B5 -:1002F00000000000000000000000000000000000FE -:1003000000000000000000000000000000000000ED -:1003100000000000000000000000000000000000DD -:100320000000000000003C00B4A401000000000038 -:1003300000000000000000000000000000000000BD -:1003400000000000000000000000000000000000AD -:10035000000000000000000000000000000000009D -:1003600000000000000000003C00F0A401000000BC -:10037000000000000000000000000000000000007D -:10038000000000000000000000000000000000006D -:10039000000000000000000000000000000000005D -:1003A000000000000000000000003C002CA501003F -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E0000000000000000000000000003C0068A5C4 -:1003F00001000000000000000000000000000000FC -:1004000000000000000000000000000000000000EC -:1004100000000000000000000000000000000000DC -:1004200000000000000000000000000000003C0090 -:10043000A4A5010000000000000000000000000072 -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:100470003C00E0A5010000000000000000000000BA -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B00000003C001CA6010000000000000000003D -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F000000000003C0058A60100000000000000C1 -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:100530000000000000003C0094A601000000000044 -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:1005700000000000000000003C00D0A601000000C8 -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000003C000CA701004B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F0000000000000000000000000003C0048A7D0 -:1006000001000000000000000000000000000000E9 -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000003C007E -:1006400084A701000000000000000000000000007E -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:100680003C00C0A7010000000000000000000000C6 -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C00000003C00FCA7010000000000000000004A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:10070000000000003C0038A80100000000000000CC -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:100740000000000000003C0074A801000000000050 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:1007800000000000000000003C00B0A801000000D4 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C000000000000000000000003C00ECA8010058 -:1007D0000000000000000000000000000000000019 -:1007E0000000000000000000000000000000000009 -:1007F00000000000000000000000000000000000F9 -:100800000000000000000000000000003C0028A9DB -:1008100001000000000000000000000000000000D7 -:1008200000000000000000000000000000000000C8 -:1008300000000000000000000000000000000000B8 -:1008400000000000000000000000000000003C006C -:1008500064A901000000000000000000000000008A -:100860000000000000000000000000000000000088 -:100870000000000000000000000000000000000078 -:100880000000000000000000000000000000000068 -:100890003C00A0A9010000000000000000000000D2 -:1008A0000000000000000000000000000000000048 -:1008B0000000000000000000000000000000000038 -:1008C0000000000000000000000000000000000028 -:1008D00000003C00DCA90100000000000000000056 -:1008E0000000000000000000000000000000000008 -:1008F00000000000000000000000000000000000F8 -:1009000000000000000000000000000000000000E7 -:10091000000000003C0018AA0100000000000000D8 -:1009200000000000000000000000000000000000C7 -:1009300000000000000000000000000000000000B7 -:1009400000000000000000000000000000000000A7 -:100950000000000000003C0054AA0100000000005C -:100960000000000000000000000000000000000087 -:100970000000000000000000000000000000000077 -:100980000000000000000000000000000000000067 -:1009900000000000000000003C0090AA01000000E0 -:1009A0000000000000000000000000000000000047 -:1009B0000000000000000000000000000000000037 -:1009C0000000000000000000000000000000000027 -:1009D000000000000000000000003C00CCAA010064 -:1009E0000000000000000000000000000000000007 -:1009F00000000000000000000000000000000000F7 -:100A000000000000000000000000000000000000E6 -:100A10000000000000000000000000003C0008ABE7 -:100A200001000000000000000000000000000000C5 -:100A300000000000000000000000000000000000B6 -:100A400000000000000000000000000000000000A6 -:100A500000000000000000000000000000003C005A -:100A600044AB010000000000000000000000000096 -:100A70000000000000000000000000000000000076 -:100A80000000000000000000000000000000000066 -:100A90000000000000000000000000000000000056 -:100AA0003C0080AB010000000000000000000000DE -:100AB0000000000000000000000000000000000036 -:100AC0000000000000000000000000000000000026 -:100AD0000000000000000000000000000000000016 -:100AE00000003C00BCAB0100000000000000000062 -:100AF00000000000000000000000000000000000F6 -:100B000000000000000000000000000000000000E5 -:100B100000000000000000000000000000000000D5 -:100B2000000000003C00F8AB0100000000000000E5 -:100B300000000000000000000000000000000000B5 -:100B400000000000000000000000000000000000A5 -:100B50000000000000000000000000000000000095 -:100B60000000000000003C0034AC01000000000068 -:100B70000000000000000000000000000000000075 -:100B80000000000000000000000000000000000065 -:100B90000000000000000000000000000000000055 -:100BA00000000000000000003C0070AC01000000EC -:100BB0000000000000000000000000000000000035 -:100BC0000000000000000000000000000000000025 -:100BD0000000000000000000000000000000000015 -:100BE000000000000000000000003C00ACAC010070 -:100BF00000000000000000000000000000000000F5 -:100C000000000000000000000000000000000000E4 -:100C100000000000000000000000000000000000D4 -:100C20000000000000000000000000003C00E8ACF4 -:100C300001000000000000000000000000000000B3 -:100C400000000000000000000000000000000000A4 -:100C50000000000000000000000000000000000094 -:100C600000000000000000000000000000003C0048 -:100C700024AD0100000000000000000000000000A2 -:100C80000000000000000000000000000000000064 -:100C90000000000000000000000000000000000054 -:100CA0000000000000000000000000000000000044 -:100CB0003C0060AD010000000000000000000000EA -:100CC0000000000000000000000000000000000024 -:100CD0000000000000000000000000000000000014 -:100CE0000000000000000000000000000000000004 -:100CF00000003C009CAD010000000000000000006E -:100D000000000000000000000000000000000000E3 -:100D100000000000000000000000000000000000D3 -:100D200000000000000000000000000000000000C3 -:100D3000000000003C00D8AD0100000000000000F1 -:100D400000000000000000000000000000000000A3 -:100D50000000000000000000000000000000000093 -:100D60000000000000000000000000000000000083 -:100D70000000000000003C0014AE01000000000074 -:100D80000000000000000000000000000000000063 -:100D90000000000000000000000000000000000053 -:100DA0000000000000000000000000000000000043 -:100DB00000000000000000003C0050AE01000000F8 -:100DC0000000000000000000000000000000000023 -:100DD0000000000000000000000000000000000013 -:100DE0000000000000000000000000000000000003 -:100DF000000000000000000000003C008CAE01007C -:100E000000000000000000000000000000000000E2 -:100E100000000000000000000000000000000000D2 -:100E200000000000000000000000000000000000C2 -:100E30000000000000000000000000003C00C8AE00 -:100E400001000000000000000000000000000000A1 -:100E50000000000000000000000000000000000092 -:100E60000000000000000000000000000000000082 -:100E700000000000000000000000000000003C0036 -:100E800004AF0100000000000000000000000000AE -:100E90000000000000000000000000000000000052 -:100EA0000000000000000000000000000000000042 -:100EB0000000000000000000000000000000000032 -:100EC0003C0040AF010000000000000000000000F6 -:100ED0000000000000000000000000000000000012 -:100EE0000000000000000000000000000000000002 -:100EF00000000000000000000000000000000000F2 -:100F000000003C007CAF0100000000000000000079 -:100F100000000000000000000000000000000000D1 -:100F200000000000000000000000000000000000C1 -:100F300000000000000000000000000000000000B1 -:100F4000000000003C00B8AF0100000000000000FD -:100F50000000000000000000000000000000000091 -:100F60000000000000000000000000000000000081 -:100F70000000000000000000000000000000000071 -:100F80000000000000003C00F4AF01000000000081 -:100F90000000000000000000000000000000000051 -:100FA0000000000000000000000000000000000041 -:100FB0000000000000000000000000000000000031 -:100FC00000000000000000003C0030B00100000004 -:100FD0000000000000000000000000000000000011 -:100FE0000000000000000000000000000000000001 -:100FF00000000000000000000000000000000000F1 -:10100000000000000000000000003C006CB0010087 -:1010100000000000000000000000000000000000D0 -:1010200000000000000000000000000000000000C0 -:1010300000000000000000000000000000000000B0 -:101040000000000000000000000000003C00A8B00C -:10105000010000000000000000000000000000008F -:101060000000000000000000000000000000000080 -:101070000000000000000000000000000000000070 -:1010800000000000000000000000000000003C0024 -:10109000E4B00100000000000000000000000000BB -:1010A0000000000000000000000000000000000040 -:1010B0000000000000000000000000000000000030 -:1010C0000000000000000000000000000000000020 -:1010D0003C0020B101000000000000000000000002 -:1010E0000000000000000000000000000000000000 -:1010F00000000000000000000000000000000000F0 -:1011000000000000000000000000000000000000DF -:1011100000003C005CB10100000000000000000085 -:1011200000000000000000000000000000000000BF -:1011300000000000000000000000000000000000AF -:10114000000000000000000000000000000000009F -:10115000000000003C0098B1010000000000000009 -:10116000000000000000000000000000000000007F -:10117000000000000000000000000000000000006F -:10118000000000000000000000000000000000005F -:101190000000000000003C00D4B10100000000008D -:1011A000000000000000000000000000000000003F -:1011B000000000000000000000000000000000002F -:1011C000000000000000000000000000000000001F -:1011D00000000000000000003C0010B20100000010 -:1011E00000000000000000000000000000000000FF -:1011F00000000000000000000000000000000000EF -:1012000000000000000000000000000000000000DE -:10121000000000000000000000003C004CB2010093 -:1012200000000000000000000000000000000000BE -:1012300000000000000000000000000000000000AE -:10124000000000000000000000000000000000009E -:101250000000000000000000000000003C0088B218 -:10126000010000000000000000000000000000007D -:10127000000000000000000000000000000000006E -:10128000000000000000000000000000000000005E -:1012900000000000000000000000000000003C0012 -:1012A000C4B20100000000000000000000000000C7 -:1012B000000000000000000000000000000000002E -:1012C000000000000000000000000000000000001E -:1012D000000000000000000000000000000000000E -:1012E0003C0000B30100000000000000000000000E -:1012F00000000000000000000000000000000000EE -:1013000000000000000000000000000000000000DD -:1013100000000000000000000000000000000000CD -:1013200000003C003CB30100000000000000000091 -:1013300000000000000000000000000000000000AD -:10134000000000000000000000000000000000009D -:10135000000000000000000000000000000000008D -:10136000000000003C0078B3010000000000000015 -:10137000000000000000000000000000000000006D -:10138000000000000000000000000000000000005D -:10139000000000000000000000000000000000004D -:1013A0000000000000003C00B4B301000000000099 -:1013B000000000000000000000000000000000002D -:1013C000000000000000000000000000000000001D -:1013D000000000000000000000000000000000000D -:1013E00000000000000000003C00F0B3010000001D -:1013F00000000000000000000000000000000000ED -:1014000000000000000000000000000000000000DC -:1014100000000000000000000000000000000000CC -:10142000000000000000000000003C002CB401009F -:1014300000000000000000000000000000000000AC -:10144000000000000000000000000000000000009C -:10145000000000000000000000000000000000008C -:101460000000000000000000000000003C0068B424 -:10147000010000000000000000000000000000006B -:10148000000000000000000000000000000000005C -:10149000000000000000000000000000000000004C -:1014A00000000000000000000000000000003C0000 -:1014B000A4B40100000000000000000000000000D3 -:1014C000000000000000000000000000000000001C -:1014D000000000000000000000000000000000000C -:1014E00000000000000000000000000000000000FC -:1014F0003C00E0B40100000000000000000000001B -:1015000000000000000000000000000000000000DB -:1015100000000000000000000000000000000000CB -:1015200000000000000000000000000000000000BB -:1015300000003C001CB5010000000000000000009D -:10154000000000000000000000000000000000009B -:10155000000000000000000000000000000000008B -:10156000000000000000000000000000000000007B -:10157000000000003C0058B5010000000000000021 -:10158000000000000000000000000000000000005B -:10159000000000000000000000000000000000004B -:1015A000000000000000000000000000000000003B -:1015B0000000000000003C0094B5010000000000A5 -:1015C000000000000000000000000000000000001B -:1015D000000000000000000000000000000000000B -:1015E00000000000000000000000000000000000FB -:1015F00000000000000000003C00D0B50100000029 -:1016000000000000000000000000000000000000DA -:1016100000000000000000000000000000000000CA -:1016200000000000000000000000000000000000BA -:10163000000000000000000000003C000CB60100AB -:10164000000000000000000000000000000000009A -:10165000000000000000000000000000000000008A -:10166000000000000000000000000000000000007A -:101670000000000000000000000000003C0048B630 -:101680000100000000000000000000000000000059 -:10169000000000000000000000000000000000004A -:1016A000000000000000000000000000000000003A -:1016B00000000000000000000000000000003C00EE -:1016C00084B60100000000000000000000000000DF -:1016D000000000000000000000000000000000000A -:1016E00000000000000000000000000000000000FA -:1016F00000000000000000000000000000000000EA -:101700003C00C0B601000000000000000000000026 -:1017100000000000000000000000000000000000C9 -:1017200000000000000000000000000000000000B9 -:1017300000000000000000000000000000000000A9 -:1017400000003C00FCB601000000000000000000AA -:101750000000000000000000000000000000000089 -:101760000000000000000000000000000000000079 -:101770000000000000000000000000000000000069 -:10178000000000003C0038B701000000000000002D -:101790000000000000000000000000000000000049 -:1017A0000000000000000000000000000000000039 -:1017B0000000000000000000000000000000000029 -:1017C0000000000000003C0074B7010000000000B1 -:1017D0000000000000000000000000000000000009 -:1017E00000000000000000000000000000000000F9 -:1017F00000000000000000000000000000000000E9 -:1018000000000000000000003C00B0B70100000034 -:1018100000000000000000000000000000000000C8 -:1018200000000000000000000000000000000000B8 -:1018300000000000000000000000000000000000A8 -:10184000000000000000000000003C00ECB70100B8 -:101850000000000000000000000000000000000088 -:101860000000000000000000000000000000000078 -:101870000000000000000000000000000000000068 -:101880000000000000000000000000003C0028B83C -:101890000100000000000000000000000000000047 -:1018A0000000000000000000000000000000000038 -:1018B0000000000000000000000000000000000028 -:1018C00000000000000000000000000000003C00DC -:1018D00064B80100000000000000000000000000EB -:1018E00000000000000000000000000000000000F8 -:1018F00000000000000000000000000000000000E8 -:1019000000000000000000000000000000000000D7 -:101910003C00A0B801000000000000000000000032 -:1019200000000000000000000000000000000000B7 -:1019300000000000000000000000000000000000A7 -:101940000000000000000000000000000000000097 -:1019500000003C00DCB801000000000000000000B6 -:101960000000000000000000000000000000000077 -:101970000000000000000000000000000000000067 -:101980000000000000000000000000000000000057 -:10199000000000003C0018B9010000000000000039 -:1019A0000000000000000000000000000000000037 -:1019B0000000000000000000000000000000000027 -:1019C0000000000000000000000000000000000017 -:1019D0000000000000003C0054B9010000000000BD -:1019E00000000000000000000000000000000000F7 -:1019F00000000000000000000000000000000000E7 -:101A000000000000000000000000000000000000D6 -:101A100000000000000000003C0090B90100000040 -:101A200000000000000000000000000000000000B6 -:101A300000000000000000000000000000000000A6 -:101A40000000000000000000000000000000000096 -:101A5000000000000000000000003C00CCB90100C4 -:101A60000000000000000000000000000000000076 -:101A70000000000000000000000000000000000066 -:101A80000000000000000000000000000000000056 -:101A90000000000000000000000000003C0008BA48 -:101AA0000100000000000000000000000000000035 -:101AB0000000000000000000000000000000000026 -:101AC0000000000000000000000000000000000016 -:101AD00000000000000000000000000000003C00CA -:101AE00044BA0100000000000000000000000000F7 -:101AF00000000000000000000000000000000000E6 -:101B000000000000000000000000000000000000D5 -:101B100000000000000000000000000000000000C5 -:101B20003C0080BA0100000000000000000000003E -:101B300000000000000000000000000000000000A5 -:101B40000000000000000000000000000000000095 -:101B50000000000000000000000000000000000085 -:101B600000003C00BCBA01000000000000000000C2 -:101B70000000000000000000000000000000000065 -:101B80000000000000000000000000000000000055 -:101B90000000000000000000000000000000000045 -:101BA000000000003C00F8BA010000000000000046 -:101BB0000000000000000000000000000000000025 -:101BC0000000000000000000000000000000000015 -:101BD0000000000000000000000000000000000005 -:101BE0000000000000003C0034BB010000000000C9 -:101BF00000000000000000000000000000000000E5 -:101C000000000000000000000000000000000000D4 -:101C100000000000000000000000000000000000C4 -:101C200000000000000000003C0070BB010000004C -:101C300000000000000000000000000000000000A4 -:101C40000000000000000000000000000000000094 -:101C50000000000000000000000000000000000084 -:101C6000000000000000000000003C00ACBB0100D0 -:101C70000000000000000000000000000000000064 -:101C80000000000000000000000000000000000054 -:101C90000000000000000000000000000000000044 -:101CA0000000000000000000000000003C00E8BB55 -:101CB0000100000000000000000000000000000023 -:101CC0000000000000000000000000000000000014 -:101CD0000000000000000000000000000000000004 -:101CE00000000000000000000000000000003C00B8 -:101CF00024BC010000000000000000000000000003 -:101D000000000000000000000000000000000000D3 -:101D100000000000000000000000000000000000C3 -:101D200000000000000000000000000000000000B3 -:101D30003C0060BC0100000000000000000000004A -:101D40000000000000000000000000000000000093 -:101D50000000000000000000000000000000000083 -:101D60000000000000000000000000000000000073 -:101D700000003C009CBC01000000000000000000CE -:101D80000000000000000000000000000000000053 -:101D90000000000000000000000000000000000043 -:101DA0000000000000000000000000000000000033 -:101DB000000000003C00D8BC010000000000000052 -:101DC0000000000000000000000000000000000013 -:101DD0000000000000000000000000000000000003 -:101DE00000000000000000000000000000000000F3 -:101DF0000000000000003C0014BD010000000000D5 -:101E000000000000000000000000000000000000D2 -:101E100000000000000000000000000000000000C2 -:101E200000000000000000000000000000000000B2 -:101E300000000000000000003C0050BD0100000058 -:101E40000000000000000000000000000000000092 -:101E50000000000000000000000000000000000082 -:101E60000000000000000000000000000000000072 -:101E7000000000000000000000003C008CBD0100DC -:101E80000000000000000000000000000000000052 -:101E90000000000000000000000000000000000042 -:101EA0000000000000000000000000000000000032 -:101EB0000000000000000000000000003C00C8BD61 -:101EC0000100000000000000000000000000000011 -:101ED0000000000000000000000000000000000002 -:101EE00000000000000000000000000000000000F2 -:101EF00000000000000000000000000000003C00A6 -:101F000004BE01000000000000000000000000000E -:101F100000000000000000000000000000000000C1 -:101F200000000000000000000000000000000000B1 -:101F300000000000000000000000000000000000A1 -:101F40003C0040BE01000000000000000000000056 -:101F50000000000000000000000000000000000081 -:101F60000000000000000000000000000000000071 -:101F70000000000000000000000000000000000061 -:101F800000003C007CBE01000000000000000000DA -:101F90000000000000000000000000000000000041 -:101FA0000000000000000000000000000000000031 -:101FB0000000000000000000000000000000000021 -:101FC000000000003C00B8BE01000000000000005E -:101FD0000000000000000000000000000000000001 -:101FE00000000000000000000000000000000000F1 -:101FF00000000000000000000000000000000000E1 -:102000000000000000003C00F4BE010000000000E1 -:1020100000000000000000000000000000000000C0 -:1020200000000000000000000000000000000000B0 -:1020300000000000000000000000000000000000A0 -:1020400000000000000000003C0030BF0100000064 -:102050000000000000000000000000000000000080 -:102060000000000000000000000000000000000070 -:102070000000000000000000000000000000000060 -:10208000000000000000000000003C006CBF0100E8 -:102090000000000000000000000000000000000040 -:1020A0000000000000000000000000000000000030 -:1020B0000000000000000000000000000000000020 -:1020C0000000000000000000000000003C00A8BF6D -:1020D00001000000000000000000000000000000FF -:1020E00000000000000000000000000000000000F0 -:1020F00000000000000000000000000000000000E0 -:1021000000000000000000000000000000003C0093 -:10211000E4BF01000000000000000000000000001B -:1021200000000000000000000000000000000000AF -:10213000000000000000000000000000000000009F -:10214000000000000000000000000000000000008F -:102150003C0020C001000000000000000000000062 -:10216000000000000000000000000000000000006F -:10217000000000000000000000000000000000005F -:10218000000000000000000000000000000000004F -:1021900000003C005CC001000000000000000000E6 -:1021A000000000000000000000000000000000002F -:1021B000000000000000000000000000000000001F -:1021C000000000000000000000000000000000000F -:1021D000000000003C0098C001000000000000006A -:1021E00000000000000000000000000000000000EF -:1021F00000000000000000000000000000000000DF -:1022000000000000000000000000000000000000CE -:102210000000000000003C00D4C0010000000000ED -:1022200000000000000000000000000000000000AE -:10223000000000000000000000000000000000009E -:10224000000000000000000000000000000000008E -:1022500000000000000000003C0010C10100000070 -:10226000000000000000000000000000000000006E -:10227000000000000000000000000000000000005E -:10228000000000000000000000000000000000004E -:10229000000000000000000000003C004CC10100F4 -:1022A000000000000000000000000000000000002E -:1022B000000000000000000000000000000000001E -:1022C000000000000000000000000000000000000E -:1022D0000000000000000000000000003C0088C179 -:1022E00001000000000000000000000000000000ED -:1022F00000000000000000000000000000000000DE -:1023000000000000000000000000000000000000CD -:1023100000000000000000000000000000003C0081 -:10232000C4C1010000000000000000000000000027 -:10233000000000000000000000000000000000009D -:10234000000000000000000000000000000000008D -:10235000000000000000000000000000000000007D -:102360003C0000C20100000000000000000000006E -:10237000000000000000000000000000000000005D -:10238000000000000000000000000000000000004D -:10239000000000000000000000000000000000003D -:1023A00000003C003CC201000000000000000000F2 -:1023B000000000000000000000000000000000001D -:1023C000000000000000000000000000000000000D -:1023D00000000000000000000000000000000000FD -:1023E000000000003C0078C2010000000000000076 -:1023F00000000000000000000000000000000000DD -:1024000000000000000000000000000000000000CC -:1024100000000000000000000000000000000000BC -:102420000000000000003C00B4C2010000000000F9 -:10243000000000000000000000000000000000009C -:10244000000000000000000000000000000000008C -:10245000000000000000000000000000000000007C -:1024600000000000000000003C00F0C2010000007D -:10247000000000000000000000000000000000005C -:10248000000000000000000000000000000000004C -:10249000000000000000000000000000000000003C -:1024A000000000000000000000003C002CC3010000 -:1024B000000000000000000000000000000000001C -:1024C000000000000000000000000000000000000C -:1024D00000000000000000000000000000000000FC -:1024E0000000000000000000000000003C0068C385 -:1024F00001000000000000000000000000000000DB -:1025000000000000000000000000000000000000CB -:1025100000000000000000000000000000000000BB -:1025200000000000000000000000000000003C006F -:10253000A4C3010000000000000000000000000033 -:10254000000000000000000000000000000000008B -:10255000000000000000000000000000000000007B -:10256000000000000000000000000000000000006B -:102570003C00E0C30100000000000000000000007B -:10258000000000000000000000000000000000004B -:10259000000000000000000000000000000000003B -:1025A000000000000000000000000000000000002B -:1025B00000003C001CC401000000000000000000FE -:1025C000000000000000000000000000000000000B -:1025D00000000000000000000000000000000000FB -:1025E00000000000000000000000000000000000EB -:1025F000000000003C0058C4010000000000000082 -:1026000000000000000000000000000000000000CA -:1026100000000000000000000000000000000000BA -:1026200000000000000000000000000000000000AA -:102630000000000000003C0094C401000000000005 -:10264000000000000000000000000000000000008A -:10265000000000000000000000000000000000007A -:10266000000000000000000000000000000000006A -:1026700000000000000000003C00D0C40100000089 -:10268000000000000000000000000000000000004A -:10269000000000000000000000000000000000003A -:1026A000000000000000000000000000000000002A -:1026B000000000000000000000003C000CC501000C -:1026C000000000000000000000000000000000000A -:1026D00000000000000000000000000000000000FA -:1026E00000000000000000000000000000000000EA -:1026F0000000000000000000000000003C0048C591 -:1027000001000000000000000000000000000000C8 -:1027100000000000000000000000000000000000B9 -:1027200000000000000000000000000000000000A9 -:1027300000000000000000000000000000003C005D -:1027400084C501000000000000000000000000003F -:102750000000000000000000000000000000000079 -:102760000000000000000000000000000000000069 -:102770000000000000000000000000000000000059 -:102780003C00C0C501000000000000000000000087 -:102790000000000000000000000000000000000039 -:1027A0000000000000000000000000000000000029 -:1027B0000000000000000000000000000000000019 -:1027C00000003C00FCC5010000000000000000000B -:1027D00000000000000000000000000000000000F9 -:1027E00000000000000000000000000000000000E9 -:1027F00000000000000000000000000000000000D9 -:10280000000000003C0038C601000000000000008D -:1028100000000000000000000000000000000000B8 -:1028200000000000000000000000000000000000A8 -:102830000000000000000000000000000000000098 -:102840000000000000003C0074C601000000000011 -:102850000000000000000000000000000000000078 -:102860000000000000000000000000000000000068 -:102870000000000000000000000000000000000058 -:1028800000000000000000003C00B0C60100000095 -:102890000000000000000000000000000000000038 -:1028A0000000000000000000000000000000000028 -:1028B0000000000000000000000000000000000018 -:1028C000000000000000000000003C00ECC6010019 -:1028D00000000000000000000000000000000000F8 -:1028E00000000000000000000000000000000000E8 -:1028F00000000000000000000000000000000000D8 -:102900000000000000000000000000003C0028C79C -:1029100001000000000000000000000000000000B6 -:1029200000000000000000000000000000000000A7 -:102930000000000000000000000000000000000097 -:1029400000000000000000000000000000003C004B -:1029500064C701000000000000000000000000004B -:102960000000000000000000000000000000000067 -:102970000000000000000000000000000000000057 -:102980000000000000000000000000000000000047 -:102990003C00A0C701000000000000000000000093 -:1029A0000000000000000000000000000000000027 -:1029B0000000000000000000000000000000000017 -:1029C0000000000000000000000000000000000007 -:1029D00000003C00DCC70100000000000000000017 -:1029E00000000000000000000000000000000000E7 -:1029F00000000000000000000000000000000000D7 -:102A000000000000000000000000000000000000C6 -:102A1000000000003C0018C8010000000000000099 -:102A200000000000000000000000000000000000A6 -:102A30000000000000000000000000000000000096 -:102A40000000000000000000000000000000000086 -:102A50000000000000003C0054C80100000000001D -:102A60000000000000000000000000000000000066 -:102A70000000000000000000000000000000000056 -:102A80000000000000000000000000000000000046 -:102A900000000000000000003C0090C801000000A1 -:102AA0000000000000000000000000000000000026 -:102AB0000000000000000000000000000000000016 -:102AC0000000000000000000000000000000000006 -:102AD000000000000000000000003C00CCC8010025 -:102AE00000000000000000000000000000000000E6 -:102AF00000000000000000000000000000000000D6 -:102B000000000000000000000000000000000000C5 -:102B10000000000000000000000000003C0008C9A8 -:102B200001000000000000000000000000000000A4 -:102B30000000000000000000000000000000000095 -:102B40000000000000000000000000000000000085 -:102B500000000000000000000000000000003C0039 -:102B600044C9010000000000000000000000000057 -:102B70000000000000000000000000000000000055 -:102B80000000000000000000000000000000000045 -:102B90000000000000000000000000000000000035 -:102BA0003C0080C90100000000000000000000009F -:102BB0000000000000000000000000000000000015 -:102BC0000000000000000000000000000000000005 -:102BD00000000000000000000000000000000000F5 -:102BE00000003C00BCC90100000000000000000023 -:102BF00000000000000000000000000000000000D5 -:102C000000000000000000000000000000000000C4 -:102C100000000000000000000000000000000000B4 -:102C2000000000003C00F8C90100000000000000A6 -:102C30000000000000000000000000000000000094 -:102C40000000000000000000000000000000000084 -:102C50000000000000000000000000000000000074 -:102C60000000000000003C0034CA01000000000029 -:102C70000000000000000000000000000000000054 -:102C80000000000000000000000000000000000044 -:102C90000000000000000000000000000000000034 -:102CA00000000000000000003C0070CA01000000AD -:102CB0000000000000000000000000000000000014 -:102CC0000000000000000000000000000000000004 -:102CD00000000000000000000000000000000000F4 -:102CE000000000000000000000003C00ACCA010031 -:102CF00000000000000000000000000000000000D4 -:102D000000000000000000000000000000000000C3 -:102D100000000000000000000000000000000000B3 -:102D20000000000000000000000000003C00E8CAB5 -:102D30000100000000000000000000000000000092 -:102D40000000000000000000000000000000000083 -:102D50000000000000000000000000000000000073 -:102D600000000000000000000000000000003C0027 -:102D700024CB010000000000000000000000000063 -:102D80000000000000000000000000000000000043 -:102D90000000000000000000000000000000000033 -:102DA0000000000000000000000000000000000023 -:102DB0003C0060CB010000000000000000000000AB -:102DC0000000000000000000000000000000000003 -:102DD00000000000000000000000000000000000F3 -:102DE00000000000000000000000000000000000E3 -:102DF00000003C009CCB010000000000000000002F -:102E000000000000000000000000000000000000C2 -:102E100000000000000000000000000000000000B2 -:102E200000000000000000000000000000000000A2 -:102E3000000000003C00D8CB0100000000000000B2 -:102E40000000000000000000000000000000000082 -:102E50000000000000000000000000000000000072 -:102E60000000000000000000000000000000000062 -:102E70000000000000003C0014CC01000000000035 -:102E80000000000000000000000000000000000042 -:102E90000000000000000000000000000000000032 -:102EA0000000000000000000000000000000000022 -:102EB00000000000000000003C0050CC01000000B9 -:102EC0000000000000000000000000000000000002 -:102ED00000000000000000000000000000000000F2 -:102EE00000000000000000000000000000000000E2 -:102EF000000000000000000000003C008CCC01003D -:102F000000000000000000000000000000000000C1 -:102F100000000000000000000000000000000000B1 -:102F200000000000000000000000000000000000A1 -:102F30000000000000000000000000003C00C8CCC1 -:102F40000100000000000000000000000000000080 -:102F50000000000000000000000000000000000071 -:102F60000000000000000000000000000000000061 -:102F700000000000000000000000000000003C0015 -:102F800004CD01000000000000000000000000006F -:102F90000000000000000000000000000000000031 -:102FA0000000000000000000000000000000000021 -:102FB0000000000000000000000000000000000011 -:102FC0003C0040CD010000000000000000000000B7 -:102FD00000000000000000000000000000000000F1 -:102FE00000000000000000000000000000000000E1 -:102FF00000000000000000000000000000000000D1 -:1030000000003C007CCD010000000000000000003A -:1030100000000000000000000000000000000000B0 -:1030200000000000000000000000000000000000A0 -:103030000000000000000000000000000000000090 -:10304000000000003C00B8CD0100000000000000BE -:103050000000000000000000000000000000000070 -:103060000000000000000000000000000000000060 -:103070000000000000000000000000000000000050 -:103080000000000000003C00F4CD01000000000042 -:103090000000000000000000000000000000000030 -:1030A0000000000000000000000000000000000020 -:1030B0000000000000000000000000000000000010 -:1030C00000000000000000003C0030CE01000000C5 -:1030D00000000000000000000000000000000000F0 -:1030E00000000000000000000000000000000000E0 -:1030F00000000000000000000000000000000000D0 -:10310000000000000000000000003C006CCE010048 -:1031100000000000000000000000000000000000AF -:10312000000000000000000000000000000000009F -:10313000000000000000000000000000000000008F -:103140000000000000000000000000003C00A8CECD -:10315000010000000000000000000000000000006E -:10316000000000000000000000000000000000005F -:10317000000000000000000000000000000000004F -:1031800000000000000000000000000000003C0003 -:10319000E4CE01000000000000000000000000007C -:1031A000000000000000000000000000000000001F -:1031B000000000000000000000000000000000000F -:1031C00000000000000000000000000000000000FF -:1031D0003C0020CF010000000000000000000000C3 -:1031E00000000000000000000000000000000000DF -:1031F00000000000000000000000000000000000CF -:1032000000000000000000000000000000000000BE -:1032100000003C005CCF0100000000000000000046 -:10322000000000000000000000000000000000009E -:10323000000000000000000000000000000000008E -:10324000000000000000000000000000000000007E -:10325000000000003C0098CF0100000000000000CA -:10326000000000000000000000000000000000005E -:10327000000000000000000000000000000000004E -:10328000000000000000000000000000000000003E -:103290000000000000003C00D4CF0100000000004E -:1032A000000000000000000000000000000000001E -:1032B000000000000000000000000000000000000E -:1032C00000000000000000000000000000000000FE -:1032D00000000000000000003C0010D001000000D1 -:1032E00000000000000000000000000000000000DE -:1032F00000000000000000000000000000000000CE -:1033000000000000000000000000000000000000BD -:10331000000000000000000000003C004CD0010054 -:10332000000000000000000000000000000000009D -:10333000000000000000000000000000000000008D -:10334000000000000000000000000000000000007D -:103350000000000000000000000000003C0088D0D9 -:10336000010000000000000000000000000000005C -:10337000000000000000000000000000000000004D -:10338000000000000000000000000000000000003D -:1033900000000000000000000000000000003C00F1 -:1033A000C4D0010000000000000000000000000088 -:1033B000000000000000000000000000000000000D -:1033C00000000000000000000000000000000000FD -:1033D00000000000000000000000000000000000ED -:1033E0003C0000D1010000000000000000000000CF -:1033F00000000000000000000000000000000000CD -:1034000000000000000000000000000000000000BC -:1034100000000000000000000000000000000000AC -:1034200000003C003CD10100000000000000000052 -:10343000000000000000000000000000000000008C -:10344000000000000000000000000000000000007C -:10345000000000000000000000000000000000006C -:10346000000000003C0078D10100000000000000D6 -:10347000000000000000000000000000000000004C -:10348000000000000000000000000000000000003C -:10349000000000000000000000000000000000002C -:1034A0000000000000003C00B4D10100000000005A -:1034B000000000000000000000000000000000000C -:1034C00000000000000000000000000000000000FC -:1034D00000000000000000000000000000000000EC -:1034E00000000000000000003C00F0D101000000DE -:1034F00000000000000000000000000000000000CC -:1035000000000000000000000000000000000000BB -:1035100000000000000000000000000000000000AB -:10352000000000000000000000003C002CD2010060 -:10353000000000000000000000000000000000008B -:10354000000000000000000000000000000000007B -:10355000000000000000000000000000000000006B -:103560000000000000000000000000003C0068D2E5 -:10357000010000000000000000000000000000004A -:10358000000000000000000000000000000000003B -:10359000000000000000000000000000000000002B -:1035A00000000000000000000000000000003C00DF -:1035B000A4D2010000000000000000000000000094 -:1035C00000000000000000000000000000000000FB -:1035D00000000000000000000000000000000000EB -:1035E00000000000000000000000000000000000DB -:1035F0003C00E0D2010000000000000000000000DC -:1036000000000000000000000000000000000000BA -:1036100000000000000000000000000000000000AA -:10362000000000000000000000000000000000009A -:1036300000003C001CD3010000000000000000005E -:10364000000000000000000000000000000000007A -:10365000000000000000000000000000000000006A -:10366000000000000000000000000000000000005A -:10367000000000003C0058D30100000000000000E2 -:10368000000000000000000000000000000000003A -:10369000000000000000000000000000000000002A -:1036A000000000000000000000000000000000001A -:1036B0000000000000003C0094D301000000000066 -:1036C00000000000000000000000000000000000FA -:1036D00000000000000000000000000000000000EA -:1036E00000000000000000000000000000000000DA -:1036F00000000000000000003C00D0D301000000EA -:1037000000000000000000000000000000000000B9 -:1037100000000000000000000000000000000000A9 -:103720000000000000000000000000000000000099 -:10373000000000000000000000003C000CD401006C -:103740000000000000000000000000000000000079 -:103750000000000000000000000000000000000069 -:103760000000000000000000000000000000000059 -:103770000000000000000000000000003C0048D4F1 -:103780000100000000000000000000000000000038 -:103790000000000000000000000000000000000029 -:1037A0000000000000000000000000000000000019 -:1037B00000000000000000000000000000003C00CD -:1037C00084D40100000000000000000000000000A0 -:1037D00000000000000000000000000000000000E9 -:1037E00000000000000000000000000000000000D9 -:1037F00000000000000000000000000000000000C9 -:103800003C00C0D4010000000000000000000000E7 -:1038100000000000000000000000000000000000A8 -:103820000000000000000000000000000000000098 -:103830000000000000000000000000000000000088 -:1038400000003C00FCD4010000000000000000006B -:103850000000000000000000000000000000000068 -:103860000000000000000000000000000000000058 -:103870000000000000000000000000000000000048 -:10388000000000003C0038D50100000000000000EE -:103890000000000000000000000000000000000028 -:1038A0000000000000000000000000000000000018 -:1038B0000000000000000000000000000000000008 -:1038C0000000000000003C0074D501000000000072 -:1038D00000000000000000000000000000000000E8 -:1038E00000000000000000000000000000000000D8 -:1038F00000000000000000000000000000000000C8 -:1039000000000000000000003C00B0D501000000F5 -:1039100000000000000000000000000000000000A7 -:103920000000000000000000000000000000000097 -:103930000000000000000000000000000000000087 -:10394000000000000000000000003C00ECD5010079 -:103950000000000000000000000000000000000067 -:103960000000000000000000000000000000000057 -:103970000000000000000000000000000000000047 -:103980000000000000000000000000003C0028D6FD -:103990000100000000000000000000000000000026 -:1039A0000000000000000000000000000000000017 -:1039B0000000000000000000000000000000000007 -:1039C00000000000000000000000000000003C00BB -:1039D00064D60100000000000000000000000000AC -:1039E00000000000000000000000000000000000D7 -:1039F00000000000000000000000000000000000C7 -:103A000000000000000000000000000000000000B6 -:103A10003C00A0D6010000000000000000000000F3 -:103A20000000000000000000000000000000000096 -:103A30000000000000000000000000000000000086 -:103A40000000000000000000000000000000000076 -:103A500000003C00DCD60100000000000000000077 -:103A60000000000000000000000000000000000056 -:103A70000000000000000000000000000000000046 -:103A80000000000000000000000000000000000036 -:103A9000000000003C0018D70100000000000000FA -:103AA0000000000000000000000000000000000016 -:103AB0000000000000000000000000000000000006 -:103AC00000000000000000000000000000000000F6 -:103AD0000000000000003C0054D70100000000007E -:103AE00000000000000000000000000000000000D6 -:103AF00000000000000000000000000000000000C6 -:103B000000000000000000000000000000000000B5 -:103B100000000000000000003C0090D70100000001 -:103B20000000000000000000000000000000000095 -:103B30000000000000000000000000000000000085 -:103B40000000000000000000000000000000000075 -:103B5000000000000000000000003C00CCD7010085 -:103B60000000000000000000000000000000000055 -:103B70000000000000000000000000000000000045 -:103B80000000000000000000000000000000000035 -:103B90000000000000000000000000003C0008D809 -:103BA0000100000000000000000000000000000014 -:103BB0000000000000000000000000000000000005 -:103BC00000000000000000000000000000000000F5 -:103BD00000000000000000000000000000003C00A9 -:103BE00044D80100000000000000000000000000B8 -:103BF00000000000000000000000000000000000C5 -:103C000000000000000000000000000000000000B4 -:103C100000000000000000000000000000000000A4 -:103C20003C0080D8010000000000000000000000FF -:103C30000000000000000000000000000000000084 -:103C40000000000000000000000000000000000074 -:103C50000000000000000000000000000000000064 -:103C600000003C00BCD80100000000000000000083 -:103C70000000000000000000000000000000000044 -:103C80000000000000000000000000000000000034 -:103C90000000000000000000000000000000000024 -:103CA000000000003C00F8D8010000000000000007 -:103CB0000000000000000000000000000000000004 -:103CC00000000000000000000000000000000000F4 -:103CD00000000000000000000000000000000000E4 -:103CE0000000000000003C0034D90100000000008A -:103CF00000000000000000000000000000000000C4 -:103D000000000000000000000000000000000000B3 -:103D100000000000000000000000000000000000A3 -:103D200000000000000000003C0070D9010000000D -:103D30000000000000000000000000000000000083 -:103D40000000000000000000000000000000000073 -:103D50000000000000000000000000000000000063 -:103D6000000000000000000000003C00ACD9010091 -:103D70000000000000000000000000000000000043 -:103D80000000000000000000000000000000000033 -:103D90000000000000000000000000000000000023 -:103DA0000000000000000000000000003C00E8D916 -:103DB0000100000000000000000000000000000002 -:103DC00000000000000000000000000000000000F3 -:103DD00000000000000000000000000000000000E3 -:103DE00000000000000000000000000000003C0097 -:103DF00024DA0100000000000000000000000000C4 -:103E000000000000000000000000000000000000B2 -:103E100000000000000000000000000000000000A2 -:103E20000000000000000000000000000000000092 -:103E30003C0060DA0100000000000000000000000B -:103E40000000000000000000000000000000000072 -:103E50000000000000000000000000000000000062 -:103E60000000000000000000000000000000000052 -:103E700000003C009CDA010000000000000000008F -:103E80000000000000000000000000000000000032 -:103E90000000000000000000000000000000000022 -:103EA0000000000000000000000000000000000012 -:103EB000000000003C00D8DA010000000000000013 -:103EC00000000000000000000000000000000000F2 -:103ED00000000000000000000000000000000000E2 -:103EE00000000000000000000000000000000000D2 -:103EF0000000000000003C0014DB01000000000096 -:103F000000000000000000000000000000000000B1 -:103F100000000000000000000000000000000000A1 -:103F20000000000000000000000000000000000091 -:103F300000000000000000003C0050DB0100000019 -:103F40000000000000000000000000000000000071 -:103F50000000000000000000000000000000000061 -:103F60000000000000000000000000000000000051 -:103F7000000000000000000000003C008CDB01009D -:103F80000000000000000000000000000000000031 -:103F90000000000000000000000000000000000021 -:103FA0000000000000000000000000000000000011 -:103FB0000000000000000000000000003C00C8DB22 -:103FC00001000000000000000000000000000000F0 -:103FD00000000000000000000000000000000000E1 -:103FE00000000000000000000000000000000000D1 -:103FF00000000000000000000000000000003C0085 -:1040000004DC0100000000000000000000000000CF -:1040100000000000000000000000000000000000A0 -:104020000000000000000000000000000000000090 -:104030000000000000000000000000000000000080 -:104040003C0040DC01000000000000000000000017 -:104050000000000000000000000000000000000060 -:104060000000000000000000000000000000000050 -:104070000000000000000000000000000000000040 -:1040800000003C007CDC010000000000000000009B -:104090000000000000000000000000000000000020 -:1040A0000000000000000000000000000000000010 -:1040B0000000000000000000000000000000000000 -:1040C000000000003C00B8DC01000000000000001F -:1040D00000000000000000000000000000000000E0 -:1040E00000000000000000000000000000000000D0 -:1040F00000000000000000000000000000000000C0 -:104100000000000000003C00F4DC010000000000A2 -:10411000000000000000000000000000000000009F -:10412000000000000000000000000000000000008F -:10413000000000000000000000000000000000007F -:1041400000000000000000003C0030DD0100000025 -:10415000000000000000000000000000000000005F -:10416000000000000000000000000000000000004F -:10417000000000000000000000000000000000003F -:10418000000000000000000000003C006CDD0100A9 -:10419000000000000000000000000000000000001F -:1041A000000000000000000000000000000000000F -:1041B00000000000000000000000000000000000FF -:1041C0000000000000000000000000003C00A8DD2E -:1041D00001000000000000000000000000000000DE -:1041E00000000000000000000000000000000000CF -:1041F00000000000000000000000000000000000BF -:1042000000000000000000000000000000003C0072 -:10421000E4DD0100000000000000000000000000DC -:10422000000000000000000000000000000000008E -:10423000000000000000000000000000000000007E -:10424000000000000000000000000000000000006E -:104250003C0020DE01000000000000000000000023 -:10426000000000000000000000000000000000004E -:10427000000000000000000000000000000000003E -:10428000000000000000000000000000000000002E -:1042900000003C005CDE01000000000000000000A7 -:1042A000000000000000000000000000000000000E -:1042B00000000000000000000000000000000000FE -:1042C00000000000000000000000000000000000EE -:1042D000000000003C0098DE01000000000000002B -:1042E00000000000000000000000000000000000CE -:1042F00000000000000000000000000000000000BE -:1043000000000000000000000000000000000000AD -:104310000000000000003C00D4DE010000000000AE -:10432000000000000000000000000000000000008D -:10433000000000000000000000000000000000007D -:10434000000000000000000000000000000000006D -:1043500000000000000000003C0010DF0100000031 -:10436000000000000000000000000000000000004D -:10437000000000000000000000000000000000003D -:10438000000000000000000000000000000000002D -:10439000000000000000000000003C004CDF0100B5 -:1043A000000000000000000000000000000000000D -:1043B00000000000000000000000000000000000FD -:1043C00000000000000000000000000000000000ED -:1043D0000000000000000000000000003C0088DF3A -:1043E00001000000000000000000000000000000CC -:1043F00000000000000000000000000000000000BD -:1044000000000000000000000000000000000000AC -:1044100000000000000000000000000000003C0060 -:10442000C4DF0100000000000000000000000000E8 -:10443000000000000000000000000000000000007C -:10444000000000000000000000000000000000006C -:10445000000000000000000000000000000000005C -:104460003C0000E00100000000000000000000002F -:10447000000000000000000000000000000000003C -:10448000000000000000000000000000000000002C -:10449000000000000000000000000000000000001C -:1044A00000003C003CE001000000000000000000B3 -:1044B00000000000000000000000000000000000FC -:1044C00000000000000000000000000000000000EC -:1044D00000000000000000000000000000000000DC -:1044E000000000003C0078E0010000000000000037 -:1044F00000000000000000000000000000000000BC -:1045000000000000000000000000000000000000AB -:10451000000000000000000000000000000000009B -:104520000000000000003C00B4E0010000000000BA -:10453000000000000000000000000000000000007B -:10454000000000000000000000000000000000006B -:10455000000000000000000000000000000000005B -:1045600000000000000000003C00F0E0010000003E -:10457000000000000000000000000000000000003B -:10458000000000000000000000000000000000002B -:10459000000000000000000000000000000000001B -:1045A000000000000000000000003C002CE10100C1 -:1045B00000000000000000000000000000000000FB -:1045C00000000000000000000000000000000000EB -:1045D00000000000000000000000000000000000DB -:1045E0000000000000000000000000003C0068E146 -:1045F00001000000000000000000000000000000BA -:1046000000000000000000000000000000000000AA -:10461000000000000000000000000000000000009A -:1046200000000000000000000000000000003C004E -:10463000A4E10100000000000000000000000000F4 -:10464000000000000000000000000000000000006A -:10465000000000000000000000000000000000005A -:10466000000000000000000000000000000000004A -:104670003C00E0E10100000000000000000000003C -:10468000000000000000000000000000000000002A -:10469000000000000000000000000000000000001A -:1046A000000000000000000000000000000000000A -:1046B00000003C001CE201000000000000000000BF -:1046C00000000000000000000000000000000000EA -:1046D00000000000000000000000000000000000DA -:1046E00000000000000000000000000000000000CA -:1046F000000000003C0058E2010000000000000043 -:1047000000000000000000000000000000000000A9 -:104710000000000000000000000000000000000099 -:104720000000000000000000000000000000000089 -:104730000000000000003C0094E2010000000000C6 -:104740000000000000000000000000000000000069 -:104750000000000000000000000000000000000059 -:104760000000000000000000000000000000000049 -:1047700000000000000000003C00D0E2010000004A -:104780000000000000000000000000000000000029 -:104790000000000000000000000000000000000019 -:1047A0000000000000000000000000000000000009 -:1047B000000000000000000000003C000CE30100CD -:1047C00000000000000000000000000000000000E9 -:1047D00000000000000000000000000000000000D9 -:1047E00000000000000000000000000000000000C9 -:1047F0000000000000000000000000003C0048E352 -:1048000001000000000000000000000000000000A7 -:104810000000000000000000000000000000000098 -:104820000000000000000000000000000000000088 -:1048300000000000000000000000000000003C003C -:1048400084E3010000000000000000000000000000 -:104850000000000000000000000000000000000058 -:104860000000000000000000000000000000000048 -:104870000000000000000000000000000000000038 -:104880003C00C0E301000000000000000000000048 -:104890000000000000000000000000000000000018 -:1048A0000000000000000000000000000000000008 -:1048B00000000000000000000000000000000000F8 -:1048C00000003C00FCE301000000000000000000CC -:1048D00000000000000000000000000000000000D8 -:1048E00000000000000000000000000000000000C8 -:1048F00000000000000000000000000000000000B8 -:10490000000000003C0038E401000000000000004E -:104910000000000000000000000000000000000097 -:104920000000000000000000000000000000000087 -:104930000000000000000000000000000000000077 -:104940000000000000003C0074E4010000000000D2 -:104950000000000000000000000000000000000057 -:104960000000000000000000000000000000000047 -:104970000000000000000000000000000000000037 -:1049800000000000000000003C00B0E40100000056 -:104990000000000000000000000000000000000017 -:1049A0000000000000000000000000000000000007 -:1049B00000000000000000000000000000000000F7 -:1049C000000000000000000000003C00ECE40100DA -:1049D00000000000000000000000000000000000D7 -:1049E00000000000000000000000000000000000C7 -:1049F00000000000000000000000000000000000B7 -:104A00000000000000000000000000003C0028E55D -:104A10000100000000000000000000000000000095 -:104A20000000000000000000000000000000000086 -:104A30000000000000000000000000000000000076 -:104A400000000000000000000000000000003C002A -:104A500064E501000000000000000000000000000C -:104A60000000000000000000000000000000000046 -:104A70000000000000000000000000000000000036 -:104A80000000000000000000000000000000000026 -:104A90003C00A0E501000000000000000000000054 -:104AA0000000000000000000000000000000000006 -:104AB00000000000000000000000000000000000F6 -:104AC00000000000000000000000000000000000E6 -:104AD00000003C00DCE501000000000000000000D8 -:104AE00000000000000000000000000000000000C6 -:104AF00000000000000000000000000000000000B6 -:104B000000000000000000000000000000000000A5 -:104B1000000000003C0018E601000000000000005A -:104B20000000000000000000000000000000000085 -:104B30000000000000000000000000000000000075 -:104B40000000000000000000000000000000000065 -:104B50000000000000003C0054E6010000000000DE -:104B60000000000000000000000000000000000045 -:104B70000000000000000000000000000000000035 -:104B80000000000000000000000000000000000025 -:104B900000000000000000003C0090E60100000062 -:104BA0000000000000000000000000000000000005 -:104BB00000000000000000000000000000000000F5 -:104BC00000000000000000000000000000000000E5 -:104BD000000000000000000000003C00CCE60100E6 -:104BE00000000000000000000000000000000000C5 -:104BF00000000000000000000000000000000000B5 -:104C000000000000000000000000000000000000A4 -:104C10000000000000000000000000003C0008E769 -:104C20000100000000000000000000000000000083 -:104C30000000000000000000000000000000000074 -:104C40000000000000000000000000000000000064 -:104C500000000000000000000000000000003C0018 -:104C600044E7010000000000000000000000000018 -:104C70000000000000000000000000000000000034 -:104C80000000000000000000000000000000000024 -:104C90000000000000000000000000000000000014 -:104CA0003C0080E701000000000000000000000060 -:104CB00000000000000000000000000000000000F4 -:104CC00000000000000000000000000000000000E4 -:104CD00000000000000000000000000000000000D4 -:104CE00000003C00BCE701000000000000000000E4 -:104CF00000000000000000000000000000000000B4 -:104D000000000000000000000000000000000000A3 -:104D10000000000000000000000000000000000093 -:104D2000000000003C00F8E7010000000000000067 -:104D30000000000000000000000000000000000073 -:104D40000000000000000000000000000000000063 -:104D50000000000000000000000000000000000053 -:104D60000000000000003C0034E8010000000000EA -:104D70000000000000000000000000000000000033 -:104D80000000000000000000000000000000000023 -:104D90000000000000000000000000000000000013 -:104DA00000000000000000003C0070E8010000006E -:104DB00000000000000000000000000000000000F3 -:104DC00000000000000000000000000000000000E3 -:104DD00000000000000000000000000000000000D3 -:104DE000000000000000000000003C00ACE80100F2 -:104DF00000000000000000000000000000000000B3 -:104E000000000000000000000000000000000000A2 -:104E10000000000000000000000000000000000092 -:104E20000000000000000000000000003C00E8E876 -:104E30000100000000000000000000000000000071 -:104E40000000000000000000000000000000000062 -:104E50000000000000000000000000000000000052 -:104E600000000000000000000000000000003C0006 -:104E700024E9010000000000000000000000000024 -:104E80000000000000000000000000000000000022 -:104E90000000000000000000000000000000000012 -:104EA0000000000000000000000000000000000002 -:104EB0003C0060E90100000000000000000000006C -:104EC00000000000000000000000000000000000E2 -:104ED00000000000000000000000000000000000D2 -:104EE00000000000000000000000000000000000C2 -:104EF00000003C009CE901000000000000000000F0 -:104F000000000000000000000000000000000000A1 -:104F10000000000000000000000000000000000091 -:104F20000000000000000000000000000000000081 -:104F3000000000003C00D8E9010000000000000073 -:104F40000000000000000000000000000000000061 -:104F50000000000000000000000000000000000051 -:104F60000000000000000000000000000000000041 -:104F70000000000000003C0014EA010000000000F6 -:104F80000000000000000000000000000000000021 -:104F90000000000000000000000000000000000011 -:104FA0000000000000000000000000000000000001 -:104FB00000000000000000003C0050EA010000007A -:104FC00000000000000000000000000000000000E1 -:104FD00000000000000000000000000000000000D1 -:104FE00000000000000000000000000000000000C1 -:104FF000000000000000000000003C008CEA0100FE -:1050000000000000000000000000000000000000A0 -:105010000000000000000000000000000000000090 -:105020000000000000000000000000000000000080 -:105030000000000000000000000000003C00C8EA82 -:10504000010000000000000000000000000000005F -:105050000000000000000000000000000000000050 -:105060000000000000000000000000000000000040 -:1050700000000000000000000000000000003C00F4 -:1050800004EB010000000000000000000000000030 -:105090000000000000000000000000000000000010 -:1050A0000000000000000000000000000000000000 -:1050B00000000000000000000000000000000000F0 -:1050C0003C0040EB01000000000000000000000078 -:1050D00000000000000000000000000000000000D0 -:1050E00000000000000000000000000000000000C0 -:1050F00000000000000000000000000000000000B0 -:1051000000003C007CEB01000000000000000000FB -:10511000000000000000000000000000000000008F -:10512000000000000000000000000000000000007F -:10513000000000000000000000000000000000006F -:10514000000000003C00B8EB01000000000000007F -:10515000000000000000000000000000000000004F -:10516000000000000000000000000000000000003F -:10517000000000000000000000000000000000002F -:105180000000000000003C00F4EB01000000000003 -:10519000000000000000000000000000000000000F -:1051A00000000000000000000000000000000000FF -:1051B00000000000000000000000000000000000EF -:1051C00000000000000000003C0030EC0100000086 -:1051D00000000000000000000000000000000000CF -:1051E00000000000000000000000000000000000BF -:1051F00000000000000000000000000000000000AF -:10520000000000000000000000003C006CEC010009 -:10521000000000000000000000000000000000008E -:10522000000000000000000000000000000000007E -:10523000000000000000000000000000000000006E -:105240000000000000000000000000003C00A8EC8E -:10525000010000000000000000000000000000004D -:10526000000000000000000000000000000000003E -:10527000000000000000000000000000000000002E -:1052800000000000000000000000000000003C00E2 -:10529000E4EC01000000000000000000000000003D -:1052A00000000000000000000000000000000000FE -:1052B00000000000000000000000000000000000EE -:1052C00000000000000000000000000000000000DE -:1052D0003C0020ED01000000000000000000000084 -:1052E00000000000000000000000000000000000BE -:1052F00000000000000000000000000000000000AE -:10530000000000000000000000000000000000009D -:1053100000003C005CED0100000000000000000007 -:10532000000000000000000000000000000000007D -:10533000000000000000000000000000000000006D -:10534000000000000000000000000000000000005D -:10535000000000003C0098ED01000000000000008B -:10536000000000000000000000000000000000003D -:10537000000000000000000000000000000000002D -:10538000000000000000000000000000000000001D -:105390000000000000003C00D4ED0100000000000F -:1053A00000000000000000000000000000000000FD -:1053B00000000000000000000000000000000000ED -:1053C00000000000000000000000000000000000DD -:1053D00000000000000000003C0010EE0100000092 -:1053E00000000000000000000000000000000000BD -:1053F00000000000000000000000000000000000AD -:10540000000000000000000000000000000000009C -:10541000000000000000000000003C004CEE010015 -:10542000000000000000000000000000000000007C -:10543000000000000000000000000000000000006C -:10544000000000000000000000000000000000005C -:105450000000000000000000000000003C0088EE9A -:10546000010000000000000000000000000000003B -:10547000000000000000000000000000000000002C -:10548000000000000000000000000000000000001C -:1054900000000000000000000000000000003C00D0 -:1054A000C4EE010000000000000000000000000049 -:1054B00000000000000000000000000000000000EC -:1054C00000000000000000000000000000000000DC -:1054D00000000000000000000000000000000000CC -:1054E0003C0000EF01000000000000000000000090 -:1054F00000000000000000000000000000000000AC -:10550000000000000000000000000000000000009B -:10551000000000000000000000000000000000008B -:1055200000003C003CEF0100000000000000000013 -:10553000000000000000000000000000000000006B -:10554000000000000000000000000000000000005B -:10555000000000000000000000000000000000004B -:10556000000000003C0078EF010000000000000097 -:10557000000000000000000000000000000000002B -:10558000000000000000000000000000000000001B -:10559000000000000000000000000000000000000B -:1055A0000000000000003C00B4EF0100000000001B -:1055B00000000000000000000000000000000000EB -:1055C00000000000000000000000000000000000DB -:1055D00000000000000000000000000000000000CB -:1055E00000000000000000003C00F0EF010000009F -:1055F00000000000000000000000000000000000AB -:10560000000000000000000000000000000000009A -:10561000000000000000000000000000000000008A -:10562000000000000000000000003C002CF0010021 -:10563000000000000000000000000000000000006A -:10564000000000000000000000000000000000005A -:10565000000000000000000000000000000000004A -:105660000000000000000000000000003C0068F0A6 -:105670000100000000000000000000000000000029 -:10568000000000000000000000000000000000001A -:10569000000000000000000000000000000000000A -:1056A00000000000000000000000000000003C00BE -:1056B000A4F0010000000000000000000000000055 -:1056C00000000000000000000000000000000000DA -:1056D00000000000000000000000000000000000CA -:1056E00000000000000000000000000000000000BA -:1056F0003C00E0F00100000000000000000000009D -:105700000000000000000000000000000000000099 -:105710000000000000000000000000000000000089 -:105720000000000000000000000000000000000079 -:1057300000003C001CF1010000000000000000001F -:105740000000000000000000000000000000000059 -:105750000000000000000000000000000000000049 -:105760000000000000000000000000000000000039 -:10577000000000003C0058F10100000000000000A3 -:105780000000000000000000000000000000000019 -:105790000000000000000000000000000000000009 -:1057A00000000000000000000000000000000000F9 -:1057B0000000000000003C0094F101000000000027 -:1057C00000000000000000000000000000000000D9 -:1057D00000000000000000000000000000000000C9 -:1057E00000000000000000000000000000000000B9 -:1057F00000000000000000003C00D0F101000000AB -:105800000000000000000000000000000000000098 -:105810000000000000000000000000000000000088 -:105820000000000000000000000000000000000078 -:10583000000000000000000000003C000CF201002D -:105840000000000000000000000000000000000058 -:105850000000000000000000000000000000000048 -:105860000000000000000000000000000000000038 -:105870000000000000000000000000003C0048F2B2 -:105880000100000000000000000000000000000017 -:105890000000000000000000000000000000000008 -:1058A00000000000000000000000000000000000F8 -:1058B00000000000000000000000000000003C00AC -:1058C00084F2010000000000000000000000000061 -:1058D00000000000000000000000000000000000C8 -:1058E00000000000000000000000000000000000B8 -:1058F00000000000000000000000000000000000A8 -:105900003C00C0F2010000000000000000000000A8 -:105910000000000000000000000000000000000087 -:105920000000000000000000000000000000000077 -:105930000000000000000000000000000000000067 -:1059400000003C00FCF2010000000000000000002C -:105950000000000000000000000000000000000047 -:105960000000000000000000000000000000000037 -:105970000000000000000000000000000000000027 -:10598000000000003C0038F30100000000000000AF -:105990000000000000000000000000000000000007 -:1059A00000000000000000000000000000000000F7 -:1059B00000000000000000000000000000000000E7 -:1059C0000000000000003C0074F301000000000033 -:1059D00000000000000000000000000000000000C7 -:1059E00000000000000000000000000000000000B7 -:1059F00000000000000000000000000000000000A7 -:105A000000000000000000003C00B0F301000000B6 -:105A10000000000000000000000000000000000086 -:105A20000000000000000000000000000000000076 -:105A30000000000000000000000000000000000066 -:105A4000000000000000000000003C00ECF301003A -:105A50000000000000000000000000000000000046 -:105A60000000000000000000000000000000000036 -:105A70000000000000000000000000000000000026 -:105A80000000000000000000000000003C0028F4BE -:105A90000100000000000000000000000000000005 -:105AA00000000000000000000000000000000000F6 -:105AB00000000000000000000000000000000000E6 -:105AC00000000000000000000000000000003C009A -:105AD00064F401000000000000000000000000006D -:105AE00000000000000000000000000000000000B6 -:105AF00000000000000000000000000000000000A6 -:105B00000000000000000000000000000000000095 -:105B10003C00A0F4010000000000000000000000B4 -:105B20000000000000000000000000000000000075 -:105B30000000000000000000000000000000000065 -:105B40000000000000000000000000000000000055 -:105B500000003C00DCF40100000000000000000038 -:105B60000000000000000000000000000000000035 -:105B70000000000000000000000000000000000025 -:105B80000000000000000000000000000000000015 -:105B9000000000003C0018F50100000000000000BB -:105BA00000000000000000000000000000000000F5 -:105BB00000000000000000000000000000000000E5 -:105BC00000000000000000000000000000000000D5 -:105BD0000000000000003C0054F50100000000003F -:105BE00000000000000000000000000000000000B5 -:105BF00000000000000000000000000000000000A5 -:105C00000000000000000000000000000000000094 -:105C100000000000000000003C0090F501000000C2 -:105C20000000000000000000000000000000000074 -:105C30000000000000000000000000000000000064 -:105C40000000000000000000000000000000000054 -:105C5000000000000000000000003C00CCF5010046 -:105C60000000000000000000000000000000000034 -:105C70000000000000000000000000000000000024 -:105C80000000000000000000000000000000000014 -:105C90000000000000000000000000003C0008F6CA -:105CA00001000000000000000000000000000000F3 -:105CB00000000000000000000000000000000000E4 -:105CC00000000000000000000000000000000000D4 -:105CD00000000000000000000000000000003C0088 -:105CE00044F6010000000000000000000000000079 -:105CF00000000000000000000000000000000000A4 -:105D00000000000000000000000000000000000093 -:105D10000000000000000000000000000000000083 -:105D20003C0080F6010000000000000000000000C0 -:105D30000000000000000000000000000000000063 -:105D40000000000000000000000000000000000053 -:105D50000000000000000000000000000000000043 -:105D600000003C00BCF60100000000000000000044 -:105D70000000000000000000000000000000000023 -:105D80000000000000000000000000000000000013 -:105D90000000000000000000000000000000000003 -:105DA000000000003C00F8F60100000000000000C8 -:105DB00000000000000000000000000000000000E3 -:105DC00000000000000000000000000000000000D3 -:105DD00000000000000000000000000000000000C3 -:105DE0000000000000003C0034F70100000000004B -:105DF00000000000000000000000000000000000A3 -:105E00000000000000000000000000000000000092 -:105E10000000000000000000000000000000000082 -:105E200000000000000000003C0070F701000000CE -:105E30000000000000000000000000000000000062 -:105E40000000000000000000000000000000000052 -:105E50000000000000000000000000000000000042 -:105E6000000000000000000000003C00ACF7010052 -:105E70000000000000000000000000000000000022 -:105E80000000000000000000000000000000000012 -:105E90000000000000000000000000000000000002 -:105EA0000000000000000000000000003C00E8F7D7 -:105EB00001000000000000000000000000000000E1 -:105EC00000000000000000000000000000000000D2 -:105ED00000000000000000000000000000000000C2 -:105EE00000000000000000000000000000003C0076 -:105EF00024F8010000000000000000000000000085 -:105F00000000000000000000000000000000000091 -:105F10000000000000000000000000000000000081 -:105F20000000000000000000000000000000000071 -:105F30003C0060F8010000000000000000000000CC -:105F40000000000000000000000000000000000051 -:105F50000000000000000000000000000000000041 -:105F60000000000000000000000000000000000031 -:105F700000003C009CF80100000000000000000050 -:105F80000000000000000000000000000000000011 -:105F90000000000000000000000000000000000001 -:105FA00000000000000000000000000000000000F1 -:105FB000000000003C00D8F80100000000000000D4 -:105FC00000000000000000000000000000000000D1 -:105FD00000000000000000000000000000000000C1 -:105FE00000000000000000000000000000000000B1 -:105FF0000000000000003C0014F901000000000057 -:106000000000000000000000000000000000000090 -:106010000000000000000000000000000000000080 -:106020000000000000000000000000000000000070 -:1060300000000000000000003C0050F901000000DA -:106040000000000000000000000000000000000050 -:106050000000000000000000000000000000000040 -:106060000000000000000000000000000000000030 -:10607000000000000000000000003C008CF901005E -:106080000000000000000000000000000000000010 -:106090000000000000000000000000000000000000 -:1060A00000000000000000000000000000000000F0 -:1060B0000000000000000000000000003C00C8F9E3 -:1060C00001000000000000000000000000000000CF -:1060D00000000000000000000000000000000000C0 -:1060E00000000000000000000000000000000000B0 -:1060F00000000000000000000000000000003C0064 -:1061000004FA010000000000000000000000000090 -:10611000000000000000000000000000000000007F -:10612000000000000000000000000000000000006F -:10613000000000000000000000000000000000005F -:106140003C0040FA010000000000000000000000D8 -:10615000000000000000000000000000000000003F -:10616000000000000000000000000000000000002F -:10617000000000000000000000000000000000001F -:1061800000003C007CFA010000000000000000005C -:1061900000000000000000000000000000000000FF -:1061A00000000000000000000000000000000000EF -:1061B00000000000000000000000000000000000DF -:1061C000000000003C00B8FA0100000000000000E0 -:1061D00000000000000000000000000000000000BF -:1061E00000000000000000000000000000000000AF -:1061F000000000000000000000000000000000009F -:106200000000000000003C00F4FA01000000000063 -:10621000000000000000000000000000000000007E -:10622000000000000000000000000000000000006E -:10623000000000000000000000000000000000005E -:1062400000000000000000003C0030FB01000000E6 -:10625000000000000000000000000000000000003E -:10626000000000000000000000000000000000002E -:10627000000000000000000000000000000000001E -:10628000000000000000000000003C006CFB01006A -:1062900000000000000000000000000000000000FE -:1062A00000000000000000000000000000000000EE -:1062B00000000000000000000000000000000000DE -:1062C0000000000000000000000000003C00A8FBEF -:1062D00001000000000000000000000000000000BD -:1062E00000000000000000000000000000000000AE -:1062F000000000000000000000000000000000009E -:1063000000000000000000000000000000003C0051 -:10631000E4FB01000000000000000000000000009D -:10632000000000000000000000000000000000006D -:10633000000000000000000000000000000000005D -:10634000000000000000000000000000000000004D -:106350003C0020FC010000000000000000000000E4 -:10636000000000000000000000000000000000002D -:10637000000000000000000000000000000000001D -:10638000000000000000000000000000000000000D -:1063900000003C005CFC0100000000000000000068 -:1063A00000000000000000000000000000000000ED -:1063B00000000000000000000000000000000000DD -:1063C00000000000000000000000000000000000CD -:1063D000000000003C0098FC0100000000000000EC -:1063E00000000000000000000000000000000000AD -:1063F000000000000000000000000000000000009D -:10640000000000000000000000000000000000008C -:106410000000000000003C00D4FC0100000000006F -:10642000000000000000000000000000000000006C -:10643000000000000000000000000000000000005C -:10644000000000000000000000000000000000004C -:1064500000000000000000003C0010FD01000000F2 -:10646000000000000000000000000000000000002C -:10647000000000000000000000000000000000001C -:10648000000000000000000000000000000000000C -:10649000000000000000000000003C004CFD010076 -:1064A00000000000000000000000000000000000EC -:1064B00000000000000000000000000000000000DC -:1064C00000000000000000000000000000000000CC -:1064D0000000000000000000000000003C0088FDFB -:1064E00001000000000000000000000000000000AB -:1064F000000000000000000000000000000000009C -:10650000000000000000000000000000000000008B -:1065100000000000000000000000000000003C003F -:10652000C4FD0100000000000000000000000000A9 -:10653000000000000000000000000000000000005B -:10654000000000000000000000000000000000004B -:10655000000000000000000000000000000000003B -:106560003C0000FE010000000000000000000000F0 -:10657000000000000000000000000000000000001B -:10658000000000000000000000000000000000000B -:1065900000000000000000000000000000000000FB -:1065A00000003C003CFE0100000000000000000074 -:1065B00000000000000000000000000000000000DB -:1065C00000000000000000000000000000000000CB -:1065D00000000000000000000000000000000000BB -:1065E000000000003C0078FE0100000000000000F8 -:1065F000000000000000000000000000000000009B -:10660000000000000000000000000000000000008A -:10661000000000000000000000000000000000007A -:106620000000000000003C00B4FE0100000000007B -:10663000000000000000000000000000000000005A -:10664000000000000000000000000000000000004A -:10665000000000000000000000000000000000003A -:1066600000000000000000003C00F0FE01000000FF -:10667000000000000000000000000000000000001A -:10668000000000000000000000000000000000000A -:1066900000000000000000000000000000000000FA -:1066A000000000000000000000003C002CFF010082 -:1066B00000000000000000000000000000000000DA -:1066C00000000000000000000000000000000000CA -:1066D00000000000000000000000000000000000BA -:1066E0000000000000000000000000000C0068FF37 -:1066F00001000000000000000000000000003C005D -:106700000010040070B52B4806218175C175017E0B -:10671000490849000176017E02229143017626490B -:106720000B785B085B000B7004238B700C234376A3 -:10673000202303751A244475242484761024C476F7 -:106740003C003C1004002A254D70057A3026B543E4 -:1067500020350572857A6D086D008572857A9543BE -:106760008572857A042635438572857A08263543F5 -:106770008572857AA5438572057B2C430473047B5F -:106780001C433C00781004000473047B40252C4318 -:106790000473847A23438372837AAB438372037BCB -:1067A00080242343037308789043087008780122FB -:1067B00010430870087804229043087070BD0000F0 -:1067C0000C8007003C00B4100400808007000149E1 -:1067D00004204873704740800700034980B50020BB -:1067E000088000F00AFB80BD0000FC6B01007047D0 -:1067F000000080B500F067FB80BD80B50A49182015 -:10680000C1F73BFA09493C00F01004000220C1F72F -:1068100037FA08491F20C1F733FA07491C20C1F78E -:106820002FFA06490320C1F72BFA80BD992A0000F0 -:1068300041250000552500005D2500003925000098 -:1068400080B5BFF791FD80BD3C002C11040080B5E0 -:10685000054A05490A20BFF74EFF0120044980027E -:106860000860486080BDB4740100B164000000108D -:10687000070080B500F091FE80BD80B5054A05494E -:106880001B20BFF738FF012004493C0068110400B9 -:10689000C0060860486080BDB87401002D6E00001D -:1068A0000010070080B5044800F080FE0349002076 -:1068B0004860886080BD0000414B0000BC7401004E -:1068C00080B5C5F7D5FECEF7D9F803493C00A41131 -:1068D0000400086003490A20D1F7EFF880BDBC74BA -:1068E0000100496E000080B5012220210620C8F772 -:1068F00056FCBFF770FE03490020086020210248C3 -:10690000BFF763F980BDCC5C0100646D01003C0001 -:10691000E0110400084880B50068002805D006484A -:106920005430426A0021BFF7F3F8044A04490320B7 -:10693000BFF7ACFD80BD0000506D010089980000DC -:106940009198000080B500F003F800F019F880BDC0 -:106950003C001C12040010B5094C6021201CBFF73C -:106960003AF90020C043A0602060FF200230E0849C -:106970002022201C40300249BFF75BF910BD0010F7 -:1069800007007052010000200A49C0438860094B8B -:106990000A493C0058120400002082000130000621 -:1069A000000E20289950F8D30649044A081C1030DC -:1069B000083A03C27047000000100700E07E0100A3 -:1069C0007575000000A00700044800210022002384 -:1069D0000EC00C383C009412040001214160704745 -:1069E0000000707801007047000003480021002279 -:1069F00000230EC008C070470000885A01000449F7 -:106A000080B500204861024840211C30BFF7E9F8FA -:106A100080BDFC5A01003C00D012040080B5CEF7C6 -:106A20003FF80349886103490320D1F755F880BD39 -:106A3000FC5A01000D17010080B5C0F7A5F980BD13 -:106A4000FEB56C4900200090C8786B4C6B4F430733 -:106A5000C006C017DB0EE3583C000C1304000130E5 -:106A600038623B61081C8078664E03224107A036DD -:106A70000296490F3172890061583C1C6161019195 -:106A8000C006C00F7862201C002787610020211CEF -:106A9000C86159485949007809793C0048130400F5 -:106AA0005A4C4E07760F711C8C46B1008E465649E3 -:106AB0008031002824D0524F01287F781AD0022834 -:106AC00071D14F48002F0CD0012F6CD140794D4D22 -:106AD0004007400F8200AA584B4D01303C00841300 -:106AE0000400EA61A07304224B48484DC8614A483B -:106AF000002F00D04A482F1C11E04248002F55D1EA -:106B00000770022747703F484078002810D00128BE -:106B100001D002284AD13F483D4FC8613F483C0060 -:106B2000C013040088613A4970460858351CB861A2 -:106B30006046607304E03C48022288613B48C861BB -:106B40000020324906E00E18B6787607760F042E3C -:106B50002FD801309042F6D3C8792E4FC007C00F0E -:106B60003C00FC130400F86033484168194341605D -:106B7000816819438160019AB9698C461143FA69A9 -:106B8000866811438E4386604668314341600199AF -:106B90000B43181C614608431043011C00220220CD -:106BA000C7F73C003814040003FA1E4E403E7078CC -:106BB000C008C00028437070701C017800E029E014 -:106BC0000825A94301700120C043B08000210120A5 -:106BD000CFF76CFC301C8030817809090901817085 -:106BE0000F2101703C0074140400164A69041160FE -:106BF0005160029E1021327A7B6A002B00D1002165 -:106C000011432173817829438170E0780121084381 -:106C1000E070D2F7F2F9012000900098FEBDC05755 -:106C200001006C4301003C00B0140400A46C01009E -:106C300040900700C91D0000811D0000A51D000037 -:106C4000991D0000F11D0000100007000010070052 -:106C50000349002088620870487008710862704714 -:106C6000AC7E010080B501213C00EC140400002042 -:106C7000CDF769FF80BDB0B50F48C0F718FC0E4DC9 -:106C8000032028700D490D480C3948600D480A4C06 -:106C9000886040211834201CBEF7C1FFFF216868BE -:106CA000090608432060FF2106223C002815040045 -:106CB000201DBFF779F80120E060B0BDC0A8130A1D -:106CC000206E0100C0A81301FFFFFF0080B502493C -:106CD0000120C8F745FF80BD9D1C000098B50C4CF5 -:106CE00000206060E0600B4B0B4982003C006415A3 -:106CF0000400013020289950FADB6A460949052032 -:106D0000BFF72FFD0020C043206006492020086007 -:106D1000486098BD00000040070030740100A9756C -:106D20000000B59F000000100700054900203C004E -:106D3000A0150400086005488178282291438170DD -:106D40008178114381707047786E01000000070060 -:106D500070470000414810B50068022188433F4950 -:106D60000860081C0068022108433C4908603C4850 -:106D70003C00DC1504004068802188433A494860A3 -:106D8000081C006880210843374908603748017AA9 -:106D9000012421430172017A022211430172017A16 -:106DA000042291430172017A082211430172017B8E -:106DB00021433C00181604000173017B0222114399 -:106DC0000173017B042211430173017B08221143EB -:106DD00001732E214173817B3822914328318173C5 -:106DE00020214174817BC908C900033181732221AC -:106DF000C17320493C0054160400097A41721E49AF -:106E0000497A01743C220277011C10314A735023E5 -:106E10008B735A23CB730D23011C20310B70174B3E -:106E200043840E234B7000214182302101700521E3 -:106E30004170042141713C00901604008471C471BA -:106E40000C210171F82141800F49CA728A72032214 -:106E50000A7209224A7208220A73027A40231A43EC -:106E600002724C73FFF7A2FC0848017821430170BD -:106E700010BD0000F00007003C00CC160400F40038 -:106E800007000C800700764601002409000080807E -:106E90000700A080070080B518210948BEF7D7FE7B -:106EA000084800213C3841608160C1600161416156 -:106EB000816101210162FFF75CFF3C0008170400BB -:106EC000C0F76CFF80BD0000247E0100B0B52148F2 -:106ED000006840081F4940000860081C0068012144 -:106EE00008431C4908601C4A1079012108431071AD -:106EF000107902218843107100F06CF83C004417AF -:106F00000400107A012108431072107AFE21884390 -:106F10000A301072282090725A20D072114D14201D -:106F200028772C1C1034A0731620A8751820E8753B -:106F3000FFF7A1FC0C486886E07B4006400E3C0051 -:106F4000801704000E210843E073E07B8021084392 -:106F5000E07307484179042211434171B0BD00003C -:106F6000F00007000080070030800700FF010000EC -:106F70005000070080B5FFF7AFFF00201449C04361 -:106F80003C00BC1704008860C1F70BF913490020CE -:106F90004862C860486108618861C8610F4B086237 -:106FA0000F4A086338331A8001225A710B4A403263 -:106FB000D0601360082313815060094A8A62FF225F -:106FC0000A703C00F81704004870054800210022B0 -:106FD000503000230EC0C1F7FFF880BD003007001D -:106FE000046C0100BEBA0000857500000348102142 -:106FF00081710221C1713021417270470080070008 -:10700000704700003C003418040000B5C1F7DBFBFA -:1070100000BD7047000080B5CDF787FD014988604D -:1070200080BD50D9010080B506210548BEF7FDFDA1 -:10703000044900200439086000F067F800F003F804 -:1070400080BDEC6701003C007018040010B5074CCF -:107050002C21201CBEF710FE0120207003490020C7 -:107060001C39C8600861886110BD000078690100A2 -:1070700080B5CDF75DFD0949886009490820D0F742 -:1070800073FD08490920D0F73C00AC1804006FFDDF -:1070900007491120D0F76BFD0648C2F774F980BD8F -:1070A00000007869010021350000A1380000453456 -:1070B0000000BD26010080B586B00F48C4F745F931 -:1070C00000F045F8FFF7D7FFFFF73C00E818040091 -:1070D000ABFF0C490320D0F74DFD0B4869460090EB -:1070E0000020019009480490094802900948039043 -:1070F000094805900020C4F7CFF806B080BD000015 -:10710000F467010045350000953200003C00241969 -:107110000400A07D0100FD320000CD310000457D5E -:10712000010010B5CDF7D5FC0948094C302160614C -:1071300008487430BEF7A9FD0020A062064920610E -:10714000E1636064A06414212165606210BD3C00AD -:1071500060190400B9750000447D0100701700003B -:1071600080B502210920044AD1F7E8FECDF7ECFCF6 -:107170000249086380BD000039390000447D0100E8 -:1071800080B5AC210348BEF783FD00F051F800F054 -:107190003C009C19040049F880BDA46C010008B5AE -:1071A00000F04DF800F045F800211620184AD1F7FC -:1071B000C8FE174A0421101C403001700021817064 -:1071C0001121C18014490181101C8030C17808222E -:1071D00091433C00D8190400C170C1781143C170BB -:1071E0006A460F491420BFF7F5FA0E490720D0F779 -:1071F000CDFC0D490F20D0F7C9FCCDF7ABFC0B49F6 -:1072000008600A4844388068002802D00020C6F789 -:107210006FF908BD3C00141A0400B53B0000009053 -:107220000700E7FD00008D410000CD480000D9496E -:107230000000A46C010080B500F06FFC80BD7047B9 -:10724000000080B500F061FC80BD70470000B0B563 -:1072500030210C48BEF73C00501A040025FD0B4CB1 -:1072600000250A48843C3822032170386560BEF747 -:10727000DDFD0648382201213838BEF7D7FD0E2043 -:10728000A5606070207000F01DF8B0BD946701002B -:10729000044900B5012048603C008C1A0400886055 -:1072A000C860C3F7F8FF00BD0000D467010080B5D7 -:1072B00002210A20024AD1F750FE80BD00001D5A6B -:1072C000000080B500F005F880BD80B500F0FDFB42 -:1072D00080BD80B502490420D0F73C00C81A0400E4 -:1072E00061FC80BD651F000000211748C94380B5BF -:1072F000164B0170181C102220300271002210332E -:107300009A73427904231A434271427918239A43AB -:1073100008324271081CD7F759F800283C00041BBA -:10732000040003D101219A20BFF7CBFB502009496B -:1073300050220A60C8608860486008610120486186 -:107340000020D7F7D8F80449FF20086080BDF46B0F -:1073500001003000070004020700F47401003C0043 -:10736000401B040080B5D7F7FBF880BD10B5FFF7D0 -:10737000ABFBBFF7DDFB8148CDF798FA0024231C57 -:1073800004220421002001F039FA002801D0BFF7BF -:10739000C9FB231C0022FF21002001F02FFA002846 -:1073A0003C007C1B040001D0BFF7BFFB231C002264 -:1073B000FF21002001F025FA002801D0BFF7B5FB1E -:1073C000C4F727FF704884706F497F2088706E492A -:1073D0000C60032008606B4844706C480480694866 -:1073E000C0783C00B81B0400082108436749C870F6 -:1073F000081CC078042108436449C87001F07EFA73 -:10740000FFF77EFFFFF72CFE01F046FBFFF718FBAE -:1074100001F052FAFFF782FB5F48C16810229143E6 -:10742000C16001693C00F41B04005D4A1143016125 -:107430000169D20A91430161C1685A4A1143C1608E -:10744000816A594A1143816200F077F901F01FF80F -:1074500000F093FA01F099FB00F0F1FF00F099FCC5 -:1074600000F0DDFC00F03C00301C040083FCFFF762 -:10747000B3FC01F031FA01F071FAFFF787FAFFF778 -:107480009BFA012101204B4AD1F77CFD012102200A -:10749000494AD1F777FD02210320484AD1F772FD0E -:1074A00002210420464AD1F73C006C1C04006DFD0B -:1074B00002210520454AD1F768FD02210620434AF2 -:1074C000D1F763FD01210720424AD1F75EFD022179 -:1074D0001720404AD1F759FD022108203F4AD1F731 -:1074E00054FDFFF7C8FD3D4804603C00A81C0400A3 -:1074F0004460FFF717FAFFF709FAFFF74FFC00F0B7 -:1075000043F9FFF733FAFFF7FBFA01F085F801F0D2 -:10751000EBF901F023FA01F071F900F0E3FFFFF756 -:107520006FFA00F0AFF900F0BDF900F03C00E41C88 -:107530000400ADFC00F09BFEFFF7CDFAFFF7ABFEB9 -:1075400000F0C3F9FFF7ABFD00F08DFF00F021FF65 -:1075500000F065F900F097F900F0FDFE00F0E5FE9F -:1075600000F03FF900F073F9FFF737FE00F03C0040 -:10757000201D040021F900F073FBFFF7E5FB00F08C -:10758000D3FBFFF7A9FE00F0BBFB00F009FF00F002 -:10759000DBF91848C9F756F81748C9F72BF8002245 -:1075A0000121F020D1F72EFD002010BDA9690000B7 -:1075B0003C005C1D040000000700F00007002C00E8 -:1075C0000700001007003C000800C03F7438FCDFD3 -:1075D0007F3855690000E5130000610C00006D0C58 -:1075E00000003D0C0000F10D0000C53300003D0F10 -:1075F00000003C00981D0400ADD80000800007008A -:10760000505701000440010080B501F0A9F900F0D5 -:10761000C9F8FFF7C5FE01F003FB01F093FAFFF78D -:10762000CBF92C48FFF7E8F900F0AAF800F058FF72 -:10763000FFF734FD3C00D41D0400FFF7F2FBFFF719 -:107640007AFAFFF700FA00F034F900F03CF901F0A3 -:10765000E2F8FFF77AF9FFF772F9FFF79AF901F00C -:1076600066F901F08EF901F0E0F800F006FF00F095 -:10767000F0FB00F046FB3C00101E040000F0BCFFD5 -:1076800000F0E4FC00F020FEFFF740FAFFF746FEB2 -:10769000FFF756FD00F02CF900F0FAFE00F08AFE2C -:1076A00000F0D4F800F0B4F800F078FE00F04EFEE0 -:1076B00000F0DEF8FFF7ACFD3C004C1E040000F0CB -:1076C0008CF800F0F8FAFFF776FBFFF720FE01F0E8 -:1076D000A6FA00F048FB00F07CFE00F05CF9BEF773 -:1076E00057FD002080BD803801000149002008605E -:1076F0007047A87E010010B5041C3C00881E0400E1 -:1077000001D1BFF739FA0F487D21C900846001809B -:107710000D490161802141800021C16001620B4857 -:1077200041801421818007214181064A4623043289 -:107730000524137054700A21917081763C00C41E98 -:1077400004000376048110BD0000C87401000087A6 -:10775000930330000700094880B50169426911436D -:107760008269C0691143014300220320C6F7BFFCB0 -:10777000CCF71BFA0020C2F792F980BD00003C0054 -:10778000001F0400A46C0100054880B50021816041 -:107790000221C16003394160C7F73AFF80BD000094 -:1077A0004020070008B56A4604491520BFF754F881 -:1077B0000120034940050860486008BDA52101007B -:1077C0003C003C1F04000010070070470000064802 -:1077D00080B58068C001800F05D10322C143C6F780 -:1077E000BAFCD6F700FE80BD00001000070070470D -:1077F000000080B502212A20064AD1F7EAFB0022C8 -:1078000007203C00781F04000449BEF7EDFE044841 -:10781000C7F758FC80BD00008D890000D59B000093 -:107820001046010002480021002200230EC07047CC -:10783000806E010080B502212C20064AD1F7CCFBD6 -:10784000002200203C00B41F04000449BEF7CFFE14 -:1078500004490220C8F70BFA80BD058A0000E99BA5 -:107860000000B18B000002480021002200230EC05E -:1078700070471075010080B502212B20044AD1F712 -:10788000AEFB002202203C00F01F04000249BEF7BC -:10789000B1FE80BD2D8A00008D8C00007047000075 -:1078A00080B502212D20074AD1F79CFB0022012040 -:1078B0000549BEF79FFE0548CBF756FA0448CCF7BA -:1078C000F7F880BDAD8A00003C002C20040021E2C6 -:1078D0000000F9DF00002044010070470000024969 -:1078E00000200860012048607047AC79010080B535 -:1078F00002490D20D0F79BF980BD619800007047C8 -:10790000000080B5CDF777F903493C0068200400FA -:107910000860011C0248CDF797F980BDA8790100E5 -:10792000C460010080B500F029F880BD80B586B044 -:107930000C48C3F76DFDD6F7D3FB0B480D490090FB -:107940000A48049101900A48694602903C00A4202C -:1079500004000020039005900120C3F700FD0749B3 -:107960000320D0F76AF906B080BD20F70100118727 -:107970000100958701005587010098D901006D87A6 -:10798000010080B50120D6F790FC034900203C009F -:10799000E02004000860486002481439486080BD57 -:1079A00090D901003D82010070B50026094C094DB7 -:1079B0002660666044215035281CA661BEF7C8F9D0 -:1079C0001420E060E8632820E861A06028642E703D -:1079D0003C001C21040070BD0000A46E010080B5B5 -:1079E00002211820044AD1F70CFB03490820D0F7E4 -:1079F0002AF980BD0000159C0000699C0000FEB5BE -:107A0000264D2878C0070CD425490020087028701E -:107A100024483C00582104008178490849008170BD -:107A200081780122114381700024FF261F4F013607 -:107A3000211C01A8C6F732F800AB187901281FD025 -:107A4000022819D003281ED1B8680021B043B860BD -:107A5000786830433C009421040078603A683240F2 -:107A6000A02005E03B683340934201D0012101E0B2 -:107A70000138F7D27868B0437860002903D001A8B4 -:107A800000F027FF02E001A800F045FF01342406C2 -:107A90002416062CCFDB3C00D0210400044902222E -:107AA0000878104308702870FEBD0000040007002D -:107AB000E06001000000070010000700B0B50020E2 -:107AC00015231449012542008D54521801300E2807 -:107AD0005370F8D30F481C223C000C2204001C38C1 -:107AE000BEF773F90D480E212A38BEF71CF90B4971 -:107AF000002008600B4C2A21201CBEF714F92570C9 -:107B00000E2060701720A070074853210170452196 -:107B1000417020218170B0BD00003C00482204006B -:107B2000E6780100E4620100EB620100E862010016 -:107B30000C490D48002241600C4981600C49C1602C -:107B40000C4901610C4941610C498261C1610C49D8 -:107B500001620C4941620C4981620C493C0084225B -:107B60000400C162C26370470000C9750000287A32 -:107B70000100C17500008175000099750000CD7588 -:107B800000008975000091750000B57500008D75C5 -:107B90000000C5750000B0B50E480E4908603C00F5 -:107BA000C02204000831C0F743FE0C49002548609C -:107BB0000B480A4C05600B48803C05601020207182 -:107BC000E070A07160712720C043C3F7F7FB282045 -:107BD000C3F7FCFB2572B0BDFF3F00002C7D010008 -:107BE0003C00FC2204001C6701002067010080B5F6 -:107BF0002C210148BEF7C7F880BD3C7E010080B54E -:107C000038210148BEF7BFF880BD687E010080B50D -:107C100002210E20024AD1F70CFA80BD000021E0BB -:107C200000003C003823040070470000F0B585B028 -:107C3000002700AB2F4E1F8100250024281CD6F7FB -:107C4000A1FB022D03D1D6F7F5FA00280CD00124B0 -:107C5000012D03D1072000AB187101E000AB1F71AB -:107C600000AB18793C0074230400D6F708FC002C04 -:107C700039D0082103A8D6F7F2FA00AB187BFE280A -:107C800031D1587B01282AD1022102A8D6F7E7FA80 -:107C900000AB1889002826D018891849884222D0BC -:107CA00019890020BFF73C00B023040013F9041C1D -:107CB000006900AB1989D6F7D5FA206800AB1A899C -:107CC000011C0831083ACBF7A1F9002806D0022898 -:107CD00004D0022194203760BEF762FF201CBFF75A -:107CE000C7F8D4E7012194203C00EC230400BEF740 -:107CF0005AFFD5F726FF01352D062D0E042DA5D3ED -:107D000005B0F0BD000058570100FFFF00000A4811 -:107D10000021021C183280B5094B02E0016083800B -:107D200008308242FAD104486C213C002824040027 -:107D30006C38BEF737F804490220C7F7D1FF80BD81 -:107D40007C790100FC0500009D75000080B50221D2 -:107D500026200D4AD1F77CF90C48C8F773FF0C4870 -:107D6000C8F776FF0B491020CFF794FF3C0064243E -:107D700004000A490C20CFF790FF09490020C7F7FB -:107D8000B2FFCCF76EFF0749086080BD00009DA6DA -:107D90000000A9A4000081A4000031A70000B96D73 -:107DA0000000BDA600000C790100024908783C00E3 -:107DB000A0240400400840000870704758000700E5 -:107DC0000021084880B541618161017041704160C6 -:107DD00081601422C26001614262C161FFF704F850 -:107DE00080BD00001C75010080B502211D20044AE1 -:107DF0003C00DC240400D1F734F903490820CFF714 -:107E000052FF80BD000011E3000009E4000080B5CE -:107E1000012125200A4AD1F724F9CCF728FF084987 -:107E2000086208490120CFF73EFF07490220CFF73B -:107E30003AFF3C0018250400FEF7E6FF0548C1F7AD -:107E4000E1F980BD29A900001C750100A1AA00006C -:107E50002D19000045A8000010B5064C0C22227018 -:107E6000A0180549BDF7D8FF0020C8F785FB012001 -:107E7000A06010BD3C0054250400A4690100905787 -:107E80000100B0B51F4C00256580012020700A203C -:107E9000A0809020E08030202081902060813020E0 -:107EA000A0811748042207211230BEF74CF814486D -:107EB0000422052116303C0090250400BEF746F848 -:107EC0001248114AE08120827032157055700020EE -:107ED0003C23410143438918F4319B1801300428A5 -:107EE0005960F5DB084806221A300949BDF79AFFA8 -:107EF0000748054C0C300FC83C00CC25040020344A -:107F00000FC42021201CBDF762FFB0BD0000F86047 -:107F100001002C090000584001007047000007488C -:107F200010B50068002808D00648BEF79CFE041C67 -:107F3000FFF79DFE201CBEF796FE3C0008260400BD -:107F400010BD000058570100B5AD0000044980B5D0 -:107F50000020887002212020024AD1F791F880BDCC -:107F6000B479010025B5000080B5CCF78FFE01493A -:107F7000486180BDB479010080B518213C004426D9 -:107F800004001448BDF729FF1448012101700021A5 -:107F9000C1604170016100F002F900F0AAF800F040 -:107FA0001EF800F0BAF900F0CCF900F020F900F06A -:107FB00064F900F0CEF900F0FCF800F082F93C0022 -:107FC0008026040000F028F800F06EF800F04AF86F -:107FD000FFF7C2FF00F072F980BD0000407C010095 -:107FE00018630100B0B5084C0025084825772060CB -:107FF000CEF7F0FD0020E562D0F7D0FA211F08800F -:108000003C00BC260400D0F76CFBB0BD0000D47966 -:1080100001009575000080B5CCF7C1FC80BD054915 -:1080200080B500200870487003480449034A0830AE -:10803000CCF727FE80BD2C630100EDBC00004DBDD8 -:1080400000003C00F826040080B5CCF72BFE054963 -:108050004860011C0448CCF74BFE04490320CFF7CD -:108060003DFE80BD2C630100C4600100C1BC000066 -:1080700004480021002200230EC008C00249103825 -:10808000016070473C0034270400047A01001CE6BC -:10809000010080B5CCF709FE0549054A4860022178 -:1080A0002420D0F7FCFF0348C9F76BFD80BD047A9C -:1080B000010069BE000071EB000010B5044C1421F2 -:1080C000201CBDF796FE3C0070270400024820608B -:1080D00010BD0000147A0100ECE5010080B5CCF77A -:1080E000E7FD0749074A486002211F20D0F7DAFF61 -:1080F00005490120086005490C20CFF7F5FD80BD3A -:10810000147A0100D5BF00003C00AC270400805A5F -:10811000010085FF000080B5FFF74FFD0121212000 -:10812000024AD0F7C2FF80BD0000C9C1000080B57F -:10813000CCF7C1FD02490863C9F757FD80BD287A15 -:10814000010010B5CCF7B7FD164C3C00E827040041 -:108150002061CCF7B3FD60611448154908601649E9 -:1081600014480860CCF7AAFD1449086000F034F800 -:10817000FFF7E0FFFFF75EFF00F004F900F08EF874 -:10818000FFF76EFFFFF7B0FFFFF78CFF3C002428DE -:108190000400FFF704FF00F0AAF80A48BFF7BDFF8C -:1081A000C9F7BBFD09490020CFF7A7FD10BD407CF2 -:1081B00001007DB70000187E0100BDB800001C7EE4 -:1081C0000100207E0100B9BA0000812401003C00BA -:1081D0006028040080B538210148BDF719FE80BD34 -:1081E000905C010070470000B0B50C4C0B4D0020B6 -:1081F0000C3460602560E0600A202081281CC8F7EC -:108200003FFD281CC8F73AFD083D68600448C9F7DF -:108210003C009C2804001BFD201CC0F76EFA28803F -:10822000B0BDB87A0100D5330100F8B51F4E1D4C22 -:1082300000200C2141438200013009190831000659 -:10824000000E0428B150F4D318480C383061CEF732 -:10825000F4F93C00D8280400144CA078000900016F -:10826000A0700027E77067700024A50070590770A0 -:10827000201CBEF753F9715908710021201CCEF75C -:108280007DF901342406240E042CEED3074C20780B -:10829000000900013C00142904000A3020702078F5 -:1082A000F021884330302070A0780F210843A0705F -:1082B000F8BD00500700107B010080B5CCF79FFB94 -:1082C00080BDB0B50C4C0B4D00200C3460602560B7 -:1082D000E0600A2020813C0050290400281CC8F7D7 -:1082E000E1FC281CC8F7D4FC083D6860201CC0F7DE -:1082F0000DFA28800248C9F79BFCB0BD2C7B010019 -:108300004900010080B5CAF72FF880BD7047000012 -:10831000B0B5124D3C21281C3C008C290400BDF74F -:1083200086FD0F4828213C30BDF781FD0D48002116 -:1083300014380161C160FF21017041700A490A4A85 -:10834000416001210C20D0F7C8FE2C1C30340C3DBC -:108350000020D0F74AF920800C3C3C00C8290400DA -:10836000AC42F8D1B0BD0000607B010020A1070045 -:1083700035CD0000084900200C22424352181071EC -:1083800001300528F8DB04480021083801704160FD -:10839000FF21417070470000747A01003C00042AFC -:1083A000040080B578210148BDF747FD80BDC47B3E -:1083B000010080B5CAF797FA80BD7047000010B57C -:1083C0000B4CFF210531201CBDF737FD0948F0217A -:1083D0000851201C4030C5F78EF96C2106483C003E -:1083E000402A0400BDF72CFD0448C0216C30BDF7C5 -:1083F00027FD10BDC4690100B0D90100C86A0100A1 -:10840000B0B50B4D00241C20604340196C30C3F7FD -:108410000FFE0134042CF6DBCCF76EFCA863C7F723 -:108420003C007C2A040075F90448C9F71CFC034889 -:10843000CFF703FAB0BDC4690100FD800000E1225E -:10844000010010B5054C00202080034806210830AB -:10845000BDF7D5FC1420606010BD987C010010B5FC -:10846000084C3C00B82A04000020208060800648A8 -:1084700006210C30BDF7C6FC034806211230BDF7BB -:10848000C1FC1420A06010BD587C010070470000A2 -:1084900080B502210D20054AD0F72EFE0448C8F70A -:1084A0001FFC04483C00F42A0400CAF744FC80BDC9 -:1084B000000031D4000051B1000009B100000849AA -:1084C00080B500200860FFF7D0FFFFF7C0FFFFF77F -:1084D00004FC00F04AF8FFF70AFC00F03CF880BD0D -:1084E0000000E46501003C00302B040080B500F082 -:1084F00029F800F01BF800F051F800F031F880BDC9 -:10850000704700007047000080B5FF2189310248A4 -:10851000BDF7A2FC80BD0000DC71010080B50249FE -:108520000820CFF711FC80BD3C006C2B040059D90A -:10853000000080B50348CFF74CF90249488080BD60 -:1085400000008D1F0000987C010080B50348CFF724 -:1085500040F90249888080BD0000D5230000587C86 -:1085600001007047000080B502483C00A82B0400C1 -:10857000CAF7E4FB80BD000071E0000080B5CCF7D5 -:10858000A5FB02210F20064AD0F7C2FD14210548A1 -:10859000BDF768FC034878211430BDF763FC80BD4B -:1085A00035E200008466010080B5CCF73C00E42B86 -:1085B0000400B7FB0549086105490E20CFF7CDFB44 -:1085C00004490820CFF7C9FB80BDEC65010001021A -:1085D0000100C12E0000014900200870704740D9F9 -:1085E00001007047000001490020087070473C00FE -:1085F000202C0400A079010080B50748C8F7F2FFDD -:10860000064948600648C0F707FB0648C0F786FBE6 -:108610000548C9F7A3FA80BDA9E40000A0790100CC -:10862000B9E40000852E000081E40000074880B511 -:108630003C005C2C04000021002200230EC008C076 -:108640001038C821016000210C38024ACCF761FBC8 -:1086500080BDD0600100FDE5000080B5CCF767FB70 -:1086600004490860011C02480430CCF786FB80BD39 -:1086700000003C00982C0400C0600100094880B54F -:108680000A21017041700849084A81600021C160D7 -:10869000527982700161416128211830BDF7EEFBEB -:1086A00080BD00007C780100A08601000C5A01000A -:1086B000F8B50F493C00D42C04000F480D884F88B2 -:1086C00006790024301B684368230C49584341183D -:1086D0007D20C000BDF70FFD6100094AA64250523F -:1086E00000D13D1C01342406240E102CEAD3054988 -:1086F00001200861F8BD3C00102D0400F65901006E -:108700000C5A010034440F00125A01007C78010019 -:1087100080B500F0E7FA02490120086180BD000041 -:108720007C78010010B5041C081C0F494979002908 -:1087300001D10E4B00E00E4B3C004C2D0400002CF0 -:1087400007D0042111800A1C0124191CBDF7CDFBA0 -:108750000AE00124011C181C1288BDF7C6FB00F0BA -:10876000C4FA054901200861201C10BD00000C5A04 -:108770000100FE590100FA5901003C00882D040057 -:108780007C7801000D488CB5C18800AB0C4A9980FB -:1087900001890420D980188002211320D0F7D0FC51 -:1087A00000F0A6FA074901200861FFF78DFF6A462D -:1087B00001A90020FFF7BCFF8CBD00003C00C42DC8 -:1087C0000400F459010095F900007C780100F8B527 -:1087D000134E0125B5700520F070114910480EC9DF -:1087E0002C300EC0002070610F480F49104F00243C -:1087F0004860A0003958201CD1F7D7F801343C005C -:10880000002E0400102CF7D3064C0B4A2034201CF9 -:108810000A49B560CCF792FACCF79EFA3061206035 -:10882000F8BD000064730100B05801000418020094 -:1088300060000700D444010045FA000071FA00000E -:108840003C003C2E04000C4930B50023CC560B4BA9 -:108850000020F0251A5C1107090F09190F2901DD05 -:108860000F2102E0002900DA00212A405118195492 -:1088700001300E28EEDB30BD000064730100C058EB -:1088800001003C00782E0400B0B50D1C002808D073 -:10889000012414800520CCF7B5F88003C00F2870A0 -:1088A00007E028780122410452040520D0F7AEFDEC -:1088B0000124201CB0BD000098B5054C6068CCF7C1 -:1088C000F5FD00903C00B42E040000AB1888E08059 -:1088D000CEF7FBFF98BDA058010038B5031C081C5B -:1088E0000024002B174D07D00E2111800A1C0124F3 -:1088F000291CBDF70CFB22E01188042917D1011CAB -:1089000068461288BDF73C00F02E040003FB009877 -:10891000002801DB323000E032380090011C642076 -:10892000BDF798FB0106091600900E22281CBDF722 -:1089300085FB06E00E2905D10A1C011C281CBDF789 -:10894000E9FA0124201C38BD3C002C2F0400DA5920 -:10895000010038B5031C081C0024002B174D07D05C -:108960000E2111800A1C0124291CBDF7D6FA22E031 -:108970001188042917D1011C68461288BDF7CDFA69 -:108980000098002801DB323000E03C00682F040032 -:1089900032380090011C6420BDF762FB0106091605 -:1089A00000900E22281CBDF74FFB06E00E2905D1D2 -:1089B0000A1C011C281CBDF7B3FA0124201C38BD79 -:1089C000CC590100034880B5017800203C00A42F59 -:1089D0000400CCF7B4FB80BD0000A658010070472E -:1089E00000000249032008700020487070479C7303 -:1089F000010080B502211120024AD0F7BCFB80BDE6 -:108A00000000A1FE0000F0B50B4F1C1C00233C0031 -:108A1000E02F0400FD562B1C062D01D10120F0BDD6 -:108A2000064E051CD80034363554801941708270CA -:108A30004460581C38700020F0BD0000985A0100B6 -:108A400010B5041C0C4800F021F96078FF2804D010 -:108A50003C001C3004000123E056062100F0CDF854 -:108A6000084A012110780843074908702023184359 -:108A70000870802318431070087010BD0000919B8F -:108A80000000E06001000400070010B50A49041C62 -:108A900008783C005830040040084000087008493D -:108AA0000870084800F0F8F86078FF2804D0012327 -:108AB000E056052100F0A4F810BD0000E0600100C0 -:108AC00004000700919B00000348002100220023BE -:108AD0000EC008C03C009430040070470000E860FD -:108AE00001007047000010B5074C00206060208036 -:108AF000E06002211420044AD0F749FB02481030FC -:108B0000A06010BD000058750100051D01007047F0 -:108B1000000010B548213C00D03004000A48BDF7E1 -:108B2000E3F9094CE0214834201CBDF7DDF90020B1 -:108B3000C10009190A1C083201301B284A60F7D30A -:108B400001480438046010BD685B010080B5022153 -:108B50002320024AD0F71EFB3C000C31040080BDEC -:108B600000004523010080B5FFF76BF880BD70471A -:108B70000000F8B501201D49C00748601D49FF20CD -:108B800008731C4E10203060050135601B4C80219D -:108B9000201CBDF7ACF90021194A3C004831040003 -:108BA000154F00200B011B195A60CB00DB191874FC -:108BB00001310829F6DB0F4CFA212180124961802E -:108BC000A0606A4611490420BDF730FF6A4610498B -:108BD0000820BDF72BFF1020706075603C008431C9 -:108BE000040060680221084360600B49064A081CC3 -:108BF0001030083A03C2F8BD000000010700006011 -:108C0000070000100700AC730100D1750000204E72 -:108C10000000052C0100112C010000A007003C0001 -:108C2000C031040070B50E1C0024C4F75BFE0028A0 -:108C30003BD04568FF2D38D00C2E28D201A39B5D78 -:108C40005B009F440507090B0D101316181B1E210E -:108C5000182420E030241EE060241CE0C0241AE028 -:108C60003C00FC310400FF24813417E00924A401F6 -:108C700014E00924E40111E00F4C0FE00924240260 -:108C80000CE00924640209E00324E40206E009245C -:108C9000A40203E009219E20BEF739F86000001904 -:108CA00040083C0038320400054980044018054A59 -:108CB000A900891848606420604370BDDC0700008B -:108CC0008038010004000700024980B50860D0F731 -:108CD00097F880BD5C5B0100F8B50026174C174B78 -:108CE000194926703C0074320400002014330D88AA -:108CF000154E154A04E0C100CF187A605E5001306D -:108D0000A842F8DBC6F72BFDFF21114DA531281C29 -:108D1000BDF7FFF80021281C021C1432C260101C91 -:108D200001311429F8DB3C00B03204000026C66093 -:108D300005480C3060C009481821BDF7EDF8012046 -:108D4000043441C40020F8BD705D010009A000009A -:108D500030D9010056570100045F0100A8600100EE -:108D600080B50020CFF7B6FC3C00EC32040001498E -:108D7000088080BD00002C7401001148F8B54179CD -:108D8000002902D105780F4E01E045780F4E0223ED -:108D9000F75E0024601B784364230C495843411854 -:108DA0007D20C000BDF7F5F961003C0028330400C8 -:108DB000094AAC42505201D10023F75E0134240627 -:108DC000240E102CE9D3F8BD0C5A0100FE59010005 -:108DD000FA59010034440F00325A010038B5104CE2 -:108DE000BE252573207A1821884320723C00643305 -:108DF00004006A460D490D20BDF733FE01200B49E2 -:108E000040030860486025732D20C003206025734F -:108E1000207A102108432072064806490860002085 -:108E2000486038BD0000000307008D3E01002400AB -:108E3000A0330400001007000087930304790100A9 -:108E400080B502211520024AD0F7C8F980BD000084 -:108E50000D3E010070470000040000600400440063 -:108E60000000040040200700FFFFFFFF4D656D6F0D -:108E7000727920636865636B2E2E2E00204F4B0A9B -:108E800000000000204641494C0A000057726974F6 -:108E9000696E67206669726D7761726520646174BE -:108EA0006120746F20666C6173680A005665726990 -:108EB0006679696E67206669726D77617265206494 -:108EC0006174610A00000000566572696679206667 -:108ED00061696C6564206174206279746520256421 -:108EE0002C2030782530327820213D2030782530F4 -:108EF00032780A004669726D776172652073756316 -:108F00006365737366756C6C792073746F726564D6 -:108F100020696E20666C617368210A0005000600F6 -:108F200000000001000001480000000B0000014C9F -:108F300000000009000001780000000F0000019C03 -:108F400000000001000001D800000001000001DC69 -:108F50000000000100000108000000010000010CF9 -:108F600000000001000001100000000100000114D9 -:108F70000000000100000118000000010000011CB9 -:108F80000000000100000120000000010000012499 -:108F9000000000030000012800000001000001346F -:108FA0000000000100000138000000010000013C49 -:108FB0000000000100000140000000010000014429 -:040000058000000077 -:00000001FF diff --git a/firmwares/wifishield/binary/wifi_dnld_2_1.elf b/firmwares/wifishield/binary/wifi_dnld_2_1.elf deleted file mode 100644 index 7ccbf4d..0000000 Binary files a/firmwares/wifishield/binary/wifi_dnld_2_1.elf and /dev/null differ diff --git a/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh b/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh deleted file mode 100755 index e3a7d7f..0000000 --- a/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade.sh +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/sh - -WIFI_FW_PATH="/hardware/arduino/avr/firmwares/wifishield/binary" -AVR_TOOLS_PATH="/hardware/tools/avr/bin" - -TARGET_MICRO="at32uc3a1256" - - -progname=$0 - -usage () { -cat <&2 - usage - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - exit 1 - ;; - esac - done -else - echo "Please retry running the script as root.\n" -fi - -shift $(($OPTIND - 1)) diff --git a/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade_mac.sh b/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade_mac.sh deleted file mode 100755 index dadaf29..0000000 --- a/firmwares/wifishield/scripts/ArduinoWifiShield_upgrade_mac.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/sh - -WIFI_FW_PATH="/hardware/arduino/avr/firmwares/wifishield/binary" -AVR_TOOLS_PATH="/hardware/tools/avr/bin" - -progname=$0 - -usage () { -cat <&2 - usage - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - exit 1 - ;; - esac - done -else - echo "You are not root!\n" -fi - -shift $(($OPTIND - 1)) diff --git a/firmwares/wifishield/wifiHD/.cproject b/firmwares/wifishield/wifiHD/.cproject deleted file mode 100644 index fa7fcdd..0000000 --- a/firmwares/wifishield/wifiHD/.cproject +++ /dev/null @@ -1,4045 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/firmwares/wifishield/wifiHD/.project b/firmwares/wifishield/wifiHD/.project deleted file mode 100644 index c284bab..0000000 --- a/firmwares/wifishield/wifiHD/.project +++ /dev/null @@ -1,77 +0,0 @@ - - - wifiHD - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/wifiHD/Debug} - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - com.atmel.avr32.core.nature - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - - - UC3 Software Framework - 2 - framework:/com.atmel.avr32.sf.uc3 - - - diff --git a/firmwares/wifishield/wifiHD/Release/wifiHD.elf b/firmwares/wifishield/wifiHD/Release/wifiHD.elf deleted file mode 100644 index d4a8bde..0000000 Binary files a/firmwares/wifishield/wifiHD/Release/wifiHD.elf and /dev/null differ diff --git a/firmwares/wifishield/wifiHD/Release/wifiHD.hex b/firmwares/wifishield/wifiHD/Release/wifiHD.hex deleted file mode 100644 index 0122587..0000000 --- a/firmwares/wifishield/wifiHD/Release/wifiHD.hex +++ /dev/null @@ -1,16358 +0,0 @@ -:0200000480007A -:10000000E08F100000000000000000000000000071 -:1000100000000000000000000000000000000000E0 -:1000200000000000000000000000000000000000D0 -:1000300000000000000000000000000000000000C0 -:1000400000000000000000000000000000000000B0 -:1000500000000000000000000000000000000000A0 -:100060000000000000000000000000000000000090 -:100070000000000000000000000000000000000080 -:100080000000000000000000000000000000000070 -:100090000000000000000000000000000000000060 -:1000A0000000000000000000000000000000000050 -:1000B0000000000000000000000000000000000040 -:1000C0000000000000000000000000000000000030 -:1000D0000000000000000000000000000000000020 -:1000E0000000000000000000000000000000000010 -:1000F0000000000000000000000000000000000000 -:1001000000000000000000000000000000000000EF -:1001100000000000000000000000000000000000DF -:1001200000000000000000000000000000000000CF -:1001300000000000000000000000000000000000BF -:1001400000000000000000000000000000000000AF -:10015000000000000000000000000000000000009F -:10016000000000000000000000000000000000008F -:10017000000000000000000000000000000000007F -:10018000000000000000000000000000000000006F -:10019000000000000000000000000000000000005F -:1001A000000000000000000000000000000000004F -:1001B000000000000000000000000000000000003F -:1001C000000000000000000000000000000000002F -:1001D000000000000000000000000000000000001F -:1001E000000000000000000000000000000000000F -:1001F00000000000000000000000000000000000FF -:1002000000000000000000000000000000000000EE -:1002100000000000000000000000000000000000DE -:1002200000000000000000000000000000000000CE -:1002300000000000000000000000000000000000BE -:1002400000000000000000000000000000000000AE -:10025000000000000000000000000000000000009E -:10026000000000000000000000000000000000008E -:10027000000000000000000000000000000000007E -:10028000000000000000000000000000000000006E -:10029000000000000000000000000000000000005E -:1002A000000000000000000000000000000000004E -:1002B000000000000000000000000000000000003E -:1002C000000000000000000000000000000000002E -:1002D000000000000000000000000000000000001E -:1002E000000000000000000000000000000000000E -:1002F00000000000000000000000000000000000FE -:1003000000000000000000000000000000000000ED -:1003100000000000000000000000000000000000DD -:1003200000000000000000000000000000000000CD -:1003300000000000000000000000000000000000BD -:1003400000000000000000000000000000000000AD -:10035000000000000000000000000000000000009D -:10036000000000000000000000000000000000008D -:10037000000000000000000000000000000000007D -:10038000000000000000000000000000000000006D -:10039000000000000000000000000000000000005D -:1003A000000000000000000000000000000000004D -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E000000000000000000000000000000000000D -:1003F00000000000000000000000000000000000FD -:1004000000000000000000000000000000000000EC -:1004100000000000000000000000000000000000DC -:1004200000000000000000000000000000000000CC -:1004300000000000000000000000000000000000BC -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:10047000000000000000000000000000000000007C -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:1005300000000000000000000000000000000000BB -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000000000BA -:1006400000000000000000000000000000000000AA -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:10068000000000000000000000000000000000006A -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C000000000000000000000000000000000002A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:1007000000000000000000000000000000000000E9 -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:1007400000000000000000000000000000000000A9 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C0000000000000000000000000000000000029 -:1007D0000000000000000000000000000000000019 -:1007E0000000000000000000000000000000000009 -:1007F00000000000000000000000000000000000F9 -:1008000000000000000000000000000000000000E8 -:1008100000000000000000000000000000000000D8 -:1008200000000000000000000000000000000000C8 -:1008300000000000000000000000000000000000B8 -:1008400000000000000000000000000000000000A8 -:100850000000000000000000000000000000000098 -:100860000000000000000000000000000000000088 -:100870000000000000000000000000000000000078 -:100880000000000000000000000000000000000068 -:100890000000000000000000000000000000000058 -:1008A0000000000000000000000000000000000048 -:1008B0000000000000000000000000000000000038 -:1008C0000000000000000000000000000000000028 -:1008D0000000000000000000000000000000000018 -:1008E0000000000000000000000000000000000008 -:1008F00000000000000000000000000000000000F8 -:1009000000000000000000000000000000000000E7 -:1009100000000000000000000000000000000000D7 -:1009200000000000000000000000000000000000C7 -:1009300000000000000000000000000000000000B7 -:1009400000000000000000000000000000000000A7 -:100950000000000000000000000000000000000097 -:100960000000000000000000000000000000000087 -:100970000000000000000000000000000000000077 -:100980000000000000000000000000000000000067 -:100990000000000000000000000000000000000057 -:1009A0000000000000000000000000000000000047 -:1009B0000000000000000000000000000000000037 -:1009C0000000000000000000000000000000000027 -:1009D0000000000000000000000000000000000017 -:1009E0000000000000000000000000000000000007 -:1009F00000000000000000000000000000000000F7 -:100A000000000000000000000000000000000000E6 -:100A100000000000000000000000000000000000D6 -:100A200000000000000000000000000000000000C6 -:100A300000000000000000000000000000000000B6 -:100A400000000000000000000000000000000000A6 -:100A50000000000000000000000000000000000096 -:100A60000000000000000000000000000000000086 -:100A70000000000000000000000000000000000076 -:100A80000000000000000000000000000000000066 -:100A90000000000000000000000000000000000056 -:100AA0000000000000000000000000000000000046 -:100AB0000000000000000000000000000000000036 -:100AC0000000000000000000000000000000000026 -:100AD0000000000000000000000000000000000016 -:100AE0000000000000000000000000000000000006 -:100AF00000000000000000000000000000000000F6 -:100B000000000000000000000000000000000000E5 -:100B100000000000000000000000000000000000D5 -:100B200000000000000000000000000000000000C5 -:100B300000000000000000000000000000000000B5 -:100B400000000000000000000000000000000000A5 -:100B50000000000000000000000000000000000095 -:100B60000000000000000000000000000000000085 -:100B70000000000000000000000000000000000075 -:100B80000000000000000000000000000000000065 -:100B90000000000000000000000000000000000055 -:100BA0000000000000000000000000000000000045 -:100BB0000000000000000000000000000000000035 -:100BC0000000000000000000000000000000000025 -:100BD0000000000000000000000000000000000015 -:100BE0000000000000000000000000000000000005 -:100BF00000000000000000000000000000000000F5 -:100C000000000000000000000000000000000000E4 -:100C100000000000000000000000000000000000D4 -:100C200000000000000000000000000000000000C4 -:100C300000000000000000000000000000000000B4 -:100C400000000000000000000000000000000000A4 -:100C50000000000000000000000000000000000094 -:100C60000000000000000000000000000000000084 -:100C70000000000000000000000000000000000074 -:100C80000000000000000000000000000000000064 -:100C90000000000000000000000000000000000054 -:100CA0000000000000000000000000000000000044 -:100CB0000000000000000000000000000000000034 -:100CC0000000000000000000000000000000000024 -:100CD0000000000000000000000000000000000014 -:100CE0000000000000000000000000000000000004 -:100CF00000000000000000000000000000000000F4 -:100D000000000000000000000000000000000000E3 -:100D100000000000000000000000000000000000D3 -:100D200000000000000000000000000000000000C3 -:100D300000000000000000000000000000000000B3 -:100D400000000000000000000000000000000000A3 -:100D50000000000000000000000000000000000093 -:100D60000000000000000000000000000000000083 -:100D70000000000000000000000000000000000073 -:100D80000000000000000000000000000000000063 -:100D90000000000000000000000000000000000053 -:100DA0000000000000000000000000000000000043 -:100DB0000000000000000000000000000000000033 -:100DC0000000000000000000000000000000000023 -:100DD0000000000000000000000000000000000013 -:100DE0000000000000000000000000000000000003 -:100DF00000000000000000000000000000000000F3 -:100E000000000000000000000000000000000000E2 -:100E100000000000000000000000000000000000D2 -:100E200000000000000000000000000000000000C2 -:100E300000000000000000000000000000000000B2 -:100E400000000000000000000000000000000000A2 -:100E50000000000000000000000000000000000092 -:100E60000000000000000000000000000000000082 -:100E70000000000000000000000000000000000072 -:100E80000000000000000000000000000000000062 -:100E90000000000000000000000000000000000052 -:100EA0000000000000000000000000000000000042 -:100EB0000000000000000000000000000000000032 -:100EC0000000000000000000000000000000000022 -:100ED0000000000000000000000000000000000012 -:100EE0000000000000000000000000000000000002 -:100EF00000000000000000000000000000000000F2 -:100F000000000000000000000000000000000000E1 -:100F100000000000000000000000000000000000D1 -:100F200000000000000000000000000000000000C1 -:100F300000000000000000000000000000000000B1 -:100F400000000000000000000000000000000000A1 -:100F50000000000000000000000000000000000091 -:100F60000000000000000000000000000000000081 -:100F70000000000000000000000000000000000071 -:100F80000000000000000000000000000000000061 -:100F90000000000000000000000000000000000051 -:100FA0000000000000000000000000000000000041 -:100FB0000000000000000000000000000000000031 -:100FC0000000000000000000000000000000000021 -:100FD0000000000000000000000000000000000011 -:100FE0000000000000000000000000000000000001 -:100FF00000000000000000000000000000000000F1 -:1010000000000000000000000000000000000000E0 -:1010100000000000000000000000000000000000D0 -:1010200000000000000000000000000000000000C0 -:1010300000000000000000000000000000000000B0 -:1010400000000000000000000000000000000000A0 -:101050000000000000000000000000000000000090 -:101060000000000000000000000000000000000080 -:101070000000000000000000000000000000000070 -:101080000000000000000000000000000000000060 -:101090000000000000000000000000000000000050 -:1010A0000000000000000000000000000000000040 -:1010B0000000000000000000000000000000000030 -:1010C0000000000000000000000000000000000020 -:1010D0000000000000000000000000000000000010 -:1010E0000000000000000000000000000000000000 -:1010F00000000000000000000000000000000000F0 -:1011000000000000000000000000000000000000DF -:1011100000000000000000000000000000000000CF -:1011200000000000000000000000000000000000BF -:1011300000000000000000000000000000000000AF -:10114000000000000000000000000000000000009F -:10115000000000000000000000000000000000008F -:10116000000000000000000000000000000000007F -:10117000000000000000000000000000000000006F -:10118000000000000000000000000000000000005F -:10119000000000000000000000000000000000004F -:1011A000000000000000000000000000000000003F -:1011B000000000000000000000000000000000002F -:1011C000000000000000000000000000000000001F -:1011D000000000000000000000000000000000000F -:1011E00000000000000000000000000000000000FF -:1011F00000000000000000000000000000000000EF -:1012000000000000000000000000000000000000DE -:1012100000000000000000000000000000000000CE -:1012200000000000000000000000000000000000BE -:1012300000000000000000000000000000000000AE -:10124000000000000000000000000000000000009E -:10125000000000000000000000000000000000008E -:10126000000000000000000000000000000000007E -:10127000000000000000000000000000000000006E -:10128000000000000000000000000000000000005E -:10129000000000000000000000000000000000004E -:1012A000000000000000000000000000000000003E -:1012B000000000000000000000000000000000002E -:1012C000000000000000000000000000000000001E -:1012D000000000000000000000000000000000000E -:1012E00000000000000000000000000000000000FE -:1012F00000000000000000000000000000000000EE -:1013000000000000000000000000000000000000DD -:1013100000000000000000000000000000000000CD -:1013200000000000000000000000000000000000BD -:1013300000000000000000000000000000000000AD -:10134000000000000000000000000000000000009D -:10135000000000000000000000000000000000008D -:10136000000000000000000000000000000000007D -:10137000000000000000000000000000000000006D -:10138000000000000000000000000000000000005D -:10139000000000000000000000000000000000004D -:1013A000000000000000000000000000000000003D -:1013B000000000000000000000000000000000002D -:1013C000000000000000000000000000000000001D -:1013D000000000000000000000000000000000000D -:1013E00000000000000000000000000000000000FD -:1013F00000000000000000000000000000000000ED -:1014000000000000000000000000000000000000DC -:1014100000000000000000000000000000000000CC -:1014200000000000000000000000000000000000BC -:1014300000000000000000000000000000000000AC -:10144000000000000000000000000000000000009C -:10145000000000000000000000000000000000008C -:10146000000000000000000000000000000000007C -:10147000000000000000000000000000000000006C -:10148000000000000000000000000000000000005C -:10149000000000000000000000000000000000004C -:1014A000000000000000000000000000000000003C -:1014B000000000000000000000000000000000002C -:1014C000000000000000000000000000000000001C -:1014D000000000000000000000000000000000000C -:1014E00000000000000000000000000000000000FC -:1014F00000000000000000000000000000000000EC -:1015000000000000000000000000000000000000DB -:1015100000000000000000000000000000000000CB -:1015200000000000000000000000000000000000BB -:1015300000000000000000000000000000000000AB -:10154000000000000000000000000000000000009B -:10155000000000000000000000000000000000008B -:10156000000000000000000000000000000000007B -:10157000000000000000000000000000000000006B -:10158000000000000000000000000000000000005B -:10159000000000000000000000000000000000004B -:1015A000000000000000000000000000000000003B -:1015B000000000000000000000000000000000002B -:1015C000000000000000000000000000000000001B -:1015D000000000000000000000000000000000000B -:1015E00000000000000000000000000000000000FB -:1015F00000000000000000000000000000000000EB -:1016000000000000000000000000000000000000DA -:1016100000000000000000000000000000000000CA -:1016200000000000000000000000000000000000BA -:1016300000000000000000000000000000000000AA -:10164000000000000000000000000000000000009A -:10165000000000000000000000000000000000008A -:10166000000000000000000000000000000000007A -:10167000000000000000000000000000000000006A -:10168000000000000000000000000000000000005A -:10169000000000000000000000000000000000004A -:1016A000000000000000000000000000000000003A -:1016B000000000000000000000000000000000002A -:1016C000000000000000000000000000000000001A -:1016D000000000000000000000000000000000000A -:1016E00000000000000000000000000000000000FA -:1016F00000000000000000000000000000000000EA -:1017000000000000000000000000000000000000D9 -:1017100000000000000000000000000000000000C9 -:1017200000000000000000000000000000000000B9 -:1017300000000000000000000000000000000000A9 -:101740000000000000000000000000000000000099 -:101750000000000000000000000000000000000089 -:101760000000000000000000000000000000000079 -:101770000000000000000000000000000000000069 -:101780000000000000000000000000000000000059 -:101790000000000000000000000000000000000049 -:1017A0000000000000000000000000000000000039 -:1017B0000000000000000000000000000000000029 -:1017C0000000000000000000000000000000000019 -:1017D0000000000000000000000000000000000009 -:1017E00000000000000000000000000000000000F9 -:1017F00000000000000000000000000000000000E9 -:1018000000000000000000000000000000000000D8 -:1018100000000000000000000000000000000000C8 -:1018200000000000000000000000000000000000B8 -:1018300000000000000000000000000000000000A8 -:101840000000000000000000000000000000000098 -:101850000000000000000000000000000000000088 -:101860000000000000000000000000000000000078 -:101870000000000000000000000000000000000068 -:101880000000000000000000000000000000000058 -:101890000000000000000000000000000000000048 -:1018A0000000000000000000000000000000000038 -:1018B0000000000000000000000000000000000028 -:1018C0000000000000000000000000000000000018 -:1018D0000000000000000000000000000000000008 -:1018E00000000000000000000000000000000000F8 -:1018F00000000000000000000000000000000000E8 -:1019000000000000000000000000000000000000D7 -:1019100000000000000000000000000000000000C7 -:1019200000000000000000000000000000000000B7 -:1019300000000000000000000000000000000000A7 -:101940000000000000000000000000000000000097 -:101950000000000000000000000000000000000087 -:101960000000000000000000000000000000000077 -:101970000000000000000000000000000000000067 -:101980000000000000000000000000000000000057 -:101990000000000000000000000000000000000047 -:1019A0000000000000000000000000000000000037 -:1019B0000000000000000000000000000000000027 -:1019C0000000000000000000000000000000000017 -:1019D0000000000000000000000000000000000007 -:1019E00000000000000000000000000000000000F7 -:1019F00000000000000000000000000000000000E7 -:101A000000000000000000000000000000000000D6 -:101A100000000000000000000000000000000000C6 -:101A200000000000000000000000000000000000B6 -:101A300000000000000000000000000000000000A6 -:101A40000000000000000000000000000000000096 -:101A50000000000000000000000000000000000086 -:101A60000000000000000000000000000000000076 -:101A70000000000000000000000000000000000066 -:101A80000000000000000000000000000000000056 -:101A90000000000000000000000000000000000046 -:101AA0000000000000000000000000000000000036 -:101AB0000000000000000000000000000000000026 -:101AC0000000000000000000000000000000000016 -:101AD0000000000000000000000000000000000006 -:101AE00000000000000000000000000000000000F6 -:101AF00000000000000000000000000000000000E6 -:101B000000000000000000000000000000000000D5 -:101B100000000000000000000000000000000000C5 -:101B200000000000000000000000000000000000B5 -:101B300000000000000000000000000000000000A5 -:101B40000000000000000000000000000000000095 -:101B50000000000000000000000000000000000085 -:101B60000000000000000000000000000000000075 -:101B70000000000000000000000000000000000065 -:101B80000000000000000000000000000000000055 -:101B90000000000000000000000000000000000045 -:101BA0000000000000000000000000000000000035 -:101BB0000000000000000000000000000000000025 -:101BC0000000000000000000000000000000000015 -:101BD0000000000000000000000000000000000005 -:101BE00000000000000000000000000000000000F5 -:101BF00000000000000000000000000000000000E5 -:101C000000000000000000000000000000000000D4 -:101C100000000000000000000000000000000000C4 -:101C200000000000000000000000000000000000B4 -:101C300000000000000000000000000000000000A4 -:101C40000000000000000000000000000000000094 -:101C50000000000000000000000000000000000084 -:101C60000000000000000000000000000000000074 -:101C70000000000000000000000000000000000064 -:101C80000000000000000000000000000000000054 -:101C90000000000000000000000000000000000044 -:101CA0000000000000000000000000000000000034 -:101CB0000000000000000000000000000000000024 -:101CC0000000000000000000000000000000000014 -:101CD0000000000000000000000000000000000004 -:101CE00000000000000000000000000000000000F4 -:101CF00000000000000000000000000000000000E4 -:101D000000000000000000000000000000000000D3 -:101D100000000000000000000000000000000000C3 -:101D200000000000000000000000000000000000B3 -:101D300000000000000000000000000000000000A3 -:101D40000000000000000000000000000000000093 -:101D50000000000000000000000000000000000083 -:101D60000000000000000000000000000000000073 -:101D70000000000000000000000000000000000063 -:101D80000000000000000000000000000000000053 -:101D90000000000000000000000000000000000043 -:101DA0000000000000000000000000000000000033 -:101DB0000000000000000000000000000000000023 -:101DC0000000000000000000000000000000000013 -:101DD0000000000000000000000000000000000003 -:101DE00000000000000000000000000000000000F3 -:101DF00000000000000000000000000000000000E3 -:101E000000000000000000000000000000000000D2 -:101E100000000000000000000000000000000000C2 -:101E200000000000000000000000000000000000B2 -:101E300000000000000000000000000000000000A2 -:101E40000000000000000000000000000000000092 -:101E50000000000000000000000000000000000082 -:101E60000000000000000000000000000000000072 -:101E70000000000000000000000000000000000062 -:101E80000000000000000000000000000000000052 -:101E90000000000000000000000000000000000042 -:101EA0000000000000000000000000000000000032 -:101EB0000000000000000000000000000000000022 -:101EC0000000000000000000000000000000000012 -:101ED0000000000000000000000000000000000002 -:101EE00000000000000000000000000000000000F2 -:101EF00000000000000000000000000000000000E2 -:101F000000000000000000000000000000000000D1 -:101F100000000000000000000000000000000000C1 -:101F200000000000000000000000000000000000B1 -:101F300000000000000000000000000000000000A1 -:101F40000000000000000000000000000000000091 -:101F50000000000000000000000000000000000081 -:101F60000000000000000000000000000000000071 -:101F70000000000000000000000000000000000061 -:101F80000000000000000000000000000000000051 -:101F90000000000000000000000000000000000041 -:101FA0000000000000000000000000000000000031 -:101FB0000000000000000000000000000000000021 -:101FC0000000000000000000000000000000000011 -:101FD0000000000000000000000000000000000001 -:101FE00000000000000000000000000000000000F1 -:101FF00000000000000000000000000000000000E1 -:08200000481F000080013E04AE -:102008003038F00C19005EBC5C7C4848F00C003994 -:10201800F00C093BB22A5EFC000011C0F80815015B -:102028003039F20C1800E08800035EFDF00B000B5D -:102038004828F00B032C5EFC00007B08580CC0D02D -:1020480048787829F00900293008720A143CC060E1 -:102058002FF82F895848CFA13FF85EF800007B0879 -:102068003038F00C18005EBCF60C001C30094838FB -:10207800F00C09295EFC000000007B085EFFD70316 -:10208800D4011988301EB6881998B6BEEA18FFFF21 -:10209800E818FF80B6AEB698580AC0301588C0A8B0 -:1020A80048981188F4081800C0303038C03848788B -:1020B80011B8B6C83EE8B6D83008B6E8302C306853 -:1020C800B208D802000016AB00000008D40130188E -:1020D800198EB68E199CB6A8EA1CFFFFE81CFF8073 -:1020E800B6B8B69C580AC0A0158CE06A00FFF00C80 -:1020F8001800F4081710F9B80001B6C83EE8B6D8B9 -:102108003008B6E8302C3068B208D802D421202D27 -:102118004AAA189E1698129674075807C071FACAE8 -:10212800FFF814F7F01F0026C4681989B6891999B1 -:10213800EA19FFFFE819FF80B6993039B0A9740988 -:102148007219F20C1618B0F9B0CCF9D9C108F3D944 -:10215800C208B0ECB0D9304BB0BB74097229F20C8C -:102168001618F169000CF16C0009F9D9C108F3D906 -:10217800C208F16C000BF16B0008F169000A7409E0 -:10218800300A7239F16A00133EEAF16A0012F20A63 -:102198001618F1690011F16A000EF16B000DF5D9FE -:1021A800C108F3D9C208F16A0010F169000F302C98 -:1021B8003138AC082FEDD8220000152C800020D42F -:1021C8003038F00C18005EBCF60C001B48F8F00B19 -:1021D800032858085E0C704958195E1C7029581954 -:1021E800C09148B8F00C003C9828B42878089508A5 -:1021F8005EFC71E85808F0091700F1F91001F1F8D0 -:10220800120A9509B4285EFC00007B08000011C082 -:10221800D4314BC8300A10941499910A1893301A83 -:102228004B984BA7910A3EE14B921296C0280A9907 -:10223800E0682710C0485808C5602018664AE21AA6 -:102248000201E04A0201CF81C4F8F2C5FFFFE20AA9 -:102258001800CEE10F9BF7DBC0C15825E0890005C7 -:102268003038300AC2E80FAA3038C148580BC0A02D -:10227800EE08070EEE08000CA96E2FE8199C1C0842 -:10228800C058F0CCFFFFEE080708201AF80800082D -:102298005C5A10395F9CEC0A18005F9EFDEC000C3C -:1022A800EC0C1800CE4110395F09F9DAC008EC0CC3 -:1022B80018005F0CF9E90009EC091800C020D83AA9 -:1022C800840C3009F20C1900CB34201D5C6A1ADB2F -:1022D8001AD849081ADA490C1AD51AD8F01F000F6B -:1022E8002FADCA6BDA3A662A68085C5A2FF8EE09ED -:1022F8000B0A8908E0480063FE9AFFA9305CD832CF -:10230800000014B0000011B8000014B8000016A2B4 -:102318008003792C80037AB0800094C4D431202DB6 -:102328004C68149570081896169712945808C0713E -:10233800FACAFFF814F8F01F0042CC38198830198F -:10234800B6881998B6A9EA18FFFFE818FF80B6986A -:102358004BC89088EDB80002C171189330023EE175 -:102368000788201D4B8C1AD8F01F00382FF22FED4C -:102378000788E2081800C0502FF3E0420400CF118C -:102388004B3CF01F00320DC83099F2081800E08865 -:1023980000114B09920A3009F20A1900E0840091F1 -:1023A8001AD84AD84ADC1AD8F01F00282FEDC88856 -:1023B800E0450032C290A3684A99E0450033C5D091 -:1023C800129B7209F2080309EECAFFFCF3360020DB -:1023D8003009AEB6C088760CF808030CF809070C6B -:1023E8002FF914CCEC091900CF7349A99289EDB9DA -:1023F8000004C5F149A97209F2080308499C1AD8D2 -:1024080049581AD8C538304BA368495A7409F20894 -:10241800030972C9AEBBF20B1618AEC9AEFBF7D9E9 -:10242800C108F3D9C208AEDBAEE948A99289EDB973 -:102438000004C1903046C3D80000152C800020D479 -:10244800000016A080037AF0800094C4800384D42E -:10245800000016A28003785880037AF8000015203F -:1024680080037B187409F208030870C8496C1AD8ED -:10247800304649681AD8C1A8301AAEBA720AF408A8 -:10248800030AF53A0038AECA491A948AEDBA00042C -:10249800C0303016C0E87209F2080308F138003875 -:1024A80048CC1AD8301648981AD8F01F000B2FEDD0 -:1024B8003EE80C07AEC83008AED82FB6A806302CB8 -:1024C8002FEDD83280037B2880037858000016A2AD -:1024D80080037B38800094C4D421204D4A981897F3 -:1024E800118A580AC0313FF6C0D84A7811BC118EFB -:1024F800119611A8B166EDEE1186EDE81086F9E6A1 -:1025080010064A289088EDB80002C0E14A08201D4C -:102518004A0C1ADA1AD61AD8505B5049F01F001E16 -:102528002FCD4009401B49D870085808C081FACA05 -:10253800FFF00E9C14F8F01F001AC2080F88B68826 -:102548000F98EA18FFFFE818FF80B6983018B6A869 -:102558003048B6B8F1D6C108B6E83EE8EC0A161815 -:10256800B6F6F7680008B6CA3008EDD6C208F768AC -:102578000009B6D63098302CB2082FCDD8220000EA -:102588000000152800007B28000016A28003782090 -:1025980080037B48800094C40000152C800020D460 -:1025A800D401580BC0313FF8C0C8178A17B917981B -:1025B800B168F1EA118817AAF1EA1088F3E810085F -:1025C800F00A161848E9B28AF5D8C208B2B8B29A21 -:1025D800F5D8C108B2AA48B99289EDB90002C0A1DC -:1025E800201D1AD848881ADC488C1AD8F01F000811 -:1025F8002FCD30194878B089D802000000007B2818 -:10260800000016A28003799C80037B74800094C428 -:1026180000001528D431204D4AE8189570081697FF -:1026280012965808C071FACAFFF014F8F01F002A71 -:10263800C4D84AA89088EDB80002C1711894300334 -:102648003EE20988201D4A6C1AD8F01F00262FF395 -:102658002FED0988E4081800C0502FF4E043040067 -:10266800CF114A1CF01F001F0B880BCCAE880B98AB -:10267800EA18FFFFE818FF80AE983004BA445014F7 -:102688003025FACAFFFCAEA5301BF01F0018304AEF -:10269800EF64000CEF6500084018F0091618AEF852 -:1026A800AEC99A49AEBAF5D8C108F1D8C208EF69DF -:1026B800000AAED8AEEA3EE8F3D9C108EF68000BCD -:1026C800EF69000930C8302CAC082FCDD832000093 -:1026D8000000152C800020D4000016A080037AF09A -:1026E800800094C4800384D4800021C8D40148A801 -:1026F8009088EDB80002C0E148887008201D1AD8FB -:10270800487811881AD84878487C1AD8F01F0007EA -:102718002FCDDA0A000016A200000008000016AB50 -:10272800800379E480037BA8800094C4D42148E620 -:10273800189E30076C0C580CC0A02FF72EC6E04727 -:102748000024CF91489CF01F000ADC2A4866EE0757 -:102758000027EC070027EF680010AECE8F0B8F2AFA -:102768008F39D822000011E080037BC4800094C414 -:10277800D4214C8618970C9A302830094C6B310CB0 -:10278800F01F00460C9A302830094C5B311CF01FB2 -:1027980000430C9A302830094C2B312CF01F003F95 -:1027A8000E990C9A30284C0B314CF01F003C0E99B6 -:1027B8000C9A30284BDB315CF01F00383018300998 -:1027C8004BBA4BCB320CF01F003530184BA73009F1 -:1027D8000E9B4BAA321CF01F00310E9B301830099B -:1027E8004B7A322CF01F002D4B6532390A9A0E9B1A -:1027F8003018129CF01F002932490A9A0E9B301893 -:10280800129CF01F002632590A9A0E9B3018129C0F -:10281800F01F00220A9A32690E9B3018129CF01F92 -:10282800001F0C9A302830094A7B336CF01F001BBC -:102838000E9B301830094A5A327CF01F00180C9A47 -:10284800302830094A2B330CF01F00144A1533394D -:102858000A9A0E9B3018129CF01F001033190A9A1E -:102868000E9B3018129CF01F000D0A9A33290E9BFC -:102878003018129CF01F00090C9A30283009496B57 -:10288800334CF01F00060E9B30183009493AC278C5 -:10289800800020D48000427C8000273480004118CA -:1028A8008000433080003FD080003EA88000208810 -:1028B800800026F48000208480002114800035ECFC -:1028C80080003514800034A480004B5480003740C9 -:1028D8008000232480003678800024E0335CF01FD9 -:1028E80000370C9A302830094B5B328CF01F0033CC -:1028F8000C9A302830094B3B32DCF01F00300C9A20 -:10290800302830094B0B32ECF01F002C0E9B30188E -:1029180030094AEA329CF01F00290E9B3018300912 -:102928004ABA32CCF01F00250E9B301830094A9A5B -:1029380032BCF01F00220C9A304830094A6B344CE4 -:10294800F01F001E0E9B301830094A4A32ACF01FA7 -:10295800001B0E9B301830094A1A345CF01F001710 -:102968000E9B3018300949FA32FCF01F00140E9BF8 -:102978003018300949CA337CF01F00100E9B3018FC -:10298800300949AA338CF01F000D0C9A30483009E1 -:10299800497B346CF01F00090C9A30283009495BD8 -:1029A800339CF01F00060E9B30183009492A33ACBF -:1029B800F01F0002D82200008000273480003D88E4 -:1029C80080003AC8800038B4800033FC800030D4DE -:1029D800800032848000375C800032088000300438 -:1029E8008000332880002F8C80002EC4800038841B -:1029F800800037CC8000261CD4013038580B5F1972 -:102A0800F00C18005F88F3E80008C060F40C0019A7 -:102A180048D8F009092B48D89088EDB80001C111B1 -:102A280048B848C9580AF20A1700F00A171048A807 -:102A38001ADA1ADB1ADC489C1AD8F01F00092FCDC5 -:102A4800D802000000007B08000016A280037BDC8F -:102A580080037BE4800378C080037BF0800094C40B -:102A6800D401580BF60A1700F7FA180BF01F0002EA -:102A7800D802000080002A00D401320A300B483CFA -:102A8800F01F0003D802000000007B088002E8BCA9 -:102A9800D421206D3087FAC6FFF00E9A4C6B18953A -:102AA8000C9CF01F0046304B0C9CF01F0045300872 -:102AB800FB68000DBA88FB680009FB68000BFB681F -:102AC800000CEE784240501830480E9BFB67000817 -:102AD800FB68000A300AFE7C2400F01F003A1897B1 -:102AE800C0F04B989088EDB80002C0814B78201D4B -:102AF8004B7C1AD8F01F00372FED301CC5A8E06AB0 -:102B0800F980EA1A03371A9BFE7C2400F01F003272 -:102B1800582CC0D14AC89008EE081900C0844AB899 -:102B2800201D4AEC1AD8F01F002B2FEDD303300AD2 -:102B3800E06B01204AACF01F002BD503E1B8000080 -:102B4800EE180001F5D8C201C020D303FE78240096 -:102B58003019705BF7D9D001915B705BF7D9D0C1A0 -:102B6800915B705BF7D9D081915B580AC020D5037F -:102B7800FE7C2400F01F001C0A9CF01F001C364A33 -:102B8800300B49BCF01F001BE06A0400300B49AC55 -:102B9800F01F0018E06A0400300B498CF01F001584 -:102BA800F01F0017497830079107F01F00170E9C97 -:102BB8002FADD822800382078002E7368000A280EA -:102BC8008000A618000016A2800379BC80037C0848 -:102BD800800094C48000A73C80037C2880002C10CF -:102BE8008000A3A08000A7EC80002778000014B81C -:102BF8008002E8BC00000DB8000009B880002A80F7 -:102C0800000000088000751CD401E1B80000EE182F -:102C18000001F5D8C201C020D303FE782400301982 -:102C2800706BF7D9D001916B706BF7D9D0C1916BEC -:102C3800706BF7D9D081916B580AC020D503FE7C00 -:102C480024007848EDB80000C0F1F01F0016C0C19C -:102C5800319CF01F0015495890092FF9B009301917 -:102C68004938B089C1B8E1B80000EE180001F5D8BC -:102C7800C201C020D303FE7824003019705BF7D955 -:102C8800D001915B705BF7D9D0C1915B705BF7D9CC -:102C9800D081915B580AC020D503D402D603000026 -:102CA800800022188000A2E6000014B40000151C61 -:102CB800D4313006189714931694950618983E093F -:102CC800C2C81095118A2FF8F20A1800C251580686 -:102CD800C21049E890093008F0091900C064089B3F -:102CE8000E9C5C7BF01F001A49A890093008F00977 -:102CF8001900C1040C070F98201D1AD849681AD466 -:102D08001AD690881AD84958495C1AD8F01F001565 -:102D18002FAD8706C1882FF60836CD4548D89009CB -:102D28003008F0091900C0353005C0D8201D48A862 -:102D38001AD690881AD8489848BC1AD83005F01F77 -:102D480000092FCD0A9CD832000016A680013DB498 -:102D5800000016A2000014B4800378D080037C48D9 -:102D6800800094C480037C6CD42118971696F01FB9 -:102D780000325F080E3C5F191895F1E91009C03060 -:102D88005808C5710B893E08F0091800C5210B9930 -:102D98003008F0091800C4D5E2190040C0E1EACAB9 -:102DA800FFFD0BAC1298C068158B2FF92FFB160A84 -:102DB80016081839CFA5C2384A089088EDB800021D -:102DC800C0D149F8201D49FC1AD8F01F001FF7D6BA -:102DD800C0100E9CF01F001D2FED3009EACAFFFD40 -:102DE8000BAC1298C0A81587159B2FF9F7E7108B25 -:102DF8002FEB160AF60800081839CF6510053EE9CA -:102E08000BB8F2081800C021DA2A4919920A3009C9 -:102E1800F20A1900C0E4201D1AD848E890881AD888 -:102E2800487848DC1AD8F01F0008300C2FCDD8227B -:102E3800D82A000080002CB8000016A080037974FE -:102E480080037C84800094C480013DB4000016A2F5 -:102E5800000014B480037C8CD4014918581CC0713C -:102E68003039334C9109F01F000FC0683049334C9A -:102E78009109F01F000D48D89088EDB80002C0D124 -:102E880048787008201D1AD848981AD8489848AC2D -:102E98001AD8F01F000A2FCDD80200000000000841 -:102EA8008000A2E68000A300000016A280037A3CFE -:102EB8008003821080037CB0800094C4D421FACDB2 -:102EC80001004AC81697700512965805C071FACACB -:102ED800FF0014F5F01F0028C4A81989301AB68914 -:102EE8001999B6AAEA19FFFFE819FF80B69919B926 -:102EF800F4091800C20119C53FF8F0051800C1B05F -:102F0800E06A00FF300B1A9CF01F001C1A9430086E -:102F1800C048E8080B082FF80A38CFC51A94AEB590 -:102F2800EEC8FFFCFA050009C038093A10CA123485 -:102F3800CFD1C15849256A0CF01F00120A98EECA71 -:102F4800FFFCEBDCC0083009AEB5C068700BF609B1 -:102F5800070B2FF914CBEA091900CF933EE80A07AB -:102F6800AEC83008AED82FB5302CAC052C0DD82201 -:102F78000000152C800020D48002E8BC0000011459 -:102F88008002EDD0D421202D49981697700E129604 -:102F9800580EC071FACAFFF814FEF01F0016C25886 -:102FA8001989B6891998EA18FFFFE818FF80B698BA -:102FB80030184915B6A86A0CF01F0010EEC9FFFCBE -:102FC8005C5C3008AEBCC0686A0AF408070A2FF8CF -:102FD80012CAF8081900CF933EE818072FBCAEC8EC -:102FE8003008AED8AC0C302C2FEDD8220000152CB0 -:102FF800800020D4000001148002EDD0D421202DBF -:103008004AE818967008169712955808C071FACAB7 -:10301800FFF814F8F01F002AC4D84AA811D4303891 -:10302800F0041800E08B0046FACAFFFC1A9B089CC3 -:10303800F01F00250D88C300AE880D98EA18FFFF21 -:10304800E818FF80AE983018AEA81BC8AEB89A280A -:10305800AEC83008C0B8F3D8C010400BF1DAB010D1 -:10306800EE09000AF6090709B4D9F0CAFFFF9A2940 -:10307800F2081900CF13F1D9C010EE0800083EEA93 -:10308800B0DA9AA82FA910073008AEE8AA09089C58 -:10309800F01F000EC0E8AE880D98EA18FFFFE81888 -:1030A800FF80AECCAE98AEAC3EE8AEB83048AA08C9 -:1030B800302C2FEDD82200000000152C800020D4E1 -:1030C80000000DB880006BF480006FBCD431202D57 -:1030D8004C5818967008169712955808C071BAE897 -:1030E800FACAFFFAF01F0041C728F8C8FFFDC3C09D -:1030F80011842FF4F0040004C37009893018F00912 -:103108001800C67109993EE8F0091800C6214B88D5 -:1031180090093008F0091900C5C44B681AD44B6CE3 -:103128001AD8F01F00362FEDC548099309A9F3E313 -:1031380010835C83C54809893018F0091800C1510B -:1031480009993EE8F0091800C1014A989009300829 -:10315800F0091900C0A44A781AD44A7C1AD8F01F7A -:1031680000272FEDC02830030DB43018F0041800E4 -:10317800C2D10DCC3038F00C1800E08B0028F5D304 -:10318800C008FACBFFF9F01F001E0D88C120AE88D9 -:103198000D98EA18FFFFE818FF80AEB4AE98AEA409 -:1031A8001BF8AEC83EE8AED83008AEE83068C0D8E4 -:1031B800AE880D98EA18FFFFE818FF80AE983EE841 -:1031C800AECCAEB8AEAC3048AA08302C2FEDD83211 -:1031D80009883029F2081800CA9030032FF8100423 -:1031E800CAB1CC3B0000152C800020D4000016A2E8 -:1031F8008003780C80037CBC800094C480006FE05E -:10320800D421202D49A81697700E1296580EC07119 -:10321800FACAFFF814FEF01F0017C2681989301A9D -:10322800B6891999B6AAEA19FFFFE819FF80B69975 -:1032380019B9F4091800C0D119C83039F2081800B2 -:10324800E08B000848C9F208033CF01F000CC028B6 -:10325800300C3018AEB83EE8AECCAED83008AEE888 -:10326800302C3068AC082FEDD82200000000152C57 -:10327800800020D400007B0880004D78D421202DC8 -:103288004A181697700E1296580EC071FACAFFF8AF -:1032980014FEF01F001EC3481989301AB6891999FF -:1032A800B6AAEA19FFFFE819FF80B69919B9F40917 -:1032B8001800C0B119CC3038F00C1800E08B0006AB -:1032C800F01F00135C8CC028300C3028AEB83EE8E4 -:1032D800AECCAEE85C7CF8081608AED83008AEF87C -:1032E8003078AC0848B89088EDB80002C08148A88A -:1032F8001ADC48AC1AD8F01F000A2FED302C2FED3D -:10330800D82200000000152C800020D480006D38E1 -:10331800000016A8800378A880037CD8800094C495 -:10332800D421202D4AA81697700512965805C07109 -:10333800FACAFFF814F5F01F0027C4781989301A63 -:10334800B6891999B6AAEA19FFFFE819FF80B69954 -:10335800303819B919C5F40918005F09F0051800C3 -:103368005F881268C19049C8F00503345804C060EA -:10337800089C301BF01F0019C10849989009E809FA -:103388001900C0A449781AD5497C1AD8F01F00172B -:10339800089C2FEDC028300C3018AEB83EE8AECCF3 -:1033A800AED83008AEE83068AC0849189088EDB857 -:1033B8000002C0A148B8201D1ADC48EC1AD51AD85A -:1033C800F01F000A2FCD302C2FEDD8220000152C2D -:1033D800800020D400007B0880004F1C000016A647 -:1033E8008003794080037CEC800094C4000016A818 -:1033F80080037D10D421202D4A181697700E12963E -:10340800580EC071FACAFFF814FEF01F001EC34818 -:103418001989301AB6891999B6AAEA19FFFFE81965 -:10342800FF80B69919B9F4091800C0F119C83039E4 -:10343800F2081800E08B000A4939F2080038300B0E -:10344800701CF01F0012C028300C3018AEB83EE8CF -:10345800AECCAED83008AEE83068AC0848C8908822 -:10346800EDB80002C08148B81ADC48BC1AD8F01F71 -:10347800000B2FED302C2FEDD82200000000152C6A -:10348800800020D400007B0880004F1C000016A894 -:1034980080037A6480037D28800094C4D40149584D -:1034A8009088EDB80002C08149381ADC493C1AD826 -:1034B800F01F00132FED49383009118AF20A18005D -:1034C800C021DC0AB089F01F0010581CC1004898C0 -:1034D80090093008F0091900C025DA0A48681ADC92 -:1034E80048AC1AD8F01F0006301C2FEDD802000097 -:1034F800000016A28003798480037D38800094C47C -:10350800000016AA80019EF880037D54D421202D46 -:103518004B281496700E16971295580EC071FACA59 -:10352800FFF814FEF01F002EC5681989B68919988E -:10353800EA18FFFFE818FF803014B698B6A4F01F09 -:103548000029C3E0E0460025C260E0460026C3200B -:10355800EEC9FFFCE0460024C0F0129AF9380020BA -:103568003009AEB8C058F809070B2FF914CBF00989 -:103578001900CFA3C28830682DACAEB8306A3008C5 -:10358800198B12CB2FF8201C5C88F4081900CF91F6 -:103598003068C19878C8F0091618AEF93049AEC835 -:1035A800AEB9F3D8C108F1D8C208AED9AEE83048F0 -:1035B800C0A8AEB4F9380038AEC83018C048AEB4A8 -:1035C800AECC18983EE91007AEC93009AED92FB86D -:1035D800302CAA082FEDD8220000152C800020D40A -:1035E8008001997CD421202D49F8189670081697E7 -:1035F80012955808C041FACAFFF8C1881988B688D8 -:103608001998EA18FFFFE818FF803019B698306853 -:10361800B6A9B6B81A9CF01F0015581CC0B00A9974 -:103628000E9B0C9CFACAFFF8300814F8F01F001023 -:10363800C1881BD8AEC81BC8AED81BB8AEE81BA83B -:10364800AEF81B98EF6800081B88EF6800093EE891 -:10365800EF68000A3008EF68000B302C30B8AA0871 -:103668002FEDD8220000152C80019128800020D44D -:10367800D421FACD010016961A971A9C173AF01F12 -:103688000025FAC9FF000D88F20800083009F16921 -:10369800FF004A189088EDB80002C08149F81AD78F -:1036A80049FC1AD8F01F001F2FED300849E749FAE6 -:1036B800AE88AE98AEA8AEB8B488109949CA0E9B29 -:1036C8001A9C1A96F01F001B5C5CC040E06C00FF5F -:1036D800C1E849189088EDB80002C1510F8A0FB9A6 -:1036E8000F98B168F1EA11880FAAF1EA1088F3E897 -:1036F8001008201D1AD848981AD648FC1AD8F01F66 -:1037080000092FCD30194898301CB0892C0DD822CB -:103718008002E736000016A280037A7C80037D646D -:10372800800094C400007B2800001528800025A88C -:103738008000C4C080037D84D401F01F0006E068C7 -:1037480000FF581CF00C1710F9BC0001D80200004B -:10375800800199CCD42118971696335CF01F001677 -:103768005827C1F10D980D89F1E910893018F00931 -:103778001900C1710DA80DBA0DC9303BF608180023 -:10378800E0880004300CC04848CBF608033CA96A1E -:10379800ECCBFFFB120A5C7AF01F00091897C028CF -:1037A8003FF7335CF01F0007E06C00FF5817F9BCC7 -:1037B8000001D8228000A30000007B08800053C0CD -:1037C8008000A2E6D421202D581CC4211789F809AD -:1037D8001800C3E1F6C8FFFE1796C170118AF20AF5 -:1037E8001800C131119A3EE9F20A1800C0E149B93E -:1037F800920A3009F20A1900C0841AD84988499CEB -:103808001AD8F01F00192FED3008FACAFFF8300B4C -:1038180014E80C9CF01F00159A3A18973038F006F7 -:103828001800E0880004300CC0484918F006033C32 -:103838005C7A0E9BF01F000F18950C9CF01F000E71 -:103848000E9CF01F000E5815C0310A9CC038E06C61 -:1038580000FF2FEDD8220000000016A28003795C3B -:1038680080037CBC800094C4800072DC00007B086C -:103878008000514080006E188002E28CD401582CE0 -:10388800C13117981789F1E910893018F009190022 -:10389800C0B117C817BA17ACA96A2FBBF00A000A3B -:1038A8005C7AF01F0002DA0A80007380D421581C69 -:1038B800C391580BC0311697C1E81788F80818004B -:1038C800C3411797C33817893018F0091800C13158 -:1038D80017993EE8F0091800C0E1497890093008C6 -:1038E800F0091900C08449581ADB495C1AD8F01F3E -:1038F80000152FED49089088EDB80002C08148F8FE -:103908001AD7491C1AD8F01F000F2FED3038F007CE -:103918001800E08B000848D8F007033CF01F000CA3 -:10392800DA2AE06C00FFD82230072FF8100BCCC140 -:10393800CE2B0000000016A2800379F880037CBC1F -:10394800800094C480037DA800007B088000599CF7 -:10395800D421202D4B981896169414971295908878 -:10396800EDB80002C1314B694B685805F2081700E1 -:10397800201D1AD816985C781ADA1AD84B281ADC3F -:103988004B2C1AD8F01F00322FAD3038F007180032 -:10399800E0880005E06C00FFC8584AE8F0070338E3 -:1039A80050085808C1504A59920A3009F20A1900B9 -:1039B800C0841AD84A484A8C1AD8F01F00252FED1F -:1039C800400CF01F002630094A28F00709391A9CD4 -:1039D800E06A04005016300B1ADC14981AD75C748D -:1039E8001ADB16991AD5089C1ADA169A1AD6F01FF5 -:1039F800001C49282FAD580CC3819088EDB80002EF -:103A0800C1511AD71AD41AD6403850461AD848D8AD -:103A180048B95805F2051700F005171048A81AD537 -:103A2800490C1AD8F01F000A2FAD0E9C400BF01F4E -:103A3800000E301CC3780000000016A280037DC869 -:103A480080037DC4800379C480037DCC800094C446 -:103A580000007B0880037DF88000599C80005D642D -:103A680080037E2480002A689088EDB80002C15146 -:103A78001AD71AD41AD6403850461AD848B848C95E -:103A88005805F2051700F005171048A81AD548ACD4 -:103A98001AD8F01F000A2FAD300948983FFCF007EC -:103AA80009392FEDD822000080037DC480037DC82A -:103AB800800379C480037E50800094C400007B0892 -:103AC800D431584CE081008E580BC2A01785F805F8 -:103AD8001800E081008A179817A7B167EFE81187E7 -:103AE80017B8EFE8108717C8F1E71007C7E80B8980 -:103AF8003018F0091800C7E10B993EE8F0091800E2 -:103B0800C7914C2890093008F0091900C7344C08AF -:103B18001AD54C0C1AD8F01F00402FEDC6B81697CE -:103B28003006C1F80B960BA8F1E610865C86C688AD -:103B380007893018F0091800C72107993EE8F009ED -:103B48001800C6D14B1890093008F0091900C6743E -:103B58004AF81AD34AFC1AD8F01F002F2FEDC5F8DF -:103B68003005C1B80795C61809893018F00918003A -:103B7800C61109993EE8F0091800C5C14A389009EC -:103B88003008F0091900C5644A181AD44A1C1AD812 -:103B9800F01F00212FEDC4E83003C1A80993C50820 -:103BA80009893018F0091800C13109993EE8F0096F -:103BB8001800C0E1495890093008F0091900C0847C -:103BC80049381AD4493C1AD8F01F00132FED06992A -:103BD8000A9AF7D6C0100E9CF01F0010581CC0306F -:103BE800E06C00FFD83230072FF5F6050005C80154 -:103BF800C98B0B833028F0031800C95030062FF307 -:103C0800EA030003C961CADB000016A280037A98A0 -:103C180080037CBC800094C4800039580784301825 -:103C2800F0041800CA0030052FF4E6040004C9D1D6 -:103C3800CB4B09883019F2081800CB1030032FF845 -:103C48001004CAF1CC5B0000D421202D3038169620 -:103C58001494F00B1800E08B0072300750074BA843 -:103C68001188EE081800C0B04B889008EE081900BB -:103C7800C654201D4B684B7C1AD8C0F84B69138971 -:103C8800F0091800C0E14B589008EE081900C56407 -:103C9800201D4AF84B2C1AD8F01F00322FEDC4E82B -:103CA8001A9AE0690400501712981ADAEBDCC0106F -:103CB8001ADB0E9A1AD70E9B1AD40A9C1AD93019F5 -:103CC8001AD7F01F00294A182FAD580CC1B1908897 -:103CD800EDB80002C1114A584A595804F2041700B5 -:103CE800F004171049A81AD64A2C1AD51AD41AD88B -:103CF800F01F001C2FCD0C9C400BF01F001F301C28 -:103D0800C1F89008EE081900C11449884989580477 -:103D1800F2041700F004171048D81AD6497C1AD5AF -:103D28001AD41AD8F01F000F2FCDA17630092FF61C -:103D380049383FFCF0060929C038E06C00FF2FED38 -:103D4800D822000000007B07000016A280037A102A -:103D580080037E80000016AB000016A680037EA0BC -:103D6800800094C480005D6480037DC480037DC8A6 -:103D780080037EB880002A6880037EDC00007B0810 -:103D8800D421583CC661580BC24017843028F0042F -:103D98001800C621179717A8F1E710875C87C5D8C0 -:103DA80009893018F0091800C5D109993EE8F009C9 -:103DB8001800C5814B6890093008F0091900C5241E -:103DC8004B481AD44B4C1AD8F01F00342FEDC4A816 -:103DD80016973006C1B80996C4B80B893018F0098F -:103DE8001800C4B10B993EE8F0091800C4614A886C -:103DF80090093008F0091900C4044A681AD54A6CB9 -:103E08001AD8F01F00262FEDC3883004C1A80B94E0 -:103E1800C3A80B893018F0091800C1310B993EE886 -:103E2800F0091800C0E149A890093008F009190004 -:103E3800C08449881AD5498C1AD8F01F00182FED6C -:103E48000E9C089A0C9B5C7CF01F0015581CC03017 -:103E5800E06C00FFD82230072FF4F6040004CA11E2 -:103E6800CB9B09853018F0051800CB6030062FF57C -:103E7800E8050005CB31CCAB0B883019F2081800E7 -:103E8800CC7030042FF81005CC51CDBB000016A221 -:103E98008003791480037CBC800094C480003C506B -:103EA800D431204D1495740A501A18961788301971 -:103EB800F2081800C771F6C7FFFE1794C1700F8982 -:103EC800F0091800C1310F993EE8F0091800C0E167 -:103ED8004B7890093008F0091900C0844B581AD75C -:103EE8004B5C1AD8F01F00352FED4B189088EDB8B1 -:103EF8000002C0A14AF81AD44B1C1AD61AD51AD8EF -:103F0800F01F002E2FCD3028F0041800E08B004B56 -:103F18003006304030114A624A63C3E80F88E0082F -:103F28001800C4010F990FA8B168F1E911880FB9F9 -:103F3800F1E910880FC92FB7F3E810085807C170C6 -:103F48000F89E2091800C1310F993EEAF4091800F7 -:103F5800C0E18409300AF4091900C0941AD7496CE1 -:103F68001AD35028F01F00152FED400850388489C7 -:103F7800EDB90002C0A11AD84029492C1AD91AD67D -:103F88001AD3F01F000E2FCDF9D6C008FACBFFF4D4 -:103F98002FF6F01F000D0836CC253008301CAAC8B3 -:103FA800C038E06C00FF2FCDD8320000000016A208 -:103FB80080037A4C80037CBC800094C480037F0813 -:103FC80080037F308000C19CD431203D3019149487 -:103FD800189674051788F2081800E0810085F6C75E -:103FE800FFFE1792C1700F89F0091800C1310F99AF -:103FF8003EE8F0091800C0E14BD890093008F009F4 -:104008001900C0844BB81AD74BBC1AD8F01F003B14 -:104018002FED4B789088EDB80002C0A14B581AD20A -:104028004B7C1AD61AD41AD8F01F00342FCD30384A -:10403800F0021800E08B005830064AD04AD1FAC383 -:10404800FFF8C4B80F88304AF4081800C4C10F99A3 -:104058000FA8B168F1E911880FB9F1E910880FC903 -:104068002FB7F3E810085807C1800F89301AF409F0 -:104078001800C1310F993EEAF4091800C0E180091F -:10408800300AF4091900C0941AD749BC1AD150282B -:10409800F01F001A2FED400850288089EDB9000262 -:1040A800C0911AD8497C1AD51AD61AD1F01F001314 -:1040B8002FCD5816C0805826C0B0069B0A9CF01F0A -:1040C8000012C0A8069B0A9CF01F0010C058069B4F -:1040D8000A9CF01F000F2FF60436CB553008301C11 -:1040E800A8C8C038E06C00FF2FDDD832000016A247 -:1040F800800378F080037CBC800094C480037F0830 -:1041080080037F308000CBC88000CA748000CA92C8 -:10411800D421FACD00884C6816979088EDB8000233 -:10412800C0B14C48201D1ADC1AD84C384C3C1AD85F -:10413800F01F00432FCD344A300BFAC6FFFC0C9C0D -:10414800F01F0040306AE06B00FFFACCFFDBF01F85 -:10415800003D0F8A31F8F00A1800E08B008930889A -:10416800EECBFFFFFB68003C0C9CF01F00370F896B -:10417800FB6900244AE89088EDB80002C0A14AE82B -:10418800201D4B2C1AD91AD61AD8F01F002D2FCD66 -:104198000F882FF8FAC6FFB810070C9C0E9B173A29 -:1041A800F01F002BFAC9FF780F88F20800083009C1 -:1041B800F169FFC049E89088EDB80002C0B10F88E6 -:1041C800201D1AD849C81AD64A2C1AD8F01F001C24 -:1041D8002FCD0F8A3018FAC7FFFC3089FACBFFB809 -:1041E8000E9CF01F001D581CC0C0491890093008CB -:1041F800F0091900C3C44908498C1AD81AD8C0E86C -:10420800497CF01F000F0E9C300BF01F001618970A -:10421800581CC080201D1ADC493CF01F00092FEDF6 -:10422800C268492CF01F00060E9CC238000016A276 -:1042380080037A248003787080037F50800094C4C0 -:104248008002E8BC8002E73680037CB08002EE0C76 -:1042580080037F648001908480037F7880037FA03F -:10426800800099A880037FB880037FC0E06C00FFBE -:104278002DEDD822D42120AD4A461697178A31F859 -:10428800F00A1800E08B002FFAC5FFF92FFB0A9CF3 -:10429800F01F001F0F88FAC9FFD8FB680027100914 -:1042A8003008F368FFDF8C88EDB80002C0814998B8 -:1042B8001AD5499C1AD8F01F00192FED300BFACCEB -:1042C800FFF9F01F00171897581CC1B048F890095B -:1042D8003008F0091900C1541ADC48E8491C1AD8FA -:1042E800C0D88C093008F0091900C0353FF7C098CC -:1042F800201D488848CC1AD83FF7F01F00082FED3A -:104308000E9C2F6DD8220000000016A28002E7360E -:10431800800378E080037B18800094C4800099A80B -:1043280080037D5480037FC4D431216D4D281697B6 -:104338009088EDB80002C0B14D08201D1ADC1AD8CB -:104348004CF84D0C1AD8F01F00502FCD321AFAC66F -:10435800FFFD300B0C9CF01F004D0F8A31F8F00A5E -:104368001800E08B0085EECBFFFF0C9CF01F004887 -:104378000F88FB6800234C089088EDB80002C081C4 -:104388004BF81AD64C3C1AD8F01F003F2FED0F8679 -:104398002FF6EE060006FAC7FFAC0C9B0E9C173AE8 -:1043A800F01F003D0D88FAC9FFA8F20800080E9C0E -:1043B8003003F163FFFCF01F00393038EFDCC00830 -:1043C8000D89F00718005FB53018F00918005F185C -:1043D80010450A94E6051800C4A1ECCBFFFDFAC30A -:1043E800FFDC2FE6069C0D8AF01F002B0D88FAC90A -:1043F800FFA8F2080008069BF165FFCCFAC5FFC0CC -:104408000A9CF01F002730D81896F00C18005F1986 -:104418003058F00C18005F18F3E80008E808180096 -:10442800C261FAC4FFB2306AE06B00FF089CF01F5B -:1044380000170C9B08990A9A0E9CF01F001A0E9CF4 -:10444800F01F0019300BFACCFFFDF01F0018581CA4 -:10445800C100489890093008F0091900C0844888BC -:104468001ADC493C1AD8F01F00082FEDE06C00FF59 -:104478002EADD832000016A280037888800379AC6C -:1044880080037F50800094C48002E8BC8002E73635 -:1044980080037FE48002EE0C8002DC2C80009868A8 -:1044A8008001927080019258800099A880037D5401 -:1044B800D401319CF01F0010E06B00EFFE7C280057 -:1044C800F01F000E581CC060FE7C2800F01F000C76 -:1044D800CFC0319CF01F000B48B890093008F00994 -:1044E8001900C0844898201D489C1AD8F01F00095C -:1044F8002FEDD8028000A3008000A7FA8000A7F261 -:104508008000A2E6000016A28003790880037FF0ED -:10451800800094C4D431202D3008FAC7FFF81696CD -:10452800189514930EE81694098B0A9C2FF4F01F23 -:104538000009581CC0B00E9B0A9CF01F0007089881 -:104548000C18E6081900CF13300C2FEDD8320000F4 -:104558008000A7FA8000A816D421202D30081496D0 -:10456800F80C002C129AFAC9FFF812E84A88F00CE5 -:10457800002C169578280C9B0A9C5D184A583049DF -:10458800319C9109F01F00249ABA0C9BFE7C2400F0 -:10459800F01F00221897319CF01F00214A189088BC -:1045A800EDB80002C0414A0CF01F002049D890889D -:1045B800EDB80002C0D149E8201D49EC1AD8F01F17 -:1045C800001B49D80A9C908BF01F001C2FED4958FE -:1045D8009088EDB80002C041499CF01F00144918AA -:1045E8009088EDB80002C0C14918201D491C1AD88E -:1045F800F01F000E9AFB0C9CF01F00102FED9A394B -:1046080049080E9CB0092FEDD8220000000011E0E7 -:10461800000011B88000A3008000451C8000A2E6BD -:10462800000016A080038008800094C480037800EE -:1046380080037C84000011BE80013DB48003800C9F -:10464800000011BCD431202D4BC43048E8C3FFF022 -:10465800BAF81897199616910C90F8C2FFFD2FC456 -:104668003005E21000400988EC081800C4B107883A -:104678003029F2081800C1F10A9C4B08EA05002508 -:10468800029AF00500240E9BE8C5FFF46839F01F74 -:10469800002CC030301CC4E868086A0A049B0FACC0 -:1046A8005D18BAFCE216004030181BF9F009180032 -:1046B800C3C1C3D85800E00A1700F9BA0100E8F8E6 -:1046C800FFFC049B0FAC5D18BAFC30190788F20890 -:1046D8001800C0B10A9C4998EA050025029AF0051D -:1046E80000250E9B6A39C0A83049F2081800C0A1FD -:1046F800029A0E9B0A9CFAC9FFF9F01F0011C170BB -:10470800C1882FF52EC42EC3E0450024CAD148D84D -:1047180090093008F0091900C08448B81AD648BC76 -:104728001AD8F01F000B2FED302CC048304CC02891 -:10473800300C2FEDD8320000000011E080004560F9 -:10474800000016A28003789880038010800094C42B -:10475800D421202D4BD8910C30094BD8118AF20A5C -:104768001800E08000DAB08930085018E1B800007D -:10477800EE180001F5D8C201C020D303FE7824004A -:104788003019706BF7D9D001916B706BF7D9D0C124 -:10479800916B706BF7D9D081916B580AC020D50303 -:1047A8004AC7FACAFFFC6E0B4ABCF01F002C1896C9 -:1047B800C6E04AB8303A6E09910A401B4A98161961 -:1047C800B009E06A03FFF4091900E0880005E06910 -:1047D8000400B0094A064A37EC0B000B4A2C8E8AB3 -:1047E800F01F002230084A2BAC8849FCF01F00213A -:1047F800584CC2204A089088EDB80002C0C149F858 -:10480800201D49FC1AD8F01F001F8E8B496CF01F21 -:10481800001E2FED49889088EDB80002C0D1497874 -:10482800201D497C1AD8F01F00174988490C908B25 -:10483800F01F00152FED4879300893084899B20801 -:1048480048799308C46800000000152C0000151C66 -:10485800000014B0000014B880002D70000011B8DA -:10486800000011BE00000DB88002E736000009B84C -:104878008000464C000016A0800379D880037C8411 -:10488800800094C480013DB4000011BCF01F0024D6 -:104898004A489008EC081900C0A44A3890881AD8E9 -:1048A8004A284A3C1AD8F01F00232FED4A289009BD -:1048B8003008F0091900C0644A084A1C909BF01F90 -:1048C80000214A19300893084A09B20849C9B28830 -:1048D800E06B0120FE7C0D80F01F001DE1B8000098 -:1048E800EE180001F5D8C201C020D303FE782400D9 -:1048F8003019705BF7D9D001915B705BF7D9D0C1E3 -:10490800915B705BF7D9D081915B580AC020D503C1 -:10491800319CF01F00102FEDD8220000800044B811 -:10492800000016A2000014B4800379D88003802CFC -:10493800800094C4000016A6000014B0000014B84B -:1049480080013DB4000011B8000011BE8000A20033 -:104958008000A300D431207D4B6730054B664B782F -:104968001188EA081800EC081710EE0817004B4CDD -:104978001AD8F01F00344B481188EA081800EC07D1 -:1049880017104B2C50074B2230074B23F01F002DDC -:104998000E942FED4B01CBD86A005800E08000B28E -:1049A80080286009201D1AD95028F01F002C602A81 -:1049B8002FFD580AE60A1700E20A171040185C781B -:1049C80060491AD84A681ADC1ADA4A6A5809F40996 -:1049D8001700F00917104A4C1AD91AD01AD61AD744 -:1049E800F01F001860482F8D5808C431E0C9FFBC7B -:1049F800720A580AC0E0744B201D49CC1ADB1ADA37 -:104A08001AD850595048F01F000F2FCD40084019B0 -:104A18002FF82FC95848CED161585808C610704988 -:104A2800493C1AD91AD8F01F00072FEDC598000085 -:104A3800800380548003805C000016AB8003806094 -:104A4800800094C400007B078003807400007B080A -:104A580080037BE480037BDC800096A880037DC410 -:104A680080037DC880038088800380B8800380D05D -:104A780061E85808C350F11900127008201D1AD8AF -:104A8800507850395028F01F002761EA2FFDF53B78 -:104A9800001040291AD940281AD81ADC4A2C1ADBE7 -:104AA8001ADA50B8F01F0021FACAFFE00C9B5084B4 -:104AB800FB5400240E9CF01F001E2FBD40305050A8 -:104AC8001AD0FB1800145028F01F00162FFD4018AC -:104AD8001AD81AD01ADC497CF01F00142FCD0E9C6E -:104AE800F01F001549594968580CF2081710201D85 -:104AF800494C1AD8F01F000D493CF01F000C2FED4F -:104B08002FF62FC55826FE91FF492FF75847C0505A -:104B1800E40700353006C41BF01F000C2FADD83257 -:104B2800800096A8800380E8800094C4800021C893 -:104B380080038114800070788003812C8003812891 -:104B480080038130800381408000D680D431204D9D -:104B58004BE812911896169711895809C1A119881E -:104B6800B6881998EA18FFFFE818FF80B6C9B69802 -:104B7800B6A93EE8B6B83048A2084B589088EDB8B8 -:104B88000002E08100E7201D4B284B3C1AD8C228C0 -:104B9800FACCFFF4F01F0031403366105800C1E131 -:104BA8000D88AE880D98EA18FFFFE818FF80AEA0C0 -:104BB800AE9830093EE8AEC9AEB83048A2084A48B7 -:104BC8009088EDB80002E08100C5201D4A184A4CC3 -:104BD8001AD8F01F00242FEDCBC858B0F9B0020A3C -:104BE80030044A12C0786408F004032C2FF4F01F34 -:104BF800001F641849C51034CF736A0C3004F01FC5 -:104C0800001B8B14661B580BC460A36B301CF01F71 -:104C180000188B0CC3A1497CC1486608F002030B3D -:104C28006A080408501B5008F01F00134008910C34 -:104C3800401B6A082FF4F002030C580CC20148FC10 -:104C4800F01F0008C2880000000016AA000016A283 -:104C58008003783C8003816080018F048003817C1D -:104C6800800094C4000015208002E28C8002DC3CA5 -:104C7800800381988002E2A4800381C0344AF01F37 -:104C880000376A182FF88B18E8021502344C66189A -:104C98001034CC430D88AE880D98EA18FFFFE81849 -:104CA800FF803005AE98AEA030364AD20A984AD96D -:104CB8000E93640AEA0B1502F40B030AF537002079 -:104CC800F4070B08ECCCFFFF2FF7E60C000C5C5741 -:104CD800300AE6060B07C0886404E80B0304E80AF8 -:104CE80007042FFA18C40E9EEE0A1900CF630E9A15 -:104CF8002FFAF4060006928A5C56EDBA0002C1D17A -:104D0800640A202DF40B0304503950281A9C306A89 -:104D1800E8CBFFDFF01F001168CA1ADAE93A003859 -:104D28001ADA491A1AD7491C1AD41AD51ADAF01FEE -:104D380000102F8D400840192FF50035CBB53EE8FF -:104D4800E6060B08069730080C07AE982FF6A20661 -:104D5800302C2FCDD83200008002E7360000152015 -:104D6800000016A28003783C800381E4800094C48C -:104D780048781188580CC0215EFF5C68100C300818 -:104D8800F9390015F00918005F1C5EFC00001530A9 -:104D9800D4211897580CC2A04968F129000030089E -:104DA800F2CA0004F00900065836F5D8E9062FF8CB -:104DB800EE06002C791C163CC17148F89088EDB8B5 -:104DC8000001C0A148D81ADB48DC1AD61AD71AD86D -:104DD800F01F000C2FCDF9D6C00830082F06EE06BC -:104DE80000278F18D8225848CDE1E06C00FFD82260 -:104DF80000001530000016A2800382688003830437 -:104E0800800094C4D42118971695580CC2B04978DC -:104E1800F12900003008F2CB0004F00900065836EA -:104E2800F7D8E9062FF8EE06002A751A580AC03096 -:104E38000A3AC16148E89088EDB80001C0A148D895 -:104E48001AD548DC1AD61AD71AD8F01F000C2FCD5D -:104E5800EE060027F9D6C008EF450044D822584886 -:104E6800CDD1E06C00FFD82200001530000016A25A -:104E780080038CF080038304800094C4D4211897A5 -:104E8800580CC2A049E8F12A00003008F4CC00040C -:104E9800F00A00065836F9D8E9062FF8EE06002978 -:104EA80073195809C170580BC0F049689088EDB85B -:104EB8000001C0A149481AD9494C1AD61AD71AD89C -:104EC800F01F00132FCDEE06002748D8B0866F1CC0 -:104ED800D8225848CDE1580BC10048A8900930089D -:104EE800F0091900C0A448881AD748AC1AD8F01F8E -:104EF8000008300C2FEDD822D82A00000000153009 -:104F0800000016A280038CB880038304800094C438 -:104F180080038324D4214CB816951188189730063D -:104F2800EC081800E08000B6300BF01F004718941A -:104F38005807E0800097580C5F19EC0518005F08C7 -:104F4800F3E81008EC081800E080008C4BF8908813 -:104F5800EDB80002C3314BE811894BE89088EDB8F1 -:104F68000001C2C15C69EE09002871185808C041E7 -:104F7800109E1096C098EE09000AF53E0015F2CA78 -:104F8800FFF8EE0A03266F5A201D580AF40C170082 -:104F9800F5FC10045808F00B1700F1FB10041ADE9A -:104FA8001AD61ADC1ADA1ADB1AD84AB81AD74ABC3F -:104FB8001AD91AD8F01F002A2F6D5805C3D068488F -:104FC80058485F1958085F181268C3304A08118991 -:104FD8004A089088EDB80001C2C15C69EE09002852 -:104FE80071185808C04110951096C098EE09000A2B -:104FF800F5350015F2CAFFF8EE0A03266F5A201D90 -:10500800580AF40C1700F5FC10045808F00B1700A8 -:10501800F1FB10041AD51AD61ADC1ADA1ADB1AD8D8 -:1050280048D81AD748DC1AD91AD8F01F000D2F6DA6 -:10503800E93C0013D8226F58F13C0013D822000035 -:10504800000016AB80004E84000016A80000153042 -:10505800000016A28003828C80038348800094C4D9 -:1050680048D890093008F0091900C1345807EE08EB -:105078001700EE041700EFF810151AD848781AD45C -:10508800487C1AD71AD8F01F0007300C2FCDD82229 -:10509800D82A0000000016A88003828C8003838C25 -:1050A800800094C4D421580CC25049D8F12900007A -:1050B8003008F2CA0004F00900075837F5D8E907A4 -:1050C8002FF8F807002E7D1E163EC12149589088FA -:1050D800EDB80001C0A149481ADB1AD71ADC493CCF -:1050E8001AD8F01F00132FCD0E9C5C5CD8225848AC -:1050F800CE31490890093008F0091900C045E06C24 -:1051080000FFD8224888201D1ADB1ADC48AC1AD8C0 -:10511800F01F0007E06C00FF2FCDD82200001530EB -:10512800000016A6800382BC80038304800094C418 -:10513800000016A2800383C0D421580C5F18580BB6 -:105148005F1918961695F3E800081494C590580A44 -:10515800C5704AC89088EDB80001C0C114985C7841 -:10516800201D1AD84A881ADB4A8C1AD8F01F002842 -:105178002FCD4A889088EDB80001C0D14A28201D5B -:105188004A5C1AD8F01F0022089B0A9C5C7BF01F1F -:1051980000232FED300A5C74149C089BF01F00203C -:1051A8001897C0E149789008F8081900C29449682E -:1051B8001AD649CC1AD8F01F00162FEDC1C8089A84 -:1051C8000A9B781CF01F00180E9B6DECF01F00174F -:1051D8005C5CC12048B890093008F0091900C08407 -:1051E80048981AD6492C1AD8F01F00092FED0E9CA2 -:1051F800F01F0010DC2A0E9CF01F000EDA2ADC2AB1 -:10520800000016A280038CE4800383E8800094C425 -:10521800000016A080037C8480013DB48000D31870 -:10522800800383FC8002E7368001153880038428D8 -:105238008000D13CD421149518971696580CC0417B -:10524800E06C00F6D822F01F00163FF8E9DCC00831 -:10525800F0041800C041E06C00FFD822491890887B -:10526800EDB80001C0E16C48201D1AD848E85C651B -:1052780048EC1AD51AD61AD71AD8F01F000D2FAD38 -:105288006C4858485F0948B8B0893008EE040004F3 -:10529800E9680068F01F00088F7CD82A800050ACAD -:1052A800000016A280038D1080038450800094C4EF -:1052B80000007B0780009504D43118971695F01FDD -:1052C80000353FF8EDDCC008F0061800C5E0EE0632 -:1052D80000083009F1690015ECC8FFF8EE0803244E -:1052E8005804C5304AC89088EDB80001C0A14AB832 -:1052F800201D4ABC1AD41AD41AD8F01F002A2FCD60 -:10530800EB1800726EF91238F20817B00838F0047A -:1053180017804A589088EDB80001C051F01F00234B -:105328004A38910CECC8FFEA3019EE08032B089AAA -:105338000A9C5C7AF01F001FE7DCC008C19049A8EE -:105348009088EDB80001C0F16A48201DF3D3B00879 -:105358001AD91AD41AD849181AD5497C1AD8F01F5C -:1053680000112FAD0C073008EF680015C10830197F -:10537800ECC8FFF8EE060006ED690015EE080329F3 -:105388000819EE080929C038E06300FF069CD832E6 -:10539800800050AC000016A680038C7880038474CB -:1053A800800094C4000016A2800095040000153403 -:1053B800800109C08003848CD43116941493189703 -:1053C800580CC1014AB89008F8081900E08400D3C5 -:1053D8004A98201D4A9C1AD8F01F00293FFC2FED3F -:1053E800D832300BF01F0027189B18960E9CF01F20 -:1053F80000263FF8EBDCC008F0051800E08000BB91 -:105408004A289088EDB80001C0E1F1D3C010201DF2 -:105418001AD849981AD449EC1AD61AD71AD8F01FAC -:1054280000182FAD49B89088EDB80001C0D14928BF -:10543800201D499C1AD8F01F0012F7D3C010089CF1 -:10544800F01F00162FED49189088EDB80001C4B17F -:105458004938118948789088EDB80001C4415C69E1 -:10546800EE09002871185808C1C11092109EC21880 -:10547800000016A280038D20800384C0800094C49D -:1054880080004E84800050AC000016A6800384D8AB -:10549800000016A080037C8480013DB40000153014 -:1054A800EE09000AF5320015F2CAFFF8EE0A032EDB -:1054B8006F5A201D580AF40C1700F5FC1004580800 -:1054C800F00B1700F1FB10041AD21ADE1ADC1ADAF4 -:1054D8001ADB1AD84A881AD74A8C1AD91AD8F01F50 -:1054E80000282F6D5806C46058045F183009F2036D -:1054F80019005F1AF5E80008F2081800C3B0EAC8F6 -:10550800FFEAEE08032C580CC3506C4858785F0B20 -:1055180058485F0AF7EA100AF20A1800C0515828DA -:10552800C0305838C2715C73089B069AF01F00158A -:10553800EAC9FFEA300AEE090328F0030B0A4928F2 -:105548009088EDB80001C0A1EE0903281AD848A830 -:1055580048EC1AD8F01F000A2FED48DB0C9C2F8569 -:10556800EE050923F01F000B0C9B0E9CF01F000A90 -:10557800DA3ADC3A80038D2080038348800094C4A3 -:105588008002E736000016A6800384FC800055A040 -:105598008000D662800052C0D431149518971696B0 -:1055A800580CC041E06C00F6D832F01F001D3FF8DF -:1055B800E9DCC008F0041800C041E06C00FFD832F4 -:1055C8003009EE040008F16900683019F169001526 -:1055D80049489088EDB80001C171E8C8FFF8EE08A5 -:1055E8000323F01F00114918201D1AD37008F8086A -:1055F80001081AD848E85C7548EC1AD51AD61AD8A2 -:10560800F01F000D2FAD2F84EE04032C580CC06042 -:105618000C9B0E9CF01F0009300CD832800050AC57 -:10562800000016A2800095040000153480038D50F8 -:1056380080038508800094C4800052C0D421189744 -:10564800580CC1C0F01F000E18965BFCC060EF3B01 -:10565800000B5C5CF01F000B48B89088EDB80001A7 -:10566800C0A148A8201D48AC1AD61AD71AD8F01FCE -:1056780000092FCD30094888B089D82280002044FD -:1056880080002068000016A280038D3C80038538C6 -:10569800800094C400007B07D4314898189711897A -:1056A80048889088EDB80001C3015C69F8090028B2 -:1056B80071185808C08110951096C0D80000153090 -:1056C800000016A2F809000AF5350015F2CAFFF81D -:1056D800F80A03266F5A201D580AF40C1700F5FC27 -:1056E80010045808F00B1700F1FB10041AD51AD64D -:1056F8001ADC1ADA1ADB1AD84C281AD74C2C1AD901 -:105708001AD8F01F00422F6D0E9C3005F01F004084 -:10571800EEC6FFBC0A924BF34BA45C5CF01F003E44 -:105728006C08300B2FF5109C5808C1D0F01F003BB7 -:105738006C0C300BF01F003A6C0C300BF01F00396A -:105748006C0C300BF01F00388688EDB80001C0B132 -:10575800201D1AD26C0870484B4C1AD81AD4F01F66 -:10576800002B2FCD2FC65845CDC16F5C580CC1D02A -:10577800300BF01F002A300B6F5CF01F002D6F5CA0 -:10578800F01F002C4A385C5C9088EDB80001C0D14D -:10579800201D5C6C1ADC6F5870481AD849984A6CFE -:1057A8001AD8F01F001A2FCD6FEC580CC060F01FEC -:1057B80000236FECF01F00224A28F1260000495808 -:1057C8009088EDB80001C0E1ECC8FFEAEE080328B4 -:1057D800201D1AD848B81AD649BC1AD8F01F000B91 -:1057E8002FCD2EA6EE06032C580CC060F01F001714 -:1057F8003008EE0609280E9CF01F0014D83200006D -:1058080080038CC880038348800094C480002044AF -:10581800000016A280006F288000D6588000D6624B -:105828008000D65C8000D668800385608000D66ED4 -:105838008000E50480038588800111C88001122852 -:1058480000001530800385B08002E28CD4211897BF -:10585800580CE080007EF01F00413FF8EDDCC008E6 -:10586800F0061800C750EE0600287114089CF01FB7 -:10587800003CEBDCC008C0D10A9B089CF01F003933 -:105888000A9B089CF01F00380A9B089CF01F0037F1 -:105898004B789088EDB80001C0D1F1D5B0081AD87E -:1058A80068481AD84B381AD44B3C1AD8F01F003322 -:1058B8002FCD4AF43FF8F0051800C1718809300867 -:1058C800F0091900C0D4EE0600287118201D1AD856 -:1058D8004AB81AD64ABC1AD8F01F00282FCD0C0790 -:1058E8003018EF68006CC368EE0600083009F169EB -:1058F800006CEE0600280E9C711BF01F00238888A0 -:10590800EDB80001C0E1ECC8FFEAEE080328201D4D -:105918001AD849B81AD649DC1AD8F01F00182FCD62 -:105928002EA6EE06032C580CC060F01F0019300894 -:10593800EE06092848E89088EDB80001C0B149088A -:10594800201D494C1AD8F01F000D2FEDC038E06516 -:1059580000FF0A9CD8220000800050AC8000E504BB -:105968008000D6588000D6628000D65C000016A25F -:1059780080038D2C800385CC800094C480038CD850 -:10598800800385F880004D98800385B08002E28C02 -:1059980080038624D4211897580CC0E14BE890085E -:1059A800F8081900C7744BD8201D4BDC1AD8F01F13 -:1059B800003D2FEDD82278264BB85806C121F12595 -:1059C8000000F01F003A0E9CEF34000BF01F003867 -:1059D800089B5C5CF01F00370A07EF660068D82256 -:1059E80011894AD89088EDB80001C2C15C69F809EC -:1059F800002871185808C04110951096C098F809E9 -:105A0800000AF5350015F2CAFFF8F80A03266F5A9E -:105A1800201D580AF40C1700F5FC10045808F00B68 -:105A28001700F1FB10041AD51AD61ADC1ADA1ADB99 -:105A38001AD849A81AD74A0C1AD91AD8F01F001927 -:105A48002F6D4998F1260000ECC5FFF0EE05002502 -:105A58006A1C580CC1F078485898C1C05808C1A0B1 -:105A6800F01F001648C85C5C9088EDB80001C0C102 -:105A7800201D5C6C1ADC6A181AD84888490C1AD898 -:105A8800F01F00082FCDEE0600260E9C6D1BF01FA0 -:105A9800000DD822000016A2800382988003864455 -:105AA800800094C400001530800056A08000204477 -:105AB800800020688003834880010CEC8003865CAA -:105AC80080005854D4214B0818979009169630082E -:105AD800F0091900C0F44AD8F12800001AD8F1DBFF -:105AE800B0081AD84AA81ADC4AAC1AD8F01F002AFB -:105AF8002FCD4AA811893008F0091800C0414A8CF6 -:105B0800F01F00253FB8F0061800C3C15807C110A0 -:105B180049E830091188F2081800C0B53039F20890 -:105B28001800E08900075C68EE080028711BC0288F -:105B3800300B0E9CF01F001B49389088EDB800010F -:105B4800C1114928F1280000201DF0C9FFEAEE091B -:105B580003291AD91AD848E8493C1AD8F01F000E68 -:105B68002FCD48A6ED2800002EA8EE08032C580CCF -:105B7800C090F01F000EED28000030092EA8EE0896 -:105B88000929D822000016A200001530800382A837 -:105B980080038680800094C4000016AB800386B41E -:105BA80080004D98800385B08002E28CD42118973C -:105BB8001696580CC4E04A8890093008F009190074 -:105BC800C0C4F1DBB0081ADC1AD84A481ADC4A4CBF -:105BD8001AD8F01F00242FCD4A3811893008F0094F -:105BE8001800C0414A1CF01F001F3FB8F0061800FB -:105BF800C301499890093008F0091900C084497810 -:105C08001AD749BC1AD8F01F00172FED0E9CF01FA9 -:105C180000194998F126000048F89088EDB800016D -:105C2800C0E1ECC8FFEAEE080328201D1AD848B8DE -:105C38001AD6492C1AD8F01F000B2FCD2EA6EE0627 -:105C4800032C580CC060F01F000E3008EE0609281F -:105C5800D8220000000016A2800382D0800386C8E4 -:105C6800800094C4000016AB800386B4800386F8D5 -:105C78008000564400001530800385B08002E28C15 -:105C8800D4311897149678CC94CAF80A000A8FCAA7 -:105C98001093169512946E385808C1504A5CF01F3C -:105CA8000026EF18001A3509F0090D083008F00928 -:105CB8001900C0414A1CF01F0020EF08001A2FF8F5 -:105CC800EF58001A49E89088EDB80001C171202DFD -:105CD800304A1A9C089BF01F001BF01F001BEF386E -:105CE8000014F3D3C01050091ADC1AD849781AD610 -:105CF800497C1AD8F01F00102FAD0A9AEF3B001408 -:105D08000C9CF01F001409890998B168F1E9118801 -:105D180009A9F1E9108809BBEF3C0014F5D3C010BC -:105D2800104BF01F000D0C9CF01F000CD832000027 -:105D380080037FB4800094C4800384D4000016A23A -:105D48008002E736800096A88003827C800387184B -:105D580080007130800020088000D13CD431204D73 -:105D6800502C503BFAC4FFCC10916800681268238D -:105D780068386846129568545819E088000E4B58E0 -:105D880090093008F0091900E08402B0201D4B2862 -:105D98004B2C1AD8C2F85801C0C14AE89008E2084A -:105DA8001900E08402A3201D4AB84ADC1AD8C22888 -:105DB8005802C0C14A789008E4081900E0840296A5 -:105DC800201D4A584A7C1AD8C158501A500837CB57 -:105DD800301CF01F0025401A18974008C10149D807 -:105DE8009008F8081900E0840281201D49A849FCA0 -:105DF8001AD8F01F001F2FEDE08F0278402999383C -:105E0800B829300840395C729900B831992599DA77 -:105E180099E999F29943F9480050F9480044F9483A -:105E28000048F948004C5803E080008C3058F95875 -:105E38000074F01F0010EF4C00784865580CC1D171 -:105E48008A08F8081900E084020C1AD748A8C8582C -:105E5800000016A280038CA880038744800387640F -:105E6800800387848002DC3C800387A8800094C478 -:105E780080011200800382F88A88EDB80001C131E0 -:105E88006E08201D8EA51AD8F01F00366FE8500541 -:105E98001ADC1AD84B481AD84B484B5C1AD8F01F52 -:105EA80000352FAD6E258EAA6FEC5805C1210E9BCB -:105EB800F01F00315C5CC2504B089008EA081900DA -:105EC800E08401CF1AD74A984ADC1AD8E08F0175C6 -:105ED8004ACBF01F002DF5DCC008C0E04A789009D5 -:105EE8003008F0091900E08401BC201D5C6A49F8FB -:105EF8001ADA1AD7C499EF3C0014149BF01F002338 -:105F08006FEC0E9A4A2BF01F002349C8908CE21CB4 -:105F18000002E08001A76FE8F11900141AD970197E -:105F28001AD9F11900121AD970081AD848E81AD8DB -:105F380048E8499C1AD8F01F000F2FADE08F018F59 -:105F4800F01F00161892C2F148C89008F808190006 -:105F5800E08401871AD749281AD8492CC2D90000E9 -:105F6800800096A88003825C800382F88003880CF6 -:105F7800800094C480011320000016A280038824A6 -:105F88008003B409800112608000200880005C88CA -:105F9800800111F8800388848000E34080038C6CC2 -:105FA800800387E04B880E9BB083F01F0038EF63B7 -:105FB800006FEF63006CEF63006DEF63006E6E2897 -:105FC8004B355808E08100BD049B0E9CF01F003142 -:105FD800E7DCB0086EFCF01F0030E6C8FFEAEE0808 -:105FE800092C8A88EDB80001C0A14AC8201D1ADC16 -:105FF8004ABC1AD31AD8F01F002B2FCD2EA34A451E -:10600800EE0303285808C0B18A09F0091900E08492 -:1060180001281AD74A184A4C1AD8CCE84A3B049C9B -:10602800F01F00234A3B049CF01F00234A3B049CBA -:10603800F01F0023304A4A3B049CF01F00234A38D3 -:106048003009B0898A88EDB80001C0C1EE03032881 -:10605800201D1AD849181AD249DC1AD8F01F001185 -:106068002FCD4898118948A89088EDB80001C5310E -:106078005C69EE09002871185808C2B11093109590 -:10608800C3080000000015308000D658000016A292 -:1060980080004E0C8002E2A480038C6C800388A8E8 -:1060A800800094C4800388C480005BB48000D668F4 -:1060B800800069888000D65C800055A08000D66288 -:1060C800800067B48000D67200007B07800388F4E4 -:1060D800EE09000AF5330015F2CAFFF8EE0A0325A7 -:1060E800201D5808F00B1700F1FB10046F5A580ACE -:1060F800F40C1700F5FC10041AD31AD51ADC1ADAB6 -:106108001ADB1AD84B681AD74B6C1AD91AD8F01F51 -:1061180000362F6D049C4B598EAA0E9BF01F00343D -:106128005C5CE080009F4B3890093008F00919004A -:10613800E08400971AD74AA84AFC1AD8C3D88A8894 -:10614800EDB80001C0F1301B0E9CF01F002C6F58F9 -:106158001ADC1AD84A281AD74A9C1AD8F01F0022E3 -:106168002FCD8EAA4A7B049CF01F00275C5CC120BF -:106178004A0890093008F0091900C724201D5C6CF2 -:1061880049781ADC1AD71AD84A0CF01F00172FCDF5 -:10619800C678049CE06B00FFF01F001DEF4C005414 -:1061A8004945580CC0D18A08F8081900C5941AD76F -:1061B80048B8498C1AD8F01F000C2FEDC5188A88EA -:1061C8004959E21800021389C4505C69EE09002895 -:1061D80071185808C2211095109BC27880038C6CE6 -:1061E80080038348800094C48000523C8000E350C0 -:1061F800000016A28003891080004E84800389382D -:106208008003B4098000D7708003884C8000DC04C8 -:106218008003896400001530EE09000AF535001581 -:10622800F2CAFFF8EE0A032B7843201D5808F00A3B -:106238001700F1FA10041AD51ADB1AD31ADC1ADA85 -:106248001AD84AC81AD74ACC1AD91AD8F01F002B1C -:106258002F6D4ABB6F5CF01F002B300CC0283FFC31 -:106268004A95580CC0E08A093008F0091900C3A4FF -:106278004A68201D4A6C1AD8F01F00202FEDC32849 -:106288008A88EDB80001C2914A284A396E204A31FD -:106298005800F2001700F00017108E226E484A09C5 -:1062A8006EF35808F20117108E355818C0316FEC8C -:1062B800C058301B0E9CF01F001B49481AD05C7256 -:1062C8001AD15C751AD21AD31AD51ADC496C1AD7A6 -:1062D8001AD8F01F000A2F8D8907EF660014300CBA -:1062E800C0580E9CF01F00113FFC2FCDD832000083 -:1062F80080038C6C80038348800094C480006434DD -:106308008000D66E000016A280038CA880038988BE -:1063180080037BDC80037BE480037DC880037DC42D -:1063280080004E84800389A8800056A0D431203D87 -:10633800300730194B38E06504001892169191091E -:10634800E06007D00A9350070E964AF4C22826CC7C -:1063580058ACE08B001F4ADEFC0C032F3016C198A6 -:106368003006C178680CF01F002AE7DCB010C118AD -:1063780030185008C0E8680CF01F0025EBDCB0109E -:10638800C0883017C068680CF01F0021E1DCB0102D -:106398004A0A029B049CF01F00205BFCCD91580622 -:1063A800C161498870080438C0A4E208032BFACCFC -:1063B800FFF8F01F001A402B580BC0A14988201D78 -:1063C800498C1AD8F01F00182FEDC198300B502BAC -:1063D800F1D5C0100C99FAC5FFFC300650161AD535 -:1063E8001AD6402E5C731ADEF9D0C0101AD70C9A50 -:1063F8001AD31ADB0C9BF01F000D2FAD2FDDD83AF6 -:1064080000007AB800007AC0800382208002DC2C69 -:10641800800389E08002E278800098FC0000000C8C -:10642800800389EC800094C480005D64D4211897AF -:106438001696580CC041E06C00F6D8224C1890888B -:10644800EDB80001C0A14C08201D1ADB1ADC4BFC7A -:106458001AD8F01F003F2FCD4BA89088EDB8000147 -:10646800C0F16C481AD8ED1800241AD8ED18001C91 -:106478001AD84B584B7C1AD8F01F00352FCD0C9BDF -:106488000E9CF01F0035EDDCB008ECC8FFEAEE0802 -:1064980003285808C0804B18201D4B1C1AD8F01F21 -:1064A800002C2FED6EFCF01F002FECC8FFEAEE0861 -:1064B800092C4A489088EDB80001C0A14A28201D3F -:1064C8001ADC4A9C1AD61AD8F01F00212FCDECC826 -:1064D800FFEAEE0803285808C10149A99209F00902 -:1064E8001900C08449881AD74A0C1AD8F01F001816 -:1064F8002FEDE06C00FFD8220E9B2F06EE0600263B -:106508006C1CF01F001B49BB6C1CF01F001B49BB17 -:106518006C1CF01F001B6C1C304A49ABF01F001AA2 -:106528000E9CF01F001A583CE08B00075C5C300A98 -:106538000E9BF01F0017F01F00178F7CD82A000051 -:10654800000016A2800382E8800389F0800094C4CA -:1065580080038A1480004E0C80038A3880039DC013 -:106568008002E2A4800388A8800388C48000D658EB -:10657800800069888000D65C80005ACC8000D6688C -:106588008000659C8000D6728000204480002A002C -:1065980080009504D43118971695580CC041E06CCA -:1065A80000F6D832F01F00473FF8EDDCC008F006CF -:1065B8001800C041E06C00FFD832ECC8FFF8EE08C4 -:1065C80003285808EFD6E108F1F91868F7B901FF70 -:1065D800F1F91E68EE0600083049F1380068F20843 -:1065E8001800E088001E4B89920A3009F20A190047 -:1065F800C0A41AD84B581AD74B5C1AD51AD8F01F12 -:1066080000352FCD0C070A9C3006301BEF6600685A -:10661800F01F0031E06C00FBEF66006CD8325805C3 -:10662800C1504AE89088EDB80001C101EAF800A815 -:106638001AD8EAF8009C1AD8EB3800AD1AD84A38AC -:106648004A7C1AD8F01F00232FCDECC8FFF8EE08BB -:1066580003245804C1D049C89088EDB80001C1810D -:10666800EE060008301BF1330068F132006C0E9C16 -:10667800F01F001C4958201D1AD41AD21AD31AD751 -:106688001AD51ADC498C1AD8F01F00122F8D0A9BD4 -:106698000E9CF01F0016EE0600033002E738006C6F -:1066A800E4081800C7100A9CF01F00113FF8E9DC45 -:1066B800C008F0041800C1D13018E768006CC4A8FD -:1066C800800050AC000016A280038C8C80038A4C9A -:1066D800800094C48000E124000016A880038A7C0E -:1066E80080004E8480038AB0800052C08000E50498 -:1066F800EE060028E762006C711B0E9CF01F002359 -:106708004A389088EDB80001C0E1ECC8FFEAEE080D -:106718000328201D1AD849F81AD649FC1AD8F01FA0 -:10672800001F2FCDECC3FFEAEE03032C580CC0600A -:10673800F01F001B3008EE03092849589088EDB86F -:106748000001C0814938201D496C1AD8F01F001378 -:106758002FED48F89088EDB80001C1610E9C301B00 -:106768000C07EF37006CF01F001048A81AD65C64BD -:106778001AD41AD71ADC48DC1AD51AD8F01F000721 -:10678800300C2FADD832D83A80004D98000016A2B0 -:1067980080038C8C800385B0800094C48002E28CD6 -:1067A8008003862480004E8480038AF0D4311897B1 -:1067B8001695580CC041E06C00F6D832F01F003E28 -:1067C8003FF8EDDCC008F0061800C041E06C00FF9F -:1067D800D8324BA89088EDB80001C1A1EE06000898 -:1067E800F1340068F133006C4B58301B11820E9C59 -:1067F800F01F00344B48201D1AD21AD31AD41AD7C6 -:106808001AD51ADC4B1C1AD8F01F00312F8DEE0652 -:1068180000083009F13A006CF20A1800C060F1393A -:1068280000682FF9F1690068EE060008F134006885 -:106838003088F0041800E08800224A68900930087F -:10684800F0091900C104301B0E9CF01F001E49E816 -:10685800201D1AD41AD71ADC49FC1AD51AD8F01FE9 -:10686800001C2FAD30080C070A9CEF680068301B2D -:10687800F01F001AE06C00FBD83249181189300863 -:10688800F0091800C0500A9B0E9CF01F0015EE0678 -:1068980000043008E939006CF0091800C6100A9C99 -:1068A800F01F00103FF8F00C1800C1D13018E9684B -:1068B800006CC3E8800050AC000016A800007B07FD -:1068C80080004E848003824C80038B2C800094C40B -:1068D800000016A280038B6C8000E124800052C067 -:1068E8008000E5040E9CF01F001F49F89088EDB861 -:1068F8000001C0E1ECC8FFEAEE080328201D1AD801 -:1069080049A81AD649AC1AD8F01F001A2FCDECC4E2 -:10691800FFEAEE04032C580CC060F01F0017300883 -:10692800EE040928EE0600083009F169006C48E811 -:106938009088EDB80001C1410E9C301BEE060006A0 -:10694800ED37006CF01F000D48881AD71ADC48CCC8 -:106958001AD51AD8F01F0007300C2FCDD832D83AE4 -:1069680080005644000016A28003824C800385B044 -:10697800800094C48002E28C80004E8480038B984F -:10698800D4311294580A5F1830091497F204180089 -:106998005F0318961695E7E80008F2081800C55036 -:1069A800335CF01F00406CC98EC8F20800088DC81F -:1069B8006C385808C0614BC89088EDB80001C231E6 -:1069C8004BA89088EDB80001C0918EC81AD84B88A2 -:1069D8004B8C1AD8F01F00382FED4B889088EDB8F3 -:1069E8000001C0C14B28201D4B5C1AD8F01F003293 -:1069F8008ECB6E1CF01F00332FEDED08001A2FF818 -:106A0800ED58001A0A9AED3B00140E9CF01F002E58 -:106A18004A689088EDB80001C1218EC8201D1AD897 -:106A28001ADCED38001430091AD91AD71AD51AD831 -:106A380049F84A6C1AD8F01F00202F8D0E9CF01FC1 -:106A48000024335CF01F002358075F081063C160FF -:106A580049689088EDB80001C0C1201D1AD5ED38ED -:106A680000141AD8492849CC1AD8F01F00132FCD82 -:106A78000A9B0C9CF01F0019C1385804C11048B873 -:106A880090093008F0091900C0B44898201D5C64CA -:106A98001AD7493C1AD41AD8F01F00072FCDD83A74 -:106AA8008000A300000016A6000016A280038C98A0 -:106AB80080038BC8800094C4000016A080037C84E7 -:106AC80080013DB48000713080038BD88000D13CB8 -:106AD8008000A2E680038C108000585480038C3C10 -:106AE800D42148C8189716969088EDB80001C0A11F -:106AF8004898201D1ADB1ADC488C1AD8F01F0008A9 -:106B08002FCDF7D6C0100E9CF01F0006D82200002B -:106B1800000016A280038D0480038C50800094C46A -:106B28008000D984D4213007C1B80C9C0E9B2FF665 -:106B3800F01F000D1895C0F078485808C0C1F01F24 -:106B4800000B0A9CEB35000BF01F00090A9B5C5CEC -:106B5800F01F00085846CEA12FF75827C03030063E -:106B6800CE5BD82280002024800056A080002044DC -:106B780080002068D4214978F00C07085808C071B3 -:106B88004959F20C070AF00A1800C1F04929F20C19 -:106B9800070AF4081800C1904909F80C001CF0080D -:106BA8000017A567EE0C0027120748D99289EDB99E -:106BB8000004C0C11AD848B81ADA48BC1AD71AD87B -:106BC800F01F000A2FCDC02830070E9CD8220000E5 -:106BD8000000153C0000153800007B2C000016A6AC -:106BE8008003901080038DE0800094C4D421169710 -:106BF8001496F01F0005C0609828AC087808301C6F -:106C08008F08D82280006B7CD43149B849B91092DA -:106C1800F00C0708F20C070718961AD7498C1AD8EF -:106C2800EC060014F01F001749732FEDA36431E53B -:106C3800EE070018A568E8080008E60800087009CB -:106C48005809C0C090BA90AB1ADB1AD9702848FC12 -:106C58001AD81ADAF01F000B2FCD2FF7E406070811 -:106C68005C57EE051800F9B70000EE081800CE11C1 -:106C7800D8320000000015380000153C80038DF460 -:106C8800800094C400007B2C80038E0CD431201D1E -:106C98004A181896F00C07073005F80C001849F048 -:106CA800A36849F149F231E349F4EE070019A569EF -:106CB800F0090009E0090009720A580AC1D0923B9C -:106CC800922A8289F40B010CE2190010F8050005DC -:106CD8005C855809C1105C7B5C7AF3D5C010201D17 -:106CE800492C1AD91ADB1ADA1AD61AD25068F01FA8 -:106CF80000102FAD40082FF7E80607095C57EE0390 -:106D08001800F9B70000EE091800CD010A9C2FFD04 -:106D1800D83200000000153C00007B2C000016A6AD -:106D280080038DA00000153880038E28800094C44D -:106D3800D421F01F000B48B8EFDCB0109088EDB8F4 -:106D48000004C0A10E985C781AD84878487C1AD8F4 -:106D5800F01F00072FED0E9CD822000080006C94D5 -:106D6800000016A680038D7080038E4C800094C4AA -:106D7800D4214A181897169631D9F20C1800E088D1 -:106D8800000F90093008F0091900C33449B81ADC1B -:106D980049BC1AD8F01F001B2FEDD822F60B001A99 -:106DA8009088F80C0019E2180010A569F20A002969 -:106DB800495AF40903055808C0A04908201D1ADCDF -:106DC800492C1AD51AD8F01F000F2FCD0A9CF01F96 -:106DD80000103008EC060016EE07001748A9A56752 -:106DE800EE060026F20600068D288D08AC28AC3881 -:106DF800D8220000000016A280038DD080038E6880 -:106E0800800094C400007B2C80038E888002E28C72 -:106E1800D4314948F80C00121896F00C0707A36201 -:106E2800491331E44915EE070018A568E40800087D -:106E3800E60803085808C0500E9C0C9BF01F000C75 -:106E48002FF7EA0607085C57EE041800F9B70000A8 -:106E5800EE081800CE914839300CF2060B08D832EB -:106E68000000153C00007B2C0000153880006D7870 -:106E7800D4211897580CC0E14A189008F80819004E -:106E8800C3C44A08201D4A0C1AD8F01F00202FED51 -:106E9800D82249FAF40B070CF8CEFFFFF80C001CB7 -:106EA800A56CF40B0B0E3008F60B0019F809002935 -:106EB800498CF809000993289308B228B23831E9B7 -:106EC800F20E1800C031F40B0B0848D89088EDB8C2 -:106ED8000004C10148E8F00B07081AD848E8F00B8D -:106EE80007081AD848781AD748CC1AD8F01F0007CC -:106EF8002FCD0E9CF01F000AD8220000000016A219 -:106F080080038D8480038E98800094C40000153C13 -:106F180000007B2C0000153880038DE08002E28C95 -:106F2800D42118970E9CF01F0005C060780C0E9BAA -:106F3800F01F0003CF8BD82280006B7C80006E7816 -:106F4800D421496818971696149512949088EDB82C -:106F58000001C0C14928201D1AD91ADA1ADB1ADC27 -:106F6800490C1AD8F01F00102FAD301B0A9CF01FD7 -:106F7800000FC080301B0A9CF01F000C784858088E -:106F8800C0510C9B0E9CF01F000A5804C0500A9B6D -:106F9800089CF01F0008D822000016A280038D600C -:106FA80080038EAC800094C48000202480006AE8AE -:106FB80080006E78D4211897F01F00061898C02119 -:106FC800D8220E9A782C700990ABF01F0003DA2AA9 -:106FD80080006B7C80006F48D42116961494189515 -:106FE800F01F001E1897C021D8229838982B7809CE -:106FF800F6081900C2B2F5D8C0105804C050F20AF9 -:107008000708AC88C068F20A0709AC892FF8B838B5 -:1070180049389088EDB80004C0D10D881AD86E0898 -:107028001AD88EB81AD848F848FC1AD8F01F000F9A -:107038002FCD8E3B8E28F6081900C0710A9A5C7B0A -:107048006E2C6E09F01F000ADA2A0A9A5C7B782CEB -:10705800F01F0007D82A000080006B7C000016A6ED -:1070680080038D9080038ED4800094C480006F4884 -:10707800D4211897F01F00231896C021D8224A2837 -:107088009088EDB80004C0D178081AD898A81AD802 -:107098008CB81AD849D849EC1AD8F01F001E2FCD41 -:1070A8008C398C28F0091900C020DA2A49A8908860 -:1070B800EDB80004C1614998201DF0070709498807 -:1070C8001AD9F00707081AD8F20818005F191AD950 -:1070D8006C081AD848D8493C1AD8F01F000E2FADB2 -:1070E8006C2C6C090E9A8CABF01F000F48C8F00787 -:1070F800070948A8F0070708F00918005F1CD822FC -:1071080080006B7C000016A680038DBC80038EE88F -:10711800800094C4000016A2000015380000153C39 -:1071280080038F0080006F48D43118951697149308 -:10713800580CC0311894CBD8F60B001A4A58F00BEB -:107148000708F0080019A569F20A00294A2AF40973 -:1071580003095809C1604A1A940B300AF40B190044 -:10716800C0A4201D1AD849E81AD949EC1AD8F01F2A -:10717800001E2FCD49780E9BF007070CF01F001B4F -:10718800301B8ACCF01F001A18961894E0800092E1 -:10719800189B30098ACA0A9CF01F00168A485C8C22 -:1071A800F00C1900C2C048D9920A3009F20A190035 -:1071B800C0B45C781AD848A81AD648FC1AD51AD888 -:1071C800F01F00092FCD0C9C3004F01F000CC718CD -:1071D8000000153800007B2C000016A280039004E4 -:1071E80080038F2C800094C480006D788002DC3C82 -:1071F8008000CEC480038F548002E28C4AE9F207F3 -:10720800070AF4CBFFFFF40A001AA56AEE07001874 -:10721800F2070B0BF40800284A8AF4080008300A21 -:107228009123B02C9106B03A31E8F00B1800C03128 -:10723800F2070B0A4A084A29F0070708F207070964 -:10724800F0091800C1C149F9920A3009F20A190077 -:10725800C0A4201D1AD81AD849B849CC1AD8F01F8A -:10726800001C2FCD4948F00707095809F9BA01FF52 -:10727800F3DAE109F9B9001DF0070B0949189088FC -:10728800EDB80004C1618AC848DAF407070A201D6E -:107298000D891ADA488AF407070A1ADA1AD91AD8A5 -:1072A80048981AD648BC1AD71AD8F01F00092F8D4B -:1072B800089CD8320000153800007B2C0000153CD3 -:1072C800000016A28003900480038F90800094C46D -:1072D80080038FBCD431203D1690502A1895F01F9A -:1072E8000021301BE5DCB010F9D2C010F01F001EE1 -:1072F8001896C2C049D8EA050019F0050707A3691E -:10730800189431E849A1189349ABEE070016A56611 -:10731800F2060006F60600066C0B580BC0B0089C77 -:107328008CAA50095018F01F00148CAA4018140495 -:1073380040092FF7E205070A5C57EE081800F9B76D -:107348000000EE0A1800CE110696402A5800E1F611 -:107358001A00580AF5F21C000C9C2FDDD8320000E8 -:1073680080006C948002DC3C0000153C000015385D -:1073780000007B2C8002E736D431303818971693FA -:107388001494F00C1800E088001B48989009300805 -:10739800F0091900C0353005CA2848681ADC3005DC -:1073A8001AD8485CF01F00052FEDC998000016A2F6 -:1073B80080038DB080038FE0800094C4F80C001A1D -:1073C8004C88F00C0708F0080019A569F20A002992 -:1073D8004C5AF40903095809C1604C4A940B300A05 -:1073E800F40B1900C0A4201D1AD84C181AD94C1C2B -:1073F8001AD8F01F00412FCD4BA80E9BF007070CA1 -:10740800F01F003E0892301B5C72049CF01F003C89 -:1074180018961895C640049A069BF01F003AEE0786 -:1074280000184B03E6070702E4020012A562E4080D -:1074380000224AD83001F0020002300B8506A4244D -:10744800A4310E9CF01F0030852CE60707082FF8A2 -:10745800E6070B0831E9F2081800C031E6070B010E -:107468004A084AA9F0070708F2070709F0091800AF -:10747800C1C149E9920A3009F20A1900C0A4201DC5 -:107488001AD81AD849A84A2C1AD8F01F001B2FCD91 -:107498004948F00707095809F9BA01FFF3DAE10981 -:1074A800F9B9001DF0070B0949089088EDB80004E8 -:1074B800C1610D884959F2070709201D1AD9489951 -:1074C800F20707091AD91AD848985C74491C1AD4C3 -:1074D8001AD61AD71AD8F01F00082F8D0A9CD8324E -:1074E8000000153800007B2C000016A280038DB028 -:1074F80080038F2C800094C480006D788002DC3C6F -:107508008002E736800020240000153C80038F901D -:1075180080038FBCD401E06A05A0300B482CF01F13 -:107528000003D80200007B2C8002E8BCD421202D67 -:10753800FE782800501C500B3FF7109E301CC308E3 -:10754800300B7049EDB90001CFD17049EDB9000990 -:10755800CFD140195809C0B01396F2C5FFFE138960 -:107568005015EDE91089F7D9D010C038F7D7D010E9 -:10757800913B7049EDB90000CFD17C2B40095C8B61 -:107588005809C080B29BF7DBC108B28B40092FE9CC -:107598005009F80A1900E0880006202A5C8A580A6F -:1075A800CD01FE78280070482FEDD822580CC06015 -:1075B800FE782800300A7019C058FE78280030FA82 -:1075C8007019F3DAD20491195EFC202D3008E069B5 -:1075D80013885018F8090249C058401A2FF82FFA92 -:1075E800501A1238CFB12FED5EFCD703D401303CCE -:1075F800F01F0005C060303CF01F0004F01F0004BD -:10760800D402D6038000A3708000A38880014014B0 -:10761800D401580CC060300B303CF01F0004D80275 -:10762800303CF01F0003D8028000A31A8000A35C3E -:10763800D401202D3008B888303CF01F0022303C9F -:10764800F01F0021309CF01F001F307CF01F001D30 -:107658003008501840192FF950192FF8E04861A840 -:10766800CFA1309CF01F00193008501840192FF98D -:1076780050192FF8E05886A0CFA1307CF01F0013D6 -:10768800340B300A492CF01F0013FE782800302AEA -:1076980070C9F3DAD108308A91C970C9F3DAD08495 -:1076A800301A91C970C9F3DAD06191C970C9F3DA97 -:1076B800D001303C91C9F01F00082FEDD80A000016 -:1076C8008000A2A88000A2BE8000A2E6800075F417 -:1076D8008000A3A08000A388D42120AD4C68E3B823 -:1076E8000001D5533017FE6810007109F3D7D20294 -:1076F800303AF1490040E06B1B00EA1B00B7FE7C02 -:107708000C00F01F003E310A201D30081ADA0E99CD -:10771800109B308AFE7C0C00F01F003930080E994F -:107728000E9A109BFE7C0C00F01F0036300BFE7C7E -:107738000C00F01F0035FE7C0C00F01F0034300CEC -:107748001ADC18981899189A1ADC189BFE7C0C00F9 -:10775800F01F002F0E9CF01F002F302BFE7C0C001A -:10776800F01F002DF01F002DD503304AFAC7FFD0B7 -:107778004ABB0E9CF01F002B302B0E9CF01F002ADA -:10778800FAC8FFDC4A99722C109B912CE06AF980A8 -:10779800EA1A0337F2E40000FE7C1800F0E5000066 -:1077A800F01F0023308A4A3B0E9CF01F001E310A4E -:1077B800FAC6FFEC300B0C9CF01F001F3018304B42 -:1077C800FB68002149DCF01F00180C9BFE7C280098 -:1077D800F01F001B3009FE7C2800129B129AF01F34 -:1077E80000190E9C0E96304BF01F000F2FCDFAC7D4 -:1077F800FFD8C2D8800376008000A5088000A4B016 -:107808008000A4CE8000A4E68000A4F48000A470C8 -:107818008000A2228000A4FE8000A3D080039038BC -:107828008002E7368000A2808003901C8000AA1C9A -:10783800800390308002E8BC800390288000A66214 -:107848008000A69C0D8C2FE6F01F000F0E36CFB1DE -:10785800FACBFFFCFE7C2800F01F000C3009FE7CF0 -:107868002800129A129BF01F000AFE7C2800F01FC5 -:107878000009302CF01F0008FE7C2800F01F0005CE -:107888002F6DD8228000A2BE8000A6628000A69C30 -:107898008000A7EC8000A2E6D42130A81896F00C4E -:1078A8001800C0C1E067271020175BF7C13030DB34 -:1078B800FE7C1800F01F0008CF81E0672710201712 -:1078C8005BF7C0800C9BFE7C1800F01F0003CF8183 -:1078D800D822DC2A8000A9AED401178A17B91798D4 -:1078E800B168F1EA118817AAF1EA1088F3E81008DC -:1078F8001AD81ADC483CF01F00042FEDD80200000B -:1079080080039064800094C4D421202D4AB811D9F2 -:10791800BAD97009500911C8BAC81A961895169498 -:10792800581CE08900064A6CF01F0026C448761CE3 -:10793800F01F0025201DEFDCC0084A4C1AD7F01FA5 -:1079480000212FED5825C2A0682CF01F001F201D14 -:10795800EDDCC00849EC1AD6F01F001A30182FEDDC -:10796800F0061800C111305A49AB0E9CF01F001ADE -:1079780030AA49AB0E9CF01F00180E9C308A498B28 -:10798800F01F0015C1883028F0061800C141300AE0 -:107998000E9C149BF01F0013C0E83038F007180045 -:1079A800E08B000A300B0E9CF01F000F1A9B306A08 -:1079B800F01F000E2FEDD82A800396B88003909808 -:1079C800800094C48002DC2C800390C4800390D093 -:1079D800800390E480007380800390EC800390F82B -:1079E800800072DC8000202480005140D421189649 -:1079F8001695582CC45176174B3B0E9CF01F00333C -:107A08001896C1014B2CF01F00334B38FE798000CB -:107A1800B0094B28B0064B28B0064B28B006E08FBB -:107A280001C44B1B0E9CF01F0029C1D14AA89088A5 -:107A3800201D4AEC1AD8F01F00274A8890884ACCA3 -:107A48005008F01F00244A6890884AAC5008F01F7C -:107A580000214A4890884A8C5008F01F001E2FEDDC -:107A6800E08F01A30E9C4A5BF01F0018C0C14A4C6E -:107A7800F01F0018E06900FF4978E08F0195582C45 -:107A8800E089000749FCF01F0013E08F018E762C77 -:107A9800F01F001D18975836E08101876A1649BB08 -:107AA8000C9CF01F000AC53148B85807E08A000846 -:107AB8009009A1A9B0095817C2A1C3089009A1C982 -:107AC800B009C2C8800391048002ECC88003910801 -:107AD800800094C4000016A2000016A6000016A09C -:107AE800000016A8800391148003911C8003913430 -:107AF8008003914C800391648003E18C8003917C26 -:107B0800800391888002DC2C800392144B799208C0 -:107B1800A1A8B2085827C071C0D84B499208A1C87B -:107B2800B208C0884B299208A1A8B2085837C0717A -:107B3800C0A84AF99208A1C8B208C0584AD9920800 -:107B4800A1A8CAC84AB99208A1C8CA884AAB0C9C5D -:107B5800F01F002AC2F14AA85807E08A00089009D5 -:107B6800A3A9B0095817C061C0C89009A3C9B00932 -:107B7800C08849E99208A3A8B2085827C071C0D89C -:107B880049A99208A3C8B208C08849999208A3A82D -:107B9800B2085837C071C0A849599208A3C8B2089A -:107BA800C05849499208A3A8C79849299208A3C868 -:107BB800C758494B0C9CF01F0011C3E149085807EE -:107BC800E08A00089009A1B9B0095817C061C1B886 -:107BD8009009A1D9B009C17848499208A1B8B2085A -:107BE8005827C161C1C80000000016A6000016A0F1 -:107BF800000016A88003921C8002ECC8000016A2A0 -:107C0800800392204B699208A1D8B208C0884B59CA -:107C18009208A1B8B2085837C071C0A84B19920889 -:107C2800A1D8B208C0584B099208A1B8C3784AE94C -:107C38009208A1D8C3384ADB0C9CF01F002DC30161 -:107C48004AC85807E08A00089009A3B9B00958172C -:107C5800C061C0C89009A3D9B009C0884A09920870 -:107C6800A3B8B2085827C071C0D849D99208A3D878 -:107C7800B208C08849B99208A3B8B2085837C07189 -:107C8800C0A849899208A3D8B208C058496992087F -:107C9800A3B8C04849499208A3D8B208C858496B44 -:107CA8000C9CF01F0013C3D149285807E08A00082C -:107CB8009009A5A9B0095817C061C0C89009A5C9FD -:107CC800B009C08848699208A5A8B2085827C151C8 -:107CD800C1B848399208A5C8B208C168000016A6FC -:107CE800000016A0000016A8800392248002ECC8A9 -:107CF800000016A2800392284AC99208A5A8B208D3 -:107D08005837C071C0A84A999208A5C8B208C05887 -:107D18004A799208A5A8CC2B4A599208A5C8CBEB5A -:107D28000C9C4A4BF01F0024C3F14A485807E08ACC -:107D3800000B9009EA19FFFFE8198000B0095817ED -:107D4800C071C1089009F3D9C00FB009C0B849C9BA -:107D58009208EA18FFFFE8188000B2085827C08187 -:107D6800C11849789009F3D9C00FB009C0B848F9CB -:107D78009208EA18FFFFE8188000B2085837C08157 -:107D8800C0E848A89009F3D9C00FB009C08848894D -:107D98009208EA18FFFFE8188000C80B48489009C5 -:107DA800F3D9C00FB009D82A000016A0000016A801 -:107DB800800392308002ECC8000016A2000016A6CC -:107DC800D421582CC2717617495B0E9CF01F001500 -:107DD800C1211897494CF01F0015201D494C1AD78E -:107DE800F01F00120E9C2FF7F01F00122FED5847BE -:107DF800CF51C1380E9CF01F0010201DEFDCC008C9 -:107E080048BC1AD7F01F00090E9CF01F000A2FED7E -:107E1800C04848ACF01F0005D82A000080039238FB -:107E28008002ECC88003923C800094C4800390C414 -:107E380080006C108002DC2C80039250D421207DBD -:107E4800306A18951696FAC7FFEAE06B00FF0E9C99 -:107E5800F01F00385825C1B16C1C4B7BF01F003750 -:107E68001896C4B14B6CF01F00370E9B0C9CF01F8A -:107E780000360E9B301CF01F00340E9B0A9CF01F2E -:107E880000320E9B303CF01F0030C5085825E08AB0 -:107E980000356C1CF01F002D6C2B1897500B169C8E -:107EA800F01F002B58DC5F04585C5F08E9E81008F5 -:107EB800ECC5FFFC109418963008FACCFFF8400B7C -:107EC800F0041800C0500C9AF01F0022C238F01FAE -:107ED800002258375F98580C5F091896F3E8100885 -:107EE800E8081800C0A15807C085C0916A08118920 -:107EF8003308F0091800C030498CC098585C5F18E6 -:107F080058DC5F19F3E80008C050495CF01F000D09 -:107F1800C0D85C570C9BFAC9FFEAFACAFFF80E9C56 -:107F2800F01F00100E9CF01F00102F9DD82A000093 -:107F38008002E8BC800392808002ECC880039288AB -:107F4800800094C48001921C8002DC2C8002EDD059 -:107F58008002EE0C800098688003929C800392DC7B -:107F68008001927080019258D421204D4ABC149609 -:107F7800F01F002B1A9CF01F002B581CC0504AAC55 -:107F8800F01F0027C0A81A9CF01F0028201D1ADC2B -:107F98004A7CF01F00232FEDF01F002618974A6C2B -:107FA800F01F001F5807C0514A4CF01F001DC04861 -:107FB8000E9CF01F00234A376E0CF01F0023C1F0FF -:107FC8006E087018201D1AD8F01F0020500C4A0C9B -:107FD800F01F00136E0870285008F01F001C500C8A -:107FE80049CCF01F000F6E0870385008F01F0017BA -:107FF800500C499CF01F000A2FEDC048497CF01F27 -:108008000008497CF01F00060DC93018F009180057 -:10801800C2A1494CC298000080039314800094C404 -:10802800800191288003932C8000967080039348E8 -:108038008001997C80039358800393A880009784DB -:10804800000080D08000CAE4800096A8800393686E -:10805800800393788003938880039398800393B078 -:10806800800393B8493CF01F0014FACCFFF4300B9E -:10807800F01F0012301B4037FACCFFF8F01F000F3A -:10808800201D1AD750574047F01F000D500C48DCF0 -:10809800F01F000950075047F01F0009500C48AC6A -:1080A800F01F0005F01F0009300C2FED2FCDD8224E -:1080B800800393C4800094C48000C1EC800096A81B -:1080C800800393D080039DC08000495CD421202D7B -:1080D8001695584CE089000649ECF01F001FC3684C -:1080E800FACCFFFC761BF01F001D6A2C4014F01F11 -:1080F800001C18976A3CF01F001A18966A4CF01F6B -:108108000018501418951ADC496C1AD61AD71AD4C4 -:10811800F01F0011089CF3D5C008F5D6C0080E9BC7 -:108128005C7BF01F00112FCD5BFCC10148F8900962 -:108138003008F0091900C0A448D81AD548DC1AD666 -:108148001AD71AD8F01F00042FCD2FEDD82A000017 -:10815800800393DC800094C4800098FC8002DC2CAF -:108168008003941480003958000016A280039054AC -:1081780080039448D4211695583CE089000649CCE0 -:10818800F01F001CC338761CF01F001B18976A2CC0 -:10819800F01F001918966A3CF01F00174978201D37 -:1081A80018941AD649651AD7580CF0051710495C67 -:1081B8001AD5F01F0010089AF7D6C0085C5A0E9C12 -:1081C8005C7CF01F00112FCD5BFCC10148F89009C1 -:1081D8003008F0091900C0A448D81AD648DC1AD7C4 -:1081E8001AD51AD8F01F00032FCDD82A80039488F7 -:1081F800800094C48002DC2C80037DC480037DC889 -:10820800800394B880003C50000016A28003969C1E -:10821800800394DCD421206D1697582CE089000641 -:108228004A4CF01F0025C438761CF01F00246E2B22 -:10823800F8C700011A9CF01F0022304A1A9BFAC6A0 -:10824800FFEC0C9CF01F001F201D40681AD8F01F7F -:10825800001E1ADC49DC1AD7F01F00170C9B0E9C75 -:108268005C5CF01F001BFACCFFE0300BF01F00191C -:10827800301B4087FACCFFE4F01F00162FDD505763 -:108288001AD74056F01F00101AD71ADC492C50870D -:10829800F01F00092FDD50461AD6F01F000B1AD622 -:1082A8001ADC48EC5076F01F00042FCD2FADD82AE9 -:1082B80080039510800094C48002DC2C800098FC18 -:1082C8008002E736800096A8800395388000C19C1C -:1082D8008000C1EC8003955480039564D421FACDC5 -:1082E8000108581CE0890006491CF01F0012C1D87B -:1082F800F6C9FFFCF8CA0001FAC7FFFCE06B0100F1 -:108308000E9CF01F000DC110300948CAFACBFEFCC4 -:108318000E9CF01F000B5C5CC0814418489C1AD866 -:108328001AD7F01F00042FED2BEDD82A800395747F -:10833800800094C480009710800078E08000C4C05A -:1083480080039064D43121AD18961695582CE08995 -:1083580000064A1CF01F0021C3B8FAC7FFFC344AC4 -:10836800300B0E9CF01F001E306AE06B00FFFACC49 -:10837800FFDBF01F001BFAC4FFB8EAC9FFFCECCA18 -:108388000002320B089CF01F00171893C210189AAD -:10839800089B0E9CF01F00143088FB6300242016F5 -:1083A800EA060326FB68003C0C9CF01F00100C9B9F -:1083B800189A30180E9C3089F01F000D581CC08088 -:1083C80048C8201D48CC1AD8F01F00042FED2E6D88 -:1083D800D83A000080039590800094C48002E8BCDD -:1083E800800097108002E7368002EDD080019084EB -:1083F80080039048800395B4D42121AD1696582C5B -:10840800C05049BCF01F001BC308FAC7FFFC344A20 -:10841800300B0E9CF01F0018306AE06B00FFFACC9E -:10842800FFDBF01F0015ECC9FFFC301AFAC6FFB8D5 -:10843800320B0C9CF01F00111895C170189A0C9BF8 -:108448000E9CF01F000F3088FB6500240E9CFB6813 -:10845800003CF01F000C581CC08048B8201D48BCC8 -:108468001AD8F01F00042FED2E6DD82A800395D45A -:10847800800094C48002E8BC800097108002E73630 -:1084880080018FF8800396AC800395ECD431204DA1 -:108498001493189516947406582CC091761C304A7B -:1084A8004A7BF01F0028C0513018C458584CC0806F -:1084B8004A5CF01F00264A6CF01F0024C3D8761BC4 -:1084C8001A9CF01F00240A9A1A9BFACCFFF4F01F9A -:1084D80000224A289088EDB80002C0B1201D40480B -:1084E8001AD849F81AD649FC1AD8F01F00182FCD07 -:1084F800FAC7FFF40C9C0E9BF01F001B682B1A9CFC -:10850800F01F0014304A1A9B0E9CF01F00130E9B9C -:108518000C9CF01F0016683B1A9CF01F000E304A96 -:108528001A9B0E9CF01F000C0E9B0C9CF01F001059 -:108538001A953008A6C82FCDD83A0000800392803B -:108548008002EDE680039610800094C48003964074 -:10855800800098FC8002E736000016A28003903C59 -:10856800800396688000CBC88000CA928000CA74D5 -:10857800D421212D581CE0890006491CF01F001148 -:10858800C1C8F6C9FFFCF8CA0001FAC7FFD8320B08 -:108598000E9CF01F000D1896C1000E9B189AFAC782 -:1085A800FFF90E9CF01F0009300BFB6600270E9C9C -:1085B800F01F0007F01F00072EEDD82A80039684CD -:1085C800800094C4800097108002E736800099A844 -:1085D8008000998CD401F01F0003F01F0003D80A13 -:1085E80080019EF880009820D40148BE1898300970 -:1085F8007C0C580CC0A1F2090019487EFC0900291E -:10860800932A9318930BD8022FF92F4E58F9CF11AC -:10861800DC0A000000001544D401484CF01F000497 -:1086280030194848B089D802800396C0800094C4A5 -:10863800000015F8D4314B68169570065806C050DE -:108648005816E08100BAC938580CE08000B5F01F10 -:1086580000314B18910C1897580CE08000AD19891F -:10866800EC091800C0415805C460C4284AB44AC37C -:108678008906C188EC060018E60800287012049CD8 -:108688005802C0E0F01F002718910E9CF01F00252B -:108698000E9BE20C0D4A049CF01F0023C3102FF61A -:1086A8008906680649D258E6FE98FFE658F6C28160 -:1086B8005805C210049749DCF01F001D3008498690 -:1086C8008508C128F0080018EC0800287009580926 -:1086D800C0807018201D497C1AD8F01F00152FED96 -:1086E8006E082FF88F086E0858E8FE98FFED492CA1 -:1086F800F01F000F4888700CF01F0010C5C80E9CB2 -:1087080048FB49074906F01F0011C2C8000016407F -:108718008002ED8400001644000015400000154456 -:108728008002EDD08002EDE6800396C8800094C4F4 -:10873800800396E0800396C48002E28C80039364F1 -:10874800000015FC000016008002EEB86E08EC0868 -:10875800092C2FF88F085908C070498B300CF01F6E -:108768000018580CCF41301949689109496949786E -:108778007008F0080018F20800284959702A720C8D -:108788007008494B5D18581CC1705805C040492CE9 -:10879800F01F001248E83007340A0E9B910748DCA6 -:1087A800F01F000F48F8700CF01F000F4858301CDD -:1087B8009107D832D83ADA3A800393648002EEB847 -:1087C800000016400000154400001540000015FC8C -:1087D80000001600800396C4800094C48002E8BCA0 -:1087E800000016448002E28CD421202D1897FACB81 -:1087F800FFFCFE7C1800F01F0012583CC080584C4B -:10880800C081E0690100FE7818009109301CC15848 -:10881800401C58DCC03130ACC0B8588CC081F01F47 -:108828000009320CF01F00071BFCC0285C5CF01F1D -:1088380000054018300CAE882FEDD8228000A9C260 -:10884800800078A0D431202D30A1FAC0FFF930D2B1 -:10885800308349B749B630043005009CF01F001A30 -:10886800C2A11BF8E20818005F0AE40818005F09B3 -:10887800124AF80A1800C0904929491A1298740B2C -:10888800950CF20B0B0CC188E6081800C0916E0815 -:108898002018F00C17708F0CEC0C0B04C0686E09D4 -:1088A800EC090B082FF98F096E08E0480050CD61DC -:1088B8008F05CD4B3008109C2FEDD832000016489C -:1088C8000000164C800087F0D401F01F0004301B14 -:1088D800F01F0003D80200008000884C8000863C0E -:1088E800D4314974169714951293580BC0B1680C7B -:1088F800580CC0311896C2181696F01F0012890736 -:10890800C1C868085808C0C1E06C0200F01F000E1A -:10891800890CC061189648DCF01F000DC0E80A9C5D -:10892800E066020048650C33E60617806A0B0C9A6D -:10893800F01F00086A088F080C9CD8320000169CAB -:108948008002E28C8002E2A4800396E8800094C44E -:10895800800090B4D401F01F0002D80A800091086A -:10896800D4213008FAC4FFEC19C9F0091800F9B885 -:108978000100E9F81A01E9F81A02E9F81A004A1898 -:108988001AD84A1818971AD8089B3008E8C9FFF867 -:10899800E8CAFFFC780CF01F001D8F0C2FED580C57 -:1089A800C021DC2AF01F001A300949AA301BE06CEC -:1089B8001388F01F00193009498A301BE06C00FA4F -:1089C800F01F00153009496A301BE06C01F4F01FF4 -:1089D80000123009493A301BE06CEA60F01F000EC3 -:1089E8003009491A301BE06C03E8F01F000B30090E -:1089F80048EA301BE06C03E8F01F0007DA2A0000A1 -:108A08008001365C80013C948000CCA88000CAB00C -:108A180080008A708000956C80008A6480008A5883 -:108A280080008A4C80008A4080008A34D401F01F7C -:108A38000002D8028000C664D401F01F0002D802E8 -:108A480080012984D401F01F0002D8028000B8B048 -:108A5800D401F01F0002D8028000C074D401F01FB6 -:108A68000002D8028000E68CD401F01F0002D80270 -:108A78008001326430194828B0895EFC000016AACB -:108A8800D401319CF01F0003319CF01F0003D80271 -:108A98008000A2D28000A2E6D421204D3FF819C957 -:108AA8001897F0091800F9B80001EFF80E0430081B -:108AB800201D1AD850581AD81AD850685058F01F84 -:108AC800001C49CB6E0CF01F001C0E9949BA49CB0B -:108AD80049CCF01F001D2FCD581CC08049B8201D5F -:108AE80049BC1AD8F01F001B2FEDF01F001BF01F08 -:108AF800001B0E9CF01F001AC0F049A8900930080E -:108B0800F0091900C0F44988201D498C1AD8F01FB3 -:108B180000112FEDC07830194958319CB089F01FE9 -:108B280000153018EF6800082FCDD822800089681A -:108B380080008C5C8000CAEE80008B7C80008BDC1F -:108B480080008A7C80009A188003973C80039DC02F -:108B5800800094C48000998C80019EF880002A9837 -:108B6800000016A28003972880039758000016A4D7 -:108B78008000A300D4211897333CF01F000F300663 -:108B88000FD8EC081800C0C048CCF01F000D6E0CC0 -:108B9800F01F000C6E0CF01F000CAED6C07848BC5D -:108BA800F01F00076E0CF01F000A3FFCF01F0009C1 -:108BB800D82200008000A2E680039774800094C445 -:108BC8008000B1D88000AE50800397908000CABC66 -:108BD80080002E60D42116971896333CF01F00149D -:108BE8000C9CF01F0014201D1ADC493CF01F0013D8 -:108BF80030182FED0FC6F0061800C121490CF01FE0 -:108C0800000F6E0CF01F000F48F849095C5CF20C6D -:108C18001700F00C1710F01F0009AED6C0486E0CF4 -:108C2800F01F000BF01F000BD82200008000A300EB -:108C3800800096E48003979C800094C4800397B8D2 -:108C48008000B950800397D080037FC08000CB8814 -:108C58008000C690D42149471896F01F0014189533 -:108C6800C110301CF01F00126C18201D1AD8F01FFC -:108C78000011500C490CF01F001130182FEDAE8870 -:108C8800D822AE8CF01F000E48E89008EA081900B8 -:108C9800C08448D8201D48DC1AD8F01F00082FEDE2 -:108CA800D8220000000016AB8000CAE480002E60C5 -:108CB800800096A8800397D8800094C480006B2C0D -:108CC800000016A28003995C800397E8D4211897C6 -:108CD800F01F0027300A4A7B4A7CF01F0028300A20 -:108CE8004A7B4A8CF01F00254A7B300A4A7CF01FD9 -:108CF80000230E9A4A6B4A7CF01F0020300A4A6B08 -:108D08004A6CF01F001E4A6B300A4A6CF01F001BA9 -:108D18000E9A4A5B4A5CF01F0019300A4A4B4A5CBB -:108D2800F01F0016300A4A4B4A4CF01F0014300A54 -:108D38004A3B4A4CF01F0011300A4A3B4A3CF01F9C -:108D4800000F300A4A2B4A3CF01F000C300A4A2B0D -:108D58004A2CF01F000A300A4A1B4A2CF01F000751 -:108D6800300A4A1B4A1CF01F0005D82280008620C2 -:108D7800800085DC80039804800085F08000857879 -:108D88008003980C80007E448003981480007F70D4 -:108D98008003981C800079F48003982480007DC8A3 -:108DA8008003982C80008494800398348000633476 -:108DB800800398408000834C80039848800084009A -:108DC80080039850800082E4800398588000821CB9 -:108DD800800398608000817C80039868800080D43C -:108DE800800398748000791080039880D4211897A4 -:108DF800F01F000BF01F000BF01F000BF01F000B03 -:108E08006E0CF01F000B48B811893008F0091800E3 -:108E1800C0406E0CF01F0008D82200008000951496 -:108E2800800088D080009504800193A080013BBC1D -:108E3800000016A480004758D421202D3029EE7850 -:108E48000000F1D9D1A23019F1D9D0033007501858 -:108E58000E9B5007337CF01F000F1A9BFE7C3800D6 -:108E6800F01F000D0E9BE06A01A4FE7C3800F01F85 -:108E7800000B0E9BE06A0348FE7C3800F01F0008D8 -:108E88000E9BFE7C3800F01F00072FEDD822000053 -:108E98008000A2308000A8388000A8F08000A926B1 -:108EA8008000A8D4D401333CF01F0009334CF01FD4 -:108EB8000008335CF01F0006333CF01F0006334CFB -:108EC800F01F0004335CF01F0003D8028000A2A842 -:108ED8008000A2E6D421202DF01F0034F01F0034BA -:108EE800F01F0034F01F0034E06C1B00EA1C00B7D0 -:108EF800F01F00324B28201D4B2C1AD8F01F0032CF -:108F080030CB301CF01F00312FED1897580CC08162 -:108F18004AF8201D4AFC1AD8F01F002B2FED344BBD -:108F2800301CF01F002A8F0CC0814A98201D4A9CD3 -:108F38001AD8F01F00252FED3FF80E9CAEC8F01F81 -:108F48000026300B169CF01F0025F01F0025F01F8F -:108F58000025C0804A48201D49EC1AD8F01F001A85 -:108F68002FEDFACAFFFC0E9B4A0CF01F0021581C7B -:108F7800C0C1401A49FB0E9CF01F001F581CC0516D -:108F88000E9CF01F001ECFDB58CCC04058DCC061DF -:108F9800C03849BCC04849BCC02849BCF01F000AB9 -:108FA800F01F001ACFEB000080008A88800076E06E -:108FB80080008EAC80008E408000AAE88003970C69 -:108FC80080039888800094C48002DC3C800398A8C1 -:108FD80080039DC080008CD4800095C88000C8E4C0 -:108FE8008000895C800398B8800088E880013E880A -:108FF80080008AA0800193BC80008DF4800398E4EF -:109008008003990C8003993080009514D4314A1458 -:1090180058095F081296189716951493A888E06067 -:109028000100E06100FFC2E88920A868E203190096 -:10903800E069FFFFE7D9E828E9F88A02E06901005A -:1090480088E8F2080108682989151039E9F8BA0290 -:10905800EE021608049CF01F0010301CF01F000FD1 -:10906800F01F000F5806C090049CF01F000E301C23 -:10907800F01F000DF01F000D6828101310071005D1 -:109088005C83F1D7C0085803CD01069CD832000094 -:10909800000016AC8000A0408000A19880009ED4FB -:1090A80080009F5C8000A17080009E94D4013009EC -:1090B8005C7AF01F0002D80280009014D40148584E -:1090C80090E9701B120C702AF01F0003D8020000F0 -:1090D800000016AC8002E736D4014888189B118A34 -:1090E8003009F20A1800C07090E9701C120B702A3F -:1090F800F01F0003D8020000000016AC8002E7361B -:10910800D421208D48D8F0E60008FAE70008F0EAF4 -:109118000000FAC8FFF0FAEB0000F0E70008F0EBF7 -:109128000000E06CF980EA1C0337F01F0005300CE2 -:109138002FCD2FCDD82200008003996C8000A1C0CC -:10914800D401FAC9FFFCF01F0002D80280031C1CDE -:10915800D401F01F0002D8028002EE88D401F01F6B -:109168000002D8028002ECACD401F01F0002D80241 -:109178008002F0ECD401F01F0002D8028002E71050 -:10918800D401F01F0002D8028002EE2CD401F01F97 -:109198000002D8028002ED84D401F01F0002D80238 -:1091A8008002ECC8D401F01F0002D8028002EE0C45 -:1091B800D401F01F0002D8028002EDD0D401F01FC4 -:1091C8000002D8028002E87ED401F01F0002D80213 -:1091D8008002E8BCD401F01F0002D8028002E73602 -:1091E800D401F01F0002D8028002E28CD401F01FE3 -:1091F8000002D8028002E8D0D401F01F0002D80291 -:109208008002E2A4D401580CC0707808B08B7808AA -:109218002FF89908D802F9DBC008F01F0002D8021D -:10922800800078A0D431189616971495580AE08AC9 -:1092380000153008109AC0282FF8EE08070BF40B19 -:109248001800CFB10A38F9B50400EBD8E515EDB927 -:109258000001C0313303C0283203E9D9C001C090EE -:109268003004C1082FF42015069B0C9CF01F000D3C -:109278005805FE99FFF9C0682FF42FF70C9CF01FD2 -:1092880000090F8B580BCF91C0782FF42015069B3F -:109298000C9CF01F00045805FE99FFF9089CD83271 -:1092A8008000920CD431204DFAC4FFCC109368177B -:1092B800189568041698580BC0B13308BADB08999A -:1092C800069ABAC8FACBFFFCF01F001FC3985809CA -:1092D8005F1B58AA5F09F7E90009C0605808C04435 -:1092E8005C383016C0283006EECB003A3009FAC791 -:1092F800FFF00EF9C0B8F00A0D00029912985898BC -:10930800F1DBE9082D080EF800985808CF515806E7 -:10931800C1005803C0B0EDB40001C08132DB0A9C23 -:109328002013F01F000A3016C04832D830060EF855 -:109338000899069A0E9B0A9CF01F00030C0C2FCD6F -:10934800D83200008000922C8000920CD431203D4D -:109358003007500A18951696325432D3330230919A -:109368003730C978E8081800E081008E2FF60D889C -:109378005808E0800093E8081800E0800085E608B7 -:109388001800F9B90100F7B600FFF9B90001C038B3 -:109398002FF6A1B90D88E4081800CFB03008C048EE -:1093A800F80E00182FF60D8AF008002EF4CC0030C5 -:1093B800F4CB0030E20B1800FE98FFF4E00A180026 -:1093C800C0A1109A4008110B50084B98580BF00B8D -:1093D8001700C548364BF60A1800C0A1361B400ACC -:1093E8001ADB1AD93019740B2FCA502AC358370BF5 -:1093F800F60A1800C121361A40091ADAF2CAFFFC27 -:10940800501A308A1ADA720B3009310A0A9CF01F96 -:1094180000292FED1807C3C8378BF60A1800C0417A -:10942800400A361BC078358BF60A1800C091400AEE -:10943800341B1ADB1AD9740B2FCA502ACE6B375B30 -:10944800F60A1800C0B1361B400A1ADB1AD93009CF -:10945800740B2FCA502A30AACDAB363BF60A180037 -:10946800C171109A4008700B2FC8FB6B0008500898 -:10947800FACBFFF83008FB6800090A9CF01F000EC1 -:109488001807C0682FF70D8B0A9CF01F000C2FF6E9 -:109498000D885808FE91FF685805EBF81000F9B9D7 -:1094A8000100F1F91E000E9C2FDDD8328003997C53 -:1094B800800092AC8000922C8000920CD401189B02 -:1094C800FACAFFFC300CF01F0002D8028000935447 -:1094D800D40148A972082FF89308F2F800CC58086C -:1094E800C040F2FC00D45D18FE780D003019918957 -:1094F8007078D402D6030000000001184838F0F94B -:1095080000D0700CB33C5EFC00000118D431495601 -:1095180030020C9730152F46EEC1FF2C0E930E9497 -:109528000D88E4081800C18166086E291039E08B9F -:1095380000146C185808C0306C2C5D180D98EA0897 -:109548001800E9F80000EFF90001F3D8E008EFF897 -:109558000A02EDF51E002EC62EC70236CE21D832DD -:1095680000000118D431300E189830A5494C1C96CB -:109578002FCCFCC3FFFF1897F9340008EC0418003F -:10958800C071FDD3C0082ECCEA0E1800CF311C9C48 -:1095980048B530030A96FC0E002EEAF500D0F00517 -:1095A8000D048F040D08EF630008EC0E0026080870 -:1095B800EF6B00098F188D498D3AD83200000118D9 -:1095C800D421300A16971896328B495CF01F001583 -:1095D800300AFE7C0D00149BF01F00134935FE7CF9 -:1095E8000D00EAFB00D0F60B1073A19BF01F0010D2 -:1095F800FE7C0D00F01F000FFE7C0D00F01F000E1A -:10960800EAC9FF2CEB4600CCEB4700D430182F45B5 -:10961800AA882EC51235CFD1D8220000800094D850 -:109628008000A3A08000A594000001188000A580F8 -:109638008000A57A8000A562D401306AF01F00027C -:109648005F0CD8028002E710D401F93A0020F738FD -:109658000020F4081800C020D80AF01F00035F0C8F -:10966800D80200008002E710D42119D919881AD924 -:1096780019C91AD919B91AD919A91AD91999486732 -:109688001AD9486A1AD8312B0E9CF01F00050E9C77 -:109698002FADD822000016E0800399848002EC40A8 -:1096A800D4214058F5D8C008F00916181ADAF5D8A8 -:1096B800C108F1D8C2081ADA48671AD8486A1AD90C -:1096C800310B0E9CF01F00050E9C2FCDD8220000F8 -:1096D800000016F4800399A48002EC40D421488746 -:1096E8001896321A300B0E9CF01F00060C9BED3AB0 -:1096F80000200E9CF01F00040E9CD822000016BC0F -:109708008002E8BC8002E736D431300318971696F9 -:109718001491129218950694C1D805002FF4009C54 -:10972800F01F0012F80300030C33E0880009201D25 -:1097380048FC1AD6F01F000F2FEDC108201DEE05BA -:10974800010B1AD00A9C0C0B48BAF01F000C2FED25 -:1097580018050234CE350E35C021D83A30080AF83B -:10976800EA07010CD83200008002EDD0800399B4DA -:10977800800094C4800399CC8002EC40D4211897CF -:109788002DFCF01F001B201D1ADC49ACF01F001A2D -:109798000E9CF01F001A500C499CF01F00176EC851 -:1097A800498C5008F01F00146EF82FED5818C0416E -:1097B800495CF01F0011EF3800383049F2081800F2 -:1097C800C0E03059F2081800C0603029F2081800CB -:1097D800C091C03848DCC04848DCC02848DCF01FCD -:1097E800000648DCF01F0004D822000080009670B4 -:1097F800800399CC800094C4800096E4800399D0BB -:10980800800399D8800399E8800399F480039A0823 -:1098180080039A1C800384D4D421202DFACCFFFC29 -:10982800F01F000C401870185808C04148ACF01FD1 -:10983800000B3007C0887008F007032CF01F0008E1 -:109848002FF75C57401870191237CF632FEDD822C5 -:1098580080018F0480039A40800094C4800097841C -:10986800D431202D300818921696BAE8169CF01FAD -:10987800001DEDBC0000C04149BCF01F001C3007B2 -:109888002FF649B30E94FAC5FFFCC208660BF6081A -:109898000709E2190044C210E04700405F9C0D8AA6 -:1098A800F60A0709E21900445F09F9E91009E8090D -:1098B8001800C131BADABAC8310A300B0A9C2FE64F -:1098C800F01F000CE4070B0C2FF7ED38FFFF5808CA -:1098D800CDE10E9C5C5CC028300C2FEDD832000026 -:1098E8008002EDD080039A50800094C40000049C4C -:1098F8008002F0ECD421204D1A981AD8FAC8FFF843 -:109908001AD8FAC8FFF01AD8FAC8FFE818971AD870 -:10991800169C49BBF01F001B2FCD584CC221403864 -:10992800E04800FFE08B001E402B580BC1A5E04B20 -:1099380000FFE089001740195809C135E04900FFC8 -:10994800E0890010400A580AC0C5E04A00FFE089D3 -:109958000009B16BF7E811881448F1E91088C028AC -:109968003008F0091618AEB8AE890E9CF3D8C208B4 -:10997800F1D8C108AE99AEA82FCDD82280039A603D -:109988008002EBF4486870085808F9BC00FFF9B980 -:109998000101F1F91E10F9BC01015EFC0000170479 -:1099A800D4214988169770085808C021DC2A580C19 -:1099B800C080189B321AF0CCFFEFF01F0013C0389C -:1099C800F16C003148F85807C080700C0E9B306A63 -:1099D8002CECF01F000DC088700C306A2CECE06B8A -:1099E80000FFF01F000A48787008F139003130088C -:1099F800F0091800C021DA2AF01F0005DA2A000051 -:109A0800000017048002E7368002E8BC80019EF857 -:109A1800D4314A241896169714951292680358035D -:109A2800C3B1338B301CF01F001E890C189BC0B1CA -:109A380049C89088EDB80003C2F1201D49A849BC67 -:109A48001AD8C10849ACF01F001B49691891581C65 -:109A5800C0E09288EDB80003C1F1201D4928496C87 -:109A68001AD8F01F00163FFC2FEDD8326808913243 -:109A7800F16300109106911791259288EDB80003C3 -:109A8800C020D8324888201D48DC1AD8F01F000BA7 -:109A9800029C2FEDD832DC3A000017048002DC3C2F -:109AA800000016A280039A8080039AE080009AC87A -:109AB80080018F2480039AF8800094C480039B203F -:109AC800D431202D1697581CC290C083582CC670CC -:109AD8004A78583CE08101A8C998F01F00264A48F6 -:109AE80018969088EDB80003C0A1F01F00234A38EB -:109AF8001ADC4A3C1AD8F01F00232FED333CF01F24 -:109B08000022334CF01F00216E185808E08001979E -:109B18006E3B0C9C5D18E08F019249589088EDB817 -:109B28000003C08149A8201D49AC1AD8F01F0015B0 -:109B38002FED334CF01F0014333CF01F0014EF39A5 -:109B480000103008F0091800E0800179F01F0012B9 -:109B5800581CE080017448689088EDB80003E081E3 -:109B6800016E201D48A848DC1AD8C659000016A264 -:109B78008001997C800096E480039AC880039B3812 -:109B8800800094C48000A3008000A2E680039CE8C3 -:109B980080039B5480019EF880039B784B589088E3 -:109BA800EDB80003C0814B48201D4B4C1AD8F01F5C -:109BB80000342FED4AF89088EDB80003C0814B18A7 -:109BC800201D4B1C1AD8F01F002E2FED333CF01F20 -:109BD800002F6E285808C0306E3C5D18EF39001011 -:109BE8003008F0091800E080012AF01F0029581CED -:109BF800E080012549F89088EDB80003E081011F55 -:109C0800201D4A084A3C1AD8C1699088EDB800035B -:109C1800C0814A18201D4A1C1AD8F01F00192FEDC0 -:109C28006E085808C0306E3C5D18EF3900103008D7 -:109C3800F0091800E0800103EF390031F00918003D -:109C4800E08000FDF01F00161894FACCFFFCF01F0E -:109C58000015581CC591401870185808C550300593 -:109C6800EEC1FFEFEEC3FFCE0A960A92C488000049 -:109C7800000016A280039ABC80039BAC800094C4A9 -:109C880080039A9880039BC48000A2E680019EF816 -:109C980080039BE880039AA880039C1C8001997C20 -:109CA80080018F04EF390031E4091800C080700882 -:109CB800029CF005032BF01F0041C1F0306A4C0BE9 -:109CC800069CF01F0040C0A040187008069CF005D4 -:109CD800032B2DFBF01F003CC1005806C0A0401804 -:109CE8006CC97008F005032870C81039E0890006AF -:109CF80040187008F00503262FF55C5540187019B8 -:109D08001235CD13C02830060C34C0415804E08108 -:109D1800009658065F1858045F19F1E90009C20057 -:109D2800089B0C9CF01F0025C1D068C8FE58FFC0D6 -:109D3800E08400856CCAF0C9FFF71439E084007F1D -:109D48004A299289EDB90003C0D1201D1ADA1AD820 -:109D580049F84A0C1AD8F01F00202FCDC0385808EF -:109D6800C0C0202DECCBFFDF306A1A9CF01F001B0F -:109D7800F01F001B2FEDC17849489088EDB800030B -:109D8800C0C1EECCFFEFF01F001749181ADC496C70 -:109D98001AD8F01F00112FEDEECCFFEFEF3B00318A -:109DA800F01F0012588CC060589CC2F0581CC21199 -:109DB800C458F01F000FC4288000965080039C38B8 -:109DC8008002EDE680009640000016A280039A8C7F -:109DD80080039C40800094C48002E73680019DDCAB -:109DE800800096E480039C6880019EA0800199CC45 -:109DF80049489088EDB80003C0814938201D493C86 -:109E08001AD8F01F00132FEDF01F0012581CC16064 -:109E180048C89088EDB80003C111201D48A848EC37 -:109E28001AD8C0989088EDB80003C081201D48B8A2 -:109E380048BC1AD8F01F00062FED2FEDD8320000CD -:109E4800000016A280039A8C80039C94800094C41E -:109E580080019EF880039CB080039ABC80039CCC50 -:109E6800D4012FEC580BC080F7DCC008FE7C28001A -:109E7800F01F0005D802F7DCC008FE7C2800F01FA0 -:109E88000003D8028000A6C68000A716D42148C7C0 -:109E9800C098300BFE7C2800F01F000A6E082FF8CF -:109EA8008F086E0CF7DCC008CF51F9DCC288F01FB0 -:109EB800000630194858B089D82200000000170859 -:109EC8008000A7FA80009E680000170CD40148683B -:109ED800300B700CF9DCC288F01F000430094848C8 -:109EE800B089D8020000170880009E680000170C8F -:109EF800D421202D4948301B700CF9DCC288F01F92 -:109F08000013E06B00D7FE7C2800F01F0011FAC791 -:109F1800FFFAE06B00FFFE7C2800F01F000D0E9B8F -:109F2800FE7C2800F01F000B9AB8EDB80007CF217F -:109F38004858300B700CF9DCC288F01F00042FED74 -:109F4800D82200000000170880009E688000A7FA49 -:109F58008000A816D421202D49B8A96C910C49B8C5 -:109F680011893008F0091800C030F01F00193009B5 -:109F780049684957B0896E0C301BF9DCC288F01F5C -:109F88000015E06B0082FE7C2800F01F00136E08AD -:109F9800F3D8C008FAC7FFF8F7D8C10CFE7C280030 -:109FA800F3EB109B0EDBB18BF01F000B0FABFE7CAD -:109FB8002800F01F00090FBBFE7C2800F01F0006D8 -:109FC8002FEDDA2A000017080000170C80009EF811 -:109FD80080009E688000A7FAD42149381897118913 -:109FE8003008F0091800C0604908700CA98CF01FEF -:109FF8000010EEC6FF000F3BFE7C2800F01F000D8E -:10A008000C37CFA14898300B700CF8CCFF00910C9E -:10A01800F9DCC288F01F000830194838301CB089B4 -:10A02800D82200000000170C0000170880009F5C71 -:10A038008000A7FA80009E68D421202D4A78A96C58 -:10A04800910C4A7811893008F0091800C030F01FC7 -:10A05800002530094A284A17B0896E0C301BF9DCF4 -:10A06800C288F01F0021E06B00D2FE7C2800F01FA0 -:10A07800001F6E08F3D8C008FAC7FFF8F7D8C10C5C -:10A08800FE7C2800F3EB109B0EDBB18BF01F001752 -:10A098000FABFE7C2800F01F00150FBBFE7C2800CC -:10A0A800F01F0012E06B00FFFE7C2800F01F000F7D -:10A0B800E06B00FFFE7C2800F01F000CE06B00FF47 -:10A0C800FE7C2800F01F0009E06B00FFFE7C2800E2 -:10A0D800F01F00062FEDDA2A000017080000170C01 -:10A0E80080009EF880009E688000A7FAD421202D69 -:10A0F800498818973009118AF20A1800C070B08987 -:10A108004958700CA98CF01F0015FAC5FFFAEEC665 -:10A11800FF00E06B00FFFE7C2800F01F00110A9B87 -:10A12800FE7C2800F01F000F9A380EC80C37CF218C -:10A138004898300B700CF8CCFF00910CF9DCC28801 -:10A14800F01F000930194838301CB0892FEDD8228B -:10A158000000170C000017088000A0408000A7FA34 -:10A168008000A81680009E68D4211897C088F01F28 -:10A178000006486CF01F000620175C87483C58070B -:10A18800CF71DA2A800090C40000171080009FE089 -:10A19800D4211897C088F01F0006486CF01F0006ED -:10A1A80020175C87483C5807CF71DA2A8000A0F452 -:10A1B80000001710800090E0D4213027FAC4FFEC8B -:10A1C8001896A887C0C80C9A089BFE7C2800F01F28 -:10A1D8000009C020D82A09882FF8A8880988EE081D -:10A1E8001800FE98FFF230094838301CB089D82290 -:10A1F8008000A73C0000170CE1B80000EE18000131 -:10A20800F1D8C201C020D3033019F20B094B994B86 -:10A21800783958085E0CD5035EFCFE681400700996 -:10A22800F3DCD0C191095EFCF8081605A968E0289E -:10A23800F000581BC0D0C063582BC0F0583BC12059 -:10A248005EFF3019F20C0949916991A9C108F60C11 -:10A25800094B915B91ABC0B83019F20C094991696F -:10A26800C0583019F20C0949915991993019F20CDA -:10A27800094C912C5EFDD703D4213007189616940B -:10A288000E95C0880D9B0D8C2FF72FE6F01F00044C -:10A2980018450837CF830A9CD82200008000A230D6 -:10A2A8003018F00C0948A59CA96CE02CF000F9487E -:10A2B800004899185EFC3018F00C0948A59CA96C58 -:10A2C800E02CF000F94800745EFC3018F00C0948E6 -:10A2D800A59CA96CE02CF000F94800785EFC3018C9 -:10A2E800F00C0948A59CA96CE02CF000F948005432 -:10A2F800F948004499185EFC3018F00C0948A59CF0 -:10A30800A96CE02CF000F9480058F9480044991865 -:10A318005EFC301AF8081605F40C0949A968E0280B -:10A32800F000F14900C4143BC080C043582BC0F171 -:10A33800C098F14900A8C038F14900A4F14900B813 -:10A34800C078F14900A8F14900B4C0285EFAF14983 -:10A3580000945EFD3018F00C0948A59CA96CE02C0F -:10A36800F000F94800985EFCF8081605A968E0288E -:10A37800F000F0F800D0F00C0A4CF9DCC0015EFCEB -:10A388003018F00C0948A59CA96CE02CF000F9489D -:10A3980000D85EFCC008D703F3DBC0054898A59B2E -:10A3A800F00B00387018F009092C4878F5DAC0026B -:10A3B800F00A0329FE780800F00B09295EFC00006A -:10A3C80080039CFC8003773CD42148F8E3B8000163 -:10A3D80048E848F9700E48FC3008FE7B0800C0E8E1 -:10A3E8007216EC0A00262FFA8D0C0E3ACFA3F60847 -:10A3F800092E2F892FF85948C0407207300ACF6BB1 -:10A40800D8220000800376008003773C80039CFC00 -:10A418008000A39CE0680083FE790800F00C010C22 -:10A42800F20C0328F0CAFFC0F20A032C580C5E0C89 -:10A438004869F80C1200F2080038F80C111F70185F -:10A44800F00C032C5EFC000080039CFC78C83019DB -:10A45800F1D9D10399C85EFC78C83019F1D9D00177 -:10A46800F1DBD20399C85EFCD421FAC4FFEC68176B -:10A47800680EEFD7C003FDDEC0013004E9D7D00372 -:10A48800E9DED0E1E9D7D103E9DED1E1E9DAD203A7 -:10A49800E9DBD2E1E9D8D303E9D9D3E199147958B2 -:10A4A800EDB80005CFD1D822D4213007405E2F8BDC -:10A4B800EFD8D021EFD9D104EFDAD204EFDED306FA -:10A4C800F80B0927D822F5E910192F8BF3E8102883 -:10A4D800F80B0329F3D8D043F80B09295EFC2F8B1E -:10A4E800F80B0328A1A8F80B09285EFC7958EDB8E9 -:10A4F8000000CFD15EFC7808F1DBD00299085EFC41 -:10A50800EC5BBB9FE08B0004304BC138E068C6BFF2 -:10A51800EA18002D103BE08B0004305BC0A8E0680F -:10A528001200EA18007A103BF9BB0306F9BB0207D0 -:10A5380078A8F1DBD00399A878A8F1DAD10399A813 -:10A548007808A3A899087958EDB80007CFD17808FA -:10A558003019F1D9D00299085EFC7808EDB80004EA -:10A56800CFD07808A1A899087808EDB80004CFD012 -:10A578005EFC301899485EFC7808EDB80004CFD02E -:10A58800992B7808EDB80004CFD05EFCD42130F8C0 -:10A5980014951697F00A18005FBA30181896F00B41 -:10A5A80018005FB9F5E91009C020D82AF00B180087 -:10A5B800C0A1FE7C0C00F01F0015300BFE7C0C00C7 -:10A5C800F01F00136C08EDB80004CFD0A377B1A733 -:10A5D800EFE510878D076C08EDB80004CFD06C0844 -:10A5E800E2180010CFD18D186C08EDB80004CFD058 -:10A5F8006C08EDB80004CFD03FF88D286C08EDB892 -:10A608000004CFD0DA2A00008000A4548000A4609F -:10A618003038F00A18005FB93078F00B18005F88FE -:10A62800F3E81008C1913108F00B1800E08B001511 -:10A63800E06800809908208BF4081601F5DAC0015B -:10A64800F1EB104B580AF9BA0100F9BA0002F7EA1F -:10A65800100A99CA5EFD302C5EFCD4013019189896 -:10A66800F73B000DF20B1800E0880004302CD802EC -:10A67800300AE06900809909301E7019149CF3DED5 -:10A68800D001F3DBD081F3DAD0E130FAF3DAD20487 -:10A698009119D802D4013018F00B18005FBEF00AE7 -:10A6A80018005FB81C48C030302CD8027818F1DB8D -:10A6B800D021F1DAD041F1D9D3089918D80A7819FC -:10A6C8001898EA19000F9919781CE21C0004C100B7 -:10A6D80030E9F20B1800E08B001A7019B16B300CDE -:10A6E800EA1BFFF0E81BFFFF126B911B5EFC303981 -:10A6F800F20B1800E08B000B70192F0B301AF40BBB -:10A70800094B5CDB126B911B5EFC302C5EFCE06835 -:10A718002710C0585808C0215EFF20187849EDB9A5 -:10A728000009CF917818EA18000F9918FC18010051 -:10A7380099085EFDD4313036F737000CEC07180065 -:10A74800E08B0050F733000B301EFC031800E08B41 -:10A758000049F73800083079F2081800E08800420C -:10A768003109F2081800E08B003D7619F205160150 -:10A77800F4050005EA090D04E8C90001E04900FEF6 -:10A78800E08B0030F0CA00080E923008EC1200018D -:10A79800A197F1D7D001F1D2D021F1D3D061F1DA6C -:10A7A800D084F73A0009F1D4D1081789F1DAD20830 -:10A7B800F73A000AF1DAD308FC091800C0C0C093C0 -:10A7C800302AF4091800C090EC091800C0A1C0781C -:10A7D80099C8C06899D8C04899E8C02899F8D83A63 -:10A7E800302CD832301899085EFC784CF9DCC0213E -:10A7F8005EFCE0682710C0585808C0215EFF20188A -:10A808007849EDB90001CF915C7B993B5EFDE0682A -:10A818002710C0585808C0215EFF20187849E2194F -:10A828000201E0490201CF717828300CB6085EFCBD -:10A8380076095829E08800035EFE7618A769109B00 -:10A84800E61BC000120CF3D8C003AFB91649109B21 -:10A85800E61B30001649109BE61B0C001649109B9E -:10A86800E61B03001649109BE61B00C01649109B07 -:10A87800E61B00301649109BE61B000C1649109B7E -:10A88800E61B00031649109BE21B60001649109B4B -:10A89800E21B10001649109BE21B0C001649109B86 -:10A8A800E21B03002FCC1649109BE21B0080109A74 -:10A8B8001649E21A0008109BE2180030E21B00401B -:10A8C8001649F3E81008144899085EFDF6081506BD -:10A8D800582BF9BC0BFFF9D8E80CF9B80805F9F8BA -:10A8E8008A00F9BC08005EFC582BE08800035EFE75 -:10A8F800F6081506F80800082FC87008EDB8000F0C -:10A90800C0C1A76BF3DAC010160C2ECC7808E0187B -:10A918000000F3E810089908F9DAC0105EFC582B1B -:10A92800E08800035EFEA76B160C7818EDB8000FE0 -:10A93800C0A12E4CF3DAC0107808E0180000F3E844 -:10A9480010089908F9DAC0105EFCD401F60E150457 -:10A958001C3AF9BE0210F9BE0308FC0B024BF608BC -:10A968001601F00A003AF40B0D0AF4091603F2C8AE -:10A978000001E048FFFEE0880003DA0A7818E86B77 -:10A988000000E418FFF7E018FECF590EF60E171076 -:10A99800F9BE0000FDE810089918F5DAC003F3EADB -:10A9A80011099989D80A7858EDB80001C030302CBF -:10A9B8005EFCF7DBC009997B5EFD7858E21800E081 -:10A9C800C030304C5EFC7859EDB90000F9BC010389 -:10A9D800F9F90006F00C1700E06A01FFF3DAE02845 -:10A9E800F7F80A005EFCE1B80000EE180001F1D8A3 -:10A9F800C201C020D3033FF9993978595808C020BB -:10AA0800D50330089918999899A8EA68610C9908AB -:10AA18005EFCD703D421201D500A16961897F01F04 -:10AA2800002F400A5806C5500DC83049F2081800D2 -:10AA3800E08800503095EA081800E08B004B0DD9EB -:10AA48003078F0091800E08B00458C39E068010186 -:10AA5800F0091900E08B003EED3900083038F009A4 -:10AA68001800E08B00376C0B0E9CF01F001D581C63 -:10AA7800C3000DC8EA081800C0416E18B1B8C05824 -:10AA880020586E19F3E810688F186E19ED3A00080F -:10AA98000DD8A978F1EA10E812488F18302A8C38B6 -:10AAA800F3D8C010F4081900E08800086E18ADB893 -:10AAB8008F1820298FA9C0586E18F1E910C98F196D -:10AAC8006E18E018FFF08F18300C35088F08C02872 -:10AAD800301C2FFDD82200008000A9EE8000A9526A -:10AAE8004828910C5EFC0000000018E8D431189842 -:10AAF800783E580EC620F90600105806C5E0300901 -:10AB08003FF3129A3344C1780E91E8071800C0A1A8 -:10AB1800F2CAFFFEF4C9FFFF5C7A5C89FC0A070AE7 -:10AB2800C0A8F6071800C4A05C75FC050709E4096D -:10AB380000095C89EC091900C0F2F2C5FFFFF9D9D8 -:10AB4800C0105C85FC0C000CEAC2FFFF19870E914F -:10AB5800E6071800CDA1580AC3003019F20A1800F8 -:10AB6800C0617028E06900802948C0C87028302971 -:10AB7800F20A1800C0412D483409C0482D48E06940 -:10AB880000C0300C3FF7C0D8F60A1800C1705C7ED0 -:10AB9800F00E070CEC0C000C5C8CF20C1900C0D207 -:10ABA800F8CEFFFF5C7C5C8EF00C000CFCC6FFFF4F -:10ABB800198AEE0A1800CE91300CD832D401F9085F -:10ABC800001CF3D8C010F2CEFFFE140EE04E004475 -:10ABD800E088000F48F8201D1AD8E06804E31AD866 -:10ABE80048D848EC1AD8F01F000E2FCDC008786E50 -:10ABF800FC090009F36B00F02FF8786BF3D8C0104C -:10AC0800F6090009F36A00F02FF8F958001CD80279 -:10AC180080039DC480039E0880039D9C800094C48B -:10AC2800D4013439F908001CF2081900E088000F33 -:10AC380048C8201D1AD8E06804EE1AD848A848BCAD -:10AC48001AD8F01F000B2FCDC008786AF3D8C010AF -:10AC5800F4090009F36B00F02FF8F958001CD8022A -:10AC680080039DC480039E5080039D9C800094C4F3 -:10AC7800D401580CC0E14B18201D1AD8E068062BE7 -:10AC88001AD84AF84AFC1AD8F01F002F2FCDC0084E -:10AC9800786A580AC0E14A98201D1AD8E068062C3C -:10ACA8001AD84AA84A7C1AD8F01F00272FCDC00806 -:10ACB800F908001C3439F2081900E088000F49F837 -:10ACC800201D1AD8E068062D1AD84A1849DC1AD867 -:10ACD800F01F001D2FCDC008F7D8C010160A3FFB83 -:10ACE800F56B00F02FF8129B5C88300AF958001CAD -:10ACF800C1584928201D1AD8E06806321AD8494890 -:10AD0800490C1AD8F01F00102FCDC008F1DEB01082 -:10AD1800786EFC090009F36A00F0F0CEFFFFF3D863 -:10AD2800C010F6081900FE98FFF3F958001CF3D973 -:10AD3800C002CE01D802000080039DC480039E8C0F -:10AD480080039D9C800094C480039EB080039EDC99 -:10AD5800D401F908001CF3D8C010F2CAFFFEE04A7B -:10AD68000044E088000F4918201D1AD8E06804F54F -:10AD78001AD848F848FC1AD8F01F000F2FCDC00881 -:10AD8800786AF4090009F5DBC108F36A00F02FF8C6 -:10AD9800786AF3D8C010F4090009F36B00F02FF8B3 -:10ADA800F958001CD802000080039DC480039F1C32 -:10ADB80080039D9C800094C4D401F908001CF3D83A -:10ADC800C010F2CAFFFCE04A0044E088000F49B80E -:10ADD800201D1AD8E06804FD1AD84998499C1AD849 -:10ADE800F01F00192FCDC008786AF4090009F60A87 -:10ADF8001618F36A00F0786A2FF8F3D8C010F4092F -:10AE08000009F5DBC208F36A00F0786A2FF8F3D876 -:10AE1800C010F4090009F5DBC108F36A00F02FF847 -:10AE2800786AF3D8C010F4090009F36B00F02FF822 -:10AE3800F958001CD802000080039DC480039F605D -:10AE480080039D9C800094C4D421F9380035A3D890 -:10AE5800F9680035189678A75807C2406E1C580C38 -:10AE6800C050F01F001130088F186E285808C09184 -:10AE78006E355805C061EF090010EA091900C0E0F5 -:10AE880048A8201D1AD8E06804C51AD84888489CE4 -:10AE98001AD8F01F00092FCDC0080E9CF01F00071C -:10AEA8008DA5D8228001122880039DC480039FA00D -:10AEB80080039D9C800094C48002E28CD421189762 -:10AEC800782C580CC050F01F000830088F286E3CB2 -:10AED800580CC070F01F00043008EF5800108F386D -:10AEE800D82200008002E28CD4211896580CC0E1C8 -:10AEF8004AE8201D1AD8E06805D11AD84AC84ADCA1 -:10AF08001AD8F01F002D2FCDC00878A75807C0E128 -:10AF18004A68201D1AD8E06805D31AD84A784A5CCE -:10AF28001AD8F01F00252FCDC0086E585808C0E069 -:10AF380049E8201D1AD8E06805D41AD84A0849DC1F -:10AF48001AD8F01F001D2FCDC0086E655805C0E047 -:10AF58004968201D1AD8E06805D51AD84998495C6F -:10AF68001AD8F01F00152FCDC0080A9AE06B0134DB -:10AF78000A9CF01F00158F5CC041E06C00FFD822CE -:10AF88009859E0680133F0091900E08B00214878EE -:10AF9800201D1AD8E06805DD1AD848C8485C1AD8B8 -:10AFA800F01F00052FCDC00880039DC480039FB407 -:10AFB80080039D9C800094C480039FD880039FFCDD -:10AFC8008003A0288000D3188003A054EF38001312 -:10AFD800EA081800C0514D3870092FF991097818FE -:10AFE800301B8F684CF9720A8F0AB09BB08B306B9C -:10AFF800B0ABF40B1618B0CBF7DAC2083009B0FAC8 -:10B00800B0DBF5DAC108305BB0B9F1690008F16965 -:10B018000009F169000AF169000BF169000CF16996 -:10B02800000DF169000EF169000FB0EAEF3A001265 -:10B03800F60A18005F0C30ABF60A18005F0BF9EB44 -:10B04800100BF20B1800C0513049F20A1800C0D199 -:10B058000DC9F169000C0DD9F169000D0DE9F1690F -:10B06800000E0DF9F169000F3009ECCAFFD1F16942 -:10B078000010F1690011F1690012F1690013F1691A -:10B088000014F1690015F1690016F1690017F169FA -:10B098000018F1690019F169001AF169001BF0CB79 -:10B0A800FFE4ED35002E3106EA091900F9BC02006B -:10B0B800F5FC380016CC2FF92FFA5C89EC09190039 -:10B0C800CF413009F0CAFFD4129C340B14CC2FF9AD -:10B0D8005C89F6091900CFB13009F0CAFF94129CB7 -:10B0E800E06B008014CC2FF95C89F6091900CFB108 -:10B0F8003639F16900EFF16900EC3829F16900EDA2 -:10B108003539F16900EE344A3009F0C8FF10EF59BB -:10B11800001C10C92FF95C89F4091900CFB1D82A8D -:10B12800000001F0D421580CC0E14A28201D1AD88B -:10B13800E06806141AD84A084A0C1AD8F01F0020EA -:10B148002FCDC00878A75807C0E149A8201D1AD8F4 -:10B15800E06806161AD849B8498C1AD8F01F0018A2 -:10B168002FCDC0086E5C580CC0E14928201D1AD8A4 -:10B17800E06806171AD84948490C1AD8F01F001079 -:10B188002FCDC0086E685808C0E148A8201D1AD8FD -:10B19800E06806181AD848D8488C1AD8F01F000852 -:10B1A8002FCDC008F01F000A30088F688F58D822AA -:10B1B80080039DC48003A09880039D9C800094C454 -:10B1C8008003A0BC8003A0E08003A10C8000D13CD8 -:10B1D800D42130D878A7EF390012F0091800EFF819 -:10B1E8001E12F9B80100EFF81E13300818968FE800 -:10B1F8008F988FB88FA88FD88FC8EF48004CEF482A -:10B208000048EF480044F01F0029EBDCC008C201E9 -:10B21800301A335B0E9CF01F0026307B0E9CF01F0B -:10B2280000250E9CF01F00246E5CEF0B001CF6CB73 -:10B23800FF105C7BF01F00210C983439EECAFFDC4C -:10B248006E5B6E1CF01F001E0C9CF01F001EEF387A -:10B2580000132FF85C58EF6800133099F2081800B3 -:10B26800E0880005E0692710C058E06903E8F009A4 -:10B2780002495C79E06801F4F2C9FE0DF2080C0895 -:10B288000C9CEF58001EF01F00100C9C48FBF01F90 -:10B2980000100C9C48DBF01F000F0C9C48BBF01FF3 -:10B2A800000E0A9CD82200008000AEF08000ABC4DB -:10B2B8008000AC288000AC788000D2108001139008 -:10B2C8008000B12C8000CABC8003B4098000CBC8C0 -:10B2D8008000CA748000CA92D421305878A7EF3908 -:10B2E8000012F0091800EFF81E12F9B80100EFF883 -:10B2F8001E131896F01F0026EBDCC008C2A1301AF6 -:10B30800335B0E9CF01F0023303B0E9CF01F002285 -:10B31800302A339B0E9CF01F001FED1B002C0E9C47 -:10B32800F01F001E0E9CF01F001E6E5CEF0B001C31 -:10B33800F6CBFF105C7BF01F001B0C983439EECA6B -:10B34800FFDC6E5B6E1CF01F00180C9CF01F0017D2 -:10B35800EF3800132FF85C58EF6800133099F208A3 -:10B368001800E0880005E0694E20C058E06907D061 -:10B37800F00902495C790A9CF2C9FE0DE06801F403 -:10B38800F2080C08EF58001ED82200008000AEF02A -:10B398008000ABC48000AC288000AD588000AC7839 -:10B3A8008000D210800113908000B12CD42118960F -:10B3B800580CC0E14AF8201D1AD8E06802F51AD8DE -:10B3C8004AD84AEC1AD8F01F002E2FCDC00878A70B -:10B3D8005807C4E0EF3900123088F0091800C4811A -:10B3E80017B8178A1799B169F3EA118917AAF3EA06 -:10B3F8001089F1E910096EA81039C3A130C8EF68A7 -:10B4080000123008EF680013F01F001E5C5CC28158 -:10B41800301A335B0E9CF01F001C304B0E9CF01F43 -:10B42800001B304A332B0E9CF01F00176EAB0E9C8E -:10B43800F01F00170E9CF01F00176E5CEF0B001C2E -:10B44800F6CBFF105C7BF01F00140C983439493A96 -:10B458006E5B6E1CF01F00120C9CF01F0012EF3880 -:10B4680000132FF8EF6800133148EF58001ED82258 -:10B4780080039DC48003A13880039D9C800094C4F0 -:10B488008000AEF08000ABC48000AC288000ADC066 -:10B498008000AC788000D2108003B405800113903E -:10B4A8008000B12CD421303878A7EF390012F00988 -:10B4B8001800EFF81E12F9B80100EFF81E131896DD -:10B4C800F01F002AEBDCC008C321301A335B0E9C46 -:10B4D800F01F0027303B0E9CF01F0026302A339BBC -:10B4E8000E9CF01F0023E06B02400E9CF01F002210 -:10B4F800304A332B0E9CF01F001E6EAB0E9CF01FC3 -:10B50800001F0E9CF01F001E6E5CEF0B001CF6CB9C -:10B51800FF105C7BF01F001B0C98343949AA6E5B46 -:10B528006E1CF01F001A0C9CF01F0019EF38001356 -:10B538002FF85C58EF6800133099F2081800E0887B -:10B548000005E0692710C058E06903E8F0090249DE -:10B558005C790A9CF2C9FE0DE06801F4F2080C0857 -:10B56800EF58001ED82200008000AEF08000ABC467 -:10B578008000AC288000AD588000ADC08000AC7859 -:10B588008000D2108003B405800113908000B12C94 -:10B59800D4214BD811B9118B119A11A8B16AF5EBC6 -:10B5A800118AF5E81088F3E8100878A78FA8EF3912 -:10B5B80000123068F0091800EFF81E12F9B80100FF -:10B5C800EFF81E131896F01F0031EBDCC008C3E13A -:10B5D800301A335B0E9CF01F002E301B0E9CF01FA0 -:10B5E800002D302A339B0E9CF01F0029ED1B002CE8 -:10B5F8000E9CF01F0029304A337B0E9CF01F00245C -:10B60800301B0E9CF01F0023303B0E9CF01F0021C6 -:10B6180031CB0E9CF01F001F306B0E9CF01F001DDD -:10B628000E9CF01F001E6E5CEF0B001CF6CBFF108B -:10B638005C7BF01F001B0C98343949AA6E5B6E1CAA -:10B64800F01F00190C9CF01F0019EF3800132FF899 -:10B658005C58EF6800133059F2081800E0880005BC -:10B66800FE79EA60C058E06903E8F20809495C79A4 -:10B678000A9CF2C9FE0DE06801F4F2080C08EF58C4 -:10B68800001ED8228003B4098000AEF08000ABC44D -:10B698008000AC288000AD588000AC788000D210C3 -:10B6A8008003B405800113908000B12CD421301898 -:10B6B80078A7EF390012F0091800EFF81E12F9B850 -:10B6C8000100EFF81E131896F01F0039EBDCC008D4 -:10B6D800C501301A335B0E9CF01F0036303B0E9CC0 -:10B6E800F01F0035302A339B0E9CF01F0032ED1BF3 -:10B6F800002C0E9CF01F0031304A332B0E9CF01F9B -:10B70800002D6EAB0E9CF01F002E304A336B0E9C42 -:10B71800F01F00286E9B0E9CF01F0029304A337BD7 -:10B728000E9CF01F0024301B0E9CF01F0023303BA2 -:10B738000E9CF01F002131CB0E9CF01F001F306BB8 -:10B748000E9CF01F001D0E9CF01F001E6E5CEF0B80 -:10B75800001CF6CBFF105C7BF01F001B0C983439E3 -:10B7680049AA6E5B6E1CF01F001A0C9CF01F001992 -:10B77800EF3800132FF85C58EF6800133059F208BF -:10B788001800E0880005FE79EA60C058E06903E81F -:10B79800F20809495C790A9CF2C9FE0DE06801F4D7 -:10B7A800F2080C08EF58001ED82200008000AEF006 -:10B7B8008000ABC48000AC288000AD588000ADC0CC -:10B7C8008000AC788000D2108003B405800113900B -:10B7D8008000B12CD421304878A7EF390012F00945 -:10B7E8001800EFF81E12F9B80100EFF81E131896AA -:10B7F800F01F0025EBDCC008C291301A335B0E9CA9 -:10B80800F01F0022303B0E9CF01F0021302A339B92 -:10B818000E9CF01F001EED1B002C0E9CF01F001D3F -:10B828000E9CF01F001D6E5CEF0B001CF6CBFF108A -:10B838005C7BF01F001A0C983439499A6E5B6E1CB9 -:10B84800F01F00180C9CF01F0018EF3800132FF899 -:10B858005C58EF6800133099F2081800E08800057A -:10B86800E0692710C058E06903E8F00902495C79EB -:10B878000A9CF2C9FE0DE06801F4F2080C08EF58C2 -:10B88800001ED8228000AEF08000ABC48000AC2837 -:10B898008000AD588000AC788000D2108003B405D9 -:10B8A800800113908000B12CD4314A5830167007AB -:10B8B80030A20C9330043055C3E86EA85808C3A0D2 -:10B8C800F1090022F2CA0001F15A0022EC0919001C -:10B8D800C151F1380012E40818005F0AE6081800A0 -:10B8E8005F09F5E91009E8091800C041EA081800DD -:10B8F800C2110E9CF01F0013C1D8F1090020F2CA32 -:10B908000001F15A0020EC091900C141F138001278 -:10B91800E40818005F0AE60818005F09F5E910094D -:10B92800E8091800C041EA081800C0410E9CF01F41 -:10B9380000066E075807CC21D8320000000080CCE2 -:10B948008000B7DC8000B2E0D4211896580CC0E122 -:10B958004C08201D1AD8E068024E1AD84BE84BFC58 -:10B968001AD8F01F003F2FCDC008F9380035A3D8EA -:10B97800F968003578A7F909002CE068023FF0095A -:10B988001900E088008B5807C091350CF01F00356E -:10B998001897E08000838DACC2E86E1C580CC0304C -:10B9A800F01F00316E585808C0E04AA8201D1AD868 -:10B9B800E068026C1AD84AD84A8C1AD8F01F0028B6 -:10B9C8002FCDC0086E285808C0916E385808C0613D -:10B9D800EF090010F0091900C0E049E8201D1AD845 -:10B9E800E068026E1AD84A2849CC1AD8F01F001C01 -:10B9F8002FCDC008350A300B0E9CF01F001EF01F1B -:10BA0800001E8F1C1895C0610E9CF01F001C8DA590 -:10BA1800C178344A49ABF01F001B499B343A6E1C6D -:10BA2800F01F00190C9A499B6E1CF01F00190C9C02 -:10BA3800F01F00185C5CC0700C9CF01F0017E06CD5 -:10BA480000FFD822ED380035A3B8ED680035D822BC -:10BA580080039DC48003A13880039D9C800094C40A -:10BA68008002E2A4800112288003A14880039FA0DD -:10BA78008002E8BC800112008002E28C8003B409D5 -:10BA880080011260800113208000BBBC800111F886 -:10BA98008000B5988000AE50E06C00FFD82200000E -:10BAA800D421202D1896580CC0E14BA8201D1AD877 -:10BAB800E06803781AD84B884B8C1AD8F01F0038E6 -:10BAC8002FCDC00878A75807C0E14B28201D1AD8E9 -:10BAD800E068037A1AD84B384B0C1AD8F01F00309C -:10BAE8002FCDC0086F295BF9C1102E2933C8E06A31 -:10BAF800FFFFF2080D081438F40817B0EF580020BB -:10BB08005808F9B80001EFF80C106F395BF9C1104B -:10BB18002E2933C8E06AFFFFF2080D081438F4082C -:10BB280017B0EF5800225808F9B80001EFF80C11C7 -:10BB38006EB850185808C041FC18FF0050186EC85D -:10BB480050085808C0716EA84019F3E80008A1A869 -:10BB58005008EECBFFD80C9CF01F0013FACBFFFC6B -:10BB68000C9CF01F00121A9B0C9CF01F00110C9CDF -:10BB7800F01F0010EF39001230A8F0091800EFF894 -:10BB88001E12F9B80100EFF81E132FEDD82200009D -:10BB980080039DC48003A16080039D9C800094C4A1 -:10BBA8008003A17C8000CBC88000CA928000CA7440 -:10BBB8008000CB88D43178A71896149574186E290C -:10BBC8005809C0916E395809C061EF0B0010F20B8B -:10BBD8001900C0E04BE8201D1AD8E06805651AD89E -:10BBE8004BC84BDC1AD8F01F003D2FCDC0088A5B2C -:10BBF80032BAF40B1900E088020F118B302AF40BCB -:10BC08001800E0810209F93C002EECCBFFD1F0CA04 -:10BC1800FFE4C0982FF917345C59153EFC0418004E -:10BC2800E08101FAF8091800CF6311FA11CB11D994 -:10BC380011E8B169F3EB1189F3E810896E08F5E9A9 -:10BC480010091039E08101E80E9CF01F00258A4C8C -:10BC5800E06800F0F00C1900E088000FF8CC00F064 -:10BC6800EF5C00105C7CF01F001F8F3CC051EF5C44 -:10BC78000010E08F01D1E06C00F0F01F001A8F2C4B -:10BC88001894C0C16E3C580CE08001C6F01F001625 -:10BC9800EF5400108F34E08F01BF189B3009E06A21 -:10BCA80000F00A9CF01F0011E06800F0F00C190089 -:10BCB800C2004878201D1AD8E068052E1AD848C84E -:10BCC800485C1AD8F01F00052FCDC00880039DC41A -:10BCD80080039FA080039D9C800094C48000AEC414 -:10BCE8008002E2A48002E28C8000CEC48003A1948A -:10BCF8006E3B580BE08001B2E06900F0EF1A0010CB -:10BD08000A9CF01F0036EF080010F8081900E080C0 -:10BD180001A54B38201D1AD8E06805351AD84B18EC -:10BD28004B1C1AD8F01F00312FCDC00819A8305A63 -:10BD3800F4081800E0810100EF3800123019F20809 -:10BD48001800E08100EC30086CA4333B89D889B82E -:10BD580089C8089CF01F0026C0F0F8C8FFFC19AB82 -:10BD6800119919BA1188B16AF5EB118AF5E81088AA -:10BD78001248E948004433AB089CF01F001DC0E09E -:10BD8800F8C8FFFC19AB119919BA1188B16AF5EB1B -:10BD9800118AF5E810881248C0386918A198E9484E -:10BDA800004833BB089CF01F0012C0E0F8C8FFFC35 -:10BDB80019AB119919BA1188B16AF5EB118AF5E82E -:10BDC80010881248C0286918E948004C6828F0C94A -:10BDD800FFF0C0F11298C1C88000CEC480039DC492 -:10BDE8008003A1C880039D9C800094C48000AAF4AD -:10BDF800F1390013F13B0010F13A0011F13800124B -:10BE0800B16AF5EB118AF5E81088F3E8100889A8FB -:10BE1800301B089CF01F0084C0E0F8C8FFFC19AB79 -:10BE2800119919BA1188B16AF5EB118AF5E81088E9 -:10BE3800124889B8303B089CF01F007BC0E0F8C866 -:10BE4800FFFC19AB119919BA1188B16AF5EB118A7F -:10BE5800F5E81088124889C831CB089CF01F007299 -:10BE6800C0E0F8C8FFFC19AB119919BA1188B16A7A -:10BE7800F5EB118AF5E81088124889D8306B089CD0 -:10BE8800F01F00691892C2E01998A38889E8582819 -:10BE9800F9B80B02E9F8BA0E3003C1D8E608150262 -:10BEA800E6C9FFF22FE8E8090029E4080008113E76 -:10BEB800113AB16AF5EE118A118EF5EE108A1191D8 -:10BEC800069CF5E11001F2CBFFFC93112FF3F01F54 -:10BED80000575C5368E81033CE23069C4D4BF01F87 -:10BEE80000536CA43008E93A00123089EF58001E5C -:10BEF800F20A1800E9F91E12E9F81E130C9C300A20 -:10BF0800E8CBFFD8F01F004BE93800132FF8E96899 -:10BF180000133018E958001EC7E820383029F20805 -:10BF28001800E08B007930080C9CEF58001EF01FB9 -:10BF38000042C7183069F2081800C3513019EF38A9 -:10BF48000012F20818005F0B3039F20818005F0978 -:10BF5800F7E91009C0813049F2081800C040F40818 -:10BF68001800C5916CA40C9C3003EF53001EF01F01 -:10BF780000330C9C4AEBF01F00320C9C4ACBF01F9C -:10BF880000310C9C4AABF01F0030E939001230C870 -:10BF98000C9CF0091800E9F31E13E9F81E12F01FB3 -:10BFA800002BC398302AF4081800C351EF38001248 -:10BFB800F2081800C30130086CA4EF58001E336B58 -:10BFC800089CF01F0019C270F8C8FFFC19AB119942 -:10BFD80019BA1188B16AF5EB118AF5E81088124888 -:10BFE80089986828F0C9FFF0C0311298C108F13962 -:10BFF8000013F13B0010F13A0011F1380012B16A58 -:10C00800F5EB118AF5E81088F3E8100889A80C9C6C -:10C01800F01F000F0E9CF01F000F0A9CF01F000E6F -:10C02800D83200008000AAF48000C19C8003B409C3 -:10C038008001384C8000BAA88000CABC8000CBC8F8 -:10C048008000CA748000CA928000B5988000B6B497 -:10C058008000AEC48000D13C335B0E9CF01F00030F -:10C06800FE91FE66CD8B00008000AAF4D4314C18F6 -:10C07800301370073002069430813050C7686EA6BE -:10C088005806C720ED05001EE6051900E0880006E1 -:10C098002015ED55001EC688E6051900C651ED3875 -:10C0A8000012306AED52001EF40818005F0A30C909 -:10C0B800F20818005F09F5E91009300AF4091800B8 -:10C0C800C501E8081800C0B1ED380013E0081800F1 -:10C0D800E08B00360E9CF01F0028C468E2081800A8 -:10C0E800C191ED380013E8081800E08B0010300A01 -:10C0F800ECCBFFD80E9CF01F0021ED380013ED5556 -:10C10800001E2FF8ED680013C2F80E9CF01F001CEB -:10C11800C2B8E0081800C0510E9CF01F001AC248AF -:10C128003049F2081800C0F1ED380013E208180091 -:10C13800E08B00060E9CF01F0014C1680E9CF01FD7 -:10C148000013C0F83039F2081800C0E1ED380013C8 -:10C15800E8081800E08B00060E9CF01F000DC04890 -:10C168000E9CF01F000C6E075807C8A1D8320000BB -:10C17800000080CC8000B6B48001384C8000BAA89A -:10C188008000B2E08000B7DC8000B1D88000B4AC99 -:10C198008000B598D4013019F20C1800E08B001D0E -:10C1A800580B5F1A48D9720958095F19F5E900094F -:10C1B800C13017B9178E179A17A8B16AF5EE118A08 -:10C1C800F5E81088F3E81008C0704858304AF00CB9 -:10C1D800002CF01F0004D80200001D5800001D505C -:10C1E8008002E736D42130181897F00B1800E08B3E -:10C1F80000074868304AF00B002BC038304A484BDB -:10C20800F01F00040E9CD82200001D508003B409C2 -:10C218008002E736D4313013189516911492E60C43 -:10C228001800E088000F4BB8201D1AD8E0680246B5 -:10C238001AD84B984B9C1AD8F01F00392FCDC0083C -:10C248004B89F20C0028F20C072B11BA119911A88E -:10C25800B169F3EB1189F3E81088F5E81008C0E13B -:10C268004AC8201D1AD8E06802471AD84AE84ABCCA -:10C278001AD8F01F002B2FCDC008300AE06B011030 -:10C28800149CF01F002A1897C041E06600FFC758A9 -:10C2980078045804C0E049F8201D1AD8E068024D17 -:10C2A8001AD84A3849DC1AD8F01F001D2FCDC0080B -:10C2B800781630CA089B0C9CF01F001EECC9FFF4CE -:10C2C800AC92ACD3E5D2C110ACA3ACC42011AC8203 -:10C2D80032EC2FF1F2C8FFFF300AC05810CBF5D26C -:10C2E800C0082FF1038BF4C2FFFFE80B18005F139F -:10C2F800F80B18005F16E7E60006E8061800CEF10E -:10C30800B28A0389E8091800C1601099CE3B000081 -:10C318008003A1E48003A22880039D9C800094C42C -:10C3280000001D508003A2408000D3188003A2643F -:10C338008002E8BCF0CBFFFB10C9B089B0A9301966 -:10C34800B099B0B96E180E9C101B5C7BF01F000CE6 -:10C3580048C848D6F0050025335A6C0C0A9BF01FD4 -:10C36800000B6C0C0A9A33590E9BF01F0009EDDC88 -:10C37800C0080E9CF01F00070C9CD8328000D21019 -:10C3880000001D5000001D5880011320800114F08A -:10C398008000D13CD421189A303CF80A1800E08873 -:10C3A800000F4BE8201D1AD8E068028A1AD84BC83B -:10C3B8004BCC1AD8F01F003C2FCDC0084BB8E06713 -:10C3C8000118F4070247F007000730180F8B169979 -:10C3D800F00B1800C0A0C603302BF6091800C0F0F7 -:10C3E800F8091800C4C1C4383008AEABAEB8AE986E -:10C3F800EECBFFF43028300CAE88C3680FA92019A3 -:10C408005C59AEA9C4910FBB2FFB5C5BAEBB0F9C04 -:10C41800304EFC0B1800C251F20C1800C1214A4AD8 -:10C4280015FB15CE15DC15EAB16CF9EE118CF9EA9D -:10C43800108AF7EA100AC050AEB9AEA8AE98D82252 -:10C44800EEF801105808C070EEFA0114300BEECC6B -:10C45800FFF45D183008AE883008EF480110D82284 -:10C46800AEABEECBFFF4F01F0013D8226E282018D5 -:10C478008F28C121EF480110AE88D8224878201DA6 -:10C488001AD8E06802C61AD848B8486C1AD8F01FFB -:10C4980000062FCDC008D8228003A1E48003A28023 -:10C4A80080039D9C800094C4000018F000001D507B -:10C4B8008000C21C8003A29CD431580B5F081292E2 -:10C4C80016974BB914967209189558095F04F1E448 -:10C4D8001004E08100B6580CE08000B31989E8091F -:10C4E8001800E08000AEF01F0033E04C00FFE08B46 -:10C4F80000A84B1B0A9CF01F0031C08137F8AEA47E -:10C50800AE88AE9C3018AEB8D8320A9CF01F002C0A -:10C51800F8081618AE88F1DCC208AEBCAE98F1DC9B -:10C52800C108AEA85BFCE081008F4A63300430305C -:10C5380006910788E0081800C171E80400280A9CE1 -:10C54800F00B1503101B2FFBE20B003B2FCBF01F4A -:10C55800001BC0A1E0680118B13449A8F004000428 -:10C56800E8F8010CC0782FF4E6C3FEE85844CE2161 -:10C578003FF8F0091618AE89F3D8C208AEB8AE99DC -:10C58800F3D8C108AEA95BF8C5E1300748E848DB35 -:10C59800118A0E9C0E9930313043F2C0FFFF178488 -:10C5A80016985804C1211297C358000000001D585E -:10C5B8008002EDD08003A2BC8002ECC880011E106E -:10C5C800000018F0000018ECE2041800C0C117C8F9 -:10C5D800F4080104F40801081838E08A0005F9D4C1 -:10C5E800C0081297F3D0C008F6CBFEE8E609180099 -:10C5F800CD513039F2071800E08B0027494BE0682D -:10C608000118EE080248F6080008118BF20B180012 -:10C61800C1B1F4C9FFFFB0CAF1460110301AF142A6 -:10C628000114B08AF0CCFFF448A80A9BB089F01F27 -:10C63800000A0E9CF01F0009E06C00F2D832E06C92 -:10C6480000F7D832D83AE06C00FFD832000018F072 -:10C65800000018EC8002ED708000C39CD40148985B -:10C6680070085808C0D0300CF01F0007301CF01FAD -:10C678000006302CF01F0004303CF01F0003D802E5 -:10C6880000001D588000C39CD421494C4946F01F26 -:10C6980000156C0518975805C1E1F01F00138D0CA3 -:10C6A800C1A0492B0A9AF01F00120A9A491B6C0C68 -:10C6B800F01F00116C085808C0E05807C0C0EE0908 -:10C6C800161848E8B0B7B089F3D7C208EFD7C10841 -:10C6D800B099B0A7D82200008003A2C800001D5856 -:10C6E80080011E10800112008003B40980011260CD -:10C6F8008000C704800111F800001D50D431E068A3 -:10C7080002001496944AF00A1900E08B00E331986D -:10C71800F00A1900E08800DE4DF75C7A30090E9BBC -:10C728000C9CF01F005E8C48F8081900E08100D2CC -:10C738000F993038F0091800E08B00CCE06501183B -:10C74800AB394D75120530290B8AF20A1800E081C1 -:10C7580000C1AA880FBAF5DAC004AADA0FD80FCB3D -:10C76800F1EB108B0FF80FEC5C8BF1EC108C3009AF -:10C778005C8C0FA8F2081800E084009DF20A1800EB -:10C788005F18301AF40B18005F1AF5E81008F20861 -:10C798001800E0810090EAC4FFF42F4708980F8939 -:10C7A800129AE21A00C0E04A00C0C1502FF7C098A0 -:10C7B800F3DBC0082FF7118BF40B1800C7B12FF863 -:10C7C800F2CB00010F8A5809CF41F20A1800C03095 -:10C7D8002FF8CE6B4B0B30082F4B1739129AE21AF1 -:10C7E80000C0E04A00C0C060120B1789F0091800A9 -:10C7F800CF51F1DCC0082FBB300E301A3047C58846 -:10C808001739129CE21C00C0E04C00C0C060120B3B -:10C818001789FC091800CF512FFB17CC17D9B1691C -:10C82800F3EC118917ECF7330008F3EC108917A221 -:10C8380017FC1781F9E91009F73C0009F9E3108C96 -:10C8480017B35C8CE7E2108317925C83E5E11082F2 -:10C85800F4021900C281F4031900C251EE0C190048 -:10C86800C2218B29E8593A80E0880005E8783A80A7 -:10C878008B28EAC7FEF42F6B304A0E9CF01F000984 -:10C88800EAF801105808C250EAFA01140E9B089CF5 -:10C898005D18C1F800001D5C8000CEC4000018F0CF -:10C8A8008002E7365C7C20182F6C5C58180B5808FF -:10C8B800CA81EAF801105808C070EAFA0114300B6E -:10C8C800EACCFFF45D183008AA883008EB4801105C -:10C8D8000C9CF01F0002D8328000D13CD401F01F1C -:10C8E8000003F01F0003D8028000C8F88000C6903B -:10C8F800D42149A949ABF2CCFEC4F2C8FF54300A8E -:10C90800F2C9FF50910A930AB22A172EF14EFFFC82 -:10C918002F092F081838CF71492949382FD9149C65 -:10C92800E019FFFCF0C6FFDC48D7490E910CEE0A6F -:10C938000405189BC098700493042FFB9109FC0A06 -:10C9480005045C8B0809EA0B1900CF632FC82FEA8E -:10C958000C38CED1D8220000000080D48003A2D8A1 -:10C9680000001F5C000072E88003A394D401580BF8 -:10C97800C200F1DBC002C0E048F8201D1AD8E06808 -:10C98800016B1AD848D848EC1AD8F01F000E2FCDE2 -:10C99800C00848D8F00C03299709F00C092B48B8AF -:10C9A800A56CF00C000CF8CCFF54780820189908F6 -:10C9B800D80200008003A2EC8003A33080039D9C72 -:10C9C800800094C4000072E8000080D4D421189834 -:10C9D800588CE088000F49F8201D1AD8E068013DFE -:10C9E8001AD849D849DC1AD8F01F001D2FCDC00825 -:10C9F80049CE49D9FC0C032CF0CAFFF5580CC230BB -:10CA0800A56AF00B15047807F20B000BFC08092740 -:10CA1800F6CBFF5414097608720A2FF8103AF3F887 -:10CA28003A009708F1DCC002C13048A8201D1AD886 -:10CA3800E068014F1AD848D8488C1AD8F01F000867 -:10CA48002FCDC008A56A140992282FF8B228D82239 -:10CA58008003A2EC8003A35080039D9C800094C4B3 -:10CA6800000072E8000080D48003A370580BC0C097 -:10CA780017B8178A179917ABB169F3EA1189F3EB5D -:10CA8800108BF1EB100B993B5EFC580BC0C017B82C -:10CA9800178A179917ABB169F3EA1189F3EB108B71 -:10CAA800F1EB100B992B5EFC4828910C5EFC000002 -:10CAB800000080D0D4211897F9380035EDB800006F -:10CAC800C0D1A1C8F968003578885808C0205D1819 -:10CAD8006E785808C0300E9C5D18D822F93C003595 -:10CAE800F9DCC0015EFC580CF9FB1A075EFCD703A1 -:10CAF800D421300A18971696302C96CBF01F001ABE -:10CB08001895C041E06600FFC2B80C9BF01F0017E3 -:10CB1800EDDCC008C0500A9CF01F0015C2180A9826 -:10CB280070095809C0301298CFCB6EF95809C15016 -:10CB38006F095809C0E148F8201D1AD8E068025367 -:10CB48001AD848D848DC1AD8F01F000D2FCDC008D5 -:10CB58009305EF480040C048EF4800408FF50C9C13 -:10CB6800D82200008000D3188000CF988000D13CE4 -:10CB78008003A3A88003A44480039D9C800094C4E0 -:10CB8800D4211897F9380035EDB80000C170A1A874 -:10CB9800F968003578885808C0205D186E785808FC -:10CBA800C0300E9C5D18EF380035EDB80005C06147 -:10CBB8000E9CEECBFFFCF01F0002D8228001370C40 -:10CBC800D42117881799B169F3E8118917A8F3E8F0 -:10CBD800108917B81697F1E91009189678181039BE -:10CBE800C27049A8700CC0A8780978356C1810393B -:10CBF800C041301BF01F00160A9C580CCF614958E1 -:10CC08007008C14870095809C1006C1A1439C0D19C -:10CC18000F8A0F99B169F3EA11890FAAF3EA10890B -:10CC28000FBAF5E91009910970385808CEC10F8A72 -:10CC38000FB90F98B168F1EA11880FAAF1EA1088C4 -:10CC4800F3E810088D18D8220000820C8000E12437 -:10CC580000008214D421149712961895F01F001022 -:10CC68005807C0C00FB80F8A0F990FA7B169F3EA28 -:10CC78001189F3E71087F1E710078B275806C0C022 -:10CC88000DB80D8A0D990DA6B169F3EA1189F3E67D -:10CC98001086F1E610068B36D82200008000CBC83B -:10CCA800D4213006999899169926993699A6997695 -:10CCB800998699F6F94600404908FAC4FFEC681EBF -:10CCC8006804F96600351185F96500382FF5B085D7 -:10CCD8001897994EF01F000A0E9C5D145C5C4898EA -:10CCE800580CEC071710F1F90000EFF90A00F1F7FA -:10CCF8000A000E9CD82200000000730C8000CC5C57 -:10CD0800000080CC1898300CC0482FFC70085C5C80 -:10CD18005808CFC15EFC580CF9F81207F9B901019F -:10CD2800F1D9E108F9F81C075EFCD703D401580CC7 -:10CD38005F08580B5F09F3E81008C1304978201DD7 -:10CD48001AD8E068028F1AD84958496C1AD8F01FC7 -:10CD580000162FCDC008964AF4080008B848129C5F -:10CD6800984878095809CF819859F0091900C0E006 -:10CD780048A8201D1AD8E06802971AD848B8489CD5 -:10CD88001AD8F01F00092FCDC0089649990BF20850 -:10CD98000008B848D80200008003A4708003A4B437 -:10CDA80080039D9C800094C48003A4ECD421169732 -:10CDB800F01F00065807EFF81207F9B90101F1D979 -:10CDC800E108EFF81C07D8228000CD34D421580C94 -:10CDD800C0E14B58201D1AD8E06801B01AD84B386A -:10CDE8004B3C1AD8F01F00332FCDC008580BC03168 -:10CDF800169CD8223008F00B1900C154F60911000E -:10CE080098585C89F2081900C0F24A78201D1AD88F -:10CE1800E06801B71AD84A884A5C1AD8F01F00257A -:10CE28002FCDC0081699F93E000C300A3037F40EA1 -:10CE380019005F08EE0E19005F061497104678185F -:10CE4800F4061800C0A0F00B01099919F8CAFFF000 -:10CE58001439C2029918DA2A201E3017EE0E19006A -:10CE6800E08B000CF40B1900C1D4985AF20A19008F -:10CE7800C19316189918C0E848B8201D1AD8E06858 -:10CE880001E61AD848D848AC1AD8F01F000A2FCDA6 -:10CE9800C00898581608B8589848F00B000BB84BBB -:10CEA800D82ADA2A8003A47080039EA480039D9C5C -:10CEB800800094C48003A51C8003A53CD43116913E -:10CEC8001497580CC0E14AD8201D1AD8E068033ED0 -:10CED8001AD84AB84ABC1AD8F01F002B2FCDC00860 -:10CEE800580BC070300518960A920A930A90C388A6 -:10CEF8004A28201D1AD8E068033F1AD84A384A1C25 -:10CF08001AD8F01F00212FCDC0085809C0A08C588E -:10CF1800F208010AF0091900C043F3DAB010C1F8A9 -:10CF2800F1D9C0108C54E8090109EE091900EE097D -:10CF380017B06C1BE9D9B010F9D5C010100BE20C72 -:10CF4800000C089A5C7AF01F0012E8030003081727 -:10CF5800E80500055C835C855C8730096C0658062B -:10CF68005F1AE40719005F18F5E80008E0081800E0 -:10CF7800CCD1069CD83200008003A4708003A5B0F1 -:10CF880080039D9C800094C48003A5D08002E7366E -:10CF9800D431580C5F08580B5F0918961697F3E8B8 -:10CFA8001008C06198499648F0091900C0E24C7809 -:10CFB800201D1AD8E06802FE1AD84C584C5C1AD8C2 -:10CFC800F01F00452FCDC00830050A945806C0E16F -:10CFD8004BE8201D1AD8E06803031AD84BF84BDC3D -:10CFE8001AD8F01F003D2FCDC0088C5808995C79DD -:10CFF8008E53F5D8C010F7D3C010121AF3D5C0104D -:10D00800F6090109123AE7D5E413E8091750F1D9EE -:10D01800E51308985C786C1C100CF1D5C0105C8383 -:10D028006E1BF5D3C010100BF01F002DE604000492 -:10D038008C585C84F0041900E088000F4A38201DE1 -:10D048001AD8E068030F1AD84A684A2C1AD8F01F71 -:10D0580000222FCDC008F0041900EDF60000F9B445 -:10D068000000E60500058E585C85F0051900E0888B -:10D07800000F4968201D1AD8E06803151AD849A876 -:10D08800494C1AD8F01F00142FCDC008F00519001C -:10D09800EFF72000F9B502005807C2908E598E4864 -:10D0A800F0091900C2416E085808C2104878201DBE -:10D0B8001AD8E068031F1AD848C8486C1AD8F01F55 -:10D0C80000062FCDC00800008003A4708003A5F4DB -:10D0D80080039D9C800094C48003A6248002E736C8 -:10D0E8008003A6348003A64C8003A6685806C16056 -:10D0F8008C598C48F0091900C1116C085808C0E017 -:10D108004898201D1AD8E06803241AD84878488C13 -:10D118001AD8F01F00082FCDC0085807FE91FF58F5 -:10D128000E9CD8328003A4708003A66880039D9C5F -:10D13800800094C4D421189B580CC0E14AB8201D23 -:10D148001AD8E068021C1AD84A984AAC1AD8F01FB4 -:10D15800002A2FCDC008F939000C3038F009180022 -:10D16800E088000F4A18201D1AD8E06802281AD84B -:10D178004A284A0C1AD8F01F00202FCDC0083007C3 -:10D18800303530169679F2C800015C885809C0E13C -:10D198004968201D1AD8E06802351AD84988495CC0 -:10D1A8001AD8F01F00152FCDC008B6785808C1B19D -:10D1B800F738000C169CF0C900017604EA0819003B -:10D1C800C031308CC068EC091900E08B0006307C57 -:10D1D800F01F000CC038F01F000C2FF7089B5C579D -:10D1E8005804CD110E9CD8228003A47080039EA4FD -:10D1F80080039D9C800094C48003A6948003A6AC01 -:10D208008000C9748002E28CD421580CC0E14B988C -:10D21800201D1AD8E068015F1AD84B784B7C1AD8C1 -:10D22800F01F00372FCDC0083019F938000CF2086C -:10D2380018005F1A3039F20818005F19F5E900097B -:10D24800C1405808C1203029F2081800C0E04A98A7 -:10D25800201D1AD8E06801631AD84AA84A7C1AD84F -:10D26800F01F00272FCDC0089848F00B1900C3F213 -:10D27800F3D8C0101897F1DBB0105C7B121BC27892 -:10D28800E04BFFFEE08A000F49A8201D1AD8E0688D -:10D2980001771AD849C8499C1AD8F01F00192FCD10 -:10D2A800C0088E481608AE486E075807C0E14918EE -:10D2B800201D1AD8E068017B1AD8494848FC1AD8BA -:10D2C800F01F000F2FCDC008F1DAB0108E59F00909 -:10D2D800010AF2081900FE9BFFD5AE48AE586E0C45 -:10D2E800580CC030F01F000A30088F08D822000000 -:10D2F8008003A4708003A70080039D9C800094C4D1 -:10D308008003A7188003A7348003A7488000D13C76 -:10D31800D431202D16971495581CC0B0C083582CB2 -:10D32800C040583CC0B1C1783004C0583144C0280E -:10D3380030042EC42E445C84C0F84C08201D1AD832 -:10D34800E06800D11AD84BE84BEC1AD8F01F003E21 -:10D358002FCDC00830045825E08B00065815E08210 -:10D3680000DDCBF85835E08100E6308CF01F00373F -:10D378001896E08000F25C740E99E8C8FFFD5C79AD -:10D38800E018FFFCB847E06A02443000F4080108DE -:10D39800F8040004F0090D472ED4E014FFFCAC5744 -:10D3A8009914F965000C99005C77F8C3FDAC0E047C -:10D3B8000833C0E24A18201D1AD8E06800EB1AD8D2 -:10D3C8004A384A0C1AD8F01F00202FCDC008580838 -:10D3D800E089000F4998201D1AD8E06800ED1AD896 -:10D3E80049C8498C1AD8F01F00182FCDC008F20779 -:10D3F800010700980A9918943015E0610243B8753E -:10D40800E0620244C6A850195008308CF01F000F83 -:10D418000E9B189A5C8BF4CEFFF0F6011900F60CFF -:10D428001720E40C173040194008580AC1610C9CB9 -:10D438001496F01F0009C9088003A4708003A76030 -:10D4480080039D9C800094C48000C9D48003A77C7D -:10D458008003A7B08000D13C9508890AF569000CC3 -:10D46800F560000DE047FFFFC0E14BD8201D1AD83A -:10D47800E06801071AD84BB84BBC1AD8F01F003B1C -:10D488002FCDC008951EB45CB44BFDDEC002C0E0D1 -:10D498004B38201D1AD8E068010D1AD84B484B2C80 -:10D4A8001AD8F01F00322FCDC0085C7C8CDB18170F -:10D4B80014946C1CF80B000B1633C0E24A88201D2C -:10D4C8001AD8E06801101AD84AA84A7C1AD8F01F5E -:10D4D80000272FCDC008B4755807FE99FF96C3786A -:10D4E8000E985C782FD8E018FFFC5C74E8CCFFED50 -:10D4F800E01CFFFC100CF01F00201896C2D030086A -:10D50800F8040004AC572ED4B847E014FFFCF968BF -:10D51800000C99149908C1B8307CF01F00181896AF -:10D52800C1B03008AC57F965000CB847990899188C -:10D53800C0E848B8201D1AD8E068013D1AD8490843 -:10D54800489C1AD8F01F00092FCDC0083018AC78B5 -:10D558003008ED68000D0C9C2FEDD8328003A470C4 -:10D568008003A7E480039D9C800094C48003A7F8EF -:10D578008003A77C8002E2A48000C9D48003A82885 -:10D58800D43149B8781918951094300CF2C2FFF4C8 -:10D59800F3310009700718961893C1E8EF380010A6 -:10D5A8000238C1716E585808C1400A9A0E9B6E6CB9 -:10D5B80004995D18C0E05806C0410C95301CC0A8FD -:10D5C8006E388D3868088F388907301C3005C028B8 -:10D5D800300C0E966E37E60C18005F0858075F1976 -:10D5E800F3E80008E6081800CDA1D832000073104F -:10D5F800E06C00FB5EFCD421E067040078A8F90B1E -:10D60800002C78C9F5DBC010F90E003C100AEE0EAC -:10D618001900E0880005E06E0400C0285C7EF4096B -:10D628000107EE0E010EC076F95B002E78CCF40CE3 -:10D63800010CD822F009010A580AE08A00063008CD -:10D64800F958002ED82AF2080108F958002ED82ACD -:10D65800996B5EFCF94B008C5EFCF94B00885EFC14 -:10D66800F94B00985EFC998B5EFCF96A0039F94B1E -:10D6780000945EFC5EFC5EFC48A87008C028703808 -:10D688005808CFE148887008C02870385808CFE19A -:10D6980048687008C02870385808CFE15EFC000060 -:10D6A8000000820C0000821400008220D4014A6825 -:10D6B8007008C30870495809C0E14A48201D1AD8A3 -:10D6C800E06805AC1AD84A284A2C1AD8F01F00225C -:10D6D8002FCDC0085819C0E149C8201D1AD8E068E4 -:10D6E80005AD1AD849D849BC1AD8F01F001B2FCD50 -:10D6F800C00858A9C0E14958201D1AD8E06805AEED -:10D708001AD84978493C1AD8F01F00132FCDC00801 -:10D7180070385808CD0149387008C128704958A98F -:10D72800C0E048A8201D1AD8E06805B11AD848E812 -:10D73800488C1AD8F01F00082FCDC0087038580838 -:10D74800CEE1DA0A0000820C8003A8688003A8AC46 -:10D7580080039D9C800094C48003A8D88003A904FA -:10D76800000082208003A934D43118961497784891 -:10D778005808C0E04C48201D1AD8E068011A1AD889 -:10D788004C284C3C1AD8F01F00432FCDC008580A2B -:10D79800C3514C19720C4C19720A4C19109E9207FD -:10D7A8004C08E069100070052FF70A985C87EE0EA8 -:10D7B8001900F2071790C088F104001C0E93EE04BC -:10D7C8001900CF3070385808CF811898C088F104F4 -:10D7D800001C0E93EE041900CE8070385808CF81D3 -:10D7E8001498C088F104001C0E93EE041900CDD0E3 -:10D7F80070385808CF814AA8B0074A887008C1F81D -:10D80800F109001C0E93EE091900C181700A580A2B -:10D81800E0800099580BE0800096178C1799B16941 -:10D82800F3EC118917ACF3EC108917BCF9E910096E -:10D83800E0800089123AE080008670385808CE11DE -:10D8480049887008C1A8F109001CEE091900C141F6 -:10D85800700A580AC770580BC750178C1799B169C6 -:10D86800F3EC118917ACF3EC108917BCF9E910092E -:10D87800C690123AC67070385808CE6148A870052C -:10D888000A98C2D88003A8688003A96080039D9C79 -:10D89800800094C40000822000008214000001F877 -:10D8A8000000820C0000821CF109001C0E93EE0996 -:10D8B8001900C141700A580AC450580BC430178C5B -:10D8C8001799B169F3EC118917ACF3EC108917BCFF -:10D8D800F9E91009C370123AC35070385808CE518C -:10D8E80049A87008C158F109001CEE091900C0F1D7 -:10D8F800178A1799B169F3EA118917AAF3EA108907 -:10D9080017BAF5E91009700A123AC1C070385808F8 -:10D91800CEB1580BC11017891798B168F1E9118871 -:10D9280017A9F1E9108817B9F3E81008C050304A70 -:10D938000C9CF01F00078D354868ED57001C9106B8 -:10D94800D83AE06C00F5D832000082208002E73631 -:10D958000000821CD4211897169CF01F0008C0B044 -:10D96800F908002C5808C0702288EE081900F00742 -:10D9780017305C870E9CD82280012228D421F90810 -:10D98800002C1897F3D8C010E06CFFFFF5DBC0102F -:10D99800F8090109123AE08A000F4948201D1AD8EF -:10D9A800E06801BD1AD84928492C1AD8F01F00127E -:10D9B8002FCDC008100BE0680800EF5B002CF00BBF -:10D9C8001900EFF8BC160E9CF01F000CE04C01FF8C -:10D9D800E08A000AEF380026A1B80E9CEF680026FE -:10D9E800F01F0007D82200008003A8688003A988D8 -:10D9F80080039D9C800094C48000D5FE80010CECBF -:10DA0800D4211896304CF01F000A1897C0E0ECE8B3 -:10DA18000000F8E90000ECE80008F8E900086C48A4 -:10DA28009948781CF01F00030E9CD8228000C9D4A6 -:10DA38008000CD1ED4211896580CC0311897C0B854 -:10DA4800781C580CC030F01F000518970C9B304C00 -:10DA5800F01F00030E9CD8228000D13C8000C974BE -:10DA6800D42130071896C0880C9C6C06F01F00055E -:10DA7800F80700075C575806CF810E9CD822000093 -:10DA88008000DA3CD4217848189758A85F1A5808BB -:10DA98005F19F5E90009C2005818C1E0F8FC0084D4 -:10DAA800580CC060F01F000D3008EF4800843FF8A4 -:10DAB800EEFC0080EF58003AF01F000930066FECCA -:10DAC800EF460080F01F00066FFCF01F0005EF46D0 -:10DAD800007CEF460078D8228000D13C8000DA68CC -:10DAE800D421169778081638C04176389908C11895 -:10DAF8004B899308C0A870390E39C0614B599308F7 -:10DB08006E399139C06812985808CF614B1993083B -:10DB180030060E9C8F36F01F00306E4858A85F19EB -:10DB280058185F181268EC081800C0C0EF380026B3 -:10DB3800EDB80000C071A1B80E9CEF680026F01F78 -:10DB480000276E485818C3206FE85808C0E04A48B4 -:10DB5800201D1AD8E06804F91AD84A284A2C1AD87D -:10DB6800F01F00222FCDC0086FF85808C0E049C840 -:10DB7800201D1AD8E06804FA1AD849D849AC1AD82E -:10DB8800F01F001A2FCDC008EEF800805808C0E03A -:10DB98004938201D1AD8E06804FC1AD84958492C7D -:10DBA8001AD8F01F00122FCDC00830088F48F01F78 -:10DBB8000012C0E148A8201D1AD8E06805021AD84A -:10DBC80048E8489C1AD8F01F00092FCDC008D82271 -:10DBD800000082188000DA8C80010CEC8003A868B1 -:10DBE8008003A9AC80039D9C800094C48003A9C4D1 -:10DBF8008003A9E08000D6B48003A9F8D42118973F -:10DC080078485808C0E04A68201D1AD8E0680175AD -:10DC18001AD84A484A4C1AD8F01F00242FCDC008F9 -:10DC2800303CF01F00231896C380EF08001CF958F9 -:10DC3800001C6E6899688E48A1B8B8483018994891 -:10DC4800EF38000BF968000BEF38000AF968000A92 -:10DC58006E089908497972080E38C0316E38C108C3 -:10DC680049599308C0A870390E39C06149299308E9 -:10DC78006E399139C06812985808CF6148E99308FD -:10DC880030080E9B8F38302CF01F000C48C948D83C -:10DC98008D8970098D3991060C9CD8228003A8685B -:10DCA8008003AA1880039D9C800094C48000C9D476 -:10DCB8000000821C000082188000C9748000D5F81A -:10DCC80000008214D431204D4B583005700910964D -:10DCD8002FF90A9491090A934B2830627007E08F54 -:10DCE800019E6E485808C0E14AF8201D1AD8E0681D -:10DCF80002571AD84AD84AEC1AD8F01F002E2FCD4E -:10DD0800C0085818C0E14A88201D1AD8E06802588F -:10DD18001AD84A984A6C1AD8F01F00262FCDC00886 -:10DD280058A8C0E14A08201D1AD8E06802591AD834 -:10DD38004A2849FC1AD8F01F001F2FCDC0085828C0 -:10DD4800C071EF38004EE4081800E0800081EF3819 -:10DD5800004E30CAF4081800C7A0EF3800AC10997C -:10DD6800E8081800C300EEF900A82FF9EF4900A849 -:10DD7800493A100AF53AFFFF1439C6B33009EF499A -:10DD880000A8E4081800F9B90801F1D9E808EFF883 -:10DD98008EAC0E9CF01F000BC5C80000000082105E -:10DDA8000000820C8003A8688003AA3C80039D9C25 -:10DDB800800094C48003AA688003AA948003AC38C6 -:10DDC80080010A20EF08003AE6081900F9B90401B1 -:10DDD800F1D9E408EFF84C1D6FF85808C3A0EF0913 -:10DDE800003AEF08004CF0091900C3356E4858286E -:10DDF800C100EF09004AEF0800484CD1A3581208A7 -:10DE0800EF39004EE2090709F0090948EF58004CBC -:10DE1800EF080060EF090056F0091900F00917B083 -:10DE2800EF08003CF3D9C02FEF590058F00A15014C -:10DE3800F0091900EFFA3C2CEF08003CEF53003AC8 -:10DE4800EF5800560E9CF01F003BC0383018C02811 -:10DE580030086E495869C0B16C0B6EDAF60A010ACF -:10DE6800E04A0028E08800042FF85C588ECAEDBA12 -:10DE78000003C39158495F0A58795F091449E809B2 -:10DE88001800C3106C0AEEFC00A0EEF100A4F80123 -:10DE980002416ED9EEFB009CF4090109E20B000E69 -:10DEA800E06A01F4FC0A0D00FAE100080039E08894 -:10DEB80000062FF830115C58C178EF3100ADE20C44 -:10DEC800034BF60A0D0A1439E088000E50180E9C10 -:10DED800F01F0019EF3900AD30012FF9EF6900ADDF -:10DEE8004018C0283001EEFC0080580CC1106ED9D3 -:10DEF8006C0A121AEF09004CF2091006123AC08394 -:10DF08005018F01F000E30004018EF4000806E4996 -:10DF18005839C1516C0A6ED9F4090109E049002841 -:10DF2800E08800182FF85C58C14800008003A85802 -:10DF3800800110608001109C8000DA685899C091B7 -:10DF48006C0A6ED9F4090109E04900F0E08B00047D -:10DF58005808C4900E9CF01F00434C385805C14027 -:10DF680070081037C0E14C18201D1AD8E06802E488 -:10DF78001AD84BF84BFC1AD8F01F003F2FCDC00819 -:10DF88006E388B38C13870090E39C0E04B78201DC7 -:10DF98001AD8E06802E81AD84B884B6C1AD8F01FD8 -:10DFA80000362FCDC0086E399109EEF80098580850 -:10DFB800C0403FBB6E6C5D185801C0F0EF180024DC -:10DFC800201DEEC9FFFC1AD80E9AEF18001C6EAB84 -:10DFD8006F7CF01F002B2FED0E9B302C6E37F01F3F -:10DFE8000029C1C8EF3900382FF9EF690038EF3A36 -:10DFF8000039F20A1800E08B0010EF680038EEF8DC -:10E0080000945808C0600E9B6E6C5D185C5CC04143 -:10E018000E9CF01F001D0E956E375807FE91FE638B -:10E0280049A849B410957006C6086C4858A8C0E0BD -:10E0380048E8201D1AD8E068030C1AD8495848DC6B -:10E048001AD8F01F000D2FCDC00868096CD8F20847 -:10E058000108E04800F0E08B004C0C976C36C4587F -:10E068008000DA8C0000820C8003A8688003AAC4B0 -:10E0780080039D9C800094C48003AAF08001023430 -:10E088008000C97480010CEC00008220000082101E -:10E098008003AB1C6A081036C0E149A8201D1AD8B5 -:10E0A800E068031B1AD84988498C1AD8F01F001851 -:10E0B8002FCDC0086C388F38C1386A080C38C0E0DA -:10E0C8004908201D1AD8E068031F1AD8491848FCC7 -:10E0D8001AD8F01F000F2FCDC0086C388B080C9B86 -:10E0E800302C6C36F01F000C5806CA01C0780C9C06 -:10E0F800F01F000A5807CCF1CE1B2FCDD8320000F4 -:10E108008003A8688003AB4C80039D9C800094C466 -:10E118008003AB748000C9748000DA8CD431202D60 -:10E1280018951691784858A8C0A1189B4A2CF01F3A -:10E1380000230A9B302CF01F0022C3B8780850082F -:10E148007818F903001C5018F9020024797778A68A -:10E15800F8F400987860189B49ACF01F00186BFC25 -:10E16800580CC030F01F00186BEC580CC030F01F72 -:10E178000016EAFC0080580CC030F01F00130A9B00 -:10E18800302CF01F000F5804C040009C3FBB5D14AA -:10E198005801C0F0201D5C72F1D3C0101AD20C9B3C -:10E1A800FAC9FFF4FACAFFF80E9CF01F00082FED19 -:10E1B8002FEDD832000082208000DAE88000C97490 -:10E1C8000000820C8000DA6880010234D42118969D -:10E1D800302CF01F00511897C5114D084D0A189999 -:10E1E8007008740BC0A870DAF60A010A123AF4092A -:10E1F8001720F00C172070385808CF61580CC04011 -:10E20800301BF01F0048302CF01F00431897C30143 -:10E218004C584C3A18997008740E37FBC178F13A8B -:10E228000014EC0A1800E08B000DF60A1800E08BC9 -:10E23800000970D7FC0701071237C033109CC0389B -:10E24800169A12977038149B0E995808CE91580C4C -:10E25800C040301BF01F0033302CF01F002F1897E0 -:10E26800C5704B28F10900D42019F15900D44AF897 -:10E27800F10900D42019F15900D4E06A00B0300B3C -:10E288000E9CF01F002B3408EF6800143FF8EF686D -:10E29800000B4A384A7A70097408F2080008950891 -:10E2A800EF48006CEF480068EF48005CEF4800500A -:10E2B8003008EF6800ADEF680038E0680800EF58F4 -:10E2C800002EEF58002C3068EF58004AEF58004CE9 -:10E2D800E0681000EF580072E0680200EF58003C58 -:10E2E8003FF8EF58003A3018EF5800564928EF48E1 -:10E2F800008CE068DD00EA18006DEF48009CE078CB -:10E3080024F88FD9EF4800A03098EF4800A40E9C5D -:10E31800D82200008000C9D40000822000008210AA -:10E328008000E1240000820C000080D48002E8BC58 -:10E33800000001F48000E5ECD401340CF01F000269 -:10E34800D80200008000E1D4D431189714961293B3 -:10E35800169578445804C0E04C98201D1AD8E068F7 -:10E36800020A1AD84C784C8C1AD8F01F00482FCDC6 -:10E37800C008580BC041E06600F7CB78304A140C4F -:10E38800F01F0043EF560024EF08001CE8081900AE -:10E39800C34110944BF84C0970064C08720B700C72 -:10E3A8004BF9E06A100092082FF80C995C88F00489 -:10E3B8001900F4081790C078F30E001CF00E19002D -:10E3C800CF4072395809CF911899C078F30E001CC4 -:10E3D800F00E1900CEA072395809CF911699C0785D -:10E3E800F30E001CF00E1900CE0072395809CF91B7 -:10E3F8004AB9B208EF58001C4AA84AB9700A72080C -:10E40800F40800089308EF48005CF0C90001E068D0 -:10E418000800EF580060EF58002CEF58002E300825 -:10E428008FC88FA8E0680200EF49006CEF490050E0 -:10E43800EF58003C0A9BE06C0200F01F001C5C8C4B -:10E44800F808100AEF5800583018EF430090EF58BA -:10E458000056EF5C003C30288F48495972080E3846 -:10E46800C0316E38C2C849399308C26870390E394C -:10E47800C221490993086E399139C2288003A868D6 -:10E488008003AB9C80039D9C800094C48002E73687 -:10E498000000820C0000821400008220000001F8B5 -:10E4A80000008210000001F48000D95C0000821C8A -:10E4B8000000821812985808CDA148D9930848D866 -:10E4C80070098F3991073019201D30081AD9109A10 -:10E4D8003029109B0E9CF01F00082FEDEDDCC008C2 -:10E4E800C0410E9CF01F00050C9CD8320000821819 -:10E4F8000000820C8001035080010CECD421189795 -:10E5080078465826C390E08B00075806C0C05816B6 -:10E51800C071C2785846C370C3635876C3C030060A -:10E528000C97C4184A8972081838C0317838C1085D -:10E538004A699308C0A870390E39C0614A399308EE -:10E548006E399139C06812985808CF6149F9930813 -:10E5580030080E9B8F38302C1097F01F001DC0A874 -:10E56800189B49CCF01F001C0E9B303CF01F001874 -:10E5780030070E96C188189B498CF01F00170E9B18 -:10E588000C9CCF5B301BF01F0016EDDCC008C0B13F -:10E598003058C088301BF01F0012EDDCC008C031B5 -:10E5A80030988F4858075F193008F00618005F0A3E -:10E5B800F5E90009F0091800C0400E9CF01F000999 -:10E5C8000C9CD8220000821C000082188000C974AC -:10E5D800000082148000DAE80000820C80010A0042 -:10E5E80080010CECD421169C1497580AC08094CB57 -:10E5F800F01F00070E9CF01F0007D82A5809C030EA -:10E60800149CD822F01F00045C5CD8228000D984B6 -:10E618008000D13C8000E504D42149887007C2A855 -:10E62800EEFB0084580BC140169AEEF8008C58088F -:10E63800C06030090E9B6E6C5D18C078169A1099F0 -:10E648000E9B109CF01F000E5C5CEFFC0A21EF385B -:10E658000026EDB80000C0D1A1B80E9CEF680026D6 -:10E66800F01F0008EF380026E018FFFCEF680026CE -:10E678006E375807CD61D8220000820C8000E5EC87 -:10E6880080010CECD401F01F0007487913882FF89B -:10E698005C58B288EDB80000C031F01F0004D80201 -:10E6A8008000E620000073148000DCCCD4314A6876 -:10E6B80070063058ED3E000C2EC6A58EF00E1900DF -:10E6C800E0880040205E3008A36E30175C8E302151 -:10E6D8003042E7DEC010E06401FFE0650200C2E8F6 -:10E6E800F5D8C010EC0A070BEE0B1800C080C293D7 -:10E6F800EC0A0009E20B1800C1B1C0382FF8C1D8E4 -:10E70800139BE40B1800C1D12FDA063AC1A413BA3F -:10E718002FC813A95C88F5E910895C89F2CA000141 -:10E72800E80A1900EA0917B0F959003CC0781399AA -:10E738005809C070F20800085C88FC081900CD135D -:10E74800D832000000007318D4217848189616971C -:10E75800F138000DEDB80000C1C1169C3007F01F5C -:10E768000020C368F138000DEDB80000C0E16C4826 -:10E77800F13A000CF139000DF3EA1089A1A9F16909 -:10E78800000DA989F169000C6E07F01F0016C0285A -:10E7980049555807C1D06E4811C411DBB16BF7E475 -:10E7A800118B11E48EEEF7E4108B6A0A8CE911F4F0 -:10E7B8000E9CE9EB100B16191409F20E010ECD3759 -:10E7C800C098141B6C1CAC6B5C7BF01F00088D0799 -:10E7D800D8225809FE99FFF7CFBB00008000DA68FD -:10E7E8008000DA3C0000731C8000D210D4314C58F1 -:10E7F80018971188EDB80004E081020C79994C282B -:10E80800F90C006070086FAAF208010BC186103974 -:10E81800C0614BE87008F4080108C1164BB87008CD -:10E82800103AC2914BA87008F139000FF138000E68 -:10E83800F3E81088F8081900E088001E4B487009B2 -:10E84800F338000FF339000EF1E910884AE972092C -:10E858005C88EF490064EF5800604AC97209EF49C3 -:10E8680000685808C080EF3900AC3008F00918007B -:10E87800EFF81EAC4A586F497008F009010B580BA5 -:10E88800E089004C3006EF5600704A2B960BEC0BD3 -:10E898001900C3215C7CEF160060F80A000A6FAC0F -:10E8A800EC0C000C143CC281EF0A003AF60A19007D -:10E8B800C2351039C211EF3800542FF85C58EF6890 -:10E8C80000543039F2081800E088000FEF090056AC -:10E8D800EF08003C12085C88F2081900E088014A39 -:10E8E800EF580056C469F2081800E08101430E9CF5 -:10E8F800F01F0009C3E93008EF680054C3A90000FD -:10E90800000073280000731C0000732400007318B3 -:10E91800000073208001016A5CD91009E08600D1EB -:10E928006F7912185808E08900CCEF380026EDB846 -:10E938000002C081A3C8EF680026EF080058EF580E -:10E948000056300A4D39EF6A004E720BEF6A0054D8 -:10E9580072096F48EF490050F6080108EF09007284 -:10E96800EF580070F2080008EF09004AEF580072EB -:10E97800EF080048A358F2080008EF58004C6E480A -:10E988005838E0880066EF080056EF090058F0098B -:10E998001900E0880006EF09003C1009C0A8EF192B -:10E9A800003CB339F7D8C010F20B0C0AF408000980 -:10E9B8005C89F0091900E088004CEF590056C488BA -:10E9C8006C08EF030074EF48007C6C1CF01F0032E9 -:10E9D800F8031900C0E24B18201D1AD8E06803B3E9 -:10E9E8001AD84AF84AFC1AD8F01F002F2FCDC008B1 -:10E9F800EF0800705808C09020186C49F339000DD2 -:10EA0800EDB90000EFF80C38EF0300746C1CF01F30 -:10EA1800002218130C9CEF530074F01F0024EF0819 -:10EA28000074EA081900C1606FF85808C1316FE82E -:10EA38005808C1014998201D1AD8E06803BF1AD8A0 -:10EA480049B8498C1AD8F01F00182FCDC0084914AE -:10EA580030056FF65806C2D06C4811CBF139000D5D -:10EA6800F3D9C0025F1A11D9B169F3EB118911EB1F -:10EA7800F3EB108911F81248680912188CE9F409A7 -:10EA8800000912085808FE9AFF9DE08F045F0000F5 -:10EA9800000073248000CD0C8003AC608003ACA818 -:10EAA80080039D9C800094C48000DA3C8003ACD035 -:10EAB8003FF8EF58003A3008EF680038C5A830082A -:10EAC800EF580070C5686C08EF030074EF480078D1 -:10EAD8006C1CF01F0021F8031900C0E249F8201D42 -:10EAE8001AD8E06803E01AD849D849EC1AD8F01FB8 -:10EAF800001E2FCDC008EF0800705808C0902018DD -:10EB08006C49F339000DEDB90000EFF80C38EF034C -:10EB180000746C1CF01F001018130C9CEF53007449 -:10EB2800F01F0012EF080074EA081900C2406FF8DD -:10EB38005808C2116FE85808C1E14888201D1AD842 -:10EB4800E06803EA1AD848A8486C1AD8F01F0006EB -:10EB58002FCDC0088000CD0C8003AC608003ACA82A -:10EB680080039D9C800094C48000DA3C8003ACD074 -:10EB78004C5430056FE65806C2106C4811CCF13978 -:10EB8800000D11DAF3D9C002B16AF5EC118A11EC63 -:10EB980011F858095F1B6809F5EC108AF1EA100AA8 -:10EBA8008CE8F20A010AF6080008F4080108C066B1 -:10EBB8006F7810195809FE9AFF886F085808C29094 -:10EBC8004B196F1A7209F4090109C2374AFB760B0F -:10EBD800EF0A0048F6080108F40B140316185C88BD -:10EBE800F00A000A5C8AEF09004AF40B14035C4837 -:10EBF800EF5A0048F20A14021419F2080008F6083D -:10EC08000009EF58004AEF59004C3008EF4800401F -:10EC180049F84A09900A6EA8580AE0800381720BE5 -:10EC2800F60911FF1009E08600B15C7AF0C9FFFF10 -:10EC38001619F20A010A580AE08900A849697216E9 -:10EC48005806C0E14958201D1AD8E06804461AD869 -:10EC58004938494C1AD8F01F00142FCDC008F00BC2 -:10EC6800010BE04B7FFEE08A002348C8201D1AD81C -:10EC7800E06804471AD848D848AC1AD8F01F000AE8 -:10EC88002FCDC008000073240000821000007320FC -:10EC98000000731C000073348003AC608003ACF088 -:10ECA80080039D9C800094C48003AD008CD81638E6 -:10ECB800C3148C48F3D8C0101639C0E44AB8201DD4 -:10ECC8001AD8E06804491AD84A984AAC1AD8F01FEA -:10ECD800002A2FCDC0081618300A5C88C058AC48E6 -:10ECE800AC5A121B6C068CD91639CFA55C3B0C9C10 -:10ECF8005C8BF01F0022C21049C8201D1AD8E0689A -:10ED080004561AD849E849BC1AD8F01F001B2FCD61 -:10ED1800C0085C3B0C9C5C8BF01F0018C0E04938B5 -:10ED2800201D1AD8E068045B1AD84958491C1AD81B -:10ED3800F01F00112FCDC0086C1A4929932A492ABF -:10ED48006EA8740B926C9508F80B000A101AB26A38 -:10ED5800F00A16187249B2F8B2CAF5D8C208F1D842 -:10ED6800C108B2DAB2E8C1B88003AC608003AD1064 -:10ED780080039D9C800094C48000CDD48003AD2086 -:10ED8800000073340000731C101BC097EF38002676 -:10ED9800A1B80E9CEF680026F01F00424C256EA912 -:10EDA8006A08F009010AE08602B7F0CAFFFFEF1B04 -:10EDB800002C121A161A580AE08902AE1039E0819E -:10EDC80001F54BA8906A7048F139000DF3D9C002DB -:10EDD8005F19F40900094B6AB409EF0A002CF20A1A -:10EDE8001900C462F13A000CF139000DF3EA1089F8 -:10EDF8005C89EDB90000C081E219FFFEF169000DE0 -:10EE0800A989F169000C4A98EF0A002CB06A704988 -:10EE1800F339000DEDB90001C031201AB06A4A3645 -:10EE28008CEB6C1CF01F00238C696C48F138000DCA -:10EE3800F1D8C0025F18F208000849D9B20849A9F8 -:10EE480072095C78EF1A002C12086EA9F4090009FF -:10EE58001238C0E04988201D1AD8E068048B1AD8F7 -:10EE68004968497C1AD8F01F00172FCDC008EEF664 -:10EE780000805806E08000BE48C46848F138000D9C -:10EE8800EDB80000C080C4B8109C7008EF4800803E -:10EE9800F01F000DEEF800805808CF71CAA80000D6 -:10EEA80080010CEC0000731C000073340000732018 -:10EEB8008000D2108003AC608003AD3480039D9C39 -:10EEC800800094C48000DA3CF138000DEDB80000F1 -:10EED800C1F16848F139000DF13A000CF3EA108AE3 -:10EEE8005C8A1499A1A95C79F20B1608EDBA0001A5 -:10EEF800C0F0F169000DF16B000C68488869F138C1 -:10EF0800000DF1D8C0025F18F2080008A6086C05C9 -:10EF18000A96F01F00455805C041C6984C324C432C -:10EF28006C4811C5868A11D9B169F3E5118911E5D3 -:10EF38008CEBF3E510890C9C11F5EBE91009F40949 -:10EF48000109640A1409F20B010BCBF7E08F0201E7 -:10EF58004B89EEF80080704811FB11C511DC11E8EF -:10EF6800B16CF9E5118CF9E81088F7E81008F00A97 -:10EF7800010A5C8AB26A7248F138000DEDB80001E6 -:10EF8800C031201AB26A4AB58AEB6A1CF01F002AFF -:10EF98008A696A48F138000DF1D8C0025F18F20892 -:10EFA80000084A39B2085C784A097209F009000A6F -:10EFB800EEF80080704811FB11CC11D911E8B16945 -:10EFC800F3EC1189F3E81089F7E91009123AC0E067 -:10EFD80049A8201D1AD8E06804C31AD84988499C52 -:10EFE8001AD8F01F00192FCDC0080C95EF450080E6 -:10EFF80048F848E9908A7209F40900098FA990082D -:10F00800EF09002CF0091900C22248C8201D1AD89F -:10F01800E06804CD1AD848D848AC1AD8F01F000ABE -:10F028002FCDC0088000DA3C0000731C000073205C -:10F03800000073348000D2108003AC608003AD6C94 -:10F0480080039D9C800094C48003ADA810190E9C79 -:10F05800EF59002CF01F004A4CA8300A7019924B47 -:10F06800F40B1900C0504C8A9509300991194C5875 -:10F078007048F138000DEDB80000C5B14C3913885F -:10F08800A5B8B288C56881098CEAF13B000DF7DBA9 -:10F09800C0025F1BF60A000A14098FA9EF0A002CA8 -:10F0A800F138000D8C69F1D8C002F7D9C0105808A2 -:10F0B8005F1EF9DAC010FC0B000B163CC0E44B488D -:10F0C800201D1AD8E06804F21AD84B284B2C1AD8FD -:10F0D800F01F00322FCDC008F409010958085F1845 -:10F0E800F20801080E9CEF58002CF01F00256C1B3D -:10F0F8009648E2081900C090680C580CC040F01FF0 -:10F108000028C028890B8D126C48F138000DEDB825 -:10F118000000C0810B88A5B8AA886E485848EFF34C -:10F128000A046C080C9CEF480080F01F001EC07891 -:10F1380049D030014944300249453073EEF6008029 -:10F148005806C1006C4811CB11D9B169F3EB11898C -:10F1580011EB6EAAF3EB108911FBF7E910091439CA -:10F16800C930EF380026EDB80000C041A1C80E9C98 -:10F17800CE68A1A8EF680026D83200008000D5FE2E -:10F18800000073340000732C000073298003AC6006 -:10F198008003ADC880039D9C800094C48000CD345A -:10F1A8008000DA3C0000731C0E9CF01F0040EEF655 -:10F1B80000805806C0714BECF01F003EEF4C0080F9 -:10F1C800D8326A093005F2CCFFFF6C4811CB11DA4E -:10F1D800B16AF5EB118A11EBF5EB108A11FBF7EA2E -:10F1E800100A1439C1214B2C8C689869F009190050 -:10F1F800E08800B4F01F002FE08000B05805EBFC59 -:10F208001A00EFFC0A20C0D85805C0D1F20A010B39 -:10F21800C4574A7CF01F0027E08000A0EF4C008014 -:10F228000C9BC3986A4B17F417C217D317EBB1633B -:10F23800E7E21183E7EB108BE9EB100B5CDB120BB9 -:10F24800C2D6F80A010B580BE0890029498CF01F37 -:10F2580000191897E08000826A4811F911CA11DB79 -:10F2680011E8B16BF7EA118BF7E8108B4928F3EB3B -:10F27800100B70088AE9101916095809E08A000964 -:10F28800F00B010B6A1CAA6B5C7BF01F000C8B0750 -:10F298000C9B0E9CF01F000AD8326C0B0C95580B77 -:10F2A800C1001696C93B000080010BF000007334C2 -:10F2B8008000DA080000731C8000D2108000E7503C -:10F2C80014195809E08A004AF138000DEDB8000019 -:10F2D800C4404A3CF01F00238D0CC3F06C4811F960 -:10F2E80011CA11DB11E8B16BF7EA118BF7E8108B43 -:10F2F80049D8F3EB100B70088CE910191609580956 -:10F30800E08A002CF00B010B6C1CAC6B5C7BF01FD3 -:10F318000017D8320E9CF01F0016D832720BF60870 -:10F328000109C0A62FFBEF19002CF60801081218D6 -:10F338005808E08A00130E9CEF380026A1B8EF6841 -:10F348000026F01F000CD8323008FE9FFBB4580985 -:10F35800FE99FE00FE9FFE4BD83200000000733479 -:10F368008000DA080000731C8000D21080010BF0C6 -:10F3780080010CECD4314B86ED0800922FF87819F7 -:10F388004B65ED5800928B091388F1D8C004F20838 -:10F39800002818971693109C4B148908F01F003109 -:10F3A8006A080E9C118BF7DBC004A36B5C3BF01F53 -:10F3B800002EC0718E493138F0091900E08B000B1E -:10F3C8004A580E9CF109009A2FF9F159009AE08FDA -:10F3D80003026A0C069B2F0CF01F0024C0B16A0AB6 -:10F3E800FC19E000F5380010B968E618F00012388A -:10F3F800C0A149980E9CF10900A02FF9F15900A06D -:10F40800E08F02E9F4CBFFF48EC830692F0A0E9C16 -:10F41800F01F00175C8CC080ED0800980E9C2FF838 -:10F42800ED580098C11868080E9CF13B000CA58B9C -:10F43800F60B10FCF01F000CC1C0ED08009A0E9CE2 -:10F448002FF8ED58009AED0800962FF8ED58009621 -:10F45800E08F02C6000080D40000733000007318EB -:10F468008000D67C8000CDD48001255880011E2CD8 -:10F47800680811CA11D9B169F3EA118911EAF3EAE6 -:10F48800108911FAF5E91009F20A1618B0CAF5D967 -:10F49800C208B0F9B0DAF5D9C108B0EA4B28910929 -:10F4A8006808F1390008F13A0009B16AF5E9118AEA -:10F4B800F139000AF5E9108AF139000BF3EA100A6C -:10F4C800F4091618F1690008F3DAC208F16A000BAA -:10F4D800F1690009F3DAC108F169000A4A386804D9 -:10F4E800910AE938000DF5D8C002F1D8C0064A0BD8 -:10F4F800B6884A086A09580A5F1A8E4514055C8559 -:10F50800B00549D87006CA586C485808C0E149B8CF -:10F51800201D1AD8E06800B71AD84998499C1AD80B -:10F52800F01F00192FCDC00858A8C0E14938201D88 -:10F538001AD8E06800B81AD84948492C1AD8F01FD8 -:10F5480000122FCDC0085818C24148C8201D1AD82B -:10F55800E06800B91AD848E848AC1AD8F01F000A81 -:10F568002FCDC0080000731C00007324000073280E -:10F57800000073200000820C8003AC608003ADF0B3 -:10F5880080039D9C800094C48003AE188003AE4421 -:10F59800098A0998F1EA1088ED0A0024F00A19008E -:10F5A800C56109AA09B8F1EA1088ED0A001CF00A39 -:10F5B8001900C4D1F33A000CF338000DB168F1EA30 -:10F5C8001188F33A000EF1EA1088F33A000FF5E8D3 -:10F5D80010086C1A103AC3B1F33A0010F33800114E -:10F5E800B168F1EA1188F33A0012F1EA1088F33AA7 -:10F5F8000013F5E810086C0A103AC2916C380C3800 -:10F60800C0E14CA8201D1AD8E06800C21AD84C885E -:10F618004C8C1AD8F01F00482FCDC008580CC06079 -:10F6280099384C6870098D3991066C380C38E0812E -:10F6380001A14BE8201D1AD8E06800C81AD84C0868 -:10F648004BCC1AD8F01F003C2FCDC0080C9C6C3650 -:10F658005806FE91FF5BE08F05296C4858A8C0E06A -:10F668004B28201D1AD8E06800D21AD84B584B1CDA -:10F678001AD8F01F00312FCDC008098B0998ED0A60 -:10F688000024F1EB1088F00A1900C77109AC09BB16 -:10F69800ED08001CF7EC108BF6081900C6E1F33CE6 -:10F6A800000CF33B000DB16BF7EC118BF33C000E33 -:10F6B800F7EC108BF33C000FF9EB100B6C1C163CAD -:10F6C800C5C1F33C0010F33B0011B16BF7EC118B93 -:10F6D800F33C0012F7EC108BF33C0013F9EB100B22 -:10F6E8006C0C163CC4A1498B178CEDBC0002E08061 -:10F6F800013AEDBC0001C2D1494B6CAC760BF60C5B -:10F70800010CC2D6ED14002C081C580CE089002806 -:10F718005C7A201D5C751ADA48DCEA0B000B5C7811 -:10F72800F2CAFFF0780CC7688003AC608003AE6C47 -:10F7380080039D9C800094C40000820C8003AE98D6 -:10F748008003AEC4000073280000731C00007324FB -:10F75800EDBC0000C0414CC870088DD84CB8900969 -:10F768003008F0091900E08000FEED3800260C9CF6 -:10F77800A1B8ED680026CF486C365806FE91FF6F99 -:10F788004C3870050C98CF286A0A580AC130F33CE7 -:10F798000010F33B0011B16BF7EC118BF33C001236 -:10F7A800F7EC108BF33C0013F9EB100B163AE081E1 -:10F7B80000DC09AB09BAF5EB108AEB0B001CF40B63 -:10F7C8001900E08100D25808C0706A3991394B0895 -:10F7D80070098B3991054AF81188EDB80004C1F118 -:10F7E8004AD8700913AB139A13B8201D1389F1EB8B -:10F7F8001088F5E910894A5B1AD9968C4A794A8BA0 -:10F808007209760BF2CAFFF0F80B000B4A5C780C11 -:10F818002FFC2F49F01F00242FEDCA48EDB8000136 -:10F82800E08100A1EB3C0014F01F00201896C08175 -:10F8380049F8F109009C2FF9F159009CC938497819 -:10F848007008F0C9FFF0C0311298C108F1390013EF -:10F85800F13B0010F13A0011F1380012B16AF5EBF2 -:10F86800118AF5E81088F3E810088D08EB08001CE9 -:10F87800ED58001C48987008F0C9FFF4C1A112980F -:10F88800C27800000000821000007320000082147B -:10F898000000732800007318000073300000731C08 -:10F8A80000007324800102348000E1D4000080D479 -:10F8B800F139000FF13B000CF13A000DF138000E60 -:10F8C800B16AF5EB118AF5E81088F3E810088D188D -:10F8D8004C587008118B1199F3EB1089ED590024DD -:10F8E80030398D494C197209F2CBFFFF8DCB8DABA6 -:10F8F800F13B000FF138000EF7E81088ED5800587A -:10F90800ED5800608A48E2180199AC486A684B8A49 -:10F918002019740C8D688D3C6A889506ED49006441 -:10F928008D880C9CF01F0033ECCBFFFCED1C003CD9 -:10F93800F01F00313019ED5C003C201D30081AD949 -:10F94800109A3129109B0C9CF01F002C2FED5C5C49 -:10F95800C0600C9C300BF01F002AC0480C9CF01FA4 -:10F9680000290E9CC3C80A986A355805FE91FF0EF7 -:10F9780049D56A08F13C000DF9DCC006F01F0022E9 -:10F988005806E08003504A188E4A6A09911791492F -:10F99800B06A30096E1A9109912A49D8910949D853 -:10F9A800B089ECFA0084580AC3C0ECF8008C5808F7 -:10F9B800C0500C9B6C6C5D18C06810990C9B109C17 -:10F9C800F01F00155C5CC041ED4C0084C2A80E9C81 -:10F9D8004928F10900962FF9F1590096F01F0010F7 -:10F9E800D8320000000073180000731C0000820C5D -:10F9F8008000E6B48000D95C800103508000E124D7 -:10FA080080010CEC8000D67E000073340000732C5B -:10FA1800000073298000E5EC000080D48000D13C10 -:10FA28004A9891064A981188EDB80002C3216C489B -:10FA38005828C0814A6870096D781039E081026BD6 -:10FA4800C1D84A49720A6CA9F4090109E08602631F -:10FA5800ED1A002C14195809E089025DE08F032182 -:10FA680049D8201D1AD8E06802271AD849B849CCC5 -:10FA78001AD8F01F001C2FCDC00849B91388A3B8A5 -:10FA8800B288ED380026A1C8ED680026E08F024351 -:10FA9800EDB80001C0616C4820285818E08B00A21E -:10FAA800492870088DD830080C9CED6800ADF01F0F -:10FAB80000106C4820285878E08B022D48D9F208AD -:10FAC800032F000000008224000073280000732424 -:10FAD8000000731C8003AC608003AEF480039D9C1F -:10FAE800800094C400007329000082108000E6B4EE -:10FAF8008003AC404CF811891298E218001259287A -:10FB0800C7A14CD8700A6DF8704811FB11C711DCF9 -:10FB180011E8B16CF9E7118CF9E81088F7E81008DA -:10FB28002FF8103AC681ED0800722FF8ED580072D0 -:10FB38004C287008ED4A0050F0CA00012FF88DC813 -:10FB48008DA84BF87008F139000FF138000EF3E872 -:10FB58001088ED5800603048ED4A00648D48EC0884 -:10FB6800000BED1C003CF01F00375C8CF808100AF5 -:10FB7800ED5C003CED580058ED0900563018F009CE -:10FB88001900C021A17CED5C0056ED0800745808EE -:10FB9800C0E14AD8201D1AD8E06802591AD84AB8D4 -:10FBA8004ABC1AD8F01F002B2FCDC00820186DFCB6 -:10FBB800ED5800747808ED48007C5808F9B800FF43 -:10FBC800F9B80100EDF81E4EED58003AF01F00227A -:10FBD800ECF800905808C050300A0C9B6C6C5D180B -:10FBE800ED380026A1B80C9CED680026F01F001B1C -:10FBF800E08F0191EDB90004E081018D4908700999 -:10FC080013AB139A13B8201D1389F1EB1088F5E98B -:10FC18001089493B1AD9968C4929488B7209760B69 -:10FC2800F2CAFFF0F80B000B483C780CC7980000AC -:10FC380000007328000073240000731C0000731870 -:10FC48008000D95C8003AC608003AF1480039D9C66 -:10FC5800800094C48000DA3C80010CEC0000732022 -:10FC6800000073304C281188EDB80004C5E14C1829 -:10FC7800700C6D485CD81808C3D66D78F808010870 -:10FC88005808E089003830488D486C885808C0E129 -:10FC98004B98201D1AD8E068027E1AD84B784B8CF6 -:10FCA8001AD8F01F00382FCDC008300A0C9B6C6C96 -:10FCB8005D185C5CC0700C9C301BF01F0033E08F3B -:10FCC80001A7ED0700560C9CF01F0030ED080070EE -:10FCD8005808F9B901FFF1D9E108EDF81C383019D5 -:10FCE800ED08003CF2071900C021A178ED58005634 -:10FCF800C2E84A78700913AB139A13B81389F1EB69 -:10FD08001088F5E910894A3B201D1AD94A29968797 -:10FD180072094A2BF2CAFFF0760BEE0B000B2F4943 -:10FD2800F01F001F2FEDCF68EDB80001E08100F350 -:10FD380049A870096CA820181039E08100EC0C9CC7 -:10FD4800F01F0018CE780C9CF01F0010496811882D -:10FD5800EDB80005E08100DFED380026A1B80C9C65 -:10FD6800ED680026F01F00113078CC1800007328C9 -:10FD7800000073248003AC608003AF2C80039D9C3B -:10FD8800800094C48000E1248000E7F40000731828 -:10FD980000007320000073300000731C80010234DF -:10FDA800800101000000732980010CEC0C9CF01FFD -:10FDB800003E4BE84BE91188E2180020C2D01388B6 -:10FDC800EDB80004C1F14BB870096D781039C1A1C4 -:10FDD800ED380026A1B80C9CED680026F01F00360F -:10FDE8000C9CF01F00364B6972080C38C5604B59E3 -:10FDF8009308C05870390C39C69012985808CFB17A -:10FE0800C6D8ED380026A1B80C9CED680026F01F76 -:10FE1800002A3088C6C81388EDB80004E081007B4A -:10FE28004A4870096D781039C7513068C6080C9C6B -:10FE3800F01F001D49D81188EDB80005C6B1ED388E -:10FE48000026A1B80C9CED680026F01F001B0C9C36 -:10FE5800F01F001A49A972080C38C1F04999930893 -:10FE6800C05870390C39C32012985808CFB1C368EC -:10FE78000C9CF01F000D48E81188EDB80004C4A1DF -:10FE880048C870096D781039C4510C9CF01F000BDC -:10FE980048B972080C38C0316C38C21848999308B0 -:10FEA800C1B800008000E7F400007329000073283F -:10FEB8000000732480010CEC8000DA8C0000820CB6 -:10FEC8000000821870390C39C0614C0993086C39EC -:10FED8009139C06812985808CF614BC99308300807 -:10FEE8008D384BB870098D39910630A88D48C128D6 -:10FEF8000C9CF01F00384B881188EDB80004C0A195 -:10FF08004B6870096D781039C0514B591388A5A8F2 -:10FF1800B2884B381188EDB80003C091ECF800980E -:10FF28005808C0803FAB6C6C5D18C048EDB8000441 -:10FF3800C0A10C9B4ABCF01F002C0C9B302CF01F5E -:10FF4800002BC658ED0A0070580AC090ECF80088DB -:10FF58005808C0505C7A0C9B6C6C5D184A48700855 -:10FF68005808C24049C91389EDB90003F1F9080DD1 -:10FF7800F9BA0001F3DAE039F1F90E0D49CAECF8E3 -:10FF8800008C5808C070740A30090C9B6C6C5D18A2 -:10FF9800C0781099740A0C9B109CF01F00165C5CCA -:10FFA800C05049387008ED48008448D81188EDB829 -:10FFB8000005C271ECF8008C5808C1D030090C9BC0 -:10FFC800129A6C6C5D18C1D800008218000082205B -:10FFD8008000E7F4000073280000732400007329F0 -:10FFE8000000820C8000DAE88000C9740000732CDD -:08FFF8008000E5EC10990C9B60 -:02000004800179 -:10000000109A109CF01F002E30094AE80C9C9109B0 -:10001000F01F002D30064AB891064AC76E1C580CD6 -:10002000C330F01F002B8F16C2F86A0BF738000D93 -:10003000EDB80002C2604A78F10C00A02FFCF15C20 -:1000400000A0F10C00962FFCF15C0096179C17A6FF -:1000500017B8178BF9EB108B201D49F972091ADBC1 -:1000600049EB968CF2CAFFF0F1E6108849CB2F4994 -:10007000760BF80B000B49BC780CF01F001B2FED22 -:100080000E9CF01F0013F01F0019C1714988201D3C -:100090001AD8E06801771AD84968497C1AD8F01F45 -:1000A00000172FCDC0085808FE90FCE0FE9FFCEB27 -:1000B00049387006FE9FFB67D83200008000E5ECEF -:1000C0000000822480010CEC000073348000D13CDD -:1000D000000080D400007330000073200000731C07 -:1000E00000007324800102348000D6B48003AC6029 -:1000F0008003AF4080039D9C800094C40000822058 -:10010000D42179F95809C3107208F8CEFF88F9484C -:10011000007C79E8C038109E70085808C1C0704B48 -:1001200017F617C417D5B165EBE41185724A17EBC2 -:1001300015F7EBEB108B15C5EDEB100B15D615EA8B -:10014000B166EDE51186EDEA108AEFEA100AF60ACB -:10015000010ACE2693089D093008F9480040F93875 -:10016000004E2FF8F968004ED822D42179F95809A9 -:10017000C600F9380026EDB80002C5B07208F8CE06 -:10018000FF88F948007C79E8C038109E700858084C -:10019000C1C0704B17F617C417D5B165EBE41185D4 -:1001A000724A17EB15F7EBEB108B15C5EDEB100B47 -:1001B00015D615EAB166EDE51186EDEA108AEFEA8B -:1001C000100AF60A010ACE26930830089D09F9485C -:1001D0000040F938004E2FF8F9090056F968004E32 -:1001E000F5D9C02FF9080060F7D8C02FF009190021 -:1001F000F60817B0F4081780F9580058F908003CC1 -:10020000F00915015C78A178F91A0058103AF9F94B -:100210005C2CF9380026A3A8F909003CF9680026EF -:10022000F20815011009F90800581009F95900568B -:10023000D822D703D43118941693149112921096A1 -:100240004097300A314B301CF01F00391895C6D04A -:1002500098593138F0091900E08B000F4B58201DD8 -:100260001AD8E068031F1AD84B384B4C1AD8F01F25 -:1002700000342FCDC0080E9878175C78AEB8A988E6 -:10028000AEA8E0685014EF68000DA988EF68000C74 -:10029000E8081618AEC8F1D4C208AED8E608161899 -:1002A000EF680008F1D3C208F3D6C010EF68000968 -:1002B000AE993088A9893006AEF4EF63000BAE89A1 -:1002C000EF66000FEF660012EF660013EF66001096 -:1002D000EF660011EF68000E3069049A029BE9D4C2 -:1002E000C108E7D3C108AEE4EF63000A98C8F01F65 -:1002F00000155C7CEF6C0011A98CEF6C0010201DC8 -:10030000491C30671AD70C98F9070090049A2FF708 -:10031000029BE06900FFF95700900A9CF01F000B58 -:100320000A9CF01F000B2FEDD83200008000D3187C -:100330008003AF5C8003AFA480039D9C800094C4C5 -:1003400080011E2C000080D4800122948000D13CCA -:10035000D43120BD14915098414A505A12961897A2 -:100360003009F20119005F08F20A18005F0AF1EA89 -:10037000000AF20A1800C110F3D6C002C0E14C789E -:10038000201D1AD8E06800AD1AD84C584C5C1AD819 -:10039000F01F00452FCDC008580B5F195089126817 -:1003A000C0E04BE8201D1AD8E06800AF1AD84BF81F -:1003B0004BCC1AD8F01F003C2FCDC008EF080072BC -:1003C000E2081900C0B2EF380026EA18FFFFE8186B -:1003D000FF80EF680026E08F02E34058F3D8C001A9 -:1003E000E2180002F9B8010CF009002950296FB099 -:1003F000EF02007431F8F0021900E08800144AC8D6 -:10040000F109009C2FF9F159009CE06C00FFEF38D6 -:100410000026EA18FFFFE818FF80EF680026E08F4B -:1004200002C36FF85802C2605808C1404028A38830 -:100430002FB8AD685C883003503B50A8F7D1B0109E -:10044000409A504BF5DAC001069406980695506A1A -:10045000C3796FE85808CEB14908201D1AD8E06862 -:1004600000D01AD8493848FC1AD8F01F000F2FCDF9 -:10047000C0085808C0416FE85808CD904878201D42 -:100480001AD8E06800D31AD848B8486C1AD8F01FB8 -:1004900000062FCDC00800008003AF5C8003AFD4FE -:1004A00080039D9C800094C48003B028000080D409 -:1004B0008003B0688003B0A450195008EF03003CDB -:1004C000304CF01F0042401918954008E080023C73 -:1004D000300B990B991B5809C0301894C118580853 -:1004E000C0E14BB8201D1AD8E06800EF1AD84B982D -:1004F0004B9C1AD8F01F00392FCDC008910C5C73AB -:10050000402A4069E60A010840435C73E6080D434F -:100510005C835809C3904028300AE608000B149CFD -:100520005C7BF01F002F8B1CE080020EF5D3C01007 -:10053000402B98D9F40B00081039C0E44A48201D1C -:100540001AD8E06800FF1AD84A684A3C1AD8F01F47 -:1005500000232FCDC008501AF01F0023401A18980E -:1005600040895809C0A0402B6A195008721C160C0B -:10057000403BF01F001E4008F00200026A185C8237 -:1005800070188B28C3D8406A402B149CF01F0014AD -:100590008B1CE08001D9F01F0014407AF8020002A1 -:1005A0005C82580AC2D0F7D3C010301A303CF01F1A -:1005B000000C189B6A1C580BC1C1F01F000D40694C -:1005C0008B19E08F01C100008000C9D48003AF5CAB -:1005D0008003B0D880039D9C800094C48000D31811 -:1005E0008003B0E88000CD0C8002E7368000D13C6B -:1005F000403897182FF28B285C82F01F003F320B97 -:10060000F6021900E08B01A0AA63314B6A1CF01FAF -:10061000003BC0904BA8F10900A42FF9F15900A4A8 -:10062000E08F0192EF39001C6A1870188B48B0896E -:10063000EF39001DB099EF3900246A48B0A9EF39AD -:100640000025B0B9E00916186A48B0C9F3D0C2084D -:10065000B0F0B0D9F3D0C108B0E96A48F16C00132A -:10066000F16C00126A48F13A000CF139000DF3EA1E -:100670001089E019FFC0EDE910095C79F169000DFE -:10068000A989F169000C405AEB6A000E404806182F -:100690005C88F3D3C0105048403B6A48120B503B73 -:1006A00040AA1200F139000DF3D9C006F5E910098E -:1006B0005C79F169000DA989F169000C0A98300A8A -:1006C000404BF40B19005F1B507B169A58045F09CE -:1006D000300B124AF60A1800FE91FEF0F5D2B01067 -:1006E000503A6FE05800E08000C260085808C0909F -:1006F0001090CFCB8000CD348000CDD4000080D4CA -:1007000080EA6048F139000DF3D9C0025F1B140B79 -:10071000E08000C45809E08100C1F7D6C0025F0C38 -:10072000301BF60618005F0BF9EB100BF20B1800EC -:10073000E08000B488EBEF19003C140B123BE08919 -:1007400000ADE13B000EE939000EF20B1800E0812C -:1007500000A5684911FE13FB504B11CC11DBB16BA6 -:10076000F7EC118B11ECF7EC108BFDEB100B160A6C -:1007700013CB13D8B168F1EB118813EB4049F1EBBF -:100780001088F3E81008103AE08100884028681CBF -:10079000F00B11EC5C8BF01F0037C0E04B68201DA4 -:1007A0001AD8E06801691AD84B484B5C1AD8F01F78 -:1007B00000352FCDC0086818905AF80A1900C0A15A -:1007C00070098919910C4032109C20125C82F01F34 -:1007D000002EF1D6C001681BC220580BC05188689A -:1007E000F6081900C0E04A48201D1AD8E0680177D1 -:1007F0001AD84A684A2C1AD8F01F00222FCDC008F8 -:100800006048F13A000CF139000DF3EA1089A1A912 -:10081000F169000DA989F169000CC1E8580BC050BD -:100820009659F0091900C0E14938201D1AD8E0682E -:10083000017A1AD84968492C1AD8F01F00122FCD16 -:10084000C008601CF01F001380698868F208000867 -:10085000A068680881080835E0051700E1F3020682 -:10086000089B304CF01F000CC198EF440078C16821 -:100870008000CDD48003AF5C8003B11C80039D9CBD -:10088000800094C48000D13C8003B1308003B1501B -:100890008000CD348000C97481040C98EDB600014D -:1008A000C040EDB60000C0312FF15C81EDD6C00133 -:1008B000EFF81826F9B90120F1D9E138EFF81E2632 -:1008C0006FB9F1D1C010F2080008EF520074EF4880 -:1008D000006CEF0800720218EF5800725802C14015 -:1008E0006FF85808C1116FE85808C0E14AF8201D98 -:1008F0001AD8E06801A11AD84AD84AEC1AD8F01FD1 -:10090000002E2FCDC00858055F193008F0031900DC -:100910005F1AF5E90009F0091800C4406A48580850 -:10092000C410409CE21C0002C3D1F13A000CF13922 -:10093000000DF3EA1089A3B9F169000DA989F169E5 -:10094000000CC318EF380026EA18FFFFE818FF80F4 -:10095000EF6800264998F109009C2FF9F159009C95 -:100960005804C040089CF01F0016EF0900743008BE -:10097000F0091900C1406FF85808C1116FE8580814 -:10098000C0E148A8201D1AD8E06801B41AD84888E8 -:10099000488C1AD8F01F00082FCDC008E06C00FF6B -:1009A000C028300C2F5DD8328003AF5C8003B16467 -:1009B00080039D9C800094C4000080D48000DA688D -:1009C000D421784E1298587E5F07584E5F09EFE9A0 -:1009D0001009C081582EC060583EC040E06C00F83D -:1009E000D822580AC031149CD822201D30095C7AC4 -:1009F0001AD9F01F00032FED5C5CD8228001035050 -:100A0000D4013008201D109A16991AD8149B30185A -:100A1000F01F00032FED5C5CD80200008001035042 -:100A2000D431189679F45804C05179E45804E08020 -:100A300000CE6848F133000DE7D3C001C06088697B -:100A40003008F00919005F03300A5C53301C14337E -:100A5000F9BB0114F9BB0015F01F005D1895E0808B -:100A600000B698593138F0091900E08B000F4D9805 -:100A7000201D1AD8E068040F1AD84D784D7C1AD87A -:100A8000F01F00572FCDC008684811FA11CB11D9BB -:100A900011E8B169F3EB1189F3E81089ED38001C16 -:100AA0007817F5E91009AE88EF3A000CED38001D13 -:100AB000AE98EF38000DF1EA1088ED3A0024AEAAA6 -:100AC000ED3B0025AEBBF20B1618AEF9AECBF7D955 -:100AD000C208F3D9C108AEDBAEE9ED390028EF69F1 -:100AE0000008ED390029EF690009ED39002AEF69A6 -:100AF000000AED39002BE018FFC0EF69000BA5A834 -:100B00005C88F5D8C010EF6A000DF40B1608EF6B87 -:100B1000000CED39002EEF69000EF1D8C006300947 -:100B2000E8185000ED3A002F5C78EF6A000FEF688C -:100B3000000DEF690011EF690012EF690013EF6912 -:100B40000010A988EF68000CED19002E6CA8F208BF -:100B500000088DC85803C110EF39000CEF38000DA4 -:100B6000F1E91088E018FFC0E8180011EF68000DE7 -:100B7000A988EF68000CC068682811897818F169A5 -:100B80000014ECC4FFFC8AC83069089A0C9B0A9CCC -:100B9000F01F00145C7CEF6C0011A98C4929EF6CEC -:100BA0000010F30C00902FFCF35C0090306C201DC3 -:100BB000ED39000B089A1ADC0C9B30080A9CF01FD8 -:100BC000000B0A9CF01F000A2FEDD8328000D318CA -:100BD0008003AF5C8003AFA480039D9C800094C41D -:100BE00080011E2C000080D4800122948000D13C22 -:100BF000D431300A1895314B301CF01F003918934E -:100C0000C041E06C00FED832EB380026EB39001C06 -:100C1000E018FFFCEB6800266B787817AE89EB399B -:100C2000001DAE99EB390024F00B1618AEA9F3D8CD -:100C3000C208EB3A0025AEF8F1D8C108AECBAEBA87 -:100C4000AED9AEE86AA8F0091618EF690008F3D823 -:100C5000C208E06A5010EF690009F3D8C1083004F7 -:100C6000EF68000BEF69000AF40B1608EB19002E71 -:100C7000EF6B000CEF6A000DEF69000FEF640012DC -:100C8000EF640013EF640010EF640011F20A16081D -:100C9000F2080008EF6A000E8BC8EAC6FFFC0A9B48 -:100CA0000C9A98C83069F01F000F5C7CEF6C001143 -:100CB000A98CEF6C0010306CEB38000AEB39000B9C -:100CC000201D0C9A1ADC0A9B069CF01F0007069C4C -:100CD000F01F0006089C2FEDD83200008000D318CA -:100CE00080011E2C800122948000D13CD431202D23 -:100CF0004AE8189770081838E08001A3F9080056F0 -:100D0000F9090060F0091900F20817805C785008B2 -:100D100079E6F9380026E2180002C1E05806C170F1 -:100D20008CEB6C48794911CCF609010911DBB16BE8 -:100D3000F7EC118B11FA11E8F7E81088400BF5E891 -:100D40001008F20800081638E08800070E9CF01F13 -:100D500000185C5CC7696FF55805C0B1EEC9FF8427 -:100D6000EEC2FFFC5019300349214930C2B9109539 -:100D70006A085808CFD1CF3BF13C000CF139000D87 -:100D8000F3EC108C5C8CEDBC0002C1F148B8201D66 -:100D90001AD8E06802471AD8489848AC1AD8F01F09 -:100DA000000A2FCDC00800000000822480010BF053 -:100DB000000080D4000082108003AF5C8003B18407 -:100DC00080039D9C800094C46FF95809C150EF3B8B -:100DD00000261699E2190044C0F16FE95809E08035 -:100DE0000133720E580EC081926EEF09003CF20E74 -:100DF0001900E08301296C09EF4900786E495829F0 -:100E0000C0E0A5AC5C7CF16C000DA98CF16C000C11 -:100E1000EF390026E019FFFCEF6900266EA9F20AFF -:100E20001618F16A0008F5D9C208F16A0009F5D967 -:100E3000C108F169000BF16A000AEF1A002EF16A8D -:100E4000000FF40B1608F16B000EF40900098FC9AE -:100E5000ED39000EEDB90000C061E06B0200EA1B45 -:100E60000204915BEF08003A3FF9F2081900F9B863 -:100E70000000EFF80C1D6E085808C071049CF01FAC -:100E80000075C45078188F086F085808C121600990 -:100E90006C48EF49004011F911CB11DA11E8B16A41 -:100EA000F5EB118AF5E81088F3E81008EF480044E4 -:100EB0006C1C6C4478199848985A9914E8090109EF -:100EC000121A1218B85AB84830695C78049A0E9B06 -:100ED000E9630010E9630011F01F005F30695C7C7A -:100EE000E96C0011A98CE96C0010E30800902FF860 -:100EF000201DE35800901AD9049AEF38000AEF3900 -:100F0000000B0E9B6C1CF01F00552FED6C4811FA66 -:100F1000F139000DF3D9C0025F1B11CC8CE9F60941 -:100F2000000911DB11E8B16BF7EC118BF7E81088C1 -:100F3000F5E810086F7AF2080008101AC037EF4879 -:100F4000005C5809C3B08D036FF85808C041EF46E4 -:100F5000007CC3286C4A15FE15C46A4915DBB16BC9 -:100F6000F7E4118B15E4F7E4108BFDEB100B13CEB7 -:100F700013FC13DAB16AF5EE118A13EEF5EE108A5E -:100F8000144CF60C010CC177401AC058109A700826 -:100F90005808C0E0704913C413FC13DEB16EFDE4C1 -:100FA000118E13E4FDE4108E1C4C161CCF068D0828 -:100FB0009506C0788B060C95C0480C9CF01F002845 -:100FC0006FE65806C3706C4811CC6F4A8CEB11D990 -:100FD000141BB169F3EC118911ECF3EC108911FCCD -:100FE000F9E91009F6090009400B1639FE98FEC60A -:100FF000EF3900AC3008F0091800C1C18CEB6C4827 -:10100000F60A010A11F911CC11DB11E8B16BF7EC0A -:10101000118BF7E81088F3E81008100AEF18006049 -:10102000103AF9B80B00EFF8BA2AF9B80B01EFF84B -:10103000BEACEF380026F1D8C007EF680026300CB0 -:101040002FEDD832E21B00A0FE91FED7CD2B000081 -:101050008001222880011E2C800122948000DA3C2D -:10106000D401189879FA580AC170149B7609580966 -:10107000C030129BCFCB71EC970CF1490040F14985 -:10108000007CF139004E2FF9F14A0078109CF1698B -:10109000004EF01F0002D80280010CECD431300A5F -:1010A0001896314B301CF01F00401895C7B0985966 -:1010B0003138F0091900E08B000F4BC8201D1AD8F9 -:1010C000E06803C91AD84BA84BAC1AD8F01F003AF5 -:1010D0002FCDC008ED39001C78176D78AE89ED3939 -:1010E000001DAE99ED3900242018AEA9F00B16189A -:1010F000ED3A0025F3D8C208AEF8F1D8C108AECB5E -:10110000AEBAAED9AEE86CA8F0091618EF690008BF -:10111000F3D8C208E06A5010EF690009F3D8C1089B -:101120003004EF68000BEF69000AF40B1608ED19A4 -:10113000002EEF6B000CEF6A000DEF69000FEF64FB -:101140000012EF640013EF640010EF640011F20A64 -:101150001608F2080008EF6A000E8DC8ECC3FFFC09 -:1011600098C83069069A0C9BF01F00145C7CEF6CE9 -:101170000011A98C4929EF6C0010F30C00902FFC92 -:10118000F35C0090306C201DED39000B08981ADCE0 -:10119000069A0C9B0A9CF01F000B0A9CF01F000A89 -:1011A0002FEDD8328000D3188003AF5C8003AFA44A -:1011B00080039D9C800094C480011E2C000080D47C -:1011C000800122948000D13CF9390010A3C948A8BD -:1011D000F969001011BA118B119911A8B169F3EBDB -:1011E0001189F3E81088F5E8100899183008F958C3 -:1011F00000145EFC8003B409997A996B5EFCD703F6 -:10120000D421301CF01F00071897C080320A300B21 -:10121000F01F00053FF8EF68000B0E9CD82200007D -:101220008000C9D48002E8BCD40148C9189B720868 -:101230001838C0D178389308C0C870395809C060D0 -:101240001639F7F90003F1F90A0370385808CF612D -:10125000301CF01F0003D802000082288000C974EF -:10126000D4214AB83009700E1C98C148103CC111F5 -:101270005809C0E04A78201D1AD8E06802541AD8EC -:101280004A584A6C1AD8F01F00262FCDC0083019D2 -:1012900070385808CEC1580BC0C017B817861797BA -:1012A00017ABB167EFE61187EFEB108BF1EB100B8B -:1012B000990B580AC2211C98E06A1000E0667FFF73 -:1012C0003007C0C8F10B0012F40B1900C061F6CA58 -:1012D000FFFF1C985C8AC0287038EC0A19005F1563 -:1012E00058085F1BEBEB000BEE0B1800CEC1580843 -:1012F000C040E06C00F5D822F95A00125809C0200D -:10130000D82A993E4828910C129CD82200008228A5 -:101310008003B19C8003B1E080039D9C800094C455 -:10132000D4213008169614951897F9090012F0097F -:101330001900C071300A189BF01F00145C5CC231A8 -:101340005806C0C00DB80D8A0D990DA6B169F3EA13 -:101350001189F3E61086F1E61006EF380010A3A815 -:101360008F16EF680010EF55001448987008109C15 -:10137000C0581837C021D82A783C580CCFB18F38C4 -:1013800048389107D82200008001126000008228AE -:10139000D43112971093169414911895F9090012EC -:1013A0003008F0091900C091300A189BF01F004561 -:1013B000E5DCC008E0810084308B089CF01F00420F -:1013C000C0310896C0E8300A308B301CF01F003F57 -:1013D0001896C041E06200FFC728089BF01F003C40 -:1013E0008C593078F0091900E08B000F4B98201DC4 -:1013F0001AD8E06801C51AD84B784B8C1AD8F01F60 -:1014000000382FCDC008EB3900120E986C175C78AD -:10141000AE893009EB3A0013AEB8AE9AA988AEF99E -:10142000AEE9AEA86A085808C041E6C2FFFCC10890 -:1014300066191238C0C00836C041E06200F7C3F830 -:101440000C9CE06200F7F01F0027C3980A928CC83A -:10145000F0091608AED8AEC9EB390010EDB900009E -:10146000C1403119029A049B0C9CF01F001F5C8C38 -:10147000F1DCC010AEF8A988AEE8580CF9B800FF4E -:10148000EFF80E07EFF80E0631181AD3049BEB396C -:10149000000B029A1AD80C9CEB38000AF01F0013BC -:1014A0002FEDE5DCC0080836C0400C9CF01F000D95 -:1014B00048F8F10900782FF9F1590078049CD832E6 -:1014C000800112608000CDD48000D3188000CDB49C -:1014D0008003B19C8003B1EC80039D9C800094C488 -:1014E0008000D13C80011E2C80012064000080D44B -:1014F000D421202D1897501B149C500A1296F01FCF -:10150000000C401B1898400AC0A148A8E06C00FCE1 -:10151000F10900862FF9F1590086C078F3D6C01082 -:101520000E9CF01F00055C5C2FEDD8228001222864 -:10153000000080D480011390D401F8CAFFFCF9198F -:101540000014F01F00035C5CD8020000800114F05E -:10155000D431203D4D98F109007A2FF9F159007AE4 -:10156000781716910F8818955C8898CAF3D8C0042C -:101570002FE9A369123AC0A5F1D8C004F00B1502F7 -:101580005C3BF01F004F1894C0904CC80A9CF109B6 -:1015900000822FF9F1590082C1D96A12EECCFFF016 -:1015A000029B502CF01F004705980583F1E3108340 -:1015B00005B805AE1896F1EE108E5C835C8E34484B -:1015C000F00E1900C2413438F0031900E081008B9D -:1015D00062A85808E080008770145804E0800083F7 -:1015E00068185808E0800092EF3A000CEF39000DBF -:1015F000B169F3EA1189EF3A000EF3EA1089EF3A84 -:10160000000FF5E910091238C6D1C7F84AE8089961 -:10161000700A089B1498500AC618F10C0012FC0CB2 -:101620001900C5A15806C041700C580CC1B0EF306C -:101630000010EF3C0011B16CF9E0118CEF3000129A -:10164000F9E0108CEF300013F60618005F1AE1EC99 -:10165000100C700018305F0CF5EC100CF60C180034 -:10166000C3B05804E08100D6F13C0010E21C000435 -:10167000F0041700CCE8701C580CC150EF3A000C75 -:10168000EF30000DB160E1EA11805010401AEF30E8 -:10169000000EF5E010805010EF30000F401A14409B -:1016A000003CC1A1400A10945809C0F0703893382A -:1016B000893A48589104C148000080D48000CDD4B4 -:1016C00080012558000082284C88F109008E2FF9EE -:1016D000F159008EC058109970385808C9F1580453 -:1016E000C141EF3A0010EF380011B168F1EA1188FA -:1016F000EF3A00126219F1EA1088EF3A0013F5E8A8 -:1017000010081039C6D1300405F805E9F1E9108850 -:10171000C130402A8AC83119EECBFFF40A9CF01F71 -:1017200000345C8CC0904B180A9CF10900802FF9A2 -:10173000F1590080C4F83F8B0A9CF01F002EC0E0D6 -:101740004AD8201D1AD8E06801141AD84AB84ACCE1 -:101750001AD8F01F002C2FCDC0085804C0D06866DE -:101760005806C3E0089BF1D3C010EEC9FFF40A9AF3 -:10177000687C5D16C5585806C261EF380010FC1928 -:10178000E000B968E618F0001238C1D00F8B0A9C4F -:10179000F7DBC0042FEBA36BF01F00166A180E389E -:1017A000C0E04958201D1AD8E068012F1AD84968AE -:1017B000493C1AD8F01F00132FCDC008303B0A9CBB -:1017C000F01F001248980A9CF10900882FF9F1597E -:1017D0000088F109007E2FF9F159007EC0280A9C8B -:1017E000F01F000BC1D80000000080D480011E2C27 -:1017F0008000CDD48003B19C8003B11C80039D9CEC -:10180000800094C48003B21C800118FC8000D13C8D -:10181000F10C0014E60C1900FE91FF5FC2DB2FDD16 -:10182000D8320000D431189316921494324B300AF7 -:10183000301CF01F00241897C43098593238F00932 -:101840001900E08B000F4A08201D1AD8E068012E0D -:101850001AD849E849EC1AD8F01F001E2FCDC0084D -:101860007816661531CAAC94AC823004ACC4ACD4E2 -:10187000ACE4ACF4661B781C2F8CF01F00170C9C9A -:10188000ACA4ACB48EDBF01F00155C7CACBCA98CA6 -:10189000ACAC201D492C30161AD60898F906006009 -:1018A000EACAFFF4E06900FF089B2FF6F9560060D2 -:1018B0000E9CF01F000C0E9CF01F000B2FEDD83279 -:1018C0008000D3188003B2308003B27880039D9CDF -:1018D000800094C48002E73680011F4A000080D453 -:1018E000800122948000D13CD401F5DBC00830BBDC -:1018F000F01F0002D802000080011824D401F5DB9B -:10190000C008303BF01F0002D802000080011824FC -:10191000D4314C62E50800622FF81694E558006255 -:10192000781618970D85EBD5C004A365EA0311005E -:101930005C83069BF01F003EE08101788E493038C1 -:10194000F0091900E08801726E1811893088F009D9 -:101950001800E081015DED380010ED310011B1613A -:10196000E3E81181ED380012E3E81081ED3800134F -:10197000089BF1E11001ECCCFFF0F01F002EC071CC -:10198000E611F000FC18E0001031C0914A780E9C7E -:10199000F10900742FF9F1590074C4498E49307867 -:1019A000F0091900E08801420E9CF01F00235C8CB6 -:1019B000C0A00E9CF01F0021E50800682FF8E55834 -:1019C0000068D832330B0E9CF01F0019C6E00A9B4A -:1019D0000E9CF01F0017189AC0E04998201D1AD8D5 -:1019E000E06800981AD84978497C1AD8F01F001787 -:1019F0002FCDC0088ECB302CF01F00151892E08040 -:101A0000011F98D9EAC8FFF81039C25248C8201DF2 -:101A10001AD8E06800A21AD848E848BC1AD8F01FC3 -:101A2000000B2FCDC0080000000080D48000CDD472 -:101A30008001255880011FAC8000D13C8003B2306A -:101A40008003B2A480039D9C800094C48000D318BE -:101A50008003B2D80E9BF01F00445C5CC0E04C38A1 -:101A6000201D1AD8E06800A51AD84C184C1C1AD8AA -:101A7000F01F00412FCDC008069B6416049CF01F88 -:101A8000003FC0E04B98201D1AD8E06800AB1AD880 -:101A90004BB84B8C1AD8F01F00382FCDC0080E9CC5 -:101AA0000497F01F0038C1383D0B0E9CF01F003327 -:101AB000C0E04AE8201D1AD8E06800B51AD84B08E3 -:101AC0004ACC1AD8F01F002C2FCDC008ED3A000CDC -:101AD000ED39000DB169F3EA1189ED3A000EED3BE5 -:101AE0000010F3EA1089ED3A000FF5E91009ED3A1C -:101AF0000011B16AF5EB118AED3B0012F5EB108A8B -:101B0000ED3B0013F7EA100AF40B16186E18ED6A95 -:101B1000000FED6B000CF7DAC208F5DAC108ED6AC8 -:101B2000000EF20A1618ED690013ED6A0010ED6B55 -:101B3000000DF5D9C208F3D9C108ED6A0011ED69AD -:101B40000012300911AAB08911B9F3EA1089FE7A9E -:101B5000F7FE5C89F4091900E0880016F2C9F7FF66 -:101B6000C14800008000CF988003B2308003B310DA -:101B700080039D9C800094C48000CDD48003B33842 -:101B80008000D13CF2C9F8005C79B0B9A989B0A94C -:101B9000ED380009E818FF00ED680009A988ED6834 -:101BA00000083008314BED68000BED68000A0C9C12 -:101BB000F01F00284A885C7CED6C000BA98CED6C52 -:101BC000000AF10900602FF90A9BF15900600E9C90 -:101BD000F01F00221898C0E04A18201D1AD8E068AB -:101BE00000D71AD849F84A0C1AD8F01F00202FCD78 -:101BF000C00830191AD4189A1AD9ECCBFFF4E0694E -:101C000000FF0E9CF01F001A2FEDC0B8E508007011 -:101C10002FF8E5580070E50800662FF8E5580066D3 -:101C20000E9CF01F0014D8320E9CF01F001248A822 -:101C3000F109006A2FF9F159006AD8320E9CF01FA1 -:101C4000000D4858F10900742FF9F1590074D83289 -:101C500080011F4A000080D48000CDD48003B230C0 -:101C60008003B36C80039D9C800094C48001206439 -:101C70008000D13CD431205D30951988FAC9FFF03D -:101C8000FACEFFFC5009330231033056F0C9003060 -:101C9000EA091800E08B00BAE4081800C03030A749 -:101CA000C1582FFC35891988F20818005F0A378956 -:101CB000F20818005F09F5E91009F9B70008F7BC48 -:101CC00001FFF9B70110F9F81800F8CAFFFF300951 -:101CD0003191F2070244F0C000301004F4CC00014E -:101CE000EA001800E08B0005E8C90030C1E80E9456 -:101CF000E6071800C1D1F0C400615C54EC04180080 -:101D0000E088000EF0C00041EC001800E08B0011EC -:101D1000E2041800E0880004341CC028361C2F6838 -:101D2000F00C010CF9E9104915882FFACD3B32EA85 -:101D3000F4081800C0814008103EC6701CA92FFC92 -:101D40001988CA5B5808C28030CAF40818005F1CA2 -:101D5000320AF40818005F1A146C300AF40C1800E8 -:101D6000C1B030DCF80818005F1730ACF808180074 -:101D70005F1CEFEC000CF40C1800C0E030BC309796 -:101D8000F80818005F1CEE0818005F18F9E8000852 -:101D9000F4081800C3A1FAC8FFFC101EA34E2FFEC2 -:101DA000582EC0B0E0890005580EC2F0C298583EC7 -:101DB000C0F0584EC251C168E064FFFFEA1400FF52 -:101DC0000839E08B00234018F3E81189C198E049F5 -:101DD000FFFFE08B001B4018402AB968F1EA1108A8 -:101DE000C0D8E04900FFE08B0011402A4018B968D4 -:101DF000F1EA1108403AF1EA1088F1E91009580BAC -:101E0000F7F91A00301CC028300C2FBDD832D70388 -:101E1000D401202DFACBFFFCF01F0004F9BC00FF19 -:101E2000FBFC10012FEDD80280011C74D431202D51 -:101E3000300630110C9EC4A898557812E7D5B01022 -:101E4000049430075008C0B8E92800000990202306 -:101E5000E1E810805C835C702FE40007E203190066 -:101E6000FE9BFFF40A944008E214FFFEE7D5C00190 -:101E700008023000E0031900C0400584A964080787 -:101E8000E9D7C010B187E80700070E94E0140000FE -:101E9000C060E9D7C010B187E80700075C77EBD5D1 -:101EA000C001EE0E000EEFDEC010B18EEE0E000E81 -:101EB0005805C0B0EFDEC108EC061101A96E5C56F2 -:101EC000FDDEC010EFEE100E780C580CCB615806FA -:101ED000C080F9DEC108A96EFDDEC010F9EE100E5B -:101EE00017B715BC17851796B166EDE5118617ABC8 -:101EF0001585EDEB108B5C781596EFEB100B15AAA2 -:101F0000EFDBC010B166B18BEDE511860E0BEDEA8B -:101F1000108AF9EA100AF40C1610F5DAC010F60A65 -:101F2000000A180AF4090009F2080008F00E000E71 -:101F3000F1DEC010B18EF00E000EF9DEC010B18ED1 -:101F40001C0C5CDC5C8C2FEDD832D4213008189945 -:101F5000F5DBB010301EC0B8F32600001397202A1E -:101F6000EFE610875C8A5C772FE90E08FC0A1900FF -:101F7000FE9BFFF41699E219FFFE120CEDBB000068 -:101F8000C0411989A9691208F3D8C010B188F208B4 -:101F900000081099E0190000C060F3D8C010B188A3 -:101FA000F20800085CD8F9D8B010D822D431300A31 -:101FB000301414981495C488985B7816EFDBB01031 -:101FC0000C9E3009C0B8FD2200001D932027E7E2D7 -:101FD00010835C875C732FEE06090E93E8071900E7 -:101FE000FE9BFFF3169EE21EFFFE1C06FDDBC001FA -:101FF000EA0E1900C0400D8EA96E1C09FDD9C01053 -:10200000B189FC090009129EE01E0000C060FDD9E4 -:10201000C010B189FC0900095C79F7DBC001F20846 -:102020000008F3D8C010B188F2080008580BC0B0FF -:10203000F3D8C108F40A1101A9685C5AF1D8C0109C -:10204000F3E81008780C580CCB81580AC080F3D8FC -:10205000C108A968F1D8C010F3E810085CD8F9D815 -:10206000B010D832D431201DFAC4FFD8169712937D -:102070001092681518966801580AE0800091500A7D -:10208000314BF01F0055400AC0A04D48E06C00FEE7 -:10209000F109005C2FF9F159005CCC286C148C59C3 -:1020A0003138F0091900E08B000F4CD8201D1AD8E8 -:1020B000E068022C1AD84CB84CBC1AD8F01F004B60 -:1020C0002FCDC0085C53E3E310815C71E961000926 -:1020D000A981E9610008158B1598B168F1EB1188A9 -:1020E00015ABF1EB108815BBF7E81008F00B1618CC -:1020F000E9680013E96B0010F7D8C208F1D8C108ED -:10210000E96B0011E9680012E81245005C72A892C0 -:10211000E4031608A883ED380008A8A8ED380009E4 -:102120004B39A8FCA8B8A8EC9208F7D8C010A8DBD7 -:10213000A98BA8CB2FF8B2085807C0D00F8B0FB9C6 -:102140000F98B168F1EB11880FABF1EB1088F3E851 -:102150001008C051EAC8FFFCEBF81001F00916188E -:10216000E968000FE969000CF3D8C208F1D8C1088A -:10217000E969000DE968000E3008E968000BE968BC -:10218000000A500A314B089CF01F001A5C7CE96C75 -:10219000000BA98CE96C000A400AC038781A2F0A93 -:1021A00048E8F10900482FF9F1590048158B1599B5 -:1021B000B169F3EB118915AB6A18F3EB108915BB04 -:1021C000F7E910091039C1910C9B0A9CF01F000A15 -:1021D000C26800008000CDD4000080D48003B3909A -:1021E0008003B3D880039D9C800094C40000734892 -:1021F00080011F4A8000CAF8EB08002C5808C0B0C4 -:102200008C49F0091900E08800070A9B0C9CF01F1C -:102210000006C0580C9B0A9C6A585D185C5C2FFD38 -:10222000D8320000800125A0D42149781896700783 -:10223000C1680E9CF01F0015C1100D8B0D98B16880 -:10224000F1EB11880DAB6E1AF1EB10886E290DBB06 -:10225000F7E8100814581268C1306E075807CEA16D -:1022600048B66C0C580CC040F01F0008C08148985C -:10227000F10900562FF9F1590056C0286C070E9C41 -:10228000D8220000000080CC8000CAE4000080D08A -:10229000000080D4D421204D1897503B149C502A24 -:1022A000501950084096F01F000D403B402A40193D -:1022B0004008C0A148A8E06C00FCF10900562FF9C5 -:1022C000F1590056C0881ADC0E9C1AD6F01F000582 -:1022D0002FED5C5C2FCDD82280012228000080D415 -:1022E00080012064D4314C05EB08004A2FF87817A0 -:1022F000EB58004A0F980F831694F1E31083189659 -:10230000E609160C3048F0091900C090F01F00379C -:10231000EB08005C2FF8EB58005CC2980FB8E7D3CD -:10232000C1040FA2A363F1E2108298585C82E60810 -:102330001900C0539848E4081900C0B20C9CF01F63 -:10234000002B4A98F10900522FF9F1590052C86840 -:10235000069B0E9CF01F00265C8CC0F00C9CF01FAE -:102360000023EB0800502FF8EB580050EB08004E0C -:102370002FF8EB58004ECD48F7D2C0100C9CEEC0A1 -:10238000FFF0F01F001C0895301249B10A9CF01FA5 -:10239000001BC1D0EAC8FFFCC1A06A185808C17070 -:1023A000EF3A0010EF390011B169F3EA1189EF3A01 -:1023B0000012F3EA1089EF3A0013F5E91009103919 -:1023C000C2A00A9B009CF01F000EC2515802E3F508 -:1023D0001000EBF5000030020835EBF50000580561 -:1023E000CD61C9F8000080D48000D13C80011F4A33 -:1023F0008000D210000080CC8000CAE48001255803 -:10240000EE03000307B807A9F1E910893448F00981 -:102410001900C2A0EF39000CEF38000DB168F1E9E6 -:102420001188EF39000EF1E91088EF39000FF3E859 -:102430001008C1B0089BEECCFFF4F01F003DC0A116 -:10244000EF38000CFC19E000B968E618F00012380B -:10245000C0C10C9CF01F00374B78F109004E2FF9DA -:10246000F159004EC5D808955805C0510C9CF01F75 -:102470000031C5680FE90FF8F1E91088F1D8C00EF6 -:10248000C0700C9CF01F002D1896C4A078174AC885 -:1024900091044AC8089B91070C9CF01F002BC3B104 -:1024A000EF3800095868C0B05918C0405818C11119 -:1024B000C0B8089B0C9CF01F0025C2D8089B0C9C40 -:1024C000F01F0023C288089B0C9CF01F0022C2381A -:1024D000089BEECCFFF0F01F0016C0F1EF380010A3 -:1024E000FC19E000B968E618F0001238C0608D17DA -:1024F000302B0C9CF01F00180C9CF01F000E48E8BD -:10250000F10900582FF9F1590058F109004E2FF93F -:10251000F159004E48A93008930848A99308D83AC1 -:10252000EF3800095918FE91FF77C6BB8001255886 -:102530008000D13C000080D4800129BC0000822CA6 -:10254000000082308000D588800115508000F37C27 -:1025500080011910800118FC19B9198A1998B168FD -:10256000F1EA118819AAF1EA1088F3E81008F0C915 -:1025700000015BD9E08800035EFFF7390035EDB953 -:102580000001C0E1761A1438C0B07629105A126AD8 -:10259000C0715CD9F3E8000812385F0C5EFC5EFD88 -:1025A000D431209D503B506A781B403AF519002CDD -:1025B000F2C80013502B5078214917EA17F8F1EAB6 -:1025C00010885C88109BF1D8C00DE21B2000984356 -:1025D000505B2143308B5018F20B0C0A1897F3DA3A -:1025E000B0105C8312985049A37830025C88314067 -:1025F0005088C938401B405AF1DBC00D14485008C0 -:10260000E3D3B010F1D3C01040791039E08900064F -:10261000400B4081ADBB500B300A314B302CF01FCA -:1026200000421894C3708E58313AF4081900E08BB8 -:10263000000F4BE8201D1AD8E06802C31AD84BC817 -:102640004BCC1AD8F01F003C2FCDC008314A402B8C -:10265000781CF01F003A6E19F1D0C010F208000883 -:102660006816EBD1B0108F188E58F0000100AE50F4 -:10267000C2188E52EA021900EA0217205C82C19049 -:10268000302A300B303CF01F0028C071089CF01F2E -:10269000002CE06C00FFC4586E18B842B852189B6A -:1026A00099180415089C5C85F01F00265805C02069 -:1026B0006E075805CDF1ED65000B40085C78ACF86D -:1026C000A988ACE8E2C8FFEC5C78ACB8A988314BCB -:1026D000ACA8ED65000A0C9CF01F001B5C7CED6C47 -:1026E000000BA98CED6C000A4039406A7258089BB7 -:1026F000129C5D18495BF70800302FF8089CF758CA -:102700000030F01F000F40180213404AE1D2B01011 -:1027100014085C835C8850185803FE91FF6D069C7A -:102720002F7DD8328000D3188003B4108003B45CAE -:1027300080039D9C800094C48002E7368000D13CD9 -:102740008000CD3480011F4A000080D4D40148F8B5 -:1027500070091839C04178099109C128580BC0E1A6 -:1027600048B8201D1AD8E06801341AD8489848ACF7 -:102770001AD8F01F000A2FCDC00878089708189BB8 -:10278000305CF01F0007D8020000734C8003B410C7 -:102790008003B47C80039D9C800094C48000C97435 -:1027A000D43118971696183BC0E14BC8201D1AD893 -:1027B000E06800A41AD84BA84BAC1AD8F01F003A16 -:1027C0002FCDC008580BC11076081838C0E04B3820 -:1027D000201D1AD8E06800A61AD84B484B1C1AD8FE -:1027E000F01F00312FCDC0086E156A1811CA11D91B -:1027F000F3EA1089C0303004C1D8118A1199109CB5 -:10280000B169F3EA118911AA11B8F3EA10891248E3 -:10281000314A8F18EECBFFF8F01F0025301B0A9CC1 -:10282000F01F00240A9CF01F002418940A9CF01F3B -:1028300000236E15C1486A1811B9118A119311A8A5 -:10284000B163E7EA1183E7E81083F3E31003F01FB5 -:10285000001A18040A9C0695F01F00180A9C5805D7 -:10286000CEB10C9B0E9CF01F001649689009F5D95B -:10287000C010083AC0E44898201D1AD8E06800C784 -:102880001AD84918487C1AD8F01F00072FCDC00865 -:102890000819089CB009D8328003B4108003B4989A -:1028A00080039D9C800094C48003B4A48002E7361A -:1028B000800118E88000CD0C8000D13C8001274CBD -:1028C000000073508003B4B8D431300618971692C4 -:1028D0004AB30C94300566080A9B0A9CC3E8EF3A99 -:1028E000000CEF39000DB169F3EA1189EF3A000EDF -:1028F000F3EA1089EF3A000FF5E91009705A123A1D -:10290000C1B1EF3A0010EF390011B169F3EA118952 -:10291000EF3A0012F3EA1089EF3A0013F5E91009D3 -:10292000706A123AC0910FCA0FD9F3EA1089906AFF -:10293000F20A1900C0D02FF5580CC090F13A001FD0 -:10294000F939001FF20A1800E08B0003109C70098F -:102950005809F00B171012985808CC21580CC04099 -:10296000F01F0008180658155F9804365F59F3E801 -:102970000008E8081800CAF10C9CD8320000734C1B -:10298000800127A0D42148C83007700CC108F9384D -:10299000001F7806F0C900015808C050F969001FEF -:1029A0001897C0480E9BF01F00050C9C580CCF01D7 -:1029B000D82200000000734C800127A0D431201DD4 -:1029C0004CD8F10900322FF9F159003278161895D8 -:1029D0000D835C83F3D3C004A3695949C080F10916 -:1029E00000442FF9F1590044E08F02570DF80DE132 -:1029F000F1E110810DB80DA24C07F1E21082F01F39 -:102A000000408E885C815C821894F808000858A801 -:102A1000E08A000D189B0C9CF01F003AC5708E8850 -:102A2000E808000858A8E08900524B783009700780 -:102A30005009C3D8ED39000CED38000DB168F1E94B -:102A40001188ED39000EF1E91088ED39000FF3E837 -:102A500010086E591039C291ED390010ED3800118F -:102A6000B168F1E91188ED390012F1E91088ED390A -:102A70000013F3E810086E691039C1710DC90DD843 -:102A8000F1E910888E69F0091900C0F149A8F1092F -:102A900000462FF9F15900460DE90DF8F1E91088CB -:102AA000F1D8C00DC360C3F850076E075807CC318A -:102AB000E08F021E089B0C9CF01F0012083CC065B2 -:102AC000305CF01F00121897C09148B8F109003C23 -:102AD0002FF9F159003CE08F01E0320A300B0E9CD7 -:102AE000F01F000B30394888EF69001F70098F090B -:102AF0009107C138000080D4000073508000CD0CD5 -:102B0000800128C80000734C8000C9D48002E8BC52 -:102B10008EF8F1D8C00DC070314A0C9BEECCFFF896 -:102B2000F01F004F4CF89009F20400045C84B004DC -:102B30000DE8A598EDB80000C120EF38001EE3D1E4 -:102B4000C00DE7D3C004A371E60310FCE20200024B -:102B5000A1A80602EF68001EEF52001C6A1811BB04 -:102B6000300A11AEF7EE108E118BB09AB0AAB0BA3F -:102B7000B08A1499F5DBC00411FBF40A10FC11ECC7 -:102B8000F7EC108CF9DCB00DA37CF7DCC010B0DBE7 -:102B9000A98B180EB0CB140E10935C8E3016F5DE98 -:102BA000C010B0FAA98AB0EA6E11029BC548761A25 -:102BB00015C015D2E5E010825C82E40C1900C292C7 -:102BC000F6021618B0BBB082E5DBC208F7DBC1081D -:102BD000B092B0AB5809E080008213E213FBF7E239 -:102BE000108BF60C1900E08300FF15DB15CAF7EA1D -:102BF000108AF40E1900E08B00F7EA0A1618B2B535 -:102C0000B28AF5D5C208EBD5C108B29AB2A5C6788A -:102C1000E40C1900E08000E815E015FBF7E0108BEC -:102C2000F60C1900E08300E05809C09013FB13E98B -:102C3000F7E91089E4091900F9B601001582159B1E -:102C40001499B16BF7E2118B15A215BAF7E2108B4C -:102C5000F5EB100B580BCAC1C52900008002E736FE -:102C60000000735013EB13FA11CCF5EB108A11DB53 -:102C7000F7EC108BF60A1900E088000F4BC8201DF6 -:102C80001AD8E068018E1AD84BA84BBC1AD8F01F8E -:102C9000003B2FCDC008EA0B1618B28BF7D5C2083F -:102CA000B2B5B29BEBD5C108B2A511CB11D9F3EBEC -:102CB0001089F20A1900F9B60100C1185801C0E0E4 -:102CC0004AB8201D1AD8E06801971AD84AC84AACF9 -:102CD0001AD8F01F002A2FCDC0088F15EF39001E1B -:102CE000EDB90000E08100E45806E08000E16E19D3 -:102CF000721A15CB15D9F3EB1089E08100D9118B2D -:102D000011951099B165EBEB118511AB11B8EBEB97 -:102D10001085F1E51005C1A807F86A1907EB13CC77 -:102D2000F1EB108B13D8F1EC1088F00B1900E08157 -:102D300000BF13881395B165EBE8118513A81293B2 -:102D4000EBE8108513B8F1E510055805CE61123A8D -:102D5000C1A14878201D1AD8E06801B91AD848984E -:102D6000485C1AD8F01F00052FCDC0088003B410AE -:102D70008003B4D480039D9C800094C48003B4F489 -:102D80008003B52C138A1398B168F1EA118813AA4D -:102D9000F1EA108813BAF5E81008C0E04C68201D6D -:102DA0001AD8E06801BB1AD84C484C5C1AD8F01FFE -:102DB00000452FCDC00813F813E9F1E91088EF0999 -:102DC000001C5C88F0091900C1704BB8201D1AD88E -:102DD000E06801BD1AD84BC84B9C1AD8F01F0039C7 -:102DE0002FCDC0080A9CF01F00394B9818143006EC -:102DF000B0040A9CC5982EC8EF58001C6E187016B7 -:102E00000D880D94B164E9E811840DA8E9E81084F7 -:102E10000DB8314AF1E41004EECBFFF80C9CF01F22 -:102E2000002DEF38001CACA8EF38001D0C9CED65A0 -:102E3000000BACB8ACE5ACF5ED65000A314BF01F0A -:102E400000265C7CED6C000BA98CED6C000A6E1604 -:102E5000C1586815089C3ECBF01F0020089B0C9CB5 -:102E6000F01F001F0B890BB80B94B164E9E91184C2 -:102E70000BA9E9E91084F1E410045804CEB10E9CCA -:102E8000400BF01F00180C9C49178E05F01F000F17 -:102E90001815AE05C0D849480A9CF109003630061D -:102EA0002FF9F1590036F01F0011C02830060C9C94 -:102EB0002FFDD8328003B4108003B53C80039D9C65 -:102EC000800094C48003B5608000CD0C0000735076 -:102ED0008002E73680011F4A8000CDD48000CD34C7 -:102EE0008001274C000080D48000D13C305CF01F72 -:102EF00000061897FE91FDF3FE9FFDDE5809FE9136 -:102F0000FEB3CDDA8000C9D4D4211898F937002E49 -:102F1000761E306CF8071800C0E04948201D1AD80A -:102F2000E06801B41AD84928492C1AD8F01F0012B9 -:102F30002FCDC008306C201C5C5CF20C0706FC0C2A -:102F40000007EF66000EF40C0706EF660014580C3D -:102F5000CF313089FD6C001BFD69001A109C706830 -:102F60005D185C5CD82200008003B5948003B5DC5A -:102F700080039D9C800094C4D4211897580CC0E114 -:102F800049D8201D1AD8E06800941AD849B849CC0D -:102F90001AD8F01F001C2FCDC00878185808C0E1BF -:102FA0004958201D1AD8E06800951AD84968494C3C -:102FB0001AD8F01F00142FCDC0086E186E06109C92 -:102FC0005808C0E148C8201D1AD8E06800991AD8EE -:102FD00048E848BC1AD8F01F000B2FCDC008F01FDE -:102FE000000C0E9B306C0C97F01F000A5806CE6147 -:102FF000D82200008003B5948003B62080039D9CF6 -:10300000800094C48003B62C8003B63C8000D13C81 -:103010008000C974D431201D500B1897580CC0C0C3 -:103020004D084D19118CF80815031818F2080028DE -:1030300070495829C0D030AA30094CBE129C1C924D -:10304000129B2ECE1298149314911490C1980F8A4B -:103050000F99B169F3EA11890FAA7018F3EA108980 -:103060000FBAF5E910091039CE714C08F109002E9C -:103070002FF9F159002ECE480C990A9C089B30A6D6 -:10308000EC031800C0A1FCF6FFFC5806C0611296C4 -:10309000189516941093C498FCF6FFFC5816C2417C -:1030A0005807C0F00F860F95B165EBE611850FA6A6 -:1030B000EBE610850FB6EDE5100564160C35C26021 -:1030C00064051D865805C080F2061800C2B3189525 -:1030D0001694109AC2A80C94F6061800C2331296E1 -:1030E00018951090C2285826C1D15807C1300F86B4 -:1030F0000F95B165EBE611850FA6EBE610850FB6CF -:10310000EDE5100564160C35C0514969109CB28874 -:10311000C9781D85F8051800C053129616941091B1 -:10312000C0481296189516942FF82E4E5C582E42D1 -:1031300030A9F2081800CA11F2031800C061400655 -:10314000EDB60000E081007B4005E2150002E08161 -:1031500000763098F0031800E089000A5C53C498A8 -:103160000000735200007354000080D430A8F001B6 -:103170001800C180E7D1C0084B38E60915030619CD -:10318000F00903285808C2304B08201D1AD8E068FF -:1031900001761AD84AE84AFC1AD8F01F002F2FCD22 -:1031A000C008F0001800C040E7D0C008C108E20A1B -:1031B0001800C4404A48E7DAC008E60615030616B8 -:1031C000F00600266C0CF01F00258D053098F003EA -:1031D0001800E088000F49D8201D1AD8E068018C3B -:1031E0001AD849F849BC1AD8F01F001B2FCDC008C7 -:1031F0004959E6081503300A0618F2080028F0C9F4 -:10320000FFF0930A5807C0D00F8B0FBA0F99B1691E -:10321000F3EB11890FABF3EB1089F5E91009911964 -:103220004899E60815030618F20800282F08300907 -:10323000069CB0C948B8B083C038E06C00FF2FFDD1 -:10324000D8320000000073548003B5948003B64C5C -:1032500080039D9C800094C480012F788003B66415 -:1032600000007352D431494730050E963EF42EC704 -:10327000ECC3FED40F882FF85C58AE88EEF9FFFC43 -:103280005829C061E8081800E08B0009C0F85819F7 -:10329000C0D1F2081800E088000A6C0C580CC0403D -:1032A000F01F00068D05EF45FFFC2E472E46063722 -:1032B000CE21D8320000735480012F78D431306889 -:1032C0001293189616951497F939002EF0091800E4 -:1032D000C0E04B78201D1AD8E06801DA1AD84B58A4 -:1032E0004B5C1AD8F01F00352FCDC008580BC5C055 -:1032F00017891798B168F1E9118817A9F1E91088C1 -:1033000017B9F3E81008C500189B0A9CF01F002CA1 -:103310001894C4A10B88FC19E000B968E618F00005 -:103320001238C420069B0A9CF01F00265C5CE80C47 -:103330001800C3C55C6C4A49F8081503302AF00C24 -:10334000010CF20C00289166F0C9FFF0930A0FDA25 -:10335000F16A000D0FCAF16A000C0FBAF16A000B96 -:103360000FAAF16A000A0F9A1095F16A0009ECC3DE -:10337000FFD10F8AB2C4F16A0008C0F87009701456 -:103380008B09F01F00120E99069A089B0C9CF01FE7 -:103390000010089CF01F000F6A08306C109B580842 -:1033A000CEE1109CD832E06C00F6D8328003B594A0 -:1033B0008003B67880039D9C800094C480012558CA -:1033C00080013014000073548000C97480012F08FC -:1033D0008000D13CD421189E580CC0E14958201DD2 -:1033E0001AD8E068024A1AD84938494C1AD8F01F4E -:1033F00000142FCDC008761AF4C8FFE4F137000F8F -:10340000F136000CF139000DF138000E782BB1695E -:10341000F3E61189F3E810897818EFE910091059DB -:103420001669C061F4CBFFD82ECAF01F0006D8225F -:103430008003B5948003A13880039D9C800094C4D0 -:10344000800132BCD431202D189616911495580C59 -:10345000C0E14CA8201D1AD8E068027F1AD84C8819 -:103460004C8C1AD8F01F00482FCDC00894593378DF -:10347000F0091900E08B000A4C48149CF109002265 -:103480002FF9F1590022C3087414E8C7FFE40F981C -:103490000F89F1E910893018F0091900C1E10FD83E -:1034A0000FC9F1E91089E0680604F0091900C1515B -:1034B0000FB80FA9F1E91089E0680800F0091900B8 -:1034C000C0C1E938001BE939001AF1E91089E06848 -:1034D0000806F0091900C0E04AC80A9CF109002852 -:1034E0002FF9F1590028F109001E2FF9F159001E9A -:1034F000CA184A68F109001A2FF9E8C3FFD6F15932 -:10350000001AFAC2FFFC304A069B049CF01F002000 -:10351000EF380018EF390019B169F3E81189EF3875 -:10352000001AF3E81089EF38001BF1E910096C1854 -:103530005808C0C01039C0A1049B3019E8CAFFDC8C -:103540000C9CF01F00143018C0A83009EECAFFF818 -:10355000FACBFFFC0C9CF01F000F30080FEA0FF9AC -:10356000F3EA1089301AF4091900C1503028F00923 -:103570001900C591C52800008003B5948003A138C7 -:1035800080039D9C800094C4000080D48002E736B4 -:10359000800132BC5808C4D03008AEE83028304A28 -:1035A000AEF8EECBFFF2EECCFFE8F01F0025304A7C -:1035B000069CEC0A000BF01F0022ED39002E30684B -:1035C000F0091800C0E049F8201D1AD8E06802D9B7 -:1035D0001AD849D849DC1AD8F01F001D2FCDC008D1 -:1035E000306820185C58EE080009F33B0008F36BC4 -:1035F0000012E808000AF56B000EE208070BF36BF7 -:103600000008E2080709F56900145808CEB10C9CBF -:103610006C680A9B5D18C0D80C9CFACBFFFCF01FAD -:10362000000DC07848C8F109002C2FF9F159002C81 -:103630000A9CF01F000A2FEDD83200008002E73606 -:103640008003B5948003B5DC80039D9C800094C406 -:103650008000B3B4000080D48000D13CD42178191C -:10366000F338001BF339001A1697F1E91088189601 -:10367000E0690800F2081900C070E0690806F20865 -:103680001900C231C1C8189B0E9CF01F00173E4B99 -:103690000C9CF01F0016C0E04958201D1AD8E068A5 -:1036A00004A41AD84938494C1AD8F01F00142FCD59 -:1036B000C0080E9B0C9CF01F0012C148189A169C63 -:1036C0002D1BF01F0010C0E848F8F10900282FF961 -:1036D000F1590028F109001E2FF9F159001EF01FC1 -:1036E000000BD82A800133D48000CDD48003B59458 -:1036F0008003B36C80039D9C800094C4800122E40D -:1037000080013444000080D48000D13CD431300AA0 -:1037100018941691303C338BF01F0042E8C8FFD15B -:103720001895580CC0A14C08E06700FFF10900246F -:103730002FF9F1590024C738985A3379F20A190041 -:10374000E08B000F4B98201D1AD8E06804311AD87E -:103750004B784B8C1AD8F01F00382FCDC008300999 -:103760007813E6C7FFE4AEE93019AEF93069E93AFB -:10377000002EF20A1800C0E04AC8201D1AD8E068DE -:1037800004391AD84AD84ABC1AD8F01F002B2FCDBA -:10379000C00830664AAB4ABA20165C56F006070CE1 -:1037A000EE060009F36C0008F606070CF36C001235 -:1037B000F406070CE6060009F36C000EF006070C91 -:1037C000F36C00145806CE913042EECCFFF2E802C2 -:1037D000000B049AF01F001C049A029BEECCFFE839 -:1037E000F01F00193069AED2AEC9AEB6AE863088D1 -:1037F000301AAEA8AE9AE769001BE768001A089C69 -:1038000068680A9B5D184888F10900182FF9EFDCF9 -:10381000C008F15900180A9CF01F000C0E9CD83209 -:103820008000D318000080D48003B5948003B6A034 -:1038300080039D9C800094C48003B5DC8003B71690 -:103840008003B58D8002E7368000D13CD4211694E8 -:103850001896189B1497089CF01F00541895E08147 -:1038600000DF09890998B168F1E9118809A9F1E92E -:10387000108809B9FC1AE000F3E810081099E6195D -:10388000F0001439E08000CC5808E08000C9301BFB -:10389000089CF01F00475C5CEA0C1800C0545807F5 -:1038A000E08100CBCC184C39EBDCB008EA081503FA -:1038B0000A18F20800282F0870095809F9B9000100 -:1038C000F1F90A004BB9EA0815030A18F2080028B2 -:1038D0007048F0C900015819E088000F4B68201D9E -:1038E0001AD8E06803A51AD84B484B5C1AD8F01FC9 -:1038F00000352FCDC00858185F0858075F09F3E856 -:103900001008C041E06400FFC078089B0C9CF01FC9 -:10391000002EE9DCC0085807E08000854A5AEA0911 -:1039200015030A19A369F409000870485828C0B1A2 -:103930002F890E9BF40900090C9CECCAFFD1F01FE3 -:103940000023C6B85818C6E110990E98905B904AAB -:10395000F40B1900C111700A580AC0E04968201D13 -:103960001AD8E06803C41AD84998495C1AD8F01FDD -:1039700000152FCDC008F13A000CF20A1800C05112 -:1039800070085808CE41C51890CB300A303CF01F63 -:1039900000111896C4F00E9BF01F000F5C5CC1F084 -:1039A0000C9CF01F000EC468800125588001301463 -:1039B000000073548003B5948003B6D480039D9CAB -:1039C000800094C48001370C80012F088003B6FC6E -:1039D0008000D3188000CF988000D13C306CF01F5D -:1039E000001AC170300899169908EA081503F00505 -:1039F00001054968F00500256A045804C07008985C -:103A000068045804CFD1910CC0288B0C089CD82294 -:103A10000C9CF01F000F089C5C5CD822E06C00F648 -:103A2000D822089C5C5CD8220E960E9CF01F0009E0 -:103A3000CD6B089C5C5C4888F10900242FF9F15992 -:103A40000024D8228000C9D4000073548000D13CE7 -:103A50008000CD1E000080D4D421202D169618970A -:103A6000149531CB0C9CF01F0027C0804A68E06C95 -:103A700000FE90592FF9B059C4180E9B0A9CF01FF4 -:103A80000023C3410B890B98B168F1E911880BA998 -:103A9000F1E910880BB9FC1AE000F3E8100810995E -:103AA000E619F0001439C0F13019BAA935E9BAC9DC -:103AB000F3D8C207BAF8BAD9A988BABCBAE8FAC921 -:103AC000FFFEC1586E1912586E291268C0906E38E8 -:103AD0005808C041E06C00FCC118EEC5FFF40C9A18 -:103AE0000A9B0E9CF01F000AC08848A90C9B0E9CE4 -:103AF000EECAFFD1F01F00085C5C2FEDD822000059 -:103B00008000CDD4000080D4800125588001384C3D -:103B10008003B58D80012F0878983019B0895EFC3C -:103B2000D4217897EF380024EF390025F0091800E8 -:103B3000C021D82AEE080028201D701630086C1904 -:103B40008CCA8CDB20EA1AD620EBF2CCFFF2F01FF5 -:103B500000182FED587CC0F0581CC0310C95C138AE -:103B6000EF3800242FF8F1D8C0030C9CEF68002434 -:103B7000F01F0010E06C00F4D8228ADB6A1CF01FF2 -:103B8000000E6A055805CFA1EF3800242FF8F1D8B0 -:103B9000C0030C9CEF680024F01F00064878E06C1E -:103BA00000F290092FF9B009D82200008001933467 -:103BB0008000D13C80013F7C000080D4D421204D86 -:103BC0001896F01F002D5806C5306C955805C50095 -:103BD0000B885808C4D0E0680600300ABA68E06B69 -:103BE0000600303CF01F00251897C3F03008FACBD0 -:103BF000FFF4AA88781CF01F00229A6B580BC35060 -:103C00005C7BFAC8FFF2FAC9FFFCFACAFFF86E1C27 -:103C1000F01F001C586CC2606E18402B101B40181F -:103C20005C5B0E9C100B5C7BF01F001749789019B1 -:103C30002FF9B0196E19F338001BF339001AF1E9A6 -:103C40001088E0690800F2081900C060E069080601 -:103C5000F2081900C0716C480C9B0E9C5D185C5CEE -:103C6000C0400E9CF01F000A0C9CF01F000A2FCDD4 -:103C7000D822000080013FA08000D31880013F5867 -:103C8000800192DC8000D210000080D48000D13C02 -:103C900080013B20D4211897580CC0E149B8201D61 -:103CA0001AD8E06801491AD8499849AC1AD8F01FC7 -:103CB000001A2FCDC008499899983778F9680036CE -:103CC00036C8F9680037496899584968189B996857 -:103CD000495CF01F0016496CF01F00163628EF688B -:103CE00000353068EECCFFD1EF68002EF01F0012D7 -:103CF000581CC040E06C00F4D822E06805DC300CB1 -:103D0000EF58002CD82200008003B71C8003A13894 -:103D100080039D9C800094C40000746C80013A581C -:103D200080013D5880013B1880013E6880013D388C -:103D300080018F4480019128D40116985C7A189BE9 -:103D40002F29109C5C79F01F00045C7CF9BC00FFFB -:103D5000D80200008000CEC4D42131B918977898D9 -:103D6000965AF20A1900E08B0005E06C00F4D822A4 -:103D7000F1390025F13C0024F2CAFFFFF5DAC00357 -:103D8000183AC041E06C00F2D822F16A0025F0092F -:103D90000028169C911B3F26F01F00050E9CF01F6B -:103DA0000005EC0C1800CFB0D82A00008000CD1E12 -:103DB00080013B20D42130061897E9DBC01030A5E4 -:103DC000C138EE060708201D48BC1AD8F01F000BAA -:103DD0002FED5806C080EC050C085809C041488CEE -:103DE000F01F00062FF60836CED5486CF01F0003F2 -:103DF000D822000080037AF0800094C48003B76862 -:103E0000800384D448CD48D0E3B00001D55348C0E6 -:103E100048C10230C06248C2A505A1240230CFD3F8 -:103E200048A048B10230C06230023003A122023003 -:103E3000CFE3488F000100008003760000000008F7 -:103E4000000009B88003F480000009B800008CC8A5 -:103E500080008EDCD4013018F96800087808580812 -:103E6000C030781C5D18D802D4014869930C931BAC -:103E7000F33800085808C040129CF01F0003DA0A0B -:103E80000000749880013E54D421201D1895169688 -:103E90001494300B30CA49DCF01F001D300B49DC94 -:103EA000F01F001D300B49DCF01F001D497B49DC71 -:103EB000F01F001D1897581CC0400E9C2FFDD822E3 -:103EC000F01F001A1897581CCF910C9B0A9C49862A -:103ED0008D07F01F00181897581CC04030088D0837 -:103EE000CEDB30088D08F01F00141897581CCE61E7 -:103EF000FACBFFFD302CF01F0011F9B701FFFBF8E2 -:103F00000803E9F80A00CDAB00007498800091D056 -:103F100080013F8C80018F3080013F3C80019F6099 -:103F200080013E54800144588001440C0000749488 -:103F300080018F488001443080014110D401169CDB -:103F4000580BC041F01F0004D802300B301CF01F8A -:103F50000002D80280014110D4014879F3380008EA -:103F60005808C021DC0A3008F3680008F01F00037D -:103F7000DA0A00000000749880014284D4015C7B5E -:103F8000F01F0002DA0A00008001433CD401169CB5 -:103F9000F7DAC010F01F0002D80200008001433C95 -:103FA000EBCD40C0203DF01F00164969F3380008F2 -:103FB0005808C04072085808C0402FDDE3CD80C0CB -:103FC000E0680100FAC6FFF4E06C01000CE8F01FA5 -:103FD000000E0C9B1897F01F000D9A5B580BC0A0A9 -:103FE0005C7BFAC8FFF81A99FACAFFFC0E9CF01F16 -:103FF00000080E9CF01F0007CE1B0000800140A4AB -:10400000000074988000920080013F58800192DC8B -:10401000800091E8D40148583019701CF1690009FA -:10402000700A5D1AD8020000000074A8EBCD40CCE5 -:10403000206D49A6FAC7FFF46C2E8F2EECE200002B -:10404000EEE3000016961093FACEFFF0580CC22053 -:104050007C08FC1C8000F1EC100BF4081509BBB8BF -:10406000F1E611C812481648301C9D08F01F000CDC -:104070000E9C30CA1A9BF01F000BFB38000AA68862 -:10408000FB39000B300CA699F01F00052FADE3CDD6 -:1040900080CC7C0BCE3B00008003B774800075B4ED -:1040A00080007534EBCD4080201D4987EF38000833 -:1040B000EDB80000C071EF3900093008F0091800B0 -:1040C000C0402FFDE3CD808030091A98129B129CCE -:1040D000305AF01F000F3FF91B88F2081800CF205C -:1040E0001B98EDB80001CEE13008301C109B302940 -:1040F000E06A00F0F01F000630186E1CEF6800093F -:104100006E095D19CDFB0000000074A88001402CF1 -:10411000EBCD40C0201D301AF40C1800C1B0C08394 -:104120003028F00C1800C2602FFDE3CFC0C01A97F2 -:10413000300630091A98E06A00F1129B301CF01F1B -:1041400000161B98EC081800CF51300C2FFDE3CD62 -:1041500080C018961A9730191A98E06A00F1300B4F -:10416000129CF01F000D1B98EC081800CF51300C6A -:10417000CEEB48A8F1390008F9D9C001F7FA1E00C2 -:10418000F9BC0100F9B8005AF7F80E002FFDE3CD95 -:1041900080C000008001402C000074A8EBCD406876 -:1041A00048F516961893AA4B301CF01F000E0A9C77 -:1041B000310A300BF01F000C069BF5D6C010300CF6 -:1041C000F01F0009304A300B488CF01F0007300CFC -:1041D000F01F00040C9CE3CD80680000000002107A -:1041E000800075B4800075348003B780EBCD40400B -:1041F00020ED30083009FAE90018FAE90000FAE980 -:104200000008FAE9001049BBFAC6FFD4762A8D2AC5 -:10421000F6E80000301CECE90000F01F0017320A3D -:10422000300B1A9CF01F00150C9C30CAFACBFFE033 -:10423000F01F0012300CF01F00103019FB38002A5C -:10424000F2081800C0503FFC2F2DE3CD804048C835 -:10425000F1390008F9D9C001CF8030083039304A2F -:10426000109B301CF01F00072F2DE3CF8040000073 -:104270008003B784800075B480007534000074A892 -:104280008001402CD42130094A881695F169000933 -:104290001896320BF01F00268C085CC82FE8F7D860 -:1042A000B010AA0BEFDCB010F6C90007E06805F902 -:1042B000F0091900E08B00300D890D98F208180004 -:1042C000C220F6071900C182E0640200F9D7C010CD -:1042D0005C7B181BEC0C000CE04B0200E80B17B0E9 -:1042E0005C7BF01F00138A0B0E0CEFDCB010EE0BA2 -:1042F0001900FE9BFFED48F83009118AF20A1800F8 -:10430000C0D1D8220DA8F2081800CDC10DB8F2080E -:104310001800CD813008AA08D822F5DBC010486CFF -:104320000C9BF01F0006D822000074A88001419C5D -:10433000000074A48003B76C8001447CD4314A38F7 -:1043400018921695118A3009F20A1800C3615805AF -:10435000C33049F83004F0C0FFF4E0610200C22825 -:10436000E06602000C970C93301CA006F01F0019A9 -:10437000300B497C314AF01F0018E404000C0E9AFF -:10438000300BF01F0015304A300B494CF01F001263 -:10439000300CF01F0010EA0601080604EBD8B0103C -:1043A000C0B0E2051900FE9BFFDDEDD5B010EFD6E1 -:1043B000C0100E93CDABD832F5DBC010189B488CE3 -:1043C000F01F0008CC5B0000000074A4000001FC9A -:1043D000800075B4800075348003B7808003B770A7 -:1043E0008001447CD401201D3009301C1A98E06AF9 -:1043F00000F5129BF01F0004314CF01F00042FFD4C -:10440000D80200008001402C800075D2D401F01F3A -:104410000007F01F0007C03030CCD802F01F0003A7 -:10442000F01F0003CFA1DA0A800143E4800141ECD0 -:10443000D401314CF01F0006F01F0006C03030CC14 -:10444000D802301CF01F0004DA0A0000800075D288 -:10445000800141EC80007618D4014878910C911BC2 -:10446000F0CCFFF8F01F0005F9BC010CF9BC00010D -:10447000D8020000000074A8800076385EFCD703E4 -:10448000EBCD40F849C56A096A181039C2F08B0CA7 -:10449000EAC7FFF0EAC6FFF4EEC30010EAC4FF70FB -:1044A0000F89EDB90000C091EDB90001C0616C0940 -:1044B0006A081039E08800082F072F060837CF1147 -:1044C000E3CD80F86E19300B169C5D190F883FDA2A -:1044D000F1EA0009EDB80002C0716609EEF8FFF8D4 -:1044E00012088D08CEABAE89CE8B5809CD118B1C2E -:1044F0008B0CCCFB000074B8EBCD408048CE1897F5 -:10450000300AFCCBFFF0F408150417892F88FC084B -:10451000000CEDB90000C0512FFA2F0B588ACF4183 -:104520003018F96800088F0AE3CF9080000074B853 -:104530002FFC4849A56C18091388A1D8B2885EFCE5 -:10454000000074B82FFC4848A56C30091808B089E1 -:104550005EFC0000000074B8EBCD40E0189E14979C -:104560001295587BE08B002C496AF6C8FFFFA568BE -:10457000F408000C1989EDB90001C1F0F608150422 -:104580001296F4080008A1B6F60915012FF9F409EE -:10459000093E740AB8869157FC0A000A913A5805F8 -:1045A000F9BC0001F9B90104EDD9E138F9F81E00B0 -:1045B000F9BC0101E3CD80E0E3CF80E0E3CFC0E0D0 -:1045C000000074B848387019700C121C5EFC0000B2 -:1045D000000074B85EFC300899085EFC1899780CED -:1045E000580CF9B80001F3F80A005EFC300899088D -:1045F0005EFC300899085EFC5EFC5EFC5EFC5EFCC6 -:10460000D401580BC110F80B000B300A487E7C090E -:10461000F40900092FDAF208141FB98810091019DB -:1046200018C9163CCF51D802000074B85EFD5EFF79 -:104630005EFF5EFF5EFF3FDC5EFC78082FF89908A6 -:104640005EFCD401780820189908C020D80A5D1BA8 -:10465000DA0A301899085EFCD401F01F0002D80273 -:1046600080016D6CEBCD406048784889F5DBC01067 -:104670001895189B7006720C5D160A9CF01F0004BA -:10468000E3CF906000007540000074B4800091E8B2 -:10469000D401E06A0088300B485CF01F0006F01F70 -:1046A00000064868300C9118910CD802000074B8CC -:1046B000800091D0800146C000008B545EFCD7037F -:1046C000D401F01F0011F01F0011301B4909169C86 -:1046D000490AF01F00114919491A301B303CF01FDC -:1046E000000EF01F0010300A301BE06C00F0F01FCD -:1046F000000EF01F000E300A302C149BF01F000C2F -:10470000D80A0000800148C0800147888003B79024 -:10471000800146BC800148548003B794800157A4AF -:104720008001499C800147E0800149F480014730C5 -:104730004828F00C092B5EFC00007548EBCD40E0EA -:104740004905189716966A085808C0205D1848E869 -:10475000F007032C580CC061C088F0061800C09008 -:104760002F8C19885808CFA16A085808C080C00843 -:1047700078193028F0091800FE9BFFF8E3CD80E09F -:1047800000007544000075485EFCD703EBCD40FC8B -:104790004935189630120A94EAC3FFF46A0858089B -:1047A000C0D068385808C19030185806CF805816C5 -:1047B000C0305808CF40E3CD80FC48976E28701970 -:1047C000703C700B5D196E2870296E188F29103996 -:1047D000EFF20A003008CEAB0697CF1B000084B47E -:1047E000EBCD40C018961497580BC24049789009F9 -:1047F000F6091900E088001BF60B00184949F20879 -:10480000002C781A74085808C171741E7428103E60 -:10481000C1507C283009951895099D369D07FD6B80 -:10482000001078089D18E3CD80C0307B305CF01F0D -:104830000009E3CD80C0741ECEDB306B305CF01F0E -:104840000005E3CD80C00000000002200000755C80 -:104850008001473CEBCD408049281497129E581B9D -:104860005F8A9009F80919005FB81468C130F80C24 -:10487000001AF60B0019F4CCFFFF48BB48B8F60A43 -:10488000002AF0090029952EF60C09299507E3CD99 -:104890008080302B305CF01F0006E3CD808000006C -:1048A000000002200000755C000084B48001473CD9 -:1048B000D401307B305CF01F0002D8028001473CFD -:1048C000EBCD404030084AB9B2884ABA940858083B -:1048D000C4D04AA95C784AABF00800184A9EA36885 -:1048E000300C2F88F6CAFFF4F20800082F89930CC9 -:1048F000F34AFFFCF34EFFF82F491039CF91F6CE63 -:10490000FFE84A1A49EB301C970C972A971A14981B -:10491000F4C9FED42EC8F148FFF41238CFC1F54ACD -:1049200001342F4BF4CAFEC01C3BCEF1E06A00807C -:10493000300B496CF01F00164948F0C9FF902F0852 -:10494000F148FFFC491A1238CFB130064918F54634 -:10495000007C910A9116310A0C9B48FCF01F000C58 -:1049600048E80C9C9106E3CD8040485BCC9B00005E -:1049700000007598000002200000755C000084B4FF -:10498000800148B0000082340000759C800091D006 -:1049900000007630000076200000761C4848485918 -:1049A000485A91099119913A912A5EFC000002241B -:1049B000800149D4800149EC48484859485A911926 -:1049C0009109913A912A5EFC00000224800149D4A9 -:1049D000800149EC48494858311AEA1A4000143C11 -:1049E0005E085E19800149D480014A0C481C5EFCB7 -:1049F000800149ECD4013019300A303BFC1C4000E6 -:104A0000F01F0002D8020000800186C8EBCD408074 -:104A10004B373099EA194000123CC310E088001F60 -:104A200030B9EA194000123CC2A0C4233139EA1956 -:104A30004000123CC500E069078AEA198000123C78 -:104A4000C241761CF01F0027300A4A77149B314C74 -:104A5000F01F00260E9CE3CD80803019EA1940003B -:104A6000123CC320E08800153079EA194000123C5E -:104A7000C0603089EA194000123CC0713019300A18 -:104A8000303BF01F001B49B70E9CE3CD8080FC1922 -:104A90004000123CCFA130194978300AF149004456 -:104AA000304C149BF01F00110E9CE3CD8080301918 -:104AB000300A303B30ACEA1C4000F01F000D48D7F4 -:104AC0000E9CE3CD8080302B300CF01F000C0E9C30 -:104AD000E3CD808048470E9CE3CD808080014A0C66 -:104AE0008001DA2C800149D480014658800186C8B3 -:104AF000800152F0000087F480018390D401201DD2 -:104B00001A9CF01F0008C07040085818E088000682 -:104B1000F01F00052FFDD802F01F00042FFDD80262 -:104B200080015F4480015EDC80015EB4EBCD40F823 -:104B3000201DFEF805EA189716951496103AC3A0A2 -:104B4000FEF805E0103AC610FEF805DC103AC06029 -:104B50000C970E9C2FFDE3CD80F8E068018CEA18DD -:104B60008000103CE08000F7E068078AEA188000C7 -:104B7000103CE08000ADE0680186EA188000103C3F -:104B8000CE8176170E9CF01F0169F01F0169C0915C -:104B9000FEF805A0EEEA0000F0EB00006E29912976 -:104BA0000C97FEFA0592300BFEFC0590F01F016495 -:104BB000CD1BF01F015F1894C4D1E0680184EA188E -:104BC00080001037E0800185E08B00D2E0680107AB -:104BD000EA1880001037E08001A0E0680183EA183D -:104BE00080001037CB616A170E9CF01F0156E080E1 -:104BF0000230FEF905523048F34800440E9B334C16 -:104C00000C97F01F0152CA6BFEF4053CE0680112DC -:104C1000EA188000E8F300F8103CC540E08B006320 -:104C2000E0680107EA188000103CE08000F7E068C7 -:104C3000010DEA188000103CE080010DE0680105DC -:104C4000EA188000103CC851761C1497F01F0140F0 -:104C5000C81BFEF304F2E0680188EA188000E6F45D -:104C600000F81037E08001B0E08B00ABE068018312 -:104C7000EA1880001037E080018BE0680184EA18B0 -:104C800080001037E080016EE0680107EA188000BC -:104C90001037FE91FF5F6A18303CF13B000BF01FAC -:104CA000012D3019300A303B30CCEA1C4000F01F97 -:104CB000012A300AFEF70470149B301CF01F0127F4 -:104CC000C49B761C1497F01F0126C44B6A1CF01F6E -:104CD0000125300AFEF70490149B314CF01F011F90 -:104CE000C39BE068018AEA188000103CE08000CB9A -:104CF000E068078AEA188000103CCE90E068011551 -:104D0000EA188000103CFE91FF2576150A9CF01FE2 -:104D100001170BC93048F0091800E08001BBE08B97 -:104D2000019B3008F0091800E08001BF6738301996 -:104D300011EAF20A1800E08001DD0A9CF01F010C64 -:104D4000FE90FF08300A0C97305C149BF01F0103A3 -:104D5000C01B76170E9CF01F0107F01F00F5C4F171 -:104D60000E9B33DC0C97F01F00F9CF4AE068018AF4 -:104D7000EA1880001037E08000BDE068078AEA1872 -:104D800080001037E0800099E0680188EA18800010 -:104D90001037FE91FEDF6A170E9CF01F00F7C0A0CF -:104DA000F01F00F63069FEF8039EFEF60376F14927 -:104DB00000440E9B336C0C97F01F00E4CCBAE06803 -:104DC000018EEA1880001037E08000B7E068078A9B -:104DD000EA1880001037FE90FF7BE068018AEA182D -:104DE00080001037FE91FEB66A160C9CF01F00E49E -:104DF0001897E0800114FEF7032ACACA3099FEF81A -:104E000003460C97F1490044FEFA032C300BFEFCDC -:104E10000372F01F00CBC9EA76150A9CF01F00DA76 -:104E2000302B169CF01F00D9FEF702FCF01F00C0CB -:104E30001896E08100DD0A9B337CF01F00C40C9AB9 -:104E40003019303B30ECEA1C4000F01F00C3FE9FDD -:104E5000FE8276160C9CF01F00CE302B304CFEF7F5 -:104E600002C6F01F00CAF01F00B2E08000EC30194B -:104E7000300A303B310CEA1C4000F01F00B7FE9FA7 -:104E8000FE6A76150A9CF01F00BE1897E08000BAF3 -:104E9000300A302C149BF01F00B13078E9480044F0 -:104EA000F01F00A3FE91FE560A9B0C9733BCF01F27 -:104EB00000A7FE9FFE506A1CF01F00AA089AFEF78A -:104EC00002A6089B314CF01F00A5FE9FFE446A1706 -:104ED0000E9CF01F00B0C060FEF9026C3058F34821 -:104EE00000440E9B335C0C97F01F0098FE9FFE332E -:104EF0006A170E9CF01F00A2C0803069FEF80248BD -:104F0000FEF60220F14900440E9B33BC0C97F01FC3 -:104F1000008FFE9FFE206A1B337CF01F008C089AD6 -:104F2000FEF702043019303B30ECEA1C4000F01F61 -:104F3000008AFE9FFE106938301911EAF20A180043 -:104F4000FE90FE086A1CF01F0094FE91FE03189A62 -:104F5000189BFEF70246301CF01F0080FE9FFDFBF1 -:104F60006A150A9CF01F008B1897E08000874F2A73 -:104F7000300BFEFC022AF01F00721897E08000AE92 -:104F800030580C97E7480044FE9FFDE56A150A9CDF -:104F9000F01F006C1897E08000956938301911EA0D -:104FA000F20A1800FE91FDD64E3A300B4FDCF01F8E -:104FB00000641897E08000A930480C97E748004447 -:104FC000FE9FFDC96A160C9CF01F006B1897C2600B -:104FD000F01F006A30684D37E7480044FE9FFDBB74 -:104FE000EACBFFFC301A30DCF01F005C3019300ACD -:104FF000303B30CCEA1C4000F01F0057FE9FFDAB59 -:10500000F01F004BFE90FF4E0E9A3019303B30CC13 -:10501000EA1C4000F01F0050C44B303B30CCEA1C6F -:10502000400030190E9AF01F004C0DEB304CF01F71 -:1050300000490E9A0E9B301C4BB7F01F0048FE9F94 -:10504000FD8A0C9B33ACF01F0041FE9FFD844D3662 -:10505000FE9FFDD63068F0091800FE98FE693828DA -:10506000F0091800FE91FD76300A0C97325C149B13 -:10507000F01F003AFE9FFD6F189A303B30CCEA1CBF -:1050800040003019F01F0034EB3B000D303CCD0BDD -:105090003008FACBFFFC0C9716F8301A30ECF01FF2 -:1050A000002FFE9FFD580A9CF01F003FFE90FD520E -:1050B000300A0C97306C149BF01F0028FE9FFD4BAC -:1050C0000BCB302CF01F00230E9A0E9B301C4B375D -:1050D000F01F0022FE9FFD3F189A303B30CCEA1CA7 -:1050E00040003019F01F001CEB3B000D301CCA0BB8 -:1050F00048D7F01F000FFE91FF750A9B338CF01FFD -:105100000013FE9FFD28189A303B30CCEA1C40006B -:105110003019F01F00110BCB301CC8AB800152F0CE -:10512000800151A8800156388001D9AC800185E406 -:105130000000763880018E9C8001E03C8001EF20E9 -:105140008001E88C000087F480016D6C8001E2D45E -:1051500080018390800186C8800146588001E00864 -:105160008001DA2C800149D48001E2FC80016D4A83 -:105170008001D9C88001E4D080014AFC8001E4307C -:105180008001E0D48001D9FC800183A08001D9E8AE -:105190008001E81C8001E3DC80014A0C8001E7B853 -:1051A0008001E58880016D48EBCD40C04C96189792 -:1051B0003138EA184000103CE0800087E088002485 -:1051C000E068010DEA188000103CC150E088004002 -:1051D000E0680115EA188000103CC0D0E068018A40 -:1051E000EA188000103CC070E0680112EA188000E4 -:1051F000103CC3910E9C4B7AF01F003718960C9C04 -:10520000E3CD80C03018EA184000103CC510E0889B -:10521000002E30D8EA184000103CC1003108EA18CE -:105220004000103CC3F030C8EA184000103CC1B147 -:10523000301C302BF01F00290E9C3019300A303BF7 -:10524000F01F00274A760C9CE3CD80C0E068010582 -:10525000EA188000103CCCF0E0680107EA188000F2 -:10526000103CCC900C9CE3CD80C0E04C008ACC304C -:10527000FC184000103CCF71307949B8300AF14930 -:105280000044149B302CF01F0019300A30FC149B92 -:10529000F01F0016302B300CF01F00100C9CE3CDDB -:1052A00080C0303C302BF01F000D0E9CCC7B48E9B9 -:1052B0007298ABC8300A9398149B303CF01F000BD7 -:1052C0000C9CE3CD80C048A60C9CE3CD80C00000C0 -:1052D000800151A880014B2C800183A0800186C8E9 -:1052E00080015638000087F480014658800149D477 -:1052F000D421FACD00E4FEF602E21898FEF502E0B1 -:10530000ECF700F83109EA194000123CE08000D5C2 -:10531000E08B003630A9EA194000123CE08000C260 -:10532000E088005330C9EA194000123CE08000A830 -:10533000C6A330D9EA194000123CE080011930F9C7 -:10534000EA194000123CC3D1FEFA0298300BFEFC71 -:105350000296F01F00A61896C341189BFEFA02841D -:10536000FEFC028CF01F00A1304C301BF01F00A18E -:105370000C9A0C9B301CF01F00A0C238E06901841D -:10538000EA198000123CE0880011E0690188EA19FE -:105390008000123CC100E08B00A5E0690186EA199B -:1053A0008000123CC0E1C078E0690183EA19800006 -:1053B000123CC363109CFEFA0226F01F0090189561 -:1053C0000A9C2C7DD8223079EA194000123CC7C0D3 -:1053D000E08800973089EA194000123CE08000CF55 -:1053E0003099EA194000123CCEC14FEA300BFEFC66 -:1053F000020EF01F007E1894E08000CF3048ED4888 -:105400000044CDFB4F7A300B4FECF01F0078CD916C -:10541000189A189B4FC5301CF01F0077CD2BE06900 -:105420000107EA198000123CCC60E0690115EA1915 -:105430008000123CC1203139EA194000123CCC11E5 -:10544000300A301C149BF01F006C300A304C149B47 -:105450004EE5F01F0069CB5B6F38301911EAF20A94 -:105460001800C72076160C9CF01F00690C9CF01FDA -:1054700000694E98580CF0051710CA3B303B3019A4 -:10548000300AF01F0066302B303CF01F005A300A03 -:10549000301C149BF01F00584E150A9C2C7DD822FE -:1054A0004D0A300B4DFCF01F00511897C3B0305817 -:1054B000ED480044C86B303B3019300AF01F0057EC -:1054C000302B304CCE3B6C9BE21B0040C2414C5A0F -:1054D0004D5CF01F0046C9D03028ED480044C71B82 -:1054E000E069018AEA198000123CFE90FF65E069DC -:1054F000018EEA198000123CFE91FF64C5CBFC19B5 -:105500004000123CFE91FF5E300A149B149CF01F79 -:10551000003AC57B300A4BC5149B301CF01F003687 -:10552000C50B30481A9BBAE8336CF01F00400E9A46 -:105530003019303B30ECEA1C4000F01F00384B893A -:105540004BB89119C3EB76170E9CF01F00310FC9B1 -:105550003068F0091800FE9BFF354B15F01F003531 -:10556000C2A10E9B338CF01F0031C2BB4AC530195B -:10557000300A303BF01F0029C24B49AA300B4AAC1D -:10558000F01F001ACAA1304849F5BAC81A9B334C1B -:10559000F01F0026C16B306AEECBFFE2FACCFFFCB5 -:1055A000F01F002530481A9BBA68335CF01F001FBB -:1055B000089ACBFB3019300A303B30CCEA1C400053 -:1055C000F01F00160FCB305CF01F000A300A301CB1 -:1055D000149BF01F0009CF5A000087F4800152F09D -:1055E00080018E9C8001E7548001EF208001E03C27 -:1055F000800183908001465880014B2C8001E58812 -:105600008001DA5480014A0C800149D48001E2FC17 -:1056100080016D48800151A8800186C880015638FC -:105620008001E7B88001EA8C80016D6C00000224E3 -:10563000800185E48002E736EBCD40804C9731084D -:10564000EA184000103CC6F0E088001DE068018CBC -:10565000EA188000103CC3B0E088002EE068019397 -:10566000EA188000103CC440E0680194EA18800009 -:10567000103CC2714BC7761CF01F003C0E9CE3CD62 -:10568000808030C8EA184000103CC400E088001D4B -:1056900030D8EA184000103CC21030E8EA18400048 -:1056A000103CC0F14B2A300B4B2CF01F00330E9CEA -:1056B000E3CD8080E0680186EA188000103CC0706D -:1056C0000E9CE3CD8080E04C008ACFB14A5AF01F97 -:1056D000002B18970E9CE3CD8080F01F00294A4ACA -:1056E000300B4A8CF01F00240E9CE3CD8080761C8A -:1056F000F01F0025F01F0025C0514A5B33CCF01F7E -:10570000002549970E9CE3CD80804A39731858983C -:10571000CD803098496AF3480044300B49FCF01FB3 -:105720000016CCFB49C973185888CCB03088F348B0 -:105730000044F2F900F87338301911EAF20A18003F -:10574000C0A03019300A303B30DCEA1C4000F01FAA -:105750000014CB7B486A300B492CF01F0007CB1B91 -:105760008001563880014A0C8001DA4680018E9C07 -:105770008001E03C8001EF2080014B2C80015E34F1 -:105780008001DA448001DA48800185E4000076383F -:1057900080016D6C000087F48001E0D4800186C830 -:1057A0008001E094EBCD40F84A37189416956E18B6 -:1057B0006E090E930E96C118300B301CEA1C400087 -:1057C0005D19300B6C39FC1C40005D196C388D285C -:1057D0006E186E091238C2001039C190300B301C9F -:1057E000EA1C40005D19300B6E19FC1C40005D196D -:1057F0006E188F086E296E381039CDF10A9B089CFF -:105800005D19873C6629123CCF71CE3B0A9B089CF0 -:105810005D198F1CCF0B5805C0706A085818C060FE -:105820000A9CF01F0006E3CD80F8EACCFFFCF01FD5 -:105830000004CF7B00000224800091E88001D3A8FF -:105840004878F14C00F8580CF9F81004F9B9010146 -:10585000F1D9E108F9F81A045EFC0000000087F4B1 -:10586000EBCD40C04948FAC6FFF4F0F700F4580702 -:10587000C051C1E8F8C70008C1B0EECAFFDC740827 -:10588000204D502815C9FB69000C15D8FB68000D88 -:105890006C0850080DC9BAC90DD8BAD8F01F000756 -:1058A0002FCD580CC0516E2C580CCE5118970E9C11 -:1058B000E3CD80C0000087F480018898D40149D9E5 -:1058C000F2F800F41838C0B078285808C2B0784808 -:1058D000201899482F8CF01F0018D802580CF9F89E -:1058E0001004F9BA01FFF1DAE108F9F81A043008F6 -:1058F000F34800F448FA78285808C180F0C9000835 -:10590000F54900F4CE8072482FF89348F4F900F47A -:105910005809CE10724820182F8C9348F01F0006AB -:10592000D80278385808CD41D802F54800F4CD3B6C -:10593000000087F48001F2A0D4014989F2F800F058 -:105940001838C0A078085808C240784820189948EC -:10595000F01F0013D802580CF9F81004F9BA01FF2F -:10596000F1DAE108F9F81A043008F34800F0780A8F -:10597000F34A00F0580ACED074482FF89548487979 -:10598000F2F900F05809CE50724820189348CE1B07 -:1059900078185808CDB1CDFB000087F48001F2A043 -:1059A000EBCD40801897580AC2C07858F608010815 -:1059B0001438E08800274948F0FB00F8580BC190E4 -:1059C000F8CAFFDC15D8204DFB68000D740950297A -:1059D00015C8F6CAFFDCFB68000C7408500815C92E -:1059E000BAC915D8BAD8F01F00092FCD580CC091EC -:1059F0000E9CF01F00070E9CF01F0006E3CF908066 -:105A0000E3CF8080000087F48001889880015938B6 -:105A1000800158BCD4214A141895E8F700F05807C3 -:105A2000C27079383006704AC02810976F387049B4 -:105A30001439E08A00086E080E965808CF710E9649 -:105A400010970A37C0D06A085808C0B00A9CF01FE7 -:105A500000145806C1300A9B0C9CF01F0012D8227B -:105A60006A185808CF416A482FF88B48CF3BE94C59 -:105A700000F078482FF89948D8220A9B0E9CF01F16 -:105A800000090E9CE94500F0F01F00050E9B0A9CE2 -:105A9000F01F0004D8220000000087F48001F2A06B -:105AA0008001F28CEBCD40C04A48FAC7FFF4F0F613 -:105AB00000F05806C051C3D86C065806C3A06D3814 -:105AC000707C2F4CF8E80000212DFAE90024F8EA58 -:105AD0000008FAEB002CF8E80010FAE90034F8EAC4 -:105AE0000018FAEB003CF9380020FB680044F93953 -:105AF0000021FB690045EEE80000FAE90000EEEA4B -:105B00000008FAEB0008EEE80010FAE90010EEEAEF -:105B10000018FAEB0018EF380020FB680020EF397E -:105B20000021FB690021F01F00062EED580CCC501F -:105B30000C9CE3CD80C00000000087F48001891038 -:105B4000EBCD40E0205D7608502817C9FB69000CBA -:105B500017D81697FB68000DF8CBFFE2306A18964D -:105B60001A9CF01F0034F01F00342FCD580CC05188 -:105B7000300C2FFDE3CD80E06E7C2F4CF8E8000068 -:105B8000212DFAE90024F8EA0008FAEB002CF8E8E5 -:105B90000010FAE90034F8EA0018FAEB003CF93892 -:105BA0000020FB680044F9390021FB6900456D388D -:105BB000707C2F4CF8E80000FAE90000F8EA0008D1 -:105BC000FAEB0008F8E80010FAE90010F8EA00180B -:105BD000FAEB0018F9380020FB680020F9390021A1 -:105BE000FB690021F01F00152EED580CCC20320B64 -:105BF000300CF01F00131895CBC0189A0E99491B52 -:105C0000F01F00110BF93008F0091800EDF800132F -:105C1000F1F90807EBF90E07FACCFFFC6D3818D83C -:105C20001A9CED45004CF01F0009301CCA3B0000D7 -:105C30008002E73680018898800189108001D8DCD5 -:105C40008001D3EC8001AD408001D3A8EBCD40C0F2 -:105C500049C649D86C09700A1439C05530070E9CE2 -:105C6000E3CD80C0350CF01F00191897CF906C0859 -:105C70002FF8350A8D08300BF01F0015320B300C51 -:105C8000F01F0014EF4C004C1898C16030084929EF -:105C90008F680E9CF30A017C8F28EF5A001CEF6876 -:105CA000002A8FF88F488F58EF4800408F188F08D0 -:105CB0008F38E3CD80C00E9C1097F01F0008CD0BED -:105CC000000076440000025880009200800091D0CD -:105CD0008001D8DC00000260800091E8EBCD4080BC -:105CE000189778485808E08A0004E3CD8080793816 -:105CF0005808C0402B4CF01F000648697208201855 -:105D00000E9C9308F01F0004E3CD80808001D3A88F -:105D100000007644800091E8D4014899F2FC00F834 -:105D2000580CC0A07848201899483008F34800F86B -:105D3000F01F0004D802F34C00F8D802000087F4EA -:105D400080015CDCEBCD40F84B131894E6F700F8CB -:105D50005807C060189B0E9CF01F002EC1D1E6F7BB -:105D600000F05807C4203006C1285806C0706F38AC -:105D70006D39704A7248103AC064E6F800F80E387F -:105D8000EE0617106E070E955807C0900E9C089BE4 -:105D9000F01F0020CEB00E9CE3CD80F8F01F001E57 -:105DA00058065F18580C5F0918971069EA0918001F -:105DB000C201089B306AEECCFFDCF01F0018089B84 -:105DC000306AEECCFFE2F01F00156F3A0899149C80 -:105DD000493BF01F001430080E9C8F088F18F01FED -:105DE00000120E9CE3CD80F8F01F000B1897CE2B0D -:105DF0000C9CF01F000E0C9CF01F000D0C9CF01F63 -:105E0000000DF01F00051897CD51CC6B000087F4F2 -:105E100080015B4080015C4C800091DC8001D3EC10 -:105E20008001AD4080015A1480015938800158BC6E -:105E300080015CDCEBCD40E04905EAF700F458074F -:105E4000C0D1C158F0C600080E9CF01F000D0E9C7A -:105E5000F01F000C5806C0B00C976E285808CF31C0 -:105E60000E9CF01F00070E9CF01F00063008EB4848 -:105E700000F4E3CD80E00000000087F4800158BC0E -:105E800080015CDC580CC04078185B98C110489ABF -:105E900074991298EDB90001F9BC0101F9BB001029 -:105EA000F3DBE038F5F80A09F9BC00015EFC5EFDA1 -:105EB000000087F4489A7498109CF0091604E21CBC -:105EC0000002F9BB0110F1DBE138F5F81A09F9B865 -:105ED0000101F3D8E12C5EFC000087F4489A749825 -:105EE000109CF0091604E21C0002F9BB01EFF1DB83 -:105EF000E128F5F81A09F9B80101F3D8E12C5EFCA4 -:105F0000000087F448887099129CA589E21C000261 -:105F1000F9BA0101F3DAE148F9B90101F1D9E12C4B -:105F20005EFC0000000087F418994868709CE21C31 -:105F30000002F1F8103FF3F81A00F9BC01015EFC11 -:105F4000000087F418994868709CE21C0002F1F880 -:105F50001041F3F81A00F9BC01015EFC000087F45F -:105F600018984859729CE21C0002F3F81A41F9BCD7 -:105F700001015EFC000087F44839300C7298A7C814 -:105F800093985EFC000087F44839300C7298A5D8CD -:105F900093985EFC000087F4D401E06A0100300BA6 -:105FA000482CF01F0003DA0A00007648800091D0E8 -:105FB000EBCD40C04A0A18967498109CE21C00026F -:105FC000C1D0F4F700F85807C1801099E2190020F9 -:105FD000C270A5C8A7A8F4FB00BC95983009497AFF -:105FE000E06CEA60F01F00163008F0061800C100EF -:105FF0003018F0061800C040301CE3CD80C0311CC2 -:10600000EECBFFE2306AF01F000FE3CF90C0312CDF -:10601000EECBFFE2306AF01F000BE3CF90C0A5B8D3 -:10602000F4FB00B89598E06CEA60487AF01F000431 -:10603000CDCB0000000087F480015F7880014558D7 -:106040008001465880015F88D401F01F0002D80209 -:1060500080018040D40148687098E2180002C03185 -:10606000109CD802F01F0003D8020000000087F443 -:10607000800183FCD40148687098E2180002C031A6 -:10608000109CD802F01F0003D8020000000087F423 -:10609000800183D8D431FACD0188E06A0168300BE1 -:1060A0001A9CF01F002CFAC6FE541A901A9CF01F7E -:1060B000002A581CC03029EDD832FAC5FFF8401824 -:1060C000F0081016EA0800081035C4120A97FAC43E -:1060D000FE98ECC1FFF8C09840182EA7F0081016E3 -:1060E000EA0800081037C3326C08204D50280DC94B -:1060F000FB69000C0DD80E9BFB68000D306A1A9CE2 -:10610000F01F0016F01F00162FCD580CCE60EECBFE -:10611000FFFA310AFACCFE88F01F0010E2E8000016 -:10612000310AE8E90000089BE2E20008FACCFE88A8 -:10613000E8E30008F01F000BCD01189B316A0E9CAC -:10614000F01F0004009CF01F0008CB6B29EDD83A2B -:10615000800091D0800160748002E73680018898C9 -:106160008000917C80016054D431FACD018CE06ACA -:106170000168300BFACCFFFCF01F0050FAC5FE504E -:10618000FACCFFFCF01F004E581CC03029DDD8327D -:10619000402858F8E088007FF0081016FAC1FFF494 -:1061A000E20800081031E0820087E06801685018BA -:1061B000EACBFFF8FAC6FFF002973004FAC0FE946B -:1061C000500BC0C85804C36040282EA7F008101612 -:1061D0002EA6E20800081037C4926A08204D502805 -:1061E0000BC9FB69000C0BD80E9BFB68000D306AD5 -:1061F0001A9CF01F0034F01F00342FCD580CCE3005 -:10620000ECCBFFFE310AFACCFE84F01F002E400BCF -:10621000F6E80000310AE0E90000FACCFE84F6E27C -:106220000008009BE0E30008F01F0028CB005804A2 -:10623000CCC10F89E8091800CC810F98F20818002A -:10624000CC410FA9F0091800CC010FB8F2081800D2 -:10625000CBC10D89F0091800CB810FD8F2081800C6 -:10626000F9B40100EE041700CB0B5804C2400A9B9E -:10627000306A089CF01F0013EACBFFF8310AE8CC23 -:10628000FFFAF01F0010FACCFFFCF01F001129DD0F -:10629000D832F00A1110FAC1FFF4F40A1016E2081D -:1062A000000C300BF01F00053108E0690168502830 -:1062B0005019C7FB3FDCC6BB800091D080016074E1 -:1062C0008002E736800188988000917C80016054CC -:1062D000EBCD40C0208DBACBBA8A189B4968709C20 -:1062E000E21C0002C06118970E9C2F8DE3CD80C088 -:1062F0003008FAC6FFF8504850281A99FACAFFFC2D -:106300000C9CF01F000EC111189740285808C0407F -:106310000C9CF01F000B404C580CCE70F01F000975 -:106320000E9C2F8DE3CD80C00C9CF01F0007581CE5 -:106330005F07CECB000087F48001E1308001D3A855 -:10634000800091E880018E9CEBCD40C0201D491754 -:1063500018966E9CE21C0002C0412FFDE3CD80C068 -:106360001A9CF01F000DEF4600FCEEF801105808D3 -:10637000C051301C2FFDE3CD80C0EECCFEECEF3AD7 -:10638000011BEF3B011AF01F0005301CCF4B000032 -:10639000000087F4800177A4800162D0EBCD4080BB -:1063A000201DBA8C48C76E98EDB80001C0402FFD83 -:1063B000E3CF808030181A99300A308B487CF01F68 -:1063C0000008581CCF511B88EF4801202FFDE3CD5A -:1063D00080800000000087F48003B7A08001776C04 -:1063E000D401201D48B91898729CE21C0002C0E03C -:1063F000300AF368004C308BFAC9FFFC486C12F885 -:106400003018F01F0006581C5F0C2FFDD80200004A -:10641000000087F48003B7A88001776CD401203D89 -:10642000BA8C496A749CE21C0002C0312FDDD8028C -:106430001B8B3038F00B1800E089001DE06832003B -:10644000EA18312EE069352EEA19312EFAE90004F6 -:10645000F4F800F8F3DBB008300A5808F1F91A0F25 -:10646000308B30181A99FACCFFFCF01F0005581C2D -:10647000CDE03FECCDCB0000000087F48001776CCD -:10648000D421206D4A0618976C98EDB80001C040E1 -:10649000300C2FADD822584C5FB8E04C00FF5F198C -:1064A0001268C0303FECCF6B300814995028169A10 -:1064B0005008189B1A951A9CF01F0014CEA01A9C25 -:1064C000F01F0013400818945808C0401A9CF01F91 -:1064D0000011402C580CC030F01F000F5814CD9103 -:1064E0006C98EDB80007C0C15837E08B000AEE0881 -:1064F000150648A9300A1009089C930ACCBB301C29 -:10650000CC9B0000000087F48001E1A480018E9CF8 -:106510008001D3A8800091E800007648EBCD40C010 -:10652000202D496718966E98E2180002C2103FF8B5 -:10653000FACAFFFEBAF8BAA8BAB8BAC8BAD8BAE85E -:10654000300BF01F000F6E98EDB80007C0E1583611 -:10655000E08B000CEC081506300A48A9301C100925 -:10656000930A2FEDE3CD80C02FEDE3CF90C0109CB8 -:106570002FEDE3CD80C00000000087F4800164802F -:1065800000007648EBCD40C0202D49F66C9CE21C03 -:106590000002C2703FF8BAF8BAA8BAB8BAC8BAD8F6 -:1065A000BAE8ECFB00F8580BC260F6CCFFE2303AD8 -:1065B000300BF01F0016FAC7FFFE301CF01F00144E -:1065C000303B0E9A300CF01F00136C99300B129870 -:1065D000ED4B0110A3D88D98EDB90007C050301CC9 -:1065E0002FEDE3CD80C0E06A010048BCF01F000B36 -:1065F000301CCF7BFAC7FFFE303A0E9CF01F000321 -:10660000CDDB0000000087F4800162D08001651CB2 -:106610008001648000007648800091D0D43120DD74 -:10662000FB690010FB68000CFAC9FFA8FEF7023CEA -:1066300018956E981696149272307201E218000244 -:1066400072147223C041300C2F3DD832E04B002031 -:10665000E08800043FFCCF9B584CE08B002158DBC6 -:106660005FBA301BFB380010F60818005F09126A89 -:10667000C030580CC1413078FACCFFD4FB680033ED -:10668000F01F007B3008303C50785058F01F0079E4 -:1066900058D6C070E08B00315856C0303FECCD5B0F -:1066A00030683019FB680033EF49011CFACCFFCD8C -:1066B000F01F0071501C1AD31AD41AD1FB38001CD9 -:1066C00004991AD80C9AFB380043FACCFFDC0A9BD9 -:1066D000F01F006A2FCD580CC1B140585808C05067 -:1066E000FACCFFECF01F0066407C580CCAD0F01FBB -:1066F0000065300CCAAB5906C6C0E0460020CCF19C -:1067000030283029FB680033EF49011CCD0BFACC4F -:10671000FFECF01F005D500C40585808C050FACCF8 -:10672000FFECF01F0057407C580CC030F01F0055A4 -:1067300040085818C8915800EFF81009F9B9010835 -:10674000F1D9E138EFF81A093009FB380010F208E6 -:106750001800C051F9D5B008F01F004C6E98EDB884 -:106760000001C0514C18F0F800FC501840185808AF -:10677000C080FB3A0010FB3B000C089CF01F00445B -:10678000306A089BEECCFEECF01F0042301AFACBC8 -:10679000FFF4EECCFEE6F01F003FEECCFEE5301A33 -:1067A000FACBFFF0F01F003B3018EF480110FB68F8 -:1067B00000326E9C4AD7EDBC0001C120EDBC000741 -:1067C000C061FB38000C50285845C1E1301CC3DBC8 -:1067D00030483039FB680033EF49011CC68B300864 -:1067E0004ADB1099109A109CF01F002CC3401ADC51 -:1067F0003018FAC9FFCA300A308B4A9CF01F0029B2 -:106800006E9C2FFDCDCBEA0915064A780C9AF0094B -:106810000007049BEF650026EF560024EECCFFFC3A -:10682000F01F001C089BEF610036306AEECCFFD8E9 -:10683000F01F00185803C110069B308AEECCFFD21F -:10684000F01F001440288FF0EF68003830188F08D0 -:10685000109CCFBA6E9CCB3B069B308AEECCFFD20D -:10686000F01F0012CF0B0000000087F4800177A416 -:106870008001EF6C80017BD88001E2148001D3A8F5 -:10688000800091E880018E9C8001641C800162D0B0 -:10689000800091DC80015E8480016AF48003B798F7 -:1068A0008001773000007648800091D0EBCD40C069 -:1068B000300749A60E98A7682FF7EC08000B76085A -:1068C0005808C0F10E985847CF714957EF3C004C1B -:1068D000F01F0014EEFC0100F01F0013E3CF90C086 -:1068E00076F8F6C9FFD2F73C00261AD8F6C8FFD8CA -:1068F0001AD91AD8F7390036F6CAFFFC1AD9F73870 -:106900000038F7390027F71B0024F01F00082FCDAF -:10691000581CCD90E3CF80C000007648000087F47B -:10692000800163E0800163488001661C7808301CA8 -:10693000F80A094C201C106C5EFCD70348787008DC -:106940005808C0901838C041C078103CC05070B88A -:106950005808CFC15EFD5EFF0000778C189A48F89A -:10696000709CE21C00025E0C70A8EDB80000C03004 -:10697000305C5EFC48AC780B583BE089000D300978 -:106980004888F00B003891189109950BF6C8FFFF65 -:1069900099085EFF3FDC5EFC000087F4000077880A -:1069A0000000776848D972A8EDB80000C1313008FE -:1069B000780A99D848ABF60A003A741999E974181C -:1069C000F8C9FFCC910C7808301CF60800389119F2 -:1069D0005EFC305C5EFC0000000087F4000077681D -:1069E000EBCD40C0189778B95809C18078C893C8D2 -:1069F0006EC891096E3C580CC050F01F000B300857 -:106A00008F3833CA6EA635AB0E9CF01F00080C9B66 -:106A10000E9CF01F0007E3CF80C078C94858911939 -:106A200078B9CE7B800091E8800091D0800183B05E -:106A30000000778CEBCD40801897580CC180789877 -:106A40005D1848F972095809C051C11872B958093E -:106A5000C0E01237CFC16E785808C0B06E3C580CF9 -:106A6000C060F01F000830088F588F38E3CF908047 -:106A70000E9C301BF01F0004E3CF90800000778C49 -:106A8000800091E8800169E0EBCD4080496972A8FF -:106A9000EDB80000C040305CE3CD8080493870091B -:106AA0001839E08A001E4928F00C00376E09580991 -:106AB000C15072DA580AF3F8000EEFF80A01F3FA3F -:106AC000000DF3F8100EF5F81A0E72E8129C910AF8 -:106AD000F01F00086E095809CED1E3CF90803FCC5B -:106AE000E3CD8080000087F400007788000077689D -:106AF00080016A34EBCD40F81897169614951294DD -:106B0000109333CCF01F000CC1403008990799B89E -:106B10009938995899889996994599649973487ABA -:106B2000301899A8741999C9930CF8C8FFD495180E -:106B3000E3CD80F8800092000000778CD401202DF6 -:106B4000500A48C972A8EDB80000C040305C2FED73 -:106B5000D80248981A99F00B032A3048FA08000B1B -:106B6000F01F0006581CF9BC0001F9BC01FECF0B58 -:106B7000000087F4000077488001F1D8EBCD40C0D9 -:106B8000201D4AC618976CA8EDB80000C441580CE7 -:106B9000C3F0789B580BC3C0780A580AC3954A695A -:106BA000F20A033850085808C061C1A870D85008CC -:106BB0005808C1601037CFB1F40815036EDA580ACF -:106BC000F3D8E009EFF8000EF3F80A01EFF8100E21 -:106BD000F5F81A0E400870DA70E9930A6E9B3F9838 -:106BE0008F18580BC0300E9C5D1B6E8B581BC0500D -:106BF000582BC150580BC0516E2A1A9CF01F000F21 -:106C00000E9C301BF01F000E2FFDE3CF90C02FFD18 -:106C1000E3CF90C0305C2FFDE3CD80C0ECF801B82D -:106C20000E38CEF130094838F14901B8CEAB00003A -:106C3000000087F40000776880016B3C800169E008 -:106C4000D40148C9169E72A8F1D8C001C031305C89 -:106C5000D8024898304A76A9F00C032C1ADAF6C804 -:106C6000FFF833CAF01F00052FFD581C5F0CD80237 -:106C7000000087F4000077488001F164D431204D92 -:106C800030084931189650285018FAC5FFF4FAC256 -:106C9000FFF802901A93FAC4FFFCC098E006032A9A -:106CA000F01F000C0E9B401CF01F000B3049049B92 -:106CB0000A9AE206032CF01F0009304818970A9937 -:106CC0001A9B089C5817CEB02FCDD83200007748B9 -:106CD0008001F1D880016B7C8001F0B4EBCD40E005 -:106CE000201D49356AA8A1A8300A49298BA8149704 -:106CF000930A14984906EC08002C2FF748FA303B09 -:106D0000F01F000F581CC0F10E985887CF5148D87B -:106D1000300991189109301B1A9CF01F000B2FFDB0 -:106D2000E3CD80E06AA8A1C88BA8CF2B000087F430 -:106D300000007788000077488001692C8001F05CB2 -:106D40000000778C8001695C5EFD5EFFEBCD4080CA -:106D5000189778785808C030788C5D180E9CF01F12 -:106D60000003E3CD80800000800091E8D4314B1017 -:106D70001895169260095809C58030047258721926 -:106D80000A38F7B400FF5809CFA10891E80C1502A2 -:106D9000F01F00291893C46060075807C2303006FE -:106DA000C0486E175807C1E06E580A38CFB10E9C24 -:106DB000F01F0022E60609276E485808C0F06E1939 -:106DC0005809EFF80002E1F80A01EFF90001EFF8C5 -:106DD0001002F3F81A026E2891092FF66E17580761 -:106DE000CE415804C1A006953006C0380836C154BB -:106DF0006A07049C6E686E8B5D18491B0E9CF01F21 -:106E000000112FF62FC56E485808CF100E9C48CBA6 -:106E1000F01F000C0836CED5069CF01F000B029C1C -:106E2000D8321891029CD83212941291CB0B0000E8 -:106E300000007794800092008001463A80016D4CFA -:106E400080014642800091E8EBCD4080324CF01F3B -:106E500000081897C080324A300BF01F00060E9CC5 -:106E6000F01F00050E9CE3CD8080000080009200A2 -:106E7000800091D080014652EBCD40FC18961695CB -:106E80001494129310924077F01F000AC100995693 -:106E900099359964998799739942487A3008991875 -:106EA00074199929930CF8C8FFFC9518E3CD80FC60 -:106EB00080016E4800007794D431FACEFFDC189739 -:106EC00016901491129310927C157C04580CC26099 -:106ED00078095809C26049A66C085808C051C09882 -:106EE00070185808C0601039CFC13018109CD832C3 -:106EF000F01F0014C13099509931996399859972A6 -:106F00009944300899186C199929930CF8C8FFFC1A -:106F10008D188F0C3018109CD8323008109CD83245 -:106F200008981AD50499069A029B009CF01F000647 -:106F30002FFD580C5F188F0CCDAB0000000077942C -:106F400080016E4880016E78EBCD40404856ECCC15 -:106F5000FFF8F01F000530088D168D08E3CD804046 -:106F600000007794800145D6EBCD40807847785A71 -:106F70006E18103AE0880004E3CF8080783B6E0CF6 -:106F8000F01F000B6E285808C0406E1B6E0C5D1879 -:106F90006E3CE04C002BC050300A149BF01F0005E3 -:106FA0000E9CF01F0005E3CF90800000800091DC74 -:106FB00080014658800091E8EBCD40C0203D30086C -:106FC00018979928990814961A9C308AF01F001176 -:106FD000FACBFFF80E9CF01F00102FED580CC101EA -:106FE0006E085808C0400E9CF01F000C6E2C580C08 -:106FF000C040F01F000B300C2FFDE3CD80C05806C1 -:10700000FBF81000EDF81A002FFDE3CF90C0000050 -:107010008002E7368001DE6C8001D3A8800091E811 -:10702000EBCD40C0189778185B98C0C0783B580BE0 -:10703000C17078465806C04078685908C050E3CF00 -:1070400090C0E3CF80C0785A590AE08800153FF815 -:107050008D28ECCCFFF4F01F000CE3CF90C0784CEF -:10706000580CCEE06E685908CEB12F4CF01F0006C8 -:10707000E3CF90C06C0CF01F00056E5830198D18CE -:107080008D29CE8B8001A25C800091DCEBCD40E0AD -:10709000201D1697E04C0081E0800088E08A0027E0 -:1070A000E04C0083C2F0C2B4760A1A9C300BF01F89 -:1070B0000064E08A004F585CC490314CF01F0061BE -:1070C0004008913C4009723A580AC7A06E0830093E -:1070D000990899399919EF380008992840083149D9 -:1070E000301A91594008911AC1D8584CC4A0E04CAC -:1070F0000080C330300C2FFDE3CD80E0E04C0085F4 -:10710000CFA16E0A300B1A9CF01F004DE08A0022BE -:10711000585CC1C0EF3900084008300A9119400896 -:10712000915A301B400CF01F0048581CCE41400CB7 -:10713000F01F0046C0B0400B76785808C070300C85 -:10714000F01F0043581C5F0CCD7B2FFDE3CF90E078 -:107150003FEC2FFDE3CD80E07645760A1A9C300B9C -:10716000F01F0037FE9AFFF6585CCF005805C49117 -:1071700040089135400993550FCA4008911ACD2B0C -:107180007626760A1A9C300BF01F002DFE9AFFE23D -:10719000585CCDC05806C1914008301A913640095C -:1071A00093564008911ACBEB760A1A9C300BF01FCD -:1071B0000024FE9AFFCF585CCC900FC9CAEB3FD891 -:1071C00093184009935ACAEBECC5FFED0A9CF01FD7 -:1071D000001D4008913C1899400A743B580BC2406E -:1071E0006E080C9A93089336EECBFFF430162F0CF2 -:1071F0009316F01F00184008915540099316C92BAB -:1072000040060A9CF01F000F8D3C4009723C580C50 -:10721000C1000A9A6E5BF01F000F400891550FC91C -:1072200040089119C7FB3FD895184009935BC7AB3D -:107230003FD893184009935CC75B000080016B3C0A -:1072400080009200800169A48001693C80016C404B -:10725000800091DCEBCD40FC4C151696189476021C -:107260006A095909E088001B4BE7C15878BA580AE7 -:10727000F9F8000CEFF80A01F9F8100CF5F81A0CFF -:10728000201978C8910A8B09F01F00376A0959093B -:10729000E08800056E0C580CCEA16C2338086C36C3 -:1072A000ECCCFFCCF0041800C260F01F003018973F -:1072B000C2F0B8C464080C9A990899A6069B2CCC15 -:1072C0008F9CF01F002B3808F0041800C2303818CB -:1072D000F0041800C2B04A3B30088FB8761A8FCA43 -:1072E0009507EEC9FFD46A0897192FF8301C8B0850 -:1072F000E3CD80FC64495809CD90ECC8FFC9E01883 -:10730000FFFCF009000CF01F00191897CD31E3CDF8 -:1073100080FC318A049BEECCFFF4F01F00156E7ADE -:107320008F2A580AC1018F8ACD7BEEC6FFF4318ABD -:10733000300B0C9CF01F000F049B0C9C308AF01F3C -:10734000000CCCAB6EA82FD8E018FFFC6E9C100C84 -:107350008F8C645BF01F0006CBFB0000000077A061 -:1073600000000234800091E880009200800091DCEF -:10737000800091D0D421207D1297FACEFFD04B29E6 -:1073800018947298EDB80001C040300C2F9DD8229F -:10739000FCE800003006BB295C7A50265046FAC54E -:1073A000FFF8FAC9FFE00A9CF01F00282FED580CE7 -:1073B000C2D05807C0B08F368F5640680E9B0C9CC9 -:1073C0008F28F01F0023581CC2E11A9CF01F0021D7 -:1073D0005BBCC29040076E4C580CC070F01F001E82 -:1073E00030088F388F4840075807C0401A9CF01F5C -:1073F000001B402C580CC030F01F00175804FBF83D -:107400001006E9F81A002F9DDA2A40085808C040F3 -:107410001A9CF01F0012402C580CCB80F01F000E5D -:107420002F9DD82A40085808C0401A9CF01F000B16 -:10743000402C580CC0313FDCCAABF01F00073FDCCA -:10744000CA6B0000000087F48001DF7480016C408B -:1074500080018E9C800091E88001D3A8EBCD40E0B4 -:10746000208D149616951897308A300BF01F001354 -:1074700059F6E08800052F8DE3CF80E00A9B0C9A37 -:107480001A9CF01F000FFAC9FFE030080C09FACC73 -:107490000001F368FFE0F8C6FFFF300B30AA0C9C38 -:1074A000F01F000832EB0ECC0C9CF01F0007CF4100 -:1074B0002F8DE3CF90E00000800091D0800091DC20 -:1074C0008000917080009164D43120AD189E109599 -:1074D00014974C781292709CE21C0002C0511896CE -:1074E0000C9C2F6DD832169AFAC6FFE41C9B0C9C9C -:1074F000F01F00400C9BFAC3FFFCFACAFFDC069C9D -:10750000F01F003D1896581CCEC15807C2F10E91CD -:107510000E90069CF01F0039401818945808C0407F -:10752000069CF01F0037403C580CC030F01F00355F -:107530005BB4C4D05807C170E06B0BB8E0CCFFF46B -:10754000F01F00315BDCC3A0582CC07060285BF8D2 -:10755000C04060188508CC5B029C301B3006F01FD1 -:10756000002BCBFB40988B08CBCB3FF8310C8B0822 -:10757000F01F002718941890C280F8C8FFF4500834 -:10758000109CF01F00248907640930088919089AA3 -:1075900031094A1B109CF01F00211891C20040982D -:1075A000189B9928300CF01F001E581CCB300C9BE8 -:1075B000029C3FD6F01F001BC94B029C301BF01FE2 -:1075C000001340988B08C8DB3FD6C8BB5807CFD004 -:1075D000029C301B3FD6F01F000DC83B400CF01F33 -:1075E0000012089C3FD6F01F0007C7BB000087F4BD -:1075F0008001745C80016FB880018E9C8001D3A8EB -:10760000800091E88001A22880016B7C80009200BC -:107610008001A28C8001702080016AF480016C409E -:10762000800169E08001A27CEBCD40E0209D49F81B -:1076300018991495709CE21C0002C06118960C9C6D -:107640002F7DE3CD80E0169AFAC6FFE8129B0C9CD2 -:10765000F01F00170C9B1A97FACAFFE01A9CF01F44 -:1076600000151896581CCEC11A9CF01F0013400834 -:1076700018965808C0401A9CF01F0010402C580C57 -:10768000C030F01F000F5BB6C0313FD6CD9B300C31 -:107690008B3C8B5C40880A9B8B28F01F000A581C8F -:1076A000CCF03FD6CCDB0000000087F48001745C96 -:1076B00080016FB880018E9C8001D3A8800091E882 -:1076C00080016C40EBCD40FC1895169414921293F7 -:1076D00010974076310CF01F0012C1D099369905F1 -:1076E00099149927189A3008310948EB109CF01F1B -:1076F000000E1896C100069B049C0C9AF01F000B0C -:107700001897581CC0500C9C301BF01F00090E9C91 -:10771000E3CD80FC30070E9CE3CD80FC800092001E -:1077200080016F6880016AF480017628800169E039 -:10773000EBCD406E202D4086129310951491169A31 -:10774000189B1A9CF01F0008069B0C99FAE2000097 -:107750000A9ABB23029CF01F00052FED2FEDE3CD0D -:10776000806E00008001745C80017374EBCD406812 -:10777000202D129310961495169A189B1A9CF01FA0 -:107780000008FAE800000C9ABB29069B0A9C300905 -:10779000F01F00042FED2FEDE3CD80688001745CB5 -:1077A00080017374EBCD40401896303CF01F00040C -:1077B0007848301C8D08E3CD804000008001EF6CDC -:1077C000EBCD406048A618952F060C9CF01F0009D1 -:1077D000303CF01F0009310AF8CBFF8C0A9CF01FE7 -:1077E00000070C9CF01F0006E3CF9060000087F4B8 -:1077F000800145F88001EF6C800091DC800145FA42 -:10780000D42149461894ECC5FFF00A9CF01F0012E1 -:10781000ECF700F85807C0C06F38707B2F4B322A46 -:10782000089CF01F000E0A9CF01F000DDA2A303C65 -:10783000F01F000CC060F9380088EE081800C06026 -:10784000ECCCFFF0F01F0006D82AF8CBFF78CE8BE7 -:10785000000087F4800145F88002E736800145FA90 -:107860008001EF6CEBCD40E049061895ECC7FFF0C6 -:107870000E9CF01F000F303CF01F000EECF600F8DD -:107880005806C0C0ECCBFFE2306A0A9CF01F000A29 -:107890000E9CF01F000AE3CF90E00E9CF01F000743 -:1078A0000C9CE3CD80E00000000087F4800145F8E7 -:1078B0008001EF6C8002E736800145FAEBCD404055 -:1078C000209DE04B0020E08B001CBABB580BC1B1DF -:1078D0003FF8BAA849162F060C9CF01F0011303C47 -:1078E000F01F0010322AFACBFFFEF8CCFF78F01F11 -:1078F000000E0C9CF01F000D2F7DE3CF90402F7DDC -:10790000E3CFC0403008169ABAA8189BFACCFFFC07 -:10791000F01F0007CE0B0000000087F4800145FC3B -:107920008001EF6C8002E736800145FE800091DC2B -:10793000EBCD40E01895303CF01F000B1897C110BC -:1079400048A62F060C9CF01F000A0A9B306AEECC5A -:10795000FF56F01F00080C9CF01F0007E3CF90E0DB -:10796000E3CD80E08001EF6C000087F4800145FCEE -:10797000800091DC800145FED401F01F0002D80296 -:1079800080017930EBCD40EC202D18961697586B7E -:10799000C0503FFC2FEDE3CD80ECFACCFFF8E06364 -:1079A000312EEA13322EE0623100EA12312EB92371 -:1079B00016980C99300A308B1A9CF01F0010301C5E -:1079C000F01F000F48F81893F0C5FFF00A9CF01F55 -:1079D000000E5803C0C00E9A0C9B069CF01F000BB3 -:1079E0000A9CF01F000B2FEDE3CF90EC0A9CF01FD8 -:1079F0000008069CCD0B00008001776C8001EF6CC5 -:107A0000000087F4800145FC800091DC800145FE88 -:107A1000EBCD40E01897303CF01F0018EEC8000195 -:107A200018955818E0880004E3CF80E058175F09E4 -:107A300049366D1858385F0AF5E90009C0E1582742 -:107A40005F08F5E80008C030E3CF90E0F01F000DBC -:107A5000C0A18B47E3CF90E0F01F000B6D185838A2 -:107A60005F0ACEEB303CF01F000578485818CF2055 -:107A7000F01F0005CEFB00008001EF6C000087F4D2 -:107A800080017BC88001F340EBCD40F81696189337 -:107A900076085858E08A002A49A83064F0C5FFF0FB -:107AA00097040A9CF01F0018301CF01F001818974C -:107AB000C160202D189B089A1A9CF01F0015F01F1A -:107AC00000152FED580CC1616C0A0E9B069CF01F2F -:107AD00000120A9CF01F0011E3CF90F80A9CF01FDF -:107AE000000F0E9CE3CD80F830683FFC9708E3CD93 -:107AF00080F80A9CF01F00093FBCE3CD80F800002D -:107B0000000087F4800145F88001EF6C8002E736C1 -:107B1000800188B0800091DC800145FA0050F200BD -:107B2000000FAC003008F9480320F94803245EFC3C -:107B3000EBCD40C016971496F8FE0320FCCBFFFF58 -:107B4000F60A141FE069851FEA1951EBF60904488B -:107B5000A5591419F8FA0324F2091064121B143BF6 -:107B6000C0B0F94B0320F80E0927FCC8FF9CF808A9 -:107B70000926E3CF90C0E3CF80C0D401189EF8FC63 -:107B80000324FCF803201838C1F0F8C8FF9CFC0C53 -:107B9000032CFC08032930089709E069851FEA19BE -:107BA00051EBFCFB0324FC0B09282FFBF6090448CE -:107BB000F60A141FA5591419F2091064F6090109EF -:107BC000FD490324D802D80A4838F0F900F85809CA -:107BD0005F1C5EFC000087F43018198CF00C180054 -:107BE0005F0A3058F00C18005F09124AC0F1306883 -:107BF000F00C1800C0B03028F00C1800C080584CB1 -:107C0000F9BC0003F9BC01005EFC5EFF302C5EFC99 -:107C100048C8F0F800FC5818C0D0C0635828C0D03D -:107C20005838C0505EFF580C5F0C5EFC583C5F8CAF -:107C30005EFC581C5F8C5EFC582C5F8C5EFC000068 -:107C4000000087F4EBCD40C01897169E740A580ABE -:107C5000C0D0753A580AC0A0747A580AC0704FF85C -:107C6000F0F901045889E0880004E3CF80C04FC8D0 -:107C7000F009032F94D8EDB80004CF813008301CF0 -:107C80009D08E3CD80C0F53900C83FF8F009180021 -:107C9000CED0F51B00D2580BCE90F51C00D030266C -:107CA000F4FA00D8F40C002811B9EC091800E080AF -:107CB00000BFF8C8FFFF3009F40800280C9CF0CA88 -:107CC000FFFDC07815882FCAF8081800E08000B0C2 -:107CD0002FF91639CF85CCABF53900C83FF8F0093C -:107CE0001800CC40F51B00D2580BCC00F51C00D07E -:107CF0003016F4FA00D8F40C002811B9EC09180079 -:107D0000E08000A4F8C8FFFF3009F40800280C9CAC -:107D1000F0CAFFFDC07815882FCAF8081800E08067 -:107D200000952FF91639CF85CA1BF53900A43FF805 -:107D3000F0091800C9B0F51B00B2580BC970F51C4A -:107D400000B03026F4FA00B8F40C002811B9EC09A0 -:107D50001800C660F8C8FFFF3009F40800280C9C22 -:107D6000F0CAFFFDC06815882FCAF8081800C58042 -:107D70002FF91639CF95C7ABF53900A43FF8F009B4 -:107D80001800FE90FF74F51B00B2580BFE90FF6FB9 -:107D9000F51C00B03026F4FA00B8F40C002811B934 -:107DA000EC091800C3D0F8C8FFFF3009F408002818 -:107DB0000C9CF0CAFFFDC06815882FCAF80818008F -:107DC000C2F02FF91639CF95C51BF53900A43FF83D -:107DD000F0091800FE90FF4BF51B00B2580BFE9007 -:107DE000FF46F51C00B03016F4FA00B8F40C002879 -:107DF00011B9EC091800C220F8C8FFFF3009F408D7 -:107E000000280C9CF0CAFFFDC06815882FCAF8082E -:107E10001800C1402FF9123BFE99FFF9C27B3028B0 -:107E2000AE8830199D09129CE3CD80C03028AE8801 -:107E30003029301C9D09E3CD80C03018AE88301940 -:107E40009D09129CE3CD80C03018AE883029301CCB -:107E50009D09E3CD80C00000000087F48003B7B027 -:107E60003028F00C1800C390E088001B3048F00C5C -:107E70001800C3503058F00C1800C21030093028D8 -:107E8000F00B1800C160F00B1800E08B001B3018DD -:107E9000F00B1800C100300812385F5C5EFC30182F -:107EA000F00C1800CEC130193028F00B1800CEC1EC -:107EB0003038C02830181039CF045EFE3029CE0B80 -:107EC0003048F00B1800C0703058F00B1800CE414D -:107ED0003028CF2B3048CF0B3039CD2B3049CD0B4C -:107EE000D431307977387075B8891894581AC0D061 -:107EF000C043582AC4C0D83A7738707A94D9EDB9BB -:107F00000004E0800087DA3AEB3900A43FF8F0097A -:107F10001800CF20EB0800B03009F2081900CF405C -:107F2000149112923006307B30533060C1A8E007C4 -:107F30001800C2B03028F0071800C7A03048EE087B -:107F40001800F9BC0003F9BC0100F01F003CE9F780 -:107F50001E002FF6EB1800B00C38FE9AFFD6098BE6 -:107F6000EAF800B8F006002811B70E9CF01F0034A4 -:107F7000FE9AFFF1E20718005F08E60718005F09A4 -:107F80001248E4081800CD40301CCE0BEB3900C875 -:107F90003FF8F0091800CB00EB0800D03009F208D8 -:107FA0001900CB2012913006307B301230533060F4 -:107FB000C1A8E0071800C2B03028F0071800C3A01D -:107FC0003048EE081800F9BC0003F9BC0100F01FAE -:107FD000001BE9F71E002FF6EB1800D00C38FE9AB4 -:107FE000FF94098BEAF800D8F006002811B70E9C20 -:107FF000F01F0013FE9AFFF1E40718005F08E60780 -:1080000018005F091248E2081800CD40301CCE0B62 -:10801000307B305CF01F000AFE9AFF77301CF01FA7 -:108020000007FE90FF723058301CA888D832302CE0 -:10803000C8DB302CCCDB000080017C1080017E602E -:108040003008484A48499508951893085EFC000096 -:10805000000089EC00008C5CEBCD4080189E198BF1 -:10806000580BC130300A3017149CFC0A00092FFA53 -:1080700013982018EE080948F9E81008F9D8B0104C -:10808000163ACF45E3CD8080169CE3CD80807938C9 -:10809000707A3308F53900C8F0091800C0205EFD79 -:1080A000F51800D4E218000C5848C0E0E08A000837 -:1080B0005888C08058C8CF41310C5EFC5808CF01A9 -:1080C0005EFF304C5EFC302C5EFCD703EBCD40E015 -:1080D00030081896109A169C8D084927760E301590 -:1080E000109BC0A8F80A00082FFA11C9EE0B070868 -:1080F000A7D91039C0A01C3ACF652FFB58DBE08B05 -:10810000000E300A780ECF8B6C08EA0B0949124832 -:108110008D082FFB58DBFE98FFF6E3CF90E00000C0 -:108120008003B7F4EBCD40C030069906149EF8C723 -:10813000FFFC1799EC091800C0E00C9AF60A000839 -:1081400011A90EC978082FF899082FFA1798143832 -:10815000FE99FFF61D993008F0091800C0F0300BA9 -:10816000FC0B000811A9EE0B0B0978082FF89908F1 -:108170002FFB1D981638FE99FFF5E3CF90C0EBCD8D -:1081800040F816941897780B68065806E08A002C79 -:10819000F6C8FFFCE8C5FFFCF8080003300E2FCC42 -:1081A000EA0E070A580BE08A00130FC81458F1D8DA -:1081B000C007C1503009C078F80907081458F1D831 -:1081C000C007C0D02FF9123BFE99FFF8597BE08B16 -:1081D000000706CA6E0B2FFB8F0B68062FFE1C369E -:1081E000FE99FFE0E3CF90F8EBCD40FE1894169295 -:1081F0001497780676055805E08A0025ECC8FFFC40 -:10820000F6C3FFFCF8080001300EF4CCFFFCE60ECC -:10821000070A6E0B580BE08A00120FC81458F1D8E9 -:10822000C007C1203009C078F80907081458F1D8F0 -:10823000C007C0A02FF91639CF852FFE1C35FE9937 -:10824000FFE8E3CF90FE5976FE9BFFF902CA68066D -:108250002FF689062FFE64051C35FE99FFDACF2B19 -:10826000D42178045804E08A0027F8C7FFFC493875 -:108270000F8B700C11C6580CE08A0017F0C5FFFC7C -:10828000300EEDEB2008F1D8C007C0F00A9A300993 -:10829000C0782FFA15881658F1D8C007C0602FF99A -:1082A000123CFE99FFF8D82A2FFE2FF7083EC03463 -:1082B0000F8BCE8BDA2A00000000023CD4211897E5 -:1082C00076055805E08A0026F6C6FFFCF8CEFFFCCE -:1082D000300B1694C0482FFB0A3BC1B4EC0B070AC5 -:1082E000E80A1800CF946E0C580CE08A00120FC8F0 -:1082F0001458F1D8C007CF003009C078FC0907082E -:108300001458F1D8C007CE802FF91839CF85D82A54 -:10831000DA2A3248F00C1800C110E08800113488C5 -:10832000F00C1800C0B0E08800183608F00C1800F7 -:10833000C05036C8F00C1800C0E15EFF3128F00CC8 -:108340001800CFC03188F00C1800CF8030C8F00C76 -:108350001800CF405EFD3308F00C1800CFC1CEEB03 -:10836000EBCD40E078055805E08A0010F8C6FFFC28 -:108370003007C0380A37C0940D8C2FF72FF6F01F46 -:108380000004CF90E3CF90E0E3CF80E08001831240 -:108390004838F14B01DCF14C01D85EFC000087F459 -:1083A0004838F14B01ECF14C01E85EFC000087F429 -:1083B000EBCD40801697581BC050582BC080E3CFA0 -:1083C0008080F01F00050E9CE3CD8080F01F00022E -:1083D000E3CF9080800091E8D401580CC070486BC6 -:1083E000760AE04A0168E0880003D80AF01F00031B -:1083F000DA0A0000000089EC800091DCD401580CFE -:10840000C0A078185908E08B0007780AE04A016894 -:10841000E0880003D80A189B482CF01F0003DA0AF2 -:10842000000089EC800091DCEBCD4040350A1896C5 -:10843000F01F000330088D48E3CD8040800091DCC0 -:10844000D401306AF01F0002D8020000800091DCE5 -:10845000D401300CF01F0002DA0A000080016C7CAD -:10846000D421201D189414971296169A1095189BD3 -:108470001A9CF01F001CE08A0032585CC27058063B -:108480005F1858075F191268C241300840099338D5 -:10849000400A95584008301B9115400CF01F0012FF -:1084A000581CC100400C78785808C090189B089C54 -:1084B000F01F000E581CC0A03FDCC098301BF01FFE -:1084C000000C400C78785808CF21301C2FFDD822A2 -:1084D0004008913740099356CDEB3FEC2FFDD82251 -:1084E00080016B3C800169A480016C40800169E0DF -:1084F000EBCD40C018971696303CF01F00283DD8B1 -:108500003079AE88AE9935083F29300BAEB8AEC988 -:1085100030283019AED8EF6B0008AEABAEEBAEF939 -:1085200058065F1AF8F900BC58095F181468F60875 -:108530001800C310F8F800D05818F9B80008EFF880 -:108540000E08F8F800CC5818EFF80808F9B900043C -:10855000F1D9E038EFF80E08F8F800C85818EFF82D -:108560000808F9B90002F1D9E038EFF80E08F8F878 -:1085700000C45818EFF80808F9B90001F1D9E0383B -:10858000EFF80E08F8F900D4EF380008F1E91048C8 -:10859000EF680008E3CD80C08001EF6CEBCD404078 -:1085A0001896303C5C76F01F000E5876E088000488 -:1085B000E3CF804048B8F006032FF90C00C6E3CDA6 -:1085C0008040F90C00CAE3CD8040F90C00CEE3CD29 -:1085D0008040F90C00D2E3CD804000008001EF6CB8 -:1085E0008003B7D4D40130DCF01F0002784CD802ED -:1085F0008001EF6CEBCD40FC207D31CA1893300B2D -:108600001A9C1A92F01F001266045804E08A00189F -:10861000E6C6FFFC30070D852FF72FF60A9CF01FEA -:10862000000DC0A14008FACAFFE4F0C9FFFF100A1C -:108630005009F565FFE80E34FE99FFEF1A9B069C82 -:1086400031CAF01F00052F9DE3CD80FC800091D042 -:1086500080018312800091DCEBCD40E0207D300B67 -:10866000189731CA1A9CF01F00171A956E0B580BF9 -:10867000E08A0024300AFAC6FFFCEEC9FFFC0C9C1D -:10868000149EC0582FF9143BE08A000D2FFA13886E -:10869000FC081800CF8418C82FF96E0B143BFE9904 -:1086A000FFF7F80601061A9B50060E9C31CAF01F10 -:1086B00000062F9DE3CD80E0FAC6FFFC0C9CCF2B7B -:1086C000800091D0800091DCD421129618971695E5 -:1086D0001494580CC1205809C111314CF01F0009E5 -:1086E000C0C09907B8C599249936487A7419994930 -:1086F000930CF8C8FFF49518D822F01F0004D82274 -:1087000080009200000077A4800147E0EBCD40C0DC -:108710001896580CC110308CF01F000C1897C090A0 -:108720000C9CF01F000B8F1C1898C0A030188F08ED -:108730000E9CE3CD80C018970E9CE3CD80C00E9CAC -:108740001097F01F0004CF5B800092008001D920B9 -:10875000800091E8EBCD40C049566C075807C180B6 -:108760006E395809EFF80004EDF80A01EFF810042B -:10877000F3F81A046E4891096E2A0FCB6E0CF01FA5 -:10878000000D0E9CF01F000C6C075807CEA148B8D6 -:10879000F0C7FFEC0E9CF01F000AC071302CF01FD8 -:1087A00000090E9CF01F0008E3CD80C0000077A4F4 -:1087B000800147E0800091E8000087F4800145DCFB -:1087C0008001478C800145ECD4014848300991185C -:1087D0009109F01F0003D802000077A4800187549C -:1087E000EBCD40FE4A0618976C0816951494201895 -:1087F000E0480167E0880004E3CFC0FE580A5F1933 -:108800006C1A300B580A5F181268F6081800CF501F -:10881000183A5FB858FC5F891268F6081800CED085 -:1088200016910C92C0B82FF7641958F75F8A0E3969 -:108830005FB81468E2081800CE00EE031016306A24 -:10884000E6CCFFF80A9BEC0C000CF01F0008CEC130 -:10885000485B089C060B310A2F2BF01F00050E9C6D -:10886000E3CD80FE000089EC8000917C800091DCEB -:10887000EBCD40E018951697300C18960E9A0A9B8F -:108880002F07F01F0005C0452FF62FFCCF8B0C9C47 -:10889000E3CD80E0800187E0D401306AFACCFFFCB0 -:1088A000FACBFFF4F01F00025F0CD8028000917C2D -:1088B000EBCD4068205D3FF8FACAFFDC15D9FB68B4 -:1088C0000013FB68000EFB68000FFB680010FB68DC -:1088D0000011FB680012FAC6FFF8ACD974088D08C5 -:1088E00015C9FAC3FFFEACC93065FACBFFF20A9A8C -:1088F000069CF01F00060A9A069B0C9CF01F0004C1 -:108900005F0C2FBDE3CD80688002E7368000917C4C -:10891000D401FACBFFFCF73900241788F0091800BE -:10892000C020D80AF73A00251798F4081800CFA1FC -:10893000F6CCFFFE2DABF01F00035F0CD802000049 -:108940008000917CEBCD4040211D303CF01F001E8B -:10895000322A1896FACBFFB4FA0A000CF01F001B5B -:10896000ECC6FF78ECE80000FAE90000ECEA000849 -:10897000FAEB0008ECE80010FAE90010ECEA001845 -:10898000FAEB0018ED380020FB680020ED390021DB -:10899000FB690021FB3A00221B88F4081800C05034 -:1089A000300C2EFDE3CD80401B9AFB380023F408E9 -:1089B0001800CF71FACBFFFEFACCFFDCF01F0004E9 -:1089C0005F0CCF0B8001EF6C8002E7368000917C5A -:1089D000EBCD40E0203D4B571896EF3900943FF81F -:1089E000F0091800C3507938707C2F4CF8E800006B -:1089F000209DFAE90000F8EA0008FAEB0008F8E820 -:108A00000010FAE90010F8EA0018FAEB0018F9383B -:108A10000020FB680020F9390021FB690021F01FCC -:108A200000242F7D580CC0412FDDE3CD80E0202DA8 -:108A3000EEC7FF4A306A0E9B1A9CF01F001EF01F03 -:108A4000001E2FED580CC1C02FDDE3CF90E0F8CB16 -:108A5000FFE2306A1A9CF01F0017EECBFF4AFAC6FD -:108A6000FFFA306A0C9CF01F00130C9B1A9C306AB2 -:108A70001A95F01F00125F0C2FDDE3CD80E0ECCBE8 -:108A8000FFE2FAC5FFFA306A0A9CF01F000A0E9B4B -:108A9000306A1A9CF01F00071A9B0A9C306A1A96CB -:108AA000F01F00065F0CCC1B0000026080018944AF -:108AB0008002E736800188B08000917CD401201DBF -:108AC000500C580CC0401A9CF01F00022FFDD80219 -:108AD0008001D3A8D401201D500C580CC0401A9C12 -:108AE000F01F00022FFDD8028001D3A8EBCD40C0BB -:108AF000E06B00E41896300CF01F000A1897C0E0F5 -:108B0000E06A00E40C9BF01F0008ECC9FFF8EECA15 -:108B1000FFF8486B0E9CF01F00060E9CE3CD80C052 -:108B20008001D8DC800091DC8001D3EC8001ACA80E -:108B3000EBCD40C0E06B00EC1896300CF01F000A43 -:108B40001897C0E0E06A00EC0C9BF01F0008ECC92D -:108B5000FFF0EECAFFF0486B0E9CF01F00060E9C63 -:108B6000E3CD80C08001D8DC800091DC8001D3ECB3 -:108B70008001ACA8EBCD40FE129210914A88F0F92A -:108B800000F818933DD8733C316916977874AE8815 -:108B9000AE9930083509AEA8AEB93F283019301665 -:108BA00014954A0B303AAEC8AED9AE36EECCFFF8CB -:108BB000F01F001D069CEF65000BAE76AE66308B95 -:108BC000F01F001A8F5CC290303A496BF01F0016FC -:108BD0006E58B0B28EE86E5C303AF808002C491B33 -:108BE000F01F00116E598EE8F2080028B0B1E919A3 -:108BF00000B0E91800B21208E93900A5A3682F08EF -:108C00001039C030E3CF90FE0F9830092FE8EF59AC -:108C10000010AE98E3CF90FEE3CD80FE000087F415 -:108C200080017B1C800091DC8001D3ECD431201DBD -:108C3000314E1697330BAE9EAE8B1090FACBFFD809 -:108C40007618500818921493129176055805E08A08 -:108C50000006EA0815042EA8AE983016303AAE1673 -:108C600049E4EECCFFFCE8CBFFFCF01F001D049CA8 -:108C7000AEF3AE56AE46AE75EA0B15042F8BF01F61 -:108C800000198F4CC280303AE8CBFFFCF01F001473 -:108C90006E48B0B18EC86E4CE8CBFFFCF808002CD3 -:108CA000303AF01F000F6E498EC8F2080028B0B0AD -:108CB0003289AE695805E08A000D6E488EC98EDC97 -:108CC000EA0A1504120C400BF00C002CF01F0004F3 -:108CD0002FFDDA3A2FFDD83280017B1C800091DC19 -:108CE0008001D3ECEBCD40E0201D500B1897580CC1 -:108CF000C070169A4C4C0E9BF01F0044C6404C4668 -:108D000030080DA9F0091800C050301C2FFDE3CD2C -:108D100080E0ECCCFFE4F01F003FCF815807C2F0A9 -:108D2000301CF01F003DC3304B751A9B4B6CF01F7D -:108D3000003B1897C320F01F003A3018ED4C00CCD0 -:108D4000ACA80E9C3005400BED5500D04B07F01F32 -:108D500000351896581CC3F1EECCFFE4F01F00322A -:108D60004B28F1090142EA091900CD006E98EDB8CF -:108D7000000ECCC0F01F002E0C9CCC9B4A25EAF9BB -:108D80000320EAF803241039CCC1CD0BECCCFFE46E -:108D9000F01F0025301CCBBBECF801245818C04054 -:108DA000301CF01F0024ECCCFFE4F01F001FEAF998 -:108DB0000324EAF803201238CA90301CF01F001672 -:108DC000301CCA5B492AF50B00D2F80B1900C0A071 -:108DD0003FBCC9DBEECCFFE4AEA5F01F00133FBCE7 -:108DE000C96B3018F55800D24909F3080142F6085A -:108DF0001900CEF07498EDB8000ECEB0F01F000C44 -:108E00003FBCC85B000084CC80017B30000087F44D -:108E1000800145DC80019F3080017B7A800145C460 -:108E200080014664800145EC000002608001FBFC8B -:108E30008001A128EBCD40C01897F01F0015C1B0EC -:108E40006E4849468D186E598D2930096E2C8F2930 -:108E50006E486E3BE2180080F9B80001EDF80E0292 -:108E6000F01F000D1897581CC0803008300CACA8BB -:108E7000E3CD80C0E3CF90C0F01F00083008ED4C78 -:108E800000CCED5800D00E9CE3CD80C08001C6A080 -:108E9000000087F480014664800145C4EBCD40802A -:108EA000491A18977498EDB80001C111F4F801241B -:108EB0005818C0A07848951878599529F01F000BCC -:108EC000C091E3CD8080109CE3CD80803FBCE3CD9A -:108ED000808030086E2C6E3B8F28F01F0005E3CD9C -:108EE00080800000000087F48001C6A080018CE42F -:108EF000106104000000000040200700FFFFFFFF9A -:108F0000000000004869F2F802045828C0205EFE04 -:108F1000580CCFE0F2C8FFF099085EFF000077AC74 -:108F20005EFDD7034828912C913B5EFF000077AC93 -:108F300048384849910C930B5EFC000000007540D6 -:108F4000000074B45EFCD703D431202D500C3008DF -:108F5000FAC1FFF81690109402D84A424A43E269D7 -:108F60005A4C089A0819029B009C40085D181895F5 -:108F70005804C0B1584CF80A1780F9BA0B0449DB01 -:108F8000401CF01F001DC2E140165805C1000A97A1 -:108F90005907EE0A1780F9BA0B100C9B1417140628 -:108FA00064085C7A660C5D185807CF310A04E24405 -:108FB0005A4BFE98FFD65875E088000D4018EACC51 -:108FC000000848CBF00C000C2F8B308AF01F000AF1 -:108FD000C0913009009C129A129B40085D182FED39 -:108FE000DA3A30DC2FEDD83200007540000074B45E -:108FF00080018EF08000917CEBCD40FC49F8189404 -:10900000F0C3FDDCF0C7FFBC3072C0B8321A089B59 -:109010000A9CF01F001B1896C1D02C470637C16070 -:10902000EEC5002C5804CF316E08109C5808CF6054 -:10903000F01F00148F04EF44FFF86E185808CEE1BB -:109040008F248F322C470637CEC15804C0D0E3CFCF -:10905000C0FC6ABC580CC080F01F000A8B968BB60F -:109060006AC85808C030E3CF90FC8BD8301C3078E9 -:109070008BE8E3CD80FC0000000077AC8000917CA1 -:10908000800091E8EBCD40FE109114961895169251 -:109090001293F4C80008E0480037E08B00185859D4 -:1090A000C18049D8F0C4FE08F0C7FFE86EB8580880 -:1090B000C1300E9C321A0A9BF01F0018C1D02C47F9 -:1090C0000837CF51307CE3CD80FE30ACE3CD80FE5D -:1090D000129CE3CD80FEECCBFFFF049CF01F001040 -:1090E0000A9B8FBC8F968FD18FE30E9C321AF01F94 -:1090F000000DE3CF90FE6EBCF01F000B049CECCB88 -:10910000FFFFF01F00078FE38FBC8F968FD1E3CF57 -:1091100090FE0000000077AC8000917C8000918878 -:10912000800091DC800091E8D401487BF6F80204CD -:109130005828C020DC0AF6CBFE04306AF01F00037A -:10914000DA0A0000000077AC800091DCEBCD40FE35 -:10915000209D580B5F09580A5F08169314941069F4 -:10916000C341580BC4514A9264585808C2E03005B4 -:10917000FAC1FFFD0A970A9CC0D8ED3A0020FB38DF -:109180000023F4081800C2E00E9C64580E38E088F2 -:10919000001E64482FF7F00C03265803CEF1306A06 -:1091A000089B5804C0A0202D1A9CF01F0019F01F26 -:1091B00000192FED580CC0E05805C0506AC96CC8A2 -:1091C0001238CE350C95CE1B30050A9C2F7DE3CD91 -:1091D00080FE306A089BECCCFFDFF01F000FCD5102 -:1091E000CECB029B0C9CF01F000CCCF1CD9B189BAE -:1091F000069AFACCFFFDF01F0009FB6300234832FA -:1092000064585808CB51CE1B000077AC8002E7367B -:10921000800188B08000917C800091DCEBCD4060C3 -:10922000306A202D169618951A9CF01F0009F01F21 -:1092300000090C9A5F0B0A9CF01F00072FED581CC9 -:10924000F9BC0001F9BC01FFE3CD80608002E73684 -:10925000800188B080016480D4015C6CF01F000440 -:10926000581CF9BC0001F9BC01FFD8028001641C44 -:10927000EBCD406E202D1293189116921495300B61 -:10928000308A1A9CF01F0012306A069B1A96202D15 -:109290001A9CF01F0010F01F001030085F091AD848 -:1092A0000A9A1AD6049B1AD3029C1AD83038F01F97 -:1092B000000B2FAD5BFCC070581CF9BC01FF2FEDFB -:1092C000E3CD806E304C2FEDE3CD806E800091D0E9 -:1092D0008002E736800188B08001661CEBCD406ECD -:1092E00010911892169314951296F01F00113008E1 -:1092F0000C991AD80A9A1AD1069B049CF01F000DEB -:109300002FED583CE0890007582CC085306CE3CD28 -:10931000806E584CC070E3CFC06E5BECC050581CE0 -:10932000CFB1E3CF906E30BCE3CD806E8001A1DC85 -:109330008001F7D8EBCD4040201D10964978F0FE13 -:109340000204582EC0503FFC2FFDE3CD804030EE8C -:10935000FAC8FFFC10DE300E1A985C761ADE1AD6B8 -:10936000F01F000F2FEDFE5CFC17E0890010FE5C83 -:10937000FC16C114FE5CFB4FC070FE5CFBB4C0B0B9 -:10938000FE5CFAECCE11307CCE0B5BECC040581C7E -:10939000CDB1CDBB30BCCD9B000077AC8001F54496 -:1093A000D4014858F0F902045809C030F01F0003F6 -:1093B000D8020000000077AC80014480EBCD40E88B -:1093C0004D56189514971693E06A0218300B0C9CB2 -:1093D000F01F00524D288D05700C8D133005A36CC5 -:1093E000ED450204F01F004F8D4CC031E3CFC0E8C3 -:1093F0000A9CF01F004D581CCFA11AD5F1D7C00808 -:109400000A990A9A310B320CF01F00482FFD581CA4 -:10941000CEE1F01F0047581CCEA11AD50A980A9930 -:109420004C4A0A9B302CF01F00442FFD580CCDF005 -:1094300030670A981AD70A994BEA0A9B322CF01F18 -:10944000003E2FFD580CCD3030780A991AD84B9A2F -:109450000A980A9B323CF01F00382FFD580CCC7044 -:109460001AD50E9C0A980A994B2A0A9BF01F0032C3 -:109470002FFD580CCBC030270A981AD70A994ADA20 -:109480000A9B304CF01F002C2FFD580CCB001AD734 -:109490000A984A8A0A990A9B305CF01F00272FFD20 -:1094A000580CCA50301C0A981ADC0A994A1A0A9BAE -:1094B000F01F00212FFD580CC9A030390A981AD985 -:1094C00049CA0A990A9B31CCF01F001B2FFD580C8A -:1094D000C8E0F01F001A581CC8A1F01F0019581C42 -:1094E000FE91FF860A980C9730490C9A495B0A9CBA -:1094F000F01F0015FE90FF7C189A308B493CF01F3E -:109500000014581CFE91FF74ED4C0204EF45020C50 -:10951000E3CD80E8000077AC800091D000000258D5 -:1095200080009200800200AC8002067C8001FFB4C3 -:109530008001984C80016E788001FD8C8001A00034 -:109540008001955080016AF48003B8048001762878 -:10955000EBCD40E078185B98C031E3CFC0E078569F -:109560005866CFC1783B0C9A4985EAC7FE040E9C29 -:10957000F01F0017303A497B0E9CF01F0017C131D5 -:10958000F01F00163026EB460204F01F00150C9C5D -:10959000F01F00146A195809C14048C8700C5D19C1 -:1095A000E3CF80E037A83C49EB6801FC30E80C9B36 -:1095B0000E9CEB6901FDEB6801FEF01F000BCE1B5A -:1095C000129CE3CD80E00000000077AC800091DCCD -:1095D0008003B80C8000917C8001FD8080020290A5 -:1095E0008002023480017984EBCD40FC7875580B01 -:1095F000F9B80100F7F81A001693EB3900C83FF8E4 -:10960000F0091800C250EB0900D03008F009190029 -:10961000C4D0307430073022EE061502EAF800D8C4 -:109620000C082FF711BC089BF01F0027E08A0009E7 -:10963000EAF800D80C0811B45803E7F21A00EB1846 -:1096400000D00E38FE99FFEA089CE3CD80FCEB3891 -:1096500000A4F2081800C250EB0900B03008F0096D -:109660001900C240307430073012EE061502EAF8D5 -:1096700000B80C082FF711BC089BF01F0013E08AFC -:109680000009EAF800B80C0811B45803E7F21A0010 -:10969000EB1800B00E38FE99FFEA089CE3CD80FC81 -:1096A000787992D8EDB80004C040307CE3CD80FCDE -:1096B000307B305CF01F0004FE9AFFF9305CE3CD94 -:1096C00080FC000080017E60D431201D4D876E58E3 -:1096D0005808C0E030060C996E48F009032CF01FC2 -:1096E00000552FF66E580C990C38FE9BFFF730068C -:1096F0001A9B8F560C9CF01F00501A94400C580C6B -:10970000C0312FFDD832A36CF01F004C1890CFA0B1 -:10971000400A0C9BA36AF01F004A40085808E08AE0 -:1097200000260C950096C0782FF52FC640080A3801 -:10973000E08A001D350CF01F00418D0CCF614009FF -:109740005809E08A000F009530062FF66A0C580C75 -:10975000C040F01F003840092FC50C39FE99FFF7B3 -:10976000009CF01F00342FFDD8321A9B009CF01F84 -:1097700000324B4972084009F0090D488F585808CB -:10978000CE00300408930891A363E003000264084C -:109790006E467135344CF01F0029F9410040060631 -:1097A0008D0C6A796E48F2CBFFF2F0030306F33AB0 -:1097B000000D0C9CF01F00246A78F139000D306A0E -:1097C000ED690020ECCCFFDF640B2E2BF01F001E98 -:1097D000029B0A9CF01F001DED6C00386A498DC980 -:1097E0006A585808F9B805008DD86A79F338005ED0 -:1097F000ED6800276A7992C88DA80BF9ED59002C05 -:1098000030290BEAF20A1800E2081710F9B8000133 -:109810008DF830286E49F20309062FF4F00A18007B -:1098200008936E580838FE9BFFB1C8AB000077ACB8 -:10983000800091E88002105880009200800091D052 -:1098400000000258800091DC800195E8EBCD40C01B -:10985000201D1696582BC680E0880013586BC590C3 -:10986000587BC2D0583BC4804C076E295809C05061 -:109870004BE80C9C703B5D192FFDE3CD80C0580B6D -:10988000C0F14BA7EEF902085819C6C0EEF8020C59 -:109890003019A1D8EF690210EF48020CCE7B581B9B -:1098A000CE414B273008EEF9020C4B1AA3A9EF6802 -:1098B0000210A1D9B488EF49020CCD8B4ACA3008F6 -:1098C0001589F0091800C4C14A87EEF8020CEDB8FA -:1098D0000001CD31EF380210F2081800CCE1F01F82 -:1098E0000025F01F0025EEF8020C3016E018FFF9F5 -:1098F000EF48020CCBBBF01F002049C7EEF9020C69 -:10990000EDB90004CBA11298A5C8EF48020CCAEB30 -:1099100049673019EEF8020CEF690210A1D8300641 -:10992000EF48020CCA3B4917EEF8020CA3C81A9C78 -:10993000EF48020CF01F001140085828C050F01FDB -:10994000000DF01F000D300A4898B08AEF39021060 -:10995000F4091800C9204858F16A0210C87BB4887D -:10996000C8CB4838B089C89B000077AC000079C4E8 -:1099700080021298800196C8800177A4D401201D2E -:1099800048F9F2F802045828C0302FFDD80AF339FC -:1099900002103008F0091800C0711A9CF01F00096D -:1099A00040085828CF31F01F0008CF00F8CAFFE266 -:1099B000300B169CF01F00052FFDD802000077AC7D -:1099C000800177A4800210FC8001914CEBCD408097 -:1099D000201D4967EEF802045828C0503FFC2FFDB7 -:1099E000E3CD8080F01F0012C051302C2FFDE3CD5D -:1099F0008080EEF9020CEDB90002CF10EDB9000144 -:109A0000C031309CCEDB1A9CF01F000A4008580879 -:109A1000CED0F01F0009581CCE21EEF8020CA3A8EE -:109A2000EF48020CCDDB0000000077AC800210FC98 -:109A3000800211088001F370EBCD40C020AD189872 -:109A40001697580BC07076DC581CC0402F6DE3CDC4 -:109A500080C0109BF13A0020FAC6FFFE0C9CF01F5C -:109A6000001B0C9B209D322A1A9CF01F0019F01F2E -:109A700000192F7D580CCEB0793CFACBFFDCF01FDB -:109A8000001640985818C150C0923058F808180075 -:109A9000F9BC0003F9BC0102CDAB5828C030301C22 -:109AA000CD6B5807C0D06EC85808C0A0305CCCFB46 -:109AB0005807C0806EC85808C050304CCC8B307CE2 -:109AC000CC6B306CCC4B00008002113C8002E7363E -:109AD0008001F2BC800195E8D43120EDFEF3029CB8 -:109AE000FAC1FFA4E6F8020C18971694E2180006D3 -:109AF000C040309C2F2DD832F01F00A1C040308CC8 -:109B00002F2DD832E74C02085807C130BA8CF5D453 -:109B1000C008FAC6FFFEBA9A0E9B0C9CF01F009973 -:109B20000C9C1B9BF01F0098581CC0802F2DDC3A0A -:109B3000BA97BA87FAC6FFFECF4B029CF01F00937C -:109B40001892581CCF41029A089B0E9CF01F00905F -:109B50001890C580E6C7FFE8E6C6FE08EF3A002089 -:109B6000E1380020F4081800E08000A02C470C37F2 -:109B7000CF6130070E950E9B009CF01F0086E136EA -:109B800000381897CD40585CE08000C2E08B00B9E7 -:109B9000583CE08000B4584CC020300CF01F007ED0 -:109BA0003048F0061800E08000A83054E80618009D -:109BB000E08000983028F0061800E080009A300C11 -:109BC000F01F0076E8061800E080008F300CF01FD0 -:109BD00000745837E08B007960F85818C710301CB3 -:109BE000F01F0070300B4F0CF01F0070CA00F01F08 -:109BF0000070581CC9C1E6F8020CA1B8E748020C75 -:109C0000C7ABFAC5FFCE306A029B0A9CF01F005D0D -:109C1000FAC6FFDE0C9CF01F00673FF81AD00C9BC1 -:109C20001AD2310A1AD8204D1A9CF01F00630A9BE1 -:109C3000202D306A1A9CF01F00600499209DE6CC0C -:109C4000FDECFB380069FAEA0048FAE20050FB68D4 -:109C50000021FAEB0000FB380068FAEA0058FAE34A -:109C60000008FAE20060FAEB0010FAE30018FB6863 -:109C70000020303A0098129B4C03F01F00502EED4C -:109C80001895581CFE91FF54009BE6FC0214F01F2F -:109C9000004C5BBCC620580CC3E1189BE6FC0214C8 -:109CA000F01F00483FFCC27B0E9C009BF01F00464B -:109CB000FE91FF5E6EB55805EA071700C5DB302C34 -:109CC000F01F0038C90B5805FE90FF320A9AE13B9D -:109CD0000020009CF01F003D3018E7480208C7DB59 -:109CE000301CF01F002E301CF01F002DC73B302C05 -:109CF000F01F002AC6CB303CCFCB301CC50B586CB4 -:109D0000C080587CFE91FF4B308CC49B307CC47B60 -:109D1000305CC45B344CF01F002E089A18960E9BE2 -:109D2000F01F0018029B306AED640020ECCCFFDFCE -:109D3000F01F001400991AD60A984A6A009B31CC89 -:109D4000F01F00252FFD580CC0E0E6F8020C0A9C1D -:109D5000A1B8E748020CCCFA009BE6FC0214F01F05 -:109D60000019CC8A189BE6FC0214F01F00160C9C0C -:109D7000F01F001A3FFCCBFA000077AC800210FC09 -:109D8000800091DC800178BC800179788001914C61 -:109D900080019A3880015F60800163488001639C84 -:109DA00080017A1080018F208001FD408001F3A0A6 -:109DB000800177C08002E73680020BFC80020A70C7 -:109DC00080020B408000917C800214708000920021 -:109DD00080019E0080016E78800091E8D401202DE2 -:109DE000FACAFFF415D8BAD87409500915C8300B4F -:109DF000BAC8169CF01F00022FEDD80280019AD835 -:109E0000EBCD40E049F51697EAFC0214300BF01F49 -:109E1000001EF01F001EEEC6FFDFEF3B00200C9A75 -:109E20000E9CF01F001BC150EAF8020CA1D8202D97 -:109E30000C9BEB48020C306A1A9CEF360020F01F96 -:109E400000150C9B0E9CF01F00142FED581CC060D9 -:109E5000EAF8020CEDB80001C0600E9CF01F000F84 -:109E6000E3CD80E0301B300CF01F000D302B300CA8 -:109E7000F01F000B0E9CF01F0009E3CD80E00000F6 -:109E8000000077AC80020B40800196C88001914CA5 -:109E90008002E73680019AD8800091E88001984CD2 -:109EA000EBCD40E0202D18951697580CC0513FFC83 -:109EB0002FEDE3CD80E0580BCFB0E04B0020FE9BB0 -:109EC000FFF8FAC6FFFE306AE06B00FF0C9CF01F43 -:109ED0000008306A202D0C9B1A9CF01F00060E9B78 -:109EE0000A9CF01F00052FEDCE4B0000800091D0A2 -:109EF0008002E73680019AD8EBCD408048B7EEF873 -:109F000002045828C030E3CFC080F01F0009581C5D -:109F1000F9BC0109EFF80083F9B90010F1D9E03874 -:109F2000EFF80A83E3CD8080000077AC80020A84DA -:109F3000D40148B9F338000A104CF36C000A7218C7 -:109F40005808C0B05828C0803028726C9318301B55 -:109F500072595D19D80AD80ADA0A0000000079C8D7 -:109F60004828916B915C5EFC000079C8EBCD40C045 -:109F7000203D5CBBBA89502B109714965CC85C8856 -:109F80005807C0513FFC2FDDE3CD80C05C784959B4 -:109F90005018B28C3048FAC9FFF8300A306B492C9F -:109FA000F01F0012581CCEF11B89491A1898B48969 -:109FB000306B1A99300A48FCF01F000C581CCE3147 -:109FC00048D8300AB007306B304848CCFA0800094E -:109FD000F01F0006581CCD7148989146CD5B0000DB -:109FE00000007A288003B8108001776C0000025CC2 -:109FF0008003B8180000025E8003B820000079C812 -:10A00000EBCD40C030074A161AD78D078D17ED6784 -:10A010000008ED670009ED67000A8D378D470E983F -:10A020000E9949BA0E9B302CF01F001A2FFD580CC8 -:10A03000C0413FFCE3CD80C01AD70E980E99496A03 -:10A040000E9B304CF01F00132FFD580CCF301AD749 -:10A050000E980E99491A0E9B32ECF01F000E2FFD40 -:10A06000580CCE8031483019E06A138830AB0E9C12 -:10A07000F01F000B581CCDE10E9BECCCFFF4F01F41 -:10A080000009581CCD71CD7B000079C88001A0F07B -:10A0900080016E788001A1A08001A0A480019F6C46 -:10A0A000800144F8D401F01F000E48EA74085838C3 -:10A0B000C12030289508F539000A3008F009180049 -:10A0C000C020D8023018300B9518487C487AF01F11 -:10A0D0000008D80230089508D80200008001DA365E -:10A0E000000079C88001DA5880018E348001EF20A9 -:10A0F000EBCD408048973018EF6800086E4958094A -:10A10000C0A0308CF01F00066E4C3009485A6E3BE0 -:10A11000F01F0005E3CD8080000079C880019F30EA -:10A120008001A1CC80014558D4014989F80C11FF68 -:10A13000F338000A106CF36C000AC1E1F33800092F -:10A14000F8081800C19072185808C161F338000867 -:10A15000F8081800C06072085808C0F05818C0C04D -:10A160003018300B931848AA48ACF01F000B300B86 -:10A17000331CF01F000AD802301B485A930B488C3E -:10A18000F01F0005D8020000000079C880018E345D -:10A190008001DA588001EF2080016D6C8001DA8443 -:10A1A000EBCD404048766C3CF01F0007308CF01F30 -:10A1B000000730083009ED6800088D09E3CD8040C4 -:10A1C000000079C8800145308001A128D401308C7D -:10A1D000F01F0002D80A00008001A128EBCD4080CA -:10A1E00048E76E185828C030E3CD80806E58300B99 -:10A1F0006E6C5D18300B8F1B4899F2FA0324F2F84D -:10A2000003201438C040169CF01F0006300B332C7E -:10A21000F01F0005E3CD8080000079C8000084CCE9 -:10A2200080018CE480016D6CEBCD40C018971696D0 -:10A23000F01F0009C0C06E0C581CC0700C9B0E9C17 -:10A24000F01F0006CF91302CE3CD80C03FDCE3CD82 -:10A2500080C000008001462C80014636EBCD404096 -:10A26000301818969908F01F00040C9CF01F00038A -:10A27000E3CD80408001463280014634D401580C41 -:10A28000C030F01F0002D80280014630D4013008EF -:10A290009908F01F0002D8028001462ED401189EB2 -:10A2A000580AC0C196199688F9D9C010103CC165EA -:10A2B000F2C8FFFF973AB618D802581AC06096192C -:10A2C000F2C8FFFFB618D802969996881039C0F4E4 -:10A2D0007648F0090709B889CF3B1D897648F00C0C -:10A2E0000B099619F2C8FFFFB618D8023008973844 -:10A2F000B8889619F2C8FFFFB618D802EBCD408097 -:10A300001897580AC1D1961C9689FDDCC010FCC86C -:10A31000FFFF1238F7FA4A03F7F85004F1DEE508B8 -:10A32000EFF95801F1F95E00EFFA5800F1FA5E0119 -:10A33000F7FC5201F8C8FFFEB618E3CD8080581A2A -:10A34000C070961CF8C8FFFEB618E3CD8080969AC0 -:10A350009689F4C8FFFF1238C09476481408119902 -:10A36000B889118AB89A961CCEEB30089738B8088D -:10A37000961CF8C8FFFEB618E3CD8080EBCD408078 -:10A38000189E169C580AC0F1961B9889EFDBC010E6 -:10A39000EEC8FFFD1238C205F6C8FFFC993AB8189E -:10A3A000E3CD8080581AC070981BF6C8FFFCB8181F -:10A3B000E3CD8080969B9889F6C8FFFD1238C1C412 -:10A3C000784A160A15B8BC8815A9BC991598BCA876 -:10A3D0001589BCB9CEAB1DB8784A0E0AB4881DA940 -:10A3E000B4991D98B4A81D89B4B9981BF6C8FFFC90 -:10A3F000B818E3CD8080300899389D08981BF6C8BE -:10A40000FFFCB818E3CD8080EBCD4068189316951B -:10A410001496F01F000C0C9A0A9BE6CCFFFFF01F6D -:10A4200000090C9A0A9BE6CCFFFEF01F00060C9A6E -:10A430000A9BE6CCFFFDF01F0003E3CD806800001F -:10A440008001A29CD4211697189596141496F01F9B -:10A4500000080C9A0E9BEACCFFFEF01F00060BC80A -:10A460005808F1D4E108EFF81C01D8228001A2FCC1 -:10A470008001A408EBCD4068189316951496F01F40 -:10A4800000060C9A0A9BE6CCFFFCF01F0003E3CD0C -:10A49000806800008001A37CEBCD4068189316957E -:10A4A0001496F01F00090C9A0A9BE6CCFFFCF01FE3 -:10A4B00000070C9A0A9BE6CCFFFAF01F0004E3CDDC -:10A4C000806800008001A37C8001A2FCEBCD406885 -:10A4D000189316951496F01F000F0C9A0A9BE6CC61 -:10A4E000FFFCF01F000D0C9A0A9BE6CCFFFBF01F4F -:10A4F000000A0C9A0A9BE6CCFFFAF01F00070C9AA0 -:10A500000A9BE6CCFFF9F01F0004E3CD8068000051 -:10A510008001A37C8001A29CEBCD40681893169526 -:10A520001496F01F000C0C9A0A9BE6CCFFFCF01F5F -:10A53000000A0C9A0A9BE6CCFFFAF01F00080C9A5E -:10A540000A9BE6CCFFF9F01F0005E3CD8068000010 -:10A550008001A37C8001A2FC8001A29CEBCD40681D -:10A56000189316951496F01F00150C9A0A9BE6CCCA -:10A57000FFFCF01F00120C9A0A9BE6CCFFF8F01FBC -:10A5800000100C9A0A9BE6CCFFF6F01F000D0C9A07 -:10A590000A9BE6CCFFF4F01F00090C9A0A9BE6CC5C -:10A5A000FFF0F01F00070C9A0A9BE6CCFFEEF01FAD -:10A5B0000004E3CD806800008001A37C8001A2FC40 -:10A5C000EBCD4068189316951496F01F00090C9A6D -:10A5D0000A9BE6CCFFFCF01F00060C9A0A9BE6CC17 -:10A5E000FFF8F01F0003E3CD806800008001A37C2A -:10A5F000EBCD4068189316951496F01F00060C9A40 -:10A600000A9BE6CCFFFCF01F0003E3CD806800004E -:10A610008001A37CEBCD4068189316951496F01F2B -:10A62000000C0C9A0A9BE6CCFFFCF01F00090C9A68 -:10A630000A9BE6CCFFF8F01F00060C9A0A9BE6CCBA -:10A64000FFF4F01F0003E3CD806800008001A37CCD -:10A65000EBCD4068189316951496F01F00330C9AB2 -:10A660000A9BE6CCFFFCF01F00300C9A0A9BE6CC5C -:10A67000FFF8F01F002D0C9A0A9BE6CCFFF4F01FA8 -:10A68000002B0C9A0A9BE6CCFFF2F01F00280C9AD4 -:10A690000A9BE6CCFFF0F01F00250C9A0A9BE6CC43 -:10A6A000FFEEF01F00220C9A0A9BE6CCFFECF01F95 -:10A6B000001F0C9A0A9BE6CCFFEAF01F001C0C9AC4 -:10A6C0000A9BE6CCFFE8F01F00190C9A0A9BE6CC27 -:10A6D000FFE6F01F00160C9A0A9BE6CCFFE4F01F81 -:10A6E00000130C9A0A9BE6CCFFE2F01F00110C9AB3 -:10A6F0000A9BE6CCFFE1F01F000E0C9A0A9BE6CC09 -:10A70000FFE0F01F00090C9A0A9BE6CCFFDCF01F6B -:10A7100000060C9A0A9BE6CCFFD8F01F0005E3CD9B -:10A72000806800008001A37C8001A2FC8001A29CC3 -:10A73000EBCD4068189316951496F01F00120C9AF2 -:10A740000A9BE6CCFFFCF01F00100C9A0A9BE6CC9B -:10A75000FFFBF01F000D0C9A0A9BE6CCFFFAF01FDE -:10A76000000A0C9A0A9BE6CCFFF9F01F00070C9A2E -:10A770000A9BE6CCFFF8F01F0004E3CD80680000E0 -:10A780008001A37C8001A29CEBCD406818931695B4 -:10A790001496F01F00060C9A0A9BE6CCFFFCF01FF3 -:10A7A0000003E3CD806800008001A37CEBCD40680E -:10A7B000189316951496F01F00060C9A0A9BE6CC87 -:10A7C000FFFCF01F0003E3CD806800008001A37C44 -:10A7D000EBCD4068189316951496F01F00060C9A5E -:10A7E0000A9BE6CCFFFCF01F0003E3CD806800006D -:10A7F0008001A37CEBCD4068189316951496F01F4A -:10A8000000060C9A0A9BE6CCFFFCF01F0003E3CD88 -:10A81000806800008001A37CEBCD406818931695FA -:10A820001496F01F00060C9A0A9BE6CCFFFCF01F62 -:10A830000003E3CD806800008001A37CEBCD40687D -:10A84000189316951496F01F00060C9A0A9BE6CCF6 -:10A85000FFFCF01F0003E3CD806800008001A37CB3 -:10A86000EBCD4068189316951496F01F00060C9ACD -:10A870000A9BE6CCFFFCF01F0003E3CD80680000DC -:10A880008001A37CEBCD4068189316951496F01FB9 -:10A8900000060C9A0A9BE6CCFFFCF01F0003E3CDF8 -:10A8A000806800008001A37CEBCD4068189316956A -:10A8B0001496F01F00060C9A0A9BE6CCFFFCF01FD2 -:10A8C0000004E3CD806800008001A37C8001A650D5 -:10A8D000EBCD4068189316951496F01F00060C9A5D -:10A8E0000A9BE6CCFFFCF01F0003E3CD806800006C -:10A8F0008001A37CEBCD4068189316951496F01F49 -:10A9000000090C9A0A9BE6CCFFFCF01F00060C9A8B -:10A910000A9BE6CCFFF8F01F0003E3CD806800003F -:10A920008001A37CEBCD4068189316951496F01F18 -:10A9300000060C9A0A9BE6CCFFFCF01F0003E3CD57 -:10A94000806800008001A37CEBCD406818931695C9 -:10A950001496F01F00090C9A0A9BE6CCFFFCF01F2E -:10A9600000060C9A0A9BE6CCFFF8F01F0003E3CD2B -:10A97000806800008001A37CEBCD40681893169599 -:10A980001496F01F00090C9A0A9BE6CCFFFCF01FFE -:10A9900000060C9A0A9BE6CCFFF8F01F0003E3CDFB -:10A9A000806800008001A37CEBCD40681893169569 -:10A9B0001496F01F00060C9A0A9BE6CCFFFCF01FD1 -:10A9C0000003E3CD806800008001A37CEBCD4068EC -:10A9D000189316951496F01F00090C9A0A9BE6CC62 -:10A9E000FFFCF01F00060C9A0A9BE6CCFFF8F01F54 -:10A9F0000003E3CD806800008001A37CEBCD4068BC -:10AA0000189316951496F01F00060C9A0A9BE6CC34 -:10AA1000FFFCF01F0003E3CD806800008001A37CF1 -:10AA2000EBCD4068189316951496F01F00090C9A08 -:10AA30000A9BE6CCFFFCF01F00060C9A0A9BE6CCB2 -:10AA4000FFF8F01F0003E3CD806800008001A37CC5 -:10AA5000EBCD4068189316951496F01F00090C9AD8 -:10AA60000A9BE6CCFFFCF01F00060C9A0A9BE6CC82 -:10AA7000FFF8F01F0003E3CD806800008001A37C95 -:10AA8000EBCD4068189316951496F01F00060C9AAB -:10AA90000A9BE6CCFFFCF01F0003E3CD80680000BA -:10AAA0008001A37CEBCD4068189316951496F01F97 -:10AAB00000060C9A0A9BE6CCFFFCF01F0003E3CDD6 -:10AAC000806800008001A37CEBCD40681893169548 -:10AAD0001496F01F00060C9A0A9BE6CCFFFCF01FB0 -:10AAE0000003E3CD806800008001A37CEBCD4068CB -:10AAF000189316951496F01F00060C9A0A9BE6CC44 -:10AB0000FFFCF01F0004E3CD806800008001A37CFF -:10AB10008001A29CEBCD4068189316951496F01F07 -:10AB200000060C9A0A9BE6CCFFFCF01F0004E3CD64 -:10AB3000806800008001A37C8001D434EBCD4068A4 -:10AB4000189316951496F01F00330C9A0A9BE6CCC6 -:10AB5000FFDEF01F00310C9A0A9BE6CCFFD4F01FF9 -:10AB6000002F0C9A0A9BE6CCFFC2F01F002D0C9A16 -:10AB70000A9BE6CCFFBFF01F002B0C9A0A9BE6CC89 -:10AB8000FFBCF01F00290C9A0A9BE6CCFFB0F01F17 -:10AB900000270C9A0A9BE6CCFFACF01F00250C9A0C -:10ABA0000A9BE6CCFFA4F01F00230C9A0A9BE6CC7C -:10ABB000FF9CF01F00210C9A0A9BE6CCFF98F01F27 -:10ABC000001F0C9A0A9BE6CCFF8CF01F001D0C9A0C -:10ABD0000A9BE6CCFF72F01F001B0C9A0A9BE6CC86 -:10ABE000FF68F01F00190C9A0A9BE6CCFF44F01F87 -:10ABF00000170C9A0A9BE6CCFF50F01F00150C9A28 -:10AC00000A9BE6CCFF30F01F0013E3CD8068000004 -:10AC10008001D3448001D2DC8001D2748001CAF863 -:10AC20008001C9D88001D8608001CA688001CA9CAF -:10AC30008001CA0C8001C9A48001D4348001CDB444 -:10AC40008001CE848001D5588001D6B08001D4E443 -:10AC50008001CFFCEBCD4068189316951496F01F39 -:10AC6000000F0C9A0A9BE6CCFFFCF01F000D0C9A1B -:10AC70000A9BE6CCFFFAF01F000B0C9A0A9BE6CC6D -:10AC8000FFF9F01F00080C9A0A9BE6CCFFF8F01FB2 -:10AC90000006E3CD806800008001A37C8001A2FC57 -:10ACA0008001A29C8001AB3CEBCD406C14951296C8 -:10ACB00018921693E06A00DC129B0A9CF01F001A9F -:10ACC000ECC9FF98EACAFF98069B049CF01F001786 -:10ACD000ECC9FFBCEACAFFBC069B049CF01F001431 -:10ACE000ECC9FF68EACAFF68069B049CF01F0011CC -:10ACF000ECC9FF50EACAFF50069B049CF01F000EEF -:10AD0000ECC9FF44EACAFF44069B049CF01F000BF9 -:10AD1000ECC9FF30EACAFF30069B049CF01F000814 -:10AD2000E3CD806C8002E7368001D1588001D24C9F -:10AD30008001D1E88001D1C08001D21C8001CF9C6C -:10AD4000EBCD40EC1296F2E80000F4E90000ECE8EC -:10AD50000008F4E90008ECE20010F4E30010ECE86D -:10AD6000001814971695F4E90018E06B00E85D15DB -:10AD70008F7CC0D030CA6C7BF01F00066E7A6C7975 -:10AD8000149C0A9B2F492F4AF01F0003E3CD80EC4F -:10AD9000800091DC8001ACA8EBCD40C014971696E2 -:10ADA00074385808C160949E948AF60E00081438CE -:10ADB000F5DEE916F9B80900EFF89A03580CC090CF -:10ADC0005809C0C1189B0C9A6E4C1C0CF01F000A4D -:10ADD0008E180C08AE18E3CD80C05819CFA16E4B69 -:10ADE0000C9A1C0BF01F00048E180C08AE18E3CD53 -:10ADF00080C00000800091DCEBCD40E016971496F7 -:10AE00001895581AC0B0F01F000C0C99189B0E9A98 -:10AE10000A9CF01F000AE3CD80E09698968614996C -:10AE20001016169A0C9BF01F00053008EA060B0856 -:10AE3000E3CD80E0800091B88001AD98EBCD406813 -:10AE4000189316951496F01F00060C9A0A9BE6CCF0 -:10AE5000FFFCF01F0004E3CD806800008001A37CAC -:10AE60008001ADF8EBCD4068189316951496F01F4D -:10AE700000060C9A0A9BE6CCFFFCF01F0004E3CD11 -:10AE8000806800008001A37C8001ADF8EBCD4068B4 -:10AE9000189316951496F01F000F0C9A0A9BE6CC97 -:10AEA000FFFCF01F000C0C9A0A9BE6CCFFF8F01F89 -:10AEB00000090C9A0A9BE6CCFFF4F01F00060C99DF -:10AEC0000A9AE6CCFFF0320BF01F0003E3CD806856 -:10AED0008001A37C8001AD98EBCD40681893169556 -:10AEE0001496F01F000C0C9A0A9BE6CCFFFCF01F96 -:10AEF00000090C9A0A9BE6CCFFF8F01F00060C999B -:10AF00000A9AE6CCFFF4320BF01F0003E3CD806811 -:10AF10008001A37C8001AD98EBCD40681893169515 -:10AF20001496F01F000C0C9A0A9BE6CCFFFCF01F55 -:10AF300000090C9A0A9BE6CCFFF8F01F00070C9959 -:10AF40000A9AE6CCFFF7303BF01F0004E3CD80689F -:10AF50008001A37C8001A29C8001AD98EBCD40686C -:10AF6000189316951496F01F00180C9A0A9BE6CCBD -:10AF7000FFFCF01F00150C9A0A9BE6CCFFF8F01FAF -:10AF800000120C9A0A9BE6CCFFF4F01F000F0C9AFB -:10AF90000A9BE6CCFFF0F01F000C0C9A0A9BE6CC53 -:10AFA000FFECF01F000A0C9A0A9BE6CCFFEAF01FA8 -:10AFB00000080C990A9AE6CCFFE9303BF01F000527 -:10AFC000E3CD80688001A37C8001A2FC8001A29C6B -:10AFD0008001AD98EBCD4068189316951496F01F3C -:10AFE00000280C9A0A9BE6CCFFFCF01F00250C9A67 -:10AFF0000A9BE6CCFFF8F01F00220C9A0A9BE6CCD5 -:10B00000FFF4F01F00200C9A0A9BE6CCFFF2F01F21 -:10B01000001E0C9A0A9BE6CCFFF1F01F001B0C9A55 -:10B020000A9BE6CCFFF0F01F00180C9A0A9BE6CCB6 -:10B03000FFEFF01F00150C9A0A9BE6CCFFEEF01F05 -:10B0400000120C990A9AE6CCFFED306BF01F000F4E -:10B050000C9A0A9BE6CCFFE7F01F000B0C9A0A9BA8 -:10B06000E6CCFFE6F01F00080C990A9AE6CCFFE553 -:10B07000320BF01F0006E3CD806800008001A37C46 -:10B080008001A2FC8001A29C8001AD98EBCD4068BC -:10B09000189316951496F01F00150C9A0A9BE6CC8F -:10B0A000FFFCF01F00120C9A0A9BE6CCFFF8F01F81 -:10B0B000000F0C9A0A9BE6CCFFF4F01F000C0C9AD0 -:10B0C0000A9BE6CCFFF0F01F000A0C9A0A9BE6CC24 -:10B0D000FFEEF01F00080C990A9AE6CCFFED303B1A -:10B0E000F01F0005E3CD80688001A37C8001A2FCF5 -:10B0F0008001A29C8001AD98EBCD40681893169515 -:10B100001496F01F00120C9A0A9BE6CCFFFCF01F6D -:10B1100000100C9A0A9BE6CCFFFBF01F000D0C9967 -:10B120000A9AE6CCFFFA302BF01F000A0C9A0A9B11 -:10B13000E6CCFFF8F01F00050C9A0A9BE6CCFFF462 -:10B14000F01F0002E3CD80688001A37C8001A29CF7 -:10B150008001AD98EBCD4068189316951496F01FBA -:10B1600000120C9A0A9BE6CCFFFCF01F00100C9A10 -:10B170000A9BE6CCFFFBF01F000D0C990A9AE6CC67 -:10B18000FFFA302BF01F000A0C9A0A9BE6CCFFF85E -:10B19000F01F00050C9A0A9BE6CCFFF4F01F00029A -:10B1A000E3CD80688001A37C8001A29C8001AD98E2 -:10B1B000EBCD4068189316951496F01F000C0C9A6E -:10B1C0000A9BE6CCFFFCF01F000A0C9A0A9BE6CC17 -:10B1D000FFFBF01F00070C990A9AE6CCFFFA302B10 -:10B1E000F01F0004E3CD80688001A37C8001A29C55 -:10B1F0008001AD98EBCD4068189316951496F01F1A -:10B2000000090C9A0A9BE6CCFFFCF01F00070C9982 -:10B210000A9AE6CCFFFB303BF01F0004E3CD8068C8 -:10B220008001A37C8001A29C8001AD98EBCD406899 -:10B23000189316951496F01F00090C9A0A9BE6CCF9 -:10B24000FFFCF01F00070C990A9AE6CCFFFB303B8D -:10B25000F01F0004E3CD80688001A37C8001A29CE4 -:10B260008001AD98EBCD4068189316951496F01FA9 -:10B2700000090C9A0A9BE6CCFFFCF01F00070C9912 -:10B280000A9AE6CCFFFB303BF01F0004E3CD806858 -:10B290008001A37C8001A29C8001AD98EBCD406829 -:10B2A000189316951496F01F000C0C9A0A9BE6CC86 -:10B2B000FFFCF01F00090C9A0A9BE6CCFFF8F01F78 -:10B2C00000070C990A9AE6CCFFF7303BF01F000408 -:10B2D000E3CD80688001A37C8001A29C8001AD98B1 -:10B2E000EBCD4068189316951496F01F000C0C9A3D -:10B2F0000A9BE6CCFFFCF01F00090C9A0A9BE6CCE7 -:10B30000FFF8F01F00070C990A9AE6CCFFF7303BD4 -:10B31000F01F0004E3CD80688001A37C8001A29C23 -:10B320008001AD98EBCD4068189316951496F01FE8 -:10B33000000C0C9A0A9BE6CCFFFCF01F00090C9A4B -:10B340000A9BE6CCFFF8F01F00070C990A9AE6CC9E -:10B35000FFF7303BF01F0004E3CD80688001A37C41 -:10B360008001A29C8001AD98EBCD406818931695A2 -:10B370001496F01F000C0C9A0A9BE6CCFFFCF01F01 -:10B3800000090C9A0A9BE6CCFFF8F01F00070C9905 -:10B390000A9AE6CCFFF7303BF01F0004E3CD80684B -:10B3A0008001A37C8001A29C8001AD98EBCD406818 -:10B3B000189316951496F01F00090C9A0A9BE6CC78 -:10B3C000FFFCF01F00070C990A9AE6CCFFFB303B0C -:10B3D000F01F0004E3CD80688001A37C8001A29C63 -:10B3E0008001AD98EBCD4068169514961893F01F28 -:10B3F00000220C990A9AE6CCFFFC308BF01F001F4C -:10B400000C9A0A9BE6CCFFF4F01F001B0C9A0A9BD7 -:10B41000E6CCFFF0F01F00180C9A0A9BE6CCFFEC7C -:10B42000F01F00150C9A0A9BE6CCFFE8F01F0012F3 -:10B430000C9A0A9BE6CCFFE4F01F000F0C9A0A9BC3 -:10B44000E6CCFFE0F01F000E0C9A0A9BE6CCFFDE74 -:10B45000F01F000B0C9A0A9BE6CCFFDCF01F0008E3 -:10B460000C990A9AE6CCFFDA302BF01F0004E3CDEA -:10B47000806800008001A37C8001AD988001A2FC5F -:10B48000EBCD4068189316951496F01F00090C9A9E -:10B490000A9BE6CCFFFCF01F00070C990A9AE6CC49 -:10B4A000FFFB303BF01F0004E3CD80688001A37CEC -:10B4B0008001A29C8001AD98EBCD40681695149652 -:10B4C0001893F01F00060C990A9AE6CCFFFC308B0B -:10B4D000F01F0003E3CD80688001A37C8001AD985C -:10B4E000EBCD4068189316951496F01F00090C9A3E -:10B4F0000A9BE6CCFFFCF01F00070C990A9AE6CCE9 -:10B50000FFFB303BF01F0004E3CD80688001A37C8B -:10B510008001A29C8001AD98EBCD406818931695F0 -:10B520001496F01F00100C9A0A9BE6CCFFFCF01F4B -:10B53000000E0C990A9AE6CCFFFB306BF01F000B53 -:10B540000A9AE6CCFFF50C99306BF01F00080C9AB4 -:10B550000A9BE6CCFFEFF01F0004E3CD80680000FB -:10B560008001A37C8001A29C8001AD98EBCD406856 -:10B57000169514961893F01F000C0C990A9AE6CCB5 -:10B58000FFFC306BF01F00090C9A0A9BE6CCFFF61B -:10B59000F01F00070C9A0A9BE6CCFFF5F01F000491 -:10B5A000E3CD80688001A37C8001AD988001A29CDE -:10B5B000EBCD4068169514961893F01F000D0C996A -:10B5C0000A9AE6CCFFFC306BF01F000A0A9AE6CC20 -:10B5D000FFF60C99302BF01F00070C9A0A9BE6CC63 -:10B5E000FFF4F01F0005E3CD806800008001A37C1C -:10B5F0008001AD988001AB3CEBCD40681695149668 -:10B600001893F01F000D0C990A9AE6CCFFFC306BE2 -:10B61000F01F000A0A9AE6CCFFF60C99302BF01FB7 -:10B6200000070C9A0A9BE6CCFFF4F01F0005E3CD5F -:10B63000806800008001A37C8001AD988001AB3C54 -:10B64000EBCD4068169514961893F01F00100C99D6 -:10B650000A9AE6CCFFFC306BF01F000D0C9A0A9B97 -:10B66000E6CCFFF6F01F000B0C9A0A9BE6CCFFF429 -:10B67000F01F00080C990A9AE6CCFFF2302BF01F5D -:10B680000004E3CD806800008001A37C8001AD98B8 -:10B690008001A2FCEBCD4068169514961893F01F1C -:10B6A000000A0C990A9AE6CCFFFC306BF01F0007E9 -:10B6B0000C990A9AE6CCFFF6302BF01F0004E3CD7C -:10B6C000806800008001A37C8001AD98EBCD4068CC -:10B6D000169514961893F01F000A0C990A9AE6CC56 -:10B6E000FFFC306BF01F00070C990A9AE6CCFFF6BE -:10B6F000302BF01F0004E3CD806800008001A37CA4 -:10B700008001AD98EBCD4068189316951496F01F04 -:10B7100000220C9A0A9BE6CCFFFCF01F00200C9A3A -:10B720000A9BE6CCFFFAF01F001D0C9A0A9BE6CCA0 -:10B73000FFF8F01F001A0C990A9AE6CCFFF6306B5E -:10B74000F01F00170C9A0A9BE6CCFFF0F01F0015C3 -:10B750000C9A0A9BE6CCFFEFF01F00120C990A9A94 -:10B76000E6CCFFEE302BF01F000E0C9A0A9BE6CCC5 -:10B77000FFECF01F00090C9A0A9BE6CCFFE8F01FD3 -:10B7800000060C9A0A9BE6CCFFE4F01F0007E3CD0D -:10B79000806800008001A37C8001A2FC8001AD983C -:10B7A0008001A29C8001AB3CEBCD406816951496BD -:10B7B0001893F01F000C0C990A9AE6CCFFFC306B32 -:10B7C000F01F00090C9A0A9BE6CCFFF6F01F000759 -:10B7D0000C9A0A9BE6CCFFF5F01F0004E3CD8068CD -:10B7E0008001A37C8001AD988001A29CEBCD4068D4 -:10B7F000169514961893F01F000C0C990A9AE6CC33 -:10B80000FFFC306BF01F00090C9A0A9BE6CCFFF698 -:10B81000F01F00070C9A0A9BE6CCFFF5F01F00040E -:10B82000E3CD80688001A37C8001AD988001A29C5B -:10B83000EBCD4068189316951496F01F00120C9AE1 -:10B840000A9BE6CCFFFCF01F00100C9A0A9BE6CC8A -:10B85000FFFAF01F000D0C9A0A9BE6CCFFF8F01FD0 -:10B86000000A0A9AE6CCFFF60C99306BF01F00072D -:10B870000C9A0A9BE6CCFFF0F01F0005E3CD806830 -:10B880008001A37C8001A2FC8001AD988001AB3CCB -:10B89000EBCD4068189316951496F01F00100C9A83 -:10B8A0000A9BE6CCFFFCF01F000E0C9A0A9BE6CC2C -:10B8B000FFFAF01F000B0C990A9AE6CCFFF8306BE8 -:10B8C000F01F00080C990A9AE6CCFFF2302BF01F0B -:10B8D0000005E3CD806800008001A37C8001A2FC0C -:10B8E0008001AD98EBCD4068189316951496F01F23 -:10B8F00000090C9A0A9BE6CCFFFFF01F00060C998A -:10B900000A9AE6CCFFFE302BF01F0003E3CD8068DF -:10B910008001A29C8001AD98EBCD406816951496ED -:10B920001893F01F00130C990A9AE6CCFFFF306BB6 -:10B93000F01F00100C9A0A9BE6CCFFF9F01F000CD8 -:10B940000C9A0A9BE6CCFFF8F01F00090A9AE6CC95 -:10B95000FFF70C99306BF01F00070C9A0A9BE6CC9E -:10B96000FFF1F01F0003E3CD806800008001A29C7E -:10B970008001AD98EBCD4068189316951496F01F92 -:10B9800000060C9A0A9BE6CCFFFCF01F0004E3CDF6 -:10B99000806800008001A37C8001B918EBCD40686D -:10B9A0001696149518931499169A306BF01F000888 -:10B9B0000A9A0C9BE6CCFFFAF01F00060A9A0C9B31 -:10B9C000E6CCFFF9F01F0003E3CD80688001AD985D -:10B9D0008001A29CEBCD4068189316951496F01F39 -:10B9E00000060C9A0A9BE6CCFFFCF01F0004E3CD96 -:10B9F000806800008001A37C8001B99CEBCD406889 -:10BA0000189316951496F01F00090C9A0A9BE6CC21 -:10BA1000FFFFF01F00060C990A9AE6CCFFFE306B80 -:10BA2000F01F0003E3CD80688001A29C8001AD98E7 -:10BA3000EBCD4068189316951496F01F00060C9AEB -:10BA40000A9BE6CCFFFCF01F0004E3CD80680000F9 -:10BA50008001A37C8001B9FCD4011499169A308B23 -:10BA6000F01F0002D80200008001AD98EBCD4068C5 -:10BA7000169514961893F01F00090A9AE6CCFFFC5D -:10BA80000C99306BF01F00060C9A0A9BE6CCFFF66F -:10BA9000F01F0004E3CD80688001A37C8001AD9895 -:10BAA0008001A2FCEBCD4068189316951496F01F08 -:10BAB00000090C9A0A9BE6CCFFFCF01F00070C99CA -:10BAC0000A9AE6CCFFFB303BF01F0004E3CD806810 -:10BAD0008001A37C8001A29C8001AD98D4011499BF -:10BAE000169A320BF01F0002D80200008001AD98B8 -:10BAF000EBCD4068189316951496F01F00180C9A19 -:10BB00000A9BE6CCFFE0F01F00160C9A0A9BE6CCDD -:10BB1000FFDEF01F00140C9A0A9BE6CCFFDDF01F3D -:10BB200000110C990A9AE6CCFFDC306BF01F000E76 -:10BB30000C9A0A9BE6CCFFD6F01F000C0C9A0A9BCD -:10BB4000E6CCFFCEF01F00070C9A0A9BE6CCFFCD97 -:10BB5000F01F0004E3CD80688001BADC8001A2FC04 -:10BB60008001A29C8001AD988001BA58EBCD40685D -:10BB7000189316951496F01F00060C9A0A9BE6CCB3 -:10BB8000FFFCF01F0004E3CD806800008001A37C6F -:10BB90008001BAF0D4011499169A303BF01F0002CC -:10BBA000D80200008001AD98EBCD40E018971695C3 -:10BBB0001496F01F000D6E1C580CC0800C990A9A48 -:10BBC0006E0BF01F000AE3CD80E05816C0918A99F1 -:10BBD0006A4812088F186E098A181208AA18E3CD4D -:10BBE00080E000008001A37C8001AD98EBCD40682F -:10BBF000189316951496F01F00060C9A0A9BE6CC33 -:10BC0000FFFCF01F0004E3CD806800008001A37CEE -:10BC10008001BBA8EBCD4068189316951496F01FD1 -:10BC200000100C9A0A9BE6CCFFFCF01F000E0C994A -:10BC30000A9AE6CCFFFB303BF01F000B0A9AE6CCD9 -:10BC4000FFF80C99308BF01F00080C9A0A9BE6CC89 -:10BC5000FFF0F01F0006E3CD806800008001A37CA8 -:10BC60008001A29C8001AD988001BBA8EBCD40680B -:10BC7000169514961893F01F00090A9AE6CCFFFC5B -:10BC80000C99308BF01F00060C9A0A9BE6CCFFF44F -:10BC9000F01F0004E3CD80688001A37C8001AD9893 -:10BCA0008001BBA8EBCD40801697189B580AC0F1C5 -:10BCB0008E1C8E89FDDCC010FCC8FFF91238C285CD -:10BCC000F8C8FFF88F3AAE18E3CD8080581AC070DC -:10BCD0008E1CF8C8FFF8AE18E3CD80808E9A8E894E -:10BCE000F4C8FFF91238C2C46E48140811F9B889B3 -:10BCF00011EAB89A11D9B8A911CAB8BA11B9B8C914 -:10BD000011AAB8DA1199B8E9118AB8FACE2B17F846 -:10BD10006E4A1C0AB48817E9B49917D8B4A817C991 -:10BD2000B4B917B8B4C817A9B4D91798B4E8178923 -:10BD3000B4F98E1CF8C8FFF8AE18E3CD8080300B44 -:10BD4000308A8F3BF01F00028E1CCC4B800091D0BC -:10BD5000EBCD4068189316951496F01F000C0C9AC2 -:10BD60000A9BE6CCFFF8F01F000A0C9A0A9BE6CC6F -:10BD7000FFF6F01F00070C9A0A9BE6CCFFF4F01FB9 -:10BD80000005E3CD806800008001BCA48001A2FC16 -:10BD90008001AB3CEBCD40F8206D169714961499BA -:10BDA0001895169A306BF01F002D0C9A0E9BEACC5A -:10BDB000FFFAF01F002B0C9A0E9BEACCFFF9F01F44 -:10BDC00000280C9A0E9BEACCFFF8F01F00260C9A74 -:10BDD0000E9BEACCFFF0F01F00240C9A0E9BEACCDD -:10BDE000FFECF01F0021318A0E9B1A9CF01F001FF0 -:10BDF000EAC3FFE81A940C9A1A9B069CF01F001ADB -:10BE00005816C1801A9B0C9A6A7CF01F00199A98E8 -:10BE10008E992048F00901098B690C9A069C0E9BAB -:10BE2000F01F00116A698E181208AE182FADE3CD0D -:10BE300080F86A698E182FC81208E06B00E8BA080B -:10BE40006E5CF01F000C8B7CCF20505C1A9B0C9A10 -:10BE5000F01F0007CE3B00008001AD988001A29C3E -:10BE60008001BCA48001A37C800091DC8001BD50D6 -:10BE70008001D3ECEBCD4068189316951496F01F13 -:10BE800000120C9A0A9BE6CCFFFCF01F00100C9AE3 -:10BE90000A9BE6CCFFFAF01F000D0C9A0A9BE6CC39 -:10BEA000FFF8F01F00090C9A0A9BE6CCFFF4F01F84 -:10BEB00000060C9A0A9BE6CCFFF0F01F0005E3CDCC -:10BEC000806800008001A37C8001A2FC8001BD94F9 -:10BED000EBCD40E0189716951496F01F000B0C9AC6 -:10BEE0000A9BEECCFFFCF01F00090FD93008F009C7 -:10BEF0001800C0700C9A0A9BEECCFFF8F01F0004EB -:10BF0000E3CD80E08001A37C8001B8E48001BD9492 -:10BF1000EBCD4060202D301A18951696FACCFFFE16 -:10BF2000F01F00089A181BF92FE8F0090109AC0965 -:10BF30001BCA8B5A1BD88B482FEDE3CD80600000C5 -:10BF40008001A444EBCD40E07808975818971696E6 -:10BF50007859E049003FE0880004E3CF80E0FEF834 -:10BF6000029AF009032F78455815E0800127E04533 -:10BF70000080CF41780C301AF01F00A1E3CF90E091 -:10BF800078485808C391780C301AF01F009EE3CF10 -:10BF900090E07848F0C90005E049008FFE9BFFDF84 -:10BFA000FEF80264F009032F7848E0480081E08041 -:10BFB000010CE08A002BE0480083E0800118E08556 -:10BFC0000110E0480085CCA1780C301AF01F008FDA -:10BFD000E3CF90E0780C301AF01F008DE3CF90E0B3 -:10BFE0007848F0C90001E049009BFE9BFFB8FEF8CD -:10BFF0000222F009032FE0480081CB01780C301AAF -:10C00000F01F0085E3CF90E05848E08000E4E0486E -:10C010000080CA41781A300B780CF01F00806E0C3B -:10C020000C9B301AF01F007EE3CF90E0780C301AA2 -:10C03000F01F007CE3CF90E0780C301AF01F007AFC -:10C04000E3CF90E0780C301AF01F0078E3CF90E057 -:10C05000780C301AF01F0076E3CF90E0780C301A9D -:10C06000F01F0074E3CF90E0780C301AF01F0072DC -:10C07000E3CF90E0780C301AF01F0070E3CF90E02F -:10C08000780C301AF01F006EE3CF90E0780C301A75 -:10C09000F01F006CE3CF90E0780C301AF01F006ABC -:10C0A000E3CF90E0780C301AF01F0068E3CF90E007 -:10C0B000780C301AF01F0066E3CF90E0780C301A4D -:10C0C000F01F0064E3CF90E0780C301AF01F00629C -:10C0D000E3CF90E0780C301AF01F0060E3CF90E0DF -:10C0E000780C301AF01F005EE3CF90E0780C301A25 -:10C0F000F01F005CE3CF90E0780C301AF01F005A7C -:10C10000E3CF90E0780C301AF01F0058E3CF90E0B6 -:10C11000780C301AF01F0056E3CF90E0780C301AFC -:10C12000F01F0054E3CF90E0780C301AF01F00525B -:10C13000E3CF90E0780C301AF01F0050E3CF90E08E -:10C14000780C301AF01F004EE3CF90E0780C301AD4 -:10C15000F01F004CE3CF90E0780C301AF01F004A3B -:10C16000E3CF90E0780C301AF01F0048E3CF90E066 -:10C17000780C301AF01F0046E3CF90E0780C301AAC -:10C18000F01F0044E3CF90E0780C301AF01F00421B -:10C19000E3CF90E0780C301AF01F0040E3CF90E03E -:10C1A000780C301AF01F003EE3CF90E0780C301A84 -:10C1B000F01F003CE3CF90E0780C0A9AF01F003AA1 -:10C1C0000A9CE3CD80E0780C301AF01F0038E3CFF2 -:10C1D00090E0780C301AF01F0036E3CF90E0780C36 -:10C1E000301AF01F0034E3CF90E0780C301AF01FC3 -:10C1F0000032E3CF90E000008003B8288001AAEC71 -:10C200008001A4988003B9288001B3248001A37C15 -:10C210008003BB688001A4CC800091D08001BC1455 -:10C220008001BAA48001A4748001BA6C8001AC546E -:10C230008001AA808001AE8C8001AAC88001AAA4D6 -:10C240008001AA208001AF5C8001A9CC8001A9787F -:10C250008001A9488001A8F48001A8D08001A884A9 -:10C260008001A8608001B1548001B1B08001B1F4B7 -:10C270008001A8188001AA508001B0F88001A83C74 -:10C280008001A7F48001B4E08001B56C8001B5B0F5 -:10C290008001B5F88001B6408001BED08001B5189C -:10C2A0008001B9748001AE3C8001B3AC8001A6145A -:10C2B0008001B3688001B2E0EBCD40C012971499C1 -:10C2C0008E96109A582CC280E08A0008584CC360A1 -:10C2D000587CC190E3CF80C0580CC0A0581CCFB18F -:10C2E00058EBFE9BFFF9FEF80312F00B032F580BDF -:10C2F000CF21129C0E9BF01F00C28E98F006010CFD -:10C30000E3CD80C0202BE04B007FFE9BFFE5FEF8D5 -:10C3100002F2F00B032F582BE080015DE089001A38 -:10C32000580BC260581BCD71129C0E9BF01F00B6BB -:10C330008E98F006010CE3CD80C0580BCCC1129C46 -:10C340000E9BF01F00B28E98F006010CE3CD80C06A -:10C35000584BC170E0850148585BCBD1129C0E9BB5 -:10C36000F01F00AB8E98F006010CE3CD80C0129C4C -:10C370000E9BF01F00A88E98F006010CE3CD80C044 -:10C38000129C0E9BF01F00A48E98F006010CE3CDCA -:10C3900080C0129C0E9BF01F00A18E98F006010C2D -:10C3A000E3CD80C0129C0E9BF01F009D8E98F0067E -:10C3B000010CE3CD80C0129C0E9BF01F009A8E985A -:10C3C000F006010CE3CD80C0129C0E9BF01F00967E -:10C3D0008E98F006010CE3CD80C0129C0E9BF01FDE -:10C3E00000938E98F006010CE3CD80C0129C0E9B4A -:10C3F000F01F008F8E98F006010CE3CD80C0129CD8 -:10C400000E9BF01F008C8E98F006010CE3CD80C0CF -:10C41000129C0E9BF01F00888E98F006010CE3CD55 -:10C4200080C0129C0E9BF01F00858E98F006010CB8 -:10C43000E3CD80C0129C0E9BF01F00818E98F00609 -:10C44000010CE3CD80C0129C0E9BF01F007E8E98E5 -:10C45000F006010CE3CD80C0129C0E9BF01F007A09 -:10C460008E98F006010CE3CD80C0129C0E9BF01F4D -:10C4700000778E98F006010CE3CD80C0129C0E9BD5 -:10C48000F01F00738E98F006010CE3CD80C0129C63 -:10C490000E9BF01F00708E98F006010CE3CD80C05B -:10C4A000129C0E9BF01F006C8E98F006010CE3CDE1 -:10C4B00080C0129C0E9BF01F00698E98F006010C44 -:10C4C000E3CD80C0129C0E9BF01F00658E98F00695 -:10C4D000010CE3CD80C0129C0E9BF01F00628E9871 -:10C4E000F006010CE3CD80C0129C0E9BF01F005E95 -:10C4F0008E98F006010CE3CD80C0129C0E9BF01FBD -:10C50000005B8E98F006010CE3CD80C0129C0E9B60 -:10C51000F01F00578E98F006010CE3CD80C0129CEE -:10C520000E9BF01F00548E98F006010CE3CD80C0E6 -:10C53000129C0E9BF01F00508E98F006010CE3CD6C -:10C5400080C0129C0E9BF01F004D8E98F006010CCF -:10C55000E3CD80C0129C0E9BF01F00498E98F00620 -:10C56000010CE3CD80C0129C0E9BF01F00468E98FC -:10C57000F006010CE3CD80C0129C0E9BF01F004220 -:10C580008E98F006010CE3CD80C0129C0E9BF01F2C -:10C59000003F8E98F006010CE3CD80C0129C0E9BEC -:10C5A000F01F003B8E98F006010CE3CD80C0129C7A -:10C5B0000E9BF01F00388E98F006010CE3CD80C072 -:10C5C000129C0E9BF01F00348E98F006010CE3CDF8 -:10C5D00080C0129C0E9BF01F00318E98F006010C5B -:10C5E000E3CD80C0129C0E9BF01F002D8E98F006AC -:10C5F000010CE3CD80C000008003BDD88001A49869 -:10C600008003BE148001BC6C8001AE648001A5C0B3 -:10C610008001B4B88001A5F08001B8308001B29CDF -:10C620008001B6948001B6CC8001B9D48001BA30C3 -:10C630008001BB6C8001B7048001B7EC8001BA6C4B -:10C640008001B8908001BE748001A5188001A55CAE -:10C650008001B7A88001A7308001A7888001AE8C37 -:10C660008001AED88001A7D08001AB148001AF1843 -:10C670008001A9FC8001A9A88001AFD48001A92470 -:10C680008001B08C8001A8A88001B22C8001A7ACE9 -:10C690008001B2648001BBEC8001B4808001B3E40E -:10C6A000EBCD40FE208D306A18977853784578019D -:10C6B000FAC2FFE6300B049CF01F00384B88F139BA -:10C6C000010BE06AFFFFFB69001E300B1A9CF01F94 -:10C6D0000035302A1A9B049CF01F0033029A302840 -:10C6E0001A990A9B069CF01F00319A194B08F9D938 -:10C6F000C0101188103CF9B60200F1DCE318E06AC2 -:10C7000000FFF1DAE326EDD9E309FBF93C01F9D6A4 -:10C71000E30C1A944A78118A580AC060F4C80001E0 -:10C72000F9E80008C2918F3CF01F00238F2CC31042 -:10C730006E3A300BF01F0019FB66001F6E2BFB6377 -:10C74000001CFB65001D8E78F5D8C01020281A9CAF -:10C75000FB58001AF01F0013049C1A9B300AF01FAC -:10C7600000121A99029A0A9B069C3008F01F000FCB -:10C770002F8DE3CF90FE9A18F4C90001F9E9000962 -:10C78000F40901095C591208120CBA181206CCCB34 -:10C790002F8DE3CD80FE0000800091D0000087F453 -:10C7A0008001C7B88001A4448001C2B8000079E5C7 -:10C7B000000079E48000920030083019B838B818C9 -:10C7C000B828B80A3008994B993999285EFCD703E4 -:10C7D000EBCD4068189316951496F01F00090C9A3B -:10C7E0000A9BE6CCFFFFF01F00060C9A0A9BE6CCE2 -:10C7F000FFFEF01F0004E3CD806800008001A29CD2 -:10C800008001A2FCEBCD40681696149518931499FC -:10C81000169A303BF01F00050A9A0C9BE6CCFFFDF0 -:10C82000F01F0003E3CD80688001AD988001A29CD9 -:10C83000EBCD40681696149518931499169A303BD0 -:10C84000F01F00050A9A0C9BE6CCFFFDF01F0003C9 -:10C85000E3CD80688001AD988001A29CD431FACEEE -:10C86000FFDC189616971494129210907C157C0198 -:10C87000581AC2D0C153582AC1300D893FF8F00967 -:10C880001800C2100D98E2081900E08B0005E008BE -:10C890001900C6E23FF83009AC88AC99D83A8E1836 -:10C8A000AE383FF80D89F0091800C0D00C9C089AEA -:10C8B0000E9BF01F0034089A0E9BECCCFFFFF01F7C -:10C8C0000031CDCB3008300CAC98D83296285808BF -:10C8D000C4C0B618AE3830088B08AC983FFAAC8AA2 -:10C8E0008E198E08F2081900FE98FFEE1494ECC31E -:10C8F000FFFFC1D8E8081800EDF41E000D9A8E184D -:10C900008E89F408000B5C781019123AE089002631 -:10C91000AE1B6A082FF88B080D89E8091800CB3187 -:10C920008E198E08F2081900FE98FFCEAE39301A23 -:10C930000E9B0C9CF01F0013301A0E9B069CF01FE0 -:10C9400000110D88E4081800CD618E888E990D9A2B -:10C950001218103AE08A000E3FF83009AC88AC9902 -:10C960008E182028AE08C8AB9618B628CB4BDA3AFA -:10C970006A0A6E293018F00A094810498F29C7EB56 -:10C980008001A29CEBCD4040201D1A9E9AF65C7857 -:10C990001ADE1AD6F01F00032FED2FFDE3CD8040E5 -:10C9A0008001C85CEBCD40E0302818951AD8169667 -:10C9B00014973069F01F00072FFD580CC0700E9AB5 -:10C9C0000C9BEACCFFFEF01F0004E3CD80E00000EA -:10C9D0008001C9848001A2FCEBCD40E0301818959D -:10C9E0001AD81696149732A9F01F00072FFD580C7D -:10C9F000C0700E9A0C9BEACCFFFEF01F0004E3CD42 -:10CA000080E000008001C9848001A29CEBCD40E061 -:10CA1000305818951AD8169614973029F01F001020 -:10CA20002FFD580CC190EACCFFFE0E9A0C9BF01F14 -:10CA3000000D0E9A0C9BEACCFFFCF01F000B0E9A27 -:10CA40000C9BEACCFFFBF01F00080E9A0C9BEACC73 -:10CA5000FFFAF01F0005E3CD80E000008001C984EB -:10CA60008001A2FC8001A29CEBCD40E0301818951B -:10CA70001AD8169614973039F01F00072FFD580C5E -:10CA8000C0700E9A0C9BEACCFFFEF01F0004E3CDB1 -:10CA900080E000008001C9848001A29CEBCD40E0D1 -:10CAA000306818951AD8169614973049F01F001060 -:10CAB0002FFD580CC190EACCFFFE0E9A0C9BF01F84 -:10CAC000000D0E9A0C9BEACCFFFDF01F000A0E9A97 -:10CAD0000C9BEACCFFFCF01F00080E9A0C9BEACCE2 -:10CAE000FFFAF01F0005E3CD80E000008001C9845B -:10CAF0008001A29C8001A2FCEBCD40E0301818958B -:10CB00001AD81696149730A9F01F00072FFD580C5D -:10CB1000C0700E9A0C9BEACCFFFEF01F0004E3CD20 -:10CB200080E000008001C9848001A29CD43120BD36 -:10CB30005019500818961697581AC390C272E06898 -:10CB400000FDE06900DD1AD8300A3018F01F005CE3 -:10CB50002FFD580CC1E0300A0E9BECCCFFFEF01FFD -:10CB60000059300A0E9BECCCFFFDF01F0056300A36 -:10CB70000E9BECCCFFFCF01F0053ECCCFFFB0E9B9C -:10CB8000300AF01F0050301CC048582AC040301CEA -:10CB90002F5DD83219893FF8F0091800E080008B2A -:10CBA0009618301C2FA8B6182F5DD832761850581A -:10CBB000B1485038760A504AF6E80008F8C2FFFE3D -:10CBC000FAE90018F8C3FFFDF6EA0010F8C9FFFB08 -:10CBD000FAEB0020F8C4FFFC50293FF5FAC0FFD85B -:10CBE000E06100FDC0680D998E382FE81208AE286C -:10CBF0001AD030181AD1E06900DD109A0E9B0C9CF7 -:10CC0000F01F00312FED580CC4105805FBF5500AE9 -:10CC1000FBF8400AF9B90401F1D9E408EBD8E405BE -:10CC2000301A0E9B049CF01F0027301A0E9B069CA6 -:10CC3000F01F0024301A0E9B089CF01F00220DA844 -:10CC40003009F2081800CD010DB83509F2081800B6 -:10CC5000CCB10DC83F29F2081800CC61301A0E9BE8 -:10CC6000402CF01F00180DD84019F2081800CBC155 -:10CC70004038301CAE28F80509496E2812488F2824 -:10CC800040095809C8509305C84B4038FB58001458 -:10CC9000FAE80020EEE90010FAEA0010EEEB0000DE -:10CCA000FAE80018EEE90008AC9C3FF8AC882F5D6C -:10CCB000D8323008B898300CC6CB00008001C98447 -:10CCC0008001A29C8001C85CD431207D1895169704 -:10CCD00014961293581AC110C0B2300830290C9A19 -:10CCE0000E9B0A9CF01F0032C5712F9DD832582A26 -:10CCF000CF50301C2F9DD83276185018760AF0008D -:10CD00001410500A1A91F6E80008F8C4FFFAFAE97C -:10CD100000083FF6F6EA0010FAC2FFE8FAEB00104E -:10CD2000C1A85806FBF65006FBF84006F9B9040105 -:10CD3000F1D9E408EDD8E406301A0E9B089CF01FE8 -:10CD4000001D0BE8E6081800C1D00B998E382FE8BB -:10CD50001208AE2804983029301A0E9B0A9CF01F46 -:10CD60000014CE01BA20E2E80010EEE90010E2E87B -:10CD70000000EEE90000E2EA0008EEEB00082F9D5B -:10CD8000D83230186E29F006094AAE201449109C9A -:10CD90008F292F9DD8320B982FF8EACCFFFA0C9AE6 -:10CDA0000E9BAA98F01F0003301CCA5B8001CB2C9D -:10CDB0008001A29CEBCD40EC206D301918971693A2 -:10CDC0001495F01F002DC0412FADE3CD80ECEECCCB -:10CDD000FFF90A9A069BF01F00290A9A069BEECCDF -:10CDE000FFF8F01F00260A9A069BEECCFFF7F01F13 -:10CDF00000230A9A069BEECCFFF6F01F00210A9A48 -:10CE0000069BEECCFFF2F01F001E0A9A069BEECCAA -:10CE1000FFEEF01F001B0A9A069BEECCFFEAF01F04 -:10CE2000001858055F0858255F091248CCE06608CD -:10CE30005008661886160A9A5018EBD8B010BA1522 -:10CE4000E6E80008FAE900082026E6E20010E068BB -:10CE500000FD0A16AE961A9BFAE300100E9C1AD833 -:10CE6000E06900DD3018F01F00072FFD2FADE3CD86 -:10CE700080EC00008001CCC88001A29C8001C7D05A -:10CE80008001C984EBCD40EC206D18971693149562 -:10CE9000582AC18119893FF8F0091800F9F91801D9 -:10CEA000F7F81201F9BA0102F1DAE108F1D9E10863 -:10CEB000F7F81C01F9B80000F9F80E012FADE3CD29 -:10CEC00080EC3009F01F0019CFA0EECCFFF90A9AD0 -:10CED000069BF01F00170A9A069BEECCFFF8F01F86 -:10CEE00000145805CEC166085008661886160A9ABE -:10CEF0005018EBD8B010BA15E6E80008FAE90008B7 -:10CF00002026E6E20010E06800FD0A16AE961A9BA5 -:10CF1000FAE300100E9C1AD8E06900DD3018F01F0B -:10CF200000052FFDCCCB00008001CCC88001A29C65 -:10CF30008001C984D42112951497580A5F095805B5 -:10CF40005F08169A1248C2510B986E29F0C4FFFE72 -:10CF5000F2C800015BD8E08B0015129C089B5D1A9B -:10CF600018965806C0C06E086E192FF80809089A5E -:10CF70000A9B8F088F190C9CF01F00080C9CD8226C -:10CF8000089B5D1A300818968F2C8F188F08CEAB2F -:10CF900030060C9CD8220000800091DCEBCD40FCD8 -:10CFA00012951494580A5F0958055F0818921248A0 -:10CFB0001693C191300995296A085808E08A00162D -:10CFC00012966A270E99089A069B049CF01F000B84 -:10CFD0002FF6EEF7FFF86A085807F7B701F80C3894 -:10CFE000FE99FFF2E3CD80FCEAE80000F4E90000DE -:10CFF0006A2A892AE3CD80FC8001CF34EBCD40FC46 -:10D0000018931695581AC2C0C053582AC5E0E3CDEC -:10D0100080FC782778085808FE9AFFFB7819580991 -:10D02000FE9AFFF79698300612087649F208000437 -:10D030000F9A0E9B2FEA1414089CF01F00332FF652 -:10D04000EEF7FFF866085807F7B701F80C38FE99B5 -:10D05000FFF166198A181208AA18E3CD80FC9628F9 -:10D060005808C3C0B618F9D8B010AA3C300830121E -:10D0700087088718872810948A1C8A0E189AFC0C37 -:10D080001900C212F7DAC0106A46EC0B00081199B9 -:10D09000F2C7FFFE5827C250F1DEC0101618103735 -:10D0A000E0890020E40409496A2B2FF4F3EB00081F -:10D0B000C1C0F4070008AA18F9D8B010189AFC0CDF -:10D0C0001900CE13E3CD80FC781C580CFE9AFFA10A -:10D0D00096181808B618E3CD80FC961CB62CCC6BBD -:10D0E000AA0CFDDCB010CCBBF3EB1008069A8A99B1 -:10D0F0008B28EC090009485B6A5CF01F00058A1A5E -:10D100008A0ECD8B800091DC8001D3EC8001CF347E -:10D11000EBCD40F83FF510941697149340661388B2 -:10D12000EA081800C05130070E9CE3CD80F858047F -:10D130005F1858065F991268CF700C9B5D1718979F -:10D14000C0600C9A089BF01F0004CEFBA685A69C2D -:10D15000CECB0000800091DCEBCD40C0129EF2E807 -:10D160000000F4E9000014977C2A8F2A18961D8984 -:10D17000169C3FF8F0091800C1401D993058F0097D -:10D180001800E088000F2039E06A5556EA1A555514 -:10D19000F20B141FF20A04481619F2090019C028EC -:10D1A00030091AD9189B1C990C9C7C280E9AF01FE8 -:10D1B00000042FFD8F2CE3CD80C000008001D11032 -:10D1C000EBCD406CF2E20000F4E3000072289528F9 -:10D1D0001495722813961AD6F01F00032FFD8B2C7E -:10D1E000E3CD806C8001D110EBCD406FF2E2000006 -:10D1F000F4E30000F2E00008F4E10008F2E20010BD -:10D20000F4E300101495725813961AD6F01F000319 -:10D210002FFD8B5CE3CD806F8001D110EBCD406F93 -:10D22000F2E20000F4E30000F2E00008F4E100089C -:10D23000724895481495724813961AD6F01F000349 -:10D240002FFD8B4CE3CD806F8001D110EBCD406C76 -:10D25000F2E20000F4E30000722895281495722889 -:10D2600013961AD6F01F00032FFD8B2CE3CD806C94 -:10D270008001D110D421310418971AD41696149530 -:10D2800030183329F01F00142FFD580CC0B058057A -:10D29000C0E18C986C4C0F9A100CEECBFFFEF01F87 -:10D2A000000F0F998C181208AC18D8225815CFA16E -:10D2B0000F9AE80A1800E08800073FF83009AE88A6 -:10D2C000AE99CF0B8C986C4BEECCFFFE100BF01F81 -:10D2D0000003CE8B8001C984800091DCD4213018FA -:10D2E000189716961495308410991AD4F01F0014CC -:10D2F0002FFD580CC0B05805C0E18C986C4C0F9AAB -:10D30000100CEECBFFFEF01F000F0F998C181208C7 -:10D31000AC18D8225815CFA10F9AE80A1800E08857 -:10D3200000073FF83009AE88AE99CF0B8C986C4B54 -:10D33000EECCFFFE100BF01F0003CE8B8001C984E2 -:10D34000800091DCEBCD40E0320930081AD9189505 -:10D35000169714961099F01F00132FFD580CC0F06B -:10D360005806C0F18E986E4C0B9A100CEACBFFFE5B -:10D37000F01F000D0B998E181208AE18E3CD80E057 -:10D380005816CF918E986E4B0B9A100BEACCFFFE7D -:10D39000F01F00050B998E181208AE18CF0B000075 -:10D3A0008001C984800091ACD421201D7809189691 -:10D3B000F2C800015BD8E08B0014F2C80008C0E09E -:10D3C0001A943005C0280E98500870079105680C13 -:10D3D000F01F00068D055807CF712FFDD8223008A9 -:10D3E00099082FFDD8220000800091E8EBCD40C0C5 -:10D3F00018971696F6CCFFF8F01F000DC130EEF826 -:10D40000FFF8EEC900089908F8C7FFF8930C9916C1 -:10D410000C9AE06B00FF0E9CF01F00060E9CE3CD03 -:10D4200080C018970E9CE3CD80C000008000920061 -:10D43000800091D0EBCD40FC32E818931AD81692B8 -:10D44000149430683079F01F00232FFD580CC03140 -:10D45000E3CD80FC089A049BE6CCFFFEF01F001E83 -:10D4600007993058F0091800E088001F2039E06A59 -:10D470005556EA1A5555F20B141FF20A0448F20BDE -:10D4800001055814C18030060C972FF6662C0899B8 -:10D490000E0C049A2FD7303BF01F00100C35FE996C -:10D4A000FFF6E3CD80FC5814F9B80000E7F80A0253 -:10D4B000E3CD80FCEA050017645C0E9BF01F0008BA -:10D4C000872CCC700E9A300BF01F0006CDDB0000CD -:10D4D0008001C9848001BB948001AD988001D3ECA8 -:10D4E000800091D0D421189616951497582AC161BE -:10D4F00019893FF8F0091800F9F91801F7F8120135 -:10D50000F9BA0102F1DAE108F1D9E108F7F81C01F2 -:10D51000F9B80000F9F80E01D82230083049F01FA0 -:10D52000000CC0C00D98F0C400045817C0800E99BC -:10D530000A9A089B6C2CF01F0007D822089B6A5C93 -:10D54000F01F00058D2CCF41CF9B00008001CB2C1C -:10D550008001AD988001D3ECEBCD40FC206D189498 -:10D5600016951493582AC18119893FF8F0091800BB -:10D57000F9F91801F7F81201F9BA0102F1DAE10834 -:10D58000F1D9E108F7F81C01F9B80000F9F80E012B -:10D590002FADE3CD80FC30083019F01F0040CF9054 -:10D5A0006A1E501E6A0A500AEAE80008FAE90008F2 -:10D5B000EAEA0010FAEB0010EDDEB0105813C600D6 -:10D5C000E8C7FFFA0999ECC8FFFE12080E9CE5D8DF -:10D5D000B010069A0A9BF01F00328A18E40819005E -:10D5E000CD82069A0A9BE8CCFFF8F01F002E8A181D -:10D5F000E4081900CCE2E8CCFFF4069A0A9BF01F7D -:10D600000028685C88693008F0091900C0E01896A5 -:10D6100030070C9C2FF7069A0A9BF01F00222FC69A -:10D6200088E80E38FE99FFF78A18E4081900CB1233 -:10D63000069AE8CCFFF20A9BF01F0019685888E9A7 -:10D64000887AF009002C3008F00A1900C0E018961A -:10D6500030070C9C2FF7069A0A9BF01F00132FC669 -:10D6600088F80E38FE99FFF78A18E4081900C912E5 -:10D67000069A0A9BE8CCFFF0F01F0009C8ABE8C788 -:10D68000FFFA30EA300B0E9CF01F0008099B6A5C21 -:10D69000F01F0007895CC97B8001CB2C8001A2FCB4 -:10D6A0008001C8308001C804800091D08001D3EC93 -:10D6B000EBCD40FC206D189416951493582AC18127 -:10D6C00019893FF8F0091800F9F91801F7F8120163 -:10D6D000F9BA0102F1DAE108F1D9E108F7F81C0121 -:10D6E000F9B80000F9F80E012FADE3CD80FCE06839 -:10D6F00000FF33091AD83008F01F00532FFD580CD3 -:10D70000CF406A1E501E6A0A500AEAE80008FAE989 -:10D710000008EAEA0010FAEB0010EDDEB010581332 -:10D72000E0800085E8C7FFFE0999ECC8FFFE1208FB -:10D730000E9CE5D8B010069A0A9BF01F00448A1888 -:10D74000E4081900CD22069A0A9BE8CCFFFCF01FE2 -:10D7500000408A18E4081900CC82E8CCFFF8069A49 -:10D760000A9BF01F003A684C88493008F0091900FC -:10D77000C0E0189630070C9C2FF7069A0A9BF01F02 -:10D7800000342FC688C80E38FE99FFF78A18E408BF -:10D790001900CAB2069AE8CCFFF60A9BF01F002BCC -:10D7A000684888C9885AF009002C3008F00A190026 -:10D7B000C0E0189630070C9C2FF7069A0A9BF01FC2 -:10D7C00000252FC688D80E38FE99FFF78A18E4087E -:10D7D0001900C8B2069A0A9BE8CCFFF4F01F001BA0 -:10D7E0008A18E4081900C812069AE8CCFFF20A9BCE -:10D7F000F01F001688C988D81208684A8879F4088A -:10D80000002C3008F0091900FE90FF7018963007C0 -:10D810000C9C2FF706990A9A310BF01F000F2F0668 -:10D8200088F80E38FE99FFF6C60BE8C7FFFE30EA0F -:10D83000300B0E9CF01F0009099B6A5CF01F00086A -:10D84000894CC73B8001C9848001A2FC8001C8309B -:10D850008001C8048001AD98800091D08001D3EC94 -:10D86000EBCD40E0E06800FE18971AD816951496A4 -:10D8700030483059F01F00162FFD580CC031E3CD51 -:10D8800080E0EECCFFFE0C9A0A9BF01F00120C9A6F -:10D890000A9BEECCFFFDF01F000F0C9A0A9BEECC0A -:10D8A000FFFCF01F000C5816C0A00F9B0C990A9AA1 -:10D8B0006E2C203BF01F0008E3CD80E00F9B6A5CDC -:10D8C000203BF01F00068F2CCF11CDAB8001C98407 -:10D8D0008001A29C8001AD988001D3ECEBCD40E0AB -:10D8E00018951696F6CCFFF8F01F000CC12099167B -:10D8F00030089908F8C7FFF80C9A5805EBF71A0595 -:10D90000E06B00FF0E9CF01F00060E9CE3CD80E054 -:10D9100018970E9CE3CD80E080009200800091D0AB -:10D92000EBCD40C0201DF8C60008300C6C1BF01F6A -:10D930000014C1A0500C3007C1286C1B400CF01F14 -:10D9400000111897C1406C1AECCBFFF8EF4AFFFCAE -:10D950000E9CF01F000D6C065806C0505807CEE113 -:10D960004007CF2B400C2FFDE3CD80C01A9CF01F49 -:10D9700000070E9C2FFDE3CD80C000008001D8DCA5 -:10D980008001D3EC800091DC8001D3A8D401E06851 -:10D990000081301999489959189A7408129C11CE2F -:10D9A000F20E18005F089708D802D703486830398C -:10D9B000F0FA00F830089569985BF00B19005F0CDD -:10D9C0005EFC0000000087F419C8300A4869F2F9CB -:10D9D00000F8F4081800F9BC0001F9BC0100F3FCE0 -:10D9E0001A065EFC000087F448483009F0FA00F897 -:10D9F000301C95695EFC0000000087F448B8985A16 -:10DA0000F0FB00F83178F00A1900E08B000B3018B9 -:10DA1000F00A0948E4180080E01803FEC0205EFF09 -:10DA20003008301C97685EFC000087F478185808AE -:10DA30005F0C5EFC5EFF19C830192018F208180050 -:10DA40005FBC5EFC5EFD5EFD19C93008F009180080 -:10DA50005F0C5EFC5EFD5EFFEBCD4080308B189767 -:10DA6000991B300CF01F00078F0CC0803078E069E4 -:10DA700000818F588F49E3CF9080E3CD80800000F4 -:10DA80008001D8DCEBCD40C018971696308B991BDF -:10DA9000300CF01F00108F0CC160301830298F58E7 -:10DAA0008F4948D8B826118948C8B8E948C71189AC -:10DAB000B8F96EB899086EBC580CC0752FFC8FBCB5 -:10DAC000E3CF90C0E3CD80C0F01F0006CF9B0000E5 -:10DAD0008001D8DC00007A280000025C000087F496 -:10DAE00080018450EBCD40FE1897FACCFFE01694ED -:10DAF000781330CB14928F1B129178061095300C4E -:10DB0000F01F00118F0CC1A0307830498F588F4919 -:10DB10009905B8E6B8F1F9630008B8C4B8D248B8B6 -:10DB200048B9B084B28248B76EB899086EBC580C38 -:10DB3000C0752FFC8FBCE3CF90FEE3CD80FEF01FBD -:10DB40000006CF9B8001D8DC000079E5000079E475 -:10DB5000000087F480018450EBCD40FC1897FACC8C -:10DB6000FFE4314B781414938F1B129278061095B2 -:10DB7000300CF01F00158F0CC2003018F3D4C01009 -:10DB80008F488F589913B8429935F9560010F954B7 -:10DB9000001248E7F1D6C0100A481248F9B800FF51 -:10DBA000F9B80100B8586EB999096EBC580CC07527 -:10DBB0002FFC8FBCE3CF90FCE3CD80FCF01F000472 -:10DBC000CF9B00008001D8DC000087F480018450E6 -:10DBD000D401780A3009740B15F8129C129AF01FC0 -:10DBE0000002DA0A80018460D401780A3009740BDB -:10DBF000F538000B129C129AF01F0002DA0A00009E -:10DC000080018460D401780A3009740BF538000B68 -:10DC1000129C129AF01F0002DA0A00008001846050 -:10DC2000D401780A3009740BF538000B129C129A53 -:10DC3000F01F0002DA0A000080018460D401780A33 -:10DC40003009740BF538000B129C129AF01F000279 -:10DC5000DA0A000080018460D401780A3009740B6C -:10DC6000F538000B129C129AF01F0002DA0A00002D -:10DC700080018460D401780A3009740B15F8129C75 -:10DC8000129AF01F0002DA0A80018460EBCD40F89E -:10DC900030C618979916169414930C9B300CF01FED -:10DCA00000108F0C1895C160307831690C9A8F582C -:10DCB000089B8F49F01F000B48B66CB88B086CBCF2 -:10DCC000580CC0A52FFC8DBC301C6A088708E3CD1A -:10DCD00080F8E3CD80F8F01F0005CF6B8001D8DC21 -:10DCE000800091DC000087F480018450EBCD40F887 -:10DCF000308618979916169414930C9B300CF01FCD -:10DD000000108F0C1895C160307831490C9A8F58EB -:10DD1000089B8F49F01F000B48B66CB88B086CBC91 -:10DD2000580CC0A52FFC8DBC301C6A088708E3CDB9 -:10DD300080F8E3CD80F8F01F0005CF6B8001D8DCC0 -:10DD4000800091DC000087F480018450EBCD40F826 -:10DD500033C618979916169414930C9B300CF01F29 -:10DD600000108F0C1895C160307831390C9A8F589B -:10DD7000089B8F49F01F000B48B66CB88B086CBC31 -:10DD8000580CC0A52FFC8DBC301C6A088708E3CD59 -:10DD900080F8E3CD80F8F01F0005CF6B8001D8DC60 -:10DDA000800091DC000087F480018450EBCD40F8C6 -:10DDB000318618979916169414930C9B300CF01F0B -:10DDC00000108F0C1895C160307831190C9A8F585B -:10DDD000089B8F49F01F000B48B66CB88B086CBCD1 -:10DDE000580CC0A52FFC8DBC301C6A088708E3CDF9 -:10DDF00080F8E3CD80F8F01F0005CF6B8001D8DC00 -:10DE0000800091DC000087F480018450EBCD40F865 -:10DE1000330618979916169414930C9B300CF01F28 -:10DE200000108F0C1895C160307831090C9A8F580A -:10DE3000089B8F49F01F000B48B66CB88B086CBC70 -:10DE4000580CC0A52FFC8DBC301C6A088708E3CD98 -:10DE500080F8E3CD80F8F01F0005CF6B8001D8DC9F -:10DE6000800091DC000087F480018450D421189751 -:10DE7000169530CB991B300CF01F00128F0C1896A2 -:10DE8000FAC4FFEC580CC190302830098F588F49E4 -:10DE900048D76EB899086EBC580CC1052FFC8FBCD2 -:10DEA0005805EDF81000EBF81A00089BECCCFFFCCD -:10DEB000308AF01F0006DA2AD822F01F0005CF0BA7 -:10DEC0008001D8DC000087F4800091DC8001845060 -:10DED000EBCD40E018961695310B991B300CF01FD6 -:10DEE00000108D0C1897C1503078317A0A998D58EE -:10DEF0008D4A48CBF8CAFFFCF01F000B48B56AB842 -:10DF00008F086ABC580CC0752FFC8BBCE3CF90E027 -:10DF1000E3CD80E0F01F0006CF9B00008001D8DC3D -:10DF20008001D3EC8001D158000087F48001845037 -:10DF3000EBCD408078076E285808C0B0300C189A96 -:10DF40005C586E0B3109300CF01F0009E3CF908054 -:10DF5000310CF01F00086E189908EF390016991956 -:10DF60006E3899286E4999396E28CEAB800184604D -:10DF700080009200EBCD40FC189716931495314B1E -:10DF80001294991B300CF01F001C8F0C1896FAC2CB -:10DF9000FFE4580CC200302830198F588F495805BB -:10DFA000C1C18D455C7549576EB88D086EBC580C63 -:10DFB000C1F52FFC8FBC5804EDF81000E9F81A00E9 -:10DFC000049B308AECCCFFFCF01F000D301C8D351B -:10DFD000E3CD80FCE3CF80FC5C750A9CF01F000958 -:10DFE0008D4CCF90069B0A9AF01F0005CDDBF01FE9 -:10DFF0000006CE1B8001D8DC000087F4800091DC95 -:10E000008000920080018450EBCD40801897F93C4D -:10E01000000BF01F00084888F0F900F85809C0709C -:10E02000EECBFFFC310A313CF01F0004E3CF9080BF -:10E0300080015FB0000087F480014658D42130C8C9 -:10E040001896109B4904300CE8F500F88D18F01F65 -:10E05000000F8D0C1897C120301830D98D582FCC57 -:10E06000EACBFFE28D49F01F000A68B88F0868BC50 -:10E07000580CC0552FFC89BCDA2AD822F01F0005A5 -:10E08000CFBB0000000087F48001D8DC8001844011 -:10E0900080018450D42130CB1897991B300CF01F8D -:10E0A000000B8F0C1894C1004898301530868F559E -:10E0B0008F462FCCF0FB00F82E2BF01F00060A9C99 -:10E0C000E966000AD822D8228001D8DC000087F453 -:10E0D00080018440EBCD40E030CB1896991B300C8A -:10E0E000F01F00108D0C1897C1703018305948E59A -:10E0F0008D588D492FCCEAFB00F82E2BF01F000B1A -:10E100003028AE586AB98F096ABC580CC0752FFC0C -:10E110008BBCE3CF90E0E3CD80E0F01F0005CF9B08 -:10E120008001D8DC000087F48001844080018450A5 -:10E13000EBCD40FC30C518969915169414931292A5 -:10E140000A9B300CF01F00138D0C1897C1D03018AB -:10E150008D458D580A9A300BF01F000FEECCFFFC56 -:10E16000089BF01F000E078848D6EF68000A058953 -:10E17000EF69000B6CB88F086CBC580CC0752FFC95 -:10E180008DBCE3CF90FCE3CD80FCF01F0006CF9B5D -:10E190008001D8DC800091D080018440000087F4A9 -:10E1A00080018450EBCD40FC30C51896991516942B -:10E1B000149312920A9B300CF01F00128D0C1897CA -:10E1C000C1B0301830B98D588D490A9A300BF01F04 -:10E1D000000E306AAEC4AED3049BEE0A000CF01FF2 -:10E1E000000B48B66CB88F086CBC580CC0752FFC7F -:10E1F0008DBCE3CF90FCE3CD80FCF01F0006CF9BED -:10E200008001D8DC800091D0800091DC000087F490 -:10E2100080018450D431203D502B5018FACEFFD0CD -:10E2200033857C3499157C181896149312917C00D0 -:10E2300050087C220A9B300CF01F00228D0C18978E -:10E24000C370301830A98D580A9A8D49300BF01FD1 -:10E25000001E069A029BEECCFFFCF01F001CEF5341 -:10E2600000244028049BEF680026EF600027306AF6 -:10E27000EECCFFD8F01F00155804C1C0089B308AAF -:10E28000EECCFFD2F01F00114008EF6800364018B6 -:10E2900048F6EF6800376CB88F086CBC580CC05556 -:10E2A0002FFC8DBC2FDDDA3AF01F000ACFBB2FDD2B -:10E2B000D832089B308AEECCFFD2F01F0003CE5B31 -:10E2C0008001D8DC800091D0800091DC000087F4D0 -:10E2D00080018450D4012FCC7808202D500819C912 -:10E2E000BAC919D8BAD8F01F00052FED580CF9B8E3 -:10E2F000010DF9F81A06DA0A80015860D40148D8ED -:10E30000F8CBFFF5F0F900F8733C7808204D502861 -:10E3100019C9FB69000C19D8306AFB68000D1A9CFA -:10E32000F01F0005F01F00052FCD580C5F1CD80210 -:10E33000000087F48002E73680018898EBCD40FE2C -:10E340003007FAC5FFE0189116924A134A1466087E -:10E350000E38E08A00216A08204D50280BC9FB695D -:10E36000000C0BD8EE061504FB68000DE806000A49 -:10E3700015D8BAD87409500915C8BAC8F01F0016C4 -:10E380002FCD580CC0A12FF75907CE2118970E9CFE -:10E39000E3CD80FEEE061504E80600060A9B0C9C01 -:10E3A000F01F000EF3D2C001EE081501AC692FF882 -:10E3B000E808093166090E39FE99FFEBEEC9FFFF47 -:10E3C00048380E9C9109E3CD80FE000000008C5C73 -:10E3D00000008B5C8001889880018440EBCD4080F8 -:10E3E000300819C9F0091800C10048E8F0F700F832 -:10E3F0005807C130F01F000C0E9CF01F000C0E9C43 -:10E40000F01F000BE3CF8080486830A9F0FA00F8D5 -:10E41000301C9569E3CD80800E9CE3CD80800000A8 -:10E42000000087F480015D188001593880015CDCB0 -:10E43000EBCD40E01896F01F00224A2A0DE9F4F7D0 -:10E4400000F85809C1103018F0091800C32030280E -:10E45000F0091800C31030488F687498300CABC8AE -:10E460009598E3CD80E06F3930D8322A8F68496CB7 -:10E47000727B2F4BF01F00156F3C3FF8787BF7390C -:10E4800000C8F0091800C130202DF71600D47845D7 -:10E49000306AEECBFFE21A9CF01F000C0C9B0A9C2A -:10E4A000F01F000B301C2FEDE3CD80E0E3CF90E0B8 -:10E4B00030088F68CD3B30588F68CD0B8001F00459 -:10E4C000000087F400008C608002E7368001E33CA6 -:10E4D000EBCD40E01896F01F00284A8A0DE9F4F7CA -:10E4E00000F85809C1503018F0091800C3603028EE -:10E4F000F0091800C3906F0830492FF88F69EF4872 -:10E5000000407498300CABC89598E3CD80E06F392B -:10E5100030D8322A8F6849AC727B2F4BF01F00191C -:10E520006F3C3FF8787BF73900C8F0091800C1301C -:10E53000202DF71600D47845306AEECBFFE21A9C06 -:10E54000F01F00100C9B0A9CF01F000F301C2FEDD9 -:10E55000E3CD80E0E3CF90E06F0830092FF88F69BA -:10E56000EF480040CCFB6F0830592FF88F69EF4817 -:10E570000040CC8B8001F004000087F400008C6028 -:10E580008002E7368001E33CD421310B1896991BB9 -:10E59000300CF01F00198D0C1897C28030183049CC -:10E5A0008D588D494955302CEAF400F8F01F0014BD -:10E5B000E8CBFFE21896EECCFFF8F01F00126C38A3 -:10E5C000AE38EAF901045819C0D03008AE2830B886 -:10E5D00089686AB98F096ABC580CC0952FFC8BBC3E -:10E5E000DA2AEAF8011C5818CF20D82AF01F0006B2 -:10E5F000CF7B00008001D8DC000087F48001EF6C45 -:10E600008001844080018450EBCD40F81897169427 -:10E6100030CCF01F0046303CF01F00441895302CE1 -:10E62000F01F0042E06A00EC1896E06B00FF0E9CC1 -:10E63000F01F003FE8CBFFE2EECCFFF6F01F003DFD -:10E640006C384BD9AE289208AE483DD86939727BF8 -:10E65000F73A009AF00A1800C480F73900803DD8D4 -:10E66000F0091800C52030050A93F01F00349838CF -:10E67000AE381896F93900A83FF8F0091800C09094 -:10E68000F8C9FF58EECAFF584ADB0E9CF01F002D58 -:10E69000ED3900CC3FF8F0091800C1900E9CECC990 -:10E6A000FF34EECAFF344A6BF01F0027089CF01FAE -:10E6B0000027583CE089000C4A587099ABC99199E1 -:10E6C0003FFA301CEF6A009EE3CD80F85805CF502A -:10E6D000EECCFF62069BF01F001F49D9301C7298D8 -:10E6E000ABA89398E3CD80F8F73900A03008F00983 -:10E6F0001800CB41EAF900B85819CB01F72800A25D -:10E700001295F003161FCB2BF73900863018F0094D -:10E710001800CAA1EAFC00B8581CCA61F728008892 -:10E720001895F003161FCA2B8001EF6C800091D062 -:10E73000800184400000025E8001EFF88001D3EC8C -:10E740008001D1E88001D21C8001808E000087F416 -:10E75000800184F0D421E06800EC1897109B4924D4 -:10E76000300CE8F500F88F18F01F00108F0C189689 -:10E77000C090301830798F588F490A9BF01F000CD9 -:10E78000C021D82A0C9CF01F000B30C88B6868B9D8 -:10E790008D0968BC580CC0452FFC89BCDA2AF01FD3 -:10E7A0000006CFCB000087F48001D8DC8001E608AA -:10E7B0008001F03080018450D421E06800EC18978B -:10E7C000109B4924300CE8F500F88F18F01F00105A -:10E7D0008F0C1896C090301830698F588F490A9B5B -:10E7E000F01F000CC021D82A0C9CF01F000B30C871 -:10E7F0008B6868B98D0968BC580CC0452FFC89BC72 -:10E80000DA2AF01F0006CFCB000087F48001D8DCA5 -:10E810008001E6088001F03080018450EBCD40405B -:10E82000201D18961A9CF01F001849888C69F0FB6F -:10E8300000F85809C1203018F0091900C0B030287C -:10E84000F0091900C170770830492FF89769F74827 -:10E8500000402FFDE3CF80407738301911EA301C9B -:10E86000F20A1800F9B8000CF7F80A062FFDE3CDFC -:10E870008040770830592FF89769F74800402FFDFE -:10E88000E3CF8040800177A4000087F4D401496879 -:10E8900019C9F0FA00F85809C1803028F0091800A9 -:10E8A000C1803048F0091800C0503018F009180035 -:10E8B000C180750830492FF89569F548004019CB9B -:10E8C000302CF01F000AD80A3088301C9568D80216 -:10E8D000750830592FF89569F548004019CBCF1BC2 -:10E8E000301BCEFB000087F480018390D431215D82 -:10E8F000303C169614911290F01F00584D83F8C4C6 -:10E90000FFB0189531CA089B069CF01F0056C0A1A5 -:10E910006D3830AA707BE6CCFFE42D2BF01F005140 -:10E92000C7B06D38FAC7FFC8707B0E9CF6CAFFC827 -:10E930002D2BF01F004D089B0E9CF01F004CC0417A -:10E94000300C2EBDD83231CA0E9BFA0A0002049C4C -:10E95000F01F0047049CF01F004730080E9A500833 -:10E960001A97089B1A9CF01F00446D38707930E8A4 -:10E97000F33A005EF00A1800C670EB3A0074580AC9 -:10E98000CE006D387079EB380075F33B005EF60809 -:10E990001800C0F0EACCFF8A3009C0581938F608D0 -:10E9A0001800C0502FF9123AFE99FFFA123ACC9093 -:10E9B000049CF01F0032CC50049B1A9CF01F0030C6 -:10E9C0001A9B029CF01F002F049B009CF01F002D3F -:10E9D000089B31CA4A2CF01F00266D3830AA707B84 -:10E9E000E6CCFFE42D2BF01F00226D38312A707B1E -:10E9F000E6CCFFDA2C8BF01F001E029B304AE6CCDF -:10EA0000FFC8F01F001B009BE6CCFFC4304AF01F7C -:10EA10000018301CC97B6D38312A707BE6CCFFDAD8 -:10EA20002C8BF01F0010FE91FF7E304AE6CBFFC812 -:10EA3000029CF01F000FE6CBFFC4009C304AF01F81 -:10EA4000000C301CC7FB049CF01F000FFE90FF7AE7 -:10EA50001A9CF01F000EC92B8001EF6C000079E8B2 -:10EA60008000917C80018124800182BC800091DC47 -:10EA700080018658800181E8800182608001817E6A -:10EA8000800180CC80018360800185F4EBCD40FC67 -:10EA9000FACD0110300733095407FEF3022EE6F8D1 -:10EAA00000F854281896129B0E9C8D19F01F0088B0 -:10EAB0008D0C1895E080008A3018303C8D588D4CB4 -:10EAC000F01F0084FACBFEFC1894FACAFEF8FACCC8 -:10EAD000FEF2F01F0081442871390E9CE06B00ECBF -:10EAE0007277F01F007BC710540CE0680420B83820 -:10EAF000442B7738707992D9EDB90000C6B0EDB9E2 -:10EB00000001C06144099238A1B8B238442BE8F83A -:10EB100000B85808C0C07738707A94D9EDB90009A8 -:10EB2000C06144099238A9B8B238442BFAC2FEF148 -:10EB3000441A049CF01F006944185818E08000A58E -:10EB4000C6823079FB38010FF2081800C050440922 -:10EB50009238A5A8B238440CF01F0061049CF01F45 -:10EB600000614428E74C0100EACAFFF071390A9CB1 -:10EB70004DDBF01F005E6858AA286869AA394D3C31 -:10EB800069B85808C440442B773870793078F33A24 -:10EB90000074F00A1800C240EAC9FFF4EACAFFF89C -:10EBA000300CF01F0053581CC53030063018E748B1 -:10EBB000004444095809C0A0FACCFF00F01F004DE2 -:10EBC0000C9C2BCDE3CD80FC30060C9C2BCDE3CDF3 -:10EBD00080FC44099238A1A8B238442BC99BF8F8AC -:10EBE00001AC5808C050F8CCFE54F01F004230CBA6 -:10EBF000300CF01F0037E74C01AC189AC080442855 -:10EC0000713B76794B8B28C9F01F003B442BCC5BC2 -:10EC10005828CA51442C1A9B2E2CF01F00381A96E3 -:10EC20001AD61ADC442BFB380116FB390117EF3AD0 -:10EC300000CF169CF6CBFF34F01F003144283289F8 -:10EC4000F15900D8442CF01F00262FEDC88BE8F8AE -:10EC500000B85808C2916AB93FF8F368009A3028A2 -:10EC60003039E7480044442891694426F01F0025C4 -:10EC7000ED4C004466B88B0866BC580CC2352FFCBE -:10EC800087BC3016C94B440BEF3A00AF169CFB38DB -:10EC9000010EFB39010FF6CBFF58F01F001B440C8F -:10ECA000F01F000FC5CB44287139727A94D8EDB8A3 -:10ECB0000001CD21189B6ABCF8CCFF66F01F001341 -:10ECC000CCFBF01F0013CDDB000087F48001D8DC03 -:10ECD0008001EF6C80017C4480017EE08001F03097 -:10ECE00080017BD88001D3EC8001AD408001E8EC4D -:10ECF0008001D3A88001D1588001887080018C2CBC -:10ED0000800145C480018B74800184F080018450AF -:10ED1000D431203D189616971493303CF01F0070A4 -:10ED2000301831798D588D4930086C068F0858039A -:10ED3000EDF81805E7F81A0018950DC40898A7D83B -:10ED4000C0505898C0302FDDD83A0DD93018F0098E -:10ED50001800C1003008F0041800F9B80500EFF8F9 -:10ED60005A00F9BC0501F9BC0401EFFC4A002FDD93 -:10ED7000D832303CF01F005A6C98F93A0074F13BDD -:10ED8000005E580ACE80F9380075F6081800C0A059 -:10ED900028AC30092FF91439CDE41938F00B1800DC -:10EDA000CFA1ECC0FFF8009CF01F004E1891CD30B1 -:10EDB0006BB85808C090793870793078F33A00749D -:10EDC000F00A1800C6E0FACCFFF8F01F0047581C04 -:10EDD000C0A0F01F0046029B835C350A31DCF01FA7 -:10EDE0000044CB9B40285818CF51FACCFFFCF01FB1 -:10EDF0000041581CCEF1401820785818FE9BFFEBBC -:10EE00004BD8F0F900F85809CE501A9CF01F003B7F -:10EE1000581CCE01400820285818FE9BFFDC6C9E31 -:10EE20002F4EFCE80000212DFAE90024FCE8000840 -:10EE3000FAE9002CFCE20010FAE30034FCE80018C8 -:10EE4000FAE9003CFD3C0020FB6C0044FD38002149 -:10EE5000322AFB6800454AAB1A9CF01F002AF01FBB -:10EE6000002A2EED580CCB606C9A3FF8F53900C89B -:10EE7000F0091800CAF06008F51B00D4202D6C6C56 -:10EE8000500801C9BAC901D8BAD8F01F0020A56C32 -:10EE900049FB310A180B315CF01F00152FEDC9AB8F -:10EEA0004955EAF801AC5808C050EACCFE54F01FAE -:10EEB000001930CB300CF01F0018EB4C01AC189A45 -:10EEC00048D5580CFE90FF816338494B707928C9AA -:10EED000F01F00136A98ABB88B98C76B8001EF6C7A -:10EEE00080015D44800177A4800145C480014658BB -:10EEF00080015F44000087F480015F2800008C607F -:10EF00008002E736800189108001E33C00008B5CC1 -:10EF10008001D3A88001D8DC8001D3EC8001D158D6 -:10EF2000EBCD40E0206D300818991495502850081A -:10EF30001A9C1A965D191897C10140085808C040DC -:10EF40001A9CF01F0009402C580CC030F01F00071D -:10EF50000E9C2FADE3CD80E01A9C5D15581C5F0719 -:10EF6000CEDB00008001D3A8800091E858DCE08867 -:10EF700000035EFD49B8F00C032F49B8F0CCFFF454 -:10EF80005EFC4998F0CCFFE45EFC4978F0CCFFD4FD -:10EF90005EFC4958F0CCFFCC5EFC4938F0CCFFC495 -:10EFA0005EFC4918F0CCFF305EFC48F8F0CCFF1C4A -:10EFB0005EFC48D8F0CCFEF45EFC48B8F0CCFEBC59 -:10EFC0005EFC4898F0CCFE945EFC487C5EFC486891 -:10EFD000F0CCFFFC5EFC4848F0CCFE785EFC000004 -:10EFE0008003C01400000260483930089318930869 -:10EFF0005EFC000000008C844828700C5EFC000061 -:10F0000000008C84EBCD40C0487618976C1C580CDF -:10F01000C030F01F00060E9CF01F00058D1CE3CDD4 -:10F0200080C0000000008C8480018AD480018AECBA -:10F03000EBCD40C0487618976C0C580CC030F01FD0 -:10F0400000060E9CF01F00058D0CE3CD80C0000073 -:10F0500000008C8480018ABC80018B30D4211894FC -:10F060001696149530CCF01F00121897C1D03018A6 -:10F0700099069915F0060946EC0C1502F01F000CD4 -:10F080008F2CC0F05806E08A000B3009129A6E28C7 -:10F09000F009092A2FF91236FE99FFFB8907DA2AAF -:10F0A0000E9CF01F00043FDCD8220000800092007C -:10F0B000800091E8D4311893169214901291580C54 -:10F0C000C36078093018760CF0090945580CC390D4 -:10F0D000189468160A36C1A468075807C0606E48BD -:10F0E0000238C1B03FCCD832662CF8060327580747 -:10F0F000CF71ECC8FFFFF808002CC0582FF8190793 -:10F100005807CEE110960A38CFA5089CF01F0013CF -:10F1100030083FEC8508D832029A009C6E3BF01F05 -:10F120000010301C89166E088908D832760C580CED -:10F13000C040F01F000ADA3A66093018F0090945A4 -:10F14000308CF01F00081894C060850C30089918A6 -:10F150009908CC0BD8320000800091E8800091DC47 -:10F1600080009200D431109412907818409618952F -:10F17000169214910C9B780A089C5D181893318C98 -:10F18000F01F00131897C1F00C9CF01F00118F3C6A -:10F19000C170089B0C9AF01F000F30088F468F1229 -:10F1A0008F218F508F086A29F203002C78085808A5 -:10F1B000C0C0109970085808CFD19307DA3A0E9C56 -:10F1C000F01F00053FDCD8329907DA3A8000920040 -:10F1D000800091DC800091E8D431203D501C500B20 -:10F1E000149112921090580AC4307418009B740A3B -:10F1F000129C5D18A36C502C6228F00C0307580772 -:10F20000C3706E450A990035C3610E940E93C09881 -:10F210006E075807C2D008936E490A39C2C10E94CE -:10F220006E3B0A9A049CF01F00181896CF214019D3 -:10F230006E18930840086E2991098F1C8F2C6E3C24 -:10F24000F01F00128F468F3640296228F009000C0B -:10F2500078090E39EFF80000F9F80A00EFF810000D -:10F26000E7F81A000E9CF01F00092FDDDA3A3FEC98 -:10F270002FDDD8326E385808CFB00039CF903FCC50 -:10F280002FDDD8328000917C800091E8163C5E0C26 -:10F290007808971C990B97085808F1FB1A015EFC37 -:10F2A00078195809F9F81000F3F81A007808580886 -:10F2B000F1F91A013008990899185EFCD40149380F -:10F2C000FACEFFFC709CE21C0002C1D0209DFD3AEA -:10F2D0000021FB6A0021FCE80000FAE90000FCEADA -:10F2E0000008FAEB0008FCE80010FAE90010FCEA5C -:10F2F0000018FAEB0018FD380020FB680020F01F12 -:10F3000000042F7DD8020000000087F480015AA479 -:10F31000D4014898709CE21C0002C0C0300930CC77 -:10F32000EA1C4000303B129AF01F0004F01F00045A -:10F33000301CD802000087F4800186C88001875401 -:10F34000D4014898709CE21C0002C0C0300930DC37 -:10F35000EA1C4000303B129AF01F0004F01F00042A -:10F36000301CD802000087F4800186C880018754D1 -:10F37000D4014898709CE21C0002C0C03009310CD6 -:10F38000EA1C4000303B129AF01F0004F01F0004FA -:10F39000301CD802000087F4800186C880018754A1 -:10F3A000EBCD4080495818977098E2180002C04190 -:10F3B000109CE3CD8080F01F00126F38302911EAD5 -:10F3C000F20A1800C0D03009303B129A307CEA1C97 -:10F3D0004000F01F000CF01F000CE3CF90806E681F -:10F3E0005898CF213009303B129A30BCEA1C4000BB -:10F3F000F01F0004CF1B0000000087F4800158407C -:10F40000800186C88001875458DBE08A0012F939F0 -:10F41000000C3078F0091800E08B000C595BE08A92 -:10F420000008F939000E3AA8F0091800C0D05EFDB6 -:10F430003888F0091800CFC1F939000D38E8F00913 -:10F4400018005F0C5EFCF938000FF2081800CF01BD -:10F45000F93900103038F0091800CEA1F93900113F -:10F460003008F0091800CE41F93A0012F20A1800EB -:10F47000CDF1F9380013F4081800CDA1F9390014C2 -:10F480003888F0091800CD41F939001538E8F0093D -:10F4900018005F0C5EFCD7033019482891095EFC08 -:10F4A00000007A38EBCD40C0208D48D730088E0957 -:10F4B000F0091900C101E06AFFFF300B1A9CF01F30 -:10F4C00000091A9B302AFACCFFE8F01F00079A18AF -:10F4D0001A96AE088E0C2F8DE3CD80C000007A2ADC -:10F4E0008001C7B88001A498D401F01F00054858D6 -:10F4F000F139010B120C5C8CD80200008001F4A4DD -:10F50000000087F4EBCD4060208D306AFAC5FFE63D -:10F51000300B0A9CF01F00091A9CE06AFFFF300BB9 -:10F52000F01F00070A9C1A9B302AF01F00061A964B -:10F530009A1C2F8DE3CD8060800091D08001C7B8E8 -:10F540008001A444D43120DDFEF60234FACEFFA8B7 -:10F55000189516916C9C1494129310907C177C0251 -:10F56000E21C0002C0312F3DD832FEF802167009AD -:10F570005809C041FE7CFBB4CF7BECF8012458183D -:10F58000C041FE7CFC17CF0BECC9FFE85019129C60 -:10F59000F01F007D581CE08000E30D890D98F009F4 -:10F5A0001800E08200E6302CF01F0078E08000D2E6 -:10F5B0006CB850282FF88DB85807FBF91002EFF9F6 -:10F5C0001A00F01F0073C0E0029B0A9CF01F00713C -:10F5D000E08000C96C98EDB80006C0414E88402913 -:10F5E00091D9F01F006D6008EFDCB010F3D7C010A8 -:10F5F00050091039E08B006C0D882FF8AC880D99FC -:10F60000F0091800C061300A320C149BF01F00632F -:10F61000E8C800020E08FB58002EED38010B30043C -:10F62000FB680032400A300BFB640030FB640031A1 -:10F63000FB640033069CF01F005A069BFAC7FFF4D8 -:10F64000400A0E9CF01F0057300A0E9BFACCFFD2E6 -:10F65000F01F0055ED38010BF9D2C003BA78F01F46 -:10F660000053300CFB520028FB5C002AE041003EB6 -:10F67000E0880008EB39000C3888F0091800C2D087 -:10F680004028300A50980E9BFACCFFDCF01F00484F -:10F690004009ECCCFFE88109F01F0046F01F00464E -:10F6A0003008ED4C00CCED5800D04C49F30A014233 -:10F6B000F00A1900C0604B297298EDB8000EC031F5 -:10F6C000301CC52BF01F003E301CC4EBECCCFFE817 -:10F6D000F01F00383FFCC48BEB39000D38E8F0090F -:10F6E0001800CCF1EB39000E3018F0091800CC915D -:10F6F000EB39000F3038F0091800CC313028EB3BE3 -:10F700000012F00B18005F1A3FE8F00B18005F19A9 -:10F71000126AE80A1800CB51EB380013E218001DFA -:10F720005818CAF1EB380014E21800C85888CA917A -:10F73000189A31F9EA090708F4081800CA212FF9C4 -:10F74000E049003FCF81E0680400FB58002AC99BD4 -:10F75000401CF01F0018FE7CFAECC06BFE7CFC160F -:10F76000C03BECCCFFE8F01F00133FECCFDA401CAD -:10F77000F01F0010FE7CFB4FCF7A0000000087F4E2 -:10F7800000007A38800145DC80019F3080015F04F1 -:10F790008001F4088001F4E880014658800091D08F -:10F7A0008001C7B88001A4448001859C8001A49891 -:10F7B000800145EC800145C4000002608001FBFC33 -:10F7C000D401302CF01F0003300948389109D802C9 -:10F7D0008001A12800007A38D431FACD01385009CF -:10F7E000FACEFEA416971896FEFB031C14947C1305 -:10F7F0007C00F6F801245818C460FEFA030A749CD1 -:10F80000E21C0002C05118970E9C2B2DD832E068E4 -:10F8100000F8FAC5FEFCF5D7C0100C9B0A9C548872 -:10F82000549654A730025472F01F00B8FAC1FEE497 -:10F830000A9B029CF01F00B644C95879E08B00284F -:10F840003018F0090948E2180085C2104488FAC946 -:10F85000FFF45012502854D944D80A9B5478029C83 -:10F86000F01F00ACC1C1302744D95809CCE0FAC818 -:10F87000FFF41039CCA0FACCFECCF01F00A70E9CF0 -:10F880002B2DD83230270E9C2B2DD832448B300CA8 -:10F89000F01F00A2E08000B354DCCDFB44C9E04976 -:10F8A000003FE088000B300744B8EDB80007E08067 -:10F8B000009EF01F009BCD9BFEF80268F009032F0D -:10F8C000ECCAFFFC1588EC08000889080DD81589DA -:10F8D000400BEE0901093067F208010A970A44B8A3 -:10F8E000CE5B44B8F0C90001E0490097E088008988 -:10F8F000447CF01F008D44C8189A300944BC303B4A -:10F90000BFBCF9E8108CF01F0089F01F0085301B88 -:10F91000300CF01F008744B83027CC8B44B8E04847 -:10F920000082C090E08900A9E0480080C040E04823 -:10F930000081CEE10E9B0C9CF01F007ECE9B44B854 -:10F94000E0480082E08000C4E08900915978E080BE -:10F9500000C4E0480081CCD1029CF01F0077CD8B21 -:10F9600044B85808C7E144D65803EDF81000E7F84A -:10F970001A008C28A008FB1A0106445814088908AC -:10F98000FB190104F20A0105400A30EB95056807EE -:10F990000E9CF01F006AE08000AE4DB9F2F801D075 -:10F9A0005808E080009E0A9B0E9C5D18E08000993C -:10F9B00030270DE84D4BF768007B44B8C77B44B84F -:10F9C0005818CB90E0480080CA31CB5B447B44BCE4 -:10F9D000F01F005B44BCF8C800805818FE9BFF99DC -:10F9E000029B5C5CF01F0057C93B30084C69300B30 -:10F9F000B2A8169CF01F0054C5DB3FD7C06B4D3832 -:10FA0000F009032F029CF01F0052C82B029CF01F2C -:10FA10000051C7EB029CF01F0050C7AB029CF01FC7 -:10FA2000004FC76B029CF01F004EC72B029CF01FBB -:10FA3000004DC6EBF01F004C4B3AF54C00D4C68B82 -:10FA4000029CF01F004AC64B029CF01F0049C60BE7 -:10FA5000029CF01F0048C5CB447CF01F0047C58BBB -:10FA6000E0480081C1403027C21BF0C8008F5828F1 -:10FA7000FE9BFF40C4DBE0480084FE90FF5DFE95E6 -:10FA8000FF5BE0480085FE91FF44C55B49E91388B0 -:10FA900020185C58B28844D7C29049BB7698E218C7 -:10FAA0000040C20076D96E081039E088002944B8B9 -:10FAB000A7D854B85803F9B70003EFF81000E7F8D7 -:10FAC0001A00F9B70103FBF8104BCF0A447B32EC64 -:10FAD000F01F002AC1DB029CF01F0029C19B3047A8 -:10FAE000C69B0FD8F768007ACE3B302CF01F00255C -:10FAF000CD5BF01F0025CF403FE7C5CBF01F0023B3 -:10FB0000CD7B0000000087F48001C7B88001BF10E2 -:10FB10008001BF448001D3A88001D8DC80018754D4 -:10FB20008003C04C8001870C800186C880016A88F0 -:10FB3000800237E8800208948001F4088001708C0C -:10FB40008001725480018CE48003C14C8002084023 -:10FB50008002085880020864800208708002087CD5 -:10FB600080020888800145C48002084C8002083465 -:10FB7000800209B48001DA3480016D6C8002094092 -:10FB80008001A12880015F048001F310EBCD406863 -:10FB90003006493C1AD61AD649250C9899064929A7 -:10FBA000492A302B0A9CF01F001249231AD60C98C0 -:10FBB0001AD60699490A303BEACCFFFCF01F000C2C -:10FBC0000C981AD606991AD6EACCFFF848BA305BD8 -:10FBD000F01F0007301C2FADE3CD806800007A389D -:10FBE00000007A2C8001F4988003C3AC80016EB8C9 -:10FBF0008001F7C08003C3C48003C3E05EFCD70369 -:10FC0000EBCD40E0203D1897580CC1F07938707A60 -:10FC100094D9EDB90001C1D04C166C785828C15068 -:10FC20000E9CF01F0040C110ED3900943FF8F00920 -:10FC30001800C1405017FACAFFFC1A9BFACCFFF615 -:10FC4000F01F0039581CC180301C2FDDE3CD80E04F -:10FC50004B366C785818CE51CF8B202D306A1A9CB9 -:10FC60004AFBF6CBFF4AF01F0031F01F00312FEDA9 -:10FC7000580CCEB1CE0BFAC5FFF5400A401B0A9CCA -:10FC8000F01F002C581CCE113079FB38000BF20805 -:10FC90001800C35140187139727A94D8EDB8000435 -:10FCA000CD404A5AF4F801045818C3206DE85808AA -:10FCB000C1D1ED3B008049AA580BC2806F387079E2 -:10FCC000F5380081F33C005EF8081800C1F0F4CA72 -:10FCD000FF7E3009C0581538F8081800C0402FF9C9 -:10FCE0001639CFA516395F0CCB1B48D973F85808C5 -:10FCF000CE10F4F801AC5808CDD1CA7B0A9CF01F95 -:10FD0000000FF01F000FCA10CCDB3009CECB3059EA -:10FD1000FB38000BF2081800C981CC9B0000026080 -:10FD2000800189D080017C448002E736800188B060 -:10FD300080017EE0000087F480017BD880017C1088 -:10FD4000EBCD40E048D818961695F0F700F058072C -:10FD5000C0E00E9CF01F000AC0715806C0A00E9CA7 -:10FD60000A9B5D16C0606E075807CF41E3CF80E065 -:10FD70000E9CE3CD80E00000000087F48001FC00D1 -:10FD8000D401F01F0002D80280021500EBCD40F82C -:10FD9000204DE0683100EA18312EE069312EEA1971 -:10FDA000322E306CFAE90000F01F00631894E080F6 -:10FDB00000B9303CF01F00611896301CF01F005F46 -:10FDC000306A202D189B18951A9CF01F005DF01FBB -:10FDD000005D2FED580CE080008732B80A9C1AD8DD -:10FDE000308930084D8A306BF01F00582FFD1A9370 -:10FDF000ECFC00D8F01F0056ECFC00DCF01F0055B6 -:10FE0000ECFC00E4F01F0054ECFC00E8F01F005391 -:10FE1000ECFC00ECF01F0052ECFC00F0F01F005175 -:10FE2000ED3C00B7F01F00506DC85808F9B801014B -:10FE3000EDF81A1BED3C006FF01F004CECFC012CA0 -:10FE4000F01F004BF01F004BF01F004BF01F004B4A -:10FE5000F01F004BECF800F85808C6616D084C978D -:10FE6000EF4800D8ECFC0130F01F0047300830A903 -:10FE700032B54C6A1AD5E06B0080EECCFED8F01F8C -:10FE80000033EEC6FE58304A300B0C9CF01F004089 -:10FE900030081AD530594BFA0C9C304BF01F002B10 -:10FEA0004BD82FEDF10A01423009F20A1900C26065 -:10FEB0006E99EDB9000EC201A7B930688F9950381C -:10FEC0001A9CFAC8FFF8FAC9FFF4089A308BF01FA1 -:10FED00000331897581CC140089CF01F00312FCDEB -:10FEE000E3CF80F8189A0A991A933068308B1A9CDD -:10FEF000F01F002CC7EBF01F002C6E99CDEB089C77 -:10FF0000F01F00273009303B129A311CEA1C4000D8 -:10FF1000F01F0026F01F00260E9C2FCDE3CD80F8A9 -:10FF20002FCDE3CD80F8300A301B149CF01F002148 -:10FF3000C96B0000800092008001EF6C8002E73600 -:10FF4000800188B08003B804800176C480020594E3 -:10FF500080020538800204DC8002048080020424D0 -:10FF6000800203C8800202F880020374800202D477 -:10FF70008002078C800168AC8002017080020EFC58 -:10FF8000000087F48002031C8003C400800091D02D -:10FF90008003C40C00000260800174C8800091E8F6 -:10FFA0008001776C8001FBFC800186C8800187544A -:10FFB00080020B34EBCD406830094AF63068ACA9BA -:10FFC000AC893129314AAC988D99300530130A9BA0 -:10FFD000ED4500ECED4500E88DA58DC5ED550040E3 -:10FFE000ED550042ED55004EED4500D88DB3ECCCFB -:10FFF000FEF0F01F0022ED450124F01F0021ED5519 -:02000004800278 -:1000000000D0ED4C00CCED5500D249ECF01F001EA5 -:10001000F01F001EED4501B8F01F001DF01F001D70 -:10002000F01F001D0A9BECCCFF48F01F001C0A9B30 -:10003000ECCCFF44F01F0019069BECCCFF40F01FF6 -:100040000017069BECCCFF3CF01F0014ED4300446E -:10005000F01F0013F01F001330DCF01F0013F93CF9 -:10006000000FF01F0012F01F0006ED4C01CC069CA3 -:10007000E3CD8068000087F4800091D0800145C402 -:10008000000084CC80017B24800237D080016CDCAE -:100090008001FB8C8001EFE8800144F8800187C873 -:1000A000800205EC8001EF6C800202B8EBCD40606D -:1000B000E06A01F8300B49D518960A9CF01F001C25 -:1000C000F01F001C0C9CF01F001CEACCFFF4F01F7A -:1000D000001BEACCFFE0F01F0019EACCFFF0F01F94 -:1000E0000017EACCFFECF01F0016EACCFFE8F01F87 -:1000F0000014EACCFFE4F01F0012300930DC1AD9FA -:100100001298129A129BF01F000FF01F000FF01FA1 -:10011000000FF01F000FF01F000FF01F000F301C2A -:100120002FFDE3CD80600000000087F4800091D0B7 -:1001300080016F4880021124800145D6800145F27C -:100140008002067C80014690800149B88001804091 -:1001500080015F98800201584848300A4849911848 -:10016000910A930A5EFC000000007A3C00007A4489 -:10017000D421219D4A846808F3D8C001FB6900633B -:10018000E2180002C14030183005FB6800634A3CA9 -:10019000F01F00233018189BFAC9FF9D300A49FC54 -:1001A000F01F0020581CC2802E7DD8225809C1C0E3 -:1001B000109549D870065806CEB0EA050019FA091C -:1001C00000170C9B0E9C306A2FA72FF5F01F00170D -:1001D0006C265806CDD05905CF516808F1D8C0011A -:1001E000F0051700CD5B306AE06B00FF1A9C3015FC -:1001F000F01F000FCDFB48FCF01F0009EA050018B6 -:10020000189BA1781A99300A48ACF01F00062E7D81 -:10021000D822000000007A448003C414800091B802 -:100220008001776C00007A3C800091DC800091D0E6 -:100230008003C41CD40148697208104C930CEDBCB7 -:100240000002C021DA0AF01F0003D80200007A443D -:1002500080020170EBCD408048C76E095809C1305B -:10026000722A580AF3F80003EFF80A01F3F81003B2 -:10027000F5F81A037238129C910AF01F00056E09F6 -:100280005809CEF1E3CF908000007A3C800091E8DD -:10029000D401F01F0007581CC020D802485972082A -:1002A000EDB80002CFB0F01F0004D8028002025463 -:1002B00000007A4480020170F8C900013058F0094A -:1002C0001800E08B00054838B09C5EFF3FCC5EFC18 -:1002D000000087F4D401201DFAC9FFFC12DC1A9932 -:1002E0003048300A307B483CF01F00032FFDD80215 -:1002F0008003C43C8001776CD401201D3018BA8C77 -:100300001A99300A306B484CF01F0004581C5F0CDF -:100310002FFDD8028003C45C8001776CEBCD406870 -:10032000201D48F61893FAC5FFFC2F060AFC0C9C0A -:10033000F01F000C303CF01F000CF94301300C9C06 -:10034000F01F000A0A993018300A307B488CF01FE1 -:100350000009581C5F0C2FFDE3CD8068000087F476 -:10036000800145FC8001EF6C800145FE8003C46C78 -:100370008001776CEBCD4040201D48E6BA8C2F06FB -:100380000C9CF01F000D303CF01F000C1B88F9483E -:10039000006C0C9CF01F000A30181A99300A309B30 -:1003A000488CF01F0009581C5F0C2FFDE3CD8040E6 -:1003B000000087F4800145FC8001EF6C800145FE60 -:1003C0008003C4748001776CEBCD4068201D1898C1 -:1003D0005CB81895FAC3FFFC48D606D82F060C9CCB -:1003E000F01F000C303CF01F000CF94500F00C9C95 -:1003F000F01F000A1A993048300A309B488CF01FD1 -:100400000009581C5F0C2FFDE3CD8068000087F4C5 -:10041000800145FC8001EF6C800145FE8003C480B3 -:100420008001776CEBCD4068201D18985CB818955A -:10043000FAC3FFFC48D606D82F060C9CF01F000C10 -:10044000303CF01F000CF94500EC0C9CF01F000A3A -:100450001A993048300A309B488CF01F0009581C0C -:100460005F0C2FFDE3CD8068000087F4800145FC20 -:100470008001EF6C800145FE8003C48C8001776CA5 -:10048000EBCD4068201D18985CB81895FAC3FFFCA6 -:1004900048D606D82F060C9CF01F000C303CF01FED -:1004A000000CF94500E80C9CF01F000A1A9930482E -:1004B000300A309B488CF01F0009581C5F0C2FFD40 -:1004C000E3CD8068000087F4800145FC8001EF6C7B -:1004D000800145FE8003C4988001776CEBCD4068B5 -:1004E000201D18985CB81895FAC3FFFC48D606D8AA -:1004F0002F060C9CF01F000C303CF01F000CF9453F -:1005000000E40C9CF01F000A1A993048300A309B16 -:10051000488CF01F0009581C5F0C2FFDE3CD80684C -:10052000000087F4800145FC8001EF6C800145FEEE -:100530008003C4A48001776CEBCD4068201D18981F -:100540005CB81895FAC3FFFC48D606D82F060C9C59 -:10055000F01F000C303CF01F000CF94500DC0C9C37 -:10056000F01F000A1A993048300A309B488CF01F5F -:100570000009581C5F0C2FFDE3CD8068000087F454 -:10058000800145FC8001EF6C800145FE8003C4B012 -:100590008001776CEBCD4060201D48F5BABC2F057B -:1005A0000A9CF01F000E303CF01F000DFAC6FFFC45 -:1005B0000D78F94800D80A9CF01F000A0C993018F1 -:1005C000300A306B488CF01F0009581C5F0C2FFD5F -:1005D000E3CD8060000087F4800145FC8001EF6C72 -:1005E000800145FE8003C4BC8001776CEBCD40C028 -:1005F000206D49EC3008F939010DF93B010850082C -:1006000050281AD9F93A010C1ADAFAC7FFF8F93961 -:10061000010AF93A01090E9CF01F00152FED580C44 -:10062000C10140085808C0401A9CF01F0012402C1D -:10063000580CC040F01F0010300C2FADE3CD80C02F -:100640001A9CF01F000E400818965808C0401A9CCB -:10065000F01F0008402C580CC030F01F000758163F -:100660005F0C2FADE3CD80C0000087F48001DAE499 -:100670008001D3A8800091E880018E9CD4214C0792 -:10068000405EEF6C0108EF6B0109EF6E010D1495F0 -:100690001294109A3019F2081800C120EEF801B037 -:1006A0005808C3D05828C4C04B5CEF3B01B5338811 -:1006B000F00B1800C5403398F00B1800C440EF6AE7 -:1006C000010CF01F0030EDDCB010F01F002F0C0CFF -:1006D0005C5C5805C1E11895F01F002A1815EF65FC -:1006E000010AF01F0029EDDCB010F01F00260C0CF1 -:1006F0005C5C5804C3F11894F01F00221814EF64D6 -:10070000010B6E98EDB80001C031F01F0020DA2A0D -:10071000EA0C1800FE98FFE23FCCD822EF3901B571 -:100720003348F0091800CC11EF3901B63418F0093C -:100730001800FE98FFC630E8EF68010CCC3BEF696B -:10074000010CCC0BEF3901B63408F0091800FE9803 -:10075000FFB8301948A8F169010CCB4BF93901B643 -:100760003408F0091800FE98FFA835A8F968010CB4 -:10077000CA9BE80C1800FE9BFFD1CBFB000087F45E -:100780008001F4A48001F504800205ECEBCD40E08B -:10079000303CF01F002330CB18954A26300CF01F58 -:1007A0000022ED4C01AC1897C360303BF01F001FD6 -:1007B0008F2CECF901AC72275807C2903078300BBF -:1007C000B2883068ECFA01ACB498ECF901ACB2AB89 -:1007D000ECF801ACB0BBECF901ACB2CBECF801AC7D -:1007E000EB390075702AB489ECF801ACEB39007470 -:1007F000702AB499ECF801ACEAFB00847029B2AB22 -:10080000ECFC01ACF01F000AE3CF90E0ECCCFE540E -:10081000F01F00080E9CE3CD80E000008001EF6C2B -:10082000000087F48001D8DC8001D3EC800208D47A -:100830008001D3A8D401F01F0002DA0A8001DA5641 -:10084000D401F01F0002DA0A8001DF30D401F01F6A -:100850000002DA0A8001DBE8D401F01F0002DA0AA4 -:100860008001DC04D401F01F0002DA0A8001DC20E0 -:10087000D401F01F0002DA0A8001DC3CD401F01F31 -:100880000002DA0A8001DC58D401F01F0002DA0A03 -:100890008001DC74D401201D1A9BF01F000CC09055 -:1008A00040085808C06048AA7499EDB90000C030EB -:1008B0002FFDDA0A1298A1C831CC9598300A149B02 -:1008C000F01F00042FFDDA0A8001D98C000087F4A4 -:1008D00080014658EBCD40C0206D4958189B709C54 -:1008E000E21C0002C06118970E9C2FADE3CD80C0C2 -:1008F00030081A96502850081A9CF01F000EC1119B -:10090000189740085808C0401A9CF01F000B402C54 -:10091000580CCEB0F01F00090E9C2FADE3CD80C067 -:100920001A9C3017F01F0006CEDB0000000087F491 -:100930008001DED08001D3A8800091E880018E9CE8 -:10094000EBCD4080201D300A1A9BF01F0017C0F02D -:1009500040085808C0F149576E99EDB9000BC071B5 -:10096000EEF801A84917F1D8C001C1212FFDE3CF4E -:10097000908048E76E99EDB90000CF01A1C9300A17 -:100980008F9931CC149BF01F000A6E99CE7BEEFC40 -:1009900001ACF01F00086E98301CABD88F982FFD6B -:1009A000E3CD80808001ED10000087F4800146587F -:1009B000800208D4D401F01F0002DA0A8001DBD0E3 -:1009C000EBCD40FC206D4A5318951097169266980F -:1009D0001496109C1294E21C0002C2D05BF5C30175 -:1009E000303CF01F001F300BF3D7C010F5D4C010FF -:1009F0001AD90C981ADAF3D2C010504B502BFAC601 -:100A0000FFF8F93B00F70A9A0C9CF01F00162FED37 -:100A1000580CC1B1189740085808C0401A9CF01FE4 -:100A20000012402C580CC030F01F00100E9C2FAD4F -:100A3000E3CD80FC18970E9C2FADE3CD80FCEDB884 -:100A40000000CCF13FB7CF3B6698A1A81A9C8798CD -:100A50003017F01F0007CE0B000087F48001EF6C09 -:100A60008001DB588001D3A8800091E880018E9C32 -:100A7000D40130085C7B1099109AF01F0002D80254 -:100A8000800209C0D4013008364B1099109A109C8E -:100A9000F01F0002D8020000800209C0EBCD40E048 -:100AA00020AD3006507CFB6B00201497500650267A -:100AB0001A95FACAFFDCFACBFFE81A9CF01F00195E -:100AC000C111189640085808C0401A9CF01F001623 -:100AD000402C580CC030F01F00150C9C2F6DE3CD3E -:100AE00080E05807C09040980E9B0C9C8F28F01F08 -:100AF0000010581CC0611A9C3016F01F000ECE3B2F -:100B000040085808C0401A9CF01F0007402C580CA1 -:100B1000C0313FD6CE3BF01F00053FD6CDFB0000D5 -:100B20008001DC8C8001D3A8800091E880016C40BA -:100B300080018E9CD401F01F0002D80280020A9C22 -:100B4000EBCD40E0209D3018189A1697F00C09481C -:100B50004A5B7609F1E9000CC06118970E9C2F7D65 -:100B6000E3CD80E0F00811FF12683006507A970854 -:100B7000500650261A95FACAFFE0FACBFFE81A9CF5 -:100B8000F01F001AC1E05807C09040880E9B0C9CD3 -:100B90008F28F01F0017581CC1611A9C3017F01FD6 -:100BA000001540085808C0401A9CF01F0013402C44 -:100BB000580CCD50F01F00110E9C2F7DE3CD80E02E -:100BC0001897CF0B40085808C0401A9CF01F000A25 -:100BD000402C580CC0313FD7CC2BF01F00083FD71A -:100BE000CBEB000000007A4C8001DCEC80016C4013 -:100BF00080018E9C8001D3A8800091E8EBCD40F865 -:100C0000216DFAC6FF901897FB69000EFB68000F74 -:100C1000FB6B0010FB6A00116CF46D036D15ECCCDE -:100C2000FFD4F01F0038306ABA6CECCBFFDCFACC92 -:100C3000FFEDF01F00350D88FB6800190D99ECCB16 -:100C4000FFFEFB69001A320AFACCFFE5F01F002E06 -:100C50004AEE30097C0B301CF809094AF5EB000814 -:100C6000C0902FF95899CF9130060C9C2EADE3CD52 -:100C700080F8F7EA10089D085BF9CF705024FB63F9 -:100C8000001250195807EFF91A003006FAC7FFC4CE -:100C900050F65116FACAFFAC1A9B0E9CF01F001CAE -:100CA000C111189640F85808C0400E9CF01F00195A -:100CB000411C580CCDB0F01F00180C9C2EADE3CD9C -:100CC00080F85805C09041580A9B0C9C8B28F01F57 -:100CD0000013581CC0610E9C3016F01F0011CE3B53 -:100CE00040F85808C0400E9CF01F000A411C580CE8 -:100CF000C0313FD6CBBBF01F00083FD6CB7B0000F6 -:100D000080018058800091DC00007A4C8001DD4C2D -:100D10008001D3A8800091E880016C4080018E9C06 -:100D2000D42120DD4B0510946A0E4126F1DEC0016E -:100D3000C0B0EDBE0001C411EDBE0002C411300709 -:100D40000E9C2F3DD82210973018FB6B002A508A3A -:100D50005077FDE8100850998B08FB540028580C78 -:100D6000F9F71A001A953007FACAFFD05007502732 -:100D7000FACBFFE81A9CF01F001DC101189740082C -:100D80005808C0401A9CF01F001A402C580CCD90F7 -:100D9000F01F00180E9C2F3DD8225806C09040C866 -:100DA0000C9B0E9C8D28F01F0014581CC0C11A9C6F -:100DB0003017F01F0012CE4B30173028CC7B302775 -:100DC0003048CC4B40085808C0401A9CF01F00081F -:100DD000402C580CC0313FD7CB4BF01F00063FD7FB -:100DE000CB0B000000007A488001DDAC8001D3A865 -:100DF000800091E880016C4080018E9CEBCD40E04A -:100E0000207D300616975006189B50261A95FACA70 -:100E1000FFE81A9CF01F001AC111189640085808E4 -:100E2000C0401A9CF01F0017402C580CC030F01F17 -:100E300000160C9C2F9DE3CD80E05807C1904068C0 -:100E40000E9B0C9C8F28F01F0011581CC1104008ED -:100E50005808C0401A9CF01F000B402C580CC0D002 -:100E6000F01F000930060C9C2F9DE3CD80E01A9CFA -:100E70003016F01F0007CD3B1896CDCB8001DE0C5D -:100E80008001D3A8800091E880016C4080018E9C95 -:100E9000D40120CDFB5A0012FB590014FACAFFCC32 -:100EA000502874197408FB590016501874397428A6 -:100EB000FB59001AFB580018745974485039FB58F4 -:100EC000001C74797468FB590020FB58001E74994B -:100ED000748850A95098300974A8FB6C0022FB5B01 -:100EE0000010FB68002C74BBFB6900231A9CF01FE8 -:100EF00000032F4DD802000080020DFCEBCD40EE28 -:100F000020CD3FF94CC850A950B94CC93005303CF0 -:100F100091059305F01F004A322A18961A971A9CD9 -:100F20000A9BF01F0048FAC3FFDE306AE06B00FF47 -:100F3000069CF01F00441AD5ED38004F1AD86D28D2 -:100F40001AD86D191AD9ED1800361AD8ED190032D1 -:100F50001AD96CE81AD8ED19002E1AD9ED18002A02 -:100F60001AD8ED1900261AD9ED1800221AD86C6982 -:100F700030BB1AD9301C6D08ED1900FEED3A001F88 -:100F8000F01F0031ECFB01282F4DF6C80001581866 -:100F9000E0880045ED3100F7ECCAFF8C30153006D3 -:100FA0001AD61AD540D81AD8F4E80000206D069B4E -:100FB000FAE900081A9CF4E20008306AFAE300102B -:100FC000F01F0022EF380021209DFB680021EEE891 -:100FD0000000FAE90000EEE20008FAE30008EEE89B -:100FE0000010FAE90010EEE20018FAE30018EF38FA -:100FF0000020029BFB6800200A990C98FACCFF9015 -:10100000303AF01F00130C9A2EED0C9B40ACF01FF1 -:1010100000110A9C2F4DE3CD80EE1AD50A98FACC28 -:10102000FFD05C5B0A99FE7AFF6AF01F000B2FFD70 -:10103000CB2B000000007A4C00007A488001EF6C56 -:10104000800091D080020E908002E73680020BFC77 -:1010500080020A9C80020D20D431202D500B189163 -:101060004A1776026E9CE21C0002C350304C5011AD -:101070005801E2021700F01F001DEEF700F0189073 -:101080005807C2D030043013C0A82FF45802C1B1A1 -:101090005801F9B301FF5805C1100A9760B66E05F3 -:1010A000F01F00130C9A189B0E9CF01F0012CEE04C -:1010B0000E9CF01F00115805CF114008069C9104AA -:1010C0002FEDD83240182012110C0E9B5018F01F33 -:1010D000000BCE2B1893069C2FEDD8320E943013B4 -:1010E000CEDB0000000087F48001EF6C800145C476 -:1010F000800159A080015CDC800184284828F0FC34 -:1011000000F85EFC000087F4486871195879F9B856 -:101110000001F9F80A00F9B80100F9F81A005EFFB9 -:10112000000087F44828F14C007C5EFC000087F446 -:101130004828F14C01D05EFF000087F4EBCD40C0A1 -:1011400018971496E04A0020E088000830083FF91C -:10115000B898B889E3CF80C02FECF01F00043008A6 -:10116000AE96AE88E3CF90C0800091DCEBCD40FC22 -:10117000206D18941695F01F00431897C1A0F939F7 -:1011800000CC3FF8F0091800C3910896EF3900A889 -:101190003FF8F0091800C5414BB8F0F700F85807C0 -:1011A000C0A1EC040104301C8B042FADE3CD80FC06 -:1011B0000896CF3BE06AFFFF300B1A9CF01F00330C -:1011C0006F38302A707C1A9B2F4CF01F00311A9216 -:1011D0006A0A9A93063AC0442FADE3CFC0FC0C9B39 -:1011E0001A9C5C7AF01F00296F380606707C1A9BE7 -:1011F0002F4C300AF01F0026CD5BE06AFFFF300B5A -:101200001A9CF01F0022302AEEC2FF341A9B049C65 -:10121000F01F00201A966A0A9A93063ACDE55C7A86 -:10122000089B1A9CF01F00191A9B049C300AF01F9F -:1012300000196A08E803000606188B08CA8BE06AE2 -:10124000FFFF300B1A9CF01F0011302AEEC7FF5829 -:101250001A9B0E9CF01F00101A926A0A9A93063A83 -:10126000CBC50C9B5C7A1A9CF01F00081A9B0E9C45 -:10127000300AF01F00096A08060606188B08C8DB4A -:101280008001EFF8000087F48001C7B88001D344E3 -:101290008001D6B08001D558D401F01F0002D802D9 -:1012A00080015D18EBCD40F8FACD00803225149313 -:1012B00018941297BA85FAC6FFFF0C9CF01F001B0A -:1012C000300806063019AC85AC981A951A9A498BE5 -:1012D000089CF01F0018C0503FFC2E0DE3CD80F895 -:1012E0000E9CF01F0015E04C0040C1701AD7493A1F -:1012F000E06B00800A9CF01F00120A9A3019491B0B -:10130000089CF01F000C2FFD1897580CCE61089C0C -:10131000F01F000D0E9CCE2B0E9A089C3019489B96 -:10132000F01F0004CDB0CD9B800091DC8003C4FC95 -:1013300080023BB8800091B8800399D0800091482A -:101340008003C50480024328D421210D300B4B6655 -:10135000169CF01F00368D0CC2B078075807C2A04B -:101360006F985808C2704B283014EF4400641A95E7 -:10137000340B1AD84AFA0A9CF01F002F08990A9ACF -:101380004AEB0E9CF01F002E2FFD580CC2506C082B -:10139000700CF01F002C6C09300893086C08700961 -:1013A0004A98722A910A6C09300893486C0C2F0DE8 -:1013B000D822F01F00261897CF70F01F00254A583A -:1013C0004A59118A4A5B0E9CF01F0025C2056E29FE -:1013D00049D89109CE9B08994A2A4A3B0E9CF01F96 -:1013E0000018C1C14A18340B1AD8492A0A9CF01FA8 -:1013F000001208990A9A49EB0E9CF01F00112FFD6C -:10140000580CC0C13088EF480054CC9B0E9CF01F94 -:10141000000D6C0930089308CC7B0E9CF01F00096E -:10142000CB7B000000008C8C80023B4C8003C50805 -:10143000800399D0800091488003C4FC80023BB8AF -:1014400080024190000003FC80024F4080023B225A -:10145000000004000000042800000404800212A41C -:101460008003C5108003C5148003C5188003C538E8 -:10147000D421169849871495189B109A49740E9C8C -:10148000A888F01F00170A9B30064965EF66002008 -:10149000341A0A9CF01F001449484959EB66004071 -:1014A000700B720CF01F00131896C0C0F01F0012D2 -:1014B0000A99098A0E9B0C9CF01F00106D185808A1 -:1014C000C021D822ECCAFFDC0A9C3209341BF01F71 -:1014D000000CD8220000040400000400800091DC0D -:1014E00000000428800091AC000003FC00008C8CFC -:1014F00080023B0680023B22800212A480023A68EE -:10150000D421210D328A300B1A9CF01F00301A9C16 -:1015100030073014504750544AD5F01F002E8B0C22 -:101520001A96C4A0FAC6FFD8318A0E9B0C9CF01FF5 -:1015300000274A984A990C9B50E850A96A0CF01F62 -:1015400000281896C3B04A7CF01F00274A761AD7A5 -:10155000304B1AD70E984A694A6AEC0B000CF01F00 -:1015600000260E981AD74A591AD74A5A302B0C9C83 -:10157000F01F00210E981AD74A291AD74A2A311B80 -:10158000ECCCFFF8F01F001C0E981AD749F91AD7B7 -:1015900049FA312BECCCFFF4F01F00170E982F8D79 -:1015A000ECCCFFF01AD749B91AD749BA315BF01F12 -:1015B0000012089C2FED2F0DD8226A0CF01F001787 -:1015C0000C9C8B06CF9B0000800091D000007A50CD -:1015D00080022B4C8003C5448003C54C80022C0440 -:1015E000800216FC8002113000007A5480021670CE -:1015F0008003C55480016EB8800217408003C3ACDD -:10160000800216C48003C5708002168C8003C58CCE -:101610008002161C8003C5A480022AF8EBCD40C0CE -:1016200021AD189798E8EDB80000C181368A300BDB -:101630001A9CF01F000C306A0E9B1A9CF01F000AC7 -:101640006E2830195C3850395028488870091A962D -:101650001A9A720C306BF01F00062E6DE3CD80C01D -:10166000800091D0800091DC00007A508002792CBB -:10167000D40148587009300A720C301BF01F000367 -:10168000D802000000007A508002792CEBCD404057 -:1016900021AD368A300B1A9CF01F000830084889AB -:1016A000500872081A961A9A700C302BF01F000519 -:1016B0002E6DE3CD80400000800091D000007A5074 -:1016C0008002792CEBCD404021AD368A300B1A9C3C -:1016D000F01F000830184889500872081A961A9AA4 -:1016E000700C302BF01F00052E6DE3CD8040000004 -:1016F000800091D000007A508002792CD401487883 -:10170000700EF6C9000E189AF8CBFFFA2F2A7C0C3F -:10171000F01F0003DA0A000000007A50800224E083 -:10172000D401580CC051304CF01F0004D802304C8A -:10173000F01F0003D80200008001A12880019F3023 -:10174000EBCD40E0FACD0170FACCFE98F01F001905 -:10175000581CC22145A85818E088001FE068010005 -:10176000FACBFE901A9C16D8F01F00131A95189603 -:10177000FAC7FF00368A300B0E9CF01F0010581677 -:10178000C11048F870090E9A720C300BF01F000D52 -:101790002A4DE3CD80E0300CF01F000B2A4DE3CD45 -:1017A00080E045B85808FE9AFFEE540D5418CEABB1 -:1017B00080015F448002116C800091D000007A505B -:1017C0008002792C80021720000000000000000039 -:1017D000EBCD40C0F8F800D418971696F0F80088C2 -:1017E000F8FA00E85808C040F8FC00C45D185876C4 -:1017F000C1A058065F0858365F091248C11030185A -:10180000EF4800ECEEF900D473985808C050300B44 -:10181000EEFC00C45D18EF4600E8E3CD80C05846FA -:10182000CEF0CFABEEF800EC5808CF603008301B9C -:10183000EF4800ECEF4B00F0EEF800D47198580838 -:10184000CE81CEABD401F01F0002D802800217D0A7 -:10185000F8FC00E85EFCD401F8F800D471A8580840 -:10186000C050F8FC00C45D18D802109CD802D40106 -:10187000F8F800D471185808C050F8FC00C45D187E -:10188000D802DC0AD401F8F800D471285808C050F6 -:10189000F8FC00C45D18D802DC0AD703EBCD408009 -:1018A0003008F8F90108F94801085809C031C08822 -:1018B0000E997207129CF01F00045807CFA1E3CDC8 -:1018C00080800000800091E8D401F8FC00DCF01F6B -:1018D0000002D8028002B4A4D401F8FC0090F01FEA -:1018E0000002D80280023B8CD401F8FC0090F01F6B -:1018F0000002D80280023C84EBCD40C01696F8F777 -:1019000001085807C051C0B86E075807C080EECC18 -:10191000FFFC306A0C9BF01F0004CF710E9CE3CDDE -:1019200080C000008000917CD4011699F8F801185D -:101930005808C0A1F8F800D470285808C0C0F8FCB6 -:1019400000C45D18D802F8CBFF64306A129CF01F07 -:101950000003D80ADC0A0000800091DCEBCD40F8DF -:1019600020AD1897F8F801185808C06030070E9C91 -:101970002F6DE3CD80F8F8F800D470385808CF7098 -:10198000F8FC00C41A9B1A935D181895CF05EEF861 -:1019900001185808C431EEF800D470285808CE70E9 -:1019A000FAC4FFE0EEFC00C4089B5D18CE05EEFC17 -:1019B000009078465806C301EEF800D45808C2C01B -:1019C000700C49BBF01F001BEFFC0024F9B60001AE -:1019D000EFFC102478075807C111CCAB5806C0B0F3 -:1019E0006E885808CC50EECBFFE8306A089CF01F98 -:1019F0000012CBE06E075807CBB0EEF80194580800 -:101A0000CFA16E581035CEB16E4B0A9A1A9CF01FBA -:101A1000000ACE70CE4B3006CDEBFAC4FFE0306A40 -:101A2000EECBFF64089CF01F0005CC2B8003C65C46 -:101A3000800091A08000917C800091DCD401F01F97 -:101A40000002D8028002195CD42120AD3008FB5876 -:101A50000024508816961897F6F801845818C0404C -:101A60003FFC2F6DD82277185808CFB0F8F500B892 -:101A70005885C2205905CF512DCB0A9A1A9CF01FC8 -:101A800000171A940A9A303BEEFE00D47C5858088E -:101A9000CE801ADA1AD43009EF490104EEFC00C4F2 -:101AA00030681AD8FACAFFD430181ADA48CA7C56F5 -:101AB0005D162FCDCD7B2DCB318A1A9CF01F0007F0 -:101AC0000A9AECCBFFCCFACCFFE8F01F00041A9482 -:101AD000320A302BCDAB0000800091DC80039C38B3 -:101AE000D42118951696F01F000F1897C05078381B -:101AF0002FF89938D82A310CF01F000B1894C0F039 -:101B00000C9B306A2FCCF01F000930188938EAF995 -:101B100001088909EB4401080E9CD822DC2A000048 -:101B2000800218F880028F24800091DCEBCD40FC0D -:101B3000EDD9C010407218941693ECCCFFFC1495AC -:101B4000910CF01F00161897C190E8F800907039BA -:101B5000EC081608B893B889B8B6B8A85805C100FB -:101B60000C9A0A9BF8C6FFFC0C9CF01F000D0E9C03 -:101B70005802E5F61A00E3CD80FCE3CD80FC0C9A18 -:101B80000A9BF8C6FFFC0C9CF01F00060E9C580236 -:101B9000E5F61A00E3CD80FC80009200800091DC25 -:101BA000800091D0D401401E5C791ADEF01F000243 -:101BB0002FFDD80280021B2CEBCD40F8203DF8F819 -:101BC00000BC1493129458485F0A58285F0918976C -:101BD00016961449C0603FF70E9C2FDDE3CD80F8C8 -:101BE000F8FC00DCF01F002BC0305816CF50EEC5BB -:101BF000FF64306A4A8B0A9CF01F0028C0D1EEF8BF -:101C000000D470285808C060EEFC00C41A9B5D1810 -:101C1000C370EEC5FF043008F7D6C0081AD8F3D455 -:101C2000C010FAC8FFF4069A0E9CF01F001D2FFD8D -:101C30001896580CCD1040296E2C580CC1001298E3 -:101C40000A9B0C99E06A888EF01F001618970C9C6E -:101C5000F01F00150E9C2FDDE3CD80F8EEF800D4C8 -:101C600071845804C0B01298EEFC00C40A9B0C9911 -:101C7000E06A888E5D141897CEBB3FF7CE9B306A22 -:101C8000485B1A9CF01F0005CC501A95CC5B0000F5 -:101C900080028F78800217C88000917C80021B2C04 -:101CA00080028154800091E8EBCD40C0189EEFDAAD -:101CB000C010782C580CC0600E9AF01F0009E3CDBC -:101CC00080C0FCFA00D475865806C0700E9AFCFCE1 -:101CD00000C45D16E3CD80C0E3CFC0C08002815454 -:101CE000D421497A1894301BF01F0016300A089B43 -:101CF000495CE8C5FF64F01F0015E8F701085807C4 -:101D0000C1C03006C0680E966E0C580CC1601897A2 -:101D1000306A0A9BEECCFFFCF01F000DCF51580635 -:101D2000EFF80000E9F80A42EFF81000EDF81A00A9 -:101D30000E9CF01F0008D822D82200008003C66441 -:101D400080023A1A80023058800274008000917C30 -:101D5000800091E8D401F01F0002D80280021CE04C -:101D6000EBCD408048FA1897301BF01F000FEEF8BB -:101D700000BC5818C0F00E9B300A48CCF01F000C75 -:101D80000E9CF01F000C0E9C307BF01F000BE3CD6F -:101D900080800E9C305BF01F0008E3CD8080000047 -:101DA0008003C68880023A1A8002360080027400DE -:101DB00080021CE0800217D0EBCD4040486A1896A4 -:101DC000301BF01F00060C9B300A485CF01F00051A -:101DD000E3CD80408003C6A880023A1A8002360014 -:101DE00080027400EBCD40F81894F8FC00CC580C3D -:101DF000C360E8F800D05808E08A00321897E8C3BA -:101E0000FF643005C0A8580AC200EEC7FF64E8F8B6 -:101E100000D00A38E08A00242FF5E8F600B0306AD6 -:101E2000069B0E9CF01F0015CF115806C0E06C5A9F -:101E30006EA81438CE91EECCFFFA6C4BF01F000F59 -:101E4000C0406C5A580ACE215807C0906F5AEECB4A -:101E5000FFD4E8FC00DCF01F000AC0403FFCE3CDEB -:101E600080F8EECBFFA8E8FC00DCEEFA0080F01F63 -:101E70000005CF60CF4B00008000917C8002B58CC4 -:101E80008002B52CD4211895E06C009CF01F001B3B -:101E90001897C310EAF401185804C2A1EAF800D454 -:101EA00070C85808C250189B301AEAFC00C45D186C -:101EB0001898C1E50E9C3016E06B009CF0060D46AC -:101EC000EC0B024BF01F000E58065F09580C5F1810 -:101ED0001248E8081800F8071710EAFC00CCF01FB9 -:101EE0000009089CEB4600D0EB4700CCD8220E9CA2 -:101EF000F01F0004DC2A000080009200800091F4B2 -:101F0000800091E8EBCD40801897F01F0008C031A9 -:101F1000E3CD80800E9CF01F0006C0550E9CF01F84 -:101F20000003CF7BE3CFC08080021DE480021E84CB -:101F3000EBCD40FE208D18961697149512921091B5 -:101F4000580BC580F6FB0080580BC0E16F5B580B47 -:101F5000C3210C9CFEFA02E4303BF01F00B93FFCA9 -:101F60002F8DE3CD80FE7568EDB80001CF011A9A80 -:101F7000EECCFFA8F01F00B3CEA16B484029126839 -:101F8000CE606B3840191268CE206B584039126809 -:101F9000CDE0FEFA02B2301B0C9CF01F00A9EEC48B -:101FA000FFD4302A303BECFC00DCF01F00A8089C7A -:101FB0006F5AC4386B68EDB80000CCC1EEC4FFD4D2 -:101FC0001A9A089CF01F009FCC516B484029126858 -:101FD000CC106B3840191268CBD06B58403912685E -:101FE000CB90FEFA026A301B0C9CF01F0095301A51 -:101FF000CDAB7568E21800021A93F9B40102F9B486 -:102000000001F8FC00DC1A9BF01F0092C1F05BECB1 -:10201000C4001A9C320A300BF01F008F6B48502806 -:102020006B3950196B585038089A303BECFC00DC87 -:10203000F01F0086300C189A189BECFC00DCF01F97 -:102040000087C3602F8DE3CFC0FE402A6B49F3EABF -:102050000008C0D0401A6B39F3EA0008C110403ABA -:102060006B59F3EA0008C1B04004CDFB1AD9302BFC -:102070001ADA0C9C4FAAF01F00722FEDCCBB1AD9B4 -:10208000302B1ADA0C9C4F7AF01F006D2FEDCC2B01 -:102090004F5A302B0C9CF01F006ACBCB1AD9302B37 -:1020A0001ADA0C9C4F1AF01F00662FEDCB3B580735 -:1020B000EE0B1700F60A1700F9B80158EFD8E10B3C -:1020C000EFFA1020ECFC00DCF01F0069CBC16B487C -:1020D0004029F1E90009EDB90004C5D0EDB90003CC -:1020E000C750EDB90002E081009430484E1AED4827 -:1020F00000B8301B0C9CF01F00526B384019F1E9FE -:102100000009EDB90004C500EDB90003C7513088DE -:102110004D9AED4800B4301B0C9CF01F00496B58E1 -:102120004039F1E90009EDB90000E080007FEDB928 -:102130000001C55130284D1AED4800BC301B0C9CE5 -:10214000F01F003FECFA00BC306BECFC00DCF01F31 -:10215000003FECFA00B4304BECFC00DCF01F003B1D -:10216000ECFA00B8305BECFC00DCF01F0038029A9F -:10217000049BECFC00DCF01F00421894FE91FF640D -:102180006B57E2170002C191ECFC00DCF01F003D30 -:102190000E9CCE7A31084BCAED4800B8301B0C9C1F -:1021A000F01F0027CABB31084B8AED4800B4301B32 -:1021B0000C9CF01F0023CB4BECFC00DCEACBFFDCDB -:1021C000320AF01F0033089CCCCA30884B1AED4805 -:1021D00000B8301B0C9CF01F001AC90BEDB90004AD -:1021E000FE91FF3231084ACAED4800BC301B0C9CFE -:1021F000F01F0013CA8BEDB90000FE91FF25301BC4 -:102200004A6AED4B00B40C9CF01F000DC89BEDB961 -:102210000001FE91FF1930284A1AED4800B8301B22 -:102220000C9CF01F0007C6AB301B49EAED4B00BC0D -:102230000C9CF01F0003C87B8003C8EC80023A1A94 -:102240008002BD688003C6C08002B4D48003C6E0AB -:102250008002C04C800091D08002B58C8003C734CE -:102260008003C7788003C7008003C7BC8002B52CF9 -:102270008003C8288003C86C8003C8B08002B64CB5 -:102280008002B9EC8003C8008003C8588002B91CE2 -:102290008003C8148003C8CC8003C8808003C84072 -:1022A0008003C894EBCD40C07758EDB80003F9B86F -:1022B0000008F9F80A2FF9B80104F9F81A2F18974D -:1022C000300A1696F8FC00DC149BF01F0025300A3B -:1022D000EEFC00DC149BF01F0023300AEEFC00DC57 -:1022E000149BF01F002130183009ECCBFECCEF48D6 -:1022F00000B8EF4800B4EF4900C02FF976085858ED -:10230000E08B00225808C2512FCB5849CF71EEFA0A -:1023100000BC306BEEFC00DCF01F0014EEFA00B4E1 -:10232000304BEEFC00DCF01F0011EEFA00B8305B21 -:10233000EEFC00DCF01F000DEEFC00DCF01F000CDA -:10234000E3CD80C03048EF4800B8EF4800B4CE0B72 -:102350003028EF4800B8EF4800B4CDAB8002B58C10 -:102360008002B52C8002B5EC8002B4D480028F804C -:10237000EBCD40E0205D1897F8F600B0F8F800BC0F -:102380005828C57059085F0958485F081248C2901C -:10239000302BEEFC00E0F01F002F314A300B1A9C6E -:1023A000F01F002D1A95EEFA00BC588AC200EEF814 -:1023B00000905808C03070785028149958895F18D8 -:1023C00058195F191069ECF8017CEEFC00E01A9ACC -:1023D0000C9B50495038F01F00212FBDE3CD80E009 -:1023E000300BEEFC00E0F01F001BCD8B30085018C6 -:1023F000301B500BECF900F0F3EB0008FBFB1A016B -:10240000EDB90001C120EEF800905808C1F0EEFCD3 -:1024100000D4580CCD10780C491BF01F0012FBFCA7 -:102420000A01EEFA00BCCC4B4018A1B85018CECB34 -:10243000300BF8FC00E0F01F000C300BEEFC00E06D -:10244000F01F000AEEF800BCC9EB3089CB8B00000E -:1024500080026178800091D08002581C8003C65CA5 -:10246000800091A0800261A48002618CEBCD40E0ED -:10247000189716951496F8F800905808C0D0704830 -:102480005808C0A1F8FC00D4580CC060780C48EB88 -:10249000F01F000EC1501AD648DA1AD5301B0E9C18 -:1024A000F01F000C300A0E9B48BCF01F000C0E9968 -:1024B0000C9B0A9C3008488AF01F00092FEDE3CDE1 -:1024C00080E000008003C65C800091A08003C960AA -:1024D00080023A1A800230588002740080027474BC -:1024E000D4211295169614941897F8F900BC5849FF -:1024F000C1C0F8FA00F4580AC10158895F08581998 -:102500005F0B104BF40B1800F9BB000AF9BB014636 -:10251000F01F0019EEFA00F4F4C8FFFFEF4800F4D2 -:10252000EEF900945809C020D822306A0C9BEECCFA -:10253000FF04F01F0012EEF800BC5828C111EEF89D -:1025400000D471585808C040EEFC00C45D180A99C8 -:10255000089A0C9BEEFC00DCF01F0009D8220A99B7 -:10256000089A0C9BEEFC00E0F01F0006FE99FFDECF -:10257000CE7B00008002246C800091DC8002C3CC02 -:10258000800261FCEBCD406C1ADA18951ADB1692CA -:102590001493301B48AAF01F000B48B6300A0A9B60 -:1025A0000C9CF01F000A0A990C9A069B049C3008A8 -:1025B000F01F00072FEDE3CD806C00008003C99071 -:1025C00080023A1A8002360080027400800274741D -:1025D000D401F01F0002D80280022584EBCD40C058 -:1025E000189E1497109CFCF800BC5888C240580BE9 -:1025F000C1A0FCCAFF64FCF600D46C585808C19016 -:102600001ADC16981AD9300BFCFC00C41ADBFD4BFF -:102610000104490E0E991ADE301B6C565D162FCD43 -:10262000E3CD80C0FCF600D448BA6C585808CE916F -:10263000E3CFC0C0585CF9B80002F9B80104580BE8 -:10264000C040FD4800B4CD6BFD4800B8482ACD4BD2 -:1026500080037E2080039C38EBCD40F8FACEFFE863 -:1026600018967C35F8F400D47C037C17685C7C2ECB -:10267000580CC0F01AD51ADE300E1AD71AD3ED4E08 -:102680000104ECFC00C468565D162FCDE3CD80F844 -:10269000E3CFC0F8D42118951694F8F70104580731 -:1026A000C020D822F8F900D472585808C4C01AD7EC -:1026B000F94701041AD70E981AD74B6A1AD70E9BFE -:1026C0007256F8FC00C40E995D16EAF900D42FCDBD -:1026D00072585808C3801AD7EB4701041AD70E98CE -:1026E0001AD74ACA1AD70E9B7256EAFC00C4301990 -:1026F0005D16EAF900D42FCD72585808C2401AD797 -:10270000EB4701041AD70E981AD74A2A1AD70E9BFC -:102710007256EAFC00C430295D16EAF900D42FCDC8 -:1027200072585808C1001AD7EB4701041AD70E98FF -:102730001AD7498A1AD70E9B7256EAFC00C4303960 -:102740005D162FCD5804C200EAFA00D47458580818 -:10275000C12030091AD91AD9EB4901041AD91298A3 -:102760001AD9129B7456EAFC00C4089A5D16EAFA5C -:1027700000D42FCD75A85808C070089B3019300AB6 -:10278000EAFC00C45D183018EB480104D8220000B0 -:1027900080039C38D421204DF8F900D41897169561 -:1027A00073885808C2C11094F8C6FFEAC1C8EEFC8D -:1027B00000C45D1B1AD4189B0E984C19E06A888ED1 -:1027C0000C9CF01F00408F2C2FFD580CC111580598 -:1027D000C140189B305CF01F003CEEF900D47388B8 -:1027E0005808C0D1737B580BCE31169CCE4BEECB24 -:1027F000FFF0F01F0036C1302FCDDC2A7378580867 -:10280000C0B0EEFC00C45D18C070189B306AEECCFE -:10281000FFF0F01F002F6E2C580CCEA1EF39007A7C -:102820003008F0091800C3A1EEF800D47048580829 -:10283000C100301BEEFC00C45D18C0B4EEF800D43B -:1028400071485808C0601A9BEEFC00C45D18C214A1 -:10285000300B0E9CF01F001FEEF800D47099580941 -:10286000C070300BEEFC00C45D19EEF800D470A807 -:102870005808C050301BEEFC00C45D183018EF48FB -:1028800000C84959300C72082FF893082FCDD82270 -:102890004038F1D8C002CDD0CB0B300848891AD8C7 -:1028A000E06A888E0E98EECBFFF0EECCFF86F01F2C -:1028B00000058F3C2FFD580CCB81C9FB800224E022 -:1028C0008002819C80028F1C800281E4800091DC68 -:1028D0008002269400007A6CEBCD40E018971695A4 -:1028E000300BF01F001DEEC6FF64306A49BB0C9C24 -:1028F000F01F001BC2E0EEF801185808C1F00C9B55 -:102900000E9CF01F00183006EEFC00DC0C9BEF461E -:1029100000B0F01F00150C9A0C9BEEFC00E0F01FBD -:1029200000130C9BEEFC00E0F01F00110C9BEEFC72 -:1029300000E0F01F0010E3CD80E0EEF800D470D886 -:102940005808CDE00A9A0C9BEEFC00C45D18CD8BB4 -:102950001896CD6B800217D0800217C88000917C3A -:10296000800226948002B9D48002581C800261E85B -:10297000800261D4D401F01F0002D802800228D85E -:10298000EBCD40C01897F8F800C45808C230303B6F -:10299000F01F003DEEF800D470495809C070300BAC -:1029A000EEFC00C45D19EEF800D470A95809C0709F -:1029B000300BEEFC00C45D19EEF800D47098580896 -:1029C000C050300BEEFC00C45D18300B0E9CF01FA5 -:1029D000002F6E2C3006F01F002E8F266E3C580CF8 -:1029E000C040F01F002B8F36EEF800E45808F9B80D -:1029F0000100EFF81A39EEFC0090580CC060F01F8F -:102A000000253008EF480090EEFC008CF01F0022FB -:102A10003006EEFC00DC0C9BEF46008CF01F001F24 -:102A2000EEFC00E0F01F001EEEFC00DCEF4600E0D4 -:102A3000F01F001CEEFC00DCF01F001BEEFC00DCB5 -:102A4000F01F001A0E9CEF4600DCF01F0019EEFC90 -:102A500000CCF01F00110E9CEF4600D0EF4600CCDA -:102A6000F01F00140E9CF01F0014EEFC00C4580C64 -:102A7000C070EEF800D470785808C0205D18E3CD1F -:102A800080C00000800228D88002269480028174D1 -:102A9000800242B4800091E88002B4CC800256ECFF -:102AA00080029438800294088002C0788002189CCA -:102AB00080021DB880021CE0EBCD4080169778099B -:102AC0001639C0F1761899080E9CF01F000A0E9C6A -:102AD000F01F0009E3CF808072180E38C060109993 -:102AE0005809CFB1E3CFC0806E189318CEEB000029 -:102AF00080022980800091E8EBCD40801897580C27 -:102B0000C051C1980E9CF01F000D6E0B580BCFB139 -:102B1000F01F000BF01F000B6E4C580CC060F01F34 -:102B2000000A6E4CF01F00096E8CF01F00080E9C0E -:102B3000F01F0006E3CD808080022AB88002724C2C -:102B40008002728480028F20800091E8EBCD40C02B -:102B50001897580CC05130060C9CE3CD80C0F01F74 -:102B60000021CFA1334CF01F00201896CF606E08D3 -:102B70006E19991899296E286E89993899996E3C21 -:102B8000580CC040F01F00198D4C6E7C580CC04092 -:102B9000F01F00168D8C6E498D59495891096E5A57 -:102BA0008D6A4948910A49486E698D7991090C9C52 -:102BB000F01F0012C11130196C988DB95808EDF949 -:102BC0001A0C6C285808CC906C185808CC606C4CC7 -:102BD000F01F000BCC200C9C3006F01F000ACBDB52 -:102BE0008002720880028F24800091940000046C9F -:102BF00000007AA400007AA0800275F880028F1E7F -:102C000080022AF8D431204D580C5F08580B5F0918 -:102C1000189316971248C05030050A9C2FCDD83211 -:102C2000E06C011CF01F00C01895CF803018F948E7 -:102C3000010CFEF102F66E22620B580BC100580225 -:102C4000E0800144E2C4FFFC3006760B049CF01FD8 -:102C500000B8C0C02FF6090B580BCF810A9CF01F9B -:102C600000B50A9CF01F00B4CD8BE2060328EB48A8 -:102C700000D46E0C580CE0800122F01F00B0EB4C29 -:102C8000008CF01F00AFEB4C0090CE906E185808EF -:102C9000C0A0785CF01F00A86E1CEAF60090F01F40 -:102CA00000A78D5C6E385808C0C0EAF8009070BC70 -:102CB000F01F00A16E3CEAF60090F01F00A08DBC52 -:102CC000EAF800905808CCB06E4C580CCC80F01F3D -:102CD000009DE04C0063FE9BFFC3EAC1FFEA364A59 -:102CE0006E4B029CF01F00986E5C580CE08100F95E -:102CF0006620340CF01F008C1897CB10FEF8024CA5 -:102D00008F78FEF8024AFEF9024A8F98FEF80248D0 -:102D10008F058F458F658F898FC83006FEF4023C82 -:102D20008F168FA4FEF202388FB2EAF900907288F3 -:102D30008FD8EAF9009072988FE8EAF9009072A8AB -:102D40008FF8F01F0088EB4C00E0E08000C20C9B85 -:102D5000F01F00850C9BEAFC00E0F01F0084EAF8FD -:102D600000D470685808E08000A7029B0A9C5D1898 -:102D7000EB4C00C4FE90FF74EAF8009070BBEAF8D8 -:102D800000D470895809C0605D19FE95FF69EAF8A2 -:102D900000D471685808C0F0EAFC00C45D181897A8 -:102DA000C0A0029BF01F0062C0600E9B364A029CCE -:102DB000F01F006534CCF01F005CFE90FF514EC840 -:102DC0004EC9991899294EC84EC9993899494EC883 -:102DD0004EC9995899694EC84EC9997899894EC873 -:102DE0004EC9999899A94EC84EC999B899D94EC853 -:102DF0004EC999C899E94EC84EC9F9440040F942F4 -:102E00000044990599F8F9490048F01F0069EB4C16 -:102E100000DCFE90FF25EB39007A3008F00918003D -:102E2000C5C1300A029BF01F0063EAF80090EAFC7B -:102E300000DC707BF01F0060EAFB00E0EAFC00DCD5 -:102E4000F01F005EEAFA009074C85808C60174D8F2 -:102E50005808C52174EA580AC080302BEAFC00DC0F -:102E6000F01F0057FE91FEFC009B0A9CF01F0055CE -:102E7000FE95FEF6EACBFFF0EAFC00DCF01F005204 -:102E80003FF8EB4800E4EAF900D473485808C0D092 -:102E90001A9BEAFC00C45D18C0814038EDB80002FE -:102EA000C0413018EB4801188B0366088B18870562 -:102EB000FE9FFEB5EB4800C4CD2A6E3B6E1CF01F92 -:102EC0000043EB4C0090CFDAF94B00D4CD3A0E9C86 -:102ED000F01F0019FE9FFEC4EACAFF86CA4BF01F0E -:102EE000001958FCFE9BFEBC6E5B310AEACCFF86E3 -:102EF000F01F0015CFEA109A301BEAFC00DCF01F2F -:102F00000030FE91FEADEAFA0090CA5B109A300BD9 -:102F1000EAFC00DCF01F002AFE91FEA2EAFA009013 -:102F2000C97B000080028F2400000470800091A003 -:102F300080022980800091E88000919480021348EB -:102F4000800091B8800091AC80021D60800225DC79 -:102F500080021BB8800218C8800218E8800218D8C6 -:102F60008002609C800261E8800261D48002184483 -:102F700080021850800225D0800229748002304CD3 -:102F8000800226588002360080021A3C80021928EE -:102F900080021CA880021F0480021BA480021D5412 -:102FA0008002186E80021884800218568002C0DCED -:102FB0008002B4C08002B4B88002B4CC8002B4D421 -:102FC000800227948002B90480023B4CEBCD40E0A4 -:102FD000306A18971695F8C6FF64497B0C9CF01F61 -:102FE0000017C270EEF801185808C1800C9B0E9CA7 -:102FF000F01F00130E9CF01F00133006EEFC00DCE7 -:103000000C9BEF4600B0F01F00100C9A0C9BEEFCDE -:1030100000E0F01F000EE3CD80E0EEF800D470E891 -:103020005808CE500A9A0C9BEEFC00C45D18CDFBEC -:103030001896CDDB800217C88000917C8002269410 -:10304000800276648002B9D48002581CD401F01F3B -:103050000002D80280022FCCEBCD40C0499BF8C7BC -:10306000FF641896306A0E9CF01F0017EDFB189C49 -:10307000E06800A2EDD8E007EDFB08A20FD81AD84F -:103080000FC91AD90FB81AD80FA91AD90F9848FA28 -:103090001AD80C9C1ADB302BF01F000D0E9B0C9CD9 -:1030A000F01F000CECFC00DCF01F000B303B0C9C14 -:1030B000F01F000A30182FADED4800A8E3CD80C006 -:1030C000800217C88000917C8003C9B880023A1A38 -:1030D00080021AE08002BA1C80022FCCD431FACDD3 -:1030E00000D03007F94700A8189516941491580B92 -:1030F000E0800217F6F60084E8CCFFFA76ABF01F0A -:10310000012A1AD61ADC09D81AD809C91AD909B855 -:103110001AD809A91AD909981AD809890A9C1AD95A -:10312000FEFA0488302BF01F01220E9B306A2F8D8F -:10313000EACCFF64F01F011F306A089BEACCFF5EF7 -:10314000F01F011D0A9CF01F011D300AEAFC00DC83 -:10315000149BF01F011B635AEDBA0003C061E2F833 -:1031600001745808E08100B1301063795809C0E05B -:10317000E1D9C0011298EDB90001E08000A4EDB9D9 -:103180000002F9B80004E1D8E030EAF800D4710890 -:103190005808C060009BEAFC00C45D18635A5804DC -:1031A000C07069585808C5A0F1DAC002C6E114978A -:1031B000E2170013C5B1029B0A9CF01F0102FAC876 -:1031C000FF9453375028089B0A9CF01F00FFEAF831 -:1031D00000B45828E08001BAE089007F5818E080E8 -:1031E000017130285038EAF800B85828C7F058283C -:1031F000E08900805818E080016230285048EAF9E0 -:1032000000BC58495F0B58895F08F7E81008C78071 -:10321000E2C9FECCE2C8FF0C16963007EC1600019E -:103220005019500812931092505766095809E081BE -:1032300001122FF72FC32F025847CF81EAF900BCA4 -:103240005889C671E2F800F04059F1D8C002F3E89D -:103250001008E08101311096C5F8E8F800805808A0 -:10326000CA70F1DAC002CA40C1083509FAC8FF3095 -:1032700010D9029AFAC9FF94300B50290A9CF01F0A -:1032800000D3CA202CCDD832E2F801485808E0819A -:10329000010FEAF900B0089A300BEAFC00DCF01FDD -:1032A00000CCE080017A3509FAC8FF3010D9029AC3 -:1032B000FAC9FF94089B50290A9CF01F00C4C8401B -:1032C000CE2BA1B0C5DBE2F801785808F9B00004B4 -:1032D000F9B00105C4BB5848C8605908C831303935 -:1032E0005039EAF800B85828C83130195049C88B0D -:1032F0005848C8505908C82130395049C81B3008AF -:103300005058E2C8FECC30165018E2C8FF0C5008E6 -:103310005909E080011FEAF800D470A85808C0508D -:103320000C9BEAFC00C45D18303B0A9CF01F00A90E -:10333000354AFAC7FFE8300B0E9CF01F009E580478 -:10334000E0800126E8F8008450645098E8C8FFFA4D -:10335000507868A95089E2FA0184581AE080009EEA -:103360004029403850A950C84049433850D950B836 -:10337000EAF800BC5848E08000E7E0890088581867 -:10338000E08000A43018510A4014400350E850F087 -:10339000FACAFFAC0899069BFACCFF9C7208580841 -:1033A000C040F54BFFF0720814A82FC92F0B183A34 -:1033B000CF61E2F801445198EAF601185806E0801E -:1033C0000089FEFA0212302B0A9CF01F0079301996 -:1033D000EAF800BC5908E080008F5809E0800098A6 -:1033E000305B300A0A9CF01F007D40585808C1C06D -:1033F000EAF800D471485808C170FACBFF44EAFCDF -:1034000000C45D18C1114328EDB80001C0D1189760 -:103410004F30189268095809E08100A12FF72FC496 -:103420002F035847CF81EAF800B05808C070103118 -:10343000C050EAFC00E0F01F006BEAFC00DC029BDD -:10344000EB4100B0F01F00680A9CF01F00682CCD13 -:10345000D832EAFB00D4E2FA014476585808C13069 -:103460001AD91AD23009EB4901041AD94DC90E3ABA -:103470005F081AD94DEA76560E99301BEAFC00C453 -:103480005D162FCD30165056CD5A5888C2005908B7 -:10349000FE91FF7A3048C78BE2F901A45809FE9AE1 -:1034A000FF6140985808FBF90A09C5BB6368F1D869 -:1034B000C021CF0A50375047C2FB30085048CA0AD3 -:1034C00030085038FE9FFE913008C5EB3038C5CB30 -:1034D000EAF800D470F85808FE90FF750E9BEAFCDD -:1034E00000C45D18FE95FF6F0C99EAF800BC5908FE -:1034F000FE91FF75029B0A9CF01F003E0A9CF01F84 -:10350000003E307B0A9CF01F0033C70BEAF80090A6 -:1035100070495819F9BB000AF9BB013CC63B745B02 -:10352000744CF01F00214B5A1ADC302B0A9CF01F00 -:103530000020306A089BEACCFF5EF01F001E2FFDC2 -:10354000FE9FFE023028C20B30195039FE9FFE4DFF -:10355000029B0A9CF01F0027CDFAEAFB00D4E2FA96 -:10356000014476585808FE90FF5B1AD91AD3EB42F3 -:1035700001041AD20E3A5F081AD00E99765649CA3B -:10358000301BEAFC00C45D162FCDC49B6248507806 -:1035900062595089CE1A301BEAFC00E0F01F001877 -:1035A000FE9FFE8380023A1C8003C9F880023A1A0B -:1035B000800091D0800091DC80021DB88002B5ECC3 -:1035C000800222A48002269480021F308002938011 -:1035D000800217D08003CA6C8002246C80037E2096 -:1035E000800257488002B9D48002237080039C383F -:1035F00080021A4880021CE08003CA488002559667 -:10360000EBCD40C021AD1897F8F800AC5808C68142 -:10361000F8F6010CEEFB009076095809C061C8F875 -:1036200072095809E080008CF2F801945808CF9193 -:103630003008EF48010C76495809C670EEFC00D4FA -:10364000580CC0E04DAB780CF01F005AEFF8002486 -:10365000F1FC0A04EEFB009076485808C560EEF8CD -:1036600000E85818E088008D760AEEF800C858186F -:10367000C3F0580AC090103AC041C3981438C370C0 -:10368000740A580ACFC15826C04076485828C690B8 -:10369000580AEFFA1A32F9B80001EFF80A32EEF9D7 -:1036A00001105809C04176485818C710EEF80118A3 -:1036B0005808C4F1580AF40B1700F60A1700F5FB76 -:1036C0001004F5FA1005EEF800D470B85808C410CC -:1036D000EEFC00C45D18C3D12E6DE3CD80C0F8F6BA -:1036E000010C5806C9812E6DE3CD80C0740A580ABA -:1036F000CCB0F4F801945808CFA175885808CC4193 -:1037000076485828CF41CC0B0E9CF01F002BCE5092 -:10371000EEF800B05808EFFC0A2C0E9CF01F0027B2 -:10372000300B1A9C368AF01F00261A961A9A0E9CA5 -:10373000300BF01F00242E6DE3CD80C05806FE91A3 -:10374000FF790E9C301BF01F00202E6DE3CD80C052 -:103750000E9C300A30ABF01F001D2E6DE3CD80C0F3 -:10376000580AC1D074085808EFFA1A32F9B80001A3 -:10377000EFF80A320E9C300BF01F0015CAEB302B0D -:103780000E9CF01F0011EEFB0090C6FBEF480110ED -:10379000129A0E9C303BF01F000BC9FB30180E9C98 -:1037A000EF4800C8149BF01F0009C97B8003C65C6A -:1037B000800091A08002195C80022370800091D06B -:1037C0008002792C800217D080022584800230DCB0 -:1037D0004848300A48499118910A930A5EFF000050 -:1037E00000007A7000007A78EBCD40681695189347 -:1037F000F6CCFFEDF01F0022314A1896300BF01F77 -:1038000000210A9A8D15ECCCFFF0069BF01F001EDC -:1038100049EAF5090042AC09F50800422FF8F558CD -:10382000004249B530088D286A198D3993062F86D4 -:103830008B1649866C08F0C9FFFF8D095909E0888D -:1038400000180A936A0C782A580AF9F80003E7F876 -:103850000A01F9F81003F5F81A0320197838910ACB -:103860008D09F01F000D6C095909FE9BFFED300A10 -:10387000326C149BF01F0009E3CF90688000920027 -:10388000800091D0800091DC000087F400007A7005 -:1038900000007A78800091E880014658EBCD40E046 -:1038A00030961697305E300B33A51989F2C8003078 -:1038B000EC081800E08B0019F2CA0030580AC2C5A3 -:1038C0001999F2C80030EC081800E08B0017F2C814 -:1038D00000305808C215F1EA1048EE0B0B08585B8F -:1038E000C291E3CF80E0F2C80061FC081800E08BD1 -:1038F000000EF2CA0057CE3BF2C80061FC08180067 -:10390000E08B000DF2C80057CE5BF2C80041FC0806 -:103910001800E088000DE3CFC0E0F2C80041FC08C9 -:103920001800FE9BFFFAF2C80037CD4BF2CA0037F1 -:10393000CC6B19A8EA081800CEF12FFB586BCD20EC -:103940002FDCCB4BEBCD40E016961497580AC4C041 -:10395000300B3095305EC1B8F2CA0030580AC365EA -:103960001999F2C80030EA081800E08B0021F2C86B -:1039700000305808C2B5F1EA10485808C275EC0B7F -:103980000B082FFB1637E08800302FEC1989F2C89E -:103990000030EA081800FE98FFE1F2C80061FC0858 -:1039A0001800E08B000EF2CA0057CD9BF2C80061F0 -:1039B000FC081800E08B000DF2C80057CDBBF2C820 -:1039C0000041FC081800E088000DE3CFC0E0F2C819 -:1039D0000041FC081800FE9BFFFAF2C80037CCAB90 -:1039E000F2CA0037CBCBE3CF80E0F6CA00015E6CB1 -:1039F000F80A000913882FF85C58B2885E1CF6C8D4 -:103A00000002100CC08819882FF85C58B888201C58 -:103A100058085E1C201ACF875EFC5EFCEBCD40C0D0 -:103A200049071696189BE0460020F9B60B200E9C1D -:103A30000C9AF01F000D3008EE060B080F8858088E -:103A4000C0D00E9C35E935FA2208F2081800F9FAC0 -:103A5000BE002FFC19885808CF81482CE3CD80C0C8 -:103A600000007A7C800091DCEBCD40FE189114922E -:103A7000169C1293580BC2A0E20B00045809C20016 -:103A800002973006C0881835E08A001418070C33F6 -:103A9000E0880018E4060708E80701051AD80E9C1C -:103AA00048CA0A9B2FF6F01F000C2FFD580CCEC4FD -:103AB0003008EE01010CE968FFFFE3CD80FE0297BC -:103AC0003008EE01010CE968FFFFE3CD80FE000045 -:103AD0008003DA3080009148580CC140F8FC00D0D7 -:103AE000580CC1002FCCF8F8FFFC5808C0417809E9 -:103AF0005809C0901638C0302F8CCF6B7808143816 -:103B0000CFC15EFF5EF9780C580C5E0C7828163831 -:103B1000C0515EFC782816385E0C780C580CCFB17A -:103B20005EFC30383189F94800F0F9480058F9480E -:103B3000005431E8F949004CF94800503FF9E06879 -:103B40000576F949017CF948019C5EFCEBCD40E02B -:103B500018961695344CF01F000C1897C1103018A9 -:103B60009978993899485806C0500C9CF01F000766 -:103B70008F5C5805C0500A9CF01F00048FBC0E9C3F -:103B8000E3CD80E080028F2480009194EBCD40C093 -:103B9000169679075807C051C0C86E375807C090AD -:103BA0006E0C0C9BF01F0004CF910E9CE3CD80C0E7 -:103BB000E3CF80C0800091A0EBCD40FC1695189417 -:103BC000580C5F0B58055F081493104B1292C040BD -:103BD0003FFCE3CD80FC580ACFC048E73006C06800 -:103BE0002FF62E07E0460038CF406E0B0A9CF01FE0 -:103BF000000ACF710699049A089B0E9C6E185D18F6 -:103C0000F9BC01FFF9BC0000E0460038CE31CE1B04 -:103C10008003CC00800091A0EBCD40801897580C19 -:103C2000C0A0780CF01F00056E1CF01F00040E9C55 -:103C3000F01F0002E3CD8080800091E8D421189429 -:103C4000169579075807C1A03006C0680E966E3CDD -:103C5000580CC14018970A9B6E0CF01F0009CF71D9 -:103C60005806EFF81003EDF81A03EFF80003E9F82F -:103C70000A100E9CF01F0003D82ADC2A800091A0B5 -:103C800080023C18EBCD406016961895760BF01F1D -:103C900000056B088D38EB460040E3CD80600000E6 -:103CA00080023C3CD431202D500B129CF01F003C74 -:103CB0001890C730198A580AC670300118965011EA -:103CC000320230930294C0382FF60D8AE40A1800AD -:103CD0005F08E60A18005F091248E8081800CF518B -:103CE000580AC2C00D87E40718005F18E6071800DD -:103CF0005F191268E8081800C4505807C4300C95C2 -:103D0000C0385807C0D02FF50B87E40718005F189C -:103D1000E60718005F191268E8081800CF31AA8476 -:103D20004A0B0C9CF01F0020C171A1A15807C06074 -:103D3000EAC6FFFF0D8A580ACCA1009CF01F001BA9 -:103D40005801C2404008F141005C40195809C25175 -:103D5000129C2FEDD832496B0C9CF01F0013C03120 -:103D6000A1B1CE5B0C9C493BF01F000FF9B80004D9 -:103D7000E3D8E031FBF91001F7B901FFFBF91A01B3 -:103D8000CD6B0C95CCDBF01F0009300840093FFCDF -:103D9000F348005C2FEDD8322FEDDC3A800091948F -:103DA0008003D304800091A0800091E88003D30CAD -:103DB0008003D314EBCD40FE169CF01F00451891F4 -:103DC000C6B0198A580AC7A0189630023203309438 -:103DD000E80A18005F08E60A18005F091049300871 -:103DE000F0091800C0E0109B2FF60D8AE60A1800B3 -:103DF0005F08E80A18005F091248F6081800CF515A -:103E0000580AC4500D87E80718005F18E607180025 -:103E10005F1910693008F0091800C3705807C350C3 -:103E2000109A0C95C0385807C0D02FF50B87E607BD -:103E300018005F18E80718005F191268F4081800E6 -:103E4000CF3130084A3BAA880C9CF01F0023C0F1F8 -:103E5000A5A25807C060EAC6FFFF0D8A580ACB9199 -:103E6000029CF01F001E049CE3CD80FE49CB0C9CFD -:103E7000F01F0019C031A3B2CEDB49AB0C9CF01F80 -:103E80000016C0E1A3A2CE6B0C95CDCB029CF01F17 -:103E900000135802CE913FF2049CE3CD80FE492BE3 -:103EA0000C9CF01F000DC031A1B2CD4B0C9C48FB07 -:103EB000F01F0009C071A1A2CCDBF01F00083FF287 -:103EC000CD3B029C3FF2F01F0005CCEB80009194AB -:103ED00080039A74800091A0800091E880039A6C1E -:103EE0008003D31C8003D3248003C8E4EBCD40803F -:103EF0001697149C129BF01F00085BFCC031E3CFA7 -:103F0000C0801898E018FFE1CFB1EF4C0050109C32 -:103F1000E3CD808080023DB4EBCD40801697149CA9 -:103F2000129BF01F00085BFCC031E3CFC0801898E3 -:103F3000E018FFE6CFB1EF4C004C109CE3CD808041 -:103F400080023DB4D431201D500B129CF01F00485C -:103F50001891E080007F198A580AC6B0300218967E -:103F6000049032033094E80A18005F08E60A18004B -:103F70005F0910493008F0091800C0E0109B2FF6C7 -:103F80000D8AE60A18005F08E80A18005F0912485F -:103F9000F6081800CF51580AC2F00D87E80718003C -:103FA0005F18E60718005F1910693008F00918005B -:103FB000C3E05807C3C0109A0C95C0385807C0D04A -:103FC0002FF50B87E60718005F18E80718005F1940 -:103FD0001268F4081800CF3130084A6BAA880C9C8C -:103FE000F01F0025C161A1B25807C060EAC6FFFFFB -:103FF0000D8A580ACB91029CF01F00205802C1B0D4 -:104000004009F34200545800C241009C2FFDD832B1 -:1040100049BB0C9CF01F0018C031A1A2CE6B499B7C -:104020000C9CF01F0015C0E1A3B2CDFB0C95CD5B3D -:10403000F01F0012300840093FFCF34800542FFDE8 -:10404000D832491B0C9CF01F000CC051A3A2CCDB42 -:104050002FFDDC3A0C9C48DBF01F0007F9B800107C -:10406000E5D8E032F7B001FFCC0B0000800091945E -:104070008003C8C4800091A0800091E88003D32C05 -:104080008003D3348003C8E48003C8E0D431202DFA -:10409000500B129CF01F00391890C6D0198A580A8C -:1040A000C610300118955011320230930294C03876 -:1040B0002FF50B8AE40A18005F08E60A18005F096A -:1040C0001248E8081800CF51580AC2C00B87E4070D -:1040D00018005F18E60718005F191268E808180052 -:1040E000C3F05807C3D00A96C0385807C0D02FF67F -:1040F0000D87E40718005F18E60718005F191268BB -:10410000E8081800CF31AC8449DB0A9CF01F001D81 -:10411000C171A1A15807C060ECC5FFFF0B8A580A06 -:10412000CCA1009CF01F00185801C1E04008F141EB -:10413000005840195809C1F1129C2FEDD832493B63 -:104140000A9CF01F0010C031A1B1CE5B0A9C490B44 -:10415000F01F000CCFA040192FF95019CDCB0A96B3 -:10416000CD3BF01F0009300840093FFCF3480058E0 -:104170002FEDD8322FEDDC3A800091948003D340AC -:10418000800091A0800091E88003D3448003D3484D -:10419000EBCD40401896784CF01F00466D2CF01F78 -:1041A0000045ECFC00D0F01F00436DACF01F004157 -:1041B0006DCCF01F00406DECF01F003EECFC008069 -:1041C000F01F003CECFC0088F01F003AECFC009073 -:1041D000F01F0038ECFC0094F01F0036ECFC009857 -:1041E000F01F0034ECFC009CF01F0032ECFC00A03F -:1041F000F01F0030ECFC00A4F01F002EECFC00A827 -:10420000F01F002CECFC00ACF01F002AECFC00B00E -:10421000F01F0028ECFC00B4F01F0026ECFC00B8F6 -:10422000F01F0024ECFC00BCF01F0022ECFC00C0DE -:10423000F01F0020ECFC00C4F01F001EECFC00C8C6 -:10424000F01F001CECFC00CCF01F001AECFC00D4AA -:10425000F01F0018ECFC00D8F01F0016ECFC00DC8E -:10426000F01F0014ECFC00E0F01F0012ECFC00E872 -:10427000F01F0010ECFC00ECF01F000EECFC0150F5 -:10428000F01F000CECFC016CF01F000AECFC01803C -:10429000F01F0008ECFC018CF01F0006ECFC01A0F4 -:1042A000F01F00040C9CF01F0003E3CD80400000D1 -:1042B000800091E8EBCD40C0189678085808C031CE -:1042C000C0880E987007109CF01F00155807CFA1EA -:1042D0006D085808C031C0880E987037109CF01FC8 -:1042E00000115807CFA16C5CF01F000F6C6CF01F21 -:1042F000000E6C8CF01F000C6C9CF01F000B6CAC63 -:10430000F01F00096CBCF01F00086C1CF01F0006B9 -:104310000C9CF01F0005E3CD80C00000800241909E -:1043200080023C18800091E8EBCD4040320818969E -:104330001AD8E0691000F8C8FFDC785A784B792C5D -:10434000F01F000430182FFDED480044E3CD8040FD -:104350008002B254D421F60815011695F0C6FFFF6D -:1043600018940C9CF01F00061897C0600A99089AD0 -:104370000C9BF01F00040E9CD822000080028F24AA -:1043800080023A68EBCD40E016951896F6CCFFFD1A -:10439000F01F00091897C0C00C9B0A9A322618C655 -:1043A000F01F0006EE0500093008B296B2A80E9C78 -:1043B000E3CD80E080009200800091DCD401580CB5 -:1043C000C1D0580BC160198835E92208F2081800DD -:1043D000E08B0013129A3009C088F80907082208F8 -:1043E000F4081800E08B00092FF9123BFE9BFFF741 -:1043F000F01F0003D802F01F0003D802800243849C -:1044000080024354D4011698F6FC0140580CC06059 -:10441000189BF0CCFEDCF01F0002D802800243BCE7 -:10442000D4011698F6FC013C580CC060189BF0CCE7 -:10443000FEECF01F0002D802800243BCD4011698A3 -:10444000F6FC0138580CC060189BF0CCFEFCF01F45 -:104450000002D802800243BCD4011698F6FC013455 -:10446000580CC060189BF0CCFF0CF01F0002D80263 -:10447000800243BCEBCD40F831EC1694F01F0028CD -:104480001896C3906979F8C3FFE2EDB90000C360E4 -:104490001897EDB90001C1614A294A380C37F20872 -:1044A0001710E60701051AD84A0A0A9B0E9CF01F4E -:1044B00000202FFD580CC1C51835E08A001A1807D6 -:1044C0006979EDB90002C171496949780C37F20880 -:1044D00017100E9C1AD8E6070107496A0E9BF01FB9 -:1044E00000142FFD580CC0451837E089000530082E -:1044F000E768FFFF0C9CE3CD80F848B848EA1AD87B -:1045000031EBF01F000B2FFD580CCF2559DCFE9925 -:10451000FFF0EC0C00076979CBDB000080028F24F0 -:104520008003936480037E208003D35880009148E9 -:104530008003D3648003D350EBCD40F81894332C20 -:10454000F01F003E1896C650F8C3FFCEEDB400042D -:10455000C6301897EDB40003C1514B994B980C37F6 -:10456000F2081710E60701051AD84B7A0A9B0E9C31 -:10457000F01F00362FFD580CC4951835E08A00470F -:104580001807EDB40002C1514AD94AE80C37F208C5 -:104590001710E60701051AD84ADA0A9B0E9CF01F8D -:1045A000002B2FFD580CC3251835E08A0030180762 -:1045B000EDB40001C1514A294A280C37F2081710FE -:1045C000E60701051AD84A3A0A9B0E9CF01F001F05 -:1045D0002FFD580CC1B51835E08A00191807EDB445 -:1045E0000000C171496949780C37F20817100E9C18 -:1045F0001AD8E6070107498A0E9BF01F00142FFD09 -:10460000580CC0451837E08900053008E768FFFFFF -:104610000C9CE3CD80F848B8490A1AD8332BF01F18 -:10462000000B2FFD580CCF25E04C0031FE99FFEF19 -:10463000EC0C0007C90B000080028F2480039364F8 -:1046400080037E208003D374800091488003D37C54 -:104650008003D3888003D3908003D36CD401774C3C -:10466000F01F0002D802000080024538D401773CD8 -:10467000F01F0002D802000080024538EBCD40F860 -:10468000332C1693F01F00401896C6906759F8C453 -:10469000FFCEEDB90001C6601897EDB90000C16109 -:1046A0004BA94BB80C37F2081710E80701051AD8C8 -:1046B0004B8A0A9B0E9CF01F00382FFD580CC4C576 -:1046C0001835E08A004A18076759EDB90003C1613F -:1046D0004AE94AF80C37F2081710E80701051AD81A -:1046E0004AEA0A9B0E9CF01F002C2FFD580CC34574 -:1046F0001835E08A003218076759EDB90002C16128 -:104700004A294A380C37F2081710E80701051AD869 -:104710004A3A0A9B0E9CF01F00202FFD580CC1C581 -:104720001835E08A001A18076759EDB90004C171FD -:10473000496949780C37F20817100E9C1AD8E80717 -:104740000107498A0E9BF01F00142FFD580CC0452D -:104750001837E08900053008E968FFFF0C9CE3CDBD -:1047600080F848B8490A1AD8332BF01F000B2FFDE8 -:10477000580CCF25E04C0031FE99FFEFEC0C000700 -:104780006759C8CB80028F248003936480037E2006 -:104790008003D3A4800091488003D3B08003D390DA -:1047A0008003D3BC8003D398EBCD40C030AC1696C9 -:1047B000F01F00181897C1806D69EDB90000C17035 -:1047C000189A301BEDB90001C0F149384939580B2E -:1047D000F0091700149C1AD9EECBFFF6141B490AF6 -:1047E000F01F00102FFD0E9CE3CD80C048B848EAB2 -:1047F0001AD830ABF01F000B2FFD580CCF55589C2A -:10480000FE99FFF3EE0C000A6D69300BCDCB000072 -:1048100080028F248003936480037E208003D3D0A2 -:10482000800091488003D3C8EBCD40C01697768CAA -:10483000580CC05118960C9CE3CD80C0314CF01F31 -:1048400000101896CF90EF38001DEF3A00181AD8D4 -:10485000EF39001C1AD9EF38001B1AD8EF39001AAB -:104860001AD9EF380019314B1AD81ADA485AF01F02 -:10487000000630082FADED680013CDEB80009200EC -:104880008003DA4880009148EBCD40E078351696F9 -:10489000314CF01F000A1897C0C0EC050308488A85 -:1048A0001AD8314BF01F000730082FFDEF680013B6 -:1048B0000E9CE3CD80E00000800092008003DD6864 -:1048C00080009148EBCD40801697772C580CC09013 -:1048D000F01F0009189B6F2CF01F0008E3CD8080AB -:1048E000771C580CC060F6CCFFDC320BF01F0004C4 -:1048F000E3CD8080800091B88002438480024354DD -:10490000EBCD40807838F60800076E085808C0C024 -:10491000784C580CC0C0F60C030C189B109CF01F70 -:104920000007E3CD8080109CE3CD8080109CF01FB9 -:1049300000046E08CF3B0000800243BC800091B8A9 -:10494000EBCD40F83228169418961989F009180012 -:10495000C0A0F01F001BEBDCC001C19030070E9C13 -:10496000E3CD80F8F8C7FFFF322B0E9CF01F001537 -:10497000CF6019985808CF31B8880E9CF01F0010EE -:10498000890C0E9CF01F00101897CEABF80316018F -:10499000E6CCFFFFF01F000D1897CE200C9C069A66 -:1049A0000E9BF01F000BC051EE030B0C8903CD8B47 -:1049B0000E9C0A97F01F0007CD3B0000800091B8C5 -:1049C00080009158800091948000920080023944C8 -:1049D000800091E8D421205D18951094129C1696C1 -:1049E000F01F000F1897C1906C0A590AE08B001451 -:1049F000189B0A9CF01F000B0E9CF01F000B48BA7E -:104A00001AD4314BFACCFFFCF01F0009300C2FFDFB -:104A10002FBDD822F01F00042FBDDC2A80024940A0 -:104A2000800091DC800091E88003D3D88000914819 -:104A3000D4013038F6CCFEDCF6CBFEC0F01F00020D -:104A4000D8020000800249D4D4013028F6CCFEEC14 -:104A5000F6CBFEC4F01F0002D8020000800249D449 -:104A6000D4013018F6CCFEFCF6CBFEC8F01F0002D5 -:104A7000D8020000800249D4D4013008F6CCFF0CE3 -:104A8000F6CBFECCF01F0002D8020000800249D411 -:104A9000EBCD40F8201D18971693129C1A9BF01F1F -:104AA00000171895C2306E595809C0504008103987 -:104AB000E08B00206E695809C04040081039C133AE -:104AC0006E366E44E60600066C0CF01F000D8D0578 -:104AD0006E4C580CC0504008300CE60409082FFDFD -:104AE000E3CD80F80A9CF01F00062FFDE3CFC0F84D -:104AF000F01F00033FFCCF4B80024940800091E84B -:104B0000EBCD40FEF6F700D05807C0510E94089C3C -:104B1000E3CD80FE364CF01F00191894CF90EEC6FE -:104B2000FFFCF8C3FF9C189749514962ECFCFFFC5D -:104B3000580CC2116C0B580BC1A02F86F01F00122D -:104B4000CF600837E2081700E40817101ADCE60700 -:104B500001051AD80E9C48DA0A9BF01F000D2FEDB4 -:104B60001807580CC0451835FE99FFE23008E76871 -:104B7000FFFFCCEB6C0BCE2B80028F2480037E20BA -:104B800080039364800271BC8003D3E48000914869 -:104B9000D431205D500B129CF01F0056502CE08049 -:104BA000008E198A580AE080009B3009402650196F -:104BB000503912905049320230931294C0382FF677 -:104BC0000D8AE40A18005F08E60A18005F09124817 -:104BD000E8081800CF51580AC4E00D87E407180010 -:104BE0005F18E60718005F191268E8081800C64049 -:104BF0005807C6200C95C0385807C0D02FF50B8732 -:104C0000E40718005F18E60718005F191268E80843 -:104C10001800CF31AA842FF0403CE00B1503F01FA1 -:104C200000361891C4E040490C9CE20900060C9B38 -:104C3000F01F00328D1C6C085808C141580CC1018E -:104C400040182FF850185807C15040482F88504836 -:104C5000EAC6FFFF0D8A580AC3C05031CB3B591C2E -:104C6000C2404009F2F801782FF8F348017858075C -:104C7000CED15031E0C8FFFFF0071503402CF01FE4 -:104C800000200E9B403CF01F001CC2E0F8000039E1 -:104C90003008931893084008F14C00D04019580987 -:104CA000C0D1129C2FBDD8324009F2F801742FF800 -:104CB000F3480174CC9B0C95CAEB3FFC2FBDD83256 -:104CC000403CF01F000F402CF01F000D2FBDDC3AC0 -:104CD000E0C8FFFF5031F0071503CD1B501A308795 -:104CE000503A1490CCCB403CF01F00053FFCCE7BEB -:104CF00080009194800091F48002720C800091E811 -:104D0000D4213228129716951389F0091800C0A0F3 -:104D1000320A2DCB0E9CF01F00271896C2F03FFCE4 -:104D2000D822EEC6FFFF322B0C9CF01F0023C3C01D -:104D3000F8060107EEC80008E0480037FE9BFFF1C7 -:104D40006B2C580CC060F01F001D0E3CC2606B2C19 -:104D50003004EB440044F01F001AEECCFFFFF01FBC -:104D60000019EB4C0048CDC00C9B0E9AF01F0016AA -:104D70006B28089CF0070B04D822EF390040F80993 -:104D80001800CCE16B2CF01F000E3018EB460048E9 -:104D90000C9CEB480044D8220E9A0C9B6B2CF01F05 -:104DA000000BCD61CBEB0C9CF01F00041897CC3BA3 -:104DB0008002394480009158800091B8800091E8C9 -:104DC00080009200800091DC8000917CEBCD4080DF -:104DD0001697129C2E8BF01F0006F9BC01FFF9B844 -:104DE0000001EFF80A08E3CD808000008002389CC3 -:104DF000EBCD40C018976E38129CF00B000630AA1D -:104E0000300BF01F000C8D0C18996E585808C030EC -:104E1000103CC0956E6C580CC0401839E0890007F2 -:104E2000E3CF80C08D08E3CFC0C08D0CE3CFC0C0FE -:104E300080009170D42116941895782B580BE08A35 -:104E400000557817683E6E0C78381C38C410EECACE -:104E5000FFFC3009C058150C78381C38C3902FF966 -:104E60001639CFA52FFB0E9CA36BF01F00241896BC -:104E7000C3506A2C580CE08A003B6C08683E7039BD -:104E80001C39C355ECC8FFFC300AC0A81097700845 -:104E9000F40B15027039EEC8FFFC1C39C2052FFA5D -:104EA000143CFE99FFF5F4C8FFFFEC0A002BA36841 -:104EB0001697F80A010AEC08000CA36AF01F00100C -:104EC0008F048B166A28300C2FF88B28D82218985C -:104ED000781C580CCFD19114D822DC2AF4C8FFFFDB -:104EE000EC0B000BA368CE6B7817CBDB0C97300A6A -:104EF00030480C9BCDFB0000800091F4800091C4F1 -:104F0000D4211895781CF01F000D300C8B1C8B2CB5 -:104F10006A075807C0F0189618948F140E9B0A9CC5 -:104F2000F01F00076E07F9B605FF5807CF710C9CFC -:104F3000D8220E96CFDB0000800091E880024E342C -:104F4000D421189578095809C1E03FFAC028109972 -:104F50007228F4080C4A72085808CFA1F4C4FFFF65 -:104F60001296E06C01A8F01F000A1897C0A09924BF -:104F70005806EDFC1A00EBFC0A000A9CF01F000525 -:104F80000E9CD82212961294CEDB000080028F2451 -:104F900080024F005EFD5EFD5EFD5EFD5EFD5EFD1E -:104FA000D401584BC0E0E0880007586BC0A0587B84 -:104FB000C040D802580BC091300CF01F0005D80239 -:104FC000301CF01F0003D802D80200008002172016 -:104FD000D401581BC070300A323C149BF01F0005EE -:104FE000D80A300A322C149BF01F0002D80A0000A5 -:104FF00080014658EBCD40FE201D1094129216956C -:10500000F01F0057E8C8FFF25C7C4D69F00C000609 -:10501000F33A0109580AC060EC0A0D085809E0810A -:10502000008F3003500CE6060001029CF01F004E7A -:105030000A9B1897306A400CEE0C000CF01F004BD6 -:10504000400C306A4CAB140CEE0C000CF01F004707 -:10505000400C302A4C7B2F4CEE0C000CF01F004310 -:10506000400C089A049B2F2CEE0C000CF01F003F04 -:10507000FAC8FFFC3005114A0E991AD5EE0A000C49 -:105080001AD5EC0A010A30EBF01F003B2FED581C3B -:10509000C5914009EC090108E048003EE08B001092 -:1050A0008E085CC806085CC8AED3029B0E9CAE0896 -:1050B000F01F0032300C2FFDE3CD80FEEE09000E14 -:1050C0003888FD39000CF0091800CEB1FD39000D0B -:1050D00038E8F0091800CE51FD38000EF808180025 -:1050E000CE01FD39000F3038F0091800CDA130286D -:1050F000FD3A0012F00A18005F1B3FE8F00A1800A2 -:105100005F19126BEA0B1800CCC1FD380013E218CE -:10511000001D5818CC61FD380014E21800C85888EA -:10512000CC01FCCAFFC1FCC9FFE1C0482FF914390A -:10513000C0E01388F6081800CFA0CB3BF4090103A8 -:10514000C72B0E9CF01F000E3FFCCB6B0FC92FA985 -:10515000EE0900091388A3A8B288CA3B8001F4E8CD -:10516000000087F480009200800091DC00007AA8A3 -:105170008003D6548001F54480014664800091E8A4 -:10518000D401201D3068FACBFFFC16D81A9B486C5E -:10519000F01F00064848581CF00C1700F9BC01002D -:1051A0002FFDD80200007AA880017A88EBCD40401C -:1051B000310A1696300B0C9CF01F000630F930783F -:1051C0008D198D09300C30398D288D39E3CD804013 -:1051D000800091D0D401F01F0002D80A80016048FD -:1051E000EBCD4068206DFAC3FFEE1496069C306A42 -:1051F000F01F0010FAC5FFFE0C9B310A0A9CF01F3D -:10520000000D0A9B204D310A1A9CF01F000B069BD3 -:10521000202D306A1A9CF01F0008F01F00082FADE7 -:10522000581CF9BC01FFF9BC00002FADE3CD80682C -:10523000800091DC8002E73680016094EBCD40680D -:10524000206DFAC3FFEE1496069C306AF01F001022 -:10525000FAC5FFFE0C9B310A0A9CF01F000D0A9B49 -:10526000204D310A1A9CF01F000B069B202D306A3E -:105270001A9CF01F0008F01F00082FAD581CF9BC45 -:1052800001FFF9BC00002FADE3CD8068800091DC08 -:105290008002E73680016168D401F01F0005581CC8 -:1052A000F9BC01FFF9BC0000D80200008001F370D6 -:1052B000D401F01F0005581CF9BC01FFF9BC000027 -:1052C000D80200008001F310D401169CF01F0004E6 -:1052D000581CF9BC01FFF9BC0000D802800163E052 -:1052E000D431207DFACEFFC050287C027C387C1758 -:1052F00050087C2E501E16901894149B1293580A36 -:10530000C5C0FAC5FFEA306A0A9CF01F0031202DA3 -:10531000306A0A9B1A9CF01F002FF01F002F5802C2 -:105320005F1858075F1918912FED1268C181300678 -:105330005800C26168193018F0030948F00811FFDD -:10534000F1E9000C891C580CC365BFBC891CF01F17 -:10535000002318975817C2F02F9DDC3A5887FE9B00 -:10536000FFFDFAC6FFF2308A300B0C9CF01F001CC8 -:105370000E9A049B0C9CF01F00165800CDC04028CC -:1053800058015F091AD8069C1AD630381AD530163B -:10539000404A403B1AD6F01F00136819EC03094835 -:1053A0001248F1D8C01F189789180C9CF01F000EE6 -:1053B0002FCDCD1B2F9DD83AFAC5FFEA306AE06B9E -:1053C00000FF0A9CF01F0006CA3B0000800091DC31 -:1053D0008002E736800188B080016584800091D02A -:1053E0008001661C8001639CEBCD40C01896308C18 -:1053F000F01F00091897C0C0300899069918F01FCF -:105400000007301CF01F00060E9CE3CD80C0E3CDEA -:1054100080C0000080028F248001604880017A10E3 -:10542000EBCD4080209D1697FACCFFFEF01F0009BF -:10543000581CC0402F7DE3CFC0800E9C1BBAFACB16 -:10544000FFFCF01F00051BBC2F7DE3CD808000001A -:1054500080017800800091DCEBCD4080202D580B3E -:10546000C120FAC7FFFE306A0E9CF01F000C0E9C94 -:10547000F01F000B581CF9BC01FFF9BC00002FED18 -:10548000E3CD8080FAC7FFFE306AE06B00FF0E9C20 -:10549000F01F0004CEDB0000800091DC8001793039 -:1054A000800091D0EBCD4040485B1896F01F00057E -:1054B0000C9CF01F0005E3CD8040000080039C3869 -:1054C00080025458800091E8EBCD40C0202DFAC7EF -:1054D000FFFE16960E9CF01F0008581CC0402FEDD2 -:1054E000E3CFC0C00E9B0C9C306AF01F00042FED70 -:1054F000E3CF80C080017864800091DCEBCD40C0B8 -:1055000018977939580BC0305839C0E03018EF4837 -:1055100000BC3038EF48004C1039C0808F2830086C -:105520008F58E3CD80C0F949004C6F682FF8EEFA30 -:10553000010CEF4800586FA830098F288F59301B95 -:10554000746C7486487A5D16EEF80094EEF900905B -:105550002FF82FF9EF480094EF490090E3CD80C079 -:1055600080037E20580C5E0C580BF9FB4A19580A30 -:10557000F9FA4A225809F9F94A1A5808F9F84A1B5F -:105580005EFC580CF9F81024F9B90101F1D9E108D1 -:10559000F9F81A245EFC580C5E0C580BF9B801019E -:1055A000F9F81A45F9FB0A455EFCD703EBCD40C07C -:1055B0001897580CC04079385858C030E3CD80C097 -:1055C000F8F8010C3009706C7086488A301B5D1643 -:1055D000EEF80094EEF900902FF82FF9EF480094C0 -:1055E000EF490090E3CD80C080037E20580CF9FC89 -:1055F00010315EFC580CC0B0F8F800D45808C070E8 -:10560000F8F800D89708F8FC00D45EFC300897083A -:105610005EF8D703580CC040588BE08800035EFD4D -:1056200048D8F00B032FF8FC00E05EFCF8FC00DC2F -:105630005EFC78BC5EFCF8FC00805EFC79FC5EFCE5 -:10564000F8FC00845EFC784C5EFC797C5EFC786C37 -:105650005EFC00008003D6FC580C5E0C588B5EBCD0 -:1056600048E8F00B032FF94A00E05EFCF94A00DC41 -:105670005EFC99BA5EFCF94A00805EFCF94A007C47 -:105680005EFCF94A00845EFC994A5EFCF94A005CC3 -:105690005EFC996A5EFC00008003D720580CC05065 -:1056A000580BC031783C5EFC5EFD580C5E0C580B0C -:1056B000F9FA0A035EFCD401580CC0A0F8FC010CF6 -:1056C000580CC06078A85808C030780C5D18D80213 -:1056D000D401580CC021D80AF8FC010C580CCFC0DA -:1056E00078B85808CF90780C5D18D802EBCD408080 -:1056F0001897580CC1E0189A300B48FCF01F000FA7 -:105700000E9A300B48ECF01F000DEEFC00C0F01FAD -:10571000000DEEFC00CCF01F000CEEFC00D4F01FDE -:10572000000AEEFC010CF01F00080E9CF01F0006A2 -:10573000E3CD80808002608C800274008002602053 -:10574000800270E0800091E8D401580CC050F8FC51 -:1057500000C0F01F0002D80280026410D401580C6F -:10576000C050F8FC00C0F01F0002D802800264287C -:10577000D401189A580CC0A030583019F8FC00C059 -:10578000F548004C95C9F01F0002D802800263BAA8 -:10579000EBCD40801897580BC04079E85888C0403E -:1057A0003018EF4800BC30193088EF490044EF480A -:1057B00000788F99EEFC00C0F01F0004F9B80100DA -:1057C000EFF81A39E3CD8080800263B2EBCD40E080 -:1057D000201D189716951496580CC0513FFC2FFDAC -:1057E000E3CD80E0F8FC00C0F01F000ACF801A9BD8 -:1057F000EEFC00C0F01F0008189BCF10400C0C3CC2 -:10580000CEF30C9A0A9CF01F0005300CCE9B0000D2 -:10581000800263B2800263CE800091DCEBCD40C099 -:1058200018971496580CC1F0F94B00C4580AC1B02F -:1058300074087419F94800F8F94900FC7428F9480B -:105840000100F8FC00C0580CC0E0742BF01F0007EA -:105850006C3BEEFC00C0F01F00066C4BEEFC00C081 -:10586000F01F0004E3CD80C0800263A6800263AC19 -:1058700080026408D431FACD00A81897F8F600CC5D -:105880005806C0F0F8F800F85808C0B00DA80DB9D7 -:10589000F3E81089F8F800D02FC91039E088000427 -:1058A0002D6DD832ECC4FFFC0999500909A0F01FF6 -:1058B000006FFAC1FFF8340A029B0E9CF01F006CC7 -:1058C0001895CEF5590CE0800090580CCEA132020C -:1058D0005012EEF800E45808C7D1E8C5FFE4FAC357 -:1058E000FF68310A0A9B069CF01F0062310A300BE8 -:1058F0000A9CF01F00610DAA0DB9049BF3EA108900 -:10590000FACCFFD8EEFA00CC0A982FC9F01F005B42 -:10591000310A0A9B069CF01F005AC7614009E1E961 -:1059200010880DB9EBD8B0100DA8F3E81089320833 -:10593000F2CE002CF00519005FB9E04E00205F9A0E -:10594000124AF80A1800CAD15C751C35C630580EC8 -:10595000CA81FAC3FF88029B0A9A069CF01F004581 -:105960003018308AEF4800E4E8CBFFFDEECCFF189A -:10597000F01F0040EEFC010C78965806C0D0E93AC2 -:10598000001B0A98149B0699780CE21B0080F5DA3C -:10599000C0025D16C865E939001B3008F00918001F -:1059A000C5753018EF48011CEEF901185809C0718F -:1059B000EEF800FCEDB80000FE90FF7430188FD8B0 -:1059C000EEFC010C78785808FE90FF6C780C5D189E -:1059D000C68B308AE8CBFFFDEECCFF18F01F002805 -:1059E000FE94FF60C7BB189A029B0E9CF01F00201C -:1059F000FE91FF580A9A029BFACCFFD80A92F01F38 -:105A0000001D5015C67B069B0A9C310AF01F001929 -:105A1000C48BFAC6FFB8E8CBFFF50C9C310AF01F27 -:105A20000015049A029BFACCFFA8F01F0012FAC3DB -:105A3000FF880A9AE8CBFFD4069CF01F000E40199D -:105A40000C9A2F090A9B069CF01F000EC8AB301859 -:105A5000EF480118EEF9011C5809CB11EEF800FCD3 -:105A6000EDB80001CAC1C1DB8002575C800257CC8F -:105A7000800091DC800091D080028EF88000917CC3 -:105A800080029C38D431201D3003189730140695BD -:105A900030213040EF4500BC6F4A580AE08000C911 -:105AA0006F585808E08100C56E7C580CE08100C238 -:105AB0006EB85808E08000BE6F385828EFF41A2FEF -:105AC000EEF8010CEF41004C3009706C7086FEFA64 -:105AD000051E029B5D16EF4400548FC5EEF800983A -:105AE000EEF900902FF82FF9EF480098EF49009059 -:105AF0006E7C580CC0516EB85808E08100EC6FC83D -:105B0000EF4400705818EFF41A2F6FD85808E0814E -:105B100000F8580CE08100A76EE85808E08100A367 -:105B20006FE8F0C900015879E08B000EFEF804C45C -:105B3000F009032FEF4400BCEF410078EF4500402F -:105B4000EF4400C8EEFC00C0F01F012BE08000B560 -:105B5000EF4400BC2FF3E0430064C9D10E9A300B30 -:105B6000FEFC0498F01F012630090E98FEFA048C02 -:105B7000129B129CF01F0123EEF9010C72285808A9 -:105B8000C0E0EEF801105808C0A058185F0B3008AC -:105B90000E9CEF480110723A72285D182FFDD83222 -:105BA000EEF80088EF4400BCEF4000788F55EF45D9 -:105BB000007CEF4500C88F08CC6B6E585808E08118 -:105BC00000DF6E4B580BE08100D06E085808C161B1 -:105BD0003078EF4400BCEF480078EF440048CB3BFE -:105BE000EEF900845809E08101846FF85808E081DB -:105BF000015C6E4B580BE08100B86E685808CA30E3 -:105C00000E9CF01F0101C9FB6E485808E08100A9F5 -:105C10006E585808E08100B06E685808C9406F0897 -:105C20005808C910300B0E9CF01F00F7C8CB6E7CD3 -:105C30006EA95809C2F16F885808C2C06F38EF4585 -:105C400000605818EFF41A2FEF44004CEF4500584D -:105C5000EF4500548FC58FE4EF450118EF45011C57 -:105C6000C49B6FE8EEFC00CC5818EFF41A2FEF44F9 -:105C70000078F01F00E6EEFC00D4EF4500CCF01FEA -:105C800000E3EEFC00C0EF4500D4F01F00E18FE51B -:105C9000C5AB580CCD416EB85808CD105829C3B0CB -:105CA0005819C4706F3820185878FE9BFF26FEF9EB -:105CB0000362F208032FEEF800BC5808FE91FF4C77 -:105CC000C5CB6E585808E08100FE6ED85808E080B9 -:105CD00000FE6FC95819FE90FF1A5829FE91FF1E49 -:105CE0006FD85808FE90FF1A0E9CEF490070EF44E1 -:105CF00000BCF01F00C96E7CEF450074C0BB0E9C59 -:105D0000EF4400BCEF410070F01F00C36E7CEF4514 -:105D10000074C00B6F885828CC606F388FC45898B7 -:105D2000EFF41A2FEF4100603098EF48004CCE4A54 -:105D30006F885818CB806F3858A8EFF91A2FEEF9F2 -:105D4000010C30A88FC5EF440060EF48004CFEFA0C -:105D5000029E7286726C302B0A995D16CC0A6F080F -:105D60005808FE90FF573068EF4400BC8FF4EF48AE -:105D70000078CE9A6F085808FE90FF503038EF44F4 -:105D800000BC8F05EF440080EF480078CDCA6E69F3 -:105D90005809C0A06ED85808E0810117EEF800F845 -:105DA0005808E08100FC6E485808E08100EB6E88DE -:105DB0005808C0506ED85808E08000E46F28580892 -:105DC000C050300B0E9CF01F00956E7CC93A6F7866 -:105DD0005808C8018F88EF4400BCEF40004CEF48E2 -:105DE0000058EF4800448FF8EF4800488F98EF4480 -:105DF0000040C82A6E1B580BCE606E585808FE90A3 -:105E0000FF6A3089EF4400BCEF49004CEF44005C6E -:105E1000C73A6E2B580BC2716F696FB81039CD330A -:105E20006ED85808C2003058EF4400BCEF48004C10 -:105E30008FC4EF440110FE9FFE60580AFE91FF4B95 -:105E4000EF4A011CEF4400BCEF44004CEF4A0060F5 -:105E5000EF4A0058EF4A00548FCA8FE4EF4A011806 -:105E6000FE9FFE4B6E685808C7B16E485808C78140 -:105E70006E585808CC71580BFE91FF2D6F696FB8A2 -:105E80001039FE93FF286ED85808FE91FF24307811 -:105E90008FCBEF48004CEF4400BC6F98EF410110EE -:105EA0008F18FE9FFE2AEEF80088EF4900C8EF44E5 -:105EB00000BCEF4000788F59EF49007C8F08FE9FAF -:105EC000FE436ED85808E081008AEF4400BCEF44DE -:105ED000004CEF450060EF450058EF4500548FC57A -:105EE0008FE4EF450118EF45011CFE9FFE06305977 -:105EF000EF4400BCEF4900781A9BEEFC00C0F01F95 -:105F000000481892C290EEF8010C4009189A708669 -:105F1000706C300B5D16049CF01F003CEEF800C85E -:105F20005808EFF81028F9B90101F1D9E108EFF8A4 -:105F30001A28EFF80029F9B90001F1D9E008EFF8C3 -:105F40000A29EEF90090EEF8009C2FF92FF8EF499E -:105F50000090EF48009CEF450084FE9FFDF5EF4464 -:105F600000BCEF40004CEF450058EF4500448FF572 -:105F7000EF4500488F958F85EF440040FE9FFDBDA3 -:105F80003078EF4400BCEF48004C8FC56F98EF416C -:105F900001108F186E7CFE9FFDAEEEF800FC5808D5 -:105FA000FE91FF038FD4EEFC010C78785808C040B6 -:105FB000780C5D186E695809FE90FEF76ED8580887 -:105FC000FE90FEF36E7C3059EF4400BCEF49004C6C -:105FD0008FC4EF440110FE9FFD8E3088EF4400BC5B -:105FE000EF48004CEF44005CFE9FFD8780037E205D -:105FF0008003D744800268308002608C8002740085 -:106000008002747480025790800091E88002653CA1 -:106010008003D76480025874800254FC800263E6D7 -:10602000EBCD408076085808F9B901FFF1D9E108B5 -:10603000F7F81A0076185808F9B901FFF1D9E10804 -:10604000F7F81A0176285808F9B901FFF1D9E108E3 -:10605000F7F81A0276385808F9B901FFF1D9E108C2 -:10606000F7F81A03169718991698486A300B301CDF -:10607000F01F00050E9CF01F0005E3CD808000009E -:10608000800260208002747480025A84D401169CBD -:10609000F01F0002D802000080025A84D421203D63 -:1060A0001895E06C0120F01F00221897C38031E89A -:1060B0003039F9480088F948006833C8F949006C5C -:1060C000F9480064F945010C300430CA99A4089BD2 -:1060D0001A9CF01F00186AF850286ADA500A6AE819 -:1060E0005018EEF8010C1A99704A493B0E9CF01FAB -:1060F0000013EF4C00C01A961898C14030160E9C41 -:106100008F76F01F000F0E9C8F74F01F000D0E98FD -:1061100008990C9C48BA089BF01F000B0E9C2FDDC1 -:10612000D8220E9C1097F01F0009CF9B80028F246D -:10613000800091D0000004788002711C80025A8493 -:106140008002602080027474800091E8D401580CB1 -:10615000C090F8F800D45808C050F8F800805808EB -:10616000C020D8023018F94800809958F01F00026A -:10617000D802000080025A84D401580CC04099AB68 -:10618000F01F0002D802000080025A84D401580C8B -:10619000C060F94B00E0994BF01F0002D8020000EC -:1061A00080025A84EBCD40801897580CC090996BB0 -:1061B000F94B00DC580BC0610E9CF01F0005E3CDCD -:1061C0008080F8FC00C0F01F0003CF7B80025A845F -:1061D000800263BAD401580CC04099DBF01F000262 -:1061E000D802000080025A84D401580CC04099BBE8 -:1061F000F01F0002D802000080025A84EBCD40E07C -:10620000189714951296580CC3A0F8F8008C2FF824 -:10621000F948008C5839E08B0009F8F800A82FF8ED -:10622000F94800A8E3CF80E01588306AF94800B04B -:10623000F8CCFF4CF01F0042ECCA00040BA90BB8CD -:10624000F1E910861436E08B00130B99300CF80935 -:106250001800C4603038F0091800C130EEF800A80A -:10626000301C2FF8EF4800A8E3CD80E0EEF800AC3A -:10627000300C2FF8EF4800ACE3CD80E0E3CF80E0B6 -:10628000E046002BE088004C3FE80BCBF00B1800F9 -:106290005F0A3028F00B18005F09124AF80A18004C -:1062A000CEE13018F00B1800C3A1EEFC00CCF01FBB -:1062B00000252FC60C9CF01F0024EF4C00CCC2F030 -:1062C0000C9A0A9BF01F001E0E9CEF4600D0301661 -:1062D000EF460074F01F001D0C9CE3CD80E0EEF84B -:1062E00001145808C100300830398FC8EF48011434 -:1062F0008F29EF49004CEEFC010C78C85808C030DB -:10630000780C5D18EEFC00D4F01F000E0C9CEF46DC -:1063100000D8F01F000DEF4C00D4C031E3CF90E067 -:10632000EACBFFFCEEFA00D8F01F00050E9C3016F9 -:106330008F56F01F00060C9CE3CD80E0800091DCBE -:10634000800091E88000920080025A84EBCD40806A -:10635000189779685808C0B079BB580BC08070494D -:106360005D193008EF480058EF48006CE3CD80809D -:10637000EBCD40C01897580BC04078085878C04003 -:106380003018EF48006030786FA68F086F9C6C293A -:10639000300A305B5D196FA86F9C7029301A304B42 -:1063A0005D19E3CD80C0F94B00745EFCF94B00B081 -:1063B0005EFC580CF9FC10135EFC580CF9B8010196 -:1063C000F9F81A06F9B9010BF9F91A005EFC580C34 -:1063D000C08079485808C05079589708794C5EFCBD -:1063E000300897085EF8580CC0C0791A580AC09057 -:1063F000792897083009F9490048F94900445EFABC -:106400003008109A97085EFAF94B00C45EFCD70377 -:10641000D401580CC040483BF01F0003D8020000D4 -:106420008003D7B08002634CEBCD40801897580CA6 -:10643000C0F079A8300B7019799C5D19C0916E6815 -:106440005808C0606E2820385818E0880004E3CD52 -:1064500080806F485808F9B80101EFF81A136FA847 -:106460006F9C7029301A300B5D19EEFC00A4483A7D -:10647000302BF01F0003CECB8003D7BC80023A1A2A -:10648000EBCD40801897580BC040780858B8C040F2 -:106490003018EF4800606F4930B88F085809F9B8D4 -:1064A0000101EFF81A136FA86F9C7029301A300B96 -:1064B0005D196FA86F9C7029300A305B5D196FA859 -:1064C0006F9C301A7029304B5D19EEFC00A4484ACD -:1064D000302BF01F0004E3CD808000008003D81C27 -:1064E00080023A1AEBCD40C01897580BC04078088C -:1064F00058C8C0403018EF48006030C86FA68F08F9 -:106500006F9C6C29301A302B5D196FA86F9C702915 -:10651000300A305B5D196FA86F9C301A7029304BC0 -:106520005D19EEFC00A4484A302BF01F0004E3CDB7 -:1065300080C000008003D86080023A1AEBCD406032 -:106540001896784CF01F000B30056D1C8D45F01F20 -:1065500000096D4CED450044F01F00066DA8ED45A7 -:1065600000500A9A6D9C70290A9B5D19E3CD8060EA -:10657000800091E8EBCD40E01897580BC4F0780804 -:106580005808C4C130088F086FD95809C0B06F6867 -:106590005808C08070985808C0506FBB0E9C5D189A -:1065A000C4114A4B0E9CF01F00246FA83006301512 -:1065B0008F16EF4500408F268F666EFA70490C9B50 -:1065C0006F9C5D196FA80C9A70290C9B6F9C5D19CC -:1065D0006FA80C9A7029302B6F9C5D196F4CF01FBF -:1065E00000176FA80A9BEF460050EF46004C0C9A2C -:1065F00070296F9C5D193FF80C9A8F386FA5303B5E -:106600006F9C6A295D196FA80C9A7029304B6F9C9A -:106610005D19EF4600C0E3CD80E03018EF48006020 -:10662000CB2B6F686FBB70A90E9C5D19CBFB000074 -:106630008003D8948002634C800091E8EBCD40E069 -:10664000205D1897580BC04078085858C040301843 -:10665000EF48006030588F086F695809C4406FA830 -:10666000FACBFFF070596F9C5D19310A300B189509 -:106670001A9CF01F00256F1C6EE850086E295019F7 -:106680006E6850286F095039F01F002030086F6B7A -:10669000EF48005CEF480044EEC8FFB81A9A0A9928 -:1066A0001AD80E9C405876566FBB5D16EF4C0044CE -:1066B00040188FE82FFD5808C1616F785808C13124 -:1066C00040188F2840298F694038EF4800406F6894 -:1066D00070695809C08070785808C0506FBB0E9C14 -:1066E0005D19C0412FBDE3CD80E06F4CF01F000766 -:1066F0006F68EECAFFAC70796FBB0E9C5D19EF4CF2 -:106700000050CF1B800091D0800091E8EBCD4080FD -:106710001897580BC04078085868C0403018EF48A8 -:10672000006030686E4C8F08F01F001A6F18580810 -:10673000C2E0EEF800B05808C2216EA86F2C8F3866 -:10674000F01F00158F4CC0706F2A6F1BF01F0013D5 -:106750006F288F586FA8301A7029303B6F9C5D19D5 -:106760006FA86F9C7029300A305B5D196FA86F9C11 -:1067700070496EFA300B5D19E3CD8080310AEECBA3 -:10678000FF7CEECCFF6CF01F0005CD8B8F48CE9BBD -:10679000800091E880009200800091DCEBCD40FC0D -:1067A000201D79A81897169214931294799C700959 -:1067B0005D191896C2F06F685808C23070C8580842 -:1067C000C2000E9C1A9A6FBB5D181895C1A0400CB0 -:1067D0002FBC870CF01F0015C1D03028B892B888A4 -:1067E00030188699B8B9A9891897B8A9B8C80A9B6A -:1067F000400A2FBCF01F000E0E9C2FFDE3CD80FC45 -:106800005804C0416DCC580CC0A16DB86DA5580599 -:10681000C0A130070E9C2FFDE3CD80FC6DD81895EC -:106820005008CD6B5008CD4B80009200800091DC69 -:10683000D431209D3004F8C9FF7CF8C8FF6C18974C -:1068400050195008F8C0FFB808956FA8EF450060D0 -:10685000301B70196F9C5D19C0706FA8306B701978 -:106860006F9C5D19C2F16FA8306B70196F9C5D1938 -:10687000C140EEF800C45808C101EEF800C0E0487D -:106880000032E08A0025E0480033E080011C6F8878 -:106890005808C1003014CDAB6E085818F9B8010182 -:1068A000EFF81A18EF4500C030188F086F885808A5 -:1068B000CF216F7C580CE80C1700F9BC01012F7D2B -:1068C000D832301B0E9CF01F01EECE2B6E0958A95A -:1068D000FE9BFFDFFEF807ACF009032F30183029CC -:1068E000EF4800608F09CD4B300B0E9CF01F01E686 -:1068F000CCFB6E196EB81039C760300B0E9CF01FC0 -:1069000001E2CC6B6EA96E381039E0800137300B94 -:106910006E8E580EC1B06E685808C1806EAA6E396E -:10692000123AE08000BBEEF800B05808C0F0F2C8A0 -:10693000FFFFF1D8C008103AE08000B0F2C8FFFEB7 -:10694000F1D8C008103AE08000A96E2C582CC20083 -:106950006E985808E08001236E685828E080011F77 -:106960006EAA6E39123AE0800146EEF800B058087F -:10697000C0F0F2C8FFFFF1D8C008103AE080013B38 -:10698000F2C8FFFEF1D8C008103AE08001346E78FA -:1069900058085F1A3008F5EB0009F0091800E0818B -:1069A000010FEC1B0001F5EB0008F2081800E08075 -:1069B00001056EBB1699582BE080012A6E16580609 -:1069C000C071581BE080021B582BE08101630C3B17 -:1069D000E080014F0C995919C0F1580EC0416FE881 -:1069E0005808C0A0300B0E9CF01F01A8C51B6EEB11 -:1069F000580BFE90FF7C300B0E9CF01F01A5C48B42 -:106A00006FA8305B70196F9C5D19C7016FA8307B50 -:106A100070196F9C5D19C0506E685808FE91FF395F -:106A20006FA8300B70396F9C5D19C0516E68582883 -:106A3000FE90FF2F6FA8308B70196F9C5D19FE912F -:106A4000FF286FA8189B70396F9C5D19C0516E6844 -:106A50005828FE91FF1E6FA8307B70196F9C5D193E -:106A6000C0806E285828C0506E685808FE90FF11EC -:106A70006E185918E080025C5998FE91FF0AEEF8F2 -:106A800000805808FE90FF056E685808FE90FF01D0 -:106A90006E285848FE91FEFD300B0E9CF01F017DC4 -:106AA000CF7A6FA8306B70196F9C5D19FE90FEF164 -:106AB000EEFB00C4580BFE91FEEC0E9CF01F017023 -:106AC000CE7A3328EEFC00A4FEFA05CC1AD8302B7F -:106AD000F01F0172EEF800C0301B16080E9CEF4844 -:106AE00000C0F01F016F2FFDCD3A6FAA3038FACBEE -:106AF000FFE08F0830136F9CEF43006074595D19FD -:106B00008F95507C8F85EF4500788F758FA58FB559 -:106B10008FC58FD55F0A408B1896583B5F88104A07 -:106B2000EA0A1800C23119A919B8F1E910885068A9 -:106B3000103BC1C319988FA8EEF900B05809C09056 -:106B4000069C4019FACAFFE8FACBFFE4F01F015592 -:106B50000D893028F0091800E080011CE08B008DC1 -:106B60003018F0091800E0800123EEF800C02FF87B -:106B7000EF4800C0FE9FFE8D6E785808FE90FEC95B -:106B8000EEF800B05808C080310A400B401CF01FDE -:106B90000146FE91FEBE301BCBCA580EFE90FEF998 -:106BA0006E685808FE91FEF56E185918FE91FEDACF -:106BB000583CFE91FED7CECA6E19C0EB301830A9F2 -:106BC000EF4800608F096F1CF01F01386E485808AD -:106BD000C1A06E5CF01F0136EF4C0044FE90FE59E0 -:106BE0006E5A6E4BF01F01336E58EF480048FE9FFF -:106BF000FE50300B0E9CF01F012AFE9FFE4A30090A -:106C000050494048EF480044FE9FFE436F08580833 -:106C1000FE90FED6301830996FAA8F09EF480060B9 -:106C20007458FACBFFE86F9C5D1819A919B818962B -:106C3000F1E910885848E08B01476F1CF01F011BD9 -:106C4000305CEF450044EF4C00486EA6F01F011881 -:106C5000E08001853029B896B889EF18004AB8C994 -:106C6000B8B8A988B8A8EF4C0044FE9FFE12584C53 -:106C7000FE90FEB3CB8A3038F0091800E08000DCCB -:106C80003048F0091800FE91FF7230188F98C6EB5B -:106C900030181693EF48006030496FA8E04B00FEB3 -:106CA000EFF3000D8F096EC670096F9C5D19069A8F -:106CB0000C9BF01F0101E08100C36F1CF01F00FB63 -:106CC0006FA8EF4500446EA270096F9C5D19503C9F -:106CD000FACCFFE8F01F00F91893C9206EB8E0481D -:106CE00000FEE08101516FA8406670096F9C5D193C -:106CF00030C8505CA376EF480048ECCCFFECF01FA6 -:106D000000EC1891E080012E3FE9B892B8C9302913 -:106D1000B889F8C8FFFBB0A5B085B095F8C9FFF8F1 -:106D20003038B285B295B2A5B2B8504CF8C2FFF473 -:106D30000A96C298661A6ED81438C210405CF01FCA -:106D400000DE049AE4CBFFFC580CC1903FE814C865 -:106D50008689B4896608A988B4986609B4A907C861 -:106D6000B68886A9B6996618A988B6A86619B6B96C -:106D7000F6C2FFFC60082FF62F88810866F35803DF -:106D8000E0800099660B6EC81638CD50661ACD7B30 -:106D90006E185918FE91FEEB40685848FE98FEE7C1 -:106DA0003018EF4800780DC98FB9CE0A406A584AAA -:106DB000FE98FEDD30188F780DC98FB9E04900FECE -:106DC000FE91FED558BAFE98FED2ECC9FFFB139C8B -:106DD000138A13A8F1EA1108F1EC1088ECCBFFF844 -:106DE0008FC817AC17B81789179AF1E91188F1EA1B -:106DF0001108F1EC10888FD8CB9A6FA83089EF4B2F -:106E000000608F09FACBFFE0705A6F9C5D1AFEFAA2 -:106E100002AE302BEEFC00A4F01F00A06F1CF01F90 -:106E200000A30C99EF460044009A6EAB0E9CF01F35 -:106E300000A5C1AB30188F88FE9FFE990C9C069B65 -:106E4000F01F00A1FE90FF3B6FD85808C0906F6AFA -:106E5000580AC06074096EC81039E0800086FEFBD5 -:106E6000026A0E9C3006F01F009A6EB88F186F6C85 -:106E7000580CE08000CD5806C54078B86FBB0E9C1A -:106E80005D18EF4C006C6FB65806E08000CA6F6A60 -:106E90006ECB30188F287429FEFA02381AD91AD30B -:106EA0001ADB302BEEFC00A4F01F007C2FDDFE9FD0 -:106EB000FCF05806C4206F285C78A2B8A988A2A864 -:106EC000FE9FFEA1F0CC0004F0C20005F01F007888 -:106ED0001893FE90FEB45802C120ECCCFFFB300AA0 -:106EE00035DB1938F0C90021F6091800F9B80B5F35 -:106EF000E60A0B082FFA1432FE9BFFF53008E60273 -:106F00000B084F581AD34F5A1AD8302BEEFC00A456 -:106F1000F01F0062069CF01F00652FEDFE9FFE8FA4 -:106F200078380E9C5D18EF4C006CCAEB6FF858086F -:106F3000FE90FCAFFE9FFDAA04983FE910C9B0A6E1 -:106F4000B086B096E4C9FFFCB2B6B286B296B2A6DD -:106F50006F282F88EF480048CB0B0A9CFE9FFE85C8 -:106F60005045FE9FFE5074181033FE91FF7A7499BD -:106F70005809FE90FF766FBB0E9C5D19FE90FF7165 -:106F80003016C74B3058406CEF4800482FACF01F0C -:106F900000481896FE90FE35B89230283039B888EF -:106FA000B8C9504CF8C2FFFB50250A91C1A8661A17 -:106FB0006EB8103AC130403CF01F003FC0F0660888 -:106FC0005808C5A040285808C0913FE904C93018A6 -:106FD000502860082FF12FF8810866F35803C0602D -:106FE000660B580BCE50661ACE7B5801EFF8101284 -:106FF000E5F10E00EFF80012F7B800FFEFF80A1203 -:107000005C78ACB8A988ACA8FE9FFDFD069B6ECC51 -:10701000F01F002DEF4C0058FE90FE51C2DB6FA810 -:107020006F9C70095D196F6870291AD91AD36EC8E0 -:1070300018921AD8302B4AAAEEFC00A4F01F0017B1 -:10704000EF4600588F268F1658025F1B6EB92FDD52 -:1070500058D95F081668EC081800FE90FE30E4F876 -:1070600001605808FE91FC15E4F801685808FE908C -:10707000FE26FE9FFC0E661804C8CACB800265740B -:107080008003D7848002670C8002663C80026370B4 -:10709000800264808003D8A080023A1A800264E4EF -:1070A00080028D9C8000917C800091E8800092009D -:1070B000800091DC80023AD8800271E48003D8F02D -:1070C0008002679C800271908003D9248002634C07 -:1070D0008003D9708003D8D08003D3E48003D930F3 -:1070E000EBCD40801897580CC0E0488BF01F00088B -:1070F0000E9CF01F0008EEFC00ACF01F00070E9C79 -:10710000F01F0006E3CD80808003D9AC8002634C81 -:107110008002653C8002D298800091E8EBCD40F877 -:10712000203D1896169414931295E06C00C8F01F39 -:1071300000151897C1C033C8F946006499F8F9449E -:107140000068F94300A430CA300B1A9CF01F000EEF -:107150006A2850286A0950096A181A9C5018F01FAA -:10716000000BEF4C00AC1A961898C0500E9C2FDD07 -:10717000E3CD80F80E9C1097F01F0005CF8B000028 -:1071800080028F24800091D08002D2C4800091E8D8 -:10719000189948A8700C580CC051C0D878FC580CED -:1071A000C0A078081238CFB1781816385E0C78FC79 -:1071B000580CCF815EFD000000007AB01899489805 -:1071C000700C580CC051C0C878FC580CC09078089E -:1071D0001238CFB178181638CF81782C5EFC5EFD5E -:1071E00000007AB0189B4888700C580CC0A0189901 -:1071F000300A2FFA72F95809CFD1149897085EFC1B -:107200001898CFDB00007AB05EFDD703EBCD40E0ED -:1072100048D81896169570075807C051C0E86EF701 -:107220005807C0B06E2C0C9BF01F0008CF916E0861 -:107230008B086E1CE3CD80E030088B08109CE3CDFA -:1072400080E0000000007AB0800091A0EBCD40C04B -:1072500048B70E966E095809C0B072F88D08129C96 -:1072600072D85808C0705D186E095809CF71E3CD07 -:1072700080C0129CF01F0003CEEB000000007AB02B -:10728000800091E8EBCD40C048D66C485808C0312A -:10729000C0880E987057109CF01F000A5807CFA1A5 -:1072A0006C6CF01F000930086C3C8D68F01F000505 -:1072B0006C8CF01F0004E3CD80C0000000008C90B7 -:1072C000800091E880014544EBCD40F8495718967D -:1072D000169314946E2B12952FFB6E3CA56BF01F2A -:1072E0000012C1D06E28A568F80809066E29A569A4 -:1072F000F8090009932593146E2AF4081504F80878 -:10730000000891336E188F3C2FFA1036EFF69A0171 -:107310008F2A3018300C8FC8E3CD80F8E3CFC0F847 -:1073200000008C90800091F4EBCD404CE0634DD395 -:10733000EA1310621896F01F000DF8030648A7899B -:10734000E06A03E8F20A0248F8080109121CF20A8E -:10735000024AF80304428D1ABF5CA743E60C010CF5 -:107360008D0CE3CD804C0000800145C4EBCD408006 -:10737000202D4A076E495809C2C06E581039C29074 -:107380001A9CF01F001D6E484009700A1439C2444F -:107390007018401BF40901091618C276F00B141F6F -:1073A000E06A03E8F20A024AE0694DD3EA19106282 -:1073B000F0090448A7491619F20A000C580CE08A93 -:1073C000000E300948DA6E6BF01F000D6E488F58C2 -:1073D0002FEDE3CD80801439C030301CCF3B7018C6 -:1073E000401B103BCFB4CD7B2019F028BDC0CD7B16 -:1073F00000008C9080027328800275188001455827 -:10740000D43149A0189516931492604C580CC2B010 -:1074100030060C940C91785778480A38C09018962A -:107420000E9C5807CF91F01F0012089CD8325BF3D6 -:107430005F0A782906395F081448E2081800CF006F -:107440005BF25F0A783904395F081448E2081800D3 -:10745000CE705806E1F70A04EDF71A052FF4F01F75 -:107460000005CDFB1894CE0B00008C908002736C4D -:10747000800091E8EBCD40FC18961695149212947A -:107480001093318CF01F00211897C3A0F01F00202B -:107490006E0A6E1B0C0AEA0B000B8F0A8F1BEE5B49 -:1074A000423FE08A000B2FFAEE3B42408F0A8F1BCF -:1074B000EE5B423FFE99FFF98F248F338F423008F5 -:1074C0008F58494C78495809C1D072081438E0895E -:1074D000001A2F0CC0A8F2CCFFEC72595809C0A0BA -:1074E00072081438E0890007103ACF617218103B17 -:1074F000CF348F599907F01F0008E3CF80FCE3CF0A -:10750000C0FC2F0CCF7B000080009200800273280B -:1075100000008C908002736CEBCD40E0202D49661A -:107520001A9CF01F00166C475807C1F040096E08FE -:107530001238E089001B3005C05840096E08103928 -:10754000C1451039C0516E1940181238C0E56E5847 -:107550008D558D486E3B6E486E2C5D180E9CF01F4D -:1075600000086C475807CEA1F01F00062FEDE3CFAF -:1075700080E0000000008C9080027328800091E879 -:107580008002736CEBCD408049A76E3E580EC2B0AE -:107590006E2A580AC280E08A002B7C081838C27014 -:1075A000FCC9FFF0300BC05872082F091838C050C2 -:1075B0002FFB163AFE99FFFA143BC170201A163AB7 -:1075C000C0F0161AF60C1504A56AFC0C000C2FFB73 -:1075D000A56BFC0B000BF01F00086E2A201A301858 -:1075E0008F2A8FC8E3CD8080E3CD8080300BCE7BA7 -:1075F00000008C90800091C4EBCD406048861895C7 -:10760000334A300B0C9CF01F0007ECCCFFE88D05D3 -:10761000301BF01F0005E3CF8060000000008C905D -:10762000800091D0800144F80050F2010100000078 -:107630000000000000000000F6F800DC5808C05010 -:10764000F8F800F85808C0205EFDF6FB00D0580B93 -:10765000CFC076085808C04176185808CF602F8BE5 -:10766000CF9BD703EBCD4080300B1897F01F001352 -:10767000306A300BEECCFF64F01F0011306A300B23 -:10768000EECCFF5EF01F000E300BEEFC00E0F01FB2 -:10769000000D300BEEFC00E0F01F000BEEF800BC1C -:1076A0005828C030E3CD8080EEFC00E0300BF01FA6 -:1076B0000007E3CD80800000800217D0800091D0C9 -:1076C000800261E8800261D4800261A4EBCD408039 -:1076D0001897F8F800945808C160300BF94B0094E3 -:1076E000F8F800D470985808C040F8FC00C45D1841 -:1076F000486A302B0E9CF01F0006300A0E9C149B2B -:10770000F01F0004E3CD80808003D9D480023A1AB0 -:1077100080022584D431209D500C761558155F9831 -:107720007607169058075F1910693008F00918009D -:10773000E08000B8EEC4FFFF0989F2C6FFFE0C35F9 -:10774000E08500B010923DD33301C168E208180013 -:10775000C2800C0758155F9958075F181268E40833 -:107760001800E080009EEEC4FFFF0989F2C6FFFE0C -:107770000A36E08900960C150F88E6081800CE71CD -:10778000305AF4091800FE98FFE6EECCFFFE306A8E -:107790004DFBF01F0060C0B00F88E2081800CDA1BB -:1077A00009883019F2081800FE98FFD540080E9B92 -:1077B0000C9AF0FC00DCF01F00581897C711400A23 -:1077C000FACBFFFCF4FC00DCF01F0054C21540793A -:1077D0005809C1E040685808E0890007C19840682E -:1077E0001037C1644079EE0B1504F20B000B400911 -:1077F0003008F2FC00DC2FF71099109AF01F0048B7 -:10780000CEF14008301BF0FC00E0F01F004660465F -:10781000605558065F1958155F981069C760ECC429 -:10782000FFFF0989F2C7FFFE0E35C6F53003069249 -:107830000691C1A85802C0610D88330AF4081800E7 -:10784000C3A00E060E1558065F1858155F991268EA -:10785000E2081800C3F0ECC4FFFF0989F2C7FFFE7D -:107860000A37E08900385803CE610D883DDAF40804 -:107870001800CE113058F0091800FE98FFDD306A6C -:107880004A3BECCCFFFEF01F0023CD5140090E9A7D -:107890000C9BF2FC00DC3013F01F0023CCCB600704 -:1078A0005807CB604009300AF2FC00DC149BF01F43 -:1078B000001ACAEB09883019F2081800FE98FFC3B5 -:1078C00040080E9A0C9BF0FC00DC3012F01F0017F1 -:1078D000CB9B5803C0F05802C0B160485808C08024 -:1078E0004008049AF0FC00DC049BF01F00102F7D80 -:1078F000D83260465806CF004009300AF2FC00DC5E -:10790000149BF01F0009CE8B3002CF5B80027628DB -:107910008000917C8002B5EC8002C04C8002938094 -:10792000800255968002B58C8002B52CD431FACDF8 -:10793000009018911497586BE08B00C4FEF807482C -:10794000F00B032F580AC0A0F8F800907009739A42 -:10795000580AC0410E9BF01F01CD304B029CF01F16 -:1079600001CCE2F801185808E0810312FAC7FF942D -:10797000E2F800D470285808C4C00E9BE2FC00C492 -:107980005D18C475E2C6FF64306A0C9B0E9CF01F44 -:1079900001C1C3F0FB3800711AD8FB3900741AD941 -:1079A000FB3800771AD8FB39007A1AD9FB38007DEA -:1079B0001AD8FB390080FEFA06DE1AD9301B029C69 -:1079C000F01F01B6306A0E9B0C9CF01F01B5306AA7 -:1079D000300BE2CCFF5EF01F01B3E2FA00BC2FAD2A -:1079E000584A5F08590A5F091248C081588AE080E6 -:1079F000030C0E9B029CF01F01ACE2F80090704952 -:107A00005819E08102D5E2F800B05808E08002D0B1 -:107A1000FB3800711AD8FB3900741AD9FB3800778B -:107A20001AD8FB39007A1AD9FB38007D1AD8FB39ED -:107A30000080302B1AD9FEFA0672029CF01F0197C3 -:107A4000E2FB00B02FAD580BC040029CF01F019824 -:107A50000E9BE2FC00DCF01F0197622CF01F0196E8 -:107A6000300BE2FC00E0F01F0195300BE2FC00E07F -:107A7000F01F0193E2F800BC5828C061300BE2FC13 -:107A800000E0F01F0190301BE2FC00E0F01F018BD2 -:107A9000300BE34B00F4E2F900BC59095F0A584986 -:107AA0005F081448F6081800E0800216029CF01FD8 -:107AB0000186307B029CF01F0176029CF01F01833F -:107AC0002DCDD832580ACFD0149B7439F8FC00DC85 -:107AD000742AF01F017F2DCDD832F8FB00BC590B62 -:107AE000CF00F8F800E85858E08002355838E08BAD -:107AF0000234E2C7FF64306AFEFB05D80E9C2F8B70 -:107B0000F01F0164EE0B1710E06800A2E3D8E00B51 -:107B1000029CF01F0171E2FC00DCF01F0170FEFA14 -:107B200005BE302B029CF01F015DE2FA00BC584AF2 -:107B30005F08590A5F091248C0B1588AE08002976D -:107B400030080E9BE3480104029CF01F0157029C81 -:107B5000F01F01642DCDD832FEFA058C303BF01FAA -:107B6000014F5807E08002806E0858085F1B169A84 -:107B7000E2FC00DC301BF01F015DFACCFF94F01F2B -:107B8000015CE2F800985808E08001D541B9F2089C -:107B90000108E048003CE08A01A6E34900982DCDA9 -:107BA000D832F01F0154E08501EBE2F900907248F1 -:107BB0005828C870E2F800AC5808C831E2FA00CC86 -:107BC0001094500AE2F000D072285808E08A00A908 -:107BD000300850187218401AF00A032850585800FC -:107BE000E08A0097400530020A96C11808973003D2 -:107BF00030142FF2ECC6FF6404305F983009E9E8D6 -:107C00000008F2081800E08000970E940C9B029C7C -:107C10000C93F01F0139C05078385818FE99FFE8CE -:107C20006D585808C051ECF800805808CE004059F3 -:107C30005809CDD0ECC8FFFAECCAFFA8ECC9FFD4B4 -:107C40005048502A50394057C0486E175807CCF05A -:107C5000EEF801945808CFA16CAA6E58103ACF6183 -:107C60006E4B404CF01F010BCF116E885808E0811D -:107C700000E16F6AEDBA0001C061ECFB0080580BB7 -:107C8000E08100E3F1DAC001300AF4081800CDE029 -:107C90006D5B580BCDB0FACAFF94403CF01F011742 -:107CA000CD516F6841B91268CD106F3841C9126863 -:107CB000CCD06F4841D91268CC906F5841E9126816 -:107CC000CC5058065F04C96B149BF01F00F02DCDFB -:107CD000D832149B2EACF01F010A1896FE91FEF2CA -:107CE0006F9B580BE080012A581BFE91FEEBE34B83 -:107CF00000D8029CF01F00FB622CF01F01028326BB -:107D0000CE0A5803E08100BF0E94E2F900904018BB -:107D10002FF850187228401A103AFE95FF5DE2F8CD -:107D200001085808E0800121029CF01F00F7E2F9E9 -:107D30000090C4BB5804CE600E923006C108049770 -:107D4000089930032FF6EAC5FF640C305F98F3E81A -:107D500000083009F2081800CD500E920A9B029CD0 -:107D60000A93F01F00E5C05078385818FE99FFE9D3 -:107D700040585808CE50EACAFFFA4057506AC078B7 -:107D80006AA8103AC5006E175807CDA0EEF8019406 -:107D90005808CFA16E5A580ACF416E885808C1E1E1 -:107DA0006F5BEDBB0002C040EDBB0003CED1F1DB49 -:107DB000C002C0806B585808CE71EAF8008058089D -:107DC000CE31EEF8014C5808C110EB190088EDB91E -:107DD0000001CDA058055F09CB6B306AEECBFFE800 -:107DE0000A9CF01F00ACCD01CDCB1099EEC8FECCA3 -:107DF0002FF9700A580AC2612FC85849CFA1EDBBAC -:107E00000003C071EEF800F0F1D8C002F9BA010128 -:107E1000EB190088EDB90004C030580A5F0A580A0F -:107E2000CB30CD6B6E4B406CF01F009ACAD1CB6B40 -:107E3000306AEECBFFE80C9CF01F0096FE91FF0726 -:107E4000C19B301ACDDBFACAFF94402CF01F00AB67 -:107E5000C0306F6AC18B6F6A41B8F5E80008FE90C8 -:107E6000FF136F3841C91268FE90FF0E6F4841D969 -:107E70001268FE90FF096F5841E91268FE90FF04F6 -:107E8000C21BE2F800A85808C131306AE2CBFF6497 -:107E9000069CF01F0080C170E2F800E85838C081ED -:107EA000306AE2CBFF5E069CF01F007AC0C00E9BDA -:107EB000029CF01F007FE08100B50E9A069B029C99 -:107EC000F01F0092009A400BE2FC00DCF01F0090D3 -:107ED000FE9FFDF8169A029C30ABF01F008EFE9FAD -:107EE000FDEE3017FEFA0230303B029CE34700946F -:107EF000F01F006AE06B2710300CF01F0088E2F8DA -:107F000000D470985808C0500E9BE2FC00C45D1865 -:107F100030EB029CF01F0082300A029BFEFC020440 -:107F2000F01F0081300802994FEA109B33CCF01FFC -:107F3000007F41B9FE9FFE33E2F800D85808FE905A -:107F4000FDC1E34B00D8029C301BF01F0079FE9F5F -:107F5000FDB9582BC780E07A86A0300B029CF01F39 -:107F60000075FE9FFDC8305BE2F801105818C7206D -:107F7000029C300AF01F006FFE9FFDA4E2F9009002 -:107F800072485828FE90FD9E301BCEFBFAC7FF9426 -:107F9000E2C6FF64306A0C9B0E9CF01F0041E2F8C1 -:107FA00001185808FE91FCF8FE9FFCE4029CF01FAB -:107FB00000621896C230F8FB0194580BC1F1795851 -:107FC000E2180013C351189B029CF01F005CE2F8FA -:107FD00000B05808C0701036C050E2FC00E0F01F3E -:107FE0000058E2FC00DC0C9BE34600B0F01F00559B -:107FF000029CF01F0055FE9FFD0D029C303BF01FC0 -:108000000053FE9FFD5FE2F800B05808FE90FCF3BD -:10801000F0F800F0F1D8C002FE91FCEDFE9FFCEFFD -:10802000029C300A30ABF01F0043FE9FFD4B350928 -:10803000FAC8FF70189A10D9029CFAC9FFE4F01F21 -:108040000044CC6B4C3AF01F0015E2F800E8FE9FAC -:10805000FD4F72485818F9B80002E3F80A44F9BB1A -:108060000000C87B0E9BFE9FFD84E2F800B058081C -:10807000FE90FD68F0F800F0F1D8C002FE91FD62BC -:10808000FE9FFD678003D9B880027714800217D065 -:108090008000917C8003D9F880023A1A800091DC3C -:1080A000800091D0800226948003DA3880027638EE -:1080B0008002BA4C80028172800261E8800261D441 -:1080C000800261A480021CE080021DB88002979C9F -:1080D0008002762880021AE08002BA1C8003DAA8A7 -:1080E000800276648003DAE48002D19C80028F549F -:1080F00080021E84800218F88002BD68800091A072 -:10810000800281748002189C800230DC800298A476 -:108110008002246C8003DB0480028F1C800228D83C -:10812000800276CC800274008002747480022794EE -:10813000800225848002195C800222A480025748B4 -:108140008002B9D48002237080022FCC80021F30BD -:108150008003DA68580C5E0E5E1DD401201D3008C5 -:10816000767C3009BA881A9A7668129B5D182FFDC2 -:10817000D8025EFCEBCD40801897580CC090789CDC -:10818000580CC035F01F00040E9CF01F0004E3CD16 -:108190008080000080027584800091E8EBCD40F87B -:1081A0001896129510944063328CF01F000B1897AC -:1081B000C0F00C9B311AF01F00093FFC8F658F74D3 -:1081C0008F838F9C30090E9A485BF01F00060E9C2F -:1081D000E3CD80F880028F24800091AC8002815A28 -:1081E000800272C8D4011698306AF8CBFFEF109C59 -:1081F000F01F0002D80A0000800091DCD431213D3C -:1082000076FE511E760A503A761950497628505813 -:10821000763E506E764A507A7669508976785098D4 -:10822000768E50AE769A50BA76B950D976C850E864 -:1082300076DE189850FEF8C9FFF876EA510A7654AF -:1082400076AB500C5019E02BA44F50CB110EF8CB4D -:10825000FFF45008512E403A700340487205502BED -:10826000E069A478EA19D76AFC0900091409760ABA -:10827000E06BB756EA1BE8C7F40B000B100BF5E5F3 -:108280002008066814581009E06870DBEA182420FA -:10829000EBE3200AF20E1507FDE9139E060EFDEA38 -:1082A000000A0A5A1005140BFDE32008F606150C07 -:1082B000EDEB13461C06EDE800080658405AE0694D -:1082C000CEEEEA19C1BD14051005EDEE2008EA0B4B -:1082D0001511F7E512FB0C0BF7E800081C58120308 -:1082E0004069120310034078E6051516E0690FAFE8 -:1082F000EA19F57CEBE312A5F00900091605F7E68B -:108300002008EBE800080C581C091009EBEB2008CA -:10831000F2031507E7E913930A03E7E80008165884 -:10832000E06AC62AEA1A4787E80A000A0C0A100A15 -:10833000E7E52008F402150CE5EA13420602E5E839 -:1083400000080A58408EE0694613EA19A830FC0973 -:10835000000916091009E5E32008F2061511EDE9F8 -:1083600012F60406EDE800080658409AE06B950105 -:10837000EA1BFD46F40B000B0A0B100B40A840C98A -:10838000F60E1516FE395BB1FDEB12AEE06A98D819 -:10839000EA1A69800C0E40BBF00A000AEDE22008E0 -:1083A000FDE80008045840C1060A50C9100AE069F7 -:1083B000F7AFEA198B44FDE62008F6090009F40B33 -:1083C0001507F7EA139B1C0BF7E800080C58F7EEAB -:1083D000200A0C0104091009F206150CEDE91346F8 -:1083E0001606EDEB2008EDEA000A1C5A1401E2051E -:1083F0001511EBE112F50C05EBE80008165840DA10 -:10840000E069D7BEEA19895CF40900091C09100962 -:1084100040E8F20E1516E06A1122EA1A6B90FDE9A7 -:1084200012AEF00A000A0A0EEBE62008160AFDE872 -:10843000000840FB0C58E0697193EA19FD98100A96 -:10844000F6090009FDE52008F40B1507F7EA139B70 -:108450001C0BF7E800080A580C0910094108F2063D -:10846000150CE06A438EEA1AA679EDE91346F00A84 -:10847000000A1606F7EE2008EDE800081C580A0A64 -:10848000100A4118F4051511E0690821EA1949B4E8 -:10849000EBEA12F5F00900090C05EDEB2008EBE81A -:1084A000000816581C091009F2031516E7E912A373 -:1084B0000A03E7E520080C680A58404EE06A256286 -:1084C000EA1AF61EFC0A000A160A408B100A40D867 -:1084D000F40E1505E069B340EA19C040FDEA13BE89 -:1084E000F6090009060E403B0C09E0665A51EA16EF -:1084F000265EF0060006FDE320080A68065810090B -:10850000E062C7AAEA12E9B6F6020002F20B150908 -:10851000F7E9137B41191C0BF7EE200806681C587D -:108520000A0606021006E063E681EA13D8A1F20308 -:108530000003EC09150EF3E613291609F3EB2008E6 -:108540001C68165840CA10024078E065105DEA15B4 -:10855000D62FE0611453EA110244E8050005F40146 -:1085600000011C051601E40A1514E06EFBC8EA1EA2 -:10857000E7D3F5E212CAF00E000E120AF5E9200860 -:10858000166840BB125812031005E066CDE6EA16E5 -:1085900021E1F6060006EA0B1505F7E513BB140BFF -:1085A000F7EA2008126841091458E06507D6EA1571 -:1085B000C3371001F2050005E2091509F3E113794B -:1085C0001609F3EB20081468165810034068140EBF -:1085D0001606E60A150EE0620D87EA12F4D5F5E3F9 -:1085E000132AF0020002120AF5E92008166840ABCF -:1085F00012581205100EE06314EDEA13455AF60303 -:108600000003FC0B1514F7EE12CB140BF7EA20084D -:10861000126840F91458E061E905EA11A9E310066F -:10862000F2010001EC091505F3E613B91609F3EBA5 -:10863000200814681658100540581402E066A3F884 -:10864000EA16FCEFEA0A1509F0060006F5E5137ACA -:10865000120AF5E9200816681258409E1002160307 -:10866000E40B150EF7E2132B140BF7EA200812683F -:108670001458E06502D9EA15676F1003FC05000580 -:10868000E60E1514FDE312CE160EFDEB200814685D -:1086900016581201100140A840E91406E060F68166 -:1086A000EA108771E20A1505F0000000F5E113BA3F -:1086B0001C0AF5EE200816681C58E0624C8AEA1283 -:1086C0008D2A1006F2020002EC091509F3E613796F -:1086D0001409F3EA20081C681458160540DB10053D -:1086E0004108E434C6BEE0616122EA116D9DE80AEA -:1086F0000007F6010001E066380CEA16FDE5F00619 -:108700000006EA08150EF1E513281208F1E9200B1E -:10871000F7EA000A125A1C021402407A404E120074 -:108720001001E063CFA9EA134BDEF4030003E40A6F -:108730001514F5E212CA100AF5EB200BF5E8200833 -:10874000EE0B000BF6091504F3EB13C914091258CC -:1087500014061000F3EA200AE065EA44EA15A4BE14 -:10876000E008150BFC050005F1E01358120512088E -:10877000105A10031401F1E92009E20B1510F7E17A -:10878000130B100B1659F7E820081206EC0E1517FC -:10879000FDE6129E160E1C5810054098FDEB200AAF -:1087A000EA061504E0694B60EA19F6BBEDE513C66D -:1087B000F00900091C0616090C5AEDEE20081403F6 -:1087C00040CBE605150BEBE313550C050A58E06AA0 -:1087D000BC70EA1ABEBF1009F60A000AEBE62008D0 -:1087E000F20B1510F7E9130B0A0B16581C0A100AA6 -:1087F00040F8F40E1517E0697EC6EA19289BFDEAD9 -:10880000129EF0090009160EF7E520081C580C0905 -:1088100010094038F2061504E06A27FAEA1AEAA1BC -:10882000EDE913C6F00A000A1C06FDEB20080C58FF -:108830000A0A100A4068F405150BE0693085EA1948 -:10884000D4EFEBEA1355F00900090C05EDEE200812 -:1088500016090A58408B1009E06A1D05EA1A0488B7 -:10886000EBE62008F60A000AF20B1510F7E9130BE5 -:108870000A0B16581C0A100A40B8F40E1517E069C6 -:10888000D039EA19D9D4FDEA129EF0090009160E72 -:10889000F7E520081C580C09100940E8F2061504F9 -:1088A000E06A99E5EA1AE6DBEDE913C6F00A000A88 -:1088B0001C06FDEB20080C580A0A100A4118F405A2 -:1088C000150BE0697CF8EA191FA2EBEA1355F009D1 -:1088D00000090C05EDEE200816090A58405B100946 -:1088E000E06A5665EA1AC4ACEBE62008F60A000A0C -:1088F000F20B15101C0AF7E9130BE0692244EA1980 -:10890000F4290A0B1658100A4032F40E15171202F9 -:10891000FDEA129EEA0811FF160E409AFDE81008C3 -:10892000E069FF97EA19432A1658F40900090A0971 -:108930000C0241061002F60811FFE40A1506F5E2E2 -:1089400013AA1C0AF5E810081C58F2080005E06993 -:1089500023A7EA19AB941206FC0811FFEC0B000BDD -:10896000EA06150AEDE513661406EDE8100814583A -:10897000F6080008E069A039EA19FC93F00B150F1E -:10898000FA243942F7E8131BE80900050C0BEA0E3C -:10899000000EF40811FFF7E810080C58E06959C3FD -:1089A000EA19655BFC08000540E2EA0E15151202A3 -:1089B000FDE512BEEC0811FF160EFDE81008165872 -:1089C000E40A000AE069CC92EA198F0CF40800026C -:1089D0004068F00900090C09E40A1506F60811FFC1 -:1089E000F5E213AA1C0AF5E810081C58F208000268 -:1089F000E069F47DEA19FFEF40C1FC0811FF1201A4 -:108A0000E406150AE20B000BE0695DD1EA198584E2 -:108A1000EDE213661406EDE8100814584045F60818 -:108A200000011205E20B150FEA0E000EF7E1131B11 -:108A3000F40811FF0C0BE0697E4FEA196FA8F7E804 -:108A4000100840A30C581203E60A000AFC080005AF -:108A5000EC0811FFEA0E1515FDE512BE160EFDE835 -:108A600010081658F4080003411AF60811FFE069CF -:108A7000E6E0EA19FE2CF4090009E60A15060C09DD -:108A8000F5E313AA1C0AF5E810081C58F2080003C5 -:108A90004088E0694314EA19A301F00900091609A6 -:108AA000FC0811FF40FBE605150AEBE3136514050E -:108AB000EBE810081458F2080008E06911A1EA195F -:108AC0004E08F6090009F20E000EF006150FE069D7 -:108AD0007E82EA19F753EDE81316F40811FF0A062F -:108AE000EDE810080A58FC080001407E120EEA0862 -:108AF00011FFFC0A000AE20E1515FDE112BE0C0E74 -:108B0000FDE810080C58F40800094128F20A15067F -:108B1000F5E913AA1C0AF4080009E068F235EA181E -:108B2000BD3A990940D91009EC0811FFF205000B74 -:108B3000F5E8100840091C58720CF6080001E069BD -:108B4000D2BBEA192AD740581208E20B150AF006E0 -:108B50000009F7E1136BFC0811FF140BF7E810088C -:108B60001458F208000640B8E069D391EA19EB8680 -:108B7000F0090009F20E0008F40A11FF400EEC099A -:108B8000150FF3E613191609F20C000CF3EA100A9C -:108B9000165AF00A0006EC081515F1E612B8100C8A -:108BA0009D0C401A7408120895084028700916098F -:108BB00091092EDDD832D703EBCD40E03809764855 -:108BC000F1D8C066F608000AF56900181895F00A91 -:108BD000113F1697F6080008F0CCFFE7587AE08BB3 -:108BE0000056300BF01F002DEEC6FFE8EECCFFA8BC -:108BF0000C9B1798178917BAF3E8108917A8F1EAA0 -:108C00001088F3E8110916A9183BCF410C9B0E9C64 -:108C1000F01F0023338A300B0C9CF01F00200C9BAC -:108C2000ECCCFFC81798178917BAF3E8108917A872 -:108C3000F1EA1088F3E8110916A9183BCF416E48F4 -:108C40006E590C9B0E9CEF480050EF490054F01FEA -:108C500000140E9BEECCFFF01798178917BAF3E8B3 -:108C6000108917A8F1EA1088F3E8110916A9183B32 -:108C7000CF410E9B0A9C310AF01F000A0E9C304A1D -:108C8000300BF01F0006E3CD80E0208A300BEEC6EB -:108C9000FFE8F01F0002CC4B800091D0800281FCE5 -:108CA000800091DCEBCD40FC1493784AF40300384B -:108CB000103AF9F98005F9F9B005F7B90BFFF9F9A0 -:108CC000BA059948E608161DF20800089958189444 -:108CD0001692F1DAC066C381F8C5FFE8E043003FB1 -:108CE000E088002C3006EAC7FFC0E406000B340A17 -:108CF0000A9CF01F00290A9B1798178917BAF3E8F6 -:108D0000108917A8F1EA1088F3E8110916A90E3B9B -:108D1000CF410A9B089CF01F00212C06E6060108A3 -:108D2000E048003FFE9BFFE3E6C80040E7D8C006EE -:108D3000E018FFC02C081002069A049B0A9CF01F42 -:108D40000016E3CD80FCF00711402E88100C0E3386 -:108D5000C1D30E9AF01F0010E8C5FFE8E8CCFFA8C9 -:108D60000A9B1798178917BAF3E8108917A8F1EA30 -:108D70001088F3E8110916A9183BCF410E130E0213 -:108D80000A9B089CF01F0005CAAB069AF01F000260 -:108D9000E3CD80FC800091DC800281FCEBCD40FCC7 -:108DA000216DE0682301EA186745E06EAB89EA1E91 -:108DB000EFCD30075008501EE068DCFEEA1898BA84 -:108DC000E06E5476EA1E1032504750575028503EFD -:108DD00018931292580CC140149416951A962FF7B6 -:108DE000090A0B0B1A9CF01F00080E33FE9BFFF9BB -:108DF0001A9B049CF01F00052EADE3CD80FC1A9653 -:108E0000CF8B000080028CA480028BB8D431FACDC5 -:108E10000088501C500B14931292109142B0585A73 -:108E2000E08B0056E04B0040E08B0054FAC4FFF8A2 -:108E3000340A300B089CF01F002E400A401B089C8F -:108E40000896F01F002CFAC5FFB808970D88EC189B -:108E500000360CC80A36CFB1340851845128580363 -:108E6000C110FACCFF9CFACBFFB4300AE60E150213 -:108E7000E40A030818A8E20A030916A92FCA1C3A33 -:108E8000CF81E6CCFFFF00990A9AFAC3FFA0069BA8 -:108E9000F01F0019340A300B089CF01F0015400A1F -:108EA000401B089CF01F00130F88EC18005C0EC8D4 -:108EB0000C37CFB1310C3408513C5184519000999A -:108EC0000A9A069B5128302CF01F000B2DEDD8324A -:108ED000FAC6FF881A9A0C99FACBFFFC301CF01FD7 -:108EE0000006310850165008CA2B0000800091D0AF -:108EF000800091DC80028D9CD401202D501A5009F5 -:108F0000301A1AD8FAC9FFF8FAC8FFFCF01F00039C -:108F10002FFD2FEDD802000080028E0C5EFC5EFE5D -:108F20005EFCD703EBCD40C01896F01F00061897E3 -:108F3000C0500C9A300BF01F00040E9CE3CD80C093 -:108F400080009200800091D0D401F01F0002D80A66 -:108F500080014600D401F8CBFFFCF01F0002D80AC4 -:108F6000800145D4780C580C5E0C3008F948004C50 -:108F7000780C580CCFC15EFC580CF9FC10435EFC19 -:108F8000580CF9B80100F9F81A435EFCEBCD40E04B -:108F9000189716961495314CF01F0005F9F71A032F -:108FA000F9F61A04F9F51A02E3CD80E080028F2465 -:108FB000EBCD40E01696149578075807C160580627 -:108FC000C080306A0C9BEECCFFC0F01F000AC0A12D -:108FD0005805C0B0EECCFFFC310A0A9BF01F00051B -:108FE000C0406E075807CEC10E9CE3CD80E0000064 -:108FF0008000917CEBCD4040781820181696991887 -:10900000784B78390C9C5D190C9CF01F0003E3CD64 -:1090100080400000800091E8EBCD4080202D300A98 -:109020001897189B49BCF01F001C300A0E9B49BCC6 -:10903000F01F00196E085808C2201A9CF01F001873 -:109040006E08400A70EC0E993008141C109BF8084A -:109050000C4C490A2FFCF01F00136E2BF6FA010C82 -:10906000580AC1006E08400A712C0E99141C300871 -:1090700048AAF8080C4C109BF01F000A2FEDE3CD16 -:109080008080F6CBFEB80E9CF01F0007CF80CEBBD1 -:10909000800290E4800274008002913080028F543C -:1090A0008002747480028FB0EBCD40C01896580CCB -:1090B000C1407809300899085809C031C0880E9914 -:1090C0007207129CF01F00065807CFA10C9CF01FDE -:1090D00000050C9CF01F0002E3CD80C0800091E8E9 -:1090E00080029018EBCD4080202D18971A9CF01F1D -:1090F000000E6E0A580AC0C1C1087408149B8F087C -:10910000300A0E9CF01F00096E0A580AC06074E90C -:1091100040081039FE9AFFF30E9CF01F00052FED5A -:10912000E3CD808080028F5480028FF480029018FB -:10913000D4013008782AF548010C7829F2FC0104A2 -:10914000F01F0002D8020000800255ACD43120CDBF -:109150001096782814941293E04A00205FBAF0F930 -:109160000160189758295F18169241511448C05051 -:1091700030060C9C2F4DD832354CF01F00621890F1 -:10918000CF80089A049B2ECCF01F005F81D4FAC9CF -:10919000FFE450965083FAC5FFF84DC81AD5303A0F -:1091A000089B049C4DA65086F01F005AE0C8FFFCA7 -:1091B0000A9B5018310A109CF01F0053FACCFFD4C0 -:1091C000F01F0055E0C8FFC0502840BC6E29F2F8DF -:1091D0000150F808000881E86E2AF4FB0150F4F908 -:1091E0000154E06A851FEA1A51EBB739F20A0648C2 -:1091F000301AA599180981FAE1490048306A402CD3 -:10920000069BF01F0041E141004C2FFD6E06580601 -:10921000C2903005C0680C956C0C580CC58018962F -:10922000ECCBFFC0306A069CF01F003CCF516CD8DD -:109230000838C5505805EDF80000EFF80A00EDF8C1 -:109240001000EBF81A006E29F2F8010C0C38F9B88E -:109250000000F3F80A430C9B301A0E9CF01F0030FC -:109260006E066E1859F8E08A00155806C3200C9A4D -:1092700015088F086E28F0F90128ECCBFFC0720C9E -:1092800072F85D180C9B300A0E9CF01F00256E06CC -:109290005806C1F060EA6CE8103AC074C1A872E8E0 -:1092A0001438E089000612966C095809CF9181099B -:1092B0008D006E2C6E18400A401B2FF88F18F8F99D -:1092C00001280096720C72E85D18C54B6E06CCAB97 -:1092D00081068F000E9CF01F0013CECB089A049BD2 -:1092E000ECCCFFECF01F000DCA61310A400BECCC56 -:1092F000FFFCF01F000AC9F1009CF01F000BC3AB7C -:1093000080028F24800091DC8003DB248003DB9CBF -:109310008002B14480028F548000917C80028FF4DF -:1093200080029018800091E8EBCD4080189E78076D -:10933000580BC06116970E9CE3CD80806E075807CE -:10934000CFB06F381638CFB11AD814997C286EDA9E -:10935000F0C8FEC8EECBFFEC1C9CF01F00092FFDEF -:10936000580CF8071700EFF8100EF9F81A0EF80766 -:109370001710F9B80101F9F81A14CDEB8002914CDD -:10938000EBCD40FC1897300CEF4C010C1496129268 -:109390001094EEF50108580BC080169A189B0A9C91 -:1093A000F01F0016EF4C010C58065F13EEFC010C89 -:1093B000580C5F09F3E30008C16158045F18F3E833 -:1093C0000008C0A05803C0800C9A049B0A9CF01FA0 -:1093D000000CEF4C010C580CF9BC00FFF9BC01006B -:1093E000E3CD80FC300A0C9B0A9CF01F00045F094F -:1093F000EF4C010CCE3B000080028FB0800293281E -:109400000000000000000000EBCD4080580CC100BF -:10941000F8F901103008F94801105809C031C08826 -:109420000E997207129CF01F00045807CFA1E3CDDC -:1094300080800000800091E8EBCD40C01897580C68 -:10944000C250F8F801245808C210189B300A491C71 -:10945000F01F0011EEFC0124F01F00103006306AEE -:109460000C9BEF460124EECCFEE4F01F000DEEFC59 -:109470000114F01F000CEF460114EEFC0118580C0B -:10948000C050F01F0008EF460118E3CD80C0000077 -:109490008002996880027400800256EC800091D0AE -:1094A00080028174EBCD40F8205D189716951494D6 -:1094B000F8F601245806C0503FFC2FBDE3CD80F8DC -:1094C000F8FA012817D81AD817C91AD917B81AD80C -:1094D00017A91AD917981AD81789301B1AD9740CDA -:1094E0004C6AF01F0047EEC3FEC81AD60E984C59BE -:1094F000E06A88C7069BEEFC0140F01F0043EF4C7A -:1095000001142F9D580CC6F0EEFC0144580CC0E02D -:109510001AD6069B0E984BB9E06A88C7F01F003A2E -:10952000EF4C01182FFD580CC5E0340CF01F00372C -:109530001896C5B0EEF8012870099909EEF80128CF -:109540003019700A4B2899199928994A99374B185C -:10955000EEF9012C998899599967EEF8012871095B -:1095600099A9EEF80128711999B9F01F002BEF4C59 -:109570000124C3D0314A300B1A9CF01F0028EEF9A9 -:1095800001305804E9F8105FFBF81A03300650293F -:109590001A9A089B50165006EEFC0124F01F00207A -:1095A000306830593FFAEEFC0124149BF01F001D77 -:1095B000306A0A9BEECCFEE4F01F001B301BEEFC71 -:1095C0000124F01F001A301BEEFC0124F01F0018CC -:1095D0000C980E99497A0C9BEEFC0158F01F00166E -:1095E0000C9CC6CB3FECC6AB3FCCC68B0C9CF01F93 -:1095F00000133FDCC63B00008003DBA880023A1A60 -:1096000080029AF08002819C80028F2480029A243A -:10961000800299C48002609C800091D08002581C16 -:1096200080025564800091DC800261D4800261E890 -:109630008002996880027474800091E8EBCD40FC50 -:109640001897F8F801105808C6F0F8F801284CAA45 -:10965000700C301BF01F0049EEF801245808C0A020 -:10966000EEF801284C6A700C301BF01F0044E3CD6B -:1096700080FCEEF801605828CF41EEF80128700C0C -:1096800070295D19587CCED1EEF8016C5818CE9136 -:10969000EEF501105805C410EEC2FEB8EAC3FFFC97 -:1096A000300A069BEEFC0108F01F0036306A189461 -:1096B000069B049CF01F0034C0605804C3706948C6 -:1096C0005808C341EB3800091AD8EB3800081AD8FB -:1096D0000BF81AD80BE8EEF601281AD80BD91AD9CC -:1096E0000BC84AAA1AD8301B6C0CF01F00242FADEF -:1096F0005804C090EEF90128E8CAFFFC069B720CE2 -:1097000072E85D186A080A9CEF480110F01F0020FB -:10971000EEF501105805CC31EEF8012849DA700C4D -:10972000301BF01F0016E3CD80FCEB3800091AD87F -:10973000EB380008EEF601281AD80BF81AD80BE817 -:109740001AD80BD91AD90BC8493A1AD8301B6C0C45 -:10975000F01F000A6A08069BEEFA0134EF48011078 -:109760000E9CF01F000E0A9CF01F00092FADE3CDE8 -:1097700080FC00008003DBEC80023A1A8003DC14DA -:1097800080028FB08000917C8003DCA0800091E893 -:109790008003DCFC8003DC4C800294A4EBCD40F819 -:1097A0001695189414931297F8FB0134580BC05077 -:1097B000F6F801485808C5D15807C4C0E8F60110AA -:1097C0005806C4A03007C0680C976C0C580CC440F5 -:1097D0001896306A0A9BECCCFFFCF01F002CCF518E -:1097E0005807EDF81000EFF81A00EDF80000E9F85E -:1097F0000A44E04303E7E08A003BE8FA0110580A14 -:10980000C4006C3B74381638C065C3B8723816385B -:10981000C054129A74095809CFA18D0995061AD31C -:109820000BD80B8CE8F601281AD80BC91AD90BB83B -:109830001AD80BA91AD90B98495A1AD8301B1ADC16 -:109840006C0CF01F0014089CF01F00132F9DE3CD3B -:1098500080F8E3CD80F8310CF01F00101896C0F0AE -:10986000306A0A9BECCCFFFCF01F000D8D33CC6BF3 -:109870000A9AF8FC0108F01F000BC9FBE3CD80F841 -:109880008D0AE9460110CCCB8000917C8003DD2459 -:1098900080023A1A8002963C80028F24800091DC7C -:1098A00080029328EBCD40F8208D169414971895DC -:1098B000F8F801345808C470F01F0027EEC6000104 -:1098C000C426E068009C1A93EC080248E8080007E8 -:1098D000EAC4FEB8C0682016EEC7009C5806C3351F -:1098E000EAF901346EAA7258103ACF61724BEECC8D -:1098F000FFFAF01F001ACF01306A089B0E9CF01F80 -:109900000017CEA0EEFB0080580BCE601A9AEECC6A -:10991000FFA8F01F0013CE01189A0E9BEAFC010865 -:10992000F01F0010C13079485808CD604048EDB8AC -:109930000000CD213019E06A03E80E9B0A9CF01F5D -:10994000000ACCAB2F8DE3CD80F84048F3D8C0019E -:10995000CF3B0000800294088000917C8002BD68AB -:1099600080028FB08002979CEBCD4060F9380121D6 -:10997000F8F501281AD8F93901201AD9F938011F48 -:109980001AD8F939011E1AD9F938011D1AD8F9392E -:10999000011C489A1AD9302B18966A0CF01F000740 -:1099A0000C9CF01F00070C9CF01F00062FADE3CDB0 -:1099B000806000008003DD6C80023A1A80029438D7 -:1099C0008002963CEBCD40E0201D1897F8F801147A -:1099D0005808C0613FF60C9C2FFDE3CD80E0F8F8FD -:1099E0000128300C5C791ADC5C5B700C70D6FAC80C -:1099F000FFFC5D162FFD1895580CCED01899400825 -:109A0000E06A88C7EECBFEE4EEFC0114F01F000410 -:109A100018960A9CF01F0003CDFB000080028154C1 -:109A2000800091E8EBCD40E0208D14971896580BFC -:109A3000C2614A781AD8EEF60128EF3801211AD807 -:109A4000EF3901201AD9EF38011F1AD8EF39011E5A -:109A50001AD9EF38011D1AD8EF39011C49DA1AD981 -:109A6000302B6C0CF01F001C0E9CF01F001C0E9C79 -:109A7000F01F001B2F9D2F8DE3CD80E01A95320A39 -:109A80001A9BF01F0018C1211A9B320AEEF801340C -:109A90008F8A1AD8EEC9FEE4EEC8FEC8EEFC0108B3 -:109AA000F01F001149182FFDCC6B0C9C310A1A9B3A -:109AB000F01F000CC090EEF8012848DA700C302B33 -:109AC000F01F0005CB7B1A9B310ACE1B8003AD2C07 -:109AD0008003DE1880023A1A800294388002963C95 -:109AE000800257CC8002914C8003DDB48003DDCC32 -:109AF000EBCD40F81897169514931294F8F80124BA -:109B00005808C090F8C6FEE4306A48BB0C9CF01FB1 -:109B1000000BC031E3CD80F80C9C306A0A9BF01F2B -:109B20000007CF910899069A0A9BEEFC0124F01FCA -:109B30000004CF1B800294008000917C800261FCB5 -:109B4000EBCD40F8FACD01001293109418961697B9 -:109B5000149530081A99F2080B082FF8E048010014 -:109B6000CFB1300E1A9C1C9BEC0B0709198AFC0A1A -:109B700000081208FAC9FF00FDD8C0081C09F33814 -:109B8000FF0018C8F36AFF002FFBFAC8FF000E3B66 -:109B9000F9BB0200103CCE915805C4C0300E1C9792 -:109BA0001C9CF8C8FFFFFACAFF00F9D8C008180AC1 -:109BB000F53BFF00F60E0008FAC9FF00FDD8C0080B -:109BC0001C09F338FF00F568FF00F36BFF002FF767 -:109BD0000E35FE9BFFE85804C2A006963007F8C871 -:109BE000FFFFFACAFF00F9D8C008180AF539FF00CC -:109BF000F20E0008FACBFF00FDD8C0081C0BF738A6 -:109C0000FF00F568FF00F769FF00F538FF00100955 -:109C1000F3D9C008FACAFF00120A0D89F538FF000F -:109C200012580CC82FF70E34FE9BFFDB2C0DE3CD32 -:109C300080F80A9E0A9CCD0BD401129E16981899A2 -:109C40001C9B149C300AF01F0002D80280029B402B -:109C500000000000D431FACD0180340AFAC4FEC0FD -:109C6000510C089CF01F04BF688A516A689950A97A -:109C700068A8509868B65086684568216830416683 -:109C800050E5685250D2686A50CA687950B968087D -:109C90005158E3E8200868D50C580A586812F00AB1 -:109CA000150150F2F5E813FA517A68E868F640E5D4 -:109CB00040A9105940980C580A5802580059F00A07 -:109CC00015010459F5E813FAF20215014178E5E9A6 -:109CD00013F2519A518240C54089105968C80458FE -:109CE00040E20A58045840D6F00A15010C59F5E82C -:109CF00013FA005951AA419840B640D5416240CA72 -:109D0000F2071501EFE913F768D9105968E80E5802 -:109D1000045814580C590A59F0051501F20615019A -:109D2000EBE813F5EDE913F640B851C551B641A281 -:109D300068F940AA416504591459105941780C58E2 -:109D400040960C580A58F2021501F00A1501E5E98F -:109D500013F2F5E813FA41C851EA51D2408640A502 -:109D6000409A418910594198045868C204581458BF -:109D70000C590A59F0051501F2061501EBE813F527 -:109D8000EDE913F6408851F6520541E268DA68C5FC -:109D9000EFE220091459105941A80C5868E60C58F4 -:109DA0000A58F2021501F00A1501E5E913F2F5E887 -:109DB00013FA52124208522A41B968F668D568EA85 -:109DC000105941C804584172045814580C590A5982 -:109DD000F0051501F2061501EBE813F5EDE913F6B0 -:109DE0005245523668F84222418A417541D9045998 -:109DF0001459105941E80C5841960C580A58F2026F -:109E00001501F00A1501E5E913F2F5E813FA4248E5 -:109E1000418641A5525241F9105942080E59045841 -:109E20000C5941920A580458526AF20A1501F5E990 -:109E300013FAF0091501F3E813F9426841B641C578 -:109E400041A2527A52894219105942280C59145889 -:109E50000E590A580458F20A1501F5E913FAF009E7 -:109E60001501529AF3E813F9428852A941D641B537 -:109E700041E2423910594248145841CA0458145812 -:109E80000C5941FA0A59F0051501F2061501EBE8E3 -:109E900013F5EDE913F641D852C542A241E552B699 -:109EA00042590459145942CA105942680C58420682 -:109EB0000C580A5841F6F20E1501F0021501FDE9A1 -:109EC00013FEE5E813F2421942781458420A42257B -:109ED000125842890C581C59F00615010A59EDE830 -:109EE00013F61459F20A1501F5E913FA0C951493B7 -:109EF000423952E652FA4216424A52D24298045825 -:109F0000125842A90C580A5942261459F00A150150 -:109F1000F5E813FA0C59530A1496F2081501425A3F -:109F2000F1E913F84239109C531842B806581458F6 -:109F3000426A125842C90C591459424A1459F00A3B -:109F40001501F5E813FAF2081501F1E913F8109B71 -:109F500053384278FDEC20091059425810595019D5 -:109F60004289E5EA200812584269125840195008FF -:109F70004018A178F1E913F8400953484008A17846 -:109F8000F1E913F853584298EBEB20091059427845 -:109F9000105942A850194349E7E92009105942884D -:109FA000105940185009532A4019A179F3E813F9C0 -:109FB000400853694009A179F3E813F953794358EC -:109FC000EDE8200942B810594298105942C850197A -:109FD0004369F9E92009105942A81059401850095D -:109FE0004019A179F3E813F9400853894009A17990 -:109FF000F3E813F943785399F5E8200942B81C595E -:10A00000105950194389F7E92009129842C9045898 -:10A010001258401950084018A178F1E913F8400986 -:10A0200053A84008A178F1E913F8434953B843987D -:10A0300010590A591C59501943A94358125840192C -:10A04000065804584012A172E5E913F253C2F00217 -:10A050001501E5E813F243B84369105943780C59E8 -:10A060000A5943C50A581858065853D2F202150126 -:10A07000E5E913F2F0091501F3E813F943D853F9B0 -:10A08000438910594398145904580C5916581858B4 -:10A0900053E243F54342F20C1501F0061501F9E9CC -:10A0A00013FCEDE813F643A943B80A5918580459AC -:10A0B0001459435A145816585406436A4402F20677 -:10A0C0001501F0051501EDE913F6EBE813F543482A -:10A0D00054255416435543C904591459105943D8AB -:10A0E000F20215010C58E5E913F2437654320C588C -:10A0F0000A58F00A1501F5E813FA544A890A442966 -:10A1000043864365437A43E8125843F90C5804598F -:10A110000A584392F0061501EDE813F654568916D5 -:10A1200004591459F2051501EBE913F55465892515 -:10A13000444243AA4389F9E2200814581258F00215 -:10A140001501E5E813F25472439544090C5943B6DE -:10A1500089320C590A59F20A1501F5E913FA548AA1 -:10A16000894A43C6446943A5441812580C580A58F2 -:10A17000F0061501EDE813F6549643BA4429045944 -:10A1800043D2895604591459F2051501EBE913F528 -:10A1900054A58965448243EA43C944380458145895 -:10A1A0001258F0021501E5E813F254B243D54449C0 -:10A1B0000C5943F689720C5944080A59446A045AE6 -:10A1C000105A0C5AF2061501EDE913F654C6447BF9 -:10A1D00089860C5BF4061501EDEA13F654E6441586 -:10A1E00044A243E9445889A60A5B045818581258F7 -:10A1F000F0051501EBE813F554D58995185BF602C7 -:10A200001501E5EB13F254F289B2444A4489449BA8 -:10A210000A590C5B4405442644A804581458F3E634 -:10A22000200A0C580A5A5028E0657999EA155A8292 -:10A23000504A410644325116441AEE050009F7E22D -:10A2400020081458E062EBA1EA126ED95038507918 -:10A25000040E0C99506EE068BCDCEA188F1B0C9A57 -:10A26000100C2F8A505C512A1306511941087403AF -:10A27000720C2F485138410A2F0A514A700A41483E -:10A28000700941580A08F0090009EC081505F1E6C3 -:10A2900013B8F2080008F5E3200918691459F00909 -:10A2A000000740F80A08F00A0009F80B151EF7EC41 -:10A2B000122BF7E320080C680658F2080008EE0994 -:10A2C0001505F3E713B9EC0A151EF009000EF5E6C3 -:10A2D000122AFC091505F7EA2008F3EE13B9EFE896 -:10A2E000000816580A01EE0C151E0601F9E7122C9B -:10A2F0001001F9EA200812011C68E209150514583A -:10A30000F3E113B90A001600100040E812000A0831 -:10A31000F00A0009FC0B151EF7EE122BF7EC2008D3 -:10A3200002681858F2080008E0091505F3E013B9AF -:10A33000F009000640D80A08F00C0009E20A151ED0 -:10A34000F5E1122AF5EB200800681658F20800081B -:10A35000EC091505F3E613B9F009000E40C80A0828 -:10A36000F00B0009E00C151EF9E0122CF9EA2008A8 -:10A370000C681458F2080008FC091505F3EE13B92F -:10A38000F009000340B80A08F00A0009EC0B151E9A -:10A39000F7E6122BF7EC20081C681858F2080008A2 -:10A3A000E6091505F3E313B9F009000641680A0848 -:10A3B000F00C0009FC0A151EF5EE122AF5EB200838 -:10A3C00006681658F2080008EC091505F3E613B9FB -:10A3D000F009000E40A90A091609E60C151EF9E35A -:10A3E000122CF9EA20080C681458F2080008FC093D -:10A3F0001505F3EE13B9F009000340980A08F00AB6 -:10A400000009EC0B151EF7E6122BF7EC20081C6870 -:10A410001858F2080008E6091505F3E313B9F00926 -:10A42000000640890A091809FC0A151EF5EE122AD1 -:10A43000F5EB200806681658F2080008EC09150527 -:10A44000F3E613B9F009000E68C80A08F00B00091A -:10A45000E60C151EF9E3122CF9EA20080C681458D2 -:10A46000F2080008FC091505F3EE13B9F009000124 -:10A4700068D90A091409EC0B151EF7E6122BF7EC44 -:10A4800020081C681858F2080006E2091505F3E1D7 -:10A4900013B968E8EC0900030A08F00C0009FC0A8B -:10A4A000151EF5EE122AF5EB200802681658F20880 -:10A4B0000008E6091505F3E313B9F009000E68F981 -:10A4C0000A091609E20C151EF9E1122CF9EA200816 -:10A4D00006681458F208000BFC091505F3EE13B9D1 -:10A4E0004178F60900000A08F00A0009E606151E80 -:10A4F000EDE31226EDEC20081C681858F208000A5B -:10A50000E0091505F3E013B9F409000341890A09CC -:10A510001809FC0A151EF5EE122AF5E62008006857 -:10A520000C58F208000CE6091505F3E313B941983D -:10A53000F80900010A08F0060009E00B151EF7E013 -:10A54000122BF7EA200806681458F2080008E209FE -:10A550001505F3E113B94077F009000E1407FC0963 -:10A560001505E60A151EF3EE13B9F5E3122AF5EB0D -:10A57000200802681658EE080008F009000341A8F8 -:10A580000408F00B0009E20C151EF9E1122CF9EA9F -:10A5900020081C58F2080008E6091505F3E313B972 -:10A5A000F009000541B904091409FC0B151EF7EE6A -:10A5B000122BF7EC20080658F2080008EA091505E6 -:10A5C000F3E513B9F009000641C80408F00C0009CE -:10A5D000E60A151EF5E3122AF5EB20080A58F208E0 -:10A5E0000008EC091505F3E613B9F009000E41D98E -:10A5F00004091609EA0C151EF9E5122CF9EA2008DF -:10A600000C58F2080008FC091505F3EE13B9F0091F -:10A61000000541E80408F00A0009EC0B151EF7E6F6 -:10A62000122BF7EC20081C58F2080008EA0915055F -:10A63000F3E513B9F009000641F904091809FC0A09 -:10A64000151EF5EE122AF5EB20080A58F20800084C -:10A65000EC091505F3E613B9F009000E42080408E9 -:10A66000F00B0009EA0C151EF9E5122CF9EA200896 -:10A670000C58F2080008FC091505F3EE13B9F009AF -:10A680000005421904091409EC0B151EF7E6122BFC -:10A69000F7EC20081C58F2080008EA091505F3E554 -:10A6A00013B9F009000642280408F00C0009FC0A5E -:10A6B000151EF5EE122AF5EB20080A58F2080008DC -:10A6C000EC091505F3E613B9F009000E4239040947 -:10A6D0001609EA0C151EF9E5122CF9EA20080C58A7 -:10A6E000F2080008FC091505F3EE13B9F00900059E -:10A6F00042480408F00A0009EC0B151EF7E6122B7D -:10A70000F7EC20081C58F2080008EA091505F3E5E3 -:10A7100013B9F0090006425904091809FC0A151E6C -:10A72000F5EE122AF5EB20080A58F2080008EC09A9 -:10A730001505F3E613B9F009000E42680408F00BA2 -:10A740000009EA0C151EF9E5122CF9EA20080C584C -:10A75000F2080008FC091505F3EE13B9F00900032F -:10A76000427904091409EC0B151EF7E6122BF7ECDD -:10A7700020081C58F2080008E6091505F3E313B990 -:10A78000F0090005428904091809FC0A151EF5EEB6 -:10A79000122AF5EB20080658F2080008EA09150508 -:10A7A000F3E513B9F009000E429904091609E60C05 -:10A7B000151EF9E3122CF9EA20080A58F208000BDA -:10A7C000FC091505F3EE13B9F609000042A90409C6 -:10A7D0001409EA06151EEDE51226EDEC20081C58BA -:10A7E000F208000AE0091505F3E013B9F4090003C3 -:10A7F00042B9FC0A151E0409F5EE122A1809F5E6FD -:10A80000200800584065F208000C1405E6091505FB -:10A81000E00B151EF3E313B9F7E0122BF809000162 -:10A82000F7EA200AE2081505065AF1E113B842C911 -:10A8300004090C091409E60A151EF208000EF5E3D6 -:10A84000122AF5EB20080258EA080008E066BCDC92 -:10A85000EA168F1BFC091505F3EE13B9F009000089 -:10A8600042D80C08E20C151EF00B0002F9E1122C84 -:10A87000FDEC0008FDEC100914691049E00815050D -:10A88000F1E013B8E4090009F208000242E80C08FC -:10A89000FC0B151EF00A0005F7EE122BE1EB000889 -:10A8A000E1EB100918691049E4081505EA090009E7 -:10A8B000F1E213B8E00A151EF2080005F5E0122ACD -:10A8C00042F9E5EA00080C09F20C0003E5EA100978 -:10A8D00016691049EA081505F1E513B8E6090009FB -:10A8E000F208000343080C08E40C151EF00B0006E8 -:10A8F000F9E2122CEBEC0008EBEC1009146910499A -:10A90000E6081505EC090009F1E313B8EA0B151E7A -:10A91000F2080006F7E5122B4319E065BCDCEA15E6 -:10A920008F1BE7EB00080A09F20A000AE7EB10099F -:10A9300018691049EC081505F1E613B8F409000987 -:10A94000F208000243280A08E60A151EF00C000C63 -:10A95000F5E3122AEDEA0008EDEA1009166910493C -:10A96000E4081505F8090009F1E213B8EC0C151E0E -:10A97000F208000EF9E6122C4339E5EC00080A094A -:10A98000F20B000BE5EC100914691049FC081505E1 -:10A99000120BF1EE13B84349F6080005E40B151E3F -:10A9A000F7E2122BE062BCDCEA128F1BFDEB000821 -:10A9B0000409F20A000AFDEB100918691049EA08B7 -:10A9C0001505F1E513B8F4090009F208000643582B -:10A9D0000408FC0A151EF00C000CF5EE122AEBEA36 -:10A9E0000008EBEA100916691049EC081505F8098A -:10A9F0000009F1E613B8EA0C151EF208000EF9E59D -:10AA0000122C4369EDEC00080409F20B000BEDEC8D -:10AA1000100914691049FC081505F1EE13B8F60980 -:10AA20000009F208000543780408EC0B151EF00A33 -:10AA3000000AF7E6122BFDEB0008FDEB1009186980 -:10AA40001049EA081505F4090009F1E513B8FC0AF4 -:10AA5000151EF2080006F5EE122A4389EBEA0008FB -:10AA60000409F20C000CEBEA100916691049EC0815 -:10AA70001505F1E613B8F8090009F208000E43982D -:10AA80000408EA0C151EF00B000BF9E5122CEDEC96 -:10AA90000008EDEC100914691049FC081505F609C9 -:10AAA0000009F1EE13B8EC0B151EF2080005F7E6ED -:10AAB000122B43A9FDEB00080409F20A000AFDEB82 -:10AAC000100918691049EA081505F1E513B8F409E9 -:10AAD0000009F208000643B80408FC0A151EF00C31 -:10AAE000000CF5EE122AEBEA0008EBEA10091669F1 -:10AAF0001049EC081505F8090009F1E613B8EA0C4D -:10AB0000151EF208000EF9E5122C43C9EDEC000801 -:10AB10000409F20B000BEDEC100914691049FC0854 -:10AB20001505F1EE13B8F6090009F208000343D841 -:10AB30000408EC0B151EF00A000AF7E6122BFDEBD9 -:10AB40000008FDEB100918691049F4090009E6082E -:10AB50001505F1E313B8F208000543E90409FC0AFE -:10AB6000151EF20C000CF5EE122AE7EA0008E7EADF -:10AB7000100916691049F8090009EA081505F1E5F8 -:10AB800013B8F208000E43F90409E60C151EF20B87 -:10AB9000000BF9E3122CEBEC0008EBEC1009146944 -:10ABA00010494057FC0815051407F1EE13B8F609D3 -:10ABB000000AEA0B151EF7E5122BFDEB0009F4085D -:10ABC0000003FDEB1008E60A15051868F5E313BA53 -:10ABD0001248EE080009F20A00054409E06AC1D6ED -:10ABE000EA1ACA6214091809FC06151EEDEE1226AF -:10ABF000EDEB20080658F2080008EA091505F3E510 -:10AC000013B9F009000A4419E068C1D6EA18CA620B -:10AC100010091609E60C151EF9E3122CF9E62008B6 -:10AC20000A58F2080008F4091505F3EA13B9EA0B0B -:10AC3000151EF0090003F7E5122B4429E065C1D683 -:10AC4000EA15CA620A090C09F7EC20081458F20840 -:10AC50000008E6091505F3E313B9F009000EFC0935 -:10AC60001505F3EE13B9F406151EEDEA1226443A63 -:10AC7000EDEB20080A0A0658180A100A120A44497D -:10AC80000A091609E60C151EF9E3122CF9E620084C -:10AC90001C58F2080008F4091505F3EA13B9FC057D -:10ACA000151EF0090003EBEE1225E6091505EBEC85 -:10ACB0002008F3E313B91458E062C1D6EA12CA625D -:10ACC000445B040B0C0BF406151E100BEDEA122668 -:10ACD000120BEDE52008F60915050658F3EB13B93C -:10ACE000446A040A180A100A4478F409000E040899 -:10ACF000F0050009E60A151EF5E3122AF5E620081C -:10AD00001658F2080008FC091505F3EE13B9F0090E -:10AD10000005448904090C09F60C151EF9EB122CE8 -:10AD2000F9EA20081C58F2080008EA091505F3E5BD -:10AD300013B9F009000344980408F00A0009FC0B59 -:10AD4000151EF7EE122BF7EC20080A58F20800083F -:10AD5000E6091505F3E313B9F009000E44A9040947 -:10AD60001809EA06151EEDE51226EDEB2008065837 -:10AD7000F2080008FC091505F3EE13B9F009000507 -:10AD8000EA091505F3E513B944BAE60C151E040AE1 -:10AD9000F9E3122C160AF9E620081C58100A120AC8 -:10ADA00044C904090C09FC0B151EF7EE122BF7EC35 -:10ADB00020080A58F2080002F4091505F3EA13B94D -:10ADC00044D8E409000EE069C1D6EA19CA62120843 -:10ADD000EA06151EF00C0009EDE51226EDEB200841 -:10ADE0001458F2080008FC091505F3EE13B9F00930 -:10ADF000000CE068C1D6EA18CA62F405151EF8090D -:10AE00001505EBEA1225F3EC13B944EA100AEBE658 -:10AE10002008160A1C58100AFC02151EF40900012D -:10AE2000E5EE1222E06AC1D6EA1ACA62E5E5200818 -:10AE3000E20915051858F3E113B944FB140B404A15 -:10AE40000C0BA17A100B44B8F609000E4049F5E945 -:10AE500013FA14584459F1E9200B4438E069C1D67B -:10AE6000EA19CA6289CAF7E820074108F806151EE0 -:10AE7000120AEDEC1226700CEDE22008120C0258BA -:10AE8000FC091505F3EE13B90A0AE203151E100AB0 -:10AE9000E7E11223120AE7E62008E069C1D6EA19C1 -:10AEA000CA621C5840354030A170E1E513F0E0095A -:10AEB000000BF4091505040BF3EA13B9100B402835 -:10AEC0004021120BE065C1D6EA15CA62A171E3E820 -:10AED00013F1E2050008F0060009FC02151EE5EE7C -:10AEE0001222E5E320081458F2080008F6091505B7 -:10AEF000F3EB13B9F406151EF009000EEDEA122665 -:10AF0000EE051501410AEBE713F5EDE220080A0C06 -:10AF10001658060CFC091505100CF3EE13B9120CAB -:10AF2000950C411972081C089308F609151E412A50 -:10AF3000F3EB1229740812089508413870090C09BE -:10AF4000910989D089E189F541466C080408089C7B -:10AF50008D08340A300BF01F00042A0DD83200008F -:10AF6000800091DC800091D0EBCD40F878581494AB -:10AF7000A37AF40800099959123AF9F98006F9F907 -:10AF8000B006F7B90BFFF9F9BA06FDD8C066E808B4 -:10AF9000161DF2080008996818951693E80E000926 -:10AFA000E049003FE08B000F3006FCCCFFE4E606F2 -:10AFB000000BEA0C000CE806010AF01F0014E3CDB8 -:10AFC00080F8FC061140FCCCFFE40C9AEA0C000C63 -:10AFD000F01F000EEACBFFE40A9CF01F000DECC846 -:10AFE000FFC11034E088000FE60600070E9B0A9CA4 -:10AFF0002C07F01F00072C06ECC8FFC11034FE9B85 -:10B00000FFF7300ECD3B0000800091DC80029C54A5 -:10B01000D421202D16961895300B1A94583BF9B868 -:10B020000B14F9B80818F60911FFEC08030AF3D954 -:10B03000C002A379F4090A4AE80B0B0A2FFB588BCC -:10B04000CEE1301A49EBC038301A49EB0C9CF01FA6 -:10B05000001E6C58E21801F8E04801C0CF61308A48 -:10B060001A9B0C9CF01F00183007EE081602EE0920 -:10B0700011FFEC08032AF3D9C002A379F4090A4AA4 -:10B08000EA070B0A2FF75947CF11300B340AECCCE3 -:10B09000FFE4F01F000E0E9A300B0C9CF01F000B0B -:10B0A000ECCCFFEC308A300BF01F00081A9C308A81 -:10B0B000300BF01F00062FEDD82200008003DE5871 -:10B0C00080029C508002AF68800091D0EBCD40FCA4 -:10B0D000217DE0682301EA186745E06EAB89EA1E2E -:10B0E000EFCD5008E068DCFEEA1898BA3007501E31 -:10B0F0005028E06E5476EA1E1032E068E1F0EA185B -:10B10000C3D250675057503E504818931292580C73 -:10B11000C140149416951A962FF7090A0B0B1A9C26 -:10B12000F01F00070E33FE9BFFF91A9B049CF01FD3 -:10B1300000052E9DE3CD80FC1A96CF8B8002AF6870 -:10B140008002B010D431FACD008C501C500B1493F7 -:10B150001292109142C0585AE08B0056E04B0040CA -:10B16000E08B0054FAC4FFF8340A300B089CF01F3F -:10B17000002E400A401B089C0896F01F002CFAC5C0 -:10B18000FFB808970D88EC1800360CC80A36CFB106 -:10B190003408518451285803C110FACCFF9CFACBD3 -:10B1A000FFB4300AE60E1502E40A030818A8E20A02 -:10B1B000030916A92FCA1C3ACF81E6CCFFFF0099DC -:10B1C0000A9AFAC3FFA0069BF01F0019340A300B3D -:10B1D000089CF01F0015400A401B089CF01F00133C -:10B1E0000F88EC18005C0EC80C37CFB1314C340816 -:10B1F000513C5184519000990A9A069B5128302C59 -:10B20000F01F000B2DDDD832FAC6FF881A9A0C9970 -:10B21000FACBFFFC301CF01F0006314850165008D6 -:10B22000CA2B0000800091D0800091DC8002B0CC5D -:10B23000D401202D501A5009301A1AD8FAC9FFF833 -:10B24000FAC8FFFCF01F00032FFD2FEDD80200000D -:10B250008002B144D43121AD5009502B501A1892BC -:10B2600042395809C6D0504850593008FAC7FFAC87 -:10B270005038FAC3FFD4FAC0FFC0FAC4FFE8049CF8 -:10B28000F01F003140382FF850381AD34038518819 -:10B2900040285168FAC8FF98519830484046517884 -:10B2A000B986FB380013FAC9FFA0FB68006B189B36 -:10B2B0000E98FB66006840454046302A1891B185DB -:10B2C000049CFB650069A986FB66006AF01F001FED -:10B2D000314A069B009CF01F001E2FFD40085818A5 -:10B2E000E08A001C301608983149069A029B049C9B -:10B2F000F01F0018314A089B069CF01F0015009AA9 -:10B30000089B17381589125814C80E3ACFB12FF67A -:10B3100040080C38FE99FFE940560C985946F9B69A -:10B320000B140C180C9A5058009B404CF01F00084E -:10B3300040585808C05040480C085048CA1B2E6D51 -:10B34000D8320000800091B88002B144800091DCC6 -:10B350008002B230D43120EDFACEFFA4109530082F -:10B3600018927C14149716911296FB680036FB68AD -:10B3700000377C00149CF01F00275804C3003018CD -:10B38000FAC9FFC9508850685097FAC8FFCA505C84 -:10B3900050B6507550A950C85934E0880023300782 -:10B3A000FAC3FFECFAC6FFDCC088FB680036E8078A -:10B3B00001055935E088001CE00700080C991AD8EF -:10B3C0002EC70698304A029B049CF01F00132FFDE5 -:10B3D000FB3800362FF80E34FE9BFFE92F2DD832B4 -:10B3E00008953007FAC3FFECFAC6FFDC0C99069803 -:10B3F0001A96049C1AD6029B304AF01F00070A9A3C -:10B400000C9BE007000CF01F00052FFD2F2DD832FC -:10B41000800091B88002B144800091DC00000000FF -:10B4200000000000EBCD4080129E1097584CC26087 -:10B43000E08A0013588CC140590CC101590B5F18A8 -:10B4400058FA5FA91248C0A130689D083039300C05 -:10B450008F09E3CD8080582CC1E0E3CFC080E04B62 -:10B4600000205F1859FA5FA91248CF8130689D0803 -:10B470003029300C8F09E3CD808058DB5F1858CA23 -:10B480005FA91248CEB130099D093018129C8F086F -:10B49000E3CD8080585B5F18584A5FA91248CF40BF -:10B4A000E3CFC080580C5E0CF8F8010C5808F9B8CE -:10B4B0000100F9F81A435EFC580CF9FB1A4C5EFCCB -:10B4C000580CF9FA1A51F9FB1A505EFC580CF9FBAA -:10B4D0001A415EFC580CC080586BE08800035EFD8A -:10B4E0004928F00B032F5EFEF94A016C5EFDF94A14 -:10B4F00001685EFDF94A01645EFDF94A01605EFD86 -:10B50000580ACF20F94A01585EFDF4C80001E0480E -:10B510000063FE9BFFEAF94A01545EFD580ACE40E3 -:10B52000F94A01505EFD00008003DE5CEBCD40E097 -:10B53000189716951496580CC130F8FC0180F01F2E -:10B54000001158055F0858065F091248C0B030085E -:10B55000EF480188EF480180109CE3CD80E0E3CF05 -:10B56000C0E00C9CF01F0008EF4C0180CF900A9BBC -:10B570000C9AF01F0006300CEF460188E3CD80E006 -:10B58000800091E880009200800091DCEBCD40E0EB -:10B59000189716951496580CC130F8FC017CF01FD2 -:10B5A000001158055F0858065F091248C0B03008FE -:10B5B000EF480184EF48017C109CE3CD80E0E3CFAD -:10B5C000C0E00C9CF01F0008EF4C017CCF900A9B60 -:10B5D0000C9AF01F0006300CEF460184E3CD80E0AA -:10B5E000800091E880009200800091DCEBCD40E08B -:10B5F000189716951496580CC130F8FC0174F01F7A -:10B60000001158055F0858065F091248C0B030089D -:10B61000EF480178EF480174109CE3CD80E0E3CF60 -:10B62000C0E00C9CF01F0008EF4C0174CF900A9B07 -:10B630000C9AF01F0006300CEF460178E3CD80E055 -:10B64000800091E880009200800091DCEBCD40FE0C -:10B65000189716961493580CC031E3CFC0FE7409A6 -:10B66000F8F801605828C5E0F8F1016CF8F50168B8 -:10B67000F8F201645979FE98FFF23DD8304AB68855 -:10B68000ECCCFFFEFEFB0238F01F008E30083019B4 -:10B69000ACF8ACE9ECC4FFF85905E08000A158858E -:10B6A000E08000AA5845E08100BC0A9AFEFB02181F -:10B6B000089CF01F00843018A8C8E8C9FFFB3008B8 -:10B6C000B288E8C5FFFA5902E08000905882E08114 -:10B6D000009F304A4FDB0A9CF01F007A3018AAC83E -:10B6E000EAC9FFFB3008B2882FA55811E080008A14 -:10B6F0005821E08100A5304A4F5B0A9CF01F007181 -:10B70000EAC9FFFCEC0811FE1208AC98F206010C25 -:10B71000CA56870CEEF501745805E08000C1E3CFEE -:10B7200080FEF8F8010CF8F2016C5808F9B801280D -:10B73000F9B80016F8FA0168F8F401641039C8E3A2 -:10B7400033083009B688B6B93018B6A8F6C5FFFC7C -:10B75000590AC6F0588AE0800082584AE081009772 -:10B760004DCB0A9CF01F00573018AAC8EAC9FFFB4E -:10B770003008B2882FA55904C6B05884E081007EF5 -:10B78000304A4D5B0A9CF01F004F3018AAC8EAC926 -:10B79000FFFB3008B2882FA55812C661304A4CFB17 -:10B7A0000A9CF01F0048EAC8FFFC300AB08AB09A31 -:10B7B000EAC9FFFAEEF8010C5808CA503018B288EE -:10B7C000EAC9FFF9EACCFFF8B28A310AEEFB010CB4 -:10B7D0002FCBF01F003CEAC9FFE8C95B304A4C0B95 -:10B7E000089CF01F0038C68B304A4BDB0A9CF01FC8 -:10B7F0000035C75B304A4B5B089CF01F0032C5CB5D -:10B80000304A4B8B0A9CF01F002FC7BB5812FE9189 -:10B81000FF26304A4B4B0A9CF01F002AC60B5825C6 -:10B82000FE91FF1D304A4B1B089CF01F0026C44BA5 -:10B83000304A4AFB0A9CF01F0023C97B5901FE9144 -:10B84000FF0E304A4ABB0A9CF01F001EC5AB304AAF -:10B850004A7B0A9CF01F001BC99B304A49EB0A9C9B -:10B86000F01F0018C82B5822FE91FEF9304A4A2BCF -:10B870000A9CF01F0014C98B5814FE91FEF0304A48 -:10B8800049EB0A9CF01F000FC81B582AFE91FEE7E7 -:10B89000304A49BB0A9CF01F000BC67BF01F001901 -:10B8A000EF4C0174FE90FEDB0C9B660AF01F000556 -:10B8B00066080A9CEF480178E3CD80FE8003DE989D -:10B8C000800091DC8003DEA08003DE8C8003DE7CC0 -:10B8D0008003DE888003DE808003E1EC8003E1E406 -:10B8E0008003DE9C8003DEA48003DE948003DEB44C -:10B8F0008003DEB08003E1E88003DEA88003DE84FD -:10B9000080009200D401580CC060F8CCFEC8306AA8 -:10B91000F01F0002D8020000800091DCD4011898CA -:10B92000580CC040918AF01F0002D802800091DCC0 -:10B93000EBCD40F8208D189416971493F6C6FFF0BF -:10B94000F8F501685885C2E0E8F801645818C1604C -:10B950006EC8E8F901286E0B1AD81AD66E2849CAA3 -:10B960001AD81AD3720C72666E186E395D162FCD06 -:10B97000580CC1552F8DE3CF80F86EC9E8FA012825 -:10B980006E0B1AD91AD66E291AD91AD3740C74668A -:10B990006E3948FA5D162FCD580CCED42F8DE3CFDB -:10B9A000C0F80C9B310A1A9CF01F000A0A9AEECBD1 -:10B9B000FFD8FACCFFF0F01F00070A9AEECBFFE0A9 -:10B9C000FACCFFE81A96F01F0003CBFB80039C38EB -:10B9D000800091DCD401580CC070F94B0134F8FCA4 -:10B9E0000108F01F0002D80280028F64D401580CB5 -:10B9F000C110F8F8010C5808C08070DAF0CBFFECE9 -:10BA0000998AF01F0005D802320A109B998AF01F0C -:10BA10000003D802800091DC800091D0EBCD408003 -:10BA20001897F01F000AEEF801287029700C5D19B4 -:10BA3000585CEFF80057F9B90001F1D9E008EFF8C8 -:10BA40000A57E3CD8080000080029438EBCD40C0DF -:10BA500018971696580CC190306AF8CCFEB8F01FB3 -:10BA6000000F308A300BEECCFF10F01F000D3008B5 -:10BA700030190C9BEF4800F8EF4900EC306AEECC2F -:10BA8000FEE4F01F0008C030E3CD80C00E9CF01F24 -:10BA90000006E3CD80C00000800091DC800091D0E2 -:10BAA0008000917C80029438EBCD40C016971496AC -:10BAB000F6F8010C1838C0D0768A78D8103AC03021 -:10BAC000E3CD80C0F8CBFFEC0E9CF01F000ECF91B1 -:10BAD0003008EF48010C5806CF41320A0C9B0E9CEF -:10BAE000F01F0009EEF90128301B720C72485D1836 -:10BAF000EEF801280C9A700C70390C9B5D19CE1B66 -:10BB00008000917C800091D0D431189716941493C2 -:10BB1000300B324A069CEE040005F01F0052EEC6C0 -:10BB2000FFFF0C35E0880034E8C800013DD2EE0884 -:10BB30000004C0D8E4091800C2B01499F2C8FFFE8E -:10BB40001007EEC6FFFF0C35E08800220F89E409DC -:10BB50001800C4B10837C1B00D8A580AC180F4C8B2 -:10BB6000FFFEEE0800081035C4733308F009180012 -:10BB7000CE2187270D882FE887380D89F2C8FFFE70 -:10BB80001007EEC6FFFF0C35FE9BFFE2D83A580ABD -:10BB9000CFE03058F00A1800E08B003FEEC8FFFB02 -:10BBA0001035E08B002B14993061E2091800FE98E3 -:10BBB000FFC7EEC0FFFE304A4ABB009CF01F002BBF -:10BBC000C3900D89E2091800FE98FFBA009C304A24 -:10BBD0004A7BF01F0026C071EEC9FFFA87790D88F5 -:10BBE000204887880D89CABB0D8AF4C8FFFEEE087D -:10BBF00000081035CBB2DC3A14993138F00A18003D -:10BC0000FE98FFD4304A49BBEECCFFFEF01F001770 -:10BC1000C1900D89CCAB304A497BEECCFFFEF01FC2 -:10BC20000013C0610FE93018F0091800C1000D8A37 -:10BC3000CB6BEEC9FFFA87590D88204887680D89BC -:10BC4000C7EBEEC8FFFA87480D89C79B0FF8F808C5 -:10BC50001800CEE187070D882FE887180D89C6FBED -:10BC6000800091D08003DE788000917C8003DEAC80 -:10BC70008003DE908003DE98EBCD4080304A189739 -:10BC8000496BF01F0017C031E3CF9080304A495B09 -:10BC90000E9CF01F0013C041302CE3CD8080304A51 -:10BCA000491B0E9CF01F000EC041308CE3CD8080FC -:10BCB000304A48EB0E9CF01F000AC041310CE3CD26 -:10BCC00080800E9C304A48ABF01F0005F9BC000490 -:10BCD000F9BC0100E3CD80808003DEA88000917C68 -:10BCE0008003DE848003DE808003DEB48003DE8890 -:10BCF000EBCD4080304A1897496BF01F0017C031D8 -:10BD0000E3CF9080304A495B0E9CF01F0013C04186 -:10BD1000302CE3CD8080304A491B0E9CF01F000E72 -:10BD2000C041308CE3CD8080304A48EB0E9CF01F40 -:10BD3000000AC041310CE3CD80800E9C304A48ABF4 -:10BD4000F01F0005F9BC0004F9BC0100E3CD8080C0 -:10BD50008003DEA48000917C8003DE948003DE8C6F -:10BD60008003E1E48003DEA0EBCD40FC189416963E -:10BD70001497580BC160198B3308F00B1800C1D011 -:10BD80003008301595789548956895589505308810 -:10BD90009535952895185876E08B009BE3CFC0FC2D -:10BDA000301830898F7B8F4B8F6B8F5B9538950860 -:10BDB00095299519E3CFC0FC300531099545956566 -:10BDC000955595759529951930289508301A8F3A0B -:10BDD0005836FE98FFE51988F6081800CE01199923 -:10BDE000ECC800021039CDB119B919A8F1E91088D1 -:10BDF000F4081900CD4120465836E08A01112FC4BD -:10BE0000089CF01F008A8F2C20465816E08A010BF0 -:10BE10008F15E8CCFFFC19991988F1E91082CBF055 -:10BE2000ECC30002E40815021033CB95F8C4FFFE02 -:10BE300030056E16089CF01F007D0C4C8F1C2FC423 -:10BE400020432FF50A32FE99FFF65813E08A00E5E9 -:10BE5000300A8F3A09990988F1E91082CA00202333 -:10BE6000E40815021033C9B5E8C6FFFE14956E3418 -:10BE7000304A4EFB0C9CF01F006FE08100C430186C -:10BE800008488F382FC620432FF50A32FE99FFF15C -:10BE90005813E08A00940D990D88F1E910888F48B5 -:10BEA000E6CB0002581BE08A008AECCCFFFE199812 -:10BEB0001989F3E810898F59F6C80002A56912386C -:10BEC000C7F5F8C8FFFE300C8F68E3CD80FC1989F8 -:10BED0003DD8F0091800FE91FF631999ECC80002E3 -:10BEE0001039FE91FF5D304A4D3B2FECF01F0051A1 -:10BEF0001893FE91FF5509F909E8F1E91088EA085D -:10BF00001900FE91FF4DECCA0008583AE08A005E25 -:10BF1000E8CCFFF8F01F00498F2CECCA000C0A3A5D -:10BF2000E08A00578F13E8CCFFF419991988F1E9DA -:10BF30001082FE90FF35F4C30002E40815021033AE -:10BF4000FE95FF2EF8C4FFFE30056E16089CF01F0C -:10BF5000003B0C4C8F1C2FC420432FF50A32FE9956 -:10BF6000FFF65813E08A0042300A8F3A099909888F -:10BF7000F1E91082FE90FF142023E408150210332B -:10BF8000FE95FF0EE8C6FFFE14956E340C9C304AF9 -:10BF90004ABBF01F0028C211301808488F382FC63E -:10BFA00020432FF50A32FE99FFF25813E08A00145D -:10BFB0000D880D99F1E910888F48E3CF80FC300897 -:10BFC0008F58109CE3CD80FC580AFE99FEE9581A60 -:10BFD000FE90FEE6E3CF80FC304A49AB0C9CF01F9C -:10BFE0000015C0613028CDAB5813CF51CD8A0C9CC1 -:10BFF000304A495BF01F000FF9B80010F9B8010092 -:10C00000CCDB0C9C304A491BF01F000AF9B8000237 -:10C01000F9B80100C36B5813CD11CC1A5806FE991C -:10C02000FEBF5816CCB1CBBA8002BC788003E1ECDD -:10C030008000917C8003DE988002BCF08003DE9C4F -:10C040008003DE7C8003DEB08003E1E8D401580C7D -:10C05000C021DC0AF8F801745808CFC0169AF8FB22 -:10C060000178109CF01F0004F9BC01FEF9BC00002F -:10C07000D80200008002BD68EBCD40801897580CB4 -:10C08000C1D0F8FC0108F01F000F300A0E9B48ECED -:10C09000F01F000EEEFC0174F01F000DEEFC017CA1 -:10C0A000F01F000BEEFC0180F01F0009EEFC0128E0 -:10C0B000F01F00070E9CF01F0006E3CD80800000FB -:10C0C000800290A88002C0D080027400800091E8B5 -:10C0D000D401F01F0002D8028002963CEBCD40C094 -:10C0E0001896E06C018CF01F00131897C19030185F -:10C0F000E069A8C0F94800ECF9490150346833C937 -:10C10000F9480154F9460128F9490158189A189B31 -:10C11000489CF01F000AEF4C01081898C0400E9C84 -:10C12000E3CD80C00E9C1097F01F0005CF9B000050 -:10C1300080028F248002BAA880028F8C800091E850 -:10C14000EBCD4060149E1DD81896158CECF5012897 -:10C150001AD81DC91AD91DB81AD81DA91AD91D98DF -:10C1600048CA1AD81ADC1ADB303B6A0CF01F000AE6 -:10C17000ECF90128311B720C72585D18ECF901289A -:10C18000300A720C7238149B5D182F9DE3CD8060CD -:10C190008003DF4880023A1AEBCD40C0205D109743 -:10C1A000581BC130582BC0402FBDE3CD80C0310B90 -:10C1B0001A98F01F00091A961A9B0E9C310AF01F5C -:10C1C00000072FBDE3CD80C0310BF01F00052FBD50 -:10C1D000E3CD80C08002B230800091DC80028EF816 -:10C1E000D431201DFACEFFD81894500B149012961B -:10C1F00010917C237C077C12306A49AB129CF01FA3 -:10C20000001AC1D05803C0800698009B400C0499C6 -:10C210000E9AF01F00160C9BE8F501280498F5D142 -:10C22000C0100E996A0C6AA65D16E8FC0104F01FA6 -:10C2300000100E9CF01F000F2FFDD832E8C5FEB88D -:10C24000306A488B0A9CF01F0008CDD1E8F801281D -:10C250000A9B700C70995D19EA061740CD4B0000DF -:10C260008002B41C8000917C8002C19880025582BB -:10C27000800091E8EBCD40E0189716961495F8F8F9 -:10C2800001685848E0800081E08A00495888C780EA -:10C290005908C4F04C19EEF801645848C480584855 -:10C2A000E089004A5818C6605828C6604BB81AD9A9 -:10C2B0001AD8EEFA01280DD81AD80DC91AD90DB816 -:10C2C0001AD80DA91AD90D981AD80D89302B1AD958 -:10C2D000740C4B3AF01F0033EEF801282F8D700BD1 -:10C2E000707C300AF01F0030EEF90128720C72C821 -:10C2F0005D18EEF90128307B720C72185D18580534 -:10C30000C201EEFC010C580CC07079485808F9B80D -:10C310000100F9F81A14E3CD80E05818C33058280A -:10C32000CBA14A29EEF801645848CBA14A08CC0BAE -:10C330004A09CB2B5888C2205908CB9149D8CB8BBE -:10C34000EEF801280C9B700C71263019303A5D16FE -:10C35000301BEEFC0104F01F0018EEF8016C5828A9 -:10C36000C15030080E99495A109B301CF01F001420 -:10C37000CC9B4948C9DB48D8C9BB4938C99B492926 -:10C38000C8BB4909C89B48A9C87B301BEEFC010407 -:10C39000F01F000ECE7B00008003C6288003DF74F0 -:10C3A00080023A1A800274008003DF088003DF10E5 -:10C3B00080039A74800261D48002C0D080027474B9 -:10C3C0008003C8E480039A6C800261A4D431FACD62 -:10C3D00000DC1897169314951296E0490062E08BE2 -:10C3E000000630060C9C2C9DD832129CF01F034492 -:10C3F0001892E08000D60C9A0A9BF01F034205A910 -:10C4000005B8F1E910880599F5D8B0103038F00971 -:10C410001800C0603006049CF01F033BCE4BECC8F4 -:10C420000004EBDAC01030090A385F3AE045005EDC -:10C430005F88F5E8100CF20C1800CED13FE8E4C19B -:10C44000FFFC038AF00A18005F1B3028F00A18006E -:10C450005F19F7E90004F8041800CDD1EEFC0104DF -:10C46000F01F032A039903A8F1E91088EDD8B01052 -:10C47000FDD6C003506E1C9930182019F009190020 -:10C48000E08800043FF6CC8BEEF8016459085F0A9F -:10C490003028F00E19005F19126AE80A1800C080EF -:10C4A000EEF801685908CEF0EDB60003CEC0EEF804 -:10C4B00000F85808E08100ABE1D6C0100098E218FF -:10C4C0002080CE10009AE21A0800502ACDC12FC554 -:10C4D00000995055E21901005039C641405AE339DC -:10C4E000005DE338005E263AF1E91088F7D8B01015 -:10C4F000E9DBC010083AE0830598EEF9016058299D -:10C50000E0800550EDB00003E0810333E21000301D -:10C51000CBA140395809E08001CAEEF90128305B0F -:10C52000720C72185D18039903A8F1E91088E339B9 -:10C53000005DEBD8B010E33B005EFACAFF50F7E9AC -:10C54000108BE2CCFFA1F01F02F243185808C04044 -:10C55000EDB5000CC231EEC3FEB8EEF60134EEF8D4 -:10C56000017C5808E08004E742C95809E08004C80B -:10C57000EEFB017C580BC79042DAEEF80184103ACA -:10C58000C70042FE42EC1ADE14981ADC069A0E9C92 -:10C59000FEFB0B80F01F02E02FED3016C3DB3FF6F1 -:10C5A000C22BE2C6FFB3FAC4FF84310A0C9B089C7D -:10C5B000F01F02D440685C785048EEF800A8580894 -:10C5C000C301EEF800A45808FE90FF5E310A300B5C -:10C5D0000C9CF01F02D2049A404BEECCFFDC0C986E -:10C5E0004059F01F02CF0C9B089C310AF01F02CD6E -:10C5F000FE91FF4A308AE2CBFFFBEECCFF10F01F2A -:10C6000002C13018EF4800F8C6AB308AEECBFF10FD -:10C61000E2CCFFFBF01F02C3FE99FF503FF6CFCAEA -:10C62000402B310A0C9CF01F02BD049A404B0C9821 -:10C630004059EEC5FF9C0A9CF01F02B9310A0C9BC1 -:10C64000089CF01F02B8CBE13018EF4C00A80A9B01 -:10C65000EF4800A4340AEECCFFDCF01F02AACCBBEA -:10C66000129CF01F02B0C10142EC580CC160EEFBFD -:10C670000180580BC12042FEEEF80188103EC090A8 -:10C6800042C942DAC81B42FE42C942EC42DAC7CB79 -:10C690001C9AF01F02A4CF81EEF801605818E080C8 -:10C6A00000E6320AE2CBFFF3EECCFF34F01F029D2E -:10C6B000FE91FF7503B903C8F1E91088F3D8B010F3 -:10C6C000EEF801645888E08000CC5908E08000CA88 -:10C6D000EEF80128FAC9FF2C1AD970D6700C35F97A -:10C6E000FAC8FF24300A303B5D162FFD1896580C0F -:10C6F000FE90FF55EEF80160E06900FE5828F20850 -:10C700001710435AB48840680A99E2190200F1E907 -:10C7100010094358E8190108F20B1608B09B435A58 -:10C72000B4A9EEF801605828E0810093300843591D -:10C73000B2B8435AB4C8435C308AE2CBFFFB2FBC8B -:10C74000F01F02704358300AF16A005D4359F36AE2 -:10C75000005E4358406A2B381AD84379E068888EC7 -:10C760001AD9EECBFFDC1AD606990E9CF01F026E8A -:10C770003018EF4800EC5C752FDDEDB50006C0F118 -:10C78000FEFA09A8F4E80000FAE9007CEEF801647A -:10C790005888E08003F65908E08003D90A90E21037 -:10C7A0000200C0E0EEFA01283019740C069B7528CF -:10C7B000129A5D18301BEEFC0104F01F025DEEF8CA -:10C7C0000128306B700C70195D1943165806FE90E5 -:10C7D000FEE64328FAC4FF84F0C50002334A300B5A -:10C7E000089CF01F024EE0450020FE9BFED80D88FD -:10C7F000F1D8C00252280D89F3D9C041C050EEF8DB -:10C80000016458185F095209ECCBFFFE0A9AFACC72 -:10C81000FF74F01F023C0A9A52B50898FAC9FF7CCF -:10C820000A9BEEFC0168F01F0243FE91FEB8E2CACB -:10C83000FFC3089B0E9CF01F0240FE91FEB0009AC1 -:10C84000069B0E9C3016F01F023DFE9FFDE6435CEA -:10C85000302AE2CBFFFD2FDCF01F022AC6DB3208B4 -:10C86000F0091900FE91FE9BC34B42EB580BFE9062 -:10C87000FF1A58065F1AEEF9018058095F0814681C -:10C88000FE90FF116D68EDB80001FE91FF0C42F8BB -:10C89000069A1AD80E9C1ADBFEFB08A442F842E95D -:10C8A000F01F021D2FEDFE9FFE7AEEF90128720C9B -:10C8B00072885D18FE90FE73EEF80128305B700CF4 -:10C8C00070195D19403BFAC6FF50324A0C9CF01FAC -:10C8D0000213EEF801605828C0C1E338005DE33B65 -:10C8E000005E0C9AF7E8108BE2CCFFA1F01F020863 -:10C8F00043065806C0E0EEFC010C580CE08003D162 -:10C90000F8CBFFFC310A0C9CF01F0206E08003C04C -:10C910003005EEF8016C5818E08000D45805C0606E -:10C92000EEFB016C581BE080029BEEF800EC58080F -:10C93000E08102B5EEC8FF545008EECAFEB8EEC959 -:10C94000FF9CE2C8FFF3508AEEC6FEC850A950987B -:10C95000306A6E85408B0C9CF01F01F2E08500FB75 -:10C96000306A408BFAC0FFD0009CF01F01E60C9BA0 -:10C97000306AFACCFFCAF01F01E3320A409B400C38 -:10C98000F01F01E8E08500D0320A409BFACCFFC4DA -:10C99000F01F01DC320A400BFACCFFA4F01F01D9D2 -:10C9A000340E1ADE40BE00991ADE34C80A9BFEFA25 -:10C9B00007920E9CF01F01E4EEC5FF6CFAC3FF7CEA -:10C9C0000A9B308A069CF01F01CF0A9CEEC6FF64CA -:10C9D000308A0C9BF01F01CB069B0C9C308AF01F09 -:10C9E00001C93018EF4800A82FEDEEF50178EEF000 -:10C9F00001745800FE90FDD3EEFA0128FAC8FF2812 -:10CA0000E9D5B0101AD8E8C9FFA1740C74D6FAC8D9 -:10CA1000FF285C79300A303B5D162FFD1893580CC7 -:10CA2000FE90FDBDEEF80160E06900FE5828F208B6 -:10CA30001710436AB48843683019B0994066436858 -:10CA40005C760C9AA3BAB0AAEEF901605829C631F7 -:10CA500030084369B2B8436AB4C8436CE2CBFFFB09 -:10CA6000308A2FBCF01F01A74368F3D4C108F169D5 -:10CA7000005D43680A9AF165005E009B436C2A1CC6 -:10CA8000F01F01A0400B436C320A2F3CF01F019DA8 -:10CA9000408940AB43682B381AD8436C0C9A1ADC97 -:10CAA000E068888E1AD30E9CF01F019F40CBEECC1D -:10CAB000FF34320A3016F01F01932FDDFE9FFCADCC -:10CAC000EEFC0104580CFE90FF2B320A0E9BF01F67 -:10CAD000019FC361320A8F8AEEF8013406991AD891 -:10CAE0000E9BEEC8FEC8EEFC0108F01F0199580627 -:10CAF0005F1AEEF9010C2FFD58095F081468FE90CB -:10CB0000FF0F0C9A069BEEFC0108F01F0192FE91AC -:10CB1000FF0EC05B436C302AE2CBFFFD2FDCF01F21 -:10CB20000179C9CB400B320AFACCFFC4F01F017562 -:10CB3000320A409BFACCFFA4F01F0172C32B310ACA -:10CB40000E9BEEFC0104F01F0181E08101B4310A6B -:10CB5000CC3B0C9BFAC0FFD0306A009CF01F0169EF -:10CB6000306A408BFACCFFCAF01F0166C07B009B85 -:10CB7000E21B2000FE91FD13403A580AFE90FD0F83 -:10CB8000334AFAC0FFD0009CF01F0164EEF901287F -:10CB90007228720C5D1850BC039903A8F1E9108843 -:10CBA000E339005DE7D8B010E338005EF1E91088A2 -:10CBB000EEF90160F7D8B0105829E080011303B9ED -:10CBC00003C8F1E910895189EBDBC0100A34E08316 -:10CBD00000CB3028406EF00E1900E08001D80A9694 -:10CBE000129B0098FAC9FFC80C9AEEFC0168F01F6E -:10CBF0000151E08100B9F5D3C010F1DAC082501ABA -:10CC000050F830194068F2081900E08000C7302859 -:10CC1000406EF00E1900E08000A4401AF1DAC0C1A5 -:10CC2000C050EEF8016458185F0850D8EEF801289B -:10CC3000306B700C70195D19009BE2CAFFC30E9C2B -:10CC4000F01F013D1895FE91FCAAEEF80128FAC9E3 -:10CC5000FF2C0A9A1AD9303B700C70D635F9FAC8F5 -:10CC6000FF245D162FFD1894580CFE90FC98EEF8EA -:10CC70000160E06900FE5828F20817104066435A28 -:10CC80005C76B488E21300304358E8130300E7E60B -:10CC9000100CF80B1608B09B4359B2ACEEF80160CB -:10CCA0005828E08102234358B0B54359B2C5435CCC -:10CCB000E2CBFFFB308A2FBCF01F01124358300A31 -:10CCC000F16A005D4359F36A005E43582B381AD865 -:10CCD00043790C9A1AD9EEC6FEB81AD40C99E068BA -:10CCE000888EEECBFFDC0E9CF01F010F2FDD40B9CC -:10CCF0005879E08101F1EEF801685848E08001E6DA -:10CD0000E08901DC5818E080014B5828E08001469A -:10CD1000FEF804441AD8EEFA0128EF38014D1AD86B -:10CD2000EF39014C1AD9EF38014B1AD8EF39014AC3 -:10CD30001AD9EF3801491AD8EF390148302B1AD9DE -:10CD4000740CFEFA0416F01F0106EEF80128307B81 -:10CD5000700C701930165D192F9DFE9FFB5EF1D58A -:10CD6000C003C0A0EEF80128306B700C70193016AB -:10CD70005D19FE9FFB52E0460020FE9BFFF5EC0B89 -:10CD80001603FAC9FFC0E2CAFFA1EECCFFCCF01F28 -:10CD900000F5FE90FF44CE7B310AE2CBFFD3FAC40C -:10CDA000FF84089CF01F00D7310AEECBFFCCFACCF1 -:10CDB000FF74F01F00D4E0450020FE9BFFD5FAC6AB -:10CDC000FFC00A9AE2CBFFA10C9CF01F00CE0A988C -:10CDD0000C99089CE06A0100320BF01F00E3C1EBE4 -:10CDE0005C7BFACAFF50E2CCFFA1F01F00C94318D8 -:10CDF0005808CB90F3D3C0105019EDB9000CCB31CB -:10CE000043282028FAC9FFC8109A5188149B00981B -:10CE1000EEFC0168F01F00C7CA61431B1788F1D8F8 -:10CE2000C00250F81789F3D9C041C050EEF8016430 -:10CE300058185F0950D94328F0CA0002E04A002080 -:10CE4000FE9BFF922FEBFACCFFC0F01F00AEEEF975 -:10CE50000128306B720C72185D18CEFAEEF80128BA -:10CE600030091AD9129A700C70D6FAC8FF285D16CC -:10CE70002FFD1893580CFE90FB92EEF5012818999F -:10CE8000EECBFEB84358E06A888E6A0C6AA65D163F -:10CE9000069CF01F009DFE9FFB82EECEFF54320BDE -:10CEA000500E1C9CF01F00B1C1F1EF4C00ECFE9F36 -:10CEB000FD46EEF80128FEFA02B6700C303BF01F7A -:10CEC00000A8EEF80128FEFA02AA700C303BF01F11 -:10CED00000A4EEF8010C5808FE90FB613008EF4802 -:10CEE000010CFE9FFD1FEEF80128FEFA028A700C6D -:10CEF000303B3016F01F009AFE9FFA8F42EC580C20 -:10CF0000FE91FBB7EEF8017C5808C061EEF8018095 -:10CF10005808FE90FBC342F830091AD8069A1AD96D -:10CF20000E9C42F8FEFB0254F01F007B2FEDFE9F8B -:10CF3000FB36EEF801805808FE91FB18EEF9012847 -:10CF4000720C72B85D18FE9FFB111099303BEEF821 -:10CF500001605828C180E2CCFFC31AD9EEC8FFBCDB -:10CF6000EEFA012830691AD830181AD930091ADCBB -:10CF7000740C7466069A5D162FCDFE9FFC11302B43 -:10CF80003209CE6BFACCFF84CE9B5875FE98FEEC2E -:10CF9000EAC60008FE9FFE264F98CBDA4F98CBBA20 -:10CFA000EDB0000CFE91FAB0EEF800A45808FE9027 -:10CFB000FA6B3018406EF00E1900C490406AF20A05 -:10CFC0001900FE91FAA1F1D4C003FE91FA5DF6C8F2 -:10CFD00000085C88109550785C750A9CF01F00482A -:10CFE0001896FE90FA51E2C4FFA11899089AEA0B2C -:10CFF0001603EECCFFCCF01F005BC2310A9A0C9BEB -:10D00000089CF01F00400C9CF01F003F4078EA098C -:10D0100016085C58E369005DE368005E5C59F1E95D -:10D020001084FE9FFA711ADA1AD4EEF801284D6ABC -:10D03000700C302B3FF6F01F004A2FEDFE9FF9EDEC -:10D040000C9C3FF6F01F0030FE9FF9E7FAC6FF8404 -:10D05000310AE2CBFFD30C9CF01F002A310AEECB41 -:10D06000FFCCFACCFF74F01F00270898E2C9FFA19B -:10D070000C9CE06A0100320BF01F003BE339005DBD -:10D08000E338005EF1E91084FE9FFA3E0E9CF01F2B -:10D09000003FEEFC0104F01F003EFE9FFC480C9A8E -:10D0A000069BEEFC0108F01F002BEF4C010CFE91DB -:10D0B000FC293015FE9FFC2F5888C0A05908FE910E -:10D0C000FE294B48FE9FFE284B38FE9FFE254B381D -:10D0D000FE9FFE22401A0C9BE21A02000E9C3016A4 -:10D0E000F01F0016FE9FF999435C302AE2CBFFFD4A -:10D0F0002FDCF01F0004FE9FFDDC0000800092008A -:10D10000800091DC800091E88002575C8002BB08BF -:10D110008003E0488002C140800091D08002C19825 -:10D120008000917C8002C1E08003E1DC800261D458 -:10D130008002B4248002B9308002C2748003E0848B -:10D140008003E1788002B354800257CC8002914C76 -:10D1500080028FB08003C6288003E19080023A1AD3 -:10D160008002D8A080029B4080028F488003E0F0BC -:10D170008003E1308003E14C8003E0048003DF089A -:10D180008003C8E48003DFC88002B9EC80025770D6 -:10D1900080039A748003DF1080039A6CD431204D91 -:10D1A0001894F8F80128E8F9016416955909F9B3BB -:10D1B0000002F9B301011492700C1A9070991A9B35 -:10D1C0005D19C635E8F80128FAC9FFF8300A1AD9FE -:10D1D000303B700C70D635F9FAC8FFF05D162FFDA4 -:10D1E0001891580CC520E8F80160E06900FE402A5B -:10D1F0005828F2081710B4880697E8F800A4ABB7CF -:10D200005808C050E0680900E7E810075805E068D2 -:10D210000400EFD8E1375802F9B80108EFD8E13738 -:10D220004028F3D7C108B09940283006B0A740295C -:10D23000B2B64028308AB0C6E8C5FF04402C0A9B2D -:10D240002FBCF01F00130A9C308BF01F00124028E7 -:10D25000F166005D4029F366005E0E99E219010057 -:10D26000FBF81002F9BA014DF1DAE1091AD9404888 -:10D2700000991AD8069A1AD1089CE068888EE8CBE3 -:10D28000FFDCF01F00052FDD2FCDD832800091DCB0 -:10D29000800239EA8002C1E0EBCD40804879720813 -:10D2A000201893081897C031F01F00050E9CF01F3E -:10D2B0000005E3CD8080000000007AB48002D2F83F -:10D2C000800091E8EBCD40C048976E065806C041FB -:10D2D000F01F0008C0916E082FF8304C8F08F01F27 -:10D2E0000006E3CD80C00C9CE3CD80C000007AB482 -:10D2F0008002D30480028F24D401F01F0002D802E0 -:10D300008002D996D401F01F0002D8028002D9947D -:10D31000D4211789179A17B8F1E9118817A9F1EAEA -:10D320001108F1E91088990817CA17D8B168F1EA0D -:10D33000118817EA17F91258F1EA10889918F73A84 -:10D340000008F739000BF7380009B168F1EA1188D5 -:10D35000F73A000A1258F1EA10889928189EF73A0D -:10D36000000CF738000DF739000FF8C5FFE4B1687D -:10D37000F73C000EF1EA11883007125849B4F1EC7D -:10D38000108C49B69D3CC038149C2F05E80707084F -:10D390002F0EFCF9FFF0F3E82189EC0C0F88E2185E -:10D3A000FF001059EC0C0F98E61800FF1059EC0C18 -:10D3B0000FB8F1D8C1081059FCF8FFF4EC0C0FAB12 -:10D3C000A96BE61BFF0016599D091059FCF8FFF8E0 -:10D3D0009D1910599D29FCF8FFFCF3E8200A8B0ADF -:10D3E0002FF758A7CD21D8228003E2F08003E6FC76 -:10D3F000EBCD40FE1892F01F002F0493E4CBFF60AA -:10D40000E4C4FFFCE4C5FF5CE4C6FFF8E4C7FF58D2 -:10D41000E4CEFFF4E4CCFF54E4C1FFB06609760823 -:10D4200087089709680A6A0889088B0A6E086C09D8 -:10D430008D088F097C0A78089D08990A2F03210B13 -:10D440002F0421052F0621072F0E210C023BCE7140 -:10D45000E4C4FFF030134985498608972F046E0A0B -:10D46000EC0A0F98EA080F9EEC0A0F88EA080F9C56 -:10D47000EC0A0FB8EA080F9BEC0A0FA8F809150888 -:10D48000FC0A1510F3EC1389F5EE130A1659EA0895 -:10D490000F9BF6081518F1EB1288105914590EA9B4 -:10D4A0000E34CDE12FF358A3CD91E3CD80FE0000E3 -:10D4B0008002D3108003E2FC8003E6FCD431209D7F -:10D4C000F736000E505A178A780917B8F1EA118812 -:10D4D000179A1258F1EA210817AEF1EE208E506E1D -:10D4E000781817CA17F9105917D8F3EA2189F3E801 -:10D4F000210917EEF3EE208E507E7828F7390008C8 -:10D50000F73A000B105AF7380009F5E9218AF73984 -:10D51000000AF5E8210AF5E920827839F73A000C8B -:10D52000F738000FFEF7034412581894F1EA2188E7 -:10D53000F739000DF8CAFF60F1E92108500AF1E659 -:10D5400020800E91E0081618406AEE080326F3DAF0 -:10D55000C008F1D2C208EE090329EE080328504999 -:10D560005038407AEE0A0F9950296878684B105667 -:10D570004068EE000FACEE080FBA4079165AEE097B -:10D580000F8BF6081508F1EB1388F8091518105AD7 -:10D59000F3EC1289EE020F9C125AF8081510F1EC08 -:10D5A0001308F5E82008685E68654079EE090FBB4E -:10D5B00050884068EE020F8C1C5BEE080FAEF80836 -:10D5C0001508F1EC1388EE000F9A105BFC09151892 -:10D5D000F4081510F3EE1289F1EA1308125B407992 -:10D5E000F7E82003EE000F8BF6081508F1EB13881F -:10D5F000EE020FBCEE090FAE0A5CFC091518105CB8 -:10D60000F3EE12894068125CEE080F9B404A4048D6 -:10D61000F6091510A968F3EB1309F1EA1388F9E983 -:10D620002000105640394038B968F1E912882E04BC -:10D63000105640294028B169400AF3E81309EDE982 -:10D6400020021434C770E4081618408AF3DAC008C0 -:10D65000E208032EE2090326F1D0C208E2030F9983 -:10D66000E20803255019E2020FACE2030F8B6809B0 -:10D67000F6081508F1EB1388E20A0FBA125AF809F6 -:10D680001518105AF3EC1289E2000F9C125AF80890 -:10D690001510F1EC1308F5E82008E2030FBB506801 -:10D6A00040886819E2000F8AE2080FAC125BF408A8 -:10D6B0001508F8091518F1EA1388F3EC1289E2004D -:10D6C0000FBAE2020F9C105BF8081510125BF1EC28 -:10D6D0001308F7E8200850786829E2030FAC125AC3 -:10D6E000F8091518F3EC1289E2020F8BF6081508F9 -:10D6F000F1EB1388105A125A4089E2090F9B6839DE -:10D70000F6081510F1EB1308125EF5E82002EC099B -:10D710001508EA081518F3E61389F1E51288125E78 -:10D720004019105EB1694018F3E81309FDE92000C3 -:10D73000C0AB4089F1D3C1084CDBFDD9C008F60865 -:10D740000706E40A1618EBD0C208F60A0709F60520 -:10D750000708F60E070CF9E9118CF3D3C008F9E8B5 -:10D76000110C4088B988F608070AF6090708F3D2B1 -:10D77000C208F1EA1188F609070AF3D0C108680E59 -:10D78000F1EA1108F609070AF1EA10881C58F009B5 -:10D790001618405AB4B8B4894059F00A1610A9882E -:10D7A000B29AB2A8E6091618F609070AF3D0C0081B -:10D7B000F6090708F1EA1188408AF3DAC208F60987 -:10D7C000070AF3D2C108F1EA1108F609070A40591D -:10D7D000681EF1EA10881C58B2F8F0091618405A71 -:10D7E000B4C94059F00A1610A988B2DAB2E8E009C3 -:10D7F0001618F609070AF3D2C008F6090708F3D38A -:10D80000C208F1EA1188F609070AF1EA1108408A0C -:10D81000F3DAC108F609070A4059682EF1EA1088C0 -:10D820001C58F368000BF0091618405AF5690008F7 -:10D830004059F00A1610A988F36A0009F368000A33 -:10D840006839405AF9E6108C125CF8081618F80985 -:10D850001610F56C000FF568000CA98CF569000D29 -:10D86000F56C000E2F7DD8328003E2FC8003E1F0DE -:10D87000EBCD40C01897590BC030E3CF80C0E06CAF -:10D8800000B0F01F00061896CF900E9BF01F00040A -:10D890000C9CE3CD80C00000800092008002D3F099 -:10D8A000D431209D129714961895500B308A0C9BFA -:10D8B000FAC2FFE4049CF01F0034ECCBFFF8400AEE -:10D8C0000E9CA37AF01F00300A9C310BF01F002F32 -:10D8D0001893C57040082018EE08003840095028F9 -:10D8E0005C39400A5C59F40A00285019E9D8C0088C -:10D8F0003050FAC7FFF4FAC1FFEC40095809E08A3A -:10D90000002940251296308A049B0E9CF01F001EB1 -:10D91000FB390013E806000812580A9BFB68001345 -:10D92000308A029CF01F00180E9A0E9B069CF01F76 -:10D930000018308A0E9B049CF01F001320160A9CCE -:10D94000308A2085029BF01F00105806FE99FFDDEB -:10D95000401A2010E80A0008E9D8C0085BF0CCE1C2 -:10D96000069CF01F000C049C3A691988F208180004 -:10D97000C0812FFCFAC8FFDC103CCF812F7DD83A44 -:10D980002F7DDC3A800091DC8002D8708002D4BC0C -:10D99000800091E85EFD5EFCD4311A97202D109E28 -:10D9A000129514965809C4911638E0880057F0086B -:10D9B0001200C0D0F608094BF0091120FC08094EEE -:10D9C000F4090A49F4080946F3EB100BFC0516109C -:10D9D000F9DEC010F6050D0AEC0816101499F1EBEB -:10D9E0001108B93A103AE088000C20191C08103EC2 -:10D9F000E08B0007103AF7B90B01F1DEEB08F00AF3 -:10DA0000010BEDD6C010F6050D0AEDEB11061498CA -:10DA1000F40C024C0C3CE088000A20181C060C3E5A -:10DA2000E08B00050C3CF7B80B01F1E9110B300C51 -:10DA3000169A189B2FEDD8321639E08B0051F20C54 -:10DA40001200C53114385F8916355F381049F8095E -:10DA50001800C450301BC4585808C0513019F2087F -:10DA60000D08109EFC081200E08100911C1BFC05B3 -:10DA70001610F3DEC010301CF6050D0AEC08161067 -:10DA8000F4090243F1EB1108149B1033E088000CF9 -:10DA9000201B1C08103EE08B00071033F7BB0B0166 -:10DAA000F1DEEB08F0030103EDD6C010E6050D0230 -:10DAB000EDE311060498E40902490C39E088000AF4 -:10DAC00020181C060C3EE08B00050C39F7B80B0142 -:10DAD000F1EB110B169A189B2FEDD832300B169CD8 -:10DAE000169A189B2FEDD832F20C0945F80E11202A -:10DAF000F00C0943F40E0A46F00E0A48F60E0A4EE0 -:10DB00000A48F0011610FC010D04EEE5FFF8F60CD2 -:10DB10000949EBD8C010EDE910090896F20E16106D -:10DB2000EEF4FFF8EC05024BFDE4110E1C3BE0881F -:10DB300000072016100E1C38E088006D161EF3D961 -:10DB4000C010FC010D00F3E11109009BE005024E3D -:10DB5000123EE0880007201B10091238E0880055AB -:10DB6000F7E6110B1C19F60306420639C0935F094C -:10DB7000F40C094C043C5F38F3E80008C020201B7B -:10DB8000300C169A189B2FEDD832F6080949FC087C -:10DB9000094EF0011120FC051610F4010A42F601AD -:10DBA0000A411242E2050D00F3DEC010E406161031 -:10DBB0000093EDE11106E009024C0C3CE0880007FF -:10DBC00020131C060C3EE088002CEC0C0101F7D25F -:10DBD000C010E2050D00F7E1110B009CE0090241C5 -:10DBE0001631E088000C201C1C0B163EE08B000751 -:10DBF0001631F7BC0B01F7DEEB0BF4080946021BEC -:10DC0000F9E3110CC3AB123EF3D8EB09F7BB0B01E0 -:10DC1000CA8B1C3BF7B60B01FDD8EB0EC90B0C3CB5 -:10DC2000F7B30B01EDDEEB06CD1BD703D40130AA11 -:10DC3000300BF01F0002D8028002F0ECD4014848FB -:10DC4000169A189B700CF01F0003D802000005986C -:10DC50008002DC54D421F40B024BF01F00151897FE -:10DC6000C230F8FAFFFCE01AFFFC204AE04A002428 -:10DC7000E08B00181898593AE088000F300910A975 -:10DC800010A959BAE088000910A910A9E04A002497 -:10DC9000C03110A910A9300910A991199109C048E3 -:10DCA000300BF01F00040E9CD82200008002E2BC62 -:10DCB0008002E8BCD421300EF6C80001F60614013B -:10DCC000F808002818991897C07870046E050EA4FB -:10DCD00091052FFE20480C3ECF95F40B000B1897B2 -:10DCE000F6C80001300EF8080028A15BC078700566 -:10DCF0006E060EA591062FFE2048163ECF95F4C85D -:10DD00000001A15AF808002C3008C078780E720B78 -:10DD100012AE990B2FF8204C1438CF95D822D70388 -:10DD2000D431205D502C503816971496580C5F0B48 -:10DD300058075F0C1295F9EB100B40E33008F00B1D -:10DD40001800E081028058095F09580A5F08F3E86B -:10DD50000008F6081800E08102764BE4402B6808C2 -:10DD60001638E0840270EE08032C580CE080026B39 -:10DD70004B9BF01F003AC06168082FF88908E08FBC -:10DD8000026268085808C05130184B598908930836 -:10DD90005806C14032D90D88F20818005F0232B926 -:10DDA000F20818005F08E5E81008C0805802F9B2D0 -:10DDB0000101F9B200022FF6C0884AACF01F002A18 -:10DDC000F9B20102F9B200004A5870085818C61199 -:10DDD0005812C2B049F95822C4A0129872043001F6 -:10DDE00032DB32BA7009F2C0FFFFEE09032C580C87 -:10DDF000E080023B1989F6091800C0805803E080D2 -:10DE00000225F4091800E081022150015014492B29 -:10DE1000F01F0012C411EE04002C029B301A2FF4E4 -:10DE2000F01F0012E08F022148A87009EE090328B4 -:10DE30005808C2F0118A32DBF60A1800C2A0580353 -:10DE4000E080020832BBF60A1800E0810203C21823 -:10DE500000007AB88003EC008002ECC800007ABCB5 -:10DE60008003EC04800326948002DCB47208EE0880 -:10DE700003285808C0E0118832D9F2081800C09071 -:10DE80005803E08001E032B9F2081800E08101DBBC -:10DE90003009500950195805E08000A44BE4680887 -:10DEA000302AEE08032C4BDBF01F003DC0D0580396 -:10DEB000E08000986808EE080328118932B8F0095C -:10DEC0001800E081008F4B7468085818E081008AC0 -:10DED0004B187008302AEE08032C4B0BF01F003053 -:10DEE000F9B80002E9F80A004AB468084AD1EE0815 -:10DEF000032C620833DB100CF01F002B1893C0E1D9 -:10DF00006808EE08032CF01F002968096208EE0972 -:10DF10000323F80801081803C08868086209EE089E -:10DF20000328F8080108121850430A910C933FF493 -:10DF300030001096C4784989720849A9EE08032C6C -:10DF400072080C9A100CF01F0016C3A1620CF01F8F -:10DF500000171836C051069600944043C3C85BF4BE -:10DF6000C2E0493870085808C7C062081AD848A8E3 -:10DF700070096E08EE090329A564EA04030A1ADA97 -:10DF80001AD91AD848B8700848BB702CF01F000B7B -:10DF90002FCDC67800007AB88003EC008002E7102D -:10DFA00000007ABC8002ECAC8002EDD0000004A43A -:10DFB000000005988003EC1480031FE800942FF004 -:10DFC0002F01620B580BCB81069640435BF4C031A6 -:10DFD0000898C0A8E8081504EA0800087018C048A6 -:10DFE0003FF83003109458065F19F3E403F9C03189 -:10DFF0003006C5484BE162084BE3EE08032966088A -:10E000000C9CF208070BF01F003C1896C2D14BB8CD -:10E0100070085808C11062096608EE090329F20861 -:10E0200007081AD86E081AD84B5870084B5B702C2A -:10E03000F01F00352FED4AF8700B2FFB910B4AC9EA -:10E04000720AEE0A032CF80B070C300BF60C1800C2 -:10E05000F7BA00FFF3FA0A00F9B90001F1F90A0072 -:10E0600033F8109CC818199833A9F2081800C0306A -:10E070003008C08819A9F0091800F9B80002F9B8E9 -:10E08000010149CA49A97209EE09032974030D8ADD -:10E090002FF3F203000349D9930A5818C1505828A6 -:10E0A000C0405808C6C0C208078933D8F009180014 -:10E0B000F7B300FF4968078A3009F20A1800C10166 -:10E0C00030069106C718078933D8F0091800F7B34E -:10E0D00000FF30080789F0091800C1B048C8910353 -:10E0E0003019484891093006C5F8000000007AB898 -:10E0F00000007ABC8002ECAC000004A4000005988B -:10E100008003EC5080031FE8000004A000007AC0E8 -:10E110004C08402B70082FF81638C2954BE8700851 -:10E120005808C1C06E084BD71AD86E084BCB702C5C -:10E13000F01F003C2FFD5BF4C0906E08A5644BAB54 -:10E14000EA0403091AD9702CC0686E080D894B7B4C -:10E150001AD9702CF01F00332FFD4AE933A8720A38 -:10E16000109C2FFA930A4B299308C6D84B19EE0836 -:10E17000032A3018930A10964AF9C1584AE95BF409 -:10E18000C0D1720A2FFA930A4A2B760BEE0B032B9F -:10E19000F60A070AF00A1800C03130189308300850 -:10E1A0004A49109693085802C1B140094A285809B3 -:10E1B0005F19700858185F08F3E80008E4081800B1 -:10E1C000C0F04018ECCAFFFFEE08002C400BF01F17 -:10E1D000001B40182FF8F006000648E8C0A8496860 -:10E1E00070085818C07148B870092FF9F206000677 -:10E1F00091065BF4C240403B580BF7F41A00A5644B -:10E2000008056A3C6A285808C1E0910C300CC1B876 -:10E2100000007AB8000004A4000005988003EC70A8 -:10E2200080031FE88003EC948003EC9C000004A0B2 -:10E2300000007AC000007ABC8002DCB448C8700CD0 -:10E24000C0283FFC2FBDD83291002FF1FE9FFDCC9E -:10E25000488B97084888F2CAFFFF3019910A129C30 -:10E2600048389109CF0B48489104CECB000004A058 -:10E2700000007AC000007AB8D40130091AD9129887 -:10E28000F01F00022FFDD8028002DD20D401484893 -:10E29000189B700CF01F0003D802000000000598C6 -:10E2A0008003217CD4014848189B700CF01F0003A8 -:10E2B000D8020000000005988002E2BCD431F6C705 -:10E2C000FFF518955967F9B70810F9B80BF8EFD8AA -:10E2D000EB2716375F38F1E713F8C05030C899388C -:10E2E000E08F01F4F01F0050E04701F7E08B001CC5 -:10E2F000EE0316034CD8F003003870361036C061B8 -:10E30000ECC8FFF870361036C0C06C18E018FFFC7F -:10E310006C3AEC0800090A9C6C289528913AC4785C -:10E320002FE3C4D8EE081609C041EE031603C278E5 -:10E330005848E08B0006EE0316062C83C2085948A5 -:10E34000E08B0005F0C3FFA5C1A8E0480054E08BB6 -:10E350000006EE03160C2923C128E0480154E08B87 -:10E360000006EE03160F2893C0A8EE031612E0482D -:10E370000554E088000437E3C02828434ABAF40370 -:10E38000003A7436C1986C19E019FFFCF207010BD2 -:10E3900058FBE08A00042013C1186C38580BC0B534 -:10E3A0006C2AEC0900090A9C912A95387218A1A8D8 -:10E3B0009318CBD810961436CE712FF349BAF4CCFB -:10E3C000FFF878261836C6F06C19E019FFFCF20742 -:10E3D000010858F8E0890091993C992C5808C055DB -:10E3E000EC0900090A9CCE3BE04901FFE08B0013D9 -:10E3F000A399F4090038702B8D388D2B9736912610 -:10E40000A3497418301BF6090949F1E91009951957 -:10E41000C4A8F20816095848E08B000AF20A16064A -:10E420002C8AC2488002E8CA0000059C5948E08B4B -:10E430000005F0CAFFA5C1A8E0480054E08B000623 -:10E44000F20A160C292AC128E0480154E08B000684 -:10E45000F20A160F289AC0A8F20A1612E0480554CC -:10E46000E088000437EAC028284A4C8BF60A0034BA -:10E4700068280838C0E17619A34A301EFC0A094A08 -:10E48000F3EA100A1099971AC0A870280838C060DB -:10E49000701AE01AFFFC1439CF9370398D398D282A -:10E4A00091369326E6081402301B4B84F608094B7C -:10E4B0006818103BE08B006EF7E80009C0B1E0136C -:10E4C000FFFCA17B2FC3C0382FC3A17BF7E8000955 -:10E4D000CFC0E803003E06921C916236C2E86C1A77 -:10E4E000E01AFFFCF407010858F8E08A00156C3ABE -:10E4F0006C299529933A0E99EC070007A1A9993741 -:10E5000099278D19EE0809088F2C8F3CA1A80A9C29 -:10E510008F18C0D86C395808C0F5EC0A000A741876 -:10E52000A1A80A9C95186C2893289139F01F00180F -:10E53000ECCCFFF8D83212960236CD212FF2F1D270 -:10E54000C002C0302F81CCAB1C98F3D3C002C08175 -:10E550006819F60811FFF3E800088918C078F0C9B7 -:10E560000008201370081238CF10A17B6818103BE8 -:10E57000E08B0010580BC0D00493C0382FC3A17B90 -:10E58000F7E80009CA71CFBB0000059C8002E8CC07 -:10E5900068236612E012FFFC0E325F39E4070108BF -:10E5A00058F85FAAF5E91009E08000A24C887001D4 -:10E5B0004C882F0170080E015BF8C0402811E01153 -:10E5C000FF80029B0A9CF01F004418965BFCC6E08B -:10E5D000E6020008103CC0320833C6814BFA7409C9 -:10E5E000E209000995091036C0A1F5D6C007C0712F -:10E5F000E20200026828A1A29112C4C84B5A740B0F -:10E600005BFBC0319506C068EC0900094B3A101954 -:10E610009509F1D6C003F00911085808F20817103F -:10E62000EDD8E1062808EC0100010A9CE3D1C007FF -:10E63000F0010101029BF01F00284A885BFCEC0CF2 -:10E640001700F9B1000070090C1C8926020C120198 -:10E65000A1AC91018D1C0833C1D058F2E08B0005AC -:10E6600030188D18C238305920C2E012FFF8E60287 -:10E670000008912991196618F1D8C001E5E8100841 -:10E68000871858F2E0880007E6CBFFF80A9CF01FD5 -:10E6900000144949720A491870081438F3F8BA008E -:10E6A0004919720A1438F3F8BA0068287018E0188B -:10E6B000FFFC0E385F390E1858F85FAAF5E910090B -:10E6C000C1600A9CF01F0009D83A000000007ACC13 -:10E6D000000009A88002EBC800007AD08003217CEA -:10E6E00000007AC800007AC48002E8CC6826A1A89D -:10E6F0000E99A1A98D19EC0700070A9C89278F188C -:10E70000F01F0003ECCCFFF8D83200008002E8CC08 -:10E71000D4013008C0D8F808070EF6080709201AF7 -:10E720002FF8F20E1800C040FC09010CD802580A5C -:10E73000CF31149CD802588AC2F5F9EB1009E219BE -:10E740000003E0810097E04A0020C3B4F4081402FB -:10E75000F0091108FE09002F7669996976599959CF -:10E7600076499949763999397629992976199919E5 -:10E7700076099909F608002BF8080028E01A00032A -:10E78000F40A1104FE0A002F17A9B0A91799B0992D -:10E790001789B0895EFCF40A1109FE0A002F17F9E7 -:10E7A000B8F917E9B8E917D9B8D917C9B8C917B965 -:10E7B000B8B917A9B8A91799B8991789B8895EFC8B -:10E7C000EBCD40C01899220AB707B326B707B32686 -:10E7D000B707B326B707B326220ACF742F0AC0653E -:10E7E000B707B326B707B326210A5C3AFE0A003FF3 -:10E7F000D703D703F736000EF366000EF736000D89 -:10E80000F366000DF736000CF366000CF736000BCC -:10E81000F366000BF736000AF366000AF7360009C4 -:10E82000F3660009F7360008F3660008F7360007BC -:10E83000F3660007F7360006F3660006F7360005B4 -:10E84000F3660005F7360004F3660004F7360003AC -:10E85000F3660003F7360002F3660002F7360001A4 -:10E86000F3660001F7360000F3660000E3CD80C0D8 -:10E87000201AF60A0709F80A0B09CFB15EFCD40189 -:10E88000183BC192F60A0009123CC152F80A000B6B -:10E890003008C068F208070E201AF6080B0E201880 -:10E8A000580ACF91D802F6080709201AF8080B0970 -:10E8B0002FF8C0283008580ACF71D8021898C038ED -:10E8C00010CB201A580ACFD15EFC5EFC5EFCD70349 -:10E8D000D4014848169A189B700CF01F0003D80208 -:10E8E000000005988002E8E8D431201D16941892A3 -:10E8F000149B5804C051F01F005B1895C5B9500A0D -:10E90000F01F0059400BE8C10008F6C6FFF5621C75 -:10E910005966F9B60810F9B80BF8EDD8EB2616369B -:10E920005F38F1E613F8C05030C830058538C42987 -:10E930001890E010FFFC0C30E08401124CB8E200AB -:10E94000000970250A39C090721AA1CAF20A000A99 -:10E95000741AEDBA0000C220721AE01AFFFCF4002B -:10E9600000030A39C131ECC7FFF00E33C195E2064E -:10E9700000090C13A1A393139129049C6218089514 -:10E98000F1D8C00110468316C1390C33C0957228E6 -:10E990000297723993289139CE48300A1499EDBC08 -:10E9A0000000E080009D6207E20701076E1CE01C8A -:10E9B000FFFC5809C5E0F80000030A39C4811403BC -:10E9C000ECC9FFF01233C5556E3A6E299529933A7A -:10E9D000EEC5FFF8E0CA0004E04A0024E08B002501 -:10E9E0000A99593AE088001A09098B0909098F39EF -:10E9F000EEC9FFF059BAE0880011090B930B090921 -:10EA00008F59EEC9FFE8E04A0024C071090A930A51 -:10EA1000EEC9FFE0090A8F7A090A12AA680A930A66 -:10EA2000681A931AC0785008089B0A9CF01F0010BF -:10EA30004008EE0600090C13A1A393139129049C2E -:10EA40006E18F1D8C00110468F16CB2814030C3372 -:10EA5000C10572287239932891396E286E39C0F831 -:10EA60008002E2BC8002E8CA0000059C8002E87EC9 -:10EA7000F80000030C33C3356E396E2893289139A2 -:10EA8000E0CA0004EECCFFF8E04A0024E08B00244A -:10EA9000593AE088001A0908990809088F38EECC1D -:10EAA000FFF059BAE08800110908990809088F5841 -:10EAB000EECCFFE8E04A0024C07109089908EECCCA -:10EAC000FFE009088F78090818A8680899086818ED -:10EAD0009918C478089BF01F0039C438049CF01FB3 -:10EAE00000381895C3A06218F8C90008A1C8E20848 -:10EAF00000081039C07172130297E013FFFC000385 -:10EB0000C308E0CA0004E04A0024E08B0020089912 -:10EB10001898593AE0880014130B10AB130B10AB84 -:10EB200059BAE088000D130B10AB130B10ABE04A81 -:10EB30000024C051130A10AA130A10AA130A10AA1B -:10EB4000720A910A72199119C048089BF01F001BA4 -:10EB5000089B049CF01F001B049CC2A80093029712 -:10EB6000E60601096E1858F9E0880016F1D8C001D0 -:10EB7000EDE810088F181298A1A8EE06000BF60910 -:10EB8000000997187218A1A82F8B9318049CF01FE6 -:10EB9000000DC0B8F1D8C001E7E810088F18EE03E7 -:10EBA00000036618A1A88718049CEEC5FFF8F01FA3 -:10EBB00000060A9C2FFDD8328002E87E8002E2BC6B -:10EBC0008003217C8002E8CCD42130081897487655 -:10EBD000169C8D08F01F00065BFCC0516C0858089D -:10EBE000EFF81A03D822000000008CC48002F1E87C -:10EBF0005EFDD703D421217DE06802041697BA6830 -:10EC0000504C500CF01F000B3008512850D848A829 -:10EC100050983FF8BA784898505C501CFAC9FF9059 -:10EC20000E9A700C1A9BF01F00062E9DD822000031 -:10EC30008002EDD08002EBF00000059880030C4CC0 -:10EC4000D421217D4988FAC9FF9016977006580B88 -:10EC5000C064E068008B3FFC8D38C228580BF60872 -:10EC600017005807F9BB01FFEFDBE10850585028A7 -:10EC7000E0680208BA683FF8504C500CBA781A9B0A -:10EC80000C9CF01F000A5BFCC044E068008B8D38D0 -:10EC90005807F9B90100FBF81000F1F91E002E9D8C -:10ECA000D8220000000005988002F5685C5BC0284F -:10ECB0002FFC19885808C050F6081800CFA15EFC38 -:10ECC000580B5E0C5E1DD703F9EB100AE21A000325 -:10ECD000C341780A76095CEAC170123AC151781AC8 -:10ECE00076195CEAC110123AC0F1782A76295CEAFA -:10ECF000C0B0123AC091783A76395CEAC0502F0C15 -:10ED00002F0B123ACE70F9DAC308F7D9C3085E0C9C -:10ED1000161C5E1CF9DAC208F7D9C2085E0C161C74 -:10ED20005E1CF9DAC108F7D9C1085E0C161C5E1C1E -:10ED30005C5A5C59121A5EFA178A1989580A5E09D8 -:10ED400014195E19179A1999580A5E0914195E194F -:10ED500017AA19A9580A5E0914195E1917BA19B920 -:10ED6000580A5E0914195E192FCB2FCCCE6B000008 -:10ED70003008F6080709F8080B092FF85809CFA141 -:10ED80005EFCD703D4014848189B700CF01F0003A9 -:10ED9000D8020000000005988002ED9CD42118974D -:10EDA0001696169CF01F0008F8C5FFFF0E9C0A9BE4 -:10EDB000F01F00061897C0500A9A0C9BF01F000421 -:10EDC0000E9CD8228002EDD08002E2BC8002E736A1 -:10EDD00030091898C0282FF8118AF20A1800CFC1FC -:10EDE000F00C010C5EFC580AC0815EFA580AC0B0F3 -:10EDF0005808C0902FFC2FFB201A19881789F0099A -:10EE00001800CF50198C1788101C5EFC3008103A7F -:10EE10005E0CF6080709F8080B092FF85809CF818E -:10EE2000103A5E0CF8080B092FF8CFBBD401484804 -:10EE3000169A189B700CF01F0003D802000005986A -:10EE40008002EE44D421300816951696C0282FF67D -:10EE5000580AC060201A0D89F0091800CF910A16CF -:10EE6000ECCBFFFFF01F00071897C0800A9B0C9A9D -:10EE7000F01F00053008EE060B080E9CD82200009B -:10EE80008002E2BC8002E736D42118981696580B0F -:10EE9000C0C03007C0481897F8C8FFFF109C0C9BF3 -:10EEA000F01F0005CF91C048F01F000318970E9C7B -:10EEB000D82200008002ECACD421201D4A351897DE -:10EEC0006A04E8F600E85806C351500B350CF01FF1 -:10EED00000206A08E94C00E8F0F900E89326930660 -:10EEE0009316F0F900E893469336F0F900E893663C -:10EEF0009356F0F900E893B693A6F0F900E893D69C -:10EF000093C6F0F900E893F693E6F0F900E8F346CB -:10EF10000044F3460040F0F900E8F346004CF346A5 -:10EF20000048F0F900E8F366001CF0F800E8400B38 -:10EF30009196486870080E9CF0FA00E83019F01FAE -:10EF400000052FFDD8220000000005988002E2A4F1 -:10EF50008002EF54D421580CC041740C580CC2905C -:10EF600018981697113EC0A80C3EC0815809C030B1 -:10EF7000109CCF7B9508B889D8220F365806CF5100 -:10EF8000580EC051950E1C9CD822129810991697B5 -:10EF9000133E0F361C36C0A1580EFC091700F9BBF2 -:10EFA0000100F1FB1E009509D8225806CF31CEEBA7 -:10EFB000D822D703D431203D4CC8502C700116986C -:10EFC000113EE20E0706E2160008CFB1E04E002D1A -:10EFD000C041113E3016C058E04E002BC021113EFA -:10EFE00058095F0C59095F053007F9E51005EE0572 -:10EFF0001800C1E0E04E0030C131118535843783FF -:10F00000E80518005F04E60518005F05E9E510054E -:10F01000EE051800C050119E31092FE8C098580C19 -:10F02000C070E04E0030F9B90008F9B9010AE06C8F -:10F03000FFFFEA1C7FFF3007FC1580000E930E36A1 -:10F04000F80517000E9CEA090D0408925005E20E1F -:10F050000704E1D4C001F9B00137F9B000575010EE -:10F06000FCC500300890E2100004C0814010E9D4D3 -:10F07000C002FC0001055804C1C01235C1A4043C03 -:10F080005FBEFDE713FEE60E1800C101043C5F0EF3 -:10F0900040070E355F97EFEE000EE60E1800C061D8 -:10F0A000B33C3017EA0C000CC0283FF7113ECD0BE3 -:10F0B0005BF7C0E1E069FFFFEA197FFFFC1C8000FD -:10F0C00040205806F20C170032298139C0485806F2 -:10F0D000FBBC0100580AC0705807F9B901FFF1D90B -:10F0E000E10B950B2FDDD8320000049CD401485869 -:10F0F0001499169A189B700CF01F0003D802000098 -:10F10000000005988002EFB43028D6733FFC358BA1 -:10F11000580C5E4C482A950B5EFC000000008CC425 -:10F120003058D6733FFC358B580C5E4C482A950BF3 -:10F130005EFC000000008CC43038D6733FFC358B79 -:10F14000580C5E4C482A950B5EFC000000008CC4F5 -:10F150003048D6733FFC358B580C5E4C482A950BD3 -:10F160005EFC000000008CC430B8D6733FFC358BC9 -:10F17000580C5E4C482A950B5EFC000000008CC4C5 -:10F180003098D6733FFC358B580C5E4C482A950B53 -:10F190005EFC000000008CC4D421210D16971A9B40 -:10F1A000F01F0011C0343FFCC1C84008AE08401831 -:10F1B000AE1840288F184038AE484048AE584058E6 -:10F1C000AE684068AE7840888F4840A88FB840C885 -:10F1D0008FC840D88F5840E8300C8F7840F88F980F -:10F1E0002F0DD8228002F180D40148C87009580937 -:10F1F000C03148B99109489948AA7208F00C000C2E -:10F20000143CE08B0004930CC068F01F000730C86A -:10F2100099083FF8109CD80200007AF800008CC8CA -:10F220000000F00080031D20D431208DFAC4FFBC03 -:10F23000504B682E505812967C0B7005506E580B30 -:10F24000F40B17006803681140493008C2C92FFB4E -:10F25000325C178AF80A18005F1EF00A18005F1C5B -:10F26000FDEC000CF00C1800CF31580AE0800129A9 -:10F27000300C3FFA1890503A18941892F80C003C51 -:10F280001697507C4CDC0F3AF80A070E407C1C0C99 -:10F290004CBEFC0C070E201E500E4CAEFC0C070C96 -:10F2A000507C400C587CE08B00F84C7EFC0C032F0B -:10F2B000368BF60A1800E08000F0371BF60A1800BB -:10F2C000C07034CBF60A1800C051A3B4CE58A5B410 -:10F2D000CE380F8B36CAF40B1800C051A5B4EECB54 -:10F2E000FFFFCDB8A5A4CD88EBD5C005367CF80AC4 -:10F2F0001800E08B0027365BF60A1800C48234FB46 -:10F30000F60A1800C480E08B000C345BF60A180083 -:10F31000C3E0347BF60A1800C3A0344BC088358B99 -:10F32000F60A1800C2C0E08B0007355BF60A180029 -:10F33000C351C318363BF60A1800C2F0364BC0E87A -:10F34000370BF60A1800C250E08B000D36EBF60AB8 -:10F350001800C1F0E08B0014369BF60A1800C1E1DA -:10F36000C0E8375BF60A1800C0A0378BF60A180011 -:10F37000C060373BF60A1800C111C0B8EDB40004F4 -:10F38000C0A0EDB40005C0913020C0883040C068F6 -:10F390003030C0483010C0283000403B5BFBC040DC -:10F3A000E20B0920C7985860E08B00776C0AEACC22 -:10F3B000FFFF486EFC00032F8003EE088003ED641E -:10F3C0008003ECF88003ECAC8003ECCCF4CBFFF8CA -:10F3D0008D0BF4EA0000E605083AC0F8F4CBFFFC18 -:10F3E0008D0B740AE605093AC088F4CBFFF88D0B43 -:10F3F000F4EA0000E605083A0E9B1895C4E8620A94 -:10F400005BFAC0B150195028E06A0080300B029CB2 -:10F41000F01F004D40284019E4CC00010E9B503CE9 -:10F42000F20C0C49C3A8620A5BFAC0B1501950280B -:10F43000E06A0080300B029CF01F00434028401916 -:10F440002012300A0E9BE202092AF2020C49C2582D -:10F4500016976C0AF4CBFFFC8D0B740A0E9BE60525 -:10F46000093A2FF5C1A8F4C20030C068E4020022B6 -:10F470002FF7F40200120F8A580AC0E0230A589AA4 -:10F48000FE98FFF6C0982FF70F8A580AC050230A3B -:10F49000589AFE98FFFA0E9B407C30BAF40C180084 -:10F4A000FE91FEEE4042178C0A325F4AF00C1800C3 -:10F4B0005F1CF9EA000AF00A1800FE91FECB300842 -:10F4C000404E178AE2050021F00A1800FC091710C7 -:10F4D000E6050038069EC2A8620A583AC1E0E089F3 -:10F4E0000007581AC1A0582AC181C058585AC0C034 -:10F4F000C0B5C1386C0AF4CCFFF88D0CF4E2000002 -:10F50000F0E30000C1086C0AF4CCFFF88D0CF4E2C3 -:10F510000000F0E30000C0786C0AF4CCFFFC8D0C16 -:10F52000740A910A2FF52F882FC11235FE9AFFD643 -:10F530001C934052406E85059D0B404BE60B003CF2 -:10F540002F8DD8328002E8BCD42114977428580833 -:10F55000C0419518109CD822F01F000330088F1866 -:10F560008F28D82280032320D431FACD068850A9D1 -:10F57000169014971893580CC06078685808C031DA -:10F58000F01F004E4CE81030C0316600C0A84CD8C7 -:10F590001030C0316610C0584CB81030E7F000028F -:10F5A0008068EDB80003C04160485808C071009BF6 -:10F5B000069CF01F0046E0810B4080681099E2191C -:10F5C000001A58A9C3D18079300AF4091900C385FB -:10F5D000A1D8FB5805B86088FB4805CC60A8FB485B -:10F5E00005D4FAC8FFD4FB4805BCFB4805ACE0686D -:10F5F0000400FB4805C0FB4805B43008FB5905BAB8 -:10F600000E9A40A9FAC7FA54FB4805C4069C0E9B03 -:10F61000F01F002F506CC0950E9B069CF01F002D14 -:10F62000406EF9BE01FF506EFB0805B8EDB800064C -:10F63000E0810B058068A7A8A068E08F0B00300868 -:10F64000FAC4F9F85098FB480678409CFB480674C9 -:10F65000FB48067CFB48068050573FF8FB44067089 -:10F66000FB48052C506C1896069150204055C02838 -:10F670002FF50B88300B325AF60818005F19F40882 -:10F6800018005F181268F6081800CF314059EA09CF -:10F690000107C2E0FAF806780E088909FB480678E7 -:10F6A0008917FAF806742FF8FB4806745878E08931 -:10F6B00000132F84C1A8000080031F388003EF2CA3 -:10F6C0008003EF4C8003EF6C80031C388002F568E8 -:10F6D00080031D2CFACAF990402B029CF01F00A158 -:10F6E000E0810AA6FAC4F9F840680E0850680B8851 -:10F6F0003007EE081800E0800A8AEAC2FFFF3003F4 -:10F700005052FB6706873FFE50745043503E0690B0 -:10F71000508506920C944057C0683FFC0A97503CB5 -:10F72000C02830000F38C0281292E0480063E08003 -:10F7300001CCE0890045E0480039E0890026E04836 -:10F740000031E0840198E048002BE0800101E0896D -:10F75000000FE0480023E080008EE048002AE080AF -:10F76000008CE0480020E0810897C7B8E048002EF0 -:10F77000E08000F1E0480030E080017BE048002DAF -:10F78000E081088ACE28505750420897408540743F -:10F790001092E048004FE0800439E0890008E0481A -:10F7A0000044E081087DE08F01DEE0480055E08004 -:10F7B00005DFE0480058E0810873C428E048006F86 -:10F7C000C430E089001FE0480069C450E089000AA5 -:10F7D000E0480064C400E0480068E081085DC63984 -:10F7E000E048006CE0800163505750420897408524 -:10F7F00040741092E048006EE0810852E08F02ED04 -:10F80000E0480073E0800553E089000BE048007099 -:10F81000E08004F9E0480071E081083EC5295057B6 -:10F8200050420897408540741092E0480075E0808F -:10F8300005A0E0480078E0810833E08F06964CABE5 -:10F84000509BE08F06945057408508975042407473 -:10F85000E08F03DD50574085089750424074C83907 -:10F86000FB380687300AF4081800FE91FF5D320865 -:10F87000C6E8A1A3C58B0F89F2C800305898E08B69 -:10F88000001EEEC8FFFF300B2309F60B002BF20B16 -:10F89000001B1139F2CA0030589AFE98FFF7E04970 -:10F8A0000024FE91FF40E04B0020E08909C1201BAD -:10F8B000FAF90680123BC095C108FAF90680ECCA35 -:10F8C000FFFF1236C1F5C268FAC9F9781097F20B3A -:10F8D000003BF6F2FDA4C358FAC7F9841AD7109773 -:10F8E000FAC2FAD01AD2FAC8FBCC029C1AD8FAC8CB -:10F8F000F974FAC9FFCC40BAF01F001C2FDD780262 -:10F90000C208FACEF9781496FC040038F0F2FDA48F -:10F91000C18840A859F9E0890011F0CBFFFC50AB39 -:10F920007002FACCF978F8090038F142FDA42FF9F9 -:10F930001496FB490680C058700214962FC850A830 -:10F940005802FE94FEF15C32A3A3CEDAFB68068770 -:10F95000CEAA0F38E048002AC0A03009C7D800005E -:10F960008002F5488003EDD08002F2280F88F0C9AC -:10F9700000305899E08B001EEEC5FFFF300B2308C6 -:10F98000F60B002BF00B001B0B38F0C90030589918 -:10F99000FE98FFF7E0480024FE91FEC5E04B0020F2 -:10F9A000E0890946201BFAF80680103BC095C10883 -:10F9B000FAF90680ECCAFFFF1236C1F5C288FACA0E -:10F9C000F978F40B003BF6FBFDA4503BC3C8FAC921 -:10F9D000F9841AD9FAC8FAD01AD8FAC8FBCC029C12 -:10F9E0001AD8FAC8F974FAC9FFCC40BAF01F027AE3 -:10F9F0002FDD780C503CC278FACEF9780E95FC04D5 -:10FA000000381496F0F8FDA45038C1D840A859F930 -:10FA1000E0890014F0CBFFFC700850AB5038FACCF2 -:10FA2000F978403BF8090038F14BFDA42FF90E9509 -:10FA3000FB4906801496C07870090E952FC850397E -:10FA4000149650A840385808FE95FE690A97C6BA21 -:10FA5000F40B00190F38F209002BF0CA0030589A45 -:10FA6000FE98FFF83FFEF20E0C495039C5FAA7B3D5 -:10FA7000C5AA30092308F2090029F00900190F3836 -:10FA8000F0CA0030589AFE98FFF7E0480024FE9133 -:10FA9000FE4DE0490020E08908CBF2C4000130109F -:10FAA000FE9FFE42A7A3FE9FFE3F0F89F0091800AC -:10FAB000C0512FF7A5B3FE9FFE37A5A3FE9FFE34CE -:10FAC000A5B3FE9FFE3150575042089740854074C1 -:10FAD0000C99FAF806805800C1D01037C064FACCEF -:10FAE000F978F8070037C1D8FAC8F9841AD8FAC8E3 -:10FAF000FAD01AD8FAC8FBCC1AD8FAC8F974FAC9DD -:10FB0000FFCC0A9A0E9B029CF01F02332FDD19B81E -:10FB1000C2282FF61039C084FACBF978F6070037DF -:10FB2000EF38FDA7C18840A959F8E0890012F2CA50 -:10FB3000FFFC50AA7209FAC2F978E408003A2FF8DB -:10FB4000F549FDA4FB480680F1D9C008C04813B8A8 -:10FB50002FC950A9300EFB680648FB6E0687E08F60 -:10FB600006A7A5A30C92EDB30005C4D1FAF8068050 -:10FB70005800C1E01037C064FACCF978F8070037B4 -:10FB8000C1F8FAC8F9841AD8FAC8FAD00A9A1AD869 -:10FB9000FAC8FBCC1AD8FAC9FFCCFAC8F9740E9B84 -:10FBA000029CF01F020D2FDD781A7809C288ECC282 -:10FBB000FFFF1036C0A4FACBF978F6070037EEFA4B -:10FBC000FDA8EEF9FDA4C1B840A959F8E0890013D9 -:10FBD000F2CAFFF850AAFAC6F978721AEC08003B8C -:10FBE0007209F74AFDA8F749FDA42FF8FB480680E3 -:10FBF000C068F2C8FFF8721A50A87209049650093A -:10FC0000501ACD58EDB30004C441FAF806805800EC -:10FC1000C1D01037C064FACEF978FC070037C1E8CC -:10FC2000FAC8F9841AD8FAC8FAD00A9A1AD8FAC8BF -:10FC3000FBCC0E9B1AD8029CFAC8F974FAC9FFCC07 -:10FC4000F01F01E52FDD780AC218ECC2FFFF103665 -:10FC5000C084FACCF978F8070037EEFAFDA4C16841 -:10FC600040A959F8E0890010F2CAFFFC50AAFACB6B -:10FC7000F978720AF6080039F34AFDA42FF8FB4818 -:10FC80000680C048720A2FC950A90496501AC8D8D5 -:10FC9000EDB30006C481FAF806805800C1D01037D1 -:10FCA000C064FAC8F978F0070037C1E8FAC8F984E7 -:10FCB0001AD8FAC8FAD01AD8FAC8FBCC1AD8FAC897 -:10FCC000F974FAC9FFCC0A9A0E9B029CF01F01C27C -:10FCD0002FDD9818C238ECC2FFFF1036C084FAC678 -:10FCE000F978EC070037EF08FDA6C18840A959F85C -:10FCF000E0890012F2CAFFFC50AA7209FACEF97824 -:10FD0000FC08003A2FF8F549FDA4FB480680F1D91C -:10FD1000B010C04892182FC950A950180496BF5867 -:10FD20005008C458FAF806805800C1D01037C06493 -:10FD3000FACBF978F6070037C1E8FAC8F9841AD87F -:10FD4000FAC8FAD00A9A1AD8FAC8FBCC0E9B1AD86D -:10FD5000029CFAC8F974FAC9FFCCF01F019F2FDD8D -:10FD6000780AC218ECC2FFFF1036C084FACAF978CC -:10FD7000F4070037EEFAFDA4C16840A959F8E089FC -:10FD80000010F2CAFFFC50AAFAC6F978720AEC0811 -:10FD90000039F34AFDA42FF8FB480680C048720AD8 -:10FDA0002FC950A90496501ABF5A500AFAEA000007 -:10FDB000580A5C2BC0E43008FAEA00003009F00A67 -:10FDC000010AF20B014B32D8FAEB0000FB68068700 -:10FDD0003010E08F04E30C99EDB30005C471FAF81C -:10FDE00006805800C1D01037C064FACAF978F40709 -:10FDF0000037C1D8FAC8F9841AD8FAC8FAD00A9AD2 -:10FE00001AD8FAC8FBCC0E9B1AD8029CFAC8F9740F -:10FE1000FAC9FFCCF01F01702FDD780AC2082FF657 -:10FE20001039C084FAC9F978F2070037EEFAFDA458 -:10FE3000C16840A959F8E0890010F2CAFFFC50AA35 -:10FE4000FAC3F978720AE6080039F34AFDA42FF8DC -:10FE5000FB480680C048720A2FC950A94062049826 -:10FE60009512BF589508FE9FFC03EDB30004C441F2 -:10FE7000FAF806805800C1D01037C064FACEF9787D -:10FE8000FC070037C1D8FAC8F9841AD8FAC8FAD0E2 -:10FE90000A9A1AD8FAC8FBCC0E9B1AD8029CFAC848 -:10FEA000F974FAC9FFCCF01F014C2FDD780AC208A3 -:10FEB0002FF61039C084FACCF978F8070037EEFA3B -:10FEC000FDA4C16840A959F8E0890010F2CAFFFCFE -:10FED00050AAFACBF978720AF6080039F34AFDA461 -:10FEE0002FF8FB480680C048720A2FC950A9406904 -:10FEF0009509FE9FFBBDE2130040C440FAF806805E -:10FF00005800C1D01037C064FAC8F978F00700373C -:10FF1000C1D8FAC8F9841AD8FAC8FAD00A9A1AD8F5 -:10FF2000FAC8FBCC0E9B1AD8029CFAC8F974FAC91D -:10FF3000FFCCF01F01292FDD780AC2082FF61039F7 -:10FF4000C084FAC3F978E6070037EEFAFDA4C16869 -:10FF500040A959F8E0890010F2CAFFFC50AAFAC281 -:10FF6000F978720AE4080039F34AFDA42FF8FB4837 -:10FF70000680C048720A2FC950A9406EB40EFE9F79 -:10FF8000FB77FAF806805800C1D01037C064FACC6D -:10FF9000F978F8070037C1D8FAC8F9841AD8FAC82E -:10FFA000FAD00A9A1AD8FAC8FBCC0E9B1AD8029C2F -:10FFB000FAC8F974FAC9FFCCF01F01072FDD780ADF -:10FFC000C2082FF61039C084FACBF978F60700374B -:10FFD000EEFAFDA4C16840A959F8E0890010F2CA00 -:10FFE000FFFC50AAFAC3F978720AE6080039F34A0E -:10FFF000FDA42FF8FB480680C048720A2FC950A9FB -:02000004800377 -:1000000040629502FE9FFB34A5A30C99EDB3000559 -:10001000C571FAF806805800C2601037C0A4FACE45 -:10002000F978FC070037EEEAFDA4FAEB0000C1887E -:10003000FAC8F9841AD8FAC8FAD01AD8FAC8FBCC88 -:100040001AD8FAC8F974FAC9FFCC0A9A0E9B029C16 -:10005000F01F00E12FDDF8E80000FAE900003000B1 -:10006000E08F03992FF61039C0B4FAC8F978F00779 -:100070000037EEEAFDA4FAEB0000E08F038C40A904 -:1000800059F8E0890016F2CAFFF850AAF2EA000017 -:10009000FAEB0000FACAF978F4080039FAEA00002D -:1000A000F2EBFDA42FF8FB480680E08F0374F2EA20 -:1000B00000002F89FAEB000050A9E08F036CEDB32C -:1000C0000004C141FAF806805800C0801037C60409 -:1000D000FACAF978F4070037C7782FF61039C774D1 -:1000E000FAC9F978F2070037C6F8EDB30006C45133 -:1000F000FAF806805800C1D01037C064FACCF978FD -:10010000F8070037C1D8FAC8F9841AD8FAC8FAD063 -:100110001AD8FAC8FBCC1AD8FAC8F974FAC9FFCCB5 -:100120000A9A0E9B029CF01F00AC2FDD9818C22883 -:100130002FF61039C084FACBF978F6070037EF08AC -:10014000FDA6C18840A959F8E0890012F2CAFFFC57 -:1001500050AA7209FAC2F978E408003A2FF8F54972 -:10016000FDA4FB480680F1D9B010C04892182FC9F1 -:1001700050A95C785018C418FAF806805800C1D00D -:100180001037C064FACCF978F8070037C1D8FAC83C -:10019000F9841AD8FAC8FAD00A9A1AD8FAC8FBCC45 -:1001A0000E9B1AD8029CFAC8F974FAC9FFCCF01F4A -:1001B000008A2FDD780AC2082FF61039C084FACBE6 -:1001C000F978F6070037EEFAFDA4C16840A959F89E -:1001D000E0890010F2CAFFFC50AAFAC2F978720A4C -:1001E000E4080039F34AFDA42FF8FB480680C04814 -:1001F000720A2FC950A9501A300E500E1C90E08F71 -:1002000002CA505750420897408540740C99FAF83A -:1002100006805800C1D01037C064FACCF978F807CE -:100220000037C1D8FAC8F9841AD8FAC8FAD01AD84F -:10023000FAC8FBCC1AD8FAC9FFCCFAC8F9740A9AE2 -:100240000E9B029CF01F00642FDD7809C2182FF668 -:100250001039C084FACBF978F6070037EEF9FDA41F -:10026000C17840A959F8E0890010F2CAFFFC50AAF1 -:10027000FAC2F9787209E408003AF549FDA42FF8AA -:10028000FB480680C058F2C8FFFC50A8720933082A -:10029000300EFB6806844D1C37885019A1B3FB68EB -:1002A0000685500E509CE08F02755057300B50421F -:1002B000FB6B06870897408540740C99FAF8068016 -:1002C0005800C1D01037C064FACAF978F407003773 -:1002D000C1D8FAC8F9841AD8FAC8FAD01AD8FAC814 -:1002E000FBCC0E9B1AD80A9AFAC8F974FAC9FFCC4B -:1002F000029CF01F00392FDD7807C2082FF6103955 -:10030000C084FAC9F978F2070037EEF7FDA4C16896 -:1003100040A959F8E0890010F2CAFFFC50AA720700 -:10032000FAC2F978E4080039F347FDA42FF8FB4836 -:100330000680C04872072FC950A9403E580EC1051B -:100340001C9A300B0E9CF01F0026E08002B6F807C6 -:100350000105403C1835E08902B0E08F02AF0E9CE9 -:100360003000F01F00201895E08F02A9A5A30C997A -:10037000EDB30005C581FAF806805800C2001037B9 -:10038000C064FACBF978F6070037C208FAC8F984D6 -:100390001AD8FAC8FAD00A9A1AD80E9BFAC8FBCC17 -:1003A000029C1AD8FAC8F974FAC9FFCCF01F000AE7 -:1003B0002FDDF8EA0000FAEB0000C3282FF6103911 -:1003C000C124FACAF978F4070037EEE8FDA4FAE987 -:1003D0000000C2688002F2288003EDE4800328A4B4 -:1003E0008002EDD040A959F8E0890015F2CAFFF863 -:1003F00050AAF2EA0000FAEB0000FACAF978F40811 -:100400000039FAEA0000F2EBFDA42FF8FB48068061 -:10041000C078F2EA00002F89FAEB000050A93010F2 -:10042000E08F01B9EDB30004C141FAF8068058002D -:10043000C0801037C604FACAF978F4070037C778C5 -:100440002FF61039C774FAC9F978F2070037C6F8E1 -:10045000EDB30006C451FAF806805800C1D0103739 -:10046000C064FACCF978F8070037C1D8FAC8F98423 -:100470001AD8FAC8FAD01AD8FAC8FBCC1AD8FAC8CF -:10048000F974FAC9FFCC0A9A0E9B029CF01F0086F1 -:100490002FDD9818C2282FF61039C084FACBF978CE -:1004A000F6070037EF08FDA6C18840A959F8E08992 -:1004B0000012F2CAFFFC50AA7209FAC2F978E408E5 -:1004C000003A2FF8F549FDA4FB480680F1D9B01099 -:1004D000C04892182FC950A95C785018C418FAF86F -:1004E00006805800C1D01037C064FACCF978F807FC -:1004F0000037C1D8FAC8F9841AD8FAC8FAD00A9ACB -:100500001AD8FAC8FBCC0E9B1AD8029CFAC8F97408 -:10051000FAC9FFCCF01F00642FDD780AC2082FF65D -:100520001039C084FACBF978F6070037EEFAFDA44B -:10053000C16840A959F8E0890010F2CAFFFC50AA2E -:10054000FAC2F978720AE4080039F34AFDA42FF8D8 -:10055000FB480680C048720A2FC950A9501A300EB5 -:100560003010500EC1794D1C509CEDB30005C541B3 -:10057000FAF806805800C2201037C0A4FACBF978E8 -:10058000F6070037EEE8FDA4FAE90000CF28FAC824 -:10059000F9841AD8FAC8FAD00A9A1AD80E9BFAC85F -:1005A000FBCC029C1AD8FAC8F974FAC9FFCCF01F28 -:1005B000003E2FDDF8EA0000C0C8ECCAFFFF10368D -:1005C000C0B4FAC9F9781496F2070037EEEAFDA430 -:1005D000FAEB0000CCE840A959F8E0890016F2E6F1 -:1005E0000000F2CBFFF8FAE7000050ABFAC6F9784A -:1005F000EC080039FAE60000F2E7FDA42FF81496A3 -:10060000FB480680CB68F2E600002F89FAE700007D -:1006100050A91496CAE8EDB30004C161FAF8068047 -:100620005800C0801037C6A4FACEF978FC0700370E -:10063000C838ECCAFFFF1036E0840082FACCF978A3 -:10064000F8070037C788EDB30006C4D1FAF8068072 -:100650005800C1D01037C064FACCF978F8070037D9 -:10066000C1F8FAC8F9841AD8FAC8FAD01AD8FAC860 -:10067000FBCC1AD8FAC8F974FAC9FFCC0A9A0E9BB7 -:10068000029CF01F00092FDD9818C2A8ECCAFFFFDA -:100690001036C0D4FACBF9781496F6070037EF0875 -:1006A000FDA6C1E88002F2288003EDE440A959F8D4 -:1006B000E0890013F2CBFFFC50AB7209FAC6F9785F -:1006C000EC08003B2FF8F749FDA4FB480680149680 -:1006D000F1D9B010C058921814962FC950A95C785F -:1006E0005018C458FAF806805800C1D01037C064BA -:1006F000FACCF978F8070037C1F8FAC8F9841AD8A3 -:10070000FAC8FAD00E9B1AD8FAC8FBCC0A9A1AD8A3 -:10071000029CFAC8F974FAC9FFCCF01F00C42FDD9F -:10072000780BC248ECCAFFFF1036C094FACBF978B8 -:10073000F60700371496EEFBFDA4C18840A959F8CE -:10074000E0890011F2CBFFFC50ABFAC6F978720BCE -:10075000EC080039F34BFDA42FF81496FB480680F3 -:10076000C058720B14962FC950A9501B300E500E52 -:100770004008401C300B18485F18E7E80008F608EE -:100780001800C0703308FB620685A1B3FB680684BD -:100790003020300AFB6A068740395809C025A7D3A4 -:1007A0004038401758085F194008FAC5F9900E48BC -:1007B00030025F18F3E81008E4081800C5E03018AC -:1007C000F0001800C0603028F0001800C051C3E8E5 -:1007D0000A970690C2C80A97FAE80000F5D8C00345 -:1007E0002D0A0EFAF00B1603F20C1603F7E911DBD3 -:1007F0001899169858085C29CF21FAE90000EDB342 -:100800000000C4613309F20A1800C4200EF9C408BC -:10081000F01F008730A82D0A3009AE8AFAEA0000DE -:10082000F01F008416991498FAE90000EECC00013C -:1008300030A83009FAEA00001897589A5C2BFE9B02 -:10084000FFE91BF800932D08C2080A97FAE8000098 -:10085000F5D8C004409EFC0A070A0EFAF20B1604F3 -:10086000F00A1604F5E911CA1699149858085C297B -:10087000CF01FAE90000C0C85800C091EDB30000F4 -:10088000C061FAC7F9913308AE88C0280A970E15DF -:100890004030C14850425057407410925802E08096 -:1008A00001B6300CFB620648FB6C06873015300041 -:1008B000FAC7F9B8C03840353000069A0699E21AEE -:1008C0000002E2190084508A5079EA000C42FB3899 -:1008D0000687300BF6081800F7B201FF580AF7B286 -:1008E00001FE5809C4514048041850385808E0899E -:1008F000001DC3E8FB4C06784CFE310C890E891CA8 -:10090000FB4B0674587BE08900042F84C0B8FACAF8 -:10091000F990402B029CF01F0049E0810189FAC444 -:10092000F9F8403B210B503BFAF90678FAF80674C7 -:10093000F2CCFFF0F0CBFFFF4BFA403E590EFE9990 -:10094000FFDB1C09890AFB490678891EFB4B0674EC -:10095000587BE08900042F84C0B8FACAF990402B74 -:10096000029CF01F0036E0810163FAC4F9F8FB38FD -:100970000687300CF8081800C1F0FAF80678FAC9B2 -:10098000F9792FF88909FB4806783019FAF80674C6 -:1009900089192FF8FB4806745878E08900042F84E1 -:1009A000C0B8FACAF990402B029CF01F0024E081E5 -:1009B000013FFAC4F9F8408B580BC1F0FAF80678F9 -:1009C000FAC9F97C2FE88909FB4806783029FAF83A -:1009D000067489192FF8FB4806745878E0890004DA -:1009E0002F84C0B8FACAF990402B029CF01F001364 -:1009F000E081011EFAC4F9F8407AE04A0080C5118E -:100A00004049041950395809E0890029C4A848C848 -:100A1000310EFB4C06788908891EFB4B0674587B07 -:100A2000E08900102F84C1788002F228800373408F -:100A30008002D9988003EDF88002F5488003ECE845 -:100A4000FACAF990402B029CF01F0052E08100F09E -:100A5000FAC4F9F8403C210C503CFAF90678FAF84F -:100A60000674F2CCFFF0F0CBFFFF4CBA403E590EBB -:100A7000FE99FFCF1C09890AFB490678891EFB4BAA -:100A80000674587BE08900042F84C0B8FACAF99034 -:100A9000402B029CF01F003FE08100CAFAC4F9F825 -:100AA0000A105800E089001BC3B8FB4C0678310AD5 -:100AB0004B9C891A890CFB4B0674587BE089000417 -:100AC0002F84C0B8FACAF990402B029CF01F003165 -:100AD000E08100AEFAC4F9F82100FAF90678FAF8D4 -:100AE0000674F2CCFFF0F0CBFFFF4ABA5900FE9932 -:100AF000FFDE0009890AFB4906788910FB4B067462 -:100B0000587BE08900042F84C0B8FACAF990402BC2 -:100B1000029CF01F0020E081008BFAC4F9F8FAF87B -:100B2000067889158907F0050005FAF80674FB4573 -:100B300006782FF8FB4806745878E08900042F8463 -:100B4000C0A8FACAF990402B029CF01F0012C6F10F -:100B5000FAC4F9F8E2130004C41040470417580718 -:100B6000E089001CC3B8FB4C067889058913FB4B50 -:100B70000674587BE08900042F84C098009A402BAB -:100B8000029CF01F0004C531FAC4F9F82107C0988F -:100B90008002F5488003ECE84AB53103FAC0F990C9 -:100BA000FAF90678FAF80674F2CCFFF0F0CBFFFF02 -:100BB0004A5A5907FE99FFD90E09890A8917FB4934 -:100BC0000678FB4B0674587BE08A0009FACAF99054 -:100BD000402B029CF01F001DC2A140684049E4095F -:100BE0000C4204085068FAF806785808C080FACA1F -:100BF000F990402B029CF01F0015C1913003FAC4FC -:100C0000F9F8FB430674FE9FF53302934020FAF88F -:100C100006785808C080029CFACAF990009BF01F21 -:100C2000000BC0613008FB480674C0284020806873 -:100C3000EDB80006C0313FF25062406CFE3DF978DD -:100C4000D83200008003EDF88002F548D431FACDA7 -:100C500001E03007503C16961295507A5087505755 -:100C60000E930E905047407E1D8957795809E080B9 -:100C700007A22FFE4D5C507E780C502CF809070817 -:100C8000E2180008C1B06C185808E08900070C9BF6 -:100C9000403CF01F004FCE816C084CCBF0C9FFFFE9 -:100CA000760A1188F4080708EDB80003CDD16C1856 -:100CB0008D0920182FF08D18CE7BE0490025E081AA -:100CC000008906941091109236CA344C358E407BC0 -:100CD0001739507B364BF6091800E08000BBE08BDB -:100CE0000042F8091800E08000B4E08B0021339B3B -:100CF000F6091800E08B01D2330BF6091800E082E8 -:100D00000094325BF6091800C640E08B000B5809CE -:100D1000E080074F324BF6091800E08101BFC8A8F8 -:100D200032ABF6091800E08101B9C6D8FC091800F9 -:100D3000E08000A4E08B000C34CBF6091800C7005B -:100D400034FAF4091800E08101A9C8C835BAF409D9 -:100D50001800E0800098363AF4091800E081019EFE -:100D6000C9E836FBF6091800C7E0E08B0017369B90 -:100D7000F6091800C720E08B0008368BF60918002A -:100D8000E081018CC4F8F4091800C3F036EAF409D4 -:100D90001800E0810183C8D8373AF4091800C1303F -:100DA000E08B0008370AF4091800E0810177C7A832 -:100DB000375AF4091800C5C0378AF4091800E081D1 -:100DC000016DC5B83029C7590000049C800328BCB8 -:100DD0006C185808E08900080C9B403CF01F006428 -:100DE000E08106E0407A6C08F539FFFF118AF20ACB -:100DF0001800E08106E02FF82FF08D086C182018FD -:100E00008D18C32BA5A1C64B407B1789F409180088 -:100E1000C0512FFBA1B1507BC5BBA1A1C59BA1B106 -:100E2000C57BA3A1C55BE4020022A17223021202CA -:100E3000C4FBE0420020E08B0007E4C4000130184E -:100E40003002C46B3168403A9538E08F06ABA1A1FF -:100E50004C8930AE5089C2B84C6C300B508C505B12 -:100E6000C279A1A14C4A3089508A5059C2194C2EDE -:100E700030AC508E505CC1C94BFBA9B1508B310ACC -:100E8000C169301950085019407BFACCFFD4F01FCB -:100E9000003BA7A1507C40194008C0B9A7A1300968 -:100EA000C0894B59E81102205089310E505EC009AB -:100EB000EDB10004FE90FED9EDB10002C441580826 -:100EC000C2500E34C064FACCFE20F8040024C2786C -:100ED000FACAFED40A99F407002A0E98130B14AB31 -:100EE0002FF81034CFC4EEC9FFFFEE0811FFF0C792 -:100EF000FFFF2FE808080807EA080025F2070007A7 -:100F0000FAC8FED4F0040324C1C8E6C8FFFF0E33BC -:100F1000C094FACBFE201093F6040024E8F4FF4CB2 -:100F2000C1086A042FC559F7E089000B1093FACA6B -:100F3000FE20F40700282FF7F144FF4CC02810933F -:100F4000A800C92AEDB10000C1A15808E0800088BE -:100F50000E34C635FACAFED40A99F407002A0E9850 -:100F6000130B14AB2FF81034CFC4C678800328BC01 -:100F70008002EFB480032E6C800329ECE2110002A2 -:100F8000C4805808C2500E34C064FACCFE20F80465 -:100F90000024C278FACAFED40A99F407002A0E98EF -:100FA000130B14AB2FF81034CFC4EEC9FFFFEE08BB -:100FB00011FFF0C7FFFF2FE808080807EA0800251F -:100FC000F2070007FAC8FED4F0040324C1C8E6C83B -:100FD000FFFF0E33C094FACBFE201093F6040024DA -:100FE000E8F4FF4CC1086A042FC559F7E089000BEB -:100FF0001093FACAFE20F40700282FF7F144FF4CA3 -:10100000C0281093E008141F89108908FE9FFE2D48 -:101010005808C2500E34C064FAC9FE20F2040024FD -:10102000C278FACAFED40A99F407002A0E98130B64 -:1010300014AB2FF81034CFC4EEC9FFFFEE0811FF38 -:10104000F0C7FFFF2FE808080807EA080025F207A5 -:101050000007FAC8FED4F0040324C1C8E6C8FFFFA5 -:101060000E33C094FAC2FE201093E4040024E8F486 -:10107000FF4CC1086A042FC559F7E089000B109393 -:10108000FACEFE20FC0700282FF7F144FF4CC028C1 -:1010900010938900FE9FFDE9402CF8090709EDB97E -:1010A0000000C021A1A14C7B30AA508B505A30398E -:1010B0006C1A580AE089000C501950080C9B403CEF -:1010C000F01F004140194008E081056CEDB10006B9 -:1010D000C151C1F86C1A201A8D1A580AE08A00040E -:1010E0008D0CC0B8501950080C9B403CF01F0036C6 -:1010F00040194008E08105562FF06C0A4B3EF4CCB5 -:10110000FFFF7C0B158AF60A070AEDBA0003CE3002 -:101110005829E08001C05839E080031D5819E0804B -:10112000011B029CE21C0010502C5802F9B2000175 -:10113000E3D1C001E080009B580CC0303001C4985E -:101140005808C2500E34C064FACBFE20F6040024C6 -:10115000C278FACAFED40A99F407002A0E98130B33 -:1011600014AB2FF81034CFC4EEC9FFFFEE0811FF07 -:10117000F0C7FFFF2FE808080807EA080025F20774 -:101180000007FAC8FED4F0040324C228E6C8FFFF13 -:101190000E33C094FACAFE201093F4040024E8F43D -:1011A000FF4CC1686A042FC559F7E08900111093FC -:1011B000FAC9FE20F20700282FF7F144FF4CC0883F -:1011C0008002EFB4800328BC0000049C10930891B7 -:1011D00030044D5E7C081034E08004E46C08118912 -:1011E000FAC8FE200808F169FFCC6C1820188D1889 -:1011F0006C082FF8308A8D08300BFACCFE2CF01FCB -:10120000004B2FF4FAC8FE2C0899FACAFE54029B30 -:10121000403CF01F00475BFCE08004C4580CC061F8 -:10122000402C580CC051830CC0385BECC0B0080097 -:10123000402B2012580BF9B40100F7B100FCFBF46D -:1012400000026C185808E089000B0C9B403CF01F12 -:101250000039C0505804C050E08F04A45802CBA1FC -:10126000402A580AFE91FD01C718402E580EC1A011 -:101270006C186C090438C0F4100910128D091001A3 -:101280000C9B403CF01F002BCF405801E08101E651 -:10129000E08F0488040904188D098D180401E08F7B -:1012A00001DD5808C2500E34C064FACCFE20F804A8 -:1012B0000024C278FACAFED40A99F407002A0E98CC -:1012C000130B14AB2FF81034CFC4EEC9FFFFEE0898 -:1012D00011FFF0C7FFFF2FE808080807EA080025FC -:1012E000F2070007FAC8FED4F0040324C258E6C887 -:1012F000FFFF0E33C094FACBFE201093F6040024B7 -:10130000E8F4FF4CC1986A042FC559F7E08900142E -:101310001093FACAFE20F40700282FF7F144FF4C7F -:10132000C0B80000000009AC8002E8BC800328407F -:10133000800328BC1093049A089C0C99301BF01F62 -:1013400000C9E080042FF800000040492FF95049FF -:10135000FE9FFC8B5802F9B200FFEDB10004C261A0 -:1013600030040891C1286C188D0920188D182FF4AD -:101370000832E080008D5808E08900080C9B403C52 -:10138000F01F00B9E08100846C08FACEFE20F0C99D -:10139000FFFF1188FC080008F138FE4CE208180035 -:1013A000CE315804C741E08F04065808C2500E34AD -:1013B000C064FACCFE20F8040024C278FACAFED435 -:1013C0000A99F407002A0E98130B14AB2FF8103467 -:1013D000CFC4EEC9FFFFEE0811FFF0C7FFFF2FE8F3 -:1013E00008080807EA080025F2070007FAC8FED433 -:1013F000F0040324C1C8E6C8FFFF0E33C094FACB43 -:10140000FE201093F6040024E8F4FF4CC1086A049F -:101410002FC559F7E089000B1093FACAFE20F40794 -:1014200000282FF7F144FF4CC02810930891300892 -:10143000C1886C1A201A8D1A133A02CA8D095802F3 -:10144000C1D06C195809E089000D50080C9B403C34 -:10145000F01F00854008C0500831C101E08F03A291 -:101460006C0AFACEFE2014992012158AFC0A000A92 -:10147000F53AFE4CF00A1800CDD1E2040104E080F8 -:10148000039A404C2FFC504C3008A2880800FE9F65 -:10149000FBEC029BE21B0010502B5802F9B200FF3C -:1014A000E3D1C001E08000BC580BC050FACAFE2452 -:1014B000506AC4385808C2500E34C064FAC9FE20BD -:1014C000F2040024C278FACAFED40A99F407002A6A -:1014D0000E98130B14AB2FF81034CFC4EEC9FFFFD6 -:1014E000EE0811FFF0C7FFFF2FE808080807EA0819 -:1014F0000025F2070007FAC8FED4F0040324C1C88F -:10150000E6C8FFFF0E33C094FACEFE201093FC0411 -:101510000024E8F4FF4CC1086A042FC559F7E0899C -:10152000000B1093FACCFE20F80700282FF7F144A7 -:10153000FF4CC0281093506430014CC4C598680813 -:101540001031E080032FFAC8FE200208F169FFCCB9 -:101550006C1820188D186C082FF8308A8D08300B05 -:10156000FACCFE2CF01F00422FF1FAC8FE2C029993 -:10157000FACAFE54406B403CF01F003E5BFCE0802A -:101580000311580CC041406B970CC0385BECC23063 -:10159000406A740CF01F0038C100FAC4FE20020437 -:1015A0002354C088098B201120140C9A403CF01F52 -:1015B00000335801CF81C2C80200402920125809C7 -:1015C000F8011710FBF80006F7B800FCFBF80A0654 -:1015D000FBF100026C185808E089000B0C9B403CA2 -:1015E000F01F0021C0505801E08102DCC1186C08D6 -:1015F00058025F1A11894A2E300C7C08F00907083E -:10160000EC180008F5E80238F8081800C991402BDA -:10161000580BFE91FB2A406A950BC98A402E580E42 -:10162000C300C1086C188D0A20188D182FF10232E2 -:10163000C1405808E08900070C9B403CF01F000A9D -:10164000C0C16C0848ECF0CAFFFF78091188F208A5 -:101650000708EDB80003CE710200FE9FFB060000F4 -:10166000800320B8800328BC000009AC8002E8BCDD -:10167000800328408003274880032FF40000049C47 -:101680005808C2500E34C064FACBFE20F604002481 -:10169000C278FACAFED40A99F407002A0E98130BEE -:1016A00014AB2FF81034CFC4EEC9FFFFEE0811FFC2 -:1016B000F0C7FFFF2FE808080807EA080025F2072F -:1016C0000007FAC8FED4F0040324C1C8E6C8FFFF2F -:1016D0000E33C094FACAFE201093F4040024E8F4F8 -:1016E000FF4CC1086A042FC559F7E089000B10931D -:1016F000FAC9FE20F20700282FF7F144FF4CC0285A -:1017000010930891C1286C1920198D19113902C93B -:101710008D085802C1506C185808E08900070C9BCE -:10172000403CF01F0059C0C16C094D8E12987C0AD4 -:1017300013892012F4090709EDB90003CE51404C7A -:101740002FFC504C08103008E2000000A288FE9FD9 -:10175000FA8CE4C90001E0490026E08B0005300B5B -:10176000506BC058E4CA00273272506A3009FACE72 -:10177000FE54509950A7E8110D80502E35894057DE -:101780006C0A339C158AF80A1800E08B0015338B1D -:10179000F60A1800C4E2330BF60A1800C270E08B98 -:1017A000004532BBF60A1800C51032DBF60A1800F5 -:1017B000C7C1C4C8F20A1800C4E0E08B000AF4CB29 -:1017C0000041305EFC0B1800E08B0070C398361CA3 -:1017D000F80A1800C6A3366BF60A1800E088003134 -:1017E000378EFC0A1800C611C368029BEDB1000BCE -:1017F000C3C15807E06B0200E3DBE031F9B7000832 -:10180000EDB1000AC041E011FA7FC2F8409B406C84 -:101810002FFB580CF7BC0101FBFC1A06F7B201FFC5 -:10182000E011FC7F509BC248499EFC070417C0B8DA -:10183000497CF80704175887E0890006C36858A751 -:10184000E08A0034E011F47FC108EDB10007C2D195 -:10185000A7D1C0B8029BE21B0600E04B0200C251B8 -:10186000A9D13107E8110500402B16CA502B6C1A7C -:10187000201A8D1A580AE08A000D6C0A2FFA8D0A78 -:10188000C1180000800328BC0000049C8003EF08FE -:10189000501950080C9B403CF01F00BD40194008F7 -:1018A000C0412012FE91FF6E505740A7EDB10008D5 -:1018B000C161FAC9FE54402A123AE088000B40295F -:1018C0000C9A137B403C50085029F01F00B240088E -:1018D000FAC9FE5440221232E080016D029AE21AE7 -:1018E0000010E081014B402EBC8A50084059FACBD1 -:1018F000FE54403C40825D1202994008E2190020EB -:10190000C2A05808C1400E34C064FACEFE20FC04C8 -:101910000024C1D9FACAFED40A99F407002A0E9805 -:10192000130B14AB2FF81034CFC4CF68E6C8FFFFF9 -:101930000E33C064FACBFE20F6040024C0796A049A -:101940002FC559F7E08901151093FACAFE20F40754 -:101950000028C0A9EDB10002C4415808C2500E349D -:10196000C064FAC9FE20F2040024C278FACAFED488 -:101970000A99F407002A0E98130B14AB2FF81034B1 -:10198000CFC4EEC9FFFFEE0811FFF0C7FFFF2FE83D -:1019900008080807EA080025F2070007FAC8FED47D -:1019A000F0040324C1C8E6C8FFFF0E33C094FAC296 -:1019B000FE201093E4040024E8F4FF4CC1086A04FC -:1019C0002FC559F7E089000B1093FACEFE20FC07D3 -:1019D00000282FF7F144FF4CC0281093A80CCCA886 -:1019E000F5D1C001C2A05808C1400E34C064FACB82 -:1019F000FE20F6040024CAB8FACAFED40A99F407F5 -:101A0000002A0E98130B14AB2FF81034CFC4C8481B -:101A1000E6C8FFFF0E33C064FACAFE20F4040024B7 -:101A2000C9586A042FC559F7E08900A31093FAC971 -:101A3000FE20F2070028C988E2110002C5904D6916 -:101A400040821232C091FACBFE544059403C5008BB -:101A5000F01F0052C088FACBFE544059403C500859 -:101A6000F01F004F40085808C2500E34C064FACE30 -:101A7000FE20FC040024C278FACCFED40A99F807B0 -:101A8000002C0E98130E18AE2FF81034CFC4EEC9E8 -:101A9000FFFFEE0811FFF0C7FFFF2FE80808080757 -:101AA000EA080025F2070007FAC8FED4F004032470 -:101AB000C1C8E6C8FFFF0E33C094FACCFE201093D5 -:101AC000F8040024E8F4FF4CC1086A042FC559F754 -:101AD000E089000B1093FAC9FE20F20700282FF7C7 -:101AE000F144FF4CC0281093891A890BC438580858 -:101AF000C2500E34C064FAC8FE20F0040024C2783C -:101B0000FACAFED40A99F407002A0E98130B14ABF4 -:101B10002FF81034CFC4EEC9FFFFEE0811FFF0C755 -:101B2000FFFF2FE808080807EA080025F20700076A -:101B3000FAC8FED4F0040324C1C8E6C8FFFF0E3380 -:101B4000C094FAC2FE20E40400241093E8F4FF4C91 -:101B5000C1086A042FC559F7E089000B1093FACE2B -:101B6000FE20FC070028F144FF4C2FF7C0281093FB -:101B7000890C404C2FFC504CFAC8FE54409B10106E -:101B8000402A1600F4000000FE9FF86F800328BC76 -:101B900080032FF480032E6C80032CE480032B340D -:101BA00040495809C0508C68EDB80006C0313FF874 -:101BB0005048404C288DD832D421217D1497189656 -:101BC000129A5807C064E068008B99383FFCC2281D -:101BD0005807EE0C1700F9B901FFEFD9E10C109985 -:101BE000E0680208BA683FF8504B505C500B502C2C -:101BF000BA781A9B0C9CF01F00095BFCC044E0689B -:101C0000008B8D385807F9B90100FBF81000F1F985 -:101C10001E002E9DD82200008002F568D401129883 -:101C20001499169A189B483C780CF01F0003D802B0 -:101C30000000059880031BB8D4214B3818961697DE -:101C4000700C580CC06078685808C031F01F002F25 -:101C50004AF81037C0514AC870087007C0E84AD81F -:101C60001037C0514A8870087017C0784AA81037DA -:101C7000C0414A58700870278E68EDB80003C1E073 -:101C8000EDB80004C3E1EDB80002C1516EDB580BA2 -:101C9000C0A0EEC8FFBC103BC0400C9CF01F001F52 -:101CA00030088FD88E68E018FFDBAE6830088F18D8 -:101CB0006E488F088E68A3B8AE686E485808C0B1E9 -:101CC0008E68E2180280E0480200C0500C9C0E9B17 -:101CD000F01F00138E69F1D9C001C07030088F2841 -:101CE0006E585C388F68C068EDB90001EFF81005D8 -:101CF0008F286E485808C0618E68EDB80007C02173 -:101D0000DC2AD82A0000059880031F388003EF2CB6 -:101D10008003EF4C8003EF6C8003217C8003276CF1 -:101D20004828700C2F4C5EFC00000598D4211697B3 -:101D3000189676485808C7D0580CC060786858087C -:101D4000C031F01F003D4BD81037C0316C07C0A820 -:101D50004BB81037C0316C17C0584BA81037EDF78F -:101D600000028E6A1498EDBA0003C420ABBAAE6AC2 -:101D70006E185808E08900066F085808E08A005A73 -:101D80006EB85808C560E21A1000C0306F55C0F830 -:101D900030196E8B0C9C5D1818955BFCC0816C38FB -:101DA00059D8C4708E68A7A8AE68D8228E68EDB8DE -:101DB0000002C0916E1810156ED85808EFF8101078 -:101DC000EBD8E1156EB80C9C30090A9A6E8B5D1841 -:101DD0008E680A3CC261ABD8300C6E49AE688F1C6D -:101DE0008F09EDB8000CC251EF450054D8226E4562 -:101DF0005805C1F06E04F5DAC0028F05F9B801008C -:101E0000EFF800050A148F28C11808990A9A6EA8DD -:101E10006E8B0C9C5D181814580CE08900078E68B6 -:101E2000A7A83FFCAE68D82218055804FE99FFEF1A -:101E3000D82A000080031F388003EF2C8003EF4C6A -:101E40008003EF6CD401189B580CC0714868487B24 -:101E5000700CF01F0007D8024868700CF01F0003D8 -:101E6000D80200008003ECA880031D2C800325E825 -:101E7000000005985EFC5EFCD401483BF01F0003A7 -:101E8000D80200008003629080032640D42116957A -:101E9000F606105CECCBFFF4F01F00071897C0901B -:101EA0009915300B2F4C0C9A8F2C8F0BF01F0003C1 -:101EB0000E9CD8228002E2BC8002E8BCD42149C832 -:101EC000189670076E685808C0410E9CF01F0019E4 -:101ED000EEC7FF2830056E2C6E18C0689869EA09B5 -:101EE0001900C1202A4C2018CFA76E085808C071CD -:101EF000304B0C9CF01F00108F0CC0306E07CECB07 -:101F000030C88D38D8223008F948004C99089928F3 -:101F1000991899489958996899D899E8F9480048C2 -:101F20003FF8B8783018B868D82200008003ECA8D1 -:101F300080031F3880031E8CD421189678675807B9 -:101F4000C4714A48301599A8F94700D8F94700DC10 -:101F5000F94700E09965F01F00208D0C0C9CF01FE4 -:101F6000001E8D1C0C9CF01F001C6C093048930750 -:101F7000B268931793276C18B27793479357936778 -:101F80009389910791179127494E495B939E93AB93 -:101F9000494A495493BA93C43099B069B07591C411 -:101FA0009147915791679188919E91AB91BA8D2CF1 -:101FB00031289907B868991799273028B87899C4B3 -:101FC0009967999E99AB99BA99479957998CD82254 -:101FD00080031E7880031EBC80032B1080032AD848 -:101FE00080032AAC80032A9CD4014858169AFAC967 -:101FF000FFFC189B700CF01F0003D802000005982E -:1020000080033424D43114901291169310971895AC -:10201000F20A02425802C0310491C418580CC06040 -:1020200078685808C031F01F001F49F81037C031D8 -:102030006A07C0A849D81037C0316A17C05849C8C4 -:102040001037EBF700026E185808C03430088F18AC -:102050000496C148F01F00176E08080308160E9B6F -:10206000F00400040A9C8F04F01F0013C070E40603 -:102070000109F2000D081091C1286E146E08069C2B -:10208000089A109B0836FE9BFFE70C9AF01F000988 -:102090006E080C088F086E180C188F18029CD83226 -:1020A00080031F388003EF2C8003EF4C8003EF6C1C -:1020B0008002E736800328BCD40112981499169A3E -:1020C000189B483C780CF01F0003D80200000598CC -:1020D00080032004D42116951897F01F00234A345A -:1020E00068287016E016FFFCECC8FF91F0050105AA -:1020F000E015FF80EAC50080E045007FE08A00230C -:10210000300B0E9CF01F001A68280C08103CC1A16F -:10211000EA0B11000E9CF01F00165BFCC171300B26 -:102120000E9CF01F00136828F808010958F9E08A8E -:10213000000AA1A9911948F8700948F8F80901099D -:1021400091090E9CF01F000DD82A68280A16A1A636 -:102150009116489870090A190E9C9109F01F000702 -:10216000DA2A00008002E8CA0000059C8002EBC861 -:10217000000009A800007AD08002E8CCD42116968D -:102180001897580BE08000CAF01F004E20864CEADA -:102190006C18742EF9D8C001A1C8EC080009721B94 -:1021A000E01BFFFC1C39C1D1F6080008580CC081A7 -:1021B0006C09121612086C3B6C299729933B1099F5 -:1021C0009526A1A98D194C1972091238C0634C08C3 -:1021D0000E9C700BF01F003F0E9CF01F003FD8229A -:1021E000931B580CC030300CC1086C0EF4C5FFF8BE -:1021F0001C161C086C2E0A3EF9BC0001EDF51003FC -:10220000EBFE1A02FDF51A03F20B000E7C1EEDBE6A -:102210000000C1301608580CC0C14ABE722B2F8E68 -:102220001C3BC071973697268D2B8D3B301CC058B8 -:10223000722B7239932B97391099EC080908A1A9D0 -:102240008D19580CC671E04801FFE08B0013A3986C -:10225000F4080039722B8D398D2B97369326A348BD -:102260007419301BF6080948F3E810089518C528BA -:10227000F00916095849E08B0006F00B16062C8B66 -:10228000C2D85949E08B0005F2CBFFA5C278E049DE -:102290000054E08B0006F00B160C292BC1F8E04926 -:1022A0000154E08B0006F00B160F289BC178F00B51 -:1022B0001612E0490554E088001137EBC0F8000021 -:1022C0008002E8CA0000059C000009A400007ACC46 -:1022D000800320D48002E8CC284BF40B003C782902 -:1022E0001839C0E17418A34B301CF80B094BF1EB03 -:1022F000100B1298951BC0A872291839C060721A69 -:10230000E01AFFFC1438CF9372388D388D2993363C -:1023100091260E9CF01F0002D82200008002E8CC1B -:10232000D431203D14941895169774285808E080ED -:10233000014A9668EDB80003C04176485808C0C10C -:102340000E9B0A9CF01F00A1C0708E68A7A8AE6803 -:1023500030988B38C3598E6368000696E2160002E7 -:10236000C2103003E06204000696C04860036016A5 -:102370002F805806CFC0E0460400EC091780E4091E -:1023800017B0069A6EA86E8B0A9C5D181816580C2A -:10239000E08A0114682818188928E08001141803BD -:1023A000CE9BE7D3C001C07050060C930C91501522 -:1023B0000892CA0806960891C048600360162F80EC -:1023C0005806CFC08E686E241099E2190200C570BD -:1023D0000836C4531099E2190480C4106E4B6E097C -:1023E000161950096E59109CF209001A3028F40889 -:1023F0000C08FAE9000410944009E21C04002FF9CB -:102400000C091238F2041730580CC110089B0A9CB2 -:10241000F01F006F1892C150400A6E4BF01F006D04 -:102420008E68E018FB7FA7B8AE68C0E8089A0A9CDF -:10243000F01F00691892C0816E4B0A9CF01F006764 -:1024400030C88B38CBA8400A4009E80A010AE409E1 -:1024500000088F548F2A8F088F420C940836EC04A2 -:102460001730069B089A6E0CF01F005D6E08080876 -:102470008F086E2808180C948F28C30808365FBA96 -:102480006E0C6E48103C5FB8F5E80008F2081800C2 -:10249000C0E0069B089AF01F00526E0808080E9BC9 -:1024A0008F080A9CF01F004FC190C8786E591236F1 -:1024B000C0A36EA8069A6E8B0A9C5D181894E089DA -:1024C000000EC7B80C9A069BF01F00456E080C085A -:1024D0000C948F086E280C188F28622808188328FF -:1024E000C71008160803C6DB6003601130082F8090 -:1024F00050085801CFA0400A580AC181029A30AB57 -:10250000069CF01F0039F9B80101F9D8E106EDD3B6 -:10251000E116F9B90101FBF91A00F9B80001E3D895 -:10252000E006F9B80001FBF80A000236EC04178057 -:10253000E20417B06E596E25F20500050A345F9A61 -:102540006E0C6E48103C5FB8F5E80008300AF408DD -:102550001800C0E0069B0A9AF01F00216E080A08C6 -:102560000E9B8F08401CF01F001FC180C2681234F0 -:10257000C0A56EA8069A6E8B401C5D181895E08960 -:10258000000EC1B8089A069BF01F00156E080808D7 -:1025900008958F086E2808188F280A16C0710E9BA0 -:1025A000401CF01F0010C091500664280A188528AE -:1025B000C0900A110A03C9EB8E68A7A8AE683FFC59 -:1025C000C028300C2FDDD83280031C388002E2BCDA -:1025D0008002E7368002E8E88003217C8002E87E02 -:1025E00080031D2C800328A4D43130051893169045 -:1025F0000A91F01F00123FF2E6C7FF28C1786E264D -:102600006E142F46C0D88C08E2081900C0808C18C0 -:10261000E4081900C040069C5D1018452A462014A5 -:10262000ECCB000C5804CF046E075807CE91F01F76 -:1026300000040A9CD832000080031E7480031E76BA -:10264000D43130051691F8C7FF280A92F01F001008 -:102650003FF3C1686E266E142F46C0C88C08E4088C -:102660001900C0708C18E6081900C0305D111845BB -:102670002A462014ECCC000C5804CF146E075807DF -:10268000CEA1F01F00040A9CD832000080031E7403 -:1026900080031E76D401201D4848189B1A9A700C9E -:1026A000F01F00032FFDD80200000598800326B01C -:1026B000D431169414921895F01F00204A08700720 -:1026C0005807C050300633DA0C98C0780A9CF01FC7 -:1026D000001D0E9CD8322FF6E8060709F0091800F5 -:1026E0005F1BF40918005F191669F0091800CF4143 -:1026F000C1A8029C0C9A089BF01F0013C1216E0117 -:102700000C010388E6081800C0C148D870080A9C6C -:102710001017A3478507F01F000BE2CCFFFFD8324C -:102720002FC7C02833D36E015801CE410A9CF01F39 -:102730000005029CD8320000800361BC000009B093 -:10274000800361BE8002EDE6E04C00FFE0880003FC -:102750005EFD48487008F00C070CE21C00085EFCA7 -:102760000000049C481C5EFC8003EF8CD42120FDFB -:10277000966816971896E2180002C3C1967BF00B74 -:102780001900C0551A9AF01F002AC0F48E650A98E5 -:10279000ABB8E2150080AE683004E0680400F9B51B -:1027A0000140F0051700C1B84018E218F000E048F9 -:1027B00020005F04E0488000C0D16EB949D81039CC -:1027C000C0918E68E0650400ABA8EF450050AE688C -:1027D000C0688E68E0650400ABB8AE680A9B0C9CCC -:1027E000F01F00158E68C0D1EDB80009C1E0A1B896 -:1027F000AE68EEC8FFB98F488F0830188F58C1589F -:10280000A7B88F4CAE688F5548C88F0C8DA8580458 -:10281000C0C08E7CF01F000AEFF81206F9B9010162 -:10282000F1D9E138EFF81C062F1DD822800362A8E9 -:1028300080032AAC8002E2BC80031E788002F1682B -:10284000D42118971096580AC041149B3019486A31 -:10285000F01F00065BFCC06130088D08E068008A4C -:102860008F38D82280037E208003286C201D5809D1 -:102870005F09580BFA0B1700580A5F18F3E80008B5 -:102880003009F2081800C0303FECC0B8580AC03117 -:10289000149CC078158997091589F00918005F1CE8 -:1028A0002FFD5EFCF7DBC008C068201A19881638B7 -:1028B0005E0C2FFC580ACFA15EFAD703D4211697DD -:1028C0001896580CC06078685808C031F01F00385E -:1028D0004B881037C0316C07C0A84B781037C03117 -:1028E0006C17C0584B581037EDF7000230088F189E -:1028F0008E68EDB80005C590EDB80002C1A0EDB836 -:102900000004C060A7A8AE6830988D38C4D8EDB870 -:102910000003C0B10E9B0C9CF01F0029C4618E689F -:102920008F6CA3D88F2CAE688E68A3A8AE68C14800 -:102930006EDB580BC110EEC8FFBC103BC0400C9CB6 -:10294000F01F0020300C6F088FDC8F185808C04033 -:102950006EF88F08D8226E485808C0510E9B0C9C08 -:10296000F01F00198E68F1D8C002C0604978498B09 -:10297000700CF01F00186E4A6E980C9C8F0A6E59EE -:102980006E8B5D188E688F1CADD8AE68580CE08ACF -:102990000003D82A580CC041A5B8AE68C058A7A8F3 -:1029A000AE6830088F18DC2ADC2A000080031F384C -:1029B0008003EF2C8003EF4C8003EF6C80031D2C11 -:1029C0008003217C8003276C8003ECA8800329D43A -:1029D00080032640D4019868E21800095898C02066 -:1029E000D80AF01F0002D80280031E44D431189E7A -:1029F0001738E048005EC030300AC0381738301A47 -:102A00003009FC090B0A2FF9E0490100CFB1580841 -:102A1000C041F6CC0001D832149632D4EC16000135 -:102A2000300735D5C0381498129BFC080B06F6C940 -:102A3000FFFF178A129CE80A1800C090EA0A1800E3 -:102A4000C1E0EE0A1800CF01169CD832138C103C5E -:102A50005F53E04C005D5F0AE7EA100AEE0A1800D7 -:102A6000C03032D8CE2BF0CAFFFFFC0A000A14C6D1 -:102A70002FF81838CFD52FEB2FE9CDCBD8321498BB -:102A8000F5DBC01FF00C1100104CFC187FF0F5ECCA -:102A900013FCF00C010CBF9C5EFCD703D401967BA9 -:102AA000F01F0002D8020000800353E0D4211697E3 -:102AB000967BF01F00098E681099ADC95BFCEFF999 -:102AC0000C06EFFC1A15E0691000F1D9E138EFF8B7 -:102AD0001C06D822800362D4D421966816971495D8 -:102AE0001294E21801001896C0603029300A967BD3 -:102AF000F01F00068E68ADC808990A9A8E7B0C9C60 -:102B0000AE68F01F0003D822800362D4800353B460 -:102B1000D4211697967BF01F0007C0656F581808E0 -:102B2000EF480054D8228E68ADC8AE68D8220000A5 -:102B30008003694CD431208D4DB8500B7008507C07 -:102B4000502A1295501816970F36401AF4060704AB -:102B5000E2140008CFA1E046002DC0410F3630142A -:102B6000C058E046002BC0210F3658055F085905B4 -:102B70005F0A3009F1EA100AF20A1800C1D0E046F3 -:102B80000030C1210F8A358B378CF60A18005F0B95 -:102B9000F80A18005F0A144BF20B1800C0500F9689 -:102BA00031052FE7C0985808C070E0460030F9B5ED -:102BB0000008F9B5010A5804C0713FF0E061FFFF59 -:102BC000EA117FFFC0483000FC118000EA03141FA7 -:102BD0000A980699009A029BF01F00340699505AF1 -:102BE0000A98009A029BF01F0032069C14981699CE -:102BF000300A30003001149E109212934019F206F0 -:102C0000070BF3DBC001F9B90137F9B90057506977 -:102C1000ECC80030EDBB0002C0804069F7DBC002A9 -:102C2000EC090108580BC2D00A38C2B40430E601DE -:102C300013005FB9F3EA13FAFC0A1800C1F104307B -:102C4000E60113005F09405A14385F9AF5E900095C -:102C5000FC091800C131E005064AEA010249504862 -:102C6000F8000349BF58F20B000B5038FAE0000C93 -:102C70001400E20B0041301AC0283FFA0F36CBFB9C -:102C80005BFAC1715804C0713FF0E061FFFFEA11C7 -:102C90007FFFC0483000FC11800032284079933813 -:102CA000C10800000000049C800373408002D99892 -:102CB0005804C07030083009F0000100F2010141F1 -:102CC00040285808C0B0580AF9B801FFEFD8E10A07 -:102CD000FBFA1A00402940089308009A029B2F8DA6 -:102CE000D8320000D431209D4DE816927008508CE7 -:102CF000505A1295504816970F36404EFC0607035F -:102D0000E2130008CFA1E046002DC0410F3630137A -:102D1000C058E046002BC0210F3658055F08590502 -:102D20005F0A3009F1EA100AF20A1800C1D0E04641 -:102D30000030C1210F8A358B378CF60A18005F0BE3 -:102D4000F80A18005F0A144BF20B1800C0500F96D7 -:102D500031052FE7C0985808C070E0460030F9B53B -:102D60000008F9B5010AEA04141F0A9808993FFA05 -:102D70003FFBF01F003D0899502B503A0A983FFA4C -:102D80003FFBF01F003A300B300830094041E206AB -:102D9000070EE1DEC001ECCC00305800F9B101377C -:102DA000F9B100571C90E2100004C061EC01010C65 -:102DB000FDDEC002C3700A3CC354FAE000080038CC -:102DC000E20913005FBE3000FDEB13FBE00B1800BF -:102DD000C261FAE00008143C5F9E0038E20913006B -:102DE0005F0B3000FDEB000BE00B1800C181F0051C -:102DF0000640EA09024BFAE10000E808034BF6013D -:102E00000001507C5001BF5CFAE00000506C301BA8 -:102E1000FAE800180008F2010049C0283FFB0F360D -:102E2000CB6B5BFBC071322840803FF981383FF8A3 -:102E3000C0985803C07030043005E8080108EA095A -:102E40000149405E580EC080580BF9BA01FFEFDA15 -:102E5000E102405A9502109A129B2F7DD832000051 -:102E60000000049C8002D99880037340D431203D37 -:102E70004C48502C70011698113EE20E0705E215E1 -:102E80000008CFB1E04E002DC041113E3015C058B2 -:102E9000E04E002BC021113E58095F0C59095F0616 -:102EA0003007F9E61006EE061800C1E0E04E0030EB -:102EB000C131118635843783E80618005F04E606C1 -:102EC00018005F06E9E61006EE061800C050119ED5 -:102ED00031092FE8C098580CC070E04E0030F9B9A5 -:102EE0000008F9B9010A3FF3E6090D023007500363 -:102EF0000E9C0E93E20E0704E1D4C001F9B0013735 -:102F0000F9B000575010FCC600300890E2100004E1 -:102F1000C0814010E9D4C002FC0001065804C1C0C1 -:102F20001236C1A4043C5FBEFDE713FEE60E180096 -:102F3000C101043C5F0E40070E365F97EFEE000EB6 -:102F4000E60E1800C061B33C3017EC0C000CC02832 -:102F50003FF7113ECD0B5BF7C061322940200E9C3C -:102F60008139C0485805FBBC0100580AC070580799 -:102F7000F9B901FFF1D9E10B950B2FDDD832000033 -:102F80000000049CD421169776DBEEC8FFBC103BF2 -:102F9000C171E06B0400F01F0015C250E06804002E -:102FA0008FDC8FE8EF380046F8CCFC03B8A8EF3888 -:102FB0000045B898EF380044B8888F0CC1386EE5EA -:102FC000EA041501089AF01F000A1896C0C00A9A70 -:102FD000189BF80500050A9CF01F00068FE48F057A -:102FE0008FD6D82ADC2A00008002E2BC8002E8E802 -:102FF0008002E736D4211697149618955BFBC650CD -:10300000580CC06078685808C031F01F00314B1868 -:103010001036C0316A06C0A84AF81036C0316A16A8 -:10302000C0584AE81036EBF600028C68A5D8AC68A8 -:10303000EDB80002C140EDB80004C461EDB8000372 -:10304000C0B10C9B0A9CF01F0026C3E18C688D6CFC -:10305000A3D88D2CAC688C68A3A8AC680E946CD8EF -:103060005C545808C1006C196CE81039C0650A9CA2 -:103070000C9BF01F001CC2816C0820188D08B084C6 -:103080000897C0C86C495809C0C06C081238E0885D -:10309000000911770837C0518D086C182FF8C12826 -:1030A0006C18ED4800406C088DF8ECC8FFBC8DD85A -:1030B00030388DE8ECC8FFBAED6400468D080897FB -:1030C00030188D18C0283FF70E9CD82280031F3877 -:1030D0008003EF2C8003EF4C8003EF6C80031D2CEA -:1030E00080032F84D431208DFAC4FFBC504B682E4E -:1030F000505812967C0B7005506E580BF40B17004D -:103100006803681140493008C2C92FFB325C178A36 -:10311000F80A18005F1EF00A18005F1CFDEC000C96 -:10312000F00C1800CF31580AE0800129300C3FFA2A -:103130001890503A18941892F80C003C1697507C4E -:103140004CDC0F3AF80A070E407C1C0C4CBEFC0C01 -:10315000070E201E500E4CAEFC0C070C507C400C91 -:10316000587CE08B00F84C7EFC0C032F368BF60A63 -:103170001800E08000F0371BF60A1800C07034CB4E -:10318000F60A1800C051A3B4CE58A5B4CE380F8BA0 -:1031900036CAF40B1800C051A5B4EECBFFFFCDB872 -:1031A000A5A4CD88EBD5C005367CF80A1800E08BC5 -:1031B0000027365BF60A1800C48234FBF60A1800B2 -:1031C000C480E08B000C345BF60A1800C3E0347B4B -:1031D000F60A1800C3A0344BC088358BF60A1800D5 -:1031E000C2C0E08B0007355BF60A1800C351C31854 -:1031F000363BF60A1800C2F0364BC0E8370BF60A29 -:103200001800C250E08B000D36EBF60A1800C1F032 -:10321000E08B0014369BF60A1800C1E1C0E8375B6A -:10322000F60A1800C0A0378BF60A1800C060373BBA -:10323000F60A1800C111C0B8EDB40004C0A0EDB486 -:103240000005C0913020C0883040C0683030C04890 -:103250003010C0283000403B5BFBC040E20B09202F -:10326000C7985860E08B00776C0AEACCFFFF486E85 -:10327000FC00032F8003F2708003F1D48003F16817 -:103280008003EFC88003EFE8F4CBFFF88D0BF4EA7E -:103290000000E605083AC0F8F4CBFFFC8D0B740A79 -:1032A000E605093AC088F4CBFFF88D0BF4EA00007C -:1032B000E605083A0E9B1895C4E8620A5BFAC0B1AD -:1032C00050195028E06A0080300B029CF01F004D1E -:1032D00040284019E4CC00010E9B503CF20C0C49F4 -:1032E000C3A8620A5BFAC0B150195028E06A008096 -:1032F000300B029CF01F0043402840192012300A76 -:103300000E9BE202092AF2020C49C25816976C0A77 -:10331000F4CBFFFC8D0B740A0E9BE605093A2FF5E2 -:10332000C1A8F4C20030C068E40200222FF7F40202 -:1033300000120F8A580AC0E0230A589AFE98FFF636 -:10334000C0982FF70F8A580AC050230A589AFE983F -:10335000FFFA0E9B407C30BAF40C1800FE91FEEE92 -:103360004042178C0A325F4AF00C18005F1CF9EAE1 -:10337000000AF00A1800FE91FECB3008404E178A72 -:10338000E2050021F00A1800FC091710E6050038D4 -:10339000069EC2A8620A583AC1E0E0890007581A9E -:1033A000C1A0582AC181C058585AC0C0C0B5C13840 -:1033B0006C0AF4CCFFF88D0CF4E20000F0E300009E -:1033C000C1086C0AF4CCFFF88D0CF4E20000F0E3C5 -:1033D0000000C0786C0AF4CCFFFC8D0C740A910AD2 -:1033E0002FF52F882FC11235FE9AFFD61C9340521D -:1033F000406E85059D0B404BE60B003C2F8DD8326F -:103400008002E8BCD421149774285808C04195184C -:10341000109CD822F01F000330088F188F28D82264 -:1034200080032320D431FACD06BC5109169114979C -:103430001895F01F0056780C50CC5805C0706A687B -:103440005808C0410A9CF01F00524D281031C0316D -:103450006A01C0A84D081031C0316A11C0584CF83B -:103460001031EBF100028268EDB80003C041624800 -:103470005808C071029B0A9CF01F0049E0810F941C -:1034800082681099E219001A58A9C3D18279300ACA -:10349000F4091900C385A1D8FB5805D06288FB4800 -:1034A00005E462A8FB4805ECFAC8FFBCFB4805D45C -:1034B000FB4805C4E0680400FB4805D8FB4805CC80 -:1034C0003008FB5905D20E9A4109FAC7FA3CFB486D -:1034D00005DC0A9C0E9BF01F003350BCC0950E9B70 -:1034E0000A9CF01F003140BEF9BE01FF50BEFB0830 -:1034F00005D0EDB80006E0810F598268A7A8A26840 -:10350000E08F0F543008FB4806B4FB480690FB4898 -:10351000068CFB4806B03008300950A75078FAC432 -:10352000F9E03FF85059FB440688FB480544129CDB -:10353000506950D950E950B9129740A2325A300818 -:10354000C0282FF20589F00918005F1BF409180044 -:103550005F19F3EB000BF00B1800CF4140ABE40B0D -:103560000106C300FAF806900C08890BFB48069088 -:103570008916FAF8068C2FF8FB48068C5878E089F3 -:1035800000152F84C1C800008003276480031F3802 -:103590008003EF2C8003EF4C8003EF6C80031C381A -:1035A0008003342480031D2CFACAF978029B0A9CFC -:1035B000F01F0071E0810EF4FAC4F9E040BA0C0A81 -:1035C00050BA05893008F0091800E0800ED930099A -:1035D000FB6806BB0E96E4C8FFFF3FFE50945041C7 -:1035E0000E940491508950A8502E50391293129085 -:1035F00010970A92C0783FFC0A97502CC038300BC5 -:10360000503B0F38C0281290F0C90020E049005804 -:10361000E08B0A4A4D9AF409032F50A750800C976B -:103620000495089602924D6940941090404150D9FB -:10363000E08F08AA3008FB3906BBF0091800CE213C -:103640003208C6E8A1A3CDEB0F89F2C80030589824 -:10365000E08B001DEEC8FFFF300B2309F60B002B9B -:10366000F20B001B1139F2CA0030589AFE98FFF78E -:10367000E0490024CC51E04B0020E0890E90201B53 -:10368000FAF906B4123BC095C108FAF906B4ECCABF -:10369000FFFF1236C1F5C268FACEF9441097FC0B51 -:1036A000003BF6F0FD88C3581097FAC8F9501AD8B5 -:1036B000FAC8FAB81AD8FAC8FBB4029A1AD8049C05 -:1036C000FAC8F940FAC9FFB4F01F002E2FDD7800C8 -:1036D000C208FACCF9441496F8040038F0F0FD88DA -:1036E000C188410859F9E0890011F0CBFFFC510B6A -:1036F0007000FACBF944F6090038F140FD882FF943 -:103700001496FB4906B4C058700014962FC851088F -:103710005800FE94FF785C30A3A3C74B32B8FB6817 -:1037200006BBC70B0F38E048002AC0303009C80874 -:103730000F88F0C900305899E08B0026EEC5FFFFD6 -:10374000300B2308F60B002BF00B001B0B38F0C9D5 -:1037500000305899FE98FFF7E0480024FE91FF5191 -:10376000E04B0020E0890E1B201BFAF806B4103B4A -:10377000C115C188800334048003F0048003EDD0B8 -:10378000800330E4FAFA06B4ECC9FFFF1436C1F541 -:10379000C288FACAF944F40B003BF6FBFD88502BB3 -:1037A000C3C8FAC8F9501AD8FAC8FAB81AD8FAC869 -:1037B000FBB4029A1AD8049CFAC8F940FAC9FFB4BB -:1037C000F01F017B2FDD780C502CC27812960E95DD -:1037D000FAC9F944F2040038F0F8FD885028C1D83D -:1037E000410859FAE0890014F0CBFFFC7008510B36 -:1037F0005028FAC6F944402EEC0A0038F14EFD88F4 -:103800002FFA0E95FB4A06B41296C078700C0E95EE -:103810002FC8502C12965108402B580BFE95FEEDE8 -:103820000A97CF0AF20900290F38F4090019F0CAE3 -:103830000030589AFE98FFF83FFAF20A0C495029D6 -:10384000CE4AA7B3CDFA30092308F2090029F009BE -:1038500000190F38F0CA0030589AFE98FFF7E04878 -:103860000024FE91FED2E0490020E0890D98F2C4C8 -:10387000000130195039CC6AA3B3CC4AA7A3CC2A93 -:103880000F8836CEFC081800C0412FF7A5B3CBAA8D -:10389000A5A3CB8AA5B3CB6A50A750800C971090F4 -:1038A00008960495409402920E994041FAF806B4A5 -:1038B000403C580CC1D01036C064FACBF944F6062F -:1038C0000036C1D8FAC8F9501AD8FAC8FAB81AD8C6 -:1038D000FAC8FBB41AD8FAC8F940FAC9FFB4049A76 -:1038E0000C9B0A9CF01F01322FDD19B8C2282FF75C -:1038F0001039C084FACAF944F4060036ED38FD8B5D -:10390000C188410959F8E0890012F2CAFFFC510A46 -:103910007209FAC6F944EC08003A2FF8F549FD8817 -:10392000FB4806B4F1D9C008C04813B82FC95109E3 -:10393000FB680660300E30083012FB6806BB502E64 -:10394000E08F08C450A750800C9704950896029207 -:10395000409410904041A5A3C0A850A750800C9758 -:10396000049508960292409410904041EDB30005F2 -:10397000C511FAF806B4403C580CC1E01036C064DA -:10398000FACBF944F6060036C208FAC8F9501AD83C -:10399000FAC8FAB80C9B1AD8FAC8FBB41AD8FAC9F4 -:1039A000FFB4FAC8F940049A0A9CF01F01012FDD08 -:1039B000781B7809C2B8EECAFFFF1037C0B4FAC945 -:1039C000F9441497F2060036ECFBFD8CECF9FD8807 -:1039D000C1D8410959F8E0890014F2CBFFF8510B26 -:1039E000FAC6F944721BEC08003C7209F94BFD8CD5 -:1039F000F949FD882FF81497FB4806B4C078F2C83F -:103A0000FFF8721B1497510872091698FAE9000022 -:103A1000CAE8EDB30004C171FAF806B4403E580E8E -:103A2000C0801036C694FACCF944F8060036C8288F -:103A3000EECAFFFF1037E0840081FACBF944F606A6 -:103A40000036C778EDB30006C4B1FAF806B4403CBE -:103A5000580CC1D01036C064FACBF944F6060036D3 -:103A6000C1F8FAC8F9501AD8FAC8FAB81AD8FAC878 -:103A7000FBB41AD8FAC8F940FAC9FFB4049A0C9BEF -:103A80000A9CF01F00CB2FDD9818C268EECAFFFF1A -:103A90001037C094FAC9F9441497F2060036ED08BD -:103AA000FD8AC1A8410959F8E0890013F2CBFFFC57 -:103AB000510B7209FAC6F944EC08003B2FF8F7499C -:103AC000FD88FB4806B41497F1D9B010C05892187D -:103AD00014972FC951095018BF585008C488FAF8D4 -:103AE00006B4403C580CC1D01036C064FACBF9443F -:103AF000F6060036C1F8FAC8F9501AD8FAC8FAB86A -:103B00000C9B1AD8FAC8FBB4049A1AD80A9CFAC8B3 -:103B1000F940FAC9FFB4F01F00A62FDD780BC248A8 -:103B2000EECAFFFF1037C094FAC9F944F206003616 -:103B30001497ECFBFD88C188410959F8E089001110 -:103B4000F2CBFFFC510BFAC6F944720BEC080039BA -:103B5000F34BFD882FF81497FB4806B4C058720B3E -:103B600014972FC95109501BBF5B500BFAEA000094 -:103B7000580A5C2BC0E43008FAEA00003009F00A69 -:103B8000010AF20B014B32D8FAEB0000FB6806BBCE -:103B90003018E08F071150A750800C9704950896B5 -:103BA00002924094109040410E99EDB30003C4116D -:103BB000FAF806B4403A580AC1901036C645FAC819 -:103BC000F9501AD8FAC8FAB81AD8FAC8FBB40C9B3C -:103BD0001AD8049AFAC8F940FAC9FFB40A9CF01F2F -:103BE00000742FDD78165076C4882FF71039C0C4C2 -:103BF000FACEF944FC060036ECFCFD8C507CECF669 -:103C0000FD885056C668410959F8E0890010F2CA8B -:103C1000FFF8721B510A7209FACAF944507B5059D5 -:103C2000F4080039405B407AC47872185078C4C8F0 -:103C3000FAF806B4403E580EC2301036C094FACCA2 -:103C4000F944F8060036ECFBFD8C507BCD9BFAC89E -:103C5000F9501AD8FAC8FAB8049A1AD8FAC8FBB4B4 -:103C60000C9B1AD80A9CFAC8F940FAC9FFB4F01F95 -:103C700000502FDD781A507A780C505CC2A82FF7CC -:103C80001039C094FAC9F944F2060036ECF8FD8CFC -:103C90005078CB6B410959F8E0890015F2CAFFF85A -:103CA00072167209510A5059FACEF9445076FC083E -:103CB0000039405B0C9AF2EBFD882FF8FB4806B404 -:103CC000C088721C507CF2C8FFF851087209505924 -:103CD000405B407AF01F00371896C1503008300919 -:103CE000405B407AF01F0034C04032D8FB6806BB0E -:103CF0004B284B36A7D3E0400047F00617A03032E0 -:103D0000E08F06E7405B407AF01F002EC0C05026CF -:103D10004AD84AE6A7D3E0400047F00617A0303261 -:103D2000E08F06DD402A5BFAC04130695029C11896 -:103D3000E04000475F09E04000675F08F3E81008D3 -:103D4000F8081800C06040285808F9B80001502849 -:103D500040784059FAE90694A9A3FAF8069458085D -:103D6000C065405E300C506E509CC078405B32DACB -:103D7000EE1B8000509A506BE04000465F09E04027 -:103D800000665F08F3E810085048C0404022303910 -:103D9000C228E04000455F09E04000655F084046FA -:103DA0001049EC091800C1314022C148800330E4B9 -:103DB0008003697880036FC08003F2408003F2447F -:103DC00080032A7E8003F2488003F24C402EFCC21E -:103DD000FFFF3029FAC8F95C1AD8FAC8F9541AD882 -:103DE000FAC8F94C0A9C1AD80498409B40AAF01FC4 -:103DF00001E0E04000475F19E04000675F18189657 -:103E00002FDDF3E80008C041EDB30000C301EC0270 -:103E1000000C503C404B580BC1500D893308F00941 -:103E20001800C0B130083009406B407AF01F01D152 -:103E3000FBB20001FBF20BAB403AFAF806AC100AF9 -:103E4000503A406B30083009407AF01F01CAC090E8 -:103E50004039FB4906A4C05810C9FB4806A4C02835 -:103E60003309FAF806A4403E1C38CF73E0400047FF -:103E70005F09E04000675F08F3E81008FAF906A45C -:103E80000C1950695808C0B0FAF806AC5BD8C05598 -:103E9000402C1838E08A006A2020C058E0400065B5 -:103EA000E0890046FAFB06ACFB60069C201BFB4B3E -:103EB00006ACC0475C3B32D8C02832B8FB68069DD0 -:103EC000589BE08A001DFAC9FA3530AA12980E9C58 -:103ED0000C92F60A0C060E9B2D0B10FB0C9B5896B1 -:103EE000FE99FFF92D0B1897049610FBFACAF96298 -:103EF000C038113B14CB1238CFD3C0982D0B3308E8 -:103F0000FB6B069FFB68069EFACAF960FAC8F96463 -:103F1000F408010850E81092406B1602581BE08923 -:103F20000005EDB30000C3512FF2C338E040006636 -:103F3000C1C1FAF206AC5802E08A000C402A580AC5 -:103F4000C041EDB30000C2512FF240291202C0B8A7 -:103F500040285808C061EDB30000C0303012C1984D -:103F600040222FE23660C158FAF206AC406E1C3295 -:103F7000C065EDB30000F7B200FFC0A8E40811026D -:103F8000406C5802F00217A0F9B20901180236700D -:103F9000409B580BE080059D32D8FB6806BBE08F44 -:103FA000059C50A704950C970292089640414094B6 -:103FB0000E99EDB30005C481FAF806B4403E580EE0 -:103FC000C1D01036C064FACCF944F8060036C1D826 -:103FD000FAC8F9501AD8FAC8FAB8049A1AD8FAC81E -:103FE000FBB40C9B1AD80A9CFAC8F940FAC9FFB472 -:103FF000F01F01612FDD780AC2082FF71039C08445 -:10400000FACBF944F6060036ECFAFD88C16841099E -:1040100059F8E0890010F2CAFFFC510AFAC6F944C7 -:10402000720AEC080039F34AFD882FF8FB4806B401 -:10403000C048720A2FC9510940BE1C98951EBF582E -:104040009508FE9FFA7CEDB30004C480E2130040A3 -:10405000C450FAF806B4403C580CC1D01036C064C5 -:10406000FACBF944F6060036C1D8FAC8F9501AD886 -:10407000FAC8FAB8049A1AD8FAC8FBB40C9B1AD832 -:104080000A9CFAC8F940FAC9FFB4F01F013B2FDDC2 -:10409000780AC2082FF71039C084FACAF944F40626 -:1040A0000036ECFAFD88C168410959F8E089001032 -:1040B000F2CAFFFC510AFAC6F944720AEC08003948 -:1040C000F34AFD882FF8FB4806B4C048720A2FC98E -:1040D000510940BEB40EFE9FFA32FAF806B4403CD5 -:1040E000580CC1D01036C064FACBF944F60600363D -:1040F000C1D8FAC8F9501AD8FAC8FAB8049A1AD826 -:10410000FAC8FBB40C9B1AD80A9CFAC8F940FAC941 -:10411000FFB4F01F01192FDD780AC2082FF71039FC -:10412000C084FACAF944F4060036ECFAFD88C16886 -:10413000410959F8E0890010F2CAFFFC510AFAC699 -:10414000F944720AEC080039F34AFD882FF8FB485D -:1041500006B4C048720A2FC9510940BE950EFE9F91 -:10416000F9EE50A750800C9704950896029240945F -:1041700010904041A5A3C0A850A750800C9704956B -:1041800008960292409410904041EDB30005C5D1CD -:10419000FAF806B4403C580CC2601036C0A4FACB02 -:1041A000F944F6060036ECE8FD88FAE90000C1881B -:1041B000FAC8F9501AD8FAC8FAB8049A1AD80C9B57 -:1041C000FAC8FBB40A9C1AD8FAC8F940FAC9FFB475 -:1041D000F01F00E92FDDF8EA0000FAEB00003008DC -:1041E000E08F03E7EECAFFFF1037C0B4FAC9F94405 -:1041F0001497F2060036ECEAFD88FAEB0000C1885D -:10420000410959F8E0890018F2E60000F2CBFFF806 -:10421000FAE70000510BFAC6F944EC080039FAE657 -:104220000000F2E7FD882FF81497FB4806B44038E9 -:10423000E08F03BFF2E600004038FAE700002F8964 -:1042400014975109E08F03B5EDB30004C161FAF88A -:1042500006B4403E580EC0801036C674FACCF944FD -:10426000F8060036C808EECAFFFF1037C7F4FACBCD -:10427000F944F6060036C768EDB30006C4A1FAF8A3 -:1042800006B4403C580CC1D01036C064FACBF94497 -:10429000F6060036C1F8FAC8F9501AD8FAC8FAB8C2 -:1042A0001AD8FAC8FBB41AD8FAC8F940FAC9FFB448 -:1042B000049A0C9B0A9CF01F00B02FDD9818C2686E -:1042C000EECAFFFF1037C094FAC9F9441497F206FA -:1042D0000036ED08FD8AC1A8410959F8E0890013AC -:1042E000F2CBFFFC510B7209FAC6F944EC08003B13 -:1042F0002FF8F749FD88FB4806B41497F1D9B010A0 -:10430000C058921814972FC951095C785018C46886 -:10431000FAF806B4403C580CC1D01036C064FACB51 -:10432000F944F6060036C1F8FAC8F9501AD8FAC8A6 -:10433000FAB80C9B1AD8FAC8FBB4049A1AD80A9C8B -:10434000FAC8F940FAC9FFB4F01F008B2FDD780BD3 -:10435000C248EECAFFFF1037C094FAC9F944F2060A -:1043600000361497ECFBFD88C188410959F8E089B3 -:104370000011F2CBFFFC510BFAC6F944720BEC08AA -:104380000039F34BFD882FF81497FB4806B4C0584A -:10439000720B14972FC95109501B300E500E1C98E8 -:1043A000E08F030750A750800C970495089602925F -:1043B000409440410E99FAF806B4403C580CC1D0E4 -:1043C0001036C064FACBF944F6060036C1D8FAC8F4 -:1043D000F9501AD8FAC8FAB81AD8FAC8FBB41AD8D9 -:1043E000FAC9FFB4FAC8F940049A0C9B0A9CF01F62 -:1043F00000622FDD7809C2182FF71039C084FACA7D -:10440000F944F4060036ECF9FD88C178410959F801 -:10441000E0890010F2CAFFFC510AFAC6F944720999 -:10442000EC08003AF549FD882FF8FB4806B4C0585F -:10443000F2C8FFFC510872093308FB6806B83788D8 -:10444000300EFB6806B94CDC5019A1B3500E50DC9D -:1044500030283780E08F02AD50A750801090300890 -:10446000FB6806BB0C970495089602924094404165 -:104470000E99FAF806B4403B580BC1D01036C06410 -:10448000FACAF944F4060036C1D8FAC8F9501AD865 -:10449000FAC8FAB81AD8FAC8FBB40C9B1AD8049A0E -:1044A000FAC8F940FAC9FFB40A9CF01F00332FDDA7 -:1044B0007806C2082FF71039C084FAC9F944F20609 -:1044C0000036ECF6FD88C168410959F8E089001012 -:1044D000F2CAFFFC510A7206FACEF944FC08003910 -:1044E000F346FD882FF8FB4806B4C04872062FC972 -:1044F0005109402C580CC105189A300B0C9CF01F28 -:104500000020E08002E9F8060102402B1632E08923 -:1045100002E3E08F02DE300A0C9C502AF01F0019E3 -:104520001892E08F02DC50A750800C9704950896F3 -:104530000292409410904041A5A3C0A850A750807B -:104540000C97049508960292409410904041EDB368 -:104550000005C611FAF806B440395809C2C0103631 -:10456000C124FAC8F944F0060036C2E88003552C8D -:1045700080036F32800330E48003EDE4800328A4DD -:104580008002EDD0FAC8F9501AD8FAC8FAB81AD889 -:10459000FAC8FBB41AD8FAC8F940FAC9FFB4049AA9 -:1045A0000C9B0A9CF01F00C82FDDF8E80000FAE918 -:1045B0000000C2E8EECAFFFF1037C0B4FAC8F944E1 -:1045C0001497F0060036ECEAFD88FAEB0000C2080A -:1045D000410959F8E0890016F2E60000F2CBFFF835 -:1045E000FAE70000510BFAC6F944EC080039FAE684 -:1045F0000000F2E7FD882FF81497FB4806B4C08846 -:10460000F2E600002F89FAE70000510914973018EC -:10461000E08F01CFEDB30004C161FAF806B4403E6B -:10462000580EC0801036C674FACCF944F80600362D -:10463000C808EECAFFFF1037C7F4FACBF944F606F4 -:104640000036C768EDB30006C4A1FAF806B4403CD2 -:10465000580CC1D01036C064FACBF944F6060036C7 -:10466000C1F8FAC8F9501AD8FAC8FAB81AD8FAC86C -:10467000FBB41AD8FAC8F940FAC9FFB4049A0C9BE3 -:104680000A9CF01F00912FDD9818C268EECAFFFF48 -:104690001037C094FAC9F9441497F2060036ED08B1 -:1046A000FD8AC1A8410959F8E0890013F2CBFFFC4B -:1046B000510B7209FAC6F944EC08003B2FF8F74990 -:1046C000FD88FB4806B41497F1D9B010C058921871 -:1046D00014972FC951095C785018C468FAF806B4C9 -:1046E000403C580CC1D01036C064FACBF944F606F1 -:1046F0000036C1F8FAC8F9501AD8FAC8FAB80C9BB3 -:104700001AD8FAC8FBB4049A1AD80A9CFAC8F94015 -:10471000FAC9FFB4F01F006C2FDD780BC248EECA57 -:10472000FFFF1037C094FAC9F944F2060036149717 -:10473000ECFBFD88C188410959F8E0890011F2CBF2 -:10474000FFFC510BFAC6F944720BEC080039F34B2D -:10475000FD882FF81497FB4806B4C058720B1497C5 -:104760002FC95109501B300E3018500EC21950A7D6 -:1047700050800C970495089602924D4C40941090EE -:10478000404150DCEDB30005C551FAF806B4403B9A -:10479000580BC2201036C0A4FACAF944F4060036F9 -:1047A000ECE8FD88FAE90000CF58FAC8F9501AD8A9 -:1047B000FAC8FAB8049A1AD80C9BFAC8FBB40A9C37 -:1047C0001AD8FAC8F940FAC9FFB4F01F003F2FDD2C -:1047D000F8EA0000C0C8EECAFFFF1037C0B4FAC93B -:1047E000F9441497F2060036ECEAFD88FAEB000073 -:1047F000CD18410959F8E0890016F2E60000F2CB25 -:10480000FFF8FAE70000510BFAC6F944EC0800394A -:10481000FAE60000F2E7FD882FF81497FB4806B48B -:10482000CB98F2E600002F89FAE7000051091497AF -:10483000CB18EDB30004C171FAF806B4403E580E2F -:10484000C0801036C6C4FACCF944F8060036C85801 -:10485000EECAFFFF1037E0840084FACBF944F60675 -:104860000036C7A8EDB30006C4E1FAF806B4403C30 -:10487000580CC1D01036C064FACBF944F6060036A5 -:10488000C1F8FAC8F9501AD8FAC8FAB81AD8FAC84A -:10489000FBB41AD8FAC8F940FAC9FFB4049A0C9BC1 -:1048A0000A9CF01F00092FDD9818C2A8EECAFFFF6E -:1048B0001037C0D4FAC9F9441497F2060036ED084F -:1048C000FD8AC1E8800330E48003EDE4410959F832 -:1048D000E0890013F2CBFFFC510B7209FAC6F944D0 -:1048E000EC08003B2FF8F749FD88FB4806B4149705 -:1048F000F1D9B010C058921814972FC951095C789B -:104900005018C468FAF806B4403C580CC1D01036B0 -:10491000C064FACBF944F6060036C1F8FAC8F9507B -:104920001AD8FAC8FAB80C9B1AD8FAC8FBB4049A79 -:104930001AD80A9CFAC8F940FAC9FFB4F01F00C996 -:104940002FDD780BC248EECAFFFF1037C094FAC9BA -:10495000F944F20600361497ECFBFD88C188410942 -:1049600059F8E0890011F2CBFFFC510BFAC6F9446B -:10497000720BEC080039F34BFD882FF81497FB48B5 -:1049800006B4C058720B14972FC95109501B300E32 -:10499000500E4008401C18485F18E7E80008C07037 -:1049A0003308FB6006B9A1B3FB6806B830283009AC -:1049B000FB6906BB402B580BC025A7D3402A4009F2 -:1049C000580A5F1A4016FAC2F9780C495F19F5E9DE -:1049D0001009C5C03019F2081800C0603029F2086B -:1049E0001800C041C3C80496C3080496FAE8000042 -:1049F000F5D8C0032D0A0CFAF00B1603F20C1603BF -:104A0000F7E911DB1899169858085C29CF21FAE9C3 -:104A10000000EDB30000C4513309F20A1800C410BD -:104A20000CF9C3F8FAEA000030A83009F01F008E34 -:104A300030A82D0A3009AC8AFAEA0000F01F008B7A -:104A400016991498FAE900002016FAEA0000589A1C -:104A50005C2BFE9BFFE91BF82D08C2080496FAE8C0 -:104A60000000F5D8C00440DEFC0A070A0CFAF20B7D -:104A70001604F00A1604F5E911CA16991498580894 -:104A80005C29CF01FAE90000C0C85808C091EDB315 -:104A90000000C061FAC6F9793308AC88C0280496D2 -:104AA0000C12C1C850A7508040940C9710900495E8 -:104AB00040415808E0800464FB680660300C300810 -:104AC0003012FB6806BB502CFAC6F9A0C078300B38 -:104AD000502BC0484022300A502A4029E4090C4992 -:104AE000FB3806BB5039069E3009E21E0002F20870 -:104AF0001800FBF81003F7B801FFFBF81A03069B38 -:104B0000580EFBFC1003F7BC01FEFBFC1A03E21B72 -:104B1000008450FE509BC451408A4039121A504ABA -:104B2000580AE089001FC3D82F092FF84D0E310C09 -:104B3000FB490690890E891CFB48068C5878E08951 -:104B400000042F84C0B8FACAF978029B0A9CF01FAF -:104B50000049E0810425FAC4F9E0404B210B504B99 -:104B6000FAF90690FAF8068C4C1A404E590EFE9946 -:104B7000FFDD1C092FF8890AFB490690891EFB48B6 -:104B8000068C5878E08900042F84C0B8FACAF978F6 -:104B9000029B0A9CF01F0037E0810402FAC4F9E08E -:104BA0003009FB3806BBF2081800C1F0FAF806908D -:104BB000FAC9F9452FF88909FB4806903019FAF827 -:104BC000068C89192FF8FB48068C5878E089000478 -:104BD0002F84C0B8FACAF978029B0A9CF01F0025FE -:104BE000E08103DEFAC4F9E040FC580CC1F0FAF8A9 -:104BF0000690FAC9F9482FE88909FB480690302940 -:104C0000FAF8068C89192FF8FB48068C5878E08949 -:104C100000042F84C0B8FACAF978029B0A9CF01FDE -:104C20000015E08103BDFAC4F9E0409BE04B008031 -:104C3000C511408A4039121A504A580AE089002B9F -:104C4000C4982F092FF848CE310CFB490690890EE5 -:104C5000891CFB48068C5878E08900102F84C178A5 -:104C6000800330E4800373408002D9988003F250BF -:104C7000800334048003F260FACAF978029B0A9C2C -:104C8000F01F004CE081038CFAC4F9E0404B210B8B -:104C9000504BFAF90690FAF8068C4C7A404E590EB1 -:104CA000FE99FFD11C092FF8890AFB490690891E3D -:104CB000FB48068C5878E08900042F84C0B8FACAF3 -:104CC000F978029B0A9CF01F003BE0810369FAC45B -:104CD000F9E0402C041C502C580CE089001FC3D86C -:104CE0002F092FF84B4B310AFB490690890B891A83 -:104CF000FB48068C5878E08900042F84C0B8FACAB3 -:104D0000F978029B0A9CF01F002BE0810349FAC44A -:104D1000F9E0402921095029FAF90690FAF8068CA1 -:104D20004A5A402E590EFE99FFDD1C092FF8890AB8 -:104D3000FB490690891EFB48068C5878E0890004E0 -:104D40002F84C0B8FACAF978029B0A9CF01F001998 -:104D5000E0810326FAC4F9E0EDB30008C0B0FAF828 -:104D6000069089128906F0020002FB420690E08F4D -:104D700001DBE0400065E08A01DD30083009405B7E -:104D8000407AF01F000EC7E0FAF8069048C92FF8E5 -:104D90008909FB4806903019FAF8068C89192FF812 -:104DA000FB48068C5878E089000D2F84C14800002C -:104DB000800334048003F26080036F328003A6C056 -:104DC000FACAF978029B0A9CF01F0078E08102E899 -:104DD000FAC4F9E0FAF806AC406C1838C055EDB3E7 -:104DE0000000E081026DFAF806902FF840CBFB48F6 -:104DF00006903019FAF8068C890B2FF88919FB48B0 -:104E0000068C5878E08900042F84C0B8FACAF97873 -:104E1000029B0A9CF01F0065E08102C2FAC4F9E01F -:104E2000406620165806E089001DE08F02492F09D0 -:104E30002FF8FB49069089028910FB48068C5878A8 -:104E4000E08900042F84C0B8FACAF978029B0A9C52 -:104E5000F01F0056E08102A4FAC4F9E02106C03830 -:104E60004D323100FAF90690FAF8068C4D0A5906CF -:104E7000FE99FFDF0C09890AFB4906902FF8891675 -:104E8000C559FAFA06AC580AE0890096FAF8069075 -:104E90004C892FF88909FB4806903019FAF8068CDE -:104EA00089192FF8FB48068C5878E08900042F8474 -:104EB000C0B8FACAF978029B0A9CF01F003CE08156 -:104EC000026FFAC4F9E0FAF806AC5808C081406AEB -:104ED000580AC051EDB30000E08101F240C9FAF870 -:104EE00006902FF88909FB4806903019FAF8068CCD -:104EF00089192FF8FB48068C5878E08900042F8424 -:104F0000C0B8FACAF978029B0A9CF01F0028E08119 -:104F10000247FAC4F9E0FAF206AC5C325802E089C2 -:104F2000001DC3B82F092FF8310EFB4906908900E8 -:104F3000891EFB48068C5878E08900042F84C0B88D -:104F4000FACAF978029B0A9CF01F0018E081022837 -:104F5000FAC4F9E02102C0284950FAF90690FAF89B -:104F6000068C493A5902FE99FFDF04092FF8890A95 -:104F7000FB4906908912FB48068C5878E0890004AA -:104F80002F84C0B8FACAF978029B0A9CF01F000768 -:104F9000E0810206FAC4F9E0406CFAF8069089064E -:104FA000891C1808CBE80000800334048003F260F9 -:104FB0008003A6C0FAF90690FAF8068C406B163A00 -:104FC000C6D516092FF88906FB490690891BFB48B0 -:104FD000068C5878E08900042F84C0B8FACAF978A2 -:104FE000029B0A9CF01F006FE08101DAFAC4F9E02D -:104FF000FAF606AC406A14165806E089001CC3B8DD -:105000002F092FF8FB49069089028910FB48068C6E -:105010005878E08900042F84C0B8FACAF978029B56 -:105020000A9CF01F0060E08101BBFAC4F9E0210690 -:10503000C0384DD23100FAF90690FAF8068C4DAA24 -:105040005906FE99FFDF0C092FF8890AFB490690E3 -:105050008916FB48068C5878E08900042F84C0B874 -:10506000FACAF978029B0A9CF01F004EE081019871 -:10507000FAC4F9E0EDB30000E081012240C9FAF87A -:1050800006902FF88909FB4806903019FAF8068C2B -:1050900089192FF8FB48068CC04914092FF8FB49E1 -:1050A00006908906891AFB48068C5878E089000426 -:1050B0002F84C0B8FACAF978029B0A9CF01F003905 -:1050C000E081016EFAC4F9E040C88908FAF8069058 -:1050D0002FF83019FB4806908919FAF8068C2FF83A -:1050E000FB48068CFAF206AC5878E08900042F845D -:1050F000C0B8FACAF978029B0A9CF01F002AE08126 -:10510000014FFAC4F9E00406FAF806AC8906FAF988 -:1051100006904066406E1016F208010889161C08B9 -:10512000FB480690FAF8068C2FF8FB48068CCB98C3 -:10513000406C581CE0890006EDB30000E081008758 -:10514000FAF806902FF83019FB4806908906FAF80D -:10515000068C89192FF8FB48068C5878E0890004E2 -:105160002F84C0B8FACAF978029B0A9CF01F000D80 -:10517000E0810116FAC4F9E0FAF806902FF840CB66 -:10518000FB4806903019FAF8068C890B2FF889191C -:10519000FB48068C5878E08900092F84C10800007C -:1051A000800334048003F260FACAF978029B0A9CF7 -:1051B000F01F006FE08100F4FAC4F9E03008300914 -:1051C000405B407AF01F006B40682018580CC0D13B -:1051D0002FF689188906FAF606901006FAF8068C5A -:1051E000FB4606902FF8C2F810965808E089001C7C -:1051F000C4982F092FF8FB49069089028910FB48B3 -:10520000068C5878E08900042F84C0B8FACAF9786F -:10521000029B0A9CF01F0056E08100C2FAC4F9E02C -:105220002106C0384D423100FAF90690FAF8068C92 -:105230004D1A5906FE99FFDF0C09890AFB490690B1 -:105240002FF88916FB48068CC0E8FAF806902FF86C -:105250003019FB4806908906FAF8068C89192FF850 -:10526000FB48068C5878E08900042F84C0B8FACA3D -:10527000F978029B0A9CF01F003EE0810091FAC47D -:10528000F9E040EAFAF806901408FAC9F964FB4814 -:105290000690891AFAF8068C89092FF8FB48068CC3 -:1052A0005878E08900042F84C0A8FACAF978029BD4 -:1052B0000A9CF01F002FC731FAC4F9E0E213000482 -:1052C000C3D04086403912165806E089001AC368D8 -:1052D0002F092FF8FB49069089038912FB48068C99 -:1052E0005878E08900042F84C098009A029B0A9C99 -:1052F000F01F001FC541FAC4F9E02106C05849F368 -:105300003102FAC0F978FAF90690FAF8068C49BA2F -:105310005906FE99FFDF0C092FF8890A8916FB4907 -:105320000690FB48068C5878E08A0009FACAF9789A -:10533000029B0A9CF01F000EC32140BC4036408EE9 -:10534000EC0E0C48100C50BCFAF806905808C080BF -:10535000FACAF978029B0A9CF01F0005C201300BC3 -:10536000FAC4F9E0FB4B068CFE9FF0E9800334049D -:1053700080036F328003F2608003F250FAF80690E7 -:105380005808C0800A9CFACAF978029BF01F0009ED -:10539000C0613008FB48068CC02840418268EDB8E7 -:1053A0000006C0313FFA50BA40BCFE3DF944D83245 -:1053B00080033404D42116981897109C3008149B4D -:1053C0004866129A8D08F01F00065BFCC0516C08FD -:1053D0005808EFF81A03D82200008CC48002F1505C -:1053E000D421300818974876169C8D08F01F0006C7 -:1053F0005BFCC0516C085808EFF81A03D822000073 -:1054000000008CC48002F108D431202D1897784810 -:1054100076460C38C034300CC858ECC2FFFCF6C3DA -:10542000FFECF6020329F802032C2FF92016F809E5 -:105430000D08F6020022EEC4FFEC10955808C410C7 -:105440003009069A08981291500B700EB18E501EBA -:10545000150EFC001610FDDEC010EA0E0341FDD152 -:10546000C010B181401BEA000240E2000000E3D01E -:10547000C010021B501B700BE3DBC0100209F20EC0 -:10548000010EB01EFC091410401EFC090009B009F1 -:10549000E00116102FC8B149043AFE98FFD8400B1E -:1054A000580CC0F1ECC8FFFBEE080028C0282016FD -:1054B00020480838E088000570095809CF908F46C9 -:1054C0000E9CF01F001AC2D52FF508983009070B63 -:1054D000F60A1610700CF7DBC010F80E1610141E2A -:1054E000F5DCC010161A120AB01AB14AFC0A0009FB -:1054F000B0092FC8B1490433FE98FFEBECC8FFFB9D -:10550000EE0803295809C0D1EE080028C02820164B -:1055100020480838E088000570095809CF908F4668 -:105520000A9C2FEDD8320000800363EED43121AD08 -:10553000FAC4FF7418971695682C50C96816680944 -:1055400050E81494512CFAE5000851596E9558050D -:10555000C091310CF01F004799358F9C9915992502 -:1055600099056E9972085808C0F0721A911A301A8B -:105570007219F4090949109B91290E9CF01F003EF5 -:105580006E9830099109402810945808C064F1D8E9 -:10559000C01F50283018C02830088D08FC1C7FF030 -:1055A00040260C98E6187FF01838C1C1E068270F34 -:1055B000415B9708403A580AC061EDD6C014C0312B -:1055C0004AECC0284AEC41295809E08005DEF8C8B9 -:1055D000FFFD3009118AF20A1800C190F8C8FFF8DF -:1055E000C168FAEA00083008FAEB003C3009F01F05 -:1055F0000025C1103018415A950841294A285809F8 -:10560000C041109CE08F05C1109C2FF841258B08EC -:10561000E08F05BBFAC8FF9CFAC9FFA0FAEA003C7C -:105620000E9CEBD6C28BF01F001918935805C0D002 -:10563000FAEA003C3004F1DBC014EAC503FF109B1A -:105640005174EA1B3FF0C3284188419C100CF8C5F7 -:10565000FBCEE0450020E08A001BF8CCFBEE403B8F -:10566000EA081140F60C0A4CEC0809460C4CC148FB -:105670008002E2A4800364208003F3708003F37C43 -:1056800080036F328003A6C0800364D0EA0C11202F -:10569000403AF40C094CF01F006BFC18FE10301956 -:1056A000EAC50433F00B000B51793008FC193FF8C0 -:1056B000F01F0065E0684361EA18636FE06987A73F -:1056C000EA193FD2F01F0061E068C8B3EA188B60A6 -:1056D000E0698A28EA193FC6F01F005D0A9C149011 -:1056E0001691F01F005CE06879FBEA18509FE069B2 -:1056F0004413EA193FD3F01F005514981699009AE5 -:10570000029BF01F005314901691F01F00533008B5 -:1057100018963009009A029BF01F0050C0C00C9CE4 -:10572000F01F004C14981699009A029BF01F004C31 -:10573000F7B600015966E088000530185148C128C5 -:105740004C88FAEA003CF0060238F01F0044F9B435 -:105750000000FBF40A14F7B60101F9BC0100FBFCE0 -:105760001A14419020100A10C04650403000C04822 -:10577000300B5C30504BEC0211005806FBFA400431 -:10578000F5D6E40AFBFA4A04FBF64A11F9B2040022 -:10579000E1D6E510F9B90500FBF95A1140C858984F -:1057A000E08B00205858F9B40A01FBF5900CF7B5CE -:1057B0000904FBF59A0CF9B4090040CC583CC2D05E -:1057C000E0890005582CC101C18840CB584BC0600E -:1057D000585BC0A1301A50DAC228301950D9C0F82D -:1057E0003008301450C83FF5301C300B509550DC59 -:1057F0000A91312850EBC208300A50DA40E95809C2 -:10580000E089000730185098109150E8C15840E5E1 -:1058100050950A910A98C108300C50DC40EBEC0B13 -:10582000000B509B16982FF85808E089000510913E -:105830003018C028109130096E9A95193049C178F6 -:1058400080036E4A80036B7C800369A480036D181B -:1058500080036E5280036E2480036FC080036F321A -:105860008003F38C6A1AA1792FFA8B1A6E95F2CA0B -:10587000FFEC103AFE98FFF86A1B0E9CF01F0053D5 -:1058800058E15F888B0CF1E400046E987008508832 -:10589000E08001985806E08A0040F3D6C0044CC866 -:1058A000F0090234FAE50018EC041404EDB4000425 -:1058B000C0303025C0F84C78F0E80020FAEA003C0F -:1058C000E9D4C004F01F0044303514981699FAE961 -:1058D00000084C0C50A30C931896C0F8FAEA001874 -:1058E000EDB40000C081ECE800002FF5F01F003B94 -:1058F000FAEB0018A1542F865804CF11FAE80018CB -:10590000FAEA00080696F01F003440A3149816998E -:10591000FAE90008C2D8EC081100C0313025C2886D -:105920004ACCF0041404501CF1D8C0044A89FAEAA5 -:10593000003CF2080238F01F0029401C506330255B -:105940000C93FAEB00081896C0F8FAEA0008EDB4D8 -:105950000000C081ECE800002FF5F01F0020FAEBFA -:105960000008A1542F865804CF1106964063414A7F -:10597000580AC370FAE8000858015F94FAE9001861 -:105980003008FC193FF0FAEA0018F01F0015F9BCC6 -:105990000000F9BC0101E9EC000CC2304098580845 -:1059A000E08A010C3008FC194024ECC40001FAEA3A -:1059B00000182FF55064F01F0009409414981699B0 -:1059C000FAE90008C1080000800364588003F38CE2 -:1059D0008003F45480037028800369A480036FC09F -:1059E000506602940A9CF01F0069FAE80008F01F54 -:1059F00000683008FC19401CF01F006614981699C6 -:105A0000FAE90028FC18FCC040A5100550A5580470 -:105A1000C211FAEA00083008FC194014F01F005EB9 -:105A200040BCFAEB000814981699189A0A9BF01FCC -:105A3000005BE08102740A9840B9EE188000FAEA2F -:105A40000008109512980A99F01F0054E081025E38 -:105A5000CB484D39E8C8000140D55805C4F0300C9A -:105A6000F2080238513C300AFC1B3FE0F01F004DA9 -:105A7000FAE800284085F01F0048FAEB0028FAEA0F -:105A80000008F01F0049516CF01F0040149816994F -:105A9000FAEA0008F01F0040FAEB000841682D0800 -:105AA0000AC841392FF95139FAE80028F01F003BA4 -:105AB000E081035AFAE80008300AFC1B3FF0F01FAF -:105AC0000036FAE80028F01F0035FAEA002830080E -:105AD000FC194024E08100E8413C083CC6E4F01F8A -:105AE000002C3008FAEB0028FC194024FAEA0008E0 -:105AF000F01F0027FAEB0008CC3B40850805F208B0 -:105B0000023A5135FAE800284085F01F0021FAEBEF -:105B10000028FAEA0008F01F0024516CF01F001B57 -:105B200014981699FAEA0008F01F001BFAEB000817 -:105B300041682D080AC8413C1835C3713008FC196A -:105B40003FE0FAEA0028F01F00134085FAE8000859 -:105B50000805F01F0012E08100A7FAE80028300ACB -:105B6000FC1B3FE0F01F000C14981699FAEA00089D -:105B7000F01F000AC22033090A98117AF20A1800AD -:105B8000E08102F21095CF9B80036E52800369A4DE -:105B900080036D1880036B7C80036FC08003F38CDF -:105BA0008003702880036E243008FC194024F01F05 -:105BB0000056FAEB0008CAEBFAEA003CFAEB0008E0 -:105BC00058E65FAB418A3008F40911FFF7E903F9A1 -:105BD000F0091800E080008140EA58015FA9F3EA6B -:105BE00003F94CAAF4060234FAE50010F009180093 -:105BF000C1405801E081018A3008FC194014089A1C -:105C00000A9BF01F0041FAE80008F01F0041E08104 -:105C1000017D0292E08F018540853014FAE8001082 -:105C2000FAEA0008F01F003BF01F003B1892F01F3B -:105C3000003BFAE80010F01F003414981699FAEAB5 -:105C40000008F01F0037FAEB0008E4C8FFD00AC8CC -:105C5000FC19402430080234C331FAE80008F01F70 -:105C600000311691149014980299FAEA0010F01F6E -:105C7000002EC1A1FAE80010009A029BF01F002B31 -:105C8000E0800271E5D2C001C0F1E08F026C408A71 -:105C90001438C0301095C098330840892FF6B28868 -:105CA0004088C088406633990A98117AF20A180031 -:105CB000CEF0506611892FF9B089E08F0255F01FA0 -:105CC00000122FF4FAEB000830083009F01F00171B -:105CD000CA60E08F024840D85808C0510498009527 -:105CE00040D4C4A840C55815E08900224174580426 -:105CF000C040F4C9FBCDC0484199F209113604985F -:105D00000095C2F8800369A48003F38C80036F5868 -:105D10008003702880036E2480036E5280036B7CA6 -:105D200080036D1880036FC080036F32E2C80001EA -:105D30005801E0051740E2091740E1D1E515F9B92E -:105D400005001032E5D8E418F1D2E518E5D8E502EF -:105D5000FBFC5011F9D8E50CFBFC5A11F9B8050011 -:105D6000404B120B5008504B1200301B0E9CF01F82 -:105D7000010840081894404A58055F99580A5F9AEC -:105D8000F5E90009C080404CF8050D49121C1210BD -:105D9000504C12155802E08A002740DB580BC1D046 -:105DA0005808E08A0017109A5008089B0E9CF01FB4 -:105DB00000F9069A189B18940E9CF01F00F718998A -:105DC000069B50190E9CF01F00F5401940081293D5 -:105DD000E408010AC080C028049A069B0E9CF01FAC -:105DE00000ED1893301B0E9CF01F00E9411A189229 -:105DF000580AE08A0007189B0E9CF01F00E61892D4 -:105E000040C95819E089001440385808C101402998 -:105E1000F1D9C014C0C11298E6187FF0C080404C80 -:105E2000301B2FFC2FF0504C506BC038300A506A9A -:105E300041195809C031301CC09864482FC8E40883 -:105E4000032CF01F00D7F80C1120404BF80B000872 -:105E5000F1D8C005C0C0F00811205848E08A0006FB -:105E60002048100B504BC0785848C070404A2E480C -:105E7000100A504A100010055800E08A0008069BDE -:105E8000009A0E9CF01F00C7189340495809E08AF9 -:105E90000008049B129A0E9CF01F00C21892414801 -:105EA0005808C1B0049B069CF01F00BFC164069B4C -:105EB000300930AA0E9CF01F00BD2016189340DC5C -:105EC000580CC0314091C098089B4091300930AACD -:105ED0000E9CF01F00B6189458015FA940CB582BB8 -:105EE0005F98F3E80008C2505801C111049B029961 -:105EF000305A0E9CF01F00AD1892189B069CF01FA4 -:105F000000AAE089000FC0383002049440EA30094A -:105F10005CDA4085506A5049C0F9089240660494A2 -:105F20002FF65066331840850AC830085048C049DB -:105F300040DC580CE08000B55805E08A0008089B5A -:105F40000A9A0E9CF01F00971894406B580BC031B2 -:105F5000089CC138681B0E9CF01F0095684A189574 -:105F6000E8CBFFF42FEA2F4CA36AF01F00920A9BA4 -:105F7000301A0E9CF01F008B5044403A3019F5DA6D -:105F8000C001189450DA40855099502650E1049B86 -:105F9000069CF01F0089404BF8C0FFD0069CF01F04 -:105FA0000082089A506C049B0E9CF01F008418918C -:105FB00078385808C0303016C068189B069CF01F0F -:105FC000007A18960E9C029BF01F007440CCEDECFA -:105FD0001008C0D140DB580BC0A14026E04000397A -:105FE000C300406A580AE0890024C2F84069580991 -:105FF000C085129840CC1848C1D140DB580BC1A1D4 -:106000000C9940265809E08A0021069B301A0E9C04 -:10601000F01F0064049B1893F01F0063E0890006E2 -:10602000C141EDB00000C111E0400039C0A02FF027 -:10603000C0C85806E08A000C4026E0400039C04144 -:1060400033980AC8C6782FF00AC0C7580AC0409AC9 -:1060500040E9123AC430069B300930AA0E9CF01F6A -:106060000053404818930838C091109B300930AA5B -:106070000E9CF01F004E504CC0E8404B300930AA37 -:106080000E9CF01F004A089B504C300930AA0E9C11 -:10609000F01F00461894409C2FFC509CC79B301862 -:1060A0000690408508930C941096049B009CF01F6A -:1060B00000422D0C0ACC0236C0A4009B300930AA45 -:1060C0000E9C2FF6F01F00391890CF0B0896300B5E -:1060D0000694504B00931890C0284026069B301A17 -:1060E0000E9CF01F0030049B1893F01F002FE089D6 -:1060F0000012C1B1E1D0C001C0D1C17840891238CD -:10610000C0301095C0882FF650663318408CB88880 -:10611000C138339A0A981179F4091800CF002FF981 -:10612000B089C0981095C02833090A98117AF20AEC -:106130001800CF905066049B0E9CF01F0018580466 -:10614000C120404B083B5F19580B5F18F3E800086B -:10615000C0400E9CF01F0011089B0E9CF01F000F0A -:10616000C02850660E9C069BF01F000C3008AA88C1 -:106170004068415A2FF841299508408C5809FBF88E -:106180001012F1F51A002E6DD8320000800368005D -:10619000800368A0800366F88003642080036300A6 -:1061A00080036664800363EE80036818800364588C -:1061B0008002E736800354088003658C5EFC5EFC39 -:1061C000D42118961697580BC0311695C508F01FA4 -:1061D00000295806C0706C685808C0410C9CF01F1C -:1061E00000264A681037C0316C07C0A84A481037EB -:1061F000C0316C17C0584A381037EDF700028E696D -:106200003008F0091900C051F01F001F3005C2F816 -:106210000E9B0C9CF01F001D6EC818955808C0609E -:106220006E8B0C9C5D18F9B505FF8E68EDB8000704 -:10623000C0516E4B0C9CF01F00166EDB580BC0A0BB -:10624000EEC8FFBC103BC0400C9CF01F0011300892 -:106250008FD86F2B580BC0700C9CF01F000D3008AE -:10626000EF4800483008AE68F01F00070A9CD822AB -:1062700080031E7480031F388003EF2C8003EF4CD3 -:106280008003EF6C80031E7680031D2C8003217C2D -:10629000D4014848189B700CF01F0003D80200007E -:1062A00000000598800361C0D42116981897109CAF -:1062B00030084876149B8D08F01F00065BFCC05127 -:1062C0006C085808EFF81A03D822000000008CC4AC -:1062D0008002F198D42116981897109C3008149BCE -:1062E0004866129A8D08F01F00065BFCC0516C08CE -:1062F0005808EFF81A03D82200008CC48002F1205D -:106300001898E01C0000F0091510580CF20817004E -:10631000F9BC0010F9BC0100109AF0091508E61A42 -:10632000FF00F7BC00F8F2081700109AF0091504F6 -:10633000E61AF000F7BC00FCF2081700109AF0090A -:106340001502E61AC000F7BC00FEF2081700580854 -:106350005E5CEDB8001EF9BC0120F7BC00FF5EFCDE -:1063600018997808F9D8C003C150EDB80000C021D1 -:106370005EFD109BF00A1601E21B0002A388580B79 -:10638000F3FA1A00F9BC0101F3F80A00F9BC0002A3 -:106390005EFCF5D8C010F00B1610580AF60817006E -:1063A000F9BC0010F7D8C008F00A1608580BF7BC63 -:1063B00000F8F4081700F7D8C004F00A1604580BC8 -:1063C000F7BC00FCF4081700F7D8C002F00A160268 -:1063D000580BF7BC00FEF4081700EDB80000C060D1 -:1063E000A198C031320C5EFC2FFC93085EFCD401F6 -:1063F00018987649784C121CC1312FB9A369120B39 -:10640000F00900092EC8134E174A143EC060F9BCAB -:1064100003FFF9BC0201D8021039FE9BFFF6D80237 -:10642000D4211897169578965806C091310CF01F14 -:10643000000A99368F9C9916992699065805C0909E -:106440006A196E987038F009032A8B0AF009092539 -:10645000D82200008002E2A4D421189716967895DD -:106460005805C091310CF01F001999358F9C991572 -:10647000992599056E956A385808C0B1310A304B94 -:106480000E9CF01F00138B3C6E98703C580CC1B0F2 -:106490006E987038F0060028700C580CC0407809CF -:1064A0009109C0E80E9C30170E9BEE060947EECA14 -:1064B000FFFBA36AF01F0006C060991699273008F9 -:1064C00099389948D82200008002E2A48002DC5466 -:1064D000D431202D1693129610951492301BF01F74 -:1064E0000029F3D3C0145009F1D3C01FF0011614D2 -:1064F000FC1A0010F3DAE139FBF91A00189458027B -:10650000C1E0FACCFFF818D2F01F001F4018C0D02D -:106510004009F80A1120F20A094AF5E810088958DA -:10652000F20C0A495009C028895840085808F9B3A4 -:106530000102F9B3000189688943C0981A9CF01FD1 -:106540000012301340082E0C894389585801C0901E -:10655000E2C1043318018D01F80C11358B0CC0D841 -:10656000E6C8FFFCF8CC0432A5738D0CE808032CB8 -:10657000F01F000618138B03089C2FEDD832000083 -:10658000800364588003636080036300D4317448DF -:106590007645169714961015C1312FB8EECEFFEC44 -:1065A000A368F408000BEE080008114A1749123AD4 -:1065B000C030C0E2C0781C38FE9BFFF9C4A8580563 -:1065C000C0640E9830150C971096C02830056E1BCD -:1065D000F01F00246E496C4499352FB4F2C5FFFBBF -:1065E000EC040024EE0500252EC62EC7F8C8FFECEB -:1065F000300A0F0E0D0BFC021610F6031610FDDE0E -:10660000C010E4030103F7DBC010FC0B010BF60A1A -:10661000000AB01AB14AE60A000AB00A2FC8B14A05 -:106620000836CE83C0D80F0BF60E1610F7DBC0105D -:10663000160AB01AB14A1C0AB00A2FC8B14A0A3762 -:10664000CF33C0282019114A580ACFD09949D832DF -:10665000300BF01F00043018994830089958D83290 -:1066600080036458D43116977646F40214052FF649 -:10667000149318940406761B6E28C0382FFBA1785B -:106680001036FE99FFFD089CF01F001A300918957E -:10669000F8C8FFEC129AC03810AA2FF90439CFD5E8 -:1066A0006E4BE7D3C0052FBBEEC9FFECEE0B002B02 -:1066B0005803C130E60C1120300A7202E40309428B -:1066C000044A10AA130AF40C0A4A1639CF73910A25 -:1066D000580AC0702FF6C058130A10AA1639CFD323 -:1066E000089C20160E9B8B46F01F00030A9CD83294 -:1066F0008003645880036420D431202D7649744887 -:10670000169614951039EC081750EA061750F00544 -:1067100017506C2876437442761BE4030007103749 -:10672000F7BB09FFF01F0036EEC4FFFBF8C9FFEC12 -:10673000F8040024300A1298C02810AA0838CFE3C1 -:106740002FB32FB2EC030023EA020022ECCBFFECC4 -:106750005012EACAFFECC44894955805C20012983A -:106760001696300E50090D02E400161070017009E3 -:10677000B181E5D2C010E0050341AB32E1D9C010D0 -:106780000002E40E000EB01EB18E1C01B001E20E3C -:1067900016102FC80636CE834009910E94865806EF -:1067A000C1D072021298169E3005B0121D0190825F -:1067B000E1D1C010AD30E0020002E4050005B005F3 -:1067C000B185B1812FC8AD319092E20200020A0278 -:1067D000E4051610063ECEA391022FCA2FC9401819 -:1067E000103ACBB3C02820175807E08A00050948A3 -:1067F0005808CFA099472FEDD83200008003645885 -:10680000D4211697301BF01F00043019995799496D -:10681000D822000080036458D431300812951697AE -:1068200018967644F6C9FFEC720BF60C1610F7DBDF -:10683000C010F40C024CF40B0345F7D5C010B18521 -:106840001805EA0C1510F80B000B12AB2FF8B185E8 -:106850000838CEB55805C1D06E281034C1456E1B1E -:106860000C9C2FFBF01F000C6E4AEECBFFF418932C -:106870002FEA2F4CA36AF01F00090E9B0C9CF01FFF -:1068800000080697E8C8FFFF2FB48F48EE040925DB -:106890000E9CD832800364588002E736800364205F -:1068A000D431149618971694F1DAC002C0902018CB -:1068B0004A19F208032A3009F01F00201894A34651 -:1068C000C3706E955805C091310CF01F001D9935AD -:1068D0008F9C9915992599056E9366255805C0D109 -:1068E000E06B02710E9CF01F0017872C3008189582 -:1068F0009908C038069C1895EDB60000C0C1089BE9 -:106900000A9A0E9CF01F0010089B18930E9C069488 -:10691000F01F000EA156C0C06A035803CEC10A9AE8 -:106920000A9B0E9CF01F00088B0C9903CE5B089C01 -:10693000D83200008003F380800368188002E2A44C -:1069400080036800800366F880036420D4211698D1 -:106950001897109C3008149B4866129A8D08F01FF7 -:1069600000065BFCC0516C085808EFF81A03D822E7 -:1069700000008CC48002F1381498FC197FF0F5DB1C -:10698000C01FF00B1100F7E81008F5E813F8F20843 -:106990000108F00C1100F9E81008F00C141F2FFC8E -:1069A0005EFCD703F5EB101CE08000DCD421F7E996 -:1069B000200EEFDBC28B3015C430AB6BF7EA136BE4 -:1069C000AB6AF7D5D3C2EDD9C28BC5C0A1785CF94B -:1069D000F3D5D2ABE04707FFC770E04607FFC740DB -:1069E000EE06000CE02C03FEF6080644F40907440A -:1069F000F4080646F609064A0807F405004A5C0B47 -:106A0000EDBB0014C050A1775CFA5CFB201C580C55 -:106A1000E08A006FE04C07FFE084009CF7DCD28B3B -:106A2000EDEA11F6EFE61217EE178000F1B7042039 -:106A30000E0A5C0BEDBE001FEFBB001FD822E41B4B -:106A4000000FF40C1200F6061200F7BC03E1F80682 -:106A50001730F7B60201E0460020C0D4EC0C11203C -:106A6000F606094BF40C0A4C184BF406094A20B6FA -:106A70000C17CAABF406094BC640300A20B60C17F7 -:106A8000CA3BE419000FF00C1200F2051200F7BC2B -:106A900003EAF8051730F7B5020AE0450020C0D434 -:106AA000EA0C1120F2050949F00C0A4C1849F005CE -:106AB000094820250A16C8FBF0050949C4203008FA -:106AC00020250A16C88BE419000FE41B000F144B95 -:106AD0001049E04707FFC091580BC381E04607FF0C -:106AE000C3815809C360C3285809C330C2F85C3C4D -:106AF0002FFCF1BC04C0E04C0020C114F8081120A8 -:106B00000E46EE0C0A47F40809491247F40C0A4AEB -:106B1000F6080949124AF60C0A4BC83BF80811203E -:106B2000F9B90000C030F60809490E46EDEA101622 -:106B3000F40C0A4AF3EA1007F60C0A4A300BC71B9A -:106B40001C9BE61B8000300AD8223FFB3FFAD8226C -:106B5000F06B0000EDBE001FEFBB001F300AD82213 -:106B6000F7E9200BE61B8000F9D9C28BE04C07FF48 -:106B70005E1C3FFA3FFB5EFCEE198000F7E9200C3B -:106B8000E08600CAEBCD40E0169CE61C8000BFDB2F -:106B9000BFD9103AF20B1300C0921697129B0E99B0 -:106BA0001497109A0E98EE1C8000F6071614AB7B13 -:106BB000F7EA135BAB7ABFBBF2061614C440AB799D -:106BC000F3E81359AB78BFB9E04707FFC4F00E26CE -:106BD000C120EC051120E0460020C7C2F005094E97 -:106BE000F2050945F0060A48F2060A490A48580E15 -:106BF0005F1E1C48101AF609014BF6061200C0E091 -:106C0000C783EC0E1120F606094BF40E0A4E1C4BFE -:106C1000F406094A0C17E08A0039F4091515AB9AF5 -:106C2000F5EB115AAB9BF7D7D28B184BFC178000B2 -:106C3000EDBA0000F7B701FF0E395F29120A5C0BAD -:106C4000E3CD80E0AB79F3E81359AB78F3E8100EAD -:106C5000F9B60101EE0E1100F9B70001EFBB001FFC -:106C6000F7EA100EF9B70000CB0BBFDBF7EA100E06 -:106C7000C081E04607FFC050F9E7114BE3CD80E04B -:106C80003FFA3FFBE3CD80E05C372FF7F1B704C05C -:106C9000E0470020C114EE081120F40809495F16EE -:106CA000F4070A4A0C4AF6080949F5E9100AF407FC -:106CB0000A4B3007CB3BEE081140F608094914494E -:106CC0005F16F6070A4A0C4A300B3007CA7BE3CD41 -:106CD00080E0F1B604C0F00E1700C040F205094E86 -:106CE000104EF2060A483009580E5F1E1C48C83B79 -:106CF000F4061200F9B70300F9B60300F9BC03006B -:106D0000F7B602E0F406094B300A0C17FE9AFFBEF4 -:106D1000C85B0000EE198000F7E9200CFE96FF2EFC -:106D2000EBCD40E0169CE61C8000BFDBBFD9123BD8 -:106D3000C0721697129B0E991497109A0E98300EE7 -:106D4000EFDBC28BF7DBC014B5ABEDD9C28BC5F05E -:106D5000F3D9C014B5A9E04707FFC2500E26C0F012 -:106D6000EC051120E0460020C352F005094EF20563 -:106D70000945F0060A48F2060A490A48100AF609C7 -:106D8000004BEDBB0015C340F7D7D28B184BF9DA97 -:106D9000C001184EEE1E8000F1BE04201C0A5C0BE0 -:106DA000E3CD80E0B5CBF7EA100EC101E04607FF66 -:106DB000C030E3CD80E0B5C9F3E8100EC071300AF1 -:106DC000FC1B7FF0184BE3CD80E03FFA3FFBE3CDA7 -:106DD00080E0F1B604C0F00E1700C060F205094E65 -:106DE00058085F18104EF2060A483009CC8BFDEEA9 -:106DF000101EA19B5D0A5D0E2FF7E04707FFF9BA51 -:106E00000000F9BB0000F9BE0000CBFB30165807AC -:106E1000CA31B5CB100AF609004B184BE3CD80E020 -:106E2000580B5E6DF60C1501B59CE02C03FF5E3D22 -:106E3000F80C111F1699AB7BBFBBF7EA135BF60C7E -:106E40000A4BA1795E2B5C3B5EFBF8CB0000300C5B -:106E5000C038189B5C4B300A5E0BD401E069041EFD -:106E6000F6081200C170C0C3F00E1120F608094BDD -:106E7000F40E0A4E1C4BF408094A1019C0B8F40865 -:106E80001200F9B80300F7B802E0F408094B300A21 -:106E900010195809E08900305C392FF9E0490036B3 -:106EA000C043300B300AC2682F69F2081120E04954 -:106EB0000020C0B2F408094EF6080948F4090A4A4D -:106EC000F6090A4B104BC088F608094E144E169A64 -:106ED000300BF4090A4AEDBA0000C0921C7EC04192 -:106EE000EDBA0001C0422FFAF7BB02FF5CFC5D0B5C -:106EF0005D0AD802E06803FFEDBA000BF7B800FFA7 -:106F0000100A5C0BF7B903FEE04907FFC055300AD1 -:106F1000FC1BFFE0C0C8EDBB001FF7B90101AB9A35 -:106F2000F5EB115AA17BAB9BF7E9115BA17C5D0BE3 -:106F3000D802103AF20B1300C080A17BA179144B48 -:106F4000124B104B5E0F5EFDA17BFC1CFFE0580A4C -:106F5000F80B13005E8F5EFD1ADE1AD7A17B5F3C33 -:106F6000A1795F375CFCFC1EFFE0580AFC0B1300A4 -:106F7000E08B001D5808FC091300E08B0018580B2B -:106F8000F5BA0000C1501B071B0E583CC0A0581C8E -:106F9000C0335E0F5E1D103AF20B13005E2F5E3D94 -:106FA0001438F60913005E2F5E3D1B07D80A5817E8 -:106FB0005F0C5809F5B800001B071B0E5E0F5EFC46 -:106FC0001ADE1AD7A17B5F3CA1795F375CFCFC1EFF -:106FD000FFE0580AFC0B1300E08B001D5808FC0969 -:106FE0001300E08B0018580BF5BA0000C1501B07C6 -:106FF0001B0E583CC0A0581CC0335E0D5E1F103ADB -:10700000F20B13005E2D5E3F1438F60913005E2D5F -:107010005E3F1B07D80A58175F1C5809F5B80000D7 -:107020001B071B0E5E0D5EFCEBCD40FFF7E9200E4B -:10703000F6071614A97BF7EA137BA97ABDBBE41BFC -:107040003FFFABD7E08000CCE04707FFE08400B50E -:10705000F2061614A979F3E81379A978BDB9E419F1 -:107060003FFFABD6E08000E2E04607FFE08400B2DD -:107070000C17FE37FC01FC1C8000F8031601E9D94F -:10708000C3625CD4E7D4D382E6090644F80501253F -:10709000E6050644EA031502E6090644F80501255B -:1070A000E6050644EA031502E6090644F80501254B -:1070B000E6050644EA031502E6080640E40907402F -:1070C000E609064402045C05A365EBE413E5A3644A -:1070D0005C34F8050145E6040640E4050740E60592 -:1070E000064402045C05EA031502E7E413E3E80240 -:1070F0001502E6080640E4090740E60906440204D2 -:107100005C05A365EBE413E5A3645C34F805014575 -:10711000E6040640E4050740E605064402045C0573 -:10712000EA031502E7E413E3E8021502E60A064063 -:10713000E40B0740E60B064202025C03EDB3001CC1 -:10714000C090A1725CF32017A39AF5EB11DAA39B10 -:10715000C058A58AF5EB11CAA58B5807E08A008BA9 -:10716000E012FF00E8120080E6080640E40907404C -:10717000E4080644E60906480005F00100485C09F9 -:10718000F9D2C10158045C25F4081300F609130074 -:107190005F36F8061700E40A1608F5E3118AE60BD5 -:1071A0001608F7D7D28BEDBE001FEFBB001F0C0AED -:1071B0005C0BE3CD80FFE41B000F144BE08100A7C4 -:1071C000F2061614ABD6E04607FFE08100A4C9E83A -:1071D000E419000F1049E081009AC928A37BF7EA5F -:1071E00013DBA37AF5EB1004E08000A0F604120094 -:1071F000C170C0C3E8051120F604094BF4050A4527 -:107200000A4BF404094A0817C0B8F4041200F9B490 -:107210000300F7B402E0F404094B300A0817A38A0C -:10722000F5EB11EAA38BC11BA379F3E813D9A3787B -:10723000F3E81004C6F0F2041200C170C0C3E80500 -:107240001120F2040949F0050A450A49F0040948E9 -:107250000816C0B8F0041200F9B40300F7B402E055 -:10726000F004094930080816A388F1E911E8A38958 -:10727000CFCA5C372FF7F1B704C0E0470020C154F4 -:10728000EE061120E4070A42E606094C1842E6071A -:107290000A43F4060941F4070A4AF606094C184A5B -:1072A000F6070A4B3000C158EE061120F9B0000075 -:1072B000F9BC0000C050F4060940F606094CE60788 -:1072C0000A423003F4070A411841F6070A4A300B14 -:1072D000E012FF00E8120080E6080646E4090746CF -:1072E000E4080644E60906480C05F00700485C0976 -:1072F0003007F9D2C1010034E2051300C46B1C9BB6 -:10730000E61B8000300AE3CD80FF3FFB300AE3CD6F -:1073100080FFF5EB1004C0901C9BE61B8000EA1B6D -:107320007FF0300AE3CD80FFF1E91015CEF0E9D906 -:10733000C28BE04407FFCE41F1E910C5CE10CE6B01 -:10734000D4311A97202D109C1295149E16931696E0 -:107350005809C4411638E088005AF0081200C0D01D -:10736000F6080946F808094CF00B1120F408094EFC -:10737000F40B0A4BF7E61006F80A1610EBDCC01007 -:10738000EC0A0D02FC091610EA02024BF3E31109A4 -:10739000123BE08800091809123CE08B0005123B03 -:1073A000F3DCEB09F20B010BFDDEC010F60A0D0A4F -:1073B000FDEB110EEA0A024A1C3AE0880009180E99 -:1073C0001C3CE08B00051C3AFDDCEB0EFC0A010ABC -:1073D000300BF4080A4A2FEDD8321639FE9BFFFD18 -:1073E000F2091200C46114385F8B06355F3AF7EA80 -:1073F000100AF20A1800C060FC08010AE6050146FE -:10740000149E0C9B1C9A2FEDD8325808C05130198D -:10741000F2080D08109CF8081200E0810084EC0CC2 -:10742000010BF8031610EBDCC010F6030D0AFC0983 -:107430001610EA0A024AF3EB1109123AE088000931 -:107440001809123CE08B0005123AF3DCEB09141921 -:10745000FDDEC010F2030D02FDE3110EEA02024A46 -:107460001C3AFE98FFB5180E1C3CFE9BFFB1CACB20 -:10747000F20E1120EA090945F609094BE60E0A4306 -:10748000F0090941F4090942F00E0A48F40E0A4ACB -:107490000A48164AF0061610F9D8C010E6060D0480 -:1074A000F4031610089BE7E51103E80C02450635C6 -:1074B000E0880007201B10030638E0880072F5DA28 -:1074C000C0100A13E6060D04F5E51106E80C024C9F -:1074D000089A0C3CE0880007201A10060C38E08857 -:1074E000005AF5EB110B1816F601064A149C1636D5 -:1074F000C0735F0514325F3AEBEA000AC060F8011E -:107500000104F608014B089CE40C010AEC0B01464F -:10751000EC090A4BF4090A4AEC0E09460C4A2FED15 -:10752000D832F0011120F4010A4BF808094CEC089C -:107530000949EC010A41F7E91009F8031610EBDCE0 -:10754000C010E2030D00F20B1610EA00024EF7E144 -:10755000110B163EE0880006180B163CE088002749 -:10756000F60E0101F3D9C010E2030D00F3E1110999 -:10757000EA00024B123BE08800091809123CE08B3C -:107580000005123BF3DCEB09F20B010BF408094E8A -:10759000C4DB0C3CF7BA0B01EDD8EB06CA3B063551 -:1075A000F7BB0B01E7D8EB03C8BB163EF7DCEB0BD0 -:0275B000CD8B81 -:10760000C0080000C0080000C0080000C00800005A -:10761000C0080000C0080000C0080000C00800004A -:10762000C0080000C0080000C0080000C00800003A -:10763000C0080000C0080000C0080000C00800002A -:10764000C0080000C00800000000000000000000AA -:10765000C008000000000000000000000000000062 -:10766000C008000000000000000000000000000052 -:10767000C008000000000000000000000000000042 -:1076800000000000000000000000000000000000FA -:1076900000000000000000000000000000000000EA -:1076A00000000000000000000000000000000000DA -:1076B00000000000000000000000000000000000CA -:1076C00000000000000000000000000000000000BA -:1076D00000000000000000000000000000000000AA -:1076E000000000000000000000000000000000009A -:1076F000000000000000000000000000000000008A -:10770000C0080000300CF01F0012580CF80F1710C2 -:10771000D603301CF01F000E580CF80F1710D603BC -:10772000302CF01F000B580CF80F1710D603303C0C -:10773000F01F0007580CF80F1710D60300000104C3 -:107740004000011280000120C000012E8000A41C16 -:107750000000000000000000000000000000000029 -:107760000000000000000000000000000000000019 -:107770000000000000000000000000000000000009 -:1077800000000000000000000000000000000000F9 -:1077900000000000000000000000000000000000E9 -:1077A00000000000000000000000000000000000D9 -:1077B00000000000000000000000000000000000C9 -:1077C00000000000000000000000000000000000B9 -:1077D00000000000000000000000000000000000A9 -:1077E0000000000000000000000000000000000099 -:1077F0000000000000000000000000000000000089 -:1078000073656E645265706C790000006765745F23 -:10781000646174615F7463705F636D645F63620071 -:107820006765745F7265706C795F686F73745F62AF -:10783000795F6E616D655F63620000006765745F0C -:107840007265706C795F7363616E5F6E6574776F7C -:10785000726B735F636200006765745F7265706C62 -:10786000795F6964785F6E65745F63620000000031 -:107870007365745F706173737068726173655F6361 -:107880006D645F63620000007365745F6B65795FB0 -:10789000636D645F6362000063616C6C5F7265704E -:1078A0006C795F6362000000617661696C5F64619E -:1078B00074615F7463705F636D645F636200000096 -:1078C0007365744D6170536F636B4D6F6465000039 -:1078D0006765745374617274436D6453657100001D -:1078E0007365745F6E65745F636D645F63620000EF -:1078F0007365745F69705F636F6E6669675F636D00 -:10790000645F63620000000073656E644572726FAD -:107910007200000073746172745F736572766572D1 -:107920005F7463705F636D645F6362007370695F4F -:10793000736C61766552656365697665496E74003E -:107940006765745F636C69656E745F737461746599 -:107950005F7463705F636D645F63620073656E6420 -:107960005F646174615F7564705F636D645F6362BF -:1079700000000000636865636B4D7367466F726D4E -:107980006174000073746172745F7363616E5F6E23 -:1079900065745F636D645F6362000000666F756E9F -:1079A00064486F737442794E616D65007365745FEE -:1079B0006B65795F636D645F63620000696E697413 -:1079C0005370690073746172745F636C69656E747F -:1079D0005F746370000000007370695F706F6C6C9F -:1079E000000000006765745F726573756C745F6397 -:1079F0006D645F636200000073746F705F636C6935 -:107A0000656E745F7463705F636D645F63620000D2 -:107A100073746172745F7365727665725F7463709C -:107A2000000000007365745F706173737068726149 -:107A300073655F636D645F63620000007365745F0C -:107A4000726573756C745F636D6400007365745F59 -:107A5000646E735F636F6E6669675F636D645F63B7 -:107A6000620000006765745F73746174655F7463BE -:107A7000705F636D645F6362000000007265715F38 -:107A80007265706C795F686F73745F62795F6E6145 -:107A90006D655F636200000073746172745F636C94 -:107AA00069656E745F7463705F636D645F636200C9 -:107AB000572D5B25735D2057726F6E67207465725A -:107AC0006D696E6174696F6E20696E6465783A25C0 -:107AD00064206E506172616D3A2564206964783A61 -:107AE00025642031366269743A25640A000000007A -:107AF0003078257820000000572D5B25735D2049E4 -:107B00006E646578206F7574206F662072616E6791 -:107B1000653A2025640A00005B25735D20535349B4 -:107B2000443A25730A0000005B25735D20525353CD -:107B3000493A25640A0000005B25735D20454E43E9 -:107B4000543A25640A0000005B25735D205365618B -:107B5000726368696E6720666F7220486F73743A4B -:107B60002069703D3078257820666F756E643D25FC -:107B7000640A00005B25735D20666F756E64486F54 -:107B8000737442794E616D653A20466F756E64205C -:107B9000486F73743A206E616D653D25732069707E -:107BA0003D307825780A00005B25735D20696653B7 -:107BB00074617475733A256420726573756C743AD8 -:107BC00025640A004C69737420436F6D6D616E64A7 -:107BD000732066756C6C210A000000005245434515 -:107BE000495645005452414E534D4954000000003F -:107BF0005B25735D204D6170205B25642C20257012 -:107C00002C2025735D0A00005B25735D20535049CD -:107C100020696E697469616C697A6174696F6E203C -:107C20006661696C65642100572D5B25735D204595 -:107C300072726F7220636F6E6669677572696E67C4 -:107C4000205350490A000000572D5B25735D202505 -:107C5000645D20446973616C6C2E2025642F25645B -:107C600020636D643A25640A00000000572D5B25EF -:107C7000735D2025645D20446973616C6C2E202542 -:107C8000640A00005B25735D3A200000572D5B25D8 -:107C9000735D2025645D204E6F7420666F756E6481 -:107CA00020656E6420636D643A20307825780A0080 -:107CB0005B25735D2025732025640A00572D5B2505 -:107CC000735D20456E64206F6620636D6420706173 -:107CD00072616D73000000005B25735D2064617448 -:107CE00061417661696C3A25640A0000572D5B2575 -:107CF000735D2054544350206E6F7420666F756E10 -:107D00006420666F7220736F636B3A25640A00000B -:107D10005B25735D20736F636B3A25642073746118 -:107D200074653A25640A00005B25735D20737461F5 -:107D300074653A25640A00005B25735D2053746105 -:107D40007274204E6574776F726B205363616E207E -:107D500025640A00572D5B25735D206572723D25F1 -:107D6000640A00005B25735D204C6F6F6B696E6762 -:107D700020666F7220486F73743A206E616D653DA6 -:107D800025730A005B25735D20466F756E6420487D -:107D90006F73743A206E616D653D25732069703D87 -:107DA000307825780A0000005B25735D2053746FDE -:107DB0007020636C69656E7420736F636B3A256421 -:107DC0000A00000055445000544350005B25735D89 -:107DD00020416464723A307825782C20706F727478 -:107DE0003A25642C20736F636B3A25642C207072E3 -:107DF0006F743A25730A0000572D5B25735D205080 -:107E0000726576696F757320636C69656E74202581 -:107E100070206E6F742073746F7070656420210A17 -:107E2000000000005B25735D205374617274204371 -:107E30006C69656E74202573202570205B30782571 -:107E4000782C2025642C2025645D204F4B210A00CE -:107E50005B25735D20537461727420436C69656E99 -:107E600074202573202570205B307825782C202500 -:107E7000642C2025645D204641494C4544210A007C -:107E8000572D5B25735D205374696C6C20636F6E96 -:107E90006E65637465642E2E2E776169740A000026 -:107EA000572D5B25735D20494620646F776E2E2E1B -:107EB0002E776169740A00005B25735D205374613D -:107EC000727420536572766572202573205B256479 -:107ED0002C2025645D204F4B210A0000572D5B2587 -:107EE000735D2053746172742053657276657220DD -:107EF0002573205B25642C2025645D204641494C78 -:107F00004544210A000000005B25735D2025702098 -:107F10006E756D506172616D3D2564207061726D8A -:107F200073546F4368616E67653D25640A00000005 -:107F30005B25735D2025645D206E69663A2570209F -:107F40006C7769705F616464723D307825780A00EF -:107F50005B25735D20257320706172616D733D2513 -:107F6000640A00005B25735D20506173733A20251D -:107F7000732025640A000000572D5B25735D2025C2 -:107F800073203A204661696C656420746F206164D7 -:107F90006420706173737068726173650A00000019 -:107FA000436F6E6E65637420746F206E6574776FB7 -:107FB000726B2E2E2E0000006572723D25640A0041 -:107FC0004F4B0A00572D5B25735D205353494420C6 -:107FD0006C656E206F7574206F662072616E6765C8 -:107FE000000000005B25735D2025730A000000007F -:107FF000572D5B25735D2053656E642053504920D7 -:108000006572726F72210A003D3D3E003C3D3D00AD -:10801000572D5B25735D20556E6B6E6F776E2063F9 -:108020006D6420307825780A00000000572D5B250C -:10803000735D2025645D20436865636B20666F7205 -:108040006D6174206D7367206661696C6564210AD7 -:1080500000000000444F574E000000005550000043 -:1080600049462020207374617475733A2025730A81 -:1080700000000000434F4E4E207374617475733AD4 -:108080002025730A00000000536F636B6574206E37 -:108090002E3A256428256429205B307825785D20D8 -:1080A000257320257320616464723A257320706FF4 -:1080B00072743A25640A00005B2564207470637052 -:1080C0002D25705D2D5374617475733A25640A0013 -:1080D0005B746C63702D25705D2D537461747573C2 -:1080E0003A25640A000000005B757063702D2570EE -:1080F0005D20666C6167733A3078257820206C6F5C -:1081000063616C3A25735B307825785D2D25640AB0 -:108110000000000072656D6F74653A257328307831 -:108120002578292D25640A004E4F0000594553003B -:108130004461746120617661696C3A25730A0000BC -:108140002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D5F -:108150002D2D2D2D2D2D2D2D2D2D2D2D2D2D0A009F -:108160005B25735D205363616E206E6F7420636FB7 -:108170006D706C65746564210A0000005B25735D99 -:10818000204E6574776F726B73206E6F7420666F0C -:10819000756E64210A000000636F756C64206E6F59 -:1081A0007420616C6C6F6361746520616C6C206716 -:1081B0007569206E65742061727261790A00000031 -:1081C000636F756C64206E6F7420616C6C6F63619B -:1081D000746520616C6C20677569206E6574730A24 -:1081E000000000005B25735D202564202D20257391 -:1081F000205B25645D2D202564202D202564202D05 -:1082000020307825780A000D000B000C000A0000D1 -:108210007365745F726573756C745F636D64000081 -:108220008000636C800063988000637E80006398A8 -:108230008000638E80006398800063648000639890 -:10824000800063688000638A800063786174637073 -:108250005F706F6C6C5F636F6E6E00007564705F53 -:10826000737461727400000072656D6F76654E659F -:1082700077436C69656E74436F6E6E0061756470F0 -:108280005F726563765F6362000000006765745328 -:1082900074617465546370006172645F7463705FCD -:1082A00073746F7000000000617463705F636F6EC1 -:1082B0006E5F6572725F6362000000006765744EF6 -:1082C0006577436C69656E74436F6E6E4964000038 -:1082D000617463705F636F6E6E5F636C695F65721C -:1082E000725F636200000000617463705F616363CA -:1082F0006570745F636200007564705F73746172AF -:10830000740000005B25735D20747463703A2570FF -:108310002069643D25642C20747063623D25700AD9 -:1083200000000000572D5B25735D204E6F205661C5 -:108330006C696420636C69656E7420666F7220746A -:108340007463703A25700A005B25735D2025645DB7 -:1083500020747463703A257020747063623A2570DB -:108360002073746174653A2564206C7063623A25E9 -:10837000702073746174653A2564206C6566743A84 -:1083800025642073656E743A25640A00572D5B25B9 -:10839000735D20544350206E6F7420696E69746958 -:1083A000616C697A656420747463703A2570207416 -:1083B0007063623A2570206C7063623A25700A001F -:1083C000572D5B25735D204E6F2056616C696420CC -:1083D000496420666F7220747463703A257020704F -:1083E00063623A25700A00005B25735D2062756642 -:1083F0003A2570206C656E3A25640A00572D5B257E -:10840000735D2054544350205B25705D3A20636FA8 -:10841000756C64206E6F7420616C6C6F6361746541 -:1084200020706275660A0000572D5B25735D20542D -:10843000544350205B25705D3A207564705F73650E -:108440006E642829206661696C65640A000000007A -:108450005B25735D2054544350205B25702D25709F -:108460005D3A20636F6E6E65637420256420256419 -:108470000A0000005B25735D206C6566743D256411 -:10848000206C656E3A25640A000000005B25735D70 -:10849000207463705F7772697465206661696C65CA -:1084A000642025702073746174653A2564206C65BE -:1084B0006E3A2564206572723A25640A0000000055 -:1084C000572D5B25735D2074746370203D3D204EF5 -:1084D000554C4C210A0000005B25735D20747463C9 -:1084E000703A2570207063623A2570206275663A92 -:1084F0002570206C656E3A25640A00005B25735D6B -:1085000020272573270A00005B25735D20506163D7 -:108510006B65742073656E74207063623A257020F9 -:108520006C656E3A2564206475723A2564206C652A -:1085300066743A25640A00005B25735D2054544339 -:1085400050205B25705D3A20636C65616E536F63EC -:108550006B53746174655F63622025640A000000D8 -:108560005B25735D20436C6F73696E672074706365 -:10857000623A2073746174653A30782578206572A8 -:10858000723A25640A0000005B25735D20436C6F1E -:1085900073696E67206C7063623A207374617465EE -:1085A0003A30782578206572723A25640A00000016 -:1085B0005B25735D2046726565696E672070617921 -:1085C0006C6F61642025642D25700A005B25735D46 -:1085D00020436C6F73696E6720747063625B2570F3 -:1085E0005D3A2073746174653A307825782065723D -:1085F000723A25640A000000572D5B25735D204305 -:10860000616E6E6F7420636C6F73652069643A25C8 -:10861000642D2570207075742070656E64696E67B6 -:108620000A0000005B25735D202D2D2D2D2D2D2D95 -:108630002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0A8D -:1086400000000000572D5B25735D2074746370205B -:108650003D204E554C4C210A000000005B25735D07 -:1086600020666C75736820646174613A207470636D -:10867000623A2570206572723A25640A0000000093 -:10868000572D5B25735D2054544350205B25705D4E -:108690003A20636F6E6E656374696F6E20657272E7 -:1086A0006F723A202564206375727249643A2564BA -:1086B0000A00000041626F727420636F6E6E656322 -:1086C00074696F6E0A000000572D5B25735D20549E -:1086D000544350205B25705D3A20636F6E6E656376 -:1086E00074696F6E206572726F723A202564206122 -:1086F00072673A25700A0000572D5B25735D205480 -:10870000544350205B25705D3A2066726565206D8C -:10871000656D6F72790A00005B25735D20554450CA -:1087200020496E7365727420257020736F636B3AF5 -:10873000256420616464723A257320706F72743A04 -:1087400025640A00572D5B25735D20545443502047 -:108750005B2D5D3A20696E76616C6964206D6F6493 -:10876000650A0000572D5B25735D2054544350204B -:108770005B2D5D3A20696E76616C6964206E62756E -:10878000660A0000572D5B25735D2054544350202A -:108790005B2D5D3A20696E76616C69642062756656 -:1087A0006C656E0A00000000572D5B25735D205438 -:1087B000544350205B2D5D3A20636F756C64206ECE -:1087C0006F7420616C6C6F63617465206D656D6F93 -:1087D000727920666F7220747463700A0000000062 -:1087E000572D5B25735D2054544350205B25705DED -:1087F0003A20636F756C64206E6F7420616C6C6FCF -:1088000063617465207063620A0000005B25735D1C -:108810002025732C20757063623A25702025733AE9 -:1088200025640A00572D5B25735D20545443502066 -:108830005B25705D3A2075647020636F6E6E6563B2 -:1088400074206661696C65640A000000572D5B2521 -:10885000735D2054544350205B25705D3A2062695B -:108860006E64206661696C6564206572723D256482 -:1088700020506F727420616C726561647920757329 -:1088800065640A005B25735D2025732C206C6F6383 -:108890003A307825782D25642072656D3A30782538 -:1088A000782D25640A0000005B25735D20416C6C07 -:1088B0006F63207061796C6F61642025642D257071 -:1088C0000A000000572D5B25735D2054544350204F -:1088D0005B25705D3A20636F756C64206E6F742049 -:1088E000616C6C6F63617465207061796C6F616439 -:1088F0000A0000005B25735D205B747063625D2D70 -:108900002570207061796C6F61643A25700A0000EF -:10891000572D5B25735D2054544350205B25705DBB -:108920003A2074637020636F6E6E656374206661B5 -:10893000696C65640A0000005B25735D2042454652 -:108940004F52452042494E4420747463703A25705A -:10895000206C7063623A2570207063623A25700A59 -:1089600000000000572D5B25735D205454435020B8 -:108970005B25705D3A206C697374656E2066616971 -:108980006C65640A00000000572D5B25735D205361 -:108990007461727420736572766572204641494C29 -:1089A0004544210A000000005B25735D20545443B8 -:1089B00050205B25702D25705D3A206E6275663DF6 -:1089C00025642C206275666C656E3D25642C2070D4 -:1089D0006F72743D2564202825732F2573290A00A2 -:1089E0007574726C3A6E3A703A7600002573000026 -:1089F0005B25735D2041524420544350205B257019 -:108A00005D3A20616363657074206E6577205B2535 -:108A1000705D0A005B25735D206C6F63616C3A25A5 -:108A2000642072656D6F74653A2564207374617497 -:108A3000653A25640A0000007061796C6F616420FA -:108A40006E6F74206672656564210000572D5B258A -:108A5000735D2041524420544350205B25705D20BB -:108A60006172673D257020726574726965733D257A -:108A7000642061626F72740A000000005B25735D00 -:108A8000206B656570416C697665436E743A256448 -:108A9000206B6565705F69646C653A25642070655C -:108AA00072736973745F636E743A25640A00000020 -:108AB0005B25735D2041524420544350205B257058 -:108AC0002D25705D206172673D257020726574727E -:108AD0006965733D25642070656E642E636C6F73E9 -:108AE000653A2564206C656E3A25640A0000000032 -:108AF0005B25735D2041524420544350205B257018 -:108B00002D25705D2074727920746F20636C6F73F3 -:108B1000652070656E64696E673A256420657272BF -:108B20003A25642069643A25640A00005B25735D78 -:108B30002041524420544350205B25702D25705D08 -:108B4000206172673D257020726574726965733D9E -:108B500025642070656E642E636C6F73653A2564BE -:108B600020636F6E6E3A25640A000000572D5B2566 -:108B7000735D2041524420544350205B25702D25C5 -:108B8000705D206172673D25702072657472696541 -:108B9000733D25640A0000005B25735D204152444B -:108BA00020544350205B25702D25705D2074727910 -:108BB00020746F20636C6F73652070656E64696EDE -:108BC000673A25640A0000005B25735D206C656EC2 -:108BD0003A25640A000000005B25735D20736F6313 -:108BE0006B3A2564207063623A2570207062756666 -:108BF0003A2570206572723A256420627566537456 -:108C00006F72653A2570206C656E3A25640A000023 -:108C10005B25735D20617463705F726563765F636B -:108C20006220703D4E554C4C206F6E20736F636B0D -:108C30003A2564207063623A25700A00572D5B253F -:108C4000735D206572723D256420703D25700A00B9 -:108C50005B25735D205265636569766564202570C8 -:108C6000206C656E3A25640A000000006174637030 -:108C70005F737461727400007463705F73656E6417 -:108C80005F646174615F70636200000061746370AF -:108C90005F706F6C6C000000617463705F7265637D -:108CA000765F6362000000006172645F7463705FEE -:108CB000737461727400000067657446697273743E -:108CC000436C69656E7400006172645F7463705F09 -:108CD00064657374726F7900636C6F73655F636F43 -:108CE0006E6E000073656E6455647044617461005B -:108CF000696E736572744E6577436C69656E744313 -:108D00006F6E6E0061636B5F726563766564000011 -:108D10007463705F636F6E6E6563745F636200009F -:108D200073656E645463704461746100636C6F7347 -:108D3000655F636F6E6E5F7063620000636C656198 -:108D40006E536F636B53746174655F636200000000 -:108D50007463705F646174615F73656E74000000BA -:108D600061636B416E6446726565446174610000C5 -:108D7000676574417661696C5463704461746142E3 -:108D80007974650066726565744461746100000001 -:108D9000676574546370446174614279746500005E -:108DA00063616C634D657267654C656E0000000021 -:108DB000696E73657274427566000000697341766E -:108DC00061696C5463704461746142797465000038 -:108DD00066726565744461746149647800000000DE -:108DE0005B25735D202570205B25642C25645D0A5E -:108DF00000000000686561644275663D256420746A -:108E000061696C4275663D25640A000025645D2039 -:108E10007063623A2570204275663A202570204CB6 -:108E2000656E3A25640A00005B25735D20205B2592 -:108E3000645D3A206C656E3A2564206964783A2551 -:108E40006420746F743A25640A0000005B25735D2A -:108E500020417661696C61626C6564206461746153 -:108E60003A2025640A000000572D5B25735D2069B8 -:108E70006478427566206F7574206F662072616E2B -:108E800067653A2025640A005B25735D2025702004 -:108E90006964783A25640A00572D5B25735D20428A -:108EA0007566203D3D204E554C4C21005B25735D81 -:108EB0002041636B207063623A2570206C656E3AC6 -:108EC000256420736F636B3A256420646174613A92 -:108ED00025700A005B25735D206765743A25642060 -:108EE00025702025640A00005B25735D206368659A -:108EF000636B3A25642025642025700A0000000079 -:108F00005B25735D2046726565202570206F74684F -:108F1000657220627566202564207461696C3A254B -:108F20006420686561643A25640A0000572D5B255A -:108F3000735D204F76657277726974696E6720621F -:108F40007566666572202570206964783A2564210B -:108F50000A000000572D5B25735D20706275665F07 -:108F6000636F70795F7061727469616C20666169AA -:108F70006C65643A207372633A25702C20647374B4 -:108F80003A25702C206C656E3A25640A00000000BA -:108F9000572D5B25735D2041766F696420746F20C7 -:108FA0004F76657277726974652064617461205BC5 -:108FB00025642D25645D210A000000005B25735D9A -:108FC00020496E736572745B25645D3A2025703AA2 -:108FD00025642D2564205B25642C25645D0A000032 -:108FE000572D5B25735D20536F636B206F75742065 -:108FF0006F662072616E67653A20736F636B3D2503 -:1090000064000000696E736572745F70427566007B -:109010006765745F70427566000000000000E10043 -:1090200008040000000000000F01110110011301ED -:109030000E01110110010F0106000500636D645F50 -:109040007365745F69700000636D645F736574704D -:1090500061737300636D645F7374617274436C69F0 -:1090600000000000466F756E6420486F73743A20EC -:109070006E616D653D25732069703D307825780AF5 -:109080000000000075736167653A206474203C310C -:109090007C303E0A0000000075736167653A2073FA -:1090A000656E64556470205B736F636B5D0A097352 -:1090B0006F636B3A20736F636B6574204E756D62DE -:1090C00065720A00536F636B65743A2025640A0069 -:1090D0005061747465726E547970653A2025640A23 -:1090E0000000000050726F766100000031323334AE -:1090F000353637383930000046696E65546573740B -:10910000000000006F6666004465627567204F4688 -:10911000460A00007072696E740000004465627552 -:10912000672009656E61626C65643A203078257845 -:109130000A000000566572626F736520656E616299 -:109140006C65643A20307825780A000044756D70AB -:109150002009656E61626C65643A20307825780A72 -:1091600000000000504F6F6C6C2009656E61626CEE -:1091700065643A20307825780A00000044656275FD -:1091800067204F4E0A00000075736167653A2064DE -:1091900065627567203C73656374696F6E3E203C41 -:1091A0006C6576656C3E0A0973656374696F6E3A27 -:1091B00020696E69742C20636D2C207370692C20DB -:1091C000746370202C207574696C2C207761726E2A -:1091D0000A096C6576656C20203A203020286F667D -:1091E00066292C203120286F6E292C2032202876E9 -:1091F0006572626F7365290A096F723A206465624D -:109200007567207072696E742F6F6E2F6F66660AB5 -:1092100000000000696E697400000000737069004E -:1092200074637000636D00007574696C0000000069 -:109230007761726E00000000616C6C0044756D70A7 -:1092400020416C6C20427566666572730A000000EE -:1092500075736167653A2064756D7050627566203C -:109260005B736F636B5D0A09736F636B3A20736F97 -:10927000636B6574204E756D6265720A00000000B4 -:109280006E6F6E650000000044656C6574696E6702 -:1092900020574550206B6579730A0000757361672C -:1092A000653A207365746B6579203C6B65795F69FD -:1092B00064782028302D33293E203C6B6579206965 -:1092C0006E206865783E0A09206F723A20736574D3 -:1092D0006B6579206E6F6E650A000000205745505F -:1092E000206B6579206D75737420626520313020A4 -:1092F000285745502D343029206F722032362028CF -:109300005745502D31303429206469676974730AD8 -:1093100000000000776C5F61706920766572736988 -:109320006F6E2076322E372E300A00006661696C2F -:10933000656420746F20676574206D6163206164CB -:1093400064726573730A0000687720616464723A1E -:109350002025730A000000006C696E6B2073746135 -:109360007475733A20000000697020616464723A79 -:10937000202573202D2000006E65746D61736B3A9B -:10938000202573202D200000676174657761793A8C -:109390002025730A00000000697020696E746572F0 -:1093A0006661636520697320646F776E0A00000050 -:1093B00064686370203A2000656E61626C65640ABF -:1093C0000000000064697361626C65640A0000005B -:1093D000444E533A202573202D2000007573616799 -:1093E000653A207374617274436C69203C697061E2 -:1093F0006464723E203C706F72743E203C736F63F5 -:109400006B3E203C7463702830292F7564702831BE -:10941000293E0A00537461727420636C69656E742E -:10942000206F6E206164647220307825782C207063 -:109430006F727420256420736F636B202564206D28 -:109440006F64652025640A00572D5B25735D2053EA -:109450007461727420636C69656E74206F6E207025 -:109460006F727420256420736F636B2025642070F5 -:10947000726F74202564206D6F646520256420461A -:1094800041494C45440A000075736167653A207391 -:1094900074617274537276203C706F72743E203C1B -:1094A000736F636B3E203C7463702830292F7564A2 -:1094B000702831293E0A00005374617274202573AC -:1094C00020736572766572206F6E20706F727420E3 -:1094D000256420736F636B2025640A00572D5B257C -:1094E000735D2053746172742025732073657276E6 -:1094F0006572206F6E20706F727420256420736F08 -:10950000636B202564204641494C45440A00000015 -:1095100075736167653A20736574646E73205B319F -:109520002D325D206161612E6262622E6363632E63 -:109530006464640A0000000053657420444E5320A4 -:1095400073657276657220256420746F2025730A16 -:10955000000000003D3D3E20444E53313A2025732B -:109560000A0000003D3D3E20444E53323A20257310 -:109570000A00000075736167653A20676574486F7B -:109580007374203C686F73746E616D653E0A0000F1 -:1095900075736167653A207770617373203C7373EC -:1095A00069643E203C706173737068726173653EDC -:1095B0000A0000002573203A204661696C6564202A -:1095C000746F20616464207061737370687261737A -:1095D000650A000075736167653A20647061737392 -:1095E000203C737369643E0A000000002573203A32 -:1095F000204661696C656420746F2064656C6574D5 -:109600006520706173737068726173650A00000091 -:1096100075736167653A206970636F6E666967206C -:109620003C69703E203C6E65746D61736B3E203CFE -:10963000676174657761792D69703E0A00000000EA -:1096400020206F72203A206970636F6E6669672010 -:109650006E6F6E652028746F20656E61626C652088 -:1096600044484350290A00005B25735D206E6966FB -:109670003A2570206C7769705F616464723D307860 -:1096800025780A0075736167653A20636F6E6E65B1 -:109690006374203C737369643E0A0000636D645F09 -:1096A000737461727453727600000000636D645FBE -:1096B00064656C70617373004D494D4C4644000005 -:1096C0000A24200024200000617661696C61626CCC -:1096D0006520636F6D6D616E64733A0A000000006F -:1096E000202025730A000000636F756C64206E6F84 -:1096F0007420616C6C6F63617465206669726D774C -:10970000617265206275666665720A00547565202F -:109710004D61722032362032323A30393A353420B7 -:109720003230313300000000776C5F696E69745F1E -:10973000636F6D706C6574655F6362006661696C10 -:10974000656420746F20696E697420776C20636F84 -:109750006E6E206D67720000572D5B25735D205380 -:109760007069206E6F7420696E697469616C697AC2 -:1097700065640A006C696E6B20646F776E2C2072D2 -:10978000656C6561736520646863700A00000000A1 -:109790006C696E6B20646F776E0A00006C696E6B8B -:1097A0002075702C20636F6E6E6563746564207421 -:1097B0006F20222573220A007265717565737469C2 -:1097C0006E672064686370202E2E2E20000000003B -:1097D0004641494C45440A00626F756E6420746FBF -:1097E0002025730A00000000572D5B25735D20497A -:1097F0006E74657266616365206E6F74207570218A -:109800000A0000007363616E00000000636F6E6EFB -:10981000656374007365746B6579000073746174BB -:1098200075730000646562756700000064756D7093 -:10983000427566006970636F6E66696700000000BC -:10984000747463700000000077706173730000002F -:109850006470617373000000676574486F7374000F -:10986000736574444E53000073746172745372765E -:10987000000000007374617274436C6900000000A2 -:1098800073656E645564700041726475696E6F2013 -:109890005769666920537461727475702E2E2E207C -:1098A0005B25735D0A0000006F7574206F66206D84 -:1098B000656D6F72790000006661696C6564207483 -:1098C0006F207072657061726520666F72206669C4 -:1098D000726D7761726520646F776E6C6F61640A78 -:1098E00000000000436F756C64206E6F7420646527 -:1098F0007465637420776C206465766963652C20D9 -:1099000061626F7274696E670A000000496E766169 -:109910006C6964206669726D776172652064617438 -:10992000612C2061626F7274696E670A000000002A -:109930004661696C656420746F2073746172742071 -:10994000776C20696E697469616C697A6174696F9A -:109950006E0A0000312E312E3000000069705F73F6 -:1099600074617475735F63620000000002000000A0 -:1099700000B71B000800000100010000286E756C94 -:109980006C290000253032782D253032782D253095 -:1099900032782D253032782D253032782D25303211 -:1099A00078000000256C752E256C752E256C752EA3 -:1099B000256C75007373696420746F6F206C6F6E13 -:1099C0006720286D6178202564290A00257320000E -:1099D00022257322000000002052535349202564A1 -:1099E0002064426D200000002041642D486F6320F8 -:1099F00000000000202857455020656E6372797082 -:109A000074696F6E290000002028544B495020656E -:109A10006E6372797074696F6E2900002028434369 -:109A20004D5020656E6372797074696F6E29000005 -:109A3000202020002530325820000000256300003F -:109A40006E6F206E65747320666F756E640A000019 -:109A5000496E76616C6964206C656E6774680A0093 -:109A600025642E25642E25642E256400544B495010 -:109A70000000000043434D500000000057455000D7 -:109A8000776C5F636D5F696E6974000073656C6508 -:109A900063745F6E65740000776C5F636F6E6E5FFA -:109AA0006C6F73745F636200776C5F7363616E5F8A -:109AB000636F6D706C6574655F636200776C5F6582 -:109AC00076656E745F636200776C5F6D6564696173 -:109AD0005F636F6E6E65637465645F636200000050 -:109AE0005B25735D20434D3A206F7574206F6620AF -:109AF0006D656D6F72790A005B25735D20434D3A89 -:109B000020636F756C64206E6F7420726567697373 -:109B1000746572206576656E742063620A000000C9 -:109B20005B25735D20434D3A20696E697469616CF1 -:109B3000697A65640A0000005B25735D20434D3A35 -:109B400020636F6E6E656374656420746F20257387 -:109B50000A0000005B25735D20434D3A20636F6E61 -:109B60006E656374206661696C65642C2073636143 -:109B70006E6E696E670A00005B25735D20434D3A87 -:109B800020636F756C64206E6F74207374617274DF -:109B9000207363616E20616674657220636F6E6E00 -:109BA000656374206661696C210A00005B25735D42 -:109BB00020434D3A20646973636F6E6E656374650C -:109BC000640A00005B25735D20434D3A20636F6E8D -:109BD0006E656374696F6E206C6F73742C20736391 -:109BE000616E6E696E670A005B25735D20434D3AB6 -:109BF00020636F756C64206E6F742073746172746F -:109C0000207363616E20616674657220636F6E6E8F -:109C1000656374206C6F7374210A00005B25735DAB -:109C200020434D3A207363616E20636F6D706C65E5 -:109C30007465640A00000000FFFFFFFFFFFF0000E3 -:109C40005B25735D20434D3A20526F616D696E67ED -:109C50002066726F6D207273736920256420746FA3 -:109C60002025640A000000005B25735D20434D3A07 -:109C7000204E6F2063616E64696461746520666F55 -:109C8000756E6420666F7220737369642022257379 -:109C9000220A00005B25735D20434D3A206661690E -:109CA0006C656420746F20636F6E6E6563740A0068 -:109CB0005B25735D20434D3A206661696C656420C5 -:109CC000746F207363616E0A000000005B25735D92 -:109CD00020434D3A20756E68616E646C6564206542 -:109CE00076656E740A000000776C5F636F6E6E5F5E -:109CF0006661696C7572655F636200000000000157 -:109D0000000018500000000B00001854000000096B -:109D1000000018800000000F000018A400000001DF -:109D2000000018E000000001000018E4000000013D -:109D300000001810000000010000181400000001CD -:109D400000001818000000010000181C00000001AD -:109D5000000018200000000100001824000000018D -:109D600000001828000000010000182C000000036B -:109D700000001830000000010000183C0000000145 -:109D8000000018400000000100001844000000011D -:109D900000001848000000010000184C4173736572 -:109DA0007274696F6E2022257322206661696C656A -:109DB00064206174206C696E6520256420696E20C2 -:109DC00025730A002E2E2F7372632F534F4654575C -:109DD0004152455F4652414D45574F524B2F5345D7 -:109DE0005256494345532F4C5749502F6C77697051 -:109DF0002D312E332E322F7372632F636F72652FC6 -:109E0000646863702E630000646863705F6F7074D1 -:109E1000696F6E3A20646863702D3E6F7074696F6D -:109E20006E735F6F75745F6C656E202B2032202B14 -:109E3000206F7074696F6E5F6C656E203C3D2044CE -:109E40004843505F4F5054494F4E535F4C454E006E -:109E5000646863705F6F7074696F6E5F6279746558 -:109E60003A20646863702D3E6F7074696F6E735F23 -:109E70006F75745F6C656E203C20444843505F4FA3 -:109E80005054494F4E535F4C454E00006468637018 -:109E90005F6F7074696F6E5F747261696C65723A3E -:109EA000206468637020213D204E554C4C0000001A -:109EB000646863705F6F7074696F6E5F74726169FC -:109EC0006C65723A20646863702D3E6D73675F6FD6 -:109ED000757420213D204E554C4C0A006468637017 -:109EE0005F6F7074696F6E5F747261696C65723AEE -:109EF00020646863702D3E6F7074696F6E735F6F5E -:109F000075745F6C656E203C20444843505F4F5031 -:109F100054494F4E535F4C454E0A000064686370CD -:109F20005F6F7074696F6E5F73686F72743A2064EC -:109F30006863702D3E6F7074696F6E735F6F7574B8 -:109F40005F6C656E202B2032203C3D2044484350FE -:109F50005F4F5054494F4E535F4C454E0000000038 -:109F6000646863705F6F7074696F6E5F6C6F6E674B -:109F70003A20646863702D3E6F7074696F6E735F12 -:109F80006F75745F6C656E202B2034203C3D20443F -:109F90004843505F4F5054494F4E535F4C454E001D -:109FA0007265706C79207761736E277420667265B4 -:109FB00065640000646863705F6372656174655F07 -:109FC000726571756573743A206E657469662021D7 -:109FD0003D204E554C4C0000646863705F637265B1 -:109FE0006174655F726571756573743A2064686346 -:109FF0007020213D204E554C4C0000006468637079 -:10A000005F6372656174655F726571756573743ADB -:10A0100020646863702D3E705F6F7574203D3D2035 -:10A020004E554C4C00000000646863705F637265BD -:10A030006174655F726571756573743A20646863F5 -:10A04000702D3E6D73675F6F7574203D3D204E55DA -:10A050004C4C0000646863705F6372656174655F97 -:10A06000726571756573743A20636865636B2074FB -:10A07000686174206669727374207062756620630B -:10A08000616E20686F6C64207374727563742064F1 -:10A090006863705F6D736700646863705F64656CAC -:10A0A0006574655F726571756573743A206E657469 -:10A0B000696620213D204E554C4C00006468637059 -:10A0C0005F64656C6574655F726571756573743A1C -:10A0D000206468637020213D204E554C4C000000E8 -:10A0E000646863705F64656C6574655F72657175E3 -:10A0F0006573743A20646863702D3E705F6F757489 -:10A1000020213D204E554C4C0000000064686370D7 -:10A110005F64656C6574655F726571756573743ACB -:10A1200020646863702D3E6D73675F6F75742021C6 -:10A130003D204E554C4C00006E6574696620213DF3 -:10A14000204E554C4C0000007062756620705F6FA9 -:10A150007574207761736E2774206672656564007C -:10A16000646863705F62696E643A206E65746966E4 -:10A1700020213D204E554C4C000000006468637067 -:10A180005F62696E643A206468637020213D204EEE -:10A19000554C4C00726574203D3D2073697A656FA3 -:10A1A000662873747275637420646863705F6D737E -:10A1B0006729202D20444843505F4F5054494F4E4B -:10A1C000535F4C454E000000726574203D3D206495 -:10A1D0006863702D3E6F7074696F6E735F696E5F38 -:10A1E0006C656E002E2E2F7372632F534F4654579B -:10A1F0004152455F4652414D45574F524B2F5345B3 -:10A200005256494345532F4C5749502F6C7769702C -:10A210002D312E332E322F7372632F636F72652FA1 -:10A22000646E732E63000000646E73207365727633 -:10A230006572206F7574206F66206172726179009B -:10A24000646E732073657276657220686173206E28 -:10A250006F20495020616464726573732073657464 -:10A260000000000070627566206D75737420626571 -:10A2700020696E206F6E652070696563650000005F -:10A28000617272617920696E646578206F757420DF -:10A290006F6620626F756E6473000000756E6B6E82 -:10A2A0006F776E20646E735F7461626C6520656E9B -:10A2B0007472792073746174653A00006C6F636125 -:10A2C0006C686F73740000003230382E36372E32CF -:10A2D00032322E3232320000000400040004000248 -:10A2E000002000050002001E002000002E2E2F730B -:10A2F00072632F534F4654574152455F4652414D6A -:10A3000045574F524B2F53455256494345532F4CB7 -:10A310005749502F6C7769702D312E332E322F73A1 -:10A3200072632F636F72652F6D656D702E63000011 -:10A330006D656D705F667265653A206D656D207044 -:10A34000726F7065726C7920616C69676E6564000C -:10A350006D656D705F6D616C6C6F633A20747970C0 -:10A3600065203C204D454D505F4D41580000000098 -:10A370006D656D705F6D616C6C6F633A206D656DBE -:10A38000702070726F7065726C7920616C69676E95 -:10A3900065640000001C002000B0002400140020B0 -:10A3A00000080010025400002E2E2F7372632F53EA -:10A3B0004F4654574152455F4652414D45574F52C3 -:10A3C0004B2F53455256494345532F4C5749502F15 -:10A3D0006C7769702D312E332E322F7372632F6399 -:10A3E0006F72652F6E657469662E6300626F6775A4 -:10A3F0007320706275663A206C656E20213D207472 -:10A400006F745F6C656E20627574206E6578742061 -:10A410003D3D204E554C4C210000000073686F7587 -:10A420006C64206E6F74206265206E756C6C207396 -:10A43000696E636520666972737420213D206C61CA -:10A4400073742100696620666972737420213D204F -:10A450004E554C4C2C206C617374206D75737420B8 -:10A46000616C736F20626520213D204E554C4C007D -:10A470002E2E2F7372632F534F4654574152455F10 -:10A480004652414D45574F524B2F53455256494323 -:10A4900045532F4C5749502F6C7769702D312E330F -:10A4A0002E322F7372632F636F72652F7062756621 -:10A4B0002E630000286820213D204E554C4C292059 -:10A4C000262620287420213D204E554C4C2920283A -:10A4D00070726F6772616D6D65722076696F6C6105 -:10A4E000746573204150492900000000702D3E74AE -:10A4F0006F745F6C656E203D3D20702D3E6C656E07 -:10A5000020286F66206C6173742070627566206904 -:10A510006E20636861696E2900000000696E6372D5 -:10A52000656D656E745F6D61676E697475646520D5 -:10A530003C3D20702D3E6C656E0000006261642021 -:10A5400070627566207479706500000070627566CF -:10A550005F74616B653A20696E76616C6964206234 -:10A5600075660000706275665F74616B653A20699C -:10A570006E76616C6964206461746170747200004D -:10A58000706275665F74616B653A20696E76616CA6 -:10A590006964207062756600646964206E6F74205F -:10A5A000636F707920616C6C2064617461000000DD -:10A5B000706275665F636F70795F706172746961F4 -:10A5C0006C3A20696E76616C696420627566000081 -:10A5D000706275665F636F70795F706172746961D4 -:10A5E0006C3A20696E76616C696420646174617094 -:10A5F00074720000706275665F636F70793A2074E0 -:10A600006172676574206E6F742062696720656E81 -:10A610006F75676820746F20686F6C6420736F7546 -:10A6200072636500705F746F20213D204E554C4C65 -:10A63000000000006F66667365745F746F203C3DB8 -:10A6400020705F746F2D3E6C656E00006F666673E0 -:10A6500065745F66726F6D203C3D20705F66726F3F -:10A660006D2D3E6C656E0000706275665F636F7085 -:10A6700079282920646F6573206E6F7420616C6C7B -:10A680006F77207061636B65742071756575657394 -:10A69000210A0000706275665F667265653A207314 -:10A6A000616E6520747970650000000070627566E7 -:10A6B0005F667265653A20702D3E726566203E20A9 -:10A6C00030000000702D3E746F745F6C656E203D2D -:10A6D0003D20702D3E6C656E202B20712D3E746FD9 -:10A6E000745F6C656E000000702D3E746F745F6C5B -:10A6F000656E203D3D20702D3E6C656E00000000B3 -:10A70000706275665F7265616C6C6F633A20702071 -:10A71000213D204E554C4C00706275665F7265613C -:10A720006C6C6F633A2073616E6520702D3E747996 -:10A730007065000067726F77203C206D61785F75EF -:10A7400031365F7400000000706275665F7265618B -:10A750006C6C6F633A207120213D204E554C4C00AB -:10A76000706275665F616C6C6F633A206261642031 -:10A7700070627566206C617965720000636865635C -:10A780006B20702D3E7061796C6F6164202B20709E -:10A790002D3E6C656E20646F6573206E6F74206F44 -:10A7A000766572666C6F77207062756600000000D7 -:10A7B000504255465F504F4F4C5F42554653495AA1 -:10A7C00045206D75737420626520626967676572E4 -:10A7D000207468616E204D454D5F414C49474E4D98 -:10A7E000454E540072656D5F6C656E203C206D6156 -:10A7F000785F7531365F7400706275665F616C6C8E -:10A800006F633A207062756620712D3E7061796CBD -:10A810006F61642070726F7065726C7920616C6911 -:10A82000676E656400000000706275665F616C6C45 -:10A830006F633A206572726F6E656F7573207479FD -:10A8400070650000706275665F636F707920666185 -:10A85000696C656400000000010203040506070737 -:10A8600007070707070000002E2E2F7372632F5370 -:10A870004F4654574152455F4652414D45574F52FE -:10A880004B2F53455256494345532F4C5749502F50 -:10A890006C7769702D312E332E322F7372632F63D4 -:10A8A0006F72652F7463702E630000007463705FB5 -:10A8B000706362735F73616E653A20616374697679 -:10A8C00065207063622D3E737461746520213D20A4 -:10A8D000434C4F53454400007463705F7063627370 -:10A8E0005F73616E653A2061637469766520706399 -:10A8F000622D3E737461746520213D204C49535490 -:10A90000454E00007463705F706362735F73616EC5 -:10A91000653A20616374697665207063622D3E73C9 -:10A920007461746520213D2054494D452D5741499E -:10A93000540000007463705F706362735F73616ED4 -:10A94000653A207477207063622D3E73746174657C -:10A95000203D3D2054494D452D57414954000000AC -:10A960007463705F62696E643A2063616E206F6E1B -:10A970006C792062696E6420696E207374617465FD -:10A9800020434C4F534544007463705F7265637697 -:10A9900065643A206C656E20776F756C6420777201 -:10A9A0006170207263765F776E640A00756E7365FE -:10A9B0006E74207365676D656E7473206C65616B72 -:10A9C000696E6700756E61636B6564207365676DA2 -:10A9D000656E7473206C65616B696E6700000000C2 -:10A9E0006F6F736571207365676D656E7473206C2E -:10A9F00065616B696E6700007463705F7063625FAE -:10AA000072656D6F76653A207463705F7063627310 -:10AA10005F73616E652829007463705F6C6973747D -:10AA2000656E3A2070636220616C726561647920A2 -:10AA3000636F6E6E65637465640000007463705FBD -:10AA4000736C6F77746D723A2061637469766520F8 -:10AA50007063622D3E737461746520213D20434C08 -:10AA60004F5345440A0000007463705F736C6F7746 -:10AA7000746D723A20616374697665207063622D2B -:10AA80003E737461746520213D204C495354454EFA -:10AA90000A0000007463705F736C6F77746D723AB4 -:10AAA00020616374697665207063622D3E73746102 -:10AAB000746520213D2054494D452D574149540A84 -:10AAC000000000007463705F736C6F77746D723A8E -:10AAD000206D6964646C652074637020213D20746E -:10AAE00063705F6163746976655F706362730000B1 -:10AAF0007463705F736C6F77746D723A20666972FD -:10AB0000737420706362203D3D207463705F6163E5 -:10AB1000746976655F706362730000007463705FD0 -:10AB2000736C6F77746D723A2054494D452D5741BF -:10AB30004954207063622D3E7374617465203D3DFD -:10AB40002054494D452D5741495400007463705FAE -:10AB5000736C6F77746D723A206D6964646C6520F4 -:10AB600074637020213D207463705F74775F70633D -:10AB7000627300007463705F736C6F77746D723A08 -:10AB800020666972737420706362203D3D20746397 -:10AB9000705F74775F706362730000007463705F4E -:10ABA000636F6E6E6563743A2063616E206F6E6CC6 -:10ABB0007920636F6E6E65637465642066726F6D75 -:10ABC00020737461746520434C4F5345440000006A -:10ABD00053594E5F53454E540000000053594E5F89 -:10ABE000524356440000000045535441424C4953DF -:10ABF0004845440046494E5F574149545F31000083 -:10AC000046494E5F574149545F320000434C4F5311 -:10AC1000455F574149540000434C4F53494E47004C -:10AC20004C4153545F41434B0000000054494D4593 -:10AC30005F5741495400000003060C18306078004B -:10AC40008000FAFC8000FC6C8000FD4E8000FDB4AA -:10AC50008000FE368000FD4E8000FE788000FEF809 -:10AC60002E2E2F7372632F534F4654574152455F18 -:10AC70004652414D45574F524B2F5345525649432B -:10AC800045532F4C5749502F6C7769702D312E3317 -:10AC90002E322F7372632F636F72652F7463705F30 -:10ACA000696E2E63000000007063622D3E736E6457 -:10ACB0005F71756575656C656E203E3D20706275CF -:10ACC000665F636C656E286E6578742D3E70290032 -:10ACD0007463705F726563656976653A2076616C4E -:10ACE0006964207175657565206C656E67746800B0 -:10ACF000696E7365672E7020213D204E554C4C00C7 -:10AD0000696E73616E65206F6666736574210000FD -:10AD10007062756620746F6F2073686F72742100A3 -:10AD2000706275665F686561646572206661696CF2 -:10AD3000656400007463705F726563656976653A87 -:10AD4000207365676D656E74206E6F742074726910 -:10AD50006D6D656420636F72726563746C792074C5 -:10AD60006F207263765F776E640A00007463705FB1 -:10AD7000726563656976653A207365676D656E74A3 -:10AD8000206E6F74207472696D6D656420636F72DC -:10AD9000726563746C7920746F206F6F73657120B6 -:10ADA00071756575650A00007463705F726563652F -:10ADB0006976653A207463706C656E203E2072631C -:10ADC000765F776E640A00007463705F7265636516 -:10ADD0006976653A206F6F736571207463706C6576 -:10ADE0006E203E207263765F776E640A000000007A -:10ADF0007463705F696E7075743A2061637469760C -:10AE000065207063622D3E737461746520213D205E -:10AE1000434C4F53454400007463705F696E707516 -:10AE2000743A20616374697665207063622D3E73A5 -:10AE30007461746520213D2054494D452D57414989 -:10AE4000540000007463705F696E7075743A20611D -:10AE50006374697665207063622D3E7374617465F6 -:10AE600020213D204C495354454E00007463705FCF -:10AE7000696E7075743A207063622D3E6E657874E9 -:10AE800020213D2070636220286265666F72652014 -:10AE900063616368652900007463705F696E707533 -:10AEA000743A207063622D3E6E65787420213D20D7 -:10AEB00070636220286166746572206361636865EF -:10AEC000290000007463705F696E7075743A2054D5 -:10AED000494D452D57414954207063622D3E73748E -:10AEE000617465203D3D2054494D452D57414954DD -:10AEF000000000007463705F696E7075743A2070B2 -:10AF000063622D3E737461746520213D20434C4F74 -:10AF1000534544007063622D3E736E645F717565C6 -:10AF200075656C656E203E20300000007063622DF8 -:10AF30003E61636365707420213D204E554C4C008A -:10AF40007463705F696E7075743A207463705F70BB -:10AF50006362735F73616E65282900002E2E2F7364 -:10AF600072632F534F4654574152455F4652414DED -:10AF700045574F524B2F53455256494345532F4C3B -:10AF80005749502F6C7769702D312E332E322F7325 -:10AF900072632F636F72652F7463705F6F75742EA9 -:10AFA00063000000636865636B20746861742066E9 -:10AFB0006972737420706275662063616E20686FB9 -:10AFC0006C6420737472756374207463705F68645A -:10AFD000720000007463705F656E71756575653A27 -:10AFE000207061636B6574206E65656473207061A9 -:10AFF000796C6F61642C206F7074696F6E732C2094 -:10B000006F722053594E2F46494E202870726F6739 -:10B0100072616D6D65722076696F6C617465732005 -:10B0200041504929000000007463705F656E7175BE -:10B030006575653A206C656E20213D2030207C7C52 -:10B0400020617267203D3D204E554C4C2028707287 -:10B050006F6772616D6D65722076696F6C61746582 -:10B0600073204150492900007463705F656E7175EB -:10B070006575653A207062756673206F6E20717514 -:10B08000657565203D3E206174206C656173742098 -:10B090006F6E65207175657565206E6F6E2D656DBF -:10B0A000707479007463705F656E71756575653A6B -:10B0B000206E6F207062756673206F6E20717565EB -:10B0C0007565203D3E20626F7468207175657565F9 -:10B0D0007320656D707479007573656720213D205C -:10B0E0004E554C4C00000000636865636B2074682B -:10B0F0006174206669727374207062756620636182 -:10B100006E20686F6C642074686520636F6D706C6E -:10B11000657465207365676C656E000070627566A6 -:10B120005F686561646572206661696C65640A00C8 -:10B1300046494E20656E71756575656420746F674C -:10B140006574686572207769746820646174610051 -:10B150007A65726F2D6C656E6774682070627566B3 -:10B16000000000007463705F656E71756575653A07 -:10B170002076616C6964207175657565206C656EFB -:10B1800067746800525354206E6F74206578706540 -:10B190006374656420686572652100002E2E2F732C -:10B1A00072632F534F4654574152455F4652414DAB -:10B1B00045574F524B2F53455256494345532F4CF9 -:10B1C0005749502F6C7769702D312E332E322F73E3 -:10B1D00072632F636F72652F7564702E63000000B9 -:10B1E000726562696E64203D3D203000636865636E -:10B1F0006B20746861742066697273742070627564 -:10B20000662063616E20686F6C642073747275636E -:10B2100074207564705F686472000000702D3E7069 -:10B2200061796C6F6164203D3D20697068647200D3 -:10B230002E2E2F7372632F534F4654574152455F42 -:10B240004652414D45574F524B2F53455256494355 -:10B2500045532F4C5749502F6C7769702D312E3341 -:10B260002E322F7372632F636F72652F697076347D -:10B270002F69636D702E6300636865636B2074686B -:10B2800061742066697273742070627566206361F0 -:10B290006E20686F6C642069636D70206D657373D8 -:10B2A0006167650069636D705F696E7075743A20DF -:10B2B0006D6F76696E6720702D3E7061796C6F617D -:10B2C0006420746F2069702068656164657220660F -:10B2D00061696C65640A0000636865636B2074686B -:10B2E0006174206669727374207062756620636190 -:10B2F0006E20686F6C642073747275637420746858 -:10B30000652049434D502068656164657200000006 -:10B3100069636D705F696E7075743A20636F7079E0 -:10B32000696E6720746F206E657720706275662085 -:10B330006661696C65640A0069636D705F696E704F -:10B3400075743A20726573746F72696E67206F72DC -:10B350006967696E616C20702D3E7061796C6F61F8 -:10B3600064206661696C65640A00000043616E27B1 -:10B3700074206D6F7665206F7665722068656164F4 -:10B38000657220696E207061636B65740000000057 -:10B390002E2E2F7372632F534F4654574152455FE1 -:10B3A0004652414D45574F524B2F534552564943F4 -:10B3B00045532F4C5749502F6C7769702D312E33E0 -:10B3C0002E322F7372632F636F72652F697076341C -:10B3D0002F69702E63000000636865636B207468DA -:10B3E000617420666972737420706275662063618F -:10B3F0006E20686F6C64207374727563742069705A -:10B400005F68647200FFFFFFFF00000000000000A3 -:10B410002E2E2F7372632F534F4654574152455F60 -:10B420004652414D45574F524B2F53455256494373 -:10B4300045532F4C5749502F6C7769702D312E335F -:10B440002E322F7372632F636F72652F697076349B -:10B450002F69705F667261672E630000746869739C -:10B46000206E656564732061207062756620696E68 -:10B47000206F6E65207069656365210073616E6978 -:10B48000747920636865636B206C696E6B656420FA -:10B490006C697374000000007072657620213D2095 -:10B4A00069707200707265762D3E6E657874203D0D -:10B4B0003D2069707200000069705F72656173738E -:10B4C0005F70627566636F756E74203E3D20636CBD -:10B4D000656E0000636865636B20667261676D6509 -:10B4E0006E747320646F6E2774206F7665726C6162 -:10B4F000700000006E6F2070726576696F75732042 -:10B50000667261676D656E742C2074686973206D56 -:10B51000757374206265207468652066697273743F -:10B5200020667261676D656E7421000073616E69DB -:10B53000747920636865636B0000000076616C6954 -:10B54000646174655F646174616772616D3A6E65B0 -:10B5500078745F70627566213D4E554C4C0000005A -:10B5600076616C69646174655F646174616772615E -:10B570006D3A646174616772616D20656E64213D2E -:10B58000646174616772616D206C656E00FFFFFF1E -:10B59000FFFFFF002E2E2F7372632F534F46545719 -:10B5A0004152455F4652414D45574F524B2F5345EF -:10B5B0005256494345532F4C5749502F6C77697069 -:10B5C0002D312E332E322F7372632F6E65746966A0 -:10B5D0002F6574686172702E630000006E65746977 -:10B5E000662D3E6877616464725F6C656E206D7570 -:10B5F0007374206265207468652073616D652061D5 -:10B6000073204554484152505F4857414444525F6B -:10B610004C454E20666F722065746861727021001F -:10B620007120213D204E554C4C000000712D3E7084 -:10B6300020213D204E554C4C00000000722D3E70E4 -:10B6400020213D204E554C4C000000006172705F7F -:10B650007461626C655B695D2E71203D3D204E55C5 -:10B660004C4C000069203C204152505F5441424CF8 -:10B67000455F53495A4500006E657469662D3E6802 -:10B6800077616464725F6C656E203D3D204554486F -:10B690004152505F4857414444525F4C454E000070 -:10B6A000636865636B207468617420666972737483 -:10B6B00020706275662063616E20686F6C64207311 -:10B6C0007472756374206574686172705F68647207 -:10B6D000000000006172705F7461626C655B695D9F -:10B6E0002E7374617465203D3D2050454E44494E93 -:10B6F00047206F7220535441424C45006E6F2070BA -:10B7000061636B65742071756575657320616C6C20 -:10B710006F77656421000000000000002E2E2F735B -:10B7200072632F534F4654574152455F4652414D25 -:10B7300045574F524B2F53455256494345532F4C73 -:10B740005749502F6C7769702D706F72742D312EA0 -:10B75000332E322F48442F69662F6E657469662F29 -:10B76000776C69662E6300000A09000052580000D9 -:10B7700054580000FFFFFF740000000001FFFFFFAE -:10B780000000FFFFFFFFFF400000000001FFFFFF80 -:10B7900041505000484D4700312E352E312E370094 -:10B7A000312E352E312E3100312E352E312E3400F2 -:10B7B00080017C7C80017C7480017C7C80017C6ABF -:10B7C00080017DCA80017D7880017D2A80017CD83E -:10B7D00080017C86800185D2800185CA800185CA6E -:10B7E000800185D2800185C2800185C2800185BA31 -:10B7F000800185BA02040B0C121618242C30424822 -:10B80000606C0000322E312E312E310078C40E00D3 -:10B81000352E332E31000000352E332E350000003A -:10B82000352E332E340000008001BF808001BF928E -:10B830008001BFA88001BF5A8001BF668001BFD4CC -:10B840008001BF5A8001BFE08001BF5A8001BF5A0A -:10B850008001BF5A8001BF5A8001BF5A8001BF5A80 -:10B860008001BF5A8001BF5A8001BF5A8001BF5A70 -:10B870008001BF5A8001BF5A8001BF5A8001BF5A60 -:10B880008001BF5A8001BF5A8001BF5A8001BF5A50 -:10B890008001BF5A8001BF5A8001BF5A8001BF5A40 -:10B8A0008001BF5A8001BF5A8001BF5A8001BF5A30 -:10B8B0008001BF5A8001BF5A8001BF5A8001BF5A20 -:10B8C0008001BF5A8001BF5A8001BF5A8001BF5A10 -:10B8D0008001BF5A8001BF5A8001BF5A8001BF5A00 -:10B8E0008001BF5A8001BF5A8001BF5A8001BF5AF0 -:10B8F0008001BF5A8001BF5A8001BF5A8001BF5AE0 -:10B900008001BF5A8001BF5A8001BF5A8001BF5ACF -:10B910008001BF5A8001BF5A8001BF5A8001BF5ABF -:10B920008001BF5A8001BF7C8001C0448001BF5AA2 -:10B930008001C0448001BF5A8001C17C8001BF5A90 -:10B940008001C1708001BF5A8001C1648001BF5A6B -:10B950008001BF5A8001BF5A8001BF5A8001C1AC2B -:10B960008001BF5A8001BF5A8001C1A08001BF5A27 -:10B970008001C1948001BF5A8001BF5A8001BF5A23 -:10B980008001BF5A8001BF5A8001BF5A8001BF5A4F -:10B990008001BF5A8001BF5A8001BF5A8001BF5A3F -:10B9A0008001BF5A8001BF5A8001BF5A8001BF5A2F -:10B9B0008001BF5A8001BF5A8001BF5A8001BF5A1F -:10B9C0008001BF5A8001BF5A8001BF5A8001BF5A0F -:10B9D0008001BF5A8001BF5A8001BF5A8001BF5AFF -:10B9E0008001BF5A8001BF5A8001BF5A8001BF5AEF -:10B9F0008001BF5A8001BF5A8001BF5A8001BF5ADF -:10BA00008001BF5A8001BF5A8001BF5A8001BF5ACE -:10BA10008001BF5A8001BF5A8001BF5A8001BF5ABE -:10BA20008001BF5A8001BF5A8001BF5A8001BF5AAE -:10BA30008001BF5A8001BF5A8001BF5A8001BF5A9E -:10BA40008001BF5A8001BF5A8001BF5A8001BF5A8E -:10BA50008001BF5A8001BF5A8001BF5A8001BF5A7E -:10BA60008001BF5A8001BF5A8001BF5A8001BF5A6E -:10BA70008001BF5A8001BF5A8001BF5A8001BF5A5E -:10BA80008001BF5A8001BF5A8001BF5A8001BF5A4E -:10BA90008001BF5A8001BF5A8001BF5A8001BF5A3E -:10BAA0008001BF5A8001BF5A8001BF5A8001BF5A2E -:10BAB0008001BF5A8001BF5A8001BF5A8001BF5A1E -:10BAC0008001BF5A8001BF5A8001BF5A8001BF5A0E -:10BAD0008001BF5A8001BF5A8001BF5A8001BF5AFE -:10BAE0008001BF5A8001BF5A8001BF5A8001BF5AEE -:10BAF0008001BF5A8001BF5A8001BF5A8001BF5ADE -:10BB00008001BF5A8001BF5A8001BF5A8001BF5ACD -:10BB10008001BF5A8001C02C8001C1588001C02C17 -:10BB20008001C02C8001C1888001BF5A8001C044BF -:10BB30008001BF5A8001C0508001BF5A8001C050AF -:10BB40008001BF5A8001C02C8001BF5A8001C02CE7 -:10BB50008001C0388001C0388001C0388001BF5AE0 -:10BB60008001C02C8001C02C8001C14C8001BF5AD3 -:10BB70008001BF5A8001C1408001BF5A8001BF5A75 -:10BB80008001BF5A8001BF5A8001BF5A8001BF5A4D -:10BB90008001BF5A8001BF5A8001BF5A8001BF5A3D -:10BBA0008001C1348001BF5A8001BF5A8001BF5A51 -:10BBB0008001BF5A8001BF5A8001BF5A8001BF5A1D -:10BBC0008001C1288001BF5A8001BF5A8001BF5A3D -:10BBD0008001BF5A8001BF5A8001BF5A8001BF5AFD -:10BBE0008001BF5A8001BF5A8001BF5A8001BF5AED -:10BBF0008001BF5A8001BF5A8001BF5A8001BF5ADD -:10BC00008001BF5A8001BF5A8001BF5A8001BF5ACC -:10BC10008001BF5A8001BF5A8001BF5A8001BF5ABC -:10BC20008001BF5A8001BF5A8001BF5A8001BF5AAC -:10BC30008001BF5A8001BF5A8001BF5A8001BF5A9C -:10BC40008001BF5A8001BF5A8001BF5A8001BF5A8C -:10BC50008001BF5A8001BF5A8001BF5A8001BF5A7C -:10BC60008001BF5A8001BF5A8001BF5A8001BF5A6C -:10BC70008001BF5A8001BF5A8001BF5A8001BF5A5C -:10BC80008001BF5A8001BF5A8001BF5A8001BF5A4C -:10BC90008001BF5A8001BF5A8001BF5A8001BF5A3C -:10BCA0008001BF5A8001BF5A8001BF5A8001BF5A2C -:10BCB0008001BF5A8001BF5A8001BF5A8001BF5A1C -:10BCC0008001BF5A8001BF5A8001BF5A8001BF5A0C -:10BCD0008001BF5A8001BF5A8001BF5A8001BF5AFC -:10BCE0008001BF5A8001BF5A8001BF5A8001BF5AEC -:10BCF0008001BF5A8001BF5A8001BF5A8001BF5ADC -:10BD00008001BF5A8001BF5A8001BF5A8001BF5ACB -:10BD10008001BF5A8001BF5A8001BF5A8001BF5ABB -:10BD20008001BF5A8001BF5A8001BF5A8001BF5AAB -:10BD30008001BF5A8001BF5A8001BF5A8001BF5A9B -:10BD40008001BF5A8001BF5A8001BF5A8001BF5A8B -:10BD50008001BF5A8001BF5A8001BF5A8001BF5A7B -:10BD60008001BF5A8001BF5A8001BF5A8001C11CA7 -:10BD70008001C1108001BF5A8001C1048001BF5AF7 -:10BD80008001BF5A8001BF5A8001C0F88001C0EC19 -:10BD90008001BF5A8001BF5A8001C0E08001BF5AB4 -:10BDA0008001BF5A8001C0D48001C0C88001C0BCDE -:10BDB0008001C0B08001C0A48001C0988001C08C07 -:10BDC0008001BF5A8001C0808001C0748001BF5AC9 -:10BDD0008001C0688001C05C8001C48E8001C47C89 -:10BDE0008001C46A8001C4588001C4468001C43403 -:10BDF0008001C3928001C3928001C4228001C410DB -:10BE00008001C3FE8001C3EC8001C3DA8001C3C896 -:10BE10008001C3B68001C3A48001C3A48001C4A073 -:10BE20008001C2D48001C2D48001C2D48001C5C0C7 -:10BE30008001C5AE8001C59C8001C2D48001C2D4FE -:10BE40008001C58A8001C2D48001C2D48001C57836 -:10BE50008001C5668001C5548001C5428001C5309E -:10BE60008001C51E8001C50C8001C4FA8001C4E8B0 -:10BE70008001C2D48001C4D68001C4C48001C2D470 -:10BE80008001C2D48001C2D48001C2D48001C2D456 -:10BE90008001C2D48001C2D48001C2D48001C2D446 -:10BEA0008001C2D48001C2D48001C2D48001C2D436 -:10BEB0008001C2D48001C2D48001C2D48001C2D426 -:10BEC0008001C2D48001C2D48001C2D48001C2D416 -:10BED0008001C2D48001C2D48001C2D48001C2D406 -:10BEE0008001C2D48001C2D48001C2D48001C2D4F6 -:10BEF0008001C2D48001C2D48001C2D48001C2D4E6 -:10BF00008001C2D48001C2D48001C2D48001C2D4D5 -:10BF10008001C2D48001C2D48001C2D48001C2D4C5 -:10BF20008001C2D48001C2D48001C2D48001C2D4B5 -:10BF30008001C2D48001C2D48001C2D48001C2D4A5 -:10BF40008001C2D48001C2D48001C2D48001C2D495 -:10BF50008001C2D48001C2D48001C2D48001C2D485 -:10BF60008001C2D48001C2D48001C2D48001C2D475 -:10BF70008001C2D48001C2D48001C2D48001C2D465 -:10BF80008001C2D48001C2D48001C2D48001C2D455 -:10BF90008001C2D48001C2D48001C2D48001C2D445 -:10BFA0008001C2D48001C2D48001C2D48001C2D435 -:10BFB0008001C2D48001C2D48001C2D48001C2D425 -:10BFC0008001C2D48001C2D48001C2D48001C2D415 -:10BFD0008001C2D48001C2D48001C2D48001C2D405 -:10BFE0008001C2D48001C2D48001C2D48001C2D4F5 -:10BFF0008001C2D48001C2D48001C2D48001C2D4E5 -:10C000008001C2D48001C2D48001C2D48001C2D4D4 -:10C010008001C4B28001EFCA8001EFCE8001EF7AC7 -:10C020008001EF7A8001EF828001EF8A8001EF9238 -:10C030008001EF9A8001EFA28001EFAA8001EFB2A8 -:10C040008001EFBA8001EFC28001EFD68001F96074 -:10C050008001F93E8001F9CC8001F8A68001F9BE8B -:10C060008001F91C8001F8A68001F8E28001F8A6A1 -:10C070008001F8A68001F8A68001F8A68001F8A644 -:10C080008001F8A68001F8A68001F8A68001F8A634 -:10C090008001F8A68001F8A68001F8A68001F8A624 -:10C0A0008001F8A68001F8A68001F8A68001F8A614 -:10C0B0008001F8A68001F8A68001F8A68001F8A604 -:10C0C0008001F8A68001F8A68001F8A68001F8A6F4 -:10C0D0008001F8A68001F8A68001F8A68001F8A6E4 -:10C0E0008001F8A68001F8A68001F8A68001F8A6D4 -:10C0F0008001F8A68001F8A68001F8A68001F8A6C4 -:10C100008001F8A68001F8A68001F8A68001F8A6B3 -:10C110008001F8A68001F8A68001F8A68001F8A6A3 -:10C120008001F8A68001F8A68001F8A68001F8A693 -:10C130008001F8A68001F8A68001F8A68001F8A683 -:10C140008001F8A68001F8A68001F8C08001FA58A5 -:10C150008001F8F08001F8F08001F90E8001F8F01C -:10C160008001F8F08001F8F08001F8F08001F8F02B -:10C170008001F8F08001F8F08001F8F08001F8F01B -:10C180008001F8F08001F90E8001F8F08001F8F0EC -:10C190008001F8F08001F8F08001F8F08001F8F0FB -:10C1A0008001F8F08001FA488001F8F08001F8F091 -:10C1B0008001F8F08001F8F08001F8F08001F8F0DB -:10C1C0008001F8F08001F8F08001F8F08001F8F0CB -:10C1D0008001F8F08001F8F08001F8F08001F8F0BB -:10C1E0008001F8F08001F8F08001F8F08001F8F0AB -:10C1F0008001F8F08001F8F08001F8F08001F8F09B -:10C200008001F8F08001F8F08001F8F08001F8F08A -:10C210008001F8F08001F8F08001F8F08001F8F07A -:10C220008001F8F08001F8F08001F8F08001F8F06A -:10C230008001F8F08001F8F08001F8F08001F8F05A -:10C240008001F8F08001F8F08001F8F08001F8F04A -:10C250008001F8F08001F8F08001F8F08001F8F03A -:10C260008001F8F08001F8F08001F8F08001F8F02A -:10C270008001F8F08001F8F08001F8F08001F8F01A -:10C280008001F8F08001F8F08001F8F08001F8F00A -:10C290008001F8F08001F8F08001F8F08001F8F0FA -:10C2A0008001F8F08001F8F08001F8F08001F8F0EA -:10C2B0008001F8F08001F8F08001F8F08001F8F0DA -:10C2C0008001F8F08001F8F08001F8F08001F8F0CA -:10C2D0008001F8F08001F8F08001F8F08001F8F0BA -:10C2E0008001F8F08001F8F08001F8F08001F8F0AA -:10C2F0008001F8F08001F8F08001F8F08001F8F09A -:10C300008001F8F08001F8F08001F8F08001F8F089 -:10C310008001F8F08001F8F08001F8F08001F8F079 -:10C320008001F8F08001F8F08001F8F08001F8F069 -:10C330008001F8F08001F8F08001F8F08001F8F059 -:10C340008001F8F08001F8F08001F8F08001F8F049 -:10C350008001F90E8001FA348001F8F08001F90EB5 -:10C360008001F8F08001F8F08001F8F08001F8F029 -:10C370008001F8F08001F8F08001F8F08001F90EFA -:10C380008001F8F08001F8F08001FA2C8001FA2495 -:10C390008001FA1C8001FA148001FA0C8001FA0471 -:10C3A0008001FA408001F8F08001FA5057455F495A -:10C3B0004E445F38303231315F434F4E4E45435427 -:10C3C0004544000057455F494E445F3830323131B3 -:10C3D0005F444953434F4E4E454354494E47000036 -:10C3E00057455F494E445F38303231315F494253DF -:10C3F000535F444953434F4E4E4543544544000018 -:10C40000332E312E322E312E34000000352E3233B1 -:10C4100000000000352E32322E320000352E32322E -:10C420002E310000352E322E39000000352E3138E5 -:10C430002E310000352E31382E320000352E3232AA -:10C440002E340000352E32342E320000352E323498 -:10C450002E310000352E31312E310000352E322E96 -:10C4600032000000352E31362E320000352E3136A6 -:10C470002E310000312E312E312E323200000000DC -:10C48000352E322E31392E3500000000352E322E59 -:10C4900031392E3400000000352E322E31392E3342 -:10C4A00000000000352E322E31392E3200000000FF -:10C4B000352E322E31392E3100000000352E322E2D -:10C4C00031000000352E31312E320000352E313151 -:10C4D0002E330000352E31312E340000352E31310F -:10C4E0002E350000352E31312E360000352E3131FB -:10C4F0002E380000352E31312E37000073736964F9 -:10C500000000000070736B004A756E6B41500000B4 -:10C5100057534300656170005746412D53696D7054 -:10C520006C65436F6E6669672D456E726F6C6C65E6 -:10C53000652D312D300000006964656E7469747971 -:10C54000000000006E7277696669000064656661CC -:10C55000756C740057455F494E445F383032313155 -:10C560005F444953434F4E4E4543544544000000F9 -:10C5700057455F494E445F50414952574953455FC3 -:10C580004D49435F4552524F5200000057455F49A5 -:10C590004E445F47524F55505F4D49435F4552529D -:10C5A0004F52000057455F494E445F43414E444956 -:10C5B000444154455F4C495354000000494E4143A7 -:10C5C0005449564500000000444953434F4E4E45E0 -:10C5D00043544544000000005343414E4E494E47EA -:10C5E000000000004153534F43494154494E470016 -:10C5F0004153534F43494154454400003457415936 -:10C600005F48414E445348414B45000047524F5507 -:10C61000505F48414E445348414B4500434F4D50B5 -:10C620004C45544544000000554E4B4E4F574E006C -:10C630004354524C2D4556454E542D5445524D4968 -:10C640004E4154494E47202D207369676E616C201E -:10C650002564207265636569766564007769726533 -:10C660006400000043616E63656C6C696E672061F5 -:10C67000757468656E7469636174696F6E2074693E -:10C680006D656F75740000005750413A2045415068 -:10C690004F4C2070726F63657373696E6720636FB0 -:10C6A0006D706C657465000043616E63656C6C69E8 -:10C6B0006E67207363616E207265717565737400B7 -:10C6C00052534E3A207573696E672049454545209F -:10C6D0003830322E3131692F44392E3000000000BD -:10C6E0005750413A207573696E672049454545208A -:10C6F0003830322E3131692F44332E3000000000A3 -:10C700005750413A204661696C656420746F20700F -:10C7100061727365205750412049452066726F6DE4 -:10C72000206173736F63696174696F6E20696E66EF -:10C730006F0000005750413A2044726976657220BC -:10C74000757365642064697361626C6564206772E7 -:10C750006F75702063697068657220307825782065 -:10C76000286D61736B203078257829202D20726523 -:10C770006A656374000000005750413A20447269B2 -:10C7800076657220757365642064697361626C6597 -:10C790006420706169727769736520636970686588 -:10C7A00072203078257820286D61736B20307825D1 -:10C7B0007829202D2072656A656374005750413ACC -:10C7C00020447269766572207573656420646973AC -:10C7D00061626C6564206B6579206D616E6167656F -:10C7E0006D656E74203078257820286D61736B201C -:10C7F0003078257829202D2072656A6563740000E1 -:10C800005750413A207573696E672047544B204357 -:10C81000434D50005750413A207573696E67204769 -:10C82000544B20544B4950005750413A207573697E -:10C830006E672047544B205745503130340000007C -:10C840005750413A207573696E672047544B205703 -:10C8500045503430000000005750413A207573694C -:10C860006E672050544B2043434D50005750413A7F -:10C87000207573696E672050544B20544B4950000B -:10C880005750413A207573696E672050544B204EC3 -:10C890004F4E45005750413A207573696E67204BE3 -:10C8A00045595F4D474D54203830322E31580000E5 -:10C8B0005750413A207573696E67204B45595F4D5B -:10C8C000474D54205750412D50534B005750413A3B -:10C8D000207573696E67204B45595F4D474D542055 -:10C8E0005750412D4E4F4E45000000005750413AE1 -:10C8F000204661696C656420746F2073656C6563A4 -:10C9000074205750412F52534E0000004661696C0D -:10C91000656420746F20706172736520746865208F -:10C92000636F6E66696775726174696F6E206669A0 -:10C930006C652027257327202D2065786974696E22 -:10C94000670000005265636F6E6669677572617497 -:10C95000696F6E20636F6D706C65746564000000B4 -:10C9600053657474696E672061757468656E746967 -:10C97000636174696F6E2074696D656F75743A20B8 -:10C98000256420736563202564207573656300004A -:10C9900053657474696E67207363616E207265718C -:10C9A000756573743A2025642073656320256420BF -:10C9B000757365630000000041757468656E746985 -:10C9C000636174696F6E20776974682025303278EE -:10C9D0003A253032783A253032783A253032783A72 -:10C9E000253032783A253032782074696D656420BC -:10C9F0006F75742E00000000547279696E672074A0 -:10CA00006F206173736F63696174652077697468FF -:10CA100020253032783A253032783A253032783A4B -:10CA2000253032783A253032783A2530327820284D -:10CA3000535349443D2725732720667265713D2570 -:10CA400064204D487A290000547279696E67207419 -:10CA50006F206173736F63696174652077697468AF -:10CA60002053534944202725732700004173736FD7 -:10CA700063696174696F6E20726571756573742086 -:10CA8000746F2074686520647269766572206661CF -:10CA9000696C6564000000007770615F7375707089 -:10CAA0006C6963616E742076302E352E31300A4306 -:10CAB0006F7079726967687420286329203230307A -:10CAC000332D323030382C204A6F756E69204D611D -:10CAD0006C696E656E203C6A4077312E66693E2037 -:10CAE000616E6420636F6E7472696275746F7273C5 -:10CAF00000000000546869732070726F6772616D86 -:10CB0000206973206672656520736F667477617241 -:10CB1000652E20596F752063616E2064697374728D -:10CB2000696275746520697420616E642F6F72206C -:10CB30006D6F646966792069740A756E6465722028 -:10CB4000746865207465726D73206F662074686503 -:10CB500020474E552047656E6572616C20507562A6 -:10CB60006C6963204C6963656E73652076657273CA -:10CB7000696F6E20322E0A0A416C7465726E6174A0 -:10CB80006976656C792C207468697320736F66749C -:10CB900077617265206D61792062652064697374C4 -:10CBA0007269627574656420756E6465722074685C -:10CBB00065207465726D73206F66207468650A4223 -:10CBC0005344206C6963656E73652E205365652040 -:10CBD000524541444D4520616E6420434F505949B0 -:10CBE0004E4720666F72206D6F72652064657461B8 -:10CBF000696C732E0A0000002530325800000000D6 -:10CC00008003C4FC80024A908002490000000010AA -:10CC100000000014000000000000002000000000E0 -:10CC20008003D3EC80024DF0800248880000006051 -:10CC300000000000000000000000000100000000F3 -:10CC40008003D3F880024DCC800248280000000009 -:10CC500000000000000000000000000000000000D4 -:10CC60008003C50480024D00800248C4000000001B -:10CC700000000000000000000000000000000001B3 -:10CC80008003D4008002408C800247A8000000008E -:10CC90000000000000000000000000000000000094 -:10CCA0008003D40880023F448002467C00000000DC -:10CCB0000000000000000000000000000000000074 -:10CCC0008003D41480023F188002466C00000000EC -:10CCD0000000000000000000000000000000000054 -:10CCE0008003D42080023EEC8002465C00000000FD -:10CCF0000000000000000000000000000000000034 -:10CD00008003D42880023CA4800244740000000008 -:10CD10000000000000000000000000000000000013 -:10CD20008003C51480024B9080024B00000000007D -:10CD300000000000000000000000000000000000F3 -:10CD40008003C53880024A908002490000000068D4 -:10CD50000000006C00000000000000000000000067 -:10CD60008003D43480024A908002490000000070A1 -:10CD7000000000740000000000000000000000003F -:10CD80008003D44880024A90800249000000007865 -:10CD90000000007C000000100000002000000001E6 -:10CDA0008003D45080024A90800249000000008035 -:10CDB00000000084000000000000000000000000EF -:10CDC0008003D45480024A90800249000000008809 -:10CDD0000000008C000000000000000000000001C6 -:10CDE0008003D46080024A908002490000000090D5 -:10CDF0000000000000000000000000000000000033 -:10CE00008003D46880024A908002490000000094A8 -:10CE10000000000000000000000000000000000012 -:10CE20008003D47080024A9080024900000000987C -:10CE300000000000000000000000000000000000F2 -:10CE40008003D47C80024A90800249000000009C4C -:10CE500000000000000000000000000000000000D2 -:10CE60008003D48880024A9080024900000000A01C -:10CE700000000000000000000000000000000001B1 -:10CE80008003D49C80024A9080024900000000A4E4 -:10CE90000000000000000000000000000000000092 -:10CEA0008003D4A480024A9080024900000000A8B8 -:10CEB0000000000000000000000000000000000072 -:10CEC0008003D4B480024A9080024900000000AC84 -:10CED0000000000000000000000000000000000052 -:10CEE0008003D4C880024A9080024900000000B04C -:10CEF0000000000000000000000000000000000032 -:10CF00008003D4D480024A9080024900000000B41B -:10CF10000000000000000000000000000000000011 -:10CF20008003D4E080024A9080024900000000B8EB -:10CF300000000000000000000000000000000000F1 -:10CF40008003D4F080024A9080024900000000BCB7 -:10CF500000000000000000000000000000000000D1 -:10CF60008003D50080024A9080024900000000C082 -:10CF700000000000000000000000000000000001B0 -:10CF80008003D51480024A9080024900000000C44A -:10CF90000000000000000000000000000000000091 -:10CFA0008003D52080024A9080024900000000C81A -:10CFB0000000000000000000000000000000000071 -:10CFC0008003D53080024A9080024900000000CCE6 -:10CFD0000000000000000000000000000000000051 -:10CFE0008003D54480024A9080024900000000D4AA -:10CFF0000000000000000000000000000000000031 -:10D000008003D54C80024A9080024900000000D87D -:10D010000000000000000000000000000000000010 -:10D020008003D55480024A9080024900000000DC51 -:10D0300000000000000000000000000000000000F0 -:10D040008003D55C80024A9080024900000000E025 -:10D0500000000000000000000000000000000001CF -:10D060008003D56080024A9080024900000000E8F9 -:10D0700000000000000000000000000000000000B0 -:10D080008003D56C80024A9080024900000000ECC9 -:10D090000000000000000000000000000000000090 -:10D0A0008003D65C80024DF080024888000000E4D6 -:10D0B0000000000000000000000000000000000070 -:10D0C0008003D57480024DF080024888000000F093 -:10D0D0000000000000000000000000000000000050 -:10D0E0008003D58080024A78800244580000000006 -:10D0F000000000000000000000000000000000012F -:10D100008003D58C80024A608002443C000000000D -:10D11000000000000000000000000000000000010E -:10D120008003D59880024A48800244200000000015 -:10D1300000000000000000000000000000000001EE -:10D140008003D5A480024A3080024404000000001D -:10D1500000000000000000000000000000000001CE -:10D160008003D5B080024DF0800248880000014461 -:10D1700000000000000000000000000000000000AF -:10D180008003D5C080024DF0800248880000000C6A -:10D19000000000000000000000000000000000008F -:10D1A0008003D5CC80024DF0800248880000017CCD -:10D1B000000000000000000000000000000000006F -:10D1C0008003D5DC80024A90800249000000018083 -:10D1D000000000000000000000000000000000004F -:10D1E0008003D5E880024DF0800248880000019C51 -:10D1F000000000000000000000000000000000002F -:10D200008003D5F880024DF0800248880000018438 -:10D21000000000000000000000000001000000000D -:10D220008003D60080024DF0800248880000006430 -:10D2300000000000000000000000000200000000EC -:10D240008003D60880024DF0800248880000014823 -:10D2500000000000000000000000000100000000CD -:10D260008003D62080024DF080024888000001949F -:10D2700000000000000000000000000100000000AD -:10D280008003D62C80024A9080024900000001A051 -:10D29000000000000000000000000000000000008E -:10D2A0008003D63480024DF0800248880000019847 -:10D2B000000000000000000000000001000000006D -:10D2C0008003D63C80024DF0800248880000014C6B -:10D2D000000000000000000000000001000000004D -:10D2E0008003D64880024DF080024888000001A4E7 -:10D2F00000000000000000000000271000000000F7 -:10D300002A0000004F50454E000000005348415293 -:10D31000454400004C454150000000005745503145 -:10D320003034000057455034300000005750412D34 -:10D3300045415000494545453830323158000000DC -:10D340005750410052534E005750413200000000E8 -:10D3500025734F50454E00002573534841524544B4 -:10D360000000000025734C454150000025734343E5 -:10D370004D5000002573544B49500000257357450C -:10D3800050313034000000002573574550343000D0 -:10D3900025734E4F4E45000025735750412D505375 -:10D3A0004B00000025735750412D454150000000AF -:10D3B000257349454545383032315800257357505B -:10D3C000412D4E4F4E45000025735750410000003F -:10D3D000257352534E0000007765705F6B657925A9 -:10D3E0006400000025732573000000007363616E04 -:10D3F0005F73736964000000627373696400000006 -:10D4000070726F746F0000006B65795F6D676D748B -:10D4100000000000706169727769736500000000A8 -:10D4200067726F7570000000617574685F616C678A -:10D4300000000000616E6F6E796D6F75735F6964D7 -:10D44000656E74697479000065617070736B0000BB -:10D450006E61690070617373776F72640000000021 -:10D4600063615F636572740063615F70617468001B -:10D47000636C69656E745F6365727400707269765F -:10D480006174655F6B657900707269766174655F60 -:10D490006B65795F706173737764000064685F66C1 -:10D4A000696C65007375626A6563745F6D6174634E -:10D4B00068000000616C747375626A6563745F6D07 -:10D4C000617463680000000063615F6365727432B9 -:10D4D0000000000063615F7061746832000000004A -:10D4E000636C69656E745F6365727432000000007E -:10D4F000707269766174655F6B6579320000000057 -:10D50000707269766174655F6B6579325F706173A3 -:10D510007377640064685F66696C653200000000C0 -:10D520007375626A6563745F6D617463683200006D -:10D53000616C747375626A6563745F6D617463684E -:10D5400032000000706861736531000070686173BB -:10D5500065320000706373630000000070696E0044 -:10D56000656E67696E655F69640000006B65795F71 -:10D57000696400006561706F6C5F666C6167730061 -:10D580007765705F6B657930000000007765705FCC -:10D590006B657931000000007765705F6B657932EB -:10D5A000000000007765705F6B6579330000000054 -:10D5B0007765705F74785F6B6579696478000000E7 -:10D5C0007072696F72697479000000006561705F44 -:10D5D000776F726B61726F756E6400007061635F6C -:10D5E00066696C6500000000667261676D656E7447 -:10D5F0005F73697A650000006D6F6465000000006C -:10D600007573655F7770730070726F6163746976AC -:10D61000655F6B65795F63616368696E67000000D1 -:10D6200064697361626C65640000000069645F7323 -:10D6300074720000706565726B6579006D6978655C -:10D64000645F63656C6C00006672657175656E631E -:10D6500079000000888E000077696669656E6769E9 -:10D660006E65000057694669456E67696E65000022 -:10D670008003D6588003D664800254C880025420A8 -:10D6800080024F98800252E0800253E8800254A446 -:10D690000000000080024F9A800252C880024F941E -:10D6A00080024F96800252B08002529880024F9CB6 -:10D6B00080024F9E8002523C800251E0800251D491 -:10D6C000800251AC00000000000000008002518088 -:10D6D00080024FF480024FD00000000000000000E4 -:10D6E000000000000000000000000000000000003A -:10D6F000000000000000000080024FA08002564E93 -:10D700008002564A80025646800256408002563CAD -:10D7100080025636800256328002562C80025626EF -:10D72000800256928002568C800256888002568271 -:10D730008002567C80025676800256728002566CB9 -:10D740008002566680025B3480025C0880025BE0E7 -:10D7500080025BBA80025BA080025B3480025B3493 -:10D7600080025B3480025DC280025E3A80025E12FB -:10D7700080025D8E80025CC280025AF680025DF4F7 -:10D7800080025DCE800268DC80026AA280026A00AC -:10D7900080026904800268F2800269EE800268DC1F -:10D7A000800268DC800268E8800268E8800268E83D -:10D7B000696E76616C696461746500004354524C13 -:10D7C0002D4556454E542D4541502D535543434507 -:10D7D0005353204541502061757468656E746963C8 -:10D7E0006174696F6E20636F6D706C657465642021 -:10D7F0007375636365737366756C6C7920286261F9 -:10D80000736564206F6E206C6F776572206C617930 -:10D810006572207375636365737329004354524CBA -:10D820002D4556454E542D4541502D5355434345A6 -:10D830005353204541502061757468656E74696367 -:10D840006174696F6E20636F6D706C6574656420C0 -:10D850007375636365737366756C6C7900000000A3 -:10D860004354524C2D4556454E542D4541502D465E -:10D8700041494C55524520454150206175746865B9 -:10D880006E7469636174696F6E206661696C65644A -:10D8900000000000494E495449414C495A45000096 -:10D8A0004541503A206D6F7265207468616E202585 -:10D8B000642061757468656E7469636174696F6E04 -:10D8C00020726F756E6473202D2061626F72740018 -:10D8D0004354524C2D4556454E542D4541502D4EE6 -:10D8E0004F54494649434154494F4E2000000000DF -:10D8F0004354524C2D4556454E542D4541502D53C1 -:10D900005441525445442045415020617574686526 -:10D910006E7469636174696F6E207374617274658B -:10D92000640000004745545F4D4554484F44000093 -:10D930004541503A204661696C656420746F2069E6 -:10D940006E697469616C697A6520454150206D6526 -:10D9500074686F643A2076656E646F722025752056 -:10D960006D6574686F642025752028257329000073 -:10D970004354524C2D4556454E542D4541502D4D46 -:10D980004554484F44204541502076656E646F727F -:10D99000202575206D6574686F6420257520282505 -:10D9A00073292073656C656374656400454150207C -:10D9B0006465696E697400008002794480027ADAD5 -:10D9C00080027B5880027BA280027CC880027CD2CD -:10D9D00080027AC45750413A20544B495020636F1B -:10D9E000756E7465726D656173757265732073749D -:10D9F0006F707065640000004173736F63696174D8 -:10DA0000656420746F2061206E6577204253533A1D -:10DA10002042535349443D253032783A25303278FC -:10DA20003A253032783A253032783A253032783A11 -:10DA300025303278000000004173736F63696174B0 -:10DA40006564207769746820253032783A25303251 -:10DA5000783A253032783A253032783A25303278A3 -:10DA60003A253032780000005750413A20342D5783 -:10DA700061792048616E647368616B6520666169D5 -:10DA80006C6564202D207072652D73686172656409 -:10DA9000206B6579206D617920626520696E636F06 -:10DAA00072726563740000004354524C2D45564514 -:10DAB0004E542D444953434F4E4E45435445442004 -:10DAC0002D20446973636F6E6E656374206576659F -:10DAD0006E74202D2072656D6F7665206B6579738D -:10DAE000000000004D69636861656C204D4943206A -:10DAF0006661696C757265206465746563746564DC -:10DB000000000000544B495020636F756E746572BD -:10DB10006D65617375726573207374617274656489 -:10DB200000000000000000080000000600000006E1 -:10DB3000496E646578202F204141202F20504D4BA5 -:10DB40004944202F2065787069726174696F6E2076 -:10DB500028696E207365636F6E647329202F206FB0 -:10DB600070706F7274756E69737469630A00000077 -:10DB7000256420253032783A253032783A25303203 -:10DB8000783A253032783A253032783A2530327872 -:10DB9000200000002025642025640A00504D4B2001 -:10DBA0004E616D650000000052534E3A207374615F -:10DBB0007274696E67207072652D61757468656E28 -:10DBC0007469636174696F6E2077697468202530A9 -:10DBD00032783A253032783A253032783A25303268 -:10DBE000783A253032783A253032780052534E3A1E -:10DBF0002070726F63657373696E6720504D4B536D -:10DC0000412063616E646964617465206C6973743A -:10DC10000000000052534E3A206E6F7420696E204F -:10DC20007375697461626C652073746174652066D4 -:10DC30006F72206E6577207072652D6175746865EE -:10DC40006E7469636174696F6E00000052534E3ADE -:10DC500020504D4B53412063616E6469646174656B -:10DC600020253032783A253032783A253032783AE9 -:10DC7000253032783A253032783A253032782073A0 -:10DC8000656C656374656420666F72207072652DC3 -:10DC900061757468656E7469636174696F6E0000A4 -:10DCA00052534E3A20504D4B53412063616E64698C -:10DCB0006461746520253032783A253032783A250F -:10DCC0003032783A253032783A253032783A253079 -:10DCD000327820646F6573206E6F74206E656564A2 -:10DCE000207072652D61757468656E746963617406 -:10DCF000696F6E20616E796D6F72650052534E3A96 -:10DD0000206E6F206D6F72652070656E64696E673E -:10DD100020504D4B53412063616E646964617465AA -:10DD20007300000052534E3A2061646465642050D1 -:10DD30004D4B53412063616368652063616E646984 -:10DD40006461746520253032783A253032783A257E -:10DD50003032783A253032783A253032783A2530E8 -:10DD60003278207072696F202564000052534E3A59 -:10DD7000207072652D61757468656E746963617475 -:10DD8000696F6E207769746820253032783A2530C3 -:10DD900032783A253032783A253032783A253032A6 -:10DDA000783A253032782074696D6564206F757417 -:10DDB00000000000636F6D706C657465642073759E -:10DDC000636365737366756C6C79000052534E3AE9 -:10DDD000206661696C656420746F20676574206DCE -:10DDE00061737465722073657373696F6E206B6500 -:10DDF000792066726F6D207072652D617574682070 -:10DE00004541504F4C207374617465206D616368A7 -:10DE1000696E65730000000052534E3A20707265BF -:10DE20002D61757468656E7469636174696F6E20C5 -:10DE30007769746820253032783A253032783A256F -:10DE40003032783A253032783A253032783A2530F7 -:10DE50003278202573000000800000008002B51C8D -:10DE60008002B50A8002B5008002B4FA8002B4F4E0 -:10DE70008002B4EE8002B4E8000FAC010050F20260 -:10DE8000000FAC02000FAC01000FAC050050F20215 -:10DE9000000FAC040050F2010050F2010050F201FA -:10DEA0000050F2050050F200000FAC00000FAC0370 -:10DEB0000050F200000FAC0449454545203830328F -:10DEC0002E315820286E6F20575041290000000045 -:10DED0005750412F49454545203830322E31582F73 -:10DEE00045415000575041322F4945454520383073 -:10DEF000322E31582F45415000000000575041321A -:10DF00002D50534B000000005745502D3430000079 -:10DF10005745502D313034007061697277697365EF -:10DF20005F6369706865723D25730A67726F75700B -:10DF30005F6369706865723D25730A6B65795F6D13 -:10DF4000676D743D25730A005750413A20257320B0 -:10DF5000287372633D253032783A253032783A257D -:10DF60003032783A253032783A253032783A2530D6 -:10DF7000327829005750413A204B6579206E656709 -:10DF80006F74696174696F6E20636F6D706C657416 -:10DF90006564207769746820253032783A253032FC -:10DFA000783A253032783A253032783A253032784E -:10DFB0003A25303278205B50544B3D25732047542E -:10DFC0004B3D25735D0000005750413A20496E7665 -:10DFD000616C6964204541504F4C2D4B657920663A -:10DFE00072616D65202D206B65795F6461746120BD -:10DFF0006F766572666C6F7720282564203E202539 -:10E000006C752900494520696E20332F34206D73CB -:10E010006720646F6573206E6F74206D6174636830 -:10E02000207769746820494520696E2042656163E4 -:10E030006F6E2F50726F62655265737020286E6F1D -:10E040002049453F29000000494520696E20332FB3 -:10E0500034206D736720646F6573206E6F74206D5C -:10E0600061746368207769746820494520696E206F -:10E07000426561636F6E2F50726F62655265737097 -:10E0800000000000506F737369626C6520646F77E5 -:10E090006E67726164652061747461636B2064658E -:10E0A000746563746564202D2052534E207761732C -:10E0B00020656E61626C656420616E642052534E0F -:10E0C0002049452077617320696E206D7367203386 -:10E0D0002F342C20627574206E6F7420696E20427C -:10E0E0006561636F6E2F50726F6265526573700069 -:10E0F0005750413A204661696C656420746F20670F -:10E100006574206D61737465722073657373696FD4 -:10E110006E206B65792066726F6D204541504F4CC3 -:10E12000207374617465206D616368696E65730046 -:10E130005750413A204B65792068616E647368617D -:10E140006B652061626F7274656400005750413ADC -:10E15000204661696C656420746F20676574207265 -:10E16000616E646F6D206461746120666F7220530C -:10E170004E6F6E6365000000506169727769736568 -:10E18000206B657920657870616E73696F6E000031 -:10E190005750413A2047726F75702072656B6579F0 -:10E1A000696E6720636F6D706C6574656420776954 -:10E1B000746820253032783A253032783A2530326A -:10E1C000783A253032783A253032783A253032782C -:10E1D000205B47544B3D25735D00000000000000AC -:10E1E000000000000050F204000FAC02000FAC0170 -:10E1F00052096AD53036A538BF40A39E81F3D7FBBC -:10E200007CE339829B2FFF87348E4344C4DEE9CB05 -:10E21000547B9432A6C2233DEE4C950B42FAC34E7A -:10E22000082EA16628D924B2765BA2496D8BD12530 -:10E2300072F8F66486689816D4A45CCC5D65B692D4 -:10E240006C704850FDEDB9DA5E154657A78D9D8478 -:10E2500090D8AB008CBCD30AF7E45805B8B3450698 -:10E26000D02C1E8FCA3F0F02C1AFBD0301138A6BB2 -:10E270003A9111414F67DCEA97F2CFCEF0B4E673E2 -:10E2800096AC7422E7AD3585E2F937E81C75DF6E90 -:10E2900047F11A711D29C5896FB7620EAA18BE1BF6 -:10E2A000FC563E4BC6D279209ADBC0FE78CD5AF49C -:10E2B0001FDDA8338807C731B11210592780EC5FE2 -:10E2C00060517FA919B54A0D2DE57A9F93C99CEF3E -:10E2D000A0E03B4DAE2AF5B0C8EBBB3C835399613F -:10E2E000172B047EBA77D626E169146355210C7D7D -:10E2F00001020408102040801B36000051F4A75092 -:10E300007E4165531A17A4C33A275E963BAB6BCB8D -:10E310001F9D45F1ACFA58AB4BE303932030FA55FF -:10E32000AD766DF688CC7691F5024C254FE5D7FC9D -:10E33000C52ACBD726354480B562A38FDEB15A49B2 -:10E3400025BA1B6745EA0E985DFEC0E1C32F750232 -:10E35000814CF0128D4697A36BD3F9C6038F5FE70C -:10E3600015929C95BF6D7AEB955259DAD4BE832DE8 -:10E37000587421D349E069298EC9C84475C2896A95 -:10E38000F48E797899583E6B27B971DDBEE14FB6AE -:10E39000F088AD17C920AC667DCE3AB463DF4A1869 -:10E3A000E51A31829751336062537F45B16477E05B -:10E3B000BB6BAE84FE81A01CF9082B947048685892 -:10E3C0008F45FD1994DE6C87527BF8B7AB73D3236E -:10E3D000724B02E2E31F8F576655AB2AB2EB280758 -:10E3E0002FB5C20386C57B9AD33708A5302887F29C -:10E3F00023BFA5B202036ABAED16825C8ACF1C2B3A -:10E40000A779B492F307F2F04E69E2A165DAF4CD90 -:10E410000605BED5D134621FC4A6FE8A342E539D94 -:10E42000A2F355A0058AE132A4F6EB750B83EC3913 -:10E430004060EFAA5E719F06BD6E10513E218AF9C1 -:10E4400096DD063DDD3E05AE4DE6BD4691548DB5EB -:10E4500071C45D050406D46F605015FF1998FB2444 -:10E46000D6BDE997894043CC67D99E77B0E842BDD5 -:10E4700007898B88E7195B3879C8EEDBA17C0A47EE -:10E480007C420FE9F8841EC90000000009808683E1 -:10E49000322BED481E1170AC6C5A724EFD0EFFFB14 -:10E4A0000F8538563DAED51E362D39270A0FD96453 -:10E4B000685CA6219B5B54D124362E3A0C0A67B1C6 -:10E4C0009357E70FB4EE96D21B9B919E80C0C54F29 -:10E4D00061DC20A25A774B691C121A16E293BA0A21 -:10E4E000C0A02AE53C22E043121B171D0E090D0BAC -:10E4F000F28BC7AD2DB6A8B9141EA9C857F119855E -:10E50000AF75074CEE99DDBBA37F60FDF701269F39 -:10E510005C72F5BC44663BC55BFB7E348B4329765D -:10E52000CB23C6DCB6EDFC68B8E4F163D731DCCAB6 -:10E53000426385101397224084C61120854A247DAA -:10E54000D2BB3DF8AEF93211C729A16D1D9E2F4BEC -:10E55000DCB230F30D8652EC77C1E3D02BB3166CEE -:10E56000A970B999119448FA47E96422A8FC8CC4AF -:10E57000A0F03F1A567D2CD8223390EF87494EC722 -:10E58000D938D1C18CCAA2FE98D40B36A6F581CF5A -:10E59000A57ADE28DAB78E263FADBFA42C3A9DE4DB -:10E5A0005078920D6A5FCC9B547E4662F68D13C202 -:10E5B00090D8B8E82E39F75E82C3AFF59F5D80BE74 -:10E5C00069D0937C6FD52DA9CF2512B3C8AC993BE8 -:10E5D00010187DA7E89C636EDB3BBB7BCD267809DA -:10E5E0006E5918F4EC9AB701834F9AA8E6956E65B8 -:10E5F000AAFFE67E21BCCF08EF15E8E6BAE79BD973 -:10E600004A6F36CEEA9F09D429B07CD631A4B2AF86 -:10E610002A3F2331C6A5943035A266C0744EBC375C -:10E62000FC82CAA6E090D0B033A7D815F104984A6E -:10E6300041ECDAF77FCD500E1791F62F764DD68D3F -:10E6400043EFB04DCCAA4D54E49604DF9ED1B5E320 -:10E650004C6A881BC12C1FB84665517F9D5EEA0439 -:10E66000018C355DFA877473FB0B412EB3671D5A1D -:10E6700092DBD252E91056336DD647139AD7618C8C -:10E6800037A10C7A59F8148EEB133C89CEA927EEEA -:10E69000B761C935E11CE5ED7A47B13C9CD2DF5941 -:10E6A00055F2733F1814CE7973C737BF53F7CDEACD -:10E6B0005FFDAA5BDF3D6F147844DB86CAAFF38150 -:10E6C000B968C43E3824342CC2A3405F161DC372FF -:10E6D000BCE2250C283C498BFF0D954139A80171FE -:10E6E000080CB3DED8B4E49C6456C1907BCB846143 -:10E6F000D532B670486C5C74D0B85742C66363A517 -:10E70000F87C7C84EE777799F67B7B8DFFF2F20DB7 -:10E71000D66B6BBDDE6F6FB191C5C55460303050A4 -:10E7200002010103CE6767A9562B2B7DE7FEFE1978 -:10E73000B5D7D7624DABABE6EC76769A8FCACA45B1 -:10E740001F82829D89C9C940FA7D7D87EFFAFA153B -:10E75000B25959EB8E4747C9FBF0F00B41ADADEC18 -:10E76000B3D4D4675FA2A2FD45AFAFEA239C9CBFA0 -:10E7700053A4A4F7E47272969BC0C05B75B7B7C28E -:10E78000E1FDFD1C3D9393AE4C26266A6C36365A4D -:10E790007E3F3F41F5F7F70283CCCC4F6834345CC1 -:10E7A00051A5A5F4D1E5E534F9F1F108E2717193D1 -:10E7B000ABD8D873623131532A15153F0804040CC5 -:10E7C00095C7C752462323659DC3C35E30181828DA -:10E7D000379696A10A05050F2F9A9AB50E070709D5 -:10E7E000241212361B80809BDFE2E23DCDEBEB264C -:10E7F0004E2727697FB2B2CDEA75759F1209091BB2 -:10E800001D83839E582C2C74341A1A2E361B1B2DF4 -:10E81000DC6E6EB2B45A5AEE5BA0A0FBA45252F664 -:10E82000763B3B4DB7D6D6617DB3B3CE5229297B1B -:10E83000DDE3E33E5E2F2F7113848497A65353F5D7 -:10E84000B9D1D16800000000C1EDED2C402020605E -:10E85000E3FCFC1F79B1B1C8B65B5BEDD46A6ABE5C -:10E860008DCBCB4667BEBED97239394B944A4ADE4E -:10E87000984C4CD4B05858E885CFCF4ABBD0D06B19 -:10E88000C5EFEF2A4FAAAAE5EDFBFB16864343C569 -:10E890009A4D4DD766333355118585948A4545CFBA -:10E8A000E9F9F91004020206FE7F7F81A05050F0C2 -:10E8B000783C3C44259F9FBA4BA8A8E3A25151F352 -:10E8C0005DA3A3FE804040C0058F8F8A3F9292AD2A -:10E8D000219D9DBC70383848F1F5F50463BCBCDF60 -:10E8E00077B6B6C1AFDADA75422121632010103055 -:10E8F000E5FFFF1AFDF3F30EBFD2D26D81CDCD4CF3 -:10E90000180C0C1426131335C3ECEC2FBE5F5FE11B -:10E91000359797A2884444CC2E17173993C4C4570F -:10E9200055A7A7F2FC7E7E827A3D3D47C86464AC61 -:10E93000BA5D5DE73219192BE6737395C06060A06C -:10E94000198181989E4F4FD1A3DCDC7F442222663F -:10E95000542A2A7E3B9090AB0B8888838C4646CA0B -:10E96000C7EEEE296BB8B8D32814143CA7DEDE79C5 -:10E97000BC5E5EE2160B0B1DADDBDB76DBE0E03B45 -:10E9800064323256743A3A4E140A0A1E924949DBEE -:10E990000C06060A4824246CB85C5CE49FC2C25D85 -:10E9A000BDD3D36E43ACACEFC46262A6399191A8DB -:10E9B000319595A4D3E4E437F279798BD5E7E73242 -:10E9C0008BC8C8436E373759DA6D6DB7018D8D8CA2 -:10E9D000B1D5D5649C4E4ED249A9A9E0D86C6CB48F -:10E9E000AC5656FAF3F4F407CFEAEA25CA6565AFE8 -:10E9F000F47A7A8E47AEAEE9100808186FBABAD525 -:10EA0000F07878884A25256F5C2E2E72381C1C24DD -:10EA100057A6A6F173B4B4C797C6C651CBE8E8238E -:10EA2000A1DDDD7CE874749C3E1F1F21964B4BDDFD -:10EA300061BDBDDC0D8B8B860F8A8A85E07070907E -:10EA40007C3E3E4271B5B5C4CC6666AA904848D8B3 -:10EA500006030305F7F6F6011C0E0E12C26161A350 -:10EA60006A35355FAE5757F969B9B9D017868691BF -:10EA700099C1C1583A1D1D27279E9EB9D9E1E13899 -:10EA8000EBF8F8132B9898B322111133D26969BBB4 -:10EA9000A9D9D970078E8E89339494A72D9B9BB6E4 -:10EAA0003C1E1E2215878792C9E9E92087CECE49F0 -:10EAB000AA5555FF50282878A5DFDF7A038C8C8F64 -:10EAC00059A1A1F8098989801A0D0D1765BFBFDA10 -:10EAD000D7E6E631844242C6D06868B8824141C375 -:10EAE000299999B05A2D2D771E0F0F117BB0B0CBFD -:10EAF000A85454FC6DBBBBD62C16163A002020201F -:10EB000020202020202028282828282020202020DD -:10EB100020202020202020202020202020881010AD -:10EB20001010101010101010101010101004040409 -:10EB300004040404040404101010101010104141C7 -:10EB400041414141010101010101010101010101B5 -:10EB500001010101010101011010101010104242C9 -:10EB60004242424202020202020202020202020285 -:10EB70000202020202020202101010102000000025 -:10EB80000000000000000000000000000000000085 -:10EB90000000000000000000000000000000000075 -:10EBA0000000000000000000000000000000000065 -:10EBB0000000000000000000000000000000000055 -:10EBC0000000000000000000000000000000000045 -:10EBD0000000000000000000000000000000000035 -:10EBE0000000000000000000000000000000000025 -:10EBF0000000000000000000000000000000000015 -:10EC00002D2D0000504F5349584C595F434F5252DD -:10EC10004543540025733A206F7074696F6E20600D -:10EC200025732720697320616D626967756F75733D -:10EC30002028636F756C6420626520602D2D25731C -:10EC400027206F7220602D2D257327290A000000D0 -:10EC500025733A20696E76616C6964206F707469FF -:10EC60006F6E202D2D20602D2563270A00000000E7 -:10EC700025733A20617267756D656E7420726571D7 -:10EC8000756972656420666F72206F7074696F6E4B -:10EC9000206000002D2D2573270A00002D256327F5 -:10ECA0000A00000043000000000004A88002F4668F -:10ECB0008002F4888002F2B08002F2E88002F4520E -:10ECC0008002F4508002F3FE8002F4268002F3DC1E -:10ECD0008002F3DC8002F3CC8002F3DC8002F3EAF2 -:10ECE0008002F3EA8002F3DC3030303030303030F4 -:10ECF000303030303030303001020B040B0506016B -:10ED00000B01020B040B0506010B0B0B03040B0597 -:10ED10000B0B0B0B0B0B040B050B0B0B0B0B0B0B50 -:10ED20000B0B0B0B0B05080B040B0B070B0B0B0949 -:10ED30000B040B050B0B0B0B0A0B040B0B0B0B0B38 -:10ED40000B0B0B040B0B0B0B0B0B0B030B0B0B0B22 -:10ED50000B0B0B0B080B0B0B0B0B0B00000000003D -:10ED6000000000000001000304000000000001009A -:10ED7000030400000000000007030400000000007E -:10ED80000000030400000000000000000400000078 -:10ED90000000020003040000000000010005060559 -:10EDA0000000000001000506000000000000000354 -:10EDB0000400000000000008000000000000000047 -:10EDC000080000000000000000000000000000003B -:10EDD0003031323334353637383941424344454691 -:10EDE0000000000030313233343536373839616253 -:10EDF0006364656600000000202020202020202081 -:10EE000020202020202020200808080808080808C2 -:10EE10000808080808080808080808080808080872 -:10EE2000080808080808080807080807020808076B -:10EE30000808060708070508000101010101010192 -:10EE40000101080808080808080408040404040468 -:10EE50000808080803080804080808040804080843 -:10EE6000040808080808080808040804040404043E -:10EE70000304030803080404040308040304080843 -:10EE8000040803080808080808080808080808080B -:10EE900008080808080808080808080808080808F2 -:10EEA00008080808080808080808080808080808E2 -:10EEB00008080808080808080808080808080808D2 -:10EEC00008080808080808080808080808080808C2 -:10EED00008080808080808080808080808080808B2 -:10EEE00008080808080808080808080808080808A2 -:10EEF0000808080808080808080808080808080892 -:10EF00000808080808080808000A000100020003B1 -:10EF1000000400050006000700080009000A000BB5 -:10EF2000000C000D000E000F00100000000000009B -:10EF300000000000000000000000000000000000D1 -:10EF400000000000000000000000000000000000C1 -:10EF500000000000000000000000000000000000B1 -:10EF600000000000000000000000000000000000A1 -:10EF70000000000000000000000000000000000091 -:10EF800000000000000000000000000080037FB4CB -:10EF900080037E2080037E2080037E2080037E20ED -:10EFA00080037E2080037E2080037E2080037E20DD -:10EFB00080037E20FFFFFFFFFFFFFFFF49534F2D20 -:10EFC000383835392D310000800333228003334433 -:10EFD0008003316C800331A48003330E8003330C33 -:10EFE000800332BA800332E2800332988003329881 -:10EFF0008003328880033298800332A6800332A6D1 -:10F00000800332988003363480034AA480034AA4E4 -:10F010008003364480034AA480034AA480034AA4A0 -:10F0200080034AA480034AA480034AA4800336488C -:10F030008003371C80034AA48003371880033724D9 -:10F0400080034AA480033842800338468003384650 -:10F0500080033846800338468003384680033846AC -:10F0600080033846800338468003384680034AA42C -:10F0700080034AA480034AA480034AA480034AA4CC -:10F0800080034AA480034AA480034AA480034AA4BC -:10F0900080034AA48003394480033B9680034AA43A -:10F0A00080033B9680034AA480034AA480034AA4B9 -:10F0B00080034AA48003387880034AA480034AA4CA -:10F0C0008003416280034AA480034AA480034AA4C7 -:10F0D00080034AA480034AA48003452680034AA4EF -:10F0E00080034AA48003361A80034AA480034AA4FA -:10F0F00080034AA480034AA480034AA480034AA44C -:10F1000080034AA480034AA480034AA480034AA43B -:10F11000800338988003395A80033B9680033B96DE -:10F1200080033B968003387C8003395A80034AA4CD -:10F1300080034AA48003388080034AA480033FA24E -:10F1400080034178800343A48003389480034AA459 -:10F150008003445880034AA48003453C80034AA4AA -:10F1600080034AA48003476E01020B040B050601CD -:10F170000B01020B040B0506010B0B0B03040B0523 -:10F180000B0B0B0B0B0B040B050B0B0B0B0B0B0BDC -:10F190000B0B0B0B0B05080B040B0B070B0B0B09D5 -:10F1A0000B040B050B0B0B0B0A0B040B0B0B0B0BC4 -:10F1B0000B0B0B040B0B0B0B0B0B0B030B0B0B0BAE -:10F1C0000B0B0B0B080B0B0B0B0B0B0000000000C9 -:10F1D0000000000000010003040000000000010026 -:10F1E000030400000000000007030400000000000A -:10F1F0000000030400000000000000000400000004 -:10F2000000000200030400000000000100050605E4 -:10F2100000000000010005060000000000000003DF -:10F2200004000000000000080000000000000000D2 -:10F2300008000000000000000000000000000000C6 -:10F24000494E4600696E66004E414E006E616E008A -:10F2500020202020202020202020202020202020AE -:10F26000303030303030303030303030303030309E -:10F27000080808080808080808080808080808080E -:10F2800008080808080808080808080808080808FE -:10F2900007080807020808070808060708070508FE -:10F2A0000001010101010101010108080808080825 -:10F2B00008040804040404040808080803080804EF -:10F2C00008080804080408080408080808080808CA -:10F2D00008040804040404040304030803080404E1 -:10F2E00004030804030408080408030808080808BD -:10F2F000080808080808080808080808080808088E -:10F30000080808080808080808080808080808087D -:10F31000080808080808080808080808080808086D -:10F32000080808080808080808080808080808085D -:10F33000080808080808080808080808080808084D -:10F34000080808080808080808080808080808083D -:10F35000080808080808080808080808080808082D -:10F36000080808080808080808080808080808081D -:10F37000496E66696E697479000000004E614E0046 -:10F3800000000005000000190000007D3FF00000B3 -:10F390000000000040240000000000004059000070 -:10F3A00000000000408F40000000000040C38800C3 -:10F3B0000000000040F86A0000000000412E848038 -:10F3C00000000000416312D0000000004197D78484 -:10F3D0000000000041CDCD65000000004202A05FAA -:10F3E0002000000042374876E8000000426D1A9481 -:10F3F000A200000042A2309CE540000042D6BCC4FE -:10F400001E900000430C6BF5263400004341C37985 -:10F4100037E080004376345785D8A00043ABC16DF8 -:10F42000674EC80043E158E460913D004415AF1DAC -:10F4300078B58C40444B1AE4D6E2EF504480F0CFCC -:10F44000064DD59244B52D02C7E14AF644EA784309 -:10F4500079D99DB44341C37937E080004693B8B56C -:10F46000B5056E174D384F03E93FF9F55A827748D5 -:0CF47000F9301D3275154FDD7F73BF3C75 -:10F480000000000455736167653A2074746370204E -:10F490002D742F2D72205B2D6F7074696F6E735DEC -:10F4A00020686F73740A20202020202020202D6CDB -:10F4B0002020202020206C656E677468206F6620F5 -:10F4C00062756673207772697474656E20746F203C -:10F4D0006E6574776F726B202864656661756C74F5 -:10F4E0002031303234290A20202020202020202DD5 -:10F4F0006E2020202020206E756D626572206F6660 -:10F500002062756673207772697474656E20746FFB -:10F51000206E6574776F726B202864656661756C08 -:10F52000742031303234290A20202020202020204D -:10F530002D70202020202020706F7274206E756D39 -:10F5400062657220746F2073656E6420746F20286A -:10F5500064656661756C742032303030290A202071 -:10F560002020202020202D752020202020207564A0 -:10F57000700A20202020202020202D7620202020EE -:10F580002020766572626F73650A000080039954CB -:10F59000000000000000000000000000000000006B -:10F5A000000000000000000000000000000000005B -:10F5B000000000000000000000000000000000004B -:10F5C000000000000000000000000000000000003B -:10F5D000000000000000000000000000000000002B -:10F5E000000000000000000000000000000000001B -:10F5F000000000000000000000000000000000000B -:10F6000000000000000000000000000000000000FA -:10F6100000000000000000000000000000000000EA -:10F6200000000000000000000000000000000000DA -:10F6300000000000000000000000000000000000CA -:10F6400000000000000000000000000000000000BA -:10F6500000000000000000000000000000000000AA -:10F660000000000400000000ABCD00000000196E97 -:10F6700010000000FFFFFFFFFFFFFFFFFF7590007E -:10F68000000001FFFFFFFFFEFFFFFFFFFF751000FF -:10F69000000001FFFFFFFFFE00050000800149ECB4 -:10F6A000800149EC800149EC800149EC0000000038 -:10F6B000000002340000000C02040B0C1216182487 -:10F6C0003048606C000000000000000000000000F6 -:10F6D00000000010010000146D3E86B0FFFFFFFF28 -:10F6E000FFFF0000000003E800000001000000012F -:10F6F00000000320000000010000000000000008DE -:10F70000000000020000006400000000000000058E -:10F710000000000F000000050000000F000013882B -:10F7200000001388000007D00000138800003E800E -:10F73000000000020000000C02040B0C121618243A -:10F740003048606C00000000000000000000000075 -:10F7500000000000000000000D0102030405060780 -:10F7600008090A0B0C0D000000000011FF0000004A -:10F770000000000000000000000000000000000089 -:10F780000000000000000000000000000000FFFF7B -:10F79000FFFFFFFF00000001000000030000000168 -:10F7A0000000000100000000000000010000000156 -:10F7B0000000000100000001000000000000000146 -:10F7C0000000000A00000005000000000000000525 -:10F7D00000000000FFFFFFFF00000001000000002C -:10F7E00000000002FF000000000000000000000018 -:10F7F0000000000000000000000000000000000009 -:10F80000000000000000FFFFFFFFFFFF00000001FD -:10F810000000000300000000000007D000000064AA -:10F8200003010100060200000000000C82848B8CA2 -:10F83000129618243048606C0000000000000000A0 -:10F8400000000000000000000000000100000001B6 -:10F85000000000010014000000000014000007D0A8 -:10F860000000000000000001000000000000000691 -:10F8700000000001FFFFFFFF0A00000064756D6DCE -:10F88000795F7373696400000000000000000000ED -:10F890000000000000000000000000000000000068 -:10F8A000303030313032303330343035303630373C -:10F8B0003038303930613062306330643065306602 -:10F8C0003130313131323133313431353136313714 -:10F8D00031383139316131623163316431653166DA -:10F8E00000000000000000028003D670000000004D -:10F8F000800255EC80025614800256588002569CB5 -:10F90000800256AA800255F4800256B6800256D074 -:10F910008002614C8003EAFD0000003F000000010E -:10F920008003EF2C8003EF4C8003EF6C000000009D -:10F9300000000000000000000000000000000000C7 -:10F940008003ECA4000000000000000000000000A4 -:10F9500000000000000000000000000000000000A7 -:10F960000000000000000000000000000000000097 -:10F970000000000000000000000000000000000087 -:10F980000000000000000000000000000000000077 -:10F990000000000000000000000000000000000067 -:10F9A0000000000000000000000000000000000057 -:10F9B0000000000000000000000000000000000047 -:10F9C0000000000000000000000000000000000037 -:10F9D0000000000000000000000000000000000027 -:10F9E0000000000000000000000000000000000017 -:10F9F0000000000000000000000000000000000007 -:10FA000000000000000000000000000000000000F6 -:10FA1000000004A800000000000000000000059C99 -:10FA20000000059C000005A4000005A4000005AC32 -:10FA3000000005AC000005B4000005B4000005BCE2 -:10FA4000000005BC000005C4000005C4000005CC92 -:10FA5000000005CC000005D4000005D4000005DC42 -:10FA6000000005DC000005E4000005E4000005ECF2 -:10FA7000000005EC000005F4000005F4000005FCA2 -:10FA8000000005FC00000604000006040000060C4F -:10FA90000000060C00000614000006140000061CFE -:10FAA0000000061C00000624000006240000062CAE -:10FAB0000000062C00000634000006340000063C5E -:10FAC0000000063C00000644000006440000064C0E -:10FAD0000000064C00000654000006540000065CBE -:10FAE0000000065C00000664000006640000066C6E -:10FAF0000000066C00000674000006740000067C1E -:10FB00000000067C00000684000006840000068CCD -:10FB10000000068C00000694000006940000069C7D -:10FB20000000069C000006A4000006A4000006AC2D -:10FB3000000006AC000006B4000006B4000006BCDD -:10FB4000000006BC000006C4000006C4000006CC8D -:10FB5000000006CC000006D4000006D4000006DC3D -:10FB6000000006DC000006E4000006E4000006ECED -:10FB7000000006EC000006F4000006F4000006FC9D -:10FB8000000006FC00000704000007040000070C4A -:10FB90000000070C00000714000007140000071CF9 -:10FBA0000000071C00000724000007240000072CA9 -:10FBB0000000072C00000734000007340000073C59 -:10FBC0000000073C00000744000007440000074C09 -:10FBD0000000074C00000754000007540000075CB9 -:10FBE0000000075C00000764000007640000076C69 -:10FBF0000000076C00000774000007740000077C19 -:10FC00000000077C00000784000007840000078CC8 -:10FC10000000078C00000794000007940000079C78 -:10FC20000000079C000007A4000007A4000007AC28 -:10FC3000000007AC000007B4000007B4000007BCD8 -:10FC4000000007BC000007C4000007C4000007CC88 -:10FC5000000007CC000007D4000007D4000007DC38 -:10FC6000000007DC000007E4000007E4000007ECE8 -:10FC7000000007EC000007F4000007F4000007FC98 -:10FC8000000007FC00000804000008040000080C45 -:10FC90000000080C00000814000008140000081CF4 -:10FCA0000000081C00000824000008240000082CA4 -:10FCB0000000082C00000834000008340000083C54 -:10FCC0000000083C00000844000008440000084C04 -:10FCD0000000084C00000854000008540000085CB4 -:10FCE0000000085C00000864000008640000086C64 -:10FCF0000000086C00000874000008740000087C14 -:10FD00000000087C00000884000008840000088CC3 -:10FD10000000088C00000894000008940000089C73 -:10FD20000000089C000008A4000008A4000008AC23 -:10FD3000000008AC000008B4000008B4000008BCD3 -:10FD4000000008BC000008C4000008C4000008CC83 -:10FD5000000008CC000008D4000008D4000008DC33 -:10FD6000000008DC000008E4000008E4000008ECE3 -:10FD7000000008EC000008F4000008F4000008FC93 -:10FD8000000008FC00000904000009040000090C40 -:10FD90000000090C00000914000009140000091CEF -:10FDA0000000091C00000924000009240000092C9F -:10FDB0000000092C00000934000009340000093C4F -:10FDC0000000093C00000944000009440000094CFF -:10FDD0000000094C00000954000009540000095CAF -:10FDE0000000095C00000964000009640000096C5F -:10FDF0000000096C00000974000009740000097C0F -:10FE00000000097C00000984000009840000098CBE -:10FE10000000098C00000994000009940002000011 -:0CFE2000FFFFFFFF0000000100007AFC63 -:040000058000000077 -:00000001FF diff --git a/firmwares/wifishield/wifiHD/src/CONFIG/conf_access.h b/firmwares/wifishield/wifiHD/src/CONFIG/conf_access.h deleted file mode 100644 index 2d38d50..0000000 --- a/firmwares/wifishield/wifiHD/src/CONFIG/conf_access.h +++ /dev/null @@ -1,170 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Memory access control configuration file. - * - * This file contains the possible external configuration of the memory access - * control. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CONF_ACCESS_H_ -#define _CONF_ACCESS_H_ - -#include "compiler.h" -#include "board.h" - - -/*! \name Activation of Logical Unit Numbers - */ -//! @{ -#define LUN_0 DISABLE //!< On-Chip Virtual Memory. -#define LUN_1 ENABLE //!< AT45DBX Data Flash. -#define LUN_2 DISABLE //!< SD/MMC Card over SPI. -#define LUN_3 DISABLE -#define LUN_4 DISABLE -#define LUN_5 DISABLE -#define LUN_6 DISABLE -#define LUN_7 DISABLE -#define LUN_USB DISABLE //!< Host Mass-Storage Memory. -//! @} - -/*! \name LUN 0 Definitions - */ -//! @{ -#define VIRTUAL_MEM LUN_0 -#define LUN_ID_VIRTUAL_MEM LUN_ID_0 -#define LUN_0_INCLUDE "virtual_mem.h" -#define Lun_0_test_unit_ready virtual_test_unit_ready -#define Lun_0_read_capacity virtual_read_capacity -#define Lun_0_wr_protect virtual_wr_protect -#define Lun_0_removal virtual_removal -#define Lun_0_usb_read_10 virtual_usb_read_10 -#define Lun_0_usb_write_10 virtual_usb_write_10 -#define Lun_0_mem_2_ram virtual_mem_2_ram -#define Lun_0_ram_2_mem virtual_ram_2_mem -#define LUN_0_NAME "\"On-Chip Virtual Memory\"" -//! @} - -/*! \name LUN 1 Definitions - */ -//! @{ -#define AT45DBX_MEM LUN_1 -#define LUN_ID_AT45DBX_MEM LUN_ID_1 -#define LUN_1_INCLUDE "at45dbx_mem.h" -#define Lun_1_test_unit_ready at45dbx_test_unit_ready -#define Lun_1_read_capacity at45dbx_read_capacity -#define Lun_1_wr_protect at45dbx_wr_protect -#define Lun_1_removal at45dbx_removal -#define Lun_1_usb_read_10 at45dbx_usb_read_10 -#define Lun_1_usb_write_10 at45dbx_usb_write_10 -#define Lun_1_mem_2_ram at45dbx_df_2_ram -#define Lun_1_ram_2_mem at45dbx_ram_2_df -#define LUN_1_NAME "\"AT45DBX Data Flash\"" -//! @} - -/*! \name LUN 2 Definitions - */ -//! @{ -#define SD_MMC_SPI_MEM LUN_2 -#define LUN_ID_SD_MMC_SPI_MEM LUN_ID_2 -#define LUN_2_INCLUDE "sd_mmc_spi_mem.h" -#define Lun_2_test_unit_ready sd_mmc_spi_test_unit_ready -#define Lun_2_read_capacity sd_mmc_spi_read_capacity -#define Lun_2_wr_protect sd_mmc_spi_wr_protect -#define Lun_2_removal sd_mmc_spi_removal -#define Lun_2_usb_read_10 sd_mmc_spi_usb_read_10 -#define Lun_2_usb_write_10 sd_mmc_spi_usb_write_10 -#define Lun_2_mem_2_ram sd_mmc_spi_mem_2_ram -#define Lun_2_ram_2_mem sd_mmc_spi_ram_2_mem -#define LUN_2_NAME "\"SD/MMC Card over SPI\"" -//! @} - -/*! \name USB LUNs Definitions - */ -//! @{ -#define MEM_USB LUN_USB -#define LUN_ID_MEM_USB LUN_ID_USB -#define LUN_USB_INCLUDE "host_mem.h" -#define Lun_usb_test_unit_ready(lun) host_test_unit_ready(lun) -#define Lun_usb_read_capacity(lun, nb_sect) host_read_capacity(lun, nb_sect) -#define Lun_usb_read_sector_size(lun) host_read_sector_size(lun) -#define Lun_usb_wr_protect(lun) host_wr_protect(lun) -#define Lun_usb_removal() host_removal() -#define Lun_usb_mem_2_ram(addr, ram) host_read_10_ram(addr, ram) -#define Lun_usb_ram_2_mem(addr, ram) host_write_10_ram(addr, ram) -#define LUN_USB_NAME "\"Host Mass-Storage Memory\"" -//! @} - -/*! \name Actions Associated with Memory Accesses - * - * Write here the action to associate with each memory access. - * - * \warning Be careful not to waste time in order not to disturb the functions. - */ -//! @{ -#define memory_start_read_action(nb_sectors) -#define memory_stop_read_action() -#define memory_start_write_action(nb_sectors) -#define memory_stop_write_action() -//! @} - -/*! \name Activation of Interface Features - */ -//! @{ -#define ACCESS_USB DISABLED //!< MEM <-> USB interface. -#define ACCESS_MEM_TO_RAM ENABLED //!< MEM <-> RAM interface. -#define ACCESS_STREAM ENABLED //!< Streaming MEM <-> MEM interface. //mlf -#define ACCESS_STREAM_RECORD DISABLED //!< Streaming MEM <-> MEM interface in record mode. -#define ACCESS_MEM_TO_MEM DISABLED //!< MEM <-> MEM interface. -#define ACCESS_CODEC DISABLED //!< Codec interface. -//! @} - -/*! \name Specific Options for Access Control - */ -//! @{ -#define GLOBAL_WR_PROTECT DISABLED //!< Management of a global write protection. -//! @} - - -#endif // _CONF_ACCESS_H_ diff --git a/firmwares/wifishield/wifiHD/src/CONFIG/conf_at45dbx.h b/firmwares/wifishield/wifiHD/src/CONFIG/conf_at45dbx.h deleted file mode 100644 index 3280e4f..0000000 --- a/firmwares/wifishield/wifiHD/src/CONFIG/conf_at45dbx.h +++ /dev/null @@ -1,83 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT45DBX configuration file. - * - * This file contains the possible external configuration of the AT45DBX. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CONF_AT45DBX_H_ -#define _CONF_AT45DBX_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error conf_at45dbx.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "at45dbx.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! Size of AT45DBX data flash memories to manage. -#define AT45DBX_MEM_SIZE AT45DBX_1MB - -//! Number of AT45DBX components to manage. -#define AT45DBX_MEM_CNT 1 - -//! First chip select used by AT45DBX components on the SPI module instance. -//! AT45DBX_SPI_NPCS0_PIN always corresponds to this first NPCS, whatever it is. -#define AT45DBX_SPI_FIRST_NPCS AT45DBX_SPI_NPCS - -//! SPI master speed in Hz. -#define AT45DBX_SPI_MASTER_SPEED 12000000 - -//! Number of bits in each SPI transfer. -#define AT45DBX_SPI_BITS 8 - - -#endif // _CONF_AT45DBX_H_ diff --git a/firmwares/wifishield/wifiHD/src/CONFIG/conf_ebi.h b/firmwares/wifishield/wifiHD/src/CONFIG/conf_ebi.h deleted file mode 100644 index aacdb13..0000000 --- a/firmwares/wifishield/wifiHD/src/CONFIG/conf_ebi.h +++ /dev/null @@ -1,108 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief CONF_EBI EBI/SMC driver for AVR32 UC3. - * - * \note The values defined in this file are device-specific. See the device - * datasheet for further information. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SMC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CONF_EBI_H_ -#define _CONF_EBI_H_ - -#include "compiler.h" -#include "board.h" - -#if (ET024006DHU_SMC_USE_NCS == 0) -#define SMC_USE_NCS0 -#define SMC_COMPONENT_CS0 ET024006DHU_SMC_COMPONENT_CS -#else - -#if (ET024006DHU_SMC_USE_NCS == 2) -#define SMC_USE_NCS2 -#define SMC_COMPONENT_CS2 ET024006DHU_SMC_COMPONENT_CS - -#else -#error This board is not supported -#endif -#endif - -#define EBI_DATA_0 ET024006DHU_EBI_DATA_0 -#define EBI_DATA_1 ET024006DHU_EBI_DATA_1 -#define EBI_DATA_2 ET024006DHU_EBI_DATA_2 -#define EBI_DATA_3 ET024006DHU_EBI_DATA_3 -#define EBI_DATA_4 ET024006DHU_EBI_DATA_4 -#define EBI_DATA_5 ET024006DHU_EBI_DATA_5 -#define EBI_DATA_6 ET024006DHU_EBI_DATA_6 -#define EBI_DATA_7 ET024006DHU_EBI_DATA_7 -#define EBI_DATA_8 ET024006DHU_EBI_DATA_8 -#define EBI_DATA_9 ET024006DHU_EBI_DATA_9 -#define EBI_DATA_10 ET024006DHU_EBI_DATA_10 -#define EBI_DATA_11 ET024006DHU_EBI_DATA_11 -#define EBI_DATA_12 ET024006DHU_EBI_DATA_12 -#define EBI_DATA_13 ET024006DHU_EBI_DATA_13 -#define EBI_DATA_14 ET024006DHU_EBI_DATA_14 -#define EBI_DATA_15 ET024006DHU_EBI_DATA_15 - -#if BOARD==EVK1105 -#ifdef EVK1105_REV3 -#define EBI_ADDR_19 AVR32_EBI_ADDR_19 -#define EBI_NCS_2 ET024006DHU_EBI_NCS -#else -#define EBI_ADDR_21 ET024006DHU_EBI_ADDR_21 -#define EBI_NCS_0 ET024006DHU_EBI_NCS -#endif -#elif BOARD == UC3C_EK -#define EBI_ADDR_22 AVR32_EBI_ADDR_22 -#define EBI_NCS_0 ET024006DHU_EBI_NCS -#elif BOARD == EVK1104 -#define EBI_ADDR_21 ET024006DHU_EBI_ADDR_21 -#define EBI_NCS_0 ET024006DHU_EBI_NCS -#endif - - -#define EBI_NWE0 ET024006DHU_EBI_NWE -#define EBI_NRD ET024006DHU_EBI_NRD - -#endif // _CONF_EBI_H_ diff --git a/firmwares/wifishield/wifiHD/src/CONFIG/conf_sd_mmc_spi.h b/firmwares/wifishield/wifiHD/src/CONFIG/conf_sd_mmc_spi.h deleted file mode 100644 index 94b55e1..0000000 --- a/firmwares/wifishield/wifiHD/src/CONFIG/conf_sd_mmc_spi.h +++ /dev/null @@ -1,73 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SD/MMC configuration file. - * - * This file contains the possible external configuration of the SD/MMC. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CONF_SD_MMC_SPI_H_ -#define _CONF_SD_MMC_SPI_H_ - - -#include "conf_access.h" - -#if SD_MMC_SPI_MEM == DISABLE - #error conf_sd_mmc_spi.h is #included although SD_MMC_SPI_MEM is disabled -#endif - - -#include "sd_mmc_spi.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! SPI master speed in Hz. -#define SD_MMC_SPI_MASTER_SPEED 12000000 - -//! Number of bits in each SPI transfer. -#define SD_MMC_SPI_BITS 8 - - -#endif // _CONF_SD_MMC_SPI_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x deleted file mode 100644 index c127121..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x +++ /dev/null @@ -1,74 +0,0 @@ -/* This file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AVR32 UC3 ISP trampoline. - * - * In order to be able to program a project with both BatchISP and JTAGICE mkII - * without having to take the general-purpose fuses into consideration, add this - * file to the project and change the program entry point to _trampoline. - * - * The pre-programmed ISP will be erased if JTAGICE mkII is used. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32UC devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (C) 2006-2008, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - - -#include "conf_isp.h" - - -//! @{ -//! \verbatim - - - // This must be linked @ 0x80000000 if it is to be run upon reset. - .section .reset, "ax", @progbits - - - .global _trampoline - .type _trampoline, @function -_trampoline: - // Jump to program start. - rjmp program_start - - .org PROGRAM_START_OFFSET -program_start: - // Jump to the C runtime startup routine. - lda.w pc, _stext - - -//! \endverbatim -//! @} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h deleted file mode 100644 index e687723..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h +++ /dev/null @@ -1,237 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board header file. - * - * This file contains definitions and services related to the features of the - * EVK1100 board rev. B and C. - * - * To use this board, define BOARD=EVK1100. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _ARDUINO_H_ -#define _ARDUINO_H_ - -#include "compiler.h" - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. -# include "led.h" -#endif // __AVR32_ABI_COMPILER__ - - -/*! \name Oscillator Definitions - */ -//! @{ - -// RCOsc has no custom calibration by default. Set the following definition to -// the appropriate value if a custom RCOsc calibration has been applied to your -// part. -//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz. - -#define FOSC32 32768 //!< Osc32 frequency: Hz. -#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods. - -#define FOSC0 12000000 //!< Osc0 frequency: Hz. -#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods. - -// Osc1 crystal is not mounted by default. Set the following definitions to the -// appropriate values if a custom Osc1 crystal is mounted on your board. -//#define FOSC1 12000000 //!< Osc1 frequency: Hz. -//#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods. - -//! @} - - -//! Number of LEDs. -#define LED_COUNT 0 - -/*! \name GPIO Connections of LEDs - */ -//! @{ -#define LED0_GPIO AVR32_PIN_PB19 -#define LED1_GPIO AVR32_PIN_PB20 -#define LED2_GPIO AVR32_PIN_PB21 -#define DEB_PIN_GPIO AVR32_PIN_PA20 -#define DEB2_PIN_GPIO AVR32_PIN_PB00 -//! @} - -/*! \name PWM Channels of LEDs - */ -//! @{ -#define LED0_PWM 0 -#define LED1_PWM 1 -#define LED2_PWM 2 -//! @} - -/*! \name PWM Functions of LEDs - */ -//! @{ -#define LED0_PWM_FUNCTION AVR32_PWM_0_FUNCTION -#define LED1_PWM_FUNCTION AVR32_PWM_1_FUNCTION -#define LED2_PWM_FUNCTION AVR32_PWM_2_FUNCTION -//! @} - -/*! \name Color Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED_MONO0_GREEN LED0 -#define LED_MONO1_RED LED1 -#define LED_MONO2_BLU LED2 -//! @} - -#if 0 -/*! \name SPI Connections of the DIP204 LCD - */ -//! @{ -#define DIP204_SPI (&AVR32_SPI1) -#define DIP204_SPI_NPCS 2 -#define DIP204_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define DIP204_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define DIP204_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define DIP204_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define DIP204_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define DIP204_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define DIP204_SPI_NPCS_PIN AVR32_SPI1_NPCS_2_0_PIN -#define DIP204_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION -//! @} - -/*! \name GPIO and PWM Connections of the DIP204 LCD Backlight - */ -//! @{ -#define DIP204_BACKLIGHT_PIN AVR32_PIN_PB18 -#define DIP204_PWM_CHANNEL 6 -#define DIP204_PWM_PIN AVR32_PWM_6_PIN -#define DIP204_PWM_FUNCTION AVR32_PWM_6_FUNCTION -//! @} -#endif - -/*! \name SPI Connections of the AT45DBX Data Flash Memory - */ -//! @{ -#define AT45DBX_SPI (&AVR32_SPI1) -#define AT45DBX_SPI_NPCS 2 -#define AT45DBX_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define AT45DBX_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define AT45DBX_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define AT45DBX_SPI_NPCS2_PIN AVR32_SPI1_NPCS_2_0_PIN -#define AT45DBX_SPI_NPCS2_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION -#define AT45DBX_CHIP_RESET AVR32_PIN_PA02 -//! @} - - -/*! \name GPIO and SPI Connections of the SD/MMC Connector - */ -//! @{ -//#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02 -//#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA07 -#define SD_MMC_SPI (&AVR32_SPI1) -#define SD_MMC_SPI_NPCS 1 -#define SD_MMC_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define SD_MMC_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define SD_MMC_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define SD_MMC_SPI_NPCS_PIN AVR32_SPI1_NPCS_1_0_PIN -#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_1_0_FUNCTION -//! @} - -/* Timer Counter to generate clock for WiFi chip*/ -# define WIFI_TC (&AVR32_TC) -# define WIFI_TC_CHANNEL_ID 0 -# define WIFI_TC_CHANNEL_PIN AVR32_TC_A0_0_0_PIN -# define WIFI_TC_CHANNEL_FUNCTION AVR32_TC_A0_0_0_FUNCTION -// Note that TC_A0_0_0 pin is pin 6 (PB23) on AT32UC3A1512 QFP100. - -/* Pin related to WiFi chip communication */ -#ifndef USE_POLL - #define USE_POLL -#endif - #define SPI_CS 0 - #define AVR32_SPI AVR32_SPI1 - #define GPIO_IRQ_PIN AVR32_PIN_PA03 - #define GPIO_IRQ AVR32_GPIO_IRQ_7 - #define GPIO_W_RESET_PIN AVR32_PIN_PA07 - #define GPIO_W_SHUTDOWN_PIN AVR32_PIN_PA09 - -/* Pin related to shield communication */ - #define ARDUINO_HANDSHAKE_PIN AVR32_PIN_PA25 - #define ARDUINO_EXTINT_PIN AVR32_PIN_PA04 //not used - - #define AVR32_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX - #define AVR32_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX - - -#if 0 -/*! \name TWI Connections of the Spare TWI Connector - */ -//! @{ -#define SPARE_TWI (&AVR32_TWI) -#define SPARE_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define SPARE_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define SPARE_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define SPARE_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -//! @} - - -/*! \name SPI Connections of the Spare SPI Connector - */ -//! @{ -#define SPARE_SPI (&AVR32_SPI0) -#define SPARE_SPI_NPCS 0 -#define SPARE_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define SPARE_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define SPARE_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define SPARE_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define SPARE_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define SPARE_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define SPARE_SPI_NPCS_PIN AVR32_SPI0_NPCS_0_0_PIN -#define SPARE_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION -//! @} -#endif - -#endif // _ARDUINO_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c deleted file mode 100644 index d7cd439..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c +++ /dev/null @@ -1,346 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1100 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "preprocessor.h" -#include "compiler.h" -#include "arduino.h" -#include "led.h" - - -//! Structure describing LED hardware connections. -typedef const struct -{ - struct - { - U32 PORT; //!< LED GPIO port. - U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port. - } GPIO; //!< LED GPIO descriptor. - struct - { - S32 CHANNEL; //!< LED PWM channel (< 0 if N/A). - S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A). - } PWM; //!< LED PWM descriptor. -} tLED_DESCRIPTOR; - - -//! Hardware descriptors of all LEDs. -static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] = -{ -#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \ - { \ - {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\ - {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \ - }, - MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~) -#undef INSERT_LED_DESCRIPTOR -}; - - -//! Saved state of all LEDs. -static volatile U32 LED_State = (1 << LED_COUNT) - 1; - - -U32 LED_Read_Display(void) -{ - return LED_State; -} - - -void LED_Display(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor; - volatile avr32_gpio_port_t *led_gpio_port; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - LED_State = leds; - - // For all LEDs... - for (led_descriptor = &LED_DESCRIPTOR[0]; - led_descriptor < LED_DESCRIPTOR + LED_COUNT; - led_descriptor++) - { - // Set the LED to the requested state. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - } -} - - -U32 LED_Read_Display_Mask(U32 mask) -{ - return Rd_bits(LED_State, mask); -} - - -void LED_Display_Mask(U32 mask, U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - mask &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Wr_bits(LED_State, mask, leds); - - // While there are specified LEDs left to manage... - while (mask) - { - // Select the next specified LED and set it to the requested state. - led_shift = 1 + ctz(mask); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - leds >>= led_shift - 1; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - mask >>= led_shift; - } -} - - -Bool LED_Test(U32 leds) -{ - return Tst_bits(LED_State, leds); -} - - -void LED_Off(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Clr_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it off. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_On(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Set_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it on. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_Toggle(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Tgl_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and toggle it. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -U32 LED_Read_Display_Field(U32 field) -{ - return Rd_bitfield(LED_State, field); -} - - -void LED_Display_Field(U32 field, U32 leds) -{ - // Move the bit-field to the appropriate position for the bit-mask. - LED_Display_Mask(field, leds << ctz(field)); -} - - -U8 LED_Get_Intensity(U32 led) -{ - tLED_DESCRIPTOR *led_descriptor; - - // Check that the argument value is valid. - led = ctz(led); - led_descriptor = &LED_DESCRIPTOR[led]; - if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0; - - // Return the duty cycle value if the LED PWM channel is enabled, else 0. - return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ? - AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0; -} - - -void LED_Set_Intensity(U32 leds, U8 intensity) -{ - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_pwm_channel_t *led_pwm_channel; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // For each specified LED... - for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift) - { - // Select the next specified LED and check that it has a PWM channel. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - if (led_descriptor->PWM.CHANNEL < 0) continue; - - // Initialize or update the LED PWM channel. - led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL]; - if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL))) - { - led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) & - ~(AVR32_PWM_CALG_MASK | - AVR32_PWM_CPOL_MASK | - AVR32_PWM_CPD_MASK); - led_pwm_channel->cprd = 0x000000FF; - led_pwm_channel->cdty = intensity; - AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL; - } - else - { - AVR32_PWM.isr; - while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL))); - led_pwm_channel->cupd = intensity; - } - - // Switch the LED pin to its PWM function. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (led_descriptor->PWM.FUNCTION & 0x1) - { - led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK; - } - if (led_descriptor->PWM.FUNCTION & 0x2) - { - led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK; - } -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h deleted file mode 100644 index a577124..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h +++ /dev/null @@ -1,191 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1100 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _LED_H_ -#define _LED_H_ - -#include "compiler.h" - - -/*! \name Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED0 0x01 -#define LED1 0x02 -#define LED2 0x04 -#define LED3 0x08 -#define LED4 0x10 -#define LED5 0x20 -#define LED6 0x40 -#define LED7 0x80 -//! @} - - -/*! \brief Gets the last state of all LEDs set through the LED API. - * - * \return State of all LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display(void); - -/*! \brief Sets the state of all LEDs. - * - * \param leds New state of all LEDs (1 bit per LED). - * - * \note The pins of all LEDs are set to GPIO output mode. - */ -extern void LED_Display(U32 leds); - -/*! \brief Gets the last state of the specified LEDs set through the LED API. - * - * \param mask LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Mask(U32 mask); - -/*! \brief Sets the state of the specified LEDs. - * - * \param mask LEDs of which to set the state (1 bit per LED). - * - * \param leds New state of the specified LEDs (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Mask(U32 mask, U32 leds); - -/*! \brief Tests the last state of the specified LEDs set through the LED API. - * - * \param leds LEDs of which to test the state (1 bit per LED). - * - * \return \c TRUE if at least one of the specified LEDs has a state on, else - * \c FALSE. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern Bool LED_Test(U32 leds); - -/*! \brief Turns off the specified LEDs. - * - * \param leds LEDs to turn off (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Off(U32 leds); - -/*! \brief Turns on the specified LEDs. - * - * \param leds LEDs to turn on (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_On(U32 leds); - -/*! \brief Toggles the specified LEDs. - * - * \param leds LEDs to toggle (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Toggle(U32 leds); - -/*! \brief Gets as a bit-field the last state of the specified LEDs set through - * the LED API. - * - * \param field LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED, beginning with the first - * specified LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Field(U32 field); - -/*! \brief Sets as a bit-field the state of the specified LEDs. - * - * \param field LEDs of which to set the state (1 bit per LED). - * \param leds New state of the specified LEDs (1 bit per LED, beginning with - * the first specified LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Field(U32 field, U32 leds); - -/*! \brief Gets the intensity of the specified LED. - * - * \param led LED of which to get the intensity (1 bit per LED; only the least - * significant set bit is used). - * - * \return Intensity of the specified LED (0x00 to 0xFF). - * - * \warning The PWM channel of the specified LED is supposed to be used only by - * this module. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U8 LED_Get_Intensity(U32 led); - -/*! \brief Sets the intensity of the specified LEDs. - * - * \param leds LEDs of which to set the intensity (1 bit per LED). - * \param intensity New intensity of the specified LEDs (0x00 to 0xFF). - * - * \warning The PWM channels of the specified LEDs are supposed to be used only - * by this module. - * - * \note The pins of the specified LEDs are set to PWM output mode. - */ -extern void LED_Set_Intensity(U32 leds, U8 intensity); - - -#endif // _LED_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h deleted file mode 100644 index edda44c..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h +++ /dev/null @@ -1,433 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board header file. - * - * This file contains definitions and services related to the features of the - * EVK1105 board rev. B. - * - * To use this board, define BOARD=EVK1105. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _EVK1105_H_ -#define _EVK1105_H_ - -#ifdef EVK1105_REV3 -# include "evk1105_rev3.h" -#else - -#include "compiler.h" - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. -# include "led.h" -#endif // __AVR32_ABI_COMPILER__ - - -/*! \name Oscillator Definitions - */ -//! @{ - -// RCOsc has no custom calibration by default. Set the following definition to -// the appropriate value if a custom RCOsc calibration has been applied to your -// part. -//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz. - -#define FOSC32 32768 //!< Osc32 frequency: Hz. -#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods. - -#define FOSC0 12000000 //!< Osc0 frequency: Hz. -#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods. - -#define FOSC1 11289600 //!< Osc1 frequency: Hz -#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods. - - -//! @} - - -/*! \name SDRAM Definitions - */ -//! @{ - -//! Part header file of used SDRAM(s). -#define SDRAM_PART_HDR "MT48LC16M16A2TG7E/mt48lc16m16a2tg7e.h" - -//! Data bus width to use the SDRAM(s) with (16 or 32 bits; always 16 bits on -//! UC3). -#define SDRAM_DBW 16 -//! @} - - -/*! \name USB Definitions - */ -//! @{ -//! Multiplexed pin used for USB_ID: AVR32_USBB_USB_ID_x_x. -//! To be selected according to the AVR32_USBB_USB_ID_x_x_PIN and -//! AVR32_USBB_USB_ID_x_x_FUNCTION definitions from . -#define AVR32_USBB_USB_ID_0_2_PIN 21 -#define AVR32_USBB_USB_ID_0_2_FUNCTION 2 -#define USB_ID AVR32_USBB_USB_ID_0_2 - -//! Multiplexed pin used for USB_VBOF: AVR32_USBB_USB_VBOF_x_x. -//! To be selected according to the AVR32_USBB_USB_VBOF_x_x_PIN and -//! AVR32_USBB_USB_VBOF_x_x_FUNCTION definitions from . -# define USB_VBOF AVR32_USBB_USB_VBOF_0_1 - - -//! Active level of the USB_VBOF output pin. -# define USB_VBOF_ACTIVE_LEVEL LOW - -//! USB overcurrent detection pin. -# define USB_OVERCURRENT_DETECT_PIN AVR32_PIN_PX15 - -//! @} - - -//! GPIO connection of the MAC PHY PWR_DOWN/INT signal. -# define MACB_INTERRUPT_PIN AVR32_PIN_PA26 - - - -//! Number of LEDs. -#define LED_COUNT 4 - -/*! \name GPIO Connections of LEDs - */ -//! @{ -# define LED0_GPIO AVR32_PIN_PB27 -# define LED1_GPIO AVR32_PIN_PB28 -# define LED2_GPIO AVR32_PIN_PA05 -# define LED3_GPIO AVR32_PIN_PA06 -//! @} - -/*! \name Color Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED_MONO0_GREEN LED0 -#define LED_MONO1_GREEN LED1 -#define LED_MONO2_GREEN LED2 -#define LED_MONO3_GREEN LED3 -//! @} - -/*! \name PWM Channels of LEDs - */ -//! @{ -#define LED0_PWM 4 -#define LED1_PWM 5 -#define LED2_PWM (-1) -#define LED3_PWM (-1) -//! @} - -/*! \name PWM Functions of LEDs - */ -//! @{ -/* TODO: Implement PWM functionality */ -#define LED0_PWM_FUNCTION (-1)//AVR32_PWM_0_FUNCTION -#define LED1_PWM_FUNCTION (-1)//AVR32_PWM_1_FUNCTION -#define LED2_PWM_FUNCTION (-1) -#define LED3_PWM_FUNCTION (-1) -//! @} - -//! External interrupt connection of touch sensor. -#define QT1081_EIC_EXTINT_PIN AVR32_EIC_EXTINT_1_PIN -#define QT1081_EIC_EXTINT_FUNCTION AVR32_EIC_EXTINT_1_FUNCTION -#define QT1081_EIC_EXTINT_IRQ AVR32_EIC_IRQ_1 -#define QT1081_EIC_EXTINT_INT AVR32_EIC_INT1 -/*! \name Touch sensor low power mode select - */ -#define QT1081_LP_MODE AVR32_PIN_PB29 - -/*! \name GPIO Connections of touch buttons - */ -//! @{ -#define QT1081_TOUCH_SENSOR_0 AVR32_PIN_PB22 -#define QT1081_TOUCH_SENSOR_0_PRESSED 1 -#define QT1081_TOUCH_SENSOR_1 AVR32_PIN_PB23 -#define QT1081_TOUCH_SENSOR_1_PRESSED 1 -#define QT1081_TOUCH_SENSOR_2 AVR32_PIN_PB24 -#define QT1081_TOUCH_SENSOR_2_PRESSED 1 -#define QT1081_TOUCH_SENSOR_3 AVR32_PIN_PB25 -#define QT1081_TOUCH_SENSOR_3_PRESSED 1 -#define QT1081_TOUCH_SENSOR_4 AVR32_PIN_PB26 -#define QT1081_TOUCH_SENSOR_4_PRESSED 1 - -#define QT1081_TOUCH_SENSOR_ENTER QT1081_TOUCH_SENSOR_4 -#define QT1081_TOUCH_SENSOR_ENTER_PRESSED QT1081_TOUCH_SENSOR_4_PRESSED -#define QT1081_TOUCH_SENSOR_LEFT QT1081_TOUCH_SENSOR_3 -#define QT1081_TOUCH_SENSOR_LEFT_PRESSED QT1081_TOUCH_SENSOR_3_PRESSED -#define QT1081_TOUCH_SENSOR_RIGHT QT1081_TOUCH_SENSOR_2 -#define QT1081_TOUCH_SENSOR_RIGHT_PRESSED QT1081_TOUCH_SENSOR_2_PRESSED -#define QT1081_TOUCH_SENSOR_UP QT1081_TOUCH_SENSOR_0 -#define QT1081_TOUCH_SENSOR_UP_PRESSED QT1081_TOUCH_SENSOR_0_PRESSED -#define QT1081_TOUCH_SENSOR_DOWN QT1081_TOUCH_SENSOR_1 -#define QT1081_TOUCH_SENSOR_DOWN_PRESSED QT1081_TOUCH_SENSOR_1_PRESSED -//! @} - -/*! \name SPI Connections of the AT45DBX Data Flash Memory - */ -//! @{ -#define AT45DBX_SPI (&AVR32_SPI0) -#define AT45DBX_SPI_NPCS 0 -#define AT45DBX_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define AT45DBX_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define AT45DBX_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define AT45DBX_SPI_NPCS0_PIN AVR32_SPI0_NPCS_0_0_PIN -#define AT45DBX_SPI_NPCS0_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION -//! @} - -/*! \name GPIO and SPI Connections of the SD/MMC Connector - */ -//! @{ -#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02 -#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA18 -#define SD_MMC_SPI (&AVR32_SPI0) -#define SD_MMC_SPI_NPCS 1 -#define SD_MMC_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define SD_MMC_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define SD_MMC_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define SD_MMC_SPI_NPCS_PIN AVR32_SPI0_NPCS_1_0_PIN -#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_1_0_FUNCTION -//! @} - - -/*! \name TWI expansion - */ -//! @{ -#define EXPANSION_TWI (&AVR32_TWI) -#define EXPANSION_RESET AVR32_PIN_PX16 -#define EXPANSION_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define EXPANSION_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define EXPANSION_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define EXPANSION_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -//! @} - -/*! \name Wireless expansion - */ - -#define WEXPANSION_EXTINT_PIN AVR32_EIC_EXTINT_8_PIN -#define WEXPANSION_EXTINT_FUNCTION AVR32_EIC_EXTINT_8_FUNCTION -#define WEXPANSION_GPIO1 AVR32_PIN_PB30 -#define WEXPANSION_GPIO2 AVR32_PIN_PB31 - -#define WEXPANSION_SPI (&AVR32_SPI0) -#define WEXPANSION_SPI_NPCS 2 -#define WEXPANSION_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define WEXPANSION_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define WEXPANSION_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define WEXPANSION_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define WEXPANSION_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define WEXPANSION_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define WEXPANSION_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN -#define WEXPANSION_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION - -//! @} - -/*! \name ET024006DHU TFT display - */ -//! @{ - -#define ET024006DHU_TE_PIN AVR32_PIN_PX19 -#define ET024006DHU_RESET_PIN AVR32_PIN_PX22 -#define ET024006DHU_BL_PIN AVR32_PWM_6_PIN -#define ET024006DHU_BL_FUNCTION AVR32_PWM_6_FUNCTION -#define ET024006DHU_DNC_PIN AVR32_EBI_ADDR_21_1_PIN -#define ET024006DHU_DNC_FUNCTION AVR32_EBI_ADDR_21_1_FUNCTION -#define ET024006DHU_EBI_NCS_PIN AVR32_EBI_NCS_0_1_PIN -#define ET024006DHU_EBI_NCS_FUNCTION AVR32_EBI_NCS_0_1_FUNCTION - -//! @} -/*! \name Optional SPI connection to the TFT - */ -//! @{ - -#define ET024006DHU_SPI (&AVR32_SPI0) -#define ET024006DHU_SPI_NPCS 3 -#define ET024006DHU_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define ET024006DHU_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define ET024006DHU_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define ET024006DHU_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define ET024006DHU_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define ET024006DHU_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define ET024006DHU_SPI_NPCS_PIN AVR32_SPI1_NPCS_3_0_PIN -#define ET024006DHU_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_3_0_FUNCTION - -//! @} - - -/*! \name Audio amplifier connection to the DAC - */ -//! @{ - -#define TPA6130_ABDAC (&AVR32_ABDAC) - -#define TPA6130_DATA0_PIN AVR32_ABDAC_DATA_0_1_PIN -#define TPA6130_DATA0_FUNCTION AVR32_ABDAC_DATA_0_1_FUNCTION -#define TPA6130_DATAN0_PIN AVR32_ABDAC_DATAN_0_1_PIN -#define TPA6130_DATAN0_FUNCTION AVR32_ABDAC_DATAN_0_1_FUNCTION -#define TPA6130_DATA1_PIN AVR32_ABDAC_DATA_1_1_PIN -#define TPA6130_DATA1_FUNCTION AVR32_ABDAC_DATA_1_1_FUNCTION -#define TPA6130_DATAN1_PIN AVR32_ABDAC_DATAN_1_1_PIN -#define TPA6130_DATAN1_FUNCTION AVR32_ABDAC_DATAN_1_1_FUNCTION - -#define TPA6130_ABDAC_PDCA_PID AVR32_PDCA_PID_ABDAC_TX -#define TPA6130_ABDAC_PDCA_CHANNEL 0 -#define TPA6130_ABDAC_PDCA_IRQ AVR32_PDCA_IRQ_0 -#define TPA6130_ABDAC_PDCA_INT_LEVEL AVR32_INTC_INT3 - -#define TPA6130_TWI (&AVR32_TWI) -#define TPA6130_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define TPA6130_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define TPA6130_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define TPA6130_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION - -//! }@ -/*! \name TI TLV320AIC23B sound chip - */ -//! @{ -#define TLV320_SSC (&AVR32_SSC) -#define TLV320_SSC_TX_CLOCK_PIN AVR32_SSC_TX_CLOCK_0_PIN -#define TLV320_SSC_TX_CLOCK_FUNCTION AVR32_SSC_TX_CLOCK_0_FUNCTION -#define TLV320_SSC_TX_DATA_PIN AVR32_SSC_TX_DATA_0_PIN -#define TLV320_SSC_TX_DATA_FUNCTION AVR32_SSC_TX_DATA_0_FUNCTION -#define TLV320_SSC_TX_FRAME_SYNC_PIN AVR32_SSC_TX_FRAME_SYNC_0_PIN -#define TLV320_SSC_TX_FRAME_SYNC_FUNCTION AVR32_SSC_TX_FRAME_SYNC_0_FUNCTION - -#define TLV320_TWI (&AVR32_TWI) -#define TLV320_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define TLV320_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define TLV320_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define TLV320_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION - -#define TLV320_PM_GCLK_PIN AVR32_PM_GCLK_0_0_PIN -#define TLV320_PM_GCLK_FUNCTION AVR32_PM_GCLK_0_0_FUNCTION -//! @} - -////! \name SPI: Apple Authentication Chip Hardware Connections -////! @{ -#define IPOD_AUTH_CHIP_SPI (&AVR32_SPI0) -#define IPOD_AUTH_CHIP_SPI_IRQ AVR32_SPI0_IRQ -#define IPOD_AUTH_CHIP_SPI_NPCS 2 -#define IPOD_AUTH_CHIP_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN -#define IPOD_AUTH_CHIP_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_N_RESET_PIN AVR32_PIN_PB30 -#define IPOD_AUTH_CHIP_SPI_CP_READY_PIN AVR32_PIN_PB31 -//! }@ - -/*! \name Connections of the iPOD Authentication Coprocessor - */ -//! @{ - -#define IPOD_AUTH_CHIP_TWI (&AVR32_TWI) -#define IPOD_AUTH_CHIP_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define IPOD_AUTH_CHIP_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define IPOD_AUTH_CHIP_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define IPOD_AUTH_CHIP_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -#define IPOD_AUTH_CHIP_TWI_N_RESET_PIN AVR32_PIN_PX16 - -//! @} - -/*! \name USART connection to the UC3B board controller - */ -//! @{ - -#define USART0_RXD_PIN AVR32_USART0_RXD_0_0_PIN -#define USART0_RXD_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION -#define USART0_TXD_PIN AVR32_USART0_TXD_0_0_PIN -#define USART0_TXD_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION -#define USART0_RTS_PIN AVR32_USART0_RTS_0_0_PIN -#define USART0_RTS_FUNCTION AVR32_USART0_RTS_0_0_FUNCTION -#define USART0_CTS_PIN AVR32_USART0_CTS_0_0_PIN -#define USART0_CTS_FUNCTION AVR32_USART0_CTS_0_0_FUNCTION - -//! @} - -#define ADC_VEXT_PIN AVR32_ADC_AD_7_PIN -#define ADC_VEXT_FUNCTION AVR32_ADC_AD_7_FUNCTION - -/*! \name LCD Connections of the ET024006DHU display - */ -//! @{ -#define ET024006DHU_SMC_USE_NCS 0 -#define ET024006DHU_SMC_COMPONENT_CS "smc_et024006dhu.h" - -#define ET024006DHU_EBI_DATA_0 AVR32_EBI_DATA_0 -#define ET024006DHU_EBI_DATA_1 AVR32_EBI_DATA_1 -#define ET024006DHU_EBI_DATA_2 AVR32_EBI_DATA_2 -#define ET024006DHU_EBI_DATA_3 AVR32_EBI_DATA_3 -#define ET024006DHU_EBI_DATA_4 AVR32_EBI_DATA_4 -#define ET024006DHU_EBI_DATA_5 AVR32_EBI_DATA_5 -#define ET024006DHU_EBI_DATA_6 AVR32_EBI_DATA_6 -#define ET024006DHU_EBI_DATA_7 AVR32_EBI_DATA_7 -#define ET024006DHU_EBI_DATA_8 AVR32_EBI_DATA_8 -#define ET024006DHU_EBI_DATA_9 AVR32_EBI_DATA_9 -#define ET024006DHU_EBI_DATA_10 AVR32_EBI_DATA_10 -#define ET024006DHU_EBI_DATA_11 AVR32_EBI_DATA_11 -#define ET024006DHU_EBI_DATA_12 AVR32_EBI_DATA_12 -#define ET024006DHU_EBI_DATA_13 AVR32_EBI_DATA_13 -#define ET024006DHU_EBI_DATA_14 AVR32_EBI_DATA_14 -#define ET024006DHU_EBI_DATA_15 AVR32_EBI_DATA_15 - -#define ET024006DHU_EBI_ADDR_21 AVR32_EBI_ADDR_21_1 - -#define ET024006DHU_EBI_NWE AVR32_EBI_NWE0_0 -#define ET024006DHU_EBI_NRD AVR32_EBI_NRD_0 -#define ET024006DHU_EBI_NCS AVR32_EBI_NCS_0_1 -//! @} - - -#endif // !EVK1105_REVA - -#endif // _EVK1105_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c deleted file mode 100644 index 561652a..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c +++ /dev/null @@ -1,346 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1105 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "preprocessor.h" -#include "compiler.h" -#include "evk1105.h" -#include "led.h" - - -//! Structure describing LED hardware connections. -typedef const struct -{ - struct - { - U32 PORT; //!< LED GPIO port. - U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port. - } GPIO; //!< LED GPIO descriptor. - struct - { - S32 CHANNEL; //!< LED PWM channel (< 0 if N/A). - S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A). - } PWM; //!< LED PWM descriptor. -} tLED_DESCRIPTOR; - - -//! Hardware descriptors of all LEDs. -static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] = -{ -#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \ - { \ - {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\ - {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \ - }, - MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~) -#undef INSERT_LED_DESCRIPTOR -}; - - -//! Saved state of all LEDs. -static volatile U32 LED_State = (1 << LED_COUNT) - 1; - - -U32 LED_Read_Display(void) -{ - return LED_State; -} - - -void LED_Display(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor; - volatile avr32_gpio_port_t *led_gpio_port; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - LED_State = leds; - - // For all LEDs... - for (led_descriptor = &LED_DESCRIPTOR[0]; - led_descriptor < LED_DESCRIPTOR + LED_COUNT; - led_descriptor++) - { - // Set the LED to the requested state. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - } -} - - -U32 LED_Read_Display_Mask(U32 mask) -{ - return Rd_bits(LED_State, mask); -} - - -void LED_Display_Mask(U32 mask, U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - mask &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Wr_bits(LED_State, mask, leds); - - // While there are specified LEDs left to manage... - while (mask) - { - // Select the next specified LED and set it to the requested state. - led_shift = 1 + ctz(mask); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - leds >>= led_shift - 1; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - mask >>= led_shift; - } -} - - -Bool LED_Test(U32 leds) -{ - return Tst_bits(LED_State, leds); -} - - -void LED_Off(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Clr_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it off. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_On(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Set_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it on. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_Toggle(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Tgl_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and toggle it. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -U32 LED_Read_Display_Field(U32 field) -{ - return Rd_bitfield(LED_State, field); -} - - -void LED_Display_Field(U32 field, U32 leds) -{ - // Move the bit-field to the appropriate position for the bit-mask. - LED_Display_Mask(field, leds << ctz(field)); -} - - -U8 LED_Get_Intensity(U32 led) -{ - tLED_DESCRIPTOR *led_descriptor; - - // Check that the argument value is valid. - led = ctz(led); - led_descriptor = &LED_DESCRIPTOR[led]; - if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0; - - // Return the duty cycle value if the LED PWM channel is enabled, else 0. - return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ? - AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0; -} - - -void LED_Set_Intensity(U32 leds, U8 intensity) -{ - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_pwm_channel_t *led_pwm_channel; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // For each specified LED... - for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift) - { - // Select the next specified LED and check that it has a PWM channel. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - if (led_descriptor->PWM.CHANNEL < 0) continue; - - // Initialize or update the LED PWM channel. - led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL]; - if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL))) - { - led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) & - ~(AVR32_PWM_CALG_MASK | - AVR32_PWM_CPOL_MASK | - AVR32_PWM_CPD_MASK); - led_pwm_channel->cprd = 0x000000FF; - led_pwm_channel->cdty = intensity; - AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL; - } - else - { - AVR32_PWM.isr; - while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL))); - led_pwm_channel->cupd = intensity; - } - - // Switch the LED pin to its PWM function. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (led_descriptor->PWM.FUNCTION & 0x1) - { - led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK; - } - if (led_descriptor->PWM.FUNCTION & 0x2) - { - led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK; - } -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h deleted file mode 100644 index 7766b6a..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h +++ /dev/null @@ -1,187 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1105 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _LED_H_ -#define _LED_H_ - -#include "compiler.h" - - -/*! \name Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED0 0x01 -#define LED1 0x02 -#define LED2 0x04 -#define LED3 0x08 -//! @} - - -/*! \brief Gets the last state of all LEDs set through the LED API. - * - * \return State of all LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display(void); - -/*! \brief Sets the state of all LEDs. - * - * \param leds New state of all LEDs (1 bit per LED). - * - * \note The pins of all LEDs are set to GPIO output mode. - */ -extern void LED_Display(U32 leds); - -/*! \brief Gets the last state of the specified LEDs set through the LED API. - * - * \param mask LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Mask(U32 mask); - -/*! \brief Sets the state of the specified LEDs. - * - * \param mask LEDs of which to set the state (1 bit per LED). - * - * \param leds New state of the specified LEDs (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Mask(U32 mask, U32 leds); - -/*! \brief Tests the last state of the specified LEDs set through the LED API. - * - * \param leds LEDs of which to test the state (1 bit per LED). - * - * \return \c TRUE if at least one of the specified LEDs has a state on, else - * \c FALSE. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern Bool LED_Test(U32 leds); - -/*! \brief Turns off the specified LEDs. - * - * \param leds LEDs to turn off (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Off(U32 leds); - -/*! \brief Turns on the specified LEDs. - * - * \param leds LEDs to turn on (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_On(U32 leds); - -/*! \brief Toggles the specified LEDs. - * - * \param leds LEDs to toggle (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Toggle(U32 leds); - -/*! \brief Gets as a bit-field the last state of the specified LEDs set through - * the LED API. - * - * \param field LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED, beginning with the first - * specified LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Field(U32 field); - -/*! \brief Sets as a bit-field the state of the specified LEDs. - * - * \param field LEDs of which to set the state (1 bit per LED). - * \param leds New state of the specified LEDs (1 bit per LED, beginning with - * the first specified LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Field(U32 field, U32 leds); - -/*! \brief Gets the intensity of the specified LED. - * - * \param led LED of which to get the intensity (1 bit per LED; only the least - * significant set bit is used). - * - * \return Intensity of the specified LED (0x00 to 0xFF). - * - * \warning The PWM channel of the specified LED is supposed to be used only by - * this module. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U8 LED_Get_Intensity(U32 led); - -/*! \brief Sets the intensity of the specified LEDs. - * - * \param leds LEDs of which to set the intensity (1 bit per LED). - * \param intensity New intensity of the specified LEDs (0x00 to 0xFF). - * - * \warning The PWM channels of the specified LEDs are supposed to be used only - * by this module. - * - * \note The pins of the specified LEDs are set to PWM output mode. - */ -extern void LED_Set_Intensity(U32 leds, U8 intensity); - - -#endif // _LED_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h deleted file mode 100644 index 78ee91e..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h +++ /dev/null @@ -1,120 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Standard board header file. - * - * This file includes the appropriate board header file according to the - * defined board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _BOARD_H_ -#define _BOARD_H_ - -#include - -/*! \name Base Boards - */ -//! @{ -#define EVK1100 1 //!< AT32UC3A EVK1100 board. -#define EVK1101 2 //!< AT32UC3B EVK1101 board. -#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board. -#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. -#define EVK1105 5 //!< AT32UC3A EVK1105 board. -#define STK1000 6 //!< AT32AP7000 STK1000 board. -#define NGW100 7 //!< AT32AP7000 NGW100 board. -#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board. -#define UC3L_EK 9 //!< AT32UC3L-EK board. -#define USER_BOARD 99 //!< User-reserved board (if any). -//! @} - -/*! \name Extension Boards - */ -//! @{ -#define EXT1102 1 //!< AT32UC3B EXT1102 board. -#define MC300 2 //!< AT32UC3 MC300 board. -#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). -//! @} - -#if BOARD == EVK1100 - #include "EVK1100/evk1100.h" -#elif BOARD == EVK1101 - #include "EVK1101/evk1101.h" -#elif BOARD == UC3C_EK - #include "UC3C_EK/uc3c_ek.h" -#elif BOARD == EVK1104 - #include "EVK1104/evk1104.h" -#elif BOARD == EVK1105 - #include "EVK1105/evk1105.h" -#elif BOARD == STK1000 - #include "STK1000/stk1000.h" -#elif BOARD == NGW100 - #include "NGW100/ngw100.h" -#elif BOARD == STK600_RCUC3L0 - #include "STK600/RCUC3L0/stk600_rcuc3l0.h" -#elif BOARD == UC3L_EK - #include "UC3L_EK/uc3l_ek.h" -#elif BOARD == ARDUINO - #include "ARDUINO/arduino.h" -#else - #error No known AVR32 board defined -#endif - -#if (defined EXT_BOARD) - #if EXT_BOARD == EXT1102 - #include "EXT1102/ext1102.h" - #elif EXT_BOARD == MC300 - #include "MC300/mc300.h" - #elif EXT_BOARD == USER_EXT_BOARD - // User-reserved area: #include the header file of your extension board here - // (if any). - #endif -#endif - - -#ifndef FRCOSC - #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency. -#endif - - -#endif // _BOARD_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my deleted file mode 100644 index 78ee91e..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my +++ /dev/null @@ -1,120 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Standard board header file. - * - * This file includes the appropriate board header file according to the - * defined board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _BOARD_H_ -#define _BOARD_H_ - -#include - -/*! \name Base Boards - */ -//! @{ -#define EVK1100 1 //!< AT32UC3A EVK1100 board. -#define EVK1101 2 //!< AT32UC3B EVK1101 board. -#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board. -#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. -#define EVK1105 5 //!< AT32UC3A EVK1105 board. -#define STK1000 6 //!< AT32AP7000 STK1000 board. -#define NGW100 7 //!< AT32AP7000 NGW100 board. -#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board. -#define UC3L_EK 9 //!< AT32UC3L-EK board. -#define USER_BOARD 99 //!< User-reserved board (if any). -//! @} - -/*! \name Extension Boards - */ -//! @{ -#define EXT1102 1 //!< AT32UC3B EXT1102 board. -#define MC300 2 //!< AT32UC3 MC300 board. -#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). -//! @} - -#if BOARD == EVK1100 - #include "EVK1100/evk1100.h" -#elif BOARD == EVK1101 - #include "EVK1101/evk1101.h" -#elif BOARD == UC3C_EK - #include "UC3C_EK/uc3c_ek.h" -#elif BOARD == EVK1104 - #include "EVK1104/evk1104.h" -#elif BOARD == EVK1105 - #include "EVK1105/evk1105.h" -#elif BOARD == STK1000 - #include "STK1000/stk1000.h" -#elif BOARD == NGW100 - #include "NGW100/ngw100.h" -#elif BOARD == STK600_RCUC3L0 - #include "STK600/RCUC3L0/stk600_rcuc3l0.h" -#elif BOARD == UC3L_EK - #include "UC3L_EK/uc3l_ek.h" -#elif BOARD == ARDUINO - #include "ARDUINO/arduino.h" -#else - #error No known AVR32 board defined -#endif - -#if (defined EXT_BOARD) - #if EXT_BOARD == EXT1102 - #include "EXT1102/ext1102.h" - #elif EXT_BOARD == MC300 - #include "MC300/mc300.h" - #elif EXT_BOARD == USER_EXT_BOARD - // User-reserved area: #include the header file of your extension board here - // (if any). - #endif -#endif - - -#ifndef FRCOSC - #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency. -#endif - - -#endif // _BOARD_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c deleted file mode 100644 index 93d3dd9..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c +++ /dev/null @@ -1,653 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Management of the AT45DBX data flash controller through SPI. - * - * This file manages the accesses to the AT45DBX data flash components. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -//_____ I N C L U D E S ___________________________________________________ - -#include "conf_access.h" - - -#if AT45DBX_MEM == ENABLE - -#include "compiler.h" -#include "board.h" -#include "gpio.h" -#include "spi.h" -#include "conf_at45dbx.h" -#include "at45dbx.h" - - -#if AT45DBX_MEM_CNT > 4 - #error AT45DBX_MEM_CNT must not exceed 4 -#endif - - -//_____ D E F I N I T I O N S ______________________________________________ - -/*! \name AT45DBX Group A Commands - */ -//! @{ -#define AT45DBX_CMDA_RD_PAGE 0xD2 //!< Main Memory Page Read (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_ARRAY_LEG 0xE8 //!< Continuous Array Read, Legacy Command (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_ARRAY_LF_SM 0x03 //!< Continuous Array Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDA_RD_ARRAY_AF_SM 0x0B //!< Continuous Array Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDA_RD_SECTOR_PROT_REG 0x32 //!< Read Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_SECTOR_LKDN_REG 0x35 //!< Read Sector Lockdown Register (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_SECURITY_REG 0x77 //!< Read Security Register (Serial/8-bit Mode). -//! @} - -/*! \name AT45DBX Group B Commands - */ -//! @{ -#define AT45DBX_CMDB_ER_PAGE 0x81 //!< Page Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_BLOCK 0x50 //!< Block Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_SECTOR 0x7C //!< Sector Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_CHIP 0xC794809A //!< Chip Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_XFR_PAGE_TO_BUF1 0x53 //!< Main Memory Page to Buffer 1 Transfer (Serial/8-bit Mode). -#define AT45DBX_CMDB_XFR_PAGE_TO_BUF2 0x55 //!< Main Memory Page to Buffer 2 Transfer (Serial/8-bit Mode). -#define AT45DBX_CMDB_CMP_PAGE_TO_BUF1 0x60 //!< Main Memory Page to Buffer 1 Compare (Serial/8-bit Mode). -#define AT45DBX_CMDB_CMP_PAGE_TO_BUF2 0x61 //!< Main Memory Page to Buffer 2 Compare (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF1_TO_PAGE_ER 0x83 //!< Buffer 1 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF2_TO_PAGE_ER 0x86 //!< Buffer 2 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF1_TO_PAGE 0x88 //!< Buffer 1 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF2_TO_PAGE 0x89 //!< Buffer 2 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_PAGE_TH_BUF1 0x82 //!< Main Memory Page Program through Buffer 1 (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_PAGE_TH_BUF2 0x85 //!< Main Memory Page Program through Buffer 2 (Serial/8-bit Mode). -#define AT45DBX_CMDB_RWR_PAGE_TH_BUF1 0x58 //!< Auto Page Rewrite through Buffer 1 (Serial/8-bit Mode). -#define AT45DBX_CMDB_RWR_PAGE_TH_BUF2 0x59 //!< Auto Page Rewrite through Buffer 2 (Serial/8-bit Mode). -//! @} - -/*! \name AT45DBX Group C Commands - */ -//! @{ -#define AT45DBX_CMDC_RD_BUF1_LF_SM 0xD1 //!< Buffer 1 Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF2_LF_SM 0xD3 //!< Buffer 2 Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF1_AF_SM 0xD4 //!< Buffer 1 Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF2_AF_SM 0xD6 //!< Buffer 2 Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF1_AF_8M 0x54 //!< Buffer 1 Read, Any-Frequency Mode (8-bit Mode). -#define AT45DBX_CMDC_RD_BUF2_AF_8M 0x56 //!< Buffer 2 Read, Any-Frequency Mode (8-bit Mode). -#define AT45DBX_CMDC_WR_BUF1 0x84 //!< Buffer 1 Write (Serial/8-bit Mode). -#define AT45DBX_CMDC_WR_BUF2 0x87 //!< Buffer 2 Write (Serial/8-bit Mode). -#define AT45DBX_CMDC_RD_STATUS_REG 0xD7 //!< Status Register Read (Serial/8-bit Mode). -#define AT45DBX_CMDC_RD_MNFCT_DEV_ID_SM 0x9F //!< Manufacturer and Device ID Read (Serial Mode). -//! @} - -/*! \name AT45DBX Group D Commands - */ -//! @{ -#define AT45DBX_CMDD_EN_SECTOR_PROT 0x3D2A7FA9 //!< Enable Sector Protection (Serial/8-bit Mode). -#define AT45DBX_CMDD_DIS_SECTOR_PROT 0x3D2A7F9A //!< Disable Sector Protection (Serial/8-bit Mode). -#define AT45DBX_CMDD_ER_SECTOR_PROT_REG 0x3D2A7FCF //!< Erase Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_SECTOR_PROT_REG 0x3D2A7FFC //!< Program Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_LKDN_SECTOR 0x3D2A7F30 //!< Sector Lockdown (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_SECURITY_REG 0x9B000000 //!< Program Security Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_CONF_REG 0x3D2A80A6 //!< Program Configuration Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_DEEP_PWR_DN 0xB9 //!< Deep Power-down (Serial/8-bit Mode). -#define AT45DBX_CMDD_RSM_DEEP_PWR_DN 0xAB //!< Resume from Deep Power-down (Serial/8-bit Mode). -//! @} - - -/*! \name Bit-Masks and Values for the Status Register - */ -//! @{ -#define AT45DBX_MSK_BUSY 0x80 //!< Busy status bit-mask. -#define AT45DBX_BUSY 0x00 //!< Busy status value (0x00 when busy, 0x80 when ready). -#define AT45DBX_MSK_DENSITY 0x3C //!< Device density bit-mask. -//! @} -#if AT45DBX_MEM_SIZE == AT45DBX_1MB - -/*! \name AT45DB081 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x24 //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 9 //!< Address bits for byte position within buffer. - -//! @} -#elif AT45DBX_MEM_SIZE == AT45DBX_2MB - -/*! \name AT45DB161 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x2C //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer. -//! @} - -#elif AT45DBX_MEM_SIZE == AT45DBX_4MB - -/*! \name AT45DB321 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x34 //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer. -//! @} - -#elif AT45DBX_MEM_SIZE == AT45DBX_8MB - -/*! \name AT45DB642 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x3C //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 11 //!< Address bits for byte position within buffer. -//! @} - -#else - #error AT45DBX_MEM_SIZE is not defined to a supported value -#endif - -//! Address bits for page selection. -#define AT45DBX_PAGE_ADDR_BITS (AT45DBX_MEM_SIZE - AT45DBX_PAGE_BITS) - -//! Number of bits for addresses within pages. -#define AT45DBX_PAGE_BITS (AT45DBX_BYTE_ADDR_BITS - 1) - -//! Page size in bytes. -#define AT45DBX_PAGE_SIZE (1 << AT45DBX_PAGE_BITS) - -//! Bit-mask for byte position within buffer in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_BYTE ((1 << AT45DBX_PAGE_BITS) - 1) - -//! Bit-mask for page selection in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_PAGE (((1 << AT45DBX_PAGE_ADDR_BITS) - 1) << AT45DBX_PAGE_BITS) - -//! Bit-mask for byte position within sector in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_SECTOR ((1 << AT45DBX_SECTOR_BITS) - 1) - - -/*! \brief Sends a dummy byte through SPI. - */ -#define spi_write_dummy() spi_write(AT45DBX_SPI, 0xFF) - - -//! Boolean indicating whether memory is in busy state. -static Bool at45dbx_busy; - -//! Memory data pointer. -static U32 gl_ptr_mem; - -//! Sector buffer. -static U8 sector_buf[AT45DBX_SECTOR_SIZE]; - - -/*! \name Control Functions - */ -//! @{ - - -Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz) -{ - // Setup SPI registers according to spiOptions. - for (spiOptions.reg = AT45DBX_SPI_FIRST_NPCS; - spiOptions.reg < AT45DBX_SPI_FIRST_NPCS + AT45DBX_MEM_CNT; - spiOptions.reg++) - { - if (spi_setupChipReg(AT45DBX_SPI, &spiOptions, pba_hz) != SPI_OK) return KO; - } - - // Memory ready. - at45dbx_busy = FALSE; - - return OK; -} - - -/*! \brief Selects or unselects a DF memory. - * - * \param memidx Memory ID of DF to select or unselect. - * \param bSelect Boolean indicating whether the DF memory has to be selected. - */ -static void at45dbx_chipselect_df(U8 memidx, Bool bSelect) -{ - if (bSelect) - { - // Select SPI chip. - spi_selectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx); - } - else - { - // Unselect SPI chip. - spi_unselectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx); - } -} - - -Bool at45dbx_mem_check(void) -{ - U8 df; - U16 status = 0; - - // DF memory check. - for (df = 0; df < AT45DBX_MEM_CNT; df++) - { - // Select the DF memory to check. - at45dbx_chipselect_df(df, TRUE); - - // Send the Status Register Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG); - - // Send a dummy byte to read the status register. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &status); - - // Unselect the checked DF memory. - at45dbx_chipselect_df(df, FALSE); - - // Unexpected device density value. - if ((status & AT45DBX_MSK_DENSITY) < AT45DBX_DENSITY) return KO; - } - - return OK; -} - - -/*! \brief Waits until the DF is ready. - */ -static void at45dbx_wait_ready(void) -{ - U16 status; - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Send the Status Register Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG); - - // Read the status register until the DF is ready. - do - { - // Send a dummy byte to read the status register. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &status); - } while ((status & AT45DBX_MSK_BUSY) == AT45DBX_BUSY); - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); -} - - -Bool at45dbx_read_open(U32 sector) -{ - U32 addr; - - // Set the global memory pointer to a byte address. - gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE. - - // If the DF memory is busy, wait until it's ready. - if (at45dbx_busy) at45dbx_wait_ready(); - at45dbx_busy = FALSE; - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Initiate a page read at a given sector. - - // Send the Main Memory Page Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDA_RD_PAGE); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read; - // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) | - Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE); - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - // Send 32 don't care clock cycles to initialize the read operation. - spi_write_dummy(); - spi_write_dummy(); - spi_write_dummy(); - spi_write_dummy(); - - return OK; -} - - -void at45dbx_read_close(void) -{ - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory ready. - at45dbx_busy = FALSE; -} - - -Bool at45dbx_write_open(U32 sector) -{ - U32 addr; - - // Set the global memory pointer to a byte address. - gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE. - - // If the DF memory is busy, wait until it's ready. - if (at45dbx_busy) at45dbx_wait_ready(); - at45dbx_busy = FALSE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Transfer the content of the current page to buffer 1. - - // Send the Main Memory Page to Buffer 1 Transfer command. - spi_write(AT45DBX_SPI, AT45DBX_CMDB_XFR_PAGE_TO_BUF1); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read; - // - then AT45DBX_BYTE_ADDR_BITS don't care bits. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS; - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Wait for end of page transfer. - at45dbx_wait_ready(); -#endif - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Initiate a page write at a given sector. - - // Send the Main Memory Page Program through Buffer 1 command. - spi_write(AT45DBX_SPI, AT45DBX_CMDB_PR_PAGE_TH_BUF1); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be written; - // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) | - Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE); - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - return OK; -} - - -void at45dbx_write_close(void) -{ - // While end of logical sector not reached, zero-fill remaining memory bytes. - while (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_SECTOR)) - { - spi_write(AT45DBX_SPI, 0x00); - gl_ptr_mem++; - } - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; -} - - -//! @} - - -/*! \name Single-Byte Access Functions - */ -//! @{ - - -U8 at45dbx_read_byte(void) -{ - U16 data; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously finished a page read. - // => We have to access the next page. - - // Memory ready. - at45dbx_busy = FALSE; - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_read_open input parameter is a sector. - at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Send a dummy byte to read the next data byte. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &data); - gl_ptr_mem++; - - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) - { - // unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return data; -} - - -Bool at45dbx_write_byte(U8 b) -{ - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously launched a page programming. - // => We have to access the next page. - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_write_open input parameter is a sector. - at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Write the next data byte. - spi_write(AT45DBX_SPI, b); - gl_ptr_mem++; - - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) - { - // unselect the DF memory gl_ptr_mem points to in order to program the page. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -//! @} - - -/*! \name Multiple-Sector Access Functions - */ -//! @{ - - -Bool at45dbx_read_multiple_sector(U16 nb_sector) -{ - while (nb_sector--) - { - // Read the next sector. - at45dbx_read_sector_2_ram(sector_buf); - at45dbx_read_multiple_sector_callback(sector_buf); - } - - return OK; -} - - -Bool at45dbx_write_multiple_sector(U16 nb_sector) -{ - while (nb_sector--) - { - // Write the next sector. - at45dbx_write_multiple_sector_callback(sector_buf); - at45dbx_write_sector_from_ram(sector_buf); - } - - return OK; -} - - -//! @} - - -/*! \name Single-Sector Access Functions - */ -//! @{ - - -Bool at45dbx_read_sector_2_ram(void *ram) -{ - U8 *_ram = ram; - U16 i; - U16 data; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously finished a page read. - // => We have to access the next page. - - // Memory ready. - at45dbx_busy = FALSE; - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_read_open input parameter is a sector. - at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Read the next sector. - for (i = AT45DBX_SECTOR_SIZE; i; i--) - { - // Send a dummy byte to read the next data byte. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &data); - *_ram++ = data; - } - - // Update the memory pointer. - gl_ptr_mem += AT45DBX_SECTOR_SIZE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) -#endif - { - // unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -Bool at45dbx_write_sector_from_ram(const void *ram) -{ - const U8 *_ram = ram; - U16 i; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously launched a page programming. - // => We have to access the next page. - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_write_open input parameter is a sector. - at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Write the next sector. - for (i = AT45DBX_SECTOR_SIZE; i; i--) - { - // Write the next data byte. - spi_write(AT45DBX_SPI, *_ram++); - } - - // Update the memory pointer. - gl_ptr_mem += AT45DBX_SECTOR_SIZE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) -#endif - { - // unselect the DF memory gl_ptr_mem points to in order to program the page. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -//! @} - - -#endif // AT45DBX_MEM == ENABLE diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h deleted file mode 100644 index e5263b2..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h +++ /dev/null @@ -1,270 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Management of the AT45DBX data flash controller through SPI. - * - * This file manages the accesses to the AT45DBX data flash components. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _AT45DBX_H_ -#define _AT45DBX_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error at45dbx.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "spi.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -/*! \name Available AT45DBX Sizes - * - * Number of address bits of available AT45DBX data flash memories. - * - * \note Only memories with page sizes of at least 512 bytes (sector size) are - * supported. - */ -//! @{ -#define AT45DBX_1MB 20 -#define AT45DBX_2MB 21 -#define AT45DBX_4MB 22 -#define AT45DBX_8MB 23 -//! @} - -// AT45DBX_1MB -#define AT45DBX_SECTOR_BITS 8 //! Number of bits for addresses within sectors. -// AT45DBX_2MB AT45DBX_4MB AT45DBX_8MB -//#define AT45DBX_SECTOR_BITS 9 //! Number of bits for addresses within sectors. - -//! Sector size in bytes. -#define AT45DBX_SECTOR_SIZE (1 << AT45DBX_SECTOR_BITS) - - -//_____ D E C L A R A T I O N S ____________________________________________ - -/*! \name Control Functions - */ -//! @{ - -/*! \brief Initializes the data flash controller and the SPI channel by which - * the DF is controlled. - * - * \param spiOptions Initialization options of the DF SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \retval OK Success. - * \retval KO Failure. - */ -extern Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz); - -/*! \brief Performs a memory check on all DFs. - * - * \retval OK Success. - * \retval KO Failure. - */ -extern Bool at45dbx_mem_check(void); - -/*! \brief Opens a DF memory in read mode at a given sector. - * - * \param sector Start sector. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note Sector may be page-unaligned (depending on the DF page size). - */ -extern Bool at45dbx_read_open(U32 sector); - -/*! \brief Unselects the current DF memory. - */ -extern void at45dbx_read_close(void); - -/*! \brief This function opens a DF memory in write mode at a given sector. - * - * \param sector Start sector. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note Sector may be page-unaligned (depending on the DF page size). - * - * \note If \ref AT45DBX_PAGE_SIZE > \ref AT45DBX_SECTOR_SIZE, page content is - * first loaded in buffer to then be partially updated by write byte or - * write sector functions. - */ -extern Bool at45dbx_write_open(U32 sector); - -/*! \brief Fills the end of the current logical sector and launches page programming. - */ -extern void at45dbx_write_close(void); - -//! @} - - -/*! \name Single-Byte Access Functions - */ -//! @{ - -/*! \brief Performs a single byte read from DF memory. - * - * \return The read byte. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - */ -extern U8 at45dbx_read_byte(void); - -/*! \brief Performs a single byte write to DF memory. - * - * \param b The byte to write. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - */ -extern Bool at45dbx_write_byte(U8 b); - -//! @} - - -/*! \name Multiple-Sector Access Functions - */ -//! @{ - -/*! \brief Reads \a nb_sector sectors from DF memory. - * - * Data flow is: DF -> callback. - * - * \param nb_sector Number of contiguous sectors to read. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - * - * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of - * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each - * byte. - */ -extern Bool at45dbx_read_multiple_sector(U16 nb_sector); - -/*! \brief Callback function invoked after each sector read during - * \ref at45dbx_read_multiple_sector. - * - * \param psector Pointer to read sector. - */ -extern void at45dbx_read_multiple_sector_callback(const void *psector); - -/*! \brief Writes \a nb_sector sectors to DF memory. - * - * Data flow is: callback -> DF. - * - * \param nb_sector Number of contiguous sectors to write. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - * - * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of - * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each - * byte. - */ -extern Bool at45dbx_write_multiple_sector(U16 nb_sector); - -/*! \brief Callback function invoked before each sector write during - * \ref at45dbx_write_multiple_sector. - * - * \param psector Pointer to sector to write. - */ -extern void at45dbx_write_multiple_sector_callback(void *psector); - -//! @} - - -/*! \name Single-Sector Access Functions - */ -//! @{ - -/*! \brief Reads 1 DF sector to a RAM buffer. - * - * Data flow is: DF -> RAM. - * - * \param ram Pointer to RAM buffer. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - */ -extern Bool at45dbx_read_sector_2_ram(void *ram); - -/*! \brief Writes 1 DF sector from a RAM buffer. - * - * Data flow is: RAM -> DF. - * - * \param ram Pointer to RAM buffer. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - */ -extern Bool at45dbx_write_sector_from_ram(const void *ram); - -//! @} - - -#endif // _AT45DBX_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c deleted file mode 100644 index 4c0ace2..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c +++ /dev/null @@ -1,234 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief CTRL_ACCESS interface for the AT45DBX data flash controller. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -//_____ I N C L U D E S ___________________________________________________ - -#include "conf_access.h" - - -#if AT45DBX_MEM == ENABLE - -#include "conf_at45dbx.h" -#include "at45dbx.h" -#include "at45dbx_mem.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! Whether to detect write accesses to the memory. -#define AT45DBX_MEM_TEST_CHANGE_STATE ENABLED - - -#if (ACCESS_USB == ENABLED || ACCESS_MEM_TO_RAM == ENABLED) && AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - -//! Memory data modified flag. -static volatile Bool s_b_data_modify = FALSE; - -#endif - - -/*! \name Control Interface - */ -//! @{ - - -Ctrl_status at45dbx_test_unit_ready(void) -{ - return (at45dbx_mem_check() == OK) ? CTRL_GOOD : CTRL_NO_PRESENT; -} - - -Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector) -{ - *u32_nb_sector = (AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) - 1; - - return CTRL_GOOD; -} - - -Bool at45dbx_wr_protect(void) -{ - return FALSE; -} - - -Bool at45dbx_removal(void) -{ - return FALSE; -} - - -//! @} - - -#if ACCESS_USB == ENABLED - -#include "usb_drv.h" -#include "scsi_decoder.h" - - -/*! \name MEM <-> USB Interface - */ -//! @{ - - -Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector) -{ - if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - - at45dbx_read_open(addr); - at45dbx_read_multiple_sector(nb_sector); - at45dbx_read_close(); - - return CTRL_GOOD; -} - - -void at45dbx_read_multiple_sector_callback(const void *psector) -{ - U16 data_to_transfer = AT45DBX_SECTOR_SIZE; - - // Transfer read sector to the USB interface. - while (data_to_transfer) - { - while (!Is_usb_in_ready(g_scsi_ep_ms_in)) - { - if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_in)) - return; // USB Reset - } - - Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_in); - data_to_transfer = usb_write_ep_txpacket(g_scsi_ep_ms_in, psector, - data_to_transfer, &psector); - Usb_ack_in_ready_send(g_scsi_ep_ms_in); - } -} - - -Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector) -{ - if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - -#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - if (nb_sector) s_b_data_modify = TRUE; -#endif - - at45dbx_write_open(addr); - at45dbx_write_multiple_sector(nb_sector); - at45dbx_write_close(); - - return CTRL_GOOD; -} - - -void at45dbx_write_multiple_sector_callback(void *psector) -{ - U16 data_to_transfer = AT45DBX_SECTOR_SIZE; - - // Transfer sector to write from the USB interface. - while (data_to_transfer) - { - while (!Is_usb_out_received(g_scsi_ep_ms_out)) - { - if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_out)) - return; // USB Reset - } - - Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_out); - data_to_transfer = usb_read_ep_rxpacket(g_scsi_ep_ms_out, psector, - data_to_transfer, &psector); - Usb_ack_out_received_free(g_scsi_ep_ms_out); - } -} - - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - - -Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram) -{ - if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - - at45dbx_read_open(addr); - at45dbx_read_sector_2_ram(ram); - at45dbx_read_close(); - - return CTRL_GOOD; -} - - -Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram) -{ - if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - -#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - s_b_data_modify = TRUE; -#endif - - at45dbx_write_open(addr); - at45dbx_write_sector_from_ram(ram); - at45dbx_write_close(); - - return CTRL_GOOD; -} - - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#endif // AT45DBX_MEM == ENABLE diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h deleted file mode 100644 index de24fa3..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h +++ /dev/null @@ -1,164 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief CTRL_ACCESS interface for the AT45DBX data flash controller. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _AT45DBX_MEM_H_ -#define _AT45DBX_MEM_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error at45dbx_mem.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "ctrl_access.h" - - -//_____ D E C L A R A T I O N S ____________________________________________ - -/*! \name Control Interface - */ -//! @{ - -/*! \brief Tests the memory state and initializes the memory if required. - * - * The TEST UNIT READY SCSI primary command allows an application client to poll - * a LUN until it is ready without having to allocate memory for returned data. - * - * This command may be used to check the media status of LUNs with removable - * media. - * - * \return Status. - */ -extern Ctrl_status at45dbx_test_unit_ready(void); - -/*! \brief Returns the address of the last valid sector in the memory. - * - * \param u32_nb_sector Pointer to the address of the last valid sector. - * - * \return Status. - */ -extern Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector); - -/*! \brief Returns the write-protection state of the memory. - * - * \return \c TRUE if the memory is write-protected, else \c FALSE. - * - * \note Only used by removable memories with hardware-specific write - * protection. - */ -extern Bool at45dbx_wr_protect(void); - -/*! \brief Tells whether the memory is removable. - * - * \return \c TRUE if the memory is removable, else \c FALSE. - */ -extern Bool at45dbx_removal(void); - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - -/*! \brief Tranfers data from the memory to USB. - * - * \param addr Address of first memory sector to read. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector); - -/*! \brief Tranfers data from USB to the memory. - * - * \param addr Address of first memory sector to write. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector); - -//! @} - -#endif - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - -/*! \brief Copies 1 data sector from the memory to RAM. - * - * \param addr Address of first memory sector to read. - * \param ram Pointer to RAM buffer to write. - * - * \return Status. - */ -extern Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram); - -/*! \brief Copies 1 data sector from RAM to the memory. - * - * \param addr Address of first memory sector to write. - * \param ram Pointer to RAM buffer to read. - * - * \return Status. - */ -extern Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram); - -//! @} - -#endif - - -#endif // _AT45DBX_MEM_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a deleted file mode 100644 index e01ab14..0000000 Binary files a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a and /dev/null differ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a deleted file mode 100644 index 9aa4f24..0000000 Binary files a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a and /dev/null differ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a deleted file mode 100644 index 00536f5..0000000 Binary files a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a and /dev/null differ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a deleted file mode 100644 index a61dea3..0000000 Binary files a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a and /dev/null differ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a deleted file mode 100644 index 6883192..0000000 Binary files a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a and /dev/null differ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a deleted file mode 100644 index 0b09aa8..0000000 Binary files a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a and /dev/null differ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/revision.txt b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/revision.txt deleted file mode 100644 index 5420c93..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/revision.txt +++ /dev/null @@ -1 +0,0 @@ -Revision: 2491 diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h deleted file mode 100644 index 17ba2ba..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h +++ /dev/null @@ -1,1687 +0,0 @@ -/* - * Programming interface for wl_api. - * Copyright (C) 2010 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -/*! \file wl_api.h ************************************************************* - * - * \brief Basic WiFi API - * - * This file provides the wl_api interface. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: - * \li SPB104 + EVK1100 - * \li SPB104 + EVK1101 - * \li SPB104 + EVK1104 - * \li SPB104 + EVK1105 (SPI) - * \li SPB104 + EVK1105 (SPI + irq) - * \li SPB105 + EVK1105 (SPI) - * - AppNote: - * - * \author H&D Wireless AB: \n - * - ***************************************************************************** - * - * \section intro Introduction - * This is the documentation for the generic WiFi Driver API \a wl_api. - * - * \section files Main Files - * - wl_api.h : WiFi driver interface. - * - lib_ucr*_hd_wifi_standalone_v*.*.a - Driver library. - * - */ -/** \mainpage wl_api Reference Manual - -\image html images/wl_api_block_diagram_small.png "wl_api Architecture" - -(o)WL API © is a programming interface for WiFi (802.11). It aims -to be a complete interface for embedded applications wanting to use -wireless as a communications interface. (o)WL API © is shortened -"wl_api" in this document. - -wl_api has been designed to meet the following goals : - \li Simple : The API is as simple as is practicable - to make it easy to use. - \li Minimal size : The API is usable on very resource constrained - platforms. - \li Portable : The API is deployable on any platform with a standards - compliant C compiler. - \li OS independent : The API is deployable on systems using a real time - operating system as well as with applications running on the - "bare metal" of a hardware platform (that is without an operating system). - -As a consequence of these design goals wl_api does not allow very fine -grained control of most parameters relating to 802.11 networks. That -would increase the flexibility of the API while also increasing -complexity and code size. When the underlying WiFi hardware can -support a richer feature set the extra features can be offered as a -add-on library if required. - -The wl_api is implemented by two libraries. The core library is -compiled for a hardware platform and is independent of operating -system or IP stack. The core library contains all WiFi -functionality. The core library is supported by a suite of transport -libraries. The transport libraries implements the hardware -communication layer and are specific to the type of hardware interface -used to connect the host platform to the WiFi hardware. For example, -there are transport libraries for SPI and for SDIO. Only the core -library has a public interface (wl_api.h) but applications will need -to link with both the core library and a transport library matching -the hardware configuration. - -\section wl_api_princ Operation Principles - -There are three important properties of wl_api to keep in mind when -programming with it. - -The first is that wl_api is \b asynchronous. For instance, when the -\a wl_connect() function is called to attempt connection with an access -point it will trigger a sequence of packets being exchanged with the -access point after which, if everything is okay, a connection has been -established. The \a wl_connect() call is asynchronous (or non-blocking) -which means that you don't know if the connection attempt has -succeeded after the call returns. You only know if the sequence was -successfully started or not. To find out if, and when, the connection -attempt was successful you must register an event handler using the -function \a wl_register_event_cb(). This is true of a number of API calls -(which is indicated in their documentation). - -The second important property is that wl_api is \b polled. wl_api -never executes "by itself", since it would then have to support -interrupts, timers, locks and other operating system dependent -features. Instead all asynchronous processes proceed when wl_api is -polled by calling the \a wl_tick() function. When \a wl_tick() is called -wl_api reacts to any received management frames, expires any internal timers and -performs any other tasks necessary for forward progress. After -\a wl_tick() returns nothing will happen unless it or some other wl_api -function is called again. Also, to send and receive data, the \a wl_process_rx() -and \a wl_process_tx() must be invoked upon reception and transmission of data. - -The third important property is that wl_api is \b not \b thread \b safe. -All wl_api calls must execute in the same context since the -library has no knowledge of the locking mechanisms available (if any). - -\section wl_api_code_examples A note on the code examples - -The code examples illustrate how to call the different wl_api functions. -They do not constitute a complete program. Functions with the prefix "app_" -in the code examples are application specific calls that illustrate a -particular action. These functions are not part of the API and will have -to be implemented if needed. For a complete working code example see -one of the H&D Wireless software reference designs, such as the WiFi HTTP -server demo code in the Atmel Software Framework. - -The API is structured into these functional groups: - -\li \ref wl_api -\li \ref wl_wifi -\li \ref wl_data -\li \ref wl_transport -\li \ref wl_custom - -Also documented here is the transport layers for SPI and SDIO. -There interfaces are only necessary when porting the library to -a new hardware platform. - -\li \ref wl_spi -\li \ref wl_sdio - - * \section contactinfo Contact Information - * For further information, visit - * H&D Wireless.\n - * Support and FAQ: http://www.atmel.com/ - */ - -#ifndef WL_API_H -#define WL_API_H - -#define WL_API_RELEASE_NAME "v2.7.0" - -/*! Maximum size of a SSID */ -#define WL_SSID_MAX_LENGTH 32 -/*! Size of a MAC-address or BSSID */ -#define WL_MAC_ADDR_LENGTH 6 -/*! Maximum length of a passphrase */ -#define WL_MAX_PASS_LEN 64 -/*! Indicates that there is no SNR information */ -#define WL_SNR_UNKNOWN -128 - -#define SPB104 104 -#define SPB105 105 - -/*! \ingroup wl_api - * API Error codes */ -typedef enum { - WL_FAILURE = -1, - WL_SUCCESS = 1, - WL_NOEFFECT, - WL_OOM, - WL_INVALID_LENGTH, - WL_NOT_SUPPORTED, - WL_ABSORBED, - WL_RESOURCES, - WL_BUSY, - WL_RETRY, /*!< Retry the operation later. The driver is busy - resolving an operation that conflicts with the - request. */ - WL_INVALID_ARGS, - WL_AVAIL, - WL_CARD_FAILURE, /*!< Could not detect SPB device */ - WL_FIRMWARE_INVALID, /*!< Invalid firmware data */ - -} wl_err_t; - -/*! \ingroup wl_wifi - * Event identifiers */ -enum wl_event_id_t { - WL_EVENT_MEDIA_CONNECTED = 0, - WL_EVENT_CONN_FAILURE, - WL_EVENT_MEDIA_DISCONNECTED, - WL_EVENT_SCAN_COMPLETE, - WL_EVENT_FAILURE, - MAX_WL_EVENT -}; - -/*! \ingroup wl_wifi - * Authentication modes */ -enum wl_auth_mode { - AUTH_MODE_INVALID, - AUTH_MODE_AUTO, - AUTH_MODE_OPEN_SYSTEM, - AUTH_MODE_SHARED_KEY, - AUTH_MODE_WPA, - AUTH_MODE_WPA2, - AUTH_MODE_WPA_PSK, - AUTH_MODE_WPA2_PSK -}; - -/*! \ingroup wl_wifi - * Encryption modes */ -enum wl_enc_type { /* Values map to 802.11 encryption suites... */ - ENC_TYPE_WEP = 5, - ENC_TYPE_TKIP = 2, - ENC_TYPE_CCMP = 4, - /* ... except these two, 7 and 8 are reserved in 802.11-2007 */ - ENC_TYPE_NONE = 7, - ENC_TYPE_AUTO = 8 -}; - -enum wl_host_attention_mode { - WL_HOST_ATTENTION_SDIO = 0x1, /*!< For SDIO or polled SPI */ - WL_HOST_ATTENTION_SPI = 0x5a /*!< For SPI with interrupt line */ -}; - -/*! \ingroup wl_wifi - * Event descriptor -*/ -struct wl_event_t { - enum wl_event_id_t id; /**< Event identifier. */ - -}; - -/*! \ingroup wl_wifi - * Infrastructure (ESS) or Ad-hoc (IBSS) connection modes. - */ -enum wl_conn_type_t { - WL_CONN_TYPE_INFRA, /*!< For infrastructure mode (default) */ - WL_CONN_TYPE_ADHOC /*!< For ad-hoc mode */ -}; - -/* Note: - * If your environment does not have stdint.h you will have to - * define the fixed-width integer types specified in that file - * yourself, make sure that those definitions are included - * before any inclusions of wl_api.h, and build with the macro - * WITHOUT_STDINT defined. In this case the wl_api library - * must have been built with the same integer type definitions. - */ - -#ifndef WITHOUT_STDINT -#include -#endif - -/* Note: - * If your environment does not have stdio.h you will have to define - * the size_t type yourself, make sure that that definition is - * included before any inclusions of wl_api.h, and build with the - * macro WITHOUT_STDIO defined. In this case the wl_api library must - * have been built with the same size_t type definition. - */ -#ifndef WITHOUT_STDIO -#include -#endif - -/*! \ingroup wl_wifi - * - * \brief SSID representation. - * - * The SSID is a binary string and cannot be treated as a - * C-string safely. An empty SSID is represented by a - * SSID struct with the len field set to 0. - */ -struct wl_ssid_t -{ - char ssid[WL_SSID_MAX_LENGTH]; /**< Octet array containing the SSID data. */ - uint8_t len; /**< Length of valid data in ssid member. - * Cannot be longer than WL_SSID_MAX_LENGTH. */ -}; - -/*! \ingroup wl_wifi - * - * MAC-address/BSSID representation - * - * A broadcast BSSID is one with all octets set to 0xFF. - */ -struct wl_mac_addr_t -{ - uint8_t octet[WL_MAC_ADDR_LENGTH]; /**< Octet array containing the MAC address - * data. This array is always WL_MAC_ADDR_LENGTH bytes. - */ -}; - -/*! \ingroup wl_wifi - * - * Network representation - * - */ -struct wl_network_t -{ - struct wl_ssid_t ssid; /**< The SSID of the network. */ - struct wl_mac_addr_t bssid; /**< The BSSID of the network. */ - uint8_t channel; /**< The wlan channel which the network uses */ - uint32_t beacon_period; /**< Beacon period for the network */ - uint16_t dtim_period; /**< DTIM period for the network */ - int32_t rssi; /**< Received Signal Strength in dBm (measured on beacons) */ - int32_t snr; /**< Received Signal to noise ratio in dBm (measured on beacons) */ - uint8_t enc_type; /**< The encryption type used in the network. */ - - enum wl_conn_type_t net_type; /**< Type of network (Infrastructure or Ad-Hoc */ - size_t ie_len; /**< Always 0 unless wl_api has been built with WL_CONFIG_WPA_SUPPLICANT */ - - uint8_t ie[0]; /**< Not used unless wl_api has been built with WL_CONFIG_WPA_SUPPLICANT */ -}; - -/*! \ingroup wl_wifi - * Network list representation. Array of pointers to wl_network_t entries. - * - */ -struct wl_network_list_t -{ - struct wl_network_t **net; /**< The list of pointers to networks */ - size_t cnt; /**< Number of networks */ -}; - -#define WL_RATE_1MBIT 2 -#define WL_RATE_2MBIT 4 -#define WL_RATE_5_5MBIT 11 -#define WL_RATE_6MBIT 12 -#define WL_RATE_9MBIT 18 -#define WL_RATE_11MBIT 22 -#define WL_RATE_12MBIT 24 -#define WL_RATE_18MBIT 36 -#define WL_RATE_22MBIT 44 -#define WL_RATE_24MBIT 48 -#define WL_RATE_33MBIT 66 -#define WL_RATE_36MBIT 72 -#define WL_RATE_48MBIT 96 -#define WL_RATE_54MBIT 108 -#define WL_RATE_NUM_RATES 14 -#define WL_RATE_INVALID WL_RATE_NUM_RATES - -/*! \ingroup wl_wifi - * - * Rate representation - * - */ -typedef uint8_t wl_rate_t; - -/** \defgroup wl_api Library support functions - * - * These functions manage the library in general. They concern initalizing - * the library, downloading firmware to the WiFi chip and handling events - * from the library. - -For this example we assume that the application is running stand-alone -without an operating system. - -Before the library can do anything it needs to start up the WiFi -hardware by downloading a firmware image. The firmware image is -relatively big (around 144kB) and is therefore not included in the library -it is only needed once. It is up to the application to decide where to -store the firmware image and how to read it into the wl_api library. - -Step one is to write a function of the type \a ::wl_fw_read_cb_t -that wl_api will call to retrive the firmware image. Assuming that you -have some spare RAM (or whatever memory type is used for read only -data, such as FLASH memory) on your platform you can simply include -the firmware image from the \a wl_fw.h header file and write a -firmware read function like this - -\code -static size_t fw_read_cb(void* ctx, - uint8_t** buf, - size_t offset, - size_t len) -{ - if ( NULL == buf ) { - return 0; - } - *buf = ((uint8_t*) fw_buf) + offset; - if ( len > ( fw_len - offset ) ) { - return fw_len - offset; - } - return len; -} - -\endcode - -If the firmware image is stored in ROM this function may have to read -it back block by block instead. - -First, firmware must be downloaded to the device - -\code -if ( wl_transport_init(fw_read_cb, NULL, &mode) != WL_SUCCESS ) { - app_error("Firmware download failed"); - return 0; -} -\endcode - -The wl_api library is then initialized like this - -\code -if ( wl_init(NULL, init_complete_cb, mode) != WL_SUCCESS ) { - app_error("Init failed"); - return 0; -} -\endcode - -The library startup process will now require \a wl_poll() to be called -a number of times before it can complete. In addition, if the -application needs to know when the startup process has completed so -that it can, for example, start up an IP stack it will have to supply -a valid callback function of the type \a ::wl_init_complete_cb_t as a parameter -to the \a wl_init() call and start polling the wl_api library. - -The init complete callback will only be executed during a call to \a wl_poll() -or another wl_api function. This simplifies the implementation since no -internal locking is required and the wl_api library becomes OS-independent. - -\code -static void init_complete_cb(void* ctx) { - init_ip_stack(); -} -\endcode - -Registering the event callback is straightforward : - -\code -if (wl_register_event_cb(event_cb, NULL) != WL_SUCCESS) { - app_error("Failed to register event handler"); - return 0; -} -\endcode - -Similar to \a wl_poll(), there is also a \a wl_tick() function that takes a -free running "tick" counter with millisecond resolution as an argument so -that it can trigger internal timers when necessary. Assuming that such a tick -counter is provided by the macro GET_MS_TICK() the wl_api execution loop becomes - -\code -while (TRUE) { - wl_tick(GET_MS_TICK()); - wl_poll(); -} -\endcode - -In a stand-alone application this loop would usually be the main application -loop and include application specific calls as well. - -After some number of main loop iterations the init_complete_cb will be -invoked and the application can initialize its IP stack. - - * @{ - */ - -/*! \brief WiFi event callback. - * - * This function receives WiFi events that the application - * wants notification of. This function is supplied by the user - * of the API. - * - * @param event Struct describing the type of event and, for some - * events, additional information regarding the - * status of the event. See wl_event_t for additional - * information. - * @param ctx A context handle. This handle is passed - * untouched to the callback and has the same value - * as the context registered with the callback in - * wl_register_event_cb(). - */ -typedef void (*wl_event_cb_t) (struct wl_event_t event, void* ctx); - - -/*! \brief Initialization complete callback function. - * - * Invoked when WiFi initialization is complete. - * - * @param ctx Opaque context pointer as provided to \a wl_init() that will be - * passed back to the callback. - */ -typedef void (wl_init_complete_cb_t)(void* ctx); - - -/*! \brief Register an event handler. - * - * Register an event handler with the driver. This - * event handler will be called whenever a event - * listed in #wl_event_id_t occurs. - * See #wl_event_cb_t and #wl_event_id_t for more details. - * - * @param cb Event callback function to register. - * @param ctx Opaque context pointer that will be - * passed to the callback when it is - * invoked. This parameter is never - * accessed by the API. - * @return WL_SUCCESS - */ -wl_err_t wl_register_event_cb(wl_event_cb_t cb, void* ctx); - -/*! \brief Initialize the wl_api library. - * - * Note that \a wl_poll() must be called for this function to progress - * towards complete init - * - * The startup process will proceed asynchronously and will inkove - * init_complete_cb when completed. The callback will not be invoked if any - * error occurs during initialization. - * - * This function should be called after firmware has been downloaded to the - * device. - * - * @param ctx Opaque context pointer that will be passed to the callback - * when invoked. This parameter is never accessed by the API. - * @param init_complete_cb callback function to invoke when initialization is - * complete. - * @param mode Indicates the host attention mode used by the device. If - * \a wl_transport_init() was used to download the firmware image to the - * device, the proper mode can be obtained from the mode parameter of - * that function. - * - * @return - * - WL_SUCCESS - * - WL_FAILURE - */ -wl_err_t wl_init(void* ctx, wl_init_complete_cb_t init_complete_cb, - enum wl_host_attention_mode mode); - - -/*! \brief Shutdown the wl_api library and free resources. - * - * \a wl_init() must be invoked to startup the library - * again. - * - * @return - * - WL_SUCCESS on success - * - WL_FAILURE - * - */ -wl_err_t wl_shutdown(void); - - -/*! \brief WiFi driver timer tick function - * - * Periodic timers are triggered from this function so it should be called as - * often as possible if precision timing is required (traffic timeouts, - * authentication timeouts etc). - * - * @param tick A tick count in us. This is used to expire timers - * in the driver. - */ -void wl_tick(uint32_t tick); - -/*! @} */ - - -/** \defgroup wl_wifi Connection Management - * - * These functions access WiFi-specific functionality such as - * scanning, connect/disconnect, authentication and encryption, - * and power save modes. - * - -\section scanning Scanning - -To scan all channels that are available in the current regulatory -domain - -\code - if ( wl_scan() != WL_SUCCESS ) { - // May be busy scanning already, no fatal error - return 0; - } -\endcode - -Since wl_scan() only starts the scanning process the application -should add code to the event handler to catch the "scan complete" event -and retrieve the list of seen networks from the library - -\code -static void event_cb(struct wl_event_t event, void* ctx) { - switch(event.id) { - case WL_EVENT_SCAN_COMPLETE: - struct wl_network_list_t *netlist; - uint8_t netcnt; - - wl_get_network_list(&netlist); - netcnt = netlist->cnt; - while (--netcnt) { - print_network(netlist->net[netcnt]); - } - break; - } -} -\endcode - -The function print_network() could display the network name, the SSID, in -a user interface. It is important to keep in mind is that despite the fact -that the SSID is usually presented as a ASCII string, it is -in fact just a byte string and can legally contain all kinds of -non-printable characters, including a 0-byte. This means that it is -easy to end up with buffer overrun bugs if the SSID is ever treated -as a normal string without precautions. - -\code -void print_network(struct wl_network_t* wl_network) -{ - char ssid[WL_SSID_MAX_LENGTH + 1]; - memset(ssid, 0, sizeof(ssid)); - memcpy(ssid, wl_network->ssid.ssid, wl_network->ssid.len); - if (app_is_printable(ssid)) { - app_print("\"%s\" ", ssid); - } - else { - app_print(" "); - } - switch (wl_network->enc_type) { - case ENC_TYPE_WEP : - app_print("(WEP encryption)"); - break; - case ENC_TYPE_TKIP : - app_print("(TKIP encryption)"); - break; - case ENC_TYPE_CCMP : - app_print("(CCMP encryption)"); - break; - } - app_print("\n"); -} -\endcode - -\section connecting Connecting - -To connect to an access point (beware binary SSIDs) the connection process -must be started - -\code - if ( wl_connect("My AP", strlen("My AP")) - != WL_SUCCESS ) { - app_error("Connection failed.\n"); - return 0; - } -\endcode - -and the \a WL_EVENT_MEDIA_CONNECTED and \a WL_EVENT_CONN_FAILURE events should be -caught. To detect that a connection is terminated after it has been successfully established -(such as when the AP goes out of range) the \a WL_EVENT_MEDIA_DISCONNECTED event -must be also be caught - - -\code -static void event_cb(struct wl_event_t event, void* ctx) { - switch(event.id) { - case WL_EVENT_SCAN_COMPLETE: - struct wl_network_list_t *netlist; - uint8_t netcnt; - - wl_get_network_list(&netlist); - netcnt = netlist->cnt; - while (--netcnt) { - print_network(netlist->net[netcnt]); - } - break; - case WL_EVENT_CONN_FAILURE: - app_error("Connection failed\n"); - break; - case WL_EVENT_MEDIA_CONNECTED: - app_print("Connected to Access Point\n"); - app_ip_interface_up(); - break; - case WL_EVENT_MEDIA_DISCONNECTED: - app_print("Disconnected from Access Point\n"); - app_ip_interface_down(); - break; - } -} -\endcode - -\section security Security - -To use WEP a WEP key must be added before the connection is initiated. -To set the 40-bit WEP key 0xDEADBEEF00 as default key for key index 0 do - -\code - char key[5] = { 0xDE, 0xAD, 0xBE, 0xEF, 0x00 }; - struct wl_mac_addr_t bssid; - - // This means that the bssid is a broadcast bssid and the WEP key will be a default key instead of a key-mapping key. - memset(&bssid.octet, 0xff, sizeof bssid.octet); - - if ( wl_add_wep_key(0, sizeof key, key, &bssid) - != WL_SUCCESS ) { - app_error("Failed to add WEP key."); - return 0; - } -\endcode - -To use WPA/WPA2 with a Pre-shared key a passphrase must be associated -with the network before the connection is initiated. - -\code - struct wl_network_t net; - char passphrase[] = "MySecretKey"; - - memset(&net, 0, sizeof net); - memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet); - strncpy(net.ssid.ssid, "My AP", strlen("My AP")); - net.ssid.len = strlen("My AP"); - net.enc_type = ENC_TYPE_AUTO; - if (wl_set_passphrase(&net, - passphrase, - strlen(passphrase), - ENC_TYPE_AUTO, - AUTH_MODE_AUTO) - != WL_SUCCESS) { - app_error("Failed to add passphrase"); - } -\endcode - -The library supports several passphrase-network associations to be -configured simultaneously. Be aware that the \a wl_connect() call -can take up to 15 seconds longer than normal when using a pre-shared -WPA/WPA2 key since the platform must calculate a temporal encryption -key from the passphrase before the connection attempt can start. - - * @{ - */ - - -/*! \brief Scan all channels. - * - * Starts a scan of all WiFi channels allowed in this regulatory - * domain. The list of allowed channels (the domain) is adapted to the - * channels announced as allowed by the first AP heard. - * - * The scan will proceed asynchronously and will raise a - * WL_EVENT_SCAN_COMPLETE event when completed. - * - * Currently, there's a limit on the scan list size that depends on the - * architecture (6 networks for the AVR32 UCR1 architecture 16 networks for - * other architectures. If more network exist, the strongest networks are - * chosen. Note that the limitation on the scan list size does not limit the - * networks which the device can connect to. See wl_connect() for more - * details. - * - * @return - * - WL_SUCCESS - * - WL_FAILURE. - */ -wl_err_t wl_scan(void); - -/*! \brief Get the list of currently known networks. - * - * Retrieves the list of currently known networks from - * the driver. To ensure that this list is up-to-date - * a wl_scan() call should be issued and this function - * should be called upon reception of the WL_EVENT_SCAN_COMPLETE - * event. This function can be called at other times - * but the list of networks retrieved then might not - * correspond to the networks actually in range. - * - * Note that a successful scan does not necessarily - * find any networks. - * - * @param network_list Output buffer. The API call returns - * a pointer to allocated memory containing the network list. - * @return - * - WL_SUCCESS - * - WL_FAILURE. - */ -wl_err_t wl_get_network_list(struct wl_network_list_t **network_list); - -#ifdef WFE_6_12 -/*! \brief Start a Ad-hoc network. - * - * Attempt to start a Ad-hoc (IBSS) network. If a Ad-hoc network - * is successfully started then a WL_EVENT_MEDIA_CONNECTED event - * will be raised once the first peer station connects to the Ad-hoc - * network (and not when the network is announced on the air). - * - * If a Ad-hoc network should be started with encryption - * enabled then \a wl_set_passphrase() should be called before - * \a wl_start_adhoc_net() to configure the security parameters. - * The Ad-hoc network is started with the security parameters - * (if any) that was configured for the specified \a ssid. - * - * @param ssid The SSID of the new network. If there's a network - * already present with this SSID this call will fail. - * @param channel The channel to use. Valid channels are 1-14 - * @param auth_mode The authentication mode to use. Supported - * authentication modes for Ad-hoc networks are - * AUTH_MODE_OPEN_SYSTEM and AUTH_MODE_SHARED_KEY. - * Passing other modes will cause a WL_INVALID_ARGS return. - * If AUTH_MODE_SHARED_KEY is used then a valid WEP - * key must be set with a call to \a wl_add_wep_key() - * and the default WEP key index must be set with a - * call to \a wl_set_default_wep_key(). - * @return - * - WL_SUCCESS on success. - * - WL_INVALID_ARGS if the ssid is malformed, if - * the channel not valid or if the authentication mode - * is invalid. - * - WL_RETRY if the driver is busy resolving a conflicting - * operation. The operation should be retried after a wait - * (at least one call to wl_poll() for polled implementations). - * - WL_BUSY if the driver is already connected or if a network - * with the same SSID is already known. - * - */ -wl_err_t wl_start_adhoc_net(struct wl_ssid_t ssid, - uint8_t channel, - enum wl_auth_mode auth_mode); -#endif -/*! \brief Connect to a SSID. - * - * Attempt to connect to a given SSID. If the driver is already - * connected to an AP with a different SSID then this call will - * return WL_BUSY and wl_disconnect() should be called before - * trying again. - * - * The connection process will proceed asynchronously and will raise a - * WL_EVENT_MEDIA_CONNECTED event when completed, or a WL_EVENT_CONN_FAILURE - * when failed. After a WL_EVENT_MEDIA_CONNECTED event has been raised - * a WL_EVENT_MEDIA_DISCONNECT event will be raised if the connection is - * terminated. Note that this can be caused by external factors and can - * happen at any time. - * - * If wl_connect() is invoked with a network that is not shown in the - * scan list, the device will probe for that specific network and connect - * to it, if found. This is also the method to use in order to connect to - * "hidden" networks (AP's that doesn't broadcast its SSID). - * - * @param ssid Pointer to the SSID string. - * Freed by caller. - * @param ssid_len Length of the SSID string in octets. Max value is 32. - * @return - * - WL_SUCCESS - * - WL_FAILURE if the network could not be found - * - WL_BUSY if the driver is already connected - * - WL_RETRY if the driver is busy resolving a conflicting operation. - * The operation should be retried after a wait (at least one call to wl_poll() - * for polled implementations). - */ -wl_err_t wl_connect(char* ssid, size_t ssid_len); - -/*! \brief Connect to a BSSID - * - * Attempt to connect to a given BSSID. If the driver is already - * connected to an AP with a different BSSID then this call will - * return WL_BUSY and wl_disconnect() should be called before - * trying again. - * - * The connection process will proceed asynchronously and will raise a - * WL_EVENT_MEDIA_CONNECTED event when completed, or a WL_EVENT_CONN_FAILURE - * when failed. After a WL_EVENT_MEDIA_CONNECTED event has been raised - * a WL_EVENT_MEDIA_DISCONNECT event will be raised if the connection is - * terminated. Note that this can be caused by external factors and can - * happen at any time. - * - * If wl_connect_bssid() is invoked with a network that is not shown in the - * scan list, the device will probe for that specific network and connect - * to it, if found. - * - * @param bssid Pointer to the BSSID. Freed by caller. - * @return - * - WL_SUCCESS - * - WL_FAILURE if the network could not be found - * - WL_BUSY if the driver is already connected - * - WL_RETRY if the driver is busy resolving a conflicting operation. - * The operation should be retried after a wait (at least one call to wl_poll() - * for polled implementations). - */ -wl_err_t wl_connect_bssid(struct wl_mac_addr_t bssid); - -/*! \brief Disconnect from the network - * - * Disconnect from any currently associated network. - * - * The disconnection process will proceed asynchronously and will raise a - * WL_EVENT_MEDIA_DISCONNECTED event when completed. - * @return - * - WL_SUCCESS if the disconnect process was started - * - WL_FAILURE if the driver was not connected - * - WL_RETRY if the driver is in the process of connecting. - * In this case the disconnect must be retried after - * the connection attempt has completed (resulted in a - * WL_EVENT_MEDIA_CONNECTED or a WL_EVENT_CONN_FAILURE event). - */ -wl_err_t wl_disconnect(void); - -/*! - * @brief Add a WEP encryption key to the device. - * - * Configure a key into the device. The key type (WEP-40, WEP-104) - * is determined by the size of the key (5 bytes for WEP-40, 13 bytes for WEP-104). - * - * @param key_idx The key index to set. Valid values are 0-3. - * @param key_len Length of key in bytes. Valid values are 5 and 13. - * @param key Key input buffer. - * @param bssid BSSID that the key applies to. If this is - * the broadcast BSSID then the key is configured - * as one of the default keys (not _the_ default key, - * this must be set by calling set_default_wep_key() - * after adding it). If the BSSID is a valid unicast - * bssid then the key is configured as a key-mapping - * key ( See 802.11-2007 8.2.1.3 ). - * @return - * - WL_SUCCESS on success. - * - WL_INVALID_LENGTH if the key length is bad. - * - WL_FAILURE on failure - */ -wl_err_t wl_add_wep_key(uint8_t key_idx, - size_t key_len, - const void *key, - struct wl_mac_addr_t *bssid); - -/*! @brief Set the default WEP key index. - * - * Select which WEP key to use for transmitted packets. - * For this to work correctly you must have added a WEP - * key with \a wl_add_wep_key() as a default key, using the - * same index as the one set in this call. - * @param key_idx Index of the key to make the default key. - * Valid values are 0-3. - * @return WL_SUCCESS or WL_FAILURE. - */ -wl_err_t wl_set_default_wep_key(uint8_t key_idx); - -/*! \brief Delete a WEP key. - * - * Deletes a WEP key from the driver. - * - * @param key_idx The index of the key to delete. Valid values are 0-3. - * @param bssid BSSID that the key applies to. If this is - * the broadcast BSSID then the key deleted is a default key. - * If the BSSID is a valid unicast bssid then the deleted - * key is a key-mapping key. - * @return WL_SUCCESS or WL_FAILURE - */ -wl_err_t wl_delete_wep_key(uint8_t key_idx, struct wl_mac_addr_t *bssid); - -/*! @brief Set a WPA/WPA2 passphase - * - * Associate a WPA/WPA2/RSN passphrase with a network. - * The number of passphrases that can be stored can - * vary but is always at least one. Passphrases can - * be added until \a wl_add_wpa_passphrase() returns - * WL_RESOURCES. - * - * @param net Network with which to associate the passphrase. - * @param passphrase Passphrase. Valid characters in a passphrase - * must lie between ASCII 32-126 (decimal). - * @param len Length of passphrase. Valid lengths are 8-63. - * @param enc_type Encryption type. If this is set to ENC_TYPE_AUTO - * then the most secure supported mode will be automatically - * selected. Normally you only need to pass something else here - * if you need to enforce picking a certain encryption mode when - * the network supports several modes and you don't want to use - * the best one. - * @param auth_mode Authentication mode. If this is set to AUTH_MODE_AUTO - * then the most secure mode will be automatically selected. - * Normally you only need to pass something else here if the network - * announces support for both WPA and WPA2/RSN and the passphrases are - * different. - * @return - * - WL_SUCCESS - * - WL_INVALID_ARGS if the passphrase length is invalid. - * - WL_RESOURCES if no more passphrases can be added. - */ -wl_err_t wl_set_passphrase(const struct wl_network_t *net, - const char *passphrase, - const size_t len, - const enum wl_enc_type enc_type, - const enum wl_auth_mode auth_mode); - -/*! @brief Remove a WPA/WPA2 passphase - * - * Remove a WPA/WPA2/RSN passphrase associated with a network. - * - * @param net Network with which to associate the passphrase. - * If net is NULL then all stored passphrases will be - * cleared. - * @return - * - WL_SUCCESS - * - WL_FAILURE if no passphrase was associated with the net. - */ -wl_err_t wl_clear_passphrase(struct wl_network_t *net); - - -/*! \brief Enable legacy power save mode - * - * Enable legacy power save mode. In legacy power save mode, the device - * will power down when idle. When connected, the device will wake up to - * receive beacon frames and any buffered data from the AP. The response - * time when legacy power save is enabled might therefore be as long as the - * AP beacon interval (mostly 100 ms). However, the throughput should not - * be affected. - * - * @return WL_SUCCESS or WL_FAILURE. - */ -wl_err_t wl_enable_ps(void); - -/*! \brief Disable legacy power save mode - * - * @return WL_SUCCESS or WL_FAILURE. - */ -wl_err_t wl_disable_ps(void); - -/*! \brief Configure power save parameters. - * - * @param use_ps_poll Use PS-Poll frames to retrieve buffered data. Any changes - * to this parameter will take effect upon next connect - * or when power save is enabled through wl_enable_ps(). - * Note: To retrieve one buffered packet, the ps poll scheme - * needs one ps poll packet to the AP instead of two null - * packets in the power management bit scheme. Ps poll avoids - * the overhead of traffic monitoring time in active mode as - * well. But since each ps poll request can make the AP - * release only one buffered packet, it is not the optimal - * scheme for applications with heavy downlink traffic. - * @param ps_traffic_timeout Timeout in [ms] to wait for more buffered data - * from AP. This setting has no effect if - * use_ps_poll is 1. Any changes to this parameter - * will take effect immediately. - * @param ps_delay Power save will de delayed ps_delay [ms] after connecting to - * an AP. - * @param rx_all_dtim If set to 1, then STA will wake up to listen to every - * beacon containing DTIM (delivery traffic indication messages) when - * connected. The actual DTIM interval is configured in the AP. - * If the DTIM interval, as configured in the AP, is larger than - * \a listen_interval, the STA will wakeup according to the - * \a listen_interval parameter. - * @param listen_interval The Listen Interval field is used to indicate to the - * AP how often a STA in power save mode wakes to listen - * to beacon frames. The value of this parameter is expressed in units - * of Beacon Interval. An AP may use the Listen Interval information in - * determining the lifetime of frames that it buffers for a STA. - * Any changes to this parameter will take effect upon next association. - * - * @return WL_SUCCESS or WL_FAILURE. - */ -wl_err_t wl_conf_ps(uint8_t use_ps_poll, - uint32_t ps_traffic_timeout, - uint32_t ps_delay, - uint8_t rx_all_dtim, - uint16_t listen_interval); - -/*! \brief Get the interface MAC address. - * - * Return the 802.3 MAC address of the network interface. - * - * @param buf Output buffer. It must be at least WL_MAC_ADDR_LENGTH - * bytes long and only the first WL_MAC_ADDR_LENGTH bytes - * will contain valid data. - * @return - * - WL_FAILURE if the interface is not up. - * - WL_SUCCESS - */ -wl_err_t wl_get_mac_addr(uint8_t* buf); - -/*! \brief Return the associated network. - * - * Return the description of the currently associated - * network, if any. - * - * @return The network description, or NULL of the driver - * is unconnected. - */ -struct wl_network_t* wl_get_current_network(void); -/*! @} */ - -/** \defgroup wl_data Data Transfer - * - * \brief Packet processing interface. - * - * Note that the examples in this group assumes that the transport library - * functions in the \a wl_transport group are being used. For more information, - * See the documentation for those functions in the \a wl_transport group. - -For the IP stack integration you need to intercept received packets so -they can be sent up the stack and to transmit packets coming down the -stack. - -By default the wl_api library discards all data packets. To receive -them the application must register a rx interrupt service routine (isr) -using the \a wl_register_rx_isr() function. - -\code -static void rx_isr(void* ctx) { - rx_pending = TRUE; -} -\endcode - -Since the rx_isr() function is only called in interrupt context, it is not -safe to perform the actual read directly from rx_isr(). If an OS is used, -the normal case is to signal a receiver thread to invoke the ip stack -read function to read the pending data. In a system that runs without an OS -(as in the example), a flag is set to indicate that wl_rx() can be invoked -from the ip stack read function next time the ip stack is polled. -The beginning of a ip stack read function can look like this - -\code -static void ip_stack_rx_pkt() { - char *pkt = malloc(MAX_PKT_SIZE); - uint16_t len = MAX_PKT_SIZE; - - if (p == NULL) { - app_error("Out of memory."); - return; - } - wl_rx(pkt, &len); - if (0 == len) { - app_error("Packet reception failed."); - free(pkt); - return - } -} -\endcode - -Since the ip_stack_rx_pkt() function should only be called when there is -actually a packet ready to read you do not have to check the return value -from \a wl_rx() since it only returns failure if there is no packet ready to -read. - -A packet arriving from the WiFi interface can be either a data -packet or a message from the WiFi hardware to the WiFi driver -(which is implemented by the wl_api library). This means that -wl_api must process every packet to decide if it is an internal -message or a data frame that -should be passed up to the application. Data packets are -prefixed with an extra header containing some administrative -information, and may be followed by padding bytes and so -wl_api also needs to strip the extra header and any padding -before the packet can be safely ingested by the IP stack. -All this happens in the function \a wl_process_rx() which \b must -be called on every packet received by a call to \a wl_rx(). - -Continuing the ip_stack_rx_pkt() example - -\code - { - char* stripped_pkt; - size_t stripped_pkt_len; - uint16_t vlan; - int status; - - status = wl_process_rx(pkt, - len, - &stripped_pkt, - &stripped_pkt_len, - &vlan); - if (WL_ABSORBED == status) { - // This is normal. The packet was a - // wl_api-internal message. - free(pkt); - return; - } - app_ip_stack_input(stripped_pkt, - stripped_pkt_len, - vlan); - free(pkt); - } -} -\endcode - -If \a wl_process_rx() decides that the packet was a command it processes -it and returns \a WL_ABSORBED to signal that the packet should -not be used by anyone else. Otherwise stripped_pkt is -pointing to the beginning of a 802.3 Ethernet frame of length -stripped_pkt_len. If the IP stack supports VLAN and QoS -the extra VLAN tag should be passed to the IP stack -together with the packet. For IP stacks without this support the VLAN tag -contents can safely be ignored, but it must still be filled in by \a wl_process_tx(). - -To register the receive isr - -\code - wl_register_rx_isr(rx_isr, NULL); -\endcode - -Transmitting data packets happens in a similar way but does not -require a callback/isr since the application/IP stack knows when it has -packets to send. - -\code -int ip_stack_tx_pkt(char *pkt, size_t len, uint16_t vlan_tag) { - int status; - char wlan_hdr[WL_HEADER_SIZE]; - // The packet must have an Ethernet header - if (len < ETHERNET_HEADER_SIZE) { - app_error("Invalid packet length"); - return 0; - } - hdr_len = sizeof wlan_hdr; - status = wl_process_tx(pkt, - ETHERNET_HEADER_SIZE, - len, - wlan_hdr, - vlan_tag, - NULL); - if ( WL_SUCCESS != status ) { - app_error("Packet processing failed"); - return 0; - } - // Transmit the header first - if (wl_tx(wlan_hdr, hdr_len) != WL_SUCCESS) { - app_error("Header transmission failed"); - return 0; - } - // Then transmit the data packet - if (wl_tx(pkt, len) != WL_SUCCESS) { - app_error("Packet transmission failed"); - return 0; - } -} -\endcode - -The final piece of the puzzle in the IP stack integration is -the MAC address of the WiFi interface - -\code - char mac_addr[WL_MAC_ADDR_LENGTH]; - - wl_get_mac_addr(mac_addr); - ip_stack_set_mac_address(mac_addr); -\endcode - - * @{ - */ - -/*! Size of the wl_api packet header */ -#ifdef WFE_6_12 -#define WL_HEADER_SIZE 16 -#else -#define WL_HEADER_SIZE 14 -#endif - -/*! Maximum packet size (including wl_api headers and paddings) - * - * Maximum packet size is obtained with the following data: - * - * 1500 bytes of Ethernet payload (MTU) + 14 bytes of Ethernet header + - * WL_HEADER_SIZE of wl header. This data is then size-aligned to 16. - * - */ -#define WL_MAX_PKT_LEN 1536 - - -/*! - * \brief Process rx packet. - * - * Processes a raw rx packet by unencrypting it (if necessary) - * and stripping headers so as to output a 802.3 frame. - * - * wl_process_rx() will strip bytes both from the head and from the tail. - * - * Upon return from wl_process_rx(), the pointer at stripped_pkt will - * point to the start of the Ethernet header, hence adjusting the offset - * by WL_HEADER_LEN bytes. Any padding (added by the wifi device) will - * be removed from the tail of the packet, hence making len smaller. - * - * The wl_api library of the device will not perform any Ethernet padding - * removal. The padding removal performed by wl_process_rx() is only for - * the padding used in the protocol shared by the host and the device. - * This padding is mainly there to ensure that the host does not have to - * deal with rx of odd-sized data buffers (which some DMA's have problems - * to handle). - * - * @param pkt Input buffer (raw packet) - * @param pkt_len Length of the input buffer (in bytes) - * @param stripped_pkt Pointer to the packet with the - * transport header stripped. - * @param stripped_pkt_len Length of the stripped packet. - * @param vlanid_prio VLAN ID and 802.1p priority value - * using following format: - *
- *        1
- *  5|432109876543|210
- *  -+------------+---
- *  0|   VLANID   |PRI
- * 
- * - * @returns - * - WL_FAILURE - * - WL_ABSORBED if the packet was an internal driver command - * and not a proper data packet. The packet should - * be freed and the stripped_pkt will not point - * to a valid packet. - * - WL_SUCCESS - */ -wl_err_t wl_process_rx(char *pkt, size_t pkt_len, char **stripped_pkt, - size_t *stripped_pkt_len, uint16_t *vlanid_prio); - -/*! \brief Process tx packet. - * - * Prepare tx packet for transmission. - * - * This function is typically used only by the TCP/IP stack driver. - * - * Takes a Ethernet II frame header and generates a message passing header - * for it. - * - * The caller should ensure that any frames injected into wl_process_tx() - * are proper Ethernet frames. The wl_api library or the device will not - * perform any Ethernet padding if the frames are too short. - * - * The Ethernet header is assumed to have the following layout : - * ... - * The rest of the Ethernet header buffer (if any) is ignored. - * - * A note on the TX packet representation : - * If your TX packets are simple contiguous buffers you can ignore - * the rest of this note and pass NULL in parameter \a pkt_handle. - * A TX packet may have a more complex structure than a RX packet - * (which must be a contiguous, flat buffer). The IP stack may - * for example represent a packet as a linked list of buffers where - * the Ethernet header, the IP header and other headers, are represented - * by separate buffers. In some cases, such as when the driver is - * running in SoftAP mode, a TX packet has to be copied and queued - * internally for later processing and to support this when packets - * have a complicated structure a special data access function can - * be registered. See \a wl_register_pkt_read_cb() for details. - * If you use \a wl_process_tx() with non-simple packets you - * should pass a handle to the packet in parameter \a pkt_handle - * and register an access function with \a wl_register_pkt_read_cb(). - * - * @param eth_hdr Input buffer (Ethernet header) - * @param eth_hdr_len Input buffer length (must be >= 14) - * This is usually the same as pkt_len unless e.g linked list or buffers - * chained in other ways are being used. - * @param pkt_len Length of the complete data packet (in bytes) - * @param hdr Pointer to the header buffer (must be - * allocated by the caller). The length of the buffer - * must be at least WL_HEADER_SIZE bytes. - * @param vlanid_prio VLAN ID and 802.1p priority value - * using following format: - *
- *        1
- *  5|432109876543|210
- *  -+------------+---
- *  0|   VLANID   |PRI
- * 
- * Ignored for legacy association (no WMM) - * @param pkt_handle A handle to the complete packet. If this parameter - * is NULL then \a eth_hdr is expected to point to the whole packet - * in a single contiguous buffer (the default). If a different packet - * representation is used this parameter should be a handle to the - * complete packet and will be passed unmodified to the data - * access function that was registered with \a wl_register_pkt_read_cb(). - * - * @returns - * - WL_FAILURE - * - WL_RESOURCES if packet can not be processed at the moment. - * The caller must either drop the packet or try - * retransmit it later. - * - WL_AVAIL if network not available - * - WL_SUCCESS if packet is ready for transmission through wl_tx(). - */ -wl_err_t wl_process_tx(char *eth_hdr, - size_t eth_hdr_len, - size_t pkt_len, - char *hdr, - uint16_t vlanid_prio, - void *pkt_handle); - - -/*! \brief Get current TX and RX rate used for data transfer - * - * During transmission and reception of data, the actual rate used will depend - * on the signal quality. This function can be used to get the actual rate used - * for the last tx and rx data. - * - * @param tx will hold the tx rate upon successful return. - * @param rx will hold the rx rate upon successful return. - * - * @return - * - WL_SUCCESS on success - * - WL_FAILURE on failure. - */ -wl_err_t wl_get_rate(wl_rate_t *tx, wl_rate_t *rx); - - -/*! @} */ /* End wl_data group */ - - -/** \defgroup wl_transport Transport interface - * - * \brief Low level transport interface. - * - * These functions access the low level transport driver which makes - * the application independent of the actual physical transport - * layer (usually SDIO or SPI). - * - -For applications running on an real time kernel or without an -operating system, the provided transport library will fit right into the -application design. However, when running on a more complex operating system -(such as windows or linux) which has its own transport primitivies and -components (and probably its own IP stack) it might be preferred to design a -custom transport library for that specific environment. Therefore, these -transport interface functions are fully optional. - - - * @{ - */ - -#define WL_RX_MIN_PKT_LEN 32 - - -/*! \brief WiFi event callback. - * - * This function is invoked in interrupt context when there is new data - * available from the mac. This function is supplied by the user - * of the API. - * - * This function is typically used only by the TCP/IP stack driver. - * - * @param ctx A context handle. This handle is passed - * untouched to the callback and has the same value - * as the context registered with the callback in - * wl_register_event_cb(). - */ -typedef void (*wl_rx_isr_t) (void* ctx); - - -/*! \brief Firmware access function. - * - * Reads the WiFi firmware image. This function is supplied by - * the user of this API since storage for the firmware image is - * managed by the application. - * - * This function should read the specified number of bytes of the - * firmware image starting at the specified \a offset. The number of - * bytes to read is given in \a len. Upon return, \a buf should point - * to a buffer which holds the read data and the number of valid bytes - * in \a buf is returned from the call. - * - * This function will be called repeatedly until the complete firmware - * image has been read. - * - * This function may be called again at any time while the driver is - * running to download further pieces of the WiFi firmware image as - * needed by the runtime requirements. This will normally only happen - * when the driver switches between networks of different kinds such - * as from WEP to WPA, or from ESS to IBSS for example. - * - * For convenience, any time a firmware chunk has been completely - * downloaded this function will be called once with the \a buf - * parameter set to NULL to indicate that no more data is needed right - * now and that any dynamically allocated buffers which holds firmware - * data can be freed without much performance impact. - * - * @param ctx Opaque context pointer as provided to \a wl_init() that will be - * passed back to the callback. - * @param buf Should be assigned the address of the buffer holding the read - * data upon return. This parameter can be NULL which indicates - * that there are no further immediately pending accesses. - * @param offset Offset in bytes from the start of the firmware image. - * Data should be copied into buf starting at \a offset. - * @param len The number of bytes to copy into \a buf. - * @return The number of bytes copied into buf. This may be smaller than - * \len if the implementation of the function so requires. - */ -typedef size_t (wl_fw_read_cb_t)(void *ctx, - const uint8_t **buf, - size_t offset, - size_t len); - - -/*! \brief Initialize the transport interface and download the WiFi firmware - * image to the device. - * - * This operation will proceed synchronously until the firmware is completely - * downloaded. wl_init() should be called after this function has returned to - * perform device initialization. - * - * @param fw_read_cb callback function to invoke during firmware download. - * @param ctx Opaque context pointer that will be passed to the callbacks - * when they are invoked. This parameter is never - * accessed by the API. - * @param mode will hold the host attention mode used by the transport layer. - * This parameter can be passed directly to \a wl_init(). - * - * @return - * - * - WL_CARD_FAILURE if the wl hardware device is not available - * - WL_FIRMWARE_INVALID if the firmware obtained through fw_read_cb is - * invalid. - * - WL_OOM if the necessary memory could not be allocated. - */ -wl_err_t wl_transport_init(wl_fw_read_cb_t *fw_read_cb, - void *ctx, - enum wl_host_attention_mode *mode); - -/*! \brief WiFi driver forward progress function - * - * This function must be called in polled environments to - * ensure forward progress. The call can be made as often as possible from - * the main application loop. However, the call will not have any effect unless - * there is an interrupt pending from the hardware. - * - * In interrupt mode, wl_poll() must be called if no interrupt - * handler is registered through wl_register_rx_isr(). When an interrupt - * handler is registered, it is no longer necessary to invoke wl_poll(). - * - * Note that this function should not be invoked from interrupt context. - * - */ -void wl_poll(void); - - -/*! \brief Register RX callback - * - * Register function to be called by the low level transport driver - * when a new packet is available or when there is a state change in the - * data path. When invoked, any pending data can be fetched by calling wl_rx(). - * - * This function is typically used only by the TCP/IP stack driver. - * Note, the registered function is called in interrupt context. - * - * @param isr rx interrup handler. - * @param ctx Opaque context pointer that is passed unmodified to the - * rx_cb callback when it is invoked. - * - * @return WL_SUCCESS - */ -wl_err_t wl_register_rx_isr(wl_rx_isr_t isr, void* ctx); - - -/*! \brief Read pending packet - * - * Read a pending packet from the low level transport driver. - * The read packet must be passed to the wl_process_rx() function - * for proper driver operation. - * - * @param buf Buffer to read the packet into. This buffer must be - * at least WL_MAX_PKT_LEN bytes long. - * @param len Length of buf in bytes. Contains the length of the - * read packet in bytes on output. - * @return - * - WL_FAILURE if no RX packet is pending. - * - WL_SUCCESS - */ -wl_err_t wl_rx(uint8_t* buf, uint16_t* len); - -/*! \brief Send processed tx packet - * - * Send a packet to the low level transport driver. - * This packet has to have been successfully processed by the - * wl_process_tx() function. - * - * @param buf Buffer to send. - * @param len Length of buf in bytes. - * - * @return - * - WL_FAILURE if the interface is not ready to send. - * - WL_SUCCESS if the packet was successfully transmitted. - */ -wl_err_t wl_tx(const uint8_t* buf, uint16_t len); - - -/*! \brief Configure data alignment - * - * This function can be used if the host SDIO/SPI controller has certain - * requirements on the data transfer sizes that can be used on the SDIO/SPI bus. - * - * If the txsize parameter is non-zero, additional padding data should be added - * when performing the low level transfer of data buffer of sizes that are not - * a multiple of the size_align parameter. See \ref wl_sdio and \ref wl_spi for - * more information. - * - * @param txsize will configure the size alignment for tx data. - * - */ -void wl_conf_alignment(uint8_t txsize); - - -/*! @} */ /* End wl_transport group */ - - -/** \defgroup wl_custom Custom environment support - * - * \brief Support for custom environments - * - * These functions should only be used in cases where the transport library is - * not used at all. This usually applies to operating systems and environments - * where there already exists a transport layer framework, e.g. linux or - * windows. - * - * - -Note that the \a wl_poll() function is part of the transport library. Therefore, -it should not be used in custom environments. Therefore, it is necessary to -implement a custom polling or interrupt based scheme to ensure that any -incoming packets are processed by the core. - - * @{ - */ - - /*! \brief Wakeup callback function. - * - * Invoked when the WiFi device should wake up from power save mode. - * This function should send the proper commands to the device. - * - * Note that this type should only be used in custom environments, where - * the transport library is not used. - * - * @param ctx Opaque context pointer as provided to \a wl_register_wakeup_cb() - * that will be passed back to the callback. - * @param wakeup indicates whether wakeup should be set or cleared in the - * device. - */ -typedef void (wl_wakeup_cb_t)(void* ctx, uint8_t wakeup); - -/*! \brief Register wakeup callback function. - * - * Register a function that will be invoked when the WiFi device should wake - * up from power save mode. - * - * Note that this function should only be used in custom environments, where - * the transport library is not used. - * - * @param wakeup_cb Will be invoked when the device should wakeup from sleep - * mode. - * @param ctx Opaque context pointer that will be passed back to the callback. - */ -void wl_register_wakeup_cb(wl_wakeup_cb_t *wakeup_cb, void *ctx); - - -/*! \brief Management tx callback function. - * - * Invoked when the a management message should be transmitted to the - * WiFi device. This function should ensure that the message is passed through - * to the device and should never fail. - * - * Note that this type should only be used in custom environments, where - * the transport library is not used. - * - * @param ctx Opaque context pointer as provided to \a wl_register_mgmt_tx_cb() - * that will be passed back to the callback. - * @param buf Points to the buffer which holds the management data, - * @param len Size of the buffer. - */ -typedef void (wl_mgmt_tx_cb_t)(void *ctx, const uint8_t *buf, uint16_t len); - - -/*! \brief Register management tx callback function - * - * Register a function that will be invoked when a management message should - * be transmitted to the device. - * - * Note that this function should only be used in custom environments, where - * the transport library is not used. - * - * IMPORTANT : In a custom environment without a transport library \a - * wl_register_mgmt_tx_cb() \b must have been called - * before \a wl_fw_download() is called since \a - * wl_fw_download() depends on the \a mgmt_tx_cb() to send - * the firmware data to the WiFi chip. - * - * @param mgmt_tx_cb The callback function to invoke. - * @param ctx Opaque context pointer that will be passed back to the callback. - */ -void wl_register_mgmt_tx_cb(wl_mgmt_tx_cb_t *mgmt_tx_cb, void *ctx); - - - -/*! \brief Download the WiFi firmware image to the device. - * - * This operation will proceed synchronously until the firmware is completely - * downloaded. wl_init() should be called after this function has returned to - * perform device initialization. This function depends on \a - * wl_register_mgmt_tx_cb(). See that function for details. - * - * @param ctx Opaque context pointer that will be passed to the callbacks - * when they are invoked. This parameter is never - * accessed by the API. - * @param fw_read_cb callback function to invoke during firmware download. - * - * @return - * - * - WL_CARD_FAILURE if the wl hardware device is not available - * - WL_FIRMWARE_INVALID if the firmware obtained through fw_read_cb is - * invalid. - * - WL_OOM if the necessary memory could not be allocated. - */ - wl_err_t wl_fw_download(wl_fw_read_cb_t *fw_read_cb, void *ctx); - - - -/*! @} */ /* End wl_custom group */ - - - -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h deleted file mode 100644 index 5be5f37..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h +++ /dev/null @@ -1,19287 +0,0 @@ -/* - * Programming interface for wl_api. - * Copyright (C) 2010 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -#ifndef WITHOUT_STDINT -#include -#endif -const uint8_t fw_buf[154188] = { - 0x10, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00, - 0x38, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x61, 0x04, 0x00, - 0x30, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x30, 0x61, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xee, - 0xee, 0xee, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0, - 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0, - 0x9f, 0xe5, 0x00, 0x00, 0xa0, 0xe1, 0x18, 0xf0, - 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x44, 0x00, - 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08, - 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x08, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0xe1, 0x1f, 0x00, 0xc0, 0xe3, - 0x13, 0x00, 0x80, 0xe3, 0xc0, 0x00, 0x80, 0xe3, - 0x00, 0xf0, 0x2f, 0xe1, 0x1c, 0xf0, 0x9f, 0xe5, - 0x3d, 0x02, 0x00, 0xeb, 0x5a, 0x02, 0x00, 0xeb, - 0x8d, 0x02, 0x00, 0xeb, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x41, 0xf0, 0xde, 0xfb, - 0x01, 0xf0, 0xdc, 0xfd, 0x3c, 0x00, 0x78, 0x00, - 0x00, 0x00, 0xfe, 0xe7, 0x00, 0x00, 0x5c, 0x00, - 0x00, 0x00, 0x78, 0x47, 0xc0, 0x46, 0x01, 0x00, - 0x00, 0xea, 0x78, 0x47, 0xc0, 0x46, 0x17, 0x00, - 0x00, 0xea, 0x8c, 0x11, 0x9f, 0xe5, 0x00, 0x20, - 0x91, 0xe5, 0x00, 0x30, 0x0f, 0xe1, 0x84, 0x11, - 0x9f, 0xe5, 0xfd, 0x20, 0xa1, 0xe8, 0x80, 0x01, - 0x9f, 0xe5, 0x80, 0x21, 0x9f, 0xe5, 0x01, 0x20, - 0x42, 0xe0, 0x0d, 0x00, 0x40, 0xe0, 0x3c, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x50, 0xe1, - 0x28, 0x00, 0x00, 0xaa, 0x68, 0x01, 0x9f, 0xe5, - 0x0d, 0x00, 0x50, 0xe1, 0x02, 0x00, 0x00, 0xba, - 0x04, 0x20, 0x10, 0xe4, 0x04, 0x20, 0x81, 0xe4, - 0xfa, 0xff, 0xff, 0xea, 0x58, 0x11, 0x9f, 0xe5, - 0x58, 0x01, 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5, - 0x3c, 0x11, 0x9f, 0xe5, 0x50, 0x01, 0x9f, 0xe5, - 0x00, 0x00, 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1, - 0x3c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x48, 0x11, - 0x9f, 0xe5, 0x00, 0x00, 0x91, 0xe5, 0x24, 0x11, - 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5, 0x2c, 0x11, - 0x9f, 0xe5, 0x38, 0x01, 0x9f, 0xe5, 0x00, 0x00, - 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1, 0x74, 0x02, - 0x00, 0xeb, 0x10, 0x01, 0x9f, 0xe5, 0x28, 0x11, - 0x9f, 0xe5, 0x04, 0x20, 0x91, 0xe4, 0x04, 0x20, - 0x00, 0xe4, 0x04, 0x21, 0x9f, 0xe5, 0x02, 0x00, - 0x51, 0xe1, 0x3c, 0x00, 0x2c, 0x01, 0x00, 0x00, - 0xfa, 0xff, 0xff, 0x1a, 0xf0, 0x10, 0x9f, 0xe5, - 0xfd, 0x20, 0xb1, 0xe8, 0x03, 0xf0, 0x2f, 0xe1, - 0xe0, 0x10, 0x9f, 0xe5, 0x00, 0x20, 0x81, 0xe5, - 0xe8, 0x10, 0x9f, 0xe5, 0xf4, 0x20, 0x9f, 0xe5, - 0x00, 0x20, 0x81, 0xe5, 0x02, 0x10, 0x80, 0xe2, - 0x00, 0x00, 0x20, 0xe0, 0x01, 0x00, 0x40, 0xe2, - 0x11, 0xff, 0x2f, 0xe1, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x3c, 0x00, 0x68, 0x01, - 0x00, 0x00, 0x01, 0xf0, 0x9c, 0xf8, 0x78, 0x47, - 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, - 0x2f, 0xe1, 0x01, 0xf0, 0x94, 0xf8, 0x78, 0x47, - 0x00, 0x00, 0x03, 0x00, 0x2d, 0xe9, 0x00, 0x10, - 0x0f, 0xe1, 0x00, 0x10, 0x80, 0xe5, 0xb8, 0x10, - 0x9f, 0xe5, 0x04, 0x10, 0x80, 0xe5, 0x00, 0x10, - 0xa0, 0xe1, 0x10, 0x00, 0x80, 0xe2, 0xfc, 0x1f, - 0xa0, 0xe8, 0x00, 0x20, 0xa0, 0xe1, 0x3c, 0x00, - 0xa4, 0x01, 0x00, 0x00, 0x01, 0x30, 0xa0, 0xe1, - 0x03, 0x00, 0xbd, 0xe8, 0x08, 0x00, 0x83, 0xe5, - 0x0c, 0x10, 0x83, 0xe5, 0xd3, 0x00, 0xa0, 0xe3, - 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8, - 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4, - 0xd2, 0x00, 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1, - 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1, - 0x04, 0x10, 0x82, 0xe4, 0xd1, 0x00, 0xa0, 0xe3, - 0x3c, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, - 0x21, 0xe1, 0x00, 0x7f, 0xa2, 0xe8, 0x00, 0x10, - 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4, 0xd7, 0x00, - 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60, - 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10, - 0x82, 0xe4, 0xdb, 0x00, 0xa0, 0xe3, 0x00, 0xf0, - 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10, - 0x4f, 0xe1, 0x00, 0x10, 0x82, 0xe5, 0x00, 0x00, - 0x93, 0xe5, 0x3c, 0x00, 0x1c, 0x02, 0x00, 0x00, - 0x00, 0xf0, 0x2f, 0xe1, 0x1e, 0xff, 0x2f, 0xe1, - 0x20, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, - 0x20, 0xee, 0x01, 0x00, 0xd8, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0xf0, 0x9f, 0xe5, - 0x10, 0x01, 0x00, 0x00, 0x08, 0x03, 0x00, 0x00, - 0xee, 0xee, 0xee, 0xee, 0x24, 0x03, 0x00, 0x00, - 0x20, 0x02, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x63, 0x1c, 0x0b, 0x4d, 0x3c, 0x00, 0x58, 0x02, - 0x00, 0x00, 0x01, 0xd1, 0x6c, 0x69, 0x10, 0xe0, - 0x00, 0xf0, 0x6c, 0xfb, 0x09, 0x48, 0xff, 0xf7, - 0x0c, 0xff, 0xec, 0x60, 0x08, 0x4a, 0x51, 0x68, - 0x50, 0x68, 0x88, 0x42, 0xfc, 0xd0, 0x02, 0x20, - 0x28, 0x70, 0x01, 0x21, 0x8a, 0x20, 0x01, 0xf0, - 0x12, 0xf8, 0x20, 0x1c, 0xb0, 0xbd, 0x30, 0x00, - 0x07, 0x00, 0x51, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x3c, 0x00, - 0x94, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0xf0, - 0x50, 0xfb, 0x14, 0x48, 0xff, 0xf7, 0xf0, 0xfe, - 0x13, 0x49, 0x14, 0x48, 0xc1, 0x60, 0x01, 0x21, - 0x13, 0x4a, 0x49, 0x03, 0x91, 0x60, 0x13, 0x49, - 0xca, 0x78, 0x08, 0x23, 0x9a, 0x43, 0xca, 0x70, - 0xca, 0x78, 0x04, 0x23, 0x1a, 0x43, 0xca, 0x70, - 0x6b, 0x1c, 0x0d, 0xd0, 0x0e, 0x4b, 0x5a, 0x68, - 0x59, 0x68, 0x91, 0x42, 0xfc, 0xd0, 0xbe, 0x21, - 0x3c, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x19, 0x73, - 0x19, 0x7a, 0x11, 0x22, 0x91, 0x43, 0x19, 0x72, - 0x19, 0x7a, 0xc9, 0x07, 0xfc, 0xd4, 0x02, 0x21, - 0x01, 0x70, 0xff, 0xf7, 0xd0, 0xfe, 0x20, 0x1c, - 0xb0, 0xbd, 0x91, 0x02, 0x00, 0x00, 0xff, 0xff, - 0xff, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, - 0x08, 0x47, 0x10, 0x47, 0x18, 0x47, 0x20, 0x47, - 0x28, 0x47, 0x30, 0x47, 0x38, 0x47, 0x10, 0xb5, - 0x04, 0x1c, 0x10, 0x1c, 0x00, 0xf0, 0x23, 0xf9, - 0x03, 0xc4, 0x10, 0xbc, 0x08, 0xbc, 0x18, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x03, 0x00, 0x00, - 0x10, 0xb4, 0x04, 0x2a, 0x0e, 0xd3, 0x03, 0x1c, - 0x0b, 0x43, 0x9b, 0x07, 0x0a, 0xd1, 0x08, 0xc8, - 0x10, 0xc9, 0xa3, 0x42, 0x02, 0xd1, 0x04, 0x3a, - 0x04, 0x2a, 0xf8, 0xd2, 0xa3, 0x42, 0x01, 0xd0, - 0x04, 0x38, 0x04, 0x39, 0x00, 0x2a, 0x02, 0xd1, - 0x00, 0x20, 0x10, 0xbc, 0x70, 0x47, 0xd3, 0x07, - 0x01, 0xd5, 0x01, 0x32, 0x05, 0xe0, 0x03, 0x78, - 0x0c, 0x78, 0x01, 0x31, 0x3c, 0x00, 0x38, 0x04, - 0x00, 0x00, 0x01, 0x30, 0xa3, 0x42, 0x07, 0xd1, - 0x03, 0x78, 0x0c, 0x78, 0x01, 0x31, 0x01, 0x30, - 0xa3, 0x42, 0x01, 0xd1, 0x02, 0x3a, 0xf1, 0xd1, - 0x18, 0x1b, 0xe9, 0xe7, 0x00, 0x00, 0x78, 0x47, - 0x00, 0x00, 0x00, 0x20, 0xa0, 0xe3, 0x04, 0x00, - 0x51, 0xe3, 0x08, 0x00, 0x00, 0x3a, 0x03, 0xc0, - 0x10, 0xe2, 0x0d, 0x00, 0x00, 0x0a, 0x04, 0xc0, - 0x6c, 0xe2, 0x02, 0x00, 0x5c, 0xe3, 0x3c, 0x00, - 0x74, 0x04, 0x00, 0x00, 0x01, 0x20, 0xc0, 0xe4, - 0x01, 0x20, 0xc0, 0xa4, 0x01, 0x20, 0xc0, 0xc4, - 0x0c, 0x10, 0x41, 0xe0, 0x06, 0x00, 0x00, 0xea, - 0x81, 0xcf, 0xb0, 0xe1, 0x01, 0x20, 0xc0, 0x24, - 0x01, 0x20, 0xc0, 0x24, 0x01, 0x20, 0xc0, 0x44, - 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, - 0x00, 0x20, 0xa0, 0xe3, 0x00, 0x40, 0x2d, 0xe9, - 0x02, 0x30, 0xa0, 0xe1, 0x02, 0xc0, 0xa0, 0xe1, - 0x3c, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x02, 0xe0, - 0xa0, 0xe1, 0x20, 0x10, 0x51, 0xe2, 0x0c, 0x50, - 0xa0, 0x28, 0x0c, 0x50, 0xa0, 0x28, 0x20, 0x10, - 0x51, 0x22, 0xfb, 0xff, 0xff, 0x2a, 0x01, 0x1e, - 0xb0, 0xe1, 0x0c, 0x50, 0xa0, 0x28, 0x0c, 0x00, - 0xa0, 0x48, 0x00, 0x40, 0xbd, 0xe8, 0x01, 0x11, - 0xb0, 0xe1, 0x04, 0x20, 0x80, 0x24, 0x1e, 0xff, - 0x2f, 0x01, 0x01, 0x20, 0xc0, 0x44, 0x01, 0x20, - 0xc0, 0x44, 0x3c, 0x00, 0xec, 0x04, 0x00, 0x00, - 0x40, 0x04, 0x11, 0xe3, 0x01, 0x20, 0xc0, 0x14, - 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, - 0x03, 0x00, 0x52, 0xe3, 0x3e, 0x00, 0x00, 0x9a, - 0x03, 0xc0, 0x10, 0xe2, 0x08, 0x00, 0x00, 0x0a, - 0x01, 0x30, 0xd1, 0xe4, 0x02, 0x00, 0x5c, 0xe3, - 0x0c, 0x20, 0x82, 0xe0, 0x01, 0xc0, 0xd1, 0x94, - 0x01, 0x30, 0xc0, 0xe4, 0x01, 0x30, 0xd1, 0x34, - 0x04, 0x20, 0x42, 0xe2, 0x3c, 0x00, 0x28, 0x05, - 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x94, 0x01, 0x30, - 0xc0, 0x34, 0x03, 0x30, 0x11, 0xe2, 0x1e, 0x00, - 0x00, 0x0a, 0x04, 0x20, 0x52, 0xe2, 0x2f, 0x00, - 0x00, 0x3a, 0x03, 0xc0, 0x31, 0xe7, 0x02, 0x00, - 0x53, 0xe3, 0x08, 0x00, 0x00, 0x0a, 0x0f, 0x00, - 0x00, 0x8a, 0x2c, 0x34, 0xa0, 0xe1, 0x04, 0xc0, - 0xb1, 0xe5, 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x3c, - 0x83, 0xe1, 0x04, 0x30, 0x80, 0xe4, 0x3c, 0x00, - 0x64, 0x05, 0x00, 0x00, 0xf9, 0xff, 0xff, 0x2a, - 0x01, 0x10, 0x81, 0xe2, 0x23, 0x00, 0x00, 0xea, - 0x2c, 0x38, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5, - 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x38, 0x83, 0xe1, - 0x04, 0x30, 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a, - 0x02, 0x10, 0x81, 0xe2, 0x1b, 0x00, 0x00, 0xea, - 0x2c, 0x3c, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5, - 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x34, 0x83, 0xe1, - 0x3c, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x04, 0x30, - 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a, 0x03, 0x10, - 0x81, 0xe2, 0x13, 0x00, 0x00, 0xea, 0x78, 0x47, - 0x00, 0x00, 0x10, 0x40, 0x2d, 0xe9, 0x20, 0x20, - 0x52, 0xe2, 0x05, 0x00, 0x00, 0x3a, 0x18, 0x50, - 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x18, 0x50, - 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x20, 0x20, - 0x52, 0x22, 0xf9, 0xff, 0xff, 0x2a, 0x02, 0xce, - 0xb0, 0xe1, 0x3c, 0x00, 0xdc, 0x05, 0x00, 0x00, - 0x18, 0x50, 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, - 0x18, 0x00, 0xb1, 0x48, 0x18, 0x00, 0xa0, 0x48, - 0x10, 0x40, 0xbd, 0xe8, 0x02, 0xcf, 0xb0, 0xe1, - 0x04, 0x30, 0x91, 0x24, 0x04, 0x30, 0x80, 0x24, - 0x1e, 0xff, 0x2f, 0x01, 0x82, 0x2f, 0xb0, 0xe1, - 0x01, 0x20, 0xd1, 0x44, 0x01, 0x30, 0xd1, 0x24, - 0x01, 0xc0, 0xd1, 0x24, 0x01, 0x20, 0xc0, 0x44, - 0x01, 0x30, 0xc0, 0x24, 0x3c, 0x00, 0x18, 0x06, - 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x24, 0x1e, 0xff, - 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0xff, 0x30, - 0x01, 0xe2, 0x02, 0x10, 0xa0, 0xe1, 0x03, 0x24, - 0x83, 0xe1, 0x02, 0x28, 0x82, 0xe1, 0x88, 0xff, - 0xff, 0xea, 0x78, 0x47, 0x00, 0x00, 0x80, 0x24, - 0x10, 0xe2, 0x00, 0x00, 0x60, 0x42, 0x41, 0x30, - 0x32, 0xe0, 0x00, 0x10, 0x61, 0x22, 0xa1, 0xc1, - 0x70, 0xe0, 0x20, 0x00, 0x00, 0x3a, 0x3c, 0x00, - 0x54, 0x06, 0x00, 0x00, 0x21, 0xc4, 0x70, 0xe0, - 0x0f, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, - 0xff, 0x24, 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0, - 0x17, 0x00, 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, - 0x09, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, - 0xff, 0x28, 0x82, 0xe3, 0x21, 0xc4, 0x70, 0xe0, - 0x00, 0x04, 0xa0, 0x21, 0xff, 0x2c, 0x82, 0x23, - 0x21, 0xc2, 0x70, 0xe0, 0x0e, 0x00, 0x00, 0x3a, - 0x3c, 0x00, 0x90, 0x06, 0x00, 0x00, 0x00, 0xc0, - 0x70, 0xe2, 0x83, 0x00, 0x00, 0x2a, 0x20, 0x04, - 0xa0, 0x21, 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3, - 0x70, 0xe0, 0x00, 0x13, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0xa1, 0xc2, 0x70, 0xe0, 0x80, 0x12, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc2, - 0x70, 0xe0, 0x00, 0x12, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x3c, 0x00, 0xcc, 0x06, 0x00, 0x00, - 0xa1, 0xc1, 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0, - 0x00, 0x11, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, - 0xa1, 0xc0, 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x01, 0xc0, 0x70, 0xe0, - 0x00, 0x10, 0x41, 0x20, 0x02, 0x20, 0xb2, 0xe0, - 0xe5, 0xff, 0xff, 0x2a, 0xc3, 0x0f, 0x32, 0xe0, - 0xa3, 0x0f, 0x80, 0xe0, 0x3c, 0x00, 0x08, 0x07, - 0x00, 0x00, 0x00, 0x10, 0x61, 0x22, 0x1e, 0xff, - 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0x00, 0x20, - 0xa0, 0xe3, 0xa1, 0xc1, 0x70, 0xe0, 0x20, 0x00, - 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x0f, 0x00, - 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0xff, 0x24, - 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0, 0x17, 0x00, - 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x09, 0x00, - 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0x3c, 0x00, - 0x44, 0x07, 0x00, 0x00, 0xff, 0x28, 0x82, 0xe3, - 0x21, 0xc4, 0x70, 0xe0, 0x00, 0x04, 0xa0, 0x21, - 0xff, 0x2c, 0x82, 0x23, 0x21, 0xc2, 0x70, 0xe0, - 0x0e, 0x00, 0x00, 0x3a, 0x00, 0xc0, 0x70, 0xe2, - 0x50, 0x00, 0x00, 0x2a, 0x20, 0x04, 0xa0, 0x21, - 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3, 0x70, 0xe0, - 0x00, 0x13, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, - 0x3c, 0x00, 0x80, 0x07, 0x00, 0x00, 0xa1, 0xc2, - 0x70, 0xe0, 0x80, 0x12, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x21, 0xc2, 0x70, 0xe0, 0x00, 0x12, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc1, - 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0, 0x00, 0x11, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc0, - 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x3c, 0x00, 0xbc, 0x07, 0x00, 0x00, - 0x01, 0xc0, 0x70, 0xe0, 0x00, 0x10, 0x41, 0x20, - 0x02, 0x20, 0xb2, 0xe0, 0xe5, 0xff, 0xff, 0x2a, - 0x02, 0x00, 0xa0, 0xe1, 0x1e, 0xff, 0x2f, 0xe1, - 0x78, 0x47, 0x00, 0x00, 0x0a, 0x10, 0x40, 0xe2, - 0x20, 0x01, 0x40, 0xe0, 0x20, 0x02, 0x80, 0xe0, - 0x20, 0x04, 0x80, 0xe0, 0x20, 0x08, 0x80, 0xe0, - 0xa0, 0x01, 0xa0, 0xe1, 0x00, 0x21, 0x80, 0xe0, - 0x82, 0x10, 0x51, 0xe0, 0x3c, 0x00, 0xf8, 0x07, - 0x00, 0x00, 0x01, 0x00, 0x80, 0x52, 0x0a, 0x10, - 0x81, 0x42, 0x1e, 0xff, 0x2f, 0xe1, 0x30, 0xb4, - 0x44, 0x1c, 0x81, 0x07, 0x08, 0xd0, 0x01, 0x78, - 0x01, 0x30, 0x00, 0x29, 0x02, 0xd1, 0x00, 0x1b, - 0x30, 0xbc, 0x70, 0x47, 0x81, 0x07, 0xf6, 0xd1, - 0x0b, 0x4a, 0xd5, 0x01, 0x02, 0xc8, 0x8b, 0x1a, - 0x8b, 0x43, 0x2b, 0x40, 0xfa, 0xd0, 0x00, 0x1b, - 0x0a, 0x06, 0x01, 0xd1, 0x03, 0x38, 0x3c, 0x00, - 0x34, 0x08, 0x00, 0x00, 0xef, 0xe7, 0x0a, 0x04, - 0x12, 0x0e, 0x01, 0xd1, 0x02, 0x38, 0xea, 0xe7, - 0x09, 0x02, 0x09, 0x0e, 0xe7, 0xd1, 0x01, 0x38, - 0xe5, 0xe7, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0xf0, 0xb4, 0x03, 0x1c, 0x04, 0x1c, 0x0c, 0x43, - 0xa4, 0x07, 0x0c, 0xd1, 0x10, 0x4d, 0xef, 0x01, - 0x02, 0xe0, 0x04, 0x31, 0x04, 0x3a, 0x10, 0xc3, - 0x04, 0x2a, 0x04, 0xd3, 0x0c, 0x68, 0x66, 0x1b, - 0x3c, 0x00, 0x70, 0x08, 0x00, 0x00, 0xa6, 0x43, - 0x3e, 0x40, 0xf5, 0xd0, 0x00, 0x2a, 0x07, 0xd0, - 0x0c, 0x78, 0x01, 0x31, 0x1c, 0x70, 0x01, 0x33, - 0x00, 0x2c, 0x03, 0xd0, 0x01, 0x3a, 0xf7, 0xd1, - 0xf0, 0xbc, 0x70, 0x47, 0x01, 0x2a, 0xfb, 0xd9, - 0x51, 0x1e, 0x00, 0x22, 0x1a, 0x70, 0x01, 0x33, - 0x01, 0x39, 0xfb, 0xd1, 0xf4, 0xe7, 0x01, 0x01, - 0x01, 0x01, 0x78, 0x47, 0x00, 0x00, 0x02, 0x00, - 0xa0, 0xe3, 0x3c, 0x00, 0xac, 0x08, 0x00, 0x00, - 0x02, 0x10, 0xa0, 0xe3, 0x2e, 0xfe, 0xff, 0xea, - 0x1f, 0x40, 0x2d, 0xe9, 0x00, 0x00, 0x0f, 0xe1, - 0xc0, 0x00, 0x80, 0xe3, 0x00, 0xf0, 0x2f, 0xe1, - 0x81, 0x00, 0xa0, 0xe3, 0x02, 0x10, 0xa0, 0xe3, - 0x01, 0x20, 0x8f, 0xe2, 0x12, 0xff, 0x2f, 0xe1, - 0x00, 0xf0, 0xe6, 0xfc, 0x78, 0x47, 0x00, 0x00, - 0x1f, 0x40, 0xbd, 0xe8, 0xfe, 0xff, 0xff, 0xea, - 0x1f, 0x50, 0x2d, 0xe9, 0x3c, 0x00, 0xe8, 0x08, - 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, - 0x2f, 0xe1, 0x00, 0xf0, 0x40, 0xfb, 0x78, 0x47, - 0x00, 0x00, 0x1f, 0x50, 0xbd, 0xe8, 0x04, 0xf0, - 0x5e, 0xe2, 0x1f, 0x50, 0x2d, 0xe9, 0x01, 0x00, - 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1, 0x00, 0xf0, - 0x18, 0xfb, 0x78, 0x47, 0x00, 0x00, 0x1f, 0x50, - 0xbd, 0xe8, 0x04, 0xf0, 0x5e, 0xe2, 0x00, 0xbd, - 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47, 0x3c, 0x00, - 0x24, 0x09, 0x00, 0x00, 0x00, 0x30, 0x0f, 0xe1, - 0xc0, 0x30, 0xc3, 0xe3, 0x03, 0xf0, 0x21, 0xe1, - 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1, - 0x01, 0xbd, 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47, - 0x00, 0x30, 0x0f, 0xe1, 0xc0, 0x30, 0x83, 0xe3, - 0x03, 0xf0, 0x21, 0xe1, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x01, 0xbd, 0x00, 0x00, - 0x18, 0x00, 0x9f, 0xe5, 0x04, 0x10, 0x90, 0xe4, - 0x3c, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x00, - 0x51, 0xe3, 0x02, 0x00, 0x00, 0x0a, 0x04, 0x20, - 0x90, 0xe4, 0x00, 0x20, 0x81, 0xe5, 0xf9, 0xff, - 0xff, 0xea, 0x0e, 0xf0, 0xa0, 0xe1, 0x7c, 0x09, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, - 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xd8, 0x03, - 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0xd8, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x09, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x10, 0x8e, 0x01, 0x00, - 0x10, 0x8e, 0x01, 0x00, 0x88, 0xf8, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, - 0xc4, 0x33, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1, - 0x58, 0x40, 0x9f, 0xe5, 0x3c, 0x00, 0xd8, 0x09, - 0x00, 0x00, 0x04, 0x00, 0x94, 0xe4, 0x01, 0x00, - 0x50, 0xe3, 0x05, 0xf0, 0xa0, 0x01, 0x04, 0x10, - 0x94, 0xe4, 0x04, 0x20, 0x94, 0xe4, 0x03, 0x00, - 0x00, 0xeb, 0x04, 0x00, 0x94, 0xe4, 0x04, 0x10, - 0x94, 0xe4, 0x07, 0x00, 0x00, 0xeb, 0xf5, 0xff, - 0xff, 0xea, 0x01, 0x00, 0x50, 0xe1, 0x0e, 0xf0, - 0xa0, 0x01, 0x02, 0x00, 0x51, 0xe1, 0x04, 0x30, - 0x90, 0x14, 0x04, 0x30, 0x81, 0x14, 0x3c, 0x00, - 0x14, 0x0a, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x14, 0x20, 0x9f, 0xe5, - 0x00, 0x20, 0x92, 0xe5, 0x01, 0x00, 0x50, 0xe1, - 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x80, 0x09, 0x00, 0x00, - 0xcc, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x20, 0xe6, 0x01, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x43, 0x5f, 0x00, 0x04, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x0a, 0x00, 0x00, 0x20, 0xee, - 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x49, 0x52, - 0x51, 0x5f, 0x00, 0x02, 0x00, 0x00, 0x20, 0xf2, - 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x46, 0x49, - 0x51, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x20, 0xf4, - 0x01, 0x00, 0x17, 0x00, 0x00, 0x00, 0x41, 0x42, - 0x54, 0x5f, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4, - 0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x55, 0x4e, - 0x44, 0x5f, 0x3c, 0x00, 0x8c, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4, 0x01, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x55, 0x53, 0x52, 0x5f, - 0x01, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1, - 0x00, 0x60, 0x0f, 0xe1, 0x8c, 0x40, 0x9f, 0xe5, - 0x04, 0x10, 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3, - 0x09, 0x00, 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4, - 0x01, 0x10, 0x80, 0xe0, 0x03, 0x10, 0xc1, 0xe3, - 0x04, 0x20, 0x94, 0xe4, 0x3c, 0x00, 0xc8, 0x0a, - 0x00, 0x00, 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0, - 0x2f, 0xe1, 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20, - 0x94, 0xe4, 0x13, 0x00, 0x00, 0xeb, 0xf2, 0xff, - 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1, 0x05, 0xf0, - 0xa0, 0xe1, 0x0e, 0x50, 0xa0, 0xe1, 0x00, 0x60, - 0x0f, 0xe1, 0x44, 0x40, 0x9f, 0xe5, 0x04, 0x10, - 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3, 0x08, 0x00, - 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4, 0x3c, 0x00, - 0x04, 0x0b, 0x00, 0x00, 0x01, 0x10, 0x80, 0xe0, - 0x03, 0x10, 0xc1, 0xe3, 0x04, 0x20, 0x94, 0xe4, - 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0, 0x2f, 0xe1, - 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20, 0x94, 0xe4, - 0xf3, 0xff, 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1, - 0x05, 0xf0, 0xa0, 0xe1, 0x01, 0x00, 0x50, 0xe1, - 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x3c, 0x0a, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x01, 0x60, - 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0x70, 0x47, - 0x00, 0x00, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00, - 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x10, 0x0e, - 0x01, 0xee, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00, - 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x1e, 0xff, - 0x2f, 0xe1, 0x10, 0x1e, 0x10, 0xee, 0x01, 0x00, - 0x11, 0xe3, 0x03, 0x00, 0x00, 0x0a, 0x10, 0x1e, - 0x11, 0xee, 0x3c, 0x00, 0x7c, 0x0b, 0x00, 0x00, - 0x00, 0x10, 0x80, 0xe5, 0x01, 0x00, 0xa0, 0xe3, - 0x1e, 0xff, 0x2f, 0xe1, 0x00, 0x00, 0x20, 0xe0, - 0x1e, 0xff, 0x2f, 0xe1, 0x8d, 0x46, 0x97, 0x46, - 0x78, 0x47, 0xc0, 0x46, 0x78, 0xfd, 0xff, 0xea, - 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x28, 0x01, 0xd9, - 0x00, 0xf0, 0xac, 0xfb, 0x0c, 0x48, 0x40, 0x68, - 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24, 0x0b, 0x48, - 0x01, 0x68, 0x09, 0x48, 0x3c, 0x00, 0xb8, 0x0b, - 0x00, 0x00, 0x12, 0x30, 0x00, 0x29, 0x05, 0xd0, - 0x06, 0x21, 0x61, 0x43, 0x40, 0x5c, 0xc3, 0x00, - 0x18, 0x18, 0x04, 0xe0, 0x06, 0x21, 0x61, 0x43, - 0x40, 0x5c, 0x14, 0x23, 0x58, 0x43, 0x0a, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x10, 0xbd, 0xd4, 0x7a, - 0x01, 0x00, 0xa8, 0x69, 0x01, 0x00, 0x80, 0xb5, - 0x09, 0x4a, 0x09, 0x49, 0x03, 0x20, 0x00, 0xf0, - 0xf2, 0xf9, 0x08, 0x49, 0x08, 0x20, 0x3c, 0x00, - 0xf4, 0x0b, 0x00, 0x00, 0x08, 0x60, 0x48, 0x60, - 0x07, 0x49, 0x1d, 0x20, 0x01, 0xf0, 0xb2, 0xfc, - 0x06, 0x49, 0x1e, 0x20, 0x01, 0xf0, 0xae, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, - 0x31, 0x27, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x29, 0x25, 0x00, 0x00, 0x31, 0x25, 0x00, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x08, 0x20, 0x88, 0x60, - 0x1d, 0x20, 0x01, 0xf0, 0xbf, 0xfc, 0x1e, 0x20, - 0x3c, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x01, 0xf0, - 0xbc, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xd1, 0x2a, - 0x80, 0xb5, 0x01, 0xd1, 0x05, 0xf0, 0x19, 0xfc, - 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x08, 0x80, 0x05, 0x20, 0x05, 0xf0, 0xd5, 0xfb, - 0x80, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x80, 0xb5, - 0x54, 0x28, 0x01, 0xd1, 0x06, 0xf0, 0xcd, 0xf8, - 0x80, 0xbd, 0x3c, 0x00, 0x6c, 0x0c, 0x00, 0x00, - 0xb0, 0xb5, 0x10, 0x4d, 0x02, 0x1c, 0x01, 0x24, - 0x01, 0x2a, 0x0d, 0x48, 0x29, 0x68, 0x06, 0xd0, - 0xc4, 0x2a, 0x03, 0xd1, 0x6a, 0x68, 0x00, 0x2a, - 0x05, 0xd0, 0xac, 0x60, 0xb0, 0xbd, 0x0e, 0xf0, - 0x89, 0xfb, 0x6c, 0x60, 0x08, 0xe0, 0x00, 0x22, - 0xaa, 0x60, 0x6c, 0x60, 0x0e, 0xf0, 0x82, 0xfb, - 0x00, 0x21, 0x04, 0x20, 0x12, 0xf0, 0xc8, 0xfc, - 0x06, 0xf0, 0xd8, 0xf8, 0x3c, 0x00, 0xa8, 0x0c, - 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x60, - 0x01, 0x00, 0xbc, 0x74, 0x01, 0x00, 0x05, 0x4a, - 0x51, 0x69, 0x08, 0x1a, 0x11, 0x69, 0x09, 0x68, - 0x10, 0x31, 0x81, 0x42, 0x01, 0xd8, 0x50, 0x61, - 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x8c, 0x6e, - 0x01, 0x00, 0x01, 0x49, 0x49, 0x68, 0x40, 0x1a, - 0x70, 0x47, 0x8c, 0x6e, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x0c, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, - 0x02, 0x4a, 0x51, 0x69, 0x08, 0x18, 0x50, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, - 0x0e, 0x49, 0x0f, 0x48, 0x10, 0xb5, 0x19, 0x22, - 0x92, 0x01, 0x41, 0x60, 0x89, 0x18, 0xc1, 0x60, - 0x0b, 0x49, 0x00, 0x22, 0x0c, 0x31, 0x01, 0x60, - 0x0a, 0x49, 0x82, 0x60, 0x09, 0x68, 0x01, 0x23, - 0xdb, 0x03, 0xc9, 0x18, 0x08, 0x4c, 0x41, 0x61, - 0x3c, 0x00, 0x20, 0x0d, 0x00, 0x00, 0x21, 0x68, - 0x00, 0x29, 0x02, 0xd0, 0x07, 0x49, 0x01, 0x61, - 0x01, 0xe0, 0x00, 0xf0, 0x0c, 0xf8, 0x22, 0x60, - 0x10, 0xbd, 0x44, 0xdc, 0x01, 0x00, 0x8c, 0x6e, - 0x01, 0x00, 0xc8, 0x09, 0x00, 0x00, 0x34, 0x58, - 0x01, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x01, 0x48, - 0x02, 0x49, 0x08, 0x61, 0x70, 0x47, 0xc8, 0x09, - 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, 0x08, 0x28, - 0x05, 0xd2, 0x3c, 0x00, 0x5c, 0x0d, 0x00, 0x00, - 0x03, 0x4b, 0x80, 0x00, 0x19, 0x50, 0x02, 0x49, - 0x20, 0x31, 0x0a, 0x50, 0x70, 0x47, 0x00, 0x00, - 0x64, 0x6d, 0x01, 0x00, 0x70, 0xb5, 0x06, 0x1c, - 0x0d, 0x48, 0x0d, 0x1c, 0x00, 0x68, 0x14, 0x1c, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x00, 0xf0, - 0x09, 0xfc, 0x70, 0xbd, 0x28, 0x06, 0x01, 0xd5, - 0x00, 0xf0, 0x22, 0xfe, 0x22, 0x1c, 0x29, 0x1c, - 0x30, 0x1c, 0x08, 0xf0, 0x3c, 0x00, 0x98, 0x0d, - 0x00, 0x00, 0xdd, 0xfd, 0x01, 0x1c, 0x03, 0x48, - 0x54, 0x30, 0x43, 0x69, 0x32, 0x1c, 0xff, 0xf7, - 0x1b, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0x50, 0x6d, - 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0d, 0x48, - 0x1f, 0x1c, 0x00, 0x68, 0x15, 0x1c, 0x0c, 0x1c, - 0x00, 0x28, 0x02, 0xd1, 0x28, 0x1c, 0x00, 0xf0, - 0xe8, 0xfb, 0x20, 0x06, 0x01, 0xd5, 0x00, 0xf0, - 0x02, 0xfe, 0x2a, 0x1c, 0x21, 0x1c, 0x3c, 0x00, - 0xd4, 0x0d, 0x00, 0x00, 0x30, 0x1c, 0x08, 0xf0, - 0xbd, 0xfd, 0x01, 0x1c, 0x03, 0x48, 0x54, 0x30, - 0x43, 0x69, 0x3a, 0x1c, 0xff, 0xf7, 0xfb, 0xfa, - 0xf8, 0xbd, 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00, - 0xf8, 0xb5, 0xf1, 0x28, 0x4e, 0xd1, 0x2a, 0x48, - 0x69, 0x46, 0x82, 0x69, 0xff, 0xf7, 0xee, 0xfa, - 0x27, 0x49, 0x00, 0x26, 0x54, 0x39, 0xc8, 0x68, - 0x8b, 0x68, 0xc2, 0x00, 0x01, 0x30, 0xd5, 0x18, - 0x3c, 0x00, 0x10, 0x0e, 0x00, 0x00, 0x07, 0x28, - 0xc8, 0x60, 0x00, 0xd1, 0xce, 0x60, 0x22, 0x48, - 0x6c, 0x68, 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x21, 0x20, 0x1c, 0x08, 0xf0, 0x3b, 0xfb, - 0x6e, 0x60, 0x25, 0x68, 0x20, 0x89, 0xa9, 0x78, - 0x02, 0x39, 0x40, 0x1a, 0xe9, 0x78, 0x40, 0x1a, - 0x20, 0x81, 0xa8, 0x78, 0x28, 0x18, 0x02, 0x38, - 0x20, 0x60, 0x6e, 0x78, 0x28, 0x78, 0x08, 0x28, - 0x17, 0xd2, 0x3c, 0x00, 0x4c, 0x0e, 0x00, 0x00, - 0x30, 0x06, 0x07, 0xd5, 0x27, 0x1c, 0x20, 0x1c, - 0x00, 0xf0, 0x7a, 0xfc, 0x04, 0x1c, 0x38, 0x1c, - 0x00, 0xf0, 0x9c, 0xfb, 0x28, 0x78, 0x0f, 0x49, - 0x40, 0x39, 0x80, 0x00, 0x0a, 0x58, 0x00, 0x2a, - 0x04, 0xd0, 0x31, 0x1c, 0x20, 0x1c, 0xff, 0xf7, - 0xb3, 0xfa, 0x08, 0xe0, 0x05, 0x21, 0x00, 0xe0, - 0x04, 0x21, 0x06, 0x20, 0x00, 0xf0, 0x10, 0xfa, - 0x20, 0x1c, 0x00, 0xf0, 0x3c, 0x00, 0x88, 0x0e, - 0x00, 0x00, 0x87, 0xfb, 0x30, 0x06, 0x01, 0xd5, - 0x00, 0xf0, 0xa1, 0xfd, 0xf8, 0xbd, 0x01, 0x21, - 0x06, 0x20, 0x00, 0xf0, 0x04, 0xfa, 0xf9, 0xe7, - 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00, 0xcc, 0x5c, - 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d, 0x19, 0x4f, - 0x01, 0x24, 0x54, 0x35, 0x29, 0x1c, 0x03, 0x20, - 0x7c, 0x60, 0x17, 0x4b, 0x18, 0x4a, 0x05, 0xf0, - 0xf4, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x3c, 0x00, - 0xc4, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x38, 0x60, - 0x1f, 0xe0, 0x3c, 0x60, 0x07, 0x21, 0x28, 0x1c, - 0xea, 0x69, 0xff, 0xf7, 0x83, 0xfa, 0x38, 0x20, - 0x00, 0xf0, 0x80, 0xfc, 0x00, 0x24, 0xb8, 0x60, - 0xb8, 0x68, 0xe6, 0x00, 0x35, 0x18, 0x68, 0x46, - 0x02, 0x21, 0x00, 0xf0, 0x75, 0xfb, 0x28, 0x60, - 0x28, 0x1c, 0x00, 0xf0, 0xa5, 0xfd, 0xb8, 0x68, - 0x81, 0x59, 0x06, 0x48, 0x54, 0x30, 0x02, 0x6a, - 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xf7, - 0x6c, 0xfa, 0x01, 0x34, 0x07, 0x2c, 0xea, 0xdb, - 0x00, 0x20, 0xf8, 0x60, 0x38, 0x61, 0xf8, 0xbd, - 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00, 0x81, 0x9a, - 0x00, 0x00, 0x61, 0x9a, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0, - 0x03, 0x48, 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21, - 0xff, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0x50, 0x6d, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x0f, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0xb5, 0x0a, 0x4e, - 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e, 0xa1, 0x69, - 0x00, 0x29, 0x07, 0xd0, 0x30, 0x68, 0x41, 0x60, - 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58, 0xff, 0xf7, - 0x3e, 0xfa, 0xf4, 0xe7, 0x03, 0x49, 0x02, 0x20, - 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10, 0x07, 0x00, - 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02, 0x07, 0x00, - 0x70, 0xb5, 0x0a, 0x4e, 0x3c, 0x00, 0x78, 0x0f, - 0x00, 0x00, 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e, - 0xe1, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x70, 0x68, - 0x41, 0x60, 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58, - 0xff, 0xf7, 0x24, 0xfa, 0xf4, 0xe7, 0x03, 0x49, - 0x02, 0x20, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02, - 0x07, 0x00, 0xb0, 0xb5, 0x09, 0x4d, 0x04, 0x1c, - 0x28, 0x1c, 0x20, 0x22, 0x40, 0x30, 0x3c, 0x00, - 0xb4, 0x0f, 0x00, 0x00, 0x05, 0x49, 0xff, 0xf7, - 0x9f, 0xfa, 0xe0, 0x68, 0xe8, 0x60, 0x20, 0x69, - 0x28, 0x61, 0xa0, 0x6a, 0xa8, 0x62, 0x60, 0x68, - 0x68, 0x60, 0xb0, 0xbd, 0x70, 0x52, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x00, 0x24, - 0x00, 0x23, 0x20, 0x28, 0x01, 0xdb, 0x01, 0x24, - 0x07, 0xe0, 0x08, 0x4e, 0x80, 0x00, 0x35, 0x58, - 0x07, 0x4f, 0xbd, 0x42, 0x00, 0xd0, 0x2b, 0x1c, - 0x3c, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x31, 0x50, - 0x13, 0x60, 0x00, 0x2c, 0x03, 0xd0, 0x21, 0x1c, - 0x82, 0x20, 0x00, 0xf0, 0x52, 0xf9, 0x20, 0x1c, - 0xf8, 0xbd, 0xe0, 0x7e, 0x01, 0x00, 0x75, 0x75, - 0x00, 0x00, 0xb0, 0xb5, 0x0b, 0x4d, 0x04, 0x1c, - 0x28, 0x68, 0x00, 0x28, 0x0f, 0xd0, 0x20, 0x1c, - 0x12, 0xf0, 0xb7, 0xfd, 0x00, 0x28, 0x0a, 0xd0, - 0x21, 0x7a, 0x28, 0x7a, 0x0a, 0x07, 0x00, 0x07, - 0x00, 0x0f, 0x3c, 0x00, 0x2c, 0x10, 0x00, 0x00, - 0x12, 0x0f, 0x90, 0x42, 0x29, 0x72, 0x01, 0xd0, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0xf0, 0xb5, 0x42, 0x4e, - 0x05, 0x1c, 0x30, 0x68, 0x85, 0xb0, 0x00, 0x28, - 0x63, 0xd0, 0x00, 0x24, 0x00, 0x20, 0x00, 0x2d, - 0x06, 0xd0, 0x69, 0x78, 0x18, 0x29, 0x03, 0xd1, - 0xe9, 0x79, 0x01, 0x29, 0x00, 0xd1, 0x01, 0x20, - 0x00, 0x28, 0x45, 0xd0, 0x3c, 0x00, 0x68, 0x10, - 0x00, 0x00, 0x00, 0x20, 0xb0, 0x72, 0x81, 0x00, - 0x4a, 0x19, 0x93, 0x7a, 0x59, 0x06, 0x89, 0x0f, - 0xdb, 0x06, 0x04, 0xd5, 0xb3, 0x7a, 0x01, 0x27, - 0x8f, 0x40, 0x3b, 0x43, 0xb3, 0x72, 0xd2, 0x7a, - 0x13, 0x09, 0x12, 0x07, 0x12, 0x0f, 0x93, 0x42, - 0x05, 0xd3, 0x01, 0x22, 0x8a, 0x40, 0x14, 0x43, - 0x01, 0xaa, 0x89, 0x00, 0x50, 0x50, 0x01, 0x30, - 0x04, 0x28, 0xe4, 0xdb, 0xb0, 0x7a, 0x3c, 0x00, - 0xa4, 0x10, 0x00, 0x00, 0x20, 0x40, 0x01, 0x07, - 0x0d, 0xd5, 0x41, 0x07, 0x09, 0xd5, 0xc1, 0x07, - 0x05, 0xd5, 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24, - 0x05, 0xe0, 0x02, 0x99, 0x02, 0xe0, 0x01, 0x99, - 0x00, 0xe0, 0x03, 0x99, 0x04, 0x91, 0x41, 0x07, - 0x09, 0xd5, 0xc1, 0x07, 0x05, 0xd5, 0x81, 0x07, - 0x01, 0xd5, 0x00, 0x24, 0x03, 0xe0, 0x02, 0x99, - 0x00, 0xe0, 0x01, 0x99, 0x03, 0x91, 0xc1, 0x07, - 0x3c, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x05, 0xd5, - 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24, 0x01, 0xe0, - 0x02, 0x99, 0x01, 0x91, 0x80, 0x07, 0x01, 0xd5, - 0x00, 0x24, 0x22, 0xe0, 0x0f, 0x2c, 0x20, 0xd1, - 0x70, 0x68, 0x00, 0x28, 0x0b, 0xd0, 0x04, 0x9a, - 0x02, 0xab, 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a, - 0x28, 0x1c, 0x0b, 0xf0, 0x8a, 0xfb, 0x00, 0x20, - 0x70, 0x60, 0x10, 0xe0, 0x17, 0xe0, 0x30, 0x7a, - 0x29, 0x7a, 0x3c, 0x00, 0x1c, 0x11, 0x00, 0x00, - 0x00, 0x07, 0x09, 0x07, 0x09, 0x0f, 0x00, 0x0f, - 0x88, 0x42, 0x07, 0xd0, 0x04, 0x9a, 0x02, 0xab, - 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a, 0x28, 0x1c, - 0x0b, 0xf0, 0x76, 0xfb, 0x28, 0x7a, 0x30, 0x72, - 0x01, 0x20, 0x0f, 0x2c, 0x00, 0xd0, 0x00, 0x20, - 0x05, 0xb0, 0xf0, 0xbd, 0x01, 0x20, 0xfb, 0xe7, - 0x70, 0x78, 0x01, 0x00, 0x0d, 0x4a, 0x70, 0xb5, - 0x11, 0x68, 0x00, 0x20, 0x3c, 0x00, 0x58, 0x11, - 0x00, 0x00, 0x00, 0x29, 0x0e, 0xd0, 0x11, 0x7a, - 0x09, 0x06, 0x0b, 0xd5, 0x53, 0x7a, 0x94, 0x7a, - 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40, - 0x1e, 0x1c, 0x16, 0x40, 0x03, 0xd0, 0x22, 0x40, - 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x16, 0xf2, 0xd5, 0x70, 0xbd, - 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x10, 0xb5, - 0x08, 0x4c, 0x20, 0x68, 0x00, 0x28, 0x3c, 0x00, - 0x94, 0x11, 0x00, 0x00, 0x04, 0xd0, 0x60, 0x68, - 0x00, 0x28, 0x01, 0xd1, 0x0b, 0xf0, 0xc0, 0xfb, - 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x07, 0xc4, - 0x0c, 0x3c, 0x01, 0x20, 0x60, 0x60, 0x10, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00, - 0xf8, 0xb5, 0x0e, 0x4d, 0x04, 0x1c, 0x00, 0x20, - 0x68, 0x72, 0x20, 0x1c, 0x12, 0xf0, 0xde, 0xfc, - 0x3c, 0x00, 0xd0, 0x11, 0x00, 0x00, 0x00, 0x28, - 0x12, 0xd0, 0x00, 0x20, 0x03, 0x21, 0x01, 0x22, - 0x0f, 0x1a, 0x16, 0x1c, 0x23, 0x7a, 0xbe, 0x40, - 0x33, 0x40, 0x04, 0xd0, 0x6b, 0x7a, 0x16, 0x1c, - 0x86, 0x40, 0x33, 0x43, 0x6b, 0x72, 0x01, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x03, 0x28, 0xef, 0xd9, - 0xf8, 0xbd, 0x70, 0x78, 0x01, 0x00, 0x92, 0x00, - 0x51, 0x18, 0x8a, 0x7a, 0x12, 0x07, 0x12, 0x0f, - 0x02, 0x70, 0x3c, 0x00, 0x0c, 0x12, 0x00, 0x00, - 0xca, 0x7a, 0x12, 0x07, 0x12, 0x0f, 0x42, 0x70, - 0xca, 0x7a, 0x12, 0x09, 0x82, 0x70, 0x09, 0x7b, - 0x81, 0x80, 0x70, 0x47, 0x03, 0x4a, 0x0f, 0x21, - 0x52, 0x7a, 0x01, 0x20, 0x91, 0x43, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00, - 0x40, 0x07, 0x05, 0x49, 0x40, 0x0f, 0x05, 0x4a, - 0x09, 0x56, 0x52, 0x7a, 0x01, 0x20, 0x0a, 0x40, - 0x00, 0xd1, 0x00, 0x20, 0x3c, 0x00, 0x48, 0x12, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x5e, 0x46, - 0x01, 0x00, 0x70, 0x78, 0x01, 0x00, 0x12, 0x4a, - 0x70, 0xb5, 0x53, 0x7a, 0x94, 0x7a, 0xff, 0x20, - 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40, - 0x1e, 0x1c, 0x16, 0x40, 0x14, 0xd0, 0x22, 0x40, - 0x12, 0xd1, 0x08, 0x06, 0x00, 0x0e, 0x07, 0xd0, - 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x07, 0xd0, - 0x03, 0x28, 0x07, 0xd1, 0x07, 0x20, 0x3c, 0x00, - 0x84, 0x12, 0x00, 0x00, 0x70, 0xbd, 0x03, 0x20, - 0x70, 0xbd, 0x01, 0x20, 0x70, 0xbd, 0x05, 0x20, - 0x70, 0xbd, 0xff, 0x20, 0x70, 0xbd, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x16, 0xe1, 0xd5, 0x70, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x13, 0x48, 0x0d, 0x1c, 0x81, 0x68, 0x00, 0x29, - 0x05, 0xd0, 0x01, 0x7b, 0x00, 0x29, 0x01, 0xd1, - 0x04, 0x73, 0x45, 0x73, 0xf8, 0xbd, 0x0f, 0x4e, - 0x3c, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x31, 0x1c, - 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab, 0x1a, 0x70, - 0xc9, 0x79, 0x59, 0x70, 0x42, 0x68, 0x00, 0x2a, - 0x07, 0xd0, 0x20, 0x02, 0x28, 0x43, 0x01, 0x1c, - 0x00, 0x20, 0xff, 0xf7, 0x7e, 0xf8, 0x00, 0x28, - 0x04, 0xd1, 0x2a, 0x1c, 0x21, 0x1c, 0x00, 0x20, - 0x11, 0xf0, 0x0f, 0xf8, 0x00, 0xab, 0x18, 0x88, - 0xf0, 0x84, 0xe2, 0xe7, 0x00, 0x00, 0x88, 0x5a, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x12, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x81, 0x20, 0xff, 0xf7, 0xcd, 0xff, 0x80, 0xbd, - 0x01, 0x49, 0x01, 0x20, 0x88, 0x60, 0x70, 0x47, - 0x88, 0x5a, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x88, 0x60, 0x08, 0x7b, 0x00, 0x28, - 0x02, 0xd0, 0x49, 0x7b, 0xff, 0xf7, 0xbc, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, - 0x02, 0x4a, 0x01, 0x1c, 0x3c, 0x00, 0x38, 0x13, - 0x00, 0x00, 0x50, 0x68, 0x51, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x10, 0xb5, - 0x0c, 0x1c, 0x07, 0xf0, 0x64, 0xfa, 0x04, 0x61, - 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, 0xff, 0xb5, - 0x0e, 0x1c, 0x1f, 0x1c, 0x38, 0x20, 0x81, 0xb0, - 0x00, 0xf0, 0x3d, 0xfa, 0x1d, 0x49, 0x04, 0x1c, - 0x48, 0x69, 0x00, 0x28, 0x01, 0xd1, 0x4c, 0x61, - 0x00, 0xe0, 0x04, 0x60, 0x30, 0x01, 0x3c, 0x00, - 0x74, 0x13, 0x00, 0x00, 0x00, 0x90, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0xf0, 0x15, 0xfa, 0x05, 0x1c, - 0x00, 0x99, 0xff, 0xf7, 0x8b, 0xf8, 0x00, 0x20, - 0x73, 0x1e, 0x04, 0xe0, 0x01, 0x01, 0x4a, 0x19, - 0x10, 0x32, 0x6a, 0x50, 0x01, 0x30, 0x98, 0x42, - 0xf8, 0xd3, 0x00, 0x01, 0x2d, 0x50, 0x38, 0x21, - 0x20, 0x1c, 0xff, 0xf7, 0x7b, 0xf8, 0xa5, 0x60, - 0x65, 0x60, 0xe6, 0x85, 0x0c, 0x20, 0x60, 0x86, - 0x3c, 0x00, 0xb0, 0x13, 0x00, 0x00, 0xaf, 0x20, - 0x80, 0x01, 0xe0, 0x61, 0x0e, 0x20, 0xe0, 0x86, - 0x00, 0x20, 0x20, 0x60, 0x01, 0x98, 0xe0, 0x60, - 0x38, 0x68, 0x60, 0x61, 0x03, 0x99, 0x04, 0x48, - 0x08, 0x60, 0x04, 0x48, 0x38, 0x60, 0x05, 0xb0, - 0x00, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xfc, 0x5a, - 0x01, 0x00, 0xdd, 0x15, 0x01, 0x00, 0xfd, 0x16, - 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xf0, 0x2a, - 0x80, 0xb5, 0x3c, 0x00, 0xec, 0x13, 0x00, 0x00, - 0x04, 0xd0, 0xf1, 0x2a, 0x07, 0xd1, 0x06, 0xf0, - 0x09, 0xfb, 0x80, 0xbd, 0x07, 0xf0, 0x0c, 0xfa, - 0x0d, 0xf0, 0xa8, 0xfa, 0x80, 0xbd, 0x01, 0x21, - 0x02, 0x20, 0xff, 0xf7, 0x4d, 0xff, 0x80, 0xbd, - 0x01, 0x49, 0x00, 0x20, 0x48, 0x61, 0x70, 0x47, - 0xfc, 0x5a, 0x01, 0x00, 0x00, 0x28, 0x02, 0xd0, - 0x00, 0x29, 0x00, 0xd0, 0xc1, 0x60, 0x70, 0x47, - 0xf8, 0xb5, 0x17, 0x1c, 0x3c, 0x00, 0x28, 0x14, - 0x00, 0x00, 0x0e, 0x1c, 0x05, 0x1c, 0x1c, 0x1c, - 0x1c, 0x30, 0x07, 0xf0, 0xc8, 0xf8, 0x01, 0x69, - 0x42, 0x69, 0x80, 0x68, 0x89, 0x19, 0x89, 0x1a, - 0x81, 0x42, 0x06, 0xd2, 0x23, 0x1c, 0x3a, 0x1c, - 0x31, 0x1c, 0x28, 0x1c, 0x00, 0xf0, 0x05, 0xf8, - 0xf8, 0xbd, 0x00, 0x20, 0x38, 0x60, 0x20, 0x60, - 0xfa, 0xe7, 0xff, 0xb5, 0x85, 0xb0, 0x05, 0x98, - 0x01, 0x27, 0x0e, 0x1c, 0x1c, 0x30, 0x3c, 0x00, - 0x64, 0x14, 0x00, 0x00, 0x07, 0xf0, 0xae, 0xf8, - 0x04, 0x1c, 0x80, 0x88, 0x04, 0x30, 0x03, 0x90, - 0x2c, 0x48, 0x04, 0x90, 0x80, 0x79, 0x02, 0x90, - 0xa0, 0x69, 0xb0, 0x42, 0x17, 0xd2, 0x35, 0x1a, - 0x11, 0xe0, 0x03, 0x98, 0xff, 0xf7, 0x16, 0xfc, - 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21, 0x8e, 0x20, - 0xff, 0xf7, 0x08, 0xff, 0x00, 0x25, 0x00, 0x27, - 0x05, 0xe0, 0x21, 0x68, 0x01, 0x60, 0x20, 0x60, - 0x3c, 0x00, 0xa0, 0x14, 0x00, 0x00, 0xa0, 0x69, - 0x01, 0x30, 0xa0, 0x61, 0x01, 0x3d, 0xeb, 0xd2, - 0x00, 0x2f, 0x35, 0xd0, 0xa0, 0x69, 0x80, 0x1b, - 0xa0, 0x61, 0x20, 0x69, 0x80, 0x19, 0x20, 0x61, - 0x61, 0x69, 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42, - 0x03, 0xd9, 0x07, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0xec, 0xfe, 0x25, 0x68, 0x2f, 0x1c, 0x70, 0x1e, - 0x01, 0x95, 0x00, 0xe0, 0x3f, 0x68, 0x01, 0x38, - 0xfc, 0xd2, 0x3c, 0x00, 0xdc, 0x14, 0x00, 0x00, - 0x38, 0x68, 0x20, 0x60, 0x02, 0x98, 0x04, 0x99, - 0x88, 0x71, 0x2e, 0x68, 0x2c, 0x60, 0x32, 0x1d, - 0x00, 0x92, 0x29, 0x1c, 0x20, 0x31, 0x01, 0x22, - 0x28, 0x1d, 0x05, 0x9b, 0x08, 0xf0, 0x7a, 0xfc, - 0xbd, 0x42, 0x01, 0xd0, 0x35, 0x1c, 0xf0, 0xe7, - 0x00, 0x20, 0x38, 0x61, 0x01, 0x98, 0x07, 0x99, - 0x04, 0x30, 0x08, 0x60, 0x08, 0x98, 0x04, 0x37, - 0x07, 0x60, 0x09, 0xb0, 0x3c, 0x00, 0x18, 0x15, - 0x00, 0x00, 0xf0, 0xbd, 0x02, 0x98, 0x04, 0x99, - 0x88, 0x71, 0xf9, 0xe7, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x15, 0x1c, - 0x00, 0x20, 0x0c, 0x60, 0x09, 0xe0, 0xe2, 0x68, - 0x20, 0x1c, 0x00, 0x92, 0xa3, 0x8a, 0x21, 0x68, - 0xa2, 0x69, 0x08, 0xf0, 0x56, 0xfc, 0x20, 0x1c, - 0xe4, 0x68, 0x00, 0x2c, 0xf3, 0xd1, 0x28, 0x60, - 0x38, 0xbd, 0x80, 0xb5, 0x0c, 0xe0, 0x3c, 0x00, - 0x54, 0x15, 0x00, 0x00, 0xc2, 0x68, 0x8a, 0x42, - 0x08, 0xd1, 0x00, 0x21, 0xc1, 0x60, 0x00, 0x28, - 0x03, 0xd1, 0x06, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0x9d, 0xfe, 0x80, 0xbd, 0x10, 0x1c, 0x00, 0x28, - 0xf7, 0xd0, 0xef, 0xe7, 0x10, 0xb5, 0x04, 0x1c, - 0x0c, 0xd0, 0xa0, 0x69, 0x00, 0x28, 0x06, 0xd1, - 0x20, 0x69, 0x00, 0x28, 0x03, 0xd0, 0x06, 0xf0, - 0xf7, 0xfd, 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c, - 0x3c, 0x00, 0x90, 0x15, 0x00, 0x00, 0x06, 0xf0, - 0xf2, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x00, 0x28, 0x09, 0xd0, 0xc4, 0x68, 0x03, 0xe0, - 0xff, 0xf7, 0xe7, 0xff, 0x20, 0x1c, 0xf9, 0xe7, - 0x00, 0x2c, 0xf9, 0xd1, 0xff, 0xf7, 0xe1, 0xff, - 0x10, 0xbd, 0x01, 0x1c, 0x00, 0x20, 0x04, 0xe0, - 0x0a, 0x89, 0xc9, 0x68, 0x10, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0x29, 0xf8, 0xd1, 0x70, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x15, 0x00, 0x00, - 0x00, 0xe0, 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29, - 0xfb, 0xd1, 0x70, 0x47, 0xf8, 0xb5, 0x06, 0x1c, - 0x0c, 0x1c, 0x1c, 0x20, 0x00, 0xf0, 0x68, 0xfa, - 0x05, 0x1c, 0x00, 0x2e, 0x01, 0xd1, 0x00, 0x2c, - 0x02, 0xd1, 0x30, 0x1c, 0x01, 0x21, 0x03, 0xe0, - 0x20, 0x1c, 0x00, 0xf0, 0x5d, 0xfa, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x92, 0x0a, 0x1c, 0x01, 0x1c, - 0x23, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x08, 0x16, - 0x00, 0x00, 0x08, 0xf0, 0xf2, 0xfb, 0x28, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x03, 0x32, 0x92, 0x08, - 0x92, 0x00, 0x14, 0x04, 0x24, 0x0c, 0x09, 0x19, - 0x1d, 0x1c, 0xc9, 0x18, 0x09, 0x04, 0x09, 0x0c, - 0xff, 0xf7, 0xd7, 0xff, 0x01, 0x89, 0x02, 0x68, - 0x12, 0x19, 0x09, 0x1b, 0x49, 0x1b, 0x02, 0x60, - 0x01, 0x81, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x0a, 0x4c, 0xa0, 0x21, 0x20, 0x1c, 0x3c, 0x00, - 0x44, 0x16, 0x00, 0x00, 0xfe, 0xf7, 0x2a, 0xff, - 0x00, 0x20, 0x26, 0x1c, 0xa0, 0x36, 0x07, 0x4d, - 0x07, 0xe0, 0x0c, 0x21, 0x41, 0x43, 0x49, 0x19, - 0x0e, 0xc9, 0x27, 0x1d, 0x0e, 0xc7, 0x20, 0x34, - 0x01, 0x30, 0xa6, 0x42, 0xf5, 0xd1, 0xf8, 0xbd, - 0xd0, 0x5c, 0x01, 0x00, 0xc8, 0x3f, 0x01, 0x00, - 0xf7, 0xb5, 0xc4, 0x68, 0x06, 0x1c, 0x00, 0x25, - 0x00, 0x2c, 0x82, 0xb0, 0x23, 0xd0, 0x20, 0x89, - 0x3c, 0x00, 0x80, 0x16, 0x00, 0x00, 0x90, 0x42, - 0x20, 0xd3, 0xe1, 0x68, 0x87, 0x1a, 0x01, 0x91, - 0x00, 0x21, 0xe1, 0x60, 0x03, 0x99, 0x00, 0x20, - 0xff, 0xf7, 0xa1, 0xff, 0x05, 0x1c, 0x20, 0x89, - 0xc0, 0x1b, 0x20, 0x81, 0x2a, 0x68, 0x03, 0x99, - 0x30, 0x1c, 0x00, 0xf0, 0x16, 0xf8, 0x20, 0x89, - 0xc0, 0x19, 0x20, 0x81, 0x01, 0x99, 0x20, 0x1c, - 0xff, 0xf7, 0xb1, 0xfe, 0x21, 0x1c, 0x28, 0x1c, - 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0x16, 0x00, 0x00, - 0xad, 0xfe, 0x29, 0x1c, 0x30, 0x1c, 0xff, 0xf7, - 0xa9, 0xfe, 0x01, 0x20, 0x00, 0x2d, 0x00, 0xd1, - 0x00, 0x20, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xf7, 0xb5, 0x04, 0x1c, 0x0e, 0x1c, 0x00, 0x20, - 0x01, 0xe0, 0x20, 0x1c, 0x0c, 0x1c, 0xe1, 0x68, - 0x00, 0x29, 0xfa, 0xd1, 0x27, 0x89, 0xb7, 0x42, - 0x0a, 0xd3, 0xb8, 0x1b, 0x00, 0x04, 0x00, 0x0c, - 0x20, 0x81, 0x21, 0x68, 0x3c, 0x00, 0xf8, 0x16, - 0x00, 0x00, 0x09, 0x18, 0x02, 0x98, 0x32, 0x1c, - 0xfe, 0xf7, 0xfb, 0xfe, 0xfe, 0xbd, 0xf1, 0x1b, - 0x0d, 0x04, 0x2d, 0x0c, 0x00, 0x28, 0x19, 0xd0, - 0x01, 0x89, 0xa9, 0x42, 0x16, 0xd3, 0x49, 0x1b, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x00, 0x68, - 0x41, 0x18, 0x02, 0x98, 0x2a, 0x1c, 0xfe, 0xf7, - 0xe8, 0xfe, 0x21, 0x68, 0x02, 0x98, 0x72, 0x1b, - 0x40, 0x19, 0xfe, 0xf7, 0xe2, 0xfe, 0x3c, 0x00, - 0x34, 0x17, 0x00, 0x00, 0x20, 0x89, 0xc0, 0x1b, - 0x20, 0x81, 0x20, 0x68, 0xc0, 0x19, 0x20, 0x60, - 0xdf, 0xe7, 0x03, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0xad, 0xfd, 0xda, 0xe7, 0xf8, 0xb5, 0x04, 0x1c, - 0x00, 0x26, 0x13, 0xe0, 0x21, 0x89, 0x00, 0x20, - 0xff, 0xf7, 0x3e, 0xff, 0x05, 0x1c, 0x22, 0x89, - 0x21, 0x68, 0x00, 0x68, 0xfe, 0xf7, 0xc8, 0xfe, - 0x00, 0x2e, 0x01, 0xd1, 0x2e, 0x1c, 0x03, 0xe0, - 0x3c, 0x00, 0x70, 0x17, 0x00, 0x00, 0x29, 0x1c, - 0x38, 0x1c, 0xff, 0xf7, 0x50, 0xfe, 0xe4, 0x68, - 0x2f, 0x1c, 0x00, 0x2c, 0xe9, 0xd1, 0x30, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x89, - 0x40, 0x1a, 0x05, 0x04, 0x20, 0x68, 0x2d, 0x0c, - 0x40, 0x18, 0x29, 0x1c, 0xff, 0xf7, 0x1f, 0xff, - 0x21, 0x89, 0x49, 0x1b, 0x21, 0x81, 0xe1, 0x68, - 0xc1, 0x60, 0xe0, 0x60, 0xb0, 0xbd, 0x10, 0xb5, - 0x03, 0x30, 0x3c, 0x00, 0xac, 0x17, 0x00, 0x00, - 0x09, 0x4a, 0x81, 0x08, 0x10, 0x68, 0x3d, 0x24, - 0x08, 0x4b, 0x64, 0x01, 0x89, 0x00, 0x09, 0x18, - 0x1b, 0x19, 0x99, 0x42, 0x01, 0xd8, 0x11, 0x60, - 0x10, 0xbd, 0x0f, 0x21, 0x80, 0x20, 0xff, 0xf7, - 0x6b, 0xfd, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xb4, 0xcf, 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00, - 0x10, 0xb5, 0x11, 0xf0, 0x61, 0xff, 0x04, 0x1c, - 0x03, 0xd1, 0x0d, 0x21, 0x3c, 0x00, 0xe8, 0x17, - 0x00, 0x00, 0x80, 0x20, 0xff, 0xf7, 0x5b, 0xfd, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x01, 0x1f, 0x0b, 0x68, 0x0d, 0x48, 0x00, 0x22, - 0x83, 0x42, 0x04, 0xd0, 0x01, 0x32, 0x10, 0x30, - 0x03, 0x2a, 0xf9, 0xd3, 0x01, 0xe0, 0x03, 0x2a, - 0x06, 0xd3, 0x09, 0x24, 0x21, 0x1c, 0x80, 0x20, - 0xff, 0xf7, 0x45, 0xfd, 0x20, 0x1c, 0xb0, 0xbd, - 0x05, 0x4b, 0x00, 0x24, 0x9a, 0x79, 0x3c, 0x00, - 0x24, 0x18, 0x00, 0x00, 0x85, 0x68, 0x0d, 0x60, - 0x81, 0x60, 0x9a, 0x71, 0xf5, 0xe7, 0x00, 0x00, - 0x20, 0x57, 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, - 0xb0, 0xb5, 0x00, 0x21, 0x10, 0x4a, 0x00, 0x23, - 0xd4, 0x68, 0x84, 0x42, 0x04, 0xd2, 0x01, 0x33, - 0x10, 0x32, 0x03, 0x2b, 0xf8, 0xd3, 0x01, 0xe0, - 0x03, 0x2b, 0x01, 0xd3, 0x04, 0x21, 0x0e, 0xe0, - 0x0a, 0x4c, 0xa3, 0x79, 0x90, 0x68, 0x00, 0x28, - 0x3c, 0x00, 0x60, 0x18, 0x00, 0x00, 0x02, 0xd1, - 0xa3, 0x71, 0x03, 0x21, 0x06, 0xe0, 0x05, 0x68, - 0x95, 0x60, 0xa3, 0x71, 0x00, 0x29, 0x01, 0xd1, - 0x04, 0xc0, 0xb0, 0xbd, 0x80, 0x20, 0xff, 0xf7, - 0x14, 0xfd, 0x00, 0x20, 0xb0, 0xbd, 0x20, 0x57, - 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xa0, 0x30, - 0x00, 0x8a, 0x40, 0x07, 0x40, 0x0f, 0x08, 0x28, - 0x0f, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x3c, 0x00, 0x9c, 0x18, 0x00, 0x00, - 0x05, 0x03, 0x03, 0x05, 0x07, 0x07, 0x09, 0x09, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x02, 0x20, 0x70, 0x47, 0x03, 0x20, 0x70, 0x47, - 0x04, 0x20, 0x70, 0x47, 0xb0, 0xb5, 0x10, 0x4d, - 0x68, 0x69, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x49, - 0x00, 0x22, 0x2c, 0x31, 0x03, 0xc9, 0x01, 0x43, - 0x03, 0x20, 0x06, 0xf0, 0xcf, 0xff, 0x0b, 0x4c, - 0x00, 0x22, 0x03, 0xcc, 0x3c, 0x00, 0xd8, 0x18, - 0x00, 0x00, 0x08, 0x3c, 0x01, 0x43, 0x03, 0x20, - 0x06, 0xf0, 0xaf, 0xff, 0x03, 0xcc, 0x08, 0x43, - 0x07, 0x49, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60, - 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x01, 0x20, - 0x68, 0x61, 0xb0, 0xbd, 0x00, 0x00, 0x64, 0x73, - 0x01, 0x00, 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x0f, 0xf0, - 0xa8, 0xfa, 0x05, 0x4d, 0xe8, 0x6a, 0x3c, 0x00, - 0x14, 0x19, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1, - 0x00, 0x2c, 0x04, 0xd0, 0x20, 0x1c, 0x0f, 0xf0, - 0xb7, 0xfd, 0x01, 0x20, 0x28, 0x70, 0xb0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x88, 0x6a, 0x00, 0x28, 0x04, 0xda, 0x00, 0x20, - 0x88, 0x62, 0x01, 0x21, 0x0d, 0xf0, 0x42, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7e, 0x01, 0x00, - 0xf8, 0xb5, 0x1e, 0x4d, 0x04, 0x1c, 0x00, 0x20, - 0x3c, 0x00, 0x50, 0x19, 0x00, 0x00, 0x68, 0x62, - 0xa8, 0x70, 0x1c, 0x48, 0x00, 0x78, 0xc0, 0x07, - 0x22, 0xd5, 0xb8, 0x20, 0x03, 0x59, 0x1a, 0x48, - 0x00, 0x78, 0x0e, 0x28, 0x09, 0xd1, 0x0a, 0x1c, - 0x80, 0x32, 0x06, 0xd0, 0x18, 0x4e, 0x0d, 0x20, - 0x32, 0x5c, 0x8a, 0x42, 0x01, 0xdd, 0x01, 0x38, - 0xfa, 0xd1, 0x59, 0x1e, 0x0b, 0x06, 0x1b, 0x0e, - 0xab, 0x70, 0xab, 0x62, 0x0e, 0x28, 0x0b, 0xd2, - 0x08, 0xe0, 0x3c, 0x00, 0x8c, 0x19, 0x00, 0x00, - 0x62, 0x18, 0xb0, 0x32, 0x12, 0x7b, 0x82, 0x42, - 0x02, 0xd8, 0x58, 0x1a, 0xa8, 0x62, 0x02, 0xe0, - 0x01, 0x39, 0x00, 0x29, 0xf4, 0xda, 0x0e, 0xf0, - 0x35, 0xf9, 0x00, 0x90, 0x00, 0xab, 0x18, 0x78, - 0x59, 0x78, 0x81, 0x42, 0x00, 0xd9, 0x58, 0x78, - 0xed, 0x30, 0xe8, 0x70, 0x01, 0x21, 0x20, 0x1c, - 0x0d, 0xf0, 0x02, 0xfd, 0xf8, 0xbd, 0x00, 0x00, - 0xac, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x19, - 0x00, 0x00, 0x1d, 0x75, 0x01, 0x00, 0x11, 0x67, - 0x01, 0x00, 0xc7, 0x52, 0x01, 0x00, 0x0e, 0x49, - 0x10, 0xb5, 0x08, 0x69, 0x8b, 0x68, 0xc2, 0x00, - 0xd4, 0x18, 0x62, 0x68, 0x00, 0x2a, 0x0f, 0xd1, - 0x01, 0x30, 0x08, 0x61, 0x07, 0x28, 0x01, 0xd1, - 0x00, 0x20, 0x08, 0x61, 0x20, 0x1c, 0x00, 0xf0, - 0x24, 0xf8, 0x05, 0x48, 0x21, 0x68, 0x54, 0x30, - 0x02, 0x6a, 0xfe, 0xf7, 0xec, 0xfc, 0x3c, 0x00, - 0x04, 0x1a, 0x00, 0x00, 0x10, 0xbd, 0x06, 0x21, - 0x06, 0x20, 0xff, 0xf7, 0x4b, 0xfc, 0x10, 0xbd, - 0x50, 0x6d, 0x01, 0x00, 0x08, 0x49, 0x09, 0x79, - 0xc9, 0x07, 0x08, 0x4a, 0x08, 0xd4, 0x00, 0xe0, - 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29, 0xfb, 0xd1, - 0x01, 0x89, 0x04, 0x31, 0x01, 0x81, 0x00, 0xe0, - 0x00, 0x20, 0xd0, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x60, 0x80, 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00, - 0x3c, 0x00, 0x40, 0x1a, 0x00, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x19, 0x21, 0x89, 0x01, 0x00, 0x20, - 0xff, 0xf7, 0xc5, 0xfd, 0x01, 0x1c, 0x60, 0x60, - 0x20, 0x68, 0xff, 0xf7, 0xe0, 0xfc, 0x60, 0x68, - 0x21, 0x68, 0x08, 0x30, 0x08, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x0a, 0x28, 0x01, 0xda, 0x04, 0x20, - 0x04, 0xe0, 0x50, 0x28, 0x01, 0xda, 0x05, 0x20, - 0x00, 0xe0, 0x07, 0x20, 0x04, 0x4a, 0x11, 0x78, - 0x38, 0x23, 0x3c, 0x00, 0x7c, 0x1a, 0x00, 0x00, - 0xc0, 0x00, 0x18, 0x40, 0x99, 0x43, 0x08, 0x43, - 0x10, 0x70, 0x70, 0x47, 0x88, 0x00, 0x07, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x40, 0x68, - 0x08, 0xe0, 0x01, 0x69, 0xa9, 0x42, 0x04, 0xd1, - 0x44, 0x68, 0x05, 0xf0, 0xc7, 0xfd, 0x20, 0x1c, - 0x00, 0xe0, 0x40, 0x68, 0x00, 0x28, 0xf4, 0xd1, - 0xb0, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, - 0xf8, 0xb5, 0x00, 0x25, 0x3c, 0x00, 0xb8, 0x1a, - 0x00, 0x00, 0x06, 0xf0, 0x84, 0xfd, 0x11, 0x4f, - 0x04, 0x1c, 0xbe, 0x79, 0x20, 0x68, 0x00, 0x28, - 0x07, 0xd1, 0xa0, 0x88, 0x04, 0x30, 0xff, 0xf7, - 0xf2, 0xf8, 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21, - 0x0f, 0xe0, 0x01, 0x68, 0x21, 0x60, 0xa1, 0x69, - 0x01, 0x39, 0xa1, 0x61, 0x10, 0xc0, 0x05, 0x1c, - 0x20, 0x69, 0x01, 0x30, 0x20, 0x61, 0x61, 0x69, - 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42, 0x3c, 0x00, - 0xf4, 0x1a, 0x00, 0x00, 0x03, 0xd9, 0x07, 0x21, - 0x8e, 0x20, 0xff, 0xf7, 0xd3, 0xfb, 0xbe, 0x71, - 0x28, 0x1c, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0xb0, 0xb5, 0x09, 0xf0, 0xbb, 0xff, 0x2f, 0x4c, - 0x00, 0x28, 0x20, 0x74, 0x03, 0xd0, 0x01, 0x21, - 0x01, 0x20, 0x0a, 0xf0, 0x71, 0xfc, 0x2b, 0x4d, - 0x14, 0x35, 0x28, 0x68, 0x00, 0x28, 0x4d, 0xd0, - 0x01, 0x21, 0x0f, 0x20, 0x11, 0xf0, 0x82, 0xfd, - 0x3c, 0x00, 0x30, 0x1b, 0x00, 0x00, 0x28, 0x89, - 0x08, 0xf0, 0xfb, 0xff, 0x01, 0x1c, 0x01, 0x22, - 0x0f, 0x20, 0x11, 0xf0, 0x40, 0xfd, 0xe0, 0x78, - 0x01, 0x25, 0x02, 0x28, 0x36, 0xd1, 0x0a, 0xf0, - 0xc6, 0xf8, 0x00, 0x28, 0x0a, 0xd0, 0x0b, 0xf0, - 0x92, 0xfb, 0x1e, 0x49, 0x09, 0x68, 0x40, 0x18, - 0x11, 0xf0, 0x5f, 0xf8, 0x00, 0x28, 0x01, 0xd1, - 0x02, 0x20, 0x2f, 0xe0, 0xe0, 0x78, 0x02, 0x28, - 0x24, 0xd1, 0x3c, 0x00, 0x6c, 0x1b, 0x00, 0x00, - 0x60, 0x70, 0x25, 0x70, 0x60, 0x68, 0x01, 0x28, - 0x1c, 0xd0, 0x15, 0x48, 0x10, 0x38, 0x81, 0x7b, - 0x00, 0x29, 0x04, 0xd1, 0x85, 0x73, 0x0f, 0x20, - 0x13, 0x49, 0x10, 0xf0, 0x01, 0xfc, 0x08, 0xf0, - 0x4f, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x48, - 0x01, 0x21, 0x98, 0x38, 0x00, 0x69, 0x01, 0xf0, - 0xb7, 0xfd, 0x00, 0x28, 0x05, 0xd0, 0x01, 0x20, - 0x0e, 0xf0, 0x0c, 0xfd, 0x3c, 0x00, 0xa8, 0x1b, - 0x00, 0x00, 0x01, 0x20, 0x0e, 0xf0, 0x1d, 0xfc, - 0xb0, 0xbd, 0x05, 0xf0, 0xdc, 0xfe, 0xb0, 0xbd, - 0xe0, 0x78, 0x00, 0x28, 0x01, 0xd1, 0x25, 0x70, - 0xf7, 0xe7, 0x03, 0x20, 0x00, 0xe0, 0x04, 0x20, - 0x0d, 0xf0, 0x8d, 0xfa, 0xb0, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0x6c, 0x57, 0x01, 0x00, 0xe9, 0x03, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x00, 0x21, - 0x00, 0x20, 0x0a, 0x4d, 0x00, 0xe0, 0x3c, 0x00, - 0xe4, 0x1b, 0x00, 0x00, 0x01, 0x31, 0xcb, 0x00, - 0x5a, 0x19, 0x16, 0x79, 0x01, 0x2e, 0x02, 0xd0, - 0x52, 0x79, 0xa2, 0x42, 0x02, 0xd0, 0x0b, 0x29, - 0xf4, 0xd3, 0x70, 0xbd, 0x0b, 0x29, 0xfc, 0xd2, - 0xc8, 0x00, 0x01, 0x21, 0x5a, 0x19, 0x28, 0x58, - 0x11, 0x71, 0x70, 0xbd, 0x38, 0x58, 0x01, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23, - 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x6a, - 0x3c, 0x00, 0x20, 0x1c, 0x00, 0x00, 0xfe, 0xf7, - 0xda, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5, - 0x04, 0xf0, 0x37, 0xff, 0x00, 0x20, 0x11, 0xf0, - 0x84, 0xfc, 0x00, 0x20, 0x80, 0xbd, 0xb0, 0xb5, - 0x05, 0x4c, 0x05, 0x1c, 0x20, 0x6b, 0xe1, 0x6a, - 0x02, 0xf0, 0xe3, 0xfd, 0x29, 0x1c, 0xa0, 0x6a, - 0x02, 0xf0, 0x11, 0xfb, 0xb0, 0xbd, 0xa4, 0x6c, - 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x1c, 0x00, 0x00, - 0xb0, 0xb5, 0x03, 0x1c, 0x08, 0x1c, 0x14, 0x1c, - 0x00, 0x2b, 0x0c, 0x4d, 0x09, 0xd0, 0x69, 0x69, - 0x89, 0x00, 0x01, 0x31, 0x0a, 0x04, 0x12, 0x0c, - 0x22, 0x80, 0x29, 0x1c, 0xfe, 0xf7, 0x3e, 0xfc, - 0x0a, 0xe0, 0x01, 0x1c, 0x28, 0x1c, 0x22, 0x88, - 0xfe, 0xf7, 0x38, 0xfc, 0x20, 0x88, 0x01, 0x28, - 0x02, 0xd9, 0x80, 0x08, 0x01, 0x38, 0x68, 0x61, - 0x01, 0x20, 0xb0, 0xbd, 0x3c, 0x00, 0x98, 0x1c, - 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0xf1, 0xb5, - 0x00, 0x98, 0x00, 0x26, 0xc1, 0x68, 0x08, 0x68, - 0x09, 0x89, 0x1c, 0x29, 0x34, 0xd3, 0xc1, 0x88, - 0xff, 0x23, 0x01, 0x33, 0x99, 0x42, 0x2f, 0xd1, - 0x01, 0x88, 0xc9, 0x1a, 0x2c, 0xd1, 0x41, 0x88, - 0x08, 0x29, 0x29, 0xd1, 0x01, 0x79, 0x06, 0x29, - 0x26, 0xd1, 0x41, 0x79, 0x04, 0x29, 0x23, 0xd1, - 0x00, 0x25, 0x00, 0x24, 0x07, 0x1c, 0x3c, 0x00, - 0xd4, 0x1c, 0x00, 0x00, 0x18, 0x37, 0x0b, 0xe0, - 0xa0, 0x00, 0x41, 0x18, 0x04, 0x31, 0x04, 0x22, - 0x38, 0x1c, 0xfe, 0xf7, 0x8b, 0xfb, 0x00, 0x28, - 0x01, 0xd1, 0x01, 0x25, 0x04, 0xe0, 0x01, 0x34, - 0x0a, 0x49, 0x48, 0x69, 0xa0, 0x42, 0xef, 0xd8, - 0x08, 0x49, 0x08, 0x78, 0x00, 0x28, 0x0a, 0xd0, - 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, 0x06, 0xd1, - 0x00, 0x2d, 0x04, 0xd1, 0x00, 0x98, 0xc0, 0x68, - 0x3c, 0x00, 0x10, 0x1d, 0x00, 0x00, 0xff, 0xf7, - 0x42, 0xfc, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e, - 0x01, 0x00, 0x02, 0x49, 0x48, 0x60, 0x01, 0x20, - 0x48, 0x61, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x01, 0x26, - 0x03, 0xf0, 0xef, 0xfa, 0x25, 0x1c, 0x10, 0x35, - 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x1d, 0x00, 0x00, - 0x04, 0xd0, 0x00, 0x20, 0x20, 0x77, 0x03, 0xf0, - 0xf1, 0xfb, 0x07, 0xe0, 0x03, 0xf0, 0x38, 0xfd, - 0x00, 0x28, 0x09, 0xd0, 0x01, 0x20, 0x20, 0x77, - 0x03, 0xf0, 0xce, 0xfc, 0x01, 0x1c, 0x06, 0x22, - 0x28, 0x1c, 0xfe, 0xf7, 0xc3, 0xfb, 0x02, 0xe0, - 0x02, 0x20, 0x20, 0x77, 0x00, 0x26, 0x30, 0x1c, - 0x70, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0x7a, - 0xc0, 0x07, 0x03, 0x49, 0x3c, 0x00, 0x88, 0x1d, - 0x00, 0x00, 0xc0, 0x0f, 0x88, 0x62, 0x70, 0x47, - 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, 0x88, 0x62, - 0x70, 0x47, 0xa4, 0x6c, 0x01, 0x00, 0x06, 0x48, - 0x80, 0x7a, 0xc1, 0x07, 0x06, 0x4a, 0xc9, 0x0f, - 0x91, 0x62, 0x20, 0x21, 0x80, 0x07, 0x00, 0xd4, - 0x00, 0x21, 0xa0, 0x32, 0x11, 0x70, 0x70, 0x47, - 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0x3c, 0x00, - 0xc4, 0x1d, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x07, 0x4a, 0x12, 0x68, 0x07, 0x4b, 0x9b, 0x69, - 0x1a, 0x40, 0x01, 0xd0, 0x01, 0x22, 0x00, 0xe0, - 0x00, 0x22, 0x0a, 0x60, 0x01, 0x21, 0x00, 0x2a, - 0x00, 0xd0, 0x00, 0x21, 0x01, 0x60, 0x70, 0x47, - 0x10, 0x00, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x01, 0x22, 0x02, 0x60, 0x0a, 0x60, 0x70, 0x47, - 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x1c, 0x58, 0x31, - 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x04, 0x1c, - 0x06, 0x22, 0x28, 0x1d, 0xfe, 0xf7, 0x77, 0xfb, - 0x21, 0x1c, 0x5e, 0x31, 0x06, 0x22, 0x28, 0x1c, - 0x0a, 0x30, 0xfe, 0xf7, 0x70, 0xfb, 0x21, 0x1c, - 0x64, 0x31, 0x06, 0x22, 0x28, 0x1c, 0x10, 0x30, - 0xfe, 0xf7, 0x69, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5, - 0x00, 0x25, 0x1d, 0x72, 0x17, 0x1c, 0x0e, 0x1c, - 0xb2, 0x6d, 0x00, 0x21, 0x92, 0x19, 0x50, 0x32, - 0xd2, 0x7a, 0x3c, 0x00, 0x3c, 0x1e, 0x00, 0x00, - 0x1c, 0x1c, 0x5a, 0x72, 0x00, 0x78, 0x32, 0x1c, - 0x80, 0x32, 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, - 0x01, 0x90, 0x08, 0x98, 0x02, 0x92, 0x00, 0x28, - 0x01, 0xd1, 0x30, 0x7f, 0x2b, 0xe0, 0x37, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x00, 0xdd, 0x01, 0x1c, - 0x01, 0x98, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x98, - 0x01, 0x28, 0x10, 0xd1, 0x02, 0x9a, 0x90, 0x6b, - 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0x78, 0x1e, - 0x00, 0x00, 0x88, 0x42, 0x01, 0xd9, 0x45, 0x1a, - 0x01, 0x3d, 0x70, 0x19, 0xb0, 0x30, 0x03, 0xe0, - 0xb5, 0x6d, 0x01, 0x3d, 0x70, 0x19, 0x50, 0x30, - 0x00, 0x7b, 0x0f, 0xe0, 0x02, 0x9a, 0x10, 0x6a, - 0x00, 0x28, 0x07, 0xd0, 0x88, 0x42, 0x01, 0xd9, - 0x45, 0x1a, 0x01, 0x3d, 0x70, 0x19, 0xa0, 0x30, - 0x00, 0x79, 0x03, 0xe0, 0xbd, 0x69, 0x01, 0x3d, - 0x78, 0x19, 0x00, 0x7f, 0xa0, 0x72, 0x3c, 0x00, - 0xb4, 0x1e, 0x00, 0x00, 0x0e, 0xf0, 0x0c, 0xf8, - 0x0e, 0x28, 0x11, 0xd1, 0xa0, 0x7a, 0x08, 0xf0, - 0x67, 0xff, 0x00, 0x28, 0x0c, 0xd0, 0x78, 0x68, - 0x00, 0x28, 0x05, 0xd1, 0x1b, 0x48, 0x00, 0x25, - 0x00, 0x78, 0x08, 0xf0, 0x4b, 0xff, 0x02, 0xe0, - 0x45, 0x1e, 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72, - 0x02, 0x9a, 0x50, 0x69, 0x00, 0x28, 0x17, 0xd0, - 0x08, 0x98, 0x01, 0x28, 0x14, 0xd0, 0xa0, 0x7a, - 0x3c, 0x00, 0xf0, 0x1e, 0x00, 0x00, 0x08, 0xf0, - 0x4e, 0xff, 0x00, 0x28, 0x0f, 0xd0, 0x01, 0x98, - 0x00, 0x28, 0x07, 0xd0, 0x02, 0x20, 0x20, 0x72, - 0x70, 0x6c, 0x80, 0x19, 0x40, 0x30, 0xc0, 0x79, - 0x60, 0x72, 0x04, 0xe0, 0x7d, 0x68, 0x01, 0x3d, - 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72, 0x02, 0x9a, - 0xa0, 0x7a, 0x91, 0x69, 0x08, 0xf0, 0x51, 0xff, - 0x20, 0x60, 0x02, 0x9a, 0x60, 0x7a, 0x91, 0x69, - 0x08, 0xf0, 0x3c, 0x00, 0x2c, 0x1f, 0x00, 0x00, - 0x4b, 0xff, 0x60, 0x60, 0xa0, 0x7a, 0xe0, 0x72, - 0x25, 0x73, 0xfe, 0xbd, 0xd4, 0x7e, 0x01, 0x00, - 0x90, 0x57, 0x01, 0x00, 0x00, 0x06, 0x00, 0x0e, - 0x00, 0x2a, 0x8c, 0xb5, 0x01, 0xd0, 0x8a, 0x22, - 0x00, 0xe0, 0x88, 0x22, 0x00, 0xab, 0x1a, 0x80, - 0x0c, 0xf0, 0xc2, 0xf8, 0x01, 0x90, 0x68, 0x46, - 0x0b, 0xf0, 0xbc, 0xfa, 0x8c, 0xbd, 0x00, 0x00, - 0x01, 0x1c, 0x08, 0x48, 0x3c, 0x00, 0x68, 0x1f, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28, - 0x09, 0xd0, 0x49, 0x68, 0x02, 0x20, 0x00, 0x29, - 0x00, 0xd1, 0x01, 0x20, 0x01, 0x06, 0x09, 0x0e, - 0x00, 0x20, 0x06, 0xf0, 0xd8, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0xb5, - 0x01, 0x90, 0x04, 0x1c, 0x44, 0x30, 0x01, 0xaa, - 0x69, 0x46, 0x11, 0xf0, 0xb8, 0xfd, 0x00, 0x28, - 0x0b, 0xd0, 0xa0, 0x69, 0x00, 0x21, 0x3c, 0x00, - 0xa4, 0x1f, 0x00, 0x00, 0xc2, 0x07, 0xd2, 0x0f, - 0x02, 0x20, 0xff, 0xf7, 0xc9, 0xff, 0x00, 0x21, - 0x20, 0x1c, 0x0f, 0xf0, 0xd9, 0xfe, 0x1c, 0xbd, - 0x04, 0x21, 0x98, 0x20, 0xff, 0xf7, 0x72, 0xf9, - 0xf9, 0xe7, 0x00, 0x00, 0x8c, 0xb5, 0x00, 0xab, - 0x84, 0x21, 0x19, 0x80, 0x05, 0x4b, 0x02, 0x1c, - 0x18, 0x1c, 0x99, 0x8a, 0x0c, 0xf0, 0x8e, 0xf8, - 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0, 0x7c, 0xfa, - 0x3c, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x8c, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x06, 0x49, 0x80, 0xb5, 0xc9, 0x68, - 0x14, 0x23, 0x40, 0x31, 0x89, 0x7a, 0x04, 0x4a, - 0x59, 0x43, 0x89, 0x18, 0x80, 0x00, 0x08, 0x58, - 0xfe, 0xf7, 0xe9, 0xf9, 0x80, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0x54, 0x47, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x20, 0xff, 0xf7, 0xd6, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x20, 0x00, 0x00, - 0x80, 0xb5, 0x12, 0x48, 0x11, 0x49, 0x80, 0x8a, - 0x0a, 0x8b, 0x00, 0x21, 0x00, 0x28, 0xc2, 0xb0, - 0x0c, 0xd1, 0x01, 0x2a, 0x05, 0xd0, 0x02, 0x2a, - 0x15, 0xd0, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x22, - 0x07, 0xe0, 0x02, 0x22, 0x00, 0xab, 0x5a, 0x80, - 0x99, 0x80, 0x04, 0xe0, 0x00, 0xab, 0x5a, 0x80, - 0x0d, 0x22, 0x00, 0xab, 0x9a, 0x80, 0x00, 0xab, - 0x18, 0x80, 0xff, 0x20, 0x3c, 0x00, 0x58, 0x20, - 0x00, 0x00, 0x98, 0x71, 0xd9, 0x71, 0x68, 0x46, - 0x00, 0xf0, 0xd1, 0xf9, 0x42, 0xb0, 0x80, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x09, 0xf0, 0x5f, 0xfc, 0x00, 0x20, 0x05, 0xf0, - 0x2a, 0xf9, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x36, 0xf9, 0x20, 0x1c, 0x0f, 0xf0, 0xb3, 0xfe, - 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x1c, 0xb5, - 0x09, 0xf0, 0x4f, 0xfc, 0x07, 0x20, 0x3c, 0x00, - 0x94, 0x20, 0x00, 0x00, 0x00, 0xab, 0x07, 0x4c, - 0x18, 0x80, 0xe1, 0x8a, 0x20, 0x1c, 0x0c, 0xf0, - 0x0b, 0xf8, 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0, - 0x17, 0xfa, 0x20, 0x1c, 0x0f, 0xf0, 0x9e, 0xfe, - 0x1c, 0xbd, 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20, 0xff, 0xf7, - 0xf1, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0x15, 0x4c, - 0xc2, 0xb0, 0xa0, 0x8a, 0x00, 0x28, 0x03, 0xd0, - 0x3c, 0x00, 0xd0, 0x20, 0x00, 0x00, 0x01, 0x28, - 0x1e, 0xd1, 0x02, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0xe1, 0x68, 0x40, 0x31, 0x88, 0x72, 0x20, 0x69, - 0x08, 0xf0, 0x23, 0xfd, 0x02, 0x1c, 0x0c, 0x48, - 0x18, 0x38, 0x80, 0x88, 0xe1, 0x68, 0x0f, 0xf0, - 0xa4, 0xfe, 0xa0, 0x8a, 0x00, 0xab, 0x18, 0x80, - 0x01, 0x20, 0x58, 0x80, 0x00, 0x20, 0x98, 0x80, - 0xff, 0x21, 0x99, 0x71, 0xd8, 0x71, 0x68, 0x46, - 0x00, 0xf0, 0x3c, 0x00, 0x0c, 0x21, 0x00, 0x00, - 0x7b, 0xf9, 0x42, 0xb0, 0x10, 0xbd, 0x03, 0x21, - 0x98, 0x20, 0xff, 0xf7, 0xc5, 0xf8, 0xf8, 0xe7, - 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x03, 0x48, 0x0f, 0xf0, 0x60, 0xfe, - 0x00, 0x20, 0x05, 0xf0, 0xcd, 0xf8, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x48, - 0x0f, 0xf0, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x48, 0x21, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20, - 0xff, 0xf7, 0xa9, 0xf8, 0x80, 0xbd, 0x80, 0xb5, - 0x03, 0x20, 0xff, 0xf7, 0x34, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xf0, 0xb5, 0x21, 0x4e, 0x00, 0x27, - 0xb1, 0x8a, 0x30, 0x1c, 0x00, 0x25, 0x04, 0x24, - 0x00, 0x29, 0x00, 0x8b, 0xc3, 0xb0, 0x1e, 0xd1, - 0x01, 0x28, 0x07, 0xd0, 0x31, 0x1c, 0x49, 0x8b, - 0x02, 0x28, 0x12, 0xd1, 0x00, 0x29, 0x3c, 0x00, - 0x84, 0x21, 0x00, 0x00, 0x07, 0xd1, 0x00, 0x24, - 0x05, 0xe0, 0x00, 0x24, 0x01, 0x25, 0x02, 0x20, - 0x00, 0xab, 0xd8, 0x80, 0x1f, 0x81, 0x0f, 0xf0, - 0x7f, 0xff, 0x00, 0x2c, 0x10, 0xd1, 0xf1, 0x68, - 0x05, 0x20, 0x40, 0x31, 0x88, 0x72, 0x0e, 0xe0, - 0x00, 0x29, 0x1a, 0xd1, 0x00, 0xab, 0xd8, 0x80, - 0x0e, 0x20, 0x02, 0xe0, 0x00, 0xab, 0xd8, 0x80, - 0x0d, 0x20, 0x00, 0xab, 0x18, 0x81, 0x07, 0xe0, - 0x3c, 0x00, 0xc0, 0x21, 0x00, 0x00, 0x30, 0x1c, - 0x0f, 0xf0, 0x13, 0xfe, 0x20, 0x1c, 0xff, 0xf7, - 0xfc, 0xfe, 0x00, 0x2d, 0x08, 0xd0, 0xb0, 0x8a, - 0x00, 0xab, 0x98, 0x80, 0xff, 0x20, 0x98, 0x72, - 0xdf, 0x72, 0x01, 0xa8, 0x00, 0xf0, 0x11, 0xf9, - 0x43, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0, - 0x6c, 0xf8, 0x04, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x78, 0xf8, 0x3c, 0x00, 0xfc, 0x21, 0x00, 0x00, - 0x0f, 0xf0, 0x4c, 0xff, 0x20, 0x1c, 0x0f, 0xf0, - 0xf3, 0xfd, 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7, 0xd8, 0xfe, - 0x01, 0x48, 0x0f, 0xf0, 0xe9, 0xfd, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x20, - 0xff, 0xf7, 0xce, 0xfe, 0x01, 0x20, 0x05, 0xf0, - 0x5f, 0xf8, 0x02, 0x48, 0x0f, 0xf0, 0xdc, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x22, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x03, 0x20, 0xff, 0xf7, 0xc0, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x1d, 0x4d, 0xc2, 0xb0, - 0x28, 0x8b, 0x00, 0xab, 0xff, 0x21, 0x58, 0x80, - 0x99, 0x71, 0x00, 0x21, 0xd9, 0x71, 0xaa, 0x8a, - 0x00, 0x24, 0x01, 0x2a, 0x18, 0xd1, 0x2a, 0x1c, - 0x52, 0x8b, 0x02, 0x28, 0x0f, 0xd1, 0x00, 0x2a, - 0x16, 0xd1, 0x03, 0x20, 0x58, 0x80, 0x3c, 0x00, - 0x74, 0x22, 0x00, 0x00, 0x99, 0x80, 0x2c, 0x1c, - 0xff, 0x22, 0x98, 0x1d, 0xe9, 0x69, 0xfe, 0xf7, - 0x3b, 0xf9, 0xe1, 0x68, 0x04, 0x20, 0x40, 0x31, - 0x88, 0x72, 0x10, 0xe0, 0x00, 0x2a, 0x06, 0xd1, - 0x01, 0x24, 0x0e, 0x20, 0x01, 0xe0, 0x01, 0x24, - 0x0d, 0x20, 0x00, 0xab, 0x98, 0x80, 0x28, 0x1c, - 0x0f, 0xf0, 0xa4, 0xfd, 0x04, 0x20, 0xff, 0xf7, - 0x8d, 0xfe, 0x00, 0x2c, 0x05, 0xd0, 0xa8, 0x8a, - 0x3c, 0x00, 0xb0, 0x22, 0x00, 0x00, 0x00, 0xab, - 0x18, 0x80, 0x68, 0x46, 0x00, 0xf0, 0xa5, 0xf8, - 0x42, 0xb0, 0xb0, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0, - 0x00, 0xf8, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x0c, 0xf8, 0x20, 0x1c, 0x0f, 0xf0, 0x89, 0xfd, - 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x04, 0x20, 0xff, 0xf7, 0x6e, 0xfe, 0x01, 0x48, - 0x0f, 0xf0, 0x3c, 0x00, 0xec, 0x22, 0x00, 0x00, - 0x7f, 0xfd, 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x20, 0xff, 0xf7, 0x64, 0xfe, - 0x01, 0x20, 0x04, 0xf0, 0xf5, 0xff, 0x02, 0x48, - 0x0f, 0xf0, 0x72, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x20, - 0xff, 0xf7, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x19, 0x4d, 0x04, 0x24, 0xa9, 0x8a, - 0x28, 0x1c, 0x02, 0x8b, 0x3c, 0x00, 0x28, 0x23, - 0x00, 0x00, 0xc2, 0xb0, 0x01, 0x29, 0x14, 0xd1, - 0x40, 0x8b, 0x04, 0x2a, 0x0b, 0xd1, 0x00, 0x28, - 0x00, 0xd1, 0x00, 0x24, 0x0f, 0xf0, 0xad, 0xfe, - 0x00, 0x2c, 0x19, 0xd1, 0xe9, 0x68, 0x05, 0x20, - 0x40, 0x31, 0x88, 0x72, 0x17, 0xe0, 0x00, 0x28, - 0x10, 0xd1, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x20, - 0x02, 0xe0, 0x00, 0xab, 0x5a, 0x80, 0x0d, 0x20, - 0x00, 0xab, 0x98, 0x80, 0x19, 0x80, 0x3c, 0x00, - 0x64, 0x23, 0x00, 0x00, 0xff, 0x20, 0x98, 0x71, - 0x00, 0x20, 0xd8, 0x71, 0x68, 0x46, 0x00, 0xf0, - 0x49, 0xf8, 0x42, 0xb0, 0xb0, 0xbd, 0x28, 0x1c, - 0x0f, 0xf0, 0x38, 0xfd, 0x20, 0x1c, 0xff, 0xf7, - 0x21, 0xfe, 0xf6, 0xe7, 0x70, 0x7c, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x20, 0x04, 0xf0, 0x9e, 0xff, - 0x03, 0x4c, 0xe0, 0x8a, 0x04, 0xf0, 0xaa, 0xff, - 0x20, 0x1c, 0x0f, 0xf0, 0x27, 0xfd, 0x10, 0xbd, - 0x3c, 0x00, 0xa0, 0x23, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7, - 0x0c, 0xfe, 0x01, 0x48, 0x0f, 0xf0, 0x1d, 0xfd, - 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x20, 0xff, 0xf7, 0x02, 0xfe, 0x01, 0x20, - 0x04, 0xf0, 0x93, 0xff, 0x02, 0x48, 0x0f, 0xf0, - 0x10, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x01, 0x1c, - 0x44, 0x31, 0x3c, 0x00, 0xdc, 0x23, 0x00, 0x00, - 0x04, 0x1c, 0x06, 0x22, 0x28, 0x1c, 0xfe, 0xf7, - 0x89, 0xf8, 0xec, 0x60, 0x20, 0x69, 0x03, 0xf0, - 0x97, 0xf8, 0x01, 0x1c, 0x06, 0x22, 0xa8, 0x18, - 0xfe, 0xf7, 0x80, 0xf8, 0x04, 0x20, 0xff, 0xf7, - 0xf7, 0xfd, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x90, 0xb5, 0x04, 0x1c, 0x80, 0x88, 0x93, 0xb0, - 0x00, 0x28, 0x06, 0xd0, 0x15, 0x49, 0x06, 0x22, - 0x48, 0x80, 0x18, 0x31, 0x3c, 0x00, 0x18, 0x24, - 0x00, 0x00, 0x88, 0x1f, 0xfe, 0xf7, 0x6d, 0xf8, - 0x68, 0x46, 0x0c, 0xf0, 0x14, 0xf8, 0x20, 0x88, - 0x01, 0x28, 0x08, 0xd1, 0x60, 0x88, 0x03, 0x28, - 0x05, 0xd1, 0xa0, 0x88, 0x00, 0x28, 0x02, 0xd1, - 0x06, 0x20, 0x0c, 0xa9, 0x08, 0x70, 0xa0, 0x79, - 0x06, 0x21, 0xff, 0x28, 0x04, 0xd0, 0xe0, 0x79, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x1c, 0x08, 0x31, - 0x0b, 0x20, 0x08, 0xaa, 0x50, 0x72, 0x3c, 0x00, - 0x54, 0x24, 0x00, 0x00, 0x20, 0x1c, 0x08, 0xf0, - 0x3b, 0xff, 0x03, 0x90, 0x68, 0x46, 0x0b, 0xf0, - 0x31, 0xf8, 0x13, 0xb0, 0x90, 0xbd, 0x00, 0x00, - 0x58, 0x7c, 0x01, 0x00, 0x07, 0x4b, 0x1a, 0x78, - 0x82, 0x42, 0x01, 0xd0, 0x00, 0x29, 0x07, 0xd0, - 0xff, 0x20, 0x18, 0x70, 0x04, 0x48, 0x01, 0x88, - 0x01, 0x22, 0x52, 0x03, 0x91, 0x43, 0x01, 0x80, - 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00, - 0x3c, 0x00, 0x90, 0x24, 0x00, 0x00, 0x32, 0x80, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x23, - 0x07, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x79, - 0x0a, 0xf0, 0x4f, 0xf9, 0x01, 0x20, 0x03, 0x49, - 0xa0, 0x40, 0x08, 0x39, 0x0a, 0x78, 0x10, 0x43, - 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x74, 0x7a, - 0x01, 0x00, 0x03, 0x4a, 0x00, 0x21, 0x11, 0x54, - 0x80, 0x00, 0x30, 0x32, 0x10, 0x58, 0x01, 0x70, - 0x70, 0x47, 0x3c, 0x00, 0xcc, 0x24, 0x00, 0x00, - 0xe0, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xfe, 0xf7, 0x12, 0xff, - 0x20, 0x1c, 0xff, 0xf7, 0xed, 0xff, 0x00, 0x21, - 0x20, 0x1c, 0x0e, 0xf0, 0x89, 0xfb, 0x10, 0xbd, - 0x05, 0x49, 0x80, 0xb5, 0x88, 0x60, 0x08, 0x7f, - 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x08, 0x58, - 0xfd, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x25, - 0x00, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x91, 0x20, 0xfe, 0xf7, 0xc7, 0xfe, - 0x80, 0xbd, 0x02, 0x4a, 0x11, 0x68, 0x81, 0x43, - 0x11, 0x60, 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e, - 0x01, 0x00, 0x80, 0xb5, 0xfe, 0xf7, 0xe9, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0xfe, 0xf7, 0xe5, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0x31, 0xfa, - 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x3c, 0x00, - 0x44, 0x25, 0x00, 0x00, 0x04, 0x20, 0x88, 0x60, - 0x00, 0xf0, 0xd0, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x99, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, - 0x99, 0xfb, 0x80, 0xbd, 0x38, 0xb5, 0x20, 0x28, - 0x15, 0xd2, 0x0d, 0x4c, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79, - 0x5a, 0x70, 0x0a, 0x4b, 0x82, 0x00, 0x99, 0x50, - 0x3c, 0x00, 0x80, 0x25, 0x00, 0x00, 0x01, 0x21, - 0x81, 0x40, 0x08, 0x48, 0x01, 0x60, 0x42, 0x68, - 0x11, 0x43, 0x41, 0x60, 0x00, 0xab, 0x18, 0x88, - 0xe0, 0x84, 0x38, 0xbd, 0x01, 0x21, 0xff, 0x20, - 0xfe, 0xf7, 0x83, 0xfe, 0xf9, 0xe7, 0x00, 0x10, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x20, 0x28, 0x09, 0xd2, 0x05, 0x49, - 0x06, 0x4b, 0x82, 0x00, 0x99, 0x50, 0x05, 0x4a, - 0x51, 0x68, 0x3c, 0x00, 0xbc, 0x25, 0x00, 0x00, - 0x01, 0x23, 0x83, 0x40, 0x99, 0x43, 0x51, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xa9, 0x75, 0x00, 0x00, - 0x30, 0x74, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00, - 0x02, 0x4a, 0x11, 0x68, 0x08, 0x43, 0x10, 0x60, - 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e, 0x01, 0x00, - 0x0b, 0x48, 0x01, 0x68, 0x03, 0x22, 0x12, 0x04, - 0x11, 0x43, 0x01, 0x60, 0x01, 0x68, 0x07, 0x22, - 0x12, 0x06, 0x91, 0x43, 0x3c, 0x00, 0xf8, 0x25, - 0x00, 0x00, 0x01, 0x22, 0x52, 0x06, 0x89, 0x18, - 0x01, 0x60, 0x01, 0x68, 0x12, 0x0c, 0x11, 0x43, - 0x01, 0x60, 0x01, 0x68, 0x52, 0x08, 0x11, 0x43, - 0x01, 0x60, 0x70, 0x47, 0x00, 0x00, 0x80, 0x00, - 0x07, 0x00, 0xfe, 0xb5, 0x1c, 0x4e, 0x05, 0x1c, - 0xb0, 0x8a, 0xf2, 0x68, 0x12, 0xd0, 0x01, 0x24, - 0x00, 0x29, 0x09, 0xd1, 0x11, 0x6d, 0x02, 0xaa, - 0x01, 0xab, 0xfe, 0xf7, 0xf8, 0xfe, 0x3c, 0x00, - 0x34, 0x26, 0x00, 0x00, 0x02, 0x98, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x24, 0x0b, 0xe0, 0x01, 0xaa, - 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x70, 0xff, - 0x05, 0xe0, 0x11, 0x6d, 0x02, 0xaa, 0x00, 0x24, - 0x01, 0xab, 0xfe, 0xf7, 0x01, 0xff, 0x0e, 0x49, - 0x08, 0x1c, 0x20, 0x30, 0x82, 0x79, 0x00, 0xab, - 0x1a, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x30, 0x68, - 0x00, 0x28, 0x02, 0xd1, 0x02, 0x98, 0x30, 0x60, - 0x3c, 0x00, 0x70, 0x26, 0x00, 0x00, 0x02, 0xe0, - 0x02, 0x98, 0x72, 0x68, 0xd0, 0x60, 0x01, 0x98, - 0x00, 0xab, 0x70, 0x60, 0x18, 0x88, 0xc8, 0x84, - 0xf0, 0x68, 0xc0, 0x6c, 0xf0, 0x60, 0x20, 0x1c, - 0xfe, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x54, 0x27, - 0x1d, 0x4e, 0x00, 0x20, 0x30, 0x60, 0x70, 0x60, - 0x67, 0x43, 0x38, 0x04, 0x15, 0x1c, 0x00, 0x0c, - 0xb1, 0x82, 0x3c, 0x00, 0xac, 0x26, 0x00, 0x00, - 0xff, 0xf7, 0x96, 0xf8, 0x08, 0x21, 0x30, 0x61, - 0x00, 0x26, 0x17, 0x4a, 0x14, 0xe0, 0x03, 0x1c, - 0x24, 0x33, 0x42, 0x61, 0x03, 0x61, 0xc6, 0x61, - 0x01, 0x83, 0x08, 0x33, 0x03, 0x60, 0xb1, 0x23, - 0x43, 0x60, 0x03, 0x1c, 0x64, 0x33, 0xc3, 0x60, - 0x0c, 0x23, 0x03, 0x81, 0x03, 0x1c, 0x54, 0x33, - 0x4c, 0x30, 0x28, 0xc0, 0x01, 0x3c, 0x18, 0x1c, - 0x00, 0x2c, 0xe8, 0xd1, 0x3c, 0x00, 0xe8, 0x26, - 0x00, 0x00, 0x09, 0x4e, 0x07, 0x22, 0x30, 0x69, - 0xd2, 0x43, 0xc1, 0x19, 0x50, 0x50, 0x02, 0x1c, - 0x10, 0x32, 0x80, 0x39, 0x8a, 0x63, 0xf0, 0x60, - 0xb0, 0x60, 0x00, 0x21, 0x00, 0x20, 0xff, 0xf7, - 0x88, 0xff, 0x30, 0x69, 0xf0, 0x60, 0xb0, 0x60, - 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x91, 0x00, - 0x05, 0x00, 0x01, 0x48, 0x40, 0x6a, 0x70, 0x47, - 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x3c, 0x00, - 0x24, 0x27, 0x00, 0x00, 0x01, 0x48, 0x00, 0x88, - 0x70, 0x47, 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00, - 0x06, 0x49, 0x80, 0xb5, 0x08, 0x88, 0x01, 0x30, - 0x08, 0x80, 0x05, 0x49, 0x08, 0x20, 0x08, 0x60, - 0x04, 0x49, 0x88, 0x69, 0x88, 0x61, 0x00, 0xf0, - 0x21, 0xf8, 0x80, 0xbd, 0xfc, 0x6b, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x03, 0x4a, 0x01, 0x20, 0x12, 0x1d, 0x06, 0xca, - 0x3c, 0x00, 0x60, 0x27, 0x00, 0x00, 0x91, 0x42, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0xe8, 0x7d, - 0x01, 0x00, 0x06, 0x48, 0x00, 0xb5, 0xc0, 0x7c, - 0x00, 0x28, 0x03, 0xd1, 0xff, 0xf7, 0xef, 0xff, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x00, 0xbd, - 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00, 0xa0, 0x80, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x80, 0x07, - 0x02, 0xd5, 0x06, 0xf0, 0x3e, 0xfd, 0x03, 0xe0, - 0xe0, 0x07, 0x3c, 0x00, 0x9c, 0x27, 0x00, 0x00, - 0x01, 0xd5, 0x06, 0xf0, 0xe3, 0xfd, 0x60, 0x07, - 0x01, 0xd5, 0xfe, 0xf7, 0xab, 0xfd, 0x10, 0xbd, - 0x02, 0x4a, 0x01, 0x1c, 0x10, 0x68, 0x11, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x38, 0xb5, 0x20, 0x4d, 0x2c, 0x1c, 0x20, 0x34, - 0xa0, 0x79, 0x00, 0xab, 0x18, 0x70, 0xe0, 0x79, - 0x58, 0x70, 0xfe, 0xf7, 0x27, 0xfa, 0x00, 0xab, - 0x18, 0x88, 0xe8, 0x84, 0x3c, 0x00, 0xd8, 0x27, - 0x00, 0x00, 0x1a, 0x48, 0x81, 0x78, 0x08, 0x22, - 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43, - 0x81, 0x70, 0x17, 0x48, 0x41, 0x68, 0x80, 0x22, - 0x91, 0x43, 0x41, 0x60, 0x01, 0x68, 0x11, 0x43, - 0x01, 0x60, 0x00, 0x20, 0x01, 0x30, 0x64, 0x28, - 0xfc, 0xd3, 0xa0, 0x79, 0x0f, 0x4d, 0x00, 0xab, - 0x18, 0x70, 0xe0, 0x79, 0x10, 0x4c, 0x58, 0x70, - 0x20, 0x1c, 0x10, 0x30, 0x00, 0xf0, 0x3c, 0x00, - 0x14, 0x28, 0x00, 0x00, 0xdf, 0xfb, 0x00, 0x20, - 0xc0, 0x43, 0xa0, 0x61, 0xff, 0xf7, 0x9c, 0xff, - 0x00, 0x28, 0x09, 0xd0, 0x0a, 0x49, 0x08, 0x69, - 0x01, 0x30, 0x08, 0x61, 0x00, 0x20, 0x3c, 0x31, - 0x89, 0x68, 0x48, 0x63, 0x06, 0xf0, 0xee, 0xfc, - 0x00, 0xab, 0x18, 0x88, 0xe8, 0x84, 0x38, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf4, 0x00, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x3c, 0x00, 0x50, 0x28, 0x00, 0x00, 0xe8, 0x7d, - 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5, 0x00, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0xfe, 0xf7, 0xc1, 0xf9, - 0x07, 0x48, 0x07, 0x49, 0x3c, 0x30, 0x80, 0x68, - 0x10, 0x30, 0x48, 0x61, 0x01, 0x20, 0x08, 0x61, - 0x05, 0x49, 0x08, 0x68, 0x80, 0x22, 0x90, 0x43, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xe8, 0x7d, - 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xf4, 0x00, - 0x07, 0x00, 0x3c, 0x00, 0x8c, 0x28, 0x00, 0x00, - 0x80, 0xb5, 0x0c, 0xf0, 0xcb, 0xfe, 0x06, 0xf0, - 0xbf, 0xfc, 0x80, 0xbd, 0x01, 0x49, 0xc8, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x02, 0x4a, 0x91, 0x6a, 0x08, 0x43, 0x90, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x18, 0x23, 0x06, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x00, 0x21, 0x02, 0x79, 0x03, 0x68, 0x1a, 0x70, - 0x01, 0x31, 0x08, 0x30, 0x3c, 0x00, 0xc8, 0x28, - 0x00, 0x00, 0x03, 0x29, 0xf8, 0xd3, 0x70, 0x47, - 0x00, 0x00, 0x28, 0x52, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, - 0x81, 0x62, 0x70, 0x47, 0x00, 0x00, 0x85, 0x75, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0xf8, 0xb5, - 0xff, 0xf7, 0x33, 0xff, 0x28, 0x4f, 0x00, 0x28, - 0x04, 0xd0, 0xff, 0xf7, 0xc8, 0xff, 0x38, 0x6a, - 0x01, 0x30, 0x38, 0x62, 0xf8, 0x6a, 0x3c, 0x00, - 0x04, 0x29, 0x00, 0x00, 0x00, 0x28, 0x02, 0xd0, - 0x01, 0x89, 0x04, 0x39, 0x01, 0x81, 0x38, 0x6b, - 0x00, 0x25, 0x00, 0x28, 0x08, 0xd0, 0x0b, 0x20, - 0x3d, 0x63, 0x10, 0xf0, 0xe5, 0xfa, 0x1e, 0x49, - 0x08, 0x68, 0x21, 0x22, 0x90, 0x43, 0x08, 0x60, - 0x38, 0x78, 0x3c, 0x21, 0x1b, 0x4a, 0x41, 0x43, - 0x8c, 0x18, 0xff, 0x22, 0x79, 0x6a, 0x3a, 0x70, - 0x00, 0x29, 0x0c, 0xd0, 0xb9, 0x69, 0x01, 0x31, - 0x3c, 0x00, 0x40, 0x29, 0x00, 0x00, 0xb9, 0x61, - 0x7d, 0x62, 0xbd, 0x68, 0x00, 0x2d, 0x04, 0xd0, - 0x63, 0x6b, 0x7a, 0x6b, 0x00, 0x21, 0xfd, 0xf7, - 0x47, 0xfd, 0xf8, 0xbd, 0x04, 0x28, 0x03, 0xd3, - 0x01, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0xa1, 0xfc, - 0x38, 0x69, 0x26, 0x1c, 0x01, 0x30, 0x38, 0x61, - 0x20, 0x36, 0x30, 0x78, 0x02, 0x28, 0x03, 0xd0, - 0x0c, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x95, 0xfc, - 0x35, 0x70, 0x3c, 0x00, 0x7c, 0x29, 0x00, 0x00, - 0xa1, 0x69, 0x00, 0x29, 0xe8, 0xd0, 0x63, 0x6b, - 0x30, 0x34, 0x20, 0x78, 0x0c, 0x1c, 0x00, 0x21, - 0x7a, 0x6b, 0xfd, 0xf7, 0x27, 0xfd, 0xdf, 0xe7, - 0x04, 0x6c, 0x01, 0x00, 0xf4, 0x00, 0x07, 0x00, - 0x18, 0xdb, 0x01, 0x00, 0x10, 0xb5, 0x0b, 0x4c, - 0x60, 0x6a, 0x00, 0x28, 0x0e, 0xd0, 0x0a, 0x48, - 0x00, 0xf0, 0x12, 0xfb, 0x00, 0x20, 0x60, 0x62, - 0xa4, 0x68, 0x00, 0x2c, 0x3c, 0x00, 0xb8, 0x29, - 0x00, 0x00, 0x05, 0xd0, 0x7e, 0x23, 0xdb, 0x43, - 0x00, 0x22, 0x01, 0x21, 0xfd, 0xf7, 0x0d, 0xfd, - 0x10, 0xbd, 0xe0, 0x69, 0x01, 0x30, 0xe0, 0x61, - 0x10, 0xbd, 0x04, 0x6c, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x09, 0x48, 0x41, 0x68, 0x3f, 0x22, - 0x12, 0x04, 0x91, 0x43, 0x0d, 0x22, 0x12, 0x04, - 0x89, 0x18, 0x41, 0x60, 0x41, 0x68, 0x01, 0x22, - 0x52, 0x02, 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00, - 0xf4, 0x29, 0x00, 0x00, 0x03, 0x48, 0x81, 0x78, - 0x81, 0x70, 0x81, 0x78, 0x81, 0x70, 0x70, 0x47, - 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf0, 0xb5, 0x01, 0x25, 0x08, 0x24, 0x00, 0x20, - 0x0e, 0x4a, 0x0f, 0x49, 0x00, 0x26, 0x3c, 0x23, - 0x43, 0x43, 0xd1, 0x52, 0x9b, 0x18, 0x5d, 0x71, - 0x9b, 0x60, 0x5e, 0x61, 0x1c, 0x82, 0xc0, 0x27, - 0xdf, 0x60, 0x20, 0x27, 0xfe, 0x54, 0x9e, 0x61, - 0x3c, 0x00, 0x30, 0x2a, 0x00, 0x00, 0x30, 0x27, - 0xfe, 0x54, 0x07, 0x4f, 0x3f, 0x18, 0x20, 0x37, - 0x01, 0x30, 0x05, 0x28, 0x9f, 0x63, 0xe9, 0xd3, - 0x05, 0x48, 0xff, 0x32, 0x01, 0x32, 0x90, 0x62, - 0xf0, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xbe, 0xba, - 0x00, 0x00, 0x30, 0x80, 0x07, 0x00, 0x06, 0x6c, - 0x01, 0x00, 0x01, 0x49, 0x48, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x05, 0x49, - 0x08, 0x5c, 0x3c, 0x00, 0x6c, 0x2a, 0x00, 0x00, - 0x05, 0x49, 0x49, 0x68, 0x40, 0x18, 0xc0, 0x06, - 0xc0, 0x0e, 0x04, 0x49, 0x20, 0x30, 0x48, 0x72, - 0x70, 0x47, 0x00, 0x00, 0xa0, 0x57, 0x01, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x80, 0xb5, 0x15, 0x21, 0x84, 0x20, 0xfe, 0xf7, - 0x07, 0xfc, 0x80, 0xbd, 0xf8, 0xb5, 0x43, 0x48, - 0x84, 0x68, 0x03, 0x34, 0x42, 0x4d, 0x04, 0xe0, - 0x20, 0x1c, 0x10, 0xf0, 0x3c, 0x00, 0xa8, 0x2a, - 0x00, 0x00, 0xb9, 0xf8, 0x00, 0x28, 0x71, 0xd1, - 0x28, 0x69, 0xc0, 0x07, 0xf7, 0xd5, 0x3e, 0x48, - 0x28, 0x60, 0x3e, 0x4a, 0x14, 0x1c, 0x20, 0x34, - 0x20, 0x79, 0x00, 0x90, 0x3c, 0x23, 0x3c, 0x49, - 0x58, 0x43, 0x45, 0x18, 0x28, 0x79, 0xff, 0xf7, - 0xcc, 0xff, 0x28, 0x1c, 0x3a, 0x49, 0x08, 0x30, - 0x48, 0x60, 0x01, 0x26, 0x08, 0x1c, 0x06, 0x60, - 0x68, 0x6a, 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00, - 0xe4, 0x2a, 0x00, 0x00, 0xa9, 0x6a, 0x92, 0x6a, - 0x35, 0x4b, 0x9f, 0x68, 0xd7, 0x1b, 0x1a, 0x68, - 0x51, 0x18, 0x79, 0x18, 0x8a, 0x42, 0x5a, 0x68, - 0x00, 0xd8, 0x00, 0xe0, 0x01, 0x32, 0x06, 0xc0, - 0xe8, 0x6a, 0xfe, 0xf7, 0x87, 0xff, 0x2d, 0x49, - 0xe8, 0x6a, 0x48, 0x60, 0x30, 0x1c, 0x0e, 0x60, - 0x66, 0x79, 0x1f, 0xe0, 0x2b, 0x48, 0x46, 0x61, - 0x04, 0x7f, 0x29, 0x49, 0x20, 0x1c, 0x50, 0x39, - 0x3c, 0x00, 0x20, 0x2b, 0x00, 0x00, 0x89, 0x6a, - 0xfd, 0xf7, 0x5a, 0xfc, 0x00, 0x98, 0x84, 0x42, - 0x10, 0xd0, 0x3c, 0x20, 0x22, 0x49, 0x60, 0x43, - 0x40, 0x18, 0x87, 0x69, 0x00, 0x2f, 0x09, 0xd0, - 0x00, 0x21, 0x20, 0x30, 0x01, 0x70, 0x7e, 0x23, - 0xdb, 0x43, 0x02, 0x21, 0x00, 0x22, 0x20, 0x1c, - 0xfd, 0xf7, 0x4c, 0xfc, 0x01, 0x20, 0xa0, 0x40, - 0x86, 0x43, 0x00, 0x2e, 0xdd, 0xd1, 0xe9, 0x69, - 0x00, 0x29, 0x3c, 0x00, 0x5c, 0x2b, 0x00, 0x00, - 0x03, 0xd0, 0x30, 0x20, 0x40, 0x5d, 0xfd, 0xf7, - 0x3a, 0xfc, 0x16, 0x4c, 0x50, 0x3c, 0x60, 0x6a, - 0x00, 0x28, 0x03, 0xd0, 0x0a, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x96, 0xfb, 0x20, 0x35, 0x28, 0x78, - 0x01, 0x28, 0x03, 0xd0, 0x0b, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x8e, 0xfb, 0x02, 0x20, 0x28, 0x70, - 0xe0, 0x68, 0x01, 0x30, 0x00, 0xe0, 0x07, 0xe0, - 0xe0, 0x60, 0x00, 0x98, 0x3c, 0x00, 0x98, 0x2b, - 0x00, 0x00, 0x20, 0x70, 0x00, 0x98, 0x60, 0x70, - 0x0a, 0x48, 0x00, 0x68, 0x60, 0x63, 0xf8, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x01, 0x00, 0x00, 0x01, 0x30, 0x80, - 0x07, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x54, 0x6c, 0x01, 0x00, 0x00, 0xa0, - 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0x3c, 0x22, - 0x3c, 0x23, 0x4a, 0x43, 0x09, 0x49, 0x3c, 0x00, - 0xd4, 0x2b, 0x00, 0x00, 0xb0, 0xb5, 0x54, 0x18, - 0x58, 0x43, 0x45, 0x18, 0x21, 0x1c, 0x38, 0x22, - 0x28, 0x1c, 0xfd, 0xf7, 0xe5, 0xfc, 0xa0, 0x6b, - 0x00, 0x78, 0xa9, 0x6b, 0x08, 0x70, 0x00, 0x20, - 0x20, 0x34, 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00, - 0x18, 0xdb, 0x01, 0x00, 0x3c, 0x23, 0x07, 0x49, - 0x58, 0x43, 0x10, 0xb5, 0x44, 0x18, 0x20, 0x34, - 0x20, 0x78, 0x02, 0x28, 0x03, 0xd1, 0x0d, 0x21, - 0x3c, 0x00, 0x10, 0x2c, 0x00, 0x00, 0x84, 0x20, - 0xfe, 0xf7, 0x47, 0xfb, 0x00, 0x20, 0x20, 0x70, - 0x10, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xff, 0xb5, - 0x3c, 0x20, 0x48, 0x43, 0x1a, 0x49, 0x81, 0xb0, - 0x44, 0x18, 0x26, 0x1c, 0x20, 0x36, 0x30, 0x78, - 0x15, 0x1c, 0x0f, 0x9f, 0x02, 0x28, 0x03, 0xd1, - 0x04, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x31, 0xfb, - 0x01, 0x20, 0x30, 0x70, 0x25, 0x71, 0x0b, 0x99, - 0x30, 0x22, 0x3c, 0x00, 0x4c, 0x2c, 0x00, 0x00, - 0x61, 0x80, 0x0a, 0x99, 0xe1, 0x62, 0x0d, 0x99, - 0xa1, 0x61, 0x0c, 0x99, 0xe1, 0x61, 0x0e, 0x99, - 0x61, 0x62, 0xa7, 0x62, 0x01, 0x99, 0x11, 0x55, - 0x7e, 0x21, 0xc9, 0x43, 0x61, 0x63, 0x04, 0x99, - 0x00, 0x29, 0x00, 0xd1, 0x00, 0x20, 0x06, 0x1c, - 0x28, 0x1c, 0x08, 0xf0, 0x8b, 0xf8, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0xa1, 0x6b, 0x30, 0x43, 0x3c, 0x00, 0x88, 0x2c, - 0x00, 0x00, 0x08, 0x70, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x80, 0xb5, - 0x14, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x03, 0xfb, - 0x80, 0xbd, 0x01, 0x48, 0x40, 0x78, 0x70, 0x47, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x02, 0x48, - 0x00, 0x69, 0xc0, 0x07, 0xc0, 0x0f, 0x70, 0x47, - 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x01, 0x1c, - 0x3c, 0x23, 0x04, 0x4a, 0x59, 0x43, 0x3c, 0x00, - 0xc4, 0x2c, 0x00, 0x00, 0x89, 0x18, 0x20, 0x31, - 0x09, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x18, 0xdb, 0x01, 0x00, - 0x08, 0x48, 0x40, 0x6a, 0x00, 0x28, 0x0a, 0xd1, - 0x07, 0x4a, 0x00, 0x21, 0x20, 0x23, 0x9b, 0x5c, - 0x02, 0x2b, 0x04, 0xd0, 0x01, 0x31, 0x3c, 0x32, - 0x05, 0x29, 0xf7, 0xd3, 0x70, 0x47, 0x01, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, - 0x3c, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x18, 0xdb, - 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, 0x04, 0x1c, - 0x17, 0x1c, 0xfe, 0xf7, 0x82, 0xfe, 0x20, 0x1c, - 0x11, 0x4c, 0x60, 0x60, 0x01, 0x20, 0x20, 0x60, - 0x10, 0x4d, 0x68, 0x69, 0x01, 0x30, 0x68, 0x61, - 0x68, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21, - 0x84, 0x20, 0xfe, 0xf7, 0xba, 0xfa, 0xa0, 0x68, - 0x40, 0x07, 0x03, 0xd5, 0x06, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x3c, 0x00, 0x3c, 0x2d, 0x00, 0x00, - 0xb3, 0xfa, 0x08, 0x48, 0x00, 0x69, 0x00, 0x28, - 0x03, 0xda, 0xaa, 0x21, 0x84, 0x20, 0xfe, 0xf7, - 0xab, 0xfa, 0x02, 0x20, 0x68, 0x62, 0xae, 0x60, - 0x2f, 0x70, 0xf8, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00, - 0x04, 0x4a, 0x51, 0x80, 0x10, 0x71, 0x03, 0x48, - 0x03, 0x49, 0x08, 0x30, 0x48, 0x60, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x78, 0x2d, - 0x00, 0x00, 0x3c, 0x6c, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x00, 0x21, 0x00, 0x23, 0x05, 0xe0, - 0x02, 0x89, 0x43, 0x60, 0xc0, 0x68, 0x51, 0x18, - 0x09, 0x04, 0x09, 0x0c, 0x00, 0x28, 0xf7, 0xd1, - 0x04, 0x31, 0x08, 0x04, 0x00, 0x0c, 0x70, 0x47, - 0x00, 0x00, 0x02, 0x4a, 0x51, 0x6b, 0x08, 0x43, - 0x50, 0x63, 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c, - 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c, 0x3c, 0x00, - 0xb4, 0x2d, 0x00, 0x00, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79, - 0x5a, 0x70, 0x03, 0x68, 0x40, 0x68, 0x06, 0x4a, - 0x50, 0x65, 0x05, 0x48, 0x13, 0x65, 0x50, 0x30, - 0x81, 0x60, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84, - 0x38, 0xbd, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x98, 0xb5, 0x0d, 0x4c, - 0x20, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab, - 0x3c, 0x00, 0xf0, 0x2d, 0x00, 0x00, 0x19, 0x70, - 0xc0, 0x79, 0x58, 0x70, 0x0a, 0x48, 0x00, 0xf0, - 0xec, 0xf8, 0x09, 0x49, 0x00, 0x20, 0x48, 0x62, - 0xff, 0xf7, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0, - 0x12, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x49, 0xfa, - 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84, 0x98, 0xbd, - 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x03, 0x48, - 0x01, 0x7a, 0x3c, 0x00, 0x2c, 0x2e, 0x00, 0x00, - 0xfe, 0x22, 0x91, 0x43, 0x0a, 0x31, 0x01, 0x72, - 0x70, 0x47, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x90, 0xb5, 0x0e, 0x4c, 0x85, 0xb0, 0xa0, 0x78, - 0x02, 0x28, 0x14, 0xd1, 0x03, 0x20, 0xa0, 0x70, - 0x0b, 0x49, 0x00, 0x20, 0x00, 0x22, 0x04, 0x92, - 0x02, 0x90, 0x03, 0x91, 0xe1, 0x88, 0x01, 0x22, - 0x01, 0x92, 0x00, 0x91, 0x61, 0x78, 0x20, 0x78, - 0x22, 0x69, 0xe3, 0x68, 0x3c, 0x00, 0x68, 0x2e, - 0x00, 0x00, 0x08, 0xf0, 0x94, 0xfd, 0x04, 0x48, - 0x09, 0xf0, 0x7f, 0xf9, 0x05, 0xb0, 0x90, 0xbd, - 0x00, 0x00, 0xb4, 0x79, 0x01, 0x00, 0xad, 0xb6, - 0x00, 0x00, 0x71, 0xb6, 0x00, 0x00, 0xb0, 0xb5, - 0x0c, 0x4d, 0xac, 0x79, 0x0c, 0x49, 0x09, 0x78, - 0x00, 0x29, 0x03, 0xd0, 0x01, 0x29, 0x0e, 0xd0, - 0x02, 0x29, 0x08, 0xd1, 0xc2, 0x88, 0x00, 0x2a, - 0x09, 0xd0, 0x01, 0x23, 0x81, 0x68, 0x3c, 0x00, - 0xa4, 0x2e, 0x00, 0x00, 0x02, 0x20, 0x0f, 0xf0, - 0xc1, 0xf8, 0x03, 0xe0, 0x02, 0x21, 0x86, 0x20, - 0xfe, 0xf7, 0xf8, 0xf9, 0xac, 0x71, 0xb0, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x68, 0x07, 0x49, 0x4a, 0x60, - 0x03, 0x79, 0xca, 0x78, 0xcb, 0x70, 0x00, 0x79, - 0x90, 0x42, 0x06, 0xd0, 0x03, 0x48, 0x14, 0x30, - 0x00, 0x89, 0x07, 0xf0, 0x27, 0xfe, 0x06, 0xf0, - 0x3c, 0x00, 0xe0, 0x2e, 0x00, 0x00, 0xab, 0xfa, - 0x80, 0xbd, 0x84, 0x66, 0x01, 0x00, 0x70, 0xb5, - 0x16, 0x4c, 0x15, 0x4d, 0xa0, 0x78, 0x00, 0x26, - 0x98, 0x3d, 0x01, 0x28, 0x03, 0xd1, 0x28, 0x69, - 0x08, 0xf0, 0xfb, 0xfc, 0xa6, 0x70, 0x60, 0x68, - 0x01, 0x28, 0x03, 0xd0, 0x00, 0x21, 0x28, 0x69, - 0x00, 0xf0, 0xff, 0xfb, 0x0e, 0x48, 0x29, 0x69, - 0x0c, 0xf0, 0x31, 0xfa, 0x01, 0x20, 0x0c, 0xf0, - 0xe4, 0xf8, 0x3c, 0x00, 0x1c, 0x2f, 0x00, 0x00, - 0xe0, 0x78, 0x01, 0x28, 0x02, 0xd0, 0x01, 0x20, - 0x60, 0x70, 0x00, 0xe0, 0x66, 0x70, 0x06, 0x48, - 0x14, 0x30, 0x41, 0x68, 0x01, 0x29, 0x06, 0xd1, - 0x06, 0x60, 0x41, 0x6f, 0x00, 0x29, 0x02, 0xd0, - 0x00, 0x20, 0xfd, 0xf7, 0x4c, 0xfa, 0x70, 0xbd, - 0x84, 0x66, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x30, 0xb5, 0x00, 0x22, 0x00, 0x23, 0x01, 0x25, - 0x2c, 0x1c, 0x94, 0x40, 0x3c, 0x00, 0x58, 0x2f, - 0x00, 0x00, 0x04, 0x40, 0x01, 0xd0, 0xca, 0x54, - 0x01, 0x33, 0x01, 0x32, 0x0e, 0x2a, 0xf6, 0xdb, - 0x18, 0x1c, 0x30, 0xbd, 0x00, 0x00, 0xff, 0xb5, - 0x01, 0x27, 0x00, 0x26, 0x05, 0x1c, 0x02, 0x20, - 0x81, 0xb0, 0x00, 0x90, 0x00, 0x2d, 0x18, 0xd0, - 0x28, 0x78, 0xff, 0x28, 0x15, 0xd0, 0x00, 0x24, - 0x10, 0xe0, 0x28, 0x19, 0x80, 0x78, 0x0a, 0x99, - 0x00, 0x29, 0x01, 0xd0, 0x01, 0x06, 0x3c, 0x00, - 0x94, 0x2f, 0x00, 0x00, 0x08, 0xd5, 0x07, 0xf0, - 0xe9, 0xfe, 0x0e, 0x28, 0x03, 0xd0, 0x01, 0x21, - 0x81, 0x40, 0x0e, 0x43, 0x00, 0xe0, 0x00, 0x27, - 0x01, 0x34, 0x68, 0x78, 0xa0, 0x42, 0xeb, 0xdc, - 0x00, 0x98, 0x02, 0x9d, 0x01, 0x38, 0x00, 0x90, - 0xdf, 0xd1, 0x03, 0x98, 0x31, 0x1c, 0x81, 0x43, - 0x02, 0xd0, 0x03, 0x98, 0x06, 0x40, 0x00, 0x27, - 0x04, 0x98, 0x06, 0x60, 0x05, 0xb0, 0x38, 0x1c, - 0x3c, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0xf0, 0xbd, - 0x00, 0x00, 0x02, 0x21, 0x01, 0x60, 0x64, 0x21, - 0x01, 0xe0, 0x01, 0x39, 0x02, 0xd0, 0x02, 0x68, - 0x92, 0x07, 0xfa, 0xd4, 0x01, 0x20, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x10, 0xb5, - 0x00, 0x20, 0xc4, 0x43, 0x05, 0x4b, 0x02, 0x22, - 0x01, 0x01, 0x5a, 0x50, 0xc9, 0x18, 0x8c, 0x60, - 0x01, 0x30, 0x08, 0x28, 0xf8, 0xdb, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x30, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0xf0, 0xb5, 0x05, 0x1c, - 0x60, 0x35, 0xc7, 0x6a, 0x04, 0x1c, 0x28, 0x7b, - 0x00, 0x2f, 0x8b, 0xb0, 0x15, 0xd0, 0x08, 0x28, - 0x15, 0xd2, 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07, - 0x09, 0x09, 0x0c, 0x0c, 0x01, 0x26, 0x00, 0x21, - 0x09, 0xe0, 0x00, 0x26, 0x06, 0xe0, 0x02, 0x26, - 0x02, 0x21, 0x04, 0xe0, 0x3c, 0x00, 0x48, 0x30, - 0x00, 0x00, 0x03, 0x26, 0x03, 0x21, 0x01, 0xe0, - 0x04, 0x26, 0x01, 0x21, 0x8c, 0x22, 0x12, 0x59, - 0x07, 0x91, 0x26, 0x49, 0x06, 0x90, 0x04, 0x91, - 0x00, 0x20, 0x03, 0x90, 0x05, 0x97, 0x08, 0x92, - 0xe0, 0x69, 0x22, 0x69, 0x21, 0x1c, 0x70, 0x31, - 0x01, 0x91, 0x21, 0x49, 0x00, 0x90, 0x70, 0x00, - 0x40, 0x18, 0x60, 0x30, 0x02, 0x92, 0x03, 0x88, - 0x59, 0x1c, 0x01, 0x80, 0x1e, 0x48, 0x3c, 0x00, - 0x84, 0x30, 0x00, 0x00, 0x02, 0x88, 0xa1, 0x68, - 0x0a, 0xa8, 0x09, 0xf0, 0xe1, 0xff, 0x60, 0x60, - 0xe8, 0x7a, 0xa1, 0x6a, 0xc9, 0x07, 0x00, 0x07, - 0x00, 0x0e, 0xc9, 0x0d, 0x08, 0x43, 0x61, 0x6a, - 0x22, 0x69, 0xc9, 0x07, 0x89, 0x0d, 0x01, 0x43, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x80, 0x03, 0x08, 0x43, 0x21, 0x6a, 0xc9, 0x03, - 0x08, 0x43, 0x08, 0x21, 0x08, 0x43, 0x0a, 0x99, - 0x3c, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x08, 0x80, - 0x20, 0x1c, 0xfe, 0xf7, 0x98, 0xfe, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0, - 0x82, 0xf9, 0x0b, 0xb0, 0xf0, 0xbd, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0x0f, 0xf9, - 0x20, 0x69, 0x06, 0x49, 0x80, 0x79, 0x80, 0x00, - 0x09, 0x58, 0x20, 0x1c, 0xfd, 0xf7, 0x74, 0xf9, - 0xef, 0xe7, 0x79, 0x2f, 0x01, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x30, 0x00, 0x00, - 0x08, 0x61, 0x01, 0x00, 0x74, 0x57, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x58, 0x30, 0x8a, 0xb0, - 0x0e, 0xf0, 0x7c, 0xfe, 0x22, 0x1c, 0x80, 0x32, - 0x51, 0x68, 0x00, 0x29, 0x01, 0xd0, 0x11, 0x7a, - 0x07, 0xe0, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x69, - 0x80, 0x07, 0x01, 0xd5, 0x03, 0x21, 0x00, 0xe0, - 0x01, 0x21, 0xd2, 0x68, 0x07, 0x91, 0x22, 0x49, - 0x00, 0x20, 0x08, 0x92, 0x3c, 0x00, 0x38, 0x31, - 0x00, 0x00, 0x04, 0x91, 0x00, 0x22, 0x05, 0x92, - 0x06, 0x90, 0x03, 0x90, 0xe0, 0x69, 0x22, 0x69, - 0x00, 0x90, 0x21, 0x1c, 0x70, 0x31, 0x1c, 0x48, - 0x01, 0x91, 0x02, 0x92, 0x03, 0x89, 0x59, 0x1c, - 0x01, 0x81, 0x1a, 0x48, 0x02, 0x88, 0xa1, 0x68, - 0x09, 0xa8, 0x09, 0xf0, 0x76, 0xff, 0x60, 0x60, - 0x6b, 0x20, 0x00, 0x5d, 0xa1, 0x6a, 0x22, 0x69, - 0xc9, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x3c, 0x00, - 0x74, 0x31, 0x00, 0x00, 0xc9, 0x0d, 0x01, 0x43, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x80, 0x03, 0x08, 0x43, 0x09, 0x99, 0x08, 0x80, - 0x20, 0x1c, 0xfe, 0xf7, 0x35, 0xfe, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0, - 0x1f, 0xf9, 0x0a, 0xb0, 0x10, 0xbd, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0xac, 0xf8, - 0x20, 0x69, 0x07, 0x49, 0x80, 0x79, 0x80, 0x00, - 0x3c, 0x00, 0xb0, 0x31, 0x00, 0x00, 0x09, 0x58, - 0x20, 0x1c, 0xfd, 0xf7, 0x11, 0xf9, 0xef, 0xe7, - 0x00, 0x00, 0xbd, 0x2f, 0x01, 0x00, 0x24, 0x6a, - 0x01, 0x00, 0x08, 0x61, 0x01, 0x00, 0x74, 0x57, - 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x1c, 0x00, 0x69, - 0x04, 0x21, 0x07, 0xf0, 0xd2, 0xfa, 0x00, 0x28, - 0x09, 0xd0, 0x42, 0x78, 0x02, 0x32, 0x01, 0x1c, - 0x68, 0x46, 0xfd, 0xf7, 0x88, 0xf9, 0xe8, 0x6a, - 0x6c, 0x46, 0x3c, 0x00, 0xec, 0x31, 0x00, 0x00, - 0x02, 0x90, 0x00, 0xe0, 0x00, 0x24, 0x28, 0x1c, - 0x14, 0x30, 0x02, 0xf0, 0x03, 0xfb, 0x00, 0x28, - 0x04, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0x05, 0xf0, - 0xa5, 0xfe, 0x3e, 0xbd, 0x00, 0x2c, 0xfc, 0xd0, - 0x02, 0x49, 0x20, 0x1c, 0x49, 0x69, 0xfd, 0xf7, - 0xe2, 0xf8, 0xf6, 0xe7, 0x44, 0x7d, 0x01, 0x00, - 0x70, 0xb5, 0x1e, 0x1c, 0x18, 0x23, 0x58, 0x43, - 0x06, 0x4b, 0x04, 0x9d, 0x3c, 0x00, 0x28, 0x32, - 0x00, 0x00, 0x19, 0x50, 0xc4, 0x18, 0x00, 0x20, - 0x60, 0x61, 0x62, 0x60, 0xa6, 0x60, 0xe5, 0x60, - 0x0f, 0xf0, 0xb9, 0xfd, 0x20, 0x61, 0x70, 0xbd, - 0x00, 0x00, 0xb8, 0x7d, 0x01, 0x00, 0x02, 0x4a, - 0x01, 0x1c, 0x90, 0x69, 0x91, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x6b, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x04, 0x49, 0x04, 0x4b, 0x3c, 0x00, - 0x64, 0x32, 0x00, 0x00, 0xca, 0x68, 0x09, 0x69, - 0x5c, 0x3b, 0x5b, 0x68, 0xc9, 0x1a, 0x41, 0x43, - 0x50, 0x18, 0x70, 0x47, 0xa0, 0x7d, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x78, 0x70, 0x47, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0x01, 0x49, 0xfd, 0xf7, 0x35, 0xf9, 0x80, 0xbd, - 0xfe, 0x67, 0x01, 0x00, 0xf0, 0xb5, 0x89, 0xb0, - 0x00, 0x93, 0x16, 0x4f, 0x13, 0x1c, 0x0e, 0x1c, - 0x3c, 0x00, 0xa0, 0x32, 0x00, 0x00, 0x04, 0x1c, - 0x3a, 0x1c, 0x01, 0xf0, 0x62, 0xff, 0x01, 0xa9, - 0x06, 0xa8, 0xa2, 0x68, 0x02, 0xf0, 0x0b, 0xf9, - 0x01, 0xaa, 0x06, 0xa9, 0x38, 0x1c, 0x63, 0x6a, - 0x02, 0xf0, 0x81, 0xfc, 0x05, 0x1c, 0x01, 0x28, - 0x14, 0xd1, 0x0c, 0x48, 0xfc, 0x21, 0xc8, 0x51, - 0x38, 0x1c, 0x02, 0xf0, 0x0c, 0xf8, 0x03, 0x21, - 0x30, 0x1c, 0x07, 0xf0, 0x52, 0xfa, 0x00, 0x28, - 0x07, 0xd0, 0x3c, 0x00, 0xdc, 0x32, 0x00, 0x00, - 0x80, 0x78, 0x00, 0xf0, 0x33, 0xfc, 0x20, 0x1c, - 0x10, 0x30, 0x0e, 0xf0, 0x47, 0xfd, 0x00, 0xe0, - 0x00, 0x25, 0x28, 0x1c, 0x09, 0xb0, 0xf0, 0xbd, - 0xf4, 0x67, 0x01, 0x00, 0xc1, 0x38, 0x00, 0x00, - 0x10, 0xb5, 0x07, 0x4c, 0x06, 0x48, 0x06, 0x22, - 0x21, 0x1d, 0x08, 0x38, 0xfd, 0xf7, 0xf6, 0xf8, - 0x01, 0xf0, 0xfc, 0xff, 0x00, 0xf0, 0x42, 0xfc, - 0x20, 0x1c, 0x02, 0xf0, 0x3c, 0x00, 0x18, 0x33, - 0x00, 0x00, 0x27, 0xfc, 0x10, 0xbd, 0xf4, 0x67, - 0x01, 0x00, 0x08, 0x49, 0xc9, 0x68, 0x00, 0x29, - 0x0a, 0xd0, 0x06, 0x4a, 0x01, 0x32, 0x51, 0x78, - 0x12, 0x78, 0x48, 0x43, 0x00, 0x2a, 0x01, 0xd1, - 0x08, 0x18, 0x70, 0x47, 0x10, 0x18, 0x70, 0x47, - 0x01, 0x30, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28, - 0x5a, 0x69, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0x54, 0x33, 0x00, 0x00, 0x10, 0x1c, 0x59, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0xb9, 0x75, 0x00, 0x00, 0x07, 0x49, 0x00, 0x20, - 0x0a, 0x78, 0x02, 0x2a, 0x09, 0xd1, 0x0a, 0x7c, - 0x00, 0x2a, 0x05, 0xd1, 0xca, 0x68, 0x00, 0x2a, - 0x03, 0xd0, 0x49, 0x69, 0x00, 0x29, 0x00, 0xd0, - 0x01, 0x20, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00, - 0x0c, 0x4a, 0x80, 0xb5, 0x01, 0x21, 0x51, 0x60, - 0x3c, 0x00, 0x90, 0x33, 0x00, 0x00, 0x09, 0xf0, - 0x6a, 0xf8, 0x09, 0x48, 0x1c, 0x30, 0x81, 0x69, - 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23, 0x83, 0x61, - 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0xf0, - 0xd2, 0xf8, 0x80, 0xbd, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x48, 0x00, 0xf0, 0x5c, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35, - 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28, - 0x16, 0xd1, 0x3c, 0x00, 0xcc, 0x33, 0x00, 0x00, - 0x0e, 0x4d, 0x02, 0x2c, 0x09, 0xd1, 0x00, 0xf0, - 0x2b, 0xfa, 0x00, 0x28, 0x0e, 0xd0, 0x68, 0x69, - 0x00, 0x28, 0x0b, 0xd1, 0x21, 0x1c, 0x13, 0x20, - 0x0c, 0xe0, 0x03, 0x2c, 0xfa, 0xd1, 0x00, 0xf0, - 0xf9, 0xf9, 0x00, 0x28, 0x02, 0xd0, 0x28, 0x7c, - 0x00, 0x28, 0xf3, 0xd0, 0xb0, 0xbd, 0x21, 0x1c, - 0x00, 0x06, 0x00, 0x0e, 0x04, 0xf0, 0x62, 0xfc, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x34, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x0c, 0x4c, 0x00, 0x25, 0x25, 0x74, 0x65, 0x61, - 0xe5, 0x60, 0x00, 0xf0, 0x3c, 0xfa, 0x00, 0xf0, - 0x34, 0xfa, 0x07, 0x48, 0x1c, 0x38, 0x05, 0x61, - 0x09, 0xf0, 0x33, 0xff, 0x20, 0x78, 0x00, 0x28, - 0x02, 0xd1, 0x04, 0xf0, 0x6e, 0xfa, 0xb0, 0xbd, - 0x02, 0x28, 0xfc, 0xd1, 0x04, 0xf0, 0xa5, 0xfb, - 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x34, 0x00, 0x00, 0x0c, 0x48, 0x80, 0xb5, - 0x01, 0x78, 0x00, 0x29, 0x12, 0xd0, 0xc0, 0x68, - 0x00, 0x28, 0x0f, 0xd1, 0x08, 0x48, 0x1c, 0x38, - 0x40, 0x69, 0x00, 0x28, 0x0a, 0xd1, 0x07, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x00, 0x22, - 0x07, 0x21, 0x10, 0x20, 0x10, 0xf0, 0xa0, 0xf9, - 0x02, 0xf0, 0x2c, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0xd4, 0x67, 0x01, 0x00, - 0x3c, 0x00, 0x80, 0x34, 0x00, 0x00, 0xf8, 0xb5, - 0x1d, 0x4e, 0x1c, 0x4d, 0x04, 0x1c, 0xf0, 0x68, - 0x02, 0x27, 0x1c, 0x3d, 0x00, 0x28, 0x07, 0xd0, - 0xe8, 0x68, 0x00, 0x28, 0x04, 0xd0, 0xfd, 0xf7, - 0xc2, 0xfe, 0x00, 0x28, 0x00, 0xd0, 0xbc, 0x43, - 0x00, 0x2c, 0x14, 0xd0, 0x37, 0x70, 0xf0, 0x68, - 0x14, 0x4f, 0x00, 0x28, 0x10, 0xd0, 0xe0, 0x07, - 0x17, 0xd4, 0xfd, 0xf7, 0xb4, 0xfe, 0x00, 0x28, - 0x13, 0xd0, 0x3c, 0x00, 0xbc, 0x34, 0x00, 0x00, - 0x70, 0x69, 0x00, 0x28, 0x06, 0xd1, 0xe8, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7, 0x1a, 0xff, - 0x0d, 0xf0, 0x0a, 0xfa, 0xf8, 0xbd, 0x68, 0x69, - 0x00, 0x28, 0x05, 0xd1, 0x09, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x2c, 0x04, 0xd1, - 0x39, 0x1c, 0x20, 0x1c, 0x0e, 0xf0, 0x52, 0xfd, - 0xf0, 0xe7, 0x04, 0xf0, 0x1d, 0xfb, 0x02, 0xf0, - 0xeb, 0xfb, 0xeb, 0xe7, 0x3c, 0x00, 0xf8, 0x34, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x50, 0xc3, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x05, 0x48, - 0x41, 0x69, 0x00, 0x29, 0x04, 0xd0, 0x40, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x49, - 0x00, 0x20, 0x48, 0x60, 0x08, 0x60, 0x88, 0x60, - 0x08, 0xf0, 0x9b, 0xff, 0x07, 0x21, 0x3c, 0x00, - 0x34, 0x35, 0x00, 0x00, 0x12, 0x20, 0x22, 0x79, - 0x10, 0xf0, 0x3a, 0xf9, 0x10, 0xbd, 0x00, 0x00, - 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0xe8, 0x67, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x1c, 0x0e, 0x1c, 0x08, 0xf0, - 0xa3, 0xfa, 0x13, 0x4d, 0x04, 0x1c, 0x68, 0x68, - 0x00, 0x28, 0x17, 0xd0, 0x00, 0x2f, 0x02, 0xd0, - 0xa8, 0x68, 0x03, 0x28, 0x13, 0xd3, 0x00, 0x20, - 0x3c, 0x00, 0x70, 0x35, 0x00, 0x00, 0xa8, 0x60, - 0x68, 0x60, 0x21, 0x1c, 0x0f, 0x20, 0x0e, 0xf0, - 0xf0, 0xfe, 0x28, 0x68, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x2c, 0x06, 0xd1, 0x01, 0x20, 0x02, 0xe0, - 0x01, 0x2c, 0x02, 0xd1, 0x00, 0x20, 0xff, 0xf7, - 0xfa, 0xfe, 0xf8, 0xbd, 0x72, 0x1c, 0x00, 0x21, - 0x04, 0x48, 0x00, 0xf0, 0x68, 0xf8, 0xa8, 0x68, - 0x01, 0x30, 0xa8, 0x60, 0xf5, 0xe7, 0x5c, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xac, 0x35, 0x00, 0x00, - 0x51, 0x35, 0x00, 0x00, 0x0a, 0x49, 0x80, 0xb5, - 0xca, 0x68, 0x00, 0x2a, 0x0b, 0xd0, 0x42, 0x68, - 0x00, 0x2a, 0x09, 0xd0, 0x00, 0x22, 0x4a, 0x62, - 0x02, 0x68, 0x0a, 0x62, 0x02, 0x68, 0x07, 0x21, - 0x17, 0x20, 0x10, 0xf0, 0xef, 0xf8, 0x80, 0xbd, - 0x01, 0x20, 0x48, 0x62, 0x80, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x70, 0xb5, 0x14, 0x4d, - 0x84, 0x6c, 0xe9, 0x68, 0x3c, 0x00, 0xe8, 0x35, - 0x00, 0x00, 0x00, 0x29, 0x17, 0xd0, 0x40, 0x30, - 0xec, 0x61, 0x40, 0x78, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x68, 0x62, 0x28, 0x6a, 0x0e, 0x4e, - 0x00, 0x1b, 0xb0, 0x42, 0x0c, 0xd2, 0x08, 0xf0, - 0x3a, 0xfe, 0x29, 0x6a, 0x40, 0x1a, 0xb0, 0x42, - 0x03, 0xd2, 0x02, 0x22, 0x07, 0x21, 0x13, 0x20, - 0x09, 0xe0, 0x04, 0xf0, 0xb6, 0xfa, 0x70, 0xbd, - 0x07, 0x48, 0xa9, 0x68, 0x0b, 0xf0, 0x3c, 0x00, - 0x24, 0x36, 0x00, 0x00, 0xbd, 0xfe, 0x22, 0x1c, - 0x07, 0x21, 0x16, 0x20, 0x10, 0xf0, 0xc0, 0xf8, - 0x70, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x0a, 0x49, 0x80, 0xb5, 0x00, 0x20, 0x88, 0x61, - 0x08, 0x69, 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48, - 0x1c, 0x30, 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0, - 0x01, 0xf0, 0xd2, 0xff, 0x02, 0x28, 0x03, 0xd1, - 0x3c, 0x00, 0x60, 0x36, 0x00, 0x00, 0x00, 0xf0, - 0x12, 0xf9, 0x00, 0xf0, 0xbc, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0xf0, 0xb5, - 0x06, 0x1c, 0x0c, 0x1c, 0x15, 0x1c, 0x91, 0xb0, - 0x01, 0xa8, 0x40, 0x21, 0xfc, 0xf7, 0x0d, 0xff, - 0x00, 0x21, 0x68, 0x46, 0xfd, 0xf7, 0xa7, 0xff, - 0x04, 0x90, 0x01, 0xa8, 0x06, 0x22, 0x08, 0x49, - 0xfc, 0xf7, 0x31, 0xff, 0x06, 0x22, 0x02, 0xa8, - 0x02, 0x30, 0x3c, 0x00, 0x9c, 0x36, 0x00, 0x00, - 0x06, 0x49, 0xfc, 0xf7, 0x2b, 0xff, 0x00, 0xab, - 0xdc, 0x76, 0x0c, 0x95, 0x31, 0x1c, 0x01, 0xa8, - 0x07, 0xf0, 0x4e, 0xf8, 0x11, 0xb0, 0xf0, 0xbd, - 0x12, 0x61, 0x01, 0x00, 0xf8, 0x67, 0x01, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b, - 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, - 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0x12, 0xff, - 0x16, 0xe0, 0x04, 0x22, 0x3c, 0x00, 0xd8, 0x36, - 0x00, 0x00, 0x01, 0x1c, 0x18, 0x1c, 0xfc, 0xf7, - 0x0c, 0xff, 0x09, 0x48, 0x10, 0x38, 0x00, 0x69, - 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48, 0x0c, 0x30, - 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0, 0x01, 0xf0, - 0x84, 0xff, 0x02, 0x28, 0x03, 0xd1, 0x00, 0xf0, - 0xc4, 0xf8, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20, - 0x80, 0xbd, 0x6c, 0x69, 0x01, 0x00, 0xf8, 0xb5, - 0x04, 0x1c, 0x0f, 0x1c, 0x00, 0x25, 0x3c, 0x00, - 0x14, 0x37, 0x00, 0x00, 0x00, 0x26, 0x01, 0xf0, - 0x73, 0xff, 0x02, 0x28, 0x2f, 0xd1, 0x19, 0x49, - 0x01, 0x2f, 0x08, 0x68, 0x07, 0xd1, 0x02, 0x1c, - 0x22, 0x40, 0x0a, 0xd1, 0x20, 0x43, 0x08, 0x60, - 0xa0, 0x42, 0x06, 0xd1, 0x04, 0xe0, 0x00, 0x28, - 0x03, 0xd0, 0xa0, 0x43, 0x08, 0x60, 0x00, 0xd1, - 0x01, 0x25, 0x48, 0x68, 0x00, 0x28, 0x1a, 0xd1, - 0x00, 0x2d, 0x17, 0xd0, 0x01, 0x20, 0x48, 0x60, - 0x3c, 0x00, 0x50, 0x37, 0x00, 0x00, 0x38, 0x1c, - 0x08, 0xf0, 0x89, 0xfe, 0x0b, 0x48, 0x1c, 0x30, - 0x81, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23, - 0x83, 0x61, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, - 0xff, 0xf7, 0xf1, 0xfe, 0x06, 0xe0, 0x00, 0x22, - 0x00, 0x21, 0x04, 0x48, 0xff, 0xf7, 0x7b, 0xff, - 0x00, 0xe0, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x37, 0x00, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x12, 0x4b, - 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, - 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0xaa, 0xfe, - 0x18, 0xe0, 0x04, 0x22, 0x01, 0x1c, 0x18, 0x1c, - 0xfc, 0xf7, 0xa4, 0xfe, 0x0a, 0x48, 0x10, 0x30, - 0xc1, 0x68, 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x78, - 0x00, 0x28, 0x0b, 0xd0, 0x01, 0xf0, 0x1e, 0xff, - 0x02, 0x28, 0x07, 0xd1, 0x3c, 0x00, 0xc8, 0x37, - 0x00, 0x00, 0x00, 0xf0, 0x64, 0xf8, 0x00, 0xf0, - 0x2e, 0xf8, 0x00, 0x28, 0x01, 0xd1, 0x09, 0xf0, - 0x7a, 0xfd, 0x01, 0x20, 0x80, 0xbd, 0x68, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x20, 0x69, - 0x00, 0x28, 0x09, 0xd0, 0xa1, 0x69, 0x00, 0x29, - 0x06, 0xd1, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43, - 0x03, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xe1, 0xfe, - 0x21, 0x69, 0x01, 0x20, 0x00, 0x29, 0x3c, 0x00, - 0x04, 0x38, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x28, 0x03, 0xd0, - 0xfd, 0xf7, 0x9a, 0xfc, 0xe0, 0x60, 0x10, 0xbd, - 0x01, 0x20, 0x00, 0x21, 0xe1, 0x60, 0x10, 0xbd, - 0x78, 0x69, 0x01, 0x00, 0x0a, 0x48, 0x0a, 0x49, - 0x10, 0xb5, 0xc0, 0x68, 0x1c, 0x39, 0xc9, 0x68, - 0x00, 0x28, 0x03, 0xd0, 0x00, 0x29, 0x01, 0xd0, - 0x3c, 0x00, 0x40, 0x38, 0x00, 0x00, 0x01, 0x24, - 0x00, 0xe0, 0x00, 0x24, 0x00, 0x2c, 0x03, 0xd0, - 0x02, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xb7, 0xfe, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x00, 0x20, - 0x21, 0x69, 0x00, 0x29, 0x0c, 0xd0, 0x06, 0x49, - 0x1c, 0x31, 0x09, 0x78, 0x00, 0x29, 0x07, 0xd0, - 0x00, 0xf0, 0x09, 0xf8, 0x01, 0x20, 0xa0, 0x61, - 0x20, 0x69, 0x3c, 0x00, 0x7c, 0x38, 0x00, 0x00, - 0x7d, 0x23, 0xdb, 0x00, 0x58, 0x43, 0x10, 0xbd, - 0x5c, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x21, - 0x07, 0x20, 0x0f, 0xf0, 0xd1, 0xfe, 0x80, 0xbd, - 0x80, 0xb5, 0x02, 0x21, 0x07, 0x20, 0x0f, 0xf0, - 0xcb, 0xfe, 0x80, 0xbd, 0x06, 0x48, 0x80, 0xb5, - 0x00, 0x78, 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7, - 0x29, 0xfd, 0x00, 0x22, 0x07, 0x21, 0x11, 0x20, - 0x0f, 0xf0, 0x7c, 0xff, 0x3c, 0x00, 0xb8, 0x38, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x10, 0x1c, - 0x06, 0x4a, 0x51, 0x61, 0x00, 0xf0, 0xa3, 0xf8, - 0x10, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x11, 0x20, - 0x00, 0x22, 0x07, 0x21, 0x0f, 0xf0, 0x69, 0xff, - 0x10, 0xbd, 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49, - 0x48, 0x62, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x3c, 0x00, - 0xf4, 0x38, 0x00, 0x00, 0xe0, 0x69, 0x00, 0x28, - 0x0c, 0xd1, 0xe0, 0x62, 0x01, 0x20, 0xe0, 0x61, - 0x0b, 0xf0, 0x08, 0xfd, 0x0b, 0xf0, 0x74, 0xfe, - 0x01, 0x20, 0x00, 0xf0, 0xb5, 0xf8, 0x0f, 0xf0, - 0x4d, 0xfa, 0x60, 0x63, 0x10, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0xc8, 0x61, 0x88, 0x63, 0x00, 0xf0, - 0x89, 0xf8, 0x00, 0xf0, 0x01, 0xf9, 0x02, 0xf0, - 0x3c, 0x00, 0x30, 0x39, 0x00, 0x00, 0x91, 0xfb, - 0x80, 0xbd, 0x44, 0x7d, 0x01, 0x00, 0x10, 0xb5, - 0x01, 0x28, 0x38, 0xd1, 0x08, 0x06, 0x00, 0x0e, - 0x05, 0x28, 0x32, 0xd1, 0x1d, 0x4c, 0x20, 0x78, - 0x01, 0x28, 0x09, 0xd0, 0x02, 0x28, 0x1b, 0xd0, - 0x03, 0x28, 0x2a, 0xd1, 0x02, 0xf0, 0x7d, 0xfb, - 0x00, 0xf0, 0x6f, 0xf8, 0x01, 0x20, 0x10, 0xe0, - 0x17, 0x48, 0x21, 0x6b, 0x0b, 0xf0, 0x1b, 0xfd, - 0x0b, 0xf0, 0x3c, 0x00, 0x6c, 0x39, 0x00, 0x00, - 0x41, 0xfe, 0x15, 0x48, 0x00, 0x69, 0x03, 0x28, - 0x01, 0xd3, 0xc0, 0x07, 0x03, 0xd5, 0x01, 0x21, - 0x20, 0x6b, 0x07, 0xf0, 0x19, 0xff, 0x02, 0x20, - 0x00, 0xf0, 0x78, 0xf8, 0x10, 0xbd, 0x0f, 0x48, - 0x00, 0x68, 0x20, 0x64, 0x0a, 0x48, 0x5c, 0x30, - 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60, - 0x03, 0xf0, 0xcc, 0xfc, 0x03, 0x20, 0x00, 0xf0, - 0x69, 0xf8, 0x01, 0x20, 0x3c, 0x00, 0xa8, 0x39, - 0x00, 0x00, 0xe0, 0x62, 0x10, 0xbd, 0x09, 0x21, - 0x00, 0xe0, 0x08, 0x21, 0x09, 0x20, 0xfd, 0xf7, - 0x76, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0xf4, 0x68, - 0x01, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5, - 0x0f, 0x4c, 0x20, 0x78, 0x65, 0x1e, 0x01, 0x28, - 0x0f, 0xd1, 0x00, 0x20, 0xff, 0xf7, 0xa1, 0xfc, - 0x0c, 0x49, 0x09, 0x88, 0x49, 0x08, 0x3c, 0x00, - 0xe4, 0x39, 0x00, 0x00, 0x40, 0x1a, 0x0f, 0xf0, - 0x19, 0xf9, 0x00, 0x28, 0x04, 0xd0, 0x28, 0x78, - 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x05, 0xd0, - 0x20, 0x78, 0x00, 0x28, 0x04, 0xd1, 0x28, 0x78, - 0x03, 0x28, 0x01, 0xd1, 0x01, 0x20, 0xb0, 0xbd, - 0x00, 0x20, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x01, 0x49, 0xc8, 0x64, - 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x3c, 0x00, 0x20, 0x3a, 0x00, 0x00, 0x04, 0x49, - 0x05, 0x4a, 0x89, 0x68, 0x12, 0x6d, 0x01, 0x20, - 0x91, 0x42, 0x00, 0xd3, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x6b, - 0x07, 0xf0, 0xf9, 0xfe, 0xa0, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0x03, 0x48, 0x21, 0x6b, 0x0b, 0xf0, - 0x92, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x3a, 0x00, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x04, 0x48, 0x00, 0x78, - 0x02, 0x28, 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x44, 0x7d, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, - 0xff, 0xf7, 0xd0, 0xff, 0x06, 0x1c, 0x01, 0x2f, - 0x26, 0x4d, 0x1f, 0xd0, 0x02, 0x2f, 0x45, 0xd0, - 0x03, 0x2f, 0x12, 0xd1, 0x24, 0x48, 0x25, 0x4b, - 0x00, 0x69, 0x6a, 0x69, 0x3c, 0x00, 0x98, 0x3a, - 0x00, 0x00, 0x41, 0x08, 0x5a, 0x43, 0x23, 0x4b, - 0xd4, 0x18, 0x8c, 0x42, 0x00, 0xd9, 0x0c, 0x1c, - 0x00, 0x2e, 0x05, 0xd0, 0x1e, 0x49, 0x5b, 0x39, - 0x09, 0x78, 0x00, 0x29, 0x00, 0xd1, 0x04, 0x1c, - 0x05, 0x22, 0x21, 0x1c, 0x09, 0x20, 0x0f, 0xf0, - 0x80, 0xfd, 0x18, 0x4a, 0x5c, 0x3a, 0x17, 0x70, - 0xf8, 0xbd, 0xff, 0xf7, 0xd6, 0xfb, 0x00, 0x28, - 0x02, 0xd0, 0x28, 0x69, 0x00, 0x28, 0x3c, 0x00, - 0xd4, 0x3a, 0x00, 0x00, 0x0e, 0xd0, 0x04, 0xf0, - 0xcf, 0xfb, 0x13, 0x4b, 0x69, 0x69, 0x11, 0x4a, - 0x59, 0x43, 0x5c, 0x3a, 0xd2, 0x6b, 0x89, 0x18, - 0x88, 0x42, 0x01, 0xd9, 0x44, 0x1a, 0x04, 0xe0, - 0x00, 0x24, 0x02, 0xe0, 0x04, 0xf0, 0xae, 0xfd, - 0x04, 0x1c, 0x00, 0x2e, 0xdb, 0xd0, 0x09, 0x48, - 0x5b, 0x38, 0x00, 0x78, 0x01, 0x28, 0xd6, 0xd1, - 0x08, 0x4b, 0x9c, 0x42, 0x02, 0xd9, 0x58, 0x42, - 0x3c, 0x00, 0x10, 0x3b, 0x00, 0x00, 0x24, 0x18, - 0xd0, 0xe7, 0x00, 0x24, 0xce, 0xe7, 0x04, 0xf0, - 0xae, 0xfb, 0xca, 0xe7, 0x00, 0x00, 0xf4, 0x68, - 0x01, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0x98, 0x3a, - 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, 0x80, 0xb5, - 0x05, 0x21, 0x09, 0x20, 0x0f, 0xf0, 0x7d, 0xfd, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x70, 0x80, 0xbd, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x70, 0xb5, - 0x06, 0x1c, 0x3c, 0x00, 0x4c, 0x3b, 0x00, 0x00, - 0x0d, 0xf0, 0xbc, 0xfa, 0xff, 0xf7, 0xce, 0xfe, - 0x09, 0x4c, 0x0a, 0x48, 0x21, 0x6b, 0x0b, 0xf0, - 0x21, 0xfc, 0x01, 0x25, 0x01, 0x21, 0x30, 0x06, - 0x00, 0x0e, 0xa5, 0x63, 0x07, 0xf0, 0x3a, 0xfe, - 0x05, 0x48, 0x29, 0x02, 0x09, 0x58, 0x00, 0x29, - 0x00, 0xd1, 0x05, 0x61, 0x70, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3b, - 0x00, 0x00, 0x02, 0x4a, 0x11, 0x6c, 0x08, 0x43, - 0x10, 0x64, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xbf, 0xfe, - 0x0b, 0xf0, 0xa1, 0xfb, 0x80, 0xbd, 0x02, 0x4a, - 0x01, 0x1c, 0x10, 0x69, 0x11, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0xf3, 0xb5, - 0x06, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0xf8, 0x4c, - 0x08, 0x90, 0xe2, 0x69, 0x08, 0x25, 0x3c, 0x00, - 0xc4, 0x3b, 0x00, 0x00, 0x00, 0x2a, 0x03, 0xd0, - 0x06, 0xa9, 0x07, 0xa8, 0xfc, 0xf7, 0x06, 0xfc, - 0x30, 0x1c, 0xf3, 0x4e, 0x00, 0x27, 0x20, 0x36, - 0x82, 0x28, 0x6f, 0xd0, 0x15, 0xdc, 0x01, 0x28, - 0x18, 0xd0, 0x80, 0x28, 0x6b, 0xd1, 0xee, 0x4d, - 0x80, 0x3d, 0xa8, 0x68, 0x01, 0x28, 0x67, 0xd1, - 0x68, 0x68, 0x0f, 0xf0, 0x1b, 0xf8, 0x00, 0x28, - 0x63, 0xd1, 0x01, 0x21, 0x01, 0x20, 0x0d, 0xf0, - 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x9d, 0xf8, - 0x08, 0xf0, 0xdb, 0xfd, 0x0b, 0xb0, 0xf0, 0xbd, - 0x83, 0x28, 0x6d, 0xd0, 0x84, 0x28, 0x55, 0xd1, - 0xe7, 0xe0, 0x0a, 0x98, 0x0a, 0x28, 0x04, 0xd2, - 0x03, 0xa3, 0x1b, 0x18, 0x1b, 0x5a, 0x5b, 0x00, - 0x9f, 0x44, 0xf6, 0xe0, 0x00, 0x00, 0xee, 0x00, - 0x0b, 0x00, 0xf7, 0x00, 0xf7, 0x00, 0xf7, 0x00, - 0xf7, 0x00, 0x2f, 0x00, 0x88, 0x00, 0x8b, 0x00, - 0xad, 0x00, 0x3c, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x00, 0xf0, 0x56, 0xfe, 0x00, 0x28, 0x17, 0xd0, - 0xd6, 0x4a, 0x80, 0x3a, 0xd1, 0x6a, 0x06, 0x98, - 0x81, 0x42, 0x16, 0xd0, 0x06, 0x21, 0x00, 0x28, - 0x00, 0xd1, 0x07, 0x21, 0x0d, 0x06, 0x2d, 0x0e, - 0x00, 0x28, 0x0e, 0xd0, 0xcf, 0x4a, 0x01, 0x20, - 0x80, 0x3a, 0x50, 0x65, 0x0f, 0xf0, 0xa0, 0xf8, - 0xcc, 0x4a, 0x80, 0x3a, 0x50, 0x66, 0x04, 0xe0, - 0x00, 0x21, 0x16, 0x20, 0x3c, 0x00, 0x78, 0x3c, - 0x00, 0x00, 0x0f, 0xf0, 0xdc, 0xfc, 0x01, 0x25, - 0x02, 0x20, 0x05, 0x90, 0x2e, 0xe2, 0xc6, 0x48, - 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x2e, 0xd0, - 0xc6, 0x49, 0x20, 0x69, 0xc4, 0x4d, 0x40, 0x18, - 0x0e, 0xf0, 0xc1, 0xff, 0x00, 0x28, 0x12, 0xd0, - 0x0f, 0xf0, 0x85, 0xf8, 0xc1, 0x49, 0x49, 0x42, - 0x40, 0x18, 0xbd, 0x49, 0x20, 0x61, 0x80, 0x39, - 0x48, 0x6e, 0x40, 0x19, 0x0e, 0xf0, 0x3c, 0x00, - 0xb4, 0x3c, 0x00, 0x00, 0xbb, 0xff, 0x00, 0x28, - 0x11, 0xd0, 0x0a, 0xe0, 0xf7, 0xe0, 0x17, 0xe2, - 0xb2, 0xe0, 0xb0, 0xe0, 0xb6, 0x49, 0x20, 0x69, - 0x80, 0x39, 0x49, 0x6e, 0x40, 0x1a, 0xa8, 0x42, - 0x05, 0xdb, 0xb3, 0x49, 0xb5, 0x4d, 0x80, 0x39, - 0x4f, 0x65, 0x03, 0xf0, 0x27, 0xfb, 0x06, 0x22, - 0x29, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x72, 0xfc, - 0x47, 0xe0, 0x95, 0xe0, 0x00, 0xf0, 0xfe, 0xfd, - 0x3c, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0x28, - 0x42, 0xd1, 0xaa, 0x4d, 0xc4, 0x3d, 0xef, 0x60, - 0x08, 0xf0, 0x19, 0xfd, 0x03, 0xf0, 0x15, 0xfb, - 0xa8, 0x6a, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, - 0x4c, 0xff, 0xaf, 0x62, 0xa4, 0x48, 0x80, 0x38, - 0x00, 0x68, 0x00, 0x21, 0xff, 0xf7, 0xf9, 0xfc, - 0x08, 0xf0, 0x3f, 0xf9, 0x09, 0x21, 0x16, 0x20, - 0x0f, 0xf0, 0x87, 0xfc, 0x00, 0x22, 0x16, 0x21, - 0x83, 0x20, 0x3c, 0x00, 0x2c, 0x3d, 0x00, 0x00, - 0x0f, 0xf0, 0x40, 0xfd, 0xff, 0xf7, 0x86, 0xfc, - 0x21, 0xe0, 0x00, 0xf0, 0x1b, 0xfe, 0x1e, 0xe0, - 0x06, 0xf0, 0x54, 0xfa, 0x97, 0x4d, 0x80, 0x3d, - 0xa9, 0x6f, 0x40, 0x1a, 0x04, 0x90, 0x06, 0x98, - 0x00, 0x28, 0x01, 0xd0, 0xaf, 0x65, 0x02, 0xe0, - 0xa8, 0x6d, 0x00, 0x28, 0x08, 0xd1, 0x91, 0x48, - 0xc4, 0x38, 0x00, 0x78, 0x80, 0x07, 0x03, 0xd5, - 0x92, 0x48, 0x47, 0x60, 0x3c, 0x00, 0x68, 0x3d, - 0x00, 0x00, 0x00, 0xf0, 0x02, 0xfe, 0x04, 0x98, - 0xff, 0x38, 0x23, 0x38, 0x14, 0x28, 0x02, 0xd2, - 0x01, 0x20, 0xe8, 0x63, 0x53, 0xe0, 0xef, 0x63, - 0x51, 0xe0, 0x87, 0x4a, 0xb5, 0x7a, 0x80, 0x3a, - 0x00, 0x2d, 0x4c, 0xd0, 0x0d, 0xf0, 0x71, 0xff, - 0x00, 0xf0, 0xad, 0xfd, 0x07, 0x1c, 0x82, 0x48, - 0x80, 0x38, 0x40, 0x6f, 0xff, 0x30, 0x5f, 0x30, - 0x0e, 0xf0, 0x3d, 0xff, 0x02, 0x1c, 0x3c, 0x00, - 0xa4, 0x3d, 0x00, 0x00, 0x7e, 0x48, 0x80, 0x38, - 0x40, 0x6d, 0x00, 0x28, 0x1a, 0xd1, 0x00, 0xf0, - 0xf1, 0xfd, 0x00, 0x28, 0x16, 0xd1, 0x04, 0x2d, - 0x02, 0xd1, 0x00, 0x2f, 0x12, 0xd1, 0x1b, 0xe0, - 0x00, 0x2f, 0x06, 0xd0, 0x02, 0x2d, 0x14, 0xd0, - 0x79, 0x48, 0x40, 0x68, 0x00, 0x28, 0x09, 0xd0, - 0x12, 0xe0, 0x00, 0x2a, 0x10, 0xd1, 0x4b, 0x21, - 0xc9, 0x00, 0x01, 0x23, 0x09, 0x22, 0x16, 0x20, - 0x3c, 0x00, 0xe0, 0x3d, 0x00, 0x00, 0x0f, 0xf0, - 0xd6, 0xfc, 0x6e, 0x4a, 0x73, 0x48, 0x80, 0x3a, - 0x11, 0x68, 0x0b, 0xf0, 0xd8, 0xfa, 0x18, 0xe0, - 0x01, 0x21, 0x00, 0x20, 0x01, 0xe0, 0x01, 0x21, - 0x01, 0x20, 0x00, 0xf0, 0x2a, 0xfe, 0x10, 0xe0, - 0x67, 0x4a, 0x6c, 0x49, 0x80, 0x3a, 0x90, 0x6e, - 0x40, 0x18, 0x90, 0x66, 0x01, 0x25, 0x08, 0x95, - 0x8b, 0xe1, 0x04, 0x21, 0x6c, 0xe1, 0x61, 0x4a, - 0x66, 0x48, 0x3c, 0x00, 0x1c, 0x3e, 0x00, 0x00, - 0x80, 0x3a, 0x11, 0x68, 0x0b, 0xf0, 0xaa, 0xfa, - 0x88, 0xe1, 0xaf, 0x60, 0xa8, 0x6f, 0xe8, 0x67, - 0x63, 0x48, 0x01, 0x6d, 0xa9, 0x67, 0x07, 0x9a, - 0x14, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x08, 0x18, 0x12, 0x30, 0xa8, 0x66, 0x70, 0x78, - 0xb0, 0x70, 0x30, 0x78, 0x70, 0x70, 0x02, 0x20, - 0x30, 0x70, 0xa0, 0x69, 0xfc, 0xf7, 0xc2, 0xfa, - 0xef, 0x64, 0xa8, 0x6f, 0x3c, 0x00, 0x58, 0x3e, - 0x00, 0x00, 0xe9, 0x6f, 0x59, 0x4b, 0x40, 0x1a, - 0x98, 0x42, 0x12, 0xd2, 0x68, 0x6d, 0x06, 0x99, - 0x88, 0x42, 0x0e, 0xd0, 0x30, 0x78, 0x02, 0x28, - 0x0b, 0xd8, 0x0e, 0xf0, 0x9c, 0xff, 0xa9, 0x6f, - 0x08, 0x22, 0x40, 0x1a, 0x52, 0x49, 0x09, 0x1a, - 0x3b, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x85, 0xfc, - 0x00, 0xe0, 0xaf, 0x65, 0x01, 0x20, 0x05, 0x90, - 0x08, 0x90, 0x43, 0x48, 0x02, 0x25, 0x3c, 0x00, - 0x94, 0x3e, 0x00, 0x00, 0xc4, 0x38, 0xc1, 0x68, - 0x00, 0x29, 0x72, 0xd1, 0x01, 0x21, 0xc1, 0x60, - 0x49, 0x48, 0x00, 0x6b, 0x00, 0x28, 0x6c, 0xd0, - 0x08, 0xf0, 0x66, 0xfc, 0x69, 0xe0, 0x3c, 0x48, - 0x00, 0x22, 0x01, 0x92, 0x80, 0x38, 0x80, 0x68, - 0x01, 0x28, 0x04, 0xd1, 0x38, 0x48, 0x80, 0x38, - 0x87, 0x60, 0x01, 0x20, 0x48, 0xe1, 0x3a, 0x48, - 0x01, 0x23, 0x43, 0x60, 0x34, 0x48, 0xc4, 0x38, - 0x3c, 0x00, 0xd0, 0x3e, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x28, 0x0a, 0xd1, 0x00, 0xf0, 0x25, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0xff, 0x21, 0x91, 0x31, - 0x01, 0x23, 0x09, 0x22, 0x16, 0x20, 0x0f, 0xf0, - 0x52, 0xfc, 0x2c, 0x49, 0x80, 0x39, 0x48, 0x6f, - 0x89, 0x6f, 0x42, 0x1a, 0x03, 0x92, 0x06, 0xf0, - 0x76, 0xf9, 0x28, 0x49, 0x80, 0x39, 0x89, 0x6f, - 0x03, 0x9a, 0x40, 0x1a, 0x02, 0x90, 0x37, 0x20, - 0x00, 0x01, 0x3c, 0x00, 0x0c, 0x3f, 0x00, 0x00, - 0x10, 0x1a, 0x50, 0x28, 0x0d, 0xd2, 0x23, 0x48, - 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x04, 0xd1, - 0x02, 0x98, 0xff, 0x38, 0x55, 0x38, 0x14, 0x28, - 0x01, 0xd2, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22, - 0x01, 0x92, 0x03, 0x9a, 0x01, 0x20, 0xff, 0x3a, - 0x0b, 0x3a, 0x50, 0x2a, 0x00, 0xd3, 0x00, 0x20, - 0x04, 0x90, 0x00, 0x28, 0x0a, 0xd0, 0x17, 0x48, - 0x80, 0x38, 0xc0, 0x6f, 0x3c, 0x00, 0x48, 0x3f, - 0x00, 0x00, 0x08, 0x1a, 0x9b, 0x21, 0xc9, 0x00, - 0x40, 0x1a, 0x14, 0x28, 0x01, 0xd2, 0x01, 0x22, - 0x00, 0xe0, 0x00, 0x22, 0x00, 0x92, 0x00, 0x2a, - 0x11, 0xd0, 0x0f, 0x4d, 0x01, 0x20, 0x80, 0x3d, - 0x68, 0x65, 0x0e, 0xf0, 0x20, 0xff, 0x68, 0x66, - 0x01, 0x25, 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0, - 0x5e, 0xfb, 0x00, 0x21, 0x16, 0x20, 0x0f, 0xf0, - 0x5a, 0xfb, 0x00, 0xe0, 0xba, 0xe0, 0x3c, 0x00, - 0x84, 0x3f, 0x00, 0x00, 0xf0, 0x79, 0x02, 0x28, - 0x3c, 0xd8, 0x05, 0x4a, 0x80, 0x3a, 0x51, 0x6c, - 0x00, 0x29, 0x37, 0xd1, 0x13, 0x6c, 0x11, 0x1c, - 0x00, 0x2b, 0x33, 0xd1, 0x16, 0xe0, 0x00, 0x00, - 0x24, 0x6d, 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, - 0xc0, 0x5c, 0x15, 0x00, 0x70, 0x99, 0x14, 0x00, - 0xb0, 0x57, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xe2, 0x04, 0x00, 0x00, 0x00, 0x90, 0x07, 0x00, - 0x3c, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x53, 0x07, - 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0xc8, 0x57, - 0x01, 0x00, 0x4a, 0x6d, 0x00, 0x2a, 0x02, 0xd0, - 0xb2, 0x7a, 0x02, 0x2a, 0x15, 0xd1, 0x00, 0x9a, - 0x00, 0x2a, 0x03, 0xd0, 0xca, 0x6d, 0x01, 0x32, - 0xca, 0x65, 0x00, 0xe0, 0xcf, 0x65, 0x01, 0x9a, - 0x00, 0x2a, 0x0b, 0xd0, 0x8a, 0x6f, 0xcb, 0x6f, - 0xd2, 0x1a, 0x5a, 0x4b, 0x9a, 0x42, 0x02, 0xd2, - 0x8a, 0x6d, 0x3c, 0x00, 0xfc, 0x3f, 0x00, 0x00, - 0x01, 0x32, 0x00, 0xe0, 0x01, 0x22, 0x8a, 0x65, - 0x00, 0xe0, 0x8f, 0x65, 0x04, 0x99, 0x00, 0x29, - 0x01, 0xd1, 0x02, 0x28, 0x0b, 0xd9, 0x54, 0x4a, - 0x02, 0x28, 0x1e, 0xd9, 0xd0, 0x6f, 0x61, 0x68, - 0x88, 0x42, 0x1a, 0xd1, 0x91, 0x6f, 0x08, 0x1a, - 0x50, 0x49, 0x88, 0x42, 0x15, 0xdd, 0x4e, 0x4b, - 0x98, 0x6f, 0xe1, 0x68, 0x40, 0x1a, 0x7d, 0x21, - 0xc9, 0x00, 0x88, 0x42, 0x3c, 0x00, 0x38, 0x40, - 0x00, 0x00, 0x0b, 0xdd, 0x61, 0x69, 0x40, 0x1a, - 0x00, 0x28, 0x04, 0xdd, 0x02, 0x11, 0x40, 0x11, - 0x10, 0x18, 0x40, 0x18, 0x01, 0xe0, 0x80, 0x10, - 0x08, 0x18, 0x60, 0x61, 0x58, 0x6f, 0xe0, 0x60, - 0x03, 0x98, 0xff, 0x38, 0x23, 0x38, 0x14, 0x28, - 0x09, 0xd2, 0x02, 0x98, 0xff, 0x38, 0x23, 0x38, - 0x14, 0x28, 0x04, 0xd2, 0x3e, 0x4a, 0x90, 0x6f, - 0x50, 0x64, 0x90, 0x6a, 0x90, 0x64, 0x3c, 0x00, - 0x74, 0x40, 0x00, 0x00, 0x0e, 0xf0, 0x9a, 0xfe, - 0x3a, 0x49, 0x49, 0x6c, 0x40, 0x1a, 0x3b, 0x49, - 0x88, 0x42, 0x01, 0xd9, 0x37, 0x49, 0x4f, 0x64, - 0x39, 0x49, 0x03, 0x98, 0x40, 0x18, 0x14, 0x28, - 0x07, 0xd2, 0x34, 0x49, 0xc8, 0x6b, 0x00, 0x28, - 0x03, 0xd0, 0x88, 0x6f, 0x08, 0x64, 0x88, 0x6a, - 0x88, 0x64, 0x0e, 0xf0, 0x83, 0xfe, 0x2f, 0x49, - 0x09, 0x6c, 0x40, 0x1a, 0x31, 0x49, 0x88, 0x42, - 0x3c, 0x00, 0xb0, 0x40, 0x00, 0x00, 0x01, 0xd9, - 0x2c, 0x48, 0x07, 0x64, 0x04, 0x20, 0x05, 0x90, - 0x08, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0xb9, 0xfa, - 0x28, 0x48, 0x40, 0x6d, 0x00, 0x28, 0x02, 0xd0, - 0x04, 0x99, 0x00, 0x29, 0x08, 0xd0, 0x29, 0x49, - 0x00, 0x28, 0x00, 0xd1, 0x29, 0x49, 0x3b, 0x1c, - 0x06, 0x22, 0x16, 0x20, 0x0f, 0xf0, 0x57, 0xfb, - 0x02, 0x2d, 0x09, 0xd0, 0x06, 0x2d, 0x0a, 0xd0, - 0x07, 0x2d, 0x3c, 0x00, 0xec, 0x40, 0x00, 0x00, - 0x13, 0xd1, 0x07, 0xe0, 0x01, 0x21, 0x16, 0x20, - 0xfd, 0xf7, 0xd6, 0xf8, 0x1e, 0xe0, 0x1a, 0x4a, - 0x57, 0x63, 0x97, 0x63, 0x18, 0x4a, 0x06, 0x98, - 0xd0, 0x62, 0x07, 0x99, 0x11, 0x63, 0x53, 0x6b, - 0x18, 0x43, 0x50, 0x63, 0x90, 0x6b, 0x08, 0x43, - 0x90, 0x63, 0x05, 0x98, 0x00, 0x28, 0x05, 0xd0, - 0x05, 0x98, 0x0c, 0xf0, 0x5f, 0xfa, 0x05, 0x98, - 0x0c, 0xf0, 0xd2, 0xf9, 0x3c, 0x00, 0x28, 0x41, - 0x00, 0x00, 0x08, 0x2d, 0x05, 0xd0, 0x0d, 0x48, - 0x44, 0x38, 0x85, 0x70, 0x28, 0x1c, 0x03, 0xf0, - 0xdc, 0xfd, 0x11, 0x49, 0xe0, 0x69, 0x88, 0x42, - 0x00, 0xd1, 0x61, 0xe5, 0x08, 0x98, 0x00, 0x28, - 0xfb, 0xd0, 0xb0, 0x7a, 0x02, 0x28, 0xf8, 0xd1, - 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0x6f, 0xfa, - 0x02, 0x20, 0x0d, 0xf0, 0xe8, 0xfe, 0x53, 0xe5, - 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x41, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x20, 0xa1, 0x07, 0x00, 0x20, 0x4e, 0x00, 0x00, - 0x3f, 0xfb, 0xff, 0xff, 0xa0, 0x86, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0xc0, 0x5c, 0x15, 0x00, - 0xf1, 0x1d, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x21, 0x48, - 0x00, 0x68, 0x21, 0x4d, 0x69, 0x69, 0x08, 0x40, - 0x01, 0xd1, 0x01, 0x27, 0x00, 0xe0, 0x00, 0x27, - 0x3c, 0x00, 0xa0, 0x41, 0x00, 0x00, 0x1d, 0x4d, - 0x01, 0x26, 0x69, 0x6a, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x26, 0x1b, 0x4d, 0x1a, 0x48, 0x2c, 0x1c, - 0xa0, 0x30, 0x02, 0x7a, 0x28, 0x1c, 0x40, 0x30, - 0x80, 0x34, 0x10, 0x23, 0xb7, 0x42, 0x10, 0xd1, - 0x01, 0x25, 0xc5, 0x80, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x23, 0x1a, 0x43, 0x11, 0x1c, 0x01, 0x73, - 0x01, 0x20, 0x0e, 0xf0, 0x88, 0xfe, 0x08, 0x20, - 0x20, 0x70, 0x3c, 0x00, 0xdc, 0x41, 0x00, 0x00, - 0x00, 0x22, 0x16, 0x21, 0x80, 0x20, 0x13, 0xe0, - 0x11, 0x27, 0xc7, 0x80, 0x2e, 0x1c, 0x0b, 0x4d, - 0x00, 0x29, 0x00, 0xd1, 0x00, 0x23, 0x1a, 0x43, - 0x11, 0x1c, 0x01, 0x73, 0x01, 0x20, 0x0e, 0xf0, - 0x75, 0xfe, 0x08, 0x20, 0x20, 0x70, 0x30, 0x6d, - 0x00, 0x22, 0x16, 0x21, 0x68, 0x67, 0x82, 0x20, - 0x0f, 0xf0, 0xd0, 0xfa, 0xf8, 0xbd, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x18, 0x42, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x00, 0x90, - 0x07, 0x00, 0xb0, 0xb5, 0x0f, 0x4d, 0x04, 0x1c, - 0xaa, 0x7a, 0x01, 0x21, 0x08, 0x1c, 0x00, 0x2a, - 0x00, 0xd0, 0x00, 0x20, 0x00, 0x2c, 0x00, 0xd0, - 0x00, 0x21, 0x88, 0x42, 0x0a, 0xd0, 0x00, 0x2c, - 0x04, 0xd1, 0x00, 0xf0, 0x42, 0xfb, 0x00, 0xf0, - 0xd6, 0xfa, 0x03, 0xe0, 0x00, 0xf0, 0xd9, 0xfa, - 0x00, 0xf0, 0x09, 0xf8, 0xa8, 0x7a, 0x3c, 0x00, - 0x54, 0x42, 0x00, 0x00, 0x02, 0x49, 0xe4, 0x39, - 0x48, 0x71, 0xac, 0x72, 0xb0, 0xbd, 0x00, 0x00, - 0x44, 0x6d, 0x01, 0x00, 0x80, 0xb5, 0x3e, 0xf0, - 0x55, 0xf8, 0x02, 0x49, 0x01, 0x20, 0x08, 0x70, - 0x80, 0xbd, 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00, - 0xf3, 0xb5, 0x01, 0x20, 0x8d, 0xb0, 0x0f, 0x1c, - 0x01, 0x24, 0x08, 0x90, 0x0e, 0xf0, 0x92, 0xfd, - 0x06, 0x1c, 0x00, 0xf0, 0xb5, 0xfa, 0x09, 0x90, - 0x3c, 0x00, 0x90, 0x42, 0x00, 0x00, 0x00, 0xf0, - 0x80, 0xfb, 0x07, 0x90, 0xfe, 0xf7, 0x3f, 0xfa, - 0x05, 0x1c, 0x00, 0x21, 0x0c, 0x91, 0x08, 0xf0, - 0xf0, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x0a, 0x90, 0xfe, 0xf7, - 0x12, 0xfd, 0x05, 0xf0, 0xe0, 0xfe, 0x0b, 0x90, - 0x00, 0x2d, 0x23, 0xd0, 0x28, 0x88, 0x41, 0x07, - 0x20, 0xd4, 0x29, 0x1d, 0x04, 0x91, 0x0a, 0x35, - 0x00, 0x06, 0x3c, 0x00, 0xcc, 0x42, 0x00, 0x00, - 0x80, 0x0e, 0x01, 0x21, 0x20, 0x28, 0x03, 0x95, - 0x00, 0xd0, 0x00, 0x21, 0x0d, 0x1c, 0x04, 0x98, - 0x06, 0xf0, 0x38, 0xfd, 0x0c, 0x90, 0x04, 0x98, - 0x06, 0xf0, 0x10, 0xfd, 0x00, 0x28, 0x08, 0xd0, - 0x03, 0x98, 0x01, 0xf0, 0x87, 0xfa, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x2d, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x0c, 0x99, 0x01, 0x43, - 0x0c, 0x91, 0xfc, 0xf7, 0x3c, 0x00, 0x08, 0x43, - 0x00, 0x00, 0x23, 0xff, 0x00, 0x28, 0x2f, 0xd0, - 0x07, 0xf0, 0x99, 0xff, 0x05, 0x1c, 0x07, 0xf0, - 0xb2, 0xff, 0x04, 0x90, 0xff, 0xf7, 0xf3, 0xf8, - 0x0c, 0x99, 0x01, 0x43, 0x00, 0x2d, 0x06, 0xd0, - 0x04, 0x98, 0xf0, 0x4a, 0x30, 0x1a, 0x90, 0x42, - 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x08, 0x43, 0x0c, 0x90, 0x0b, 0x98, 0x0a, 0x9b, - 0x18, 0x43, 0x01, 0x1c, 0x0b, 0x91, 0x3c, 0x00, - 0x44, 0x43, 0x00, 0x00, 0x05, 0xf0, 0xce, 0xfe, - 0x00, 0x28, 0x1a, 0xd1, 0x00, 0x2d, 0x06, 0xd0, - 0x04, 0x98, 0xe7, 0x49, 0x30, 0x1a, 0x88, 0x42, - 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x0c, 0x99, 0x08, 0x43, 0x05, 0x1c, 0x00, 0xf0, - 0x1f, 0xfb, 0x28, 0x43, 0x03, 0xe0, 0x00, 0xf0, - 0x1b, 0xfb, 0x0c, 0x99, 0x08, 0x43, 0x0c, 0x90, - 0x00, 0xf0, 0xd4, 0xfb, 0x0b, 0x99, 0x01, 0x43, - 0x3c, 0x00, 0x80, 0x43, 0x00, 0x00, 0x0b, 0x91, - 0xdc, 0x49, 0xc8, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x38, 0xc8, 0x60, 0x08, 0xf0, 0xe7, 0xfb, - 0x06, 0x90, 0x08, 0xf0, 0x90, 0xfd, 0x31, 0x1a, - 0x05, 0x91, 0x06, 0x99, 0xd6, 0x48, 0x81, 0x42, - 0x08, 0xd8, 0x00, 0x2f, 0x08, 0xd1, 0x05, 0x99, - 0x40, 0x08, 0x81, 0x42, 0x04, 0xd9, 0x06, 0x99, - 0x81, 0x42, 0x01, 0xd9, 0x00, 0x24, 0x8b, 0xe0, - 0xd0, 0x48, 0x3c, 0x00, 0xbc, 0x43, 0x00, 0x00, - 0x05, 0x99, 0xd0, 0x4d, 0x81, 0x42, 0x26, 0xd2, - 0xe8, 0x79, 0x10, 0x28, 0x06, 0xd2, 0x00, 0x2f, - 0x21, 0xd1, 0xcc, 0x48, 0xa0, 0x38, 0x80, 0x6a, - 0x00, 0x28, 0x1c, 0xd1, 0x09, 0xf0, 0x62, 0xff, - 0x04, 0x90, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x20, - 0xc3, 0x49, 0x13, 0xe0, 0x09, 0xf0, 0x10, 0xfe, - 0x00, 0x28, 0x03, 0xd0, 0xc4, 0x48, 0xc0, 0x69, - 0x00, 0x28, 0xf4, 0xd0, 0x3c, 0x00, 0xf8, 0x43, - 0x00, 0x00, 0x04, 0x98, 0x05, 0x28, 0x03, 0xd0, - 0xc1, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x65, 0xd1, - 0xbb, 0x49, 0x48, 0x6a, 0x00, 0x28, 0x23, 0xd0, - 0x01, 0x38, 0x48, 0x62, 0x00, 0xf0, 0x87, 0xff, - 0x00, 0x28, 0x11, 0xd0, 0xbb, 0x48, 0x05, 0x99, - 0x81, 0x42, 0x0d, 0xd2, 0x01, 0xf0, 0x9b, 0xf8, - 0x04, 0x30, 0x0d, 0xf0, 0xee, 0xfc, 0x40, 0x30, - 0xc1, 0x7a, 0x01, 0x29, 0x4e, 0xd0, 0x3c, 0x00, - 0x34, 0x44, 0x00, 0x00, 0x80, 0x7a, 0x00, 0x28, - 0x01, 0xd0, 0x05, 0x28, 0x49, 0xd3, 0x01, 0xf0, - 0xdf, 0xf8, 0x02, 0x28, 0x10, 0xd0, 0x00, 0x2f, - 0x02, 0xd1, 0x06, 0x98, 0x00, 0x28, 0x40, 0xd1, - 0x00, 0x20, 0x08, 0x90, 0x82, 0xe1, 0xaa, 0x48, - 0xa0, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x38, 0xd0, - 0xa8, 0x48, 0x80, 0x69, 0x48, 0x62, 0x34, 0xe0, - 0x0a, 0xa9, 0x03, 0xc9, 0x08, 0x43, 0x45, 0xd0, - 0x3c, 0x00, 0x70, 0x44, 0x00, 0x00, 0xa3, 0x48, - 0x29, 0x78, 0xa0, 0x38, 0x02, 0x29, 0x40, 0xd8, - 0x40, 0x6d, 0x00, 0x28, 0x0a, 0xd0, 0x9f, 0x48, - 0xa2, 0x49, 0x20, 0x38, 0xc0, 0x68, 0x40, 0x18, - 0x0e, 0xf0, 0xc7, 0xfb, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x96, 0x4a, - 0x90, 0x6a, 0x00, 0x28, 0x02, 0xda, 0x64, 0x08, - 0x64, 0x00, 0x2a, 0xe0, 0x00, 0x29, 0x09, 0xd1, - 0x95, 0x4b, 0x3c, 0x00, 0xac, 0x44, 0x00, 0x00, - 0xa0, 0x3b, 0x5b, 0x6d, 0x00, 0x2b, 0x02, 0xd0, - 0x05, 0x28, 0x0d, 0xdb, 0x01, 0xe0, 0x07, 0x28, - 0x0a, 0xdb, 0x01, 0x20, 0xc0, 0x43, 0x90, 0x62, - 0x64, 0x08, 0x8e, 0x49, 0x64, 0x00, 0x00, 0x20, - 0xa0, 0x39, 0x88, 0x65, 0x14, 0xe0, 0xd1, 0xe0, - 0x39, 0x43, 0x11, 0xd1, 0x89, 0x49, 0xa0, 0x39, - 0xcb, 0x6d, 0x00, 0x2b, 0x02, 0xd1, 0x89, 0x6d, - 0x01, 0x29, 0x09, 0xd9, 0x3c, 0x00, 0xe8, 0x44, - 0x00, 0x00, 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1, - 0x07, 0x28, 0x01, 0xdb, 0x64, 0x08, 0x64, 0x00, - 0x01, 0x30, 0x90, 0x62, 0xbd, 0xe0, 0x7d, 0x49, - 0x88, 0x69, 0x04, 0x90, 0x00, 0x20, 0x88, 0x61, - 0x0c, 0x98, 0x00, 0x28, 0x2c, 0xd0, 0x07, 0xf0, - 0x66, 0xfc, 0x00, 0x28, 0x02, 0xd0, 0x02, 0x20, - 0x04, 0x43, 0x25, 0xe0, 0x7a, 0x48, 0xc0, 0x6a, - 0x00, 0x28, 0x04, 0xd1, 0x77, 0x48, 0x3c, 0x00, - 0x24, 0x45, 0x00, 0x00, 0xa0, 0x38, 0xc0, 0x68, - 0x00, 0x28, 0x1c, 0xd1, 0x04, 0x98, 0x00, 0x28, - 0x0d, 0xd1, 0x28, 0x78, 0x10, 0x28, 0x02, 0xd3, - 0xe8, 0x78, 0x02, 0x28, 0x02, 0xd9, 0x28, 0x79, - 0x10, 0x28, 0x04, 0xd3, 0x04, 0x24, 0x6b, 0x49, - 0x01, 0x22, 0x8a, 0x61, 0x94, 0xe0, 0x6c, 0x48, - 0xa0, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x71, 0xd0, - 0x05, 0xf0, 0xa2, 0xfd, 0x00, 0x28, 0x6d, 0xd0, - 0x3c, 0x00, 0x60, 0x45, 0x00, 0x00, 0x64, 0x08, - 0x64, 0x00, 0x88, 0xe0, 0xff, 0xf7, 0x5b, 0xfa, - 0x00, 0x28, 0x1a, 0xd0, 0x68, 0x48, 0x00, 0x78, - 0x02, 0x28, 0x01, 0xd1, 0x00, 0x2f, 0x14, 0xd1, - 0x00, 0x20, 0xfe, 0xf7, 0x70, 0xfe, 0x30, 0x1a, - 0x04, 0x90, 0xff, 0xf7, 0x6c, 0xfa, 0x00, 0x28, - 0x07, 0xd0, 0xff, 0xf7, 0x1e, 0xfa, 0x00, 0x28, - 0x03, 0xd0, 0x5d, 0x49, 0x04, 0x98, 0x88, 0x42, - 0x4f, 0xd3, 0x3c, 0x00, 0x9c, 0x45, 0x00, 0x00, - 0x05, 0xf0, 0x6c, 0xfd, 0x00, 0x28, 0x4b, 0xd1, - 0x53, 0x49, 0x08, 0x78, 0x03, 0x28, 0x08, 0xd1, - 0x88, 0x68, 0x01, 0x22, 0xd2, 0x07, 0x30, 0x1a, - 0x90, 0x42, 0x41, 0xd2, 0x01, 0x22, 0x0a, 0x70, - 0x57, 0xe0, 0x54, 0x48, 0x00, 0x78, 0x02, 0x28, - 0x01, 0xd1, 0x00, 0x2f, 0x51, 0xd1, 0x4a, 0x49, - 0x88, 0x68, 0x51, 0x49, 0x80, 0x1b, 0x88, 0x42, - 0x07, 0xd9, 0x01, 0x20, 0x3c, 0x00, 0xd8, 0x45, - 0x00, 0x00, 0xfe, 0xf7, 0x42, 0xfe, 0x7d, 0x21, - 0x09, 0x01, 0x40, 0x18, 0x44, 0x49, 0x88, 0x60, - 0x4a, 0x48, 0x00, 0x78, 0x02, 0x28, 0x04, 0xd1, - 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x47, 0x4b, 0x47, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x3c, 0x49, 0x89, 0x68, - 0x89, 0x1b, 0x88, 0x42, 0x30, 0xd9, 0x07, 0x9b, - 0x00, 0x20, 0x03, 0x93, 0x00, 0xf0, 0x3c, 0x00, - 0x14, 0x46, 0x00, 0x00, 0x79, 0xff, 0x02, 0x90, - 0xff, 0xf7, 0xd8, 0xf9, 0x04, 0x90, 0x01, 0xf0, - 0x57, 0xf8, 0x04, 0x99, 0x02, 0x9a, 0x51, 0x43, - 0x48, 0x43, 0x01, 0x90, 0x00, 0xf0, 0xdc, 0xff, - 0x41, 0x1c, 0x01, 0x98, 0x01, 0x22, 0x48, 0x43, - 0x11, 0x1c, 0x00, 0xe0, 0x1b, 0xe0, 0x31, 0x4b, - 0x5b, 0x6a, 0x83, 0x42, 0x00, 0xd3, 0x00, 0x21, - 0x03, 0x9b, 0x01, 0x22, 0x00, 0x2b, 0x00, 0xd0, - 0x3c, 0x00, 0x50, 0x46, 0x00, 0x00, 0x00, 0x22, - 0x2c, 0x4b, 0x51, 0x43, 0x9b, 0x6a, 0x01, 0x22, - 0x83, 0x42, 0x00, 0xd3, 0x00, 0x22, 0x50, 0x00, - 0x08, 0x18, 0x03, 0xd0, 0x23, 0x49, 0x03, 0x20, - 0x08, 0x70, 0x03, 0xe0, 0x09, 0x98, 0xc0, 0x68, - 0x06, 0x28, 0x08, 0xd9, 0x02, 0x24, 0x08, 0x98, - 0x00, 0x28, 0x6e, 0xd0, 0x1d, 0x49, 0x00, 0x20, - 0xc8, 0x61, 0x48, 0x61, 0xa5, 0xe0, 0x1a, 0x49, - 0x48, 0x69, 0x3c, 0x00, 0x8c, 0x46, 0x00, 0x00, - 0x00, 0x28, 0x0a, 0xd1, 0x00, 0x2f, 0x05, 0xd0, - 0x01, 0x22, 0x4a, 0x61, 0xc8, 0x69, 0x80, 0x18, - 0xc8, 0x61, 0x0a, 0xe0, 0x00, 0x20, 0xc8, 0x61, - 0x03, 0xe0, 0x00, 0x2f, 0x05, 0xd1, 0x00, 0x20, - 0x48, 0x61, 0x0d, 0x98, 0x00, 0x28, 0x00, 0xd1, - 0xc8, 0x68, 0x00, 0x20, 0x08, 0x90, 0x08, 0x78, - 0x01, 0x28, 0x2f, 0xd0, 0x02, 0x28, 0x4b, 0xd1, - 0x00, 0x2f, 0x08, 0xd1, 0x3c, 0x00, 0xc8, 0x46, - 0x00, 0x00, 0xe8, 0x78, 0x00, 0x28, 0x02, 0xd1, - 0x28, 0x78, 0x10, 0x28, 0x43, 0xd2, 0x28, 0x79, - 0x10, 0x28, 0x40, 0xd2, 0x48, 0x68, 0x0a, 0x69, - 0x30, 0x1a, 0x90, 0x42, 0x67, 0xd3, 0x01, 0x22, - 0x0a, 0x70, 0x38, 0xe0, 0x00, 0x00, 0xe2, 0x04, - 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x68, 0x7e, - 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x88, 0x13, - 0x00, 0x00, 0x44, 0x6d, 0x01, 0x00, 0x3c, 0x00, - 0x04, 0x47, 0x00, 0x00, 0xc8, 0x57, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0x98, 0x3a, 0x00, 0x00, - 0xc0, 0x57, 0x01, 0x00, 0x40, 0x0d, 0x03, 0x00, - 0xc4, 0x09, 0x00, 0x00, 0xb2, 0x0c, 0x00, 0x00, - 0x00, 0x20, 0x0b, 0x9a, 0x0a, 0x9b, 0xc0, 0x43, - 0x1a, 0x43, 0x37, 0xd0, 0x00, 0x2f, 0x35, 0xd1, - 0x07, 0x9b, 0x00, 0x2b, 0x08, 0xd0, 0x6a, 0x78, - 0x02, 0x2a, 0x2f, 0xd9, 0x2a, 0x78, 0x10, 0x2a, - 0x3c, 0x00, 0x40, 0x47, 0x00, 0x00, 0x2c, 0xd2, - 0x2a, 0x79, 0x10, 0x2a, 0x29, 0xd2, 0x25, 0x4b, - 0x1a, 0x6c, 0x00, 0x2a, 0x06, 0xd0, 0x9a, 0x6a, - 0x9f, 0x6c, 0xba, 0x42, 0x02, 0xd1, 0x1f, 0x20, - 0x1f, 0xe0, 0x2e, 0xe0, 0x20, 0x4b, 0x5a, 0x6c, - 0x00, 0x2a, 0x03, 0xd0, 0x1f, 0x4f, 0xb3, 0x1a, - 0xbb, 0x42, 0x16, 0xd3, 0x1c, 0x4b, 0x00, 0x2a, - 0x05, 0xd0, 0x9a, 0x6a, 0x9f, 0x6c, 0xba, 0x42, - 0x01, 0xd1, 0x3c, 0x00, 0x7c, 0x47, 0x00, 0x00, - 0x0f, 0x20, 0x0d, 0xe0, 0x07, 0x9a, 0x00, 0x2a, - 0x04, 0xd0, 0xea, 0x79, 0x20, 0x2a, 0x01, 0xd1, - 0x00, 0x20, 0x05, 0xe0, 0xea, 0x79, 0x10, 0x2a, - 0x01, 0xd3, 0x03, 0x20, 0x00, 0xe0, 0x9a, 0x6a, - 0x12, 0x4a, 0x12, 0x68, 0x02, 0x40, 0x0b, 0xd1, - 0x01, 0x20, 0x08, 0x90, 0x02, 0x20, 0x08, 0x70, - 0x0f, 0x48, 0x08, 0x61, 0x4e, 0x60, 0x64, 0xe7, - 0xff, 0xe7, 0x01, 0x20, 0x3c, 0x00, 0xb8, 0x47, - 0x00, 0x00, 0x08, 0x90, 0x60, 0xe7, 0x0c, 0x49, - 0x88, 0x6a, 0x00, 0x28, 0x01, 0xda, 0x01, 0x30, - 0x02, 0xe0, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, - 0x88, 0x62, 0x00, 0x20, 0x08, 0x62, 0x08, 0x99, - 0x20, 0x04, 0x08, 0x43, 0x0f, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x71, 0x02, - 0x00, 0x00, 0x08, 0x20, 0x07, 0x00, 0x53, 0x07, - 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x48, 0x70, 0x47, 0x50, 0x7e, 0x01, 0x00, - 0x80, 0xb5, 0x3d, 0xf0, 0x7f, 0xfd, 0x02, 0x49, - 0x01, 0x20, 0x08, 0x70, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, - 0x0e, 0xf0, 0xc8, 0xfa, 0x26, 0x49, 0x04, 0x1c, - 0x88, 0x6a, 0x26, 0x4e, 0x00, 0x28, 0x01, 0xd0, - 0x04, 0x20, 0x03, 0xe0, 0x70, 0x6a, 0x00, 0x28, - 0x3c, 0x00, 0x30, 0x48, 0x00, 0x00, 0x01, 0xd0, - 0x01, 0x38, 0x70, 0x62, 0x00, 0x27, 0x00, 0x2d, - 0x02, 0xd0, 0xb7, 0x61, 0xf7, 0x61, 0x0a, 0xe0, - 0xb0, 0x69, 0x1c, 0x49, 0x01, 0x30, 0xb0, 0x61, - 0x49, 0x6d, 0x00, 0x29, 0x03, 0xd0, 0x03, 0x28, - 0x01, 0xd9, 0x01, 0x20, 0xf0, 0x61, 0xb4, 0x60, - 0xf1, 0x68, 0x00, 0x91, 0x08, 0xf0, 0xf7, 0xfc, - 0xf0, 0x60, 0x00, 0x99, 0x88, 0x42, 0x02, 0xd0, - 0x30, 0x62, 0x3c, 0x00, 0x6c, 0x48, 0x00, 0x00, - 0x34, 0x61, 0x0b, 0xe0, 0x00, 0xf0, 0x90, 0xf8, - 0x00, 0x28, 0x01, 0xd0, 0x11, 0x48, 0x00, 0xe0, - 0x11, 0x48, 0x31, 0x69, 0x61, 0x1a, 0x81, 0x42, - 0x00, 0xd9, 0x37, 0x62, 0x0b, 0x4a, 0x0c, 0x48, - 0xd1, 0x6c, 0x20, 0x30, 0x00, 0x29, 0x01, 0xd0, - 0x0a, 0x21, 0x03, 0xe0, 0x01, 0x7a, 0x00, 0x29, - 0x01, 0xd0, 0xff, 0x31, 0x01, 0x72, 0x00, 0x2d, - 0x03, 0xd1, 0x01, 0x7a, 0x3c, 0x00, 0xa8, 0x48, - 0x00, 0x00, 0x00, 0x29, 0x00, 0xd0, 0x91, 0x6a, - 0x00, 0x7a, 0x00, 0x28, 0x00, 0xd1, 0x17, 0x65, - 0xf8, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x3c, 0x7e, - 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00, 0xa8, 0x61, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x49, - 0x80, 0xb5, 0x89, 0x68, 0x00, 0x29, 0x07, 0xd0, - 0x05, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x04, 0x21, - 0x08, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x3c, 0x00, - 0xe4, 0x48, 0x00, 0x00, 0x05, 0xfa, 0x80, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x07, 0x48, 0x00, 0x68, - 0x07, 0x49, 0x4a, 0x69, 0x10, 0x40, 0x01, 0xd0, - 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x49, 0x6a, - 0x88, 0x42, 0x01, 0xd1, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x00, 0x07, 0x00, - 0xa4, 0x6c, 0x01, 0x00, 0x70, 0xb5, 0x0e, 0xf0, - 0x49, 0xfa, 0x02, 0x1c, 0x00, 0xf0, 0x3a, 0xf8, - 0x3c, 0x00, 0x20, 0x49, 0x00, 0x00, 0x10, 0x49, - 0x00, 0x28, 0x0e, 0xd0, 0x08, 0x1c, 0xa0, 0x31, - 0x0e, 0x78, 0x0e, 0x4b, 0x10, 0x2e, 0x01, 0xd3, - 0x80, 0x6f, 0x03, 0xe0, 0x49, 0x78, 0x10, 0x29, - 0x0e, 0xd3, 0xc0, 0x6f, 0xc0, 0x18, 0x84, 0x1a, - 0x0a, 0xe0, 0x08, 0x1c, 0x80, 0x30, 0x45, 0x69, - 0x08, 0x49, 0x8d, 0x42, 0x01, 0xd9, 0x0c, 0x1c, - 0x05, 0xe0, 0xc0, 0x68, 0x10, 0x1a, 0x2c, 0x1a, - 0x00, 0x2c, 0x3c, 0x00, 0x5c, 0x49, 0x00, 0x00, - 0x00, 0xda, 0x64, 0x19, 0x20, 0x1c, 0x70, 0xbd, - 0xa4, 0x6c, 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0x80, 0xb5, 0x05, 0xf0, - 0xb7, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x07, 0xf0, - 0x1f, 0xff, 0x80, 0xbd, 0x03, 0x48, 0x00, 0x78, - 0x00, 0x28, 0xfa, 0xd0, 0x07, 0xf0, 0x70, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0x03, 0x49, 0x01, 0x20, 0x3c, 0x00, 0x98, 0x49, - 0x00, 0x00, 0x49, 0x69, 0x03, 0x29, 0x00, 0xd8, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x60, 0x6c, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x00, 0x24, - 0x28, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x05, 0xf0, - 0x6a, 0xfb, 0x04, 0x06, 0x24, 0x0e, 0xfe, 0xf7, - 0xd2, 0xfc, 0x00, 0x02, 0x20, 0x43, 0x02, 0xd1, - 0x68, 0x6a, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, 0x3c, 0x00, - 0xd4, 0x49, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0x01, 0x21, 0x01, 0x28, 0x00, 0xd0, 0x00, 0x21, - 0x01, 0x48, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0x15, 0x48, 0x10, 0xb5, - 0x04, 0x68, 0x15, 0x48, 0x00, 0x6a, 0x00, 0x28, - 0x14, 0xd0, 0xff, 0xf7, 0xcb, 0xff, 0x00, 0x28, - 0x0e, 0xd1, 0x11, 0x48, 0x11, 0x49, 0xc4, 0x30, - 0x40, 0x69, 0x88, 0x42, 0x08, 0xd2, 0xcc, 0x08, - 0x3c, 0x00, 0x10, 0x4a, 0x00, 0x00, 0xa0, 0x42, - 0x05, 0xd3, 0xff, 0xf7, 0x7e, 0xff, 0xa0, 0x42, - 0x01, 0xda, 0x0c, 0x4c, 0x01, 0xe0, 0xff, 0x24, - 0x91, 0x34, 0x7d, 0x20, 0x00, 0x01, 0x84, 0x42, - 0x04, 0xd9, 0x00, 0x22, 0x16, 0x21, 0x83, 0x20, - 0x0e, 0xf0, 0xbd, 0xfe, 0x01, 0x23, 0x09, 0x22, - 0x21, 0x1c, 0x16, 0x20, 0x0e, 0xf0, 0xa7, 0xfe, - 0x10, 0xbd, 0xb0, 0x57, 0x01, 0x00, 0x60, 0x6c, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x4a, 0x00, 0x00, - 0xc0, 0x5d, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c, 0x00, 0xf0, - 0x43, 0xf8, 0x00, 0x28, 0x0f, 0xd0, 0x08, 0x4c, - 0x20, 0x78, 0xc0, 0x07, 0x03, 0xd4, 0x05, 0xf0, - 0xab, 0xf9, 0x09, 0xf0, 0x31, 0xfe, 0x00, 0x2d, - 0x05, 0xd0, 0x20, 0x78, 0x80, 0x07, 0x02, 0xd4, - 0x30, 0x1c, 0x02, 0xf0, 0xfd, 0xfe, 0x70, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x4a, - 0x00, 0x00, 0xb0, 0xb5, 0x00, 0x28, 0x18, 0xd0, - 0x11, 0x48, 0x81, 0x42, 0x15, 0xd2, 0x10, 0x48, - 0x0c, 0x1c, 0x0d, 0x18, 0x07, 0xf0, 0xdf, 0xfa, - 0x81, 0x00, 0x09, 0x18, 0xa1, 0x42, 0x01, 0xd2, - 0x40, 0x00, 0x03, 0xe0, 0x41, 0x00, 0x09, 0x18, - 0xa1, 0x42, 0x01, 0xd2, 0x24, 0x1a, 0x06, 0xe0, - 0x41, 0x00, 0xa1, 0x42, 0x03, 0xd2, 0x40, 0x08, - 0xf8, 0xe7, 0x06, 0x4d, 0x07, 0x4c, 0x3c, 0x00, - 0xc4, 0x4a, 0x00, 0x00, 0x0e, 0xf0, 0x72, 0xf9, - 0x00, 0x19, 0x29, 0x1c, 0x07, 0xf0, 0xdc, 0xfa, - 0xb0, 0xbd, 0x00, 0x00, 0x80, 0xb9, 0x2a, 0x00, - 0x53, 0x07, 0x00, 0x00, 0x4c, 0x1d, 0x00, 0x00, - 0x88, 0x13, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0xf0, - 0xfd, 0xfa, 0x00, 0x28, 0x13, 0xd1, 0xfe, 0xf7, - 0xb5, 0xfe, 0x0a, 0x4c, 0x0a, 0x4d, 0x00, 0x28, - 0x60, 0x63, 0x00, 0xd0, 0x28, 0x60, 0x0e, 0xf0, - 0x3c, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x55, 0xf9, - 0x21, 0x6a, 0x00, 0x29, 0x04, 0xd1, 0xe1, 0x69, - 0x40, 0x1a, 0x29, 0x68, 0x88, 0x42, 0x01, 0xd9, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xdd, 0xff, - 0x00, 0x28, 0x05, 0xd0, 0x05, 0xf0, 0xb7, 0xfa, - 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd, - 0x00, 0x20, 0x3c, 0x00, 0x3c, 0x4b, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c, - 0x00, 0x21, 0xa2, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0xa1, 0x60, 0x02, 0xf0, 0x83, 0xf9, 0x10, 0xbd, - 0x61, 0x60, 0x01, 0x1c, 0x00, 0x22, 0x04, 0x20, - 0x0e, 0xf0, 0x36, 0xfd, 0x03, 0x48, 0x21, 0x68, - 0x0a, 0xf0, 0x08, 0xfc, 0x10, 0xbd, 0x00, 0x00, - 0xbc, 0x74, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x78, 0x4b, - 0x00, 0x00, 0x01, 0xd1, 0xfc, 0xf7, 0xc1, 0xfb, - 0x20, 0x4c, 0xe0, 0x6a, 0x00, 0x28, 0x15, 0xd0, - 0x1f, 0x4b, 0xa0, 0x69, 0x58, 0x43, 0xc6, 0x0b, - 0x20, 0x88, 0x46, 0x43, 0xf0, 0x00, 0x80, 0x19, - 0xe6, 0x60, 0xfb, 0xf7, 0x1c, 0xfe, 0xa8, 0x42, - 0x05, 0xd8, 0x30, 0x1c, 0xfb, 0xf7, 0x17, 0xfe, - 0x80, 0x19, 0xa8, 0x42, 0x02, 0xd2, 0x00, 0x20, - 0xe0, 0x60, 0x20, 0xe0, 0xe5, 0x60, 0x3c, 0x00, - 0xb4, 0x4b, 0x00, 0x00, 0x00, 0x2d, 0x1d, 0xd0, - 0x26, 0x88, 0xa0, 0x69, 0x70, 0x43, 0xc1, 0x03, - 0x28, 0x1c, 0xfb, 0xf7, 0xa5, 0xfd, 0x60, 0x61, - 0x0d, 0x48, 0x32, 0x1c, 0x29, 0x1c, 0x30, 0x30, - 0xfb, 0xf7, 0x0a, 0xfc, 0x0c, 0x4b, 0x60, 0x69, - 0x58, 0x43, 0xc0, 0x0b, 0x60, 0x62, 0x01, 0xf0, - 0xb7, 0xfd, 0xa0, 0x62, 0xe0, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0x20, 0x69, 0xa1, 0x68, 0xfb, 0xf7, - 0x3c, 0x00, 0xf0, 0x4b, 0x00, 0x00, 0xf4, 0xfb, - 0x70, 0xbd, 0x05, 0x48, 0xa1, 0x68, 0xfb, 0xf7, - 0xef, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x74, - 0x01, 0x00, 0x40, 0x42, 0x0f, 0x00, 0xc0, 0xc6, - 0x2d, 0x00, 0x88, 0x13, 0x00, 0x00, 0xf1, 0xb5, - 0x3e, 0x48, 0x00, 0xab, 0x81, 0x78, 0xc0, 0x78, - 0x3e, 0x4f, 0x0a, 0x07, 0x04, 0x07, 0x58, 0x78, - 0x3b, 0x49, 0x12, 0x0f, 0x08, 0x5c, 0x14, 0x39, - 0x24, 0x0f, 0x3c, 0x00, 0x2c, 0x4c, 0x00, 0x00, - 0x80, 0x18, 0x78, 0x60, 0x01, 0x30, 0xb8, 0x60, - 0x18, 0x78, 0x35, 0x4d, 0x08, 0x5c, 0x00, 0x19, - 0xb8, 0x61, 0x01, 0x30, 0xf8, 0x61, 0xeb, 0x78, - 0x33, 0x48, 0x1e, 0x09, 0x33, 0x4b, 0x18, 0x38, - 0x81, 0x78, 0x5e, 0x43, 0xab, 0x78, 0x1d, 0x09, - 0xc8, 0x23, 0x6b, 0x43, 0x00, 0x29, 0x08, 0xd1, - 0x2b, 0x4d, 0x2d, 0x78, 0x3d, 0x60, 0xc5, 0x60, - 0x7d, 0x25, 0xed, 0x00, 0x3c, 0x00, 0x68, 0x4c, - 0x00, 0x00, 0x5d, 0x1b, 0x2c, 0x4b, 0x07, 0xe0, - 0x27, 0x4d, 0x6d, 0x78, 0x3d, 0x60, 0xc5, 0x60, - 0x4b, 0x25, 0x2d, 0x01, 0x5d, 0x1b, 0x28, 0x4b, - 0xf6, 0x18, 0x02, 0x20, 0x00, 0xf0, 0x57, 0xf8, - 0x28, 0x1a, 0xf8, 0x60, 0x22, 0x48, 0x22, 0x1c, - 0x18, 0x38, 0x81, 0x78, 0x03, 0x20, 0x00, 0xf0, - 0x4e, 0xf8, 0x30, 0x1a, 0x38, 0x62, 0x39, 0x68, - 0x00, 0xab, 0x79, 0x61, 0x5a, 0x78, 0x3c, 0x00, - 0xa4, 0x4c, 0x00, 0x00, 0x56, 0x23, 0xf9, 0x68, - 0x5a, 0x43, 0x89, 0x1a, 0xf9, 0x60, 0xc8, 0x31, - 0x39, 0x61, 0x18, 0x49, 0x18, 0x39, 0x89, 0x78, - 0x00, 0x29, 0xb9, 0x69, 0x11, 0xd1, 0x00, 0xab, - 0x1a, 0x78, 0x13, 0x4b, 0x14, 0x3b, 0x9a, 0x5c, - 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23, 0x59, 0x43, - 0x14, 0x4b, 0x59, 0x1a, 0x51, 0x43, 0x0a, 0x23, - 0x59, 0x43, 0x40, 0x1a, 0x38, 0x62, 0x12, 0x49, - 0x3c, 0x00, 0xe0, 0x4c, 0x00, 0x00, 0x10, 0xe0, - 0x00, 0xab, 0x1a, 0x78, 0x0a, 0x4b, 0x14, 0x3b, - 0x9a, 0x5c, 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23, - 0x59, 0x43, 0x0d, 0x4b, 0x59, 0x1a, 0x51, 0x43, - 0x0a, 0x23, 0x59, 0x43, 0x40, 0x1a, 0x0b, 0x49, - 0x38, 0x62, 0x40, 0x18, 0x78, 0x62, 0xf8, 0xbd, - 0x00, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x66, 0x5a, - 0x01, 0x00, 0x94, 0x78, 0x01, 0x00, 0xa0, 0x86, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4d, 0x00, 0x00, - 0x00, 0x48, 0x71, 0x00, 0xb0, 0xd6, 0x8c, 0x00, - 0x88, 0x10, 0x00, 0x00, 0x80, 0x38, 0x01, 0x00, - 0x58, 0x12, 0x00, 0x00, 0x70, 0x11, 0x01, 0x00, - 0x30, 0xb5, 0x19, 0x4b, 0x02, 0x28, 0xdd, 0x68, - 0x06, 0xd1, 0x00, 0x29, 0x04, 0xd1, 0x2b, 0x1c, - 0x0c, 0x33, 0x9c, 0x1a, 0x64, 0x23, 0x5c, 0x43, - 0x02, 0x28, 0x09, 0xd1, 0x01, 0x29, 0x07, 0xd1, - 0x64, 0x23, 0x7d, 0x24, 0x3c, 0x00, 0x58, 0x4d, - 0x00, 0x00, 0xe4, 0x00, 0x6b, 0x43, 0x1c, 0x19, - 0xa0, 0x23, 0x53, 0x43, 0xe4, 0x1a, 0x0a, 0x23, - 0x5a, 0x43, 0x03, 0x28, 0x09, 0xd1, 0x00, 0x29, - 0x07, 0xd1, 0x13, 0x23, 0xff, 0x24, 0xe4, 0x00, - 0x6b, 0x43, 0x1b, 0x19, 0x9b, 0x1a, 0x1c, 0x1c, - 0x5c, 0x43, 0x03, 0x28, 0x08, 0xd1, 0x01, 0x29, - 0x06, 0xd1, 0x0e, 0x20, 0x05, 0x49, 0x68, 0x43, - 0x40, 0x18, 0x80, 0x1a, 0x04, 0x1c, 0x3c, 0x00, - 0x94, 0x4d, 0x00, 0x00, 0x44, 0x43, 0x20, 0x1c, - 0x30, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0x84, 0x08, 0x00, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x0c, 0x23, 0x60, 0x78, 0x05, 0x49, 0x14, 0x31, - 0x58, 0x43, 0x40, 0x18, 0x40, 0x68, 0x01, 0xf0, - 0x4f, 0xfc, 0x00, 0x21, 0x60, 0x78, 0x02, 0xf0, - 0x4b, 0xff, 0x10, 0xbd, 0x4c, 0x7b, 0x01, 0x00, - 0x0c, 0x48, 0xf8, 0xb5, 0x40, 0x78, 0x0c, 0x23, - 0x3c, 0x00, 0xd0, 0x4d, 0x00, 0x00, 0x0a, 0x49, - 0x58, 0x43, 0x14, 0x31, 0x44, 0x18, 0x26, 0x1d, - 0x60, 0xce, 0x30, 0x1c, 0x0b, 0xf0, 0x0b, 0xfd, - 0x00, 0x27, 0x41, 0x20, 0x47, 0x55, 0x05, 0x48, - 0x29, 0x1c, 0x02, 0xf0, 0xf0, 0xfe, 0x28, 0x1c, - 0x01, 0xf0, 0x31, 0xfc, 0x04, 0x34, 0xc0, 0xc4, - 0xf8, 0xbd, 0x4c, 0x7b, 0x01, 0x00, 0x55, 0x80, - 0x00, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x4c, 0x21, - 0x28, 0x78, 0x3c, 0x00, 0x0c, 0x4e, 0x00, 0x00, - 0x09, 0x4a, 0x41, 0x43, 0x8c, 0x18, 0x22, 0x68, - 0x01, 0x21, 0xfb, 0xf7, 0xe1, 0xfa, 0x28, 0x78, - 0x01, 0xf0, 0xfa, 0xfb, 0x3c, 0x23, 0xe0, 0x56, - 0x41, 0x1e, 0x01, 0x20, 0x07, 0xf0, 0x34, 0xfb, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x7c, 0x01, 0x00, - 0x58, 0xe3, 0x01, 0x00, 0x0c, 0x23, 0x07, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x80, 0xb5, 0x40, 0x68, - 0x41, 0x6b, 0x00, 0x29, 0x3c, 0x00, 0x48, 0x4e, - 0x00, 0x00, 0x02, 0xd0, 0x0b, 0xf0, 0xfb, 0xfd, - 0x80, 0xbd, 0x0b, 0xf0, 0x2c, 0xfd, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x38, 0x22, - 0x0a, 0x4b, 0x42, 0x43, 0xd2, 0x18, 0x00, 0x29, - 0x80, 0xb5, 0x04, 0xd0, 0x02, 0x29, 0x07, 0xd1, - 0x0b, 0xf0, 0xfb, 0xfc, 0x80, 0xbd, 0xd2, 0x6a, - 0x01, 0x21, 0xfb, 0xf7, 0xb0, 0xfa, 0x80, 0xbd, - 0x03, 0x21, 0x86, 0x20, 0xfc, 0xf7, 0x3c, 0x00, - 0x84, 0x4e, 0x00, 0x00, 0x0f, 0xfa, 0x80, 0xbd, - 0xd4, 0xe4, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x06, - 0x24, 0x0e, 0x0c, 0x20, 0x0e, 0x49, 0x60, 0x43, - 0x40, 0x18, 0x45, 0x68, 0xa8, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0x00, 0x21, 0x20, 0x1c, 0xfd, 0xf7, - 0xe1, 0xfa, 0x20, 0x1c, 0x07, 0xf0, 0xf2, 0xff, - 0x00, 0x28, 0x08, 0xd0, 0x28, 0x1c, 0x60, 0x30, - 0xc1, 0x79, 0x01, 0x29, 0x03, 0xd9, 0xff, 0x31, - 0x3c, 0x00, 0xc0, 0x4e, 0x00, 0x00, 0xc1, 0x71, - 0xff, 0x31, 0x81, 0x71, 0x01, 0x21, 0x20, 0x1c, - 0x02, 0xf0, 0xc5, 0xfe, 0xb0, 0xbd, 0x60, 0x7b, - 0x01, 0x00, 0x70, 0xb5, 0x00, 0x06, 0x00, 0x0e, - 0x05, 0x1c, 0x4c, 0x23, 0x0a, 0x49, 0x58, 0x43, - 0x44, 0x18, 0x3c, 0x20, 0x00, 0x5d, 0xff, 0x30, - 0x06, 0x06, 0x36, 0x16, 0x28, 0x1c, 0x01, 0xf0, - 0x90, 0xfb, 0x00, 0x21, 0x28, 0x1c, 0x22, 0x68, - 0xfb, 0xf7, 0x3c, 0x00, 0xfc, 0x4e, 0x00, 0x00, - 0x6f, 0xfa, 0x31, 0x1c, 0x00, 0x20, 0x07, 0xf0, - 0xc7, 0xfa, 0x70, 0xbd, 0x58, 0xe3, 0x01, 0x00, - 0x0c, 0x22, 0x0f, 0x4b, 0x42, 0x43, 0xd2, 0x18, - 0x10, 0xb5, 0x54, 0x68, 0x00, 0x29, 0x0d, 0xd0, - 0x02, 0x29, 0x0f, 0xd1, 0x2c, 0x20, 0x00, 0x5d, - 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21, 0x0c, 0x20, - 0xfc, 0xf7, 0xba, 0xf9, 0x20, 0x1c, 0x0b, 0xf0, - 0xbb, 0xfc, 0x10, 0xbd, 0x3c, 0x00, 0x38, 0x4f, - 0x00, 0x00, 0x00, 0x21, 0x02, 0xf0, 0x8d, 0xfe, - 0x10, 0xbd, 0x04, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0xae, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x29, 0x07, 0xd0, - 0x0c, 0x23, 0x05, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x40, 0x68, 0x0b, 0xf0, 0x4a, 0xfc, 0x80, 0xbd, - 0x01, 0x21, 0x02, 0xf0, 0x76, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x3c, 0x00, - 0x74, 0x4f, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x00, 0x29, 0x05, 0xd0, 0x02, 0x29, 0x1a, 0xd1, - 0x20, 0x1c, 0x0b, 0xf0, 0xeb, 0xfc, 0x10, 0xbd, - 0x0d, 0x48, 0x04, 0x70, 0x0d, 0x48, 0x07, 0xf0, - 0x07, 0xf9, 0x0d, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x12, 0x03, 0x11, 0x43, 0x01, 0x80, 0x4c, 0x20, - 0x0a, 0x49, 0x60, 0x43, 0x40, 0x18, 0x40, 0x30, - 0x00, 0x78, 0xfd, 0xf7, 0x5d, 0xfd, 0x20, 0x1c, - 0x3c, 0x00, 0xb0, 0x4f, 0x00, 0x00, 0x0a, 0xf0, - 0xd4, 0xf8, 0x10, 0xbd, 0x03, 0x21, 0x86, 0x20, - 0xfc, 0xf7, 0x73, 0xf9, 0x10, 0xbd, 0x3c, 0x7c, - 0x01, 0x00, 0x05, 0x4e, 0x00, 0x00, 0x32, 0x80, - 0x07, 0x00, 0x58, 0xe3, 0x01, 0x00, 0xff, 0xb5, - 0x05, 0x1c, 0x01, 0x20, 0x83, 0xb0, 0x01, 0x90, - 0x0c, 0x20, 0x5d, 0x4a, 0x68, 0x43, 0x86, 0x18, - 0x01, 0x27, 0x00, 0x29, 0x74, 0x68, 0x0e, 0xd0, - 0x02, 0x29, 0x3c, 0x00, 0xec, 0x4f, 0x00, 0x00, - 0x6a, 0xd1, 0x2c, 0x20, 0x00, 0x5d, 0x00, 0x28, - 0x03, 0xd0, 0x06, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0x53, 0xf9, 0x20, 0x1c, 0x0b, 0xf0, 0x20, 0xfd, - 0x07, 0xb0, 0xf0, 0xbd, 0x52, 0x48, 0x14, 0x38, - 0x45, 0x70, 0xa0, 0x6b, 0x00, 0x28, 0x07, 0xd0, - 0x50, 0x48, 0x07, 0xf0, 0x7f, 0xf8, 0x01, 0x21, - 0x28, 0x1c, 0xfd, 0xf7, 0x25, 0xfa, 0x1c, 0xe0, - 0x4d, 0x48, 0x07, 0xf0, 0x3c, 0x00, 0x28, 0x50, - 0x00, 0x00, 0x77, 0xf8, 0x4a, 0x48, 0x14, 0x38, - 0x05, 0x70, 0x4b, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x52, 0x03, 0x11, 0x43, 0x01, 0x80, 0x40, 0x20, - 0x00, 0x5d, 0xfd, 0xf7, 0x12, 0xfd, 0xb0, 0x68, - 0x00, 0x28, 0x09, 0xd1, 0x28, 0x1c, 0x07, 0xf0, - 0x64, 0xff, 0xb0, 0x60, 0x00, 0x28, 0x03, 0xd1, - 0x09, 0x21, 0x0c, 0x20, 0xfc, 0xf7, 0x23, 0xf9, - 0x05, 0x98, 0x00, 0x28, 0x03, 0xd0, 0x3c, 0x00, - 0x64, 0x50, 0x00, 0x00, 0xe0, 0x6c, 0x01, 0x30, - 0xe0, 0x64, 0x0e, 0xe0, 0x67, 0x20, 0x00, 0x5d, - 0x00, 0x28, 0x07, 0xd1, 0xe0, 0x6c, 0x00, 0x28, - 0x04, 0xd1, 0x39, 0x48, 0x02, 0x38, 0xc0, 0x6a, - 0xa0, 0x64, 0x09, 0xe0, 0x20, 0x6d, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x27, 0x04, 0xe0, 0x28, 0x1c, - 0x07, 0xf0, 0x00, 0xff, 0x00, 0x28, 0xe5, 0xd1, - 0x05, 0x98, 0x20, 0x65, 0x20, 0x1c, 0x20, 0x30, - 0x3c, 0x00, 0xa0, 0x50, 0x00, 0x00, 0x62, 0x6a, - 0x02, 0x90, 0x81, 0x7b, 0x28, 0x1c, 0x07, 0xf0, - 0x78, 0xff, 0x00, 0x2f, 0x19, 0xd0, 0x20, 0x1c, - 0x60, 0x30, 0xc1, 0x79, 0x4a, 0x1c, 0xc2, 0x71, - 0x80, 0x79, 0x81, 0x42, 0x02, 0xd2, 0x01, 0x20, - 0x01, 0xe0, 0x40, 0xe0, 0x00, 0x20, 0x01, 0x90, - 0x00, 0x28, 0x0a, 0xd0, 0x25, 0x48, 0x00, 0x78, - 0x80, 0x07, 0x06, 0xd5, 0x00, 0xf0, 0x0d, 0xfb, - 0x01, 0x1c, 0x3c, 0x00, 0xdc, 0x50, 0x00, 0x00, - 0x20, 0x1c, 0x0b, 0xf0, 0x15, 0xfd, 0x01, 0x90, - 0x01, 0x98, 0x00, 0x28, 0x0f, 0xd0, 0x02, 0x98, - 0x00, 0x7b, 0x02, 0x28, 0x03, 0xd1, 0x20, 0x1c, - 0x04, 0xf0, 0xd0, 0xfe, 0x84, 0xe7, 0x01, 0x28, - 0x00, 0xd0, 0x7e, 0xe7, 0x21, 0x1c, 0x30, 0x1c, - 0x04, 0xf0, 0xe2, 0xfe, 0x7c, 0xe7, 0x25, 0x1c, - 0x60, 0x35, 0xe8, 0x79, 0xff, 0x30, 0xa8, 0x71, - 0x68, 0x7a, 0x06, 0xf0, 0x3c, 0x00, 0x18, 0x51, - 0x00, 0x00, 0x9d, 0xfc, 0x0d, 0xf0, 0x47, 0xfe, - 0x07, 0x1c, 0x05, 0xf0, 0x12, 0xff, 0x3f, 0x18, - 0x02, 0x98, 0x81, 0x7b, 0x20, 0x69, 0x04, 0x30, - 0x00, 0xf0, 0x35, 0xfa, 0x61, 0x6a, 0x05, 0xf0, - 0xea, 0xfe, 0x39, 0x18, 0x6b, 0x7a, 0x30, 0x88, - 0x80, 0x31, 0x09, 0x4a, 0x0d, 0xf0, 0x91, 0xfe, - 0x5d, 0xe7, 0x03, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0xaa, 0xf8, 0x58, 0xe7, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x51, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0xa5, 0x4d, 0x00, 0x00, 0xc9, 0x4d, 0x00, 0x00, - 0x32, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0x8d, 0x4e, 0x00, 0x00, 0xff, 0xb5, 0x81, 0xb0, - 0x1f, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x10, 0x1c, - 0x0a, 0x9e, 0x00, 0xf0, 0xf5, 0xfc, 0x29, 0x1c, - 0x10, 0x31, 0x20, 0x1d, 0x06, 0x22, 0xfb, 0xf7, - 0xb7, 0xf9, 0xa8, 0x8e, 0x20, 0x80, 0xe8, 0x8e, - 0x3c, 0x00, 0x90, 0x51, 0x00, 0x00, 0x60, 0x80, - 0x02, 0x99, 0x20, 0x1c, 0x00, 0xf0, 0x07, 0xf9, - 0xff, 0x34, 0x01, 0x34, 0x66, 0x60, 0x27, 0x60, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x0f, 0x1c, 0x1e, 0x1c, 0x05, 0x1c, 0x14, 0x1c, - 0x10, 0x1c, 0x00, 0xf0, 0xd8, 0xfc, 0xa8, 0x88, - 0x39, 0x1c, 0x20, 0x80, 0x28, 0x89, 0x60, 0x80, - 0x20, 0x1c, 0x00, 0xf0, 0xf0, 0xf8, 0xff, 0x34, - 0x01, 0x34, 0x3c, 0x00, 0xcc, 0x51, 0x00, 0x00, - 0x66, 0x60, 0xf8, 0xbd, 0x70, 0xb5, 0x04, 0x1c, - 0xc0, 0x68, 0x05, 0x68, 0x20, 0x1c, 0x14, 0x30, - 0x06, 0x1c, 0x00, 0xf0, 0x0f, 0xfb, 0x00, 0x28, - 0x16, 0xd0, 0x01, 0x22, 0x02, 0x21, 0x20, 0x69, - 0x05, 0xf0, 0xf8, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0xfb, 0xf7, 0x24, 0xff, 0x00, 0x22, 0x02, 0x21, - 0x20, 0x69, 0x05, 0xf0, 0xef, 0xfa, 0x00, 0x28, - 0x06, 0xd0, 0xfb, 0xf7, 0x3c, 0x00, 0x08, 0x52, - 0x00, 0x00, 0x01, 0xff, 0x00, 0x28, 0x02, 0xd0, - 0x30, 0x1c, 0x0b, 0xf0, 0x7c, 0xfb, 0x68, 0x89, - 0x80, 0x07, 0xc0, 0x0f, 0x03, 0xf0, 0xa7, 0xf8, - 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0xc1, 0x68, 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, - 0xfb, 0xf7, 0xd4, 0xf8, 0x70, 0xbd, 0x94, 0x67, - 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x10, 0x1c, - 0x0d, 0x1c, 0x19, 0x1c, 0xff, 0x22, 0x3c, 0x00, - 0x44, 0x52, 0x00, 0x00, 0x00, 0x27, 0xff, 0x2d, - 0x25, 0xd0, 0x00, 0x29, 0x05, 0xd0, 0x4b, 0x88, - 0x00, 0x2b, 0x02, 0xd0, 0x00, 0xf0, 0x50, 0xfc, - 0x15, 0xe0, 0x00, 0x21, 0x10, 0x4e, 0x4b, 0x00, - 0x9e, 0x19, 0x02, 0x23, 0xf6, 0x5e, 0x86, 0x42, - 0x01, 0xdd, 0x0a, 0x1c, 0x04, 0xe0, 0x01, 0x31, - 0x09, 0x06, 0x09, 0x0e, 0x26, 0x29, 0xf1, 0xd3, - 0x09, 0x4e, 0x50, 0x00, 0x80, 0x19, 0x4e, 0x23, - 0x3c, 0x00, 0x80, 0x52, 0x00, 0x00, 0xc0, 0x5e, - 0x27, 0x2a, 0x07, 0xd2, 0x06, 0x49, 0x20, 0x39, - 0x49, 0x57, 0x47, 0x31, 0x40, 0x1a, 0x20, 0x60, - 0x01, 0x27, 0x02, 0xe0, 0x7e, 0x20, 0xc0, 0x43, - 0x20, 0x60, 0x38, 0x1c, 0xf8, 0xbd, 0xfa, 0x47, - 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x7e, 0x21, - 0x05, 0x1c, 0x00, 0x20, 0xc9, 0x43, 0x00, 0x2c, - 0x0f, 0xd0, 0x10, 0x1c, 0x05, 0xf0, 0x6b, 0xfd, - 0x00, 0x28, 0x3c, 0x00, 0xbc, 0x52, 0x00, 0x00, - 0x02, 0xd0, 0x21, 0x1c, 0xc9, 0x39, 0x01, 0xe0, - 0x21, 0x1c, 0x86, 0x39, 0x02, 0x20, 0xc0, 0x43, - 0xfb, 0xf7, 0xb4, 0xf9, 0x01, 0x1c, 0x01, 0x20, - 0x29, 0x60, 0xb0, 0xbd, 0x98, 0xb5, 0x14, 0x1c, - 0x00, 0x22, 0x00, 0x92, 0x22, 0x1c, 0xfd, 0xf7, - 0x43, 0xfe, 0x98, 0xbd, 0x05, 0x49, 0x80, 0xb5, - 0x08, 0x60, 0x05, 0x49, 0x01, 0x20, 0xc8, 0x61, - 0x01, 0x21, 0x00, 0x20, 0x3c, 0x00, 0xf8, 0x52, - 0x00, 0x00, 0x03, 0xf0, 0x1c, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20, - 0x03, 0xf0, 0x11, 0xfe, 0x06, 0xf0, 0x0d, 0xfb, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x09, 0x69, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x53, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, - 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c, - 0x0d, 0x1c, 0x04, 0x1c, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x2c, 0x07, 0xd1, 0x00, 0xf0, 0x36, 0xfa, - 0x00, 0x28, 0x05, 0xd0, 0x13, 0xf0, 0xca, 0xf9, - 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, - 0x3c, 0x00, 0x70, 0x53, 0x00, 0x00, 0x01, 0x20, - 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20, 0x0a, 0x4c, - 0x04, 0x34, 0x61, 0xc4, 0x10, 0x3c, 0x00, 0xf0, - 0x24, 0xfa, 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0, - 0xc6, 0xf9, 0x01, 0xe0, 0x00, 0xf0, 0xe5, 0xf8, - 0xc0, 0x30, 0xc3, 0x6b, 0x22, 0x1d, 0x07, 0xca, - 0xfb, 0xf7, 0x20, 0xf8, 0x00, 0x20, 0x70, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0d, 0x1c, 0x3c, 0x00, 0xac, 0x53, 0x00, 0x00, - 0x00, 0x21, 0x04, 0x1c, 0x28, 0x1c, 0x05, 0xf0, - 0xe3, 0xf9, 0x23, 0x1c, 0xff, 0x33, 0x21, 0x33, - 0xff, 0x27, 0x00, 0x28, 0x05, 0xd0, 0x22, 0x22, - 0x01, 0x1c, 0x18, 0x1c, 0xfb, 0xf7, 0x96, 0xf8, - 0x00, 0xe0, 0x1f, 0x70, 0x03, 0x21, 0x28, 0x1c, - 0x05, 0xf0, 0xd2, 0xf9, 0x26, 0x1c, 0xff, 0x36, - 0x41, 0x36, 0x00, 0x28, 0x05, 0xd0, 0x03, 0x22, - 0x01, 0x1c, 0xb0, 0x1c, 0x3c, 0x00, 0xe8, 0x53, - 0x00, 0x00, 0xfb, 0xf7, 0x86, 0xf8, 0x00, 0xe0, - 0xb7, 0x70, 0x01, 0x21, 0x28, 0x1c, 0x05, 0xf0, - 0xc2, 0xf9, 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c, - 0x20, 0x1c, 0xff, 0x30, 0x0a, 0x22, 0x46, 0x30, - 0xfb, 0xf7, 0x77, 0xf8, 0x00, 0xe0, 0x77, 0x71, - 0x32, 0x21, 0x28, 0x1c, 0x05, 0xf0, 0xb3, 0xf9, - 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c, 0x20, 0x1c, - 0xff, 0x30, 0x12, 0x22, 0x50, 0x30, 0x3c, 0x00, - 0x24, 0x54, 0x00, 0x00, 0xfb, 0xf7, 0x68, 0xf8, - 0x00, 0xe0, 0xf7, 0x73, 0x06, 0x21, 0x28, 0x1c, - 0x05, 0xf0, 0xa4, 0xf9, 0x00, 0x28, 0x07, 0xd0, - 0x01, 0x1c, 0x20, 0x1c, 0xff, 0x30, 0x04, 0x22, - 0x63, 0x30, 0xfb, 0xf7, 0x59, 0xf8, 0xf8, 0xbd, - 0xff, 0x34, 0x61, 0x34, 0xa7, 0x70, 0xfa, 0xe7, - 0x08, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0x07, 0x48, 0x01, 0x68, 0x08, 0x1c, - 0x3c, 0x00, 0x60, 0x54, 0x00, 0x00, 0x05, 0xd1, - 0x03, 0x21, 0x90, 0x20, 0xfb, 0xf7, 0x1d, 0xff, - 0x00, 0x20, 0x80, 0xbd, 0x01, 0xf0, 0xd7, 0xfb, - 0x80, 0xbd, 0x1c, 0x67, 0x01, 0x00, 0x20, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xe7, 0xff, - 0x80, 0xbd, 0xf0, 0xb5, 0x00, 0x24, 0x84, 0x46, - 0x00, 0x20, 0x0b, 0xe0, 0x87, 0x40, 0x17, 0x40, - 0x07, 0xd0, 0x14, 0x23, 0x0b, 0x4d, 0x43, 0x43, - 0x5b, 0x19, 0x3c, 0x00, 0x9c, 0x54, 0x00, 0x00, - 0x1b, 0x7c, 0x65, 0x46, 0x2b, 0x55, 0x01, 0x34, - 0x01, 0x30, 0x01, 0x27, 0x3b, 0x1c, 0x0e, 0x28, - 0x00, 0xd3, 0x00, 0x23, 0x0e, 0x88, 0x3d, 0x1c, - 0xa6, 0x42, 0x00, 0xdc, 0x00, 0x25, 0x2b, 0x40, - 0xe7, 0xd1, 0x0c, 0x80, 0xf0, 0xbd, 0x00, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x78, 0xb5, 0x04, 0x1c, - 0x01, 0x20, 0x20, 0x70, 0x08, 0x20, 0x00, 0xab, - 0x0d, 0x1c, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0x54, - 0x00, 0x00, 0x16, 0x1c, 0xa0, 0x1c, 0x69, 0x46, - 0xff, 0xf7, 0xd1, 0xff, 0x00, 0xab, 0x00, 0x22, - 0xd2, 0x43, 0x19, 0x88, 0x82, 0x40, 0x61, 0x70, - 0x32, 0x20, 0x28, 0x70, 0x10, 0x20, 0x18, 0x80, - 0x32, 0x40, 0xa8, 0x1c, 0x69, 0x46, 0xff, 0xf7, - 0xc2, 0xff, 0x00, 0xab, 0x18, 0x88, 0x68, 0x70, - 0x78, 0xbd, 0x80, 0xb5, 0x02, 0xf0, 0x35, 0xff, - 0x00, 0x21, 0x00, 0x28, 0x00, 0xd0, 0x3c, 0x00, - 0x14, 0x55, 0x00, 0x00, 0x01, 0x69, 0x08, 0x1c, - 0x80, 0xbd, 0x00, 0x00, 0x05, 0x49, 0x00, 0x28, - 0x01, 0xd0, 0xc8, 0x68, 0x00, 0xe0, 0x08, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00, - 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0, - 0x04, 0x30, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x02, 0x48, 0x00, 0x69, - 0x3c, 0x00, 0x50, 0x55, 0x00, 0x00, 0x00, 0x28, - 0xff, 0xd1, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x69, - 0x00, 0x28, 0x03, 0xd1, 0x04, 0x21, 0x90, 0x20, - 0xfb, 0xf7, 0x9b, 0xfe, 0x20, 0x69, 0x10, 0xbd, - 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x00, 0xf0, 0x40, 0xf9, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x20, 0x10, 0xbd, 0x20, 0x1c, - 0x00, 0xf0, 0x3c, 0x00, 0x8c, 0x55, 0x00, 0x00, - 0x57, 0xf9, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, - 0x10, 0xbd, 0x02, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x0f, 0x4e, 0x04, 0x1c, 0x30, 0x68, - 0x0d, 0x1c, 0x00, 0x28, 0x07, 0xd0, 0x21, 0x1c, - 0x04, 0x30, 0x05, 0xf0, 0xc1, 0xfb, 0x00, 0x28, - 0x01, 0xd0, 0x30, 0x68, 0x0b, 0xe0, 0x09, 0x4a, - 0x10, 0x68, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c, - 0x14, 0x1c, 0x04, 0x30, 0x3c, 0x00, 0xc8, 0x55, - 0x00, 0x00, 0x05, 0xf0, 0xb4, 0xfb, 0x00, 0x28, - 0x02, 0xd0, 0x20, 0x68, 0x9c, 0x30, 0x00, 0xe0, - 0x03, 0x48, 0x40, 0x5d, 0x70, 0xbd, 0x20, 0x67, - 0x01, 0x00, 0x1c, 0x67, 0x01, 0x00, 0xcc, 0x47, - 0x01, 0x00, 0x04, 0x49, 0x00, 0x20, 0x09, 0x69, - 0x00, 0x29, 0x02, 0xd0, 0xff, 0x31, 0x01, 0x31, - 0x88, 0x69, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x01, 0x48, 0x00, 0x7a, 0x3c, 0x00, - 0x04, 0x56, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c, - 0x00, 0x20, 0x1f, 0x1c, 0x14, 0x1c, 0x00, 0x29, - 0x02, 0x90, 0x19, 0xd0, 0x01, 0x29, 0x26, 0xd0, - 0x02, 0x29, 0x47, 0xd1, 0x26, 0x48, 0x00, 0x78, - 0x05, 0xf0, 0xa0, 0xfb, 0xa0, 0x72, 0x0a, 0xf0, - 0x4f, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0xa0, 0x7a, - 0x05, 0xf0, 0xaa, 0xfb, 0x00, 0x28, 0x04, 0xd0, - 0x3c, 0x00, 0x40, 0x56, 0x00, 0x00, 0x20, 0x48, - 0x00, 0x78, 0x05, 0xf0, 0x92, 0xfb, 0xa0, 0x72, - 0x00, 0x20, 0x20, 0x72, 0x2f, 0xe0, 0x1d, 0x4d, - 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfb, 0xf7, - 0x52, 0xfe, 0x00, 0x97, 0x2a, 0x68, 0x23, 0x1c, - 0x18, 0x32, 0x11, 0x1c, 0x30, 0x1c, 0xfc, 0xf7, - 0xde, 0xfb, 0x26, 0xe0, 0x30, 0x1c, 0x0c, 0xf0, - 0xca, 0xfb, 0x05, 0x1c, 0x02, 0xd0, 0xa8, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x7c, 0x56, 0x00, 0x00, - 0x08, 0xd1, 0x13, 0x48, 0x00, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0xfb, 0xf7, 0x3b, 0xfe, 0x10, 0x48, - 0x00, 0x68, 0x18, 0x30, 0x02, 0x1c, 0x0e, 0x48, - 0x00, 0x97, 0x01, 0x68, 0x23, 0x1c, 0x18, 0x31, - 0x30, 0x1c, 0xfc, 0xf7, 0xc3, 0xfb, 0x00, 0x2d, - 0x0a, 0xd0, 0x40, 0x35, 0x28, 0x88, 0x80, 0x06, - 0x06, 0xd4, 0x00, 0x20, 0x20, 0x60, 0x03, 0xe0, - 0x01, 0x21, 0x90, 0x20, 0x3c, 0x00, 0xb8, 0x56, - 0x00, 0x00, 0xfb, 0xf7, 0xf4, 0xfd, 0x02, 0x98, - 0xfe, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x90, 0x57, - 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x20, 0x02, 0xf0, - 0x4a, 0xfe, 0x18, 0x23, 0x05, 0x4a, 0x58, 0x43, - 0x80, 0x18, 0x40, 0x69, 0x01, 0x21, 0x00, 0x28, - 0x00, 0xd0, 0x41, 0x78, 0x08, 0x1c, 0x80, 0xbd, - 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0x56, 0x00, 0x00, 0x02, 0x49, 0x08, 0x69, - 0x00, 0x28, 0x00, 0xd1, 0xc8, 0x68, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x03, 0xd1, 0x05, 0x21, 0x90, 0x20, 0xfb, 0xf7, - 0xbd, 0xfd, 0xe0, 0x68, 0x10, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x57, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x00, 0x2a, - 0x03, 0xd0, 0x11, 0x49, 0x12, 0x4f, 0x0e, 0x78, - 0x01, 0xe0, 0x11, 0x4f, 0x0c, 0x26, 0x08, 0x2e, - 0x01, 0xd2, 0x34, 0x1c, 0x00, 0xe0, 0x08, 0x24, - 0x01, 0x21, 0x01, 0x70, 0x44, 0x70, 0x39, 0x1c, - 0x22, 0x1c, 0x02, 0x30, 0xfa, 0xf7, 0xcb, 0xfe, - 0x32, 0x1b, 0x00, 0x2a, 0x07, 0xdd, 0x32, 0x20, - 0x28, 0x70, 0x3c, 0x00, 0x6c, 0x57, 0x00, 0x00, - 0x39, 0x19, 0xa8, 0x1c, 0x6a, 0x70, 0xfa, 0xf7, - 0xc1, 0xfe, 0xf8, 0xbd, 0xff, 0x20, 0x28, 0x70, - 0x00, 0x20, 0x68, 0x70, 0xf9, 0xe7, 0x00, 0x00, - 0xa4, 0x69, 0x01, 0x00, 0xb0, 0x69, 0x01, 0x00, - 0x90, 0x57, 0x01, 0x00, 0x01, 0x49, 0x48, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, - 0x03, 0x49, 0x80, 0xb5, 0x08, 0x60, 0x01, 0x21, - 0x01, 0x20, 0x03, 0xf0, 0x3c, 0x00, 0xa8, 0x57, - 0x00, 0x00, 0xc5, 0xfb, 0x80, 0xbd, 0x1c, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x01, 0x20, - 0x03, 0xf0, 0xbd, 0xfb, 0x06, 0xf0, 0xb9, 0xf8, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x00, 0x00, 0x1c, 0x67, 0x01, 0x00, 0x03, 0x49, - 0x01, 0x20, 0xc9, 0x68, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68, 0x3c, 0x00, - 0xe4, 0x57, 0x00, 0x00, 0x00, 0x28, 0x01, 0xd0, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x01, 0x20, 0x03, 0xf0, 0x9b, 0xfb, 0x80, 0xbd, - 0x05, 0x4a, 0x80, 0xb5, 0x12, 0x69, 0x00, 0x21, - 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d, 0x05, 0xf0, - 0x91, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, - 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a, 0x80, 0xb5, - 0x3c, 0x00, 0x20, 0x58, 0x00, 0x00, 0x12, 0x69, - 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0, 0x11, 0x1c, - 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0, 0x8b, 0xfa, - 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, 0x10, 0x67, - 0x01, 0x00, 0x05, 0x4a, 0x80, 0xb5, 0xd2, 0x68, - 0x00, 0x21, 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d, - 0x05, 0xf0, 0x73, 0xfa, 0x01, 0x1c, 0x08, 0x1c, - 0x80, 0xbd, 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a, - 0x80, 0xb5, 0x3c, 0x00, 0x5c, 0x58, 0x00, 0x00, - 0xd2, 0x68, 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0, - 0x11, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0, - 0x6d, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, - 0x10, 0x67, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c, - 0x1f, 0x1c, 0x87, 0xb0, 0x10, 0x9e, 0x00, 0x24, - 0x02, 0xf0, 0x72, 0xfd, 0x18, 0x23, 0x13, 0x49, - 0x58, 0x43, 0x08, 0x58, 0x00, 0x28, 0x19, 0xd0, - 0x04, 0x1c, 0x33, 0x1c, 0x3c, 0x00, 0x98, 0x58, - 0x00, 0x00, 0x3a, 0x1c, 0x28, 0x1c, 0x09, 0x99, - 0xfa, 0xf7, 0x9f, 0xfd, 0x04, 0x1c, 0x14, 0xd0, - 0x18, 0x20, 0x00, 0xab, 0x18, 0x80, 0xaa, 0x68, - 0x01, 0xa8, 0x69, 0x46, 0xff, 0xf7, 0xe7, 0xfd, - 0x6a, 0x46, 0x01, 0xa9, 0x00, 0x20, 0x07, 0xf0, - 0x44, 0xfe, 0x00, 0x28, 0x05, 0xd1, 0x0a, 0x21, - 0x00, 0xe0, 0x0f, 0x21, 0x90, 0x20, 0xfb, 0xf7, - 0xea, 0xfc, 0x20, 0x1c, 0x0b, 0xb0, 0x3c, 0x00, - 0xd4, 0x58, 0x00, 0x00, 0xf0, 0xbd, 0x00, 0x00, - 0x94, 0x67, 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24, - 0x02, 0xf0, 0x44, 0xfd, 0x18, 0x23, 0x05, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x80, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0xfa, 0xf7, 0x71, 0xfd, 0x01, 0x24, - 0x20, 0x1c, 0x10, 0xbd, 0x94, 0x67, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x4b, 0x00, 0xf0, 0x4e, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, - 0x3c, 0x00, 0x10, 0x59, 0x00, 0x00, 0x80, 0xb5, - 0x02, 0x4b, 0x00, 0xf0, 0x46, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0e, 0x1c, 0x15, 0x1c, 0x00, 0x28, 0x1c, 0x49, - 0x10, 0xd0, 0x48, 0x68, 0x1c, 0x4a, 0x28, 0x80, - 0x00, 0x20, 0x07, 0xe0, 0x0b, 0x18, 0x1c, 0x7a, - 0x14, 0x23, 0x63, 0x43, 0x9b, 0x18, 0x1b, 0x7c, - 0x33, 0x54, 0x01, 0x30, 0x2b, 0x88, 0x83, 0x42, - 0xf4, 0xdc, 0x3c, 0x00, 0x4c, 0x59, 0x00, 0x00, - 0x24, 0xe0, 0x00, 0x20, 0x0f, 0x1c, 0x00, 0x24, - 0x08, 0x60, 0x0f, 0xe0, 0x30, 0x5d, 0x05, 0xf0, - 0x07, 0xfa, 0x0e, 0x28, 0x01, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x39, 0x19, 0x08, 0x72, 0x01, 0x22, - 0x39, 0x68, 0x82, 0x40, 0x11, 0x43, 0x08, 0x1c, - 0x38, 0x60, 0x01, 0x34, 0x28, 0x88, 0xa0, 0x42, - 0xec, 0xdc, 0x28, 0x88, 0x78, 0x60, 0xff, 0xf7, - 0xb7, 0xfe, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x59, - 0x00, 0x00, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29, - 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0, - 0x52, 0xfb, 0x01, 0x20, 0xe3, 0xe7, 0x2c, 0x7d, - 0x01, 0x00, 0x74, 0x40, 0x01, 0x00, 0x10, 0xb5, - 0x1c, 0x1c, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x78, - 0x0e, 0x28, 0x05, 0xd2, 0x14, 0x23, 0x0c, 0x4a, - 0x58, 0x43, 0x80, 0x18, 0x00, 0x7c, 0x00, 0xe0, - 0x00, 0x20, 0x08, 0x70, 0x0e, 0xe0, 0x3c, 0x00, - 0xc4, 0x59, 0x00, 0x00, 0x08, 0x78, 0x05, 0xf0, - 0xd1, 0xf9, 0x20, 0x70, 0xff, 0xf7, 0x92, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29, - 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0, - 0x2d, 0xfb, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x80, 0xb5, 0x27, 0x20, - 0xc0, 0x43, 0x09, 0xf0, 0x31, 0xfc, 0x80, 0xbd, - 0x80, 0xb5, 0x27, 0x20, 0xc0, 0x43, 0x09, 0xf0, - 0x3c, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x39, 0xfc, - 0x80, 0xbd, 0x80, 0xb5, 0x28, 0x20, 0x09, 0xf0, - 0x42, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x28, 0x20, 0x09, 0xf0, 0x4a, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x01, 0x28, 0x28, 0xd1, - 0x01, 0x29, 0x01, 0xd0, 0xfb, 0xf7, 0x6b, 0xfc, - 0xff, 0xf7, 0xe9, 0xfd, 0x02, 0x28, 0x1a, 0xd1, - 0x07, 0xf0, 0x13, 0xfc, 0x12, 0x4c, 0x21, 0x69, - 0x88, 0x42, 0x3c, 0x00, 0x3c, 0x5a, 0x00, 0x00, - 0x15, 0xd0, 0x07, 0xf0, 0x0d, 0xfc, 0x20, 0x61, - 0x20, 0x68, 0x7d, 0x24, 0xe4, 0x00, 0x44, 0x43, - 0x0d, 0xf0, 0xae, 0xf9, 0x05, 0x1c, 0x07, 0xf0, - 0x0b, 0xfc, 0x28, 0x1a, 0x84, 0x42, 0x00, 0xd9, - 0x24, 0x1a, 0x01, 0x22, 0x21, 0x1c, 0x0a, 0x20, - 0x0d, 0xf0, 0xb2, 0xfd, 0xb0, 0xbd, 0x00, 0x21, - 0x09, 0x20, 0x0c, 0xf0, 0x75, 0xfc, 0xb0, 0xbd, - 0x07, 0x21, 0x0a, 0x20, 0x3c, 0x00, 0x78, 0x5a, - 0x00, 0x00, 0xfb, 0xf7, 0x14, 0xfc, 0xb0, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x7d, 0x20, - 0x02, 0x49, 0x00, 0x01, 0x08, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x10, 0xb5, - 0x81, 0x6d, 0x04, 0x1c, 0xff, 0x30, 0x46, 0x30, - 0x0c, 0xf0, 0xd1, 0xfc, 0x20, 0x1c, 0xff, 0x30, - 0x50, 0x30, 0xa1, 0x6d, 0x0c, 0xf0, 0xcb, 0xfc, - 0x10, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00, - 0xb4, 0x5a, 0x00, 0x00, 0x0d, 0x1c, 0x02, 0xf0, - 0x59, 0xfc, 0x20, 0x1c, 0x02, 0xf0, 0x56, 0xfc, - 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x18, 0x22, 0x29, 0x1c, 0xfa, 0xf7, 0x70, 0xfd, - 0xb0, 0xbd, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xbc, 0xfb, - 0x20, 0x1c, 0x09, 0xf0, 0xc7, 0xfb, 0x10, 0xbd, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xd0, 0xfb, - 0x3c, 0x00, 0xf0, 0x5a, 0x00, 0x00, 0x20, 0x1c, - 0x09, 0xf0, 0xdb, 0xfb, 0x10, 0xbd, 0x70, 0xb5, - 0x0c, 0x78, 0x06, 0x1c, 0x48, 0x88, 0x4d, 0x78, - 0xe2, 0x00, 0x80, 0x1a, 0xe9, 0x00, 0x40, 0x1a, - 0x01, 0x1c, 0x41, 0x43, 0x12, 0x31, 0x24, 0x20, - 0xfa, 0xf7, 0x91, 0xfd, 0x21, 0x1c, 0x61, 0x43, - 0xc9, 0x00, 0x40, 0x18, 0x29, 0x1c, 0x69, 0x43, - 0xc9, 0x00, 0x42, 0x18, 0x0c, 0x49, 0x88, 0x79, - 0x0c, 0x4b, 0x3c, 0x00, 0x2c, 0x5b, 0x00, 0x00, - 0x53, 0x43, 0x0c, 0x4a, 0x13, 0x60, 0x53, 0x7b, - 0x34, 0x02, 0x14, 0x60, 0x52, 0x7b, 0x88, 0x71, - 0x01, 0x33, 0x58, 0x10, 0x08, 0x4b, 0x80, 0x1a, - 0x01, 0x21, 0x49, 0x02, 0x58, 0x43, 0x00, 0x28, - 0x00, 0xda, 0x49, 0x42, 0x08, 0x18, 0x80, 0x12, - 0x21, 0x38, 0x70, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0xec, 0x04, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, - 0x03, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x5b, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x21, - 0x04, 0x30, 0xfa, 0xf7, 0x70, 0xfc, 0xff, 0x20, - 0x21, 0x30, 0xff, 0x21, 0x01, 0x55, 0x20, 0x1c, - 0xff, 0x30, 0x41, 0x30, 0x81, 0x70, 0x41, 0x71, - 0xc1, 0x73, 0xff, 0x20, 0x63, 0x30, 0x01, 0x55, - 0x00, 0x20, 0x20, 0x61, 0x60, 0x61, 0xff, 0x34, - 0x01, 0x34, 0xa0, 0x60, 0xe0, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00, - 0xa4, 0x5b, 0x00, 0x00, 0x08, 0x1c, 0x58, 0x60, - 0x9a, 0x60, 0x1c, 0x1c, 0x1e, 0x60, 0x15, 0x1c, - 0x9b, 0x8a, 0xe2, 0x8a, 0x31, 0x1c, 0x02, 0xf0, - 0xa1, 0xfc, 0x28, 0x1a, 0xe0, 0x60, 0x70, 0xbd, - 0x70, 0xb5, 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c, - 0x1e, 0x1c, 0x00, 0x25, 0xeb, 0x43, 0x22, 0x1c, - 0x18, 0x32, 0x0b, 0xf0, 0xf7, 0xfb, 0x22, 0x1c, - 0xff, 0x32, 0x50, 0x32, 0x11, 0x1c, 0x0a, 0x39, - 0x3c, 0x00, 0xe0, 0x5b, 0x00, 0x00, 0x01, 0x23, - 0x20, 0x1c, 0x00, 0xf0, 0xc6, 0xf8, 0x0c, 0x28, - 0x10, 0xd0, 0x01, 0x25, 0x20, 0x1c, 0x0b, 0xf0, - 0xac, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0x19, 0xf8, - 0x20, 0x1c, 0x00, 0xf0, 0x0a, 0xf8, 0x20, 0x1c, - 0x00, 0xf0, 0x29, 0xf8, 0x31, 0x1c, 0x20, 0x1c, - 0x0b, 0xf0, 0x17, 0xfa, 0x28, 0x1c, 0x70, 0xbd, - 0x00, 0x00, 0xff, 0x21, 0x1d, 0x31, 0x09, 0x58, - 0x80, 0x30, 0x3c, 0x00, 0x1c, 0x5c, 0x00, 0x00, - 0x89, 0x07, 0x00, 0x29, 0x01, 0xda, 0x01, 0x21, - 0x00, 0xe0, 0x00, 0x21, 0xc1, 0x62, 0x70, 0x47, - 0x01, 0x1c, 0x80, 0x31, 0x00, 0x22, 0x0a, 0x63, - 0x07, 0x4a, 0x12, 0x68, 0x00, 0x2a, 0x09, 0xd0, - 0x42, 0x88, 0x92, 0x06, 0x06, 0xd5, 0xff, 0x30, - 0x01, 0x30, 0xc0, 0x69, 0x40, 0x07, 0x01, 0xd4, - 0x01, 0x20, 0x08, 0x63, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x5c, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x4a, 0x88, - 0x00, 0x20, 0x52, 0x05, 0x05, 0xd5, 0xff, 0x31, - 0x01, 0x31, 0xc9, 0x69, 0x49, 0x07, 0x00, 0xd4, - 0x01, 0x20, 0x06, 0xf0, 0xec, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x98, 0x68, - 0x17, 0x1c, 0x0e, 0x1c, 0x1c, 0x1c, 0x00, 0x28, - 0x02, 0xd1, 0x20, 0x1c, 0x0c, 0xf0, 0x31, 0xf8, - 0xab, 0x69, 0x39, 0x1c, 0x30, 0x1c, 0x3c, 0x00, - 0x94, 0x5c, 0x00, 0x00, 0xa2, 0x68, 0x0b, 0xf0, - 0x95, 0xfb, 0xf8, 0xbd, 0xf8, 0xb5, 0x16, 0x1c, - 0x0d, 0x1c, 0x1f, 0x1c, 0x00, 0x24, 0x02, 0xf0, - 0x61, 0xfb, 0x18, 0x23, 0x06, 0x49, 0x58, 0x43, - 0x40, 0x18, 0x43, 0x68, 0x00, 0x2b, 0x05, 0xd0, - 0x3a, 0x1c, 0x31, 0x1c, 0x28, 0x1c, 0xfa, 0xf7, - 0x8e, 0xfb, 0x01, 0x24, 0x20, 0x1c, 0xf8, 0xbd, - 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x07, 0xf0, - 0x3c, 0x00, 0xd0, 0x5c, 0x00, 0x00, 0xc5, 0xfa, - 0x09, 0x49, 0x08, 0x61, 0x08, 0x68, 0x00, 0x28, - 0x02, 0xd1, 0x7d, 0x20, 0x00, 0x01, 0x08, 0x60, - 0x08, 0x68, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43, - 0x00, 0x23, 0x01, 0x22, 0x0a, 0x20, 0x0d, 0xf0, - 0x4e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x0a, 0x20, - 0x0d, 0xf0, 0x97, 0xfc, 0x80, 0xbd, 0xf8, 0xb5, - 0x0e, 0x1c, 0x3c, 0x00, 0x0c, 0x5d, 0x00, 0x00, - 0x51, 0x68, 0x14, 0x1c, 0x12, 0x68, 0xa5, 0x68, - 0x0b, 0x1c, 0x75, 0x1b, 0x57, 0x19, 0x97, 0x42, - 0x00, 0xd2, 0x01, 0x31, 0x42, 0x68, 0x00, 0x25, - 0x8a, 0x42, 0x02, 0xdd, 0x01, 0x25, 0x62, 0x60, - 0x05, 0xe0, 0x9a, 0x42, 0x03, 0xd1, 0x01, 0x68, - 0xb9, 0x42, 0x00, 0xd9, 0x01, 0x25, 0x00, 0x2d, - 0x09, 0xd0, 0x01, 0x68, 0x21, 0x60, 0xa6, 0x60, - 0xa3, 0x8a, 0xe2, 0x8a, 0x3c, 0x00, 0x48, 0x5d, - 0x00, 0x00, 0x60, 0x68, 0x02, 0xf0, 0xd7, 0xfb, - 0x30, 0x1a, 0xe0, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0x07, 0xfb, - 0x18, 0x23, 0x03, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x18, 0x21, 0xfa, 0xf7, 0x98, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0xfe, 0xb5, - 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c, 0x1e, 0x1c, - 0x0c, 0x25, 0x01, 0x22, 0x00, 0x92, 0x3c, 0x00, - 0x84, 0x5d, 0x00, 0x00, 0xa2, 0x69, 0x02, 0xab, - 0xfd, 0xf7, 0xf0, 0xf8, 0x00, 0x28, 0x45, 0xd0, - 0x02, 0x98, 0x27, 0x21, 0x02, 0x1c, 0x0a, 0x40, - 0x01, 0xd1, 0x08, 0x43, 0x02, 0x90, 0x21, 0x49, - 0xa0, 0x69, 0x08, 0x40, 0x06, 0xd0, 0x02, 0x98, - 0x01, 0x40, 0x03, 0xd1, 0x49, 0x21, 0xc9, 0x00, - 0x08, 0x43, 0x02, 0x90, 0xa0, 0x6d, 0x02, 0x99, - 0x88, 0x42, 0x30, 0xd0, 0x00, 0x2e, 0x2d, 0xd0, - 0x3c, 0x00, 0xc0, 0x5d, 0x00, 0x00, 0x40, 0x21, - 0x20, 0x1c, 0x58, 0x30, 0xfa, 0xf7, 0x69, 0xfb, - 0x02, 0x98, 0x00, 0x25, 0x00, 0x26, 0x37, 0x1c, - 0xa0, 0x65, 0x19, 0xe0, 0xc0, 0x07, 0x11, 0xd5, - 0xf0, 0x19, 0x00, 0x19, 0x70, 0x30, 0x05, 0x71, - 0x28, 0x1c, 0x04, 0xf0, 0xd4, 0xff, 0x00, 0x28, - 0x04, 0xd0, 0xa0, 0x19, 0x80, 0x30, 0x05, 0x72, - 0x01, 0x36, 0x03, 0xe0, 0xe0, 0x19, 0x60, 0x30, - 0x05, 0x70, 0x3c, 0x00, 0xfc, 0x5d, 0x00, 0x00, - 0x01, 0x37, 0x01, 0x35, 0x2d, 0x06, 0x02, 0x98, - 0x2d, 0x0e, 0x40, 0x08, 0x02, 0x90, 0x02, 0x98, - 0x00, 0x28, 0xe2, 0xd1, 0x84, 0x20, 0x06, 0x51, - 0xf0, 0x19, 0x20, 0x67, 0xe7, 0x65, 0x00, 0x25, - 0x00, 0xe0, 0x0b, 0x25, 0x28, 0x1c, 0xfe, 0xbd, - 0xd8, 0x3a, 0x00, 0x00, 0x38, 0xb5, 0x05, 0x1c, - 0x08, 0x1c, 0x11, 0x1c, 0x00, 0x24, 0xe2, 0x43, - 0x6b, 0x46, 0xff, 0xf7, 0x3c, 0x00, 0x38, 0x5e, - 0x00, 0x00, 0x4f, 0xfa, 0x00, 0x28, 0x05, 0xd0, - 0xa8, 0x69, 0x00, 0x99, 0x01, 0x40, 0x81, 0x42, - 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0x00, 0x00, 0x7c, 0xb5, 0x05, 0x6a, 0x86, 0x69, - 0x04, 0x1c, 0xc0, 0x68, 0xfb, 0xf7, 0xb7, 0xfb, - 0xe1, 0x69, 0xfb, 0xf7, 0xda, 0xfa, 0x20, 0x1c, - 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89, - 0x89, 0x18, 0xc1, 0x83, 0x06, 0x49, 0x3c, 0x00, - 0x74, 0x5e, 0x00, 0x00, 0x01, 0x94, 0x00, 0x91, - 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88, 0x01, 0x68, - 0xe0, 0x68, 0xc0, 0x68, 0x00, 0xf0, 0xf2, 0xf9, - 0x7c, 0xbd, 0x00, 0x00, 0x91, 0x5e, 0x00, 0x00, - 0xb0, 0xb5, 0xd1, 0x68, 0x55, 0x69, 0xc8, 0x68, - 0x14, 0x1c, 0x14, 0x4b, 0x0c, 0xe0, 0x02, 0x68, - 0x9a, 0x42, 0x07, 0xd1, 0xc2, 0x68, 0xca, 0x60, - 0x00, 0x21, 0xc1, 0x60, 0x01, 0x60, 0xfb, 0xf7, - 0x3c, 0x00, 0xb0, 0x5e, 0x00, 0x00, 0x73, 0xfb, - 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68, 0x00, 0x28, - 0xf0, 0xd1, 0xe0, 0x68, 0xc0, 0x68, 0xe8, 0x60, - 0xe0, 0x68, 0xc5, 0x60, 0x20, 0x1c, 0x40, 0x30, - 0xc1, 0x8b, 0x2a, 0x89, 0x89, 0x18, 0xc1, 0x83, - 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, - 0xba, 0xff, 0xb0, 0xbd, 0x04, 0x48, 0x04, 0xf0, - 0x4e, 0xf9, 0x00, 0x6a, 0x07, 0xf0, 0x77, 0xfa, - 0xb0, 0xbd, 0x3c, 0x00, 0xec, 0x5e, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xa0, 0x6a, 0x01, 0x00, - 0xf1, 0xb5, 0x82, 0xb0, 0x02, 0x98, 0x06, 0x69, - 0x01, 0x1c, 0x08, 0x36, 0x60, 0x31, 0x45, 0x68, - 0x01, 0x91, 0x82, 0xe0, 0x10, 0x21, 0x00, 0x20, - 0x2f, 0x69, 0xfb, 0xf7, 0x63, 0xfb, 0x68, 0x61, - 0x01, 0x89, 0x08, 0x39, 0x09, 0x04, 0x09, 0x0c, - 0x01, 0x81, 0x68, 0x69, 0x00, 0x68, 0x40, 0x18, - 0x08, 0x21, 0xfb, 0xf7, 0x3c, 0x00, 0x28, 0x5f, - 0x00, 0x00, 0x57, 0xfb, 0xe8, 0x61, 0x68, 0x69, - 0x71, 0x88, 0x00, 0x68, 0x20, 0x22, 0x01, 0x80, - 0x71, 0x68, 0x41, 0x60, 0x01, 0x99, 0x49, 0x7b, - 0x89, 0x01, 0x11, 0x43, 0xc1, 0x70, 0x00, 0x21, - 0x81, 0x70, 0x28, 0x20, 0xfb, 0xf7, 0x75, 0xfc, - 0x39, 0x88, 0x04, 0x1c, 0xc1, 0x81, 0xa8, 0x6b, - 0x00, 0x28, 0x03, 0xd1, 0x01, 0x20, 0x80, 0x02, - 0x08, 0x43, 0xe0, 0x81, 0x06, 0x22, 0x3c, 0x00, - 0x64, 0x5f, 0x00, 0x00, 0x39, 0x1d, 0x20, 0x1c, - 0x10, 0x30, 0xfa, 0xf7, 0xc5, 0xfa, 0x39, 0x1c, - 0x0a, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x16, 0x30, - 0x00, 0x90, 0xfa, 0xf7, 0xbd, 0xfa, 0x39, 0x1c, - 0x10, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x1c, 0x30, - 0xfa, 0xf7, 0xb6, 0xfa, 0xe1, 0x89, 0x25, 0x4a, - 0x5c, 0x20, 0x11, 0x40, 0x01, 0x22, 0x92, 0x03, - 0x11, 0x43, 0x40, 0x5b, 0xe1, 0x81, 0x0f, 0x21, - 0x3c, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x08, 0x40, - 0x60, 0x84, 0x20, 0x1c, 0x20, 0x30, 0x16, 0x21, - 0x81, 0x71, 0x00, 0x21, 0x21, 0x70, 0xe9, 0x6b, - 0x00, 0x29, 0x07, 0xd0, 0x29, 0x69, 0x09, 0x8b, - 0x09, 0x07, 0x09, 0x0f, 0x21, 0x70, 0xa1, 0x84, - 0x18, 0x21, 0x81, 0x71, 0x06, 0x22, 0x60, 0x1c, - 0x00, 0x99, 0xfa, 0xf7, 0x94, 0xfa, 0x70, 0x68, - 0x00, 0x0e, 0xe0, 0x71, 0x70, 0x68, 0x00, 0x02, - 0x00, 0x0e, 0x3c, 0x00, 0xdc, 0x5f, 0x00, 0x00, - 0x20, 0x72, 0x70, 0x68, 0x00, 0x04, 0x00, 0x0e, - 0x60, 0x72, 0x70, 0x68, 0xa0, 0x72, 0x70, 0x88, - 0x00, 0x0a, 0xe0, 0x72, 0x70, 0x88, 0x20, 0x73, - 0x70, 0x88, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c, - 0x70, 0x80, 0x02, 0xd1, 0x70, 0x68, 0x01, 0x30, - 0x70, 0x60, 0xac, 0x61, 0x02, 0x98, 0x28, 0x62, - 0x2d, 0x68, 0x00, 0x2d, 0x00, 0xd0, 0x79, 0xe7, - 0x02, 0x98, 0x04, 0x49, 0x3c, 0x00, 0x18, 0x60, - 0x00, 0x00, 0x42, 0x68, 0x04, 0x48, 0x04, 0xf0, - 0x74, 0xf8, 0xfe, 0xbd, 0x00, 0x00, 0x8f, 0xc7, - 0xff, 0xff, 0x3d, 0xda, 0x00, 0x00, 0xa0, 0x6a, - 0x01, 0x00, 0xb0, 0xb5, 0x07, 0x4d, 0x28, 0x78, - 0x03, 0x28, 0x08, 0xd0, 0x00, 0x24, 0x2c, 0x70, - 0x69, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x01, 0x20, - 0xfa, 0xf7, 0xc8, 0xf9, 0x6c, 0x60, 0xb0, 0xbd, - 0x00, 0x00, 0x9c, 0x73, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0x60, 0x00, 0x00, 0xf8, 0xb5, 0x2b, 0x4b, - 0xd8, 0x6a, 0x00, 0x28, 0x50, 0xd0, 0x2a, 0x48, - 0x01, 0x1c, 0xff, 0x31, 0x01, 0x31, 0xca, 0x68, - 0x01, 0x32, 0xca, 0x60, 0x1a, 0x6c, 0x00, 0x2a, - 0x02, 0xd1, 0x4a, 0x69, 0x01, 0x32, 0x4a, 0x61, - 0x0a, 0x69, 0x01, 0x32, 0x0a, 0x61, 0xda, 0x68, - 0x00, 0x2a, 0x04, 0xd0, 0x1f, 0x4a, 0x01, 0x32, - 0x12, 0x78, 0x00, 0x2a, 0x02, 0xd1, 0x8a, 0x69, - 0x3c, 0x00, 0x90, 0x60, 0x00, 0x00, 0x01, 0x32, - 0x8a, 0x61, 0x00, 0x25, 0x07, 0x1d, 0x18, 0x26, - 0x1a, 0x4a, 0x6e, 0x43, 0x74, 0x32, 0x90, 0x59, - 0x00, 0x28, 0x29, 0xd0, 0xb4, 0x18, 0x60, 0x69, - 0x00, 0x28, 0x25, 0xd1, 0x60, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0x01, 0x68, 0x00, 0x29, 0x05, 0xd1, - 0xa1, 0x68, 0x00, 0x29, 0x1c, 0xd0, 0x09, 0x68, - 0x00, 0x29, 0x19, 0xd0, 0x00, 0x28, 0x05, 0xd0, - 0xe1, 0x68, 0x3c, 0x00, 0xcc, 0x60, 0x00, 0x00, - 0x01, 0x31, 0xe1, 0x60, 0x00, 0x68, 0x81, 0x42, - 0x11, 0xd3, 0xa0, 0x68, 0x00, 0x28, 0x06, 0xd0, - 0x21, 0x69, 0x00, 0x68, 0x08, 0x18, 0x0c, 0xf0, - 0xa3, 0xfd, 0x00, 0x28, 0x07, 0xd0, 0x06, 0x4a, - 0x01, 0x20, 0x60, 0x61, 0x74, 0x32, 0x91, 0x59, - 0x38, 0x1c, 0xfa, 0xf7, 0x70, 0xf9, 0x01, 0x35, - 0x02, 0x2d, 0xcb, 0xdb, 0xf8, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x61, - 0x00, 0x00, 0xf4, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0f, 0x1c, 0x00, 0x25, 0x04, 0x1c, 0x00, 0x28, - 0x25, 0xd0, 0x20, 0x1c, 0x04, 0xf0, 0x03, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0xff, 0xf7, 0xff, 0xf8, - 0x04, 0x1c, 0xff, 0xf7, 0x50, 0xfb, 0x06, 0x1c, - 0x07, 0xe0, 0x20, 0x1c, 0xff, 0xf7, 0x91, 0xfb, - 0x06, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0x6f, 0xfb, - 0x04, 0x1c, 0x00, 0x2e, 0x06, 0xd0, 0x3c, 0x00, - 0x44, 0x61, 0x00, 0x00, 0xff, 0xf7, 0x4c, 0xfb, - 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25, 0x01, 0x20, - 0x07, 0xe0, 0x00, 0x2c, 0x06, 0xd0, 0xff, 0xf7, - 0xef, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25, - 0x00, 0x20, 0x38, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0xb0, 0xb5, 0xc5, 0x68, 0x04, 0x1c, 0x0d, 0xf0, - 0x8f, 0xfc, 0x20, 0x7e, 0xc1, 0x07, 0x08, 0xd5, - 0xe1, 0x68, 0xa9, 0x42, 0x05, 0xd9, 0x22, 0x69, - 0x3c, 0x00, 0x80, 0x61, 0x00, 0x00, 0x91, 0x42, - 0x02, 0xd3, 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82, - 0x81, 0x07, 0x08, 0xd5, 0xe1, 0x68, 0xa9, 0x42, - 0x05, 0xd2, 0x22, 0x69, 0x91, 0x42, 0x02, 0xd8, - 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82, 0x40, 0x07, - 0x06, 0xd5, 0xe0, 0x68, 0x21, 0x69, 0x88, 0x42, - 0x02, 0xd1, 0xe0, 0x8a, 0x01, 0x30, 0xe0, 0x82, - 0xe0, 0x8a, 0xa1, 0x8a, 0x88, 0x42, 0x0d, 0xd3, - 0x60, 0x7e, 0x3c, 0x00, 0xbc, 0x61, 0x00, 0x00, - 0x02, 0x28, 0x0b, 0xd0, 0x20, 0x68, 0xe1, 0x68, - 0x04, 0x22, 0x07, 0xf0, 0x65, 0xfb, 0x60, 0x7e, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x68, 0x08, 0xf0, - 0xab, 0xff, 0xb0, 0xbd, 0x00, 0x20, 0xe0, 0x82, - 0xb0, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, - 0x0c, 0x23, 0x20, 0x49, 0x58, 0x43, 0x45, 0x18, - 0x00, 0x20, 0xa8, 0x60, 0x30, 0x1c, 0x06, 0xf0, - 0x91, 0xfe, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x61, - 0x00, 0x00, 0x68, 0x60, 0x33, 0xd0, 0x01, 0x20, - 0xa8, 0x70, 0x2c, 0x20, 0x00, 0x5d, 0x02, 0x28, - 0x03, 0xd1, 0x20, 0x1c, 0x03, 0xf0, 0x45, 0xfe, - 0x10, 0xe0, 0x61, 0x6b, 0x00, 0x29, 0x0a, 0xd0, - 0x01, 0x28, 0x04, 0xd1, 0x21, 0x1c, 0x28, 0x1c, - 0x03, 0xf0, 0x55, 0xfe, 0x06, 0xe0, 0x20, 0x1c, - 0x0a, 0xf0, 0x0d, 0xfc, 0x02, 0xe0, 0x20, 0x1c, - 0x0a, 0xf0, 0x3d, 0xfb, 0x0d, 0x48, 0x3c, 0x00, - 0x34, 0x62, 0x00, 0x00, 0x14, 0x38, 0x41, 0x68, - 0x00, 0x29, 0x10, 0xd0, 0x20, 0x1c, 0x40, 0x30, - 0x02, 0x8b, 0x12, 0x07, 0x92, 0x0f, 0x01, 0x2a, - 0x09, 0xd0, 0x80, 0x8b, 0x32, 0x02, 0x00, 0x09, - 0x00, 0x04, 0x10, 0x43, 0x81, 0x22, 0x02, 0x43, - 0x0c, 0x20, 0x0d, 0xf0, 0xb7, 0xf9, 0x0c, 0xf0, - 0xa5, 0xfd, 0x60, 0x64, 0x70, 0xbd, 0x00, 0x00, - 0x60, 0x7b, 0x01, 0x00, 0xff, 0xb5, 0x08, 0x1c, - 0x3c, 0x00, 0x70, 0x62, 0x00, 0x00, 0x11, 0x1c, - 0x0c, 0x32, 0x20, 0x24, 0x14, 0x43, 0x0c, 0x4a, - 0x83, 0xb0, 0x0c, 0xae, 0x52, 0x68, 0x60, 0xce, - 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63, - 0x0d, 0x23, 0x40, 0x27, 0xbb, 0x52, 0x94, 0x61, - 0x14, 0x84, 0x01, 0x22, 0x02, 0x92, 0x32, 0x1c, - 0x00, 0x90, 0x01, 0x91, 0x23, 0x1c, 0x29, 0x1c, - 0x03, 0x98, 0x00, 0xf0, 0x66, 0xf9, 0x07, 0xb0, - 0xf0, 0xbd, 0x3c, 0x00, 0xac, 0x62, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x00, 0x27, 0x11, 0x4e, 0x1d, 0xe0, 0xe0, 0x68, - 0x00, 0x28, 0x70, 0x68, 0x0c, 0xd1, 0x80, 0x88, - 0x00, 0x07, 0x0d, 0xd1, 0x01, 0x21, 0x0c, 0x48, - 0xfb, 0xf7, 0x84, 0xf9, 0xc4, 0x60, 0xe8, 0x60, - 0x70, 0x68, 0x81, 0x88, 0x01, 0x31, 0x02, 0xe0, - 0x81, 0x88, 0x22, 0x89, 0x89, 0x18, 0x81, 0x80, - 0xe0, 0x68, 0x39, 0x1c, 0x3c, 0x00, 0xe8, 0x62, - 0x00, 0x00, 0x00, 0x28, 0x01, 0xd1, 0x71, 0x68, - 0xc9, 0x6d, 0x25, 0x1c, 0x61, 0x60, 0x04, 0x1c, - 0x00, 0x2c, 0xdf, 0xd1, 0xf8, 0xbd, 0xa0, 0x7e, - 0x01, 0x00, 0x06, 0x49, 0x10, 0xb5, 0x49, 0x68, - 0x00, 0x23, 0x05, 0xe0, 0x8a, 0x88, 0x04, 0x89, - 0x12, 0x19, 0x8a, 0x80, 0x43, 0x60, 0xc0, 0x68, - 0x00, 0x28, 0xf7, 0xd1, 0x10, 0xbd, 0xa0, 0x7e, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x49, 0x3c, 0x00, - 0x24, 0x63, 0x00, 0x00, 0x00, 0x24, 0x49, 0x68, - 0x0a, 0xe0, 0x8a, 0x88, 0x03, 0x89, 0xd2, 0x18, - 0x8a, 0x80, 0xc3, 0x68, 0x22, 0x1c, 0x00, 0x2b, - 0x00, 0xd1, 0xca, 0x6d, 0x42, 0x60, 0x18, 0x1c, - 0x00, 0x28, 0xf2, 0xd1, 0x10, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x01, 0x1c, 0x13, 0x48, - 0x10, 0xb5, 0x40, 0x68, 0x00, 0x23, 0x09, 0xe0, - 0x82, 0x88, 0x0c, 0x89, 0x12, 0x19, 0x82, 0x80, - 0x3c, 0x00, 0x60, 0x63, 0x00, 0x00, 0x4b, 0x60, - 0xca, 0x68, 0x00, 0x2a, 0x00, 0xd1, 0x41, 0x66, - 0xc9, 0x68, 0x00, 0x29, 0xf3, 0xd1, 0x01, 0x1c, - 0x68, 0x31, 0x81, 0x64, 0xc3, 0x64, 0x43, 0x65, - 0x82, 0x88, 0x08, 0x23, 0x11, 0x1c, 0x08, 0x31, - 0x89, 0x07, 0x89, 0x0f, 0x59, 0x1a, 0x50, 0x23, - 0x19, 0x52, 0x51, 0x18, 0x81, 0x80, 0x01, 0x1c, - 0x40, 0x6e, 0x48, 0x31, 0xc1, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x63, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x49, - 0x00, 0x24, 0x4b, 0x68, 0x06, 0xe0, 0xc2, 0x68, - 0x21, 0x1c, 0x00, 0x2a, 0x00, 0xd1, 0xd9, 0x6d, - 0x41, 0x60, 0x10, 0x1c, 0x00, 0x28, 0xf6, 0xd1, - 0x10, 0xbd, 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xfe, 0xb5, 0x06, 0x1c, - 0x0c, 0x48, 0x0c, 0x1c, 0x40, 0x68, 0x80, 0x21, - 0x81, 0x70, 0x00, 0x21, 0x3c, 0x00, 0xd8, 0x63, - 0x00, 0x00, 0xc1, 0x70, 0x15, 0x1c, 0x40, 0x22, - 0x81, 0x63, 0x11, 0x52, 0x81, 0x61, 0x01, 0x84, - 0x00, 0x20, 0x04, 0x22, 0x02, 0x92, 0x00, 0x90, - 0x01, 0x91, 0x29, 0x1c, 0x20, 0x1c, 0x1a, 0x1c, - 0x33, 0x1c, 0x00, 0xf0, 0xbc, 0xf8, 0xfe, 0xbd, - 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00, 0x70, 0xb5, - 0x06, 0x1c, 0x17, 0x48, 0x80, 0x78, 0x02, 0x21, - 0x16, 0x4a, 0x88, 0x43, 0x90, 0x70, 0x3c, 0x00, - 0x14, 0x64, 0x00, 0x00, 0x10, 0x1c, 0x80, 0x78, - 0x08, 0x43, 0x11, 0x1c, 0x88, 0x70, 0x13, 0x48, - 0x00, 0x24, 0xc4, 0x70, 0x70, 0x20, 0xfb, 0xf7, - 0xd9, 0xf9, 0x11, 0x4d, 0x70, 0x21, 0x68, 0x60, - 0xfa, 0xf7, 0x34, 0xf8, 0x30, 0x07, 0x00, 0x0f, - 0x69, 0x68, 0x90, 0x30, 0xc8, 0x65, 0x0d, 0x48, - 0x68, 0x22, 0x08, 0x80, 0x08, 0x1c, 0x28, 0x30, - 0x89, 0x60, 0x48, 0x61, 0x08, 0x20, 0x08, 0x82, - 0x3c, 0x00, 0x50, 0x64, 0x00, 0x00, 0x08, 0x1c, - 0x38, 0x30, 0x48, 0x63, 0x20, 0x38, 0x48, 0x64, - 0x5a, 0x20, 0x50, 0x54, 0x06, 0x48, 0x08, 0x31, - 0x41, 0x64, 0x44, 0x65, 0x70, 0xbd, 0x00, 0x00, - 0x07, 0x00, 0x58, 0x00, 0x07, 0x00, 0xa0, 0x7e, - 0x01, 0x00, 0xde, 0xc0, 0x00, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x0a, 0x4b, 0x10, 0xb5, 0x58, 0x6d, - 0x0a, 0x49, 0x00, 0x22, 0x49, 0x68, 0x00, 0x24, - 0x4a, 0x62, 0x3c, 0x00, 0x8c, 0x64, 0x00, 0x00, - 0x5c, 0x65, 0x4b, 0x6e, 0x00, 0x2b, 0x01, 0xd0, - 0xda, 0x60, 0x4a, 0x66, 0x8b, 0x6d, 0x00, 0x2b, - 0x03, 0xd0, 0x0a, 0x6e, 0x00, 0x21, 0xf9, 0xf7, - 0x9c, 0xff, 0x10, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5, - 0x08, 0x88, 0x01, 0x30, 0x08, 0x80, 0x01, 0x20, - 0x07, 0x49, 0x80, 0x02, 0x08, 0x60, 0x07, 0x4c, - 0xa2, 0x6d, 0x00, 0x2a, 0x3c, 0x00, 0xc8, 0x64, - 0x00, 0x00, 0x05, 0xd0, 0x05, 0x21, 0xd1, 0x20, - 0x0d, 0xf0, 0x6f, 0xf9, 0x01, 0x20, 0xa0, 0x65, - 0x10, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5, - 0x83, 0xb0, 0x0c, 0xae, 0x86, 0x46, 0x8c, 0x46, - 0x0e, 0x4a, 0x43, 0xce, 0x0f, 0xad, 0x0f, 0x1c, - 0x52, 0x68, 0x0c, 0x37, 0x30, 0xcd, 0x97, 0x70, - 0xd3, 0x70, 0x96, 0x63, 0x0d, 0x26, 0x3c, 0x00, - 0x04, 0x65, 0x00, 0x00, 0x40, 0x27, 0xbe, 0x52, - 0x05, 0x9e, 0x96, 0x61, 0x13, 0x84, 0x00, 0x22, - 0x02, 0x92, 0x2a, 0x1c, 0x00, 0x90, 0x01, 0x91, - 0x21, 0x1c, 0x60, 0x46, 0x73, 0x46, 0x00, 0xf0, - 0x29, 0xf8, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xff, 0xb5, 0x10, 0x1c, - 0x1a, 0x1c, 0x0c, 0x1c, 0x19, 0x1c, 0x60, 0x23, - 0xff, 0x32, 0x13, 0x43, 0x0c, 0x4a, 0x83, 0xb0, - 0x3c, 0x00, 0x40, 0x65, 0x00, 0x00, 0x0c, 0xae, - 0x52, 0x68, 0x60, 0xce, 0x93, 0x70, 0x00, 0x23, - 0xd3, 0x70, 0x93, 0x63, 0x40, 0x27, 0xbb, 0x52, - 0x93, 0x61, 0x13, 0x84, 0x03, 0x22, 0x02, 0x92, - 0x01, 0x91, 0x29, 0x1c, 0x32, 0x1c, 0x00, 0x90, - 0x20, 0x1c, 0x03, 0x9b, 0x00, 0xf0, 0x05, 0xf8, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xa0, 0x7e, - 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x11, 0x48, - 0x1c, 0x1c, 0x3c, 0x00, 0x7c, 0x65, 0x00, 0x00, - 0x08, 0x9b, 0x07, 0x9f, 0x40, 0x68, 0xde, 0x00, - 0x81, 0x65, 0x02, 0x66, 0x00, 0x21, 0x81, 0x80, - 0x0d, 0x48, 0x81, 0x59, 0x20, 0x1c, 0xf9, 0xf7, - 0x22, 0xff, 0x0b, 0x48, 0x30, 0x18, 0x41, 0x68, - 0x28, 0x1c, 0xf9, 0xf7, 0x1c, 0xff, 0x07, 0x49, - 0x06, 0x98, 0x49, 0x68, 0x00, 0x2c, 0x88, 0x62, - 0x0f, 0x86, 0x00, 0xd1, 0x2c, 0x1c, 0x05, 0x48, - 0x4c, 0x62, 0x45, 0x65, 0x3c, 0x00, 0xb8, 0x65, - 0x00, 0x00, 0x01, 0x21, 0x01, 0x65, 0x01, 0x64, - 0xf8, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0x90, 0x52, - 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5, - 0x83, 0xb0, 0x0d, 0xae, 0x60, 0xce, 0x0c, 0x9f, - 0x08, 0x1c, 0x11, 0x1c, 0xd2, 0x19, 0xff, 0x32, - 0x40, 0x24, 0x14, 0x43, 0x0b, 0x4a, 0x52, 0x68, - 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63, - 0x40, 0x23, 0x9f, 0x52, 0x94, 0x61, 0x3c, 0x00, - 0xf4, 0x65, 0x00, 0x00, 0x14, 0x84, 0x02, 0x22, - 0x02, 0x92, 0x32, 0x1c, 0x00, 0x90, 0x01, 0x91, - 0x23, 0x1c, 0x29, 0x1c, 0x03, 0x98, 0xff, 0xf7, - 0xb5, 0xff, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x4c, 0x21, 0x0d, 0x4a, - 0x41, 0x43, 0x10, 0xb5, 0x8c, 0x18, 0x0c, 0x49, - 0x09, 0x78, 0x88, 0x42, 0x07, 0xd1, 0x05, 0xf0, - 0xc7, 0xfd, 0x0a, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x3c, 0x00, 0x30, 0x66, 0x00, 0x00, 0x12, 0x03, - 0x91, 0x43, 0x01, 0x80, 0x20, 0x1c, 0x30, 0x30, - 0x0c, 0x23, 0xc1, 0x56, 0x40, 0x7b, 0x81, 0x42, - 0x02, 0xdd, 0x20, 0x8d, 0x0c, 0xf0, 0xe5, 0xfb, - 0x10, 0xbd, 0x58, 0xe3, 0x01, 0x00, 0x3c, 0x7c, - 0x01, 0x00, 0x32, 0x80, 0x07, 0x00, 0x01, 0x1c, - 0x60, 0x31, 0x80, 0xb5, 0xca, 0x79, 0x8b, 0x79, - 0x9a, 0x42, 0x07, 0xd9, 0x48, 0x7a, 0x0c, 0x23, - 0x07, 0x49, 0x3c, 0x00, 0x6c, 0x66, 0x00, 0x00, - 0x58, 0x43, 0x08, 0x5a, 0x0c, 0xf0, 0xd0, 0xfb, - 0x80, 0xbd, 0x20, 0x30, 0x00, 0x7b, 0x01, 0x28, - 0xfa, 0xd1, 0x48, 0x7a, 0x05, 0xf0, 0x40, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x1c, 0x21, 0xf9, 0xf7, - 0x03, 0xff, 0x03, 0x48, 0xa0, 0x80, 0xe0, 0x80, - 0x20, 0x81, 0x60, 0x81, 0xa0, 0x81, 0x10, 0xbd, - 0xff, 0xff, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x66, - 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c, 0x00, 0x20, - 0x83, 0xb0, 0x0d, 0x1c, 0x06, 0x2c, 0x02, 0x90, - 0x38, 0xd2, 0x1f, 0x4a, 0xff, 0x26, 0xc1, 0x00, - 0x89, 0x18, 0x89, 0x78, 0xa1, 0x42, 0x03, 0xd1, - 0xc0, 0x00, 0x80, 0x18, 0x46, 0x78, 0x04, 0xe0, - 0x01, 0x30, 0x00, 0x06, 0x00, 0x16, 0x06, 0x28, - 0xf1, 0xdb, 0xff, 0x2e, 0x24, 0xd0, 0x01, 0x93, - 0x20, 0x1c, 0x0d, 0xf0, 0xe8, 0xf9, 0x3c, 0x00, - 0xe4, 0x66, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd0, - 0x24, 0x21, 0x28, 0x1c, 0x01, 0xab, 0x02, 0xaa, - 0xfa, 0xf7, 0x30, 0xfe, 0x10, 0x49, 0xf0, 0x00, - 0x30, 0x39, 0x0f, 0x58, 0x31, 0x06, 0x09, 0x16, - 0x28, 0x1c, 0x05, 0x9a, 0x01, 0x9b, 0xf9, 0xf7, - 0x6e, 0xfe, 0x06, 0x1c, 0x10, 0xd1, 0x20, 0x1c, - 0x0d, 0xf0, 0xd0, 0xf9, 0x00, 0x28, 0x0b, 0xd0, - 0x28, 0x1c, 0x69, 0x69, 0xfa, 0xf7, 0x12, 0xfe, - 0x3c, 0x00, 0x20, 0x67, 0x00, 0x00, 0x02, 0x98, - 0x68, 0x61, 0x04, 0xe0, 0x06, 0x2c, 0x01, 0xd3, - 0x07, 0x26, 0x00, 0xe0, 0x08, 0x26, 0x30, 0x1c, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xcc, 0x5a, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x09, 0xf0, - 0x86, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, - 0x09, 0xf0, 0xb5, 0xf8, 0x10, 0xbd, 0xfe, 0xb5, - 0x13, 0x4d, 0x04, 0x1c, 0xae, 0x69, 0x00, 0x2e, - 0x1c, 0xd0, 0x3c, 0x00, 0x5c, 0x67, 0x00, 0x00, - 0x10, 0x4f, 0x30, 0x37, 0x78, 0x68, 0x60, 0x43, - 0x01, 0x1c, 0x28, 0x88, 0xf9, 0xf7, 0xd2, 0xff, - 0x39, 0x68, 0x61, 0x43, 0x41, 0x18, 0x01, 0xa8, - 0x32, 0x1c, 0xf9, 0xf7, 0x37, 0xfe, 0x02, 0x98, - 0x29, 0x6a, 0x40, 0x18, 0x28, 0x62, 0x0b, 0xd4, - 0xe9, 0x69, 0x88, 0x42, 0x08, 0xd9, 0xa9, 0x69, - 0x40, 0x1a, 0x28, 0x62, 0x01, 0x98, 0x01, 0x30, - 0x01, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x67, - 0x00, 0x00, 0x02, 0x90, 0x01, 0x90, 0x01, 0x98, - 0xfe, 0xbd, 0xc8, 0x74, 0x01, 0x00, 0xf8, 0xb5, - 0x00, 0x28, 0x28, 0xd0, 0x00, 0x24, 0x14, 0x4d, - 0x00, 0xe0, 0x01, 0x34, 0x61, 0x00, 0x09, 0x19, - 0x49, 0x19, 0x49, 0x78, 0x00, 0x29, 0xf8, 0xd1, - 0x63, 0x00, 0x1b, 0x19, 0x03, 0x33, 0x07, 0x22, - 0x69, 0x46, 0x03, 0xf0, 0xd4, 0xfb, 0x00, 0x2c, - 0x0f, 0xd0, 0x00, 0x20, 0x00, 0x99, 0x3c, 0x00, - 0xd4, 0x67, 0x00, 0x00, 0x0a, 0xe0, 0x42, 0x00, - 0x12, 0x18, 0xae, 0x5c, 0x53, 0x18, 0x52, 0x19, - 0x5e, 0x71, 0x56, 0x78, 0x01, 0x30, 0x9e, 0x71, - 0x92, 0x78, 0xda, 0x71, 0xa0, 0x42, 0xf2, 0xdb, - 0x00, 0x98, 0x03, 0x22, 0x02, 0x30, 0x03, 0x49, - 0xf9, 0xf7, 0x7e, 0xfe, 0xf8, 0xbd, 0x00, 0x00, - 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x08, 0x1c, 0xfa, 0xf7, - 0x3c, 0x00, 0x10, 0x68, 0x00, 0x00, 0x9d, 0xff, - 0x04, 0x1c, 0x28, 0x1c, 0xfa, 0xf7, 0xd9, 0xfe, - 0x21, 0x1c, 0xfa, 0xf7, 0xfc, 0xfd, 0x20, 0x1c, - 0xb0, 0xbd, 0xf3, 0xb5, 0x44, 0x48, 0x0c, 0x1c, - 0x00, 0x78, 0x81, 0xb0, 0x01, 0x28, 0x72, 0xd1, - 0xfa, 0xf7, 0x82, 0xf8, 0x41, 0x4d, 0xe8, 0x6a, - 0x41, 0x49, 0x08, 0x60, 0xe8, 0x6b, 0x48, 0x60, - 0x40, 0x48, 0xfa, 0xf7, 0xa6, 0xf9, 0xe8, 0x6a, - 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x68, 0x00, 0x00, - 0xfc, 0xda, 0x22, 0x1c, 0x0f, 0x20, 0x01, 0x99, - 0x0a, 0xf0, 0xa4, 0xf8, 0x38, 0x4d, 0x02, 0x27, - 0x2f, 0x63, 0x38, 0x4a, 0x64, 0x26, 0x00, 0x20, - 0xaa, 0x21, 0x08, 0x32, 0x13, 0x18, 0x01, 0x30, - 0x00, 0x04, 0x00, 0x0c, 0x64, 0x28, 0x19, 0x74, - 0xf8, 0xd3, 0x16, 0x81, 0x00, 0x20, 0x50, 0x60, - 0x10, 0x1c, 0x10, 0x30, 0x10, 0x60, 0x00, 0x25, - 0x17, 0x1c, 0xd2, 0x60, 0x3c, 0x00, 0x88, 0x68, - 0x00, 0x00, 0x08, 0xe0, 0x28, 0x1c, 0xf9, 0xf7, - 0xa2, 0xff, 0x41, 0x31, 0x78, 0x19, 0x01, 0x35, - 0x2d, 0x04, 0x2d, 0x0c, 0x01, 0x74, 0xb5, 0x42, - 0xf4, 0xd3, 0x26, 0x4d, 0x6f, 0x63, 0x01, 0x20, - 0x28, 0x63, 0x24, 0x4d, 0xe8, 0x6a, 0x00, 0x28, - 0xfb, 0xda, 0x0b, 0x22, 0x3b, 0x1c, 0x24, 0x4e, - 0x03, 0xe0, 0x01, 0x32, 0x64, 0x2a, 0x00, 0xd1, - 0x00, 0x22, 0x10, 0x1c, 0x0c, 0x21, 0x3c, 0x00, - 0xc4, 0x68, 0x00, 0x00, 0x01, 0x39, 0x75, 0x5c, - 0x1f, 0x18, 0x3f, 0x7c, 0xbd, 0x42, 0xf3, 0xd1, - 0x01, 0x38, 0x00, 0xd5, 0x63, 0x20, 0x00, 0x29, - 0xf4, 0xd1, 0x18, 0x4e, 0x50, 0x1c, 0xf1, 0x6b, - 0x1a, 0x4a, 0x10, 0x1c, 0x01, 0x38, 0xfd, 0xd1, - 0xf0, 0x6b, 0x88, 0x42, 0x01, 0xd0, 0x01, 0x1c, - 0xf7, 0xe7, 0x02, 0x27, 0x37, 0x63, 0x16, 0x4d, - 0x90, 0x21, 0x28, 0x1c, 0xf9, 0xf7, 0xce, 0xfd, - 0x3c, 0x00, 0x00, 0x69, 0x00, 0x00, 0x28, 0x1c, - 0x28, 0x30, 0x28, 0x60, 0x28, 0x1c, 0x10, 0x30, - 0x2f, 0x81, 0xe8, 0x60, 0x28, 0x1c, 0x20, 0x30, - 0x28, 0x61, 0x04, 0x21, 0x00, 0xe0, 0x0c, 0xe0, - 0x29, 0x83, 0xe8, 0x61, 0xed, 0x62, 0x75, 0x63, - 0x01, 0x20, 0x30, 0x63, 0x22, 0x1c, 0x89, 0x20, - 0x01, 0x99, 0x0a, 0xf0, 0x38, 0xf8, 0x00, 0x20, - 0x28, 0x63, 0xfe, 0xbd, 0x00, 0x00, 0x08, 0x57, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x69, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x10, 0x8e, 0x01, 0x00, - 0x74, 0xff, 0x01, 0x00, 0x09, 0x57, 0x01, 0x00, - 0x20, 0x4e, 0x00, 0x00, 0xe4, 0xfe, 0x01, 0x00, - 0x80, 0xb5, 0x13, 0x28, 0x1e, 0xd0, 0xf0, 0x28, - 0x16, 0xd1, 0x09, 0xf0, 0xb5, 0xf9, 0x00, 0x28, - 0x13, 0xd1, 0x0d, 0xf0, 0xbf, 0xfa, 0x11, 0xf0, - 0x0d, 0xfc, 0x00, 0x22, 0x04, 0x21, 0xc4, 0x20, - 0x0c, 0xf0, 0x1c, 0xff, 0x3c, 0x00, 0x78, 0x69, - 0x00, 0x00, 0x09, 0x48, 0x00, 0x21, 0x00, 0x78, - 0x05, 0xf0, 0x3f, 0xfd, 0x05, 0xf0, 0x93, 0xf8, - 0x07, 0x49, 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x01, 0x1c, 0x01, 0x20, 0xfa, 0xf7, 0x87, 0xfc, - 0x80, 0xbd, 0x00, 0xf0, 0x32, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x6a, 0x57, 0x01, 0x00, 0x3c, 0xd9, - 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0xf0, 0xff, 0xf9, - 0x0b, 0x49, 0x02, 0x24, 0x48, 0x60, 0x3c, 0x00, - 0xb4, 0x69, 0x00, 0x00, 0x0a, 0x48, 0x04, 0x61, - 0x01, 0x20, 0x77, 0x21, 0x09, 0x03, 0x08, 0x61, - 0x08, 0x4d, 0x68, 0x68, 0x80, 0x07, 0x02, 0xd4, - 0x68, 0x68, 0x20, 0x43, 0x68, 0x60, 0x09, 0xf0, - 0xc7, 0xf9, 0x68, 0x68, 0xa0, 0x43, 0x68, 0x60, - 0x00, 0x20, 0xb0, 0xbd, 0xe0, 0x60, 0x01, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x00, 0x01, 0x07, 0x00, - 0x80, 0xb5, 0x01, 0x23, 0x03, 0x22, 0x00, 0x21, - 0x3c, 0x00, 0xf0, 0x69, 0x00, 0x00, 0x02, 0x20, - 0x3c, 0xf0, 0xf1, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0xfa, 0xf7, 0x81, 0xfc, 0x80, 0xbd, 0x1c, 0xb5, - 0xfc, 0xf7, 0xf5, 0xfa, 0xfa, 0xf7, 0x19, 0xfe, - 0x01, 0xf0, 0x03, 0xf9, 0x00, 0x24, 0x21, 0x1c, - 0x68, 0x46, 0x01, 0xf0, 0xe2, 0xfb, 0x00, 0xab, - 0x18, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x02, 0x28, - 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1, 0x0c, 0xf0, - 0xb2, 0xfc, 0x3c, 0x00, 0x2c, 0x6a, 0x00, 0x00, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x16, 0x06, 0x2c, - 0xec, 0xdb, 0xfa, 0xf7, 0x09, 0xf9, 0xfa, 0xf7, - 0xe7, 0xfc, 0xfa, 0xf7, 0x33, 0xfa, 0xfa, 0xf7, - 0x6d, 0xfa, 0xfb, 0xf7, 0xdf, 0xff, 0x05, 0xf0, - 0x4d, 0xfb, 0x06, 0xf0, 0x81, 0xfc, 0x0b, 0xf0, - 0x7d, 0xf9, 0x07, 0xf0, 0x29, 0xfc, 0x11, 0x48, - 0x10, 0x21, 0x01, 0x60, 0x09, 0x01, 0x01, 0x60, - 0xc9, 0x02, 0x01, 0x60, 0x3c, 0x00, 0x68, 0x6a, - 0x00, 0x00, 0x89, 0x00, 0x01, 0x60, 0x20, 0x21, - 0x01, 0x60, 0x04, 0x21, 0x01, 0x60, 0x08, 0x21, - 0x01, 0x60, 0x40, 0x21, 0x01, 0x60, 0x80, 0x21, - 0x01, 0x60, 0x89, 0x00, 0x01, 0x60, 0x49, 0x00, - 0x01, 0x60, 0x49, 0x00, 0x01, 0x60, 0x49, 0x00, - 0x01, 0x60, 0xc9, 0x03, 0x01, 0x60, 0x89, 0x0b, - 0x01, 0x60, 0xf9, 0xf7, 0x41, 0xff, 0x1c, 0xbd, - 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0xa4, 0x6a, 0x00, 0x00, 0x80, 0xb5, 0x3b, 0xf0, - 0x4f, 0xf8, 0x3b, 0xf0, 0x7d, 0xf9, 0xfa, 0xf7, - 0x4b, 0xf9, 0x80, 0xbd, 0xf8, 0xb5, 0x00, 0x25, - 0x00, 0x24, 0x00, 0x22, 0x00, 0x28, 0x71, 0xd0, - 0x43, 0x4f, 0xb9, 0x68, 0x0b, 0x1a, 0xbb, 0x60, - 0xf8, 0x68, 0x39, 0x1c, 0x01, 0x30, 0xf8, 0x60, - 0x89, 0x6a, 0x00, 0x2b, 0x1e, 0xdc, 0x02, 0x24, - 0x00, 0x29, 0x06, 0xda, 0xfb, 0x69, 0x98, 0x42, - 0x3c, 0x00, 0xe0, 0x6a, 0x00, 0x00, 0x06, 0xdd, - 0x3b, 0x69, 0x98, 0x42, 0x09, 0xdd, 0x07, 0xe0, - 0xbb, 0x69, 0x98, 0x42, 0x01, 0xdc, 0x01, 0x24, - 0x03, 0xe0, 0x7b, 0x69, 0x98, 0x42, 0x00, 0xdd, - 0x03, 0x24, 0x78, 0x6a, 0x00, 0x28, 0x08, 0xd0, - 0x00, 0x20, 0x78, 0x62, 0x03, 0x2c, 0x01, 0xd1, - 0x02, 0x24, 0x02, 0xe0, 0x02, 0x2c, 0x00, 0xd1, - 0x01, 0x24, 0x2e, 0x48, 0x01, 0x2c, 0x00, 0x79, - 0x18, 0xd1, 0x3c, 0x00, 0x1c, 0x6b, 0x00, 0x00, - 0xbb, 0x78, 0x99, 0x42, 0x15, 0xda, 0x3b, 0x78, - 0x7b, 0x70, 0x39, 0x70, 0x01, 0x31, 0xb9, 0x62, - 0x01, 0xd5, 0x01, 0x31, 0xb9, 0x62, 0xb9, 0x6a, - 0x01, 0x25, 0x99, 0x42, 0x03, 0xd1, 0x04, 0x28, - 0x04, 0xd2, 0x01, 0x30, 0x00, 0xe0, 0x00, 0x20, - 0x38, 0x71, 0x01, 0x22, 0x00, 0x29, 0x33, 0xda, - 0x27, 0xe0, 0x03, 0x2c, 0x35, 0xd1, 0x00, 0x26, - 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00, 0x58, 0x6b, - 0x00, 0x00, 0x1e, 0x49, 0x81, 0x40, 0x38, 0x6a, - 0x08, 0x18, 0x0c, 0xf0, 0x5c, 0xf8, 0x00, 0x28, - 0x2c, 0xd0, 0x1b, 0x48, 0x00, 0x78, 0x40, 0x07, - 0x05, 0xd5, 0xf8, 0x68, 0x39, 0x69, 0x88, 0x42, - 0x01, 0xdb, 0x03, 0x23, 0xfe, 0x56, 0xb8, 0x6a, - 0xb0, 0x42, 0x12, 0xdd, 0x01, 0x21, 0x79, 0x62, - 0x39, 0x78, 0x01, 0x25, 0x79, 0x70, 0x38, 0x70, - 0x01, 0x38, 0xb8, 0x62, 0x88, 0x42, 0x3c, 0x00, - 0x94, 0x6b, 0x00, 0x00, 0x01, 0xd0, 0x00, 0x21, - 0x39, 0x71, 0x00, 0x28, 0x0c, 0xda, 0x07, 0x20, - 0x38, 0x71, 0x00, 0xe0, 0x12, 0xe0, 0x07, 0xe0, - 0x38, 0x79, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30, - 0x38, 0x71, 0x06, 0xe0, 0x00, 0x2a, 0x02, 0xd0, - 0x0c, 0xf0, 0xf8, 0xf8, 0x38, 0x62, 0x00, 0x2c, - 0x04, 0xd0, 0xfe, 0xf7, 0x97, 0xfd, 0x29, 0x1c, - 0x08, 0xf0, 0xfc, 0xfb, 0xf8, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x6b, 0x00, 0x00, 0xac, 0x7e, - 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x1d, 0x75, - 0x01, 0x00, 0x80, 0xb5, 0x10, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0x00, 0xf0, 0x0a, 0xf8, 0x80, 0xbd, - 0x03, 0x48, 0xc0, 0x69, 0x80, 0x68, 0x08, 0xf0, - 0xb2, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x84, 0x6a, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7, - 0x7a, 0xfb, 0x3c, 0x00, 0x0c, 0x6c, 0x00, 0x00, - 0xe0, 0x68, 0xe1, 0x69, 0xc0, 0x68, 0x23, 0x1c, - 0x01, 0x4a, 0xff, 0xf7, 0xd7, 0xfb, 0x10, 0xbd, - 0xdd, 0x6b, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0x0c, 0x21, 0x00, 0x20, 0xfa, 0xf7, 0xd6, 0xfc, - 0x04, 0x1c, 0x00, 0x68, 0x00, 0x21, 0x41, 0x60, - 0x01, 0x60, 0x29, 0x88, 0x01, 0x81, 0x69, 0x88, - 0x41, 0x81, 0x29, 0x1c, 0xff, 0x31, 0x21, 0x31, - 0x20, 0x1c, 0x03, 0xf0, 0x3c, 0x00, 0x48, 0x6c, - 0x00, 0x00, 0x77, 0xf9, 0x29, 0x1c, 0xff, 0x31, - 0x46, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x71, 0xf9, - 0x29, 0x1c, 0xff, 0x31, 0x50, 0x31, 0x20, 0x1c, - 0x03, 0xf0, 0x6b, 0xf9, 0x29, 0x1c, 0xff, 0x31, - 0x43, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x65, 0xf9, - 0x29, 0x1c, 0xff, 0x31, 0x63, 0x31, 0x20, 0x1c, - 0x03, 0xf0, 0x5f, 0xf9, 0x04, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, 0x3c, 0x00, - 0x84, 0x6c, 0x00, 0x00, 0xff, 0xf7, 0x8e, 0xfd, - 0x20, 0x1c, 0xb0, 0xbd, 0xe4, 0x62, 0x01, 0x00, - 0xf8, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, 0x04, 0xd1, - 0x05, 0x21, 0x18, 0x20, 0xfa, 0xf7, 0x02, 0xfb, - 0x4d, 0xe0, 0x29, 0x1c, 0x12, 0x31, 0x06, 0x22, - 0x60, 0x1c, 0xf9, 0xf7, 0x25, 0xfc, 0x22, 0x1c, - 0x30, 0x32, 0x00, 0x26, 0x00, 0x21, 0x00, 0x20, - 0x16, 0x70, 0x34, 0x4b, 0x1b, 0x5c, 0x2f, 0x8a, - 0x3c, 0x00, 0xc0, 0x6c, 0x00, 0x00, 0xdf, 0x40, - 0xff, 0x07, 0x07, 0xd5, 0x17, 0x78, 0x01, 0x33, - 0x01, 0x37, 0x17, 0x70, 0x67, 0x18, 0x30, 0x37, - 0x7b, 0x70, 0x01, 0x31, 0x01, 0x30, 0x0e, 0x28, - 0xee, 0xdb, 0xa8, 0x7b, 0x60, 0x72, 0x10, 0x78, - 0x00, 0x28, 0x2b, 0xd0, 0x2a, 0x48, 0x1e, 0x21, - 0x09, 0x5c, 0x27, 0x1c, 0x10, 0x37, 0x21, 0x72, - 0x01, 0x68, 0x61, 0x81, 0xc1, 0x89, 0x21, 0x77, - 0x81, 0x89, 0x3c, 0x00, 0xfc, 0x6c, 0x00, 0x00, - 0x79, 0x73, 0xc1, 0x8a, 0xa1, 0x81, 0x01, 0x8b, - 0xe1, 0x81, 0x42, 0x8a, 0x21, 0x1c, 0x60, 0x31, - 0x4a, 0x80, 0x82, 0x8a, 0x8a, 0x80, 0x1f, 0x49, - 0x2c, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x09, 0xd0, - 0x02, 0x29, 0x0a, 0xd1, 0x01, 0x22, 0x62, 0x62, - 0x62, 0x72, 0x42, 0x8b, 0xa2, 0x81, 0x80, 0x8b, - 0xe0, 0x81, 0x03, 0xe0, 0x01, 0x21, 0x66, 0x62, - 0x00, 0xe0, 0x00, 0x21, 0x3c, 0x00, 0x38, 0x6d, - 0x00, 0x00, 0xe8, 0x7b, 0x08, 0x40, 0x01, 0xd1, - 0x00, 0x20, 0xf8, 0xbd, 0xa8, 0x68, 0x43, 0x1c, - 0x09, 0xd0, 0x22, 0x1c, 0x12, 0x32, 0x00, 0x92, - 0x93, 0x1d, 0x02, 0x32, 0x21, 0x1c, 0x01, 0xf0, - 0x9c, 0xfa, 0xa0, 0x62, 0x00, 0xe0, 0xa6, 0x62, - 0x68, 0x7b, 0x29, 0x1c, 0x1d, 0x31, 0x20, 0x74, - 0x0b, 0x48, 0x20, 0x22, 0x20, 0x62, 0x20, 0x1c, - 0x42, 0x30, 0xbe, 0x73, 0xf9, 0xf7, 0x3c, 0x00, - 0x74, 0x6d, 0x00, 0x00, 0xc1, 0xfb, 0x40, 0x34, - 0x26, 0x70, 0x68, 0x7e, 0x04, 0x49, 0x60, 0x70, - 0x68, 0x68, 0x2c, 0x31, 0x48, 0x60, 0x01, 0x20, - 0xda, 0xe7, 0x00, 0x00, 0x90, 0x58, 0x01, 0x00, - 0xc8, 0x6e, 0x01, 0x00, 0x91, 0x02, 0x01, 0x00, - 0x70, 0xb5, 0x16, 0x1c, 0x0d, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x06, 0xd0, 0x0c, 0x20, 0xfa, 0xf7, - 0x47, 0xfd, 0x30, 0xc0, 0x08, 0x38, 0x06, 0x72, - 0x3c, 0x00, 0xb0, 0x6d, 0x00, 0x00, 0x70, 0xbd, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x01, 0x1c, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0xd0, - 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0xfc, 0xf7, - 0xa0, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x0c, 0x79, - 0x01, 0x00, 0x70, 0xb5, 0x0e, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7, 0x8f, 0xfa, - 0x06, 0x4d, 0x28, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0xfa, 0xf7, 0x3c, 0x00, 0xec, 0x6d, 0x00, 0x00, - 0x89, 0xfa, 0x04, 0x48, 0x2e, 0x60, 0xc4, 0x60, - 0x01, 0x21, 0x01, 0x70, 0x70, 0xbd, 0x00, 0x00, - 0xa8, 0x7e, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x07, 0x4c, 0x20, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0xfa, 0xf7, 0x77, 0xfa, 0x05, 0x48, - 0x00, 0x69, 0x21, 0x68, 0xf9, 0xf7, 0xdf, 0xfa, - 0x00, 0x20, 0x20, 0x60, 0x10, 0xbd, 0x00, 0x00, - 0xa8, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0x28, 0x6e, - 0x00, 0x00, 0x30, 0x00, 0x07, 0x00, 0x01, 0x20, - 0x05, 0x49, 0xc0, 0x06, 0x80, 0xb5, 0x08, 0x60, - 0x00, 0x22, 0x03, 0x21, 0x54, 0x20, 0x0c, 0xf0, - 0xb8, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x04, 0x21, - 0xc4, 0x20, 0x0c, 0xf0, 0xae, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x00, 0x88, - 0x02, 0x49, 0xff, 0xf7, 0xb8, 0xff, 0x3c, 0x00, - 0x64, 0x6e, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x75, 0x4b, 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x31, 0x48, 0x00, 0x25, - 0xc0, 0x68, 0x0c, 0x1c, 0x00, 0x28, 0x30, 0xd0, - 0x2e, 0x48, 0x2f, 0x4f, 0x04, 0x30, 0x00, 0x78, - 0x38, 0x76, 0x2c, 0x48, 0x04, 0x30, 0x40, 0x78, - 0x38, 0x81, 0x00, 0x2a, 0x0b, 0xd0, 0xf9, 0xf7, - 0xa5, 0xfa, 0x1f, 0x20, 0xb8, 0x76, 0x20, 0x1c, - 0x3c, 0x00, 0xa0, 0x6e, 0x00, 0x00, 0xf9, 0xf7, - 0xf6, 0xf9, 0x25, 0x48, 0x04, 0x30, 0x80, 0x78, - 0xb8, 0x76, 0x43, 0xe0, 0x25, 0x48, 0x22, 0x49, - 0x84, 0x42, 0x4d, 0x69, 0x02, 0xd2, 0x6c, 0x43, - 0xe4, 0x0b, 0x0f, 0xe0, 0x1f, 0x48, 0x21, 0x1c, - 0x80, 0x6a, 0x00, 0x90, 0xf9, 0xf7, 0x23, 0xfc, - 0x00, 0x99, 0x02, 0x1c, 0x4a, 0x43, 0xa1, 0x1a, - 0x1a, 0x4a, 0x69, 0x43, 0x52, 0x6a, 0xc9, 0x0b, - 0x50, 0x43, 0x3c, 0x00, 0xdc, 0x6e, 0x00, 0x00, - 0x44, 0x18, 0x02, 0x2c, 0x01, 0xd8, 0x00, 0x20, - 0xf8, 0xbd, 0xf9, 0xf7, 0x7d, 0xfa, 0x1f, 0x20, - 0xb8, 0x76, 0x20, 0x1c, 0xf9, 0xf7, 0xae, 0xf9, - 0x04, 0x1c, 0x11, 0x48, 0x04, 0x30, 0x80, 0x78, - 0xb8, 0x76, 0x0f, 0x4f, 0x7d, 0x6a, 0xac, 0x42, - 0x04, 0xd2, 0x20, 0x1c, 0xff, 0xf7, 0x22, 0xfc, - 0x05, 0x1c, 0x12, 0xe0, 0x21, 0x1c, 0x28, 0x1c, - 0xf9, 0xf7, 0xfc, 0xfb, 0x3c, 0x00, 0x18, 0x6f, - 0x00, 0x00, 0x06, 0x1c, 0x68, 0x43, 0x20, 0x1a, - 0xff, 0xf7, 0x17, 0xfc, 0x05, 0x1c, 0x00, 0x24, - 0x04, 0xe0, 0x78, 0x6a, 0xff, 0xf7, 0x11, 0xfc, - 0x45, 0x19, 0x01, 0x34, 0xb4, 0x42, 0xf8, 0xd3, - 0x28, 0x1c, 0xd4, 0xe7, 0x00, 0x00, 0xc8, 0x74, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0xc0, 0xc6, - 0x2d, 0x00, 0x01, 0x1c, 0x7d, 0x20, 0x80, 0xb5, - 0xc0, 0x00, 0xf9, 0xf7, 0x72, 0xfb, 0x3c, 0x00, - 0x54, 0x6f, 0x00, 0x00, 0x02, 0x49, 0x88, 0x61, - 0x40, 0x08, 0xc8, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0xc8, 0x74, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x42, 0xfa, - 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x0a, 0xfa, - 0x00, 0xf0, 0x68, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x85, 0x6f, 0x00, 0x00, 0x30, 0xb5, 0x0f, 0x4d, - 0x2a, 0x78, 0x04, 0x2a, 0x19, 0xd8, 0x00, 0x2a, - 0x3c, 0x00, 0x90, 0x6f, 0x00, 0x00, 0x17, 0xd0, - 0x00, 0x21, 0x07, 0xe0, 0x4b, 0x00, 0x5b, 0x18, - 0x5c, 0x19, 0x01, 0x23, 0xe4, 0x56, 0x84, 0x42, - 0x02, 0xda, 0x01, 0x31, 0x8a, 0x42, 0xf5, 0xdc, - 0x8a, 0x42, 0x00, 0xd1, 0x01, 0x39, 0x48, 0x00, - 0x40, 0x18, 0x40, 0x19, 0x81, 0x78, 0x02, 0x4a, - 0x34, 0x3a, 0x11, 0x70, 0xc0, 0x78, 0x50, 0x70, - 0x30, 0xbd, 0x00, 0x75, 0x01, 0x00, 0x30, 0xb5, - 0x11, 0x1c, 0x3c, 0x00, 0xcc, 0x6f, 0x00, 0x00, - 0x38, 0x31, 0x85, 0xb0, 0x91, 0x62, 0x08, 0x21, - 0x11, 0x86, 0x00, 0x23, 0x14, 0x1c, 0x01, 0x1c, - 0x53, 0x63, 0xc0, 0x68, 0x15, 0x4d, 0x0b, 0xe0, - 0x02, 0x68, 0xaa, 0x42, 0x06, 0xd1, 0xc2, 0x68, - 0xca, 0x60, 0xc3, 0x60, 0x03, 0x60, 0xfa, 0xf7, - 0xd1, 0xfa, 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x22, 0x1c, 0x40, 0x32, - 0x08, 0x21, 0x20, 0x68, 0x3c, 0x00, 0x08, 0x70, - 0x00, 0x00, 0xfa, 0xf7, 0x64, 0xfb, 0x0b, 0x49, - 0x20, 0x1c, 0x48, 0x30, 0x02, 0x90, 0x04, 0x94, - 0x03, 0x91, 0xe0, 0x69, 0x82, 0x88, 0x01, 0x68, - 0x6e, 0x20, 0x01, 0x92, 0x00, 0x91, 0x22, 0x1c, - 0x56, 0x32, 0x03, 0x5d, 0x21, 0x1c, 0x28, 0x31, - 0x20, 0x68, 0xff, 0xf7, 0x58, 0xfa, 0x05, 0xb0, - 0x30, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0xd5, 0x70, - 0x00, 0x00, 0x1c, 0xb5, 0x07, 0x49, 0x3c, 0x00, - 0x44, 0x70, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x90, - 0x00, 0x91, 0xc0, 0x69, 0x13, 0x1c, 0x84, 0x88, - 0x01, 0x68, 0x10, 0x68, 0x48, 0x33, 0x22, 0x1c, - 0xff, 0xf7, 0x08, 0xf9, 0x1c, 0xbd, 0x00, 0x00, - 0xc9, 0x6f, 0x00, 0x00, 0x10, 0xb5, 0x14, 0x1c, - 0x18, 0x48, 0x03, 0xf0, 0x89, 0xf8, 0xa0, 0x42, - 0x01, 0xd0, 0xfa, 0xf7, 0x45, 0xf9, 0x04, 0x22, - 0x20, 0x1c, 0x40, 0x30, 0xa1, 0x6a, 0xf9, 0xf7, - 0x3c, 0x00, 0x80, 0x70, 0x00, 0x00, 0xbd, 0xf9, - 0x00, 0x28, 0x02, 0xd1, 0x01, 0x20, 0x20, 0x62, - 0x05, 0xe0, 0x00, 0x20, 0x20, 0x62, 0x84, 0x20, - 0x00, 0x5d, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, - 0x09, 0xf0, 0x23, 0xfb, 0x05, 0xe0, 0x20, 0x68, - 0xfa, 0xf7, 0x79, 0xfa, 0x20, 0x1c, 0xfa, 0xf7, - 0xa4, 0xfb, 0xe0, 0x69, 0x80, 0x79, 0x06, 0x28, - 0x06, 0xd1, 0x20, 0x6a, 0x06, 0x49, 0x00, 0x28, - 0x03, 0xd0, 0x3c, 0x00, 0xbc, 0x70, 0x00, 0x00, - 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x10, 0xbd, - 0x48, 0x69, 0x01, 0x30, 0x48, 0x61, 0x10, 0xbd, - 0xa0, 0x6a, 0x01, 0x00, 0x28, 0x61, 0x01, 0x00, - 0x1c, 0xb5, 0x14, 0x1c, 0x15, 0x48, 0x03, 0xf0, - 0x51, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7, - 0x0d, 0xf9, 0x20, 0x1c, 0x4f, 0x30, 0x02, 0x79, - 0x41, 0x79, 0x00, 0xab, 0x12, 0x02, 0x11, 0x43, - 0xc2, 0x78, 0x12, 0x04, 0x3c, 0x00, 0xf8, 0x70, - 0x00, 0x00, 0x11, 0x43, 0x82, 0x78, 0x12, 0x06, - 0x11, 0x43, 0x00, 0x91, 0x01, 0x78, 0x40, 0x78, - 0x09, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c, - 0x69, 0x46, 0x06, 0xf0, 0x3c, 0xf9, 0x00, 0x28, - 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0, 0xe3, 0xfa, - 0x1c, 0xbd, 0x20, 0x68, 0xfa, 0xf7, 0x39, 0xfa, - 0x20, 0x1c, 0xfa, 0xf7, 0x64, 0xfb, 0xf7, 0xe7, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x71, 0x00, 0x00, 0xbc, 0xb5, 0x1f, 0x4d, - 0x14, 0x1c, 0x28, 0x1c, 0xdc, 0x30, 0x03, 0xf0, - 0x1f, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7, - 0xdb, 0xf8, 0xa0, 0x6c, 0x00, 0xab, 0x02, 0x78, - 0x81, 0x78, 0x12, 0x02, 0x11, 0x43, 0x02, 0x79, - 0x12, 0x04, 0x11, 0x43, 0x42, 0x79, 0x12, 0x06, - 0x11, 0x43, 0x00, 0x91, 0x81, 0x79, 0xc0, 0x79, - 0x00, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c, - 0x3c, 0x00, 0x70, 0x71, 0x00, 0x00, 0x69, 0x46, - 0x06, 0xf0, 0x0b, 0xf9, 0x00, 0x28, 0x17, 0xd0, - 0x01, 0x28, 0x0e, 0xd1, 0xed, 0x6c, 0x00, 0x2d, - 0x0b, 0xd0, 0x80, 0x20, 0x02, 0x5d, 0xe0, 0x6c, - 0x01, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x00, 0x21, - 0x60, 0x68, 0x6b, 0x46, 0x0a, 0x30, 0xf9, 0xf7, - 0x23, 0xf9, 0x20, 0x68, 0xfa, 0xf7, 0xfb, 0xf9, - 0x20, 0x1c, 0xfa, 0xf7, 0x26, 0xfb, 0xbc, 0xbd, - 0x20, 0x1c, 0x3c, 0x00, 0xac, 0x71, 0x00, 0x00, - 0x00, 0xf0, 0x8e, 0xfe, 0xfa, 0xe7, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0xbc, 0xb5, 0x04, 0x1c, - 0x40, 0x6a, 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0, - 0x60, 0x68, 0x00, 0x8b, 0x05, 0x07, 0x2d, 0x0f, - 0x22, 0x1c, 0x40, 0x32, 0x08, 0x21, 0x20, 0x68, - 0xfa, 0xf7, 0x7e, 0xfa, 0xa1, 0x68, 0x01, 0x95, - 0x00, 0x91, 0x21, 0x1c, 0x22, 0x1c, 0x60, 0x32, - 0x20, 0x68, 0x50, 0x31, 0x3c, 0x00, 0xe8, 0x71, - 0x00, 0x00, 0x0d, 0x1c, 0xe3, 0x68, 0x09, 0xf0, - 0xe2, 0xff, 0xe0, 0x69, 0x80, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0xfe, 0xf7, 0xe8, 0xfa, 0x00, 0x28, - 0x01, 0xd0, 0x18, 0x20, 0x00, 0xe0, 0x10, 0x20, - 0x06, 0x49, 0x01, 0x94, 0x00, 0x91, 0xe1, 0x69, - 0x08, 0x23, 0x09, 0x68, 0x0a, 0x18, 0x21, 0x1c, - 0x28, 0x31, 0x28, 0x1c, 0xff, 0xf7, 0x87, 0xf9, - 0xbc, 0xbd, 0x35, 0x71, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x72, 0x00, 0x00, 0x10, 0xb5, 0x10, 0x1c, - 0x38, 0x30, 0x90, 0x62, 0x04, 0x20, 0x10, 0x86, - 0x00, 0x20, 0x50, 0x63, 0x10, 0x68, 0x14, 0x1c, - 0x40, 0x32, 0x04, 0x21, 0xfa, 0xf7, 0x4a, 0xfa, - 0x23, 0x1c, 0x21, 0x1c, 0x28, 0x31, 0x02, 0x4a, - 0x20, 0x68, 0xff, 0xf7, 0xbd, 0xf8, 0x10, 0xbd, - 0x65, 0x70, 0x00, 0x00, 0x0e, 0xb5, 0xc3, 0x69, - 0x02, 0x1c, 0x98, 0x88, 0x05, 0x49, 0x02, 0x92, - 0x3c, 0x00, 0x60, 0x72, 0x00, 0x00, 0x01, 0x91, - 0x00, 0x90, 0x1b, 0x68, 0x10, 0x68, 0x91, 0x69, - 0x03, 0x22, 0xff, 0xf7, 0xae, 0xf9, 0x0e, 0xbd, - 0x00, 0x00, 0x25, 0x72, 0x00, 0x00, 0x0e, 0xb5, - 0x02, 0x1c, 0x06, 0x49, 0x10, 0x20, 0x00, 0x90, - 0x02, 0x92, 0x13, 0x1c, 0x01, 0x91, 0x10, 0x68, - 0x00, 0x22, 0x70, 0x33, 0x00, 0x21, 0xff, 0xf7, - 0x9c, 0xf9, 0x0e, 0xbd, 0x00, 0x00, 0x25, 0x72, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x72, 0x00, 0x00, - 0x10, 0xb5, 0x03, 0x1c, 0x00, 0x21, 0x00, 0x20, - 0x08, 0x4c, 0x00, 0xe0, 0x01, 0x31, 0xca, 0x00, - 0xa2, 0x58, 0x9a, 0x42, 0x02, 0xd0, 0x0b, 0x29, - 0xf8, 0xd3, 0x10, 0xbd, 0x0b, 0x29, 0xfc, 0xd2, - 0xc9, 0x00, 0x09, 0x19, 0x00, 0x20, 0x08, 0x71, - 0x01, 0x20, 0x10, 0xbd, 0x38, 0x58, 0x01, 0x00, - 0x8c, 0xb5, 0x00, 0xab, 0x86, 0x21, 0x19, 0x80, - 0x01, 0x1c, 0x04, 0x48, 0x3c, 0x00, 0xd8, 0x72, - 0x00, 0x00, 0x06, 0xf0, 0xee, 0xfe, 0x01, 0x90, - 0x68, 0x46, 0x06, 0xf0, 0xfa, 0xf8, 0x8c, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x0d, 0x48, 0x0d, 0x49, 0x94, 0xb0, - 0x04, 0x80, 0x06, 0x22, 0x18, 0x31, 0x0c, 0x30, - 0xf9, 0xf7, 0xfb, 0xf8, 0x01, 0xa8, 0x07, 0xf0, - 0xa2, 0xf8, 0x0c, 0x20, 0x09, 0xa9, 0x48, 0x72, - 0x00, 0xab, 0x1c, 0x80, 0x02, 0x21, 0x3c, 0x00, - 0x14, 0x73, 0x00, 0x00, 0x68, 0x46, 0x03, 0xf0, - 0xdb, 0xff, 0x04, 0x90, 0x01, 0xa8, 0x06, 0xf0, - 0xd1, 0xf8, 0x14, 0xb0, 0x10, 0xbd, 0x00, 0x00, - 0x58, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0, - 0x45, 0xfe, 0x05, 0xf0, 0x53, 0xfa, 0x80, 0xbd, - 0x10, 0xb5, 0x19, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x06, 0xd0, 0x61, 0x1c, 0x08, 0x78, 0x00, 0x28, - 0x03, 0xd1, 0x48, 0x78, 0xff, 0x30, 0x08, 0x70, - 0x3c, 0x00, 0x50, 0x73, 0x00, 0x00, 0x10, 0xbd, - 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x08, 0x70, - 0xa1, 0x68, 0x00, 0x29, 0xf7, 0xd0, 0x00, 0x28, - 0xf5, 0xd1, 0x0e, 0x48, 0x54, 0x30, 0x81, 0x78, - 0x00, 0x29, 0x03, 0xd1, 0xc1, 0x78, 0xff, 0x31, - 0x81, 0x70, 0x10, 0xbd, 0xff, 0x31, 0x09, 0x06, - 0x09, 0x0e, 0x81, 0x70, 0xf9, 0xd1, 0xa1, 0x69, - 0x00, 0x29, 0xf6, 0xd0, 0x80, 0x88, 0x03, 0xf0, - 0xd0, 0xfb, 0x3c, 0x00, 0x8c, 0x73, 0x00, 0x00, - 0x04, 0x4a, 0x01, 0x1c, 0x5c, 0x32, 0x0c, 0x32, - 0x05, 0xca, 0x80, 0x1a, 0xa2, 0x69, 0xf9, 0xf7, - 0x1f, 0xf8, 0x10, 0xbd, 0x44, 0x7d, 0x01, 0x00, - 0xf0, 0xb5, 0x04, 0x1c, 0x40, 0x68, 0x00, 0x25, - 0x01, 0x79, 0x00, 0x22, 0x85, 0xb0, 0xc9, 0x07, - 0xcb, 0x17, 0x69, 0x49, 0x01, 0x33, 0x89, 0x6a, - 0x10, 0x29, 0x05, 0xd3, 0x66, 0x49, 0xc0, 0x39, - 0x08, 0x6b, 0x01, 0x30, 0x3c, 0x00, 0xc8, 0x73, - 0x00, 0x00, 0x08, 0x63, 0x8e, 0xe0, 0x21, 0x68, - 0x0e, 0x68, 0xf6, 0x78, 0xb7, 0x06, 0xff, 0x0f, - 0xb6, 0x09, 0x00, 0x2b, 0x04, 0x97, 0x06, 0xd0, - 0x63, 0x69, 0x1f, 0x1c, 0x1b, 0x6a, 0x50, 0x37, - 0x9f, 0x42, 0x00, 0xd1, 0x01, 0x25, 0x00, 0x2d, - 0x02, 0xd0, 0x63, 0x69, 0x1b, 0x6a, 0x04, 0xe0, - 0x3c, 0x23, 0x59, 0x4f, 0x73, 0x43, 0xdb, 0x19, - 0x04, 0x33, 0xe3, 0x61, 0x9f, 0x88, 0x3c, 0x00, - 0x04, 0x74, 0x00, 0x00, 0x00, 0x2f, 0x70, 0xd0, - 0x9b, 0x79, 0x02, 0x2b, 0x6e, 0xd0, 0x04, 0x2b, - 0x17, 0xd0, 0x06, 0x2b, 0x69, 0xd1, 0x08, 0x68, - 0xa0, 0x61, 0x08, 0x89, 0x04, 0x38, 0x08, 0x81, - 0x20, 0x68, 0x01, 0x68, 0x04, 0x31, 0x01, 0x60, - 0x4e, 0x49, 0x00, 0x29, 0x5d, 0xd0, 0x04, 0x9f, - 0xba, 0x42, 0x5a, 0xd1, 0x49, 0x48, 0x22, 0x1c, - 0x1c, 0x30, 0x02, 0xf0, 0x65, 0xfe, 0x05, 0xb0, - 0x3c, 0x00, 0x40, 0x74, 0x00, 0x00, 0xf0, 0xbd, - 0x09, 0x68, 0x25, 0x1c, 0xca, 0x79, 0x40, 0x35, - 0x26, 0x1c, 0xea, 0x73, 0x8b, 0x79, 0x22, 0x1c, - 0x50, 0x32, 0x13, 0x70, 0x4b, 0x79, 0x60, 0x36, - 0x53, 0x70, 0x0b, 0x79, 0x93, 0x70, 0x4b, 0x78, - 0xd3, 0x70, 0x09, 0x78, 0x11, 0x71, 0x00, 0x21, - 0x29, 0x72, 0x16, 0x21, 0xb1, 0x73, 0x61, 0x6a, - 0x00, 0x29, 0x06, 0xd0, 0x01, 0x8b, 0x09, 0x07, - 0x09, 0x0f, 0x3c, 0x00, 0x7c, 0x74, 0x00, 0x00, - 0x29, 0x72, 0xb1, 0x81, 0x18, 0x21, 0xb1, 0x73, - 0x01, 0x1c, 0x0a, 0x31, 0x20, 0x1c, 0x06, 0x22, - 0x49, 0x30, 0xf9, 0xf7, 0x33, 0xf8, 0x60, 0x68, - 0x14, 0x22, 0x01, 0x88, 0xe9, 0x82, 0x01, 0x1d, - 0x20, 0x1c, 0x58, 0x30, 0xf9, 0xf7, 0x2a, 0xf8, - 0xe8, 0x8a, 0x30, 0x49, 0x08, 0x40, 0x01, 0x21, - 0x89, 0x03, 0x08, 0x43, 0xe8, 0x82, 0x70, 0x89, - 0x0f, 0x21, 0x08, 0x40, 0x3c, 0x00, 0xb8, 0x74, - 0x00, 0x00, 0x70, 0x81, 0x20, 0x68, 0x01, 0x89, - 0x08, 0x39, 0x01, 0x81, 0x20, 0x68, 0x01, 0x68, - 0x08, 0x31, 0x01, 0x60, 0x08, 0x21, 0x00, 0x20, - 0xfa, 0xf7, 0x83, 0xf8, 0x05, 0x1c, 0x02, 0x68, - 0x20, 0x68, 0x08, 0x21, 0xfa, 0xf7, 0xfb, 0xf8, - 0x20, 0x68, 0xfa, 0xf7, 0x74, 0xf8, 0x21, 0x49, - 0xc5, 0x60, 0x2f, 0xe0, 0x30, 0xe0, 0xff, 0xe7, - 0x21, 0x68, 0x60, 0x68, 0x0a, 0x68, 0x3c, 0x00, - 0xf4, 0x74, 0x00, 0x00, 0x80, 0x23, 0xa2, 0x64, - 0x1e, 0x55, 0xe5, 0x64, 0x55, 0x79, 0x13, 0x79, - 0x2d, 0x02, 0x5b, 0x19, 0x95, 0x79, 0x2d, 0x04, - 0x5b, 0x19, 0xd5, 0x79, 0x2d, 0x06, 0x5b, 0x19, - 0x95, 0x78, 0x12, 0x78, 0x12, 0x02, 0xaa, 0x18, - 0x15, 0x04, 0x0a, 0x89, 0x2d, 0x0c, 0x08, 0x3a, - 0x0a, 0x81, 0x21, 0x68, 0x0a, 0x68, 0x08, 0x32, - 0x0a, 0x60, 0xe1, 0x69, 0x02, 0x1c, 0x0a, 0x32, - 0x3c, 0x00, 0x30, 0x75, 0x00, 0x00, 0x01, 0xa8, - 0x09, 0x68, 0x0b, 0xf0, 0x3e, 0xf9, 0xe0, 0x69, - 0x2b, 0x1c, 0x01, 0x68, 0x20, 0x1c, 0x70, 0x30, - 0x01, 0xaa, 0x0b, 0xf0, 0x86, 0xf9, 0x09, 0x49, - 0x01, 0x22, 0x6d, 0xe7, 0x20, 0x68, 0xfa, 0xf7, - 0x22, 0xf8, 0x20, 0x1c, 0xfa, 0xf7, 0x4d, 0xf9, - 0x70, 0xe7, 0x84, 0x6a, 0x01, 0x00, 0x68, 0x61, - 0x01, 0x00, 0x55, 0x72, 0x00, 0x00, 0x8f, 0xc7, - 0xff, 0xff, 0x3c, 0x00, 0x6c, 0x75, 0x00, 0x00, - 0x41, 0x70, 0x00, 0x00, 0x79, 0x72, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x82, 0x20, 0xf9, 0xf7, - 0x93, 0xfe, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0xc0, 0x68, 0xf9, 0xf7, 0xfa, 0xff, - 0x01, 0x20, 0x80, 0xbd, 0x3c, 0x00, 0xa8, 0x75, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0xff, 0x20, - 0xf9, 0xf7, 0x79, 0xfe, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x20, - 0x70, 0x47, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x21, 0x99, 0x20, - 0xf9, 0xf7, 0x65, 0xfe, 0x80, 0xbd, 0xb0, 0xb5, - 0x00, 0x25, 0x01, 0x29, 0x12, 0x4c, 0x3c, 0x00, - 0xe4, 0x75, 0x00, 0x00, 0x0f, 0xd1, 0x0a, 0xf0, - 0x0f, 0xfc, 0x00, 0x28, 0x1d, 0xd0, 0x61, 0x78, - 0x3c, 0x23, 0x59, 0x43, 0x09, 0x19, 0x04, 0x31, - 0x01, 0x62, 0x61, 0x1c, 0x41, 0x62, 0x84, 0x62, - 0x04, 0x1c, 0x50, 0x34, 0x06, 0xe0, 0x00, 0x29, - 0x0f, 0xd1, 0x3c, 0x20, 0x50, 0x43, 0x25, 0x70, - 0x04, 0x19, 0x04, 0x34, 0x00, 0x2c, 0x08, 0xd0, - 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x21, - 0x3c, 0x00, 0x20, 0x76, 0x00, 0x00, 0xf8, 0xf7, - 0x18, 0xff, 0xa5, 0x80, 0x07, 0x20, 0xa0, 0x71, - 0xb0, 0xbd, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x00, 0x21, 0x01, 0xf0, 0x41, 0xfc, - 0x60, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x21, 0x68, - 0x01, 0x60, 0x20, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x61, 0x68, 0x41, 0x60, 0x12, 0x4e, 0x70, 0x68, - 0xa0, 0x42, 0x01, 0xd1, 0x60, 0x68, 0x70, 0x60, - 0xe0, 0x68, 0x3c, 0x00, 0x5c, 0x76, 0x00, 0x00, - 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x25, 0x06, 0xe0, - 0xe0, 0x68, 0xe9, 0x00, 0x41, 0x18, 0x14, 0x20, - 0x0b, 0xf0, 0xe2, 0xff, 0x01, 0x35, 0x30, 0x88, - 0x85, 0x42, 0xf5, 0xdb, 0x06, 0x21, 0x20, 0x1c, - 0x44, 0x30, 0xf8, 0xf7, 0xe9, 0xfe, 0x20, 0x6b, - 0x00, 0x28, 0x01, 0xd0, 0xf9, 0xf7, 0x86, 0xff, - 0xe0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xfa, 0xf7, - 0xaf, 0xf8, 0x70, 0xbd, 0x3c, 0x00, 0x98, 0x76, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0xf0, 0xb5, - 0x1d, 0x4f, 0x05, 0x9d, 0x3f, 0x68, 0x01, 0x26, - 0x1c, 0x1c, 0x33, 0x1c, 0x00, 0x2f, 0x00, 0xd0, - 0x2b, 0x1c, 0x1d, 0x06, 0x2d, 0x0e, 0x00, 0x29, - 0x06, 0xd0, 0x11, 0x78, 0x0e, 0x23, 0x16, 0x4f, - 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43, 0x10, 0xe0, - 0x21, 0x78, 0x00, 0x29, 0x13, 0xd0, 0xff, 0x31, - 0x0d, 0xe0, 0x01, 0x29, 0x01, 0xd9, 0x3c, 0x00, - 0xd4, 0x76, 0x00, 0x00, 0x01, 0x31, 0x11, 0x70, - 0x11, 0x78, 0x0e, 0x23, 0x0f, 0x4f, 0x49, 0x08, - 0x11, 0x70, 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43, - 0xdb, 0x19, 0x59, 0x5c, 0x21, 0x70, 0x21, 0x78, - 0x00, 0x29, 0x02, 0xd1, 0x11, 0x78, 0x00, 0x29, - 0xea, 0xd1, 0x09, 0x48, 0xc0, 0x68, 0x00, 0x28, - 0x05, 0xd0, 0x21, 0x78, 0x30, 0x1c, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0xf0, 0xbd, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0x77, 0x00, 0x00, 0xf0, 0xbd, - 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x24, 0x67, - 0x01, 0x00, 0x5c, 0x67, 0x01, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x84, 0x46, 0x00, 0x20, 0xf0, 0xb5, - 0x00, 0x29, 0x09, 0xd0, 0x11, 0x78, 0x1a, 0x4e, - 0xb1, 0x70, 0x19, 0x4e, 0xb1, 0x78, 0x71, 0x70, - 0x31, 0x70, 0x01, 0x21, 0x31, 0x61, 0x27, 0xe0, - 0x16, 0x4e, 0x01, 0x23, 0xf1, 0x56, 0x63, 0x46, - 0x5f, 0x68, 0x3c, 0x00, 0x4c, 0x77, 0x00, 0x00, - 0x00, 0x23, 0xf6, 0x56, 0x01, 0x25, 0xcc, 0x0f, - 0xb7, 0x42, 0x00, 0xd9, 0x00, 0x25, 0x00, 0x2c, - 0x01, 0xd0, 0x00, 0x2d, 0xe8, 0xd1, 0x0e, 0x4f, - 0x3b, 0x69, 0x00, 0x2b, 0x03, 0xd0, 0x00, 0x2d, - 0x01, 0xd1, 0x16, 0x70, 0x02, 0xe0, 0x1c, 0x43, - 0x01, 0xd1, 0x11, 0x70, 0x01, 0x20, 0x01, 0x24, - 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x24, 0x3c, 0x61, - 0x00, 0x2c, 0x02, 0xd0, 0x3c, 0x00, 0x88, 0x77, - 0x00, 0x00, 0x71, 0x1c, 0x39, 0x70, 0x01, 0xe0, - 0xff, 0x31, 0x79, 0x70, 0x00, 0x28, 0xd5, 0xd0, - 0x01, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x90, 0xb5, 0x0a, 0x4c, 0x00, 0x20, - 0x93, 0xb0, 0x20, 0x61, 0x03, 0x90, 0x68, 0x46, - 0x00, 0x21, 0x08, 0xf0, 0x84, 0xfd, 0x20, 0x7a, - 0x02, 0x28, 0x01, 0xd1, 0xe0, 0x6b, 0x00, 0xe0, - 0x20, 0x6c, 0xe0, 0x61, 0x01, 0x20, 0x3c, 0x00, - 0xc4, 0x77, 0x00, 0x00, 0x08, 0xf0, 0x8a, 0xfd, - 0x13, 0xb0, 0x90, 0xbd, 0xf4, 0x6e, 0x01, 0x00, - 0xf7, 0xb5, 0x05, 0x1c, 0x88, 0x88, 0x0c, 0x1c, - 0x82, 0xb0, 0x1f, 0x4f, 0x00, 0x28, 0x00, 0xd1, - 0x00, 0x27, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1, - 0xf9, 0xf7, 0x8a, 0xfd, 0x1b, 0x48, 0x3b, 0x1c, - 0x00, 0x68, 0x21, 0x1c, 0x02, 0x68, 0x28, 0x1c, - 0x00, 0x92, 0x04, 0x9a, 0xfe, 0xf7, 0x3c, 0xf8, - 0x3c, 0x00, 0x00, 0x78, 0x00, 0x00, 0x06, 0x1c, - 0x22, 0xd0, 0x03, 0x21, 0x04, 0x98, 0x02, 0xf0, - 0xb8, 0xff, 0x00, 0x28, 0x1b, 0xd0, 0x80, 0x78, - 0x01, 0x21, 0x03, 0xf0, 0xe4, 0xff, 0xa0, 0x88, - 0xa1, 0x8e, 0x48, 0x43, 0x00, 0x04, 0x0f, 0x49, - 0x00, 0x0c, 0x08, 0x80, 0x03, 0xf0, 0x81, 0xf9, - 0x01, 0x22, 0x00, 0x2d, 0x00, 0xd1, 0x00, 0x22, - 0x01, 0x1c, 0x0e, 0x20, 0x0b, 0xf0, 0xc9, 0xfe, - 0x00, 0x2f, 0x3c, 0x00, 0x3c, 0x78, 0x00, 0x00, - 0x08, 0xd1, 0x00, 0x21, 0x28, 0x1c, 0x02, 0xf0, - 0xbd, 0xfc, 0x03, 0xe0, 0x00, 0x26, 0x28, 0x1c, - 0x00, 0xf0, 0x0a, 0xf8, 0x30, 0x1c, 0x05, 0xb0, - 0xf0, 0xbd, 0x00, 0x00, 0xc1, 0xa1, 0x00, 0x00, - 0xe4, 0x65, 0x01, 0x00, 0xa8, 0x7c, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xfe, 0xf7, 0x38, 0xf8, - 0x01, 0x21, 0x00, 0x2c, 0x00, 0xd1, 0x00, 0x21, - 0x0e, 0x20, 0x0b, 0xf0, 0x3c, 0x00, 0x78, 0x78, - 0x00, 0x00, 0xdd, 0xfe, 0x10, 0xbd, 0xf8, 0xb5, - 0x07, 0x1c, 0x0b, 0xf0, 0x94, 0xfa, 0xfd, 0xf7, - 0xbc, 0xfe, 0x00, 0x26, 0x02, 0x28, 0x1e, 0x4d, - 0x01, 0xd0, 0x2e, 0x70, 0xf8, 0xbd, 0xfd, 0xf7, - 0x3e, 0xf8, 0x04, 0x1c, 0xf9, 0xf7, 0x59, 0xfc, - 0x00, 0x28, 0x14, 0xd0, 0xfd, 0xf7, 0x77, 0xf8, - 0x00, 0x28, 0x10, 0xd0, 0x02, 0xf0, 0xf9, 0xfb, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24, 0x3c, 0x00, - 0xb4, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x15, 0x4c, - 0x33, 0x1c, 0x21, 0x1c, 0x07, 0x22, 0x16, 0x20, - 0x0b, 0xf0, 0x66, 0xff, 0x68, 0x78, 0x80, 0x21, - 0x08, 0x43, 0x68, 0x70, 0x02, 0xf0, 0x0a, 0xfc, - 0x00, 0x28, 0xde, 0xd1, 0x28, 0x78, 0x80, 0x07, - 0xdb, 0xd4, 0xfd, 0xf7, 0x23, 0xf9, 0x00, 0x28, - 0x05, 0xd1, 0x28, 0x78, 0xc0, 0x07, 0x02, 0xd5, - 0xfd, 0xf7, 0x42, 0xf8, 0xd1, 0xe7, 0x02, 0xf0, - 0x3c, 0x00, 0xf0, 0x78, 0x00, 0x00, 0xcd, 0xfb, - 0x00, 0x28, 0xcd, 0xd0, 0x28, 0x78, 0x02, 0x21, - 0x08, 0x43, 0x28, 0x70, 0x21, 0x1c, 0x38, 0x1c, - 0xfd, 0xf7, 0xc1, 0xf8, 0xc4, 0xe7, 0x60, 0x6c, - 0x01, 0x00, 0x71, 0x02, 0x00, 0x00, 0x10, 0xb5, - 0x12, 0x4c, 0x01, 0x20, 0x20, 0x70, 0xfe, 0xf7, - 0xf0, 0xf9, 0x01, 0x21, 0xa0, 0x68, 0xfb, 0xf7, - 0xf4, 0xfe, 0xa0, 0x68, 0x03, 0xf0, 0x87, 0xff, - 0x0d, 0x48, 0x3c, 0x00, 0x2c, 0x79, 0x00, 0x00, - 0xa1, 0x68, 0x07, 0xf0, 0x23, 0xfd, 0xfb, 0xf7, - 0x55, 0xff, 0xe0, 0x68, 0x00, 0x28, 0x0d, 0xd0, - 0x09, 0x49, 0x06, 0x20, 0x0a, 0xf0, 0x24, 0xfd, - 0x08, 0x49, 0x05, 0x20, 0x0a, 0xf0, 0x20, 0xfd, - 0xfb, 0xf7, 0x6e, 0xff, 0x00, 0x28, 0x01, 0xd0, - 0x05, 0xf0, 0xf8, 0xfc, 0x10, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x79, - 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00, 0xf0, 0xb5, - 0x24, 0x4d, 0x23, 0x4c, 0x68, 0x7c, 0x20, 0x3c, - 0x9b, 0xb0, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x28, - 0x03, 0xd8, 0x20, 0x89, 0x01, 0x38, 0x20, 0x81, - 0x37, 0xe0, 0x00, 0x27, 0x6f, 0x74, 0x34, 0xe0, - 0x1c, 0x4e, 0x68, 0x22, 0x14, 0x36, 0x31, 0x1c, - 0x0c, 0x31, 0x01, 0xa8, 0xf8, 0xf7, 0x09, 0xfe, - 0x18, 0x48, 0x33, 0x89, 0x01, 0x21, 0x3c, 0x00, - 0xa4, 0x79, 0x00, 0x00, 0x44, 0x30, 0x0a, 0x1c, - 0x00, 0x2b, 0x00, 0x7b, 0x00, 0xd1, 0x02, 0x1c, - 0x12, 0x06, 0x12, 0x0e, 0x0d, 0xaf, 0x3a, 0x70, - 0x94, 0x46, 0xaa, 0x7b, 0x93, 0x19, 0x30, 0x33, - 0x5b, 0x7b, 0x7b, 0x70, 0xea, 0x73, 0x01, 0x32, - 0x12, 0x06, 0x12, 0x0e, 0x00, 0x27, 0x82, 0x42, - 0xaa, 0x73, 0x01, 0xd3, 0xaf, 0x73, 0x04, 0xe0, - 0x62, 0x46, 0x01, 0x2a, 0x01, 0xd1, 0x77, 0x60, - 0x3c, 0x00, 0xe0, 0x79, 0x00, 0x00, 0x00, 0xe0, - 0x71, 0x60, 0x06, 0x48, 0x07, 0x4a, 0x80, 0x38, - 0x81, 0x67, 0x42, 0x67, 0x68, 0x22, 0x01, 0xa9, - 0xf8, 0xf7, 0xdd, 0xfd, 0x27, 0x81, 0x08, 0xf0, - 0x12, 0xfd, 0x1b, 0xb0, 0xf0, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0xe9, 0x2e, 0x00, 0x00, 0xf1, 0xb5, - 0x86, 0xb0, 0x06, 0x99, 0x00, 0x20, 0x88, 0x61, - 0x06, 0x98, 0x84, 0x68, 0x80, 0x8d, 0x65, 0x68, - 0x01, 0x28, 0x3c, 0x00, 0x1c, 0x7a, 0x00, 0x00, - 0x4c, 0xd9, 0x35, 0x49, 0x49, 0x68, 0x05, 0x91, - 0x00, 0x29, 0x47, 0xd0, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x23, 0x03, 0x90, 0x28, 0x1c, 0x96, 0x46, - 0x94, 0x46, 0x06, 0x68, 0x04, 0x96, 0xf2, 0x78, - 0x80, 0x26, 0xb2, 0x43, 0x3f, 0x2a, 0x2e, 0xd8, - 0xd7, 0x06, 0xff, 0x0e, 0x01, 0x26, 0xbe, 0x40, - 0x37, 0x1c, 0x04, 0x9e, 0x52, 0x09, 0xb6, 0x78, - 0x76, 0x00, 0xb2, 0x18, 0x3c, 0x00, 0x58, 0x7a, - 0x00, 0x00, 0x26, 0x4e, 0x92, 0x00, 0x1c, 0x36, - 0xb2, 0x58, 0x3a, 0x40, 0x1e, 0xd0, 0x03, 0xe0, - 0x02, 0x90, 0x02, 0x89, 0xc0, 0x68, 0x51, 0x18, - 0x00, 0x28, 0xf9, 0xd1, 0x05, 0x98, 0x81, 0x42, - 0x14, 0xd8, 0x70, 0x46, 0x01, 0x30, 0x86, 0x46, - 0x00, 0x2b, 0x04, 0xd0, 0x60, 0x46, 0xd8, 0x60, - 0x01, 0x98, 0x62, 0x46, 0xd0, 0x60, 0x03, 0x98, - 0x01, 0x38, 0x03, 0x90, 0x06, 0xd0, 0x3c, 0x00, - 0x94, 0x7a, 0x00, 0x00, 0x23, 0x1c, 0x24, 0x68, - 0x60, 0x68, 0x02, 0x9a, 0x01, 0x90, 0x94, 0x46, - 0xc9, 0xe7, 0x70, 0x46, 0x01, 0x28, 0x07, 0xd9, - 0x2a, 0x1c, 0x00, 0x21, 0x3f, 0x20, 0x01, 0xf0, - 0x51, 0xff, 0x05, 0x1c, 0x06, 0x98, 0x85, 0x61, - 0x28, 0x1c, 0x01, 0xf0, 0xb3, 0xff, 0x0e, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x07, 0xd0, 0x28, 0x68, - 0x01, 0x88, 0x40, 0x79, 0x02, 0x31, 0x09, 0x1a, - 0x3c, 0x00, 0xd0, 0x7a, 0x00, 0x00, 0x28, 0x1c, - 0x01, 0xf0, 0xe5, 0xfc, 0xa2, 0x68, 0x06, 0x98, - 0xc0, 0x68, 0x06, 0x99, 0x0b, 0x69, 0x29, 0x1c, - 0xf8, 0xf7, 0x7c, 0xfc, 0x03, 0x49, 0x08, 0x69, - 0x01, 0x30, 0x08, 0x61, 0x07, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4a, 0x80, 0x00, - 0x12, 0x58, 0xd0, 0x06, 0xc0, 0x0e, 0x01, 0x30, - 0x07, 0x4b, 0x3c, 0x00, 0x0c, 0x7b, 0x00, 0x00, - 0x1c, 0x68, 0x00, 0x2c, 0xfc, 0xdb, 0x5a, 0x60, - 0x20, 0x22, 0x12, 0x1a, 0x91, 0x40, 0x19, 0x60, - 0x19, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x10, 0xbd, - 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20, 0x07, 0x00, - 0xb0, 0xb5, 0x12, 0x4c, 0x00, 0x25, 0x25, 0x70, - 0xa1, 0x68, 0x11, 0x48, 0x07, 0xf0, 0x32, 0xfc, - 0x65, 0x61, 0xfb, 0xf7, 0xa3, 0xfe, 0xe0, 0x68, - 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00, 0x48, 0x7b, - 0x00, 0x00, 0xfb, 0xf7, 0xa4, 0xfe, 0x01, 0x21, - 0x07, 0x20, 0x0b, 0xf0, 0x70, 0xfd, 0x0a, 0x49, - 0x06, 0x20, 0x0a, 0xf0, 0x4c, 0xfc, 0x09, 0x49, - 0x05, 0x20, 0x0a, 0xf0, 0x48, 0xfc, 0xa0, 0x68, - 0x03, 0xf0, 0x67, 0xfe, 0x00, 0x21, 0xa0, 0x68, - 0xfb, 0xf7, 0xcd, 0xfd, 0x05, 0xf0, 0xab, 0xfb, - 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x7b, 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00, - 0x10, 0xb5, 0x0f, 0x4c, 0x20, 0x7c, 0x00, 0x28, - 0x19, 0xd1, 0x60, 0x69, 0x00, 0x28, 0x16, 0xd1, - 0xe0, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x0a, 0x48, - 0x1c, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x05, 0xf0, 0xce, 0xfb, 0x01, 0x21, 0x07, 0x20, - 0x0b, 0xf0, 0x40, 0xfd, 0xa0, 0x68, 0x03, 0xf0, - 0x3f, 0xfe, 0x04, 0x48, 0xa1, 0x68, 0x07, 0xf0, - 0x3c, 0x00, 0xc0, 0x7b, 0x00, 0x00, 0xdb, 0xfb, - 0x01, 0x20, 0x20, 0x70, 0x10, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x4c, 0x01, 0x22, 0xa3, 0x68, 0xe5, 0x68, - 0x26, 0x8a, 0x5d, 0x1b, 0xb5, 0x42, 0x01, 0xd1, - 0x00, 0x22, 0x06, 0xe0, 0x25, 0x68, 0x01, 0x33, - 0x2e, 0x68, 0xa3, 0x60, 0x26, 0x60, 0x04, 0x35, - 0x03, 0xc5, 0x00, 0x2a, 0x04, 0xd1, 0x01, 0x21, - 0x9d, 0x20, 0x3c, 0x00, 0xfc, 0x7b, 0x00, 0x00, - 0xf9, 0xf7, 0x52, 0xfb, 0x70, 0xbd, 0x03, 0x49, - 0x02, 0x20, 0x08, 0x60, 0x70, 0xbd, 0x00, 0x00, - 0x44, 0xe3, 0x01, 0x00, 0x40, 0x20, 0x07, 0x00, - 0x80, 0xb5, 0x02, 0xf0, 0xb9, 0xf8, 0x80, 0xbd, - 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0xf9, 0xf7, - 0x3f, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20, 0xf9, 0xf7, - 0x37, 0xfb, 0x00, 0x20, 0x3c, 0x00, 0x38, 0x7c, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x2b, 0x20, 0xf9, 0xf7, 0x2f, 0xfb, - 0x02, 0x20, 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49, - 0x01, 0x20, 0x08, 0x61, 0x70, 0x47, 0x7c, 0x78, - 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x23, - 0x0f, 0x1c, 0x17, 0x49, 0x58, 0x43, 0x45, 0x18, - 0x6c, 0x68, 0x30, 0x1c, 0x0b, 0xf0, 0x3f, 0xfe, - 0x00, 0x2f, 0x09, 0xd1, 0x30, 0x1c, 0x3c, 0x00, - 0x74, 0x7c, 0x00, 0x00, 0x03, 0xf0, 0xee, 0xfe, - 0x41, 0x20, 0x07, 0x55, 0x11, 0x48, 0x21, 0x1c, - 0xff, 0xf7, 0xa6, 0xff, 0xf8, 0xbd, 0x41, 0x20, - 0x07, 0x55, 0xa0, 0x6b, 0x00, 0x28, 0x03, 0xd0, - 0x20, 0x1c, 0x00, 0xf0, 0xdf, 0xf9, 0xf5, 0xe7, - 0x20, 0x1c, 0x00, 0xf0, 0xdb, 0xf9, 0xac, 0x68, - 0x00, 0x2c, 0x02, 0xd0, 0x00, 0x20, 0xa8, 0x60, - 0xed, 0xe7, 0x30, 0x1c, 0x05, 0xf0, 0x34, 0xf9, - 0x3c, 0x00, 0xb0, 0x7c, 0x00, 0x00, 0x04, 0x1c, - 0xe8, 0xd1, 0x08, 0x21, 0x0c, 0x20, 0xf9, 0xf7, - 0xf4, 0xfa, 0xe3, 0xe7, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x55, 0x80, 0x00, 0x00, 0x07, 0x4a, - 0x80, 0xb5, 0x50, 0x70, 0x51, 0x60, 0x12, 0x78, - 0x06, 0x4b, 0x80, 0x00, 0x52, 0x01, 0xd2, 0x18, - 0x10, 0x18, 0x40, 0x38, 0x02, 0x68, 0x08, 0x1c, - 0xf8, 0xf7, 0x7b, 0xfb, 0x80, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x7c, 0x00, 0x00, - 0xfc, 0x42, 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x49, - 0x04, 0x1c, 0xc8, 0x70, 0x08, 0x4d, 0xe4, 0x35, - 0xa8, 0x7a, 0x08, 0x71, 0x08, 0x2c, 0x01, 0xd3, - 0xf9, 0xf7, 0xfc, 0xfa, 0xa8, 0x7a, 0x05, 0x49, - 0x40, 0x01, 0x40, 0x18, 0xa1, 0x00, 0x40, 0x58, - 0xf8, 0xf7, 0x60, 0xfb, 0xb0, 0xbd, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0x80, 0x43, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x3c, 0x00, 0x28, 0x7d, - 0x00, 0x00, 0x01, 0xd0, 0x09, 0xf0, 0x1d, 0xf9, - 0x80, 0xbd, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x00, 0x20, 0x08, 0x60, 0x68, 0x68, 0x09, 0xf0, - 0x36, 0xfb, 0x6c, 0x60, 0xb0, 0xbd, 0x10, 0xb5, - 0x04, 0x1c, 0x09, 0xf0, 0x34, 0xfb, 0x21, 0x68, - 0x00, 0x29, 0x00, 0xd1, 0x64, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x00, 0x21, 0x01, 0x60, 0x40, 0x60, - 0x70, 0x47, 0xf8, 0xb5, 0x46, 0x68, 0x3c, 0x00, - 0x64, 0x7d, 0x00, 0x00, 0x04, 0x1c, 0x40, 0x6a, - 0x35, 0x1c, 0x0a, 0x35, 0x00, 0x28, 0x04, 0xd0, - 0x20, 0x1c, 0xf9, 0xf7, 0x89, 0xfd, 0x07, 0x1c, - 0x00, 0xe0, 0x04, 0x27, 0x29, 0x1c, 0x60, 0x69, - 0x00, 0xf0, 0xf6, 0xfc, 0x79, 0x00, 0x0f, 0x18, - 0xba, 0x88, 0xf1, 0x8a, 0x05, 0x1c, 0x8a, 0x42, - 0x05, 0xd1, 0x30, 0x88, 0x00, 0x05, 0x02, 0xd5, - 0x04, 0xf0, 0xbe, 0xfb, 0x3c, 0xe0, 0x28, 0x68, - 0x3c, 0x00, 0xa0, 0x7d, 0x00, 0x00, 0x00, 0x28, - 0x0f, 0xd0, 0x01, 0x32, 0x8a, 0x42, 0x04, 0xd1, - 0xf9, 0xf7, 0x0f, 0xfc, 0x21, 0x68, 0xc1, 0x60, - 0x0b, 0xe0, 0xf9, 0xf7, 0xf0, 0xfb, 0xf0, 0x8a, - 0x00, 0x07, 0x04, 0xd0, 0x00, 0x21, 0x29, 0x60, - 0x29, 0xe0, 0x08, 0x07, 0x27, 0xd1, 0x20, 0x68, - 0x28, 0x60, 0xf0, 0x8a, 0xb8, 0x80, 0x13, 0x48, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x31, 0x88, - 0x49, 0x05, 0x3c, 0x00, 0xdc, 0x7d, 0x00, 0x00, - 0x18, 0xd4, 0x29, 0x68, 0x21, 0x60, 0x00, 0x21, - 0x29, 0x60, 0xe1, 0x69, 0x00, 0x29, 0x0d, 0xd0, - 0x89, 0x79, 0x02, 0x29, 0x0a, 0xd1, 0x08, 0x21, - 0x21, 0x86, 0x21, 0x1c, 0x38, 0x31, 0xa1, 0x62, - 0x22, 0x1c, 0xdc, 0x30, 0x08, 0x49, 0x02, 0xf0, - 0x81, 0xf9, 0xf8, 0xbd, 0x20, 0x1c, 0x00, 0xf0, - 0x5f, 0xf8, 0xfa, 0xe7, 0x20, 0x1c, 0xf9, 0xf7, - 0xef, 0xfc, 0xf6, 0xe7, 0x3c, 0x00, 0x18, 0x7e, - 0x00, 0x00, 0x20, 0x68, 0xf9, 0xf7, 0xbd, 0xfb, - 0xf7, 0xe7, 0xc4, 0x69, 0x01, 0x00, 0xb9, 0x71, - 0x00, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, 0x09, 0x78, - 0x01, 0x24, 0xc9, 0x07, 0x21, 0xd5, 0x02, 0xf0, - 0x8c, 0xff, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24, - 0x1b, 0xe0, 0x0e, 0x4e, 0x75, 0x6e, 0x00, 0x2d, - 0x17, 0xd0, 0x34, 0x6e, 0x06, 0x22, 0x31, 0x1c, - 0x38, 0x1c, 0xf8, 0xf7, 0xd4, 0xfa, 0x3c, 0x00, - 0x54, 0x7e, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd1, - 0x01, 0x20, 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20, - 0x04, 0x1c, 0x03, 0xe0, 0x01, 0x3d, 0x06, 0x36, - 0x00, 0x2d, 0xee, 0xd1, 0x00, 0x2c, 0x03, 0xd1, - 0x02, 0x4e, 0xb0, 0x6e, 0x01, 0x30, 0xb0, 0x66, - 0x20, 0x1c, 0xf8, 0xbd, 0x10, 0x79, 0x01, 0x00, - 0x30, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x06, 0x49, - 0x00, 0x22, 0x1c, 0x23, 0xcc, 0x56, 0xac, 0x42, - 0x3c, 0x00, 0x90, 0x7e, 0x00, 0x00, 0x01, 0xd1, - 0x08, 0x1c, 0x30, 0xbd, 0x01, 0x32, 0x48, 0x31, - 0x01, 0x2a, 0xf5, 0xd3, 0x30, 0xbd, 0xcc, 0x6d, - 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x00, 0x22, - 0x1c, 0x23, 0x53, 0x43, 0xe3, 0x58, 0x83, 0x42, - 0x04, 0xd1, 0x1c, 0x20, 0x50, 0x43, 0x00, 0x19, - 0x0a, 0x60, 0x10, 0xbd, 0x01, 0x32, 0x0e, 0x2a, - 0xf2, 0xd3, 0x00, 0x20, 0x10, 0xbd, 0xdc, 0x71, - 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x7e, 0x00, 0x00, - 0xf0, 0xb5, 0x41, 0x68, 0x95, 0xb0, 0x07, 0x1c, - 0x90, 0x37, 0x13, 0x91, 0x04, 0x1c, 0xf8, 0x78, - 0x25, 0x1c, 0x80, 0x35, 0xc6, 0x07, 0x28, 0x79, - 0xf6, 0x0f, 0x4a, 0x49, 0x02, 0x28, 0x4d, 0xd1, - 0x0a, 0x6d, 0x00, 0x2a, 0x4a, 0xd0, 0x48, 0x68, - 0x01, 0x30, 0x48, 0x60, 0x0a, 0xf0, 0x58, 0xff, - 0x44, 0x49, 0x08, 0x61, 0x48, 0x61, 0x13, 0x99, - 0x09, 0x79, 0xc9, 0x07, 0x3c, 0x00, 0x08, 0x7f, - 0x00, 0x00, 0x01, 0xd4, 0x41, 0x49, 0x88, 0x61, - 0x20, 0x68, 0x06, 0x22, 0x06, 0x90, 0xa1, 0x68, - 0x03, 0xa8, 0xf8, 0xf7, 0xee, 0xfa, 0x06, 0x22, - 0x04, 0xa8, 0x02, 0x30, 0xe1, 0x68, 0xf8, 0xf7, - 0xe8, 0xfa, 0x07, 0xa8, 0x06, 0x22, 0x21, 0x69, - 0xf8, 0xf7, 0xe3, 0xfa, 0xb8, 0x78, 0x08, 0xab, - 0x00, 0x21, 0x98, 0x70, 0x0c, 0x96, 0x63, 0x6a, - 0x20, 0x1c, 0xa0, 0x30, 0x0a, 0x1c, 0x3c, 0x00, - 0x44, 0x7f, 0x00, 0x00, 0x00, 0x2b, 0x02, 0xd0, - 0x02, 0x8a, 0x52, 0x07, 0x52, 0x0f, 0x08, 0xab, - 0xda, 0x70, 0x00, 0xab, 0x99, 0x84, 0x13, 0x99, - 0x09, 0x88, 0xc9, 0x0b, 0xd9, 0x84, 0x69, 0x6b, - 0x10, 0xab, 0x10, 0x91, 0xa9, 0x6b, 0x11, 0x91, - 0x80, 0x8b, 0x29, 0x49, 0x18, 0x81, 0x09, 0x6d, - 0x03, 0xa8, 0xf8, 0xf7, 0x32, 0xfa, 0x29, 0x79, - 0x68, 0x6b, 0x0b, 0xf0, 0x4d, 0xfd, 0x29, 0x79, - 0x3c, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xa8, 0x6b, - 0x0b, 0xf0, 0x67, 0xfd, 0x3d, 0xe0, 0x00, 0x28, - 0x38, 0xd1, 0x48, 0x6d, 0x14, 0x90, 0x00, 0x28, - 0x34, 0xd0, 0x20, 0x68, 0x06, 0x22, 0x03, 0x90, - 0xa1, 0x68, 0x68, 0x46, 0xf8, 0xf7, 0xab, 0xfa, - 0x06, 0x22, 0x68, 0x46, 0x80, 0x18, 0xe1, 0x68, - 0xf8, 0xf7, 0xa5, 0xfa, 0x05, 0xa8, 0x06, 0x22, - 0x21, 0x69, 0xf8, 0xf7, 0xa0, 0xfa, 0x00, 0x21, - 0x04, 0x91, 0x3c, 0x00, 0xbc, 0x7f, 0x00, 0x00, - 0xb9, 0x78, 0x08, 0xa8, 0x10, 0xab, 0x01, 0x72, - 0x08, 0x96, 0xe9, 0x68, 0x0b, 0x91, 0x69, 0x79, - 0x41, 0x72, 0x68, 0x6b, 0x0e, 0x90, 0xa8, 0x6b, - 0x10, 0x90, 0x28, 0x8d, 0xd8, 0x80, 0x68, 0x8d, - 0x18, 0x81, 0xe1, 0x69, 0x0c, 0xa8, 0x00, 0x29, - 0x04, 0xd0, 0x89, 0x79, 0x01, 0x70, 0x20, 0x6a, - 0x0d, 0x90, 0x01, 0xe0, 0x07, 0x21, 0x01, 0x70, - 0x68, 0x46, 0x14, 0x99, 0x3c, 0x00, 0xf8, 0x7f, - 0x00, 0x00, 0xf8, 0xf7, 0xef, 0xf9, 0x02, 0xe0, - 0x20, 0x68, 0xf9, 0xf7, 0xca, 0xfa, 0x20, 0x1c, - 0xf9, 0xf7, 0xf5, 0xfb, 0x15, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x22, 0x01, 0x89, - 0x0c, 0x31, 0x01, 0x81, 0x05, 0x68, 0x21, 0x1c, - 0x0c, 0x3d, 0x05, 0x60, 0xa8, 0x18, 0xf8, 0xf7, - 0x64, 0xfa, 0x06, 0x22, 0xa1, 0x18, 0x3c, 0x00, - 0x34, 0x80, 0x00, 0x00, 0x28, 0x1c, 0xf8, 0xf7, - 0x5f, 0xfa, 0xa0, 0x8f, 0x00, 0x09, 0xe0, 0x62, - 0x20, 0x63, 0x03, 0x48, 0x01, 0x69, 0x20, 0x1c, - 0xf8, 0xf7, 0xc7, 0xf9, 0xb0, 0xbd, 0x00, 0x00, - 0x7c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x60, 0x36, 0x05, 0x1c, 0x70, 0x7a, 0x0c, 0x23, - 0x25, 0x49, 0x58, 0x43, 0x44, 0x18, 0xa8, 0x6b, - 0x00, 0x27, 0x00, 0x28, 0x06, 0xd0, 0xa0, 0x78, - 0x3c, 0x00, 0x70, 0x80, 0x00, 0x00, 0x01, 0x28, - 0x03, 0xd1, 0xa7, 0x70, 0x70, 0x7a, 0x0a, 0xf0, - 0xb6, 0xfd, 0x2a, 0x1c, 0x0c, 0x21, 0x80, 0x20, - 0x0b, 0xf0, 0x95, 0xfb, 0xa8, 0x6b, 0x00, 0x28, - 0x33, 0xd0, 0xa0, 0x78, 0x02, 0x28, 0x0b, 0xd0, - 0x04, 0x28, 0x22, 0xd1, 0xa7, 0x70, 0x2f, 0x1c, - 0x40, 0x37, 0x78, 0x78, 0x02, 0x28, 0x0c, 0xd1, - 0x70, 0x7a, 0x0a, 0xf0, 0xa0, 0xfd, 0x18, 0xe0, - 0x03, 0x20, 0x3c, 0x00, 0xac, 0x80, 0x00, 0x00, - 0xa0, 0x70, 0x12, 0x49, 0x00, 0x20, 0x14, 0x39, - 0x09, 0x69, 0xf8, 0xf7, 0x90, 0xf9, 0x0f, 0xe0, - 0x2c, 0x1c, 0x07, 0xe0, 0x78, 0x78, 0x41, 0x21, - 0x22, 0x1c, 0x08, 0x55, 0x0c, 0x21, 0x80, 0x20, - 0x0b, 0xf0, 0x70, 0xfb, 0x60, 0x34, 0x60, 0x7a, - 0x04, 0xf0, 0x20, 0xff, 0x04, 0x1c, 0xf1, 0xd1, - 0x70, 0x7a, 0x40, 0x35, 0xa9, 0x8b, 0x00, 0x02, - 0x09, 0x09, 0x09, 0x04, 0x3c, 0x00, 0xe8, 0x80, - 0x00, 0x00, 0x08, 0x43, 0x81, 0x21, 0x01, 0x43, - 0x0c, 0x20, 0x0b, 0xf0, 0xa0, 0xfa, 0xf8, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0xf8, 0xb5, - 0x1c, 0x49, 0x05, 0x1c, 0x88, 0x6a, 0x01, 0x30, - 0x88, 0x62, 0x28, 0x1c, 0x0b, 0xf0, 0x7d, 0xfd, - 0x04, 0x1c, 0x11, 0xd0, 0x2b, 0x1c, 0x20, 0x33, - 0x1e, 0x1c, 0x5a, 0x79, 0x20, 0x1c, 0xb4, 0x30, - 0x19, 0x79, 0x14, 0x4f, 0xfd, 0xf7, 0x3c, 0x00, - 0x24, 0x81, 0x00, 0x00, 0x89, 0xf8, 0xaa, 0x7a, - 0x20, 0x1c, 0xb8, 0x30, 0xb1, 0x79, 0xfd, 0xf7, - 0xb9, 0xf8, 0x00, 0x2f, 0x04, 0xd1, 0x01, 0x21, - 0x28, 0x68, 0xfa, 0xf7, 0x6d, 0xfa, 0xf8, 0xbd, - 0x60, 0x68, 0xbc, 0x21, 0xc0, 0x8a, 0x08, 0x53, - 0x28, 0x68, 0x00, 0x21, 0xfa, 0xf7, 0x64, 0xfa, - 0x00, 0x28, 0x09, 0xd0, 0x06, 0x49, 0xc8, 0x6a, - 0x01, 0x30, 0xc8, 0x62, 0x00, 0x2c, 0xee, 0xd0, - 0x3c, 0x00, 0x60, 0x81, 0x00, 0x00, 0x20, 0x1c, - 0xf9, 0xf7, 0x47, 0xfb, 0xea, 0xe7, 0x20, 0x1c, - 0xf8, 0xf7, 0x3c, 0xf9, 0xe6, 0xe7, 0xc4, 0x69, - 0x01, 0x00, 0xa1, 0xff, 0x00, 0x00, 0xf8, 0xb5, - 0x16, 0x4c, 0x05, 0x1f, 0x00, 0x22, 0x21, 0x1c, - 0xa0, 0x31, 0x03, 0xe0, 0x28, 0x68, 0xa0, 0x42, - 0x09, 0xd0, 0x20, 0x34, 0xa1, 0x42, 0xf9, 0xd1, - 0x00, 0x2a, 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20, - 0xf9, 0xf7, 0x3c, 0x00, 0x9c, 0x81, 0x00, 0x00, - 0x83, 0xf8, 0xf8, 0xbd, 0x0d, 0x4f, 0xbe, 0x79, - 0x60, 0x69, 0x01, 0x30, 0x60, 0x61, 0xf8, 0xf7, - 0x97, 0xfd, 0xa8, 0x42, 0x07, 0xd1, 0xa0, 0x88, - 0x04, 0x30, 0xf8, 0xf7, 0x97, 0xfd, 0xe0, 0x69, - 0x01, 0x30, 0xe0, 0x61, 0x05, 0xe0, 0x20, 0x68, - 0x28, 0x60, 0x25, 0x60, 0xa0, 0x69, 0x01, 0x30, - 0xa0, 0x61, 0xbe, 0x71, 0xe5, 0xe7, 0x00, 0x00, - 0xd0, 0x5c, 0x01, 0x00, 0x3c, 0x00, 0xd8, 0x81, - 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x00, 0x29, - 0x01, 0xdb, 0x06, 0x29, 0x01, 0xdb, 0x02, 0x20, - 0x70, 0x47, 0x06, 0x4b, 0xc9, 0x00, 0x5a, 0x5c, - 0xc9, 0x18, 0x02, 0x70, 0x4a, 0x78, 0x42, 0x70, - 0x8a, 0x78, 0x82, 0x70, 0x49, 0x68, 0x41, 0x60, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0xcc, 0x5a, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf9, 0xf7, 0x3c, 0x00, - 0x14, 0x82, 0x00, 0x00, 0x75, 0xf8, 0x10, 0x48, - 0x40, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24, - 0x10, 0x2d, 0x00, 0xd3, 0x0f, 0x25, 0x06, 0x20, - 0x0b, 0x49, 0x60, 0x43, 0x12, 0x31, 0x40, 0x18, - 0x41, 0x78, 0x80, 0x78, 0x49, 0x19, 0x09, 0x06, - 0x09, 0x0e, 0x88, 0x42, 0x00, 0xd2, 0x01, 0x1c, - 0x01, 0x20, 0x88, 0x40, 0x05, 0x49, 0x01, 0x38, - 0x09, 0x68, 0x08, 0x40, 0x00, 0x04, 0x00, 0x0c, - 0x3c, 0x00, 0x50, 0x82, 0x00, 0x00, 0x02, 0xf0, - 0x44, 0xfe, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x7a, - 0x01, 0x00, 0x08, 0x20, 0x07, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x09, 0xf0, 0xcf, 0xfd, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0, - 0x82, 0xfd, 0x05, 0x61, 0xb0, 0xbd, 0x80, 0xb5, - 0x0a, 0xf0, 0x97, 0xfd, 0x03, 0x4a, 0x0c, 0x32, - 0x06, 0xca, 0x89, 0x18, 0x08, 0x1a, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x82, 0x00, 0x00, - 0xa0, 0x7d, 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4c, - 0x04, 0x9e, 0x64, 0x68, 0x0d, 0xe0, 0x65, 0x68, - 0x85, 0x42, 0x09, 0xd1, 0x20, 0x7a, 0x08, 0x70, - 0xe0, 0x68, 0x10, 0x60, 0x20, 0x69, 0x18, 0x60, - 0x20, 0x7d, 0x30, 0x80, 0x01, 0x20, 0x70, 0xbd, - 0x24, 0x68, 0x00, 0x2c, 0xef, 0xd1, 0x00, 0x20, - 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0x82, - 0x00, 0x00, 0x20, 0x30, 0x81, 0x7b, 0x20, 0x69, - 0x04, 0x30, 0xfd, 0xf7, 0x64, 0xf9, 0x01, 0x1c, - 0x62, 0x20, 0x02, 0x5b, 0x63, 0x6a, 0x40, 0x34, - 0x20, 0x78, 0x02, 0xf0, 0xce, 0xfd, 0x10, 0xbd, - 0x00, 0x00, 0x0b, 0x49, 0x10, 0xb5, 0x08, 0x88, - 0x8a, 0x69, 0x0a, 0x23, 0x50, 0x43, 0x58, 0x43, - 0x0e, 0xd0, 0x08, 0x4a, 0x53, 0x89, 0x94, 0x88, - 0xd2, 0x88, 0x1b, 0x19, 0x52, 0x04, 0x3c, 0x00, - 0x04, 0x83, 0x00, 0x00, 0x52, 0x0c, 0x9a, 0x18, - 0xc9, 0x68, 0x06, 0x32, 0x4a, 0x43, 0x0a, 0x21, - 0x51, 0x43, 0xf8, 0xf7, 0xfd, 0xf9, 0x10, 0xbd, - 0xc8, 0x74, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x43, 0x1c, 0x01, 0xd1, 0x10, 0x48, - 0x10, 0xbd, 0x0f, 0x4a, 0x0e, 0x4b, 0x94, 0x3a, - 0x12, 0x68, 0x44, 0x3b, 0x1b, 0x7a, 0x10, 0xe0, - 0x54, 0x68, 0x84, 0x42, 0x0c, 0xd1, 0x00, 0x29, - 0x3c, 0x00, 0x40, 0x83, 0x00, 0x00, 0x0f, 0xd1, - 0x02, 0x2b, 0x03, 0xd1, 0xd4, 0x7b, 0x02, 0x2c, - 0x0a, 0xd2, 0x04, 0xe0, 0x00, 0x2b, 0x05, 0xd1, - 0xd4, 0x7b, 0xe4, 0x07, 0x04, 0xd4, 0x12, 0x68, - 0x00, 0x2a, 0xec, 0xd1, 0x00, 0x20, 0x10, 0xbd, - 0x10, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x38, 0x6f, - 0x01, 0x00, 0x01, 0x1c, 0x01, 0x20, 0x01, 0x29, - 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, 0x00, 0xb5, - 0x02, 0x1c, 0x3c, 0x00, 0x7c, 0x83, 0x00, 0x00, - 0xfd, 0xf7, 0xce, 0xf8, 0x00, 0x28, 0x08, 0xd0, - 0x10, 0x1c, 0xff, 0xf7, 0xf1, 0xff, 0x18, 0x23, - 0x03, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x69, - 0x00, 0xbd, 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00, - 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x28, - 0x00, 0xd1, 0x08, 0x48, 0x07, 0x49, 0x00, 0x68, - 0x50, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x02, 0xd0, - 0x02, 0x29, 0x04, 0xd1, 0x3c, 0x00, 0xb8, 0x83, - 0x00, 0x00, 0x00, 0xe0, 0x01, 0x21, 0x00, 0xf0, - 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x12, 0x4a, - 0x12, 0x4b, 0x12, 0x7a, 0x2c, 0x3b, 0x00, 0x2a, - 0x03, 0xd1, 0x5a, 0x68, 0x00, 0x2a, 0x18, 0xd1, - 0x04, 0xe0, 0x02, 0x2a, 0x02, 0xd1, 0x9a, 0x68, - 0x00, 0x2a, 0x12, 0xd1, 0x00, 0x20, 0x70, 0x47, - 0xc2, 0x7b, 0x8a, 0x42, 0x01, 0xd0, 0x3c, 0x00, - 0xf4, 0x83, 0x00, 0x00, 0x03, 0x2a, 0x0a, 0xd1, - 0x82, 0x7e, 0x01, 0x2a, 0x07, 0xd1, 0x02, 0x7f, - 0x01, 0x32, 0x12, 0x06, 0x12, 0x0e, 0x02, 0x77, - 0xc3, 0x7e, 0x9a, 0x42, 0xee, 0xd2, 0x00, 0x68, - 0x00, 0x28, 0xec, 0xd1, 0x70, 0x47, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0xf7, 0xb5, 0x84, 0x46, - 0x00, 0x20, 0x01, 0x27, 0x00, 0x24, 0x00, 0x25, - 0x88, 0xb0, 0x07, 0xe0, 0x62, 0x46, 0x52, 0x5d, - 0x3c, 0x00, 0x30, 0x84, 0x00, 0x00, 0x00, 0x2a, - 0x05, 0xd0, 0xab, 0x00, 0x6e, 0x46, 0xf2, 0x50, - 0x01, 0x35, 0x8d, 0x42, 0xf5, 0xd3, 0x00, 0x2d, - 0x00, 0xd0, 0x01, 0x20, 0x00, 0x28, 0x28, 0xd0, - 0x00, 0x27, 0x16, 0x4c, 0x6e, 0x46, 0x22, 0xe0, - 0x20, 0x1c, 0x00, 0xf0, 0x30, 0xf8, 0x01, 0x28, - 0x01, 0xd0, 0x07, 0x28, 0x06, 0xd1, 0x00, 0x21, - 0x20, 0x1c, 0x00, 0xf0, 0x34, 0xf8, 0x31, 0x68, - 0x88, 0x42, 0x3c, 0x00, 0x6c, 0x84, 0x00, 0x00, - 0x01, 0xd2, 0x02, 0x27, 0x14, 0xe0, 0x20, 0x68, - 0xc9, 0x00, 0x0c, 0x18, 0x08, 0x3c, 0x20, 0x1c, - 0x00, 0xf0, 0x1c, 0xf8, 0x07, 0x28, 0x07, 0xd1, - 0x01, 0x20, 0x01, 0x2d, 0x00, 0xd0, 0x00, 0x20, - 0x24, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x08, 0x34, - 0x01, 0x3d, 0x04, 0x36, 0x00, 0x2d, 0xda, 0xd1, - 0x0a, 0x98, 0x04, 0x60, 0x0b, 0xb0, 0x38, 0x1c, - 0xf0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x84, - 0x00, 0x00, 0x20, 0x52, 0x01, 0x00, 0x00, 0x68, - 0x00, 0x29, 0x01, 0xd0, 0x80, 0x02, 0x80, 0x0a, - 0x70, 0x47, 0x10, 0xb5, 0x40, 0x68, 0x80, 0x00, - 0x44, 0x0f, 0x08, 0x2c, 0x03, 0xd3, 0x02, 0x21, - 0x87, 0x20, 0xf8, 0xf7, 0xec, 0xfe, 0x20, 0x1c, - 0x10, 0xbd, 0x00, 0x29, 0x02, 0xd0, 0x00, 0x68, - 0x80, 0x0d, 0x70, 0x47, 0x40, 0x68, 0x80, 0x05, - 0x80, 0x0d, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x84, 0x00, 0x00, 0x10, 0xb5, 0x40, 0x68, - 0x40, 0x01, 0x44, 0x0f, 0x05, 0x2c, 0x03, 0xd3, - 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7, 0xd6, 0xfe, - 0x20, 0x1c, 0x10, 0xbd, 0xf8, 0xb5, 0x05, 0x1c, - 0x88, 0x0a, 0x00, 0x90, 0x1c, 0x48, 0x8e, 0x05, - 0xc0, 0x69, 0xb6, 0x0d, 0x17, 0x1c, 0x1c, 0x1c, - 0x00, 0x28, 0x05, 0xd1, 0x18, 0x48, 0x81, 0x69, - 0x8d, 0x42, 0x1d, 0xd0, 0x85, 0x61, 0x11, 0xe0, - 0x3c, 0x00, 0x20, 0x85, 0x00, 0x00, 0xfd, 0xf7, - 0xe8, 0xf8, 0x15, 0x49, 0x09, 0x78, 0x0e, 0x29, - 0x07, 0xd1, 0x00, 0x28, 0x05, 0xd0, 0x11, 0x49, - 0x50, 0x31, 0x06, 0x23, 0xc9, 0x56, 0xf9, 0xf7, - 0x06, 0xfa, 0x0e, 0x49, 0x00, 0x20, 0xc8, 0x61, - 0x8d, 0x61, 0x29, 0x1c, 0x20, 0x1c, 0xf8, 0xf7, - 0xe2, 0xf8, 0x79, 0x43, 0x20, 0x1c, 0xf8, 0xf7, - 0xde, 0xf8, 0x08, 0x48, 0x41, 0x61, 0x20, 0x1c, - 0x00, 0x99, 0x3c, 0x00, 0x5c, 0x85, 0x00, 0x00, - 0xf8, 0xf7, 0xd8, 0xf8, 0x05, 0x48, 0x40, 0x69, - 0x0a, 0x18, 0xa2, 0x42, 0x01, 0xd2, 0x40, 0x18, - 0x01, 0xe0, 0x40, 0x18, 0x00, 0x1b, 0x80, 0x02, - 0x80, 0x19, 0xf8, 0xbd, 0xac, 0x7c, 0x01, 0x00, - 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, - 0x06, 0x1c, 0x14, 0x1c, 0x1d, 0x1c, 0x07, 0xf0, - 0xa1, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0x20, 0x1c, - 0x02, 0xf0, 0xfc, 0xfb, 0x3c, 0x00, 0x98, 0x85, - 0x00, 0x00, 0x00, 0x28, 0x04, 0xd0, 0x08, 0x48, - 0x00, 0x78, 0x02, 0xf0, 0xe4, 0xfb, 0x04, 0x1c, - 0x01, 0x21, 0x00, 0x2e, 0xac, 0x72, 0x00, 0xd0, - 0x39, 0x1c, 0x20, 0x1c, 0x02, 0xf0, 0x07, 0xfc, - 0x28, 0x60, 0x00, 0x20, 0x28, 0x72, 0x6c, 0x72, - 0xf8, 0xbd, 0x90, 0x57, 0x01, 0x00, 0x03, 0x1c, - 0x0a, 0x48, 0x10, 0xb5, 0x00, 0x24, 0x02, 0x1c, - 0xa0, 0x32, 0x03, 0xe0, 0x81, 0x88, 0x3c, 0x00, - 0xd4, 0x85, 0x00, 0x00, 0x99, 0x42, 0x09, 0xd2, - 0x20, 0x30, 0x82, 0x42, 0xf9, 0xd1, 0x00, 0x2c, - 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20, 0xf8, 0xf7, - 0x5d, 0xfe, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xd0, 0x5c, 0x01, 0x00, 0xff, 0xb5, 0x06, 0x1c, - 0x00, 0x20, 0x81, 0xb0, 0x10, 0x60, 0x1f, 0x1c, - 0x01, 0x25, 0x14, 0x1c, 0x30, 0x1c, 0xff, 0xf7, - 0x6d, 0xff, 0x05, 0x28, 0x12, 0xd2, 0x02, 0xa3, - 0x3c, 0x00, 0x10, 0x86, 0x00, 0x00, 0x1b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03, - 0x03, 0x03, 0x08, 0x00, 0x39, 0x1c, 0x30, 0x1c, - 0xff, 0xf7, 0x55, 0xff, 0x03, 0xe0, 0x02, 0x98, - 0xf8, 0xf7, 0xeb, 0xf8, 0x01, 0x30, 0x20, 0x60, - 0x04, 0xe0, 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7, - 0x34, 0xfe, 0x00, 0x25, 0x20, 0x68, 0x80, 0x28, - 0x04, 0xd9, 0x06, 0x21, 0x87, 0x20, 0xf8, 0xf7, - 0x2c, 0xfe, 0x3c, 0x00, 0x4c, 0x86, 0x00, 0x00, - 0x00, 0x25, 0x28, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, - 0x70, 0xb5, 0x17, 0x4c, 0x60, 0x6c, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x1d, 0xe0, 0x16, 0x4e, - 0x14, 0x4d, 0x31, 0x88, 0xa0, 0x6c, 0x00, 0x28, - 0x08, 0xd0, 0x28, 0x78, 0x81, 0x42, 0x05, 0xd9, - 0xf8, 0xf7, 0x4c, 0xf8, 0x01, 0x38, 0xfa, 0xf7, - 0x51, 0xfe, 0x0e, 0xe0, 0xe0, 0x6c, 0x00, 0x28, - 0x0a, 0xd0, 0x00, 0x20, 0x3c, 0x00, 0x88, 0x86, - 0x00, 0x00, 0xfa, 0xf7, 0x4a, 0xfe, 0x29, 0x78, - 0x32, 0x88, 0x91, 0x42, 0x04, 0xd9, 0x90, 0x42, - 0x02, 0xd9, 0x10, 0x1c, 0x00, 0xe0, 0x08, 0x1c, - 0xfa, 0xf7, 0xdf, 0xfd, 0xe1, 0x6b, 0x44, 0x1a, - 0x0a, 0xf0, 0x81, 0xfb, 0x20, 0x1a, 0x00, 0xd5, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0xf8, 0x60, 0x01, 0x00, 0xfc, 0x60, - 0x01, 0x00, 0xff, 0xb5, 0x27, 0x4e, 0x3c, 0x00, - 0xc4, 0x86, 0x00, 0x00, 0x04, 0x1c, 0xb0, 0x79, - 0x0f, 0x1c, 0x15, 0x1c, 0x81, 0xb0, 0x00, 0x90, - 0x0a, 0xf0, 0x6c, 0xfb, 0xc1, 0x19, 0x23, 0x48, - 0x07, 0x68, 0x00, 0x2f, 0x05, 0xd1, 0x0a, 0x21, - 0x80, 0x20, 0xf8, 0xf7, 0xdf, 0xfd, 0x05, 0xb0, - 0xf0, 0xbd, 0x1e, 0x48, 0x40, 0x68, 0x84, 0x46, - 0x00, 0x28, 0x01, 0xd1, 0x00, 0x22, 0x0e, 0xe0, - 0x82, 0x68, 0x03, 0x68, 0xab, 0x42, 0x07, 0xd1, - 0x3c, 0x00, 0x00, 0x87, 0x00, 0x00, 0x03, 0x79, - 0xa3, 0x42, 0x04, 0xd1, 0x0b, 0x21, 0x80, 0x20, - 0xf8, 0xf7, 0xcb, 0xfd, 0x23, 0xe0, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x13, 0x4b, 0xf8, 0x68, - 0x18, 0x60, 0x3d, 0x60, 0x3c, 0x71, 0xb9, 0x60, - 0x04, 0x98, 0x8d, 0x1a, 0x38, 0x61, 0x60, 0x46, - 0x00, 0x23, 0x05, 0xe0, 0x84, 0x68, 0xa4, 0x1a, - 0xac, 0x42, 0x03, 0xda, 0x03, 0x1c, 0xc0, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x3c, 0x87, 0x00, 0x00, - 0xf7, 0xd1, 0xf8, 0x60, 0x00, 0x2b, 0x08, 0xd1, - 0x07, 0x48, 0x3b, 0x1c, 0x47, 0x60, 0x08, 0x48, - 0x06, 0x4a, 0x00, 0x88, 0x0a, 0xf0, 0x8a, 0xfb, - 0x00, 0xe0, 0xdf, 0x60, 0x00, 0x98, 0xb0, 0x71, - 0xc3, 0xe7, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, - 0x7c, 0x5d, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0xf3, 0xb5, 0x83, 0xb0, - 0x04, 0x1c, 0x09, 0xd0, 0x3c, 0x00, 0x78, 0x87, - 0x00, 0x00, 0x20, 0x1c, 0x04, 0x99, 0x09, 0xf0, - 0x8e, 0xfb, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x1c, - 0x30, 0x30, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0xf0, - 0x0e, 0xfb, 0x1e, 0x4a, 0x00, 0x26, 0x04, 0x9f, - 0x01, 0x96, 0x00, 0x90, 0x02, 0x92, 0x02, 0x9c, - 0x00, 0x25, 0x39, 0x1c, 0x20, 0x1c, 0x14, 0x30, - 0x02, 0xf0, 0xc5, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0x26, 0x1c, 0x03, 0xe0, 0x01, 0x35, 0x3c, 0x00, - 0xb4, 0x87, 0x00, 0x00, 0x1c, 0x34, 0x04, 0x2d, - 0xf2, 0xd3, 0x00, 0x2e, 0x22, 0xd1, 0x01, 0x98, - 0x13, 0x4f, 0x01, 0x30, 0x01, 0x90, 0x02, 0x28, - 0xe8, 0xd3, 0x01, 0x21, 0xc9, 0x06, 0x02, 0x9a, - 0x00, 0x20, 0x13, 0x69, 0x00, 0x9c, 0xe3, 0x1a, - 0x8b, 0x42, 0x01, 0xdd, 0x19, 0x1c, 0x16, 0x1c, - 0x01, 0x30, 0x1c, 0x32, 0x04, 0x28, 0xf4, 0xd3, - 0x30, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf8, 0xf7, - 0x3c, 0x00, 0xf0, 0x87, 0x00, 0x00, 0xd3, 0xfe, - 0x30, 0x1c, 0xfd, 0xf7, 0x4a, 0xff, 0x30, 0x1c, - 0x14, 0x30, 0x06, 0x22, 0x04, 0x99, 0xf7, 0xf7, - 0x7a, 0xfe, 0x00, 0x9c, 0x30, 0x1c, 0x34, 0x61, - 0xbd, 0xe7, 0x30, 0x6a, 0x01, 0x00, 0x34, 0x42, - 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5, 0x4c, 0x69, - 0x03, 0xe0, 0xe1, 0x68, 0x81, 0x42, 0x03, 0xd0, - 0x24, 0x68, 0x00, 0x2c, 0xf9, 0xd1, 0x01, 0xe0, - 0x00, 0x2c, 0x3c, 0x00, 0x2c, 0x88, 0x00, 0x00, - 0x03, 0xd1, 0x02, 0x21, 0x02, 0x20, 0xf8, 0xf7, - 0x37, 0xfd, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0x10, 0xb5, 0xc3, 0x07, - 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69, 0x0c, 0x43, - 0x5c, 0x61, 0x1c, 0x7e, 0x14, 0x43, 0x1c, 0x76, - 0x80, 0x07, 0x06, 0xd5, 0x04, 0x48, 0x43, 0x69, - 0x19, 0x43, 0x41, 0x61, 0x01, 0x7e, 0x11, 0x43, - 0x01, 0x76, 0x10, 0xbd, 0x3c, 0x00, 0x68, 0x88, - 0x00, 0x00, 0xfc, 0x57, 0x01, 0x00, 0x18, 0x58, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x16, 0x1c, 0x00, 0xf0, 0x08, 0xf8, 0xa0, 0x07, - 0xc0, 0x17, 0x01, 0x30, 0x32, 0x1c, 0x29, 0x1c, - 0x00, 0xf0, 0x21, 0xf8, 0x70, 0xbd, 0x10, 0xb5, - 0xc3, 0x07, 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69, - 0x8c, 0x43, 0x5c, 0x61, 0x1c, 0x7e, 0x94, 0x43, - 0x1c, 0x76, 0x80, 0x07, 0x06, 0xd5, 0x3c, 0x00, - 0xa4, 0x88, 0x00, 0x00, 0x04, 0x48, 0x43, 0x69, - 0x8b, 0x43, 0x43, 0x61, 0x01, 0x7e, 0x91, 0x43, - 0x01, 0x76, 0x10, 0xbd, 0xfc, 0x57, 0x01, 0x00, - 0x18, 0x58, 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f, - 0x80, 0xb5, 0x01, 0x20, 0x00, 0xf0, 0x02, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x30, 0xb5, 0x15, 0x1c, - 0x0c, 0x1c, 0x00, 0x28, 0x87, 0xb0, 0x02, 0xd0, - 0x1c, 0x22, 0x22, 0x49, 0x01, 0xe0, 0x22, 0x49, - 0x3c, 0x00, 0xe0, 0x88, 0x00, 0x00, 0x1c, 0x22, - 0x68, 0x46, 0xf7, 0xf7, 0x64, 0xfe, 0x05, 0x99, - 0x00, 0xab, 0x1a, 0x7e, 0x8c, 0x43, 0x20, 0x1c, - 0x95, 0x43, 0x02, 0x9a, 0x29, 0x1c, 0x02, 0x40, - 0x02, 0x92, 0x01, 0x9a, 0x02, 0x40, 0x01, 0x92, - 0x00, 0x9a, 0x02, 0x40, 0x00, 0x92, 0x03, 0x9a, - 0x02, 0x40, 0x03, 0x92, 0x98, 0x7c, 0x08, 0x40, - 0x98, 0x74, 0x58, 0x7c, 0x08, 0x40, 0x58, 0x74, - 0x18, 0x7c, 0x3c, 0x00, 0x1c, 0x89, 0x00, 0x00, - 0x08, 0x40, 0x18, 0x74, 0xd8, 0x7c, 0x08, 0x40, - 0xd8, 0x74, 0x02, 0x99, 0x10, 0x48, 0x41, 0x61, - 0x01, 0xaa, 0x06, 0xca, 0x91, 0x43, 0x81, 0x61, - 0x81, 0x68, 0x01, 0x9a, 0x11, 0x43, 0x81, 0x60, - 0x81, 0x68, 0x00, 0x9a, 0x91, 0x43, 0x81, 0x60, - 0x00, 0xaa, 0x06, 0xca, 0x11, 0x43, 0x42, 0x68, - 0x11, 0x43, 0x41, 0x60, 0x41, 0x68, 0x03, 0x9a, - 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00, 0x58, 0x89, - 0x00, 0x00, 0x04, 0xa8, 0x0b, 0xf0, 0x01, 0xf8, - 0x07, 0xb0, 0x30, 0xbd, 0x00, 0x00, 0xfc, 0x57, - 0x01, 0x00, 0x18, 0x58, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x01, 0x1c, - 0x01, 0x20, 0x08, 0xf0, 0xe0, 0xf9, 0x00, 0x2c, - 0x02, 0xd0, 0x03, 0xf0, 0x1c, 0xff, 0x10, 0xbd, - 0xfe, 0xf7, 0xd1, 0xfc, 0x10, 0xbd, 0xf0, 0xb5, - 0x0c, 0x1c, 0x01, 0x0e, 0x01, 0x23, 0x3c, 0x00, - 0x94, 0x89, 0x00, 0x00, 0x1b, 0x06, 0x09, 0x06, - 0x99, 0x42, 0x9f, 0xb0, 0x28, 0xd1, 0x17, 0x49, - 0x08, 0x40, 0x00, 0x21, 0x1a, 0x28, 0x00, 0xd3, - 0x02, 0x21, 0x00, 0x29, 0x19, 0xd1, 0xc5, 0x00, - 0x13, 0x4f, 0x10, 0xa8, 0xee, 0x19, 0xb2, 0x88, - 0x21, 0x68, 0xf7, 0xf7, 0x9d, 0xfd, 0x20, 0x1c, - 0xf8, 0xf7, 0xea, 0xfd, 0x7a, 0x59, 0x01, 0xa9, - 0x10, 0xa8, 0xf7, 0xf7, 0x07, 0xfd, 0x00, 0x28, - 0x3c, 0x00, 0xd0, 0x89, 0x00, 0x00, 0x05, 0xd0, - 0x10, 0x98, 0x01, 0xa9, 0x01, 0x90, 0xb0, 0x79, - 0x00, 0xf0, 0x9d, 0xf8, 0x1f, 0xb0, 0xf0, 0xbd, - 0x2a, 0x20, 0xf8, 0xf7, 0x5e, 0xfc, 0x20, 0x1c, - 0xf8, 0xf7, 0xd5, 0xfd, 0xf6, 0xe7, 0x03, 0x21, - 0x2a, 0x20, 0xf8, 0xf7, 0x56, 0xfc, 0xf1, 0xe7, - 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, 0x24, 0x45, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x80, 0x28, - 0x02, 0xd0, 0x3c, 0x00, 0x0c, 0x8a, 0x00, 0x00, - 0x81, 0x28, 0x08, 0xd1, 0x03, 0xe0, 0x20, 0x1c, - 0x00, 0xf0, 0x06, 0xf9, 0x10, 0xbd, 0x20, 0x1c, - 0xf8, 0xf7, 0xbc, 0xfd, 0x10, 0xbd, 0x03, 0x21, - 0x2c, 0x20, 0xf8, 0xf7, 0x3d, 0xfc, 0xf6, 0xe7, - 0xf0, 0xb5, 0x0c, 0x1c, 0x00, 0x21, 0x8b, 0xb0, - 0x0a, 0x91, 0x01, 0x0e, 0x01, 0x23, 0x1b, 0x06, - 0x09, 0x06, 0x99, 0x42, 0x2a, 0xd1, 0x18, 0x49, - 0x08, 0x40, 0x06, 0x1c, 0x3c, 0x00, 0x48, 0x8a, - 0x00, 0x00, 0x06, 0x2e, 0x01, 0xd3, 0x07, 0x21, - 0x24, 0xe0, 0x20, 0x89, 0xf8, 0xf7, 0xf1, 0xfe, - 0x22, 0x89, 0x21, 0x68, 0x05, 0x1c, 0xf7, 0xf7, - 0x4c, 0xfd, 0x20, 0x1c, 0xf8, 0xf7, 0x99, 0xfd, - 0xf4, 0x00, 0x0f, 0x4e, 0x28, 0x1c, 0x0a, 0xaa, - 0x69, 0x46, 0x33, 0x59, 0xf7, 0xf7, 0xb4, 0xfc, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, 0x07, 0xd1, - 0x28, 0x68, 0x69, 0x46, 0x00, 0x90, 0x3c, 0x00, - 0x84, 0x8a, 0x00, 0x00, 0xa0, 0x19, 0x00, 0x79, - 0x0a, 0x9a, 0x00, 0xf0, 0x09, 0xf9, 0x28, 0x1c, - 0xf8, 0xf7, 0xb0, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd, - 0x01, 0x21, 0x2b, 0x20, 0xf8, 0xf7, 0x02, 0xfc, - 0xf8, 0xe7, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, - 0x28, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x0e, - 0x01, 0x23, 0x1b, 0x06, 0x09, 0x06, 0x99, 0x42, - 0x80, 0xb5, 0x08, 0xd0, 0x5b, 0x00, 0x99, 0x42, - 0x3c, 0x00, 0xc0, 0x8a, 0x00, 0x00, 0x0b, 0xd1, - 0x00, 0x06, 0x00, 0x0e, 0x11, 0x1c, 0x00, 0xf0, - 0x0e, 0xf9, 0x80, 0xbd, 0x05, 0x49, 0x01, 0x40, - 0x10, 0x1c, 0x05, 0xf0, 0xa2, 0xf9, 0x80, 0xbd, - 0x01, 0x21, 0x2d, 0x20, 0xf8, 0xf7, 0xe1, 0xfb, - 0x80, 0xbd, 0x7f, 0xff, 0xff, 0x00, 0x80, 0xb5, - 0x01, 0x1c, 0x0f, 0x20, 0x00, 0xf0, 0x13, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c, 0x04, 0x20, - 0x00, 0xf0, 0x3c, 0x00, 0xfc, 0x8a, 0x00, 0x00, - 0x0d, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c, - 0x17, 0x20, 0x00, 0xf0, 0x07, 0xf8, 0x80, 0xbd, - 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20, 0x00, 0xf0, - 0x01, 0xf8, 0x80, 0xbd, 0xf8, 0xb5, 0x04, 0x1c, - 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43, 0x0f, 0x1c, - 0x19, 0x2c, 0x01, 0xd3, 0xf8, 0xf7, 0xea, 0xfb, - 0x08, 0x48, 0x04, 0x5d, 0x21, 0x1c, 0x00, 0x20, - 0xf8, 0xf7, 0x50, 0xfd, 0x3c, 0x00, 0x38, 0x8b, - 0x00, 0x00, 0x05, 0x1c, 0x22, 0x1c, 0x39, 0x1c, - 0x00, 0x68, 0xf7, 0xf7, 0xda, 0xfc, 0x2a, 0x1c, - 0x31, 0x1c, 0x07, 0x20, 0xf8, 0xf7, 0x11, 0xf9, - 0xf8, 0xbd, 0xf4, 0x45, 0x01, 0x00, 0xf8, 0xb5, - 0x0d, 0x1c, 0x16, 0x1c, 0x04, 0x1c, 0x1f, 0x1c, - 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x39, 0xfd, - 0x14, 0x22, 0x01, 0x68, 0x0e, 0x4b, 0x72, 0x43, - 0xd2, 0x18, 0x0c, 0x71, 0x12, 0x7c, 0x3c, 0x00, - 0x74, 0x8b, 0x00, 0x00, 0x4a, 0x71, 0x0d, 0x60, - 0x0b, 0x4a, 0x8f, 0x71, 0x12, 0x68, 0x7f, 0x2a, - 0x03, 0xd9, 0x52, 0x05, 0x52, 0x0e, 0x80, 0x23, - 0x1a, 0x43, 0xca, 0x71, 0x07, 0x4a, 0x00, 0x23, - 0x51, 0x68, 0x01, 0x31, 0x51, 0x60, 0x02, 0x1c, - 0x81, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x08, 0xf9, - 0xf8, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x3c, 0x00, 0xb0, 0x8b, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7, - 0x0e, 0xfd, 0x21, 0x8b, 0xe2, 0x7d, 0x05, 0x1c, - 0x09, 0x05, 0x52, 0x07, 0x52, 0x0f, 0x49, 0x0c, - 0x00, 0x68, 0x11, 0x43, 0x81, 0x80, 0xa1, 0x7d, - 0x14, 0x23, 0x0e, 0x4a, 0x59, 0x43, 0x89, 0x18, - 0x09, 0x7c, 0xc1, 0x71, 0xe1, 0x6a, 0x01, 0x60, - 0xe1, 0x68, 0x28, 0x1c, 0xf8, 0xf7, 0x17, 0xfc, - 0x0a, 0x48, 0x3c, 0x00, 0xec, 0x8b, 0x00, 0x00, - 0x00, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf7, 0xf7, - 0xf1, 0xfb, 0x07, 0x49, 0x04, 0x31, 0x88, 0x68, - 0x01, 0x30, 0x88, 0x60, 0x00, 0x21, 0x2a, 0x1c, - 0x00, 0x20, 0x23, 0x6b, 0xf8, 0xf7, 0xd2, 0xf8, - 0x01, 0x20, 0xb0, 0xbd, 0x74, 0x40, 0x01, 0x00, - 0x7c, 0x6e, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0x28, 0x8c, - 0x00, 0x00, 0x92, 0xb0, 0x01, 0x68, 0x68, 0x46, - 0x08, 0x22, 0xf7, 0xf7, 0x62, 0xfc, 0x00, 0xab, - 0x98, 0x88, 0x40, 0x07, 0x40, 0x0f, 0xd8, 0x77, - 0x98, 0x88, 0x40, 0x04, 0x00, 0x0d, 0x18, 0x84, - 0xd8, 0x88, 0x58, 0x84, 0x00, 0x98, 0x0d, 0x90, - 0x05, 0x94, 0x20, 0x89, 0x08, 0x38, 0x20, 0x81, - 0x05, 0x98, 0x01, 0x68, 0x08, 0x31, 0x01, 0x60, - 0x00, 0x20, 0x0a, 0x90, 0x0c, 0x90, 0x3c, 0x00, - 0x64, 0x8c, 0x00, 0x00, 0x00, 0x21, 0x11, 0x20, - 0x09, 0xf0, 0x78, 0xfb, 0x05, 0x49, 0x06, 0x4a, - 0x08, 0x68, 0x01, 0x30, 0x08, 0x60, 0x02, 0x21, - 0x02, 0xa8, 0x01, 0xf0, 0xcd, 0xfc, 0x12, 0xb0, - 0x10, 0xbd, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x55, 0x8b, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x20, - 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5, 0x2b, 0x21, - 0x0a, 0xf0, 0x8a, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x8c, 0x00, 0x00, 0xf7, 0xb5, - 0x04, 0x1c, 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43, - 0x17, 0x1c, 0x06, 0x2c, 0x01, 0xd3, 0xf8, 0xf7, - 0x26, 0xfb, 0x0b, 0x48, 0x05, 0x5d, 0x29, 0x1c, - 0x00, 0x20, 0xf8, 0xf7, 0x8c, 0xfc, 0x04, 0x1c, - 0x00, 0x68, 0x01, 0x99, 0x2a, 0x1c, 0xf7, 0xf7, - 0x16, 0xfc, 0x39, 0x1c, 0x20, 0x1c, 0xf8, 0xf7, - 0xa2, 0xfb, 0x22, 0x1c, 0x31, 0x1c, 0x00, 0x23, - 0x02, 0x20, 0x3c, 0x00, 0xdc, 0x8c, 0x00, 0x00, - 0xf8, 0xf7, 0x68, 0xf8, 0xfe, 0xbd, 0x00, 0x00, - 0x20, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x1c, - 0x80, 0xb5, 0x00, 0x23, 0x01, 0x20, 0xf8, 0xf7, - 0x5d, 0xf8, 0x80, 0xbd, 0xff, 0xb5, 0x9f, 0xb0, - 0x1f, 0x1c, 0x05, 0x1c, 0x0a, 0x30, 0x1e, 0x90, - 0x1c, 0xaa, 0x1d, 0xa9, 0x0a, 0xf0, 0x00, 0xff, - 0x00, 0x28, 0x71, 0xd0, 0x00, 0x2f, 0x09, 0xd0, - 0x0a, 0x21, 0x00, 0x20, 0x3c, 0x00, 0x18, 0x8d, - 0x00, 0x00, 0xf8, 0xf7, 0x5e, 0xfc, 0x06, 0x68, - 0x04, 0x1c, 0x30, 0x1d, 0xfa, 0xf7, 0xaf, 0xfa, - 0x05, 0xe0, 0x04, 0x21, 0x00, 0x20, 0xf8, 0xf7, - 0x54, 0xfc, 0x06, 0x68, 0x04, 0x1c, 0x28, 0x89, - 0x36, 0x49, 0x01, 0x22, 0x08, 0x80, 0x70, 0x80, - 0xe8, 0x88, 0x14, 0xa9, 0x30, 0x80, 0x19, 0xa8, - 0xfc, 0xf7, 0xf5, 0xfc, 0xfc, 0xf7, 0xff, 0xfb, - 0x01, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x3c, 0x00, - 0x54, 0x8d, 0x00, 0x00, 0x20, 0x1c, 0x01, 0xf0, - 0xef, 0xf8, 0x19, 0xa9, 0x20, 0x1c, 0x01, 0xf0, - 0xeb, 0xf8, 0x14, 0xa9, 0x20, 0x1c, 0x01, 0xf0, - 0xe7, 0xf8, 0x20, 0x1c, 0x20, 0x99, 0xfd, 0xf7, - 0x4b, 0xfd, 0x00, 0x22, 0x02, 0x21, 0x01, 0xf0, - 0x33, 0xfd, 0x06, 0x1c, 0x1c, 0x99, 0x00, 0x20, - 0x88, 0x61, 0x30, 0x1c, 0xf8, 0xf7, 0x1c, 0xfa, - 0x00, 0x2e, 0x0b, 0xd0, 0x30, 0x7a, 0x00, 0x28, - 0x3c, 0x00, 0x90, 0x8d, 0x00, 0x00, 0x02, 0xd0, - 0x40, 0x21, 0x08, 0x43, 0x30, 0x72, 0x1c, 0x98, - 0x02, 0x22, 0x81, 0x69, 0x11, 0x43, 0x81, 0x61, - 0x04, 0xe0, 0x1c, 0x99, 0x02, 0x22, 0x88, 0x69, - 0x90, 0x43, 0x88, 0x61, 0x1d, 0xaa, 0x06, 0xca, - 0x01, 0xa8, 0x05, 0xf0, 0x58, 0xfb, 0x09, 0xa8, - 0x00, 0x2f, 0x02, 0xd0, 0x02, 0x22, 0x42, 0x72, - 0x01, 0xe0, 0x00, 0x21, 0x41, 0x72, 0x04, 0x94, - 0x01, 0xa8, 0x3c, 0x00, 0xcc, 0x8d, 0x00, 0x00, - 0x04, 0xf0, 0x7a, 0xfb, 0x01, 0x21, 0x1c, 0x98, - 0x08, 0xf0, 0xc8, 0xff, 0x00, 0x2f, 0x04, 0xd0, - 0x1c, 0x98, 0x01, 0x22, 0x81, 0x69, 0x11, 0x43, - 0x81, 0x61, 0xa8, 0x88, 0x1c, 0x9c, 0x01, 0xf0, - 0x9f, 0xfe, 0x02, 0x1c, 0x21, 0x1c, 0x00, 0xe0, - 0x04, 0xe0, 0x07, 0x48, 0x40, 0x88, 0x09, 0xf0, - 0x1f, 0xf8, 0x04, 0xe0, 0x3a, 0x1c, 0x00, 0x21, - 0x05, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0x08, 0x8e, - 0x00, 0x00, 0x9b, 0xf8, 0x00, 0x20, 0x23, 0xb0, - 0xf0, 0xbd, 0xfc, 0x60, 0x01, 0x00, 0x98, 0x7c, - 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0x05, 0x68, 0xa0, 0x1d, 0x01, 0xf0, 0x95, 0xff, - 0x00, 0x28, 0x45, 0xd0, 0x21, 0x1c, 0x14, 0x31, - 0x20, 0x1c, 0x6a, 0x46, 0x0a, 0xf0, 0x55, 0xfe, - 0x00, 0x28, 0x3d, 0xd0, 0xfc, 0xf7, 0x7d, 0xfa, - 0x00, 0x28, 0x39, 0xd1, 0x00, 0x98, 0x3c, 0x00, - 0x44, 0x8e, 0x00, 0x00, 0x4b, 0x21, 0x09, 0x5c, - 0x01, 0x29, 0x34, 0xd1, 0x04, 0x26, 0x09, 0xf0, - 0x19, 0xf9, 0x68, 0x88, 0x00, 0x28, 0x1b, 0xd1, - 0xa8, 0x88, 0x03, 0x21, 0x89, 0x03, 0x88, 0x43, - 0x15, 0x49, 0x00, 0x26, 0x08, 0x80, 0x01, 0x22, - 0x02, 0x21, 0x20, 0x69, 0x01, 0xf0, 0xb8, 0xfc, - 0x04, 0x1c, 0x14, 0xd0, 0x00, 0x98, 0x80, 0x69, - 0x80, 0x07, 0x10, 0xd5, 0xf8, 0xf7, 0x9a, 0xf9, - 0x3c, 0x00, 0x80, 0x8e, 0x00, 0x00, 0x20, 0x1c, - 0xf8, 0xf7, 0xdd, 0xf8, 0x00, 0x28, 0x09, 0xd1, - 0xf8, 0xf7, 0x7f, 0xf9, 0x01, 0x26, 0x00, 0x98, - 0x02, 0x22, 0x81, 0x69, 0x91, 0x43, 0x81, 0x61, - 0x00, 0x21, 0x01, 0xe0, 0x00, 0x98, 0x02, 0x21, - 0x08, 0xf0, 0x61, 0xff, 0x00, 0x98, 0x80, 0x69, - 0xa9, 0x88, 0xc2, 0x07, 0xd2, 0x0f, 0x30, 0x1c, - 0xf9, 0xf7, 0x45, 0xf8, 0xf8, 0xbd, 0xfa, 0x60, - 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x8e, 0x00, 0x00, - 0x1c, 0xb5, 0x04, 0x69, 0x00, 0x23, 0x00, 0x22, - 0x00, 0x2c, 0x13, 0xd1, 0x4b, 0x24, 0x24, 0x5c, - 0x02, 0x2c, 0x03, 0xd1, 0x02, 0x29, 0x05, 0xd0, - 0x01, 0x22, 0x03, 0xe0, 0x02, 0x29, 0x01, 0xd1, - 0x01, 0x22, 0x01, 0x23, 0x00, 0x2a, 0x05, 0xd0, - 0x00, 0x90, 0x04, 0x20, 0x01, 0x93, 0x69, 0x46, - 0x09, 0xf0, 0x36, 0xfa, 0x1c, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x8e, - 0x00, 0x00, 0xf2, 0x21, 0x0f, 0x20, 0x0c, 0x4d, - 0x0a, 0xf0, 0x99, 0xfb, 0x28, 0x78, 0x08, 0x28, - 0x0b, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x07, 0x03, 0x03, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x00, 0x2c, 0x01, 0xd1, 0x05, 0xf0, - 0xbc, 0xfb, 0xb0, 0xbd, 0x01, 0x2c, 0xfc, 0xd1, - 0xff, 0x20, 0x07, 0xf0, 0x38, 0xfa, 0xb0, 0xbd, - 0x00, 0x00, 0x74, 0x66, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x8f, 0x00, 0x00, 0x8c, 0xb5, 0x05, 0x4a, - 0x00, 0xab, 0x11, 0x72, 0x00, 0x90, 0x19, 0x71, - 0x69, 0x46, 0x08, 0x20, 0x09, 0xf0, 0x0a, 0xfa, - 0x8c, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, - 0xf3, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x27, - 0x85, 0xb0, 0x06, 0x68, 0x09, 0xf0, 0x26, 0xff, - 0x98, 0x49, 0x48, 0x63, 0x20, 0x69, 0x03, 0x21, - 0x01, 0xf0, 0x08, 0xfc, 0x96, 0x4d, 0x00, 0x28, - 0x3c, 0x00, 0x70, 0x8f, 0x00, 0x00, 0x4d, 0xd0, - 0x95, 0x49, 0x40, 0x31, 0x09, 0x79, 0x80, 0x78, - 0x81, 0x42, 0x47, 0xd1, 0x01, 0x21, 0x20, 0x69, - 0x01, 0xf0, 0xfb, 0xfb, 0x02, 0x90, 0x20, 0x69, - 0x32, 0x21, 0x01, 0xf0, 0xf6, 0xfb, 0x01, 0x90, - 0x02, 0x1c, 0x8d, 0x48, 0x02, 0x99, 0xfc, 0xf7, - 0x46, 0xff, 0x00, 0x28, 0x36, 0xd0, 0x00, 0x23, - 0x8a, 0x48, 0x02, 0x99, 0x01, 0x9a, 0xfc, 0xf7, - 0xe4, 0xfe, 0x3c, 0x00, 0xac, 0x8f, 0x00, 0x00, - 0x0b, 0x28, 0x2e, 0xd1, 0x86, 0x4a, 0x51, 0x88, - 0x70, 0x89, 0x41, 0x40, 0x03, 0x91, 0x0b, 0x1c, - 0x84, 0x49, 0x0b, 0x40, 0x25, 0xd1, 0x50, 0x80, - 0x03, 0x99, 0x17, 0x1c, 0x00, 0x29, 0x0b, 0xd0, - 0x03, 0x99, 0x48, 0x05, 0x02, 0xd5, 0x38, 0x1c, - 0xfc, 0xf7, 0x40, 0xfe, 0x03, 0x99, 0x88, 0x06, - 0x02, 0xd5, 0x38, 0x1c, 0xfc, 0xf7, 0x24, 0xfe, - 0x2a, 0x21, 0x20, 0x69, 0x3c, 0x00, 0xe8, 0x8f, - 0x00, 0x00, 0x01, 0xf0, 0xc8, 0xfb, 0x00, 0x28, - 0x0d, 0xd0, 0x80, 0x78, 0xe9, 0x69, 0x81, 0x42, - 0x09, 0xd0, 0xe8, 0x61, 0x38, 0x1c, 0xfc, 0xf7, - 0x16, 0xfe, 0x38, 0x1c, 0xfc, 0xf7, 0x07, 0xfe, - 0x38, 0x1c, 0xfc, 0xf7, 0x26, 0xfe, 0x00, 0x27, - 0x20, 0x1c, 0x20, 0x30, 0x04, 0x90, 0x40, 0x7a, - 0x08, 0x28, 0x71, 0xd1, 0x0a, 0xf0, 0xd1, 0xfc, - 0x00, 0x20, 0x68, 0x61, 0x00, 0x23, 0x3c, 0x00, - 0x24, 0x90, 0x00, 0x00, 0x2b, 0x61, 0xa8, 0x68, - 0x66, 0x49, 0x01, 0x30, 0xa8, 0x60, 0x30, 0x89, - 0x5c, 0x31, 0x88, 0x82, 0x01, 0xf0, 0x7a, 0xfd, - 0x62, 0x49, 0x5c, 0x31, 0x08, 0x61, 0x22, 0x6a, - 0x04, 0x98, 0x18, 0x21, 0x00, 0x7a, 0x01, 0xf0, - 0x33, 0xfe, 0xe1, 0x6a, 0x40, 0x18, 0x03, 0x90, - 0x5c, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x0d, 0xd0, - 0x00, 0x2f, 0x0b, 0xd1, 0x59, 0x48, 0x01, 0x23, - 0x3c, 0x00, 0x60, 0x90, 0x00, 0x00, 0x5c, 0x30, - 0x01, 0x68, 0x1b, 0x07, 0x00, 0x22, 0x30, 0x68, - 0x09, 0xf0, 0x49, 0xff, 0x00, 0x28, 0x00, 0xd1, - 0x05, 0x27, 0x00, 0x21, 0xa0, 0x6b, 0x0a, 0xf0, - 0xce, 0xfc, 0x00, 0x21, 0x20, 0x6c, 0x0a, 0xf0, - 0xe8, 0xfc, 0x4f, 0x4b, 0x03, 0xce, 0x03, 0x9a, - 0x5c, 0x33, 0xfc, 0xf7, 0x88, 0xfd, 0x00, 0x20, - 0x4c, 0x4e, 0x05, 0x21, 0xb0, 0x63, 0x20, 0x69, - 0x01, 0xf0, 0x3c, 0x00, 0x9c, 0x90, 0x00, 0x00, - 0x6f, 0xfb, 0x01, 0x1c, 0x01, 0xd1, 0xf0, 0x60, - 0x1c, 0xe0, 0x01, 0x20, 0xf0, 0x60, 0x88, 0x78, - 0x45, 0x4a, 0x01, 0x32, 0x10, 0x70, 0xc8, 0x78, - 0x50, 0x70, 0x47, 0x4a, 0x10, 0x70, 0x30, 0x69, - 0x00, 0x28, 0x0a, 0xd0, 0x4a, 0x78, 0x08, 0x79, - 0x05, 0x31, 0x09, 0xf0, 0xdd, 0xfa, 0x31, 0x69, - 0xf7, 0xf7, 0x85, 0xf9, 0xf0, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0x3b, 0x4a, 0x3c, 0x00, 0xd8, 0x90, - 0x00, 0x00, 0x01, 0x32, 0x10, 0x78, 0x00, 0x28, - 0x08, 0xd1, 0x00, 0x20, 0xa8, 0x61, 0x71, 0x6a, - 0x00, 0x29, 0x03, 0xd0, 0x20, 0x1c, 0x14, 0x30, - 0xf7, 0xf7, 0x74, 0xf9, 0x34, 0x4a, 0x5c, 0x32, - 0x10, 0x69, 0x31, 0x6a, 0x41, 0x18, 0x00, 0xe0, - 0x20, 0xe0, 0x0a, 0x23, 0xd0, 0x68, 0x0a, 0x22, - 0x09, 0xf0, 0xfb, 0xfe, 0x00, 0x28, 0x07, 0xd0, - 0x2d, 0x4a, 0x31, 0x6a, 0x5c, 0x32, 0x3c, 0x00, - 0x14, 0x91, 0x00, 0x00, 0xd0, 0x68, 0x40, 0x1a, - 0x11, 0x69, 0x40, 0x1a, 0x70, 0x60, 0x29, 0x4a, - 0x5c, 0x32, 0xd0, 0x68, 0x30, 0x62, 0xf0, 0x69, - 0x00, 0x28, 0x04, 0xd0, 0xfa, 0xf7, 0x00, 0xfd, - 0x01, 0x20, 0xfa, 0xf7, 0xa1, 0xfc, 0xfa, 0xf7, - 0x81, 0xfc, 0x27, 0x48, 0x00, 0x68, 0x03, 0xf0, - 0x07, 0xf9, 0x06, 0x98, 0x00, 0x28, 0x03, 0xd1, - 0x1e, 0x4e, 0x00, 0x23, 0xb3, 0x60, 0x16, 0xe0, - 0x3c, 0x00, 0x50, 0x91, 0x00, 0x00, 0x1c, 0x4e, - 0x01, 0x20, 0xb0, 0x60, 0x06, 0x98, 0x01, 0x68, - 0x40, 0x68, 0xb0, 0x65, 0x19, 0x48, 0x71, 0x65, - 0x54, 0x30, 0xc0, 0x88, 0x00, 0x28, 0x09, 0xd0, - 0xb1, 0x69, 0x00, 0x29, 0x06, 0xd0, 0x01, 0xf0, - 0xdc, 0xfc, 0x01, 0x1c, 0xe0, 0x6a, 0xb2, 0x69, - 0xf7, 0xf7, 0x2f, 0xf9, 0x00, 0x2f, 0x15, 0xd1, - 0x12, 0x48, 0x01, 0x69, 0x00, 0x29, 0x08, 0xd1, - 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x91, 0x00, 0x00, - 0x01, 0x61, 0x2a, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x00, 0x20, 0xf7, 0xf7, 0x20, 0xf9, - 0x09, 0x49, 0x00, 0x23, 0xcb, 0x62, 0x2b, 0x61, - 0x6b, 0x61, 0x06, 0xf0, 0xb5, 0xf8, 0x07, 0xb0, - 0xf0, 0xbd, 0x6b, 0x68, 0x06, 0x48, 0x00, 0x2b, - 0xf9, 0xd0, 0x02, 0x1d, 0x11, 0x1c, 0x38, 0x1c, - 0xf7, 0xf7, 0x0f, 0xf9, 0xf3, 0xe7, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x91, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xf4, 0x67, - 0x01, 0x00, 0x03, 0x08, 0x00, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x08, 0xb5, - 0xf8, 0xf7, 0x2f, 0xfd, 0x00, 0x90, 0x00, 0xab, - 0x18, 0x88, 0x00, 0x28, 0x0c, 0xd0, 0x05, 0xf0, - 0x50, 0xff, 0x00, 0xab, 0x59, 0x88, 0x18, 0x88, - 0x05, 0xf0, 0x6d, 0xf9, 0xfe, 0xf7, 0x97, 0xf8, - 0x03, 0x20, 0xfb, 0xf7, 0x0e, 0xf8, 0x3c, 0x00, - 0x04, 0x92, 0x00, 0x00, 0x08, 0xbd, 0x01, 0x20, - 0xff, 0xf7, 0xb2, 0xfb, 0x00, 0x20, 0x08, 0xf0, - 0x8d, 0xfe, 0xf7, 0xe7, 0xf8, 0xb5, 0x4f, 0x49, - 0x8c, 0x68, 0x20, 0x6a, 0x00, 0x68, 0x05, 0x78, - 0xfc, 0xf7, 0x68, 0xfa, 0x00, 0x28, 0x12, 0xd0, - 0x2a, 0x07, 0x92, 0x0f, 0x01, 0x21, 0x01, 0x2a, - 0x00, 0xd0, 0x00, 0x21, 0x00, 0x29, 0x03, 0xd0, - 0x29, 0x06, 0x09, 0x0f, 0x0b, 0x29, 0x06, 0xd1, - 0x3c, 0x00, 0x40, 0x92, 0x00, 0x00, 0x2a, 0x21, - 0x09, 0x5d, 0x08, 0x18, 0x90, 0x30, 0x00, 0x7b, - 0xf9, 0xf7, 0x0d, 0xfc, 0x41, 0x4f, 0x3c, 0x3f, - 0xb8, 0x6b, 0x79, 0x6b, 0xf7, 0xf7, 0xc0, 0xf8, - 0xa0, 0x6c, 0x00, 0x26, 0xc6, 0x60, 0x60, 0x6b, - 0x80, 0x08, 0x04, 0xd0, 0xb8, 0x69, 0x01, 0x30, - 0xb8, 0x61, 0x06, 0xf0, 0xdc, 0xf9, 0x39, 0x4d, - 0x28, 0x69, 0x80, 0x05, 0x80, 0x0f, 0x08, 0xd1, - 0x78, 0x69, 0x3c, 0x00, 0x7c, 0x92, 0x00, 0x00, - 0x04, 0x21, 0x01, 0x30, 0x78, 0x61, 0x60, 0x6b, - 0x40, 0x08, 0x40, 0x00, 0x08, 0x43, 0x60, 0x63, - 0xb8, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x60, 0x6b, - 0x08, 0x21, 0x08, 0x43, 0x60, 0x63, 0x20, 0x1c, - 0x20, 0x30, 0x00, 0x90, 0x39, 0x68, 0xf7, 0xf7, - 0x9a, 0xf8, 0x03, 0x20, 0x00, 0x02, 0x28, 0x60, - 0x2b, 0x49, 0x88, 0x68, 0xa0, 0x63, 0xc8, 0x68, - 0xe0, 0x63, 0x08, 0x79, 0x3c, 0x00, 0xb8, 0x92, - 0x00, 0x00, 0xc0, 0x06, 0xc0, 0x0e, 0x25, 0x1c, - 0x40, 0x35, 0x28, 0x71, 0x48, 0x79, 0x68, 0x71, - 0x23, 0x48, 0x3c, 0x38, 0x46, 0x62, 0x00, 0x98, - 0x80, 0x7a, 0x01, 0xf0, 0x5e, 0xfd, 0x00, 0x21, - 0x00, 0x28, 0x21, 0x4a, 0x01, 0xd0, 0x11, 0x78, - 0x03, 0xe0, 0x93, 0x78, 0xdb, 0x07, 0x00, 0xd5, - 0x51, 0x78, 0xa9, 0x71, 0x00, 0x28, 0x04, 0xd0, - 0x1b, 0x49, 0x14, 0x31, 0x08, 0x68, 0x3c, 0x00, - 0xf4, 0x92, 0x00, 0x00, 0x20, 0x64, 0x00, 0xe0, - 0x6e, 0x80, 0xb8, 0x6a, 0xc0, 0x07, 0x02, 0xd5, - 0xff, 0x20, 0x28, 0x71, 0xae, 0x71, 0xe6, 0x61, - 0xb8, 0x68, 0x01, 0x30, 0xb8, 0x60, 0x79, 0x68, - 0x88, 0x42, 0x03, 0xd0, 0x0b, 0x21, 0x85, 0x20, - 0xf7, 0xf7, 0xc4, 0xff, 0x0d, 0x49, 0x88, 0x68, - 0xc0, 0x6c, 0x88, 0x60, 0xfb, 0x6a, 0x00, 0x2b, - 0x0c, 0xd0, 0x0e, 0x4a, 0xd4, 0x7b, 0x00, 0x2b, - 0x3c, 0x00, 0x30, 0x93, 0x00, 0x00, 0x02, 0xdd, - 0x7f, 0x2c, 0x05, 0xd2, 0x01, 0xe0, 0x00, 0x2c, - 0x02, 0xd0, 0xd4, 0x7b, 0xe3, 0x18, 0xd3, 0x73, - 0xfe, 0x62, 0xc9, 0x68, 0x88, 0x42, 0x03, 0xd1, - 0x05, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0xa9, 0xff, - 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x40, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xe8, 0x80, - 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0xfe, 0xb5, - 0x30, 0x4c, 0x3c, 0x00, 0x6c, 0x93, 0x00, 0x00, - 0xa0, 0x6b, 0x21, 0x6b, 0xf7, 0xf7, 0x33, 0xf8, - 0x2d, 0x49, 0x3c, 0x31, 0x8e, 0x68, 0x70, 0x8b, - 0x06, 0x28, 0x04, 0xd2, 0xe0, 0x69, 0x01, 0x30, - 0xe0, 0x61, 0x0e, 0x20, 0x30, 0x85, 0x28, 0x49, - 0x3c, 0x31, 0x0d, 0x68, 0x00, 0x2d, 0x03, 0xd1, - 0x03, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0x84, 0xff, - 0x24, 0x48, 0x45, 0x61, 0x35, 0x62, 0x31, 0x8d, - 0xef, 0x68, 0x04, 0x39, 0x3c, 0x00, 0xa8, 0x93, - 0x00, 0x00, 0x0c, 0x04, 0x01, 0x21, 0x02, 0x91, - 0x24, 0x0c, 0x00, 0x21, 0x01, 0x91, 0x1d, 0x48, - 0x3c, 0x30, 0x80, 0x8a, 0xa0, 0x42, 0x03, 0xd3, - 0x2c, 0x81, 0xee, 0x60, 0x00, 0x24, 0x0b, 0xe0, - 0x00, 0x2f, 0x04, 0xd1, 0x03, 0x21, 0x85, 0x20, - 0xf7, 0xf7, 0x69, 0xff, 0x04, 0xe0, 0x3d, 0x1c, - 0x20, 0x1a, 0x04, 0x04, 0xff, 0x68, 0x24, 0x0c, - 0x02, 0x98, 0x00, 0x28, 0x04, 0xd0, 0x3c, 0x00, - 0xe4, 0x93, 0x00, 0x00, 0x12, 0x49, 0x01, 0x20, - 0x08, 0x61, 0x00, 0x20, 0x02, 0x90, 0x01, 0x98, - 0x01, 0x30, 0x01, 0x90, 0x00, 0x2c, 0xdd, 0xd1, - 0x0c, 0x48, 0x0c, 0x4c, 0x3c, 0x30, 0x07, 0x60, - 0x01, 0x98, 0x30, 0x65, 0xb5, 0x64, 0x30, 0x6a, - 0x00, 0x68, 0x60, 0x62, 0x60, 0x68, 0x01, 0x30, - 0x60, 0x60, 0xa1, 0x68, 0x01, 0x31, 0x88, 0x42, - 0x03, 0xd0, 0x0a, 0x21, 0x85, 0x20, 0xf7, 0xf7, - 0x3c, 0x00, 0x20, 0x94, 0x00, 0x00, 0x41, 0xff, - 0x04, 0x48, 0x00, 0x68, 0xa0, 0x62, 0xfe, 0xbd, - 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5, - 0x05, 0x1c, 0x01, 0x21, 0x0f, 0x20, 0x0a, 0xf0, - 0xf8, 0xf8, 0xf2, 0x21, 0x0f, 0x20, 0x0a, 0xf0, - 0xf4, 0xf8, 0x0c, 0x48, 0x0c, 0x4c, 0x00, 0x68, - 0x14, 0x3c, 0x00, 0x28, 0x0c, 0xd0, 0xe0, 0x78, - 0x01, 0x28, 0x3c, 0x00, 0x5c, 0x94, 0x00, 0x00, - 0x09, 0xd0, 0x01, 0x22, 0x29, 0x1c, 0x0f, 0x20, - 0x0a, 0xf0, 0xac, 0xf8, 0x60, 0x78, 0x02, 0x28, - 0x06, 0xd0, 0x01, 0x20, 0x03, 0xe0, 0x60, 0x78, - 0x02, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x60, 0x70, - 0xb0, 0xbd, 0x00, 0x00, 0x98, 0x66, 0x01, 0x00, - 0x02, 0x22, 0x00, 0x28, 0x80, 0xb5, 0x00, 0xd1, - 0x03, 0x22, 0x03, 0x49, 0x0e, 0x20, 0x0a, 0xf0, - 0x9b, 0xf8, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x94, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x50, 0xc3, - 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x23, 0x00, 0x22, - 0x00, 0x28, 0x2e, 0xd0, 0x06, 0x89, 0x04, 0x68, - 0x75, 0x1e, 0x2d, 0x04, 0xb6, 0x1a, 0xf6, 0x07, - 0x2d, 0x0c, 0xf6, 0x0f, 0xb4, 0x46, 0x0e, 0xe0, - 0xa7, 0x5c, 0xa6, 0x18, 0x02, 0x33, 0x00, 0x97, - 0x77, 0x78, 0xa7, 0x54, 0x02, 0x32, 0x12, 0x04, - 0x00, 0x9f, 0x12, 0x0c, 0x00, 0x29, 0x3c, 0x00, - 0xd4, 0x94, 0x00, 0x00, 0x77, 0x70, 0x01, 0xdd, - 0x8b, 0x42, 0x15, 0xda, 0xaa, 0x42, 0xee, 0xd3, - 0xc0, 0x68, 0x00, 0x28, 0x10, 0xd0, 0x02, 0x89, - 0x00, 0x2a, 0xf9, 0xd0, 0x62, 0x46, 0x00, 0x2a, - 0x0b, 0xd0, 0x02, 0x68, 0x66, 0x5d, 0x17, 0x78, - 0x02, 0x33, 0x67, 0x55, 0x16, 0x70, 0x01, 0x22, - 0x00, 0x29, 0xd2, 0xdd, 0x8b, 0x42, 0xd0, 0xdb, - 0xf8, 0xbd, 0x00, 0x22, 0xcd, 0xe7, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x95, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x01, 0x20, 0xf8, 0xf7, - 0x5e, 0xfb, 0x0d, 0x49, 0x00, 0x28, 0xc8, 0x61, - 0x14, 0xd0, 0x62, 0x68, 0x42, 0x60, 0xa2, 0x7c, - 0x02, 0x72, 0xa2, 0x68, 0xc2, 0x60, 0xe2, 0x68, - 0x02, 0x61, 0x22, 0x8a, 0x02, 0x75, 0x0a, 0x1d, - 0x0a, 0x62, 0x12, 0x68, 0x00, 0x2a, 0xff, 0xd1, - 0x02, 0x60, 0x48, 0x60, 0x00, 0x20, 0xa8, 0x60, - 0x01, 0x20, 0x3c, 0x00, 0x4c, 0x95, 0x00, 0x00, - 0xb0, 0xbd, 0x01, 0x20, 0xfa, 0xe7, 0x00, 0x00, - 0xa4, 0x6e, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x40, 0x68, 0x0d, 0x1c, 0x43, 0x1c, 0x02, 0xd1, - 0x21, 0x1c, 0x09, 0x48, 0x08, 0xe0, 0x00, 0x20, - 0xf8, 0xf7, 0x34, 0xfb, 0x06, 0x49, 0x94, 0x39, - 0x08, 0x61, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c, - 0x00, 0xf0, 0x48, 0xfe, 0x00, 0xe0, 0x01, 0x20, - 0xa8, 0x60, 0x01, 0x20, 0x3c, 0x00, 0x88, 0x95, - 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0x38, 0x6f, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x97, 0x20, - 0xf7, 0xf7, 0x85, 0xfe, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0x0a, 0x1c, 0x14, 0x32, - 0x00, 0x92, 0x13, 0x1f, 0x05, 0x1c, 0x08, 0x3a, - 0x0c, 0x1c, 0x16, 0x31, 0x40, 0x68, 0xfe, 0xf7, - 0x6c, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0x69, 0x68, 0x3c, 0x00, - 0xc4, 0x95, 0x00, 0x00, 0xa0, 0x60, 0x61, 0x60, - 0x01, 0x20, 0x38, 0xbd, 0x10, 0xb5, 0x0c, 0x1c, - 0x01, 0x7a, 0x00, 0x29, 0x0f, 0xd0, 0x01, 0x29, - 0x09, 0xd0, 0x02, 0x29, 0x03, 0xd1, 0x00, 0x21, - 0x00, 0x20, 0x0a, 0xf0, 0x73, 0xfc, 0x00, 0x20, - 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd, 0x41, 0x68, - 0x01, 0x20, 0x0a, 0xf0, 0x6b, 0xfc, 0x00, 0xf0, - 0x0d, 0xf9, 0xf4, 0xe7, 0x80, 0xb5, 0x04, 0x49, - 0x3c, 0x00, 0x00, 0x96, 0x00, 0x00, 0x48, 0x68, - 0x01, 0x38, 0x48, 0x60, 0x01, 0xd1, 0x07, 0xf0, - 0x6e, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0xac, 0x79, - 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x00, 0xf0, 0x4f, 0xfe, 0xa0, 0x60, 0x68, 0x68, - 0x60, 0x60, 0x01, 0x20, 0xb0, 0xbd, 0xb0, 0xb5, - 0x05, 0x1c, 0x0c, 0x1c, 0x00, 0xf0, 0x6f, 0xfe, - 0xa0, 0x60, 0x68, 0x68, 0x60, 0x60, 0x01, 0x20, - 0xb0, 0xbd, 0x3c, 0x00, 0x3c, 0x96, 0x00, 0x00, - 0x08, 0x1c, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x01, 0x20, 0x70, 0x47, - 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x20, 0x79, - 0x20, 0x28, 0x01, 0xd2, 0x20, 0x20, 0x20, 0x71, - 0x66, 0x79, 0x00, 0x2e, 0x02, 0xd1, 0x25, 0x79, - 0x00, 0x22, 0x0d, 0xe0, 0x25, 0x79, 0x29, 0x1c, - 0x30, 0x1c, 0xf7, 0xf7, 0x4f, 0xf8, 0x00, 0x29, - 0x01, 0xd1, 0x32, 0x1c, 0x3c, 0x00, 0x78, 0x96, - 0x00, 0x00, 0x04, 0xe0, 0x70, 0x43, 0x80, 0x19, - 0x05, 0x06, 0x2d, 0x0e, 0x32, 0x1c, 0xe0, 0x79, - 0x29, 0x1c, 0x00, 0xf0, 0xf2, 0xf9, 0x20, 0x7a, - 0x2f, 0x49, 0xc0, 0x07, 0xc0, 0x0f, 0x08, 0x60, - 0x2e, 0x48, 0x00, 0x78, 0xc0, 0x07, 0x43, 0xd5, - 0xa1, 0x79, 0x2c, 0x4a, 0xc8, 0x07, 0x48, 0xd4, - 0x2c, 0x4e, 0x16, 0x60, 0x8b, 0x07, 0x2b, 0x48, - 0x08, 0xd5, 0xcc, 0x08, 0x01, 0x23, 0x3c, 0x00, - 0xb4, 0x96, 0x00, 0x00, 0xa3, 0x40, 0x03, 0x60, - 0x49, 0x07, 0x04, 0xd5, 0x28, 0x49, 0x11, 0x60, - 0x01, 0xe0, 0x40, 0x21, 0x01, 0x60, 0x13, 0x68, - 0x26, 0x4a, 0xb3, 0x42, 0x10, 0xd1, 0x54, 0x68, - 0x01, 0x68, 0x0c, 0x43, 0x54, 0x60, 0x14, 0x68, - 0x0c, 0x40, 0x01, 0xd0, 0x51, 0x61, 0x00, 0xe0, - 0x91, 0x61, 0x54, 0x68, 0x0c, 0x43, 0x54, 0x60, - 0x94, 0x68, 0x21, 0x43, 0x91, 0x60, 0x13, 0xe0, - 0x3c, 0x00, 0xf0, 0x96, 0x00, 0x00, 0x54, 0x7c, - 0x01, 0x68, 0x0c, 0x43, 0x54, 0x74, 0x14, 0x7c, - 0x0c, 0x40, 0x03, 0xd0, 0x14, 0x7c, 0x0c, 0x43, - 0x14, 0x74, 0x02, 0xe0, 0x14, 0x7c, 0x8c, 0x43, - 0x14, 0x74, 0x54, 0x7c, 0x0c, 0x43, 0x54, 0x74, - 0x94, 0x7c, 0x21, 0x43, 0x91, 0x74, 0xb3, 0x42, - 0x05, 0xd1, 0x00, 0x22, 0x01, 0x68, 0x03, 0x20, - 0xff, 0xf7, 0x8d, 0xf8, 0x09, 0xe0, 0x00, 0x68, - 0x00, 0x21, 0x3c, 0x00, 0x2c, 0x97, 0x00, 0x00, - 0x02, 0x06, 0x12, 0x0e, 0x03, 0x20, 0xff, 0xf7, - 0x85, 0xf8, 0x01, 0xe0, 0x0b, 0x48, 0x10, 0x60, - 0x00, 0x20, 0x38, 0x71, 0x7d, 0x71, 0xf7, 0xf7, - 0xe9, 0xfd, 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x00, - 0xcc, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00, - 0x5c, 0x5b, 0x01, 0x00, 0xb9, 0x9b, 0x00, 0x00, - 0x58, 0x5b, 0x01, 0x00, 0x95, 0x9b, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x97, - 0x00, 0x00, 0x55, 0x9b, 0x00, 0x00, 0xb0, 0xb5, - 0x0d, 0x1c, 0x04, 0x30, 0x00, 0x24, 0xfe, 0xf7, - 0xd6, 0xfa, 0x01, 0x20, 0x6c, 0x60, 0xb0, 0xbd, - 0x00, 0x00, 0xf0, 0xb5, 0x07, 0x7a, 0x43, 0x68, - 0x04, 0x1c, 0x0e, 0x48, 0x0e, 0x1c, 0x00, 0x68, - 0x01, 0x25, 0x01, 0x1c, 0x9b, 0xb0, 0x06, 0xe0, - 0x4a, 0x68, 0x9a, 0x42, 0x02, 0xd1, 0x8f, 0x76, - 0x00, 0x25, 0x02, 0xe0, 0x09, 0x68, 0x3c, 0x00, - 0xa4, 0x97, 0x00, 0x00, 0x00, 0x29, 0xf6, 0xd1, - 0x00, 0x2d, 0x05, 0xd1, 0x21, 0x7a, 0x01, 0x29, - 0x02, 0xd1, 0x01, 0xa9, 0xf8, 0xf7, 0xa8, 0xf8, - 0x60, 0x68, 0x04, 0x36, 0x21, 0xc6, 0x1b, 0xb0, - 0x01, 0x20, 0xf0, 0xbd, 0xa4, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x08, 0xf0, 0xae, 0xfc, - 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x07, 0xf0, 0x84, 0xfa, - 0x3c, 0x00, 0xe0, 0x97, 0x00, 0x00, 0x04, 0xf0, - 0x54, 0xff, 0x00, 0x20, 0x60, 0x60, 0x01, 0x20, - 0x10, 0xbd, 0x00, 0x20, 0xc0, 0x43, 0x48, 0x60, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x0c, 0x1c, 0x00, 0x79, 0xfa, 0xf7, 0x07, 0xf8, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x00, 0xe0, - 0x02, 0x20, 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x1c, 0xb5, 0x06, 0x4c, 0x20, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x1c, 0x98, 0x00, 0x00, - 0x07, 0xd0, 0x09, 0xf0, 0xc5, 0xfa, 0x01, 0x90, - 0x20, 0x68, 0x41, 0x68, 0x68, 0x46, 0xf6, 0xf7, - 0xd6, 0xfd, 0x1c, 0xbd, 0xac, 0x79, 0x01, 0x00, - 0x01, 0x49, 0x08, 0x60, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x79, 0x01, 0x00, 0x0e, 0xb5, 0x06, 0x4b, - 0x1b, 0x68, 0x00, 0x2b, 0x06, 0xd0, 0x02, 0x90, - 0x00, 0x91, 0x01, 0x92, 0x68, 0x46, 0xd9, 0x68, - 0xf6, 0xf7, 0xc1, 0xfd, 0x3c, 0x00, 0x58, 0x98, - 0x00, 0x00, 0x0e, 0xbd, 0x00, 0x00, 0xac, 0x79, - 0x01, 0x00, 0x1c, 0xb5, 0x04, 0x1c, 0x07, 0xf0, - 0x4c, 0xfa, 0x06, 0x48, 0x41, 0x68, 0x01, 0x31, - 0x41, 0x60, 0x00, 0x94, 0x00, 0x21, 0x01, 0x91, - 0x00, 0x68, 0x01, 0x68, 0x68, 0x46, 0xf6, 0xf7, - 0xad, 0xfd, 0x1c, 0xbd, 0x00, 0x00, 0xac, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7, 0xa3, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x1c, 0x3c, 0x00, - 0x94, 0x98, 0x00, 0x00, 0x80, 0x21, 0x03, 0x20, - 0x00, 0xf0, 0x5c, 0xf8, 0x01, 0x1c, 0x03, 0x48, - 0x00, 0x22, 0x43, 0x69, 0xf6, 0xf7, 0x9b, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00, - 0xf8, 0xb5, 0x0c, 0x1c, 0x13, 0x49, 0x05, 0x1c, - 0x08, 0x68, 0x16, 0x1c, 0x01, 0x30, 0x08, 0x60, - 0x00, 0x20, 0x20, 0x61, 0x22, 0x1c, 0x10, 0x32, - 0x28, 0x1d, 0x00, 0x21, 0x07, 0x1c, 0x00, 0x92, - 0x3c, 0x00, 0xd0, 0x98, 0x00, 0x00, 0x03, 0xf0, - 0xde, 0xfe, 0x20, 0x71, 0x20, 0x69, 0x00, 0x28, - 0x10, 0xd0, 0x01, 0x04, 0x09, 0x0c, 0x00, 0x20, - 0xf7, 0xf7, 0x79, 0xfe, 0x30, 0x60, 0x29, 0x1d, - 0x03, 0xc9, 0xa0, 0x60, 0xe1, 0x60, 0x30, 0x68, - 0x01, 0x68, 0x00, 0x9a, 0x38, 0x1c, 0x03, 0xf0, - 0xca, 0xfe, 0x20, 0x71, 0x01, 0x20, 0xf8, 0xbd, - 0x00, 0x00, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x1c, 0x3c, 0x00, 0x0c, 0x99, 0x00, 0x00, - 0x08, 0x21, 0x04, 0x20, 0x09, 0xf0, 0x4e, 0xff, - 0x03, 0x20, 0x80, 0xbd, 0x10, 0xb5, 0x07, 0x4a, - 0x0c, 0x1c, 0x51, 0x68, 0x01, 0x31, 0x51, 0x60, - 0x01, 0x1c, 0x10, 0x31, 0xc2, 0x68, 0x04, 0x30, - 0x03, 0xf0, 0xf0, 0xfe, 0x20, 0x71, 0x00, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x10, 0x75, 0x01, 0x00, - 0x04, 0x49, 0x80, 0xb5, 0x81, 0x61, 0x08, 0x21, - 0x02, 0x1c, 0x03, 0x20, 0x3c, 0x00, 0x48, 0x99, - 0x00, 0x00, 0x09, 0xf0, 0x32, 0xff, 0x03, 0x20, - 0x80, 0xbd, 0x95, 0xd8, 0x00, 0x00, 0xf7, 0xb5, - 0x07, 0x1c, 0x16, 0x1c, 0x06, 0x21, 0x00, 0x20, - 0x82, 0xb0, 0xf7, 0xf7, 0x3a, 0xfe, 0x05, 0x1c, - 0x20, 0x48, 0x00, 0x78, 0x06, 0x28, 0x00, 0xd9, - 0x28, 0x81, 0x2c, 0x68, 0x00, 0x20, 0xa7, 0x70, - 0x03, 0x99, 0xe1, 0x70, 0x31, 0x1c, 0x03, 0xe0, - 0x0a, 0x89, 0x10, 0x18, 0x0f, 0x1c, 0x3c, 0x00, - 0x84, 0x99, 0x00, 0x00, 0xc9, 0x68, 0x00, 0x29, - 0xf9, 0xd1, 0x6b, 0x46, 0x01, 0xaa, 0x21, 0x1d, - 0x00, 0xf0, 0x34, 0xf8, 0x00, 0xab, 0x18, 0x78, - 0x60, 0x71, 0x18, 0x78, 0x00, 0x28, 0x17, 0xd0, - 0x11, 0x48, 0x40, 0x68, 0x00, 0x28, 0x08, 0xd0, - 0x19, 0x78, 0x00, 0x20, 0xf7, 0xf7, 0x14, 0xfe, - 0x01, 0x1c, 0x38, 0x1c, 0xf7, 0xf7, 0x30, 0xfd, - 0x0a, 0xe0, 0x38, 0x68, 0x00, 0x28, 0x02, 0xd1, - 0x3c, 0x00, 0xc0, 0x99, 0x00, 0x00, 0x3f, 0x60, - 0x01, 0x20, 0xb8, 0x61, 0x00, 0xab, 0x19, 0x78, - 0x38, 0x89, 0x40, 0x18, 0x38, 0x81, 0x00, 0xab, - 0x98, 0x88, 0x31, 0x1c, 0x02, 0x38, 0x20, 0x80, - 0x28, 0x1c, 0xf7, 0xf7, 0x1c, 0xfd, 0x28, 0x1c, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc8, 0x5c, - 0x01, 0x00, 0x01, 0x79, 0x42, 0x79, 0x00, 0x88, - 0x89, 0x18, 0x02, 0x39, 0x40, 0x1a, 0x70, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x99, 0x00, 0x00, - 0x70, 0xb5, 0x08, 0x4d, 0x2c, 0x78, 0xad, 0x78, - 0x20, 0x18, 0x06, 0x1c, 0x00, 0x2d, 0x03, 0xd0, - 0x70, 0x19, 0x01, 0x38, 0x01, 0x3d, 0xa8, 0x43, - 0x10, 0x80, 0x80, 0x1b, 0x18, 0x70, 0x0c, 0x70, - 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x5c, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x68, 0x0c, 0x4a, 0x21, 0x88, - 0x52, 0x78, 0x02, 0x31, 0x91, 0x42, 0x11, 0xd2, - 0x55, 0x1a, 0xf7, 0xf7, 0x3c, 0x00, 0x38, 0x9a, - 0x00, 0x00, 0xc9, 0xfd, 0x01, 0x68, 0x00, 0x29, - 0x02, 0xd1, 0x00, 0x60, 0x01, 0x21, 0x81, 0x61, - 0x01, 0x89, 0x49, 0x19, 0x01, 0x81, 0x20, 0x88, - 0x40, 0x19, 0x20, 0x80, 0x60, 0x79, 0x40, 0x19, - 0x60, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0xc8, 0x5c, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x06, 0x21, - 0xf1, 0x20, 0x09, 0xf0, 0xa2, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x1c, 0x02, 0x48, 0x3c, 0x00, - 0x74, 0x9a, 0x00, 0x00, 0x03, 0x70, 0x41, 0x70, - 0x82, 0x70, 0x70, 0x47, 0xc8, 0x5c, 0x01, 0x00, - 0xb0, 0xb5, 0x08, 0x1c, 0x09, 0x68, 0x15, 0x1c, - 0x8c, 0x78, 0xf7, 0xf7, 0x85, 0xfd, 0x04, 0x49, - 0xa0, 0x00, 0x09, 0x58, 0x00, 0x29, 0x02, 0xd0, - 0x28, 0x1c, 0xf6, 0xf7, 0x9e, 0xfc, 0xb0, 0xbd, - 0x84, 0x6d, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0xc0, 0x7a, 0xa1, 0x7a, 0xc6, 0x07, 0xf6, 0x0f, - 0x3c, 0x00, 0xb0, 0x9a, 0x00, 0x00, 0x32, 0x1c, - 0x20, 0x1d, 0x01, 0xf0, 0x3c, 0xf8, 0x60, 0x69, - 0x25, 0x4f, 0xc1, 0x07, 0x37, 0xd5, 0xb8, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0xf6, 0xf7, 0x87, 0xfc, - 0x20, 0x68, 0x05, 0x68, 0x28, 0x88, 0x80, 0x07, - 0x34, 0xd1, 0x01, 0xaa, 0x02, 0xa9, 0x28, 0x1c, - 0x01, 0xf0, 0x0b, 0xfc, 0x28, 0x1c, 0x01, 0xf0, - 0x12, 0xfc, 0x00, 0x78, 0xc0, 0x07, 0x0a, 0xd4, - 0x60, 0x69, 0x3c, 0x00, 0xec, 0x9a, 0x00, 0x00, - 0x80, 0x07, 0x26, 0xd4, 0x33, 0x1c, 0x29, 0x1c, - 0xa2, 0x7a, 0x20, 0x69, 0x7d, 0x69, 0xf6, 0xf7, - 0x72, 0xfc, 0x1e, 0xe0, 0x00, 0xab, 0x18, 0x7a, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x28, 0x06, 0xd0, - 0x02, 0x28, 0x16, 0xd1, 0x28, 0x1c, 0x79, 0x6a, - 0xf6, 0xf7, 0x61, 0xfc, 0x11, 0xe0, 0x00, 0xab, - 0x18, 0x79, 0x0e, 0x28, 0x01, 0xd0, 0x0f, 0x28, - 0x0b, 0xd1, 0x28, 0x1c, 0x3c, 0x00, 0x28, 0x9b, - 0x00, 0x00, 0x39, 0x6a, 0xf6, 0xf7, 0x56, 0xfc, - 0x06, 0xe0, 0x00, 0x07, 0x80, 0x0f, 0x03, 0xd1, - 0x20, 0x69, 0xf9, 0x69, 0xf6, 0xf7, 0x4e, 0xfc, - 0x78, 0x6b, 0x21, 0x21, 0x01, 0x30, 0x78, 0x63, - 0x22, 0x1c, 0x80, 0x20, 0x09, 0xf0, 0x31, 0xfe, - 0xfe, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x0b, 0x49, - 0x18, 0xb5, 0x08, 0x78, 0xc0, 0x07, 0x11, 0xd5, - 0x0a, 0x4a, 0x10, 0x1c, 0x20, 0x30, 0x3c, 0x00, - 0x64, 0x9b, 0x00, 0x00, 0x84, 0x79, 0x00, 0xab, - 0x1c, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x08, 0x78, - 0x40, 0x23, 0x18, 0x43, 0x08, 0x70, 0x05, 0x48, - 0x00, 0x78, 0x08, 0x70, 0x00, 0xab, 0x18, 0x88, - 0xd0, 0x84, 0x18, 0xbd, 0x04, 0x00, 0x07, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xe0, 0x60, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x05, 0x49, 0x10, 0xb5, - 0x88, 0x79, 0x05, 0x4b, 0x1a, 0x7c, 0x05, 0x4c, - 0x3c, 0x00, 0xa0, 0x9b, 0x00, 0x00, 0x24, 0x68, - 0x62, 0x40, 0x1a, 0x74, 0x88, 0x71, 0x10, 0xbd, - 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x58, 0x5b, 0x01, 0x00, 0x04, 0x49, - 0x0a, 0x68, 0x04, 0x48, 0x00, 0x68, 0x02, 0x40, - 0x01, 0xd0, 0x88, 0x61, 0x70, 0x47, 0x48, 0x61, - 0x70, 0x47, 0x10, 0x00, 0x07, 0x00, 0x58, 0x5b, - 0x01, 0x00, 0x02, 0x1c, 0x01, 0x20, 0x00, 0x06, - 0x08, 0x43, 0x3c, 0x00, 0xdc, 0x9b, 0x00, 0x00, - 0x80, 0xb5, 0x2a, 0x21, 0x09, 0xf0, 0xe6, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x00, 0x29, 0x03, 0xd0, 0x81, 0x29, 0x07, 0xd1, - 0x81, 0x20, 0x00, 0xe0, 0x80, 0x20, 0x22, 0x1c, - 0x2c, 0x21, 0x09, 0xf0, 0xd7, 0xfd, 0x10, 0xbd, - 0x02, 0x21, 0x2c, 0x20, 0xf7, 0xf7, 0x4c, 0xfb, - 0x20, 0x1c, 0xf7, 0xf7, 0xc3, 0xfc, 0x10, 0xbd, - 0x80, 0xb5, 0xb4, 0xb0, 0x3c, 0x00, 0x18, 0x9c, - 0x00, 0x00, 0x01, 0x28, 0x06, 0xd0, 0x82, 0x28, - 0x1c, 0xd1, 0x1a, 0xa8, 0x07, 0xf0, 0x35, 0xfc, - 0x34, 0xb0, 0x80, 0xbd, 0x81, 0x29, 0x13, 0xd1, - 0x0d, 0x48, 0x0c, 0x4a, 0x81, 0x69, 0x00, 0x68, - 0x50, 0x32, 0x81, 0x42, 0x02, 0xd0, 0xd1, 0x6a, - 0x01, 0x29, 0x02, 0xd0, 0x11, 0x78, 0x02, 0x29, - 0x02, 0xd1, 0x07, 0xf0, 0x0a, 0xf9, 0xeb, 0xe7, - 0x69, 0x46, 0xf7, 0xf7, 0x5a, 0xfe, 0x3c, 0x00, - 0x54, 0x9c, 0x00, 0x00, 0xe7, 0xe7, 0x01, 0x21, - 0x00, 0xe0, 0x02, 0x21, 0x18, 0x20, 0xf7, 0xf7, - 0x21, 0xfb, 0xe0, 0xe7, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x68, 0x17, 0x4d, - 0x9a, 0xb0, 0x68, 0x63, 0x08, 0xf0, 0x3e, 0xfa, - 0x20, 0x79, 0x14, 0x49, 0x13, 0x4a, 0x50, 0x39, - 0x2c, 0x3a, 0x02, 0x28, 0x0a, 0xd1, 0x90, 0x68, - 0x80, 0x02, 0xa8, 0x61, 0xc8, 0x68, 0xe8, 0x61, - 0x3c, 0x00, 0x90, 0x9c, 0x00, 0x00, 0x02, 0x20, - 0x28, 0x72, 0x07, 0xf0, 0xe4, 0xf8, 0x1a, 0xb0, - 0xb0, 0xbd, 0x03, 0x1c, 0x00, 0x20, 0x00, 0x2b, - 0x0b, 0xd1, 0x52, 0x68, 0x92, 0x02, 0xaa, 0x61, - 0x0a, 0x1c, 0x89, 0x68, 0xe9, 0x61, 0x28, 0x72, - 0x10, 0x68, 0x69, 0x46, 0xf7, 0xf7, 0x27, 0xfe, - 0xed, 0xe7, 0xa8, 0x61, 0x01, 0x20, 0x28, 0x72, - 0x28, 0x70, 0x00, 0x20, 0x06, 0xf0, 0x7d, 0xfa, - 0xe5, 0xe7, 0x3c, 0x00, 0xcc, 0x9c, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x07, 0x20, 0xf7, 0xf7, 0xe1, 0xfa, 0x80, 0xbd, - 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x24, - 0x19, 0x4a, 0x00, 0x26, 0xd5, 0x68, 0x11, 0x68, - 0x04, 0x35, 0x08, 0x1c, 0x91, 0x60, 0x02, 0xe0, - 0x01, 0x1c, 0x40, 0x19, 0x08, 0x60, 0x53, 0x68, - 0x83, 0x42, 0xf9, 0xd8, 0x3c, 0x00, 0x08, 0x9d, - 0x00, 0x00, 0x01, 0x34, 0x10, 0x32, 0x03, 0x2c, - 0x0e, 0x60, 0xee, 0xd3, 0xf6, 0xf7, 0xf1, 0xff, - 0x10, 0x48, 0x10, 0x49, 0x12, 0x4c, 0x08, 0x60, - 0x10, 0x49, 0x00, 0x20, 0x01, 0x22, 0x19, 0x23, - 0x5b, 0x01, 0x0c, 0x25, 0x43, 0x43, 0x1b, 0x19, - 0x45, 0x43, 0x4a, 0x51, 0x1f, 0x1c, 0x6d, 0x18, - 0xab, 0x60, 0x6b, 0x60, 0x00, 0x25, 0x1e, 0x1c, - 0x14, 0x36, 0x9e, 0x60, 0x33, 0x1c, 0x3c, 0x00, - 0x44, 0x9d, 0x00, 0x00, 0x01, 0x35, 0x27, 0x2d, - 0xf8, 0xdb, 0x01, 0x30, 0x03, 0x28, 0x9f, 0x60, - 0xe8, 0xdb, 0xf8, 0xbd, 0x20, 0x57, 0x01, 0x00, - 0x14, 0xc8, 0x01, 0x00, 0xb4, 0xcf, 0x01, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xb8, 0xcf, 0x01, 0x00, - 0xb0, 0xb5, 0x07, 0x4c, 0x25, 0x1c, 0xc0, 0x35, - 0x28, 0x6b, 0x1e, 0x21, 0x00, 0xf0, 0xf2, 0xf9, - 0xa2, 0x6b, 0x20, 0x1c, 0xdc, 0x30, 0x29, 0x6b, - 0x3c, 0x00, 0x80, 0x9d, 0x00, 0x00, 0x00, 0xf0, - 0xb6, 0xf9, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x00, 0x20, 0x10, 0x22, 0x10, 0xb5, - 0x0a, 0x49, 0x05, 0xe0, 0x0c, 0x23, 0x43, 0x43, - 0x5c, 0x18, 0x0c, 0x34, 0xcc, 0x50, 0x01, 0x30, - 0x0f, 0x28, 0xf7, 0xd3, 0x0c, 0x23, 0x58, 0x43, - 0x09, 0x50, 0x04, 0x48, 0x41, 0x60, 0x01, 0x60, - 0x02, 0x82, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60, - 0x10, 0xbd, 0x3c, 0x00, 0xbc, 0x9d, 0x00, 0x00, - 0x84, 0xe2, 0x01, 0x00, 0x44, 0xe3, 0x01, 0x00, - 0x10, 0xb5, 0x08, 0x4c, 0xa0, 0x6a, 0x00, 0x28, - 0x03, 0xd1, 0x07, 0x48, 0xf9, 0xf7, 0xe8, 0xfe, - 0xa0, 0x62, 0x04, 0x48, 0x44, 0x30, 0x00, 0x68, - 0x01, 0x21, 0xf9, 0xf7, 0x95, 0xfc, 0x60, 0x62, - 0x10, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0xcd, 0x26, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x1e, 0x1c, 0x3c, 0x00, 0xf8, 0x9d, - 0x00, 0x00, 0x81, 0xb0, 0x0a, 0x9f, 0x1c, 0x21, - 0xf6, 0xf7, 0x4d, 0xfb, 0x03, 0x98, 0xa0, 0x61, - 0x25, 0x60, 0x25, 0x61, 0x26, 0x81, 0xa6, 0x82, - 0xe7, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0x70, 0xb5, - 0x0d, 0x1c, 0xa4, 0x21, 0x04, 0x1c, 0x08, 0x30, - 0xf6, 0xf7, 0x3d, 0xfb, 0x20, 0x1c, 0x44, 0x30, - 0x06, 0x22, 0x29, 0x1c, 0xf6, 0xf7, 0x65, 0xfb, - 0x18, 0x48, 0x3c, 0x23, 0x41, 0x1c, 0x3c, 0x00, - 0x34, 0x9e, 0x00, 0x00, 0x61, 0x62, 0x41, 0x78, - 0x59, 0x43, 0x09, 0x18, 0x89, 0x7a, 0x06, 0x29, - 0x01, 0xd1, 0xa0, 0x62, 0x02, 0xe0, 0x21, 0x1c, - 0x4d, 0x31, 0xa1, 0x62, 0x41, 0x78, 0x3c, 0x23, - 0x59, 0x43, 0x08, 0x18, 0x04, 0x30, 0x0f, 0x49, - 0x20, 0x62, 0x0b, 0x88, 0x00, 0x2b, 0x15, 0xd0, - 0xac, 0x20, 0x00, 0x5d, 0x0b, 0x4a, 0x18, 0x32, - 0x00, 0x02, 0x80, 0x18, 0xb0, 0x30, 0xe0, 0x60, - 0x3c, 0x00, 0x70, 0x9e, 0x00, 0x00, 0x8d, 0x68, - 0x00, 0x20, 0x08, 0xe0, 0xe2, 0x68, 0xc1, 0x00, - 0x54, 0x50, 0xe6, 0x68, 0x82, 0x00, 0x52, 0x19, - 0x71, 0x18, 0x4a, 0x60, 0x01, 0x30, 0x98, 0x42, - 0xf4, 0xdb, 0x70, 0xbd, 0x00, 0x00, 0x68, 0x61, - 0x01, 0x00, 0x58, 0x75, 0x01, 0x00, 0x1f, 0xb5, - 0x04, 0x1c, 0x60, 0x34, 0x61, 0x7a, 0x03, 0x1c, - 0x80, 0x6a, 0x08, 0x4a, 0x02, 0x91, 0x01, 0x90, - 0x03, 0x92, 0x3c, 0x00, 0xac, 0x9e, 0x00, 0x00, - 0xe2, 0x79, 0x18, 0x1c, 0x20, 0x30, 0x00, 0x92, - 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a, - 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0, - 0x7f, 0xfe, 0x1f, 0xbd, 0x39, 0x4e, 0x00, 0x00, - 0xb0, 0xb5, 0x0b, 0x1c, 0x01, 0x88, 0x69, 0x20, - 0xc0, 0x5c, 0x86, 0xb0, 0x0e, 0x4a, 0x04, 0x91, - 0x03, 0x90, 0x05, 0x92, 0x0d, 0x4d, 0x59, 0x6a, - 0x9a, 0x6a, 0x2d, 0x68, 0x3c, 0x00, 0xe8, 0x9e, - 0x00, 0x00, 0x01, 0x24, 0x00, 0x2d, 0x00, 0xd0, - 0x04, 0x1c, 0x0a, 0x48, 0x00, 0x5d, 0x01, 0x91, - 0x02, 0x92, 0x00, 0x90, 0x18, 0x1c, 0x20, 0x30, - 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a, - 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0, - 0xa4, 0xfe, 0x06, 0xb0, 0xb0, 0xbd, 0x51, 0x4f, - 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x0a, 0x61, - 0x01, 0x00, 0x01, 0x89, 0x8a, 0x1c, 0x3c, 0x00, - 0x24, 0x9f, 0x00, 0x00, 0x02, 0x81, 0x02, 0x68, - 0x02, 0x3a, 0x02, 0x60, 0x08, 0x0a, 0x09, 0x02, - 0x08, 0x43, 0x10, 0x80, 0x70, 0x47, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x08, 0x78, 0x0e, 0x1c, - 0xff, 0x28, 0x14, 0xd0, 0x71, 0x78, 0x02, 0x31, - 0x00, 0x20, 0xf7, 0xf7, 0x45, 0xfb, 0x04, 0x1c, - 0x02, 0x89, 0x00, 0x68, 0x31, 0x1c, 0xf6, 0xf7, - 0xcf, 0xfa, 0x00, 0x2d, 0x06, 0xd0, 0x28, 0x1c, - 0x3c, 0x00, 0x60, 0x9f, 0x00, 0x00, 0xf7, 0xf7, - 0x34, 0xfb, 0x21, 0x1c, 0xf7, 0xf7, 0x57, 0xfa, - 0x00, 0xe0, 0x25, 0x1c, 0x28, 0x1c, 0x70, 0xbd, - 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c, 0x1e, 0x1c, - 0x04, 0x1c, 0x98, 0x1c, 0x01, 0x04, 0x09, 0x0c, - 0x00, 0x20, 0x81, 0xb0, 0xf7, 0xf7, 0x27, 0xfb, - 0x05, 0x1c, 0x00, 0x68, 0x00, 0x2c, 0x38, 0x60, - 0x03, 0x99, 0x01, 0x70, 0x38, 0x68, 0x46, 0x70, - 0x06, 0xd0, 0x3c, 0x00, 0x9c, 0x9f, 0x00, 0x00, - 0x20, 0x1c, 0xf7, 0xf7, 0x15, 0xfb, 0x29, 0x1c, - 0xf7, 0xf7, 0x38, 0xfa, 0x00, 0xe0, 0x2c, 0x1c, - 0x20, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x10, 0x48, 0x04, 0x68, 0x04, 0x60, - 0x0f, 0x49, 0x20, 0x20, 0x08, 0x60, 0xa0, 0x05, - 0x0e, 0x4e, 0x02, 0xd5, 0x70, 0x6a, 0xf6, 0xf7, - 0x05, 0xfa, 0xe0, 0x01, 0x02, 0xd5, 0x30, 0x6e, - 0xf6, 0xf7, 0x00, 0xfa, 0x3c, 0x00, 0xd8, 0x9f, - 0x00, 0x00, 0x0a, 0x48, 0x04, 0x40, 0x00, 0x25, - 0x07, 0xe0, 0xe0, 0x07, 0x03, 0xd5, 0xa8, 0x00, - 0x30, 0x58, 0xf6, 0xf7, 0xf6, 0xf9, 0x01, 0x35, - 0x64, 0x08, 0x00, 0x2c, 0xf5, 0xd1, 0x70, 0xbd, - 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xff, 0xfd, - 0xff, 0xfe, 0x80, 0xb5, 0x07, 0x21, 0x80, 0x20, - 0xf7, 0xf7, 0x49, 0xf9, 0x80, 0xbd, 0x3c, 0x00, - 0x14, 0xa0, 0x00, 0x00, 0xf8, 0xb5, 0x14, 0x4b, - 0x82, 0x00, 0x9c, 0x58, 0xca, 0x06, 0x01, 0x27, - 0x39, 0x1c, 0xd2, 0x0e, 0x91, 0x40, 0x11, 0x4a, - 0x11, 0x60, 0x11, 0x4e, 0x40, 0x00, 0x85, 0x19, - 0x15, 0xe0, 0x60, 0x60, 0x20, 0x7b, 0xc1, 0x00, - 0x89, 0x19, 0x10, 0x31, 0x0a, 0x78, 0x0d, 0x23, - 0x9a, 0x43, 0x0a, 0x70, 0x39, 0x1c, 0x81, 0x40, - 0x31, 0x73, 0x07, 0x49, 0x00, 0x01, 0x08, 0x31, - 0x3c, 0x00, 0x50, 0xa0, 0x00, 0x00, 0x40, 0x18, - 0x08, 0x4a, 0x41, 0x68, 0x42, 0x60, 0x80, 0x68, - 0xf6, 0xf7, 0xbe, 0xf9, 0x28, 0x7b, 0x00, 0x28, - 0xe6, 0xd1, 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x73, - 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x09, 0x7a, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x04, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xa0, 0x00, 0x00, - 0x03, 0x49, 0x01, 0x20, 0x89, 0x7a, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x00, 0x24, - 0xfa, 0xf7, 0x76, 0xfc, 0x00, 0x28, 0x14, 0xd0, - 0x01, 0x24, 0x08, 0xf0, 0x7d, 0xfe, 0x0a, 0x4d, - 0x0a, 0x4b, 0x00, 0x21, 0x5a, 0x18, 0xa0, 0x32, - 0x12, 0x78, 0x10, 0x2a, 0x06, 0xd3, 0x8a, 0x00, - 0xd2, 0x18, 0x92, 0x6f, 0x3c, 0x00, 0xc8, 0xa0, - 0x00, 0x00, 0x82, 0x1a, 0xaa, 0x42, 0x00, 0xd2, - 0x00, 0x24, 0x01, 0x31, 0x03, 0x29, 0xf0, 0xd3, - 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x8b, 0x08, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x01, 0x48, - 0xc0, 0x68, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x16, 0x1c, 0xfd, 0xf7, 0x2e, 0xfe, 0x00, 0x20, - 0xe0, 0x60, 0x26, 0x61, 0xa5, 0x60, 0x3c, 0x00, - 0x04, 0xa1, 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x17, 0x1c, 0x0e, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x2e, 0x01, 0xd1, - 0xf7, 0xf7, 0xf2, 0xf8, 0xa0, 0x68, 0x07, 0xf0, - 0x49, 0xf9, 0x05, 0x1c, 0x01, 0xd1, 0xf7, 0xf7, - 0xeb, 0xf8, 0x29, 0x1c, 0x6e, 0x60, 0xaf, 0x60, - 0x20, 0x1c, 0xfd, 0xf7, 0xfd, 0xfd, 0xe0, 0x68, - 0x41, 0x1c, 0xe1, 0x60, 0x00, 0x28, 0x03, 0xd1, - 0x3c, 0x00, 0x40, 0xa1, 0x00, 0x00, 0x05, 0x48, - 0x21, 0x69, 0x05, 0xf0, 0x2c, 0xf9, 0x20, 0x68, - 0xa8, 0x42, 0x02, 0xd1, 0x38, 0x1c, 0xf6, 0xf7, - 0x48, 0xf9, 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x60, - 0x01, 0x00, 0x00, 0x22, 0x01, 0x39, 0x10, 0xb5, - 0x05, 0xe0, 0x0c, 0x23, 0x53, 0x43, 0x1c, 0x18, - 0x0c, 0x34, 0xc4, 0x50, 0x01, 0x32, 0x8a, 0x42, - 0xf7, 0xd3, 0x00, 0x21, 0x0c, 0x23, 0x5a, 0x43, - 0x81, 0x50, 0x3c, 0x00, 0x7c, 0xa1, 0x00, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x01, 0xd1, 0xf7, 0xf7, 0xbb, 0xf8, 0x20, 0x1c, - 0xfd, 0xf7, 0xda, 0xfd, 0x01, 0x1c, 0x85, 0x68, - 0xa0, 0x68, 0x07, 0xf0, 0x09, 0xf9, 0xe0, 0x68, - 0x01, 0x38, 0xe0, 0x60, 0x03, 0xd1, 0x06, 0x48, - 0x21, 0x69, 0x05, 0xf0, 0xe7, 0xf8, 0x21, 0x68, - 0x00, 0x29, 0x03, 0xd0, 0x88, 0x68, 0x49, 0x68, - 0xf6, 0xf7, 0x11, 0xf9, 0x3c, 0x00, 0xb8, 0xa1, - 0x00, 0x00, 0x28, 0x1c, 0xb0, 0xbd, 0xc4, 0x60, - 0x01, 0x00, 0x01, 0x21, 0x00, 0x28, 0x8c, 0xb5, - 0x00, 0xd1, 0x00, 0x21, 0x0e, 0x20, 0x09, 0xf0, - 0x32, 0xfa, 0x83, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x00, 0x20, 0x04, 0xf0, 0x0c, 0xf8, 0x01, 0x90, - 0x68, 0x46, 0x03, 0xf0, 0x7a, 0xf9, 0x8c, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x08, 0xf0, 0xdf, 0xfd, - 0x06, 0x49, 0x0a, 0x89, 0x06, 0x49, 0x3c, 0x00, - 0xf4, 0xa1, 0x00, 0x00, 0x09, 0x6e, 0x41, 0x1a, - 0x0b, 0x0c, 0x59, 0x18, 0x89, 0x1a, 0x09, 0x04, - 0x09, 0x0c, 0x40, 0x1a, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x90, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x70, 0xb5, 0x04, 0x1c, 0x88, 0x7e, 0x0d, 0x1c, - 0x20, 0x28, 0x03, 0xd9, 0x03, 0x21, 0x18, 0x20, - 0xf7, 0xf7, 0x40, 0xf8, 0x00, 0x26, 0x26, 0x76, - 0xa8, 0x7e, 0x29, 0x1c, 0x1b, 0x31, 0x60, 0x76, - 0x3c, 0x00, 0x30, 0xa2, 0x00, 0x00, 0x20, 0x1c, - 0x1d, 0x30, 0xaa, 0x7e, 0xf6, 0xf7, 0x5f, 0xf9, - 0x68, 0x68, 0x29, 0x1c, 0x60, 0x60, 0xa8, 0x68, - 0x13, 0x31, 0xa0, 0x60, 0xa8, 0x7b, 0x06, 0x22, - 0x20, 0x73, 0xe8, 0x7b, 0x60, 0x73, 0x28, 0x7c, - 0xa0, 0x73, 0x68, 0x7c, 0xe0, 0x73, 0xa8, 0x89, - 0x20, 0x82, 0xa8, 0x7c, 0xe0, 0x76, 0x26, 0x77, - 0x20, 0x1c, 0x12, 0x30, 0xa6, 0x76, 0xf6, 0xf7, - 0x46, 0xf9, 0x3c, 0x00, 0x6c, 0xa2, 0x00, 0x00, - 0x60, 0x68, 0x43, 0x1c, 0x1d, 0xd0, 0x11, 0x4d, - 0x6d, 0x61, 0x28, 0x68, 0x00, 0x28, 0x1a, 0xd0, - 0x22, 0x7b, 0x01, 0x1c, 0x0b, 0x7b, 0x9a, 0x42, - 0x01, 0xd3, 0x20, 0x60, 0x14, 0xe0, 0x0b, 0x1c, - 0x09, 0x68, 0x00, 0x29, 0x0b, 0xd0, 0x0e, 0x7b, - 0xb2, 0x42, 0x08, 0xd2, 0x0b, 0x68, 0x00, 0x2b, - 0xf0, 0xd0, 0x1e, 0x7b, 0xb2, 0x42, 0xed, 0xd3, - 0x23, 0x60, 0x0c, 0x60, 0x3c, 0x00, 0xa8, 0xa2, - 0x00, 0x00, 0x01, 0xe0, 0x21, 0x60, 0x1c, 0x60, - 0x00, 0x20, 0x70, 0xbd, 0x26, 0x60, 0x2c, 0x60, - 0xfa, 0xe7, 0xa4, 0x6e, 0x01, 0x00, 0x13, 0x4a, - 0xb0, 0xb5, 0x51, 0x68, 0x01, 0x24, 0x00, 0x29, - 0x1e, 0xd0, 0x13, 0x1d, 0xd1, 0x61, 0x13, 0x62, - 0x43, 0x68, 0x04, 0xe0, 0x10, 0x62, 0x00, 0x68, - 0xd0, 0x61, 0x00, 0x28, 0x14, 0xd0, 0xd0, 0x69, - 0x45, 0x68, 0x9d, 0x42, 0xf6, 0xd1, 0x3c, 0x00, - 0xe4, 0xa2, 0x00, 0x00, 0x10, 0x6a, 0x81, 0x42, - 0x04, 0xd1, 0x51, 0x60, 0xd0, 0x69, 0x00, 0x68, - 0x08, 0x60, 0x02, 0xe0, 0xd1, 0x69, 0x09, 0x68, - 0x01, 0x60, 0xd0, 0x69, 0xfc, 0xf7, 0xce, 0xff, - 0x00, 0x28, 0x00, 0xd0, 0x00, 0x24, 0x20, 0x1c, - 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x17, 0x4d, 0x01, 0x24, 0x29, 0x68, - 0x00, 0x29, 0x27, 0xd0, 0x6d, 0x61, 0x29, 0x61, - 0x3c, 0x00, 0x20, 0xa3, 0x00, 0x00, 0x43, 0x68, - 0x04, 0xe0, 0x68, 0x61, 0x00, 0x68, 0x28, 0x61, - 0x00, 0x28, 0x1d, 0xd0, 0x28, 0x69, 0x42, 0x68, - 0x9a, 0x42, 0xf6, 0xd1, 0xaa, 0x69, 0x2b, 0x69, - 0x9a, 0x42, 0x00, 0xd1, 0xa9, 0x61, 0x6a, 0x69, - 0x91, 0x42, 0x03, 0xd1, 0x29, 0x60, 0x00, 0x68, - 0x08, 0x60, 0x06, 0xe0, 0x00, 0x68, 0x10, 0x60, - 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x07, 0xf0, - 0xcc, 0xfe, 0x3c, 0x00, 0x5c, 0xa3, 0x00, 0x00, - 0x28, 0x69, 0xfc, 0xf7, 0x9d, 0xff, 0x00, 0x28, - 0x02, 0xd0, 0x00, 0x24, 0x00, 0xe0, 0x01, 0x24, - 0x20, 0x1c, 0xb0, 0xbd, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x44, 0x68, - 0x07, 0xe0, 0x21, 0x1c, 0x44, 0x31, 0x28, 0x1c, - 0x00, 0xf0, 0xd6, 0xfc, 0x00, 0x28, 0x02, 0xd1, - 0x64, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x20, 0x1c, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xa3, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x0d, 0x1c, 0x14, 0x1c, 0x00, 0x28, 0x0b, 0x4e, - 0x08, 0xd0, 0x70, 0x6e, 0x06, 0x23, 0x58, 0x43, - 0x02, 0x04, 0x12, 0x0c, 0x31, 0x1c, 0x28, 0x1c, - 0x22, 0x80, 0x07, 0xe0, 0x21, 0x88, 0x06, 0x20, - 0xf6, 0xf7, 0xa7, 0xf9, 0x70, 0x66, 0x22, 0x88, - 0x29, 0x1c, 0x30, 0x1c, 0xf6, 0xf7, 0x95, 0xf8, - 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xa3, 0x00, 0x00, 0x10, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x03, 0x28, 0x03, 0xd8, 0x04, 0x4a, - 0xc0, 0x00, 0x11, 0x50, 0x80, 0xbd, 0x01, 0x21, - 0x26, 0x20, 0xf6, 0xf7, 0x5b, 0xff, 0x80, 0xbd, - 0x7c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0xc0, 0x68, 0x01, 0x89, 0x39, 0x29, 0x39, 0xd3, - 0x04, 0x68, 0xa0, 0x79, 0x88, 0x28, 0x35, 0xd1, - 0xe0, 0x79, 0x8e, 0x28, 0x32, 0xd1, 0x20, 0x7a, - 0x3c, 0x00, 0x10, 0xa4, 0x00, 0x00, 0x01, 0x28, - 0x2f, 0xd1, 0x60, 0x7a, 0x03, 0x28, 0x2c, 0xd1, - 0x20, 0x7b, 0x02, 0x28, 0x01, 0xd0, 0xfe, 0x28, - 0x27, 0xd1, 0x60, 0x7b, 0x1d, 0x21, 0x08, 0x40, - 0x01, 0x28, 0x22, 0xd1, 0xa0, 0x7b, 0xc8, 0x21, - 0x08, 0x40, 0x08, 0x28, 0x1d, 0xd1, 0xa8, 0x1d, - 0xfb, 0xf7, 0xe1, 0xf9, 0x00, 0x28, 0x18, 0xd0, - 0x19, 0x20, 0x21, 0x5c, 0x00, 0x29, 0x14, 0xd1, - 0x01, 0x30, 0x3c, 0x00, 0x4c, 0xa4, 0x00, 0x00, - 0x39, 0x28, 0xf9, 0xdb, 0x68, 0x8b, 0x04, 0x21, - 0x08, 0x43, 0x68, 0x83, 0x03, 0xf0, 0xd6, 0xfe, - 0x00, 0x28, 0x09, 0xd1, 0x00, 0x23, 0x00, 0x22, - 0x26, 0x20, 0x04, 0x49, 0x09, 0xf0, 0x92, 0xf9, - 0x03, 0x48, 0x00, 0x68, 0x01, 0xf0, 0x84, 0xf9, - 0xb0, 0xbd, 0x00, 0x00, 0x50, 0xc3, 0x00, 0x00, - 0x0c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c, - 0xa3, 0x68, 0x01, 0x33, 0x3c, 0x00, 0x88, 0xa4, - 0x00, 0x00, 0xa3, 0x60, 0x0c, 0x1c, 0x09, 0xd0, - 0x25, 0x68, 0x00, 0x2d, 0x03, 0xd0, 0x23, 0x7a, - 0x61, 0x68, 0xf5, 0xf7, 0xa3, 0xff, 0x20, 0x1c, - 0xf7, 0xf7, 0xa9, 0xf9, 0xb0, 0xbd, 0x94, 0x79, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0x01, 0x89, 0x05, 0x68, 0x08, 0x29, 0x53, 0xd3, - 0x06, 0x22, 0x28, 0x1c, 0x55, 0x49, 0xf5, 0xf7, - 0x9e, 0xff, 0x00, 0x28, 0x37, 0xd1, 0x3c, 0x00, - 0xc4, 0xa4, 0x00, 0x00, 0xe9, 0x88, 0x52, 0x4e, - 0x04, 0x3e, 0x81, 0x29, 0x24, 0xd1, 0xe5, 0x68, - 0x29, 0x68, 0x08, 0x7a, 0x4a, 0x7a, 0x00, 0x02, - 0x80, 0x18, 0x00, 0x04, 0x00, 0x0c, 0x42, 0x0b, - 0x00, 0x05, 0x00, 0x0d, 0xe2, 0x75, 0x20, 0x83, - 0x4b, 0x89, 0x00, 0x20, 0x42, 0x00, 0xb2, 0x5a, - 0x9a, 0x42, 0x06, 0xd1, 0x28, 0x89, 0x0c, 0x38, - 0x02, 0x0a, 0x00, 0x02, 0x10, 0x43, 0x48, 0x81, - 0x3c, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x02, 0xe0, - 0x01, 0x30, 0x02, 0x28, 0xf1, 0xd3, 0xe0, 0x68, - 0x01, 0x89, 0x0a, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x0a, 0x31, 0x1c, 0xe0, 0x00, 0x22, - 0x00, 0x20, 0x43, 0x00, 0xf3, 0x5a, 0x8b, 0x42, - 0x01, 0xd1, 0x01, 0x22, 0x02, 0xe0, 0x01, 0x30, - 0x02, 0x28, 0xf6, 0xd3, 0x00, 0x2a, 0x11, 0xd1, - 0x07, 0xe0, 0x36, 0x49, 0x06, 0x22, 0x06, 0x31, - 0x28, 0x1c, 0x3c, 0x00, 0x3c, 0xa5, 0x00, 0x00, - 0xf5, 0xf7, 0x5e, 0xff, 0x00, 0x28, 0x08, 0xd1, - 0xe0, 0x68, 0x01, 0x89, 0x06, 0x39, 0x01, 0x81, - 0xe0, 0x68, 0x01, 0x68, 0x06, 0x31, 0x01, 0x60, - 0x10, 0xe0, 0xe0, 0x68, 0xff, 0xf7, 0xe2, 0xfc, - 0x0c, 0xe0, 0x02, 0x31, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x02, 0x39, 0x01, 0x60, 0xe0, 0x68, - 0x00, 0x89, 0x02, 0x38, 0x02, 0x0a, 0x00, 0x02, - 0x10, 0x43, 0x08, 0x80, 0x3c, 0x00, 0x78, 0xa5, - 0x00, 0x00, 0xe0, 0x68, 0x03, 0x25, 0x02, 0x89, - 0x01, 0x68, 0x24, 0x4e, 0x02, 0x2a, 0x10, 0xd9, - 0x09, 0x88, 0x08, 0x29, 0x05, 0xd0, 0xc1, 0x23, - 0xdb, 0x00, 0x99, 0x42, 0x03, 0xd1, 0x01, 0x25, - 0x02, 0xe0, 0x00, 0x25, 0x00, 0xe0, 0x02, 0x25, - 0xe9, 0x00, 0x71, 0x58, 0x00, 0x29, 0x00, 0xd1, - 0x02, 0x25, 0xf7, 0xf7, 0x04, 0xf8, 0xe9, 0x00, - 0x89, 0x19, 0x89, 0x88, 0x88, 0x42, 0x3c, 0x00, - 0xb4, 0xa5, 0x00, 0x00, 0x00, 0xd9, 0x03, 0x25, - 0xa1, 0x1d, 0x20, 0x1c, 0xfd, 0xf7, 0x34, 0xfc, - 0x00, 0x28, 0x00, 0xd1, 0x03, 0x25, 0x02, 0x2d, - 0x05, 0xd0, 0x03, 0x2d, 0x07, 0xd1, 0xe0, 0x68, - 0xf6, 0xf7, 0xe2, 0xff, 0x70, 0xbd, 0x20, 0x1c, - 0xfd, 0xf7, 0x1c, 0xfd, 0x70, 0xbd, 0xe0, 0x68, - 0x01, 0x89, 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x02, 0x31, 0x01, 0x60, 0xe8, 0x00, - 0x3c, 0x00, 0xf0, 0xa5, 0x00, 0x00, 0x31, 0x58, - 0x20, 0x1c, 0xf5, 0xf7, 0xf1, 0xfe, 0x00, 0x28, - 0xef, 0xd1, 0xe0, 0x68, 0x01, 0x89, 0x02, 0x31, - 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, 0x02, 0x39, - 0x01, 0x60, 0xe3, 0xe7, 0x00, 0x00, 0x6a, 0x46, - 0x01, 0x00, 0x7c, 0x79, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x1c, 0x04, 0x1c, 0x15, 0x1c, 0xf7, 0xf7, - 0x8c, 0xfb, 0x00, 0x28, 0x2a, 0xd0, 0x1b, 0x49, - 0x08, 0x68, 0x3c, 0x00, 0x2c, 0xa6, 0x00, 0x00, - 0x01, 0x30, 0x08, 0x60, 0x00, 0x2e, 0x0a, 0xd0, - 0x01, 0x2e, 0x0b, 0xd0, 0x02, 0x2e, 0x0f, 0xd1, - 0x20, 0x1c, 0x04, 0xf0, 0xcd, 0xf8, 0x20, 0x1c, - 0xff, 0xf7, 0xd6, 0xfe, 0x0c, 0xe0, 0x08, 0x21, - 0xe0, 0x68, 0x02, 0xe0, 0xc1, 0x21, 0xe0, 0x68, - 0xc9, 0x00, 0x04, 0xf0, 0x35, 0xf9, 0x03, 0xe0, - 0x02, 0x21, 0x26, 0x20, 0xf6, 0xf7, 0x20, 0xfe, - 0xe2, 0x7d, 0xe1, 0x6a, 0x3c, 0x00, 0x68, 0xa6, - 0x00, 0x00, 0x28, 0x1c, 0xfc, 0xf7, 0x95, 0xfb, - 0x20, 0x63, 0x00, 0x20, 0x20, 0x62, 0xa0, 0x62, - 0x20, 0x1c, 0x00, 0xf0, 0x6c, 0xfe, 0x70, 0xbd, - 0xe0, 0x68, 0xf6, 0xf7, 0x8a, 0xff, 0x00, 0x2d, - 0xf9, 0xd0, 0xe3, 0x7d, 0x00, 0x22, 0x01, 0x20, - 0xe1, 0x6a, 0xf5, 0xf7, 0xa7, 0xfe, 0x70, 0xbd, - 0x00, 0x00, 0x94, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x04, 0xd1, 0x05, 0x48, 0x3c, 0x00, - 0xa4, 0xa6, 0x00, 0x00, 0x00, 0x68, 0x01, 0xf0, - 0x09, 0xf9, 0x80, 0xbd, 0x03, 0x21, 0x26, 0x20, - 0xf6, 0xf7, 0xf8, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x0c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x80, 0x79, 0x00, 0x24, 0xc0, 0x07, 0x2d, 0xd5, - 0xf0, 0x68, 0x00, 0x68, 0x41, 0x7a, 0x11, 0x29, - 0x28, 0xd1, 0xc1, 0x88, 0x0a, 0x0a, 0x09, 0x02, - 0x11, 0x43, 0xc9, 0x04, 0x22, 0xd1, 0x01, 0x78, - 0x3c, 0x00, 0xe0, 0xa6, 0x00, 0x00, 0x11, 0x4f, - 0x09, 0x07, 0x89, 0x0e, 0x08, 0x18, 0x41, 0x88, - 0x0a, 0x0a, 0x09, 0x02, 0x11, 0x43, 0x0d, 0x04, - 0x2d, 0x0c, 0x43, 0x2d, 0x39, 0x68, 0x01, 0xd1, - 0xca, 0x07, 0x0e, 0xd4, 0x44, 0x2d, 0x06, 0xd1, - 0xc9, 0x07, 0x04, 0xd5, 0x24, 0x30, 0x00, 0xf0, - 0x22, 0xfb, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48, - 0x85, 0x42, 0x06, 0xd1, 0x38, 0x68, 0x80, 0x07, - 0x03, 0xd5, 0x3c, 0x00, 0x1c, 0xa7, 0x00, 0x00, - 0x01, 0x24, 0xf0, 0x68, 0xf6, 0xf7, 0x3a, 0xff, - 0x20, 0x1c, 0xf8, 0xbd, 0x7c, 0x5a, 0x01, 0x00, - 0x6c, 0x07, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x28, - 0x07, 0xd0, 0x00, 0x21, 0x26, 0x20, 0x08, 0xf0, - 0x7b, 0xff, 0x02, 0x48, 0x00, 0x68, 0x01, 0xf0, - 0xbb, 0xf8, 0x80, 0xbd, 0x0c, 0x79, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0x4a, 0x08, 0x1c, - 0x51, 0x68, 0x01, 0x31, 0x3c, 0x00, 0x58, 0xa7, - 0x00, 0x00, 0x51, 0x60, 0x00, 0x21, 0x21, 0x62, - 0xa1, 0x62, 0xe2, 0x7d, 0xe1, 0x6a, 0xfc, 0xf7, - 0x18, 0xfb, 0x20, 0x63, 0x20, 0x1c, 0xf7, 0xf7, - 0xe6, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0xef, 0xfd, - 0x10, 0xbd, 0x94, 0x79, 0x01, 0x00, 0x0c, 0xb5, - 0x02, 0x1c, 0x08, 0x1c, 0x00, 0x21, 0x01, 0x91, - 0x00, 0x92, 0x6a, 0x46, 0x01, 0xa9, 0x00, 0xf0, - 0x02, 0xf8, 0x0c, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xa7, 0x00, 0x00, 0x70, 0xb5, 0x13, 0x68, - 0x00, 0x2b, 0x1e, 0xd0, 0x00, 0x26, 0x0b, 0x68, - 0x00, 0x2b, 0x02, 0xd1, 0x13, 0x68, 0x1b, 0x68, - 0x0b, 0x60, 0x13, 0x68, 0x1c, 0x68, 0x1b, 0x89, - 0xe5, 0x18, 0x08, 0xe0, 0x5c, 0x78, 0x1c, 0x19, - 0x02, 0x34, 0x0c, 0x60, 0x1c, 0x78, 0x84, 0x42, - 0x01, 0xd1, 0x18, 0x1c, 0x70, 0xbd, 0x0b, 0x68, - 0xab, 0x42, 0xf3, 0xd3, 0x13, 0x68, 0xdb, 0x68, - 0x3c, 0x00, 0xd0, 0xa7, 0x00, 0x00, 0x13, 0x60, - 0x0e, 0x60, 0x13, 0x68, 0x00, 0x2b, 0xe1, 0xd1, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x70, 0xb5, - 0x03, 0x1c, 0x20, 0xd0, 0x18, 0x68, 0x1e, 0x89, - 0x05, 0x1c, 0x16, 0xe0, 0x04, 0x78, 0xdd, 0x2c, - 0x10, 0xd1, 0x84, 0x78, 0x00, 0x2c, 0x0d, 0xd1, - 0xc4, 0x78, 0x50, 0x2c, 0x0a, 0xd1, 0x04, 0x79, - 0xf2, 0x2c, 0x07, 0xd1, 0x44, 0x79, 0x8c, 0x42, - 0x04, 0xd1, 0x3c, 0x00, 0x0c, 0xa8, 0x00, 0x00, - 0x02, 0x29, 0x0c, 0xd1, 0x84, 0x79, 0x94, 0x42, - 0x09, 0xd0, 0x44, 0x78, 0x20, 0x18, 0x02, 0x30, - 0x44, 0x1b, 0xb4, 0x42, 0xe5, 0xdb, 0xdb, 0x68, - 0x00, 0x2b, 0xde, 0xd1, 0x00, 0x20, 0x70, 0xbd, - 0x04, 0x49, 0x80, 0xb5, 0x0a, 0x78, 0x0a, 0x20, - 0x00, 0x2a, 0x00, 0xd0, 0x48, 0x6a, 0x00, 0xf0, - 0xd1, 0xf8, 0x80, 0xbd, 0x1c, 0x75, 0x01, 0x00, - 0xb0, 0xb5, 0x17, 0x4c, 0x3c, 0x00, 0x48, 0xa8, - 0x00, 0x00, 0x20, 0x68, 0x00, 0x28, 0x29, 0xd0, - 0x16, 0x4d, 0xe8, 0x69, 0x00, 0x28, 0x25, 0xd1, - 0x01, 0xf0, 0x3f, 0xfa, 0x00, 0x28, 0x21, 0xd1, - 0xff, 0xf7, 0x41, 0xfc, 0x00, 0x28, 0x1d, 0xd1, - 0x20, 0x68, 0xa9, 0x69, 0x40, 0x18, 0x08, 0xf0, - 0xd6, 0xf9, 0x00, 0x28, 0x16, 0xd0, 0x02, 0xf0, - 0x06, 0xfd, 0x21, 0x68, 0x40, 0x18, 0x08, 0xf0, - 0xce, 0xf9, 0x00, 0x28, 0x0e, 0xd0, 0x3c, 0x00, - 0x84, 0xa8, 0x00, 0x00, 0x01, 0x20, 0xe8, 0x61, - 0x00, 0x22, 0x25, 0x21, 0x80, 0x20, 0x08, 0xf0, - 0x8f, 0xff, 0x06, 0x48, 0x29, 0x6a, 0x04, 0xf0, - 0x83, 0xfd, 0x01, 0x21, 0x28, 0x6a, 0x00, 0xf0, - 0x89, 0xff, 0xb0, 0xbd, 0xe8, 0x59, 0x01, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24, 0xfa, 0xf7, - 0x0b, 0xff, 0x18, 0x4e, 0x71, 0x6a, 0x40, 0x18, - 0x3c, 0x00, 0xc0, 0xa8, 0x00, 0x00, 0x00, 0xf0, - 0x8e, 0xf8, 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0, - 0xfe, 0xfb, 0x00, 0x21, 0x25, 0x20, 0x08, 0xf0, - 0xb0, 0xfe, 0x03, 0x22, 0x29, 0x1c, 0x28, 0x1c, - 0x00, 0xf0, 0xaf, 0xf8, 0x18, 0xe0, 0x70, 0x6a, - 0x44, 0x1e, 0x00, 0xf0, 0x7c, 0xf8, 0x00, 0x28, - 0x12, 0xd1, 0x0c, 0x48, 0x31, 0x6a, 0x04, 0xf0, - 0x56, 0xfd, 0x01, 0x21, 0x30, 0x6a, 0x00, 0xf0, - 0x5c, 0xff, 0x3c, 0x00, 0xfc, 0xa8, 0x00, 0x00, - 0x00, 0x20, 0xfa, 0xf7, 0x0d, 0xfe, 0x06, 0xf0, - 0x03, 0xf8, 0x00, 0x23, 0x00, 0x22, 0x25, 0x20, - 0x05, 0x49, 0x08, 0xf0, 0x3f, 0xff, 0x20, 0x1c, - 0x07, 0xf0, 0xfc, 0xfa, 0x70, 0xbd, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0x27, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x28, - 0x07, 0xd0, 0x80, 0x28, 0x0d, 0xd1, 0x00, 0x22, - 0x00, 0x21, 0x08, 0x48, 0x3c, 0x00, 0x38, 0xa9, - 0x00, 0x00, 0xf8, 0xf7, 0x9a, 0xfe, 0x80, 0xbd, - 0x01, 0x29, 0x02, 0xd1, 0x06, 0x49, 0x00, 0x20, - 0xc8, 0x61, 0x04, 0xf0, 0xbe, 0xfb, 0x80, 0xbd, - 0x05, 0x21, 0x25, 0x20, 0xf6, 0xf7, 0xa7, 0xfc, - 0x80, 0xbd, 0x61, 0xa9, 0x00, 0x00, 0x1c, 0x75, - 0x01, 0x00, 0x00, 0x21, 0x00, 0x28, 0x80, 0xb5, - 0x01, 0xd1, 0x03, 0x48, 0x41, 0x68, 0x01, 0x22, - 0x25, 0x20, 0x08, 0xf0, 0x2c, 0xfe, 0x3c, 0x00, - 0x74, 0xa9, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0xe8, 0x59, 0x01, 0x00, 0x02, 0x49, 0xc8, 0x68, - 0x01, 0x38, 0x48, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, - 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b, 0x06, 0xd0, - 0x01, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x19, 0x1c, - 0xf5, 0xf7, 0xaa, 0xfd, 0x17, 0xe0, 0x0d, 0x4d, - 0x01, 0x1c, 0x2c, 0x78, 0x12, 0x88, 0x18, 0x1c, - 0x3c, 0x00, 0xb0, 0xa9, 0x00, 0x00, 0xf5, 0xf7, - 0xa2, 0xfd, 0x28, 0x78, 0x84, 0x42, 0x0d, 0xd0, - 0x00, 0x23, 0x6b, 0x61, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x20, 0x07, 0xf0, 0xa4, 0xfa, 0x05, 0xe0, - 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0x92, - 0xf8, 0xf7, 0x23, 0xfc, 0x01, 0x20, 0x38, 0xbd, - 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x01, 0x26, 0x08, 0xf0, 0xe1, 0xf9, - 0x05, 0x1c, 0x3c, 0x00, 0xec, 0xa9, 0x00, 0x00, - 0x00, 0x20, 0xfa, 0xf7, 0x8b, 0xfd, 0x44, 0x43, - 0x02, 0xf0, 0x40, 0xfc, 0x02, 0xf0, 0x3e, 0xfc, - 0x01, 0x1c, 0x23, 0x1c, 0x00, 0x22, 0x28, 0x1c, - 0x08, 0xf0, 0x7c, 0xfa, 0x00, 0x28, 0x13, 0xd1, - 0x0a, 0x48, 0x23, 0x1c, 0x00, 0x22, 0x81, 0x69, - 0x28, 0x1c, 0x08, 0xf0, 0x73, 0xfa, 0x00, 0x28, - 0x0a, 0xd1, 0xf8, 0xf7, 0x19, 0xfc, 0x01, 0x1c, - 0x23, 0x1c, 0x00, 0x22, 0x3c, 0x00, 0x28, 0xaa, - 0x00, 0x00, 0x28, 0x1c, 0x08, 0xf0, 0x69, 0xfa, - 0x00, 0x28, 0x00, 0xd1, 0x00, 0x26, 0x30, 0x1c, - 0x70, 0xbd, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x0d, 0x1c, 0x04, 0x1c, 0x16, 0x1c, 0x07, 0xf0, - 0x76, 0xf9, 0x00, 0x28, 0x0d, 0xd0, 0xfa, 0xf7, - 0x52, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30, - 0x01, 0x30, 0x43, 0x68, 0x00, 0x2b, 0x04, 0xd0, - 0x22, 0x1c, 0x29, 0x1c, 0x30, 0x1c, 0x3c, 0x00, - 0x64, 0xaa, 0x00, 0x00, 0xf5, 0xf7, 0xbb, 0xfc, - 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x1d, 0x20, 0x08, 0xf0, 0xdf, 0xfd, 0x07, 0x4a, - 0x07, 0x48, 0x11, 0x69, 0x01, 0x60, 0x51, 0x69, - 0x41, 0x60, 0x06, 0x49, 0x49, 0x68, 0x81, 0x60, - 0x00, 0x21, 0xc1, 0x60, 0x03, 0xf0, 0x74, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x28, 0x61, 0x01, 0x00, - 0x48, 0x75, 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, - 0x3c, 0x00, 0xa0, 0xaa, 0x00, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x40, 0x6b, 0x00, 0x28, 0x35, 0xd0, - 0x1d, 0x4d, 0x00, 0x26, 0x28, 0x78, 0x00, 0x28, - 0x24, 0xd0, 0x41, 0x20, 0x00, 0x5d, 0x00, 0x28, - 0x03, 0xd1, 0x08, 0xf0, 0x76, 0xf9, 0xa8, 0x61, - 0x1b, 0xe0, 0x69, 0x69, 0x01, 0x31, 0x69, 0x61, - 0xa8, 0x68, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x42, - 0x06, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31, - 0x04, 0x30, 0x3c, 0x00, 0xdc, 0xaa, 0x00, 0x00, - 0x82, 0x22, 0xff, 0xf7, 0xad, 0xff, 0x68, 0x68, - 0x00, 0x28, 0x0a, 0xd0, 0x69, 0x69, 0x81, 0x42, - 0x07, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31, - 0x04, 0x30, 0x02, 0x22, 0xff, 0xf7, 0xa0, 0xff, - 0x6e, 0x61, 0x68, 0x78, 0x05, 0x21, 0x08, 0x40, - 0x08, 0xd0, 0x07, 0x48, 0x00, 0x78, 0x0e, 0x28, - 0x03, 0xd3, 0x60, 0x34, 0xe0, 0x79, 0xfb, 0xf7, - 0xcf, 0xff, 0x70, 0xbd, 0x3c, 0x00, 0x18, 0xab, - 0x00, 0x00, 0x03, 0x48, 0x06, 0x60, 0x70, 0xbd, - 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x10, 0x67, - 0x01, 0x00, 0xd4, 0x7e, 0x01, 0x00, 0x80, 0x02, - 0x70, 0x47, 0x14, 0x23, 0x30, 0xb5, 0x09, 0x4d, - 0x4b, 0x43, 0x5b, 0x19, 0x5b, 0x68, 0x08, 0x24, - 0x00, 0x2b, 0x00, 0xd1, 0x02, 0x24, 0x38, 0x23, - 0x5a, 0x43, 0x05, 0x4b, 0x89, 0x00, 0xd2, 0x18, - 0x51, 0x5a, 0x02, 0x68, 0x09, 0x19, 0x3c, 0x00, - 0x54, 0xab, 0x00, 0x00, 0x51, 0x1a, 0x01, 0x60, - 0x30, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00, - 0x8c, 0x41, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, - 0x2c, 0x48, 0x14, 0x1c, 0x2c, 0x4a, 0x48, 0x43, - 0x86, 0x46, 0x80, 0x18, 0x80, 0x0d, 0x84, 0x46, - 0x2b, 0x48, 0x2a, 0x4a, 0x06, 0x26, 0x1d, 0x1c, - 0x48, 0x43, 0x4a, 0x43, 0x0e, 0x2f, 0x40, 0xd2, - 0x01, 0xa3, 0xdb, 0x5d, 0x5b, 0x00, 0x9f, 0x44, - 0x3c, 0x00, 0x90, 0xab, 0x00, 0x00, 0x06, 0x08, - 0x0a, 0x0f, 0x14, 0x18, 0x1d, 0x20, 0x27, 0x24, - 0x27, 0x2b, 0x2f, 0x31, 0xc8, 0x00, 0x1f, 0xe0, - 0x88, 0x00, 0x1d, 0xe0, 0x21, 0x49, 0x70, 0x46, - 0x40, 0x18, 0x00, 0x0d, 0x18, 0xe0, 0x1f, 0x4a, - 0x80, 0x18, 0x80, 0x0d, 0x40, 0x18, 0x21, 0xe0, - 0x1e, 0x48, 0x10, 0x18, 0x00, 0x0d, 0x1d, 0xe0, - 0x1d, 0x49, 0x70, 0x46, 0x40, 0x18, 0x40, 0x0d, - 0x0a, 0xe0, 0x3c, 0x00, 0xcc, 0xab, 0x00, 0x00, - 0x1b, 0x49, 0x40, 0x18, 0x01, 0xe0, 0x1b, 0x48, - 0x10, 0x18, 0x40, 0x0d, 0x11, 0xe0, 0x1a, 0x49, - 0x40, 0x18, 0x05, 0xe0, 0x60, 0x46, 0x20, 0x80, - 0x00, 0x20, 0x16, 0xe0, 0x17, 0x48, 0x10, 0x18, - 0x80, 0x0d, 0x06, 0xe0, 0x16, 0x49, 0x02, 0xe0, - 0x16, 0x48, 0x48, 0x43, 0x16, 0x49, 0x40, 0x18, - 0xc0, 0x0d, 0x03, 0x30, 0x80, 0x08, 0x80, 0x00, - 0x20, 0x80, 0x2e, 0x80, 0x3c, 0x00, 0x08, 0xac, - 0x00, 0x00, 0xf8, 0xbd, 0xff, 0x21, 0xff, 0x20, - 0xf6, 0xf7, 0x49, 0xfb, 0x00, 0x20, 0x20, 0x80, - 0x28, 0x80, 0xf6, 0xe7, 0x00, 0x00, 0xd1, 0x45, - 0x17, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xe3, 0x38, - 0x0e, 0x00, 0x55, 0x55, 0x15, 0x00, 0xff, 0xff, - 0x0f, 0x00, 0xa9, 0xaa, 0x2a, 0x01, 0x70, 0x1c, - 0x37, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xcb, 0xcc, - 0x4c, 0x00, 0x70, 0x1c, 0x47, 0x00, 0x3c, 0x00, - 0x44, 0xac, 0x00, 0x00, 0xa9, 0xaa, 0x7a, 0x00, - 0x70, 0x1c, 0x67, 0x00, 0xa9, 0xaa, 0xba, 0x00, - 0x84, 0xf6, 0x12, 0x00, 0xec, 0x25, 0xb4, 0x00, - 0x04, 0x49, 0x00, 0x28, 0x01, 0xd0, 0x09, 0x22, - 0x00, 0xe0, 0x14, 0x22, 0x4a, 0x80, 0x48, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xa4, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x06, 0x22, 0xf5, 0xf7, 0x40, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0xbc, 0xb5, 0x15, 0x1c, - 0x3c, 0x00, 0x80, 0xac, 0x00, 0x00, 0x04, 0x1c, - 0x04, 0x31, 0x09, 0x04, 0x09, 0x0c, 0x01, 0xaa, - 0x6b, 0x46, 0xff, 0xf7, 0x6a, 0xff, 0x38, 0x20, - 0x06, 0x49, 0x68, 0x43, 0x40, 0x18, 0xa1, 0x00, - 0x40, 0x5a, 0x00, 0xab, 0x99, 0x88, 0x40, 0x18, - 0x19, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xbc, 0xbd, 0x8c, 0x41, 0x01, 0x00, 0xbc, 0xb5, - 0x04, 0x1c, 0x15, 0x1c, 0x01, 0xaa, 0x6b, 0x46, - 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0xac, 0x00, 0x00, - 0x53, 0xff, 0x38, 0x20, 0x05, 0x49, 0x68, 0x43, - 0x40, 0x18, 0xa1, 0x00, 0x40, 0x5a, 0x00, 0xab, - 0x99, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xbc, 0xbd, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x0f, 0xd0, 0x00, 0x29, - 0x0d, 0xd0, 0x02, 0x78, 0x0b, 0x78, 0x9a, 0x42, - 0x09, 0xd1, 0xff, 0x2a, 0x05, 0xd0, 0x42, 0x78, - 0x02, 0x32, 0xf5, 0xf7, 0x3c, 0x00, 0xf8, 0xac, - 0x00, 0x00, 0x81, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49, - 0xf5, 0xf7, 0x75, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x5e, 0x40, 0x01, 0x00, 0x01, 0x1c, - 0x49, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xad, 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0xf5, 0xf7, 0x60, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x80, 0xb5, 0xff, 0xf7, 0xc7, 0xff, 0x80, 0xbd, - 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49, 0xf5, 0xf7, - 0x51, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x01, 0x1c, 0x80, 0x20, - 0x3c, 0x00, 0x70, 0xad, 0x00, 0x00, 0x81, 0x43, - 0x8a, 0x08, 0x0e, 0x20, 0x1c, 0x2a, 0x10, 0xb5, - 0x06, 0xd2, 0x03, 0x4c, 0x52, 0x00, 0xa3, 0x5c, - 0x8b, 0x42, 0x01, 0xd1, 0x10, 0x19, 0x40, 0x78, - 0x10, 0xbd, 0xfc, 0x41, 0x01, 0x00, 0x14, 0x23, - 0x02, 0x49, 0x58, 0x43, 0x40, 0x18, 0x40, 0x68, - 0x70, 0x47, 0x74, 0x40, 0x01, 0x00, 0x20, 0x22, - 0x01, 0x1c, 0x80, 0xb5, 0x02, 0x48, 0xf5, 0xf7, - 0x52, 0xfd, 0x3c, 0x00, 0xac, 0xad, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x48, 0x61, 0x01, 0x00, - 0x08, 0x06, 0x00, 0x0e, 0x02, 0x28, 0x01, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x29, 0x0c, 0xd0, 0x07, 0x49, 0x09, 0x68, - 0x00, 0x29, 0x08, 0xd0, 0x14, 0x23, 0x06, 0x49, - 0x58, 0x43, 0x40, 0x18, 0xc0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xad, - 0x00, 0x00, 0xac, 0x69, 0x01, 0x00, 0x74, 0x40, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x22, - 0x01, 0x1c, 0x04, 0x48, 0xf5, 0xf7, 0x7d, 0xfb, - 0x06, 0x22, 0x21, 0x1c, 0x03, 0x48, 0xf5, 0xf7, - 0x78, 0xfb, 0x10, 0xbd, 0x00, 0x00, 0x12, 0x61, - 0x01, 0x00, 0x40, 0x80, 0x07, 0x00, 0x00, 0x29, - 0x01, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x38, 0x23, - 0x5a, 0x43, 0x07, 0x4b, 0xd2, 0x18, 0x3c, 0x00, - 0x24, 0xae, 0x00, 0x00, 0x83, 0x00, 0xd2, 0x5a, - 0x14, 0x23, 0x58, 0x43, 0x05, 0x4b, 0xc0, 0x18, - 0x40, 0x88, 0x10, 0x18, 0x08, 0x1a, 0x0a, 0x38, - 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00, - 0x8c, 0x41, 0x01, 0x00, 0x74, 0x40, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c, - 0x1c, 0x1c, 0x19, 0x1c, 0x00, 0xf0, 0x5a, 0xf8, - 0x05, 0x1c, 0x14, 0x35, 0x22, 0x1c, 0x31, 0x1c, - 0x3c, 0x00, 0x60, 0xae, 0x00, 0x00, 0x38, 0x1c, - 0xff, 0xf7, 0x0b, 0xff, 0x28, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0xf8, 0xbd, 0x00, 0x00, 0x00, 0xb5, - 0x00, 0xf0, 0x4b, 0xf8, 0x0a, 0x30, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c, 0x1c, 0x1c, - 0x19, 0x1c, 0x00, 0xf0, 0x3e, 0xf8, 0x45, 0x00, - 0x1e, 0x35, 0x22, 0x1c, 0x31, 0x1c, 0x38, 0x1c, - 0xff, 0xf7, 0x3c, 0x00, 0x9c, 0xae, 0x00, 0x00, - 0xef, 0xfe, 0x28, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xf8, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c, - 0x81, 0xb0, 0x0a, 0xa9, 0x14, 0x1c, 0x1e, 0x1c, - 0x03, 0xc9, 0x00, 0xf0, 0x29, 0xf8, 0x05, 0x1c, - 0x1e, 0x35, 0x21, 0x1c, 0x30, 0x1c, 0x00, 0xf0, - 0x23, 0xf8, 0x2d, 0x18, 0x22, 0x1c, 0x39, 0x1c, - 0x01, 0x98, 0xff, 0xf7, 0xd5, 0xfe, 0x28, 0x18, - 0x00, 0x04, 0x00, 0x0c, 0x3c, 0x00, 0xd8, 0xae, - 0x00, 0x00, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0x49, - 0x80, 0xb5, 0x09, 0x88, 0x09, 0x29, 0x04, 0xd0, - 0x14, 0x29, 0x07, 0xd1, 0x01, 0x01, 0x80, 0x00, - 0x00, 0xe0, 0xc1, 0x00, 0x08, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0x80, 0xbd, 0xff, 0x21, 0xff, 0x20, - 0xf6, 0xf7, 0xd1, 0xf9, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x38, 0x23, - 0x59, 0x43, 0x06, 0x4a, 0x14, 0x23, 0x3c, 0x00, - 0x14, 0xaf, 0x00, 0x00, 0x89, 0x18, 0x82, 0x00, - 0x89, 0x5a, 0x05, 0x4a, 0x58, 0x43, 0x80, 0x18, - 0x40, 0x88, 0x08, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0x70, 0x47, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x02, 0x48, 0x03, 0x49, - 0x00, 0x68, 0x40, 0x00, 0x08, 0x5a, 0x70, 0x47, - 0xa8, 0x69, 0x01, 0x00, 0x54, 0x40, 0x01, 0x00, - 0x0a, 0x20, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x1c, - 0x3c, 0x00, 0x50, 0xaf, 0x00, 0x00, 0xfd, 0xf7, - 0x62, 0xff, 0x20, 0x1c, 0x10, 0xbd, 0xb0, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d, - 0xff, 0xf7, 0xf5, 0xfe, 0x00, 0x28, 0x18, 0xd0, - 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x08, 0xf0, - 0xe2, 0xfd, 0x00, 0x28, 0x11, 0xd0, 0x29, 0x88, - 0x09, 0x48, 0x20, 0x22, 0x81, 0x82, 0x69, 0x88, - 0x01, 0x83, 0xa9, 0x88, 0x06, 0x35, 0x41, 0x83, - 0xc5, 0x61, 0x3c, 0x00, 0x8c, 0xaf, 0x00, 0x00, - 0x30, 0x21, 0x09, 0x5d, 0x11, 0x54, 0x61, 0x6b, - 0x41, 0x62, 0x01, 0x20, 0xf7, 0xf7, 0x28, 0xf8, - 0x20, 0x1c, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x21, 0x1c, - 0x14, 0x31, 0x05, 0x68, 0x20, 0x1c, 0x08, 0xf0, - 0xc1, 0xfd, 0x00, 0x28, 0x08, 0xd0, 0x05, 0x4e, - 0xf0, 0x68, 0x02, 0xf0, 0xcf, 0xfd, 0x28, 0x88, - 0xf0, 0x82, 0x03, 0x20, 0x3c, 0x00, 0xc8, 0xaf, - 0x00, 0x00, 0xf7, 0xf7, 0x10, 0xf8, 0x20, 0x1c, - 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x3e, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d, - 0xff, 0xf7, 0xb7, 0xfe, 0x00, 0x28, 0x21, 0xd0, - 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x02, 0xaa, - 0x08, 0xf0, 0x77, 0xfd, 0x00, 0x28, 0x19, 0xd0, - 0x02, 0x98, 0x4b, 0x21, 0x09, 0x5c, 0x00, 0x29, - 0x10, 0xd0, 0x01, 0x29, 0x14, 0xd0, 0x3c, 0x00, - 0x04, 0xb0, 0x00, 0x00, 0x02, 0x29, 0x0c, 0xd1, - 0x29, 0x88, 0x0d, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x20, 0x1c, 0x03, 0xf0, 0x51, 0xf8, 0x01, 0x90, - 0x68, 0x46, 0x02, 0xf0, 0x5d, 0xfa, 0xf6, 0xf7, - 0xb5, 0xf8, 0x00, 0x21, 0x02, 0x98, 0x06, 0xf0, - 0x9f, 0xfe, 0x20, 0x1c, 0x3e, 0xbd, 0x07, 0xf0, - 0x29, 0xf8, 0x02, 0x98, 0x00, 0x21, 0x80, 0x69, - 0xc2, 0x07, 0xd2, 0x0f, 0x04, 0x20, 0xf6, 0xf7, - 0x3c, 0x00, 0x40, 0xb0, 0x00, 0x00, 0x7f, 0xff, - 0xee, 0xe7, 0x10, 0xb5, 0x04, 0x1c, 0xfd, 0xf7, - 0xe6, 0xfe, 0x20, 0x1c, 0x10, 0xbd, 0x3e, 0xb5, - 0x05, 0x1c, 0x00, 0xf0, 0x40, 0xfe, 0x00, 0x28, - 0x15, 0xd1, 0x28, 0x1c, 0x14, 0x30, 0xfa, 0xf7, - 0xce, 0xfb, 0x00, 0x28, 0x0f, 0xd0, 0x05, 0x21, - 0x28, 0x69, 0xff, 0xf7, 0x86, 0xfb, 0x04, 0x1c, - 0x09, 0xd0, 0x05, 0x22, 0x21, 0x1c, 0x68, 0x46, - 0xf5, 0xf7, 0x3c, 0x00, 0x7c, 0xb0, 0x00, 0x00, - 0x3d, 0xfa, 0x05, 0x34, 0x02, 0x94, 0x68, 0x46, - 0x03, 0xf0, 0x1a, 0xfb, 0x2a, 0x1c, 0x0d, 0x21, - 0x8f, 0x20, 0x08, 0xf0, 0x8f, 0xfb, 0x00, 0x20, - 0x3e, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0xfa, 0xf7, 0x98, 0xf8, 0x20, 0x1c, 0x05, 0xf0, - 0xe5, 0xf8, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x69, 0x00, 0x21, - 0x94, 0xb0, 0xff, 0xf7, 0x3c, 0x00, 0xb8, 0xb0, - 0x00, 0x00, 0x61, 0xfb, 0x69, 0x46, 0xfb, 0xf7, - 0x26, 0xf8, 0x00, 0x28, 0x1e, 0xd0, 0x00, 0x98, - 0xfa, 0xf7, 0x29, 0xfa, 0x01, 0x1c, 0x01, 0xa8, - 0x02, 0xf0, 0xd7, 0xf9, 0x00, 0x98, 0xfa, 0xf7, - 0xd2, 0xf9, 0x04, 0x90, 0x05, 0x20, 0x09, 0xad, - 0x68, 0x72, 0x02, 0xa8, 0x21, 0x1c, 0x06, 0x22, - 0x02, 0x30, 0xf5, 0xf7, 0x06, 0xfa, 0x01, 0x20, - 0x08, 0x90, 0x21, 0x6a, 0x0a, 0x90, 0x3c, 0x00, - 0xf4, 0xb0, 0x00, 0x00, 0x28, 0x20, 0x09, 0x91, - 0x00, 0x5d, 0x28, 0x72, 0x01, 0xa8, 0x00, 0xf0, - 0x69, 0xf8, 0x20, 0x1c, 0x14, 0xb0, 0xb0, 0xbd, - 0xff, 0xb5, 0x16, 0x1c, 0x1f, 0x1c, 0x81, 0xb0, - 0x0a, 0x9d, 0x4c, 0x20, 0xf6, 0xf7, 0x90, 0xfb, - 0x04, 0x1c, 0x14, 0x30, 0x06, 0x22, 0x02, 0x99, - 0xf5, 0xf7, 0xea, 0xf9, 0x20, 0x1c, 0x06, 0x22, - 0x01, 0x99, 0xf5, 0xf7, 0xe5, 0xf9, 0x28, 0x20, - 0x3c, 0x00, 0x30, 0xb1, 0x00, 0x00, 0x00, 0x21, - 0x06, 0x55, 0xe1, 0x60, 0x27, 0x62, 0x00, 0x2d, - 0x01, 0xd0, 0x8e, 0x20, 0x00, 0xe0, 0x8d, 0x20, - 0x22, 0x1c, 0x0d, 0x21, 0x08, 0xf0, 0x33, 0xfb, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x05, 0x1c, 0x4c, 0x20, 0xf6, 0xf7, 0x6f, 0xfb, - 0x04, 0x1c, 0x4c, 0x22, 0x29, 0x1c, 0xf5, 0xf7, - 0x26, 0xfa, 0x29, 0x20, 0x40, 0x5d, 0x0d, 0x28, - 0x2c, 0xd2, 0x3c, 0x00, 0x6c, 0xb1, 0x00, 0x00, - 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, - 0x28, 0x1a, 0x28, 0x1e, 0x06, 0x0a, 0x28, 0x28, - 0x0e, 0x28, 0x22, 0x12, 0x16, 0x00, 0x22, 0x1c, - 0x0d, 0x21, 0x8c, 0x20, 0x1a, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x83, 0x20, 0x16, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x84, 0x20, 0x12, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x85, 0x20, 0x0e, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x86, 0x20, 0x3c, 0x00, 0xa8, 0xb1, - 0x00, 0x00, 0x0a, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x87, 0x20, 0x06, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x89, 0x20, 0x02, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x8b, 0x20, 0x08, 0xf0, 0xf6, 0xfa, 0xb0, 0xbd, - 0xe8, 0x68, 0xf6, 0xf7, 0xe6, 0xf9, 0x20, 0x1c, - 0xf6, 0xf7, 0x11, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5, - 0x05, 0x1c, 0x90, 0x20, 0xf6, 0xf7, 0x2d, 0xfb, - 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x3c, 0x00, - 0xe4, 0xb1, 0x00, 0x00, 0x5b, 0xf9, 0x37, 0x4e, - 0x01, 0x27, 0xf0, 0x69, 0x04, 0x28, 0x03, 0xd9, - 0x70, 0x6b, 0x01, 0x30, 0x70, 0x63, 0x4d, 0xe0, - 0x33, 0x48, 0xb1, 0x6b, 0x04, 0xf0, 0xd0, 0xf8, - 0x01, 0x20, 0x20, 0x62, 0xa8, 0x7e, 0x21, 0x1c, - 0x80, 0x31, 0x02, 0x91, 0x08, 0x70, 0x22, 0x1c, - 0x60, 0x32, 0x01, 0x92, 0x00, 0x20, 0x2f, 0x1c, - 0x20, 0x37, 0x90, 0x72, 0x78, 0x7a, 0x2b, 0x1c, - 0x3c, 0x00, 0x20, 0xb2, 0x00, 0x00, 0x14, 0x33, - 0xd0, 0x72, 0xe8, 0x68, 0xaa, 0x1d, 0xa0, 0x60, - 0xe8, 0x6b, 0x48, 0x60, 0x44, 0x20, 0x40, 0x5d, - 0x08, 0x72, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0, - 0xaa, 0xfc, 0x68, 0x6a, 0x00, 0x28, 0x0a, 0xd1, - 0x01, 0x9a, 0x20, 0x1c, 0x93, 0x7a, 0x02, 0x99, - 0x22, 0x1c, 0x70, 0x32, 0x58, 0x30, 0x09, 0x78, - 0xfa, 0xf7, 0xdb, 0xf9, 0x06, 0xe0, 0x3a, 0x7a, - 0x23, 0x1c, 0x3c, 0x00, 0x5c, 0xb2, 0x00, 0x00, - 0xe8, 0x69, 0x29, 0x6a, 0x70, 0x33, 0xfd, 0xf7, - 0x8d, 0xf9, 0x30, 0x20, 0x40, 0x5d, 0x18, 0x49, - 0x07, 0x28, 0x0b, 0xd1, 0x58, 0x20, 0x00, 0x5d, - 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0xe0, 0x61, - 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c, 0xf7, 0xf7, - 0x3f, 0xff, 0x18, 0xe0, 0x01, 0x22, 0x20, 0x1c, - 0x05, 0xf0, 0xac, 0xff, 0x07, 0x1c, 0x12, 0xd0, - 0x03, 0xf0, 0x06, 0xff, 0x3c, 0x00, 0x98, 0xb2, - 0x00, 0x00, 0xf3, 0x6d, 0x00, 0x2b, 0x06, 0xd0, - 0x60, 0x68, 0x20, 0x30, 0x82, 0x7b, 0x61, 0x6b, - 0x38, 0x1c, 0xf5, 0xf7, 0x99, 0xf8, 0xe8, 0x68, - 0xf6, 0xf7, 0x73, 0xf9, 0x20, 0x1c, 0xf6, 0xf7, - 0x9e, 0xfa, 0xfe, 0xbd, 0xf0, 0x69, 0x01, 0x30, - 0xf0, 0x61, 0xfa, 0xe7, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x05, 0x31, - 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00, - 0xd4, 0xb2, 0x00, 0x00, 0x0d, 0x1c, 0x09, 0x04, - 0x09, 0x0c, 0x00, 0x20, 0xf6, 0xf7, 0x7c, 0xf9, - 0x04, 0x1c, 0x2a, 0x1c, 0x31, 0x1c, 0x00, 0x68, - 0xf5, 0xf7, 0x06, 0xf9, 0x20, 0x1c, 0x70, 0xbd, - 0x40, 0x88, 0x70, 0x47, 0x03, 0x78, 0x1b, 0x07, - 0x9b, 0x0f, 0x0b, 0x70, 0x00, 0x78, 0x00, 0x09, - 0x10, 0x70, 0x70, 0x47, 0x04, 0x30, 0x70, 0x47, - 0x04, 0x30, 0x70, 0x47, 0xd4, 0x21, 0x01, 0x70, - 0x3c, 0x00, 0x10, 0xb3, 0x00, 0x00, 0x00, 0x21, - 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x21, - 0x01, 0x70, 0x00, 0x21, 0x41, 0x70, 0x70, 0x47, - 0x00, 0x00, 0xb4, 0x21, 0x01, 0x70, 0x00, 0x21, - 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, - 0x48, 0x65, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x01, 0x49, 0x08, 0x65, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49, - 0x88, 0x65, 0x3c, 0x00, 0x4c, 0xb3, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0xf8, 0xb5, 0x5f, 0x4f, 0x05, 0x1c, 0xb8, 0x68, - 0x01, 0x30, 0xb8, 0x60, 0x07, 0xf0, 0x24, 0xfd, - 0x38, 0x61, 0x90, 0x20, 0xf6, 0xf7, 0x66, 0xfa, - 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x94, 0xf8, - 0x28, 0x6b, 0x27, 0x1c, 0x60, 0x63, 0x68, 0x8b, - 0x80, 0x37, 0x26, 0x1c, 0xc0, 0x07, 0xc0, 0x0f, - 0x20, 0x62, 0x68, 0x8b, 0x3c, 0x00, 0x88, 0xb3, - 0x00, 0x00, 0x60, 0x36, 0x02, 0x21, 0x40, 0x07, - 0xc0, 0x0f, 0x20, 0x63, 0x68, 0x8b, 0x80, 0x07, - 0xc0, 0x0f, 0xf8, 0x60, 0x28, 0x7f, 0x38, 0x70, - 0xb1, 0x72, 0x00, 0x28, 0x08, 0xd1, 0xf9, 0xf7, - 0xc8, 0xff, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x20, - 0x60, 0x62, 0x01, 0xe0, 0x01, 0x20, 0xa0, 0x62, - 0xf8, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x21, - 0x02, 0x20, 0x06, 0xf0, 0xcc, 0xff, 0x3c, 0x00, - 0xc4, 0xb3, 0x00, 0x00, 0x2b, 0x1c, 0x10, 0x33, - 0xaa, 0x1d, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0, - 0xdf, 0xfb, 0xa8, 0x6a, 0x00, 0x28, 0x0c, 0xd1, - 0x39, 0x78, 0x02, 0x29, 0x07, 0xd0, 0x22, 0x1c, - 0x70, 0x32, 0x20, 0x1c, 0x58, 0x30, 0xb3, 0x7a, - 0xfa, 0xf7, 0x10, 0xf9, 0x08, 0xe0, 0x01, 0x26, - 0x5e, 0xe0, 0xaa, 0x7d, 0x23, 0x1c, 0x28, 0x6a, - 0x69, 0x6a, 0x70, 0x33, 0xfd, 0xf7, 0xc0, 0xf8, - 0x3c, 0x00, 0x00, 0xb4, 0x00, 0x00, 0xe9, 0x68, - 0x00, 0x20, 0x09, 0x89, 0x00, 0x29, 0x00, 0xd1, - 0x04, 0x20, 0xf0, 0x72, 0x38, 0x78, 0x01, 0x28, - 0x14, 0xd1, 0x00, 0x27, 0x00, 0x90, 0x00, 0x20, - 0x06, 0xe0, 0x29, 0x69, 0x01, 0x29, 0x03, 0xd1, - 0xa9, 0x69, 0x01, 0x27, 0x89, 0x07, 0x1a, 0xd5, - 0x06, 0xf0, 0x79, 0xfc, 0x00, 0x28, 0xf4, 0xd1, - 0x01, 0x2f, 0x14, 0xd1, 0x00, 0x98, 0x01, 0x28, - 0x11, 0xd1, 0x3c, 0x00, 0x3c, 0xb4, 0x00, 0x00, - 0x08, 0xe0, 0x20, 0x1c, 0x58, 0x30, 0x06, 0xf0, - 0xe1, 0xfc, 0x00, 0x28, 0x0a, 0xd0, 0x80, 0x69, - 0x80, 0x07, 0x07, 0xd5, 0xf0, 0x7a, 0x08, 0x21, - 0x08, 0x43, 0xf0, 0x72, 0x01, 0x20, 0xe0, 0x62, - 0xe8, 0x7d, 0x30, 0x73, 0xe8, 0x68, 0xa0, 0x60, - 0xe0, 0x6a, 0x00, 0x28, 0x12, 0xd0, 0x1a, 0x4f, - 0xf8, 0x6b, 0x00, 0x28, 0x0e, 0xd0, 0x30, 0x7b, - 0xf5, 0xf7, 0xde, 0xfe, 0x3c, 0x00, 0x78, 0xb4, - 0x00, 0x00, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c, - 0x38, 0x1c, 0x40, 0x30, 0xfc, 0xf7, 0x55, 0xfc, - 0x14, 0x48, 0xb9, 0x6b, 0x03, 0xf0, 0x89, 0xff, - 0xf8, 0xbd, 0x10, 0x4f, 0x12, 0x48, 0xb9, 0x6b, - 0x03, 0xf0, 0x83, 0xff, 0x00, 0x22, 0x20, 0x1c, - 0x10, 0x49, 0x05, 0xf0, 0xa2, 0xfe, 0x06, 0x1c, - 0x03, 0xd1, 0x38, 0x6a, 0x01, 0x30, 0x38, 0x62, - 0xee, 0xe7, 0x20, 0x1c, 0xf6, 0xf7, 0x3c, 0x00, - 0xb4, 0xb4, 0x00, 0x00, 0x9f, 0xf9, 0xe8, 0x68, - 0xf6, 0xf7, 0x6e, 0xf8, 0x03, 0xf0, 0xf2, 0xfd, - 0x04, 0x48, 0x83, 0x6d, 0x00, 0x2b, 0xe2, 0xd0, - 0x00, 0x22, 0x30, 0x1c, 0x29, 0x6b, 0xf4, 0xf7, - 0x86, 0xff, 0xdc, 0xe7, 0xc4, 0x69, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x11, 0x30, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x20, - 0x07, 0xf0, 0xfe, 0xfc, 0x07, 0xf0, 0x5e, 0xfc, - 0x3c, 0x00, 0xf0, 0xb4, 0x00, 0x00, 0x0b, 0x49, - 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c, 0x07, 0xf0, - 0x90, 0xfb, 0x00, 0x28, 0x07, 0xd0, 0xf7, 0xf7, - 0x34, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x12, 0x21, - 0x86, 0x20, 0xf5, 0xf7, 0xca, 0xfe, 0xf7, 0xf7, - 0x2c, 0xf9, 0x00, 0x28, 0xee, 0xd1, 0x01, 0xf0, - 0x80, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x40, 0x9c, - 0x00, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x01, 0x1c, - 0x17, 0x4a, 0x3c, 0x00, 0x2c, 0xb5, 0x00, 0x00, - 0x01, 0x29, 0x50, 0x69, 0x04, 0xd0, 0x80, 0x29, - 0x1d, 0xd0, 0x81, 0x29, 0x21, 0xd1, 0x1c, 0xe0, - 0x91, 0x78, 0x01, 0x29, 0x15, 0xd1, 0x02, 0x21, - 0x91, 0x70, 0x14, 0x1c, 0x01, 0x1c, 0x10, 0x48, - 0x03, 0xf0, 0x28, 0xff, 0x01, 0x21, 0x60, 0x69, - 0x00, 0xf0, 0x2e, 0xf9, 0x60, 0x69, 0x01, 0xf0, - 0x5f, 0xfc, 0x20, 0x70, 0xa0, 0x88, 0xa1, 0x69, - 0x00, 0x23, 0x0a, 0x4a, 0x3c, 0x00, 0x68, 0xb5, - 0x00, 0x00, 0x07, 0xf0, 0x7e, 0xfc, 0x10, 0xbd, - 0x22, 0x21, 0x06, 0xe0, 0x01, 0xf0, 0x1d, 0xfc, - 0x20, 0x1c, 0x00, 0xf0, 0x4a, 0xf8, 0x10, 0xbd, - 0x1c, 0x21, 0x20, 0x20, 0xf5, 0xf7, 0x8f, 0xfe, - 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x3d, 0x2e, 0x00, 0x00, 0x70, 0xb5, - 0x1c, 0x4c, 0xa0, 0x78, 0x00, 0x28, 0x32, 0xd0, - 0x05, 0x28, 0x30, 0xd0, 0x60, 0x69, 0x3c, 0x00, - 0xa4, 0xb5, 0x00, 0x00, 0x00, 0xf0, 0xea, 0xf8, - 0x18, 0x4e, 0xb5, 0x79, 0xa0, 0x78, 0x01, 0x28, - 0x0b, 0xd0, 0x02, 0x28, 0x0e, 0xd0, 0x03, 0x28, - 0x10, 0xd0, 0x04, 0x28, 0x17, 0xd1, 0x42, 0x1f, - 0x80, 0x21, 0x20, 0x20, 0x08, 0xf0, 0x08, 0xf8, - 0x0e, 0xe0, 0x00, 0x21, 0x20, 0x20, 0x08, 0xf0, - 0x31, 0xf8, 0x0c, 0xe0, 0xa0, 0x88, 0x07, 0xf0, - 0x1d, 0xfc, 0x05, 0xe0, 0x20, 0x78, 0x00, 0xf0, - 0x3c, 0x00, 0xe0, 0xb5, 0x00, 0x00, 0x39, 0xfa, - 0x00, 0x20, 0x00, 0xf0, 0xc4, 0xfd, 0x60, 0x69, - 0x01, 0xf0, 0xe1, 0xfb, 0x05, 0x20, 0xa0, 0x70, - 0xb5, 0x71, 0x60, 0x69, 0x00, 0xf0, 0x61, 0xf9, - 0x00, 0x22, 0x20, 0x21, 0x81, 0x20, 0x08, 0xf0, - 0xd6, 0xf8, 0x70, 0xbd, 0x00, 0x00, 0xb4, 0x79, - 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xb0, 0xb5, - 0x0d, 0x4d, 0x04, 0x1c, 0xa8, 0x78, 0x00, 0x28, - 0x14, 0xd0, 0x3c, 0x00, 0x1c, 0xb6, 0x00, 0x00, - 0x68, 0x69, 0x00, 0xf0, 0x0b, 0xf9, 0x0a, 0x48, - 0x69, 0x69, 0x03, 0xf0, 0xa7, 0xfe, 0xa8, 0x88, - 0x07, 0xf0, 0x9e, 0xfb, 0x00, 0x2c, 0x02, 0xd0, - 0x68, 0x78, 0x00, 0xf0, 0x79, 0xff, 0x00, 0x20, - 0xa8, 0x70, 0xa9, 0x68, 0x20, 0x1c, 0xf4, 0xf7, - 0xca, 0xfe, 0xb0, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x06, 0x4b, 0x80, 0xb5, - 0x99, 0x78, 0x03, 0x29, 0x3c, 0x00, 0x58, 0xb6, - 0x00, 0x00, 0x06, 0xd1, 0x04, 0x21, 0x99, 0x70, - 0x20, 0x21, 0x02, 0x1c, 0x80, 0x20, 0x08, 0xf0, - 0xa4, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xb4, 0x79, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0xa1, 0x78, - 0x03, 0x29, 0x0f, 0xd1, 0x10, 0x30, 0xfa, 0xf7, - 0xde, 0xf8, 0x00, 0x28, 0x09, 0xd0, 0x20, 0x78, - 0x00, 0xf0, 0xe5, 0xf9, 0x00, 0x20, 0x00, 0xf0, - 0x70, 0xfd, 0x00, 0x21, 0x05, 0x48, 0x3c, 0x00, - 0x94, 0xb6, 0x00, 0x00, 0xfc, 0xf7, 0x9c, 0xfa, - 0x10, 0xbd, 0x1b, 0x21, 0x20, 0x20, 0xf5, 0xf7, - 0x01, 0xfe, 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x51, 0xb6, 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5, - 0x89, 0x78, 0x03, 0x29, 0x09, 0xd1, 0x00, 0xf0, - 0xcd, 0xf9, 0x00, 0x20, 0x00, 0xf0, 0x58, 0xfd, - 0x01, 0x21, 0x05, 0x48, 0xfc, 0xf7, 0x84, 0xfa, - 0x80, 0xbd, 0x17, 0x21, 0x20, 0x20, 0xf5, 0xf7, - 0x3c, 0x00, 0xd0, 0xb6, 0x00, 0x00, 0xe9, 0xfd, - 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x51, 0xb6, - 0x00, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x1d, 0x1c, - 0xa3, 0x78, 0x06, 0x1c, 0x04, 0x98, 0x00, 0x2b, - 0x18, 0xd1, 0x01, 0x23, 0xa3, 0x70, 0x22, 0x61, - 0xe6, 0x60, 0x61, 0x70, 0xa0, 0x60, 0xa5, 0x61, - 0x00, 0x20, 0x07, 0xf0, 0xac, 0xfa, 0xa0, 0x80, - 0x30, 0x1c, 0xf7, 0xf7, 0x3c, 0xfb, 0xe0, 0x80, - 0x07, 0xf0, 0x3c, 0x00, 0x0c, 0xb7, 0x00, 0x00, - 0x4f, 0xfb, 0xc7, 0x21, 0xc9, 0x00, 0x28, 0x1a, - 0x41, 0x1a, 0x00, 0x22, 0x20, 0x20, 0x07, 0xf0, - 0x57, 0xff, 0x70, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, 0x00, 0xf0, - 0x09, 0xf8, 0x20, 0x1c, 0x00, 0xf0, 0x24, 0xf8, - 0x00, 0x2d, 0x01, 0xd0, 0xff, 0xf7, 0xd4, 0xfe, - 0xb0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x4c, - 0x05, 0x1c, 0xa0, 0x68, 0x3c, 0x00, 0x48, 0xb7, - 0x00, 0x00, 0x00, 0x28, 0x0f, 0xd1, 0x0a, 0x48, - 0x01, 0x7e, 0x02, 0x22, 0x11, 0x40, 0x61, 0x60, - 0x01, 0x7e, 0x11, 0x43, 0x01, 0x76, 0x07, 0x20, - 0x03, 0xf0, 0x49, 0xfc, 0x20, 0x60, 0x03, 0xf0, - 0x98, 0xff, 0x03, 0xf0, 0xee, 0xff, 0xa0, 0x68, - 0x28, 0x43, 0xa0, 0x60, 0xb0, 0xbd, 0x40, 0x7c, - 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x0a, 0x49, - 0x38, 0xb5, 0x0a, 0x1c, 0x20, 0x32, 0x3c, 0x00, - 0x84, 0xb7, 0x00, 0x00, 0x94, 0x79, 0x00, 0xab, - 0x1c, 0x70, 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70, - 0xe2, 0x68, 0x00, 0x2a, 0x02, 0xd1, 0x06, 0x4d, - 0x01, 0x23, 0x6b, 0x70, 0x10, 0x43, 0xe0, 0x60, - 0x00, 0xab, 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x00, 0x50, 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0x00, 0x29, 0x01, 0xd0, 0x00, 0xf0, 0x28, 0xf8, - 0x3c, 0x00, 0xc0, 0xb7, 0x00, 0x00, 0x06, 0x4c, - 0x60, 0x78, 0x21, 0x69, 0x08, 0x43, 0x03, 0xd1, - 0x01, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0xc5, 0xfd, - 0x20, 0x69, 0x28, 0x43, 0x20, 0x61, 0xb0, 0xbd, - 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5, - 0x0a, 0x4c, 0x05, 0x1c, 0x22, 0x69, 0x00, 0x20, - 0x00, 0x2a, 0x0c, 0xd1, 0x00, 0x29, 0x00, 0xd0, - 0x04, 0xe0, 0x60, 0x78, 0x00, 0x28, 0x02, 0xd1, - 0x04, 0xf0, 0x3c, 0x00, 0xfc, 0xb7, 0x00, 0x00, - 0x69, 0xfb, 0x60, 0x70, 0x28, 0x1c, 0x06, 0xf0, - 0xef, 0xfc, 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, - 0x60, 0x78, 0x00, 0x28, 0x0a, 0xd0, 0x06, 0xf0, - 0xe3, 0xfc, 0x00, 0x20, 0x60, 0x70, 0x20, 0x69, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x21, 0x0e, 0x20, - 0x06, 0xf0, 0x96, 0xfd, 0x10, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xb8, - 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x0b, 0x69, - 0x83, 0x42, 0x04, 0xd1, 0x4a, 0x78, 0x00, 0x2a, - 0x01, 0xd1, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22, - 0x83, 0x43, 0x0b, 0x61, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0x7f, 0xfd, - 0x80, 0xbd, 0x18, 0x63, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x20, 0xf6, 0xf7, 0x56, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, - 0x74, 0xb8, 0x00, 0x00, 0x00, 0xf0, 0x04, 0xf8, - 0x20, 0x1c, 0x00, 0xf0, 0x1f, 0xf8, 0x10, 0xbd, - 0xb0, 0xb5, 0x0c, 0x4d, 0x04, 0x1c, 0xa8, 0x68, - 0xa0, 0x42, 0x0f, 0xd1, 0x07, 0x20, 0x29, 0x68, - 0x08, 0xf0, 0x8c, 0xfb, 0x68, 0x68, 0x02, 0x22, - 0x07, 0x49, 0x00, 0x28, 0x08, 0x7e, 0x01, 0xd0, - 0x10, 0x43, 0x00, 0xe0, 0x90, 0x43, 0x08, 0x76, - 0x04, 0xf0, 0xc4, 0xf8, 0xa8, 0x68, 0xa0, 0x43, - 0x3c, 0x00, 0xb0, 0xb8, 0x00, 0x00, 0xa8, 0x60, - 0xb0, 0xbd, 0x40, 0x7c, 0x01, 0x00, 0x0c, 0x80, - 0x07, 0x00, 0x0a, 0x49, 0x38, 0xb5, 0x0a, 0x1c, - 0x20, 0x32, 0x94, 0x79, 0x00, 0xab, 0x1c, 0x70, - 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70, 0xe2, 0x68, - 0x82, 0x42, 0x02, 0xd1, 0x06, 0x4d, 0x00, 0x23, - 0x6b, 0x70, 0x82, 0x43, 0xe2, 0x60, 0x00, 0xab, - 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0x3c, 0x00, 0xec, 0xb8, 0x00, 0x00, - 0x40, 0x7c, 0x01, 0x00, 0x00, 0x50, 0x07, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x0a, 0x4c, 0x00, 0x21, - 0x60, 0x69, 0xff, 0xf7, 0x11, 0xff, 0x04, 0x20, - 0x01, 0xf0, 0x46, 0xf9, 0x01, 0xf0, 0x88, 0xfb, - 0x00, 0x22, 0x04, 0x21, 0x04, 0x20, 0x01, 0xf0, - 0x8b, 0xf8, 0x28, 0x1c, 0x01, 0xf0, 0x4a, 0xfa, - 0x60, 0x69, 0xff, 0xf7, 0xa7, 0xff, 0xb0, 0xbd, - 0x40, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x28, 0xb9, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0xf0, 0x77, 0xfa, - 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x4d, 0x01, 0x21, - 0x28, 0x69, 0xff, 0xf7, 0xf4, 0xfe, 0xff, 0xf7, - 0x2a, 0xfe, 0x00, 0xf0, 0x2c, 0xfb, 0x00, 0xf0, - 0x84, 0xfa, 0x00, 0x24, 0x00, 0x22, 0x04, 0x21, - 0x20, 0x1c, 0x01, 0xf0, 0x6c, 0xf8, 0x01, 0x34, - 0x24, 0x06, 0x24, 0x0e, 0x04, 0x2c, 0xf5, 0xd3, - 0x28, 0x69, 0xff, 0xf7, 0x86, 0xff, 0x3c, 0x00, - 0x64, 0xb9, 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, - 0x40, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x0e, 0x1c, 0x07, 0x4c, 0x17, 0x1c, 0x01, 0x21, - 0x20, 0x69, 0xff, 0xf7, 0xd3, 0xfe, 0x3a, 0x1c, - 0x31, 0x1c, 0x28, 0x1c, 0x01, 0xf0, 0x52, 0xf8, - 0x20, 0x69, 0xff, 0xf7, 0x71, 0xff, 0xf8, 0xbd, - 0x40, 0x7c, 0x01, 0x00, 0xff, 0xb5, 0x89, 0xb0, - 0x06, 0x1c, 0x16, 0x98, 0x1d, 0x1c, 0x00, 0x28, - 0x3c, 0x00, 0xa0, 0xb9, 0x00, 0x00, 0x01, 0xd0, - 0x29, 0x48, 0x14, 0x90, 0x28, 0x68, 0x00, 0x88, - 0x00, 0x06, 0x80, 0x0e, 0x20, 0x28, 0x01, 0xd0, - 0x14, 0x28, 0x17, 0xd1, 0x0a, 0xaa, 0x18, 0x24, - 0x18, 0x21, 0x05, 0xca, 0xff, 0xf7, 0x77, 0xf9, - 0x07, 0x1c, 0x28, 0x1c, 0x01, 0x89, 0xa1, 0x42, - 0x02, 0xdd, 0x00, 0x68, 0x01, 0x19, 0x0b, 0xe0, - 0xc0, 0x68, 0x64, 0x1a, 0x00, 0x28, 0xf5, 0xd1, - 0x0f, 0x21, 0x3c, 0x00, 0xdc, 0xb9, 0x00, 0x00, - 0x86, 0x20, 0xf5, 0xf7, 0x61, 0xfc, 0x00, 0x21, - 0x01, 0xe0, 0x00, 0x21, 0x00, 0x27, 0x18, 0x48, - 0x08, 0x90, 0x80, 0x79, 0x07, 0x90, 0x0c, 0x20, - 0x16, 0x4a, 0x70, 0x43, 0x80, 0x18, 0x04, 0x79, - 0x04, 0x91, 0x12, 0x99, 0x15, 0x98, 0x14, 0x9a, - 0x01, 0x91, 0x03, 0x90, 0x05, 0x97, 0x00, 0x95, - 0x0a, 0xab, 0x02, 0x92, 0x21, 0x1c, 0x30, 0x1c, - 0x0c, 0xcb, 0xf7, 0xf7, 0x3c, 0x00, 0x18, 0xba, - 0x00, 0x00, 0x03, 0xf9, 0x01, 0x25, 0xb5, 0x40, - 0x0c, 0x4e, 0x08, 0x3e, 0x30, 0x78, 0x28, 0x40, - 0x06, 0xd0, 0x20, 0x1c, 0x00, 0xf0, 0xc9, 0xfd, - 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x03, 0xe0, - 0x20, 0x1c, 0x13, 0x99, 0x00, 0xf0, 0x43, 0xff, - 0x07, 0xa9, 0x03, 0xc9, 0x88, 0x71, 0x0d, 0xb0, - 0xf0, 0xbd, 0x95, 0x24, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0xba, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0c, 0x23, 0x09, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x00, 0x79, 0x05, 0x1c, 0x00, 0xf0, 0x92, 0xfe, - 0x28, 0x1c, 0xf7, 0xf7, 0xc7, 0xf8, 0x01, 0x20, - 0x03, 0x4a, 0xa0, 0x40, 0x08, 0x3a, 0x11, 0x78, - 0x81, 0x43, 0x11, 0x70, 0xb0, 0xbd, 0x00, 0x00, - 0x74, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, - 0x20, 0x78, 0x00, 0x28, 0x03, 0xd1, 0x1a, 0x21, - 0x3c, 0x00, 0x90, 0xba, 0x00, 0x00, 0x86, 0x20, - 0xf5, 0xf7, 0x07, 0xfc, 0x20, 0x78, 0x10, 0xbd, - 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x78, 0x70, 0x47, 0x00, 0x00, 0x2c, 0x63, - 0x01, 0x00, 0x80, 0xb5, 0xf6, 0xf7, 0xd1, 0xfe, - 0x00, 0xf0, 0x1b, 0xf9, 0x80, 0xbd, 0xfe, 0xb5, - 0x01, 0x68, 0x05, 0x1c, 0x0c, 0x68, 0x0e, 0x1c, - 0x21, 0x78, 0x88, 0x07, 0x71, 0xd1, 0x68, 0x69, - 0xc2, 0x07, 0x3c, 0x00, 0xcc, 0xba, 0x00, 0x00, - 0x6e, 0xd5, 0x80, 0x07, 0x6d, 0xd5, 0xe8, 0x7a, - 0xc2, 0x07, 0x08, 0x07, 0x09, 0x09, 0x02, 0x91, - 0x45, 0x49, 0x80, 0x0f, 0xd2, 0x0f, 0x00, 0x28, - 0x4f, 0x68, 0x05, 0xd0, 0x01, 0x28, 0x09, 0xd0, - 0x02, 0x28, 0x21, 0xd0, 0x03, 0x28, 0x5b, 0xd1, - 0xff, 0x23, 0x20, 0x1c, 0xa9, 0x7a, 0xf4, 0xf7, - 0x74, 0xfc, 0x55, 0xe0, 0x02, 0x98, 0x0b, 0x28, - 0x0a, 0xd0, 0x0c, 0x28, 0x3c, 0x00, 0x08, 0xbb, - 0x00, 0x00, 0x0f, 0xd0, 0x0d, 0x28, 0x4e, 0xd1, - 0x39, 0x4f, 0xf8, 0x68, 0xf4, 0xf7, 0x61, 0xfc, - 0x00, 0x20, 0xc0, 0x43, 0x5a, 0xe0, 0x35, 0x4f, - 0xa9, 0x7a, 0xbb, 0x68, 0x20, 0x1c, 0xf4, 0xf7, - 0x5b, 0xfc, 0x40, 0xe0, 0x32, 0x4f, 0x38, 0x69, - 0xf4, 0xf7, 0x53, 0xfc, 0x3b, 0xe0, 0x00, 0x21, - 0x01, 0x91, 0x02, 0x99, 0x00, 0x20, 0xff, 0x23, - 0x09, 0x07, 0x01, 0xd4, 0x01, 0x20, 0x3c, 0x00, - 0x44, 0xbb, 0x00, 0x00, 0x13, 0xe0, 0x31, 0x89, - 0x19, 0x29, 0x01, 0xd3, 0x26, 0x7e, 0x07, 0xe0, - 0x15, 0x29, 0x04, 0xd3, 0x18, 0x26, 0x71, 0x1a, - 0x49, 0x19, 0x0e, 0x7b, 0x00, 0xe0, 0x00, 0x26, - 0xb1, 0x06, 0x02, 0xd4, 0x01, 0x20, 0x73, 0x07, - 0x5b, 0x0f, 0x01, 0x21, 0x01, 0x91, 0x00, 0x28, - 0x03, 0xd0, 0xa9, 0x7a, 0x20, 0x1c, 0xf4, 0xf7, - 0x36, 0xfc, 0x01, 0x99, 0x01, 0x29, 0x15, 0xd1, - 0x3c, 0x00, 0x80, 0xbb, 0x00, 0x00, 0xf0, 0x06, - 0xc6, 0x0f, 0x20, 0x88, 0x1b, 0x4f, 0xe4, 0x8a, - 0xf9, 0x6b, 0x00, 0x05, 0xc0, 0x0f, 0x00, 0x29, - 0x1a, 0xd0, 0x4b, 0x1c, 0x18, 0xd0, 0x00, 0x2e, - 0x0a, 0xd0, 0x00, 0x28, 0x08, 0xd0, 0x38, 0x88, - 0x84, 0x42, 0x13, 0xd0, 0x02, 0x98, 0x0c, 0x28, - 0x01, 0xe0, 0x1d, 0xe0, 0x12, 0xe0, 0x0d, 0xd0, - 0x08, 0x1c, 0x01, 0xf0, 0x76, 0xf9, 0x00, 0x28, - 0x03, 0xd1, 0x3c, 0x00, 0xbc, 0xbb, 0x00, 0x00, - 0x00, 0xf0, 0xa6, 0xfa, 0xf4, 0xf7, 0x0a, 0xfc, - 0x00, 0x20, 0xc0, 0x43, 0xf8, 0x63, 0x00, 0x2e, - 0x0d, 0xd0, 0x3c, 0x80, 0x00, 0x20, 0xf8, 0x63, - 0x09, 0xe0, 0x20, 0x88, 0x00, 0x06, 0x80, 0x0e, - 0x20, 0x28, 0x04, 0xd1, 0x04, 0x4f, 0x20, 0x1c, - 0xb9, 0x6a, 0xf4, 0xf7, 0xf8, 0xfb, 0x29, 0x1c, - 0x02, 0x48, 0xfb, 0xf7, 0xef, 0xff, 0xfe, 0xbd, - 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0xf8, 0xbb, - 0x00, 0x00, 0xa5, 0x9a, 0x00, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x00, 0x78, 0x00, 0x21, 0x00, 0xf0, - 0xfc, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x18, 0x63, - 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28, - 0x1a, 0x68, 0x00, 0xd0, 0x01, 0x1c, 0x10, 0x1c, - 0x19, 0x60, 0x70, 0x47, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23, 0x3c, 0x00, - 0x34, 0xbc, 0x00, 0x00, 0x04, 0x49, 0x58, 0x43, - 0x40, 0x18, 0xc0, 0x69, 0xf4, 0xf7, 0xcc, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, - 0x94, 0x46, 0x01, 0x00, 0x02, 0x1c, 0x06, 0x48, - 0x80, 0xb5, 0x81, 0x62, 0x82, 0x60, 0x00, 0x7f, - 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x69, 0xf4, 0xf7, 0xb9, 0xfb, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, 0x01, 0x00, - 0x3c, 0x00, 0x70, 0xbc, 0x00, 0x00, 0x80, 0xb5, - 0x00, 0x20, 0x00, 0xf0, 0x3c, 0xfb, 0x00, 0x20, - 0x00, 0xf0, 0x6d, 0xfa, 0x00, 0xf0, 0x65, 0xfa, - 0x04, 0x49, 0xc8, 0x6a, 0x01, 0x30, 0xc8, 0x62, - 0x08, 0x1f, 0x00, 0x88, 0x07, 0xf0, 0xc1, 0xf8, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0x00, 0x21, 0x01, 0x77, 0xc1, 0x6a, - 0x01, 0x31, 0xc1, 0x62, 0x04, 0x38, 0x00, 0x88, - 0x07, 0xf0, 0x3c, 0x00, 0xac, 0xbc, 0x00, 0x00, - 0xb3, 0xf8, 0x03, 0xf0, 0xd1, 0xf9, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x05, 0xf0, - 0xe9, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x28, - 0x03, 0xd1, 0x01, 0x20, 0x04, 0xf0, 0x22, 0xfa, - 0x80, 0xbd, 0x01, 0x20, 0x03, 0xf0, 0xe6, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x03, 0x49, 0x01, 0x20, - 0x49, 0x78, 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xbc, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x70, 0xb5, - 0x13, 0x4d, 0x28, 0x78, 0x00, 0x28, 0x20, 0xd1, - 0x01, 0x21, 0x2e, 0x1c, 0x70, 0x68, 0xff, 0xf7, - 0x12, 0xfd, 0x00, 0x21, 0x07, 0x20, 0x06, 0xf0, - 0x2a, 0xfb, 0x0d, 0x48, 0x00, 0x24, 0x04, 0x71, - 0x04, 0xf0, 0xed, 0xf8, 0x06, 0xf0, 0xd5, 0xf9, - 0x01, 0x20, 0x28, 0x70, 0x0a, 0x48, 0x04, 0x60, - 0x44, 0x60, 0xf6, 0xf7, 0x4c, 0xfd, 0x3c, 0x00, - 0x24, 0xbd, 0x00, 0x00, 0xf7, 0xf7, 0x5e, 0xf8, - 0xff, 0xf7, 0xa2, 0xff, 0x00, 0xf0, 0xa8, 0xfd, - 0x05, 0x48, 0x71, 0x68, 0x03, 0xf0, 0x20, 0xfb, - 0x01, 0x20, 0x70, 0xbd, 0x2c, 0x63, 0x01, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x80, 0x00, 0x07, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xb0, 0xb5, 0x1e, 0x4c, - 0x20, 0x78, 0x01, 0x28, 0x35, 0xd1, 0x25, 0x1c, - 0x69, 0x68, 0x1c, 0x48, 0x03, 0xf0, 0x20, 0xfb, - 0x3c, 0x00, 0x60, 0xbd, 0x00, 0x00, 0x04, 0xf0, - 0xf0, 0xf8, 0x1a, 0x48, 0x01, 0x68, 0x49, 0x08, - 0x49, 0x00, 0x01, 0x60, 0x01, 0x68, 0x01, 0x22, - 0x11, 0x43, 0x01, 0x60, 0x00, 0xf0, 0x2b, 0xfe, - 0x00, 0xf0, 0x1b, 0xfc, 0x06, 0xf0, 0x99, 0xf8, - 0xf6, 0xf7, 0x29, 0xfe, 0xf6, 0xf7, 0x2d, 0xfc, - 0x00, 0x20, 0x20, 0x70, 0xff, 0xf7, 0x83, 0xff, - 0x00, 0xf0, 0x8b, 0xfd, 0x0f, 0x48, 0x81, 0x78, - 0x08, 0x22, 0x3c, 0x00, 0x9c, 0xbd, 0x00, 0x00, - 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43, - 0x81, 0x70, 0x0c, 0x49, 0x10, 0x20, 0x08, 0x71, - 0x68, 0x68, 0xff, 0xf7, 0x5f, 0xfd, 0xf7, 0xf7, - 0x39, 0xf8, 0xf6, 0xf7, 0x4d, 0xfd, 0x01, 0x21, - 0x07, 0x20, 0x06, 0xf0, 0xcd, 0xfa, 0x01, 0x20, - 0xb0, 0xbd, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xf0, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x3c, 0x00, 0xd8, 0xbd, - 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x89, 0x7a, 0x01, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0xb0, 0xb5, 0x15, 0x4d, 0x04, 0x1c, - 0x28, 0x7a, 0x00, 0x28, 0x20, 0xd1, 0xf9, 0xf7, - 0x00, 0xfc, 0x02, 0x28, 0x1c, 0xd1, 0x01, 0x20, - 0x28, 0x72, 0xe8, 0x68, 0x00, 0x28, 0x10, 0xd0, - 0x20, 0x68, 0x29, 0x68, 0x08, 0x60, 0x3c, 0x00, - 0x14, 0xbe, 0x00, 0x00, 0x69, 0x68, 0x0d, 0x48, - 0x03, 0xf0, 0xc2, 0xfa, 0x01, 0x21, 0x68, 0x68, - 0xff, 0xf7, 0xc8, 0xfc, 0x00, 0x22, 0x24, 0x20, - 0x61, 0x68, 0x07, 0xf0, 0xcf, 0xfb, 0xb0, 0xbd, - 0x00, 0x20, 0x28, 0x72, 0x21, 0x68, 0x01, 0x20, - 0xf4, 0xf7, 0xcf, 0xfa, 0xb0, 0xbd, 0x00, 0x20, - 0x21, 0x68, 0xf4, 0xf7, 0xca, 0xfa, 0xb0, 0xbd, - 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x3c, 0x00, 0x50, 0xbe, 0x00, 0x00, 0x04, 0x48, - 0x80, 0xb5, 0x00, 0x7a, 0x01, 0x28, 0x02, 0xd1, - 0x00, 0x20, 0x02, 0xf0, 0xf0, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x07, 0xd0, 0x80, 0x28, 0x09, 0xd1, - 0x07, 0x48, 0x00, 0x7a, 0x00, 0x28, 0x04, 0xd0, - 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x02, 0xf0, - 0xde, 0xfe, 0x80, 0xbd, 0x0e, 0x21, 0x24, 0x20, - 0xf5, 0xf7, 0x3c, 0x00, 0x8c, 0xbe, 0x00, 0x00, - 0x0b, 0xfa, 0x80, 0xbd, 0x04, 0x7a, 0x01, 0x00, - 0xf8, 0xb5, 0x3a, 0x4e, 0x05, 0x1c, 0xb0, 0x7a, - 0x00, 0x28, 0x69, 0xd1, 0xf9, 0xf7, 0xae, 0xfb, - 0x02, 0x28, 0x65, 0xd1, 0x36, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x61, 0xd0, 0x35, 0x48, 0x71, 0x68, - 0x03, 0xf0, 0x74, 0xfa, 0x01, 0x21, 0x70, 0x68, - 0xff, 0xf7, 0x7a, 0xfc, 0x6c, 0x20, 0xf5, 0xf7, - 0xb9, 0xfc, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0xbe, - 0x00, 0x00, 0x6c, 0x21, 0xf4, 0xf7, 0xe7, 0xfa, - 0x30, 0x68, 0x2c, 0x22, 0x04, 0x60, 0x29, 0x68, - 0x81, 0x60, 0x69, 0x68, 0xc1, 0x60, 0x00, 0x21, - 0x11, 0x54, 0x81, 0x62, 0xa9, 0x68, 0x00, 0x29, - 0x02, 0xd0, 0xe9, 0x68, 0x01, 0x61, 0x05, 0xe0, - 0x06, 0xf0, 0x5d, 0xff, 0x69, 0x68, 0x40, 0x18, - 0x31, 0x68, 0x08, 0x61, 0x70, 0x68, 0xff, 0xf7, - 0x14, 0xfd, 0x69, 0x21, 0x08, 0x55, 0x3c, 0x00, - 0x04, 0xbf, 0x00, 0x00, 0x00, 0x20, 0xf9, 0xf7, - 0x09, 0xfb, 0x01, 0x27, 0x3b, 0x1c, 0x06, 0x1c, - 0x22, 0x1c, 0x24, 0x32, 0x00, 0x21, 0xf9, 0xf7, - 0x79, 0xfb, 0x1c, 0x48, 0x03, 0x21, 0x00, 0x88, - 0x89, 0x03, 0x08, 0x43, 0x21, 0x1c, 0x40, 0x31, - 0x00, 0x91, 0x48, 0x83, 0x18, 0x48, 0x10, 0x21, - 0x60, 0x60, 0x18, 0x48, 0xa0, 0x60, 0xa7, 0x63, - 0x67, 0x63, 0x00, 0x20, 0xf5, 0xf7, 0x4c, 0xfb, - 0x3c, 0x00, 0x40, 0xbf, 0x00, 0x00, 0xe0, 0x60, - 0x02, 0x89, 0x00, 0x99, 0xca, 0x83, 0x07, 0x68, - 0x31, 0x1c, 0x38, 0x1d, 0x27, 0x61, 0xfe, 0xf7, - 0x8e, 0xfe, 0x38, 0x1c, 0x0a, 0x30, 0x0f, 0x49, - 0xfe, 0xf7, 0x89, 0xfe, 0xa4, 0x20, 0x38, 0x80, - 0x00, 0x20, 0x04, 0xf0, 0xde, 0xfb, 0x00, 0x22, - 0x1f, 0x20, 0x69, 0x68, 0x07, 0xf0, 0x2d, 0xfb, - 0xf8, 0xbd, 0xff, 0xe7, 0x00, 0x20, 0x29, 0x68, - 0xf4, 0xf7, 0x3c, 0x00, 0x7c, 0xbf, 0x00, 0x00, - 0x2e, 0xfa, 0xf8, 0xe7, 0x14, 0x7a, 0x01, 0x00, - 0x80, 0x5a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xfa, 0x60, 0x01, 0x00, 0x99, 0xec, 0x00, 0x00, - 0x15, 0xed, 0x00, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x06, 0x48, 0x80, 0xb5, 0x81, 0x7a, 0x00, 0x29, - 0x07, 0xd0, 0x00, 0x68, 0x04, 0x22, 0x20, 0x30, - 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0, - 0x6b, 0xfd, 0x80, 0xbd, 0x3c, 0x00, 0xb8, 0xbf, - 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x4c, 0xa0, 0x7a, 0x01, 0x28, 0x03, 0xd1, - 0x06, 0xf0, 0xf1, 0xfe, 0x21, 0x68, 0x88, 0x61, - 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0x03, 0x1c, - 0x08, 0x1c, 0x1f, 0x49, 0x70, 0xb5, 0x0a, 0x68, - 0x01, 0x2b, 0x1c, 0xd0, 0x80, 0x2b, 0x05, 0xd0, - 0x83, 0x2b, 0x30, 0xd1, 0x88, 0x7a, 0x00, 0x28, - 0x14, 0xd0, 0x29, 0xe0, 0x53, 0x69, 0x3c, 0x00, - 0xf4, 0xbf, 0x00, 0x00, 0x00, 0x2b, 0x0e, 0xd0, - 0x94, 0x69, 0xd5, 0x69, 0x2e, 0x1b, 0x0c, 0x69, - 0x5d, 0x1b, 0x36, 0x1b, 0xb6, 0x10, 0xa4, 0x19, - 0x0c, 0x61, 0xcc, 0x68, 0x2d, 0x1b, 0xad, 0x10, - 0x64, 0x19, 0xcc, 0x60, 0x93, 0x61, 0x02, 0xf0, - 0x81, 0xfd, 0x70, 0xbd, 0x02, 0x28, 0x12, 0xd1, - 0x90, 0x6a, 0x0c, 0x1c, 0x00, 0x28, 0xf8, 0xd0, - 0x07, 0xf0, 0x0e, 0xfa, 0xa0, 0x7a, 0x01, 0x28, - 0x3c, 0x00, 0x30, 0xc0, 0x00, 0x00, 0xf3, 0xd1, - 0x20, 0x68, 0x81, 0x6a, 0x00, 0x29, 0xef, 0xd1, - 0x20, 0x30, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x70, 0xbd, 0x02, 0xf0, 0x21, 0xfd, - 0x70, 0xbd, 0x0e, 0x21, 0x1f, 0x20, 0xf5, 0xf7, - 0x28, 0xf9, 0x70, 0xbd, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x02, 0x49, 0x0c, 0x31, 0x03, 0xc9, - 0x40, 0x18, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x6c, 0xc0, 0x00, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x04, 0x22, - 0x20, 0x30, 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, - 0x07, 0xf0, 0xe4, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x4c, - 0x0e, 0x1c, 0xa1, 0x7a, 0x00, 0x29, 0x1c, 0xd0, - 0x21, 0x68, 0x08, 0x61, 0x07, 0xf0, 0x32, 0xfa, - 0x00, 0x28, 0x17, 0xd0, 0x20, 0x68, 0x00, 0x25, - 0x05, 0x62, 0x00, 0x22, 0x3c, 0x00, 0xa8, 0xc0, - 0x00, 0x00, 0x83, 0x21, 0x1f, 0x20, 0x07, 0xf0, - 0x94, 0xfa, 0x60, 0x68, 0xff, 0xf7, 0x03, 0xfc, - 0x21, 0x68, 0x04, 0x22, 0x20, 0x31, 0x08, 0x7b, - 0x2b, 0x1c, 0x90, 0x43, 0x08, 0x73, 0x31, 0x1c, - 0x00, 0x22, 0x1f, 0x20, 0x07, 0xf0, 0x61, 0xfb, - 0x70, 0xbd, 0x20, 0x68, 0x08, 0x22, 0x20, 0x30, - 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0, - 0xd6, 0xfc, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xc0, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0x77, 0xfc, 0x00, 0xf0, - 0x6f, 0xfc, 0x00, 0xf0, 0x29, 0xff, 0x00, 0xf0, - 0x5d, 0xfa, 0x00, 0xf0, 0xc5, 0xf8, 0x00, 0xf0, - 0x85, 0xff, 0x80, 0xbd, 0x80, 0xb5, 0xfa, 0xf7, - 0x85, 0xfa, 0x80, 0xbd, 0x01, 0x48, 0xc0, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, - 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, - 0x3c, 0x00, 0x20, 0xc1, 0x00, 0x00, 0x02, 0x48, - 0xc1, 0x60, 0x70, 0x47, 0x00, 0x00, 0x81, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x48, - 0x02, 0x49, 0xc8, 0x60, 0x70, 0x47, 0x81, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x49, - 0x88, 0x61, 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x88, 0x61, - 0x70, 0x47, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x3c, 0x00, 0x5c, 0xc1, 0x00, 0x00, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0xc1, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x89, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x81, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x8d, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x01, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xc1, - 0x00, 0x00, 0x91, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, - 0x01, 0x1c, 0x02, 0x48, 0x01, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x01, 0x48, 0x02, 0x49, 0x08, 0x61, - 0x70, 0x47, 0x81, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0x80, 0x2a, - 0x80, 0xb5, 0x02, 0xd1, 0x00, 0xf0, 0x3c, 0x00, - 0xd4, 0xc1, 0x00, 0x00, 0x07, 0xf8, 0x80, 0xbd, - 0x1e, 0x21, 0x21, 0x20, 0xf5, 0xf7, 0x62, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x10, 0x4d, - 0x04, 0x1c, 0xa8, 0x6b, 0x01, 0x30, 0xa8, 0x63, - 0x69, 0x6b, 0x09, 0x1a, 0x28, 0x1c, 0x00, 0x6b, - 0x0c, 0x29, 0x03, 0xd9, 0x00, 0x21, 0xff, 0xf7, - 0x91, 0xfa, 0x03, 0xe0, 0x08, 0x29, 0x01, 0xd1, - 0xff, 0xf7, 0x32, 0xfb, 0x20, 0x1c, 0x00, 0xf0, - 0x3c, 0x00, 0x10, 0xc2, 0x00, 0x00, 0x4d, 0xf9, - 0x60, 0x69, 0x40, 0x07, 0x01, 0xd5, 0x03, 0xf0, - 0x0c, 0xfc, 0x20, 0x1c, 0xe9, 0x6a, 0xf4, 0xf7, - 0xdb, 0xf8, 0xb0, 0xbd, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, - 0x01, 0x1c, 0x02, 0x48, 0x41, 0x62, 0x70, 0x47, - 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x6c, - 0x00, 0x29, 0x3c, 0x00, 0x4c, 0xc2, 0x00, 0x00, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0xe1, 0x6b, 0x00, 0x29, 0x01, 0xd1, 0xe0, 0x63, - 0x04, 0xe0, 0x81, 0x42, 0x02, 0xd0, 0x00, 0x20, - 0xc0, 0x43, 0xf8, 0xe7, 0x06, 0xf0, 0x9c, 0xfd, - 0x20, 0x64, 0x10, 0xbd, 0x28, 0x7a, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x6c, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x88, 0xc2, - 0x00, 0x00, 0x05, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x48, 0x63, 0x88, 0x63, 0xff, 0x21, 0x09, 0x31, - 0x15, 0x22, 0x10, 0x20, 0xf6, 0xf7, 0xfb, 0xf9, - 0x80, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, - 0x81, 0x60, 0x70, 0x47, 0x00, 0x00, 0xc1, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0xc4, 0xc2, 0x00, 0x00, 0x02, 0x48, 0xc1, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, - 0x00, 0x28, 0x5a, 0x68, 0x00, 0xd0, 0x01, 0x1c, - 0x10, 0x1c, 0x59, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0xc9, 0x75, 0x00, 0x00, - 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, - 0x02, 0x48, 0x41, 0x61, 0x70, 0x47, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xc3, 0x00, 0x00, 0xcd, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x0f, 0x4b, - 0x10, 0xb5, 0xd9, 0x68, 0x00, 0x29, 0x19, 0xd0, - 0x0e, 0x4c, 0x00, 0x21, 0xca, 0x00, 0x12, 0x19, - 0x40, 0x3a, 0xd2, 0x6b, 0x82, 0x42, 0x02, 0xda, - 0x01, 0x31, 0x03, 0x29, 0xf6, 0xd3, 0x48, 0x1c, - 0x1a, 0x78, 0x00, 0x06, 0x00, 0x0e, 0x90, 0x42, - 0x08, 0xd0, 0x18, 0x70, 0x08, 0x06, 0x00, 0x0e, - 0x04, 0x1c, 0x3c, 0x00, 0x3c, 0xc3, 0x00, 0x00, - 0xf6, 0xf7, 0xba, 0xfa, 0x20, 0x1c, 0x03, 0xf0, - 0x1b, 0xfd, 0x10, 0xbd, 0x18, 0x63, 0x01, 0x00, - 0x3c, 0x42, 0x01, 0x00, 0x10, 0xb5, 0x14, 0x4c, - 0xe1, 0x68, 0x00, 0x29, 0x22, 0xd0, 0x21, 0x78, - 0x12, 0x4b, 0xca, 0x00, 0xd2, 0x18, 0x40, 0x3a, - 0xd3, 0x6b, 0x83, 0x42, 0x02, 0xda, 0x48, 0x1c, - 0x20, 0x70, 0x0b, 0xe0, 0x92, 0x6b, 0x82, 0x42, - 0x14, 0xdd, 0xff, 0x31, 0x3c, 0x00, 0x78, 0xc3, - 0x00, 0x00, 0x08, 0x06, 0x00, 0x0e, 0x20, 0x70, - 0x03, 0xd1, 0x19, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x8e, 0xff, 0x20, 0x78, 0xff, 0x30, 0x00, 0x06, - 0x00, 0x0e, 0xf6, 0xf7, 0x90, 0xfa, 0x20, 0x78, - 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0, - 0xee, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63, - 0x01, 0x00, 0x3c, 0x42, 0x01, 0x00, 0x09, 0x48, - 0x00, 0x21, 0x01, 0x81, 0x41, 0x81, 0x3c, 0x00, - 0xb4, 0xc3, 0x00, 0x00, 0x81, 0x81, 0xc1, 0x81, - 0x07, 0x4a, 0x02, 0x80, 0x01, 0x23, 0xdb, 0x02, - 0x43, 0x80, 0x82, 0x80, 0xc2, 0x80, 0x41, 0x76, - 0x31, 0x21, 0x81, 0x76, 0x01, 0x21, 0x01, 0x76, - 0x70, 0x47, 0x00, 0x00, 0x30, 0x80, 0x07, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, - 0xf6, 0xf7, 0xf8, 0xf8, 0x01, 0x20, 0xf6, 0xf7, - 0xdb, 0xfc, 0x01, 0x20, 0xf6, 0xf7, 0x5a, 0xfa, - 0x3c, 0x00, 0xf0, 0xc3, 0x00, 0x00, 0x01, 0x20, - 0x00, 0xf0, 0xf1, 0xfd, 0x01, 0x20, 0xf7, 0xf7, - 0xc6, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x11, 0x4c, 0x00, 0x29, 0x07, 0xd1, 0x00, 0x28, - 0x02, 0xd1, 0x01, 0x20, 0xe0, 0x60, 0x06, 0xe0, - 0x00, 0x21, 0xe1, 0x60, 0x03, 0xe0, 0x01, 0x29, - 0x07, 0xd1, 0x00, 0x28, 0x01, 0xd0, 0x20, 0x70, - 0x03, 0xe0, 0x18, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x3c, 0xff, 0x3c, 0x00, 0x2c, 0xc4, 0x00, 0x00, - 0x20, 0x78, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0xf6, 0xf7, 0x3e, 0xfa, 0x20, 0x78, 0xff, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x9c, 0xfc, - 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x88, 0x42, - 0x05, 0xd0, 0xfe, 0xf7, 0xff, 0xfb, 0x00, 0xf0, - 0x87, 0xfa, 0xff, 0xf7, 0x2b, 0xfc, 0x80, 0xbd, - 0xa8, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x68, 0xc4, - 0x00, 0x00, 0x01, 0x49, 0x48, 0x70, 0x70, 0x47, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x01, 0x49, - 0xc8, 0x60, 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b, - 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x78, - 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x04, 0x4a, - 0x00, 0x28, 0x02, 0xd0, 0x90, 0x69, 0x01, 0x30, - 0x90, 0x61, 0xd0, 0x69, 0x40, 0x18, 0x3c, 0x00, - 0xa4, 0xc4, 0x00, 0x00, 0xd0, 0x61, 0x70, 0x47, - 0x90, 0x5c, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x00, 0x68, 0x05, 0x68, 0x28, 0x1c, 0xfe, 0xf7, - 0x27, 0xff, 0x07, 0x1c, 0x60, 0x69, 0x15, 0x4e, - 0xc0, 0x07, 0xc0, 0x0f, 0x21, 0xd0, 0x01, 0xaa, - 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x12, 0xff, - 0x38, 0x78, 0xc0, 0x07, 0x0c, 0xd4, 0x60, 0x69, - 0x80, 0x07, 0x08, 0xd5, 0x00, 0xab, 0x18, 0x7a, - 0x3c, 0x00, 0xe0, 0xc4, 0x00, 0x00, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x28, 0x02, 0xd1, 0x70, 0x6a, - 0x01, 0x30, 0x70, 0x62, 0xfe, 0xbd, 0x00, 0xab, - 0x18, 0x7a, 0x00, 0x28, 0x01, 0xd0, 0x02, 0x28, - 0xf8, 0xd1, 0x70, 0x6a, 0x01, 0x30, 0x70, 0x62, - 0xb0, 0x6a, 0x01, 0x30, 0xb0, 0x62, 0xf1, 0xe7, - 0xf0, 0x6a, 0x01, 0x30, 0xf0, 0x62, 0xed, 0xe7, - 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x02, 0x49, - 0x48, 0x69, 0x3c, 0x00, 0x1c, 0xc5, 0x00, 0x00, - 0x01, 0x30, 0x48, 0x61, 0x70, 0x47, 0x00, 0x00, - 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x01, 0x1c, 0x40, 0x31, - 0x10, 0xb5, 0x0a, 0x8b, 0x12, 0x07, 0x92, 0x0f, - 0x01, 0x2a, 0x33, 0xd0, 0x4a, 0x78, 0x1a, 0x49, - 0x04, 0x1c, 0x60, 0x34, 0x00, 0x2a, 0x0b, 0x6a, - 0x22, 0xd1, 0xe2, 0x79, 0x01, 0x2a, 0x02, 0xd9, - 0xcc, 0x68, 0x01, 0x34, 0x3c, 0x00, 0x58, 0xc5, - 0x00, 0x00, 0xcc, 0x60, 0x02, 0x2a, 0x02, 0xd9, - 0x0c, 0x69, 0x01, 0x34, 0x0c, 0x61, 0x0c, 0x68, - 0x01, 0x34, 0x0c, 0x60, 0x44, 0x6b, 0x00, 0x2c, - 0x03, 0xd0, 0x04, 0x69, 0x24, 0x7c, 0xe4, 0x07, - 0x02, 0xd5, 0x4c, 0x68, 0x01, 0x34, 0x4c, 0x60, - 0x80, 0x6b, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x6b, - 0x01, 0x30, 0x08, 0x63, 0x00, 0x2a, 0x0c, 0xd0, - 0x98, 0x18, 0x01, 0x38, 0x08, 0xe0, 0x3c, 0x00, - 0x94, 0xc5, 0x00, 0x00, 0x01, 0x2a, 0x01, 0xd0, - 0x02, 0x2a, 0x02, 0xd1, 0x88, 0x68, 0x01, 0x30, - 0x88, 0x60, 0xe0, 0x79, 0x18, 0x18, 0x08, 0x62, - 0x10, 0xbd, 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, 0x0a, 0x20, - 0x08, 0x81, 0x70, 0x47, 0xc4, 0x7a, 0x01, 0x00, - 0xf0, 0xb5, 0x32, 0x4f, 0x04, 0x1c, 0x78, 0x78, - 0x85, 0xb0, 0xc0, 0x07, 0xc0, 0x0f, 0x03, 0x90, - 0x3c, 0x00, 0xd0, 0xc5, 0x00, 0x00, 0xb8, 0x78, - 0x02, 0x90, 0x01, 0x20, 0xa0, 0x40, 0x04, 0x90, - 0x39, 0x1c, 0x88, 0x70, 0x2c, 0x48, 0x00, 0x88, - 0x06, 0xf0, 0x0b, 0xfc, 0x01, 0x90, 0xfe, 0xf7, - 0xae, 0xfc, 0x04, 0x30, 0x29, 0x4e, 0xa5, 0x00, - 0x71, 0x59, 0x09, 0x79, 0x88, 0x42, 0x06, 0xd0, - 0xfe, 0xf7, 0xa5, 0xfc, 0x71, 0x59, 0x04, 0x30, - 0x08, 0x71, 0x01, 0x20, 0x78, 0x70, 0x00, 0x20, - 0x78, 0x70, 0x3c, 0x00, 0x0c, 0xc6, 0x00, 0x00, - 0x21, 0x48, 0x01, 0x21, 0x20, 0x4e, 0x30, 0x38, - 0x01, 0x55, 0x71, 0x59, 0x03, 0x20, 0x08, 0x70, - 0x06, 0xf0, 0xc6, 0xfb, 0x06, 0x1c, 0xfe, 0xf7, - 0x91, 0xfc, 0x36, 0x18, 0x0e, 0x36, 0x09, 0xe0, - 0x30, 0x1c, 0x06, 0xf0, 0xf5, 0xfa, 0x00, 0x28, - 0x04, 0xd0, 0x23, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x33, 0xfe, 0x03, 0xe0, 0xf6, 0xf7, 0x34, 0xfb, - 0x00, 0x28, 0xf1, 0xd0, 0x3c, 0x00, 0x48, 0xc6, - 0x00, 0x00, 0x12, 0x48, 0x13, 0x49, 0x3c, 0x38, - 0x00, 0x78, 0x08, 0x72, 0x20, 0x1c, 0xf4, 0xf7, - 0xa2, 0xfa, 0x0e, 0x4e, 0x71, 0x59, 0x08, 0x71, - 0x03, 0x98, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x21, - 0x79, 0x70, 0x09, 0x48, 0x00, 0x88, 0x01, 0x99, - 0x06, 0xf0, 0xbd, 0xfb, 0x02, 0x98, 0xb8, 0x70, - 0x09, 0x49, 0x49, 0x79, 0x04, 0x98, 0x88, 0x42, - 0x03, 0xd0, 0x24, 0x21, 0x86, 0x20, 0x3c, 0x00, - 0x84, 0xc6, 0x00, 0x00, 0xf4, 0xf7, 0x0e, 0xfe, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x50, 0x07, 0x00, - 0xd0, 0x79, 0x01, 0x00, 0x10, 0x7b, 0x01, 0x00, - 0x80, 0x80, 0x07, 0x00, 0x50, 0x80, 0x07, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x05, 0x28, - 0x01, 0xd3, 0xf4, 0xf7, 0x29, 0xfe, 0x05, 0x2d, - 0x01, 0xd3, 0xf4, 0xf7, 0x25, 0xfe, 0x0b, 0x4a, - 0xa8, 0x00, 0x11, 0x58, 0xa0, 0x00, 0x10, 0x58, - 0x3c, 0x00, 0xc0, 0xc6, 0x00, 0x00, 0x0e, 0xc9, - 0x0e, 0xc0, 0x06, 0x21, 0x06, 0x22, 0x06, 0x48, - 0x69, 0x43, 0x2a, 0x38, 0x09, 0x18, 0x62, 0x43, - 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7, 0x0f, 0xff, - 0x02, 0x48, 0x30, 0x38, 0x41, 0x5d, 0x01, 0x55, - 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0e, 0x48, 0x0d, 0x1c, 0x80, 0x78, - 0x01, 0x21, 0xa1, 0x40, 0x08, 0x40, 0x03, 0xd0, - 0x01, 0x21, 0x3c, 0x00, 0xfc, 0xc6, 0x00, 0x00, - 0x86, 0x20, 0xf4, 0xf7, 0xd1, 0xfd, 0x06, 0x21, - 0x06, 0x22, 0x09, 0x48, 0x69, 0x43, 0x09, 0x18, - 0x62, 0x43, 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7, - 0xf1, 0xfe, 0x20, 0x1c, 0xf4, 0xf7, 0x40, 0xfa, - 0x03, 0x4a, 0xa1, 0x00, 0x2a, 0x32, 0x51, 0x58, - 0x08, 0x71, 0xb0, 0xbd, 0x00, 0x50, 0x07, 0x00, - 0xe6, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x48, 0x60, 0x3c, 0x00, 0x38, 0xc7, - 0x00, 0x00, 0x07, 0xf0, 0x32, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, - 0xd8, 0xfd, 0x07, 0x49, 0x08, 0x7a, 0x07, 0x4a, - 0x10, 0x70, 0x01, 0x20, 0x08, 0x72, 0xfe, 0xf7, - 0xf4, 0xfb, 0x04, 0x4a, 0x04, 0x30, 0xa1, 0x00, - 0x3c, 0x32, 0x51, 0x58, 0x08, 0x71, 0x10, 0xbd, - 0x00, 0x00, 0x80, 0x80, 0x07, 0x00, 0x3c, 0x00, - 0x74, 0xc7, 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00, - 0x03, 0x49, 0x80, 0xb5, 0x01, 0x20, 0x48, 0x60, - 0x07, 0xf0, 0x0e, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0xb4, 0xfd, - 0x20, 0x1c, 0xf5, 0xf7, 0x8f, 0xfe, 0x00, 0x21, - 0x20, 0x1c, 0xfb, 0xf7, 0x31, 0xfd, 0x01, 0x21, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x09, 0x04, - 0x3c, 0x00, 0xb0, 0xc7, 0x00, 0x00, 0x09, 0x0c, - 0x20, 0x1c, 0x04, 0xf0, 0x22, 0xfa, 0x10, 0xbd, - 0x00, 0x00, 0x06, 0x49, 0x01, 0x20, 0x05, 0x4b, - 0x88, 0x60, 0x00, 0x20, 0x3c, 0x33, 0x00, 0x21, - 0x82, 0x00, 0x9a, 0x58, 0x11, 0x70, 0x01, 0x30, - 0x05, 0x28, 0xf9, 0xdb, 0x70, 0x47, 0xd4, 0x7a, - 0x01, 0x00, 0x0f, 0x49, 0x38, 0xb5, 0x00, 0x20, - 0x88, 0x60, 0x0e, 0x48, 0x01, 0x1c, 0x20, 0x31, - 0x8a, 0x79, 0x3c, 0x00, 0xec, 0xc7, 0x00, 0x00, - 0x00, 0xab, 0x1a, 0x70, 0xc9, 0x79, 0x0a, 0x4c, - 0x09, 0x4d, 0x59, 0x70, 0x0c, 0x34, 0x3c, 0x35, - 0x00, 0x21, 0x03, 0x22, 0x63, 0x5c, 0x00, 0x2b, - 0x02, 0xd0, 0x8b, 0x00, 0xeb, 0x58, 0x1a, 0x70, - 0x01, 0x31, 0x05, 0x29, 0xf6, 0xdb, 0x00, 0xab, - 0x19, 0x88, 0xc1, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0xd4, 0x7a, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0xff, 0xb5, 0x14, 0x4f, 0x3c, 0x00, 0x28, 0xc8, - 0x00, 0x00, 0x04, 0x1c, 0xbe, 0x79, 0x0d, 0x1c, - 0x81, 0xb0, 0x0f, 0x20, 0x00, 0xf0, 0xb9, 0xf8, - 0x2a, 0x1c, 0x10, 0x4d, 0x00, 0x90, 0x21, 0x1c, - 0x28, 0x1c, 0xf4, 0xf7, 0xde, 0xfc, 0x21, 0x1c, - 0xa8, 0x1d, 0x03, 0x9a, 0xf4, 0xf7, 0xd9, 0xfc, - 0x21, 0x1c, 0x28, 0x1c, 0x0c, 0x30, 0x04, 0x9a, - 0xf4, 0xf7, 0xd3, 0xfc, 0x21, 0x1c, 0x28, 0x1c, - 0x12, 0x30, 0x0a, 0x9a, 0xf4, 0xf7, 0x3c, 0x00, - 0x64, 0xc8, 0x00, 0x00, 0xcd, 0xfc, 0x07, 0xf0, - 0x9b, 0xf8, 0x00, 0x98, 0x00, 0xf0, 0x76, 0xf8, - 0xbe, 0x71, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xe6, 0x7a, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x20, 0xf6, 0xf7, 0x26, 0xf8, - 0x07, 0x49, 0x88, 0x78, 0x00, 0x09, 0x00, 0x01, - 0x88, 0x70, 0x00, 0x24, 0x20, 0x1c, 0xf5, 0xf7, - 0x11, 0xfe, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x3c, 0x00, 0xa0, 0xc8, 0x00, 0x00, 0x04, 0x2c, - 0xf7, 0xd3, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x50, - 0x07, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0xe3, 0xfb, - 0x03, 0x48, 0x81, 0x78, 0x0f, 0x22, 0x11, 0x43, - 0x81, 0x70, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x50, - 0x07, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0x17, 0xfd, - 0xa6, 0x00, 0x00, 0x2d, 0x11, 0x4f, 0x07, 0xd1, - 0xb8, 0x59, 0x3c, 0x00, 0xdc, 0xc8, 0x00, 0x00, - 0x81, 0x68, 0x00, 0x29, 0x0e, 0xd1, 0x40, 0x78, - 0x00, 0x28, 0x0b, 0xd0, 0x02, 0xe0, 0xff, 0x35, - 0x2d, 0x06, 0x2d, 0x0e, 0x29, 0x1c, 0x20, 0x1c, - 0xfb, 0xf7, 0x88, 0xfc, 0x01, 0x1c, 0x20, 0x1c, - 0x04, 0xf0, 0x7e, 0xf9, 0x06, 0x49, 0x01, 0x20, - 0x30, 0x39, 0x08, 0x55, 0x04, 0x48, 0x3c, 0x38, - 0x80, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xb9, 0x59, - 0x03, 0x20, 0x08, 0x70, 0x3c, 0x00, 0x18, 0xc9, - 0x00, 0x00, 0xf8, 0xbd, 0x00, 0x00, 0x10, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0, 0xcd, 0xf9, - 0x80, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x05, 0x28, - 0x01, 0xd3, 0xf4, 0xf7, 0xe6, 0xfc, 0x20, 0x1c, - 0xf5, 0xf7, 0xc1, 0xfd, 0x00, 0x20, 0x05, 0x4a, - 0xa1, 0x00, 0x51, 0x58, 0x88, 0x60, 0x04, 0x49, - 0x88, 0x78, 0x01, 0x22, 0xa2, 0x40, 0x10, 0x43, - 0x88, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xc9, 0x00, 0x00, 0x10, 0x7b, 0x01, 0x00, - 0x00, 0x50, 0x07, 0x00, 0x02, 0x4a, 0x91, 0x78, - 0x08, 0x43, 0x90, 0x70, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x50, 0x07, 0x00, 0xf8, 0xb5, 0x0c, 0x4f, - 0xbe, 0x79, 0x0f, 0x20, 0x00, 0xf0, 0x18, 0xf8, - 0x05, 0x1c, 0x00, 0x24, 0x20, 0x1c, 0xf4, 0xf7, - 0x0d, 0xf9, 0x08, 0x4a, 0xa1, 0x00, 0x51, 0x58, - 0x08, 0x71, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x3c, 0x00, 0x90, 0xc9, 0x00, 0x00, 0x04, 0x2c, - 0xf3, 0xd3, 0x28, 0x1c, 0xff, 0xf7, 0xe1, 0xff, - 0xbe, 0x71, 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5, - 0x08, 0x49, 0x8d, 0x78, 0x8a, 0x78, 0x05, 0x40, - 0x82, 0x43, 0x8a, 0x70, 0x06, 0xf0, 0xf9, 0xf9, - 0x04, 0x1c, 0x0a, 0x34, 0x20, 0x1c, 0x06, 0xf0, - 0x34, 0xf9, 0x00, 0x28, 0xfa, 0xd0, 0x28, 0x1c, - 0xb0, 0xbd, 0x3c, 0x00, 0xcc, 0xc9, 0x00, 0x00, - 0x00, 0x50, 0x07, 0x00, 0x01, 0x49, 0x0a, 0x20, - 0x08, 0x81, 0x70, 0x47, 0x38, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0x10, 0x48, 0x04, 0x26, 0x04, 0x1c, - 0xe0, 0x34, 0x05, 0x1c, 0x38, 0x3d, 0x00, 0x27, - 0x20, 0x1c, 0x1c, 0x30, 0xe4, 0x60, 0xa0, 0x61, - 0x27, 0x61, 0x0b, 0x48, 0xa6, 0x82, 0xe0, 0x61, - 0x27, 0x62, 0xa7, 0x62, 0x06, 0x20, 0xa0, 0x84, - 0x20, 0x1c, 0xfe, 0xf7, 0x3c, 0x00, 0x08, 0xca, - 0x00, 0x00, 0x87, 0xfc, 0x20, 0x1c, 0x0c, 0x30, - 0xf6, 0xf7, 0xb7, 0xf9, 0x05, 0x49, 0x38, 0x3c, - 0xac, 0x42, 0x08, 0x80, 0xe7, 0xd1, 0xf8, 0xbd, - 0x00, 0x00, 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61, - 0x01, 0x00, 0x48, 0x7b, 0x01, 0x00, 0xf7, 0xb5, - 0x05, 0x1c, 0x0c, 0x23, 0x0f, 0x1c, 0x12, 0x49, - 0x58, 0x43, 0x44, 0x18, 0x20, 0x88, 0x06, 0xf0, - 0xea, 0xf9, 0xa0, 0x78, 0x01, 0x28, 0x3c, 0x00, - 0x44, 0xca, 0x00, 0x00, 0x1a, 0xd1, 0x66, 0x68, - 0x02, 0x2f, 0x05, 0xd1, 0x5c, 0x20, 0x80, 0x5b, - 0x02, 0x99, 0x00, 0x09, 0x88, 0x42, 0x11, 0xd1, - 0x28, 0x1c, 0xfe, 0xf7, 0xfb, 0xff, 0x30, 0x1c, - 0xf9, 0xf7, 0xfa, 0xfd, 0x04, 0x20, 0xa0, 0x70, - 0x39, 0x1c, 0x28, 0x1c, 0xfb, 0xf7, 0xf4, 0xf8, - 0x03, 0x4a, 0xe8, 0x00, 0x3c, 0x32, 0x11, 0x58, - 0x01, 0x31, 0x11, 0x50, 0xfe, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xca, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x01, 0x20, 0x06, 0x4a, 0x00, 0x21, - 0x0c, 0x23, 0x4b, 0x43, 0x9b, 0x18, 0x9b, 0x78, - 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x20, 0x01, 0x31, - 0x04, 0x29, 0xf5, 0xdb, 0x70, 0x47, 0x60, 0x7b, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xff, 0xf7, - 0xea, 0xfc, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x21, - 0x0c, 0x20, 0xf4, 0xf7, 0xf6, 0xfb, 0x26, 0x1c, - 0x60, 0x36, 0x3c, 0x00, 0xbc, 0xca, 0x00, 0x00, - 0x00, 0x21, 0xf1, 0x71, 0xe1, 0x64, 0x60, 0x6b, - 0x25, 0x1c, 0x40, 0x35, 0x00, 0x28, 0x31, 0xd0, - 0xff, 0xf7, 0x04, 0xf9, 0x01, 0x22, 0x12, 0x03, - 0x00, 0x28, 0x20, 0x69, 0x01, 0x88, 0x01, 0xd0, - 0x91, 0x43, 0x00, 0xe0, 0x11, 0x43, 0x01, 0x80, - 0x20, 0x69, 0x01, 0x22, 0x00, 0x88, 0xd2, 0x02, - 0x28, 0x83, 0x20, 0x1c, 0x58, 0x30, 0x01, 0x88, - 0x91, 0x43, 0x01, 0x80, 0x3c, 0x00, 0xf8, 0xca, - 0x00, 0x00, 0xa3, 0x6b, 0x52, 0x08, 0x00, 0x2b, - 0x10, 0xd0, 0x91, 0x43, 0x01, 0x80, 0x28, 0x8b, - 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x15, 0xd0, - 0x2e, 0x20, 0x01, 0x5d, 0x20, 0x69, 0x04, 0x30, - 0xf8, 0xf7, 0x41, 0xfd, 0x61, 0x6a, 0xfe, 0xf7, - 0xa8, 0xf9, 0x04, 0xe0, 0x11, 0x43, 0x01, 0x80, - 0x20, 0x1c, 0xfb, 0xf7, 0xcc, 0xfb, 0x68, 0x83, - 0x04, 0xe0, 0x20, 0x69, 0x41, 0x80, 0x3c, 0x00, - 0x34, 0xcb, 0x00, 0x00, 0xa8, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0xe0, 0x68, 0xf6, 0xf7, 0x20, 0xf9, - 0x30, 0x80, 0x60, 0x6d, 0x00, 0x28, 0x04, 0xd0, - 0x00, 0x22, 0x03, 0x21, 0x70, 0x7a, 0xfe, 0xf7, - 0x0d, 0xff, 0x20, 0x1c, 0x00, 0xf0, 0xb6, 0xf9, - 0x70, 0x7a, 0x06, 0xf0, 0x45, 0xf8, 0x70, 0xbd, - 0xb0, 0xb5, 0x00, 0x24, 0x06, 0xf0, 0x22, 0xf9, - 0x09, 0x4a, 0x00, 0x21, 0x0c, 0x23, 0x4b, 0x43, - 0x3c, 0x00, 0x70, 0xcb, 0x00, 0x00, 0x9d, 0x18, - 0x6b, 0x68, 0x5b, 0x6c, 0xad, 0x78, 0xc3, 0x1a, - 0x01, 0x2d, 0x02, 0xd1, 0xa3, 0x42, 0x00, 0xdd, - 0x1c, 0x1c, 0x01, 0x31, 0x05, 0x29, 0xf0, 0xd3, - 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x06, 0xf0, - 0xa8, 0xfe, 0x0c, 0x20, 0x08, 0x49, 0x60, 0x43, - 0x45, 0x18, 0x28, 0x88, 0x06, 0xf0, 0x35, 0xf9, - 0x68, 0x68, 0x3c, 0x00, 0xac, 0xcb, 0x00, 0x00, - 0x00, 0x28, 0x06, 0xd0, 0x20, 0x30, 0x00, 0x7b, - 0x01, 0x28, 0x02, 0xd1, 0x20, 0x1c, 0xff, 0xf7, - 0xa3, 0xfa, 0xb0, 0xbd, 0x60, 0x7b, 0x01, 0x00, - 0xff, 0xb5, 0x85, 0xb0, 0x0f, 0xae, 0x60, 0xce, - 0x38, 0x20, 0x1e, 0x49, 0x70, 0x43, 0x17, 0x1c, - 0x44, 0x18, 0xff, 0xf7, 0x7f, 0xf8, 0x01, 0x22, - 0x12, 0x03, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x88, - 0x90, 0x43, 0x20, 0x80, 0x3c, 0x00, 0xe8, 0xcb, - 0x00, 0x00, 0x02, 0xe0, 0x21, 0x88, 0x11, 0x43, - 0x21, 0x80, 0x11, 0x98, 0x39, 0x1c, 0xe0, 0x62, - 0x05, 0x98, 0xf8, 0xf7, 0xd0, 0xfc, 0x01, 0x1c, - 0x2b, 0x1c, 0x38, 0x1c, 0x06, 0x9a, 0xfe, 0xf7, - 0x20, 0xf9, 0x60, 0x80, 0x06, 0x22, 0x20, 0x1d, - 0x0f, 0x49, 0xf3, 0xf7, 0x72, 0xfc, 0x23, 0x1c, - 0x08, 0x98, 0x30, 0x33, 0x18, 0x70, 0x0e, 0x98, - 0x0c, 0x49, 0x58, 0x70, 0x65, 0x63, 0x3c, 0x00, - 0x24, 0xcc, 0x00, 0x00, 0x00, 0x20, 0x02, 0x90, - 0x01, 0x22, 0x04, 0x92, 0x09, 0x48, 0x03, 0x91, - 0x5a, 0x78, 0x01, 0x88, 0x01, 0x92, 0x00, 0x91, - 0x19, 0x78, 0x24, 0x3b, 0x30, 0x1c, 0x62, 0x6b, - 0xfe, 0xf7, 0xa8, 0xfe, 0x09, 0xb0, 0xf0, 0xbd, - 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00, - 0xff, 0xb5, 0x87, 0xb0, 0x10, 0x98, 0x12, 0xaf, - 0x3c, 0x00, 0x60, 0xcc, 0x00, 0x00, 0x8c, 0x46, - 0xa2, 0xcf, 0x4c, 0x23, 0x30, 0x4c, 0x6b, 0x43, - 0x1c, 0x19, 0x16, 0x1c, 0x15, 0x9a, 0x27, 0x85, - 0x27, 0x1c, 0x30, 0x37, 0x06, 0x97, 0x05, 0x97, - 0x00, 0x23, 0x3b, 0x73, 0x05, 0x9f, 0x78, 0x73, - 0x11, 0x98, 0x27, 0x1c, 0x60, 0x64, 0x61, 0x60, - 0x22, 0x60, 0x40, 0x37, 0x3e, 0x70, 0x61, 0x46, - 0x61, 0x87, 0x07, 0x98, 0x31, 0x1c, 0xf8, 0xf7, - 0x80, 0xfc, 0x3c, 0x00, 0x9c, 0xcc, 0x00, 0x00, - 0x05, 0x99, 0xc8, 0x73, 0x0a, 0x98, 0x78, 0x70, - 0x30, 0x1c, 0xfe, 0xf7, 0x73, 0xf8, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x41, 0x00, 0x02, 0x20, 0x01, 0x40, 0x11, 0x9a, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x08, 0x43, 0x38, 0x72, 0x20, 0x1c, 0x2e, 0x30, - 0x07, 0x99, 0xfd, 0xf7, 0xcf, 0xff, 0x28, 0x1c, - 0x04, 0xf0, 0xae, 0xf8, 0x3c, 0x00, 0xd8, 0xcc, - 0x00, 0x00, 0xfe, 0xf7, 0xfe, 0xff, 0x4c, 0x22, - 0x12, 0x4b, 0x6a, 0x43, 0xd2, 0x18, 0x01, 0x21, - 0x09, 0x03, 0x2a, 0x32, 0x00, 0x28, 0x04, 0xd0, - 0x10, 0x1c, 0x12, 0x88, 0x8a, 0x43, 0x02, 0x80, - 0x02, 0xe0, 0x10, 0x88, 0x08, 0x43, 0x10, 0x80, - 0x0b, 0x49, 0x00, 0x20, 0x03, 0x91, 0x06, 0x99, - 0x02, 0x90, 0x00, 0x22, 0x04, 0x92, 0x08, 0x48, - 0x0a, 0x7b, 0x41, 0x88, 0x23, 0x1c, 0x3c, 0x00, - 0x14, 0xcd, 0x00, 0x00, 0x01, 0x92, 0x00, 0x91, - 0x79, 0x78, 0x08, 0x33, 0x28, 0x1c, 0x62, 0x68, - 0xfe, 0xf7, 0x38, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, - 0x01, 0x28, 0x27, 0xd0, 0x80, 0x28, 0x30, 0xd1, - 0xe0, 0x6c, 0x00, 0x28, 0x08, 0xd0, 0x69, 0x20, - 0x00, 0x5d, 0x18, 0x49, 0xc0, 0x00, 0x40, 0x18, - 0x3c, 0x00, 0x50, 0xcd, 0x00, 0x00, 0x04, 0x30, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x20, 0x1c, - 0xff, 0xf7, 0xe9, 0xfb, 0x13, 0x4d, 0x50, 0x3d, - 0xe8, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x2e, 0x20, - 0x00, 0x5d, 0xfe, 0xf7, 0x10, 0xf8, 0x02, 0xf0, - 0x42, 0xfe, 0x20, 0x1c, 0x61, 0x68, 0xf3, 0xf7, - 0x2f, 0xfb, 0x40, 0x34, 0x60, 0x78, 0x00, 0x28, - 0x02, 0xd1, 0x06, 0xf0, 0x12, 0xf8, 0xa8, 0x60, - 0xb0, 0xbd, 0x3c, 0x00, 0x8c, 0xcd, 0x00, 0x00, - 0x20, 0x06, 0x00, 0x0e, 0x81, 0x28, 0xfa, 0xd1, - 0x22, 0x0c, 0x20, 0x04, 0x00, 0x0e, 0x02, 0x21, - 0xfe, 0xf7, 0xe6, 0xfd, 0xb0, 0xbd, 0x0a, 0x21, - 0x0c, 0x20, 0xf4, 0xf7, 0x7d, 0xfa, 0xb0, 0xbd, - 0x9c, 0x7b, 0x01, 0x00, 0xf8, 0xb5, 0x18, 0x4e, - 0x18, 0x4f, 0x05, 0x1c, 0x34, 0x79, 0xb8, 0x79, - 0x00, 0x90, 0x20, 0x1c, 0xf5, 0xf7, 0x7c, 0xff, - 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0xc8, 0xcd, - 0x00, 0x00, 0x12, 0x48, 0x38, 0x38, 0x40, 0x68, - 0x85, 0x42, 0x01, 0xd1, 0x00, 0x2d, 0x03, 0xd1, - 0x10, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x63, 0xfa, - 0x0d, 0x49, 0x00, 0x20, 0x38, 0x39, 0x48, 0x60, - 0x04, 0x21, 0x20, 0x1c, 0xff, 0xf7, 0x59, 0xfc, - 0x04, 0x21, 0x20, 0x1c, 0xf5, 0xf7, 0xeb, 0xfe, - 0x0c, 0x21, 0x06, 0x4a, 0x61, 0x43, 0x30, 0x3a, - 0x89, 0x18, 0x0c, 0x71, 0x04, 0x20, 0x3c, 0x00, - 0x04, 0xce, 0x00, 0x00, 0x30, 0x71, 0x00, 0x98, - 0xb8, 0x71, 0x0f, 0x20, 0xff, 0xf7, 0xa6, 0xfd, - 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x7a, 0x01, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x0f, 0x20, 0xff, 0xf7, 0xc1, 0xfd, 0xf5, 0xf7, - 0x3b, 0xff, 0x01, 0x25, 0x00, 0x28, 0x00, 0xd0, - 0x00, 0x25, 0x16, 0x4e, 0xb0, 0x79, 0x16, 0x4f, - 0x00, 0x90, 0x38, 0x79, 0x04, 0x28, 0x01, 0xd1, - 0x3c, 0x00, 0x40, 0xce, 0x00, 0x00, 0x00, 0x2c, - 0x03, 0xd1, 0x11, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x2c, 0xfa, 0x10, 0x48, 0x29, 0x06, 0x38, 0x38, - 0x44, 0x60, 0x09, 0x0e, 0x0c, 0x1c, 0x04, 0x20, - 0xff, 0xf7, 0x21, 0xfc, 0x03, 0x21, 0x20, 0x1c, - 0xff, 0xf7, 0x41, 0xfc, 0x21, 0x1c, 0x04, 0x20, - 0xf5, 0xf7, 0xaf, 0xfe, 0x0c, 0x21, 0x07, 0x4a, - 0x69, 0x43, 0x04, 0x20, 0x30, 0x3a, 0x89, 0x18, - 0x08, 0x71, 0x3c, 0x00, 0x7c, 0xce, 0x00, 0x00, - 0x3c, 0x71, 0x00, 0x98, 0xb0, 0x71, 0x20, 0x1c, - 0xff, 0xf7, 0x50, 0xfd, 0x04, 0x20, 0xf8, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0xa4, 0x7a, 0x01, 0x00, - 0x0c, 0x23, 0x02, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x68, 0x70, 0x47, 0x74, 0x7a, 0x01, 0x00, - 0x60, 0x30, 0xc1, 0x79, 0x80, 0x79, 0x81, 0x42, - 0x01, 0xd9, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xce, - 0x00, 0x00, 0x01, 0x48, 0x80, 0x68, 0x70, 0x47, - 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00, 0x38, 0xb5, - 0x69, 0x21, 0x09, 0x5c, 0x18, 0x23, 0x10, 0x4a, - 0x59, 0x43, 0x89, 0x18, 0x8a, 0x68, 0x01, 0x32, - 0x8a, 0x60, 0x4b, 0x69, 0xd2, 0x1a, 0xcb, 0x68, - 0x93, 0x42, 0x00, 0xd2, 0xca, 0x60, 0x00, 0x22, - 0x0b, 0x4c, 0x02, 0x60, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0x3c, 0x00, - 0xf4, 0xce, 0x00, 0x00, 0xd2, 0x79, 0x5a, 0x70, - 0x0a, 0x68, 0x00, 0x2a, 0x01, 0xd1, 0x48, 0x60, - 0x00, 0xe0, 0x10, 0x60, 0x00, 0xab, 0x08, 0x60, - 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0xc4, 0x7b, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x18, 0x23, 0x0a, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x48, 0x68, - 0x00, 0x28, 0x09, 0xd0, 0x48, 0x69, 0x01, 0x30, - 0x3c, 0x00, 0x30, 0xcf, 0x00, 0x00, 0x48, 0x61, - 0x48, 0x68, 0x02, 0x68, 0x4a, 0x60, 0x00, 0x2a, - 0x00, 0xd1, 0x0a, 0x60, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0xc4, 0x7b, 0x01, 0x00, 0xf8, 0xb5, - 0x12, 0x4e, 0x10, 0x4d, 0x0f, 0x4c, 0x0a, 0x27, - 0x21, 0x1c, 0x00, 0x20, 0xe0, 0x60, 0x2a, 0x31, - 0x22, 0x1c, 0x18, 0x32, 0xa1, 0x60, 0x62, 0x61, - 0x27, 0x82, 0x0c, 0x4a, 0xe0, 0x61, 0xa2, 0x61, - 0x60, 0x62, 0x3c, 0x00, 0x6c, 0xcf, 0x00, 0x00, - 0x06, 0x20, 0x20, 0x84, 0x08, 0x1c, 0xfe, 0xf7, - 0xd7, 0xf9, 0x20, 0x1c, 0x08, 0x30, 0xf5, 0xf7, - 0x01, 0xff, 0x4c, 0x3c, 0xac, 0x42, 0x70, 0x80, - 0xe5, 0xd1, 0xff, 0x20, 0x30, 0x70, 0xf8, 0xbd, - 0x88, 0xe4, 0x01, 0x00, 0x0c, 0xe3, 0x01, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0x0b, 0x48, 0x0e, 0x1c, - 0x17, 0x1c, 0x44, 0x70, 0x3c, 0x00, 0xa8, 0xcf, - 0x00, 0x00, 0x05, 0xf0, 0x00, 0xff, 0x05, 0x1c, - 0x39, 0x1c, 0x30, 0x1c, 0xfd, 0xf7, 0xab, 0xff, - 0x0c, 0x21, 0x05, 0x4a, 0x28, 0x18, 0x0a, 0x30, - 0x61, 0x43, 0x08, 0x32, 0x50, 0x50, 0x03, 0x48, - 0x89, 0x18, 0x00, 0x68, 0x88, 0x60, 0xf8, 0xbd, - 0x00, 0x00, 0x6c, 0x7a, 0x01, 0x00, 0x78, 0x6e, - 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4e, 0x05, 0x1c, - 0x70, 0x78, 0xff, 0x28, 0x0f, 0xd0, 0x3c, 0x00, - 0xe4, 0xcf, 0x00, 0x00, 0x0c, 0x23, 0x08, 0x4c, - 0x58, 0x43, 0x08, 0x34, 0x20, 0x58, 0x05, 0xf0, - 0x1d, 0xfe, 0x00, 0x28, 0x06, 0xd1, 0x70, 0x78, - 0x0c, 0x23, 0x58, 0x43, 0x00, 0x19, 0x81, 0x68, - 0x29, 0x43, 0x81, 0x60, 0x70, 0xbd, 0x00, 0x00, - 0x6c, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x30, 0x21, - 0x01, 0x48, 0xf3, 0xf7, 0x43, 0xfa, 0x80, 0xbd, - 0xec, 0xe5, 0x01, 0x00, 0x10, 0xb5, 0x05, 0xf0, - 0x3c, 0x00, 0x20, 0xd0, 0x00, 0x00, 0xc5, 0xfe, - 0x0a, 0x49, 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c, - 0x05, 0xf0, 0xf7, 0xfd, 0x00, 0x28, 0x07, 0xd0, - 0xf5, 0xf7, 0x51, 0xfe, 0x00, 0x28, 0x03, 0xd0, - 0x13, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x31, 0xf9, - 0xf5, 0xf7, 0x49, 0xfe, 0x00, 0x28, 0xee, 0xd1, - 0x10, 0xbd, 0xb0, 0x36, 0x00, 0x00, 0xff, 0xb5, - 0x8b, 0xb0, 0x19, 0x9b, 0x0d, 0x1c, 0x04, 0x1c, - 0x1a, 0x20, 0x3c, 0x00, 0x5c, 0xd0, 0x00, 0x00, - 0x00, 0x2b, 0x16, 0x99, 0x00, 0xd1, 0x18, 0x20, - 0x01, 0x90, 0x14, 0x98, 0x00, 0x28, 0x27, 0xd0, - 0xff, 0x20, 0x19, 0x9b, 0x01, 0x30, 0x00, 0x2b, - 0x01, 0xd1, 0x18, 0x23, 0x00, 0xe0, 0x1a, 0x23, - 0x04, 0x33, 0x82, 0x42, 0x04, 0xd3, 0xd0, 0x1a, - 0x40, 0x08, 0x40, 0x00, 0x00, 0x04, 0x00, 0x0c, - 0x0d, 0x90, 0x6a, 0x48, 0x00, 0x88, 0xc2, 0x1a, - 0x12, 0x04, 0x12, 0x0c, 0x3c, 0x00, 0x98, 0xd0, - 0x00, 0x00, 0x04, 0x92, 0x00, 0x29, 0x08, 0xd0, - 0x89, 0x79, 0x66, 0x4a, 0x49, 0x00, 0x51, 0x5a, - 0x04, 0x9a, 0x51, 0x1a, 0x0a, 0x04, 0x12, 0x0c, - 0x04, 0x92, 0x04, 0x9a, 0x82, 0x42, 0x05, 0xd9, - 0x00, 0x20, 0x04, 0x90, 0x02, 0xe0, 0x60, 0x48, - 0x04, 0x90, 0x0d, 0x90, 0x01, 0x98, 0x01, 0x04, - 0x09, 0x0c, 0x0a, 0x91, 0x00, 0x20, 0xf4, 0xf7, - 0x84, 0xfa, 0x00, 0x90, 0x00, 0x68, 0x3c, 0x00, - 0xd4, 0xd0, 0x00, 0x00, 0x00, 0x26, 0x06, 0x90, - 0x20, 0x60, 0x00, 0x20, 0x05, 0x90, 0x0e, 0x98, - 0x00, 0x24, 0x00, 0x05, 0x00, 0x0c, 0x09, 0x90, - 0x1a, 0x98, 0x0d, 0x9f, 0x40, 0x07, 0x40, 0x0f, - 0x08, 0x90, 0x07, 0x94, 0x03, 0x95, 0x00, 0x2d, - 0x0d, 0xd0, 0x28, 0x89, 0xb8, 0x42, 0x04, 0xd8, - 0x36, 0x18, 0x3f, 0x1a, 0x07, 0xd0, 0xed, 0x68, - 0xf5, 0xe7, 0x39, 0x04, 0x09, 0x0c, 0x28, 0x1c, - 0x3c, 0x00, 0x10, 0xd1, 0x00, 0x00, 0xf4, 0xf7, - 0x38, 0xfb, 0xef, 0xe7, 0x00, 0x2e, 0x02, 0xd1, - 0x07, 0x99, 0x00, 0x29, 0x71, 0xd1, 0x27, 0x1c, - 0x6c, 0x20, 0xf4, 0xf7, 0x88, 0xfb, 0x07, 0x99, - 0x04, 0x1c, 0x00, 0x29, 0x20, 0xd1, 0x07, 0x94, - 0x00, 0x20, 0xa0, 0x61, 0x18, 0x98, 0x27, 0x1c, - 0x60, 0x60, 0x17, 0x98, 0x24, 0x37, 0xa0, 0x60, - 0x06, 0x98, 0x20, 0x61, 0x15, 0x98, 0x0f, 0xc8, - 0x0f, 0xc7, 0x3c, 0x00, 0x4c, 0xd1, 0x00, 0x00, - 0x14, 0x98, 0x5c, 0x21, 0x60, 0x63, 0x09, 0x98, - 0x08, 0x53, 0x19, 0x98, 0x69, 0x21, 0xe0, 0x63, - 0x1b, 0x98, 0x08, 0x55, 0x1c, 0x98, 0x60, 0x65, - 0x19, 0x98, 0x00, 0x28, 0x23, 0xd0, 0x08, 0x98, - 0x06, 0x99, 0x08, 0x83, 0x1f, 0xe0, 0x6c, 0x22, - 0x20, 0x1c, 0x07, 0x99, 0xf3, 0xf7, 0x1a, 0xfa, - 0x3c, 0x60, 0x01, 0x98, 0x62, 0x21, 0x30, 0x18, - 0xc8, 0x53, 0x15, 0x98, 0x3c, 0x00, 0x88, 0xd1, - 0x00, 0x00, 0x40, 0x21, 0x80, 0x7a, 0xc8, 0x55, - 0x00, 0x20, 0xb8, 0x63, 0x06, 0x98, 0x0a, 0x99, - 0xf4, 0xf7, 0x1f, 0xfa, 0xf8, 0x60, 0x02, 0x99, - 0xf4, 0xf7, 0x3b, 0xf9, 0x20, 0x1c, 0x40, 0x30, - 0x81, 0x8b, 0x05, 0x9a, 0x12, 0x07, 0x12, 0x0f, - 0x11, 0x43, 0x81, 0x83, 0x03, 0x98, 0x5e, 0x21, - 0x02, 0x90, 0x01, 0x98, 0x22, 0x4a, 0x30, 0x18, - 0x08, 0x53, 0x12, 0x68, 0x01, 0x21, 0x3c, 0x00, - 0xc4, 0xd1, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x2a, - 0x00, 0xd0, 0x1b, 0x98, 0x00, 0x06, 0x04, 0x9a, - 0x00, 0x0e, 0x96, 0x42, 0x03, 0xd9, 0x2c, 0x22, - 0x11, 0x55, 0x1b, 0x49, 0x04, 0xe0, 0x15, 0x99, - 0x2c, 0x22, 0x09, 0x7a, 0x11, 0x55, 0x19, 0x49, - 0x08, 0x5c, 0x66, 0x21, 0x08, 0x55, 0x1c, 0x98, - 0x00, 0x28, 0x01, 0xd0, 0x1f, 0x20, 0x08, 0x55, - 0x00, 0x2d, 0x03, 0xd0, 0xe8, 0x68, 0x03, 0x90, - 0x3c, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x20, - 0x00, 0xe0, 0x09, 0xe0, 0xe8, 0x60, 0x05, 0x98, - 0x00, 0x26, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c, - 0x0d, 0x9f, 0x05, 0x90, 0x03, 0x9d, 0x6d, 0xe7, - 0x00, 0x98, 0xe0, 0x60, 0x02, 0x99, 0xf4, 0xf7, - 0xfa, 0xf8, 0x00, 0x20, 0x20, 0x60, 0x01, 0x21, - 0xa1, 0x63, 0x60, 0x34, 0x60, 0x80, 0x07, 0x98, - 0x0f, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x06, 0x61, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0xd2, 0x00, 0x00, - 0x5c, 0x43, 0x01, 0x00, 0x38, 0x09, 0x00, 0x00, - 0x18, 0x67, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00, - 0x0a, 0x61, 0x01, 0x00, 0x01, 0x48, 0x00, 0x68, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x6a, 0x01, 0x00, - 0x02, 0x49, 0x09, 0x1d, 0x03, 0xc9, 0x40, 0x18, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x69, 0x70, 0x47, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x78, 0xd2, - 0x00, 0x00, 0x01, 0x48, 0x40, 0x69, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x48, - 0x80, 0x69, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x4e, 0x00, 0x20, - 0x35, 0x1c, 0x40, 0x35, 0xf0, 0x63, 0x0d, 0xe0, - 0xa0, 0x68, 0xf4, 0xf7, 0x7a, 0xf9, 0xb3, 0x6d, - 0x00, 0x2b, 0x04, 0xd0, 0x00, 0x22, 0x01, 0x20, - 0x61, 0x6b, 0xf3, 0xf7, 0x95, 0xf8, 0x3c, 0x00, - 0xb4, 0xd2, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7, - 0x9d, 0xfa, 0x28, 0x1c, 0xfa, 0xf7, 0x42, 0xfd, - 0x04, 0x1c, 0xec, 0xd1, 0x70, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4f, - 0x00, 0x26, 0xf8, 0x6b, 0x00, 0x28, 0x2c, 0xd0, - 0x38, 0x1c, 0x40, 0x30, 0x00, 0x90, 0x1d, 0xe0, - 0x16, 0x48, 0xb9, 0x6b, 0x02, 0xf0, 0x5c, 0xf8, - 0x00, 0x22, 0x20, 0x1c, 0x14, 0x49, 0x03, 0xf0, - 0x3c, 0x00, 0xf0, 0xd2, 0x00, 0x00, 0x7b, 0xff, - 0x05, 0x1c, 0x04, 0xd1, 0x38, 0x6a, 0x01, 0x30, - 0x38, 0x62, 0x01, 0x36, 0x0d, 0xe0, 0xa0, 0x68, - 0xf4, 0xf7, 0x49, 0xf9, 0xbb, 0x6d, 0x00, 0x2b, - 0x04, 0xd0, 0x00, 0x22, 0x28, 0x1c, 0x61, 0x6b, - 0xf3, 0xf7, 0x64, 0xf8, 0x20, 0x1c, 0xf4, 0xf7, - 0x6c, 0xfa, 0x00, 0x98, 0xfa, 0xf7, 0x11, 0xfd, - 0x04, 0x1c, 0xdc, 0xd1, 0x07, 0x48, 0xb9, 0x6b, - 0x02, 0xf0, 0x3c, 0x00, 0x2c, 0xd3, 0x00, 0x00, - 0x25, 0xf8, 0x00, 0x20, 0xf8, 0x63, 0x30, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x11, 0x30, 0x00, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0xc8, 0x63, 0x70, 0x47, 0xc4, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0x05, 0x4a, 0x00, 0x21, - 0x1c, 0x23, 0x43, 0x43, 0x9b, 0x18, 0x01, 0x30, - 0x04, 0x28, 0xd9, 0x66, 0x3c, 0x00, 0x68, 0xd3, - 0x00, 0x00, 0xf8, 0xdb, 0xfc, 0xf7, 0xfd, 0xfc, - 0x80, 0xbd, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49, - 0xc8, 0x64, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x01, 0x49, 0x88, 0x64, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x21, 0x1c, 0x02, 0x8e, - 0x80, 0x6a, 0x40, 0x31, 0xf3, 0xf7, 0x2f, 0xf8, - 0x00, 0x28, 0x16, 0xd1, 0x02, 0x21, 0x3c, 0x00, - 0xa4, 0xd3, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7, - 0x6f, 0xfa, 0xe2, 0x69, 0xc0, 0x00, 0x10, 0x18, - 0x82, 0x8b, 0xab, 0x88, 0x9a, 0x42, 0x04, 0xd1, - 0x82, 0x69, 0x2b, 0x68, 0x9a, 0x42, 0x08, 0xd2, - 0x01, 0xe0, 0x9a, 0x42, 0x05, 0xd2, 0x00, 0x21, - 0x18, 0x30, 0x0c, 0xcd, 0x0c, 0xc0, 0x00, 0xe0, - 0x01, 0x21, 0x08, 0x1c, 0xb0, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x00, 0x27, 0x44, 0x68, - 0x3c, 0x00, 0xe0, 0xd3, 0x00, 0x00, 0x0f, 0xe0, - 0x09, 0x49, 0x48, 0x6a, 0x01, 0x30, 0x48, 0x62, - 0xa0, 0x69, 0x00, 0x28, 0x02, 0xd0, 0xf4, 0xf7, - 0x00, 0xfa, 0xa7, 0x61, 0x26, 0x62, 0x25, 0x68, - 0x20, 0x1c, 0xff, 0xf7, 0x52, 0xfb, 0x2c, 0x1c, - 0x00, 0x2c, 0xed, 0xd1, 0xf8, 0xbd, 0xc4, 0x69, - 0x01, 0x00, 0x03, 0x30, 0x07, 0x4a, 0x81, 0x08, - 0x13, 0x68, 0x50, 0x68, 0x1b, 0x68, 0x89, 0x00, - 0x09, 0x18, 0x3c, 0x00, 0x1c, 0xd4, 0x00, 0x00, - 0x8b, 0x42, 0x01, 0xd3, 0x51, 0x60, 0x00, 0xe0, - 0x00, 0x20, 0x90, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x8c, 0x6e, 0x01, 0x00, 0x70, 0xb5, 0x12, 0x4e, - 0x80, 0x38, 0xc5, 0x00, 0x70, 0x59, 0x0c, 0x1c, - 0x00, 0x28, 0x04, 0xd1, 0x01, 0x21, 0x0d, 0x20, - 0xf3, 0xf7, 0x2e, 0xff, 0x0d, 0xe0, 0x20, 0x69, - 0x00, 0x28, 0x05, 0xd1, 0xa8, 0x19, 0x81, 0x88, - 0xe0, 0x68, 0x01, 0xf0, 0x3c, 0x00, 0x58, 0xd4, - 0x00, 0x00, 0x47, 0xfa, 0x20, 0x61, 0x71, 0x59, - 0x20, 0x1c, 0xf2, 0xf7, 0xbb, 0xff, 0x04, 0x1c, - 0x00, 0x2c, 0x07, 0xd0, 0xe0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0xf4, 0xf7, 0x92, 0xf8, 0x20, 0x1c, - 0xf4, 0xf7, 0xbd, 0xf9, 0x70, 0xbd, 0x54, 0x42, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x0e, 0x49, 0x06, 0x22, 0xf3, 0xf7, 0x35, 0xf8, - 0x00, 0x26, 0xe6, 0x61, 0x66, 0x62, 0x3c, 0x00, - 0x94, 0xd4, 0x00, 0x00, 0x07, 0x20, 0x30, 0x21, - 0x08, 0x55, 0xe6, 0x63, 0x28, 0x1c, 0xf8, 0xf7, - 0x6b, 0xf8, 0xa0, 0x76, 0x20, 0x1c, 0x14, 0x30, - 0x06, 0x22, 0x29, 0x1c, 0xf3, 0xf7, 0x24, 0xf8, - 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18, 0xf3, 0xf7, - 0x1f, 0xf8, 0x26, 0x61, 0x70, 0xbd, 0x00, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x80, 0xb5, 0xfd, 0xf7, - 0x85, 0xfe, 0x80, 0xbd, 0x01, 0x49, 0x48, 0x60, - 0x3c, 0x00, 0xd0, 0xd4, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x49, - 0x80, 0xb5, 0x49, 0x68, 0xf2, 0xf7, 0x7c, 0xff, - 0x80, 0xbd, 0xe4, 0x65, 0x01, 0x00, 0x80, 0xb5, - 0xf4, 0xf7, 0xe5, 0xf9, 0x07, 0x49, 0x07, 0x48, - 0x0e, 0xc9, 0x0e, 0xc0, 0x18, 0x38, 0x00, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x02, 0xf0, 0xb7, 0xfa, - 0x80, 0xbd, 0x02, 0xf0, 0x9e, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xd5, 0x00, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x90, 0x73, 0x01, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x89, 0x68, 0x00, 0x20, - 0x00, 0x29, 0x00, 0xd1, 0x03, 0x20, 0x00, 0x06, - 0x00, 0x0e, 0xfa, 0xf7, 0xe3, 0xfb, 0x80, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48, - 0x06, 0x22, 0x03, 0x49, 0xf2, 0xf7, 0xde, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x40, 0x80, 0x07, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x3c, 0x00, 0x48, 0xd5, - 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0c, 0x4d, - 0x0b, 0x1c, 0x21, 0x1c, 0x00, 0x20, 0x0c, 0x3d, - 0x00, 0x29, 0x09, 0x4c, 0x05, 0xd0, 0x28, 0x78, - 0x21, 0x1c, 0x10, 0x80, 0x02, 0x1c, 0x18, 0x1c, - 0x07, 0xe0, 0x11, 0x88, 0x0e, 0x29, 0x07, 0xd8, - 0x0a, 0x06, 0x12, 0x0e, 0x19, 0x1c, 0x20, 0x1c, - 0x2a, 0x70, 0xf2, 0xf7, 0xbe, 0xff, 0x01, 0x20, - 0xb0, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x3c, 0x00, - 0x84, 0xd5, 0x00, 0x00, 0x10, 0xb5, 0x00, 0x20, - 0x0a, 0x4a, 0x01, 0x21, 0x11, 0x60, 0x0a, 0x4c, - 0x0a, 0xe0, 0x02, 0x1c, 0x01, 0x6a, 0x50, 0x32, - 0x91, 0x42, 0x05, 0xd0, 0x61, 0x78, 0x3c, 0x23, - 0x59, 0x43, 0x09, 0x19, 0x04, 0x31, 0x01, 0x62, - 0x04, 0xf0, 0xba, 0xfb, 0x00, 0x28, 0xf0, 0xd1, - 0x10, 0xbd, 0x00, 0x00, 0xdc, 0x62, 0x01, 0x00, - 0x68, 0x61, 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0xc0, 0xd5, 0x00, 0x00, 0x00, 0x68, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c, 0x10, 0x20, - 0x04, 0xf0, 0xc7, 0xfe, 0x80, 0xbd, 0x28, 0x61, - 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f, 0x80, 0xb5, - 0x00, 0x20, 0xfb, 0xf7, 0x76, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x0b, 0xf0, 0xb9, 0xfa, - 0x80, 0xbd, 0xff, 0xb5, 0x83, 0xb0, 0x16, 0x1c, - 0x00, 0x21, 0x01, 0x91, 0x1f, 0x1c, 0x08, 0x21, - 0x02, 0xaa, 0x3c, 0x00, 0xfc, 0xd5, 0x00, 0x00, - 0xfa, 0xf7, 0x0e, 0xff, 0x04, 0x1c, 0x2a, 0xd1, - 0x02, 0x98, 0x41, 0x68, 0x49, 0x00, 0x01, 0xd4, - 0x09, 0x24, 0x24, 0xe0, 0xfa, 0xf7, 0x52, 0xff, - 0x38, 0x60, 0x02, 0x98, 0x41, 0x68, 0x49, 0x02, - 0xcd, 0x0f, 0x29, 0x1c, 0xfa, 0xf7, 0x44, 0xff, - 0x01, 0x1c, 0x30, 0x60, 0x38, 0x68, 0x00, 0x06, - 0x00, 0x0e, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0x28, - 0x01, 0xd1, 0x0a, 0x24, 0x3c, 0x00, 0x38, 0xd6, - 0x00, 0x00, 0x0f, 0xe0, 0x31, 0x68, 0x02, 0x98, - 0x2b, 0x1c, 0x01, 0xaa, 0xfa, 0xf7, 0xd7, 0xff, - 0x00, 0x28, 0x06, 0xd0, 0x01, 0x98, 0x00, 0x28, - 0x04, 0xd0, 0x04, 0x99, 0x09, 0x68, 0x81, 0x42, - 0x00, 0xd2, 0x03, 0x24, 0x01, 0x98, 0x04, 0x99, - 0x08, 0x60, 0x07, 0xb0, 0x20, 0x1c, 0xf0, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c, - 0x01, 0x24, 0x00, 0xf0, 0x84, 0xff, 0x3c, 0x00, - 0x74, 0xd6, 0x00, 0x00, 0x00, 0x28, 0x08, 0xd0, - 0x03, 0x2d, 0x01, 0xd0, 0x04, 0x2d, 0x04, 0xd1, - 0x03, 0x20, 0xc0, 0x03, 0x86, 0x42, 0x00, 0xd3, - 0x00, 0x24, 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00, - 0x7c, 0xb5, 0x15, 0x1c, 0x06, 0x1c, 0x0c, 0x1c, - 0x29, 0x1c, 0x6a, 0x46, 0x01, 0xab, 0xff, 0xf7, - 0xa5, 0xff, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x2c, - 0x01, 0xd1, 0x03, 0x20, 0x7c, 0xbd, 0x17, 0x48, - 0x3c, 0x00, 0xb0, 0xd6, 0x00, 0x00, 0x00, 0xab, - 0x06, 0x60, 0x18, 0x79, 0x07, 0x28, 0x21, 0xd2, - 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, - 0x00, 0x00, 0x1d, 0x04, 0x04, 0x06, 0x10, 0x17, - 0x13, 0x00, 0x04, 0x20, 0xed, 0xe7, 0x2a, 0x1c, - 0x21, 0x1c, 0x01, 0x20, 0x00, 0x9b, 0xf2, 0xf7, - 0x81, 0xfe, 0x00, 0x28, 0x12, 0xd1, 0x06, 0x20, - 0xe3, 0xe7, 0x2a, 0x68, 0x00, 0x99, 0x05, 0xe0, - 0x00, 0x98, 0x3c, 0x00, 0xec, 0xd6, 0x00, 0x00, - 0x42, 0x78, 0x81, 0x1c, 0x01, 0xe0, 0x2a, 0x68, - 0x69, 0x46, 0x20, 0x1c, 0xf2, 0xf7, 0xfe, 0xfe, - 0x03, 0xe0, 0x04, 0x21, 0x87, 0x20, 0xf3, 0xf7, - 0xcf, 0xfd, 0x00, 0x20, 0xd0, 0xe7, 0x00, 0x00, - 0xf8, 0x6b, 0x01, 0x00, 0xf7, 0xb5, 0x86, 0xb0, - 0x0e, 0x1c, 0x08, 0x21, 0x05, 0xaa, 0x06, 0x98, - 0xfa, 0xf7, 0x7e, 0xfe, 0x04, 0x1c, 0x45, 0xd1, - 0x05, 0x98, 0x41, 0x68, 0x3c, 0x00, 0x28, 0xd7, - 0x00, 0x00, 0x02, 0x90, 0x49, 0x02, 0xc9, 0x0f, - 0x00, 0x25, 0x04, 0x95, 0x03, 0x91, 0x08, 0x9f, - 0xfa, 0xf7, 0xd5, 0xfe, 0x01, 0x90, 0x02, 0xa9, - 0x03, 0xc9, 0xfa, 0xf7, 0xc6, 0xfe, 0x01, 0x99, - 0x05, 0x29, 0x14, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x0e, 0x03, - 0x06, 0x0c, 0x03, 0x00, 0x87, 0x42, 0x0e, 0xd8, - 0x07, 0xe0, 0x87, 0x42, 0x0b, 0xd8, 0x3c, 0x00, - 0x64, 0xd7, 0x00, 0x00, 0x01, 0x25, 0xc0, 0x1b, - 0x04, 0x90, 0x07, 0xe0, 0x87, 0x42, 0x05, 0xd1, - 0x01, 0x25, 0x03, 0xe0, 0x05, 0x21, 0x87, 0x20, - 0xf3, 0xf7, 0x94, 0xfd, 0x00, 0x2d, 0x01, 0xd1, - 0x03, 0x24, 0x15, 0xe0, 0x05, 0x98, 0x41, 0x68, - 0x00, 0x29, 0x69, 0xda, 0x3a, 0x4a, 0x06, 0x99, - 0x11, 0x60, 0xfa, 0xf7, 0x91, 0xfe, 0x07, 0x1c, - 0x05, 0x98, 0x03, 0x99, 0xfa, 0xf7, 0x86, 0xfe, - 0x3c, 0x00, 0xa0, 0xd7, 0x00, 0x00, 0x05, 0x1c, - 0x01, 0x1c, 0x38, 0x1c, 0xff, 0xf7, 0x5f, 0xff, - 0x00, 0x28, 0x01, 0xd1, 0x0a, 0x24, 0x5e, 0xe0, - 0x07, 0x2f, 0x57, 0xd2, 0x02, 0xa3, 0xdb, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x53, 0x04, - 0x04, 0x06, 0x2e, 0x50, 0x48, 0x00, 0x04, 0x24, - 0x51, 0xe0, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1, - 0x00, 0x27, 0x14, 0xe0, 0x08, 0x99, 0x08, 0x18, - 0x00, 0x04, 0x3c, 0x00, 0xdc, 0xd7, 0x00, 0x00, - 0x00, 0x0c, 0xf4, 0xf7, 0x2b, 0xf8, 0x07, 0x1c, - 0x31, 0x1c, 0x08, 0x9a, 0xf2, 0xf7, 0x86, 0xfe, - 0x08, 0x98, 0x04, 0x99, 0x38, 0x18, 0xf2, 0xf7, - 0x2f, 0xfe, 0x08, 0x98, 0x04, 0x99, 0x3e, 0x1c, - 0x40, 0x18, 0x08, 0x90, 0x31, 0x1c, 0x00, 0x20, - 0x08, 0xaa, 0xf2, 0xf7, 0xec, 0xfd, 0x00, 0x28, - 0x00, 0xd1, 0x05, 0x24, 0x00, 0x2f, 0x2d, 0xd0, - 0x38, 0x1c, 0xf3, 0xf7, 0x3c, 0x00, 0x18, 0xd8, - 0x00, 0x00, 0xed, 0xff, 0x29, 0xe0, 0x03, 0x99, - 0x00, 0x29, 0x04, 0xd0, 0x05, 0x98, 0x40, 0x68, - 0x87, 0x02, 0xbf, 0x0a, 0x00, 0xe0, 0x00, 0x27, - 0x31, 0x1c, 0x28, 0x1c, 0x08, 0x9a, 0xf2, 0xf7, - 0x60, 0xfe, 0x04, 0x99, 0x00, 0x29, 0x03, 0xd0, - 0x08, 0x98, 0x28, 0x18, 0xf2, 0xf7, 0x07, 0xfe, - 0x00, 0x2f, 0x12, 0xd0, 0xf2, 0xf7, 0xcc, 0xfd, - 0x0f, 0xe0, 0x31, 0x1c, 0xa8, 0x1c, 0x3c, 0x00, - 0x54, 0xd8, 0x00, 0x00, 0x08, 0x9a, 0xf2, 0xf7, - 0x4f, 0xfe, 0x08, 0x98, 0x68, 0x70, 0x07, 0xe0, - 0xff, 0xe7, 0x07, 0x24, 0x04, 0xe0, 0x08, 0x24, - 0x03, 0x21, 0x87, 0x20, 0xf3, 0xf7, 0x1a, 0xfd, - 0x20, 0x1c, 0x09, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xf8, 0x6b, 0x01, 0x00, 0x9e, 0xb5, 0x1c, 0x1c, - 0x00, 0xab, 0x19, 0x72, 0x00, 0x92, 0x00, 0x22, - 0x01, 0x94, 0x69, 0x46, 0xfb, 0xf7, 0x08, 0xfa, - 0x3c, 0x00, 0x90, 0xd8, 0x00, 0x00, 0x9e, 0xbd, - 0x00, 0x00, 0x8f, 0xb5, 0x02, 0x92, 0x00, 0x22, - 0x00, 0x90, 0x01, 0x90, 0x03, 0x91, 0x69, 0x46, - 0x04, 0x20, 0xfb, 0xf7, 0xfc, 0xf9, 0x8f, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28, - 0x0a, 0xd0, 0x03, 0x28, 0x19, 0xd0, 0x04, 0x28, - 0x2c, 0xd1, 0x60, 0x68, 0x01, 0xf0, 0x35, 0xfc, - 0x01, 0x1c, 0x83, 0x20, 0x0c, 0xcc, 0x22, 0xe0, - 0x1c, 0x20, 0x3c, 0x00, 0xcc, 0xd8, 0x00, 0x00, - 0x14, 0x49, 0x60, 0x43, 0x40, 0x18, 0x14, 0x49, - 0x45, 0x18, 0x28, 0x1c, 0xf8, 0xf7, 0x46, 0xfc, - 0xa9, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x22, 0x1c, - 0x08, 0x20, 0x05, 0xf0, 0x71, 0xfe, 0xb0, 0xbd, - 0x20, 0x8c, 0xc8, 0x28, 0x01, 0xd3, 0x04, 0x20, - 0x04, 0xe0, 0x65, 0x28, 0x01, 0xd3, 0x02, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0x20, 0x84, 0x20, 0x1c, - 0x03, 0xf0, 0xdc, 0xfa, 0x3c, 0x00, 0x08, 0xd9, - 0x00, 0x00, 0x22, 0x68, 0xe3, 0x68, 0x01, 0x1c, - 0x82, 0x20, 0xff, 0xf7, 0xb4, 0xff, 0xb0, 0xbd, - 0xa0, 0x21, 0x08, 0x20, 0xf3, 0xf7, 0xc3, 0xfc, - 0xb0, 0xbd, 0xdc, 0x71, 0x01, 0x00, 0x64, 0xee, - 0xff, 0xff, 0x03, 0x48, 0x04, 0x4a, 0x81, 0x68, - 0x51, 0x61, 0xc0, 0x68, 0x90, 0x61, 0x70, 0x47, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71, - 0x01, 0x00, 0x03, 0x49, 0x04, 0x4a, 0x3c, 0x00, - 0x44, 0xd9, 0x00, 0x00, 0x08, 0x6b, 0x90, 0x60, - 0x88, 0x68, 0xd0, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x90, 0x5c, 0x01, 0x00, 0xc0, 0x71, 0x01, 0x00, - 0x00, 0xb5, 0xff, 0xf7, 0xf1, 0xff, 0xff, 0xf7, - 0xe3, 0xff, 0x00, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c, - 0x00, 0x28, 0x14, 0xd0, 0x0b, 0x49, 0x0c, 0x4c, - 0x88, 0x68, 0x62, 0x69, 0xc9, 0x68, 0x80, 0x1a, - 0xa2, 0x69, 0x89, 0x1a, 0x40, 0x18, 0x04, 0xd0, - 0x3c, 0x00, 0x80, 0xd9, 0x00, 0x00, 0x64, 0x23, - 0x59, 0x43, 0xf2, 0xf7, 0xc4, 0xfe, 0x20, 0x61, - 0xff, 0xf7, 0xcd, 0xff, 0x20, 0x69, 0x28, 0x60, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28, - 0x17, 0xd0, 0x0c, 0x49, 0x0d, 0x4c, 0x08, 0x6b, - 0xa2, 0x68, 0x89, 0x68, 0x80, 0x1a, 0xe2, 0x68, - 0x89, 0x1a, 0x3c, 0x00, 0xbc, 0xd9, 0x00, 0x00, - 0x40, 0x18, 0x07, 0xd0, 0x22, 0x88, 0x90, 0x42, - 0x04, 0xd9, 0x64, 0x23, 0x59, 0x43, 0xf2, 0xf7, - 0xa1, 0xfe, 0x60, 0x60, 0xff, 0xf7, 0xb6, 0xff, - 0x60, 0x68, 0x28, 0x60, 0x01, 0x20, 0xb0, 0xbd, - 0x00, 0x20, 0xb0, 0xbd, 0x90, 0x5c, 0x01, 0x00, - 0xc0, 0x71, 0x01, 0x00, 0x7c, 0xb5, 0x10, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0, 0x24, 0xf8, - 0x7c, 0xbd, 0x0f, 0x48, 0x3c, 0x00, 0xf8, 0xd9, - 0x00, 0x00, 0xc0, 0x69, 0x84, 0x68, 0xe0, 0x68, - 0x25, 0x6a, 0xa6, 0x69, 0xf3, 0xf7, 0xe3, 0xfd, - 0xe1, 0x69, 0xf3, 0xf7, 0x06, 0xfd, 0x20, 0x1c, - 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89, - 0x89, 0x18, 0xc1, 0x83, 0x07, 0x49, 0x01, 0x94, - 0x00, 0x91, 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88, - 0x01, 0x68, 0xe0, 0x68, 0xc0, 0x68, 0xf8, 0xf7, - 0x1e, 0xfc, 0xe0, 0xe7, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xda, 0x00, 0x00, 0x84, 0x6a, 0x01, 0x00, - 0x91, 0x5e, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0x69, - 0x06, 0x6a, 0x04, 0x1c, 0xc0, 0x68, 0x85, 0xb0, - 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xf3, 0xf7, - 0x57, 0xfc, 0x0a, 0x49, 0x02, 0x95, 0x04, 0x94, - 0x03, 0x91, 0x30, 0x69, 0x82, 0x88, 0x01, 0x68, - 0x26, 0x20, 0x01, 0x92, 0x00, 0x91, 0x43, 0x5d, - 0xe0, 0x68, 0xe1, 0x69, 0x2a, 0x1c, 0x0e, 0x32, - 0x3c, 0x00, 0x70, 0xda, 0x00, 0x00, 0xc0, 0x68, - 0xf8, 0xf7, 0x37, 0xfd, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xe9, 0xd9, 0x00, 0x00, 0x10, 0xb5, - 0x14, 0x1c, 0x05, 0x48, 0xfc, 0xf7, 0x7b, 0xfb, - 0xa0, 0x68, 0xf3, 0xf7, 0x9e, 0xfd, 0xe1, 0x68, - 0xc1, 0x60, 0x20, 0x1c, 0xf5, 0xf7, 0xbb, 0xfa, - 0x10, 0xbd, 0xa0, 0x6a, 0x01, 0x00, 0x7c, 0xb5, - 0x04, 0x1c, 0x60, 0x30, 0x02, 0x7b, 0xa1, 0x69, - 0x00, 0x91, 0x3c, 0x00, 0xac, 0xda, 0x00, 0x00, - 0x01, 0x92, 0x22, 0x1c, 0x21, 0x1c, 0x38, 0x31, - 0xa0, 0x68, 0x48, 0x32, 0x0d, 0x1c, 0x63, 0x69, - 0x03, 0xf0, 0x7a, 0xfb, 0x08, 0x21, 0x00, 0x20, - 0xf3, 0xf7, 0x88, 0xfd, 0xe0, 0x60, 0x26, 0x69, - 0xb1, 0x6b, 0x00, 0x29, 0x01, 0xd0, 0x10, 0x23, - 0x00, 0xe0, 0x18, 0x23, 0x05, 0x49, 0x01, 0x94, - 0x00, 0x91, 0x31, 0x68, 0xca, 0x18, 0x08, 0x23, - 0x01, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0xe8, 0xda, - 0x00, 0x00, 0xf8, 0xf7, 0x20, 0xfd, 0x7c, 0xbd, - 0x00, 0x00, 0x81, 0xda, 0x00, 0x00, 0xf0, 0xb5, - 0x46, 0x68, 0x17, 0x1c, 0x04, 0x1c, 0x01, 0x21, - 0x30, 0x1c, 0x9b, 0xb0, 0xfa, 0xf7, 0x0d, 0xfc, - 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0, 0x13, 0x49, - 0x0a, 0x7a, 0x01, 0x2a, 0x01, 0xd1, 0x01, 0x25, - 0x1c, 0xe0, 0x88, 0x62, 0x4e, 0x61, 0x20, 0x89, - 0xc8, 0x61, 0x60, 0x89, 0x00, 0x28, 0x3c, 0x00, - 0x24, 0xdb, 0x00, 0x00, 0x03, 0xd0, 0x00, 0x20, - 0x08, 0x84, 0x48, 0x84, 0x04, 0xe0, 0xe0, 0x68, - 0x08, 0x84, 0x20, 0x8a, 0x48, 0x84, 0x60, 0x8a, - 0x88, 0x84, 0x08, 0x6b, 0x00, 0x28, 0x03, 0xd1, - 0x01, 0xa8, 0x03, 0xf0, 0x77, 0xfc, 0x04, 0xe0, - 0x01, 0x20, 0x08, 0x61, 0x00, 0x20, 0x02, 0xf0, - 0x39, 0xfb, 0x3d, 0x71, 0x1b, 0xb0, 0x01, 0x20, - 0xf0, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00, - 0x3c, 0x00, 0x60, 0xdb, 0x00, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0xf7, 0xf7, 0xe8, 0xfb, 0x00, 0x28, - 0x11, 0xd1, 0x4b, 0x20, 0x00, 0x5d, 0x01, 0x28, - 0x0d, 0xd1, 0x20, 0x1c, 0x04, 0xf0, 0x85, 0xfa, - 0x00, 0x21, 0x20, 0x1c, 0x04, 0xf0, 0xf3, 0xf8, - 0xa0, 0x69, 0x00, 0x21, 0xc2, 0x07, 0xd2, 0x0f, - 0x04, 0x20, 0xf4, 0xf7, 0xd8, 0xf9, 0x10, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x04, 0xf0, - 0x36, 0xf9, 0x3c, 0x00, 0x9c, 0xdb, 0x00, 0x00, - 0x00, 0x28, 0x03, 0xd0, 0x40, 0x30, 0x80, 0x7a, - 0x00, 0x28, 0x25, 0xd1, 0x0c, 0x20, 0x29, 0x21, - 0x08, 0x55, 0x21, 0x1c, 0x06, 0x22, 0xa0, 0x18, - 0xf2, 0xf7, 0xa0, 0xfc, 0x20, 0x1c, 0x06, 0x22, - 0x0e, 0x49, 0xf2, 0xf7, 0x9b, 0xfc, 0x01, 0x20, - 0xe0, 0x61, 0x60, 0x62, 0x07, 0x20, 0x30, 0x21, - 0x08, 0x55, 0x00, 0x25, 0xe5, 0x63, 0x06, 0x20, - 0x00, 0xab, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0xdb, - 0x00, 0x00, 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0xf3, 0xf7, 0xdb, 0xfc, 0x02, 0x21, 0x68, 0x46, - 0xfd, 0xf7, 0x73, 0xfb, 0xe0, 0x60, 0x20, 0x1c, - 0xff, 0xf7, 0x69, 0xfc, 0xe5, 0x60, 0x20, 0x1c, - 0x38, 0xbd, 0x12, 0x61, 0x01, 0x00, 0xfe, 0xb5, - 0x05, 0x1c, 0x0e, 0x1c, 0x15, 0x20, 0x00, 0xab, - 0x98, 0x80, 0x14, 0x21, 0x17, 0x1c, 0x00, 0x20, - 0xf3, 0xf7, 0xe3, 0xfc, 0x02, 0x90, 0x3c, 0x00, - 0x14, 0xdc, 0x00, 0x00, 0x04, 0x68, 0x06, 0x22, - 0x31, 0x1c, 0x60, 0x1d, 0x25, 0x71, 0xf2, 0xf7, - 0x6b, 0xfc, 0x06, 0x22, 0x39, 0x1c, 0x20, 0x1c, - 0x0b, 0x30, 0xf2, 0xf7, 0x65, 0xfc, 0x01, 0xa8, - 0xff, 0xf7, 0x52, 0xfc, 0xfe, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0xfb, 0xf7, 0x5c, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, - 0x08, 0x35, 0x0f, 0x4e, 0x29, 0x1c, 0x04, 0x1c, - 0x3c, 0x00, 0x50, 0xdc, 0x00, 0x00, 0x06, 0x22, - 0x30, 0x1c, 0xf2, 0xf7, 0x50, 0xfc, 0xa0, 0x88, - 0xb0, 0x82, 0x28, 0x1c, 0x05, 0xf0, 0xa1, 0xff, - 0x00, 0x28, 0x0b, 0xd0, 0xe0, 0x88, 0x30, 0x61, - 0x28, 0x1c, 0x04, 0xf0, 0xcc, 0xf8, 0xa1, 0x88, - 0x40, 0x30, 0x41, 0x80, 0x00, 0x20, 0xf4, 0xf7, - 0xb8, 0xf9, 0x02, 0xe0, 0x04, 0x20, 0xf4, 0xf7, - 0xa0, 0xf9, 0x00, 0x20, 0x70, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xdc, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xfb, 0xf7, 0xf8, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x04, 0x1c, - 0x04, 0x30, 0x05, 0x1c, 0xfd, 0xf7, 0x32, 0xf8, - 0x00, 0x28, 0x09, 0xd0, 0x00, 0x20, 0xf7, 0xf7, - 0x37, 0xfc, 0x00, 0x28, 0x04, 0xd0, 0x06, 0x22, - 0x01, 0x1c, 0x28, 0x1c, 0xf2, 0xf7, 0x1e, 0xfc, - 0x0a, 0x4e, 0x06, 0x22, 0x29, 0x1c, 0x30, 0x1c, - 0xf2, 0xf7, 0x18, 0xfc, 0x3c, 0x00, 0xc8, 0xdc, - 0x00, 0x00, 0x60, 0x89, 0xf0, 0x82, 0x28, 0x1c, - 0x05, 0xf0, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0, - 0x02, 0x20, 0xf4, 0xf7, 0x88, 0xf9, 0x02, 0xe0, - 0x05, 0x20, 0xf9, 0xf7, 0xf4, 0xfa, 0x00, 0x20, - 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x00, 0x79, 0x04, 0x28, 0x1c, 0xd2, - 0x60, 0x79, 0x01, 0x28, 0x01, 0xd0, 0x03, 0x28, - 0x04, 0xd1, 0x00, 0x22, 0x01, 0x21, 0x3c, 0x00, - 0x04, 0xdd, 0x00, 0x00, 0xa0, 0x1d, 0xf9, 0xf7, - 0x69, 0xfc, 0x60, 0x79, 0x00, 0x28, 0x04, 0xd1, - 0x22, 0x79, 0x00, 0x21, 0xf9, 0xf7, 0x62, 0xfc, - 0x0a, 0xe0, 0x03, 0x28, 0x08, 0xd1, 0x00, 0x24, - 0x22, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7, - 0x59, 0xfc, 0x01, 0x34, 0x04, 0x2c, 0xf7, 0xdb, - 0x01, 0x20, 0x10, 0xbd, 0xf0, 0xb5, 0x97, 0xb0, - 0x17, 0x1c, 0x05, 0x1c, 0x04, 0x30, 0x04, 0x1c, - 0x3c, 0x00, 0x40, 0xdd, 0x00, 0x00, 0x15, 0xaa, - 0x16, 0xa9, 0x05, 0xf0, 0xe2, 0xfe, 0x00, 0x28, - 0x2e, 0xd0, 0x15, 0x98, 0x4b, 0x21, 0x09, 0x5c, - 0x00, 0x29, 0x23, 0xd0, 0x01, 0x29, 0x02, 0xd0, - 0x02, 0x29, 0x1f, 0xd1, 0x01, 0xe0, 0x04, 0xf0, - 0x90, 0xf9, 0xad, 0x7a, 0x13, 0x48, 0x16, 0x9e, - 0x05, 0x80, 0x06, 0x22, 0x21, 0x1c, 0x08, 0x30, - 0xf2, 0xf7, 0xc1, 0xfb, 0x22, 0x1c, 0x31, 0x1c, - 0x02, 0xa8, 0x3c, 0x00, 0x7c, 0xdd, 0x00, 0x00, - 0x00, 0xf0, 0x74, 0xfb, 0x0a, 0x20, 0x0a, 0xa9, - 0x48, 0x72, 0x00, 0xab, 0x9d, 0x80, 0x02, 0x21, - 0x01, 0xa8, 0xfd, 0xf7, 0x9f, 0xfa, 0x05, 0x90, - 0x02, 0xa8, 0xff, 0xf7, 0x95, 0xfb, 0xf3, 0xf7, - 0xf7, 0xf9, 0x00, 0x21, 0x15, 0x98, 0x03, 0xf0, - 0xe1, 0xff, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0x38, 0x71, 0x17, 0xb0, 0x01, 0x20, 0xf0, 0xbd, - 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0xb8, 0xdd, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xfb, 0xf7, - 0x62, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x80, 0x7d, 0x15, 0x1c, 0x0a, 0x1c, - 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0x21, 0x1c, - 0xf9, 0xf7, 0xfb, 0xfc, 0x00, 0x28, 0x03, 0xd1, - 0x04, 0x20, 0x28, 0x71, 0x01, 0x20, 0xb0, 0xbd, - 0x20, 0x6a, 0xf7, 0xf7, 0x76, 0xfe, 0x60, 0x6a, - 0xf7, 0xf7, 0x7b, 0xfe, 0x20, 0x6a, 0x3c, 0x00, - 0xf4, 0xdd, 0x00, 0x00, 0xfe, 0xf7, 0x88, 0xfa, - 0x00, 0x20, 0xb0, 0xbd, 0x10, 0xb5, 0x14, 0x1c, - 0xc2, 0x79, 0x81, 0x79, 0x80, 0x88, 0xf7, 0xf7, - 0xa1, 0xfa, 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd, - 0x80, 0xb5, 0x01, 0x23, 0xfa, 0xf7, 0x70, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0xf0, 0xb5, 0x04, 0x1c, - 0x08, 0x1c, 0x00, 0x21, 0x0f, 0x28, 0x91, 0xb0, - 0x00, 0xd3, 0x02, 0x21, 0x00, 0x29, 0x41, 0xd1, - 0x3c, 0x00, 0x30, 0xde, 0x00, 0x00, 0xc0, 0x00, - 0x24, 0x4f, 0x10, 0x90, 0xc6, 0x19, 0xb2, 0x88, - 0x21, 0x68, 0x02, 0xa8, 0xf2, 0xf7, 0x5b, 0xfb, - 0x21, 0x89, 0xb0, 0x88, 0x09, 0x1a, 0x00, 0x29, - 0x07, 0xdd, 0x09, 0x04, 0x22, 0x68, 0x09, 0x0c, - 0x10, 0x18, 0xf3, 0xf7, 0xc0, 0xfb, 0x05, 0x1c, - 0x00, 0xe0, 0x00, 0x25, 0xb0, 0x79, 0x80, 0x21, - 0x88, 0x43, 0x17, 0x49, 0x78, 0x31, 0x09, 0x5c, - 0x00, 0x20, 0x3c, 0x00, 0x6c, 0xde, 0x00, 0x00, - 0xf3, 0xf7, 0xb4, 0xfb, 0x07, 0x1c, 0x00, 0x68, - 0x13, 0x49, 0x01, 0x90, 0x10, 0x98, 0x0b, 0x58, - 0x01, 0x9a, 0x29, 0x1c, 0x02, 0xa8, 0xf2, 0xf7, - 0xac, 0xfa, 0x00, 0x90, 0x28, 0x1c, 0xf3, 0xf7, - 0x73, 0xfb, 0x20, 0x1c, 0xf3, 0xf7, 0x82, 0xfb, - 0x00, 0x98, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x98, - 0x01, 0x99, 0x08, 0x60, 0xb0, 0x79, 0x39, 0x1c, - 0xfa, 0xf7, 0x20, 0xff, 0x3c, 0x00, 0xa8, 0xde, - 0x00, 0x00, 0x11, 0xb0, 0xf0, 0xbd, 0x38, 0x1c, - 0xf3, 0xf7, 0x61, 0xfb, 0xf9, 0xe7, 0x2d, 0x20, - 0xf3, 0xf7, 0xf5, 0xf9, 0x20, 0x1c, 0xf3, 0xf7, - 0x6c, 0xfb, 0xf2, 0xe7, 0x00, 0x00, 0x24, 0x44, - 0x01, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x20, 0x35, - 0x06, 0x1c, 0xa8, 0x79, 0x04, 0x28, 0x48, 0xd2, - 0xe9, 0x79, 0x01, 0x29, 0x13, 0xd1, 0x30, 0x1c, - 0x28, 0x30, 0x03, 0xf0, 0x92, 0xff, 0x3c, 0x00, - 0xe4, 0xde, 0x00, 0x00, 0x00, 0x28, 0x3f, 0xd0, - 0x01, 0x1c, 0x8c, 0x31, 0x01, 0x65, 0xa9, 0x79, - 0x4c, 0x22, 0x04, 0x1c, 0x11, 0x54, 0x81, 0x18, - 0x41, 0x62, 0x50, 0x34, 0x04, 0x62, 0xe1, 0x1e, - 0x81, 0x62, 0x0b, 0xe0, 0x00, 0x29, 0x2f, 0xd1, - 0x3c, 0x22, 0x18, 0x49, 0x42, 0x43, 0x54, 0x18, - 0x17, 0x4a, 0x04, 0x34, 0x12, 0x68, 0x00, 0x2a, - 0x00, 0xd1, 0x48, 0x70, 0x00, 0x2c, 0x23, 0xd0, - 0x3c, 0x00, 0x20, 0xdf, 0x00, 0x00, 0x35, 0x1c, - 0x30, 0x35, 0xe8, 0x79, 0x01, 0x28, 0x01, 0xd0, - 0x05, 0x28, 0x01, 0xd1, 0x06, 0x20, 0xe8, 0x71, - 0x20, 0x22, 0x31, 0x1d, 0x20, 0x68, 0xf2, 0xf7, - 0xde, 0xfa, 0xb0, 0x8c, 0xa0, 0x80, 0xe8, 0x79, - 0xa0, 0x71, 0xa8, 0x79, 0x00, 0x25, 0xa0, 0x63, - 0x01, 0x20, 0x60, 0x81, 0x00, 0x20, 0xe0, 0x60, - 0x2e, 0x36, 0xe8, 0x00, 0x00, 0x19, 0x18, 0x30, - 0x08, 0x22, 0x3c, 0x00, 0x5c, 0xdf, 0x00, 0x00, - 0x31, 0x1c, 0xf2, 0xf7, 0xcb, 0xfa, 0x01, 0x35, - 0x04, 0x2d, 0xf5, 0xd3, 0x01, 0x20, 0x70, 0xbd, - 0x68, 0x61, 0x01, 0x00, 0xdc, 0x62, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x7a, 0x01, 0x28, - 0x01, 0xd0, 0x03, 0x28, 0x07, 0xd1, 0x20, 0x1d, - 0x03, 0xf0, 0x40, 0xff, 0x00, 0x28, 0x02, 0xd0, - 0xa1, 0x7a, 0x40, 0x30, 0x41, 0x73, 0xe0, 0x7a, - 0x00, 0x28, 0x01, 0xd0, 0x3c, 0x00, 0x98, 0xdf, - 0x00, 0x00, 0x03, 0x28, 0x02, 0xd1, 0xa0, 0x7a, - 0x02, 0x49, 0x08, 0x70, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x1c, 0x03, 0x21, 0x04, 0x1c, 0x30, 0x1c, - 0xfc, 0xf7, 0xe1, 0xfb, 0x00, 0x28, 0x01, 0xd0, - 0x85, 0x78, 0x00, 0xe0, 0x00, 0x25, 0x0b, 0x48, - 0x32, 0x1c, 0x00, 0x68, 0x03, 0x68, 0x20, 0x7c, - 0x80, 0x07, 0xc0, 0x0f, 0x21, 0x1c, 0x3c, 0x00, - 0xd4, 0xdf, 0x00, 0x00, 0xf7, 0xf7, 0x62, 0xfe, - 0x00, 0x28, 0x05, 0xd0, 0x01, 0x21, 0x28, 0x1c, - 0xfd, 0xf7, 0xfe, 0xfb, 0x00, 0x20, 0x00, 0xe0, - 0x08, 0x20, 0x03, 0xf0, 0xc5, 0xff, 0x00, 0x20, - 0x70, 0xbd, 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, - 0x80, 0xb5, 0x42, 0x68, 0x00, 0x88, 0x01, 0x21, - 0x49, 0x06, 0x08, 0x43, 0x2d, 0x21, 0x05, 0xf0, - 0xd3, 0xfb, 0x80, 0xbd, 0x03, 0x49, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x49, 0x78, - 0x02, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x8c, 0xb5, - 0x01, 0x28, 0x1f, 0xd1, 0x00, 0x29, 0x0d, 0xd0, - 0x01, 0x29, 0x0b, 0xd0, 0x02, 0x29, 0x01, 0xd0, - 0x03, 0x29, 0x16, 0xd1, 0x00, 0x20, 0xf9, 0xf7, - 0x14, 0xfc, 0x93, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x00, 0x20, 0x08, 0xe0, 0x01, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x3c, 0x00, 0x4c, 0xe0, 0x00, 0x00, - 0xf9, 0xf7, 0x0a, 0xfc, 0x83, 0x20, 0x00, 0xab, - 0x18, 0x80, 0x02, 0x20, 0x00, 0xf0, 0xcc, 0xf8, - 0x01, 0x90, 0x68, 0x46, 0xff, 0xf7, 0x3a, 0xfa, - 0x8c, 0xbd, 0x01, 0x21, 0x0e, 0x20, 0xf3, 0xf7, - 0x1b, 0xf9, 0xf9, 0xe7, 0xff, 0xb5, 0x17, 0x1c, - 0x1e, 0x1c, 0x14, 0x21, 0x00, 0x20, 0x83, 0xb0, - 0xf3, 0xf7, 0xac, 0xfa, 0x05, 0x1c, 0x04, 0x68, - 0x12, 0x20, 0x00, 0xab, 0x3c, 0x00, 0x88, 0xe0, - 0x00, 0x00, 0x98, 0x80, 0x06, 0x22, 0x60, 0x1d, - 0x03, 0x99, 0xf2, 0xf7, 0x32, 0xfa, 0x00, 0x20, - 0x20, 0x71, 0x27, 0x73, 0x04, 0x99, 0x20, 0x1c, - 0xe1, 0x72, 0x31, 0x1c, 0x06, 0x22, 0x0d, 0x30, - 0xf2, 0xf7, 0x27, 0xfa, 0x02, 0x95, 0x01, 0xa8, - 0xff, 0xf7, 0x13, 0xfa, 0x07, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0f, 0x1c, - 0x0c, 0x21, 0x00, 0x20, 0xf3, 0xf7, 0x3c, 0x00, - 0xc4, 0xe0, 0x00, 0x00, 0x89, 0xfa, 0x05, 0x68, - 0x04, 0x1c, 0x28, 0x1d, 0x06, 0x22, 0x31, 0x1c, - 0xf2, 0xf7, 0x12, 0xfa, 0x6f, 0x81, 0x20, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf3, 0xf7, - 0x77, 0xfa, 0x01, 0x68, 0x8c, 0x71, 0x8d, 0x80, - 0xb0, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x0e, 0x1c, - 0x10, 0x21, 0x17, 0x1c, 0x00, 0x20, 0xf3, 0xf7, - 0x3c, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x6b, 0xfa, - 0x04, 0x68, 0x05, 0x1c, 0x20, 0x1d, 0x06, 0x22, - 0x00, 0x99, 0xf2, 0xf7, 0xf4, 0xf9, 0x66, 0x81, - 0xa7, 0x81, 0x28, 0x1c, 0xfe, 0xbd, 0xf3, 0xb5, - 0x0c, 0x1c, 0x08, 0x21, 0x00, 0x20, 0x85, 0xb0, - 0xf3, 0xf7, 0x59, 0xfa, 0x06, 0x1c, 0x07, 0x68, - 0xe0, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x05, 0x99, - 0x01, 0x29, 0x04, 0xd1, 0x05, 0x98, 0x38, 0x71, - 0x00, 0x20, 0x3c, 0x00, 0x3c, 0xe1, 0x00, 0x00, - 0x78, 0x71, 0x56, 0xe0, 0x03, 0x68, 0x01, 0x21, - 0x03, 0x93, 0x20, 0x69, 0x02, 0x90, 0xfc, 0xf7, - 0x17, 0xfb, 0x05, 0x1c, 0x02, 0x98, 0x32, 0x21, - 0xfc, 0xf7, 0x12, 0xfb, 0x00, 0x22, 0xd2, 0x43, - 0x01, 0x1c, 0x28, 0x1c, 0x04, 0xab, 0xf7, 0xf7, - 0xb9, 0xf8, 0x00, 0x28, 0x04, 0xd1, 0x30, 0x1c, - 0xf3, 0xf7, 0x02, 0xfa, 0x00, 0x26, 0x3c, 0xe0, - 0x00, 0x2d, 0x05, 0xd0, 0x3c, 0x00, 0x78, 0xe1, - 0x00, 0x00, 0x68, 0x78, 0x09, 0x38, 0x07, 0x28, - 0x01, 0xd8, 0x32, 0x20, 0x28, 0x70, 0x1c, 0x21, - 0x00, 0x20, 0xf3, 0xf7, 0x26, 0xfa, 0x01, 0x90, - 0x05, 0x68, 0x01, 0x1c, 0x30, 0x1c, 0xf3, 0xf7, - 0x40, 0xf9, 0xe0, 0x68, 0xf3, 0xf7, 0x0b, 0xfa, - 0xa8, 0x61, 0xe1, 0x68, 0x01, 0x98, 0xf3, 0xf7, - 0x38, 0xf9, 0x00, 0x20, 0xe0, 0x60, 0x05, 0x98, - 0x80, 0x21, 0x08, 0x43, 0x38, 0x71, 0x3c, 0x00, - 0xb4, 0xe1, 0x00, 0x00, 0x01, 0x20, 0x21, 0x1c, - 0x14, 0x31, 0x78, 0x71, 0x28, 0x1c, 0x06, 0x22, - 0xf2, 0xf7, 0x9a, 0xf9, 0x02, 0x9a, 0x29, 0x20, - 0x00, 0x92, 0x00, 0x5d, 0x01, 0x21, 0xe2, 0x6a, - 0x08, 0x28, 0x00, 0xd0, 0x00, 0x21, 0x28, 0x1c, - 0x03, 0x9b, 0x02, 0xf0, 0x9d, 0xff, 0xa0, 0x6b, - 0x28, 0x61, 0x20, 0x6c, 0x68, 0x61, 0x7f, 0x30, - 0x01, 0xd1, 0x0f, 0x20, 0x68, 0x61, 0x30, 0x1c, - 0x3c, 0x00, 0xf0, 0xe1, 0x00, 0x00, 0x07, 0xb0, - 0xf0, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x08, 0x21, - 0x00, 0x20, 0xf3, 0xf7, 0xec, 0xf9, 0x01, 0x68, - 0x0c, 0x71, 0x10, 0xbd, 0x00, 0x00, 0x01, 0x48, - 0x00, 0x68, 0x70, 0x47, 0x00, 0x00, 0x28, 0x61, - 0x01, 0x00, 0x01, 0x49, 0x08, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x1c, - 0x01, 0x20, 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5, - 0x2d, 0x21, 0x3c, 0x00, 0x2c, 0xe2, 0x00, 0x00, - 0x05, 0xf0, 0xc0, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x01, 0x28, 0x07, 0xd0, 0xf1, 0x28, - 0x25, 0xd0, 0xf3, 0x28, 0x27, 0xd1, 0x02, 0x20, - 0x02, 0xf0, 0xbc, 0xf9, 0x80, 0xbd, 0x00, 0x29, - 0x1a, 0xd0, 0x01, 0x29, 0x03, 0xd0, 0xf2, 0x29, - 0xf8, 0xd1, 0x88, 0x21, 0x1c, 0xe0, 0x10, 0x48, - 0x01, 0x78, 0x00, 0x29, 0x05, 0xd1, 0x40, 0x78, - 0x01, 0x28, 0xef, 0xd1, 0x3c, 0x00, 0x68, 0xe2, - 0x00, 0x00, 0x00, 0xf0, 0x16, 0xfa, 0x80, 0xbd, - 0x0b, 0x48, 0x14, 0x30, 0x00, 0x89, 0xfc, 0xf7, - 0x5a, 0xfc, 0x01, 0x1c, 0x01, 0x22, 0x0f, 0x20, - 0x05, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x04, 0xf0, - 0x52, 0xfa, 0x80, 0xbd, 0x00, 0x20, 0xfa, 0xf7, - 0x32, 0xfe, 0x80, 0xbd, 0x02, 0x21, 0x0f, 0x20, - 0xf3, 0xf7, 0x05, 0xf8, 0x80, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0x01, 0x48, 0x00, 0x78, 0x3c, 0x00, - 0xa4, 0xe2, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x74, 0x66, 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, - 0x48, 0x60, 0x70, 0x47, 0xec, 0x65, 0x01, 0x00, - 0xf8, 0xb5, 0x0e, 0x1c, 0x13, 0x4d, 0x01, 0x1c, - 0x14, 0x1c, 0x68, 0x22, 0x28, 0x1c, 0x1f, 0x1c, - 0x0c, 0x30, 0xf2, 0xf7, 0x71, 0xf9, 0x0f, 0x49, - 0x00, 0x20, 0xac, 0x39, 0x48, 0x60, 0x01, 0x21, - 0x29, 0x60, 0x19, 0x21, 0x19, 0x2c, 0x6e, 0x67, - 0x3c, 0x00, 0xe0, 0xe2, 0x00, 0x00, 0x00, 0xd3, - 0x21, 0x1c, 0x29, 0x81, 0x09, 0x49, 0x14, 0x39, - 0x88, 0x73, 0x8f, 0x74, 0xc8, 0x78, 0x01, 0x28, - 0x08, 0xd0, 0x01, 0x21, 0x0f, 0x20, 0x05, 0xf0, - 0x9c, 0xf9, 0x19, 0x20, 0xfc, 0xf7, 0x15, 0xfc, - 0xfb, 0xf7, 0x99, 0xf8, 0x01, 0x20, 0xf8, 0xbd, - 0x00, 0x00, 0x98, 0x66, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x02, 0xd1, 0x00, 0xf0, 0x2f, 0xf8, - 0x80, 0xbd, 0x3c, 0x00, 0x1c, 0xe3, 0x00, 0x00, - 0x01, 0x21, 0x1d, 0x20, 0xf2, 0xf7, 0xc0, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x01, 0x20, 0x07, 0x49, 0x00, 0x05, 0x80, 0xb5, - 0x88, 0x60, 0x00, 0x22, 0x80, 0x21, 0x16, 0x20, - 0x05, 0xf0, 0x4c, 0xf9, 0x04, 0xf0, 0x34, 0xfd, - 0x02, 0x49, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x24, 0x6d, 0x01, 0x00, - 0x06, 0x4a, 0x80, 0xb5, 0x3c, 0x00, 0x58, 0xe3, - 0x00, 0x00, 0xd1, 0x6a, 0x81, 0x42, 0x07, 0xd1, - 0x10, 0x7f, 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, - 0x40, 0x18, 0xc0, 0x68, 0xf2, 0xf7, 0x35, 0xf8, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, - 0x01, 0x00, 0x1d, 0x48, 0x1c, 0xb5, 0x00, 0x78, - 0x00, 0x28, 0x2d, 0xd0, 0x1c, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x29, 0xd0, 0x1a, 0x4a, 0x1a, 0x4b, - 0x04, 0x32, 0x11, 0x68, 0x1c, 0x69, 0x3c, 0x00, - 0x94, 0xe3, 0x00, 0x00, 0xa1, 0x42, 0x22, 0xd1, - 0x51, 0x68, 0x5b, 0x69, 0x99, 0x42, 0x1f, 0xd1, - 0x16, 0x49, 0x49, 0x68, 0x93, 0x68, 0xc9, 0x1a, - 0x81, 0x42, 0x19, 0xd2, 0xd0, 0x68, 0x14, 0x49, - 0x01, 0x30, 0xd0, 0x60, 0x09, 0x68, 0x88, 0x42, - 0x0c, 0xd9, 0x06, 0x22, 0xff, 0x21, 0x68, 0x46, - 0xf2, 0xf7, 0x2e, 0xf9, 0xf3, 0xf7, 0xac, 0xfc, - 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22, 0x68, 0x46, - 0x3c, 0x00, 0xd0, 0xe3, 0x00, 0x00, 0x02, 0xf0, - 0xce, 0xf9, 0x01, 0x22, 0x1d, 0x20, 0x0a, 0x49, - 0x05, 0xf0, 0xf7, 0xf8, 0x1c, 0xbd, 0xf7, 0xf7, - 0x88, 0xf9, 0x04, 0x22, 0x81, 0x18, 0x08, 0x1c, - 0xfc, 0xf7, 0x27, 0xfb, 0xf6, 0xe7, 0x1c, 0x75, - 0x01, 0x00, 0x44, 0x75, 0x01, 0x00, 0x28, 0x61, - 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0xf0, 0x59, - 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x68, 0x3c, 0x00, 0x0c, 0xe4, 0x00, 0x00, - 0x00, 0x29, 0x15, 0xd1, 0x00, 0x79, 0x02, 0x28, - 0x12, 0xd1, 0x08, 0x1c, 0xf7, 0xf7, 0x80, 0xf8, - 0x00, 0x28, 0x0d, 0xd0, 0x03, 0xf0, 0xf2, 0xfc, - 0x08, 0x30, 0x41, 0x8f, 0x00, 0x29, 0x07, 0xd1, - 0x80, 0x69, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd1, 0xfc, 0xf7, 0x18, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49, 0x00, 0x20, - 0x88, 0x62, 0x70, 0x47, 0x3c, 0x00, 0x48, 0xe4, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x05, 0x4d, 0x04, 0x1c, 0xa9, 0x1d, 0xff, 0xf7, - 0x14, 0xf8, 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18, - 0xf2, 0xf7, 0x4b, 0xf8, 0xb0, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x15, 0x1c, - 0xff, 0xf7, 0x07, 0xf8, 0x06, 0x22, 0x29, 0x1c, - 0xa0, 0x18, 0xf2, 0xf7, 0x3e, 0xf8, 0xb0, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x0a, 0x30, 0x3c, 0x00, - 0x84, 0xe4, 0x00, 0x00, 0xf7, 0xf7, 0xbc, 0xf9, - 0x01, 0x23, 0x00, 0x28, 0x03, 0xd0, 0x05, 0x48, - 0x00, 0x78, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x22, - 0x00, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xc6, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x03, 0xf0, 0xbb, 0xfd, 0x80, 0xbd, - 0xb0, 0xb5, 0x05, 0x4d, 0xac, 0x79, 0x0a, 0x1c, - 0x3c, 0x00, 0xc0, 0xe4, 0x00, 0x00, 0x01, 0x1c, - 0x01, 0x23, 0x01, 0x20, 0x03, 0xf0, 0xb1, 0xfd, - 0xac, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x1c, - 0x88, 0x07, 0x02, 0xd5, 0xf6, 0xf7, 0x47, 0xfa, - 0x10, 0xe0, 0x60, 0x07, 0x0e, 0xd5, 0x17, 0x4f, - 0xa3, 0x20, 0xc0, 0x5d, 0x15, 0x4d, 0x10, 0x28, - 0x00, 0xd3, 0x15, 0x4d, 0x04, 0xf0, 0x59, 0xfc, - 0xb9, 0x6f, 0x3c, 0x00, 0xfc, 0xe4, 0x00, 0x00, - 0x40, 0x1a, 0x29, 0x1a, 0x01, 0x20, 0xf6, 0xf7, - 0xc1, 0xfa, 0xe0, 0x07, 0x11, 0x49, 0xc0, 0x0f, - 0x48, 0x60, 0x0c, 0xd0, 0x0d, 0x4c, 0x44, 0x3c, - 0x20, 0x78, 0x03, 0x28, 0x0f, 0xd1, 0x00, 0x2e, - 0x06, 0xd0, 0xf6, 0xf7, 0xf9, 0xf9, 0x01, 0x1c, - 0x01, 0x20, 0xf6, 0xf7, 0xaf, 0xfa, 0xf8, 0xbd, - 0x09, 0x49, 0x01, 0x20, 0xf6, 0xf7, 0xaa, 0xfa, - 0x01, 0x20, 0x20, 0x70, 0x3c, 0x00, 0x38, 0xe5, - 0x00, 0x00, 0xf7, 0xe7, 0x01, 0x21, 0x30, 0x1c, - 0xf6, 0xf7, 0x89, 0xfa, 0xf2, 0xe7, 0xa6, 0x0e, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0xc4, 0x09, - 0x00, 0x00, 0xb0, 0x57, 0x01, 0x00, 0x40, 0x42, - 0x0f, 0x00, 0x80, 0xb5, 0x06, 0x28, 0x04, 0xdb, - 0x05, 0x21, 0xff, 0x20, 0xf2, 0xf7, 0x9f, 0xfe, - 0x80, 0xbd, 0x03, 0x4a, 0xc0, 0x00, 0x11, 0x50, - 0x01, 0x21, 0x80, 0x18, 0x01, 0x71, 0x3c, 0x00, - 0x74, 0xe5, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x9c, 0x5a, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00, - 0xb0, 0xb5, 0x08, 0x4c, 0x25, 0x1d, 0x28, 0x1c, - 0x21, 0x68, 0x00, 0xf0, 0xf1, 0xfe, 0x00, 0x28, - 0x03, 0xd1, 0x01, 0x21, 0x04, 0x48, 0xf2, 0xf7, - 0xcf, 0xfa, 0x28, 0x1c, 0x21, 0x68, 0x00, 0xf0, - 0xfb, 0xfe, 0xb0, 0xbd, 0xc0, 0x60, 0x01, 0x00, - 0x3c, 0x00, 0xb0, 0xe5, 0x00, 0x00, 0x2c, 0x10, - 0x07, 0x00, 0xb0, 0xb5, 0x10, 0x4d, 0x0c, 0x1c, - 0xa8, 0x68, 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0, - 0xf4, 0xfb, 0x28, 0x60, 0x20, 0x1c, 0x04, 0xf0, - 0x38, 0xfb, 0x01, 0x21, 0x03, 0x20, 0x03, 0xf0, - 0xc4, 0xfe, 0x04, 0xf0, 0xf0, 0xfb, 0xa8, 0x68, - 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0, 0xe5, 0xfb, - 0x29, 0x68, 0x00, 0x1b, 0x40, 0x1a, 0x69, 0x68, - 0x40, 0x18, 0x3c, 0x00, 0xec, 0xe5, 0x00, 0x00, - 0x41, 0x08, 0x40, 0x18, 0x28, 0x60, 0x01, 0x20, - 0xa8, 0x60, 0xb0, 0xbd, 0xd0, 0x60, 0x01, 0x00, - 0xf8, 0xb5, 0x1f, 0x4e, 0x00, 0x24, 0xb0, 0x68, - 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0, 0xd0, 0xfb, - 0x70, 0x60, 0x05, 0xf0, 0x61, 0xf8, 0x04, 0xf0, - 0x8f, 0xfb, 0x05, 0x1c, 0xf9, 0xf7, 0x66, 0xfe, - 0x31, 0x68, 0x18, 0x4a, 0x41, 0x18, 0x12, 0x68, - 0xe8, 0x0b, 0x00, 0x2a, 0x3c, 0x00, 0x28, 0xe6, - 0x00, 0x00, 0x00, 0xd1, 0xa8, 0x0a, 0x40, 0x18, - 0x85, 0x42, 0x1f, 0xd9, 0x14, 0x4f, 0x2d, 0x1a, - 0x38, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab, - 0x19, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x05, 0xf0, - 0x6e, 0xf8, 0x00, 0x28, 0x03, 0xd1, 0x02, 0x21, - 0x8f, 0x20, 0xf2, 0xf7, 0x28, 0xfe, 0x29, 0x1c, - 0x0c, 0x48, 0xf2, 0x68, 0xf8, 0xf7, 0x09, 0xfc, - 0x00, 0x28, 0x04, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0x64, 0xe6, 0x00, 0x00, 0x28, 0x1c, 0xff, 0xf7, - 0xa5, 0xff, 0x01, 0x24, 0x00, 0xab, 0x18, 0x88, - 0xf8, 0x84, 0x05, 0xf0, 0x47, 0xf8, 0x20, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00, - 0xf4, 0x74, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x89, 0x13, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0xc8, 0x60, 0x70, 0x47, 0xd0, 0x60, 0x01, 0x00, - 0x06, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0x28, - 0x3c, 0x00, 0xa0, 0xe6, 0x00, 0x00, 0x07, 0xd1, - 0x04, 0x48, 0xac, 0x38, 0x01, 0x69, 0x03, 0x48, - 0x00, 0xf0, 0x79, 0xfe, 0xf3, 0xf7, 0x2b, 0xfa, - 0x80, 0xbd, 0x98, 0x66, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x80, 0xb5, 0x42, 0x78, 0x81, 0x68, - 0x00, 0x79, 0x03, 0xf0, 0xde, 0xff, 0x00, 0x28, - 0x01, 0xd1, 0xf5, 0xf7, 0xb6, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x1f, 0xb5, 0x04, 0xf0, 0x69, 0xfb, - 0xf6, 0xf7, 0x3c, 0x00, 0xdc, 0xe6, 0x00, 0x00, - 0x91, 0xff, 0x16, 0x4c, 0x02, 0x28, 0x03, 0xd1, - 0xff, 0xf7, 0xdc, 0xfd, 0x04, 0x28, 0x02, 0xd3, - 0x00, 0x20, 0x20, 0x70, 0x1f, 0xbd, 0xfb, 0xf7, - 0xf7, 0xfc, 0x00, 0x28, 0xfa, 0xd1, 0x60, 0x6a, - 0x00, 0x28, 0xf7, 0xd0, 0x20, 0x78, 0x80, 0x07, - 0xf4, 0xd4, 0x09, 0x21, 0x16, 0x20, 0x04, 0xf0, - 0x93, 0xff, 0x01, 0x20, 0x20, 0x70, 0x0b, 0x4c, - 0x09, 0x49, 0x02, 0x90, 0x3c, 0x00, 0x18, 0xe7, - 0x00, 0x00, 0x01, 0x94, 0x00, 0x91, 0x04, 0xf0, - 0x46, 0xfb, 0x00, 0x19, 0x03, 0x90, 0x68, 0x46, - 0xfd, 0xf7, 0xb5, 0xfb, 0x00, 0x22, 0x16, 0x21, - 0x84, 0x20, 0x05, 0xf0, 0x3e, 0xf8, 0xdc, 0xe7, - 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0x61, 0xed, - 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x23, 0x48, - 0x70, 0xb5, 0x80, 0x78, 0x9c, 0xb0, 0x01, 0x28, - 0x3e, 0xd1, 0x20, 0x4c, 0x09, 0xa8, 0x3c, 0x00, - 0x54, 0xe7, 0x00, 0x00, 0x80, 0x3c, 0x61, 0x1c, - 0xfe, 0xf7, 0x92, 0xfe, 0x04, 0x20, 0x11, 0xad, - 0x68, 0x72, 0xa0, 0x6f, 0x19, 0xa9, 0x18, 0x90, - 0x7c, 0x20, 0x00, 0x5d, 0x01, 0x26, 0x08, 0x71, - 0x1d, 0x20, 0x00, 0x5d, 0x00, 0x28, 0x06, 0xd0, - 0x10, 0x96, 0x12, 0x96, 0xfc, 0xf7, 0xf6, 0xfa, - 0x28, 0x72, 0x20, 0x7a, 0x11, 0x90, 0xf3, 0xf7, - 0xcd, 0xff, 0x6a, 0x21, 0x08, 0x53, 0x40, 0x34, - 0x3c, 0x00, 0x90, 0xe7, 0x00, 0x00, 0x00, 0x22, - 0x01, 0xa9, 0x06, 0xa8, 0xf6, 0xf7, 0xcd, 0xff, - 0x21, 0x1c, 0x00, 0x20, 0xfb, 0xf7, 0xcb, 0xfb, - 0x06, 0xa9, 0xfb, 0xf7, 0xc8, 0xfb, 0x01, 0xa9, - 0xfb, 0xf7, 0xc5, 0xfb, 0x0a, 0x49, 0x09, 0x68, - 0x00, 0x29, 0x07, 0xd0, 0x33, 0x1c, 0x0a, 0x22, - 0x69, 0x46, 0xfb, 0xf7, 0xda, 0xfb, 0x00, 0x9a, - 0x07, 0x21, 0x91, 0x70, 0x0c, 0x90, 0x09, 0xa8, - 0xfe, 0xf7, 0x3c, 0x00, 0xcc, 0xe7, 0x00, 0x00, - 0x7b, 0xfe, 0x1c, 0xb0, 0x70, 0xbd, 0x00, 0x00, - 0x84, 0x66, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xff, 0x22, - 0x01, 0x68, 0x12, 0x02, 0x0e, 0x1c, 0x08, 0x7b, - 0x49, 0x7b, 0x09, 0x02, 0x11, 0x40, 0x08, 0x43, - 0x05, 0x1c, 0x31, 0x1c, 0x06, 0x22, 0xa0, 0x18, - 0xf1, 0xf7, 0x7c, 0xfe, 0x06, 0x22, 0xb1, 0x18, - 0x20, 0x1c, 0xf1, 0xf7, 0x3c, 0x00, 0x08, 0xe8, - 0x00, 0x00, 0x77, 0xfe, 0x28, 0x0a, 0x29, 0x02, - 0x08, 0x43, 0x00, 0x04, 0x03, 0x21, 0x49, 0x02, - 0x00, 0x0c, 0x88, 0x42, 0x08, 0xd2, 0xe0, 0x68, - 0x01, 0x89, 0x0e, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x0e, 0x31, 0x01, 0x60, 0xf8, 0xbd, - 0x00, 0x26, 0x20, 0x1c, 0x10, 0x30, 0x03, 0xf0, - 0xe8, 0xfa, 0x21, 0x8b, 0x00, 0x29, 0x05, 0xd1, - 0xe1, 0x7d, 0x00, 0x29, 0x0b, 0xd0, 0x3c, 0x00, - 0x44, 0xe8, 0x00, 0x00, 0x80, 0x69, 0x80, 0x07, - 0x08, 0xd4, 0xe0, 0x68, 0x01, 0x26, 0x01, 0x89, - 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, - 0x02, 0x31, 0x06, 0xe0, 0xe0, 0x68, 0x01, 0x89, - 0x06, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, - 0x06, 0x31, 0x01, 0x60, 0x14, 0x49, 0x00, 0x20, - 0x0b, 0x1f, 0x42, 0x00, 0x9a, 0x5a, 0xaa, 0x42, - 0x02, 0xd1, 0x11, 0x49, 0x06, 0x31, 0x02, 0xe0, - 0x3c, 0x00, 0x80, 0xe8, 0x00, 0x00, 0x01, 0x30, - 0x02, 0x28, 0xf5, 0xd3, 0xe0, 0x68, 0x06, 0x22, - 0x00, 0x68, 0xf1, 0xf7, 0x34, 0xfe, 0x01, 0x2e, - 0xcb, 0xd1, 0x81, 0x20, 0x00, 0xab, 0x18, 0x80, - 0xe1, 0x7d, 0x20, 0x8b, 0x49, 0x03, 0x08, 0x43, - 0x31, 0x03, 0x08, 0x43, 0x00, 0x04, 0x00, 0x0c, - 0x01, 0x0a, 0x00, 0x02, 0x08, 0x43, 0x58, 0x80, - 0xe0, 0x68, 0x19, 0x88, 0x00, 0x68, 0xc1, 0x80, - 0x59, 0x88, 0x3c, 0x00, 0xbc, 0xe8, 0x00, 0x00, - 0x01, 0x81, 0xb5, 0xe7, 0x6a, 0x46, 0x01, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x89, 0x06, 0x22, - 0x08, 0x31, 0x01, 0x81, 0x04, 0x68, 0x04, 0x49, - 0x08, 0x3c, 0x04, 0x60, 0x20, 0x1c, 0xf1, 0xf7, - 0x0d, 0xfe, 0xe5, 0x80, 0xb0, 0xbd, 0x00, 0x00, - 0x6a, 0x46, 0x01, 0x00, 0xf8, 0xb5, 0x00, 0x29, - 0x01, 0xd0, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x09, 0x04, 0x3c, 0x00, 0xf8, 0xe8, - 0x00, 0x00, 0x09, 0x0c, 0xf2, 0xf7, 0x43, 0xff, - 0x06, 0x1c, 0x05, 0x1c, 0x00, 0x27, 0x20, 0xe0, - 0x2c, 0x89, 0x29, 0x68, 0x02, 0x2c, 0x01, 0xd2, - 0x02, 0x20, 0x01, 0xe0, 0x48, 0x78, 0x02, 0x30, - 0x84, 0x42, 0x02, 0xdd, 0x24, 0x1a, 0x09, 0x18, - 0xf4, 0xe7, 0x84, 0x42, 0x10, 0xd0, 0x01, 0x1b, - 0x0a, 0x04, 0x01, 0x04, 0x09, 0x0c, 0x12, 0x0c, - 0x28, 0x1c, 0xf2, 0xf7, 0x9e, 0xfe, 0x3c, 0x00, - 0x34, 0xe9, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1, - 0xe8, 0x68, 0xf2, 0xf7, 0x2d, 0xfe, 0xef, 0x60, - 0x28, 0x89, 0x00, 0x1b, 0x28, 0x81, 0xed, 0x68, - 0x00, 0x2d, 0xdc, 0xd1, 0x30, 0x1c, 0xd1, 0xe7, - 0xf8, 0xb5, 0x85, 0x68, 0x04, 0x1c, 0x80, 0x69, - 0x2e, 0x1c, 0x00, 0x28, 0x0d, 0xd0, 0x71, 0x68, - 0xf2, 0xf7, 0xf6, 0xfd, 0xa0, 0x69, 0xf2, 0xf7, - 0x17, 0xfe, 0x06, 0xe0, 0x00, 0x21, 0xc1, 0x60, - 0x3c, 0x00, 0x70, 0xe9, 0x00, 0x00, 0xf1, 0x60, - 0xa0, 0x8d, 0x36, 0x68, 0x01, 0x38, 0xa0, 0x85, - 0xf0, 0x68, 0x00, 0x28, 0xf5, 0xd1, 0x30, 0x68, - 0xa0, 0x60, 0xa0, 0x8d, 0x01, 0x38, 0x00, 0x04, - 0x00, 0x0c, 0xa0, 0x85, 0x02, 0xd0, 0x20, 0x1c, - 0xf9, 0xf7, 0x39, 0xf8, 0x2a, 0x4f, 0x2a, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x06, 0x21, - 0x68, 0x68, 0xfa, 0xf7, 0x7c, 0xfd, 0x68, 0x68, - 0x00, 0x68, 0x3c, 0x00, 0xac, 0xe9, 0x00, 0x00, - 0x81, 0x78, 0x00, 0x29, 0x2b, 0xd1, 0xc1, 0x78, - 0x00, 0x29, 0x30, 0xd1, 0x21, 0x8e, 0x01, 0x39, - 0x21, 0x86, 0xfb, 0xf7, 0x15, 0xf8, 0xa1, 0x6a, - 0x08, 0x1a, 0xa0, 0x62, 0xe1, 0x69, 0x88, 0x42, - 0x03, 0xd9, 0x04, 0x21, 0x02, 0x20, 0xf2, 0xf7, - 0x67, 0xfc, 0xb8, 0x68, 0x00, 0x28, 0x1e, 0xd0, - 0x1a, 0x49, 0x20, 0x8e, 0x49, 0x68, 0x0c, 0x22, - 0x52, 0x1a, 0x90, 0x42, 0x3c, 0x00, 0xe8, 0xe9, - 0x00, 0x00, 0x08, 0xd3, 0x19, 0x23, 0x9b, 0x01, - 0xaf, 0x22, 0x92, 0x01, 0x59, 0x43, 0xa0, 0x6a, - 0x51, 0x1a, 0x88, 0x42, 0x0e, 0xd2, 0x00, 0x21, - 0x0c, 0x20, 0x03, 0xf0, 0xac, 0xfc, 0x00, 0x20, - 0xb8, 0x60, 0x07, 0xe0, 0x01, 0x29, 0x05, 0xd1, - 0xc0, 0x78, 0x17, 0x28, 0x02, 0xd1, 0xa0, 0x8e, - 0x01, 0x38, 0xa0, 0x86, 0x2a, 0x1d, 0x06, 0xca, - 0xe0, 0x68, 0x63, 0x69, 0xf1, 0xf7, 0x3c, 0x00, - 0x24, 0xea, 0x00, 0x00, 0xdc, 0xfc, 0xb5, 0x42, - 0x01, 0xd0, 0x2d, 0x68, 0xb4, 0xe7, 0xa0, 0x8d, - 0x00, 0x28, 0x03, 0xd1, 0x05, 0x48, 0xb9, 0x69, - 0x00, 0xf0, 0x9e, 0xfc, 0xf8, 0xbd, 0x00, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c, 0x01, 0x00, - 0x18, 0x57, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x89, 0x07, 0x07, 0x4b, 0xca, 0x0f, 0x80, 0xb5, - 0x19, 0x7c, 0x00, 0x29, 0x06, 0xd0, 0x81, 0x43, - 0x3c, 0x00, 0x60, 0xea, 0x00, 0x00, 0x19, 0x74, - 0x03, 0xd1, 0x07, 0x21, 0x15, 0x20, 0x04, 0xf0, - 0xa2, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20, - 0xff, 0xf7, 0xe9, 0xff, 0x80, 0xbd, 0x80, 0xb5, - 0x01, 0x1c, 0x02, 0x20, 0xff, 0xf7, 0xe3, 0xff, - 0x80, 0xbd, 0xb0, 0xb5, 0x1b, 0x4c, 0x60, 0x68, - 0xfc, 0xf7, 0x2f, 0xff, 0x20, 0x68, 0x00, 0x25, - 0x40, 0x68, 0x3c, 0x00, 0x9c, 0xea, 0x00, 0x00, - 0x00, 0x28, 0x03, 0xd0, 0xfd, 0xf7, 0x18, 0xfc, - 0x20, 0x68, 0x45, 0x60, 0x60, 0x68, 0xfc, 0xf7, - 0xc5, 0xfe, 0x14, 0x48, 0x61, 0x68, 0x00, 0xf0, - 0x61, 0xfc, 0xa0, 0x7a, 0x01, 0x28, 0x05, 0xd0, - 0x02, 0x28, 0x03, 0xd0, 0x20, 0x68, 0x00, 0x68, - 0x00, 0xf0, 0xde, 0xf8, 0x01, 0x21, 0x1f, 0x20, - 0x04, 0xf0, 0xb2, 0xfd, 0x00, 0x21, 0x1f, 0x20, - 0x04, 0xf0, 0xae, 0xfd, 0x3c, 0x00, 0xd8, 0xea, - 0x00, 0x00, 0x02, 0x21, 0x1f, 0x20, 0x04, 0xf0, - 0xaa, 0xfd, 0xa5, 0x72, 0x21, 0x68, 0x2c, 0x20, - 0x40, 0x5c, 0x89, 0x68, 0xf1, 0xf7, 0x76, 0xfc, - 0x60, 0x68, 0xfc, 0xf7, 0xe4, 0xfe, 0x20, 0x68, - 0x05, 0x62, 0xb0, 0xbd, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x04, 0x49, - 0x0a, 0x68, 0xc8, 0x68, 0x92, 0x6a, 0x00, 0x2a, - 0x01, 0xd0, 0x09, 0x69, 0x08, 0x18, 0x3c, 0x00, - 0x14, 0xeb, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x13, 0x4c, - 0x05, 0x1c, 0xa0, 0x7a, 0x01, 0x38, 0x02, 0x28, - 0x19, 0xd8, 0x01, 0x21, 0x1f, 0x20, 0x04, 0xf0, - 0x81, 0xfd, 0x20, 0x68, 0xfc, 0x23, 0x01, 0x1c, - 0x20, 0x30, 0x02, 0x7b, 0x1a, 0x40, 0x02, 0x73, - 0x00, 0x2d, 0x0f, 0xd0, 0x01, 0x23, 0x1a, 0x43, - 0x02, 0x73, 0xa0, 0x7a, 0x03, 0x28, 0x07, 0xd1, - 0x3c, 0x00, 0x50, 0xeb, 0x00, 0x00, 0x01, 0x20, - 0x01, 0xf0, 0xe7, 0xfd, 0x00, 0x28, 0x01, 0xd1, - 0xff, 0xf7, 0x97, 0xff, 0xb0, 0xbd, 0x4b, 0x62, - 0xb0, 0xbd, 0x02, 0x21, 0x11, 0x43, 0x01, 0x73, - 0xf6, 0xe7, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x0a, 0x30, 0xf6, 0xf7, 0x43, 0xfe, - 0x00, 0x28, 0x0c, 0xd0, 0x22, 0x88, 0x0a, 0x49, - 0x0b, 0x7a, 0x90, 0x04, 0xc0, 0x0f, 0x00, 0x2b, - 0x06, 0xd1, 0x3c, 0x00, 0x8c, 0xeb, 0x00, 0x00, - 0x12, 0x06, 0x92, 0x0e, 0x20, 0x2a, 0x00, 0xd1, - 0x01, 0x20, 0xc8, 0x60, 0x10, 0xbd, 0x00, 0x28, - 0xfc, 0xd1, 0x00, 0x22, 0x24, 0x21, 0x80, 0x20, - 0x04, 0xf0, 0x04, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x1c, - 0x1f, 0x21, 0x80, 0x20, 0x04, 0xf0, 0xfa, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x1d, 0x4e, - 0x04, 0x1c, 0x30, 0x68, 0x3c, 0x00, 0xc8, 0xeb, - 0x00, 0x00, 0x1d, 0x1c, 0x47, 0x68, 0x20, 0x1c, - 0xf1, 0xf7, 0x0a, 0xfc, 0xfb, 0xf7, 0x87, 0xfa, - 0x00, 0x28, 0x04, 0xd0, 0x28, 0x1c, 0xf2, 0xf7, - 0x2a, 0xfb, 0x00, 0x28, 0x28, 0xd1, 0x20, 0x88, - 0x40, 0x05, 0x25, 0xd4, 0x30, 0x68, 0x00, 0x68, - 0xfe, 0xf7, 0x59, 0xf9, 0x00, 0x28, 0x03, 0xd1, - 0xfd, 0xf7, 0x89, 0xfa, 0xf1, 0xf7, 0xed, 0xfb, - 0x30, 0x68, 0x00, 0x25, 0x40, 0x68, 0x3c, 0x00, - 0x04, 0xec, 0x00, 0x00, 0x00, 0x28, 0x03, 0xd0, - 0xfd, 0xf7, 0x64, 0xfb, 0x30, 0x68, 0x45, 0x60, - 0x20, 0x88, 0x00, 0x09, 0x00, 0x07, 0x03, 0xd1, - 0x04, 0xf0, 0xc8, 0xf8, 0x61, 0x88, 0x45, 0x18, - 0x30, 0x68, 0x45, 0x61, 0x81, 0x6a, 0x01, 0x31, - 0x81, 0x62, 0x20, 0x88, 0x80, 0x04, 0xc1, 0x0f, - 0x02, 0x48, 0xf8, 0xf7, 0xcd, 0xff, 0xf8, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0xb1, 0xeb, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xec, 0x00, 0x00, 0xb0, 0xb5, - 0x0e, 0x4c, 0x05, 0x1c, 0x60, 0x68, 0xfc, 0xf7, - 0xf6, 0xfd, 0x0c, 0x48, 0x61, 0x68, 0x00, 0xf0, - 0x92, 0xfb, 0x00, 0x21, 0x24, 0x20, 0x04, 0xf0, - 0xec, 0xfc, 0x00, 0x22, 0xd2, 0x43, 0x80, 0x21, - 0x24, 0x20, 0x04, 0xf0, 0xb8, 0xfc, 0x00, 0x20, - 0xe0, 0x60, 0x20, 0x72, 0x20, 0x68, 0x01, 0x68, - 0x28, 0x06, 0x00, 0x0e, 0xf1, 0xf7, 0xb0, 0xfb, - 0xb0, 0xbd, 0x3c, 0x00, 0x7c, 0xec, 0x00, 0x00, - 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7, - 0x85, 0xfc, 0x20, 0x1c, 0xf2, 0xf7, 0xb0, 0xfd, - 0x10, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x1c, 0x4e, - 0x05, 0x1c, 0xb0, 0x7a, 0x2c, 0x1c, 0x40, 0x34, - 0x02, 0x28, 0x26, 0xd1, 0xa0, 0x8b, 0x31, 0x89, - 0x88, 0x42, 0x22, 0xd1, 0x30, 0x68, 0x41, 0x6a, - 0x00, 0x29, 0x08, 0xd0, 0x3c, 0x00, 0xb8, 0xec, - 0x00, 0x00, 0x20, 0x30, 0x00, 0x7b, 0xc0, 0x07, - 0x04, 0xd5, 0x01, 0x20, 0x01, 0xf0, 0x2f, 0xfd, - 0x00, 0x28, 0x18, 0xd1, 0x60, 0x78, 0x00, 0x28, - 0x09, 0xd1, 0x30, 0x68, 0x02, 0x23, 0x20, 0x30, - 0x02, 0x7b, 0x0d, 0x49, 0x52, 0x08, 0x52, 0x00, - 0x1a, 0x43, 0x02, 0x73, 0x01, 0xe0, 0xff, 0x21, - 0xf5, 0x31, 0x01, 0x22, 0x1f, 0x20, 0x04, 0xf0, - 0x6e, 0xfc, 0x03, 0x20, 0xb0, 0x72, 0x3c, 0x00, - 0xf4, 0xec, 0x00, 0x00, 0x02, 0xe0, 0x28, 0x1c, - 0xff, 0xf7, 0xc4, 0xff, 0x60, 0x78, 0x00, 0x28, - 0x03, 0xd1, 0x29, 0x1c, 0x01, 0x20, 0x03, 0xf0, - 0x29, 0xfb, 0x70, 0xbd, 0x14, 0x7a, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x60, 0x34, 0xe0, 0x79, 0x0e, 0x4d, 0x00, 0x28, - 0x0a, 0xd1, 0x02, 0x20, 0xa8, 0x72, 0x28, 0x68, - 0x40, 0x68, 0x00, 0x28, 0x04, 0xd1, 0x0b, 0x48, - 0x3c, 0x00, 0x30, 0xed, 0x00, 0x00, 0xfd, 0xf7, - 0xd0, 0xfa, 0x29, 0x68, 0x48, 0x60, 0x04, 0xf0, - 0x38, 0xf8, 0x29, 0x68, 0xc8, 0x61, 0xff, 0xf7, - 0xe0, 0xfe, 0x29, 0x68, 0x09, 0x69, 0x08, 0x1a, - 0x03, 0xf0, 0x6f, 0xff, 0x00, 0x28, 0x01, 0xd0, - 0xe0, 0x79, 0xa0, 0x71, 0xb0, 0xbd, 0x14, 0x7a, - 0x01, 0x00, 0xc1, 0xeb, 0x00, 0x00, 0xf8, 0xb5, - 0x04, 0x1c, 0x00, 0x26, 0x04, 0xf0, 0x21, 0xf8, - 0x05, 0x1c, 0x3c, 0x00, 0x6c, 0xed, 0x00, 0x00, - 0x22, 0x48, 0x00, 0x27, 0x07, 0x70, 0xa1, 0x07, - 0x04, 0xd0, 0xe1, 0x07, 0xc9, 0x0f, 0x01, 0x62, - 0xc5, 0x61, 0x01, 0x26, 0x41, 0x6b, 0x00, 0x29, - 0x34, 0xd1, 0x00, 0x2e, 0x32, 0xd0, 0x06, 0x1c, - 0xf9, 0xf7, 0x44, 0xff, 0x31, 0x6b, 0x1a, 0x4b, - 0x41, 0x1a, 0xa2, 0x07, 0x12, 0xd5, 0xda, 0x68, - 0x00, 0x2a, 0x08, 0xdd, 0x91, 0x42, 0x1a, 0x68, - 0x02, 0xda, 0x14, 0x09, 0x3c, 0x00, 0xa8, 0xed, - 0x00, 0x00, 0xa2, 0x18, 0x06, 0xe0, 0x14, 0x09, - 0x12, 0x1b, 0x03, 0xe0, 0x0a, 0x43, 0x02, 0xd1, - 0x1a, 0x68, 0x52, 0x00, 0x1a, 0x60, 0xb7, 0x63, - 0x0a, 0xe0, 0xb2, 0x6b, 0x01, 0x32, 0xb2, 0x63, - 0x02, 0x2a, 0x1a, 0x68, 0x01, 0xdd, 0x94, 0x08, - 0x00, 0xe0, 0x14, 0x09, 0x12, 0x1b, 0x1a, 0x60, - 0xd9, 0x60, 0x30, 0x63, 0xf5, 0x62, 0x18, 0x68, - 0x08, 0x49, 0x88, 0x42, 0x01, 0xd9, 0x3c, 0x00, - 0xe4, 0xed, 0x00, 0x00, 0x19, 0x60, 0x03, 0xe0, - 0x64, 0x28, 0x01, 0xd2, 0x64, 0x20, 0x18, 0x60, - 0xf5, 0xf7, 0xfc, 0xfd, 0xf8, 0xbd, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57, 0x01, 0x00, - 0x20, 0xa1, 0x07, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x00, 0x20, 0x50, 0x4d, 0x00, 0x21, 0x68, 0x61, - 0x20, 0x69, 0xfb, 0xf7, 0xb3, 0xfc, 0x07, 0x1c, - 0x20, 0x69, 0x03, 0x21, 0xfb, 0xf7, 0xae, 0xfc, - 0x3c, 0x00, 0x20, 0xee, 0x00, 0x00, 0x00, 0x28, - 0x03, 0xd0, 0x80, 0x78, 0x29, 0x78, 0x88, 0x42, - 0x63, 0xd1, 0x47, 0x4d, 0x20, 0x1c, 0x14, 0x30, - 0x39, 0x1c, 0x06, 0x1c, 0x2a, 0x78, 0x02, 0xf0, - 0x5a, 0xfa, 0x00, 0x28, 0x59, 0xd1, 0xe0, 0x68, - 0x05, 0x68, 0x41, 0x48, 0x01, 0x95, 0x58, 0x30, - 0x02, 0x90, 0xfb, 0xf7, 0x6a, 0xff, 0x3e, 0x4d, - 0x19, 0x35, 0x00, 0x28, 0x0b, 0xd0, 0x28, 0x1c, - 0xfb, 0xf7, 0x3c, 0x00, 0x5c, 0xee, 0x00, 0x00, - 0x55, 0xff, 0x00, 0x28, 0x1e, 0xd1, 0x31, 0x1c, - 0x28, 0x1c, 0xfb, 0xf7, 0x65, 0xff, 0x00, 0x28, - 0x42, 0xd0, 0x17, 0xe0, 0x28, 0x1c, 0xfb, 0xf7, - 0x49, 0xff, 0x00, 0x28, 0x06, 0xd0, 0x39, 0x1c, - 0x02, 0x98, 0xfb, 0xf7, 0x63, 0xff, 0x00, 0x28, - 0x36, 0xd0, 0x0b, 0xe0, 0x39, 0x1c, 0x02, 0x98, - 0xfb, 0xf7, 0x5c, 0xff, 0x00, 0x28, 0x2f, 0xd0, - 0x31, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x98, 0xee, - 0x00, 0x00, 0xfb, 0xf7, 0x4c, 0xff, 0x00, 0x28, - 0x29, 0xd0, 0x30, 0x1c, 0xf6, 0xf7, 0xad, 0xfc, - 0x29, 0x4a, 0x18, 0x32, 0x11, 0x7c, 0x00, 0x29, - 0x04, 0xd0, 0x51, 0x6a, 0x00, 0x29, 0x01, 0xd0, - 0x00, 0x28, 0x1c, 0xd1, 0x90, 0x6a, 0x00, 0x28, - 0x3b, 0xd0, 0x13, 0x78, 0x01, 0x9d, 0x01, 0x21, - 0x6d, 0x89, 0x01, 0x20, 0x2b, 0x40, 0x9b, 0x07, - 0x11, 0xd0, 0xa3, 0x6b, 0x1e, 0x4e, 0x3c, 0x00, - 0xd4, 0xee, 0x00, 0x00, 0x1d, 0x1c, 0x7f, 0x35, - 0x98, 0x36, 0x00, 0x2d, 0x14, 0xd0, 0x55, 0x8a, - 0x00, 0x2d, 0x08, 0xd1, 0x55, 0x69, 0xab, 0x42, - 0x0f, 0xda, 0x00, 0x20, 0x17, 0x4d, 0x01, 0x23, - 0x6b, 0x61, 0x0a, 0xe0, 0x29, 0xe0, 0xf5, 0x78, - 0x02, 0x2d, 0x06, 0xd1, 0x14, 0x4f, 0x55, 0x69, - 0x3f, 0x68, 0xed, 0x19, 0xab, 0x42, 0x00, 0xda, - 0x00, 0x20, 0x23, 0x6c, 0x1d, 0x1c, 0x7f, 0x35, - 0x3c, 0x00, 0x10, 0xef, 0x00, 0x00, 0x10, 0xd0, - 0x55, 0x8a, 0x00, 0x2d, 0x03, 0xd1, 0x95, 0x69, - 0xab, 0x42, 0x0a, 0xd2, 0x08, 0xe0, 0xf5, 0x78, - 0x02, 0x2d, 0x06, 0xd1, 0x0b, 0x4e, 0x95, 0x69, - 0x36, 0x68, 0xad, 0x19, 0xab, 0x42, 0x00, 0xd2, - 0x00, 0x21, 0x08, 0x43, 0x08, 0xd0, 0x10, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0xf1, 0xf7, 0x4b, 0xfa, - 0x00, 0x21, 0x20, 0x1c, 0x01, 0xf0, 0xb9, 0xf9, - 0xfe, 0xbd, 0x3c, 0x00, 0x4c, 0xef, 0x00, 0x00, - 0xec, 0x65, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, - 0xcc, 0x67, 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x6a, - 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7, 0x34, 0xfb, - 0xe1, 0x69, 0xf2, 0xf7, 0x57, 0xfa, 0x20, 0x1c, - 0x40, 0x30, 0xc1, 0x8b, 0x04, 0x31, 0xc1, 0x83, - 0x2b, 0x69, 0x10, 0x49, 0x98, 0x79, 0x06, 0x28, - 0x0a, 0xd1, 0x98, 0x88, 0x01, 0x91, 0x02, 0x94, - 0x00, 0x90, 0x60, 0x69, 0x3c, 0x00, 0x88, 0xef, - 0x00, 0x00, 0x1b, 0x68, 0x01, 0x68, 0xe0, 0x68, - 0x03, 0x22, 0xc0, 0x68, 0x0a, 0xe0, 0x02, 0x28, - 0x0b, 0xd1, 0x10, 0x20, 0x00, 0x90, 0x01, 0x91, - 0x02, 0x94, 0xe0, 0x68, 0xa3, 0x69, 0xc0, 0x68, - 0x00, 0x22, 0x00, 0x21, 0xf7, 0xf7, 0x0f, 0xfb, - 0x3e, 0xbd, 0xf2, 0xf7, 0xa6, 0xf9, 0xfb, 0xe7, - 0x00, 0x00, 0xbd, 0xef, 0x00, 0x00, 0x80, 0xb5, - 0xd1, 0x68, 0x50, 0x69, 0xc9, 0x68, 0x3c, 0x00, - 0xc4, 0xef, 0x00, 0x00, 0xc1, 0x60, 0xd1, 0x68, - 0xc8, 0x60, 0x11, 0x1c, 0x40, 0x31, 0xcb, 0x8b, - 0x00, 0x89, 0x18, 0x18, 0xc8, 0x83, 0x10, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, 0xbc, 0xff, - 0x80, 0xbd, 0x03, 0x48, 0xfb, 0xf7, 0xcc, 0xf8, - 0x00, 0x6a, 0xfe, 0xf7, 0xf5, 0xf9, 0x80, 0xbd, - 0xa0, 0x6a, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x0a, 0x24, 0x30, 0x07, 0x01, 0x09, 0xa0, 0x07, - 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x01, 0x43, - 0x0f, 0x1c, 0x0a, 0x4d, 0x2f, 0x60, 0x04, 0xf0, - 0xfa, 0xfe, 0xad, 0x68, 0x28, 0x01, 0x00, 0x0f, - 0xb0, 0x42, 0x05, 0xd0, 0x01, 0x3c, 0xf4, 0xd2, - 0x01, 0x21, 0x9b, 0x20, 0xf2, 0xf7, 0x41, 0xf9, - 0x28, 0x02, 0x00, 0x0a, 0x08, 0x2e, 0x01, 0xd1, - 0x31, 0x05, 0x08, 0x43, 0xf8, 0xbd, 0x60, 0x00, - 0x07, 0x00, 0x01, 0x22, 0xd2, 0x05, 0x80, 0xb5, - 0x00, 0x21, 0x3c, 0x00, 0x3c, 0xf0, 0x00, 0x00, - 0x04, 0x20, 0x04, 0xf0, 0xdd, 0xfc, 0x0f, 0x20, - 0xff, 0xf7, 0xd6, 0xff, 0x0f, 0x21, 0x09, 0x04, - 0x08, 0x40, 0x00, 0x0c, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x05, 0x48, 0xfd, 0xf7, 0x4a, 0xf9, - 0x04, 0x48, 0xfd, 0xf7, 0x7b, 0xf8, 0x04, 0x48, - 0xfd, 0xf7, 0x6c, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x89, 0x34, 0x01, 0x00, 0xed, 0x24, 0x00, 0x00, - 0x11, 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xf0, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x48, 0xf3, 0xf7, - 0x2a, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xd1, 0x24, - 0x00, 0x00, 0x80, 0xb5, 0xf2, 0xf7, 0x53, 0xf9, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20, - 0x01, 0xf0, 0x51, 0xfe, 0x03, 0x20, 0x02, 0xf0, - 0x46, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0xc1, 0x69, 0x00, 0x29, 0x06, 0xd1, - 0x01, 0x6a, 0x00, 0x29, 0x03, 0xd1, 0x3c, 0x00, - 0xb4, 0xf0, 0x00, 0x00, 0x81, 0x6b, 0x03, 0x48, - 0x00, 0xf0, 0x5e, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x4c, 0x20, 0x6a, 0xfc, 0xf7, - 0xb3, 0xfb, 0x03, 0x48, 0x21, 0x6a, 0x00, 0xf0, - 0x4f, 0xf9, 0x10, 0xbd, 0x1c, 0x75, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x4c, - 0x20, 0x7c, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x21, - 0x3c, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xfd, 0xf7, - 0x86, 0xf9, 0x00, 0x25, 0x25, 0x70, 0xa0, 0x68, - 0x01, 0x28, 0x03, 0xd1, 0x00, 0x20, 0xa5, 0x60, - 0x01, 0xf0, 0x8f, 0xf8, 0xa0, 0x78, 0x01, 0x28, - 0x05, 0xd1, 0x03, 0x48, 0x98, 0x38, 0x00, 0x69, - 0xfc, 0xf7, 0xef, 0xfb, 0xa5, 0x70, 0xb0, 0xbd, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x21, 0x01, 0x20, 0x01, 0xf0, 0x09, 0xfe, - 0x80, 0xbd, 0x3c, 0x00, 0x2c, 0xf1, 0x00, 0x00, - 0x38, 0xb5, 0x69, 0x46, 0x00, 0x25, 0xf8, 0xf7, - 0xb7, 0xfe, 0x04, 0x1c, 0x01, 0xd1, 0x01, 0x20, - 0x38, 0xbd, 0xa0, 0x68, 0x00, 0x28, 0x04, 0xd0, - 0x00, 0x99, 0xa1, 0x31, 0x08, 0x20, 0x04, 0xf0, - 0x73, 0xfa, 0x1c, 0x21, 0x20, 0x1c, 0xf1, 0xf7, - 0xa3, 0xf9, 0x28, 0x1c, 0xf0, 0xe7, 0x00, 0x00, - 0xfe, 0xb5, 0x07, 0x1c, 0x4c, 0x23, 0x39, 0x49, - 0x58, 0x43, 0x44, 0x18, 0x3c, 0x00, 0x68, 0xf1, - 0x00, 0x00, 0x25, 0x1c, 0x40, 0x35, 0x28, 0x7a, - 0x37, 0x49, 0x48, 0x76, 0x21, 0x1c, 0x30, 0x31, - 0x02, 0x91, 0x0c, 0x23, 0xc8, 0x56, 0x42, 0x1c, - 0x0a, 0x73, 0x49, 0x7b, 0x88, 0x42, 0x46, 0xda, - 0x32, 0x48, 0x00, 0x78, 0x80, 0x07, 0x3e, 0xd5, - 0x00, 0x20, 0x01, 0x90, 0xf6, 0xf7, 0xaf, 0xfa, - 0x00, 0x28, 0x2e, 0xd0, 0xac, 0x21, 0x09, 0x58, - 0x00, 0x29, 0x01, 0xd0, 0xe4, 0x30, 0x3c, 0x00, - 0xa4, 0xf1, 0x00, 0x00, 0x00, 0xe0, 0xcc, 0x30, - 0x06, 0x1c, 0x40, 0x68, 0x00, 0x28, 0x25, 0xd0, - 0x02, 0x99, 0x08, 0x7b, 0x01, 0x28, 0x11, 0xd1, - 0x20, 0x1c, 0x2e, 0x30, 0x29, 0x78, 0xf6, 0xf7, - 0xed, 0xf9, 0x71, 0x68, 0x03, 0xe0, 0x72, 0x18, - 0x12, 0x7a, 0x82, 0x42, 0x03, 0xd9, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x0e, 0xf7, 0xd1, 0xa9, 0x70, - 0x01, 0x20, 0x01, 0x90, 0x23, 0x1c, 0x3e, 0x33, - 0x3c, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x1a, 0x1d, - 0x30, 0x1c, 0x00, 0x97, 0x01, 0x99, 0xf8, 0xf7, - 0x58, 0xfa, 0x00, 0x28, 0x11, 0xd0, 0xa8, 0x78, - 0x80, 0x19, 0x00, 0x7a, 0x00, 0xe0, 0x00, 0x20, - 0x68, 0x70, 0x68, 0x78, 0x01, 0x21, 0xfb, 0xf7, - 0xe0, 0xfd, 0x60, 0x60, 0x38, 0x1c, 0x01, 0xf0, - 0x14, 0xfe, 0x38, 0x1c, 0x01, 0xf0, 0xa5, 0xfb, - 0xfe, 0xbd, 0x02, 0x99, 0x08, 0x7b, 0xff, 0x30, - 0x48, 0x73, 0x3c, 0x00, 0x1c, 0xf2, 0x00, 0x00, - 0x38, 0x1c, 0xfc, 0xf7, 0x19, 0xfc, 0x03, 0xf0, - 0xc3, 0xfd, 0x06, 0x1c, 0xfb, 0xf7, 0x8e, 0xfe, - 0x41, 0x00, 0x76, 0x18, 0x68, 0x78, 0x61, 0x68, - 0xfb, 0xf7, 0x6a, 0xfe, 0x31, 0x18, 0x20, 0x8d, - 0x3b, 0x1c, 0x05, 0x4a, 0x03, 0xf0, 0x12, 0xfe, - 0xe5, 0xe7, 0x00, 0x00, 0x58, 0xe3, 0x01, 0x00, - 0x30, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0xd5, 0x4e, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xf2, - 0x00, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x80, 0xb5, - 0x02, 0x79, 0x20, 0x30, 0x03, 0x49, 0x00, 0xf0, - 0x30, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x03, 0x1c, - 0x04, 0x48, 0x80, 0xb5, 0xc2, 0x78, 0x38, 0x30, - 0x03, 0x49, 0x00, 0xf0, 0x22, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, 0xc8, 0x67, - 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x3c, 0x00, - 0x94, 0xf2, 0x00, 0x00, 0x80, 0xb5, 0x82, 0x79, - 0x50, 0x30, 0x03, 0x49, 0x00, 0xf0, 0x14, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, - 0xcc, 0x67, 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48, - 0x80, 0xb5, 0x42, 0x79, 0x68, 0x30, 0x03, 0x49, - 0x00, 0xf0, 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x24, 0x84, 0x80, 0x0b, 0x60, - 0x3c, 0x00, 0xd0, 0xf2, 0x00, 0x00, 0x19, 0x1c, - 0x51, 0x43, 0x01, 0x60, 0x19, 0x06, 0x09, 0x16, - 0x10, 0x22, 0x06, 0x30, 0xf1, 0xf7, 0x9f, 0xf9, - 0x10, 0xbd, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24, - 0xac, 0x60, 0xec, 0x60, 0xec, 0x61, 0x2c, 0x62, - 0x02, 0xf0, 0xf1, 0xfc, 0x00, 0xf0, 0x0d, 0xf8, - 0xec, 0x62, 0x2c, 0x70, 0xb0, 0xbd, 0x44, 0x7d, - 0x01, 0x00, 0x80, 0xb5, 0x80, 0x21, 0x01, 0x48, - 0xf1, 0xf7, 0x3c, 0x00, 0x0c, 0xf3, 0x00, 0x00, - 0xc7, 0xf8, 0x80, 0xbd, 0x04, 0x66, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x4f, 0x00, 0x24, 0x00, 0x26, - 0x18, 0x20, 0x60, 0x43, 0xc5, 0x19, 0xee, 0x60, - 0x03, 0xf0, 0x42, 0xfd, 0x10, 0x35, 0x01, 0x34, - 0x02, 0x2c, 0x41, 0xc5, 0xf4, 0xdb, 0xf8, 0xbd, - 0xb8, 0x7d, 0x01, 0x00, 0x00, 0x23, 0x03, 0x60, - 0x04, 0x4b, 0x00, 0x29, 0x00, 0xd1, 0x19, 0x1c, - 0x41, 0x60, 0x00, 0x2a, 0x3c, 0x00, 0x48, 0xf3, - 0x00, 0x00, 0x00, 0xd1, 0x1a, 0x1c, 0x82, 0x60, - 0x70, 0x47, 0xbd, 0x75, 0x00, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x20, 0x68, 0x01, 0x30, 0x20, 0x60, - 0x20, 0x28, 0x03, 0xd9, 0x58, 0x21, 0x58, 0x20, - 0xf1, 0xf7, 0x9d, 0xff, 0x21, 0x68, 0x01, 0x20, - 0x01, 0x39, 0x88, 0x40, 0x10, 0xbd, 0x60, 0x5b, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x21, 0x68, 0x00, 0x20, 0x00, 0x29, 0x3c, 0x00, - 0x84, 0xf3, 0x00, 0x00, 0x0a, 0xd0, 0xa9, 0x43, - 0x21, 0x60, 0x07, 0xd1, 0xa0, 0x68, 0xf1, 0xf7, - 0x23, 0xf8, 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68, - 0x29, 0x43, 0x21, 0x60, 0xb0, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x21, 0x68, - 0x00, 0x20, 0x29, 0x43, 0x21, 0x60, 0xa9, 0x42, - 0x07, 0xd1, 0x60, 0x68, 0xf1, 0xf7, 0x10, 0xf8, - 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68, 0xa9, 0x43, - 0x3c, 0x00, 0xc0, 0xf3, 0x00, 0x00, 0x21, 0x60, - 0xb0, 0xbd, 0x1a, 0x4b, 0xb0, 0xb5, 0x9a, 0x6a, - 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x2a, 0x07, 0xdb, - 0xb8, 0x24, 0x24, 0x58, 0x01, 0x3c, 0xa4, 0x1a, - 0x00, 0x19, 0xb0, 0x30, 0x00, 0x7b, 0x02, 0xe0, - 0x0e, 0x20, 0x00, 0xe0, 0x0d, 0x20, 0x5d, 0x6a, - 0x12, 0x4c, 0x00, 0x2d, 0x01, 0xd0, 0x20, 0x78, - 0x00, 0xe0, 0x20, 0x5c, 0xff, 0x24, 0xa8, 0x34, - 0xc4, 0x40, 0x3c, 0x00, 0xfc, 0xf3, 0x00, 0x00, - 0x9c, 0x60, 0xf5, 0x24, 0xc4, 0x40, 0x9c, 0x61, - 0xfd, 0x24, 0xc4, 0x40, 0xdc, 0x61, 0xff, 0x24, - 0x29, 0x34, 0xc4, 0x40, 0x5c, 0x61, 0xff, 0x24, - 0x53, 0x34, 0xc4, 0x40, 0x00, 0x20, 0x0c, 0x33, - 0x11, 0xc3, 0x00, 0x29, 0x05, 0xd0, 0x00, 0x2a, - 0x03, 0xdc, 0x02, 0x21, 0x50, 0x42, 0x00, 0xf0, - 0x65, 0xfb, 0xb0, 0xbd, 0xac, 0x7e, 0x01, 0x00, - 0xb8, 0x52, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xf4, - 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c, 0x13, 0x48, - 0x21, 0x1c, 0xff, 0x31, 0x69, 0x31, 0x0e, 0xc9, - 0x0e, 0xc0, 0x21, 0x1c, 0xff, 0x31, 0x24, 0x22, - 0x75, 0x31, 0x0f, 0x48, 0xf1, 0xf7, 0x51, 0xf8, - 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x22, 0x99, 0x31, - 0x0d, 0x48, 0xf1, 0xf7, 0xa6, 0xf8, 0xfc, 0xf7, - 0xa2, 0xff, 0x21, 0x1c, 0xff, 0x31, 0x10, 0x22, - 0xd5, 0x31, 0x09, 0x48, 0xf1, 0xf7, 0x3c, 0x00, - 0x74, 0xf4, 0x00, 0x00, 0x41, 0xf8, 0x21, 0x1c, - 0xff, 0x31, 0x28, 0x22, 0xe5, 0x31, 0x07, 0x48, - 0xf1, 0xf7, 0x96, 0xf8, 0x10, 0xbd, 0x00, 0x00, - 0x40, 0x63, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x0c, 0x80, 0x07, 0x00, 0x30, 0x80, 0x07, 0x00, - 0x80, 0x80, 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, - 0xf8, 0xb5, 0x00, 0x28, 0x59, 0xd0, 0x04, 0xf0, - 0x4b, 0xf9, 0xf8, 0xf7, 0xb3, 0xfb, 0x00, 0x22, - 0x3c, 0x00, 0xb0, 0xf4, 0x00, 0x00, 0x01, 0x21, - 0x13, 0x20, 0x04, 0xf0, 0x7c, 0xf9, 0x2a, 0x49, - 0x29, 0x48, 0x49, 0x6c, 0x01, 0x60, 0x00, 0x21, - 0x29, 0x48, 0xc9, 0x43, 0x41, 0x60, 0x26, 0x4c, - 0x14, 0x34, 0x61, 0x6c, 0x81, 0x60, 0xa1, 0x6c, - 0xc1, 0x60, 0x00, 0x20, 0x25, 0x4d, 0x02, 0x26, - 0x01, 0x01, 0x6e, 0x50, 0x0a, 0x19, 0x4f, 0x19, - 0x50, 0x32, 0x04, 0x37, 0x0e, 0xca, 0x01, 0x30, - 0x08, 0x28, 0x3c, 0x00, 0xec, 0xf4, 0x00, 0x00, - 0x0e, 0xc7, 0xf4, 0xdb, 0x14, 0x22, 0x21, 0x1c, - 0xcc, 0x31, 0x1e, 0x48, 0xf1, 0xf7, 0x5a, 0xf8, - 0x1d, 0x48, 0x81, 0x78, 0x09, 0x09, 0x09, 0x01, - 0x81, 0x70, 0x00, 0x21, 0xc1, 0x70, 0x41, 0x70, - 0x21, 0x1c, 0xe0, 0x31, 0x0a, 0x78, 0x02, 0x70, - 0x49, 0x78, 0x41, 0x70, 0x21, 0x1c, 0xe8, 0x31, - 0x30, 0x22, 0x08, 0x30, 0xf1, 0xf7, 0x46, 0xf8, - 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x00, 0x28, 0xf5, - 0x00, 0x00, 0x50, 0x22, 0x19, 0x31, 0x12, 0x48, - 0xf1, 0xf7, 0x3f, 0xf8, 0x83, 0x20, 0x80, 0x00, - 0x14, 0x22, 0x21, 0x18, 0x10, 0x48, 0xf1, 0xf7, - 0x38, 0xf8, 0x11, 0x20, 0x40, 0x01, 0x84, 0x22, - 0x21, 0x18, 0x0d, 0x48, 0xf1, 0xf7, 0x31, 0xf8, - 0xff, 0xf7, 0x73, 0xff, 0x20, 0x1c, 0xf1, 0xf7, - 0x28, 0xfd, 0xf8, 0xbd, 0xff, 0xf7, 0x6d, 0xff, - 0xfb, 0xe7, 0x08, 0x20, 0x07, 0x00, 0x3c, 0x00, - 0x64, 0xf5, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00, - 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x00, 0x90, 0x07, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x18, 0x48, 0xc0, 0x68, 0x00, 0x28, 0x25, 0xd0, - 0x16, 0x4e, 0x01, 0x36, 0x74, 0x78, 0x30, 0x78, - 0x27, 0x1a, 0x79, 0x19, 0x20, 0x1c, 0xf1, 0xf7, - 0x3c, 0x00, 0xa0, 0xf5, 0x00, 0x00, 0x4b, 0xf8, - 0x00, 0x90, 0x29, 0x1c, 0x20, 0x1c, 0xf1, 0xf7, - 0xb2, 0xf8, 0xc1, 0x19, 0x20, 0x1c, 0xf1, 0xf7, - 0x42, 0xf8, 0x60, 0x1a, 0x30, 0x70, 0x70, 0x1e, - 0x80, 0x68, 0x00, 0x28, 0x0d, 0xd0, 0x53, 0x36, - 0xf4, 0x78, 0x00, 0x99, 0x20, 0x1c, 0xf1, 0xf7, - 0xa2, 0xf8, 0xb1, 0x78, 0x61, 0x1a, 0x41, 0x18, - 0x20, 0x1c, 0xf1, 0xf7, 0x9c, 0xf8, 0x60, 0x1a, - 0xb0, 0x70, 0x3c, 0x00, 0xdc, 0xf5, 0x00, 0x00, - 0x03, 0x48, 0x5c, 0x30, 0x01, 0x69, 0xc2, 0x68, - 0x69, 0x43, 0x51, 0x18, 0xc1, 0x60, 0xf8, 0xbd, - 0x44, 0x7d, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x4d, - 0xe8, 0x68, 0x29, 0x69, 0x40, 0x18, 0x7d, 0x21, - 0x09, 0x01, 0x44, 0x18, 0x20, 0x1c, 0x03, 0xf0, - 0x0b, 0xfb, 0x00, 0x28, 0x0a, 0xd0, 0x03, 0xf0, - 0xcf, 0xfb, 0x01, 0x1b, 0x28, 0x69, 0xf1, 0xf7, - 0x7d, 0xf8, 0x01, 0x30, 0x3c, 0x00, 0x18, 0xf6, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7, - 0xb2, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xa0, 0x7d, - 0x01, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x60, 0x68, - 0x80, 0x25, 0xa8, 0x43, 0x60, 0x60, 0x20, 0x68, - 0x28, 0x43, 0x20, 0x60, 0x0d, 0x4e, 0x30, 0x1c, - 0x10, 0x30, 0xf3, 0xf7, 0xc8, 0xfc, 0x00, 0x28, - 0x03, 0xd1, 0x07, 0x21, 0x85, 0x20, 0xf1, 0xf7, - 0x2a, 0xfe, 0x08, 0x48, 0x00, 0x21, 0x3c, 0x00, - 0x54, 0xf6, 0x00, 0x00, 0x80, 0x68, 0x41, 0x63, - 0xc0, 0x6c, 0x10, 0x30, 0x70, 0x61, 0x01, 0x20, - 0x30, 0x61, 0x20, 0x68, 0xa8, 0x43, 0x20, 0x60, - 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x00, 0x07, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x24, 0x7e, 0x01, 0x00, - 0x01, 0x1c, 0x00, 0x20, 0x05, 0x29, 0x80, 0xb5, - 0x09, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, - 0x3c, 0x00, 0x90, 0xf6, 0x00, 0x00, 0x03, 0x00, - 0xff, 0xf7, 0xcf, 0xfc, 0x80, 0xbd, 0x01, 0x22, - 0x92, 0x02, 0x80, 0xb5, 0x00, 0x21, 0x07, 0x20, - 0x04, 0xf0, 0xab, 0xf9, 0x80, 0xbd, 0x80, 0xb5, - 0x40, 0x22, 0x00, 0x21, 0x00, 0x20, 0x04, 0xf0, - 0xa4, 0xf9, 0x03, 0x22, 0x00, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x70, 0xb5, - 0x0e, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x08, 0x28, - 0x0e, 0xd1, 0x3c, 0x00, 0xcc, 0xf6, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0xfc, 0x0e, 0x28, 0x01, 0xd1, - 0x14, 0x20, 0x00, 0xe0, 0x10, 0x20, 0xe1, 0x03, - 0x00, 0xd5, 0x01, 0x38, 0xc0, 0x06, 0x0a, 0x49, - 0xc0, 0x0e, 0x88, 0x71, 0x08, 0xe0, 0x09, 0x2d, - 0x06, 0xd1, 0xa0, 0x04, 0x01, 0xd5, 0x00, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0xf3, 0xf7, 0xb0, 0xf9, - 0x34, 0x40, 0x21, 0x1c, 0x32, 0x1c, 0x28, 0x1c, - 0x04, 0xf0, 0x7a, 0xf9, 0x3c, 0x00, 0x08, 0xf7, - 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x80, - 0x07, 0x00, 0x70, 0xb5, 0x00, 0x24, 0x13, 0x29, - 0x11, 0xd8, 0x00, 0x28, 0x01, 0xd1, 0x08, 0x4e, - 0x08, 0x25, 0x01, 0x28, 0x01, 0xd1, 0x07, 0x4e, - 0x09, 0x25, 0x00, 0xf0, 0x78, 0xfa, 0x00, 0x28, - 0x05, 0xd0, 0x02, 0x1c, 0x31, 0x1c, 0x28, 0x1c, - 0xff, 0xf7, 0xc3, 0xff, 0x01, 0x24, 0x20, 0x1c, - 0x70, 0xbd, 0xf8, 0xff, 0x07, 0x00, 0x3c, 0x00, - 0x44, 0xf7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x01, 0x22, 0xd2, 0x02, 0x80, 0xb5, 0x00, 0x21, - 0x07, 0x20, 0x04, 0xf0, 0x53, 0xf9, 0x80, 0xbd, - 0x0f, 0x22, 0x12, 0x04, 0x07, 0x21, 0x49, 0x04, - 0x80, 0xb5, 0x09, 0x20, 0x04, 0xf0, 0x4a, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, - 0x04, 0x20, 0x04, 0xf0, 0x1b, 0xfc, 0x40, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x17, 0xfc, 0x04, 0x49, - 0x3c, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x20, - 0x88, 0x60, 0x02, 0x48, 0x09, 0x69, 0x20, 0x30, - 0xff, 0xf7, 0x09, 0xfe, 0x80, 0xbd, 0x64, 0x73, - 0x01, 0x00, 0xb0, 0xb5, 0x60, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0x07, 0xfc, 0x11, 0x4d, 0x00, 0x24, - 0x00, 0x22, 0x04, 0x20, 0x29, 0x5d, 0x04, 0xf0, - 0x28, 0xf9, 0x0c, 0x20, 0x03, 0xf0, 0x9b, 0xfb, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x05, 0x2c, - 0xf2, 0xd3, 0x3c, 0x00, 0xbc, 0xf7, 0x00, 0x00, - 0x0f, 0x22, 0x00, 0x21, 0x0a, 0x20, 0x04, 0xf0, - 0x1b, 0xf9, 0x61, 0x21, 0x00, 0x20, 0x04, 0xf0, - 0xef, 0xfb, 0x06, 0x49, 0x01, 0x20, 0x88, 0x60, - 0x04, 0x48, 0x09, 0x69, 0x20, 0x30, 0xff, 0xf7, - 0xcd, 0xfd, 0xff, 0x20, 0x2d, 0x30, 0xb0, 0xbd, - 0xa8, 0x58, 0x01, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x12, 0x48, 0xc6, 0x70, - 0x01, 0x20, 0xff, 0xf7, 0x3c, 0x00, 0xf8, 0xf7, - 0x00, 0x00, 0xfd, 0xfb, 0x01, 0x27, 0xbf, 0x02, - 0x04, 0x1c, 0xb8, 0x43, 0x01, 0x1c, 0x01, 0x20, - 0x04, 0xf0, 0xd1, 0xfb, 0x03, 0x20, 0xff, 0xf7, - 0xf2, 0xfb, 0x05, 0x1c, 0xb8, 0x43, 0x01, 0x1c, - 0x03, 0x20, 0x04, 0xf0, 0xc8, 0xfb, 0x30, 0x1c, - 0x00, 0xf0, 0x9f, 0xf9, 0x00, 0xf0, 0x57, 0xf8, - 0x21, 0x1c, 0x01, 0x20, 0x04, 0xf0, 0xbf, 0xfb, - 0x29, 0x1c, 0x03, 0x20, 0x04, 0xf0, 0x3c, 0x00, - 0x34, 0xf8, 0x00, 0x00, 0xbb, 0xfb, 0x00, 0x20, - 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x22, 0x40, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0xd8, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x01, 0x24, 0x09, 0x20, - 0xff, 0xf7, 0xcc, 0xfb, 0x0f, 0x21, 0x09, 0x04, - 0x88, 0x43, 0x03, 0x21, 0x89, 0x04, 0xe2, 0x04, - 0x05, 0x2d, 0x12, 0x4e, 0x20, 0xd2, 0x02, 0xa3, - 0x3c, 0x00, 0x70, 0xf8, 0x00, 0x00, 0x5b, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x09, - 0x0c, 0x10, 0x03, 0x00, 0x03, 0x21, 0x09, 0x04, - 0x0c, 0xe0, 0x01, 0x21, 0x09, 0x04, 0x09, 0xe0, - 0x01, 0x21, 0x49, 0x04, 0x06, 0xe0, 0xf3, 0x68, - 0x04, 0x2b, 0x05, 0xd9, 0x02, 0xe0, 0xf3, 0x68, - 0x04, 0x2b, 0x01, 0xd8, 0x01, 0x43, 0x01, 0xe0, - 0x10, 0x43, 0x01, 0x1c, 0x09, 0x20, 0x04, 0xf0, - 0x80, 0xfb, 0x3c, 0x00, 0xac, 0xf8, 0x00, 0x00, - 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x24, 0xfb, 0xe7, - 0x64, 0x73, 0x01, 0x00, 0x01, 0x21, 0xc9, 0x05, - 0x00, 0x28, 0x80, 0xb5, 0x02, 0xd0, 0x0a, 0x1c, - 0x00, 0x21, 0x00, 0xe0, 0x00, 0x22, 0x04, 0x20, - 0x04, 0xf0, 0x96, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0xf0, 0xb5, 0x91, 0xb0, 0x00, 0x26, 0x40, 0x21, - 0x01, 0xa8, 0xf0, 0xf7, 0xdd, 0xfd, 0x2a, 0x4f, - 0xb8, 0x79, 0x01, 0x22, 0x3c, 0x00, 0xe8, 0xf8, - 0x00, 0x00, 0x52, 0x03, 0x00, 0x90, 0x00, 0x21, - 0x06, 0x20, 0x04, 0xf0, 0x84, 0xf8, 0x60, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x58, 0xfb, 0x61, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x54, 0xfb, 0x08, 0x20, - 0x03, 0xf0, 0xef, 0xfa, 0x00, 0x24, 0x0f, 0x20, - 0xff, 0xf7, 0x71, 0xfb, 0x40, 0x05, 0x05, 0x0f, - 0xa8, 0x00, 0x01, 0xa9, 0x09, 0x58, 0x01, 0xaa, - 0x01, 0x31, 0x01, 0x34, 0x0c, 0x2c, 0x3c, 0x00, - 0x24, 0xf9, 0x00, 0x00, 0x11, 0x50, 0xf1, 0xd3, - 0x00, 0x20, 0x81, 0x00, 0x01, 0xaa, 0x51, 0x58, - 0xb1, 0x42, 0x01, 0xd9, 0x0e, 0x1c, 0x05, 0x1c, - 0x01, 0x30, 0x10, 0x28, 0xf5, 0xd3, 0x06, 0x20, - 0xff, 0xf7, 0x58, 0xfb, 0x0f, 0x21, 0x49, 0x02, - 0x88, 0x43, 0x69, 0x02, 0x08, 0x43, 0x01, 0x21, - 0x49, 0x03, 0x01, 0x43, 0x06, 0x20, 0x04, 0xf0, - 0x29, 0xfb, 0x0d, 0x48, 0x84, 0x68, 0x64, 0x34, - 0x3c, 0x00, 0x60, 0xf9, 0x00, 0x00, 0x08, 0xe0, - 0x20, 0x1c, 0x03, 0xf0, 0x5a, 0xf9, 0x00, 0x28, - 0x03, 0xd0, 0x01, 0x21, 0x95, 0x20, 0xf1, 0xf7, - 0x98, 0xfc, 0x0f, 0x20, 0xff, 0xf7, 0x3d, 0xfb, - 0x00, 0x04, 0xf1, 0xd5, 0x87, 0x20, 0x03, 0xf0, - 0xb2, 0xfa, 0x00, 0x98, 0xb8, 0x71, 0x11, 0xb0, - 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x10, 0xb5, 0x17, 0x4c, 0x61, 0x69, - 0x00, 0x29, 0x3c, 0x00, 0x9c, 0xf9, 0x00, 0x00, - 0x04, 0xd0, 0x0a, 0x21, 0x13, 0x20, 0x03, 0xf0, - 0x47, 0xfe, 0x10, 0xbd, 0x01, 0x1c, 0x12, 0x48, - 0x01, 0x29, 0x00, 0x78, 0x0c, 0xd0, 0x11, 0x29, - 0xf7, 0xd1, 0x05, 0x28, 0x03, 0xd1, 0x01, 0x21, - 0x13, 0x20, 0xf1, 0xf7, 0x71, 0xfc, 0x20, 0x78, - 0x07, 0x28, 0xee, 0xd1, 0x02, 0x21, 0x0a, 0xe0, - 0x05, 0x28, 0x07, 0xd0, 0x06, 0x28, 0x0a, 0xd0, - 0x07, 0x28, 0xf7, 0xd0, 0x3c, 0x00, 0xd8, 0xf9, - 0x00, 0x00, 0x08, 0x28, 0xe4, 0xd1, 0x00, 0x20, - 0x05, 0xe0, 0x01, 0x21, 0x13, 0x20, 0xf1, 0xf7, - 0x5e, 0xfc, 0x10, 0xbd, 0x01, 0x20, 0x02, 0xf0, - 0x6c, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78, - 0x01, 0x00, 0x0d, 0x49, 0x80, 0xb5, 0x09, 0x78, - 0x03, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x0b, 0xd0, - 0x07, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x07, 0xd0, - 0x02, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x3c, 0x00, - 0x14, 0xfa, 0x00, 0x00, 0x03, 0xd1, 0x05, 0x29, - 0x09, 0xd1, 0x00, 0x28, 0x07, 0xd0, 0x00, 0x20, - 0xfc, 0xf7, 0x28, 0xfd, 0x00, 0x22, 0x13, 0x21, - 0x11, 0x20, 0x03, 0xf0, 0xc1, 0xfe, 0x80, 0xbd, - 0x7c, 0x78, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0x08, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xde, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1, 0xf1, 0xf7, - 0x3c, 0x00, 0x50, 0xfa, 0x00, 0x00, 0x33, 0xff, - 0x05, 0x49, 0x05, 0x4a, 0x08, 0x68, 0x50, 0x61, - 0x48, 0x68, 0x90, 0x61, 0x01, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xb0, 0x58, - 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x48, - 0x80, 0xb5, 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1, - 0xf1, 0xf7, 0x1d, 0xff, 0x05, 0x49, 0x05, 0x4a, - 0x08, 0x68, 0x90, 0x61, 0x48, 0x68, 0x50, 0x61, - 0x01, 0x20, 0x3c, 0x00, 0x8c, 0xfa, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x11, 0xb5, 0x00, 0xab, 0x59, 0x78, 0x14, 0x48, - 0x01, 0x23, 0xc0, 0x56, 0x00, 0x22, 0x09, 0x18, - 0x0b, 0x06, 0x1b, 0x16, 0x13, 0x21, 0x13, 0x2b, - 0x02, 0xdd, 0x00, 0xab, 0x59, 0x70, 0x07, 0xe0, - 0x00, 0x2b, 0x02, 0xda, 0x00, 0xab, 0x5a, 0x70, - 0x02, 0xe0, 0x1c, 0x1c, 0x3c, 0x00, 0xc8, 0xfa, - 0x00, 0x00, 0x00, 0xab, 0x5c, 0x70, 0x00, 0xab, - 0x1b, 0x78, 0x18, 0x18, 0x00, 0x06, 0x00, 0x16, - 0x13, 0x28, 0x02, 0xdd, 0x00, 0xab, 0x19, 0x70, - 0x06, 0xe0, 0x00, 0x28, 0x02, 0xda, 0x00, 0xab, - 0x1a, 0x70, 0x01, 0xe0, 0x00, 0xab, 0x18, 0x70, - 0x00, 0x98, 0x18, 0xbd, 0x00, 0x00, 0x64, 0x73, - 0x01, 0x00, 0x38, 0xb5, 0x0c, 0x1c, 0x15, 0x49, - 0x00, 0xab, 0x49, 0x68, 0x13, 0x25, 0x3c, 0x00, - 0x04, 0xfb, 0x00, 0x00, 0x00, 0x91, 0x59, 0x78, - 0x09, 0x18, 0x59, 0x70, 0x19, 0x78, 0x08, 0x18, - 0x18, 0x70, 0x19, 0x88, 0x10, 0x48, 0x02, 0x2c, - 0xc1, 0x80, 0x01, 0xd0, 0x00, 0x2c, 0x0b, 0xd1, - 0x00, 0xab, 0x18, 0x78, 0x13, 0x28, 0x00, 0xd9, - 0x1d, 0x70, 0x00, 0xab, 0x19, 0x78, 0x00, 0x20, - 0xff, 0xf7, 0xee, 0xfd, 0x02, 0x2c, 0x01, 0xd0, - 0x01, 0x2c, 0x09, 0xd1, 0x00, 0xab, 0x58, 0x78, - 0x3c, 0x00, 0x40, 0xfb, 0x00, 0x00, 0x13, 0x28, - 0x00, 0xd9, 0x5d, 0x70, 0x00, 0xab, 0x59, 0x78, - 0x01, 0x20, 0xff, 0xf7, 0xe0, 0xfd, 0x38, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xa0, 0x58, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0e, 0x28, 0x13, 0x4d, 0x04, 0xd0, - 0x12, 0x49, 0xa0, 0x00, 0x00, 0x19, 0x4d, 0x39, - 0x45, 0x18, 0x06, 0x20, 0xff, 0xf7, 0x3d, 0xfa, - 0x0f, 0x49, 0x3c, 0x00, 0x7c, 0xfb, 0x00, 0x00, - 0xe0, 0x22, 0x09, 0x19, 0x10, 0x39, 0xc9, 0x7b, - 0x90, 0x43, 0x49, 0x01, 0x11, 0x40, 0x01, 0x43, - 0x06, 0x20, 0x04, 0xf0, 0x0d, 0xfa, 0x29, 0x1c, - 0x05, 0x20, 0x09, 0x4a, 0x03, 0xf0, 0x30, 0xff, - 0x08, 0x48, 0x1f, 0x22, 0x00, 0x19, 0x10, 0x38, - 0xc0, 0x7b, 0xc1, 0x04, 0xd2, 0x04, 0x08, 0x20, - 0x03, 0xf0, 0x26, 0xff, 0xb0, 0xbd, 0x00, 0x00, - 0xb4, 0x09, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xfb, - 0x00, 0x00, 0x14, 0x45, 0x01, 0x00, 0xff, 0x0f, - 0x00, 0x00, 0xc0, 0x58, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x49, 0x00, 0x28, - 0x01, 0xd1, 0x08, 0x68, 0x80, 0xbd, 0x01, 0x28, - 0x01, 0xd1, 0x48, 0x68, 0x80, 0xbd, 0xf1, 0xf7, - 0x90, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x7c, 0x73, - 0x01, 0x00, 0x01, 0x48, 0x40, 0x68, 0x70, 0x47, - 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0xfb, 0x00, 0x00, 0x04, 0x48, 0x01, 0x23, - 0x04, 0x49, 0xc0, 0x56, 0xc9, 0x56, 0x40, 0x18, - 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00, - 0xa0, 0x58, 0x01, 0x00, 0xa2, 0x58, 0x01, 0x00, - 0x01, 0x48, 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, - 0x64, 0x73, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x0e, 0x1c, 0x00, 0xf0, 0x55, 0xf9, 0x04, 0x1c, - 0x00, 0xf0, 0x58, 0xf9, 0x00, 0x28, 0x2c, 0xd0, - 0x3c, 0x00, 0x30, 0xfc, 0x00, 0x00, 0xb3, 0x00, - 0x60, 0x1e, 0x00, 0x2d, 0x1c, 0x4e, 0x19, 0x49, - 0x1a, 0x4a, 0x06, 0xd1, 0x0b, 0x25, 0x0e, 0x2c, - 0x00, 0xd1, 0x19, 0x4a, 0xd2, 0x58, 0x08, 0x56, - 0x08, 0xe0, 0x01, 0x2d, 0x1c, 0xd1, 0x9a, 0x18, - 0x04, 0x36, 0x08, 0x18, 0x08, 0x25, 0x0e, 0x23, - 0x12, 0x6d, 0xc0, 0x56, 0x07, 0x1c, 0x47, 0x43, - 0xfb, 0x00, 0xdf, 0x19, 0x12, 0x4b, 0x3f, 0x21, - 0x58, 0x43, 0x3c, 0x00, 0x6c, 0xfc, 0x00, 0x00, - 0x11, 0x4b, 0xa9, 0x40, 0x0c, 0x1c, 0x38, 0x18, - 0xc0, 0x18, 0x14, 0x40, 0xec, 0x40, 0xc0, 0x11, - 0x60, 0x43, 0x1b, 0x0a, 0xc0, 0x18, 0x80, 0x12, - 0x03, 0xd1, 0x01, 0x20, 0x04, 0xe0, 0x00, 0x20, - 0xf8, 0xbd, 0x3f, 0x28, 0x00, 0xdd, 0x3f, 0x20, - 0x30, 0x60, 0xa8, 0x40, 0x08, 0x40, 0x8a, 0x43, - 0x10, 0x43, 0xf5, 0xe7, 0xcc, 0x59, 0x01, 0x00, - 0xdc, 0x58, 0x01, 0x00, 0x3c, 0x00, 0xa8, 0xfc, - 0x00, 0x00, 0x7c, 0x73, 0x01, 0x00, 0x7c, 0x59, - 0x01, 0x00, 0x06, 0x06, 0x00, 0x00, 0x26, 0x00, - 0x02, 0x00, 0x03, 0x48, 0x08, 0xb5, 0xc0, 0x88, - 0x00, 0xab, 0x18, 0x80, 0x00, 0x98, 0x08, 0xbd, - 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0xb0, 0xb5, - 0x0b, 0x4d, 0x09, 0x4c, 0x0e, 0x20, 0x6c, 0x60, - 0xff, 0xf7, 0x8d, 0xf9, 0x09, 0x49, 0x02, 0x1c, - 0xc8, 0x60, 0x01, 0x06, 0x09, 0x0e, 0x3c, 0x00, - 0xe4, 0xfc, 0x00, 0x00, 0x13, 0x3a, 0x02, 0x2a, - 0x02, 0xd9, 0x17, 0x38, 0x04, 0x28, 0x00, 0xd8, - 0x00, 0x21, 0x08, 0x1c, 0x6c, 0x60, 0xb0, 0xbd, - 0x04, 0x18, 0x02, 0x00, 0x60, 0x00, 0x07, 0x00, - 0x64, 0x73, 0x01, 0x00, 0x0a, 0x48, 0x98, 0xb5, - 0x02, 0x78, 0x13, 0x21, 0x14, 0x2a, 0x00, 0xd3, - 0x01, 0x70, 0x42, 0x78, 0x14, 0x2a, 0x00, 0xd3, - 0x41, 0x70, 0x06, 0x4c, 0x60, 0x68, 0xff, 0xf7, - 0x3c, 0x00, 0x20, 0xfd, 0x00, 0x00, 0xbd, 0xfe, - 0x00, 0x90, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80, - 0x00, 0xf0, 0x75, 0xff, 0x98, 0xbd, 0xa4, 0x58, - 0x01, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x41, 0x78, 0x01, 0x20, 0xff, 0xf7, - 0xe6, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xa6, 0x58, - 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x01, 0x78, - 0x00, 0x20, 0xff, 0xf7, 0xdc, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xfd, 0x00, 0x00, - 0xa6, 0x58, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x4d, - 0x00, 0x24, 0x20, 0x1c, 0xff, 0xf7, 0x44, 0xf9, - 0x01, 0x34, 0x10, 0x2c, 0x01, 0xc5, 0xf8, 0xd3, - 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x44, 0x01, 0x00, - 0x04, 0x49, 0x80, 0xb5, 0x88, 0x70, 0x04, 0x49, - 0x80, 0x00, 0x09, 0x58, 0x07, 0x20, 0x04, 0xf0, - 0x0f, 0xf9, 0x80, 0xbd, 0x64, 0x73, 0x01, 0x00, - 0xd0, 0x58, 0x01, 0x00, 0x3c, 0x00, 0x98, 0xfd, - 0x00, 0x00, 0xb0, 0xb5, 0x3f, 0x24, 0x02, 0x1c, - 0x00, 0x2a, 0x01, 0xd1, 0x08, 0x20, 0x0b, 0x23, - 0x01, 0x2a, 0x01, 0xd1, 0x09, 0x20, 0x08, 0x23, - 0x25, 0x1c, 0x9d, 0x40, 0x00, 0x29, 0x00, 0xd1, - 0x01, 0x21, 0x3f, 0x29, 0x00, 0xd9, 0x21, 0x1c, - 0x99, 0x40, 0x0a, 0x1c, 0x29, 0x1c, 0xff, 0xf7, - 0x7c, 0xfc, 0xb0, 0xbd, 0x00, 0x00, 0x91, 0xb5, - 0x12, 0x49, 0x00, 0xab, 0x1a, 0x78, 0x3c, 0x00, - 0xd4, 0xfd, 0x00, 0x00, 0x08, 0x78, 0x11, 0x4c, - 0x80, 0x18, 0x00, 0x06, 0x00, 0x0e, 0x20, 0x70, - 0x49, 0x78, 0x5a, 0x78, 0x89, 0x18, 0x09, 0x06, - 0x09, 0x0e, 0x13, 0x22, 0x13, 0x28, 0x61, 0x70, - 0x00, 0xd9, 0x22, 0x70, 0x13, 0x29, 0x00, 0xd9, - 0x62, 0x70, 0x08, 0x49, 0x08, 0x48, 0x06, 0x39, - 0xc9, 0x88, 0x81, 0x80, 0x21, 0x78, 0x00, 0x20, - 0xff, 0xf7, 0x82, 0xfc, 0x61, 0x78, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0xfe, 0x00, 0x00, 0xff, 0xf7, - 0x7e, 0xfc, 0x98, 0xbd, 0x00, 0x00, 0xa4, 0x58, - 0x01, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x64, 0x73, - 0x01, 0x00, 0x70, 0xb5, 0x1d, 0x4d, 0x04, 0x1c, - 0x28, 0x78, 0x0e, 0x1c, 0x03, 0x28, 0x03, 0xd1, - 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7, 0x35, 0xfa, - 0x20, 0x1c, 0x00, 0xf0, 0x4e, 0xf8, 0x00, 0x28, - 0x25, 0xd0, 0x28, 0x78, 0x01, 0x28, 0x0a, 0xd1, - 0x68, 0x68, 0x3c, 0x00, 0x4c, 0xfe, 0x00, 0x00, - 0x00, 0x28, 0x07, 0xd0, 0x01, 0x21, 0x11, 0x20, - 0x03, 0xf0, 0xee, 0xfb, 0x01, 0x20, 0x69, 0x68, - 0xf0, 0xf7, 0xbd, 0xfa, 0x6c, 0x70, 0x6e, 0x60, - 0x20, 0x1c, 0xff, 0xf7, 0xc1, 0xfc, 0x04, 0x1c, - 0x00, 0xf0, 0xd4, 0xfe, 0x00, 0x2c, 0x02, 0xd0, - 0x68, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xf6, 0xf7, - 0xd9, 0xf8, 0x70, 0xbd, 0x01, 0x20, 0x28, 0x70, - 0x01, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x88, 0xfe, - 0x00, 0x00, 0x11, 0x20, 0x03, 0xf0, 0x9f, 0xfb, - 0x70, 0xbd, 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7, - 0x06, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x9c, 0x73, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x05, 0xd1, - 0x00, 0x29, 0x04, 0xd0, 0x01, 0x29, 0x01, 0xd1, - 0xf6, 0xf7, 0xbf, 0xf8, 0x80, 0xbd, 0x05, 0x49, - 0x08, 0x78, 0x03, 0x28, 0x02, 0xd0, 0x00, 0x20, - 0x08, 0x70, 0x80, 0xbd, 0x03, 0x21, 0x3c, 0x00, - 0xc4, 0xfe, 0x00, 0x00, 0x11, 0x20, 0xf1, 0xf7, - 0xed, 0xf9, 0x80, 0xbd, 0x9c, 0x73, 0x01, 0x00, - 0x01, 0x48, 0x40, 0x78, 0x70, 0x47, 0x00, 0x00, - 0x9c, 0x73, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x39, - 0x01, 0x20, 0x0e, 0x29, 0x00, 0xd3, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x20, 0x78, 0x01, 0x28, 0x0e, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x0d, 0xd0, 0x01, 0x21, 0x11, 0x20, - 0x3c, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0xf0, - 0x98, 0xfb, 0x01, 0x20, 0x61, 0x68, 0xf0, 0xf7, - 0x67, 0xfa, 0x00, 0x20, 0x60, 0x60, 0x20, 0x70, - 0x01, 0xe0, 0x03, 0x28, 0x0e, 0xd0, 0x00, 0x21, - 0x11, 0x20, 0x03, 0xf0, 0x8a, 0xfb, 0xff, 0xf7, - 0x24, 0xfc, 0xff, 0xf7, 0xc0, 0xfb, 0x05, 0x49, - 0x08, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x08, 0x73, - 0x03, 0x20, 0x20, 0x70, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xff, 0x00, 0x00, - 0x9c, 0x73, 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x0d, 0x4c, 0x20, 0x78, 0x03, 0x28, - 0x13, 0xd1, 0x00, 0x20, 0x20, 0x70, 0x0b, 0x48, - 0x01, 0x7b, 0x01, 0x22, 0x11, 0x43, 0x01, 0x73, - 0xff, 0xf7, 0x70, 0xfc, 0xff, 0xf7, 0x18, 0xfc, - 0x00, 0x28, 0x06, 0xd0, 0x02, 0x21, 0x21, 0x70, - 0x01, 0x1c, 0x00, 0x22, 0x11, 0x20, 0x03, 0xf0, - 0x2b, 0xfb, 0x01, 0x20, 0x3c, 0x00, 0x78, 0xff, - 0x00, 0x00, 0x10, 0xbd, 0x00, 0x00, 0x9c, 0x73, - 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x80, 0xb5, - 0x05, 0x49, 0x00, 0x28, 0x04, 0xd0, 0x00, 0x20, - 0x08, 0x60, 0x03, 0xf0, 0x5a, 0xfa, 0x80, 0xbd, - 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd, 0x80, 0x5a, - 0x01, 0x00, 0xfe, 0xb5, 0x05, 0x1c, 0x80, 0x35, - 0x04, 0x1c, 0xa8, 0x68, 0x29, 0x79, 0x06, 0x68, - 0x20, 0x1c, 0xa0, 0x30, 0x02, 0x29, 0x3c, 0x00, - 0xb4, 0xff, 0x00, 0x00, 0x1c, 0xd1, 0x69, 0x79, - 0x08, 0x29, 0x01, 0xd0, 0x0c, 0x29, 0x17, 0xd1, - 0x01, 0x21, 0x61, 0x62, 0xa9, 0x68, 0x09, 0x68, - 0x09, 0x8b, 0x01, 0x82, 0xa9, 0x69, 0x01, 0x91, - 0x00, 0x8a, 0xc0, 0x06, 0x05, 0xd5, 0x60, 0x68, - 0x00, 0x88, 0x40, 0x05, 0x01, 0xd4, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x02, 0x90, 0x05, 0x20, - 0x01, 0xa9, 0x02, 0xf0, 0xb7, 0xf9, 0x02, 0xe0, - 0x3c, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x21, - 0x61, 0x62, 0x01, 0x82, 0xa9, 0x68, 0x1a, 0x23, - 0x0a, 0x89, 0x67, 0x6a, 0x18, 0x1c, 0x00, 0x2f, - 0x00, 0xd1, 0x18, 0x20, 0x10, 0x1a, 0x08, 0x81, - 0xa8, 0x68, 0x01, 0x68, 0x62, 0x6a, 0x00, 0x2a, - 0x00, 0xd1, 0x18, 0x23, 0xc9, 0x18, 0x01, 0x60, - 0xa8, 0x68, 0x41, 0xc4, 0x30, 0x88, 0x08, 0x3c, - 0x40, 0x04, 0x03, 0xd5, 0x20, 0x1c, 0xf7, 0xf7, - 0xbc, 0xf9, 0x3c, 0x00, 0x2c, 0x00, 0x01, 0x00, - 0xfe, 0xbd, 0x00, 0x21, 0xe1, 0x61, 0x30, 0x79, - 0xc0, 0x07, 0x03, 0xd4, 0x20, 0x1c, 0xf7, 0xf7, - 0x91, 0xfe, 0xf5, 0xe7, 0x20, 0x1c, 0xf7, 0xf7, - 0x43, 0xff, 0xf1, 0xe7, 0xf7, 0xb5, 0x05, 0x1c, - 0x0a, 0x30, 0x06, 0x1c, 0xf5, 0xf7, 0xa4, 0xfa, - 0x14, 0x4f, 0x04, 0x1c, 0x39, 0x88, 0xf2, 0xf7, - 0x83, 0xfe, 0x32, 0x88, 0x78, 0x68, 0x02, 0x80, - 0x72, 0x88, 0x02, 0x30, 0x3c, 0x00, 0x68, 0x00, - 0x01, 0x00, 0x02, 0x80, 0xb1, 0x88, 0x41, 0x80, - 0x69, 0x88, 0x02, 0x9a, 0x20, 0x1c, 0xfa, 0xf7, - 0xce, 0xfe, 0x0b, 0x4d, 0x08, 0x35, 0x68, 0x80, - 0xfb, 0xf7, 0x2b, 0xfe, 0x01, 0x21, 0x09, 0x03, - 0x00, 0x28, 0x28, 0x88, 0x01, 0xd0, 0x88, 0x43, - 0x00, 0xe0, 0x08, 0x43, 0x28, 0x80, 0x04, 0x48, - 0x00, 0x22, 0x00, 0x21, 0x14, 0x30, 0xf2, 0xf7, - 0x32, 0xfe, 0x20, 0x1c, 0xfc, 0xf7, 0x3c, 0x00, - 0xa4, 0x00, 0x01, 0x00, 0x85, 0xfa, 0xfe, 0xbd, - 0x24, 0x7b, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x11, 0x49, 0x20, 0x1c, 0xff, 0x30, 0x69, 0x30, - 0x0e, 0xc9, 0x0e, 0xc0, 0x20, 0x1c, 0xff, 0x30, - 0x24, 0x22, 0x75, 0x30, 0x0e, 0x49, 0xf0, 0xf7, - 0x17, 0xfa, 0x20, 0x1c, 0xff, 0x30, 0x3c, 0x22, - 0x99, 0x30, 0x0c, 0x49, 0xf0, 0xf7, 0x6c, 0xfa, - 0x20, 0x1c, 0xff, 0x30, 0x10, 0x22, 0xd5, 0x30, - 0x3c, 0x00, 0xe0, 0x00, 0x01, 0x00, 0x09, 0x49, - 0xf0, 0xf7, 0x09, 0xfa, 0x20, 0x1c, 0xff, 0x30, - 0x28, 0x22, 0xe5, 0x30, 0x07, 0x49, 0xf0, 0xf7, - 0x5e, 0xfa, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x80, - 0x07, 0x00, 0x40, 0x63, 0x01, 0x00, 0x0c, 0x80, - 0x07, 0x00, 0x30, 0x80, 0x07, 0x00, 0x80, 0x80, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xb0, 0xb5, - 0x00, 0x28, 0x3f, 0xd0, 0x21, 0x48, 0x41, 0x68, - 0x21, 0x4c, 0x3c, 0x00, 0x1c, 0x01, 0x01, 0x00, - 0x61, 0x60, 0xc1, 0x68, 0xe1, 0x60, 0x01, 0x69, - 0x21, 0x61, 0x80, 0x6a, 0xa0, 0x62, 0x1e, 0x49, - 0x1c, 0x48, 0x09, 0x68, 0x14, 0x38, 0x41, 0x64, - 0x1c, 0x48, 0x25, 0x1c, 0x3c, 0x35, 0x0f, 0xc8, - 0x0f, 0xc5, 0x20, 0x1c, 0x80, 0x22, 0x4c, 0x30, - 0x19, 0x49, 0xf0, 0xf7, 0x33, 0xfa, 0x14, 0x22, - 0x20, 0x1c, 0xcc, 0x30, 0x17, 0x49, 0xf0, 0xf7, - 0x2d, 0xfa, 0x38, 0x22, 0x3c, 0x00, 0x58, 0x01, - 0x01, 0x00, 0x20, 0x1c, 0xe0, 0x30, 0x15, 0x49, - 0xf0, 0xf7, 0x27, 0xfa, 0x20, 0x1c, 0xff, 0x30, - 0x50, 0x22, 0x19, 0x30, 0x13, 0x49, 0xf0, 0xf7, - 0x20, 0xfa, 0x83, 0x20, 0x80, 0x00, 0x14, 0x22, - 0x20, 0x18, 0x10, 0x49, 0xf0, 0xf7, 0x19, 0xfa, - 0x11, 0x20, 0x40, 0x01, 0x84, 0x22, 0x20, 0x18, - 0x0e, 0x49, 0xf0, 0xf7, 0x12, 0xfa, 0xff, 0xf7, - 0x8e, 0xff, 0xf8, 0xf7, 0x94, 0xfb, 0x3c, 0x00, - 0x94, 0x01, 0x01, 0x00, 0xb0, 0xbd, 0xff, 0xf7, - 0x89, 0xff, 0xb0, 0xbd, 0x00, 0x10, 0x07, 0x00, - 0x40, 0x63, 0x01, 0x00, 0x08, 0x20, 0x07, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00, - 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x00, 0x90, 0x07, 0x00, 0x0c, 0x49, 0x80, 0xb5, - 0x01, 0x20, 0x48, 0x60, 0x0a, 0x48, 0x14, 0x38, - 0x3c, 0x00, 0xd0, 0x01, 0x01, 0x00, 0x00, 0x78, - 0x01, 0x28, 0x04, 0xd0, 0x08, 0x48, 0x94, 0x38, - 0x40, 0x6f, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x20, - 0x00, 0xf0, 0x1f, 0xf8, 0x80, 0xbd, 0x08, 0x68, - 0x00, 0x28, 0xfb, 0xd0, 0x03, 0x48, 0xf2, 0xf7, - 0x7a, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x98, 0x66, - 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5, - 0x00, 0x28, 0x09, 0xd1, 0xf2, 0x21, 0x0f, 0x20, - 0x03, 0xf0, 0x3c, 0x00, 0x0c, 0x02, 0x01, 0x00, - 0x13, 0xfa, 0x00, 0x22, 0x0f, 0x21, 0xf1, 0x20, - 0x03, 0xf0, 0xcc, 0xfa, 0x80, 0xbd, 0x01, 0x20, - 0xf8, 0xf7, 0x6a, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x20, 0x00, 0xf0, - 0xc9, 0xf9, 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0, - 0xff, 0xf9, 0xff, 0xf7, 0x65, 0xf8, 0x0b, 0x49, - 0x00, 0x20, 0x48, 0x74, 0xfb, 0xf7, 0xe6, 0xfa, - 0x09, 0x48, 0x00, 0x68, 0x3c, 0x00, 0x48, 0x02, - 0x01, 0x00, 0x00, 0x28, 0x03, 0xdc, 0x02, 0x21, - 0x40, 0x42, 0xff, 0xf7, 0x52, 0xfc, 0x04, 0x48, - 0x14, 0x30, 0x00, 0x68, 0x00, 0x28, 0x02, 0xd0, - 0x20, 0x1c, 0xf2, 0xf7, 0x42, 0xfe, 0x10, 0xbd, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0xd4, 0x7e, - 0x01, 0x00, 0x06, 0x49, 0x80, 0xb5, 0x09, 0x78, - 0x04, 0x29, 0x05, 0xd0, 0x05, 0x29, 0x03, 0xd0, - 0x06, 0x29, 0x01, 0xd0, 0x07, 0x29, 0x3c, 0x00, - 0x84, 0x02, 0x01, 0x00, 0x01, 0xd1, 0xfe, 0xf7, - 0xbd, 0xfd, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00, - 0x10, 0xb5, 0x09, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x0b, 0xd1, 0x07, 0x48, 0x2c, 0x38, 0x00, 0x8a, - 0xc0, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x01, 0x20, - 0x62, 0x68, 0xf9, 0xf7, 0xc9, 0xfa, 0x01, 0x20, - 0xe0, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0x8c, 0xb5, 0x02, 0x1c, - 0x3c, 0x00, 0xc0, 0x02, 0x01, 0x00, 0x08, 0x1c, - 0x11, 0x1c, 0xfd, 0xf7, 0x28, 0xff, 0x01, 0x90, - 0x00, 0x28, 0x05, 0xd0, 0x17, 0x20, 0x00, 0xab, - 0x18, 0x80, 0x68, 0x46, 0xfd, 0xf7, 0xff, 0xf8, - 0x8c, 0xbd, 0xf1, 0xb5, 0x2e, 0x4c, 0xae, 0xb0, - 0x00, 0x25, 0x25, 0x63, 0x20, 0x69, 0x01, 0x28, - 0x03, 0xd1, 0x01, 0xa8, 0x01, 0xf0, 0xa1, 0xf8, - 0x4e, 0xe0, 0x01, 0x26, 0x28, 0x4f, 0x26, 0x70, - 0x50, 0x3f, 0x3c, 0x00, 0xfc, 0x02, 0x01, 0x00, - 0xb8, 0x69, 0xf8, 0xf7, 0x4f, 0xf8, 0x25, 0x49, - 0x2c, 0x39, 0x00, 0x28, 0x1d, 0xd0, 0xe0, 0x6a, - 0x01, 0x28, 0x1a, 0xd1, 0x08, 0x8a, 0x0f, 0x1c, - 0x80, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x02, 0x20, - 0x62, 0x68, 0xf9, 0xf7, 0x8f, 0xfa, 0x38, 0x8a, - 0x00, 0x07, 0x07, 0xd5, 0xe0, 0x68, 0x01, 0x28, - 0x04, 0xd1, 0x00, 0x21, 0x08, 0x20, 0x62, 0x68, - 0xf9, 0xf7, 0x84, 0xfa, 0x3c, 0x00, 0x38, 0x03, - 0x01, 0x00, 0x00, 0x22, 0x18, 0x21, 0x82, 0x20, - 0x26, 0x63, 0x03, 0xf0, 0x36, 0xfa, 0x25, 0xe0, - 0x08, 0x8a, 0x0e, 0x1c, 0x80, 0x07, 0x04, 0xd5, - 0x00, 0x21, 0x02, 0x20, 0x62, 0x68, 0xf9, 0xf7, - 0x74, 0xfa, 0x30, 0x8a, 0x00, 0x07, 0x07, 0xd5, - 0xe0, 0x68, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x21, - 0x08, 0x20, 0x62, 0x68, 0xf9, 0xf7, 0x69, 0xfa, - 0x30, 0x8a, 0x40, 0x07, 0x04, 0xd5, 0x3c, 0x00, - 0x74, 0x03, 0x01, 0x00, 0x00, 0x22, 0x00, 0x21, - 0x04, 0x20, 0xf9, 0xf7, 0x61, 0xfa, 0x2e, 0x98, - 0x01, 0x28, 0x04, 0xd0, 0x1e, 0x95, 0x09, 0x21, - 0x1b, 0xa8, 0xff, 0xf7, 0x97, 0xff, 0xe5, 0x62, - 0xbd, 0x61, 0xe5, 0x60, 0x2f, 0xb0, 0xf0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x07, 0x20, - 0xfe, 0xf7, 0xa0, 0xfe, 0x00, 0x21, 0x0f, 0x20, - 0x03, 0xf0, 0x44, 0xf9, 0x0c, 0x48, 0x01, 0x78, - 0x3c, 0x00, 0xb0, 0x03, 0x01, 0x00, 0x00, 0x29, - 0x0f, 0xd0, 0x02, 0x21, 0x01, 0x70, 0x88, 0x38, - 0x00, 0x78, 0x00, 0x28, 0x04, 0xd0, 0x07, 0x49, - 0x10, 0x31, 0x48, 0x7c, 0x01, 0x30, 0x48, 0x74, - 0xf2, 0x22, 0x0f, 0x20, 0x05, 0x49, 0x03, 0xf0, - 0xfc, 0xf8, 0x00, 0x22, 0x0f, 0x21, 0xf3, 0x20, - 0x03, 0xf0, 0xe9, 0xf9, 0x80, 0xbd, 0x74, 0x66, - 0x01, 0x00, 0x80, 0x84, 0x1e, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x3c, 0x00, 0xec, 0x03, 0x01, 0x00, - 0xf2, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0x20, 0xf9, - 0x01, 0x2c, 0x0a, 0xd1, 0x08, 0x48, 0x08, 0x49, - 0x00, 0x68, 0x14, 0x39, 0x00, 0x28, 0x05, 0xd0, - 0xc8, 0x78, 0x02, 0x28, 0x02, 0xd1, 0xf7, 0xf7, - 0xaf, 0xfa, 0x10, 0xbd, 0x00, 0x20, 0x48, 0x70, - 0x05, 0x20, 0xfe, 0xf7, 0x65, 0xfe, 0x10, 0xbd, - 0x98, 0x66, 0x01, 0x00, 0xf8, 0xb5, 0x28, 0x4e, - 0x30, 0x21, 0x35, 0x1c, 0x3c, 0x00, 0x28, 0x04, - 0x01, 0x00, 0x60, 0x35, 0x28, 0x89, 0x89, 0x5d, - 0x88, 0x42, 0x03, 0xd1, 0x00, 0x20, 0xff, 0xf7, - 0xf6, 0xfe, 0xf8, 0xbd, 0x34, 0x1c, 0x70, 0x34, - 0x01, 0x21, 0x21, 0x70, 0x41, 0x18, 0x80, 0x19, - 0x30, 0x30, 0x29, 0x81, 0x40, 0x78, 0x1d, 0x4f, - 0x18, 0x3f, 0x38, 0x70, 0x00, 0x28, 0x08, 0xd0, - 0x00, 0x21, 0xfb, 0xf7, 0xc2, 0xf9, 0x00, 0x28, - 0x07, 0xd1, 0x20, 0x78, 0xff, 0xf7, 0x3c, 0x00, - 0x64, 0x04, 0x01, 0x00, 0x9b, 0xff, 0xe7, 0xe7, - 0x01, 0x21, 0x0f, 0x20, 0xf0, 0xf7, 0x1a, 0xff, - 0x14, 0x48, 0x01, 0x21, 0x80, 0x30, 0x81, 0x70, - 0x38, 0x69, 0xfb, 0xf7, 0x55, 0xfa, 0x20, 0x73, - 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0xd6, 0xf8, - 0x70, 0x7a, 0x01, 0x28, 0x0e, 0xd1, 0x0e, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x04, 0xd0, 0x38, 0x78, - 0x02, 0xf0, 0xda, 0xfa, 0x00, 0x28, 0x05, 0xd0, - 0x3c, 0x00, 0xa0, 0x04, 0x01, 0x00, 0x30, 0x7f, - 0x60, 0x73, 0x03, 0x20, 0x20, 0x70, 0x71, 0x89, - 0x05, 0xe0, 0x05, 0x20, 0x20, 0x70, 0xa8, 0x88, - 0xfa, 0xf7, 0x3b, 0xfb, 0x01, 0x1c, 0x00, 0x22, - 0x0f, 0x20, 0x03, 0xf0, 0x86, 0xf8, 0xba, 0xe7, - 0x00, 0x00, 0x04, 0x66, 0x01, 0x00, 0xe4, 0x62, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x02, 0xf0, - 0x6c, 0xfc, 0x36, 0x4b, 0x19, 0x1c, 0xa0, 0x31, - 0x0a, 0x78, 0x3c, 0x00, 0xdc, 0x04, 0x01, 0x00, - 0x10, 0x2a, 0x02, 0xd2, 0x0a, 0x79, 0x10, 0x2a, - 0x01, 0xd3, 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25, - 0x30, 0x4e, 0xca, 0x79, 0x80, 0x36, 0x01, 0x2c, - 0x12, 0xd0, 0x00, 0x25, 0x02, 0x2c, 0x2e, 0xd0, - 0x04, 0x2c, 0x3c, 0xd1, 0x5c, 0x6b, 0x00, 0x2c, - 0x39, 0xd1, 0x9c, 0x6f, 0x00, 0x1b, 0x2a, 0x4c, - 0xa0, 0x42, 0x34, 0xd9, 0xb2, 0x68, 0x98, 0x6a, - 0x82, 0x42, 0x31, 0xd0, 0x3c, 0x00, 0x18, 0x05, - 0x01, 0x00, 0x4d, 0x72, 0x34, 0xe0, 0xb0, 0x68, - 0x9c, 0x6a, 0x02, 0x22, 0xa0, 0x42, 0x21, 0xd1, - 0x58, 0x6b, 0x00, 0x28, 0x1e, 0xd1, 0x00, 0x2d, - 0x1c, 0xd1, 0x48, 0x7a, 0x19, 0x28, 0x20, 0xd0, - 0x34, 0x68, 0x98, 0x6f, 0x64, 0x00, 0x00, 0x1b, - 0x74, 0x68, 0x00, 0x19, 0xff, 0x30, 0x1c, 0x4c, - 0x39, 0x30, 0xa0, 0x42, 0x16, 0xd2, 0x48, 0x79, - 0x8c, 0x79, 0x00, 0x19, 0x30, 0x28, 0x3c, 0x00, - 0x54, 0x05, 0x01, 0x00, 0x11, 0xd3, 0x10, 0x22, - 0x0f, 0xe0, 0x5c, 0x6b, 0x01, 0x2c, 0x06, 0xd1, - 0xb0, 0x68, 0x9a, 0x6a, 0x90, 0x42, 0x00, 0xd1, - 0x4d, 0x72, 0x00, 0x22, 0x05, 0xe0, 0x9c, 0x6f, - 0x00, 0x1b, 0x12, 0x4c, 0xa0, 0x42, 0x00, 0xd3, - 0x20, 0x22, 0x06, 0xe0, 0x4a, 0x7a, 0x19, 0x2a, - 0x01, 0xd2, 0x01, 0x32, 0x4a, 0x72, 0x20, 0x22, - 0xb0, 0x60, 0x30, 0x68, 0x9b, 0x6f, 0x98, 0x42, - 0x3c, 0x00, 0x90, 0x05, 0x01, 0x00, 0x04, 0xd1, - 0x00, 0x2a, 0x00, 0xd1, 0x48, 0x79, 0x4a, 0x71, - 0x06, 0xe0, 0x10, 0x2a, 0x04, 0xd3, 0x70, 0x60, - 0x33, 0x60, 0x48, 0x79, 0x88, 0x71, 0xf6, 0xe7, - 0xca, 0x71, 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0xa3, 0x04, 0x00, 0x00, 0x71, 0x02, - 0x00, 0x00, 0x35, 0x0c, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x81, 0x7b, 0x00, 0x29, 0x05, 0xd0, - 0x00, 0x21, 0x3c, 0x00, 0xcc, 0x05, 0x01, 0x00, - 0x81, 0x73, 0x03, 0x49, 0x0f, 0x20, 0x01, 0xf0, - 0x0f, 0xff, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00, - 0xe9, 0x03, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x02, 0xf0, 0xe2, 0xfb, 0x05, 0x1c, 0x38, 0x4e, - 0x20, 0x1c, 0x37, 0x49, 0x34, 0x1c, 0xa0, 0x34, - 0x10, 0x22, 0x44, 0x39, 0x01, 0x28, 0x2c, 0xd0, - 0x04, 0x28, 0x4e, 0xd1, 0x37, 0x1c, 0x74, 0x36, - 0x09, 0xce, 0x26, 0x78, 0x3c, 0x00, 0x08, 0x06, - 0x01, 0x00, 0xc0, 0x1a, 0x20, 0x2e, 0x04, 0xd1, - 0x30, 0x4e, 0xb0, 0x42, 0x01, 0xd9, 0x00, 0x26, - 0x4e, 0x61, 0x3e, 0x1c, 0x3f, 0x6c, 0x00, 0x2f, - 0x48, 0xd1, 0x77, 0x6c, 0x00, 0x2f, 0x45, 0xd1, - 0xb7, 0x6a, 0x00, 0x2f, 0x3d, 0xd0, 0x77, 0x6b, - 0x00, 0x2f, 0x3a, 0xd0, 0x27, 0x4f, 0xb8, 0x42, - 0x37, 0xd2, 0x60, 0x78, 0x10, 0x28, 0x06, 0xd3, - 0xf0, 0x6f, 0x18, 0x1a, 0x24, 0x4b, 0x3c, 0x00, - 0x44, 0x06, 0x01, 0x00, 0x98, 0x42, 0x01, 0xd2, - 0xe2, 0x70, 0xf5, 0x66, 0x48, 0x69, 0x06, 0x28, - 0x2f, 0xd2, 0x01, 0x30, 0x2c, 0xe0, 0x20, 0x78, - 0x20, 0x28, 0x01, 0xd1, 0x06, 0x23, 0x4b, 0x61, - 0x02, 0x23, 0x23, 0x71, 0xb3, 0x6a, 0x00, 0x2b, - 0x19, 0xd0, 0x49, 0x69, 0x03, 0x29, 0x16, 0xd9, - 0x71, 0x6b, 0x73, 0x6d, 0x59, 0x40, 0x12, 0xd0, - 0xe1, 0x78, 0x10, 0x29, 0x10, 0xd3, 0x61, 0x78, - 0x3c, 0x00, 0x80, 0x06, 0x01, 0x00, 0x33, 0x1c, - 0x10, 0x29, 0x0c, 0xd3, 0xd9, 0x6f, 0x69, 0x1a, - 0x13, 0x4d, 0xa9, 0x42, 0x07, 0xd2, 0x58, 0x6c, - 0x00, 0x28, 0x02, 0xd0, 0x98, 0x6c, 0x00, 0x28, - 0x00, 0xd1, 0x22, 0x71, 0xf8, 0xbd, 0x02, 0x28, - 0xfc, 0xd1, 0x22, 0x70, 0xfa, 0xe7, 0x48, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x38, 0x48, 0x61, - 0x0a, 0x49, 0xf0, 0x6e, 0x40, 0x18, 0x02, 0xf0, - 0xb0, 0xfa, 0x3c, 0x00, 0xbc, 0x06, 0x01, 0x00, - 0x00, 0x28, 0xee, 0xd0, 0x01, 0x20, 0xe0, 0x70, - 0x06, 0x48, 0x28, 0x18, 0xf0, 0x66, 0xe8, 0xe7, - 0xa4, 0x6c, 0x01, 0x00, 0xe2, 0x04, 0x00, 0x00, - 0x1a, 0x06, 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, - 0x00, 0x2d, 0x31, 0x01, 0x00, 0x5a, 0x62, 0x02, - 0x80, 0xb5, 0x41, 0x68, 0x09, 0x79, 0xc9, 0x07, - 0x13, 0xd5, 0xc1, 0x69, 0x00, 0x29, 0x0d, 0xd0, - 0x89, 0x79, 0x02, 0x29, 0x3c, 0x00, 0xf8, 0x06, - 0x01, 0x00, 0x0a, 0xd1, 0x08, 0x21, 0x01, 0x86, - 0x01, 0x1c, 0x38, 0x31, 0x81, 0x62, 0x02, 0x1c, - 0x06, 0x48, 0x04, 0x49, 0xf9, 0xf7, 0xfd, 0xfc, - 0x80, 0xbd, 0xf7, 0xf7, 0xdc, 0xfb, 0x80, 0xbd, - 0xf7, 0xf7, 0x23, 0xfb, 0x80, 0xbd, 0xb9, 0x71, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x10, 0xb5, - 0x00, 0x24, 0x00, 0x28, 0x03, 0xd0, 0x02, 0xf0, - 0xe8, 0xfe, 0x00, 0x28, 0x17, 0xd0, 0x3c, 0x00, - 0x34, 0x07, 0x01, 0x00, 0x0c, 0x4c, 0x01, 0x20, - 0xa0, 0x72, 0x20, 0x68, 0x00, 0x21, 0x41, 0x62, - 0x0a, 0x49, 0x02, 0x68, 0xc9, 0x78, 0x60, 0x32, - 0x91, 0x71, 0x21, 0x89, 0x01, 0x31, 0x21, 0x81, - 0x00, 0x68, 0x40, 0x30, 0x81, 0x83, 0xfb, 0xf7, - 0x31, 0xfc, 0x20, 0x68, 0x00, 0x68, 0xfc, 0xf7, - 0xa1, 0xf9, 0x01, 0x24, 0x20, 0x1c, 0x10, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00, - 0x3c, 0x00, 0x70, 0x07, 0x01, 0x00, 0x7f, 0xb5, - 0x06, 0x1c, 0x1e, 0x48, 0x1d, 0x1c, 0x43, 0x88, - 0x02, 0x88, 0x1c, 0x21, 0x00, 0x20, 0x90, 0xb0, - 0xf0, 0xf7, 0x45, 0xff, 0x03, 0x90, 0x04, 0x68, - 0xff, 0x21, 0x01, 0x31, 0x21, 0x80, 0x08, 0x20, - 0x60, 0x80, 0x06, 0x20, 0x20, 0x71, 0x04, 0x20, - 0x60, 0x71, 0xc0, 0x01, 0x00, 0x2d, 0x00, 0xd1, - 0x08, 0x1c, 0xe0, 0x80, 0x01, 0xa8, 0x02, 0x30, - 0x31, 0x1c, 0x3c, 0x00, 0xac, 0x07, 0x01, 0x00, - 0x05, 0x1c, 0xfa, 0xf7, 0x5f, 0xfa, 0x10, 0x49, - 0x68, 0x46, 0xfa, 0xf7, 0x5b, 0xfa, 0x20, 0x1c, - 0x08, 0x30, 0x69, 0x46, 0xfa, 0xf7, 0x56, 0xfa, - 0x29, 0x1c, 0x20, 0x1c, 0x12, 0x30, 0xfa, 0xf7, - 0x51, 0xfa, 0x10, 0xab, 0x98, 0x88, 0x00, 0x22, - 0x01, 0x21, 0x20, 0x83, 0xd8, 0x88, 0x60, 0x83, - 0x18, 0x89, 0xe0, 0x81, 0x58, 0x89, 0x20, 0x82, - 0x68, 0x46, 0xf9, 0xf7, 0x3c, 0x00, 0xe8, 0x07, - 0x01, 0x00, 0x17, 0xff, 0x14, 0xb0, 0x70, 0xbd, - 0x00, 0x00, 0x14, 0x6e, 0x01, 0x00, 0x12, 0x61, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x18, 0x48, - 0x25, 0x1c, 0x00, 0x78, 0x60, 0x35, 0x80, 0x07, - 0x00, 0x28, 0x08, 0xda, 0xe8, 0x79, 0x00, 0x28, - 0x05, 0xd0, 0xf4, 0xf7, 0x70, 0xff, 0x01, 0x1c, - 0x20, 0x1c, 0x00, 0xf0, 0x78, 0xf9, 0x29, 0x88, - 0x2e, 0x20, 0x00, 0x5d, 0xf2, 0xf7, 0x3c, 0x00, - 0x24, 0x08, 0x01, 0x00, 0x9f, 0xfa, 0xe8, 0x79, - 0x00, 0x28, 0x0b, 0xd1, 0x20, 0x1c, 0x40, 0x30, - 0x01, 0x8b, 0x22, 0x69, 0x11, 0x80, 0x41, 0x8b, - 0x22, 0x69, 0x51, 0x80, 0x80, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02, - 0x11, 0x43, 0x01, 0x80, 0x6a, 0x7a, 0xe0, 0x68, - 0x02, 0x49, 0xf2, 0xf7, 0x53, 0xfa, 0xb0, 0xbd, - 0x3c, 0x00, 0x60, 0x08, 0x01, 0x00, 0x1d, 0x75, - 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00, 0x90, 0xb5, - 0x04, 0x1c, 0x38, 0x23, 0x0c, 0x49, 0x58, 0x43, - 0x43, 0x18, 0x85, 0xb0, 0x00, 0x20, 0x0a, 0x49, - 0x02, 0x90, 0x18, 0x1c, 0x01, 0x22, 0x03, 0x91, - 0x09, 0x49, 0x04, 0x92, 0x30, 0x30, 0x42, 0x78, - 0x09, 0x88, 0x01, 0x92, 0x00, 0x91, 0x01, 0x78, - 0x5a, 0x6b, 0x0c, 0x33, 0x20, 0x1c, 0xfb, 0xf7, - 0x7c, 0xf8, 0x3c, 0x00, 0x9c, 0x08, 0x01, 0x00, - 0x05, 0xb0, 0x90, 0xbd, 0xd4, 0xe4, 0x01, 0x00, - 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00, - 0x90, 0xb5, 0x85, 0xb0, 0x03, 0x1c, 0x00, 0x20, - 0x02, 0x90, 0x0a, 0x49, 0x18, 0x1c, 0x00, 0x22, - 0x04, 0x92, 0x60, 0x30, 0x03, 0x91, 0xc2, 0x79, - 0x01, 0x88, 0x01, 0x92, 0x00, 0x91, 0x5a, 0x6a, - 0xdc, 0x68, 0x20, 0x33, 0x99, 0x7b, 0x40, 0x7a, - 0x23, 0x1c, 0xfb, 0xf7, 0x3c, 0x00, 0xd8, 0x08, - 0x01, 0x00, 0x5d, 0xf8, 0x05, 0xb0, 0x90, 0xbd, - 0x00, 0x00, 0x0d, 0x4f, 0x00, 0x00, 0x07, 0x49, - 0x80, 0xb5, 0x88, 0x6a, 0x00, 0x28, 0x08, 0xd1, - 0x01, 0x20, 0x88, 0x62, 0xf0, 0xf7, 0xaf, 0xfc, - 0x01, 0x1c, 0x03, 0x48, 0x00, 0x22, 0xf2, 0xf7, - 0xb8, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x41, 0xe4, 0x00, 0x00, 0xf0, 0xb5, - 0x9b, 0xb0, 0x00, 0x28, 0x20, 0xd0, 0x3c, 0x00, - 0x14, 0x09, 0x01, 0x00, 0x01, 0x1c, 0x08, 0xa8, - 0xfc, 0xf7, 0xb2, 0xfd, 0x01, 0x20, 0x11, 0x90, - 0x03, 0x20, 0x10, 0xad, 0x28, 0x72, 0x04, 0x20, - 0x68, 0x72, 0x05, 0xa8, 0x00, 0x22, 0x69, 0x46, - 0xf4, 0xf7, 0x00, 0xff, 0x00, 0x24, 0x00, 0x26, - 0x05, 0xa9, 0x00, 0x20, 0xf9, 0xf7, 0xfc, 0xfa, - 0x69, 0x46, 0xf9, 0xf7, 0xf9, 0xfa, 0x0b, 0x90, - 0x08, 0xa8, 0xfc, 0xf7, 0xbb, 0xfd, 0x01, 0x34, - 0x3c, 0x00, 0x50, 0x09, 0x01, 0x00, 0x02, 0x2c, - 0x2e, 0x72, 0xf0, 0xdb, 0x1b, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0x90, 0xb5, 0x04, 0x1c, 0x4c, 0x23, - 0x0c, 0x49, 0x58, 0x43, 0x43, 0x18, 0x85, 0xb0, - 0x00, 0x20, 0x0a, 0x49, 0x02, 0x90, 0x00, 0x22, - 0x04, 0x92, 0x3c, 0x20, 0x03, 0x91, 0xc2, 0x5c, - 0x08, 0x48, 0x41, 0x88, 0x01, 0x92, 0x41, 0x20, - 0x00, 0x91, 0xc1, 0x5c, 0x5a, 0x68, 0x08, 0x33, - 0x20, 0x1c, 0x3c, 0x00, 0x8c, 0x09, 0x01, 0x00, - 0xfb, 0xf7, 0x02, 0xf8, 0x05, 0xb0, 0x90, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, - 0x22, 0x4c, 0x38, 0x21, 0x17, 0x1c, 0x05, 0x1c, - 0x20, 0x1c, 0xef, 0xf7, 0x75, 0xfd, 0x23, 0x1c, - 0x25, 0x33, 0x21, 0x1c, 0x24, 0x31, 0x10, 0x20, - 0x6a, 0x46, 0xf9, 0xf7, 0x1d, 0xf8, 0x00, 0xab, - 0x18, 0x88, 0x07, 0x21, 0x3c, 0x00, 0xc8, 0x09, - 0x01, 0x00, 0x1a, 0x4a, 0x02, 0x38, 0x20, 0x84, - 0x20, 0x1c, 0x20, 0x30, 0x81, 0x70, 0xc5, 0x70, - 0x11, 0x1c, 0x06, 0x73, 0x47, 0x73, 0x34, 0x31, - 0x21, 0x63, 0x30, 0x32, 0x62, 0x63, 0x01, 0x79, - 0x25, 0x1c, 0x10, 0x35, 0x21, 0x81, 0x20, 0x60, - 0xe5, 0x60, 0x18, 0x88, 0x40, 0x1a, 0x20, 0x83, - 0x20, 0x1c, 0x28, 0x30, 0x20, 0x61, 0x20, 0x1c, - 0xf9, 0xf7, 0x11, 0xf8, 0x0d, 0x48, 0x3c, 0x00, - 0x04, 0x0a, 0x01, 0x00, 0x00, 0x68, 0x00, 0x28, - 0x07, 0xd0, 0x06, 0x21, 0x20, 0x1c, 0xf8, 0xf7, - 0x47, 0xfd, 0x10, 0x21, 0x28, 0x1c, 0xf8, 0xf7, - 0x43, 0xfd, 0x08, 0x48, 0x02, 0x21, 0x01, 0x62, - 0x44, 0x62, 0x01, 0x21, 0x01, 0x62, 0x06, 0x48, - 0x00, 0x68, 0xef, 0xf7, 0xd5, 0xfc, 0xf8, 0xbd, - 0x8c, 0x8e, 0x01, 0x00, 0xe4, 0xfe, 0x01, 0x00, - 0xcc, 0x5c, 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x3c, 0x00, 0x40, 0x0a, 0x01, 0x00, 0x5c, 0x5b, - 0x01, 0x00, 0xf0, 0xb5, 0x06, 0x1c, 0x40, 0x36, - 0x31, 0x8b, 0x04, 0x1c, 0x25, 0x1c, 0x08, 0x07, - 0x80, 0x0f, 0x60, 0x35, 0x01, 0x28, 0x85, 0xb0, - 0x3b, 0xd0, 0xe8, 0x79, 0x00, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x80, 0xb0, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02, - 0x11, 0x43, 0x3c, 0x00, 0x7c, 0x0a, 0x01, 0x00, - 0x01, 0x80, 0x20, 0x48, 0x00, 0x78, 0x80, 0x07, - 0x26, 0xd5, 0xe8, 0x79, 0x00, 0x28, 0x23, 0xd0, - 0xa0, 0x6b, 0x00, 0x28, 0x1c, 0xd0, 0xf4, 0xf7, - 0x2f, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xb8, 0x21, - 0x09, 0x58, 0x00, 0x29, 0x05, 0xd0, 0x30, 0x21, - 0x09, 0x5d, 0xb4, 0x30, 0x08, 0x18, 0x07, 0x7a, - 0x00, 0xe0, 0x00, 0x27, 0x01, 0x21, 0x38, 0x1c, - 0xfa, 0xf7, 0x86, 0xf9, 0x3c, 0x00, 0xb8, 0x0a, - 0x01, 0x00, 0x04, 0x90, 0x20, 0x69, 0x04, 0x30, - 0x39, 0x1c, 0xf4, 0xf7, 0x6c, 0xfd, 0x04, 0x99, - 0xfa, 0xf7, 0xd3, 0xf9, 0x02, 0xe0, 0x20, 0x1c, - 0xf7, 0xf7, 0xf9, 0xfb, 0x70, 0x83, 0x70, 0x8b, - 0x21, 0x69, 0x00, 0x22, 0x48, 0x80, 0x09, 0x49, - 0x0a, 0x48, 0x04, 0x92, 0x03, 0x91, 0x02, 0x90, - 0xea, 0x79, 0x29, 0x88, 0x01, 0x92, 0x00, 0x91, - 0x62, 0x6a, 0xe3, 0x68, 0x20, 0x34, 0x3c, 0x00, - 0xf4, 0x0a, 0x01, 0x00, 0xa1, 0x7b, 0x68, 0x7a, - 0xfa, 0xf7, 0x4c, 0xff, 0x05, 0xb0, 0xf0, 0xbd, - 0x1d, 0x75, 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00, - 0xdd, 0x2f, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x26, 0x1c, 0x01, 0x20, 0x20, 0x36, 0x00, 0x29, - 0x02, 0x90, 0x2e, 0xd0, 0x58, 0x20, 0x00, 0x5b, - 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x01, 0xd1, - 0xcc, 0x31, 0x00, 0xe0, 0xb4, 0x31, 0x48, 0x68, - 0x3c, 0x00, 0x30, 0x0b, 0x01, 0x00, 0x0d, 0x1c, - 0x00, 0x28, 0x24, 0xd0, 0x20, 0x1c, 0x60, 0x30, - 0xc2, 0x79, 0x01, 0x21, 0x01, 0x2a, 0x00, 0xd0, - 0x00, 0x21, 0x27, 0x1c, 0x62, 0x6d, 0x30, 0x37, - 0x00, 0x2a, 0x04, 0xd0, 0x3a, 0x1c, 0x28, 0x1c, - 0xf6, 0xf7, 0xe7, 0xfd, 0x07, 0xe0, 0x42, 0x7a, - 0x23, 0x1c, 0x68, 0x33, 0x00, 0x92, 0x3a, 0x1c, - 0x28, 0x1c, 0xf6, 0xf7, 0x9a, 0xfd, 0x02, 0x90, - 0x38, 0x78, 0x3c, 0x00, 0x6c, 0x0b, 0x01, 0x00, - 0x40, 0x19, 0x00, 0x7a, 0x01, 0x21, 0xb0, 0x73, - 0xfa, 0xf7, 0x26, 0xf9, 0x01, 0xe0, 0x00, 0x20, - 0xb0, 0x73, 0x60, 0x62, 0xb0, 0x7b, 0x0d, 0x28, - 0x01, 0xd9, 0xf0, 0xf7, 0xbb, 0xfb, 0x02, 0x98, - 0xfe, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c, - 0x80, 0x30, 0x25, 0x1c, 0x5e, 0x35, 0x00, 0x78, - 0xae, 0x1d, 0xaf, 0x1f, 0x00, 0x28, 0x83, 0xb0, - 0x12, 0xd1, 0xf4, 0xf7, 0x3c, 0x00, 0xa8, 0x0b, - 0x01, 0x00, 0xc7, 0xfb, 0x00, 0x28, 0x07, 0xd0, - 0x06, 0x98, 0x05, 0x99, 0x02, 0x90, 0x04, 0x98, - 0x01, 0x90, 0xa6, 0x61, 0x67, 0x61, 0x0d, 0xe0, - 0x04, 0x98, 0x06, 0x99, 0x02, 0x90, 0x05, 0x98, - 0x01, 0x90, 0x66, 0x61, 0x05, 0xe0, 0x04, 0xa9, - 0x03, 0xc9, 0x02, 0x90, 0x06, 0x98, 0x01, 0x90, - 0x67, 0x61, 0xa5, 0x61, 0x06, 0x22, 0x38, 0x1c, - 0xef, 0xf7, 0x8b, 0xfc, 0x06, 0x22, 0x3c, 0x00, - 0xe4, 0x0b, 0x01, 0x00, 0x28, 0x1c, 0x02, 0x99, - 0xef, 0xf7, 0x86, 0xfc, 0x06, 0x22, 0x30, 0x1c, - 0x01, 0x99, 0xef, 0xf7, 0x81, 0xfc, 0x07, 0xb0, - 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf0, 0xf7, - 0x7b, 0xfb, 0x02, 0x49, 0xa0, 0x00, 0x08, 0x58, - 0x85, 0x60, 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0xff, 0xf7, 0x59, 0xf9, 0x05, 0x1c, - 0x3c, 0x00, 0x20, 0x0c, 0x01, 0x00, 0xfe, 0xf7, - 0xe8, 0xff, 0x04, 0x1c, 0x28, 0x1c, 0xff, 0xf7, - 0x58, 0xf9, 0x00, 0x28, 0x42, 0xd0, 0x69, 0x1e, - 0x21, 0x4d, 0x4a, 0x00, 0x20, 0x4b, 0x1c, 0x3d, - 0xae, 0x5c, 0x98, 0x5c, 0x30, 0x40, 0xd6, 0x18, - 0x01, 0x23, 0xf6, 0x56, 0x52, 0x19, 0xd2, 0x56, - 0x96, 0x42, 0x01, 0xdd, 0x15, 0x1c, 0x00, 0xe0, - 0x35, 0x1c, 0x18, 0x4b, 0x2a, 0x3b, 0x59, 0x56, - 0x51, 0x18, 0x3c, 0x00, 0x5c, 0x0c, 0x01, 0x00, - 0xb1, 0x42, 0x00, 0xdb, 0x31, 0x1c, 0x0e, 0x1c, - 0x00, 0x28, 0x26, 0xd0, 0xfe, 0xf7, 0xbe, 0xff, - 0x00, 0x90, 0x00, 0xab, 0x18, 0x78, 0x12, 0x49, - 0x00, 0x23, 0xc9, 0x56, 0x00, 0xab, 0x15, 0x22, - 0x10, 0x1a, 0x5b, 0x78, 0x00, 0x1b, 0x40, 0x18, - 0xd2, 0x1a, 0x12, 0x1b, 0x51, 0x18, 0x00, 0x22, - 0x85, 0x42, 0x02, 0xdb, 0x00, 0xab, 0x1a, 0x70, - 0x02, 0xe0, 0x40, 0x1b, 0x3c, 0x00, 0x98, 0x0c, - 0x01, 0x00, 0x00, 0xab, 0x18, 0x70, 0x8e, 0x42, - 0x02, 0xdb, 0x00, 0xab, 0x5a, 0x70, 0x02, 0xe0, - 0x88, 0x1b, 0x00, 0xab, 0x58, 0x70, 0x00, 0x98, - 0xff, 0xf7, 0x8d, 0xf8, 0x01, 0xf0, 0xff, 0xf8, - 0xf8, 0xbd, 0xe6, 0x78, 0x01, 0x00, 0x65, 0x73, - 0x01, 0x00, 0x70, 0xb5, 0x08, 0x4e, 0x06, 0x4d, - 0x00, 0x24, 0x06, 0x20, 0x60, 0x43, 0x80, 0x19, - 0x06, 0x22, 0x29, 0x1c, 0xef, 0xf7, 0x3c, 0x00, - 0xd4, 0x0c, 0x01, 0x00, 0x11, 0xfc, 0x01, 0x34, - 0x05, 0x2c, 0xf5, 0xdb, 0x70, 0xbd, 0x00, 0x00, - 0x4e, 0x47, 0x01, 0x00, 0xe6, 0x7a, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48, - 0xfe, 0xf7, 0x42, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xa8, 0x79, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48, - 0xfe, 0xf7, 0x4a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x0d, 0x01, 0x00, 0xa8, 0x79, - 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x10, 0xb5, - 0x00, 0x28, 0x0a, 0xd0, 0x06, 0x4c, 0xa1, 0x69, - 0x00, 0x29, 0x01, 0xd1, 0x00, 0x20, 0x00, 0xe0, - 0x09, 0x68, 0xf7, 0xf7, 0x38, 0xfb, 0xa0, 0x61, - 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd, 0xa4, 0x6e, - 0x01, 0x00, 0xf3, 0xb5, 0x37, 0x48, 0x83, 0xb0, - 0x02, 0x90, 0x80, 0x79, 0x0e, 0x1c, 0x00, 0x27, - 0x01, 0x90, 0x3c, 0x00, 0x4c, 0x0d, 0x01, 0x00, - 0x34, 0x48, 0x35, 0x4a, 0x01, 0x6a, 0x03, 0x9c, - 0x03, 0x1c, 0x1b, 0x69, 0xa1, 0x42, 0x01, 0xd0, - 0x93, 0x61, 0x00, 0xe0, 0x53, 0x61, 0x31, 0x49, - 0x8a, 0x68, 0x96, 0x42, 0x3f, 0xd0, 0x2d, 0x48, - 0x8e, 0x60, 0xc1, 0x68, 0x00, 0x24, 0x25, 0x1c, - 0x00, 0x29, 0x2d, 0x48, 0x09, 0xd0, 0x00, 0x2e, - 0x0b, 0xd0, 0x28, 0x48, 0x01, 0x24, 0xc0, 0x6a, - 0x24, 0x03, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x0d, - 0x01, 0x00, 0x06, 0xd0, 0x01, 0x27, 0x04, 0xe0, - 0x00, 0x2e, 0x01, 0xd0, 0x05, 0x1c, 0xf9, 0xe7, - 0x04, 0x1c, 0x00, 0x2f, 0x06, 0xd0, 0xfb, 0xf7, - 0x1e, 0xfb, 0x1f, 0x48, 0x01, 0x68, 0x22, 0x48, - 0xfe, 0xf7, 0xfb, 0xfa, 0x20, 0x1c, 0x28, 0x43, - 0x0e, 0xd0, 0x2a, 0x1c, 0x21, 0x1c, 0x01, 0x20, - 0x02, 0xf0, 0x21, 0xfe, 0x2a, 0x1c, 0x21, 0x1c, - 0x02, 0x20, 0x02, 0xf0, 0x1c, 0xfe, 0x3c, 0x00, - 0xc4, 0x0d, 0x01, 0x00, 0x2a, 0x1c, 0x21, 0x1c, - 0x03, 0x20, 0x02, 0xf0, 0x17, 0xfe, 0x00, 0x2f, - 0x06, 0xd1, 0x13, 0x48, 0x01, 0x68, 0x16, 0x48, - 0xfe, 0xf7, 0xce, 0xfa, 0xfa, 0xf7, 0x42, 0xfd, - 0x03, 0x9c, 0x00, 0x2c, 0x01, 0xd1, 0x01, 0xf0, - 0xe1, 0xff, 0x01, 0xa9, 0x03, 0xc9, 0x88, 0x71, - 0x01, 0xf0, 0xdc, 0xff, 0x0a, 0x4c, 0x0a, 0x4b, - 0x44, 0x3c, 0xa1, 0x69, 0x22, 0x69, 0x08, 0x3b, - 0x3c, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x41, 0x1a, - 0x00, 0x2a, 0x03, 0xd0, 0x1a, 0x68, 0x51, 0x18, - 0x19, 0x60, 0x02, 0xe0, 0x5a, 0x68, 0x51, 0x18, - 0x59, 0x60, 0xa0, 0x61, 0x26, 0x61, 0x05, 0xb0, - 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0xb0, 0x57, - 0x01, 0x00, 0x00, 0x10, 0x60, 0x00, 0x84, 0x73, - 0x01, 0x00, 0x1c, 0xb5, 0x4c, 0x23, 0x08, 0x49, - 0x58, 0x43, 0x3c, 0x00, 0x3c, 0x0e, 0x01, 0x00, - 0x44, 0x18, 0x20, 0x1c, 0x40, 0x30, 0x41, 0x78, - 0x62, 0x68, 0x00, 0x91, 0x01, 0x92, 0x3f, 0x21, - 0x0b, 0x5d, 0x61, 0x8f, 0x00, 0x78, 0x62, 0x6c, - 0xfa, 0xf7, 0x28, 0xf8, 0xa0, 0x85, 0x1c, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0xb0, 0xb5, 0x16, 0x4d, - 0xa9, 0x69, 0x00, 0x29, 0x25, 0xd0, 0x2c, 0x1c, - 0x30, 0x34, 0x20, 0x7a, 0x00, 0x28, 0x20, 0xd0, - 0x00, 0x23, 0x81, 0x22, 0x3c, 0x00, 0x78, 0x0e, - 0x01, 0x00, 0x18, 0x20, 0x02, 0xf0, 0x89, 0xfc, - 0x20, 0x7a, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0x20, 0x72, 0x12, 0xd1, 0x0c, 0x48, 0x28, 0x21, - 0x2c, 0x38, 0x09, 0x5c, 0x21, 0x72, 0x29, 0x7a, - 0x00, 0x29, 0x01, 0xd1, 0x00, 0x6a, 0x00, 0xe0, - 0x40, 0x6a, 0xa9, 0x69, 0x80, 0x02, 0x81, 0x42, - 0x03, 0xd2, 0x49, 0x00, 0x81, 0x42, 0x01, 0xd2, - 0xa9, 0x61, 0xb0, 0xbd, 0xa8, 0x61, 0x3c, 0x00, - 0xb4, 0x0e, 0x01, 0x00, 0xb0, 0xbd, 0x01, 0xf0, - 0x1d, 0xf9, 0xb0, 0xbd, 0xf4, 0x6e, 0x01, 0x00, - 0x7f, 0xb5, 0x05, 0x1c, 0x04, 0x20, 0x6b, 0x46, - 0x1b, 0x18, 0x02, 0x90, 0x00, 0x26, 0x28, 0x18, - 0x6a, 0x46, 0x02, 0xa9, 0xfc, 0xf7, 0x8a, 0xfb, - 0x00, 0x28, 0x06, 0xd1, 0x00, 0xab, 0x18, 0x79, - 0x04, 0x28, 0x08, 0xd0, 0x18, 0x79, 0x03, 0x28, - 0x05, 0xd0, 0x00, 0xab, 0x18, 0x79, 0x10, 0x21, - 0x3c, 0x00, 0xf0, 0x0e, 0x01, 0x00, 0x08, 0x43, - 0x04, 0xb0, 0x70, 0xbd, 0x03, 0xa9, 0xe8, 0x68, - 0xf6, 0xf7, 0xd3, 0xff, 0x00, 0x28, 0x05, 0xd0, - 0x03, 0x98, 0x20, 0x21, 0x08, 0x43, 0x00, 0x06, - 0x00, 0x0e, 0xf1, 0xe7, 0x03, 0xa9, 0x00, 0x20, - 0xf6, 0xf7, 0xc7, 0xff, 0x04, 0x1c, 0x01, 0xd1, - 0x02, 0x20, 0xe9, 0xe7, 0xe8, 0x68, 0x00, 0xab, - 0x20, 0x60, 0x00, 0x98, 0x60, 0x60, 0x18, 0x79, - 0xa0, 0x76, 0x3c, 0x00, 0x2c, 0x0f, 0x01, 0x00, - 0xa8, 0x8c, 0x60, 0x76, 0xe8, 0x69, 0x20, 0x61, - 0x68, 0x8c, 0xa0, 0x82, 0x28, 0x8c, 0x20, 0x76, - 0x69, 0x69, 0x09, 0x48, 0x81, 0x42, 0x00, 0xd9, - 0x08, 0x1c, 0xa0, 0x60, 0x20, 0x1c, 0x02, 0xf0, - 0xa1, 0xfd, 0xa1, 0x68, 0x00, 0x29, 0x04, 0xd0, - 0x03, 0x9a, 0xa1, 0x32, 0x08, 0x20, 0x02, 0xf0, - 0x37, 0xfb, 0x30, 0x1c, 0xc7, 0xe7, 0x00, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x0f, - 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c, 0x40, 0x78, - 0x01, 0x24, 0x06, 0x28, 0x50, 0xd3, 0xc1, 0x1e, - 0x03, 0x20, 0xef, 0xf7, 0x5e, 0xfb, 0x00, 0x90, - 0x0e, 0x28, 0x49, 0xd8, 0x00, 0x20, 0x0a, 0xe0, - 0x41, 0x00, 0x09, 0x18, 0x89, 0x19, 0x4a, 0x79, - 0x89, 0x79, 0x51, 0x18, 0x01, 0x39, 0x0e, 0x29, - 0x00, 0xd9, 0x00, 0x24, 0x01, 0x30, 0x00, 0x99, - 0x88, 0x42, 0xf1, 0xdb, 0x00, 0x2c, 0x3c, 0x00, - 0xa4, 0x0f, 0x01, 0x00, 0x37, 0xd0, 0x03, 0x22, - 0xb1, 0x1c, 0x1b, 0x48, 0xef, 0xf7, 0xa4, 0xfa, - 0x1a, 0x4c, 0x1c, 0x21, 0x20, 0x1c, 0xef, 0xf7, - 0x4d, 0xfa, 0x00, 0x25, 0x28, 0xe0, 0x69, 0x00, - 0x49, 0x19, 0x02, 0x91, 0x8a, 0x19, 0x53, 0x79, - 0x15, 0x48, 0x43, 0x54, 0x93, 0x79, 0x0f, 0x18, - 0x7b, 0x70, 0xd3, 0x79, 0xbb, 0x70, 0x07, 0x23, - 0xd2, 0x56, 0x01, 0x92, 0x44, 0x5c, 0x0f, 0xe0, - 0x3c, 0x00, 0xe0, 0x0f, 0x01, 0x00, 0x20, 0x1c, - 0xfe, 0xf7, 0x7b, 0xff, 0x00, 0x28, 0x07, 0xd0, - 0x0c, 0x4a, 0x60, 0x00, 0x80, 0x18, 0x01, 0x21, - 0x10, 0x38, 0x81, 0x73, 0x01, 0x99, 0xc1, 0x73, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x07, 0x48, - 0x02, 0x99, 0x40, 0x5c, 0x79, 0x78, 0x40, 0x18, - 0xa0, 0x42, 0xe8, 0xd8, 0x01, 0x35, 0x00, 0x98, - 0x85, 0x42, 0xd3, 0xdb, 0xfe, 0xbd, 0xe8, 0x62, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x10, 0x01, 0x00, - 0xe6, 0x78, 0x01, 0x00, 0xeb, 0x62, 0x01, 0x00, - 0x01, 0x68, 0x0f, 0x29, 0x01, 0xdd, 0x0f, 0x21, - 0x01, 0x60, 0x01, 0x68, 0x00, 0x29, 0x01, 0xda, - 0x00, 0x21, 0x01, 0x60, 0x70, 0x47, 0x00, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0x1e, 0x48, 0x22, 0x1d, - 0x05, 0x68, 0x00, 0x92, 0x16, 0x1c, 0x23, 0x1c, - 0x0f, 0x1c, 0xcc, 0x33, 0x2a, 0x1c, 0x20, 0x1c, - 0x70, 0x30, 0xa1, 0x6d, 0x3c, 0x00, 0x58, 0x10, - 0x01, 0x00, 0x00, 0xf0, 0x3e, 0xf9, 0x00, 0x96, - 0xa1, 0x6d, 0x27, 0x20, 0x01, 0x40, 0x23, 0x1c, - 0xe4, 0x33, 0x20, 0x1c, 0x2a, 0x1c, 0x5c, 0x30, - 0x00, 0xf0, 0x33, 0xf9, 0x13, 0x48, 0x00, 0x78, - 0x0e, 0x28, 0x01, 0xd2, 0x01, 0x25, 0x85, 0x40, - 0x11, 0x48, 0xa1, 0x69, 0x00, 0x78, 0x29, 0x40, - 0x00, 0x07, 0x0b, 0xd4, 0x48, 0x07, 0x03, 0xd5, - 0x08, 0x07, 0x01, 0xd5, 0x04, 0x20, 0x3c, 0x00, - 0x94, 0x10, 0x01, 0x00, 0x81, 0x43, 0x88, 0x06, - 0x03, 0xd5, 0x48, 0x06, 0x01, 0xd5, 0x20, 0x20, - 0x81, 0x43, 0x23, 0x1c, 0xb4, 0x33, 0x2a, 0x1c, - 0x20, 0x1c, 0x30, 0x30, 0x00, 0x96, 0x00, 0xf0, - 0x13, 0xf9, 0x39, 0x1c, 0x20, 0x1c, 0xf0, 0xf7, - 0x47, 0xfc, 0xf8, 0xbd, 0x2c, 0x7d, 0x01, 0x00, - 0x10, 0x67, 0x01, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0xb0, 0xb5, 0xf2, 0xf7, 0x27, 0xfc, 0xfe, 0xf7, - 0x3c, 0x00, 0xd0, 0x10, 0x01, 0x00, 0x09, 0xf9, - 0x0f, 0x48, 0x00, 0x25, 0x45, 0x70, 0x0e, 0x48, - 0x0d, 0x4c, 0x00, 0x88, 0x5b, 0x34, 0xa0, 0x82, - 0xf9, 0xf7, 0x23, 0xfd, 0x20, 0x61, 0xa0, 0x8a, - 0x00, 0x28, 0x04, 0xd0, 0x01, 0x21, 0x89, 0x05, - 0xef, 0xf7, 0x0d, 0xfb, 0xe1, 0x82, 0x05, 0x48, - 0x01, 0x38, 0x45, 0x60, 0x01, 0xf0, 0x55, 0xfe, - 0x02, 0x1c, 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20, - 0xf4, 0xf7, 0x3c, 0x00, 0x0c, 0x11, 0x01, 0x00, - 0x49, 0xfd, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c, - 0x5a, 0x89, 0x04, 0x1c, 0x04, 0x98, 0x92, 0x07, - 0x92, 0x0f, 0x00, 0x25, 0x00, 0x29, 0xa2, 0x71, - 0x09, 0xd0, 0x05, 0x21, 0xf9, 0xf7, 0x24, 0xfb, - 0x00, 0x28, 0x01, 0xd0, 0xc0, 0x78, 0x00, 0xe0, - 0x01, 0x20, 0xe0, 0x71, 0x00, 0xe0, 0xe5, 0x71, - 0xe5, 0x60, 0xa6, 0x60, 0x3c, 0x00, 0x48, 0x11, - 0x01, 0x00, 0x70, 0xbd, 0x00, 0x00, 0xfe, 0xb5, - 0x05, 0x1c, 0x0e, 0x22, 0x9c, 0x30, 0x16, 0x49, - 0xef, 0xf7, 0xcf, 0xf9, 0x29, 0x1c, 0x28, 0x1c, - 0x80, 0x30, 0x88, 0x31, 0x00, 0x24, 0x2f, 0x1c, - 0x60, 0x37, 0x02, 0x91, 0x01, 0x90, 0x20, 0x06, - 0x00, 0x0e, 0x06, 0x1c, 0xf9, 0xf7, 0x0d, 0xfe, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x98, 0x42, 0x68, - 0x02, 0x99, 0x01, 0xe0, 0xea, 0x6d, 0x3c, 0x00, - 0x84, 0x11, 0x01, 0x00, 0x39, 0x1c, 0x00, 0x2a, - 0x0d, 0xd0, 0x00, 0x20, 0x03, 0xe0, 0x0b, 0x5c, - 0xb3, 0x42, 0x02, 0xd8, 0x01, 0x30, 0x90, 0x42, - 0xf9, 0xdb, 0x08, 0x18, 0x10, 0x38, 0xc0, 0x7b, - 0x29, 0x19, 0x90, 0x31, 0x08, 0x73, 0x01, 0x34, - 0x0e, 0x2c, 0xdf, 0xd3, 0xfe, 0xbd, 0x00, 0x00, - 0xcc, 0x47, 0x01, 0x00, 0xff, 0xb5, 0x81, 0xb0, - 0x14, 0x1c, 0x10, 0x1c, 0x06, 0x22, 0x0d, 0x1c, - 0x3c, 0x00, 0xc0, 0x11, 0x01, 0x00, 0x19, 0x1c, - 0x0b, 0x9e, 0x0a, 0x9f, 0xef, 0xf7, 0x97, 0xf9, - 0x06, 0x22, 0x39, 0x1c, 0xa0, 0x18, 0xef, 0xf7, - 0x92, 0xf9, 0xe6, 0x60, 0x2c, 0x60, 0x10, 0x20, - 0x28, 0x81, 0x6e, 0x60, 0x01, 0x98, 0xe8, 0x60, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x00, 0x20, 0x20, 0x61, 0x58, 0x20, - 0x00, 0x5d, 0x0e, 0x1c, 0x15, 0x1c, 0xc0, 0x07, - 0xc0, 0x17, 0x3c, 0x00, 0xfc, 0x11, 0x01, 0x00, - 0x01, 0x30, 0xe0, 0x61, 0x21, 0x6b, 0x00, 0x29, - 0x36, 0xd1, 0x1e, 0x49, 0x09, 0x68, 0x29, 0x43, - 0x32, 0xd0, 0xa1, 0x68, 0x89, 0x8a, 0x00, 0x29, - 0x2e, 0xd0, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x1c, - 0x58, 0x30, 0x00, 0xf0, 0xf3, 0xfd, 0x00, 0x28, - 0x1b, 0xd0, 0x81, 0x6a, 0x02, 0x6a, 0x40, 0x6a, - 0x09, 0x78, 0x00, 0x78, 0x06, 0xe0, 0x14, 0x4a, - 0x3c, 0x23, 0x11, 0x78, 0x3c, 0x00, 0x38, 0x12, - 0x01, 0x00, 0x50, 0x78, 0x43, 0x43, 0x9a, 0x18, - 0x04, 0x32, 0x00, 0x2d, 0x03, 0xd1, 0x02, 0x29, - 0x01, 0xd0, 0x03, 0x29, 0x02, 0xd1, 0x6d, 0x21, - 0x22, 0x61, 0x08, 0x55, 0x20, 0x69, 0x00, 0x28, - 0x0d, 0xd0, 0x81, 0x88, 0x00, 0x29, 0x01, 0xd1, - 0x01, 0x20, 0x70, 0xbd, 0x80, 0x79, 0x02, 0x28, - 0x05, 0xd1, 0x22, 0x1c, 0x07, 0x49, 0x07, 0x48, - 0xf8, 0xf7, 0x4b, 0xff, 0x02, 0xe0, 0x3c, 0x00, - 0x74, 0x12, 0x01, 0x00, 0x20, 0x1c, 0xef, 0xf7, - 0xb5, 0xf8, 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, - 0x28, 0x61, 0x01, 0x00, 0x68, 0x61, 0x01, 0x00, - 0xa1, 0xda, 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7, - 0x39, 0xfe, 0xc4, 0x00, 0xf9, 0xf7, 0x54, 0xfe, - 0x24, 0x18, 0xf9, 0xf7, 0x47, 0xfe, 0x08, 0x49, - 0x20, 0x18, 0x09, 0x88, 0x08, 0x4c, 0x40, 0x18, - 0x3c, 0x00, 0xb0, 0x12, 0x01, 0x00, 0x06, 0x49, - 0x09, 0x88, 0x40, 0x18, 0x60, 0x61, 0xf9, 0xf7, - 0x46, 0xfe, 0x05, 0x49, 0x09, 0x88, 0x40, 0x18, - 0x40, 0x00, 0xa0, 0x61, 0x10, 0xbd, 0x02, 0x61, - 0x01, 0x00, 0x04, 0x61, 0x01, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x11, 0x40, - 0x08, 0x1c, 0x10, 0xb5, 0x1c, 0x1c, 0x19, 0x1c, - 0x08, 0x31, 0x18, 0x60, 0xf1, 0xf7, 0x31, 0xfe, - 0x60, 0x60, 0x3c, 0x00, 0xec, 0x12, 0x01, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x22, 0x48, 0x0f, 0x1c, 0x41, 0x68, 0x91, 0x42, - 0x03, 0xd0, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60, - 0x42, 0x60, 0xc4, 0x68, 0x15, 0xe0, 0x28, 0x20, - 0x1d, 0x49, 0x60, 0x43, 0x40, 0x18, 0x05, 0x1c, - 0x06, 0x22, 0x31, 0x1c, 0xef, 0xf7, 0x70, 0xf8, - 0x00, 0x28, 0x07, 0xd1, 0xa8, 0x1d, 0x39, 0x1c, - 0xf9, 0xf7, 0x10, 0xfd, 0x3c, 0x00, 0x28, 0x13, - 0x01, 0x00, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, - 0xf8, 0xbd, 0x01, 0x34, 0x24, 0x07, 0x24, 0x0f, - 0x12, 0x48, 0x80, 0x68, 0x84, 0x42, 0xe5, 0xd1, - 0x10, 0x4c, 0x28, 0x23, 0xa0, 0x68, 0x0f, 0x4d, - 0x58, 0x43, 0x40, 0x19, 0x06, 0x22, 0x31, 0x1c, - 0xef, 0xf7, 0xd3, 0xf8, 0xa0, 0x68, 0x28, 0x23, - 0x58, 0x43, 0x40, 0x19, 0x06, 0x30, 0x22, 0x22, - 0x39, 0x1c, 0xef, 0xf7, 0xca, 0xf8, 0x3c, 0x00, - 0x64, 0x13, 0x01, 0x00, 0xa0, 0x68, 0x01, 0x30, - 0x00, 0x07, 0x00, 0x0f, 0xa0, 0x60, 0xe1, 0x68, - 0x81, 0x42, 0x03, 0xd1, 0x01, 0x31, 0x08, 0x07, - 0x00, 0x0f, 0xe0, 0x60, 0x00, 0x20, 0xd6, 0xe7, - 0xec, 0x65, 0x01, 0x00, 0xa0, 0xf4, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, - 0xe5, 0xff, 0x05, 0x4c, 0xa0, 0x68, 0x00, 0x28, - 0x04, 0xd1, 0x01, 0xf0, 0x07, 0xfd, 0x61, 0x68, - 0x3c, 0x00, 0xa0, 0x13, 0x01, 0x00, 0x40, 0x1a, - 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00, 0xd0, 0x60, - 0x01, 0x00, 0x02, 0x68, 0x0a, 0x60, 0x01, 0x60, - 0x70, 0x47, 0x01, 0x1c, 0x00, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x68, 0x0a, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xfe, 0xb5, 0x14, 0x1c, 0x1d, 0x1c, - 0x00, 0x22, 0xd2, 0x43, 0x01, 0xab, 0xf3, 0xf7, - 0x82, 0xff, 0x01, 0x98, 0x00, 0x26, 0x28, 0x40, - 0x01, 0x90, 0x3c, 0x00, 0xdc, 0x13, 0x01, 0x00, - 0x00, 0x25, 0x00, 0x27, 0x20, 0x60, 0x1e, 0xe0, - 0x01, 0x21, 0xb9, 0x40, 0x0a, 0x1c, 0x02, 0x40, - 0x18, 0xd0, 0x88, 0x43, 0x01, 0x90, 0x39, 0x06, - 0x09, 0x0e, 0x70, 0x19, 0x00, 0x19, 0x02, 0x91, - 0x01, 0x77, 0x08, 0x1c, 0xf9, 0xf7, 0xc6, 0xfc, - 0x00, 0x28, 0x06, 0xd0, 0x30, 0x1c, 0x00, 0x19, - 0x01, 0x36, 0x02, 0x99, 0x30, 0x30, 0x01, 0x70, - 0x04, 0xe0, 0x28, 0x1c, 0x3c, 0x00, 0x18, 0x14, - 0x01, 0x00, 0x01, 0x35, 0x02, 0x99, 0x00, 0x19, - 0x01, 0x72, 0x01, 0x37, 0x01, 0x98, 0x00, 0x28, - 0xdd, 0xd1, 0x70, 0x19, 0xa0, 0x61, 0x65, 0x60, - 0xe6, 0x62, 0xfe, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x14, 0x4d, 0x04, 0x1c, 0x28, 0x7a, 0x01, 0x28, - 0x02, 0xd1, 0x04, 0x20, 0xf6, 0xf7, 0xad, 0xf9, - 0x21, 0x1c, 0xa8, 0x6a, 0xf5, 0xf7, 0x21, 0xfc, - 0x00, 0x28, 0x03, 0xd1, 0x04, 0x20, 0x3c, 0x00, - 0x54, 0x14, 0x01, 0x00, 0xf6, 0xf7, 0xa4, 0xf9, - 0xb0, 0xbd, 0x02, 0x20, 0x28, 0x70, 0x28, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0x60, 0x81, 0x68, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0xa0, 0x81, 0xa8, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0xe0, 0x81, 0xe8, 0x69, - 0x01, 0x23, 0x02, 0x04, 0x12, 0x0c, 0x20, 0x1c, - 0x02, 0x49, 0xfc, 0xf7, 0x19, 0xff, 0xb0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0xa1, 0x77, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x14, 0x01, 0x00, 0xf8, 0xb5, - 0x19, 0x4e, 0x05, 0x1c, 0xb0, 0x69, 0x00, 0x28, - 0x00, 0xd1, 0x30, 0x68, 0xff, 0xf7, 0x3b, 0xfc, - 0x15, 0x4f, 0x04, 0x1c, 0x50, 0x37, 0x00, 0x28, - 0x0b, 0xd0, 0x60, 0x68, 0x29, 0x1c, 0x78, 0x60, - 0x01, 0x20, 0x38, 0x63, 0x20, 0x1c, 0xf5, 0xf7, - 0xea, 0xfb, 0x00, 0x28, 0x04, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x00, 0x23, 0xfb, 0x62, 0xfa, 0xe7, - 0x00, 0x23, 0x3c, 0x00, 0xcc, 0x14, 0x01, 0x00, - 0x23, 0x77, 0xf8, 0x6a, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0xf8, 0x62, 0x38, 0x7a, 0x01, 0x28, - 0x07, 0xd0, 0xf8, 0x69, 0x06, 0x49, 0x02, 0x04, - 0x12, 0x0c, 0x28, 0x1c, 0xfc, 0xf7, 0xe6, 0xfe, - 0x01, 0xe0, 0xfb, 0x62, 0xb3, 0x61, 0x01, 0x20, - 0xe5, 0xe7, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0xdd, 0x02, 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x16, 0x1c, 0x3c, 0x00, 0x08, 0x15, - 0x01, 0x00, 0x04, 0x2c, 0x1b, 0xd2, 0x10, 0x48, - 0x83, 0x42, 0x07, 0xd2, 0x58, 0x00, 0x0f, 0x49, - 0xef, 0xf7, 0xfb, 0xf8, 0xff, 0x30, 0x00, 0x0a, - 0x01, 0x38, 0x00, 0xe0, 0x00, 0x20, 0x1f, 0x35, - 0xea, 0x06, 0x61, 0x07, 0x09, 0x0e, 0xd2, 0x0e, - 0x11, 0x43, 0x72, 0x07, 0x52, 0x0d, 0x11, 0x43, - 0x00, 0x06, 0x00, 0x0a, 0x08, 0x43, 0x06, 0x4a, - 0xa1, 0x00, 0x50, 0x50, 0x70, 0xbd, 0x3c, 0x00, - 0x44, 0x15, 0x01, 0x00, 0x01, 0x21, 0x8d, 0x20, - 0xef, 0xf7, 0xac, 0xfe, 0x70, 0xbd, 0x00, 0x00, - 0x40, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x38, 0x01, - 0xe8, 0x60, 0x01, 0x00, 0x09, 0x4a, 0x80, 0x00, - 0x10, 0x58, 0x40, 0x09, 0x40, 0x01, 0x07, 0x22, - 0x02, 0x43, 0x07, 0x48, 0x03, 0x68, 0x00, 0x2b, - 0xfc, 0xdb, 0x42, 0x60, 0x09, 0x06, 0x01, 0x60, - 0x01, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x08, 0x20, - 0x3c, 0x00, 0x80, 0x15, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20, - 0x07, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x07, 0x49, 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28, - 0x03, 0xd1, 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7, - 0x80, 0xfe, 0x29, 0x1c, 0x20, 0x1c, 0xf6, 0xf7, - 0xa8, 0xfa, 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x07, 0x49, 0x3c, 0x00, 0xbc, 0x15, 0x01, 0x00, - 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28, 0x03, 0xd1, - 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7, 0x6c, 0xfe, - 0x29, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0xc4, 0xff, - 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00, - 0xf8, 0xb5, 0x0d, 0x1c, 0x16, 0x1c, 0xf7, 0xf7, - 0x17, 0xf9, 0x04, 0x1c, 0x28, 0x68, 0x40, 0x4f, - 0x81, 0x78, 0x00, 0x29, 0x3b, 0xd1, 0xc1, 0x78, - 0x00, 0x29, 0x58, 0xd1, 0x3c, 0x00, 0xf8, 0x15, - 0x01, 0x00, 0xf8, 0xf7, 0xf8, 0xf9, 0x22, 0x8e, - 0x61, 0x8e, 0x8a, 0x42, 0x04, 0xd0, 0xa1, 0x6a, - 0x09, 0x18, 0xe0, 0x69, 0x81, 0x42, 0x10, 0xd9, - 0x38, 0x49, 0x32, 0x1c, 0x48, 0x6b, 0x01, 0x30, - 0x48, 0x63, 0x20, 0x6a, 0x01, 0x30, 0x20, 0x62, - 0x38, 0x68, 0x01, 0x30, 0x38, 0x60, 0xe0, 0x68, - 0x63, 0x69, 0x29, 0x1c, 0xee, 0xf7, 0xd8, 0xfe, - 0xf8, 0xbd, 0x01, 0x32, 0x12, 0x04, 0x3c, 0x00, - 0x34, 0x16, 0x01, 0x00, 0x12, 0x0c, 0x22, 0x86, - 0xa1, 0x62, 0xb8, 0x68, 0x00, 0x28, 0x34, 0xd1, - 0x2c, 0x48, 0x0c, 0x23, 0x00, 0x68, 0x1b, 0x1a, - 0x9a, 0x42, 0x07, 0xd2, 0x19, 0x23, 0x9b, 0x01, - 0xaf, 0x22, 0x92, 0x01, 0x58, 0x43, 0x10, 0x1a, - 0x81, 0x42, 0x26, 0xd3, 0x01, 0x20, 0xb8, 0x60, - 0x01, 0x21, 0x0c, 0x20, 0x00, 0xf0, 0x7a, 0xfe, - 0x1f, 0xe0, 0x01, 0x29, 0x1d, 0xd1, 0xc0, 0x78, - 0x3c, 0x00, 0x70, 0x16, 0x01, 0x00, 0x17, 0x28, - 0x1a, 0xd1, 0xa0, 0x8e, 0xe1, 0x8e, 0x88, 0x42, - 0x14, 0xd3, 0xe9, 0x68, 0x09, 0x68, 0x09, 0x79, - 0x09, 0x06, 0x0f, 0xd5, 0x60, 0x6a, 0x32, 0x1c, - 0x01, 0x30, 0x60, 0x62, 0xe0, 0x68, 0x63, 0x69, - 0x29, 0x1c, 0xee, 0xf7, 0xa3, 0xfe, 0xe8, 0x68, - 0x01, 0x68, 0x08, 0x31, 0x0b, 0x20, 0x00, 0xf0, - 0x5c, 0xfe, 0xc3, 0xe7, 0x01, 0x30, 0xa0, 0x86, - 0xa0, 0x8d, 0x3c, 0x00, 0xac, 0x16, 0x01, 0x00, - 0xe1, 0x8d, 0x88, 0x42, 0x04, 0xd1, 0x03, 0x21, - 0x02, 0x20, 0xef, 0xf7, 0xf5, 0xfd, 0xb8, 0xe7, - 0x60, 0x68, 0x45, 0x60, 0x86, 0x60, 0x00, 0x68, - 0x60, 0x60, 0xf8, 0x68, 0x01, 0x30, 0xf8, 0x60, - 0xa0, 0x8d, 0x41, 0x1c, 0xa1, 0x85, 0x00, 0x28, - 0xab, 0xd1, 0x08, 0x48, 0xb9, 0x69, 0xfd, 0xf7, - 0x61, 0xfe, 0x22, 0x1c, 0x02, 0x21, 0xf1, 0x20, - 0x02, 0xf0, 0x64, 0xf8, 0x3c, 0x00, 0xe8, 0x16, - 0x01, 0x00, 0xa1, 0xe7, 0x00, 0x00, 0xfc, 0x5a, - 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x18, 0x57, - 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x1c, 0x02, 0x21, 0xf0, 0x20, 0x02, 0xf0, - 0x54, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28, - 0x03, 0xd1, 0x02, 0x48, 0x41, 0x78, 0xc9, 0x07, - 0xfc, 0xd5, 0x70, 0x47, 0x00, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x3c, 0x00, - 0x24, 0x17, 0x01, 0x00, 0x01, 0xd1, 0xf1, 0xf7, - 0x71, 0xfe, 0x80, 0xbd, 0x80, 0xb5, 0xf4, 0xf7, - 0xe5, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0xf6, 0xf7, - 0xeb, 0xf8, 0x80, 0xbd, 0x01, 0x49, 0x00, 0x20, - 0x08, 0x74, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0xc0, 0x07, 0x03, 0xd5, 0x02, 0x49, - 0x01, 0x20, 0x00, 0xf0, 0x1d, 0xfc, 0x80, 0xbd, - 0x50, 0xc3, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0e, - 0x3c, 0x00, 0x60, 0x17, 0x01, 0x00, 0x01, 0x28, - 0x80, 0xb5, 0x02, 0xd1, 0xf6, 0xf7, 0xe1, 0xf9, - 0x80, 0xbd, 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7, - 0x4c, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0xf6, 0xf7, 0xd7, 0xf9, 0x80, 0xbd, 0x03, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x74, 0xf6, 0xf7, - 0xfe, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x00, 0x0e, - 0xf1, 0xf7, 0x3c, 0x00, 0x9c, 0x17, 0x01, 0x00, - 0x71, 0xfe, 0x80, 0xbd, 0x10, 0xb5, 0x01, 0x28, - 0x08, 0xd0, 0x02, 0x28, 0x03, 0xd0, 0x03, 0x28, - 0x01, 0xd0, 0xef, 0xf7, 0xa7, 0xfd, 0xf6, 0xf7, - 0xe9, 0xf9, 0x10, 0xbd, 0x01, 0xf0, 0xf8, 0xfa, - 0x04, 0x1c, 0xfa, 0xf7, 0x5d, 0xfd, 0x24, 0x1a, - 0xfa, 0xf7, 0x3e, 0xfd, 0x08, 0x49, 0x00, 0x28, - 0x0b, 0xd0, 0x48, 0x6a, 0x00, 0x28, 0x08, 0xd0, - 0x06, 0x48, 0x84, 0x42, 0x3c, 0x00, 0xd8, 0x17, - 0x01, 0x00, 0x05, 0xd2, 0x01, 0x1b, 0x01, 0x22, - 0x07, 0x20, 0x01, 0xf0, 0xf4, 0xfe, 0xe5, 0xe7, - 0x00, 0x20, 0x48, 0x61, 0xe2, 0xe7, 0x78, 0x69, - 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x09, 0x49, - 0x80, 0xb5, 0x48, 0x69, 0x00, 0x28, 0x0c, 0xd0, - 0x08, 0x6a, 0xca, 0x69, 0x80, 0x1a, 0x00, 0x28, - 0x07, 0xdd, 0x00, 0x20, 0x48, 0x61, 0x01, 0x21, - 0x07, 0x20, 0x01, 0xf0, 0x10, 0xff, 0x3c, 0x00, - 0x14, 0x18, 0x01, 0x00, 0xf6, 0xf7, 0xb8, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfb, 0x80, 0xbd, - 0x80, 0xb5, 0x00, 0xf0, 0x3f, 0xfc, 0x00, 0x20, - 0xf7, 0xf7, 0xd4, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0x37, 0xfc, 0xfd, 0xf7, - 0x6f, 0xfc, 0xf5, 0xf7, 0x73, 0xfd, 0x30, 0xf0, - 0x47, 0xfb, 0x80, 0xbd, 0x04, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0x50, 0x18, 0x01, 0x00, 0xc1, 0x6a, - 0x00, 0x6b, 0xf2, 0xf7, 0xde, 0xff, 0x01, 0x20, - 0xf7, 0xf7, 0x89, 0xf8, 0x80, 0xbd, 0xa4, 0x6c, - 0x01, 0x00, 0x10, 0xb5, 0xf3, 0xf7, 0x41, 0xf8, - 0x0d, 0x4c, 0x00, 0x28, 0x04, 0xd0, 0x01, 0x20, - 0xe0, 0x64, 0xf7, 0xf7, 0xb2, 0xfc, 0x10, 0xbd, - 0x01, 0x21, 0x01, 0x20, 0xf3, 0xf7, 0xe9, 0xf8, - 0xfd, 0xf7, 0x4d, 0xfc, 0x60, 0x6d, 0x00, 0x28, - 0x03, 0xd0, 0x3c, 0x00, 0x8c, 0x18, 0x01, 0x00, - 0xf3, 0xf7, 0x82, 0xf8, 0x00, 0x28, 0x01, 0xd0, - 0xf5, 0xf7, 0x4a, 0xfd, 0x01, 0x20, 0xf2, 0xf7, - 0xc1, 0xfc, 0x10, 0xbd, 0xa4, 0x6c, 0x01, 0x00, - 0x04, 0x48, 0x80, 0xb5, 0xc1, 0x6a, 0x00, 0x6b, - 0xf2, 0xf7, 0xb2, 0xff, 0x01, 0x20, 0xf7, 0xf7, - 0x5d, 0xf8, 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xf5, 0xfb, 0xf5, 0xf7, - 0x33, 0xfd, 0xfc, 0xf7, 0x3c, 0x00, 0xc8, 0x18, - 0x01, 0x00, 0x31, 0xfd, 0xf9, 0xf7, 0xcb, 0xff, - 0x04, 0x20, 0xf2, 0xf7, 0xa6, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x6a, - 0x00, 0x6b, 0xf2, 0xf7, 0x98, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0xf0, 0xdd, 0xfb, 0x00, 0x20, 0xf7, 0xf7, - 0x3c, 0xf8, 0x30, 0xf0, 0xee, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x3c, 0x00, - 0x04, 0x19, 0x01, 0x00, 0x01, 0x20, 0xff, 0xf7, - 0x19, 0xfa, 0x01, 0x20, 0xf2, 0xf7, 0x88, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0xc9, 0xfb, 0xfc, 0xf7, 0x07, 0xfd, 0x01, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x0b, 0xfa, 0x04, 0x20, - 0xf2, 0xf7, 0x7a, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, - 0x00, 0xf0, 0x8a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x19, 0x01, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20, - 0x00, 0xf0, 0x81, 0xfb, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x20, 0x00, 0xf0, 0x78, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a, - 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x6f, 0xfb, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x22, 0x3c, 0x00, 0x7c, 0x19, 0x01, 0x00, - 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, 0x66, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x81, 0x68, 0x42, 0x69, 0x00, 0x69, 0x51, 0x18, - 0x81, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x01, 0x20, - 0x00, 0xf0, 0x58, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x82, 0x88, 0x81, 0x68, 0x00, 0x69, 0x51, 0x18, - 0x81, 0x42, 0x03, 0xd9, 0x3c, 0x00, 0xb8, 0x19, - 0x01, 0x00, 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0, - 0x48, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x20, 0x7b, - 0x21, 0x6a, 0xf9, 0xf7, 0x9c, 0xfa, 0xa1, 0x69, - 0x42, 0x18, 0xa0, 0x68, 0x21, 0x69, 0x80, 0x18, - 0x88, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x02, 0x20, - 0x00, 0xf0, 0x33, 0xfb, 0x10, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x3c, 0x00, - 0xf4, 0x19, 0x01, 0x00, 0x00, 0x21, 0x00, 0x20, - 0x00, 0xf0, 0x2a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x0e, 0x01, 0x28, 0x80, 0xb5, - 0x02, 0xd1, 0xf6, 0xf7, 0x8f, 0xf8, 0x80, 0xbd, - 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7, 0xfa, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0xf6, 0xf7, - 0x85, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x06, - 0x00, 0x0e, 0xf1, 0xf7, 0x29, 0xfd, 0x80, 0xbd, - 0x3c, 0x00, 0x30, 0x1a, 0x01, 0x00, 0xb0, 0xb5, - 0x02, 0x25, 0x02, 0x28, 0x10, 0x4c, 0x0b, 0xd1, - 0xfb, 0xf7, 0x47, 0xfc, 0x00, 0x28, 0x01, 0xd1, - 0xfe, 0xf7, 0x4f, 0xff, 0x25, 0x70, 0xa1, 0x68, - 0x0c, 0x48, 0xfd, 0xf7, 0xa8, 0xfc, 0xb0, 0xbd, - 0x03, 0x28, 0x0d, 0xd1, 0x08, 0x48, 0x7d, 0x23, - 0x1c, 0x38, 0x00, 0x69, 0xdb, 0x00, 0x58, 0x43, - 0x19, 0x1c, 0x40, 0x18, 0x41, 0x08, 0x02, 0x20, - 0x00, 0xf0, 0x3c, 0x00, 0x6c, 0x1a, 0x01, 0x00, - 0x91, 0xfa, 0x25, 0x70, 0xb0, 0xbd, 0xf8, 0xf7, - 0x31, 0xf9, 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, - 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xef, 0xf7, - 0x39, 0xfc, 0x02, 0x20, 0x20, 0x70, 0x00, 0xf0, - 0xaf, 0xfa, 0x10, 0xbd, 0x78, 0x69, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21, - 0x04, 0x20, 0x00, 0xf0, 0x3c, 0x00, 0xa8, 0x1a, - 0x01, 0x00, 0xd3, 0xfa, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x20, 0x00, 0xf0, 0xca, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0xc2, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69, - 0x01, 0x21, 0x01, 0x20, 0x00, 0xf0, 0xb9, 0xfa, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00, - 0xe4, 0x1a, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x82, 0x88, 0x00, 0x2a, 0x02, 0xd0, 0x01, 0x21, - 0x02, 0x20, 0x02, 0xe0, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0xa9, 0xfa, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x20, 0x7b, 0x21, 0x6a, 0xf9, 0xf7, 0xfe, 0xf9, - 0xa1, 0x69, 0x42, 0x18, 0x01, 0x21, 0x02, 0x20, - 0x00, 0xf0, 0x9a, 0xfa, 0x10, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x1b, 0x01, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0x90, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0xfa, 0xf7, 0x41, 0xfe, - 0x00, 0x20, 0xf0, 0xf7, 0x80, 0xf8, 0x00, 0x90, - 0x00, 0xab, 0x1c, 0x88, 0x5d, 0x88, 0xf8, 0xf7, - 0x3c, 0xf9, 0x00, 0x2c, 0x02, 0xd0, 0xfd, 0xf7, - 0x9e, 0xfa, 0x02, 0xe0, 0x01, 0x20, 0xf6, 0xf7, - 0x0a, 0xff, 0x3c, 0x00, 0x5c, 0x1b, 0x01, 0x00, - 0x29, 0x1c, 0x20, 0x1c, 0xfc, 0xf7, 0xb8, 0xfc, - 0x00, 0x2c, 0x02, 0xd0, 0xf5, 0xf7, 0xe0, 0xfb, - 0x02, 0xe0, 0x00, 0x20, 0x00, 0xf0, 0xdc, 0xf9, - 0x03, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x02, 0x20, - 0x00, 0x06, 0x00, 0x0e, 0xf2, 0xf7, 0x4e, 0xfb, - 0x38, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, - 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0, - 0x5d, 0xfa, 0x80, 0xbd, 0x3c, 0x00, 0x98, 0x1b, - 0x01, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x30, 0xf0, 0x9b, 0xf9, 0x80, 0xbd, 0x80, 0xb5, - 0x00, 0x22, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, - 0x50, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21, 0x01, 0x20, - 0x00, 0xf0, 0x47, 0xfa, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x82, 0x88, - 0x00, 0x2a, 0x03, 0xd0, 0x01, 0x21, 0x3c, 0x00, - 0xd4, 0x1b, 0x01, 0x00, 0x02, 0x20, 0x00, 0xf0, - 0x3b, 0xfa, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x7b, 0x21, 0x6a, - 0xf9, 0xf7, 0x90, 0xf9, 0xa1, 0x69, 0x42, 0x18, - 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0, 0x2c, 0xfa, - 0x10, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0xfc, 0xf7, 0x93, 0xfb, 0x01, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x97, 0xf8, 0x04, 0x20, - 0x3c, 0x00, 0x10, 0x1c, 0x01, 0x00, 0xf2, 0xf7, - 0x06, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x2f, 0xf0, 0x6b, 0xfb, 0x00, 0x28, 0x0a, 0xd0, - 0x01, 0x20, 0xf2, 0xf7, 0xfc, 0xfa, 0xfa, 0xf7, - 0x2a, 0xfc, 0x00, 0x28, 0x02, 0xd1, 0x04, 0x20, - 0xf6, 0xf7, 0x5d, 0xf8, 0x80, 0xbd, 0x03, 0x21, - 0x16, 0x20, 0xef, 0xf7, 0x32, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x02, 0x48, 0x80, 0xb5, 0x00, 0x68, - 0xee, 0xf7, 0x3c, 0x00, 0x4c, 0x1c, 0x01, 0x00, - 0xc5, 0xfb, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21, - 0x01, 0x20, 0x00, 0xf0, 0xf7, 0xf9, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x30, 0xf0, - 0x35, 0xf9, 0x80, 0xbd, 0xb0, 0xb5, 0x18, 0x4c, - 0xaa, 0x20, 0x00, 0x5d, 0x04, 0x28, 0x19, 0xd1, - 0x01, 0x25, 0xe5, 0x62, 0x25, 0x63, 0x01, 0xf0, - 0x93, 0xf8, 0xa0, 0x66, 0x3c, 0x00, 0x88, 0x1c, - 0x01, 0x00, 0x01, 0xf0, 0xfc, 0xfd, 0xf2, 0xf7, - 0x2e, 0xfe, 0x00, 0x28, 0x0e, 0xd0, 0x02, 0x20, - 0xf2, 0xf7, 0xc3, 0xfa, 0xa5, 0x60, 0x01, 0xf0, - 0x86, 0xf8, 0x64, 0x30, 0x60, 0x60, 0xfa, 0xf7, - 0x8a, 0xfd, 0x01, 0x21, 0x01, 0x20, 0xff, 0xf7, - 0x46, 0xf8, 0xb0, 0xbd, 0x01, 0x20, 0xf2, 0xf7, - 0xb4, 0xfa, 0x00, 0x20, 0xa0, 0x60, 0x00, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x3c, 0xf8, 0x3c, 0x00, - 0xc4, 0x1c, 0x01, 0x00, 0xf2, 0xf7, 0x66, 0xfe, - 0x00, 0x28, 0xf1, 0xd0, 0xfa, 0xf7, 0x76, 0xfd, - 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xef, 0xf7, 0xd6, 0xfe, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, - 0xef, 0xf7, 0xd0, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x21, 0x09, 0x5c, 0x02, 0x4a, 0x09, 0x02, - 0x89, 0x18, 0xc0, 0x31, 0x81, 0x60, 0x70, 0x47, - 0x3c, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x70, 0x75, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x04, 0xd1, - 0x03, 0xc9, 0x09, 0x68, 0xee, 0xf7, 0x64, 0xfb, - 0x80, 0xbd, 0x01, 0x21, 0x14, 0x20, 0xef, 0xf7, - 0xc4, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28, - 0x02, 0xd1, 0x02, 0x48, 0x40, 0x68, 0x70, 0x47, - 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24, 0xf8, 0xf7, - 0x1c, 0xfb, 0x3c, 0x00, 0x3c, 0x1d, 0x01, 0x00, - 0x00, 0x28, 0x04, 0xd0, 0x40, 0x30, 0x80, 0x7a, - 0x05, 0x28, 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c, - 0x10, 0xbd, 0x00, 0x00, 0x04, 0x48, 0x00, 0x21, - 0x40, 0x68, 0x01, 0xe0, 0x01, 0x63, 0x40, 0x68, - 0x00, 0x28, 0xfb, 0xd1, 0x70, 0x47, 0x00, 0x00, - 0x58, 0x75, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0xf7, 0xf7, 0xa5, 0xf8, 0x40, 0x34, - 0xe5, 0x72, 0xb0, 0xbd, 0x3c, 0x00, 0x78, 0x1d, - 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, 0xf8, 0xf7, - 0xfa, 0xfa, 0x04, 0x1c, 0x04, 0xd0, 0x05, 0x21, - 0x14, 0x20, 0xef, 0xf7, 0x8c, 0xfa, 0x28, 0xe0, - 0x00, 0x25, 0x14, 0x49, 0x28, 0x02, 0x46, 0x18, - 0x30, 0x1c, 0x44, 0x30, 0x06, 0x22, 0x12, 0x49, - 0xee, 0xf7, 0x2d, 0xfb, 0x00, 0x28, 0x02, 0xd1, - 0xac, 0x20, 0x85, 0x55, 0x34, 0x1c, 0x01, 0x35, - 0x03, 0x2d, 0xee, 0xd3, 0x00, 0x2c, 0x3c, 0x00, - 0xb4, 0x1d, 0x01, 0x00, 0x14, 0xd0, 0x39, 0x1c, - 0x20, 0x1c, 0xf8, 0xf7, 0x2b, 0xf8, 0x09, 0x49, - 0x00, 0x20, 0x20, 0x60, 0x18, 0x39, 0x48, 0x68, - 0x60, 0x60, 0x00, 0x28, 0x00, 0xd0, 0x04, 0x60, - 0x4c, 0x60, 0xca, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x01, 0x21, 0x20, 0x1c, 0xee, 0xf7, 0xfe, 0xfa, - 0x20, 0x1c, 0xf8, 0xbd, 0x70, 0x75, 0x01, 0x00, - 0x58, 0x46, 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7, - 0x3c, 0x00, 0xf0, 0x1d, 0x01, 0x00, 0xc1, 0xfa, - 0x00, 0x28, 0x04, 0xd1, 0x06, 0x21, 0x14, 0x20, - 0xef, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0xf5, 0xf7, - 0x16, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0xf8, 0xf7, 0xb3, 0xfa, 0x80, 0xbd, 0x10, 0xb5, - 0x09, 0x4c, 0x21, 0x88, 0x02, 0x29, 0x03, 0xd1, - 0x14, 0x20, 0xef, 0xf7, 0x42, 0xfa, 0x04, 0xe0, - 0xa3, 0x68, 0x8a, 0x00, 0x98, 0x50, 0x48, 0x1c, - 0x20, 0x80, 0x3c, 0x00, 0x2c, 0x1e, 0x01, 0x00, - 0x20, 0x88, 0x01, 0x38, 0x00, 0x04, 0x00, 0x0c, - 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, - 0x0b, 0x1c, 0x11, 0x1c, 0x08, 0x4a, 0x80, 0xb5, - 0x12, 0x88, 0x90, 0x42, 0x06, 0xd2, 0xda, 0x68, - 0xc0, 0x00, 0x12, 0x18, 0x14, 0x20, 0x01, 0xf0, - 0xbb, 0xfb, 0x80, 0xbd, 0x03, 0x21, 0x14, 0x20, - 0xef, 0xf7, 0x22, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x58, 0x75, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x1e, - 0x01, 0x00, 0x08, 0x4a, 0x80, 0xb5, 0x12, 0x88, - 0x90, 0x42, 0x06, 0xd2, 0xc9, 0x68, 0xc0, 0x00, - 0x09, 0x18, 0x14, 0x20, 0x01, 0xf0, 0xdb, 0xfb, - 0x80, 0xbd, 0x04, 0x21, 0x14, 0x20, 0xef, 0xf7, - 0x0e, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x01, 0x49, 0xc8, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x06, 0x22, 0x44, 0x30, 0xee, 0xf7, 0x3c, 0x00, - 0xa4, 0x1e, 0x01, 0x00, 0xab, 0xfa, 0x00, 0x28, - 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, - 0x80, 0xbd, 0x00, 0x00, 0x1c, 0xb5, 0x14, 0x4c, - 0x20, 0x69, 0x00, 0x28, 0x23, 0xd0, 0x20, 0x78, - 0x0a, 0x28, 0x01, 0xd0, 0x00, 0xf0, 0xfc, 0xf8, - 0x00, 0x20, 0x60, 0x61, 0x0f, 0x48, 0x40, 0x79, - 0xa0, 0x70, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, - 0x15, 0xd1, 0xfd, 0xf7, 0xed, 0xfe, 0x01, 0x90, - 0x3c, 0x00, 0xe0, 0x1e, 0x01, 0x00, 0xfd, 0xf7, - 0x82, 0xfe, 0x00, 0x90, 0x00, 0xab, 0x18, 0x79, - 0x19, 0x78, 0x40, 0x1a, 0x18, 0x71, 0x58, 0x79, - 0x59, 0x78, 0x40, 0x1a, 0x58, 0x71, 0x01, 0x98, - 0xf2, 0xf7, 0x89, 0xfe, 0x05, 0x20, 0x20, 0x70, - 0x00, 0xf0, 0xbf, 0xf9, 0x1c, 0xbd, 0x7c, 0x78, - 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x08, 0xb5, - 0x04, 0x4a, 0x00, 0x90, 0x14, 0x32, 0x00, 0x20, - 0x02, 0x4b, 0x3c, 0x00, 0x1c, 0x1f, 0x01, 0x00, - 0x02, 0x49, 0xf1, 0xf7, 0x7d, 0xf9, 0x08, 0xbd, - 0x2c, 0x75, 0x01, 0x00, 0xb1, 0xa8, 0x00, 0x00, - 0xb0, 0xb5, 0x00, 0x28, 0x06, 0xd0, 0x01, 0x28, - 0x06, 0xd0, 0x02, 0x28, 0x07, 0xd1, 0x0c, 0x4c, - 0x01, 0x25, 0x07, 0xe0, 0x0b, 0x4c, 0x04, 0xe0, - 0x0a, 0x4c, 0x2a, 0x3c, 0x01, 0xe0, 0x08, 0x4c, - 0xb6, 0x34, 0x00, 0x25, 0x00, 0xf0, 0x2c, 0xff, - 0x07, 0x49, 0x89, 0x6e, 0x3c, 0x00, 0x58, 0x1f, - 0x01, 0x00, 0x09, 0x19, 0x09, 0x1a, 0xa1, 0x42, - 0x00, 0xd9, 0x00, 0x21, 0x2a, 0x1c, 0x16, 0x20, - 0x01, 0xf0, 0x31, 0xfb, 0xb0, 0xbd, 0x71, 0x02, - 0x00, 0x00, 0x0c, 0x05, 0x00, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x8c, 0xb5, 0x00, 0xab, 0x8e, 0x21, - 0x19, 0x80, 0xfc, 0xf7, 0x38, 0xf9, 0x01, 0x90, - 0x68, 0x46, 0xfb, 0xf7, 0xa6, 0xfa, 0x8c, 0xbd, - 0x00, 0x00, 0xbf, 0xb5, 0x13, 0x4a, 0x3c, 0x00, - 0x94, 0x1f, 0x01, 0x00, 0x01, 0x91, 0x0d, 0x1c, - 0x11, 0x7c, 0x88, 0x43, 0x04, 0x1c, 0x21, 0x43, - 0x08, 0x1c, 0x10, 0x74, 0xa0, 0x07, 0x0b, 0xd5, - 0x0e, 0x48, 0x00, 0x90, 0x01, 0x20, 0x02, 0x90, - 0x00, 0xf0, 0xfc, 0xfe, 0x0c, 0x49, 0x40, 0x18, - 0x03, 0x90, 0x68, 0x46, 0xf9, 0xf7, 0x6a, 0xff, - 0xe0, 0x07, 0x0c, 0xd5, 0xf1, 0xf7, 0x2c, 0xfd, - 0x00, 0x28, 0x03, 0xd0, 0x07, 0x48, 0x85, 0x42, - 0x3c, 0x00, 0xd0, 0x1f, 0x01, 0x00, 0x00, 0xd2, - 0x01, 0x90, 0x06, 0x48, 0x00, 0x90, 0x68, 0x46, - 0xf9, 0xf7, 0x09, 0xff, 0xbf, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x81, 0xea, 0x00, 0x00, 0x10, 0x27, - 0x00, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x75, 0xea, - 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x60, 0x69, - 0x00, 0x28, 0x0e, 0xd1, 0x01, 0x20, 0x60, 0x61, - 0xa1, 0x68, 0x07, 0x48, 0xfd, 0xf7, 0xcb, 0xf9, - 0x00, 0x21, 0x3c, 0x00, 0x0c, 0x20, 0x01, 0x00, - 0xa0, 0x68, 0xf9, 0xf7, 0xd1, 0xfb, 0x01, 0x22, - 0x07, 0x20, 0x04, 0x49, 0x01, 0xf0, 0xd8, 0xfa, - 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x98, 0x3a, 0x00, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x11, 0x1c, 0x06, 0x4a, - 0x00, 0x2b, 0x10, 0x70, 0x03, 0xd0, 0x00, 0x28, - 0x02, 0xd1, 0xf9, 0xf7, 0xf5, 0xfd, 0x10, 0xbd, - 0x20, 0x1c, 0xf9, 0xf7, 0x3c, 0x00, 0x48, 0x20, - 0x01, 0x00, 0x01, 0xfe, 0x10, 0xbd, 0xa0, 0x79, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4c, 0x05, 0x1c, - 0xe3, 0x6a, 0x20, 0x1f, 0x01, 0x33, 0xe3, 0x62, - 0x00, 0x88, 0x00, 0x29, 0x06, 0xd0, 0xa1, 0x68, - 0x89, 0x18, 0x21, 0x61, 0x05, 0x4a, 0x00, 0xf0, - 0xfc, 0xfe, 0x01, 0xe0, 0x00, 0xf0, 0xcf, 0xfe, - 0x25, 0x77, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x55, 0xe3, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x20, 0x01, 0x00, 0x01, 0x1c, 0x03, 0x48, - 0x80, 0xb5, 0x40, 0x88, 0xff, 0xf7, 0xec, 0xfe, - 0x80, 0xbd, 0x00, 0x00, 0x98, 0x7c, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x68, 0x18, 0x38, - 0x80, 0x88, 0xff, 0xf7, 0xe1, 0xfe, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, - 0x16, 0x20, 0x01, 0xf0, 0xbf, 0xfa, 0x01, 0x21, - 0x16, 0x20, 0x01, 0xf0, 0xbb, 0xfa, 0x80, 0xbd, - 0x3c, 0x00, 0xc0, 0x20, 0x01, 0x00, 0x10, 0xb5, - 0x0b, 0x4c, 0x20, 0x78, 0x0a, 0x28, 0x10, 0xd0, - 0x01, 0x20, 0x60, 0x61, 0x0a, 0x21, 0x13, 0x20, - 0x01, 0xf0, 0xaf, 0xfa, 0x0a, 0x20, 0x60, 0x70, - 0x20, 0x70, 0xfd, 0xf7, 0x3c, 0xfb, 0x01, 0x20, - 0xfd, 0xf7, 0xe9, 0xfb, 0x00, 0x20, 0xfa, 0xf7, - 0xc4, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0x00, 0x20, - 0x0b, 0x49, 0x3c, 0x00, 0xfc, 0x20, 0x01, 0x00, - 0x20, 0x63, 0xe0, 0x62, 0x50, 0x39, 0x88, 0x61, - 0x20, 0x70, 0x08, 0x48, 0x38, 0x21, 0x0c, 0x38, - 0x00, 0x7a, 0x08, 0x55, 0x81, 0x21, 0x18, 0x20, - 0x01, 0xf0, 0x8e, 0xfa, 0x20, 0x69, 0x01, 0x28, - 0x02, 0xd1, 0x00, 0x20, 0xf5, 0xf7, 0x3e, 0xfb, - 0x10, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x1c, 0x4c, 0x00, 0x25, 0x2c, 0x22, - 0x01, 0x1d, 0x20, 0x1c, 0x3c, 0x00, 0x38, 0x21, - 0x01, 0x00, 0x9a, 0xb0, 0xee, 0xf7, 0x39, 0xfa, - 0x18, 0x49, 0x2c, 0x31, 0x08, 0x1c, 0x00, 0x7a, - 0x8a, 0x69, 0x00, 0x2a, 0x13, 0xd1, 0x02, 0x28, - 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x20, 0xd0, - 0x04, 0xe0, 0x00, 0x28, 0x1d, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x1a, 0xd0, 0x80, 0x02, 0x88, 0x61, - 0x0e, 0x48, 0x69, 0x46, 0x24, 0x38, 0x00, 0x68, - 0xef, 0xf7, 0xcb, 0xfb, 0x11, 0xe0, 0x3c, 0x00, - 0x74, 0x21, 0x01, 0x00, 0x00, 0x22, 0x02, 0x28, - 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x09, 0xd1, - 0x04, 0xe0, 0x00, 0x28, 0x08, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x03, 0xd1, 0x8a, 0x61, 0xff, 0xf7, - 0xb1, 0xff, 0x01, 0xe0, 0x80, 0x02, 0x88, 0x61, - 0x28, 0x1c, 0x1a, 0xb0, 0xb0, 0xbd, 0x00, 0x00, - 0xc8, 0x6e, 0x01, 0x00, 0xf8, 0xb5, 0x0c, 0x49, - 0x02, 0x20, 0x48, 0x60, 0x0b, 0x49, 0x00, 0x05, - 0x3c, 0x00, 0xb0, 0x21, 0x01, 0x00, 0x08, 0x60, - 0x0b, 0x4f, 0xb8, 0x68, 0xf9, 0x68, 0x7c, 0x68, - 0x45, 0x1a, 0x2e, 0x1c, 0x04, 0xe0, 0xa0, 0x68, - 0x61, 0x68, 0xee, 0xf7, 0x09, 0xf9, 0x24, 0x68, - 0x01, 0x3d, 0xf8, 0xd2, 0x7c, 0x60, 0xf8, 0x68, - 0x80, 0x19, 0xf8, 0x60, 0xf8, 0xbd, 0x40, 0x20, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x44, 0xe3, - 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x04, 0x1c, - 0x30, 0x69, 0x3c, 0x00, 0xec, 0x21, 0x01, 0x00, - 0x01, 0x21, 0xf9, 0xf7, 0x99, 0xfa, 0x1d, 0x49, - 0x60, 0x00, 0x40, 0x18, 0x10, 0x38, 0x81, 0x7b, - 0x1b, 0x4a, 0x51, 0x72, 0xc0, 0x7b, 0x10, 0x74, - 0x1a, 0x4f, 0x1b, 0x4d, 0x0e, 0x2c, 0x0a, 0xd1, - 0x01, 0x22, 0x02, 0x21, 0x08, 0x20, 0x01, 0xf0, - 0xf3, 0xfb, 0x03, 0x20, 0xff, 0x21, 0x41, 0x31, - 0x39, 0x86, 0x14, 0x21, 0x08, 0xe0, 0x02, 0x22, - 0x01, 0x21, 0x08, 0x20, 0x3c, 0x00, 0x28, 0x22, - 0x01, 0x00, 0x01, 0xf0, 0xe8, 0xfb, 0x12, 0x49, - 0x02, 0x20, 0x39, 0x86, 0x10, 0x21, 0xa9, 0x71, - 0xe8, 0x71, 0x10, 0x48, 0x11, 0x4a, 0x00, 0x19, - 0x10, 0x38, 0xc0, 0x7b, 0x00, 0x28, 0x03, 0xd0, - 0x01, 0x21, 0x51, 0x73, 0x10, 0x73, 0x01, 0xe0, - 0x00, 0x20, 0x50, 0x73, 0x00, 0x21, 0x20, 0x1c, - 0xfd, 0xf7, 0xe5, 0xfd, 0x30, 0x69, 0xf9, 0xf7, - 0x08, 0xfb, 0xf8, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x22, 0x01, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x76, 0x46, 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, - 0x30, 0x80, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, - 0xff, 0x01, 0x00, 0x00, 0x5c, 0x57, 0x01, 0x00, - 0xd0, 0x80, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4c, - 0x14, 0x4a, 0x21, 0x78, 0x00, 0x20, 0x18, 0x32, - 0x05, 0x29, 0x1d, 0xd0, 0x06, 0x29, 0x1b, 0xd0, - 0x07, 0x29, 0x01, 0xd0, 0x08, 0x29, 0x06, 0xd1, - 0x3c, 0x00, 0xa0, 0x22, 0x01, 0x00, 0x91, 0x68, - 0x05, 0x20, 0x10, 0x29, 0x00, 0xdb, 0x06, 0x20, - 0x20, 0x70, 0x01, 0x20, 0xa1, 0x78, 0x00, 0x28, - 0x61, 0x70, 0x0b, 0xd0, 0x00, 0x20, 0xfa, 0xf7, - 0xdc, 0xf8, 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7, - 0x3c, 0xfa, 0x0a, 0x22, 0x1e, 0x21, 0x13, 0x20, - 0x01, 0xf0, 0x7f, 0xf9, 0x10, 0xbd, 0xd1, 0x69, - 0x07, 0x20, 0x10, 0x29, 0xe8, 0xdb, 0x08, 0x20, - 0xe6, 0xe7, 0x3c, 0x00, 0xdc, 0x22, 0x01, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, - 0x01, 0x1c, 0x04, 0x1c, 0x44, 0x31, 0x00, 0x20, - 0xf6, 0xf7, 0x40, 0xfa, 0x30, 0x34, 0x00, 0x2d, - 0x07, 0xd0, 0x0e, 0xc8, 0x0e, 0xc4, 0x08, 0xc8, - 0x10, 0x38, 0x08, 0xc4, 0xf4, 0xf7, 0xc4, 0xf9, - 0xb0, 0xbd, 0x1e, 0xcc, 0x1e, 0xc0, 0xb0, 0xbd, - 0xf8, 0xb5, 0x08, 0x1c, 0x11, 0x1c, 0xf4, 0xf7, - 0x87, 0xfa, 0x08, 0x4c, 0x3c, 0x00, 0x18, 0x23, - 0x01, 0x00, 0x00, 0x25, 0x08, 0x4e, 0x08, 0x4f, - 0x06, 0xe0, 0x30, 0x6b, 0x00, 0x28, 0x03, 0xd0, - 0x35, 0x63, 0x20, 0x68, 0xee, 0xf7, 0x55, 0xf8, - 0x38, 0x68, 0x00, 0x28, 0xf5, 0xd0, 0xf8, 0xbd, - 0x00, 0x00, 0x5c, 0x5b, 0x01, 0x00, 0xe4, 0xfe, - 0x01, 0x00, 0x84, 0x5a, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x06, 0x00, 0x0e, 0x00, 0xf0, 0x07, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x1c, 0x3c, 0x00, - 0x54, 0x23, 0x01, 0x00, 0x23, 0x21, 0x01, 0xf0, - 0x2b, 0xfa, 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, - 0x23, 0x20, 0xee, 0xf7, 0x9b, 0xff, 0x06, 0x49, - 0xa0, 0x00, 0x08, 0x58, 0x04, 0xe0, 0x12, 0xc8, - 0x28, 0x1c, 0xee, 0xf7, 0x2e, 0xf8, 0x20, 0x1c, - 0x00, 0x28, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00, - 0x68, 0x5b, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, - 0x3c, 0x00, 0x90, 0x23, 0x01, 0x00, 0x00, 0x25, - 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, - 0x23, 0x20, 0xee, 0xf7, 0x82, 0xff, 0x13, 0x48, - 0xa7, 0x00, 0xc4, 0x59, 0x08, 0xe0, 0x20, 0x68, - 0xb0, 0x42, 0x03, 0xd1, 0x03, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x77, 0xff, 0x25, 0x1c, 0x64, 0x68, - 0x00, 0x2c, 0xf4, 0xd1, 0x0c, 0x4a, 0x04, 0x3a, - 0x10, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x41, 0x68, - 0x11, 0x60, 0x3c, 0x00, 0xcc, 0x23, 0x01, 0x00, - 0x00, 0x28, 0x04, 0xd1, 0x02, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x66, 0xff, 0xf8, 0xbd, 0x00, 0x21, - 0x41, 0x60, 0x06, 0x60, 0x00, 0x2d, 0x01, 0xd0, - 0x68, 0x60, 0xf7, 0xe7, 0x01, 0x49, 0xc8, 0x51, - 0xf4, 0xe7, 0x00, 0x00, 0x68, 0x5b, 0x01, 0x00, - 0x70, 0xb5, 0x0e, 0x1c, 0x05, 0x1c, 0x00, 0x24, - 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x4e, 0xff, 0x3c, 0x00, 0x08, 0x24, - 0x01, 0x00, 0x0d, 0x4b, 0xaa, 0x00, 0x98, 0x58, - 0x04, 0xe0, 0x01, 0x68, 0xb1, 0x42, 0x04, 0xd0, - 0x04, 0x1c, 0x40, 0x68, 0x00, 0x28, 0xf8, 0xd1, - 0x70, 0xbd, 0x00, 0x28, 0xfc, 0xd0, 0x00, 0x2c, - 0x41, 0x68, 0x01, 0xd1, 0x99, 0x50, 0x00, 0xe0, - 0x61, 0x60, 0x00, 0x21, 0x03, 0x4a, 0x01, 0x60, - 0x04, 0x3a, 0x11, 0x68, 0x41, 0x60, 0x10, 0x60, - 0x70, 0xbd, 0x68, 0x5b, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x24, 0x01, 0x00, 0xf3, 0xb5, 0x81, 0xb0, - 0x00, 0x28, 0x17, 0xd0, 0x01, 0x78, 0xff, 0x29, - 0x14, 0xd0, 0x45, 0x78, 0x44, 0x19, 0x02, 0x34, - 0x80, 0x27, 0x01, 0x3c, 0x26, 0x78, 0x01, 0x3d, - 0xbe, 0x43, 0x30, 0x1c, 0xf8, 0xf7, 0x82, 0xfc, - 0x01, 0x21, 0x81, 0x40, 0x02, 0x98, 0x01, 0x40, - 0x02, 0xd0, 0x3e, 0x43, 0x30, 0x1c, 0x20, 0x70, - 0x00, 0x2d, 0xee, 0xd1, 0xfe, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x24, 0x01, 0x00, 0x10, 0x4b, - 0x10, 0xb5, 0x59, 0x68, 0x41, 0x1a, 0x0f, 0x29, - 0x0d, 0xdc, 0x0e, 0x22, 0xd2, 0x43, 0x91, 0x42, - 0x09, 0xdb, 0x1a, 0x1c, 0x92, 0x68, 0x00, 0x29, - 0x01, 0xdd, 0x00, 0x2a, 0x03, 0xda, 0x00, 0x29, - 0x0d, 0xda, 0x00, 0x2a, 0x0b, 0xdc, 0x04, 0x33, - 0x03, 0xc3, 0xfd, 0xf7, 0x10, 0xfd, 0x04, 0x1c, - 0xfd, 0xf7, 0x13, 0xfd, 0x00, 0x28, 0x02, 0xd0, - 0x20, 0x1c, 0x3c, 0x00, 0xbc, 0x24, 0x01, 0x00, - 0xff, 0xf7, 0x92, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0xf8, 0xb5, 0x64, 0x4c, - 0x07, 0x1c, 0x60, 0x78, 0xa1, 0x78, 0x88, 0x42, - 0x0f, 0xd1, 0x08, 0x1c, 0xfd, 0xf7, 0xce, 0xf8, - 0xe0, 0x60, 0x04, 0x20, 0x60, 0x70, 0x0a, 0x22, - 0x1e, 0x21, 0x13, 0x20, 0x01, 0xf0, 0x70, 0xf8, - 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7, 0x24, 0xf9, - 0xf8, 0xbd, 0x04, 0x28, 0x3c, 0x00, 0xf8, 0x24, - 0x01, 0x00, 0x6e, 0xd1, 0x58, 0x4e, 0xfd, 0xf7, - 0xbc, 0xf8, 0x00, 0x90, 0x71, 0x78, 0x04, 0x1c, - 0x00, 0x20, 0x05, 0x29, 0x21, 0xd2, 0x01, 0xa3, - 0x5b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x0b, 0x0f, - 0x14, 0x1a, 0x02, 0x00, 0x51, 0x48, 0x51, 0x49, - 0x60, 0x43, 0x41, 0x18, 0x7d, 0x20, 0xc0, 0x00, - 0xee, 0xf7, 0x87, 0xf8, 0x11, 0xe0, 0x87, 0x20, - 0x60, 0x43, 0x4d, 0x49, 0x02, 0xe0, 0x3c, 0x00, - 0x34, 0x25, 0x01, 0x00, 0x45, 0x20, 0x4d, 0x49, - 0x60, 0x43, 0x40, 0x18, 0x08, 0xe0, 0x4c, 0x48, - 0xcd, 0x21, 0x09, 0x01, 0x60, 0x43, 0x40, 0x1a, - 0x02, 0xe0, 0x46, 0x20, 0x60, 0x43, 0x82, 0x38, - 0x06, 0x06, 0x48, 0x48, 0x07, 0x21, 0x00, 0x79, - 0x36, 0x16, 0x08, 0x1a, 0x00, 0x19, 0x00, 0x90, - 0x68, 0x46, 0xfe, 0xf7, 0x5f, 0xfd, 0x38, 0x1c, - 0xfd, 0xf7, 0x2e, 0xfb, 0x00, 0x99, 0x42, 0x4a, - 0x3c, 0x00, 0x70, 0x25, 0x01, 0x00, 0x49, 0x00, - 0x51, 0x5a, 0x48, 0x43, 0x39, 0x49, 0x04, 0x1c, - 0x88, 0x78, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, - 0x1e, 0xd1, 0x35, 0x49, 0x00, 0x28, 0x03, 0xd1, - 0x3a, 0x48, 0x05, 0x78, 0x04, 0x20, 0x02, 0xe0, - 0x38, 0x48, 0x45, 0x78, 0x0c, 0x20, 0x30, 0x49, - 0xc9, 0x68, 0x49, 0x1b, 0x08, 0x18, 0x00, 0x90, - 0x68, 0x46, 0xfe, 0xf7, 0x3e, 0xfd, 0x00, 0x98, - 0x33, 0x49, 0x3c, 0x00, 0xac, 0x25, 0x01, 0x00, - 0x40, 0x00, 0x20, 0x31, 0x08, 0x5a, 0x2a, 0x49, - 0x44, 0x43, 0xc8, 0x68, 0xa8, 0x42, 0x01, 0xd9, - 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25, 0x2e, 0x48, - 0x21, 0x18, 0x40, 0x00, 0xee, 0xf7, 0xa2, 0xf8, - 0x04, 0x1c, 0x00, 0x2d, 0x03, 0xd0, 0xfd, 0xf7, - 0xc3, 0xfa, 0x02, 0xe0, 0x3d, 0xe0, 0xfd, 0xf7, - 0xf3, 0xfa, 0x00, 0x2f, 0x02, 0xd1, 0x25, 0x48, - 0x0e, 0x38, 0x01, 0xe0, 0x3c, 0x00, 0xe8, 0x25, - 0x01, 0x00, 0x23, 0x48, 0x0a, 0x38, 0x01, 0x68, - 0x61, 0x1a, 0xcb, 0x1c, 0x01, 0xdb, 0x03, 0x29, - 0x00, 0xdd, 0x04, 0x60, 0x01, 0x68, 0xa1, 0x42, - 0x01, 0xd2, 0x01, 0x31, 0x04, 0xe0, 0xa1, 0x42, - 0x03, 0xd9, 0x00, 0x29, 0x01, 0xd0, 0x01, 0x39, - 0x01, 0x60, 0x01, 0x68, 0x38, 0x1c, 0xfd, 0xf7, - 0xc0, 0xfb, 0x10, 0x4c, 0x0a, 0x20, 0x60, 0x70, - 0x0a, 0x22, 0x13, 0x20, 0xa1, 0x68, 0x3c, 0x00, - 0x24, 0x26, 0x01, 0x00, 0x00, 0xf0, 0xd2, 0xff, - 0x60, 0x68, 0x00, 0xf0, 0xf7, 0xfa, 0x00, 0x28, - 0x00, 0xd1, 0x5f, 0xe7, 0x00, 0xf0, 0xba, 0xfb, - 0x11, 0x49, 0x00, 0x23, 0x40, 0x18, 0x0e, 0x49, - 0x60, 0x60, 0x1e, 0x39, 0xc8, 0x56, 0xb0, 0x42, - 0xf3, 0xd0, 0x0e, 0x70, 0x31, 0x1c, 0x00, 0x20, - 0xff, 0xf7, 0x84, 0xfe, 0x4e, 0xe7, 0xff, 0xf7, - 0x15, 0xfe, 0x4b, 0xe7, 0x7c, 0x78, 0x01, 0x00, - 0x3c, 0x00, 0x60, 0x26, 0x01, 0x00, 0x60, 0xd7, - 0xff, 0xff, 0x60, 0x8f, 0x01, 0x00, 0x54, 0x0b, - 0x00, 0x00, 0xc9, 0x09, 0x00, 0x00, 0x8e, 0xfe, - 0xff, 0xff, 0x0c, 0x5a, 0x01, 0x00, 0x12, 0x5a, - 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x40, 0x42, - 0x0f, 0x00, 0x30, 0xb5, 0x0c, 0x4b, 0xfe, 0x24, - 0x1b, 0x88, 0x04, 0x40, 0xc0, 0x07, 0x5d, 0x07, - 0x6d, 0x0f, 0xdb, 0x08, 0xc0, 0x0f, 0x9c, 0x42, - 0x0b, 0xd8, 0x3c, 0x00, 0x9c, 0x26, 0x01, 0x00, - 0xa2, 0x18, 0x04, 0x3a, 0x9a, 0x42, 0x07, 0xd3, - 0x1a, 0x1b, 0x89, 0x5c, 0x01, 0x22, 0xaa, 0x40, - 0x11, 0x40, 0x01, 0xd0, 0x02, 0x21, 0x08, 0x43, - 0x30, 0xbd, 0x00, 0x00, 0xfa, 0x60, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c, - 0x14, 0x20, 0xf5, 0xf7, 0xff, 0xfa, 0x80, 0xbd, - 0xb0, 0xb5, 0x04, 0x1c, 0xf7, 0xf7, 0x08, 0xfd, - 0x13, 0x4d, 0x00, 0x28, 0x3c, 0x00, 0xd8, 0x26, - 0x01, 0x00, 0x1d, 0xd1, 0xa0, 0x07, 0x16, 0xd5, - 0x02, 0x20, 0x84, 0x43, 0x11, 0x48, 0x01, 0x22, - 0x2a, 0x62, 0x40, 0x68, 0x00, 0x28, 0x13, 0xd0, - 0xf2, 0xf7, 0x51, 0xf9, 0x00, 0x28, 0x0f, 0xd1, - 0x0b, 0x48, 0xe4, 0x30, 0x80, 0x7a, 0x01, 0x28, - 0x00, 0xd0, 0x00, 0x22, 0x11, 0x1c, 0x01, 0x20, - 0xf2, 0xf7, 0xa5, 0xf9, 0x04, 0xe0, 0x00, 0xf0, - 0x4e, 0xfb, 0xe8, 0x61, 0xf2, 0xf7, 0x3c, 0x00, - 0x14, 0x27, 0x01, 0x00, 0x6b, 0xf9, 0xa9, 0x6a, - 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7, - 0x5c, 0xfe, 0xb0, 0xbd, 0x60, 0x6c, 0x01, 0x00, - 0xb0, 0x57, 0x01, 0x00, 0x20, 0x48, 0xb0, 0xb5, - 0x81, 0x68, 0x01, 0x29, 0x04, 0xd1, 0x00, 0x78, - 0x00, 0x28, 0x01, 0xd1, 0xfd, 0xf7, 0x72, 0xfd, - 0x1b, 0x4d, 0x80, 0x3d, 0x2c, 0x1c, 0x70, 0x34, - 0x20, 0x78, 0x03, 0x38, 0x05, 0x28, 0x18, 0xd2, - 0x3c, 0x00, 0x50, 0x27, 0x01, 0x00, 0x01, 0xa3, - 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x04, 0x15, - 0x27, 0x27, 0x27, 0x00, 0xfb, 0xf7, 0xf1, 0xff, - 0x60, 0x7b, 0x01, 0x1c, 0xff, 0x31, 0x61, 0x73, - 0x00, 0x28, 0xf7, 0xd1, 0x04, 0x20, 0x20, 0x70, - 0xa8, 0x89, 0xf8, 0xf7, 0xda, 0xf9, 0x01, 0x1c, - 0x00, 0x22, 0x0f, 0x20, 0x00, 0xf0, 0x25, 0xff, - 0xb0, 0xbd, 0xef, 0xf7, 0xce, 0xff, 0x6a, 0x21, - 0x49, 0x5b, 0x3c, 0x00, 0x8c, 0x27, 0x01, 0x00, - 0x88, 0x42, 0x0b, 0xd0, 0xe8, 0x89, 0xf8, 0xf7, - 0xcb, 0xf9, 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22, - 0x0f, 0x20, 0x00, 0xf0, 0xf7, 0xff, 0x07, 0x20, - 0x20, 0x70, 0xb0, 0xbd, 0xfd, 0xf7, 0x3a, 0xfe, - 0xb0, 0xbd, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, - 0xf0, 0xb5, 0x85, 0xb0, 0x04, 0x1c, 0x03, 0x80, - 0x18, 0x0c, 0x60, 0x80, 0x0d, 0x1c, 0x51, 0x78, - 0x10, 0x78, 0x09, 0x02, 0x3c, 0x00, 0xc8, 0x27, - 0x01, 0x00, 0x48, 0x40, 0xa0, 0x80, 0xd1, 0x78, - 0x90, 0x78, 0x09, 0x02, 0x48, 0x40, 0xe0, 0x80, - 0x51, 0x79, 0x10, 0x79, 0x09, 0x02, 0x48, 0x40, - 0x20, 0x81, 0x68, 0x46, 0x1a, 0x49, 0x14, 0x22, - 0xed, 0xf7, 0xe3, 0xfe, 0x00, 0x23, 0x00, 0x20, - 0xd9, 0x07, 0xc9, 0x0f, 0x8c, 0x46, 0x42, 0x00, - 0x56, 0x07, 0x76, 0x0f, 0x61, 0x46, 0x89, 0x19, - 0x49, 0x00, 0x6e, 0x5c, 0x49, 0x19, 0x3c, 0x00, - 0x04, 0x28, 0x01, 0x00, 0x49, 0x78, 0x6f, 0x46, - 0x09, 0x02, 0x4e, 0x40, 0x81, 0x00, 0x79, 0x58, - 0x0f, 0x4f, 0x49, 0x00, 0x61, 0x5a, 0x01, 0x30, - 0x4e, 0x40, 0x31, 0x06, 0x36, 0x0a, 0x76, 0x00, - 0xc9, 0x0d, 0x79, 0x5a, 0xf6, 0x19, 0x01, 0x27, - 0x7f, 0x02, 0xf6, 0x19, 0x36, 0x88, 0x71, 0x40, - 0xa6, 0x5a, 0x89, 0x19, 0xa1, 0x52, 0x05, 0x28, - 0xdc, 0xdb, 0x20, 0x89, 0xc0, 0x18, 0x01, 0x33, - 0x3c, 0x00, 0x40, 0x28, 0x01, 0x00, 0x08, 0x2b, - 0x20, 0x81, 0xd2, 0xdb, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xd8, 0x56, 0x01, 0x00, 0xd8, 0x52, - 0x01, 0x00, 0xf0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x1e, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0x41, 0x00, - 0x53, 0x5a, 0x01, 0x30, 0x06, 0xaf, 0x7b, 0x52, - 0x05, 0x28, 0xf8, 0xdb, 0x10, 0x89, 0x00, 0xab, - 0x3a, 0x49, 0x80, 0x19, 0x58, 0x84, 0x68, 0x46, - 0x18, 0x22, 0x3c, 0x00, 0x7c, 0x28, 0x01, 0x00, - 0xed, 0xf7, 0x98, 0xfe, 0x00, 0x20, 0x41, 0x00, - 0x0a, 0x19, 0x52, 0x78, 0x63, 0x5c, 0x6f, 0x46, - 0x12, 0x02, 0x53, 0x40, 0x82, 0x00, 0xba, 0x58, - 0x06, 0xaf, 0x52, 0x00, 0xba, 0x5a, 0x31, 0x4f, - 0x01, 0x30, 0x53, 0x40, 0x1a, 0x06, 0x1b, 0x0a, - 0x5b, 0x00, 0xd2, 0x0d, 0xba, 0x5a, 0xdb, 0x19, - 0x01, 0x27, 0x7f, 0x02, 0xdb, 0x19, 0x1b, 0x88, - 0x5a, 0x40, 0x06, 0xab, 0x3c, 0x00, 0xb8, 0x28, - 0x01, 0x00, 0x5b, 0x5a, 0xd2, 0x18, 0x06, 0xab, - 0x5a, 0x52, 0x06, 0x28, 0xde, 0xdb, 0x61, 0x7b, - 0x20, 0x7b, 0x00, 0xab, 0x09, 0x02, 0x48, 0x40, - 0x59, 0x8c, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03, - 0x48, 0x40, 0x19, 0x8b, 0x40, 0x18, 0x18, 0x83, - 0xe1, 0x7b, 0xa0, 0x7b, 0x09, 0x02, 0x48, 0x40, - 0x19, 0x8b, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03, - 0x48, 0x40, 0x59, 0x8b, 0x40, 0x18, 0x3c, 0x00, - 0xf4, 0x28, 0x01, 0x00, 0x58, 0x83, 0x02, 0x20, - 0x41, 0x00, 0x06, 0xaa, 0x8a, 0x18, 0x20, 0x3a, - 0xd2, 0x8b, 0x01, 0x30, 0x53, 0x08, 0xd2, 0x03, - 0x5a, 0x40, 0x06, 0xab, 0x5b, 0x5a, 0xd2, 0x18, - 0x06, 0xab, 0x5a, 0x52, 0x06, 0x28, 0xef, 0xdb, - 0x30, 0x0a, 0x28, 0x70, 0x70, 0x04, 0x40, 0x0e, - 0x20, 0x21, 0x08, 0x43, 0x68, 0x70, 0xae, 0x70, - 0x61, 0x78, 0x20, 0x78, 0x00, 0xab, 0x09, 0x02, - 0x3c, 0x00, 0x30, 0x29, 0x01, 0x00, 0x48, 0x40, - 0x59, 0x8c, 0x48, 0x40, 0xc0, 0x05, 0x00, 0x0e, - 0xe8, 0x70, 0x00, 0x20, 0x41, 0x00, 0x06, 0xaa, - 0x53, 0x5a, 0x4a, 0x19, 0x01, 0x30, 0x13, 0x71, - 0x06, 0xab, 0x59, 0x5a, 0x09, 0x0a, 0x51, 0x71, - 0x06, 0x28, 0xf3, 0xdb, 0x09, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xec, 0x56, 0x01, 0x00, 0xd8, 0x52, - 0x01, 0x00, 0xf0, 0xb5, 0x46, 0x68, 0x05, 0x1c, - 0x60, 0x30, 0x3c, 0x00, 0x6c, 0x29, 0x01, 0x00, - 0x85, 0xb0, 0x04, 0x90, 0x60, 0xe0, 0x68, 0x68, - 0x0c, 0x21, 0x07, 0x69, 0x00, 0x20, 0xee, 0xf7, - 0x2d, 0xfe, 0x70, 0x61, 0x01, 0x89, 0x04, 0x39, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x70, 0x69, - 0x00, 0x68, 0x40, 0x18, 0x04, 0x21, 0xee, 0xf7, - 0x21, 0xfe, 0xf0, 0x61, 0x70, 0x69, 0x20, 0x21, - 0x04, 0x68, 0x04, 0x98, 0x04, 0x22, 0x40, 0x7b, - 0x80, 0x01, 0x08, 0x43, 0x3c, 0x00, 0xa8, 0x29, - 0x01, 0x00, 0xe0, 0x70, 0x28, 0x69, 0x40, 0x89, - 0xa0, 0x70, 0x28, 0x69, 0x40, 0x89, 0x00, 0x0a, - 0x20, 0x70, 0x29, 0x69, 0x0c, 0x31, 0xa0, 0x18, - 0xed, 0xf7, 0x9b, 0xfd, 0x20, 0x78, 0x20, 0x21, - 0x40, 0x06, 0x40, 0x0e, 0x08, 0x43, 0x60, 0x70, - 0x28, 0x69, 0x0a, 0x30, 0x01, 0x88, 0x01, 0x31, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x80, 0x04, 0xd1, - 0x28, 0x69, 0x0c, 0x30, 0x01, 0x68, 0x3c, 0x00, - 0xe4, 0x29, 0x01, 0x00, 0x01, 0x31, 0x01, 0x60, - 0x35, 0x62, 0x61, 0x79, 0x20, 0x79, 0x09, 0x02, - 0x40, 0x18, 0xa1, 0x79, 0x09, 0x04, 0x40, 0x18, - 0xe1, 0x79, 0x09, 0x06, 0x43, 0x18, 0x00, 0x93, - 0xa0, 0x78, 0x21, 0x78, 0x09, 0x02, 0x40, 0x18, - 0x04, 0x04, 0x24, 0x0c, 0x10, 0x20, 0xee, 0xf7, - 0x13, 0xff, 0xb0, 0x61, 0x28, 0x69, 0x3a, 0x1c, - 0x01, 0x68, 0x00, 0x9b, 0x01, 0xa8, 0x0a, 0x32, - 0x3c, 0x00, 0x20, 0x2a, 0x01, 0x00, 0xff, 0xf7, - 0xc8, 0xfe, 0x28, 0x69, 0x23, 0x1c, 0x01, 0x68, - 0xb0, 0x69, 0x01, 0xaa, 0xff, 0xf7, 0x11, 0xff, - 0x36, 0x68, 0x00, 0x2e, 0x9c, 0xd1, 0x03, 0x49, - 0x04, 0x48, 0x6a, 0x68, 0xf7, 0xf7, 0x63, 0xfb, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xfd, 0x6b, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x01, 0x38, - 0x07, 0x49, 0x40, 0x00, 0x09, 0x5c, 0x00, 0x29, - 0x06, 0xd0, 0x3c, 0x00, 0x5c, 0x2a, 0x01, 0x00, - 0x04, 0x49, 0x1c, 0x39, 0x08, 0x5c, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0xe6, 0x78, 0x01, 0x00, - 0xfe, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x02, 0x90, - 0x13, 0x48, 0x17, 0x1c, 0x00, 0x68, 0x0c, 0x1c, - 0x86, 0x78, 0x30, 0x1c, 0xfd, 0xf7, 0x28, 0xfa, - 0x00, 0x28, 0x01, 0xd1, 0x02, 0x98, 0xfe, 0xbd, - 0x00, 0x2d, 0x08, 0xd1, 0x3c, 0x00, 0x98, 0x2a, - 0x01, 0x00, 0x20, 0x68, 0x00, 0xab, 0x18, 0x71, - 0x60, 0x68, 0x58, 0x71, 0xa0, 0x68, 0x98, 0x71, - 0x03, 0x20, 0x38, 0x80, 0x29, 0x1c, 0x30, 0x1c, - 0x01, 0xaa, 0x00, 0xf0, 0x0e, 0xf8, 0x00, 0x2d, - 0xec, 0xd0, 0x00, 0xab, 0x19, 0x79, 0x21, 0x60, - 0x59, 0x79, 0x61, 0x60, 0x99, 0x79, 0xa1, 0x60, - 0x0c, 0x21, 0x39, 0x80, 0xe2, 0xe7, 0xf8, 0x6b, - 0x01, 0x00, 0xf8, 0xb5, 0x15, 0x1c, 0x3c, 0x00, - 0xd4, 0x2a, 0x01, 0x00, 0x42, 0x1e, 0x01, 0x38, - 0x47, 0x00, 0x3f, 0x18, 0x1f, 0x48, 0x3e, 0x18, - 0x00, 0x29, 0x06, 0xd0, 0x01, 0x24, 0x03, 0x22, - 0x31, 0x1c, 0x28, 0x1c, 0xed, 0xf7, 0x04, 0xfd, - 0x32, 0xe0, 0x68, 0x78, 0x01, 0x24, 0x00, 0x28, - 0x05, 0xd0, 0x29, 0x78, 0x08, 0x18, 0x01, 0x38, - 0x0e, 0x28, 0x00, 0xd9, 0x00, 0x24, 0x00, 0x2c, - 0x26, 0xd0, 0x00, 0x2a, 0x07, 0xd1, 0x2a, 0x21, - 0x3c, 0x00, 0x10, 0x2b, 0x01, 0x00, 0x12, 0x48, - 0xed, 0xf7, 0x9f, 0xfc, 0x1c, 0x21, 0x11, 0x48, - 0xed, 0xf7, 0x9b, 0xfc, 0x0f, 0x48, 0x03, 0x22, - 0x29, 0x1c, 0x30, 0x1c, 0xed, 0xf7, 0xe7, 0xfc, - 0x0c, 0x48, 0x71, 0x78, 0xc0, 0x5d, 0xb2, 0x78, - 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x2a, 0x0c, 0xd0, - 0x01, 0x22, 0x43, 0x18, 0x08, 0x4d, 0x06, 0xe0, - 0x41, 0x00, 0x49, 0x19, 0x10, 0x39, 0x8a, 0x73, - 0xb7, 0x78, 0x3c, 0x00, 0x4c, 0x2b, 0x01, 0x00, - 0x01, 0x30, 0xcf, 0x73, 0x83, 0x42, 0xf6, 0xd8, - 0xfe, 0xf7, 0x60, 0xf8, 0x20, 0x1c, 0xf8, 0xbd, - 0xeb, 0x62, 0x01, 0x00, 0xca, 0x78, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x1c, 0x48, 0x00, 0x23, - 0xc0, 0x56, 0x43, 0x1c, 0x32, 0xd1, 0xa8, 0x7a, - 0xf8, 0xf7, 0x0c, 0xf9, 0x00, 0x26, 0x00, 0x28, - 0x18, 0x4c, 0x08, 0xd0, 0xe8, 0x69, 0xe1, 0x6b, - 0x00, 0x29, 0x0b, 0xd1, 0x3c, 0x00, 0x88, 0x2b, - 0x01, 0x00, 0x66, 0x63, 0x01, 0x21, 0xe1, 0x63, - 0xa6, 0x63, 0x06, 0xe0, 0xa8, 0x69, 0xe1, 0x6b, - 0x00, 0x29, 0x02, 0xd0, 0x66, 0x63, 0xa6, 0x63, - 0xe6, 0x63, 0xa1, 0x6b, 0x01, 0x31, 0xa1, 0x63, - 0x82, 0x03, 0x01, 0xd5, 0x0e, 0x4a, 0x10, 0x43, - 0xe2, 0x6b, 0x00, 0x2a, 0x00, 0xd0, 0x40, 0x42, - 0x62, 0x6b, 0x10, 0x18, 0x60, 0x63, 0x08, 0x29, - 0x0b, 0xd1, 0x00, 0x28, 0x01, 0xdd, 0x3c, 0x00, - 0xc4, 0x2b, 0x01, 0x00, 0x01, 0x20, 0x03, 0xe0, - 0x00, 0x28, 0x03, 0xda, 0x00, 0x20, 0xc0, 0x43, - 0xef, 0xf7, 0x62, 0xfe, 0x66, 0x63, 0xa6, 0x63, - 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x6b, 0x01, 0x00, - 0x84, 0x6a, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, - 0x0c, 0x21, 0x05, 0x4a, 0x41, 0x43, 0x89, 0x18, - 0x80, 0xb5, 0x89, 0x78, 0x00, 0x29, 0x01, 0xd1, - 0xf3, 0xf7, 0xf2, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x00, 0x20, - 0xf7, 0xf7, 0x03, 0xfa, 0x80, 0xbd, 0x80, 0xb5, - 0x01, 0x1c, 0x01, 0x20, 0xf7, 0xf7, 0xfd, 0xf9, - 0x80, 0xbd, 0x02, 0x49, 0x89, 0x68, 0x40, 0x1a, - 0xc0, 0x0f, 0x70, 0x47, 0x00, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x02, 0x49, 0x89, 0x68, 0x08, 0x1a, - 0xc0, 0x17, 0x01, 0x30, 0x70, 0x47, 0x00, 0x01, - 0x07, 0x00, 0x3c, 0x00, 0x3c, 0x2c, 0x01, 0x00, - 0x05, 0x49, 0x4a, 0x68, 0x01, 0x23, 0x1a, 0x43, - 0x4a, 0x60, 0x8a, 0x68, 0x10, 0x18, 0x88, 0x60, - 0x48, 0x68, 0x98, 0x43, 0x48, 0x60, 0x70, 0x47, - 0x00, 0x01, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4b, - 0x00, 0x21, 0x0a, 0x01, 0x9a, 0x58, 0x00, 0x2a, - 0x17, 0xd1, 0x01, 0x24, 0x0a, 0x01, 0x9c, 0x50, - 0xd2, 0x18, 0x10, 0x73, 0x00, 0x23, 0x53, 0x73, - 0x02, 0x23, 0x01, 0x28, 0x3c, 0x00, 0x78, 0x2c, - 0x01, 0x00, 0x0e, 0x4a, 0x05, 0xd1, 0xc8, 0x00, - 0x80, 0x18, 0x10, 0x30, 0x02, 0x78, 0x9a, 0x43, - 0x04, 0xe0, 0xc8, 0x00, 0x80, 0x18, 0x10, 0x30, - 0x02, 0x78, 0x1a, 0x43, 0x02, 0x70, 0x02, 0xe0, - 0x01, 0x31, 0x08, 0x29, 0xe0, 0xdb, 0x08, 0x29, - 0x04, 0xd1, 0x01, 0x21, 0x99, 0x20, 0xee, 0xf7, - 0xfe, 0xfa, 0x03, 0x49, 0x08, 0x04, 0x00, 0x0c, - 0x10, 0xbd, 0xac, 0x73, 0x01, 0x00, 0x3c, 0x00, - 0xb4, 0x2c, 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, - 0xff, 0xff, 0x00, 0x00, 0xf7, 0xb5, 0x19, 0x4f, - 0x19, 0x4e, 0x0c, 0x1c, 0xc1, 0x00, 0xc9, 0x19, - 0xb2, 0x68, 0x10, 0x31, 0x81, 0xb0, 0x01, 0x3a, - 0x4a, 0x60, 0x0b, 0x78, 0x1d, 0x1c, 0x0d, 0x22, - 0x93, 0x43, 0x0b, 0x70, 0x01, 0x22, 0x82, 0x40, - 0x3a, 0x73, 0x12, 0x4b, 0x00, 0x01, 0x03, 0x9a, - 0xc0, 0x18, 0x82, 0x60, 0x10, 0x4a, 0x10, 0x1c, - 0x3c, 0x00, 0xf0, 0x2c, 0x01, 0x00, 0x20, 0x30, - 0x87, 0x79, 0x00, 0xab, 0x1f, 0x70, 0xc0, 0x79, - 0x58, 0x70, 0xb0, 0x68, 0x03, 0x30, 0x00, 0x23, - 0x26, 0x1a, 0x01, 0xd5, 0x04, 0x1c, 0x01, 0x23, - 0x4c, 0x60, 0x0d, 0x70, 0x00, 0x2b, 0x04, 0xd0, - 0x20, 0x1c, 0xff, 0xf7, 0x8a, 0xff, 0x00, 0x28, - 0xfa, 0xd0, 0x00, 0xab, 0x18, 0x88, 0xd0, 0x84, - 0xff, 0xbd, 0x00, 0x60, 0x07, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x3c, 0x00, 0x2c, 0x2d, 0x01, 0x00, - 0xac, 0x73, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x30, 0xb5, 0x00, 0x20, 0xc0, 0x43, 0x0b, 0x4c, - 0x09, 0x4b, 0x00, 0x22, 0xd1, 0x00, 0x09, 0x19, - 0x0d, 0x7c, 0xed, 0x07, 0x07, 0xd5, 0x49, 0x69, - 0x9d, 0x68, 0x49, 0x1b, 0x00, 0xd5, 0x00, 0x21, - 0x81, 0x42, 0x00, 0xd2, 0x08, 0x1c, 0x01, 0x32, - 0x08, 0x2a, 0xef, 0xdb, 0x30, 0xbd, 0x00, 0x00, - 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x2d, - 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0xb0, 0xb5, - 0x08, 0x28, 0x0b, 0xd2, 0x08, 0x4d, 0x04, 0x01, - 0x29, 0x59, 0x00, 0x29, 0x04, 0xd0, 0x00, 0xf0, - 0x4a, 0xf8, 0x00, 0x20, 0x28, 0x51, 0xb0, 0xbd, - 0x02, 0x21, 0x00, 0xe0, 0x03, 0x21, 0x99, 0x20, - 0xee, 0xf7, 0x89, 0xfa, 0xb0, 0xbd, 0xac, 0x73, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x01, 0x40, 0x18, - 0x41, 0x7b, 0x08, 0x22, 0x11, 0x43, 0x3c, 0x00, - 0xa4, 0x2d, 0x01, 0x00, 0x41, 0x73, 0x70, 0x47, - 0xac, 0x73, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, - 0x70, 0xb5, 0x0b, 0x4e, 0x09, 0x4d, 0x00, 0x22, - 0xd0, 0x00, 0x84, 0x19, 0x20, 0x7c, 0xc0, 0x07, - 0x07, 0xd5, 0x60, 0x69, 0xff, 0xf7, 0x26, 0xff, - 0x00, 0x28, 0x02, 0xd0, 0xa8, 0x68, 0x32, 0x30, - 0x60, 0x61, 0x01, 0x32, 0x08, 0x2a, 0xef, 0xdb, - 0x3c, 0x00, 0xe0, 0x2d, 0x01, 0x00, 0x70, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x02, 0x4a, 0xc0, 0x00, 0x80, 0x18, - 0x01, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x04, 0x49, 0xc0, 0x00, 0x41, 0x18, - 0x08, 0x7c, 0x08, 0x23, 0x02, 0x1c, 0x9a, 0x43, - 0x0a, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x70, 0xb5, 0x08, 0x28, 0x17, 0xd2, - 0x0e, 0x49, 0x3c, 0x00, 0x1c, 0x2e, 0x01, 0x00, - 0x8a, 0x68, 0x0e, 0x4d, 0x01, 0x3a, 0xc1, 0x00, - 0x49, 0x19, 0x4a, 0x61, 0x0c, 0x4b, 0x9a, 0x79, - 0x10, 0x31, 0x0c, 0x78, 0x0d, 0x26, 0xb4, 0x43, - 0x0c, 0x70, 0x01, 0x21, 0x81, 0x40, 0x29, 0x73, - 0x9a, 0x71, 0x09, 0x4a, 0x07, 0x49, 0x00, 0x01, - 0x80, 0x18, 0x41, 0x60, 0x70, 0xbd, 0x05, 0x21, - 0x99, 0x20, 0xee, 0xf7, 0x29, 0xfa, 0x70, 0xbd, - 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x58, 0x2e, - 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0xac, 0x73, - 0x01, 0x00, 0xf8, 0xb5, 0x9e, 0x46, 0x1a, 0x4b, - 0x94, 0x46, 0x9b, 0x68, 0x1a, 0x4c, 0xc2, 0x00, - 0x12, 0x19, 0x01, 0x3b, 0x53, 0x61, 0x15, 0x1c, - 0x18, 0x4c, 0xa6, 0x79, 0x2a, 0x1c, 0x10, 0x32, - 0x13, 0x78, 0x0d, 0x27, 0xbb, 0x43, 0x13, 0x70, - 0x01, 0x27, 0x12, 0x4b, 0x87, 0x40, 0x3c, 0x00, - 0x94, 0x2e, 0x01, 0x00, 0x1f, 0x73, 0xa6, 0x71, - 0x12, 0x4e, 0x00, 0x01, 0x80, 0x19, 0x63, 0x46, - 0x43, 0x60, 0x73, 0x46, 0x83, 0x60, 0x13, 0x78, - 0x40, 0x7b, 0xa6, 0x79, 0x01, 0x27, 0x18, 0x43, - 0x38, 0x43, 0x14, 0x35, 0x00, 0xab, 0x1e, 0x70, - 0xe4, 0x79, 0x5c, 0x70, 0x06, 0x4b, 0x9b, 0x68, - 0x03, 0x33, 0xcc, 0x1a, 0x00, 0xd5, 0x19, 0x1c, - 0x29, 0x60, 0x10, 0x70, 0x00, 0xab, 0x18, 0x88, - 0x3c, 0x00, 0xd0, 0x2e, 0x01, 0x00, 0x03, 0x4c, - 0x20, 0x3c, 0xe0, 0x84, 0xf8, 0xbd, 0x00, 0x01, - 0x07, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xac, 0x73, 0x01, 0x00, 0x00, 0xb5, - 0x01, 0x1c, 0xff, 0xf7, 0x5e, 0xff, 0x42, 0x18, - 0x10, 0x1c, 0xff, 0xf7, 0x92, 0xfe, 0x00, 0x28, - 0xfa, 0xd0, 0x00, 0xbd, 0x00, 0x00, 0x89, 0x1a, - 0x40, 0x1a, 0x99, 0x18, 0x88, 0x42, 0x01, 0xd8, - 0x01, 0x20, 0x3c, 0x00, 0x0c, 0x2f, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x00, 0x28, - 0x01, 0xd1, 0xee, 0xf7, 0xef, 0xf9, 0x21, 0x1c, - 0x01, 0x20, 0xff, 0xf7, 0x19, 0xfa, 0x41, 0x20, - 0x00, 0x5d, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x25, - 0x04, 0xe0, 0x02, 0x28, 0x01, 0xd1, 0x05, 0x25, - 0x00, 0xe0, 0x01, 0x25, 0xe0, 0x68, 0xee, 0xf7, - 0x29, 0xfb, 0xa6, 0x6b, 0x3c, 0x00, 0x48, 0x2f, - 0x01, 0x00, 0x00, 0x2e, 0x10, 0xd0, 0x00, 0x2f, - 0x06, 0xd0, 0x2f, 0x20, 0x02, 0x5d, 0x20, 0x6a, - 0x41, 0x6b, 0x28, 0x1c, 0xed, 0xf7, 0x44, 0xfa, - 0xa0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xee, 0xf7, - 0x46, 0xfc, 0x20, 0x6a, 0xee, 0xf7, 0x43, 0xfc, - 0x20, 0x1c, 0xee, 0xf7, 0x40, 0xfc, 0x30, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0xc0, 0x6b, - 0x00, 0x28, 0x09, 0xd0, 0x20, 0x69, 0x3c, 0x00, - 0x84, 0x2f, 0x01, 0x00, 0x00, 0x8b, 0xee, 0xf7, - 0x55, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c, - 0x06, 0x20, 0xff, 0xf7, 0xe3, 0xf9, 0x08, 0x4d, - 0x20, 0x1c, 0xa9, 0x6d, 0xff, 0xf7, 0xba, 0xff, - 0x00, 0x28, 0x07, 0xd0, 0xe8, 0x68, 0x01, 0x30, - 0xe8, 0x60, 0x28, 0x6a, 0x01, 0x38, 0x28, 0x62, - 0xfc, 0xf7, 0x78, 0xf8, 0xb0, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x3c, 0x00, 0xc0, 0x2f, 0x01, 0x00, 0xe1, 0x6d, - 0xff, 0xf7, 0xa7, 0xff, 0x00, 0x28, 0x04, 0xd0, - 0xe0, 0x69, 0x01, 0x38, 0xe0, 0x61, 0xfc, 0xf7, - 0x68, 0xf8, 0x10, 0xbd, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x0c, 0x23, 0x0c, 0x49, 0x58, 0x43, - 0x40, 0x18, 0x10, 0xb5, 0x44, 0x68, 0xa1, 0x68, - 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7, - 0xf3, 0xf9, 0xe0, 0x6b, 0x00, 0x28, 0x08, 0xd0, - 0x20, 0x69, 0x3c, 0x00, 0xfc, 0x2f, 0x01, 0x00, - 0x00, 0x8b, 0xee, 0xf7, 0x19, 0xf9, 0x00, 0x28, - 0x02, 0xd0, 0x20, 0x1c, 0xf9, 0xf7, 0x26, 0xf9, - 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0x22, 0x49, 0x48, 0x68, 0x80, 0x00, - 0x06, 0xd4, 0x01, 0x20, 0x40, 0x07, 0x08, 0x60, - 0x4a, 0x69, 0x92, 0x00, 0x00, 0xd4, 0x48, 0x60, - 0x1d, 0x4f, 0x78, 0x7e, 0xc3, 0x06, 0x01, 0x20, - 0x02, 0x1c, 0xdb, 0x0e, 0x3c, 0x00, 0x38, 0x30, - 0x01, 0x00, 0x9a, 0x40, 0x0a, 0x60, 0x79, 0x69, - 0x8c, 0x68, 0x8c, 0x60, 0x21, 0x07, 0x89, 0x0f, - 0x09, 0xd0, 0x21, 0x07, 0x04, 0xd5, 0x0b, 0x21, - 0x9e, 0x20, 0xee, 0xf7, 0x28, 0xf9, 0x00, 0xe0, - 0x78, 0x64, 0x0c, 0x20, 0x84, 0x43, 0x12, 0x48, - 0x3d, 0x68, 0x06, 0x5d, 0x6c, 0x68, 0x2c, 0x34, - 0x06, 0xe0, 0xa0, 0x68, 0x00, 0x68, 0xa0, 0x60, - 0xe9, 0x68, 0x28, 0x1c, 0xed, 0xf7, 0x3c, 0x00, - 0x74, 0x30, 0x01, 0x00, 0xb2, 0xf9, 0x01, 0x3e, - 0xf6, 0xd2, 0xa0, 0x68, 0x80, 0x68, 0x00, 0x28, - 0x0d, 0xd0, 0x40, 0x89, 0x00, 0x28, 0x0a, 0xd0, - 0x78, 0x6c, 0x00, 0x28, 0x07, 0xd1, 0x78, 0x69, - 0x80, 0x68, 0x80, 0x07, 0x03, 0xd1, 0x0c, 0x21, - 0x9e, 0x20, 0xee, 0xf7, 0x03, 0xf9, 0xf8, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0xcc, 0x6d, 0x01, 0x00, - 0xb4, 0x44, 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5, - 0x3c, 0x00, 0xb0, 0x30, 0x01, 0x00, 0x08, 0x7e, - 0xc2, 0x06, 0xd2, 0x0e, 0x01, 0x20, 0x90, 0x40, - 0x07, 0x4a, 0x10, 0x60, 0x00, 0x20, 0x0a, 0x69, - 0xc0, 0x43, 0x90, 0x60, 0x08, 0x68, 0x24, 0x31, - 0x06, 0xc9, 0x03, 0x69, 0xed, 0xf7, 0x86, 0xf9, - 0x80, 0xbd, 0xcc, 0x6d, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x44, 0x68, 0x06, 0x1c, - 0x2c, 0x34, 0x20, 0x68, 0x0d, 0x1c, 0x80, 0x68, - 0x00, 0x90, 0x3c, 0x00, 0xec, 0x30, 0x01, 0x00, - 0x00, 0x28, 0x00, 0xd0, 0xc5, 0x60, 0x20, 0x68, - 0x00, 0x68, 0x20, 0x60, 0x40, 0x68, 0x00, 0x28, - 0x03, 0xd0, 0x0a, 0x21, 0x9e, 0x20, 0xee, 0xf7, - 0xcf, 0xf8, 0x20, 0x68, 0x45, 0x60, 0x28, 0x1c, - 0x02, 0xe0, 0x00, 0x22, 0x42, 0x60, 0x08, 0x1c, - 0xc1, 0x68, 0x00, 0x29, 0xf9, 0xd1, 0x71, 0x68, - 0x60, 0x27, 0x0b, 0x1c, 0x40, 0x33, 0x9c, 0x46, - 0x9b, 0x78, 0xca, 0x7e, 0x3c, 0x00, 0x28, 0x31, - 0x01, 0x00, 0x5b, 0x01, 0x12, 0x07, 0x12, 0x0f, - 0x3b, 0x40, 0x1a, 0x43, 0x8b, 0x8f, 0xff, 0x27, - 0x3f, 0x04, 0x1b, 0x04, 0x3b, 0x40, 0x1a, 0x43, - 0x90, 0x23, 0x1a, 0x43, 0x42, 0x60, 0x63, 0x46, - 0x9a, 0x78, 0x01, 0x32, 0xd2, 0x07, 0xd2, 0x0f, - 0x9a, 0x70, 0x89, 0x6b, 0xc1, 0x60, 0x21, 0x68, - 0x88, 0x60, 0x00, 0x98, 0x00, 0x28, 0x01, 0xd0, - 0x00, 0x98, 0xc5, 0x60, 0x0a, 0x4f, 0x3c, 0x00, - 0x64, 0x31, 0x01, 0x00, 0xbd, 0x79, 0xa0, 0x69, - 0x00, 0x28, 0x0c, 0xd0, 0x00, 0x22, 0xa2, 0x61, - 0x74, 0x68, 0x60, 0x69, 0xef, 0xf7, 0x2e, 0xff, - 0xe0, 0x6a, 0x61, 0x69, 0x40, 0x68, 0x48, 0x60, - 0x61, 0x69, 0x01, 0x20, 0x08, 0x60, 0xbd, 0x71, - 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, - 0xfe, 0xb5, 0x44, 0x68, 0x0f, 0x1c, 0x01, 0x94, - 0x2c, 0x34, 0x20, 0x1c, 0x12, 0x30, 0x02, 0x90, - 0x3c, 0x00, 0xa0, 0x31, 0x01, 0x00, 0x2c, 0xe0, - 0x0c, 0x20, 0xee, 0xf7, 0x00, 0xfb, 0x05, 0x1c, - 0x60, 0x68, 0x00, 0x28, 0x1d, 0xd1, 0x02, 0x98, - 0x00, 0x21, 0x00, 0x90, 0x00, 0x20, 0xee, 0xf7, - 0x0e, 0xfa, 0x06, 0x1c, 0x00, 0x98, 0x04, 0x21, - 0xee, 0xf7, 0x09, 0xfa, 0x01, 0x1c, 0x01, 0x98, - 0xc0, 0x7e, 0x00, 0x07, 0x00, 0x0f, 0xd0, 0x30, - 0x70, 0x60, 0x01, 0x98, 0xc0, 0x7e, 0x00, 0x07, - 0x00, 0x0f, 0x3c, 0x00, 0xdc, 0x31, 0x01, 0x00, - 0xf0, 0x30, 0x48, 0x60, 0x30, 0x1c, 0xee, 0xf7, - 0x19, 0xf9, 0x65, 0x60, 0xe6, 0x60, 0x01, 0xe0, - 0x20, 0x68, 0x05, 0x60, 0x60, 0x68, 0x28, 0x60, - 0x25, 0x60, 0x00, 0x20, 0x68, 0x60, 0xa8, 0x60, - 0x38, 0x1c, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0x39, 0x1c, 0x07, 0x1c, 0x00, 0x29, 0xca, 0xd1, - 0x60, 0x68, 0xa0, 0x60, 0xfe, 0xbd, 0x00, 0x00, - 0xff, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x18, 0x32, - 0x01, 0x00, 0x08, 0x1c, 0x00, 0x26, 0x81, 0xb0, - 0xf4, 0xf7, 0x2f, 0xfe, 0x04, 0x1c, 0x02, 0xd0, - 0x60, 0x68, 0xff, 0x28, 0x01, 0xd1, 0x06, 0x26, - 0x28, 0xe0, 0x21, 0x1c, 0x20, 0x31, 0x0a, 0x78, - 0x01, 0x2a, 0x01, 0xd1, 0x03, 0x26, 0x21, 0xe0, - 0x01, 0x27, 0x25, 0x60, 0x0f, 0x70, 0x11, 0xc5, - 0x1d, 0x48, 0x08, 0x3d, 0x68, 0x61, 0x03, 0x98, - 0x6a, 0x46, 0xe8, 0x60, 0x04, 0x98, 0x3c, 0x00, - 0x54, 0x32, 0x01, 0x00, 0x28, 0x61, 0x1a, 0x48, - 0xa8, 0x61, 0x1a, 0x48, 0xe8, 0x61, 0x1a, 0x48, - 0x28, 0x62, 0x1a, 0x48, 0x68, 0x62, 0x20, 0x7e, - 0xa1, 0x68, 0xed, 0xf7, 0xb3, 0xfe, 0x00, 0x28, - 0x06, 0xd1, 0x60, 0x7e, 0xe1, 0x68, 0x6a, 0x46, - 0xed, 0xf7, 0xac, 0xfe, 0x00, 0x28, 0x07, 0xd0, - 0x04, 0x26, 0x31, 0x1c, 0x9e, 0x20, 0xee, 0xf7, - 0x0d, 0xf8, 0x30, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, - 0x3c, 0x00, 0x90, 0x32, 0x01, 0x00, 0x6a, 0x46, - 0x0f, 0x49, 0x1d, 0x20, 0xed, 0xf7, 0x9d, 0xfe, - 0x01, 0x21, 0x0d, 0x48, 0x49, 0x07, 0x01, 0x60, - 0x22, 0x7e, 0x3b, 0x1c, 0xd2, 0x06, 0xd2, 0x0e, - 0x93, 0x40, 0x43, 0x60, 0x62, 0x7e, 0xd2, 0x06, - 0xd2, 0x0e, 0x97, 0x40, 0x47, 0x60, 0x41, 0x60, - 0xe6, 0xe7, 0x31, 0x33, 0x01, 0x00, 0xd9, 0x32, - 0x01, 0x00, 0x91, 0x31, 0x01, 0x00, 0xdd, 0x30, - 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x32, 0x01, 0x00, - 0xfd, 0x32, 0x01, 0x00, 0x71, 0x33, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x42, 0x68, 0x2c, 0x32, - 0x50, 0x68, 0x43, 0x68, 0x0b, 0x60, 0x81, 0x68, - 0x4b, 0x89, 0x0b, 0x81, 0x83, 0x68, 0x00, 0x21, - 0xd9, 0x60, 0x41, 0x60, 0x81, 0x60, 0x00, 0x68, - 0x50, 0x60, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x70, 0xb5, 0x42, 0x68, 0xff, 0x26, 0x91, 0x87, - 0x10, 0x6b, 0x0c, 0x04, 0x3c, 0x00, 0x08, 0x33, - 0x01, 0x00, 0x05, 0x1c, 0x36, 0x04, 0x34, 0x40, - 0x43, 0x68, 0x59, 0x68, 0xb1, 0x43, 0x21, 0x43, - 0x59, 0x60, 0x00, 0x68, 0xa8, 0x42, 0xf7, 0xd1, - 0x10, 0x6b, 0x51, 0x69, 0x40, 0x68, 0x48, 0x60, - 0x51, 0x69, 0x01, 0x20, 0x08, 0x60, 0x70, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x43, 0x68, 0x08, 0x1c, - 0x59, 0x62, 0x9a, 0x62, 0x00, 0x25, 0x0a, 0xe0, - 0x45, 0x81, 0xc4, 0x68, 0x2a, 0x1c, 0x3c, 0x00, - 0x44, 0x33, 0x01, 0x00, 0x00, 0x2c, 0x03, 0xd1, - 0x9a, 0x7e, 0x12, 0x07, 0x12, 0x0f, 0x10, 0x32, - 0x42, 0x60, 0x20, 0x1c, 0x00, 0x28, 0xf2, 0xd1, - 0x18, 0x69, 0x41, 0x60, 0x19, 0x69, 0x01, 0x20, - 0x08, 0x60, 0x02, 0x48, 0x00, 0x68, 0xed, 0xf7, - 0x37, 0xf8, 0xb0, 0xbd, 0x5c, 0x5b, 0x01, 0x00, - 0x01, 0x20, 0x05, 0x49, 0x40, 0x07, 0x80, 0xb5, - 0x88, 0x60, 0x04, 0x48, 0x01, 0x68, 0x0d, 0x20, - 0x3c, 0x00, 0x80, 0x33, 0x01, 0x00, 0xfe, 0xf7, - 0xe6, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xc4, 0x60, 0x01, 0x00, 0xf8, 0xb5, - 0x0e, 0x4f, 0x0c, 0x4e, 0x00, 0x24, 0x48, 0x20, - 0x60, 0x43, 0xc5, 0x19, 0x48, 0x21, 0x28, 0x1c, - 0xed, 0xf7, 0x7b, 0xf8, 0x1c, 0x20, 0x60, 0x43, - 0x81, 0x19, 0x28, 0x1d, 0x1c, 0x22, 0xed, 0xf7, - 0xfe, 0xf8, 0x1c, 0x23, 0xe8, 0x56, 0x05, 0x49, - 0xfb, 0xf7, 0x3c, 0x00, 0xbc, 0x33, 0x01, 0x00, - 0xcd, 0xf8, 0x01, 0x34, 0x01, 0x2c, 0xe9, 0xd3, - 0xf8, 0xbd, 0x00, 0x00, 0xb8, 0x44, 0x01, 0x00, - 0xcc, 0x6d, 0x01, 0x00, 0x15, 0x32, 0x01, 0x00, - 0xff, 0xb5, 0x05, 0x1c, 0x0a, 0x30, 0x06, 0x1c, - 0x81, 0xb0, 0xf2, 0xf7, 0xdd, 0xf8, 0x18, 0x4f, - 0x04, 0x1c, 0x39, 0x88, 0xef, 0xf7, 0xbc, 0xfc, - 0x32, 0x88, 0x78, 0x68, 0x02, 0x80, 0x72, 0x88, - 0x02, 0x30, 0x02, 0x80, 0x3c, 0x00, 0xf8, 0x33, - 0x01, 0x00, 0xb1, 0x88, 0x12, 0x4e, 0x41, 0x80, - 0x28, 0x88, 0x08, 0x36, 0x40, 0x05, 0x00, 0x28, - 0x05, 0xda, 0x69, 0x88, 0x03, 0x9a, 0x20, 0x1c, - 0xf7, 0xf7, 0x01, 0xfd, 0x00, 0xe0, 0x00, 0x20, - 0x70, 0x80, 0xf8, 0xf7, 0x5e, 0xfc, 0x01, 0x21, - 0x09, 0x03, 0x00, 0x28, 0x30, 0x88, 0x01, 0xd0, - 0x88, 0x43, 0x00, 0xe0, 0x08, 0x43, 0x30, 0x80, - 0x05, 0x48, 0x00, 0x22, 0x00, 0x21, 0x3c, 0x00, - 0x34, 0x34, 0x01, 0x00, 0x14, 0x30, 0xef, 0xf7, - 0x65, 0xfc, 0x20, 0x1c, 0xf9, 0xf7, 0x74, 0xf8, - 0x05, 0xb0, 0xf0, 0xbd, 0xb0, 0x7a, 0x01, 0x00, - 0x10, 0xb5, 0x0e, 0x4c, 0x60, 0x68, 0xf8, 0xf7, - 0x95, 0xf9, 0x20, 0x68, 0x00, 0x6a, 0x00, 0x28, - 0x13, 0xd1, 0xf8, 0xf7, 0xbf, 0xfc, 0x00, 0x28, - 0x08, 0xd0, 0x21, 0x68, 0x01, 0x20, 0x08, 0x62, - 0x1f, 0x21, 0x00, 0x22, 0x83, 0x20, 0x00, 0xf0, - 0x3c, 0x00, 0x70, 0x34, 0x01, 0x00, 0x9f, 0xf9, - 0x02, 0xe0, 0x60, 0x68, 0xf8, 0xf7, 0x21, 0xfa, - 0xff, 0xf7, 0x97, 0xfc, 0x21, 0x68, 0x08, 0x61, - 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0xfe, 0xb5, - 0x1b, 0x4e, 0x0f, 0x1c, 0x1d, 0x1c, 0x14, 0x1c, - 0xb0, 0x60, 0x08, 0x1c, 0xf7, 0xf7, 0x2b, 0xff, - 0xb0, 0x80, 0x34, 0x73, 0x35, 0x62, 0x38, 0x1c, - 0x01, 0xaa, 0x02, 0xa9, 0xf7, 0xf7, 0x25, 0xff, - 0x00, 0xab, 0x3c, 0x00, 0xac, 0x34, 0x01, 0x00, - 0x18, 0x7a, 0x01, 0x28, 0x18, 0xd1, 0x18, 0x79, - 0x0b, 0x28, 0x08, 0xd1, 0x30, 0x7f, 0x24, 0x23, - 0x0f, 0x49, 0x58, 0x43, 0x40, 0x18, 0x80, 0x68, - 0xec, 0xf7, 0x88, 0xff, 0xfe, 0xbd, 0x00, 0xab, - 0x18, 0x79, 0x0a, 0x28, 0x08, 0xd1, 0xf7, 0xf7, - 0x39, 0xfd, 0x07, 0x1c, 0x29, 0x1c, 0x20, 0x1c, - 0xf7, 0xf7, 0x16, 0xfd, 0x38, 0x18, 0xb0, 0x80, - 0x30, 0x7f, 0x24, 0x23, 0x3c, 0x00, 0xe8, 0x34, - 0x01, 0x00, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x40, 0x68, 0xec, 0xf7, 0x72, 0xff, 0xe8, 0xe7, - 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, - 0x01, 0x00, 0xb0, 0xb5, 0xff, 0xf7, 0x53, 0xfc, - 0x04, 0x1c, 0xfb, 0xf7, 0xfc, 0xfa, 0x0c, 0x4d, - 0x29, 0x68, 0x09, 0x69, 0x09, 0x1b, 0x0c, 0x1a, - 0x02, 0x21, 0x1f, 0x20, 0x00, 0xf0, 0x8b, 0xf8, - 0x14, 0x2c, 0x06, 0xdd, 0x02, 0x22, 0x3c, 0x00, - 0x24, 0x35, 0x01, 0x00, 0x21, 0x1c, 0x1f, 0x20, - 0x00, 0xf0, 0x50, 0xf8, 0x01, 0x20, 0xb0, 0xbd, - 0x29, 0x68, 0x01, 0x20, 0x89, 0x6a, 0x00, 0x29, - 0xf9, 0xd0, 0x00, 0x20, 0xb0, 0xbd, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d, - 0x07, 0x1c, 0xae, 0x79, 0x01, 0x21, 0x19, 0x4c, - 0x00, 0x20, 0x22, 0x68, 0x00, 0x2a, 0x14, 0xd1, - 0xae, 0x71, 0xa2, 0x68, 0xd0, 0x68, 0x06, 0xca, - 0x3c, 0x00, 0x60, 0x35, 0x01, 0x00, 0xec, 0xf7, - 0x3c, 0xff, 0xae, 0x79, 0x00, 0x21, 0x13, 0x4a, - 0x50, 0x69, 0x01, 0x30, 0x50, 0x61, 0xa0, 0x68, - 0x80, 0x68, 0xa0, 0x60, 0x62, 0x68, 0x90, 0x42, - 0x06, 0xd1, 0x01, 0x20, 0x20, 0x60, 0x03, 0xe0, - 0x01, 0x30, 0x0c, 0x34, 0x03, 0x28, 0xe3, 0xdb, - 0x00, 0x2f, 0x08, 0xd1, 0x00, 0x29, 0x0a, 0xd0, - 0x0a, 0x48, 0x40, 0x68, 0x00, 0x28, 0x06, 0xd0, - 0xfa, 0xf7, 0x3c, 0x00, 0x9c, 0x35, 0x01, 0x00, - 0xf5, 0xff, 0x03, 0xe0, 0x01, 0x2f, 0x03, 0xd0, - 0x00, 0x29, 0x01, 0xd1, 0xae, 0x71, 0xce, 0xe7, - 0xae, 0x71, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0x70, 0x5d, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x23, - 0xf5, 0xf7, 0x7c, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0xf5, 0xf7, 0x76, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x35, - 0x01, 0x00, 0xf8, 0xb5, 0x13, 0x4b, 0x00, 0x24, - 0x1b, 0x88, 0x98, 0x42, 0x1b, 0xd2, 0x11, 0x4b, - 0xc0, 0x00, 0xc0, 0x18, 0x45, 0x68, 0x06, 0x68, - 0x28, 0x68, 0x00, 0x28, 0x17, 0xd1, 0x0e, 0x4f, - 0xa8, 0x68, 0x43, 0x68, 0xb3, 0x42, 0x09, 0xd1, - 0xc3, 0x68, 0x8b, 0x42, 0x06, 0xd1, 0x03, 0x68, - 0x93, 0x42, 0x01, 0xd0, 0x53, 0x1c, 0x01, 0xd1, - 0x01, 0x24, 0x47, 0x60, 0x80, 0x68, 0x3c, 0x00, - 0x14, 0x36, 0x01, 0x00, 0x6b, 0x68, 0x83, 0x42, - 0xee, 0xd1, 0x03, 0xe0, 0x01, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x40, 0xfe, 0x20, 0x1c, 0xf8, 0xbd, - 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00, - 0x29, 0xe3, 0x00, 0x00, 0xf8, 0xb5, 0x17, 0x4f, - 0x0a, 0x1c, 0xbe, 0x79, 0x16, 0x4d, 0x00, 0x23, - 0x6c, 0x68, 0x07, 0xe0, 0x21, 0x68, 0x91, 0x42, - 0x02, 0xd1, 0x21, 0x79, 0x81, 0x42, 0x04, 0xd0, - 0x3c, 0x00, 0x50, 0x36, 0x01, 0x00, 0x23, 0x1c, - 0xe4, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x17, 0xe0, - 0x00, 0x2c, 0x15, 0xd0, 0x00, 0x2b, 0x0d, 0xd1, - 0xe3, 0x68, 0x0d, 0x48, 0x6b, 0x60, 0x00, 0x88, - 0x00, 0x2b, 0x02, 0xd1, 0xff, 0xf7, 0xd1, 0xfb, - 0x06, 0xe0, 0x0a, 0x4a, 0x99, 0x68, 0xff, 0xf7, - 0xf6, 0xfb, 0x01, 0xe0, 0xe0, 0x68, 0xd8, 0x60, - 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0x02, 0xe0, - 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x36, 0x01, 0x00, - 0xff, 0xf7, 0xa4, 0xff, 0xbe, 0x71, 0xf8, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0x7c, 0x5d, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00, - 0x70, 0xb5, 0x09, 0x4e, 0xb5, 0x79, 0xf9, 0xf7, - 0xaf, 0xfe, 0x04, 0x1c, 0x09, 0xd0, 0x20, 0x1c, - 0xed, 0xf7, 0x0c, 0xfb, 0x05, 0x49, 0x8a, 0x68, - 0x80, 0x18, 0x88, 0x60, 0x08, 0x68, 0x01, 0x30, - 0x08, 0x60, 0xb5, 0x71, 0x3c, 0x00, 0xc8, 0x36, - 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd, 0x20, 0x10, - 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00, 0x09, 0x48, - 0x80, 0xb5, 0x40, 0x68, 0x02, 0x1c, 0x0b, 0xe0, - 0x01, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x82, 0x42, - 0x04, 0xd0, 0x81, 0x68, 0x05, 0x48, 0x00, 0x88, - 0xff, 0xf7, 0xe5, 0xfa, 0x80, 0xbd, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x80, 0xbd, 0x7c, 0x5d, - 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00, 0x3c, 0x00, - 0x04, 0x37, 0x01, 0x00, 0x05, 0x48, 0x80, 0xb5, - 0x42, 0x68, 0x00, 0x2a, 0x04, 0xd0, 0x04, 0x48, - 0x00, 0x88, 0x91, 0x68, 0xff, 0xf7, 0xd2, 0xfa, - 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x5d, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0x05, 0x48, 0x01, 0x68, - 0x00, 0x29, 0x04, 0xd0, 0xc0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x18, 0xd9, 0x01, 0x00, - 0x3c, 0x00, 0x40, 0x37, 0x01, 0x00, 0x80, 0xb5, - 0xf6, 0xf7, 0xd1, 0xfa, 0x80, 0xbd, 0x13, 0x1c, - 0x0d, 0x4a, 0xb0, 0xb5, 0x12, 0x88, 0x90, 0x42, - 0x0f, 0xd2, 0x03, 0x29, 0x0d, 0xd2, 0x0a, 0x4a, - 0xc0, 0x00, 0x14, 0x58, 0x0a, 0x4d, 0xac, 0x42, - 0x07, 0xd1, 0x13, 0x50, 0x0c, 0x23, 0x59, 0x43, - 0x08, 0x4b, 0xc9, 0x18, 0x80, 0x18, 0x41, 0x60, - 0xb0, 0xbd, 0x02, 0x21, 0x80, 0x20, 0xed, 0xf7, - 0x94, 0xfd, 0x3c, 0x00, 0x7c, 0x37, 0x01, 0x00, - 0xb0, 0xbd, 0x00, 0x00, 0x56, 0x57, 0x01, 0x00, - 0x84, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, - 0x1e, 0x1c, 0x15, 0x1c, 0x04, 0x1c, 0x11, 0x1c, - 0xff, 0xf7, 0x4a, 0xff, 0x33, 0x1c, 0x2a, 0x1c, - 0x39, 0x1c, 0x20, 0x1c, 0xf4, 0xf7, 0x8a, 0xff, - 0xf8, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x94, 0x46, - 0xff, 0x29, 0x21, 0xd0, 0x3c, 0x00, 0xb8, 0x37, - 0x01, 0x00, 0x15, 0x48, 0x00, 0x88, 0x81, 0x42, - 0x21, 0xd2, 0x14, 0x4a, 0x15, 0x4e, 0xc8, 0x00, - 0x85, 0x18, 0xb4, 0x79, 0x68, 0x68, 0x02, 0x68, - 0x00, 0x2a, 0x03, 0xd1, 0x03, 0x1d, 0x0c, 0xcb, - 0x9a, 0x42, 0x11, 0xd0, 0x43, 0x68, 0x9a, 0x68, - 0x42, 0x60, 0x0e, 0x4a, 0x17, 0x69, 0x01, 0x37, - 0x17, 0x61, 0xb4, 0x71, 0x00, 0x22, 0x02, 0x60, - 0x00, 0x98, 0xd8, 0x60, 0x60, 0x46, 0x3c, 0x00, - 0xf4, 0x37, 0x01, 0x00, 0x18, 0x60, 0x19, 0x74, - 0x28, 0x68, 0x58, 0x60, 0xfe, 0xbd, 0xb4, 0x71, - 0x06, 0x21, 0x00, 0xe0, 0x07, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x4c, 0xfd, 0xf6, 0xe7, 0x00, 0x00, - 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0xb0, 0xb5, 0x14, 0x4d, 0x6c, 0x68, 0x00, 0x2c, - 0x01, 0xd0, 0x84, 0x42, 0x04, 0xd0, 0x0c, 0x21, - 0x3c, 0x00, 0x30, 0x38, 0x01, 0x00, 0x80, 0x20, - 0xed, 0xf7, 0x37, 0xfd, 0xb0, 0xbd, 0xff, 0xf7, - 0xb8, 0xfa, 0xa1, 0x68, 0x40, 0x1a, 0x0d, 0x49, - 0x88, 0x42, 0x03, 0xda, 0x10, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x2b, 0xfd, 0x21, 0x79, 0x22, 0x68, - 0x01, 0x20, 0xff, 0xf7, 0xac, 0xff, 0xe3, 0x68, - 0x6b, 0x60, 0x00, 0x2b, 0x05, 0xd0, 0x07, 0x48, - 0x06, 0x4a, 0x00, 0x88, 0x99, 0x68, 0xff, 0xf7, - 0xfe, 0xfa, 0x3c, 0x00, 0x6c, 0x38, 0x01, 0x00, - 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0xb0, 0xbd, - 0x7c, 0x5d, 0x01, 0x00, 0x18, 0xfc, 0xff, 0xff, - 0x21, 0x38, 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00, - 0xb0, 0xb5, 0x15, 0x4c, 0x08, 0x20, 0x21, 0x1c, - 0x80, 0x31, 0x08, 0x70, 0x13, 0x4a, 0x41, 0x04, - 0x11, 0x60, 0x13, 0x48, 0x00, 0x68, 0x13, 0x4d, - 0x6b, 0x69, 0x18, 0x40, 0x01, 0xd1, 0x10, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0xa8, 0x38, - 0x01, 0x00, 0xa8, 0x23, 0x5b, 0x5d, 0x18, 0x43, - 0x23, 0x1c, 0x40, 0x33, 0x18, 0x73, 0x51, 0x60, - 0x20, 0x78, 0x80, 0x08, 0x80, 0x00, 0x20, 0x70, - 0x00, 0x20, 0xff, 0xf7, 0x12, 0xfb, 0xff, 0xf7, - 0x72, 0xfa, 0x64, 0x30, 0x28, 0x66, 0x01, 0x38, - 0xa0, 0x61, 0x20, 0x78, 0x03, 0x21, 0x08, 0x43, - 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00, 0x00, 0x90, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0xe4, 0x38, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0xa4, 0x6c, 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c, - 0x21, 0x1c, 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab, - 0x1a, 0x70, 0xc9, 0x79, 0x07, 0x4d, 0x59, 0x70, - 0x69, 0x78, 0x88, 0x42, 0x03, 0xd1, 0xf8, 0xf7, - 0x13, 0xfc, 0xff, 0x20, 0x68, 0x70, 0x00, 0xab, - 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x4c, 0x7b, 0x01, 0x00, - 0x3c, 0x00, 0x20, 0x39, 0x01, 0x00, 0xf8, 0xb5, - 0x0b, 0x1c, 0x06, 0x1c, 0x04, 0x1d, 0x7f, 0x33, - 0x14, 0xd0, 0x33, 0x68, 0x5d, 0x18, 0x35, 0x60, - 0x23, 0x88, 0x1f, 0x18, 0x06, 0x23, 0xff, 0x56, - 0xeb, 0x1b, 0x33, 0x60, 0x23, 0x88, 0x18, 0x18, - 0x81, 0x71, 0x20, 0x88, 0x01, 0x30, 0x00, 0x04, - 0x00, 0x0c, 0x20, 0x80, 0x90, 0x42, 0x01, 0xd3, - 0x00, 0x20, 0x20, 0x80, 0x10, 0x1c, 0x31, 0x68, - 0xec, 0xf7, 0x3c, 0x00, 0x5c, 0x39, 0x01, 0x00, - 0x6d, 0xfe, 0xf8, 0xbd, 0x0e, 0x49, 0x0a, 0x7c, - 0x83, 0x78, 0x1a, 0x43, 0x0a, 0x74, 0x42, 0x78, - 0x83, 0x78, 0x9a, 0x43, 0x0b, 0x7c, 0x93, 0x43, - 0x0b, 0x74, 0x8a, 0x7c, 0x43, 0x78, 0x1a, 0x43, - 0x8a, 0x74, 0x8a, 0x7c, 0x03, 0x78, 0x9a, 0x43, - 0x8a, 0x74, 0x02, 0x78, 0x43, 0x78, 0x1a, 0x43, - 0x4b, 0x7c, 0x1a, 0x43, 0x4a, 0x74, 0x4a, 0x7c, - 0xc0, 0x78, 0x82, 0x43, 0x3c, 0x00, 0x98, 0x39, - 0x01, 0x00, 0x4a, 0x74, 0x70, 0x47, 0x10, 0x00, - 0x07, 0x00, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24, - 0x20, 0x06, 0x00, 0x0e, 0xed, 0xf7, 0xf7, 0xf8, - 0xa1, 0x00, 0x69, 0x58, 0x08, 0x71, 0x01, 0x34, - 0x04, 0x2c, 0xf5, 0xdb, 0xb0, 0xbd, 0x10, 0x7b, - 0x01, 0x00, 0x0b, 0x48, 0x0c, 0x49, 0x7d, 0x23, - 0x42, 0x69, 0xdb, 0x00, 0x00, 0x2a, 0xc8, 0x6b, - 0x07, 0xd0, 0xc0, 0x18, 0x1a, 0x01, 0x3c, 0x00, - 0xd4, 0x39, 0x01, 0x00, 0x90, 0x42, 0xc8, 0x63, - 0x01, 0xd9, 0x07, 0x48, 0xc8, 0x63, 0x70, 0x47, - 0xff, 0x38, 0xf5, 0x38, 0xc8, 0x63, 0x98, 0x42, - 0xf9, 0xd2, 0xcb, 0x63, 0x70, 0x47, 0x00, 0x00, - 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x70, 0x17, 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x16, 0x1c, 0xfb, 0xf7, 0xf6, 0xfa, - 0xb0, 0x43, 0x28, 0x43, 0x01, 0x1c, 0x20, 0x1c, - 0x3c, 0x00, 0x10, 0x3a, 0x01, 0x00, 0x00, 0xf0, - 0xcc, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0, 0x02, 0x29, - 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48, 0xd2, 0x78, - 0x38, 0x30, 0xff, 0xf7, 0x78, 0xff, 0x06, 0x49, - 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48, 0x12, 0x79, - 0x20, 0x30, 0xff, 0xf7, 0x70, 0xff, 0x03, 0x49, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x3a, 0x01, 0x00, - 0xc8, 0x67, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, - 0x80, 0xb5, 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0, - 0x02, 0x29, 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48, - 0x52, 0x79, 0x68, 0x30, 0xff, 0xf7, 0x5a, 0xff, - 0x06, 0x49, 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48, - 0x92, 0x79, 0x50, 0x30, 0xff, 0xf7, 0x52, 0xff, - 0x03, 0x49, 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3a, - 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00, 0xcc, 0x67, - 0x01, 0x00, 0x08, 0xb5, 0x04, 0x21, 0x00, 0x91, - 0x81, 0x7e, 0x43, 0x68, 0x03, 0x29, 0x06, 0xd1, - 0x01, 0x1c, 0x0c, 0x31, 0x01, 0x20, 0x6a, 0x46, - 0xec, 0xf7, 0x9a, 0xfc, 0x08, 0xbd, 0x19, 0x68, - 0xc1, 0x60, 0xfb, 0xe7, 0x00, 0x00, 0x10, 0xb5, - 0x03, 0x1c, 0x00, 0x20, 0x08, 0x4c, 0x00, 0x21, - 0xca, 0x00, 0x12, 0x19, 0x92, 0x78, 0x3c, 0x00, - 0xc4, 0x3a, 0x01, 0x00, 0x9a, 0x42, 0x03, 0xd1, - 0xc8, 0x00, 0x00, 0x19, 0x40, 0x68, 0x10, 0xbd, - 0x01, 0x31, 0x09, 0x06, 0x09, 0x16, 0x06, 0x29, - 0xf1, 0xdb, 0x10, 0xbd, 0xcc, 0x5a, 0x01, 0x00, - 0xf8, 0xb5, 0x0f, 0x1c, 0x16, 0x1c, 0x00, 0x25, - 0xfe, 0xf7, 0x8e, 0xf9, 0x04, 0x1c, 0x0a, 0xd0, - 0x4a, 0x20, 0x00, 0x5d, 0x05, 0x28, 0x06, 0xd1, - 0x38, 0x1c, 0xf1, 0xf7, 0x81, 0xfe, 0x00, 0x28, - 0x3c, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x01, 0xd0, - 0x01, 0x25, 0x34, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x16, 0x1c, - 0x00, 0x24, 0xfe, 0xf7, 0x78, 0xf9, 0x00, 0x28, - 0x0b, 0xd0, 0x4a, 0x21, 0x09, 0x5c, 0x05, 0x29, - 0x07, 0xd1, 0x01, 0x69, 0x00, 0x29, 0x04, 0xd1, - 0x30, 0x60, 0xf1, 0xf7, 0x04, 0xfd, 0x01, 0x24, - 0x28, 0x60, 0x20, 0x1c, 0x70, 0xbd, 0xf8, 0xb5, - 0x06, 0x1c, 0x3c, 0x00, 0x3c, 0x3b, 0x01, 0x00, - 0x00, 0x25, 0x0c, 0x1c, 0x08, 0x1c, 0xf1, 0xf7, - 0x5d, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x21, - 0x05, 0xe0, 0x20, 0x1c, 0xf1, 0xf7, 0x74, 0xfe, - 0x00, 0x28, 0x14, 0xd0, 0x01, 0x21, 0x30, 0x1c, - 0xf4, 0xf7, 0x80, 0xfb, 0x00, 0x90, 0x00, 0x28, - 0x0d, 0xd0, 0x08, 0x4f, 0x01, 0x25, 0x06, 0x22, - 0x31, 0x1c, 0x38, 0x1c, 0xec, 0xf7, 0xc2, 0xfc, - 0x06, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x78, 0x3b, - 0x01, 0x00, 0xb8, 0x18, 0xec, 0xf7, 0xbd, 0xfc, - 0x00, 0x98, 0xf8, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x00, 0x21, - 0x00, 0x28, 0x06, 0xd0, 0x42, 0x78, 0x07, 0x2a, - 0x03, 0xd1, 0xc0, 0x79, 0x01, 0x28, 0x00, 0xd1, - 0x01, 0x21, 0x08, 0x1c, 0x70, 0x47, 0xf8, 0xb5, - 0x05, 0x1c, 0x00, 0x27, 0x16, 0x4e, 0xf1, 0xf7, - 0x28, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00, - 0xb4, 0x3b, 0x01, 0x00, 0xf1, 0xf7, 0xc0, 0xfb, - 0x00, 0x28, 0x10, 0xd1, 0x00, 0x24, 0xf1, 0xf7, - 0xbb, 0xfc, 0x06, 0xe0, 0xf1, 0xf7, 0x02, 0xfe, - 0x00, 0x28, 0x08, 0xd0, 0x01, 0x24, 0xf1, 0xf7, - 0x99, 0xfd, 0x01, 0x1c, 0x06, 0x22, 0x30, 0x1c, - 0xec, 0xf7, 0x8e, 0xfc, 0x01, 0x27, 0x00, 0x2f, - 0x0d, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0xf4, 0xf7, - 0x3b, 0xfb, 0x01, 0x1c, 0x05, 0x48, 0x06, 0x22, - 0x3c, 0x00, 0xf0, 0x3b, 0x01, 0x00, 0x06, 0x38, - 0xc1, 0x60, 0x29, 0x1c, 0xec, 0xf7, 0x7f, 0xfc, - 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x20, 0xfc, 0xe7, - 0x00, 0x00, 0x76, 0x7c, 0x01, 0x00, 0xf0, 0xb5, - 0x07, 0x1c, 0x00, 0x68, 0x02, 0x21, 0x04, 0x68, - 0x78, 0x69, 0x87, 0xb0, 0x01, 0x40, 0x00, 0x25, - 0x00, 0x29, 0x05, 0x91, 0x74, 0x4e, 0x12, 0xd0, - 0x22, 0x88, 0x01, 0x21, 0x13, 0x05, 0x02, 0xd4, - 0xc0, 0x07, 0x3c, 0x00, 0x2c, 0x3c, 0x01, 0x00, - 0xc1, 0x17, 0x01, 0x31, 0x6f, 0x48, 0x00, 0x29, - 0x00, 0x68, 0x01, 0xd0, 0x01, 0x30, 0x04, 0xe0, - 0x11, 0x06, 0x89, 0x0e, 0x2d, 0x29, 0x01, 0xd1, - 0x03, 0x30, 0x30, 0x60, 0x20, 0x88, 0x80, 0x07, - 0x67, 0xd1, 0x78, 0x69, 0xc0, 0x07, 0x64, 0xd5, - 0x03, 0xaa, 0x04, 0xa9, 0x20, 0x1c, 0xf7, 0xf7, - 0x4b, 0xfb, 0x00, 0xab, 0x18, 0x7c, 0x00, 0x28, - 0x07, 0xd0, 0x18, 0x7c, 0x3c, 0x00, 0x68, 0x3c, - 0x01, 0x00, 0x02, 0x28, 0x58, 0xd1, 0x18, 0x7b, - 0x40, 0x07, 0x40, 0x0f, 0x04, 0x28, 0x53, 0xd8, - 0x20, 0x79, 0x05, 0x99, 0xc0, 0x07, 0xc0, 0x17, - 0x01, 0x30, 0x02, 0x90, 0x00, 0x29, 0x02, 0xd1, - 0x02, 0x98, 0x00, 0x28, 0x48, 0xd1, 0x05, 0x99, - 0x00, 0x29, 0x04, 0xd0, 0x20, 0x88, 0x00, 0x05, - 0x01, 0xd4, 0x00, 0x20, 0x30, 0x60, 0xc0, 0x20, - 0xed, 0xf7, 0xcb, 0xfd, 0x05, 0x1c, 0x3c, 0x00, - 0xa4, 0x3c, 0x01, 0x00, 0x20, 0x1c, 0x0a, 0x30, - 0x06, 0x90, 0xfe, 0xf7, 0xad, 0xf8, 0x06, 0x1c, - 0x28, 0x1c, 0x08, 0x30, 0x23, 0x88, 0x02, 0x1d, - 0x11, 0x1d, 0xdb, 0x05, 0x06, 0xd5, 0x06, 0x9b, - 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30, 0x10, 0x60, - 0x20, 0x1d, 0x0e, 0xe0, 0x23, 0x1d, 0x13, 0x60, - 0x22, 0x88, 0x92, 0x05, 0x05, 0xd5, 0x22, 0x1c, - 0x10, 0x32, 0x02, 0x60, 0x06, 0x9b, 0x0b, 0x60, - 0x3c, 0x00, 0xe0, 0x3c, 0x01, 0x00, 0x04, 0xe0, - 0x06, 0x9b, 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30, - 0x08, 0x60, 0x28, 0x69, 0xf1, 0xf7, 0x43, 0xfc, - 0x00, 0x28, 0x08, 0xd0, 0x01, 0x28, 0x12, 0xd0, - 0x02, 0x28, 0x58, 0xd1, 0x00, 0xab, 0x18, 0x7c, - 0x00, 0x28, 0x54, 0xd1, 0x12, 0xe0, 0x00, 0xab, - 0x18, 0x7c, 0x02, 0x28, 0x0b, 0xd1, 0x00, 0x2e, - 0x4d, 0xd0, 0x4b, 0x20, 0x80, 0x5d, 0x02, 0x28, - 0x49, 0xd1, 0x3c, 0x00, 0x1c, 0x3d, 0x01, 0x00, - 0x07, 0xe0, 0x63, 0xe0, 0x00, 0xab, 0x18, 0x7c, - 0x00, 0x28, 0x02, 0xd1, 0x38, 0x1c, 0xfe, 0xf7, - 0x1b, 0xff, 0x20, 0x88, 0x41, 0x04, 0x30, 0x48, - 0x11, 0xd5, 0x00, 0x2e, 0x52, 0xd0, 0x00, 0xab, - 0x19, 0x7c, 0x00, 0x29, 0x26, 0xd0, 0x02, 0x99, - 0x00, 0x29, 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78, - 0x00, 0xe0, 0x00, 0x78, 0x01, 0x28, 0x1d, 0xd0, - 0x03, 0x28, 0x43, 0xd1, 0x3c, 0x00, 0x58, 0x3d, - 0x01, 0x00, 0x1a, 0xe0, 0x00, 0xab, 0x19, 0x7c, - 0x02, 0x29, 0x16, 0xd1, 0x19, 0x7b, 0x04, 0x29, - 0x13, 0xd0, 0x19, 0x7b, 0x0c, 0x29, 0x10, 0xd0, - 0x22, 0x49, 0x09, 0x68, 0x00, 0x29, 0x0c, 0xd0, - 0x00, 0x2e, 0x0a, 0xd0, 0x02, 0x99, 0x00, 0x29, - 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78, 0x00, 0xe0, - 0x00, 0x78, 0x01, 0x28, 0x29, 0xd0, 0x03, 0x28, - 0x27, 0xd0, 0x28, 0x22, 0x39, 0x1c, 0x3c, 0x00, - 0x94, 0x3d, 0x01, 0x00, 0x28, 0x1c, 0x88, 0x30, - 0xec, 0xf7, 0x0a, 0xfc, 0x00, 0xab, 0x19, 0x7c, - 0x28, 0x1c, 0x80, 0x30, 0x01, 0x71, 0x19, 0x7b, - 0x41, 0x71, 0x6c, 0x60, 0x6e, 0x61, 0x1b, 0xe0, - 0x05, 0x99, 0x00, 0x29, 0x14, 0xd0, 0x11, 0x48, - 0x84, 0x6c, 0x00, 0x2c, 0x10, 0xd0, 0x00, 0x22, - 0x00, 0x2e, 0x04, 0xd0, 0x40, 0x36, 0xb0, 0x7a, - 0x05, 0x28, 0x00, 0xd1, 0x01, 0x22, 0x00, 0x92, - 0x3c, 0x00, 0xd0, 0x3d, 0x01, 0x00, 0xf8, 0x7a, - 0xba, 0x7a, 0x29, 0x69, 0xc3, 0x07, 0xdb, 0x0f, - 0x06, 0x98, 0xec, 0xf7, 0x00, 0xfb, 0x28, 0x1c, - 0xed, 0xf7, 0x07, 0xfd, 0x00, 0x25, 0x28, 0x1c, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc4, 0x6a, - 0x01, 0x00, 0x68, 0x61, 0x01, 0x00, 0x28, 0x61, - 0x01, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x20, 0xff, 0xf7, 0x70, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x3e, 0x01, 0x00, - 0xb0, 0xb5, 0x1d, 0x4d, 0x01, 0x28, 0x17, 0xd0, - 0xa2, 0x28, 0x06, 0xd0, 0xa3, 0x28, 0x03, 0xd1, - 0x01, 0x21, 0x15, 0x20, 0xff, 0xf7, 0x08, 0xfc, - 0xb0, 0xbd, 0x00, 0x29, 0x01, 0xd1, 0x17, 0x48, - 0x02, 0xe0, 0x7d, 0x20, 0xc0, 0x00, 0x48, 0x43, - 0x00, 0x23, 0x01, 0x22, 0x01, 0x1c, 0x28, 0x60, - 0x15, 0x20, 0xff, 0xf7, 0xa7, 0xfc, 0xb0, 0xbd, - 0x01, 0x29, 0x04, 0xd0, 0x3c, 0x00, 0x48, 0x3e, - 0x01, 0x00, 0x02, 0x29, 0xfa, 0xd1, 0x00, 0xf0, - 0x2a, 0xf8, 0xb0, 0xbd, 0x6c, 0x68, 0xf5, 0xf7, - 0xde, 0xfc, 0xfe, 0xf7, 0xa8, 0xff, 0x68, 0x60, - 0x00, 0x2c, 0x09, 0xd0, 0x29, 0x68, 0x0a, 0x23, - 0x59, 0x43, 0x00, 0x1b, 0x88, 0x42, 0x03, 0xd9, - 0x01, 0x21, 0x15, 0x20, 0xed, 0xf7, 0x17, 0xfa, - 0x01, 0x22, 0x15, 0x20, 0x29, 0x68, 0xff, 0xf7, - 0xa6, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x3e, 0x01, 0x00, 0x04, 0x79, 0x01, 0x00, - 0x00, 0x87, 0x93, 0x03, 0x01, 0x20, 0x04, 0x49, - 0x40, 0x03, 0x80, 0xb5, 0x08, 0x60, 0x03, 0x21, - 0x15, 0x20, 0xed, 0xf7, 0x03, 0xfa, 0x80, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x10, 0x22, - 0x11, 0x43, 0x01, 0x72, 0x00, 0x23, 0x02, 0x22, - 0x15, 0x20, 0x03, 0x49, 0xff, 0xf7, 0x68, 0xfc, - 0x3c, 0x00, 0xc0, 0x3e, 0x01, 0x00, 0x80, 0xbd, - 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x80, 0x9f, - 0xd5, 0x00, 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0, - 0x0a, 0x1c, 0x15, 0x21, 0xa2, 0x20, 0x02, 0xe0, - 0x00, 0x22, 0x15, 0x21, 0xa3, 0x20, 0xff, 0xf7, - 0x66, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x00, 0xf0, 0x19, 0xf8, 0x0a, 0x48, 0xbe, 0x21, - 0x01, 0x73, 0x03, 0x7a, 0x10, 0x22, 0x93, 0x43, - 0x01, 0x24, 0x3c, 0x00, 0xfc, 0x3e, 0x01, 0x00, - 0x23, 0x43, 0x03, 0x72, 0x01, 0x73, 0x01, 0x7a, - 0x91, 0x43, 0x20, 0x22, 0x11, 0x43, 0x01, 0x72, - 0x02, 0x22, 0x15, 0x20, 0x02, 0x49, 0xff, 0xf7, - 0x5b, 0xfb, 0x10, 0xbd, 0x00, 0x03, 0x07, 0x00, - 0x80, 0x9f, 0xd5, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x15, 0x20, 0xff, 0xf7, 0x85, 0xfb, 0x04, 0x48, - 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x11, 0x22, - 0x91, 0x43, 0x01, 0x72, 0x3c, 0x00, 0x38, 0x3f, - 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x05, 0x1c, - 0x60, 0x36, 0x00, 0x27, 0x44, 0x68, 0x22, 0xe0, - 0x08, 0x21, 0x00, 0x20, 0xed, 0xf7, 0x41, 0xfb, - 0x60, 0x61, 0x01, 0x89, 0x04, 0x39, 0x09, 0x04, - 0x09, 0x0c, 0x01, 0x81, 0x60, 0x69, 0x00, 0x68, - 0x40, 0x18, 0x04, 0x21, 0xed, 0xf7, 0x35, 0xfb, - 0xe0, 0x61, 0x60, 0x69, 0x71, 0x7b, 0x3c, 0x00, - 0x74, 0x3f, 0x01, 0x00, 0x00, 0x68, 0x89, 0x01, - 0xc1, 0x70, 0x29, 0x69, 0x0c, 0x31, 0x03, 0x22, - 0xec, 0xf7, 0xba, 0xfa, 0x28, 0x69, 0x0c, 0x30, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x25, 0x62, - 0xa7, 0x61, 0x24, 0x68, 0x00, 0x2c, 0xda, 0xd1, - 0x02, 0x49, 0x03, 0x48, 0x6a, 0x68, 0xf6, 0xf7, - 0xb3, 0xf8, 0xf8, 0xbd, 0xfd, 0x6b, 0x00, 0x00, - 0xa0, 0x6a, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x07, - 0x3c, 0x00, 0xb0, 0x3f, 0x01, 0x00, 0x00, 0x09, - 0x09, 0x02, 0x09, 0x0a, 0x08, 0x43, 0x02, 0x49, - 0x08, 0x60, 0xff, 0xf7, 0x20, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x08, 0x00, - 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03, - 0x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0xc8, 0x00, - 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x1c, 0x00, - 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x3f, 0x01, 0x00, - 0x24, 0x01, 0x07, 0x00, 0x32, 0x00, 0x00, 0x00, - 0xe8, 0x03, 0x00, 0x00, 0x40, 0x06, 0x01, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x41, 0x6e, 0x62, 0x69, 0x7e, 0x64, 0x61, 0x6f, - 0x6f, 0x00, 0x00, 0x00, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x20, 0x36, 0x5f, 0x37, 0x5f, - 0x31, 0x35, 0x20, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x20, 0x32, 0x3a, 0x35, 0x3c, 0x00, 0x28, 0x40, - 0x01, 0x00, 0x32, 0x39, 0x38, 0x20, 0x53, 0x65, - 0x70, 0x20, 0x30, 0x34, 0x20, 0x32, 0x30, 0x30, - 0x39, 0x20, 0x31, 0x37, 0x3a, 0x31, 0x33, 0x3a, - 0x32, 0x30, 0x20, 0x28, 0x48, 0x57, 0x3d, 0x34, - 0x3a, 0x33, 0x2c, 0x42, 0x54, 0x43, 0x4f, 0x45, - 0x58, 0x29, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, - 0x1c, 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3c, 0x00, - 0x64, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x70, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xd0, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x7c, 0x15, 0x15, 0x00, - 0x3c, 0x00, 0xa0, 0x40, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x70, 0x17, - 0x1e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x28, 0x23, 0x16, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0x2a, - 0x0b, 0x00, 0x3c, 0x00, 0xdc, 0x40, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xe0, 0x2e, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x50, 0x46, 0x0e, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0xf0, 0x55, 0x08, 0x00, 0x3c, 0x00, 0x18, 0x41, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x00, 0x00, 0xc0, 0x5d, 0x0e, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xe8, 0x80, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, - 0x00, 0x00, 0xa0, 0x8c, 0x0a, 0x00, 0x3c, 0x00, - 0x54, 0x41, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x80, 0xbb, 0x0a, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0xf0, 0xd2, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x90, 0x00, - 0x3c, 0x00, 0x90, 0x41, 0x01, 0x00, 0xc0, 0x00, - 0x90, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0xc0, 0x00, - 0x90, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x60, 0x00, - 0x48, 0x00, 0x3c, 0x00, 0xcc, 0x41, 0x01, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x60, 0x00, 0x48, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x04, 0x01, 0x0b, 0x02, 0x0c, 0x03, - 0x12, 0x04, 0x16, 0x05, 0x3c, 0x00, 0x08, 0x42, - 0x01, 0x00, 0x18, 0x06, 0x00, 0x0e, 0x00, 0x0e, - 0x24, 0x07, 0x00, 0x0e, 0x2c, 0x08, 0x30, 0x09, - 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x42, 0x0a, - 0x00, 0x0e, 0x48, 0x0b, 0x00, 0x0e, 0x00, 0x0e, - 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x60, 0x0c, - 0x00, 0x0e, 0x00, 0x0e, 0x6c, 0x0d, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xc0, 0xff, 0xff, 0xff, 0x3c, 0x00, - 0x44, 0x42, 0x01, 0x00, 0xb6, 0xff, 0xff, 0xff, - 0xd3, 0xff, 0xff, 0xff, 0xc9, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x51, 0xb0, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x51, 0xb0, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x59, 0xaf, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x42, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa5, 0xaf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4d, 0xaf, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x45, 0xb0, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xd5, 0xaf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xad, 0xb0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x42, 0x01, 0x00, - 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x99, 0xb0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x42, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x17, - 0x01, 0x00, 0x35, 0x17, 0x01, 0x00, 0x21, 0x17, - 0x01, 0x00, 0xd9, 0x9c, 0x00, 0x00, 0x49, 0x17, - 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0xd1, 0x9c, - 0x00, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x1d, 0x1a, - 0x01, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x01, 0x1a, - 0x01, 0x00, 0x31, 0x1a, 0x01, 0x00, 0x25, 0x1a, - 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x43, 0x01, 0x00, 0x81, 0x1a, 0x01, 0x00, - 0xd1, 0x9c, 0x00, 0x00, 0x79, 0x17, 0x01, 0x00, - 0xd9, 0x9c, 0x00, 0x00, 0x5d, 0x17, 0x01, 0x00, - 0xa1, 0x17, 0x01, 0x00, 0x95, 0x17, 0x01, 0x00, - 0x81, 0x17, 0x01, 0x00, 0x21, 0x18, 0x01, 0x00, - 0xf5, 0x17, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x43, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x19, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x35, 0x1b, - 0x01, 0x00, 0x3c, 0x00, 0xac, 0x43, 0x01, 0x00, - 0x9d, 0x1b, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, - 0x65, 0x18, 0x01, 0x00, 0x29, 0x18, 0x01, 0x00, - 0x39, 0x18, 0x01, 0x00, 0xbd, 0x18, 0x01, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x4d, 0x18, 0x01, 0x00, - 0xa5, 0x18, 0x01, 0x00, 0x85, 0x41, 0x00, 0x00, - 0x01, 0x19, 0x01, 0x00, 0x3c, 0x00, 0xe8, 0x43, - 0x01, 0x00, 0xd9, 0x18, 0x01, 0x00, 0xed, 0x18, - 0x01, 0x00, 0x15, 0x19, 0x01, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x69, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x71, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0xfd, 0xdb, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x44, 0x01, 0x00, 0x1d, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0xf5, 0xda, 0x00, 0x00, - 0x14, 0x00, 0x81, 0x00, 0xfd, 0xdd, 0x00, 0x00, - 0x08, 0x00, 0x82, 0x00, 0xc5, 0xdd, 0x00, 0x00, - 0x38, 0x00, 0x83, 0x00, 0x45, 0xdc, 0x00, 0x00, - 0x10, 0x00, 0x84, 0x00, 0x99, 0xdc, 0x00, 0x00, - 0x0c, 0x00, 0x86, 0x00, 0x39, 0xdc, 0x00, 0x00, - 0x10, 0x00, 0x88, 0x00, 0x11, 0xde, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x44, 0x01, 0x00, 0x10, 0x00, - 0x8a, 0x00, 0x35, 0xdd, 0x00, 0x00, 0x0c, 0x00, - 0x8c, 0x00, 0xad, 0xdf, 0x00, 0x00, 0x1c, 0x00, - 0x8e, 0x00, 0xc9, 0xde, 0x00, 0x00, 0x38, 0x00, - 0x8f, 0x00, 0xed, 0xdc, 0x00, 0x00, 0x38, 0x00, - 0x90, 0x00, 0x75, 0xdf, 0x00, 0x00, 0x0c, 0x00, - 0x91, 0x00, 0x8d, 0xdc, 0x00, 0x00, 0x0c, 0x00, - 0x93, 0x00, 0xb9, 0xdd, 0x00, 0x00, 0x0c, 0x00, - 0x94, 0x00, 0x3c, 0x00, 0x9c, 0x44, 0x01, 0x00, - 0x00, 0x08, 0x08, 0x08, 0x10, 0x0c, 0x0c, 0x0c, - 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x08, - 0x08, 0x08, 0x14, 0x08, 0x08, 0x14, 0x00, 0x30, - 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, - 0xad, 0x30, 0x01, 0x00, 0x15, 0x30, 0x01, 0x00, - 0x20, 0x30, 0x07, 0x00, 0x30, 0x30, 0x07, 0x00, - 0x06, 0x07, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x44, - 0x01, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xc9, 0x02, 0x00, 0x94, 0x3f, - 0x03, 0x00, 0xe0, 0x8b, 0x5a, 0x00, 0x05, 0x3a, - 0x85, 0x00, 0xc8, 0xf2, 0x06, 0x00, 0xf8, 0x4c, - 0x56, 0x00, 0x20, 0xa7, 0x3d, 0x00, 0xb7, 0x4a, - 0x00, 0x00, 0xb7, 0x4a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x45, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, - 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, - 0x05, 0x06, 0x00, 0x00, 0x2d, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0xfd, 0x95, 0x00, 0x00, - 0x08, 0x00, 0xff, 0x00, 0xed, 0x97, 0x00, 0x00, - 0x08, 0x00, 0x82, 0x00, 0xcd, 0x95, 0x00, 0x00, - 0x0c, 0x00, 0x83, 0x00, 0x4d, 0x96, 0x00, 0x00, - 0x0c, 0x00, 0x85, 0x00, 0x2d, 0x7c, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x45, 0x01, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x3d, 0x96, 0x00, 0x00, 0x0c, 0x00, - 0x89, 0x00, 0xd9, 0x97, 0x00, 0x00, 0x08, 0x00, - 0x8a, 0x00, 0x91, 0x95, 0x00, 0x00, 0x08, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x3c, 0x00, 0x8c, 0x45, 0x01, 0x00, - 0xf9, 0x97, 0x00, 0x00, 0x08, 0x00, 0x8d, 0x00, - 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0xc9, 0x97, 0x00, 0x00, 0x30, 0x00, 0x90, 0x00, - 0x11, 0x95, 0x00, 0x00, 0x18, 0x00, 0x91, 0x00, - 0x15, 0x96, 0x00, 0x00, 0x08, 0x00, 0x92, 0x00, - 0x59, 0x95, 0x00, 0x00, 0x3c, 0x00, 0x93, 0x00, - 0x29, 0x96, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x45, - 0x01, 0x00, 0x08, 0x00, 0x94, 0x00, 0xa1, 0x95, - 0x00, 0x00, 0x08, 0x00, 0x95, 0x00, 0x81, 0x97, - 0x00, 0x00, 0x0c, 0x00, 0x96, 0x00, 0x6d, 0x97, - 0x00, 0x00, 0x10, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x10, - 0x08, 0x00, 0x00, 0x08, 0x00, 0x10, 0x3c, 0x00, - 0x04, 0x46, 0x01, 0x00, 0x08, 0x0c, 0x0c, 0x0c, - 0x0c, 0x1c, 0x0c, 0x0c, 0x08, 0x00, 0x00, 0x00, - 0x0d, 0x8b, 0x00, 0x00, 0xf5, 0x8a, 0x00, 0x00, - 0xe9, 0x8a, 0x00, 0x00, 0x01, 0x8b, 0x00, 0x00, - 0x14, 0x08, 0x0c, 0x0c, 0x10, 0x0c, 0x00, 0x00, - 0xb1, 0x98, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x19, 0x99, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x3d, 0x7c, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x46, 0x01, 0x00, 0x3d, 0x99, - 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x09, 0x99, - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x3d, 0x7c, - 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01, - 0x04, 0x04, 0x08, 0x08, 0x81, 0x37, 0x80, 0xf3, - 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0xaa, 0xaa, - 0x03, 0x00, 0x00, 0xf8, 0x6d, 0xa9, 0x6d, 0xa9, - 0x6e, 0xa9, 0x3c, 0x00, 0x7c, 0x46, 0x01, 0x00, - 0x6e, 0xa8, 0x6e, 0xa8, 0x6e, 0xa8, 0x6f, 0xa7, - 0x6f, 0xa7, 0x6f, 0xa7, 0x6f, 0xa6, 0x6f, 0xa6, - 0x70, 0xa6, 0x70, 0xa5, 0x70, 0xa4, 0x00, 0x00, - 0xb5, 0x1b, 0x01, 0x00, 0xc9, 0x1b, 0x01, 0x00, - 0xe1, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, - 0xa5, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, - 0x89, 0x1b, 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x46, - 0x01, 0x00, 0xd1, 0x1a, 0x01, 0x00, 0xe5, 0x1a, - 0x01, 0x00, 0x05, 0x1b, 0x01, 0x00, 0x25, 0x1b, - 0x01, 0x00, 0xb1, 0x1a, 0x01, 0x00, 0xe5, 0x9c, - 0x00, 0x00, 0x9d, 0x1a, 0x01, 0x00, 0xd5, 0x9c, - 0x00, 0x00, 0xc1, 0x1a, 0x01, 0x00, 0x89, 0x19, - 0x01, 0x00, 0xa9, 0x19, 0x01, 0x00, 0xc9, 0x19, - 0x01, 0x00, 0xf1, 0x19, 0x01, 0x00, 0x79, 0x19, - 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x46, 0x01, 0x00, 0x65, 0x19, 0x01, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0x55, 0x1c, 0x01, 0x00, - 0x45, 0x1c, 0x01, 0x00, 0x45, 0x1c, 0x01, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x47, 0x01, 0x00, 0xd5, 0x9c, - 0x00, 0x00, 0x55, 0x19, 0x01, 0x00, 0xe5, 0x9c, - 0x00, 0x00, 0x41, 0x19, 0x01, 0x00, 0x31, 0x19, - 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00, 0x02, 0x05, - 0x0a, 0x00, 0x00, 0x00, 0x02, 0x04, 0x0a, 0x00, - 0x00, 0x00, 0xc5, 0x20, 0x00, 0x00, 0x21, 0x21, - 0x00, 0x00, 0x25, 0x21, 0x00, 0x00, 0x39, 0x21, - 0x00, 0x00, 0x49, 0x21, 0x00, 0x00, 0x55, 0x21, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x47, 0x01, 0x00, - 0x61, 0x21, 0x00, 0x00, 0xed, 0x21, 0x00, 0x00, - 0x0d, 0x22, 0x00, 0x00, 0x21, 0x22, 0x00, 0x00, - 0x3d, 0x22, 0x00, 0x00, 0x49, 0x22, 0x00, 0x00, - 0xc5, 0x22, 0x00, 0x00, 0xe1, 0x22, 0x00, 0x00, - 0xf5, 0x22, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0x11, 0x23, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x47, - 0x01, 0x00, 0x1d, 0x23, 0x00, 0x00, 0x89, 0x23, - 0x00, 0x00, 0xa5, 0x23, 0x00, 0x00, 0xb9, 0x23, - 0x00, 0x00, 0x11, 0x20, 0x00, 0x00, 0x1d, 0x20, - 0x00, 0x00, 0x6d, 0x20, 0x00, 0x00, 0x8d, 0x20, - 0x00, 0x00, 0xb9, 0x20, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x03, 0x03, 0x05, 0x06, 0x06, 0x08, 0x09, - 0x08, 0x09, 0x09, 0x09, 0xc4, 0x80, 0xca, 0x80, - 0x80, 0x80, 0x80, 0x80, 0xd0, 0x80, 0x3c, 0x00, - 0xe4, 0x47, 0x01, 0x00, 0xd6, 0xd9, 0xdc, 0xdf, - 0xe2, 0x80, 0x80, 0x80, 0xe5, 0xe8, 0x80, 0x80, - 0x80, 0x80, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa, - 0xfd, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, - 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, - 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, - 0x0c, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, - 0x13, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1b, 0x00, - 0x3c, 0x00, 0x20, 0x48, 0x01, 0x00, 0x1e, 0x00, - 0x22, 0x00, 0x26, 0x00, 0x2b, 0x00, 0x30, 0x00, - 0x36, 0x00, 0x3c, 0x00, 0x44, 0x00, 0x4c, 0x00, - 0x55, 0x00, 0x5f, 0x00, 0x6b, 0x00, 0x78, 0x00, - 0x86, 0x00, 0x97, 0x00, 0xa9, 0x00, 0xbe, 0x00, - 0xd5, 0x00, 0xef, 0x00, 0xff, 0x7f, 0x0c, 0x00, - 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, - 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, - 0xf8, 0xff, 0x3c, 0x00, 0x5c, 0x48, 0x01, 0x00, - 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, - 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff, - 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, - 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe8, 0xff, - 0xe7, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, - 0xe3, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff, - 0xdf, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdc, 0xff, - 0xdc, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x48, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xb1, 0x7c, 0x41, 0x00, 0x11, 0x5a, - 0x40, 0xe2, 0xb2, 0x7c, 0x41, 0x00, 0x05, 0x5a, - 0x40, 0xe2, 0xaf, 0x7c, 0x41, 0x00, 0xf9, 0x59, - 0x40, 0xe2, 0xb0, 0x7c, 0x41, 0x00, 0xed, 0x59, - 0x40, 0xe2, 0x24, 0x67, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x5c, 0x67, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x0a, 0x61, 0x01, 0x00, 0x3c, 0x00, - 0xd4, 0x48, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x0e, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x32, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x6a, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x0b, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x0f, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x40, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x78, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x3c, 0x00, 0x10, 0x49, 0x01, 0x00, 0x0c, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x10, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x4e, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x86, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x0d, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x11, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0xc0, 0x48, - 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a, 0xe0, 0x48, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x00, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x20, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x18, 0x67, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x28, 0x75, 0x01, 0x01, - 0x7d, 0xa9, 0x40, 0xe2, 0x2c, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x20, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x44, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x88, 0x49, - 0x01, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x75, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0xb8, 0x7c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x8d, 0xa9, 0x00, 0x00, 0x01, 0x00, - 0x00, 0xda, 0x1d, 0x75, 0x01, 0x00, 0x01, 0x00, - 0x00, 0xe2, 0xc4, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0xc4, 0x49, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x59, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xd9, - 0xc8, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xcc, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xd0, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x65, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda, - 0xa5, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda, - 0x3c, 0x00, 0x00, 0x4a, 0x01, 0x00, 0x01, 0x59, - 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x32, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x6a, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x11, 0x59, - 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x48, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xa0, 0x48, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x49, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x4a, 0x01, 0x00, - 0x05, 0x00, 0x00, 0x0a, 0x68, 0x49, 0x01, 0x00, - 0x09, 0x00, 0x00, 0x0a, 0x6c, 0x57, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x38, 0x61, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xac, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0xb0, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x70, 0x57, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x78, 0x4a, - 0x01, 0x00, 0xe8, 0x59, 0x01, 0x00, 0x08, 0x00, - 0x00, 0xe3, 0xdc, 0x58, 0x01, 0x14, 0x4d, 0xfd, - 0x40, 0xe3, 0x2c, 0x59, 0x01, 0x14, 0x39, 0xfd, - 0x40, 0xe3, 0xc0, 0x58, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x64, 0x73, 0x41, 0x00, 0x3d, 0x2e, - 0x44, 0xe2, 0x7c, 0x59, 0x01, 0x14, 0x3c, 0x00, - 0xb4, 0x4a, 0x01, 0x00, 0x9d, 0x2f, 0x44, 0xe3, - 0x5c, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe2, - 0x79, 0x2e, 0x04, 0x00, 0x01, 0x00, 0x00, 0xdb, - 0xa0, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3, - 0xa2, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3, - 0xa0, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0xd1, 0x88, 0x01, 0x00, 0x01, 0x00, 0x00, 0xda, - 0x1d, 0x89, 0x01, 0x00, 0x04, 0x00, 0x00, 0xda, - 0x3c, 0x00, 0xf0, 0x4a, 0x01, 0x00, 0x95, 0x88, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb, 0x31, 0x2f, - 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0xc5, 0x2e, - 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0x68, 0x6c, - 0x01, 0x01, 0x15, 0xd5, 0x40, 0xe2, 0xc0, 0x57, - 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xc8, 0x57, - 0x01, 0x00, 0x34, 0x00, 0x00, 0xe3, 0x9c, 0x6c, - 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xb0, 0x58, - 0x01, 0x03, 0x3c, 0x00, 0x2c, 0x4b, 0x01, 0x00, - 0xe9, 0xd4, 0x40, 0xe2, 0xbc, 0x58, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x9d, 0xa3, 0x00, 0x00, - 0x60, 0x00, 0x00, 0xd9, 0x70, 0x79, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x78, 0x79, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x7c, 0x5a, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x5d, 0x1c, 0x00, 0x00, - 0x11, 0x00, 0x00, 0xd9, 0x24, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x68, 0x4b, - 0x01, 0x00, 0x18, 0x58, 0x01, 0x05, 0xd5, 0xd5, - 0x40, 0xe3, 0xfc, 0x57, 0x01, 0x00, 0x14, 0x00, - 0x00, 0xe3, 0x04, 0x8e, 0x01, 0x03, 0xe5, 0xd5, - 0x40, 0xe3, 0x00, 0x5b, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x18, 0x5b, 0x01, 0x00, 0x40, 0x00, - 0x00, 0xe2, 0xd4, 0x67, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x8d, 0x37, 0x00, 0x00, 0x04, 0x00, - 0x00, 0xdb, 0xbd, 0x36, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x4b, 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb, - 0xfc, 0x60, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, - 0x90, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x70, 0x69, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x49, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x0a, - 0x90, 0x4b, 0x01, 0x00, 0x06, 0x00, 0x00, 0x0a, - 0xa4, 0x58, 0x81, 0x00, 0x05, 0xfd, 0x40, 0xe3, - 0x3c, 0x00, 0xe0, 0x4b, 0x01, 0x00, 0x80, 0x4a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0a, 0x0c, 0x5a, - 0x81, 0x01, 0x25, 0x2d, 0x44, 0xe3, 0xe0, 0x4a, - 0x01, 0x00, 0x03, 0x00, 0x00, 0x0a, 0x18, 0x63, - 0x41, 0x00, 0xfd, 0xbb, 0x40, 0xe2, 0x08, 0x57, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x9c, 0x48, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x4a, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4c, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0xcc, 0x74, 0x01, 0x00, - 0x03, 0x00, 0x00, 0xe3, 0x65, 0x73, 0x41, 0x00, - 0xa9, 0x2e, 0x44, 0xe2, 0xf6, 0x59, 0x01, 0x01, - 0xd1, 0x2c, 0x44, 0xe3, 0x08, 0x4b, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x07, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x6a, 0x28, 0x4b, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0x88, 0x7d, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x58, 0x4c, - 0x01, 0x00, 0x00, 0x75, 0x01, 0x04, 0x65, 0x6f, - 0x40, 0xe3, 0xbc, 0x78, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x38, 0x4b, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0x04, 0x57, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x62, 0x58, 0x4b, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x80, 0x4b, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x68, 0x4b, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x8c, 0x7d, 0x01, 0x00, 0x3c, 0x00, - 0x94, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x39, 0x2d, 0x04, 0x00, 0x04, 0x00, 0x00, 0xdb, - 0x94, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x64, - 0xa8, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a, - 0x3c, 0x00, 0xd0, 0x4c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x4c, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xd0, 0x4c, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x7a, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0xe8, 0x7a, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x0c, 0x4d, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xee, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf3, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xf4, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf9, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xfa, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x48, 0x4d, - 0x01, 0x00, 0xe8, 0x4c, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x00, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x18, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x30, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x90, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x94, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x98, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x9c, 0x5c, 0x01, 0x00, 0x3c, 0x00, - 0x84, 0x4d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xac, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x00, 0xc0, 0x4d, 0x01, 0x00, 0xbc, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc0, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc4, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x90, 0x5c, - 0x01, 0x00, 0x38, 0x00, 0x00, 0xe3, 0x68, 0x4d, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0xd8, 0x4d, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xfa, 0x12, 0x61, - 0x81, 0x01, 0x31, 0xd5, 0x40, 0xe3, 0x06, 0x61, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x4d, 0x01, 0x00, - 0x02, 0x00, 0x00, 0xe2, 0x0b, 0x61, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe3, 0x0f, 0x61, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe3, 0x08, 0x61, 0x01, 0x00, - 0x02, 0x00, 0x00, 0xe2, 0x50, 0x7b, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0x01, 0x00, - 0x0e, 0x00, 0x00, 0x64, 0x9c, 0x57, 0x01, 0x01, - 0x91, 0x88, 0x41, 0xe3, 0x3c, 0x00, 0x38, 0x4e, - 0x01, 0x00, 0x6e, 0x41, 0x67, 0x6f, 0xe2, 0x65, - 0x60, 0x69, 0x6f, 0x20, 0x41, 0x42, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0x4d, 0x01, 0x00, 0x09, 0x00, - 0x00, 0x0a, 0x48, 0x4e, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0xe8, 0x4d, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x48, 0x4d, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0x28, 0x61, 0x01, 0x01, 0x3c, 0x00, - 0x74, 0x4e, 0x01, 0x00, 0xbd, 0xd5, 0x40, 0xe2, - 0x69, 0x61, 0x41, 0x00, 0x85, 0xd5, 0x40, 0xe2, - 0x30, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x44, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x3c, 0x00, 0xb0, 0x4e, 0x01, 0x00, 0x70, 0x4e, - 0x01, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x18, 0x61, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x1c, 0x61, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x20, 0x61, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x24, 0x61, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xb8, 0x4e, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xc8, 0x4e, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xd8, 0x4e, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x4e, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0x96, 0x48, 0x01, 0x00, - 0x06, 0x00, 0x00, 0xe3, 0xe0, 0x62, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x9b, 0x7d, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x62, 0x9c, 0x7d, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x62, 0x60, 0x7c, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x01, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x28, 0x4f, - 0x01, 0x00, 0x2d, 0x63, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x49, 0xd5, 0x00, 0x00, 0x0e, 0x00, - 0x00, 0xd9, 0xf4, 0x67, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x62, 0x46, 0x7d, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x62, 0x9c, 0x7c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00, - 0x64, 0x4f, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0xa0, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x58, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0x64, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x5a, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0x6a, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0xe4, 0x62, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x00, 0xa0, 0x4f, 0x01, 0x00, 0xe8, 0x62, - 0x01, 0x00, 0x03, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x01, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x4f, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x18, 0x50, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0xf0, 0x4e, 0x01, 0x00, 0x2a, 0x00, - 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0x50, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x3c, 0x00, 0x90, 0x50, 0x01, 0x00, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x06, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x07, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x08, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x09, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x50, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0a, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0b, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0c, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x3c, 0x00, 0x08, 0x51, - 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0xdb, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0xdb, 0x48, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x58, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x68, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x78, 0x50, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x51, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x88, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x98, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xa8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xb8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xc8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xd8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xe8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x3c, 0x00, 0x80, 0x51, 0x01, 0x00, 0xf8, 0x50, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x08, 0x51, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x18, 0x51, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x50, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xe8, 0x4e, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x4e, - 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x51, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x28, 0x51, 0x01, 0x00, - 0x0e, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x51, - 0x01, 0x00, 0x98, 0x51, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0x0a, 0x50, 0x4e, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0xe0, 0x4c, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x4b, 0x01, 0x00, 0x1d, 0x00, - 0x00, 0x0a, 0xf8, 0x51, 0x01, 0x00, 0x05, 0x00, - 0x00, 0x0a, 0x24, 0x80, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1d, 0x80, 0x07, 0x00, 0x3c, 0x00, - 0x34, 0x52, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x01, - 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, - 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x01, 0x63, - 0x00, 0x00, 0xa1, 0x63, 0x00, 0x00, 0xc5, 0x63, - 0x00, 0x00, 0xb1, 0x62, 0x00, 0x00, 0xc5, 0x63, - 0x00, 0x00, 0x21, 0x63, 0x00, 0x00, 0x4d, 0x63, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x52, 0x01, 0x00, - 0xa1, 0x63, 0x00, 0x00, 0x01, 0x63, 0x00, 0x00, - 0xa1, 0x63, 0x00, 0x00, 0x06, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x03, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x10, - 0x11, 0x00, 0x00, 0x00, 0xa5, 0xc6, 0x84, 0xf8, - 0x99, 0xee, 0x8d, 0xf6, 0x0d, 0xff, 0xbd, 0xd6, - 0xb1, 0xde, 0x54, 0x91, 0x3c, 0x00, 0xe8, 0x52, - 0x01, 0x00, 0x50, 0x60, 0x03, 0x02, 0xa9, 0xce, - 0x7d, 0x56, 0x19, 0xe7, 0x62, 0xb5, 0xe6, 0x4d, - 0x9a, 0xec, 0x45, 0x8f, 0x9d, 0x1f, 0x40, 0x89, - 0x87, 0xfa, 0x15, 0xef, 0xeb, 0xb2, 0xc9, 0x8e, - 0x0b, 0xfb, 0xec, 0x41, 0x67, 0xb3, 0xfd, 0x5f, - 0xea, 0x45, 0xbf, 0x23, 0xf7, 0x53, 0x96, 0xe4, - 0x5b, 0x9b, 0xc2, 0x75, 0x1c, 0xe1, 0xae, 0x3d, - 0x6a, 0x4c, 0x5a, 0x6c, 0x41, 0x7e, 0x3c, 0x00, - 0x24, 0x53, 0x01, 0x00, 0x02, 0xf5, 0x4f, 0x83, - 0x5c, 0x68, 0xf4, 0x51, 0x34, 0xd1, 0x08, 0xf9, - 0x93, 0xe2, 0x73, 0xab, 0x53, 0x62, 0x3f, 0x2a, - 0x0c, 0x08, 0x52, 0x95, 0x65, 0x46, 0x5e, 0x9d, - 0x28, 0x30, 0xa1, 0x37, 0x0f, 0x0a, 0xb5, 0x2f, - 0x09, 0x0e, 0x36, 0x24, 0x9b, 0x1b, 0x3d, 0xdf, - 0x26, 0xcd, 0x69, 0x4e, 0xcd, 0x7f, 0x9f, 0xea, - 0x1b, 0x12, 0x9e, 0x1d, 0x74, 0x58, 0x2e, 0x34, - 0x3c, 0x00, 0x60, 0x53, 0x01, 0x00, 0x2d, 0x36, - 0xb2, 0xdc, 0xee, 0xb4, 0xfb, 0x5b, 0xf6, 0xa4, - 0x4d, 0x76, 0x61, 0xb7, 0xce, 0x7d, 0x7b, 0x52, - 0x3e, 0xdd, 0x71, 0x5e, 0x97, 0x13, 0xf5, 0xa6, - 0x68, 0xb9, 0x00, 0x00, 0x2c, 0xc1, 0x60, 0x40, - 0x1f, 0xe3, 0xc8, 0x79, 0xed, 0xb6, 0xbe, 0xd4, - 0x46, 0x8d, 0xd9, 0x67, 0x4b, 0x72, 0xde, 0x94, - 0xd4, 0x98, 0xe8, 0xb0, 0x4a, 0x85, 0x6b, 0xbb, - 0x2a, 0xc5, 0x3c, 0x00, 0x9c, 0x53, 0x01, 0x00, - 0xe5, 0x4f, 0x16, 0xed, 0xc5, 0x86, 0xd7, 0x9a, - 0x55, 0x66, 0x94, 0x11, 0xcf, 0x8a, 0x10, 0xe9, - 0x06, 0x04, 0x81, 0xfe, 0xf0, 0xa0, 0x44, 0x78, - 0xba, 0x25, 0xe3, 0x4b, 0xf3, 0xa2, 0xfe, 0x5d, - 0xc0, 0x80, 0x8a, 0x05, 0xad, 0x3f, 0xbc, 0x21, - 0x48, 0x70, 0x04, 0xf1, 0xdf, 0x63, 0xc1, 0x77, - 0x75, 0xaf, 0x63, 0x42, 0x30, 0x20, 0x1a, 0xe5, - 0x0e, 0xfd, 0x6d, 0xbf, 0x3c, 0x00, 0xd8, 0x53, - 0x01, 0x00, 0x4c, 0x81, 0x14, 0x18, 0x35, 0x26, - 0x2f, 0xc3, 0xe1, 0xbe, 0xa2, 0x35, 0xcc, 0x88, - 0x39, 0x2e, 0x57, 0x93, 0xf2, 0x55, 0x82, 0xfc, - 0x47, 0x7a, 0xac, 0xc8, 0xe7, 0xba, 0x2b, 0x32, - 0x95, 0xe6, 0xa0, 0xc0, 0x98, 0x19, 0xd1, 0x9e, - 0x7f, 0xa3, 0x66, 0x44, 0x7e, 0x54, 0xab, 0x3b, - 0x83, 0x0b, 0xca, 0x8c, 0x29, 0xc7, 0xd3, 0x6b, - 0x3c, 0x28, 0x79, 0xa7, 0xe2, 0xbc, 0x3c, 0x00, - 0x14, 0x54, 0x01, 0x00, 0x1d, 0x16, 0x76, 0xad, - 0x3b, 0xdb, 0x56, 0x64, 0x4e, 0x74, 0x1e, 0x14, - 0xdb, 0x92, 0x0a, 0x0c, 0x6c, 0x48, 0xe4, 0xb8, - 0x5d, 0x9f, 0x6e, 0xbd, 0xef, 0x43, 0xa6, 0xc4, - 0xa8, 0x39, 0xa4, 0x31, 0x37, 0xd3, 0x8b, 0xf2, - 0x32, 0xd5, 0x43, 0x8b, 0x59, 0x6e, 0xb7, 0xda, - 0x8c, 0x01, 0x64, 0xb1, 0xd2, 0x9c, 0xe0, 0x49, - 0xb4, 0xd8, 0xfa, 0xac, 0x07, 0xf3, 0x25, 0xcf, - 0x3c, 0x00, 0x50, 0x54, 0x01, 0x00, 0xaf, 0xca, - 0x8e, 0xf4, 0xe9, 0x47, 0x18, 0x10, 0xd5, 0x6f, - 0x88, 0xf0, 0x6f, 0x4a, 0x72, 0x5c, 0x24, 0x38, - 0xf1, 0x57, 0xc7, 0x73, 0x51, 0x97, 0x23, 0xcb, - 0x7c, 0xa1, 0x9c, 0xe8, 0x21, 0x3e, 0xdd, 0x96, - 0xdc, 0x61, 0x86, 0x0d, 0x85, 0x0f, 0x90, 0xe0, - 0x42, 0x7c, 0xc4, 0x71, 0xaa, 0xcc, 0xd8, 0x90, - 0x05, 0x06, 0x01, 0xf7, 0x12, 0x1c, 0xa3, 0xc2, - 0x5f, 0x6a, 0x3c, 0x00, 0x8c, 0x54, 0x01, 0x00, - 0xf9, 0xae, 0xd0, 0x69, 0x91, 0x17, 0x58, 0x99, - 0x27, 0x3a, 0xb9, 0x27, 0x38, 0xd9, 0x13, 0xeb, - 0xb3, 0x2b, 0x33, 0x22, 0xbb, 0xd2, 0x70, 0xa9, - 0x89, 0x07, 0xa7, 0x33, 0xb6, 0x2d, 0x22, 0x3c, - 0x92, 0x15, 0x20, 0xc9, 0x49, 0x87, 0xff, 0xaa, - 0x78, 0x50, 0x7a, 0xa5, 0x8f, 0x03, 0xf8, 0x59, - 0x80, 0x09, 0x17, 0x1a, 0xda, 0x65, 0x31, 0xd7, - 0xc6, 0x84, 0xb8, 0xd0, 0x3c, 0x00, 0xc8, 0x54, - 0x01, 0x00, 0xc3, 0x82, 0xb0, 0x29, 0x77, 0x5a, - 0x11, 0x1e, 0xcb, 0x7b, 0xfc, 0xa8, 0xd6, 0x6d, - 0x3a, 0x2c, 0xc6, 0xa5, 0xf8, 0x84, 0xee, 0x99, - 0xf6, 0x8d, 0xff, 0x0d, 0xd6, 0xbd, 0xde, 0xb1, - 0x91, 0x54, 0x60, 0x50, 0x02, 0x03, 0xce, 0xa9, - 0x56, 0x7d, 0xe7, 0x19, 0xb5, 0x62, 0x4d, 0xe6, - 0xec, 0x9a, 0x8f, 0x45, 0x1f, 0x9d, 0x89, 0x40, - 0xfa, 0x87, 0xef, 0x15, 0xb2, 0xeb, 0x3c, 0x00, - 0x04, 0x55, 0x01, 0x00, 0x8e, 0xc9, 0xfb, 0x0b, - 0x41, 0xec, 0xb3, 0x67, 0x5f, 0xfd, 0x45, 0xea, - 0x23, 0xbf, 0x53, 0xf7, 0xe4, 0x96, 0x9b, 0x5b, - 0x75, 0xc2, 0xe1, 0x1c, 0x3d, 0xae, 0x4c, 0x6a, - 0x6c, 0x5a, 0x7e, 0x41, 0xf5, 0x02, 0x83, 0x4f, - 0x68, 0x5c, 0x51, 0xf4, 0xd1, 0x34, 0xf9, 0x08, - 0xe2, 0x93, 0xab, 0x73, 0x62, 0x53, 0x2a, 0x3f, - 0x08, 0x0c, 0x95, 0x52, 0x46, 0x65, 0x9d, 0x5e, - 0x3c, 0x00, 0x40, 0x55, 0x01, 0x00, 0x30, 0x28, - 0x37, 0xa1, 0x0a, 0x0f, 0x2f, 0xb5, 0x0e, 0x09, - 0x24, 0x36, 0x1b, 0x9b, 0xdf, 0x3d, 0xcd, 0x26, - 0x4e, 0x69, 0x7f, 0xcd, 0xea, 0x9f, 0x12, 0x1b, - 0x1d, 0x9e, 0x58, 0x74, 0x34, 0x2e, 0x36, 0x2d, - 0xdc, 0xb2, 0xb4, 0xee, 0x5b, 0xfb, 0xa4, 0xf6, - 0x76, 0x4d, 0xb7, 0x61, 0x7d, 0xce, 0x52, 0x7b, - 0xdd, 0x3e, 0x5e, 0x71, 0x13, 0x97, 0xa6, 0xf5, - 0xb9, 0x68, 0x3c, 0x00, 0x7c, 0x55, 0x01, 0x00, - 0x00, 0x00, 0xc1, 0x2c, 0x40, 0x60, 0xe3, 0x1f, - 0x79, 0xc8, 0xb6, 0xed, 0xd4, 0xbe, 0x8d, 0x46, - 0x67, 0xd9, 0x72, 0x4b, 0x94, 0xde, 0x98, 0xd4, - 0xb0, 0xe8, 0x85, 0x4a, 0xbb, 0x6b, 0xc5, 0x2a, - 0x4f, 0xe5, 0xed, 0x16, 0x86, 0xc5, 0x9a, 0xd7, - 0x66, 0x55, 0x11, 0x94, 0x8a, 0xcf, 0xe9, 0x10, - 0x04, 0x06, 0xfe, 0x81, 0xa0, 0xf0, 0x78, 0x44, - 0x25, 0xba, 0x4b, 0xe3, 0x3c, 0x00, 0xb8, 0x55, - 0x01, 0x00, 0xa2, 0xf3, 0x5d, 0xfe, 0x80, 0xc0, - 0x05, 0x8a, 0x3f, 0xad, 0x21, 0xbc, 0x70, 0x48, - 0xf1, 0x04, 0x63, 0xdf, 0x77, 0xc1, 0xaf, 0x75, - 0x42, 0x63, 0x20, 0x30, 0xe5, 0x1a, 0xfd, 0x0e, - 0xbf, 0x6d, 0x81, 0x4c, 0x18, 0x14, 0x26, 0x35, - 0xc3, 0x2f, 0xbe, 0xe1, 0x35, 0xa2, 0x88, 0xcc, - 0x2e, 0x39, 0x93, 0x57, 0x55, 0xf2, 0xfc, 0x82, - 0x7a, 0x47, 0xc8, 0xac, 0xba, 0xe7, 0x3c, 0x00, - 0xf4, 0x55, 0x01, 0x00, 0x32, 0x2b, 0xe6, 0x95, - 0xc0, 0xa0, 0x19, 0x98, 0x9e, 0xd1, 0xa3, 0x7f, - 0x44, 0x66, 0x54, 0x7e, 0x3b, 0xab, 0x0b, 0x83, - 0x8c, 0xca, 0xc7, 0x29, 0x6b, 0xd3, 0x28, 0x3c, - 0xa7, 0x79, 0xbc, 0xe2, 0x16, 0x1d, 0xad, 0x76, - 0xdb, 0x3b, 0x64, 0x56, 0x74, 0x4e, 0x14, 0x1e, - 0x92, 0xdb, 0x0c, 0x0a, 0x48, 0x6c, 0xb8, 0xe4, - 0x9f, 0x5d, 0xbd, 0x6e, 0x43, 0xef, 0xc4, 0xa6, - 0x3c, 0x00, 0x30, 0x56, 0x01, 0x00, 0x39, 0xa8, - 0x31, 0xa4, 0xd3, 0x37, 0xf2, 0x8b, 0xd5, 0x32, - 0x8b, 0x43, 0x6e, 0x59, 0xda, 0xb7, 0x01, 0x8c, - 0xb1, 0x64, 0x9c, 0xd2, 0x49, 0xe0, 0xd8, 0xb4, - 0xac, 0xfa, 0xf3, 0x07, 0xcf, 0x25, 0xca, 0xaf, - 0xf4, 0x8e, 0x47, 0xe9, 0x10, 0x18, 0x6f, 0xd5, - 0xf0, 0x88, 0x4a, 0x6f, 0x5c, 0x72, 0x38, 0x24, - 0x57, 0xf1, 0x73, 0xc7, 0x97, 0x51, 0xcb, 0x23, - 0xa1, 0x7c, 0x3c, 0x00, 0x6c, 0x56, 0x01, 0x00, - 0xe8, 0x9c, 0x3e, 0x21, 0x96, 0xdd, 0x61, 0xdc, - 0x0d, 0x86, 0x0f, 0x85, 0xe0, 0x90, 0x7c, 0x42, - 0x71, 0xc4, 0xcc, 0xaa, 0x90, 0xd8, 0x06, 0x05, - 0xf7, 0x01, 0x1c, 0x12, 0xc2, 0xa3, 0x6a, 0x5f, - 0xae, 0xf9, 0x69, 0xd0, 0x17, 0x91, 0x99, 0x58, - 0x3a, 0x27, 0x27, 0xb9, 0xd9, 0x38, 0xeb, 0x13, - 0x2b, 0xb3, 0x22, 0x33, 0xd2, 0xbb, 0xa9, 0x70, - 0x07, 0x89, 0x33, 0xa7, 0x3c, 0x00, 0xa8, 0x56, - 0x01, 0x00, 0x2d, 0xb6, 0x3c, 0x22, 0x15, 0x92, - 0xc9, 0x20, 0x87, 0x49, 0xaa, 0xff, 0x50, 0x78, - 0xa5, 0x7a, 0x03, 0x8f, 0x59, 0xf8, 0x09, 0x80, - 0x1a, 0x17, 0x65, 0xda, 0xd7, 0x31, 0x84, 0xc6, - 0xd0, 0xb8, 0x82, 0xc3, 0x29, 0xb0, 0x5a, 0x77, - 0x1e, 0x11, 0x7b, 0xcb, 0xa8, 0xfc, 0x6d, 0xd6, - 0x2c, 0x3a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x56, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x72, 0x65, 0x71, 0x45, 0x72, 0x72, 0x52, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x57, 0x01, 0x00, 0xc4, 0x8e, - 0x01, 0x00, 0x24, 0x9a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x24, 0x9a, - 0x01, 0x00, 0xa4, 0xb2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xa4, 0xb2, - 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x10, 0x20, - 0x30, 0x40, 0x50, 0xbb, 0x30, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x57, 0x01, 0x00, - 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, - 0x24, 0x26, 0x28, 0x2a, 0x2b, 0x2c, 0x01, 0x00, - 0x70, 0x17, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0d, 0x25, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00, - 0x65, 0x29, 0x01, 0x00, 0x0d, 0x25, 0x00, 0x00, - 0xf5, 0x5e, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00, - 0x41, 0x3f, 0x01, 0x00, 0x02, 0x04, 0x0b, 0x0c, - 0x12, 0x16, 0x18, 0x24, 0x3c, 0x00, 0x98, 0x57, - 0x01, 0x00, 0x30, 0x48, 0x60, 0x6c, 0x01, 0x00, - 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x10, 0x12, 0x11, 0x00, - 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x57, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x93, 0x04, 0x00, - 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0xdf, 0x40, 0xcf, 0xfd, 0x00, 0x40, 0x83, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x58, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x80, 0x81, 0x00, 0x00, - 0x80, 0x00, 0xbf, 0xff, 0x7f, 0x7e, 0x01, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6f, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x58, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xb8, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x71, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x90, 0x71, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x58, - 0x01, 0x00, 0xa8, 0x71, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x05, 0x0a, 0x01, 0x06, 0x0b, - 0x02, 0x07, 0x0c, 0x03, 0x08, 0x0d, 0x04, 0x09, - 0x00, 0x00, 0x03, 0x03, 0x01, 0x01, 0x00, 0x04, - 0x00, 0x04, 0x04, 0x06, 0x16, 0x1e, 0x1f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, - 0xc4, 0x58, 0x01, 0x00, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x61, 0x8b, 0x4a, 0x00, 0x61, 0x8f, 0x4a, 0x00, - 0x61, 0x8b, 0x4a, 0x00, 0x05, 0xe3, 0xc0, 0x00, - 0x05, 0xcb, 0xc0, 0x00, 0x05, 0xbb, 0xc0, 0x00, - 0x85, 0xba, 0xc0, 0x00, 0x85, 0xa2, 0xc0, 0x00, - 0x85, 0x92, 0xc0, 0x00, 0x85, 0x8a, 0xc0, 0x00, - 0x85, 0x7a, 0xc0, 0x00, 0x45, 0x89, 0xc0, 0x00, - 0x3c, 0x00, 0x00, 0x59, 0x01, 0x00, 0x45, 0x71, - 0xc0, 0x00, 0x45, 0x69, 0xc0, 0x00, 0x45, 0x61, - 0xc0, 0x00, 0x45, 0x59, 0xc0, 0x00, 0x45, 0x51, - 0xc0, 0x00, 0x45, 0x49, 0xc0, 0x00, 0x45, 0x41, - 0xc0, 0x00, 0x45, 0x39, 0xc0, 0x00, 0x45, 0x31, - 0xc0, 0x00, 0x45, 0x29, 0xc0, 0x00, 0x45, 0x21, - 0xc0, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d, - 0x06, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d, - 0x06, 0x00, 0x3c, 0x00, 0x3c, 0x59, 0x01, 0x00, - 0x60, 0x2d, 0x06, 0x00, 0x60, 0x28, 0x06, 0x00, - 0x50, 0x26, 0x06, 0x00, 0x50, 0x21, 0x06, 0x00, - 0x50, 0x1f, 0x06, 0x00, 0x50, 0x1c, 0x06, 0x00, - 0x50, 0x1a, 0x06, 0x00, 0x50, 0x18, 0x06, 0x00, - 0x50, 0x16, 0x06, 0x00, 0x50, 0x14, 0x06, 0x00, - 0x50, 0x12, 0x06, 0x00, 0x50, 0x10, 0x06, 0x00, - 0x50, 0x0e, 0x06, 0x00, 0x50, 0x0c, 0x06, 0x00, - 0x50, 0x0a, 0x06, 0x00, 0x3c, 0x00, 0x78, 0x59, - 0x01, 0x00, 0x2b, 0x0b, 0x06, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x6d, - 0xc0, 0x00, 0xdd, 0x5b, 0xc0, 0x00, 0xdd, 0x4b, - 0xc0, 0x00, 0xdd, 0x43, 0xc0, 0x00, 0xdd, 0x3b, - 0xc0, 0x00, 0xdd, 0x33, 0xc0, 0x00, 0xdd, 0x2b, - 0xc0, 0x00, 0xdd, 0x23, 0xc0, 0x00, 0x3c, 0x00, - 0xb4, 0x59, 0x01, 0x00, 0xdd, 0x1b, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0x05, 0x05, 0x05, 0x04, - 0x04, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, - 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x5b, 0x00, 0x40, 0x02, - 0xe0, 0xfd, 0xf2, 0x00, 0xb8, 0xfc, 0xa4, 0x01, - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x03, 0x0b, 0x9f, 0x5f, 0x07, 0x01, - 0x2a, 0x04, 0x21, 0x04, 0x17, 0x04, 0x0e, 0x04, - 0x04, 0x04, 0xfb, 0x03, 0xf1, 0x03, 0xe8, 0x03, - 0xc9, 0x03, 0xaa, 0x03, 0x8a, 0x03, 0x6b, 0x03, - 0x4c, 0x03, 0x3c, 0x00, 0x2c, 0x5a, 0x01, 0x00, - 0x2d, 0x03, 0x0e, 0x03, 0xee, 0x02, 0xec, 0x02, - 0x01, 0x03, 0x16, 0x03, 0x2b, 0x03, 0x40, 0x03, - 0x55, 0x03, 0x6a, 0x03, 0x7f, 0x03, 0x94, 0x03, - 0xa9, 0x03, 0xbe, 0x03, 0xd3, 0x03, 0xe8, 0x03, - 0xbe, 0x03, 0x94, 0x03, 0x6a, 0x03, 0x00, 0x02, - 0x04, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x00, 0x03, 0x3c, 0x00, 0x68, 0x5a, - 0x01, 0x00, 0x05, 0x08, 0x0b, 0x0e, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x5a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x5a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x5b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x5b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x5b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x5b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x5c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x5c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x5c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x5c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x5c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x5d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x5d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x5d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x5d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x5e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x5e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x5e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x5e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x5f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x5f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x5f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x5f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x60, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x60, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x61, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x61, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x61, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x62, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x62, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x62, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x62, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x63, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x63, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x63, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x63, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x64, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x64, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x64, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x65, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x65, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x65, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x65, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x66, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x66, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x66, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x67, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x67, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x67, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x68, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x68, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x68, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x69, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x69, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x69, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x69, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x6a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x6a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x6a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x6a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x6b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x6b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x6b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x6b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x6c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x6c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x6c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x6d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x6d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x6d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x6e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x6e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x6e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x6e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x6f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x6f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x6f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x70, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x70, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x71, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x71, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x71, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x71, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x72, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x72, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x72, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x72, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x73, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x73, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x73, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x74, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x74, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x74, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x75, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x75, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x75, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x76, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x76, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x76, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x76, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x77, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x77, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x77, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x77, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x78, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x78, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x78, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x79, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x79, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x79, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x79, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x7a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x7a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x7a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x7a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x7a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x7b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x7b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x7b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x7b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x7c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x7c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x7c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x7c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x7d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x7d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x7d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x7e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x7e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x7e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x7e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x7e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x7f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x7f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x7f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x7f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x70, 0xb5, 0x01, 0x25, 0x07, 0x4e, - 0xad, 0x03, 0x75, 0x61, 0x0a, 0x20, 0xfa, 0xf7, - 0x6c, 0xff, 0x30, 0x68, 0x80, 0x03, 0xc4, 0x0f, - 0xb5, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x65, 0xff, - 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x80, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x70, 0xb5, 0x01, 0x25, 0x6d, 0x04, 0x00, 0x28, - 0x10, 0x4c, 0x01, 0xd0, 0x65, 0x61, 0x00, 0xe0, - 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0xa0, 0x68, 0x28, 0x43, 0xa0, 0x60, 0x0a, 0x20, - 0xfa, 0xf7, 0x4e, 0xff, 0x01, 0x26, 0xb6, 0x03, - 0x66, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x48, 0xff, - 0xa6, 0x61, 0x01, 0x20, 0xfa, 0xf7, 0x44, 0xff, - 0x3c, 0x00, 0x60, 0x80, 0x01, 0x00, 0xa0, 0x68, - 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, - 0x60, 0x60, 0x0a, 0x20, 0xfa, 0xf7, 0x3b, 0xff, - 0x70, 0xbd, 0x10, 0x00, 0x07, 0x00, 0x70, 0xb5, - 0x01, 0x25, 0x10, 0x4c, 0x6d, 0x04, 0x65, 0x61, - 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, 0xa0, 0x68, - 0x28, 0x43, 0xa0, 0x60, 0xee, 0x08, 0xa6, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0x28, 0xff, 0x66, 0x61, - 0x0a, 0x20, 0x3c, 0x00, 0x9c, 0x80, 0x01, 0x00, - 0xfa, 0xf7, 0x24, 0xff, 0xa5, 0x61, 0x0a, 0x20, - 0xfa, 0xf7, 0x20, 0xff, 0xa6, 0x61, 0x0a, 0x20, - 0xfa, 0xf7, 0x1c, 0xff, 0xa0, 0x68, 0xa8, 0x43, - 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x70, 0xb5, 0x01, 0x25, 0x0e, 0x4c, 0x6d, 0x04, - 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0xa0, 0x68, 0x28, 0x43, 0x3c, 0x00, 0xd8, 0x80, - 0x01, 0x00, 0xa0, 0x60, 0xee, 0x08, 0x66, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0x02, 0xff, 0x65, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0xfe, 0xfe, 0xa6, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0xfa, 0xfe, 0xa0, 0x68, - 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, - 0x60, 0x60, 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24, - 0x80, 0x26, 0x28, 0x1c, 0x30, 0x40, 0x3c, 0x00, - 0x14, 0x81, 0x01, 0x00, 0xff, 0xf7, 0x88, 0xff, - 0x68, 0x06, 0x05, 0x0e, 0x01, 0x34, 0x08, 0x2c, - 0xf6, 0xdb, 0xff, 0xf7, 0x6d, 0xff, 0x70, 0xbd, - 0x80, 0xb5, 0x02, 0x1c, 0x0b, 0x21, 0x80, 0x20, - 0xfb, 0xf7, 0x3e, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x12, 0x48, 0x00, 0x25, 0x07, 0x1c, - 0xff, 0x37, 0x06, 0x1d, 0x01, 0x37, 0x28, 0x1c, - 0xf9, 0xf7, 0xea, 0xfd, 0x04, 0x1c, 0x17, 0xd0, - 0x3c, 0x00, 0x50, 0x81, 0x01, 0x00, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd0, 0xe0, 0x6a, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x20, 0xe0, 0x62, 0x25, 0x1c, - 0xf0, 0xe7, 0x7b, 0x68, 0x00, 0x2b, 0x05, 0xd0, - 0x32, 0x1c, 0x21, 0x1c, 0x44, 0x31, 0x01, 0x20, - 0xe8, 0xf7, 0x34, 0xf9, 0x20, 0x1c, 0x44, 0x30, - 0xf9, 0xf7, 0x37, 0xfe, 0xe2, 0xe7, 0xf8, 0xbd, - 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x48, - 0x70, 0xb5, 0x3c, 0x00, 0x8c, 0x81, 0x01, 0x00, - 0x00, 0x68, 0xff, 0x28, 0x1d, 0xd1, 0xff, 0x20, - 0x32, 0x30, 0xfa, 0xf7, 0xa7, 0xfe, 0x0e, 0x4d, - 0x6c, 0x68, 0x0e, 0x48, 0xfa, 0xf7, 0xa2, 0xfe, - 0x68, 0x68, 0x24, 0x1a, 0x01, 0x20, 0x00, 0xf0, - 0x95, 0xfd, 0x6e, 0x68, 0x09, 0x48, 0xfa, 0xf7, - 0x99, 0xfe, 0x68, 0x68, 0x21, 0x1c, 0x0a, 0x39, - 0x30, 0x1a, 0x88, 0x42, 0x02, 0xd3, 0x0a, 0x34, - 0xa0, 0x42, 0x02, 0xd9, 0x3c, 0x00, 0xc8, 0x81, - 0x01, 0x00, 0x00, 0x20, 0x00, 0xf0, 0x85, 0xfd, - 0x70, 0xbd, 0xf4, 0x74, 0x01, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x93, 0x03, 0x00, 0x00, 0x70, 0xb5, - 0x00, 0xf0, 0x4d, 0xf8, 0x01, 0x20, 0xed, 0xf7, - 0x34, 0xf9, 0x11, 0x4d, 0x18, 0x21, 0x68, 0x60, - 0x00, 0x20, 0xe9, 0xf7, 0xf2, 0xf9, 0x28, 0x60, - 0x04, 0x68, 0x80, 0x20, 0x20, 0x80, 0x00, 0x26, - 0x06, 0x22, 0xff, 0x21, 0x20, 0x1d, 0x3c, 0x00, - 0x04, 0x82, 0x01, 0x00, 0x66, 0x80, 0xe8, 0xf7, - 0x0b, 0xfa, 0x20, 0x1c, 0x0a, 0x30, 0x09, 0x49, - 0xf2, 0xf7, 0x2e, 0xfd, 0x20, 0x1c, 0x10, 0x30, - 0x07, 0x49, 0xf2, 0xf7, 0x29, 0xfd, 0xe6, 0x82, - 0x03, 0xcd, 0xe9, 0xf7, 0xf9, 0xf8, 0x02, 0x49, - 0x01, 0x20, 0x14, 0x39, 0x88, 0x60, 0x70, 0xbd, - 0x90, 0xd9, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x24, 0xf7, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x82, 0x01, 0x00, 0x10, 0xb5, - 0x06, 0x4c, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68, - 0xf0, 0xf7, 0x11, 0xfb, 0x60, 0x78, 0x02, 0x28, - 0x01, 0xd1, 0x00, 0xf0, 0x1a, 0xf9, 0x10, 0xbd, - 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x80, 0xb5, - 0xa1, 0x20, 0xff, 0xf7, 0x50, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x40, 0x00, 0x0e, 0x21, 0x08, 0x40, - 0x80, 0xb5, 0xa0, 0x30, 0xff, 0xf7, 0x47, 0xff, - 0x80, 0xbd, 0x3c, 0x00, 0x7c, 0x82, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0xe9, 0xf7, 0x87, 0xf9, 0x00, 0x20, - 0x20, 0x60, 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00, - 0x90, 0xd9, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x01, 0x21, 0x07, 0x4a, 0x21, 0x61, 0x02, 0x20, - 0x10, 0x70, 0x61, 0x61, 0x00, 0xf0, 0xd6, 0xfc, - 0x00, 0xf0, 0xc8, 0xfb, 0x20, 0x1c, 0xed, 0xf7, - 0x9f, 0xfa, 0x10, 0xbd, 0x3c, 0x00, 0xb8, 0x82, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x7c, 0xd9, - 0x01, 0x00, 0x70, 0xb5, 0x02, 0x1c, 0x08, 0x1c, - 0x02, 0x25, 0x00, 0x2a, 0x13, 0x4e, 0x14, 0xd0, - 0x00, 0xf0, 0x11, 0xfc, 0x30, 0x78, 0x01, 0x21, - 0x08, 0x43, 0x30, 0x70, 0x30, 0x78, 0x28, 0x43, - 0x30, 0x70, 0x00, 0x20, 0x7d, 0x21, 0x49, 0x01, - 0xb2, 0x79, 0x92, 0x07, 0x00, 0xd5, 0x01, 0x34, - 0x01, 0x30, 0x88, 0x42, 0xf8, 0xdb, 0x3c, 0x00, - 0xf4, 0x82, 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd, - 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x30, 0x78, - 0x40, 0x08, 0x40, 0x00, 0x30, 0x70, 0x05, 0x49, - 0x48, 0x68, 0x01, 0x22, 0x12, 0x04, 0x90, 0x43, - 0x48, 0x60, 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00, - 0x88, 0x00, 0x07, 0x00, 0x6c, 0x00, 0x07, 0x00, - 0xff, 0xb5, 0x09, 0xae, 0x00, 0x20, 0x60, 0xce, - 0x28, 0x60, 0x00, 0x23, 0x9c, 0x46, 0x30, 0x60, - 0x3c, 0x00, 0x30, 0x83, 0x01, 0x00, 0x69, 0x46, - 0x01, 0xaa, 0x17, 0xe0, 0xdb, 0x07, 0x0e, 0xd5, - 0x12, 0x4b, 0x1c, 0x56, 0x63, 0x1c, 0x0a, 0xd0, - 0x01, 0x27, 0x2b, 0x68, 0xa7, 0x40, 0x3b, 0x43, - 0x2b, 0x60, 0x13, 0x68, 0xdb, 0x07, 0x02, 0xd5, - 0x33, 0x68, 0x3b, 0x43, 0x33, 0x60, 0x0b, 0x68, - 0x5b, 0x08, 0x0b, 0x60, 0x13, 0x68, 0x5b, 0x08, - 0x13, 0x60, 0x01, 0x30, 0x0b, 0x68, 0x00, 0x2b, - 0x01, 0xd0, 0x3c, 0x00, 0x6c, 0x83, 0x01, 0x00, - 0x22, 0x28, 0xe2, 0xd3, 0x63, 0x46, 0x01, 0x33, - 0x20, 0x20, 0x02, 0x2b, 0x9c, 0x46, 0x02, 0xa9, - 0x03, 0xaa, 0xf2, 0xdb, 0xff, 0xbd, 0x00, 0x00, - 0xb4, 0x8d, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0x1e, 0x21, 0x00, 0x22, 0x03, 0x20, - 0x05, 0x4b, 0xf9, 0xf7, 0xb3, 0xf8, 0x21, 0x1c, - 0x03, 0x20, 0xf9, 0xf7, 0xf5, 0xf8, 0x29, 0x1c, - 0x03, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0xa8, 0x83, - 0x01, 0x00, 0xf1, 0xf8, 0xb0, 0xbd, 0x80, 0x38, - 0x01, 0x00, 0xb0, 0xb5, 0x1c, 0x4c, 0x1c, 0x4d, - 0x21, 0x78, 0x02, 0x29, 0x09, 0xd0, 0x03, 0x29, - 0x19, 0xd0, 0x04, 0x29, 0x1f, 0xd0, 0x05, 0x29, - 0x23, 0xd1, 0x00, 0x20, 0x00, 0xf0, 0x17, 0xfb, - 0x23, 0xe0, 0x68, 0x61, 0x14, 0x48, 0x1c, 0x30, - 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60, - 0x00, 0xf0, 0x2f, 0xfb, 0xe0, 0x68, 0x3c, 0x00, - 0xe4, 0x83, 0x01, 0x00, 0x01, 0x38, 0xe0, 0x60, - 0x16, 0xd1, 0x32, 0x20, 0xe0, 0x60, 0xff, 0xf7, - 0xa3, 0xfe, 0x11, 0xe0, 0x00, 0x20, 0x00, 0xf0, - 0x01, 0xfb, 0x00, 0xf0, 0x2d, 0xfc, 0x01, 0x20, - 0x20, 0x70, 0x09, 0xe0, 0x00, 0x20, 0x00, 0xf0, - 0xf9, 0xfa, 0xff, 0xf7, 0x45, 0xff, 0x03, 0xe0, - 0x05, 0x21, 0x0b, 0x20, 0xe8, 0xf7, 0x46, 0xff, - 0x68, 0x69, 0x61, 0x68, 0xe7, 0xf7, 0xdd, 0xff, - 0x3c, 0x00, 0x20, 0x84, 0x01, 0x00, 0xb0, 0xbd, - 0x00, 0x00, 0x7c, 0xd9, 0x01, 0x00, 0x20, 0xf7, - 0x01, 0x00, 0xf7, 0xb5, 0x04, 0x1c, 0x17, 0x1c, - 0xff, 0xf7, 0x21, 0xfe, 0x20, 0x0a, 0xff, 0xf7, - 0x18, 0xff, 0x20, 0x06, 0x00, 0x0e, 0xff, 0xf7, - 0x62, 0xfe, 0xff, 0xf7, 0x18, 0xfe, 0xa1, 0x20, - 0xff, 0xf7, 0x5d, 0xfe, 0x00, 0x25, 0x16, 0xe0, - 0x00, 0x20, 0x00, 0x24, 0x40, 0x06, 0x06, 0x0e, - 0xff, 0xf7, 0x3c, 0x00, 0x5c, 0x84, 0x01, 0x00, - 0xd1, 0xfd, 0x00, 0x06, 0x00, 0x0e, 0x30, 0x43, - 0x01, 0x34, 0x08, 0x2c, 0xf5, 0xdb, 0x29, 0x1c, - 0x01, 0x9a, 0x01, 0x35, 0xbd, 0x42, 0x50, 0x54, - 0x01, 0xda, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0xff, 0xf7, 0xd4, 0xfd, 0xbd, 0x42, 0xe6, 0xdb, - 0xff, 0xf7, 0x1e, 0xfe, 0xfe, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0xff, 0xf7, 0x19, 0xfe, 0x09, 0x21, - 0x89, 0x03, 0x00, 0x22, 0x3c, 0x00, 0x98, 0x84, - 0x01, 0x00, 0x02, 0x20, 0xf0, 0xf7, 0xe9, 0xf9, - 0x80, 0xbd, 0x09, 0x21, 0x89, 0x03, 0x80, 0xb5, - 0x00, 0x22, 0x02, 0x20, 0xf0, 0xf7, 0xc9, 0xf9, - 0x01, 0x21, 0x09, 0x48, 0x89, 0x03, 0x81, 0x61, - 0x42, 0x68, 0x0a, 0x43, 0x42, 0x60, 0x82, 0x68, - 0x11, 0x43, 0x81, 0x60, 0x01, 0x21, 0x49, 0x04, - 0x81, 0x61, 0x82, 0x68, 0x8a, 0x43, 0x82, 0x60, - 0x42, 0x68, 0x11, 0x43, 0x41, 0x60, 0x3c, 0x00, - 0xd4, 0x84, 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0xf0, 0xb5, 0x04, 0x1c, - 0xc0, 0x68, 0x7b, 0x4e, 0x05, 0x68, 0x30, 0x78, - 0x85, 0xb0, 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, - 0x72, 0xd1, 0x00, 0x21, 0x20, 0x69, 0xf2, 0xf7, - 0x41, 0xf9, 0x76, 0x49, 0xf2, 0xf7, 0x24, 0xfc, - 0x00, 0x28, 0x69, 0xd0, 0x20, 0x1c, 0x20, 0x30, - 0x41, 0x7a, 0x08, 0x29, 0x02, 0xd1, 0x72, 0x4a, - 0x3c, 0x00, 0x10, 0x85, 0x01, 0x00, 0x00, 0x21, - 0x51, 0x61, 0x00, 0x7a, 0x22, 0x6a, 0x18, 0x21, - 0xf2, 0xf7, 0xc9, 0xfb, 0xe1, 0x6a, 0x37, 0x1c, - 0x40, 0x18, 0x6c, 0x49, 0x02, 0x90, 0x30, 0x78, - 0x0e, 0x1c, 0xff, 0x36, 0x0a, 0x1d, 0x01, 0x36, - 0x01, 0x28, 0x04, 0x92, 0x07, 0xd0, 0x65, 0x4a, - 0x02, 0x99, 0x1c, 0x32, 0x28, 0x1c, 0xed, 0xf7, - 0xe2, 0xfb, 0x00, 0x28, 0x6b, 0xd0, 0x32, 0x21, - 0x20, 0x69, 0x3c, 0x00, 0x4c, 0x85, 0x01, 0x00, - 0xf2, 0xf7, 0x16, 0xf9, 0x01, 0x90, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x11, 0xf9, 0x01, 0x1c, - 0x5e, 0x48, 0x01, 0x23, 0x01, 0x9a, 0xed, 0xf7, - 0x07, 0xfc, 0x00, 0x28, 0x04, 0xd1, 0x5b, 0x48, - 0xed, 0xf7, 0x92, 0xfa, 0x00, 0x21, 0xb9, 0x60, - 0x56, 0x48, 0x1c, 0x30, 0x81, 0x68, 0xea, 0xf7, - 0x19, 0xfc, 0x20, 0x1c, 0x14, 0x30, 0x03, 0x90, - 0x04, 0x99, 0xf2, 0xf7, 0x3c, 0x00, 0x88, 0x85, - 0x01, 0x00, 0xd5, 0xfb, 0x00, 0x28, 0x05, 0xd1, - 0x00, 0x22, 0xba, 0x60, 0x04, 0x98, 0x03, 0x99, - 0xf2, 0xf7, 0x6b, 0xfb, 0x4f, 0x49, 0x28, 0x89, - 0x09, 0x88, 0x88, 0x42, 0x03, 0xd0, 0x00, 0x22, - 0x4c, 0x49, 0xba, 0x60, 0x08, 0x80, 0x03, 0x21, - 0x20, 0x69, 0xf2, 0xf7, 0xe4, 0xf8, 0x00, 0x28, - 0x10, 0xd0, 0x46, 0x49, 0x82, 0x78, 0x20, 0x31, - 0x0b, 0x79, 0x94, 0x46, 0x9a, 0x42, 0x3c, 0x00, - 0xc4, 0x85, 0x01, 0x00, 0x09, 0xd0, 0x00, 0x22, - 0xba, 0x60, 0x62, 0x46, 0x0a, 0x71, 0x80, 0x78, - 0x01, 0x21, 0xf3, 0xf7, 0x05, 0xf9, 0x00, 0xe0, - 0x77, 0xe0, 0x06, 0x21, 0x20, 0x69, 0xf2, 0xf7, - 0xcd, 0xf8, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x78, - 0x3a, 0x48, 0x40, 0x30, 0x82, 0x88, 0x91, 0x42, - 0x02, 0xd0, 0x00, 0x22, 0xba, 0x60, 0x81, 0x80, - 0x2a, 0x21, 0x20, 0x69, 0xf2, 0xf7, 0xbe, 0xf8, - 0x3c, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x28, - 0x0d, 0xd0, 0x80, 0x78, 0xf1, 0x69, 0x33, 0x4a, - 0x81, 0x42, 0x08, 0xd0, 0x00, 0x21, 0xb9, 0x60, - 0xf0, 0x61, 0x10, 0x1c, 0xed, 0xf7, 0x09, 0xfb, - 0x2f, 0x48, 0xed, 0xf7, 0xfa, 0xfa, 0x38, 0x78, - 0x3b, 0x1c, 0x01, 0x28, 0x17, 0xd1, 0x02, 0x20, - 0x18, 0x70, 0x2a, 0x4f, 0x01, 0x23, 0x3b, 0x61, - 0x27, 0x4b, 0x03, 0xcd, 0x1c, 0x33, 0x08, 0x3d, - 0x02, 0x9a, 0x3c, 0x00, 0x3c, 0x86, 0x01, 0x00, - 0xed, 0xf7, 0xb0, 0xfa, 0x38, 0x1c, 0xed, 0xf7, - 0xd7, 0xf8, 0x32, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x01, 0x20, 0xe7, 0xf7, 0xc4, 0xfe, - 0x00, 0xf0, 0xf4, 0xf9, 0x20, 0x1c, 0xf9, 0xf7, - 0xd5, 0xfb, 0x07, 0x1c, 0x11, 0xd1, 0x20, 0x1c, - 0xf9, 0xf7, 0x88, 0xfb, 0x07, 0x1c, 0x2e, 0xd0, - 0x01, 0x23, 0x3b, 0x61, 0x68, 0x89, 0x40, 0x21, - 0xc8, 0x53, 0x73, 0x68, 0x3c, 0x00, 0x78, 0x86, - 0x01, 0x00, 0x00, 0x2b, 0x04, 0xd0, 0x21, 0x1c, - 0x00, 0x20, 0x04, 0x9a, 0xe7, 0xf7, 0xac, 0xfe, - 0x01, 0x23, 0xfb, 0x62, 0x20, 0x69, 0x32, 0x21, - 0xf2, 0xf7, 0x75, 0xf8, 0x05, 0x1c, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x70, 0xf8, 0x0e, 0x4e, - 0x01, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7, - 0xc0, 0xfb, 0x00, 0x28, 0x0e, 0xd1, 0x32, 0x21, - 0x20, 0x69, 0xf2, 0xf7, 0x64, 0xf8, 0x3c, 0x00, - 0xb4, 0x86, 0x01, 0x00, 0x05, 0x1c, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x5f, 0xf8, 0x01, 0x1c, - 0x3b, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7, - 0xd7, 0xfa, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x40, 0xf8, 0x01, 0x00, - 0x20, 0xf7, 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, - 0x80, 0x2a, 0x80, 0xb5, 0x06, 0xd0, 0x81, 0x2a, - 0x03, 0xd0, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7, - 0x3c, 0x00, 0xf0, 0x86, 0x01, 0x00, 0xd9, 0xfd, - 0x80, 0xbd, 0xff, 0xf7, 0x5c, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x81, 0x78, 0xff, 0x29, - 0x01, 0xd0, 0x00, 0x79, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x80, 0xf8, 0x01, 0x00, 0x30, 0xb5, - 0x89, 0xb0, 0x00, 0x93, 0x0e, 0x4d, 0x13, 0x1c, - 0x04, 0x1c, 0x2a, 0x1c, 0xec, 0xf7, 0x25, 0xfd, - 0x01, 0xa9, 0x06, 0xa8, 0xa2, 0x68, 0xec, 0xf7, - 0xce, 0xfe, 0x3c, 0x00, 0x2c, 0x87, 0x01, 0x00, - 0x01, 0xaa, 0x06, 0xa9, 0x28, 0x1c, 0x63, 0x6a, - 0xed, 0xf7, 0x44, 0xfa, 0x04, 0x1c, 0x01, 0x28, - 0x04, 0xd1, 0x28, 0x1c, 0xed, 0xf7, 0x2c, 0xf8, - 0x00, 0xf0, 0x4a, 0xf8, 0x20, 0x1c, 0x09, 0xb0, - 0x30, 0xbd, 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00, - 0x80, 0xb5, 0xed, 0xf7, 0x2b, 0xf8, 0x00, 0xf0, - 0x7d, 0xf8, 0x02, 0x48, 0xed, 0xf7, 0x02, 0xfa, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x87, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x28, 0x0b, 0xd1, 0x06, 0x48, 0xed, 0xf7, - 0xf8, 0xf9, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20, - 0xed, 0xf7, 0xeb, 0xfa, 0x03, 0x49, 0x03, 0x20, - 0xf9, 0xf7, 0x35, 0xfe, 0x80, 0xbd, 0x20, 0xf7, - 0x01, 0x00, 0x6d, 0x87, 0x01, 0x00, 0xb0, 0xb5, - 0x10, 0x4d, 0x04, 0x1c, 0x13, 0x1c, 0x2a, 0x1c, - 0x88, 0xb0, 0xec, 0xf7, 0x02, 0xfd, 0x3c, 0x00, - 0xa4, 0x87, 0x01, 0x00, 0x21, 0x1c, 0x0a, 0x31, - 0x06, 0x22, 0x28, 0x1d, 0xe7, 0xf7, 0xa4, 0xfe, - 0x69, 0x46, 0x05, 0xa8, 0x62, 0x69, 0xec, 0xf7, - 0x87, 0xfe, 0x28, 0x1c, 0xec, 0xf7, 0xee, 0xff, - 0x7f, 0x23, 0xdb, 0x43, 0x28, 0x1c, 0x6a, 0x46, - 0x05, 0xa9, 0xed, 0xf7, 0xf9, 0xf9, 0x00, 0xf0, - 0x1d, 0xf8, 0x08, 0xb0, 0xb0, 0xbd, 0x00, 0x00, - 0x20, 0xf7, 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0xe0, 0x87, 0x01, 0x00, 0x01, 0x78, - 0x00, 0x29, 0x06, 0xd0, 0x02, 0x29, 0x01, 0xd0, - 0x05, 0x29, 0x07, 0xd1, 0x03, 0x21, 0x01, 0x70, - 0x80, 0xbd, 0x01, 0x21, 0x01, 0x70, 0x00, 0xf0, - 0x2e, 0xfa, 0x80, 0xbd, 0x03, 0x21, 0x0b, 0x20, - 0xe8, 0xf7, 0x4f, 0xfd, 0x80, 0xbd, 0x7c, 0xd9, - 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x08, 0x78, - 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28, 0x01, 0xd0, - 0x05, 0x28, 0x3c, 0x00, 0x1c, 0x88, 0x01, 0x00, - 0x05, 0xd1, 0x04, 0x20, 0x08, 0x70, 0x80, 0xbd, - 0xff, 0xf7, 0x38, 0xfd, 0x80, 0xbd, 0x02, 0x21, - 0x0b, 0x20, 0xe8, 0xf7, 0x39, 0xfd, 0x80, 0xbd, - 0x7c, 0xd9, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x0b, 0x20, 0x04, 0x4a, 0xfa, 0xf7, 0x82, 0xff, - 0xf6, 0xf7, 0x86, 0xfd, 0x02, 0x49, 0x08, 0x61, - 0x80, 0xbd, 0x00, 0x00, 0xdd, 0x86, 0x01, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x88, - 0x01, 0x00, 0x0c, 0x48, 0x80, 0xb5, 0x01, 0x78, - 0x06, 0x29, 0x0e, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x03, - 0x07, 0x07, 0x07, 0x06, 0x00, 0x20, 0x00, 0xf0, - 0xc2, 0xf8, 0x80, 0xbd, 0x05, 0x21, 0x01, 0x70, - 0x80, 0xbd, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7, - 0x0e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x7c, 0xd9, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x88, 0x01, 0x00, 0x10, 0xb5, 0x0d, 0x4b, - 0x04, 0x1c, 0x18, 0x1c, 0x10, 0x30, 0x00, 0x2c, - 0x08, 0xd0, 0xdb, 0x88, 0x5b, 0x04, 0x5b, 0x0c, - 0x0b, 0x80, 0x80, 0x7b, 0x48, 0x80, 0x04, 0x20, - 0x10, 0x80, 0x08, 0xe0, 0xda, 0x88, 0x01, 0x24, - 0xe4, 0x03, 0x22, 0x40, 0x0c, 0x88, 0x22, 0x43, - 0xda, 0x80, 0x49, 0x88, 0x81, 0x73, 0x01, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x3c, 0x00, 0xd0, 0x88, 0x01, 0x00, 0x70, 0xb5, - 0x10, 0x4e, 0x02, 0x1c, 0x00, 0x23, 0xf0, 0x56, - 0x00, 0x2a, 0x02, 0xd0, 0x08, 0x70, 0x01, 0x24, - 0x15, 0xe0, 0x00, 0x23, 0xcd, 0x56, 0x85, 0x42, - 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0x28, 0x1c, - 0x00, 0xf0, 0x5f, 0xf9, 0x04, 0x1c, 0x0a, 0xd0, - 0x07, 0x48, 0x35, 0x70, 0x00, 0x68, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x21, 0x0a, 0x20, 0xf9, 0xf7, - 0x28, 0xfd, 0x3c, 0x00, 0x0c, 0x89, 0x01, 0x00, - 0x00, 0xf0, 0x16, 0xfa, 0x20, 0x1c, 0x70, 0xbd, - 0xf4, 0x6b, 0x01, 0x00, 0x3c, 0xd9, 0x01, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x00, 0x2b, 0x80, 0xb5, - 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x04, 0x22, - 0x04, 0x49, 0xe7, 0xf7, 0xe3, 0xfd, 0x02, 0xe0, - 0x00, 0x68, 0x00, 0xf0, 0xcf, 0xf9, 0x01, 0x20, - 0x80, 0xbd, 0x00, 0x00, 0xf4, 0x74, 0x01, 0x00, - 0x10, 0xb5, 0xff, 0xf7, 0x3c, 0x00, 0x48, 0x89, - 0x01, 0x00, 0x97, 0xfb, 0xff, 0xf7, 0x89, 0xfc, - 0x04, 0x1c, 0xff, 0xf7, 0xb8, 0xfb, 0xff, 0xf7, - 0x84, 0xfc, 0x00, 0x2c, 0x02, 0xd1, 0x01, 0x28, - 0x00, 0xd1, 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x20, 0x4f, 0x04, 0x1c, - 0x78, 0x78, 0x0e, 0x1c, 0x02, 0x28, 0x2e, 0xd0, - 0x1e, 0x4a, 0xf9, 0x68, 0x91, 0x61, 0x14, 0x23, - 0x1d, 0x49, 0x58, 0x43, 0x40, 0x18, 0x3c, 0x00, - 0x84, 0x89, 0x01, 0x00, 0x41, 0x7b, 0xb8, 0x78, - 0xf8, 0xf7, 0x14, 0xfe, 0x00, 0xf0, 0x8a, 0xf9, - 0x00, 0x25, 0x04, 0xe0, 0x00, 0x21, 0xb8, 0x78, - 0xf8, 0xf7, 0x0c, 0xfe, 0x01, 0x35, 0x78, 0x78, - 0x14, 0x23, 0x14, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x7a, 0xa8, 0x42, 0xf2, 0xdc, 0x00, 0x25, - 0x08, 0xe0, 0x00, 0x21, 0xb8, 0x78, 0xf8, 0xf7, - 0xfd, 0xfd, 0x0f, 0x48, 0x00, 0x68, 0x20, 0x70, - 0x3c, 0x00, 0xc0, 0x89, 0x01, 0x00, 0x01, 0x34, - 0x01, 0x35, 0xb5, 0x42, 0xf4, 0xdb, 0x09, 0x4a, - 0xf8, 0x68, 0x50, 0x61, 0x78, 0x78, 0x02, 0x28, - 0x06, 0xd1, 0xb8, 0x68, 0x32, 0x1c, 0x21, 0x1c, - 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7, 0x25, 0xfd, - 0xb8, 0x68, 0x80, 0x19, 0xb8, 0x60, 0xf8, 0xbd, - 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x64, 0x8d, 0x01, 0x00, 0x30, 0x20, - 0x07, 0x00, 0x3c, 0x00, 0xfc, 0x89, 0x01, 0x00, - 0x70, 0xb5, 0x06, 0x1c, 0x0c, 0x4d, 0x00, 0x24, - 0x2c, 0x70, 0xff, 0xf7, 0x39, 0xfc, 0x0a, 0x48, - 0x18, 0x21, 0x1c, 0x30, 0xac, 0x60, 0xe7, 0xf7, - 0x43, 0xfd, 0x08, 0x48, 0x44, 0x61, 0xf9, 0xf7, - 0x63, 0xf9, 0x00, 0x2e, 0x06, 0xd1, 0x06, 0x48, - 0x29, 0x69, 0xf6, 0xf7, 0xa7, 0xfc, 0x00, 0x20, - 0xec, 0xf7, 0xb0, 0xfe, 0x70, 0xbd, 0x00, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x38, 0x8a, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x30, 0xb5, 0x12, 0x4c, 0x85, 0xb0, - 0x20, 0x68, 0x00, 0x28, 0x1c, 0xd0, 0x0f, 0x48, - 0x14, 0x38, 0x80, 0x68, 0x00, 0x28, 0x01, 0xd1, - 0xff, 0xf7, 0xc1, 0xfb, 0x20, 0x68, 0x00, 0x23, - 0x00, 0x68, 0x01, 0xaa, 0x04, 0x30, 0x01, 0x21, - 0xec, 0xf7, 0xd1, 0xfd, 0x08, 0x49, 0x08, 0x4a, - 0x08, 0x31, 0x0c, 0x31, 0x00, 0x92, 0x3c, 0x00, - 0x74, 0x8a, 0x01, 0x00, 0x03, 0xc9, 0x00, 0xab, - 0x45, 0x18, 0x99, 0x7b, 0x01, 0x9a, 0x20, 0x68, - 0x2b, 0x1c, 0xf2, 0xf7, 0x2b, 0xfe, 0x05, 0xb0, - 0x30, 0xbd, 0x00, 0x00, 0x90, 0xd9, 0x01, 0x00, - 0x29, 0x81, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x14, 0x23, 0x60, 0x70, 0x58, 0x43, 0x12, 0x4b, - 0xc1, 0x18, 0x8a, 0x88, 0xe2, 0x80, 0x18, 0x58, - 0xe0, 0x60, 0x08, 0x7a, 0xa0, 0x70, 0xff, 0x28, - 0x3c, 0x00, 0xb0, 0x8a, 0x01, 0x00, 0x12, 0xd0, - 0x00, 0x22, 0x08, 0x21, 0x0d, 0x4b, 0xf8, 0xf7, - 0x22, 0xfd, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68, - 0xef, 0xf7, 0xbd, 0xfe, 0x0a, 0x49, 0xe0, 0x68, - 0x48, 0x61, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60, - 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x60, 0x78, - 0x02, 0x28, 0x01, 0xd1, 0xff, 0xf7, 0xdf, 0xfc, - 0x10, 0xbd, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x8a, 0x01, 0x00, - 0xb8, 0x0b, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, - 0xfe, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x06, 0x21, - 0x15, 0x4b, 0x41, 0x43, 0x58, 0x5c, 0x82, 0x06, - 0x14, 0x48, 0x92, 0x0e, 0x42, 0x71, 0xc9, 0x18, - 0x4a, 0x78, 0xd2, 0x06, 0xd2, 0x0e, 0x02, 0x71, - 0x42, 0x78, 0x0c, 0x23, 0x1a, 0x43, 0x42, 0x70, - 0x42, 0x78, 0x8b, 0x78, 0x92, 0x08, 0x92, 0x00, - 0x9b, 0x07, 0x9b, 0x0f, 0x3c, 0x00, 0x28, 0x8b, - 0x01, 0x00, 0x1a, 0x43, 0x42, 0x70, 0x02, 0x78, - 0xc0, 0x23, 0x9a, 0x43, 0x40, 0x32, 0x02, 0x70, - 0x02, 0x78, 0x38, 0x23, 0x1a, 0x43, 0x02, 0x70, - 0x02, 0x78, 0xc9, 0x78, 0x04, 0x23, 0x9a, 0x43, - 0x89, 0x00, 0x19, 0x40, 0x11, 0x43, 0x01, 0x70, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0xd8, 0x8d, - 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x8f, 0xb5, - 0x00, 0x20, 0x02, 0x90, 0x03, 0x90, 0x3c, 0x00, - 0x64, 0x8b, 0x01, 0x00, 0x07, 0x48, 0x02, 0xaa, - 0x03, 0xa9, 0x00, 0x91, 0x01, 0x92, 0x43, 0x89, - 0x02, 0x89, 0x03, 0xc8, 0xff, 0xf7, 0xd4, 0xfb, - 0x03, 0x98, 0x02, 0x99, 0xff, 0xf7, 0x04, 0xfc, - 0x8f, 0xbd, 0x00, 0x00, 0x04, 0x8e, 0x01, 0x00, - 0x08, 0x49, 0x4a, 0x78, 0x00, 0x2a, 0x03, 0xd1, - 0x88, 0x80, 0x00, 0x20, 0x88, 0x60, 0x70, 0x47, - 0x14, 0x23, 0x5a, 0x43, 0x04, 0x4b, 0xd2, 0x18, - 0x3c, 0x00, 0xa0, 0x8b, 0x01, 0x00, 0xd2, 0x88, - 0x42, 0x43, 0xc8, 0x88, 0x42, 0x43, 0x8a, 0x60, - 0x70, 0x47, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d, - 0x01, 0x00, 0xf8, 0xb5, 0x25, 0x4e, 0x04, 0x1c, - 0x30, 0x7a, 0x40, 0x08, 0x40, 0x00, 0x30, 0x72, - 0xb0, 0x7a, 0x00, 0x20, 0xb0, 0x72, 0x01, 0x27, - 0x01, 0x2c, 0x20, 0x4d, 0x01, 0xd0, 0xfc, 0x42, - 0x13, 0xd1, 0x30, 0x7b, 0x38, 0x43, 0x30, 0x73, - 0x00, 0x22, 0x3c, 0x00, 0xdc, 0x8b, 0x01, 0x00, - 0x21, 0x1c, 0x00, 0x20, 0xff, 0xf7, 0x6e, 0xfb, - 0x63, 0x1c, 0x01, 0xd1, 0x3f, 0x21, 0xe9, 0x73, - 0xb1, 0x7a, 0xa0, 0x22, 0x11, 0x43, 0xb1, 0x72, - 0x31, 0x7a, 0x39, 0x43, 0x31, 0x72, 0xf8, 0xbd, - 0x30, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x30, 0x73, - 0x01, 0x22, 0x21, 0x1c, 0x01, 0x20, 0xff, 0xf7, - 0x59, 0xfb, 0x01, 0x20, 0x00, 0x21, 0xe9, 0x73, - 0xb1, 0x7a, 0x02, 0x22, 0x3c, 0x00, 0x18, 0x8c, - 0x01, 0x00, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a, - 0x04, 0x22, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a, - 0x30, 0x22, 0x11, 0x43, 0xb1, 0x72, 0x31, 0x7a, - 0x39, 0x43, 0x31, 0x72, 0x08, 0x49, 0x4a, 0x68, - 0x80, 0x23, 0x9a, 0x43, 0x4a, 0x60, 0x0a, 0x68, - 0x1a, 0x43, 0x0a, 0x60, 0x31, 0x7b, 0x39, 0x43, - 0x31, 0x73, 0xd7, 0xe7, 0x00, 0x00, 0x88, 0x00, - 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0x3c, 0x00, - 0x54, 0x8c, 0x01, 0x00, 0x6c, 0x00, 0x07, 0x00, - 0xb0, 0xb5, 0x0e, 0x4d, 0x0e, 0x48, 0x29, 0x69, - 0xf6, 0xf7, 0x9e, 0xfb, 0x0d, 0x48, 0xec, 0xf7, - 0x93, 0xfd, 0x0d, 0x48, 0x09, 0x4c, 0x00, 0x88, - 0x1c, 0x34, 0xa0, 0x82, 0xf1, 0xf7, 0x5a, 0xff, - 0x20, 0x61, 0xfa, 0xf7, 0x97, 0xf8, 0x02, 0x1c, - 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xec, 0xf7, - 0x8b, 0xff, 0x32, 0x20, 0xe8, 0x60, 0xff, 0xf7, - 0x3c, 0x00, 0x90, 0x8c, 0x01, 0x00, 0xa5, 0xfa, - 0xb0, 0xbd, 0x7c, 0xd9, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0xdd, 0x84, 0x01, 0x00, 0x20, 0xf7, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x68, 0x78, - 0x00, 0x28, 0x0e, 0xd0, 0x14, 0x23, 0x08, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x44, 0x7a, 0x06, 0xe0, - 0xa8, 0x68, 0xe0, 0x40, 0x01, 0x06, 0x09, 0x0e, - 0xa8, 0x78, 0xf8, 0xf7, 0x76, 0xfc, 0x08, 0x3c, - 0xf6, 0xd5, 0x3c, 0x00, 0xcc, 0x8c, 0x01, 0x00, - 0xb0, 0xbd, 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, - 0x64, 0x8d, 0x01, 0x00, 0x01, 0x1c, 0x14, 0x48, - 0xb0, 0xb5, 0x01, 0x60, 0x13, 0x48, 0x02, 0x7f, - 0x02, 0x23, 0x9a, 0x43, 0x02, 0x77, 0x02, 0x7f, - 0x01, 0x24, 0x22, 0x43, 0x02, 0x77, 0x10, 0x4d, - 0x00, 0x29, 0x0c, 0xd0, 0x01, 0x22, 0x00, 0x21, - 0x03, 0x20, 0xef, 0xf7, 0x9f, 0xfd, 0x0d, 0x49, - 0x48, 0x7c, 0xa0, 0x43, 0x3c, 0x00, 0x08, 0x8d, - 0x01, 0x00, 0x48, 0x74, 0x68, 0x7a, 0x20, 0x43, - 0x68, 0x72, 0xb0, 0xbd, 0x01, 0x7f, 0x21, 0x43, - 0x01, 0x77, 0x68, 0x7a, 0x40, 0x08, 0x40, 0x00, - 0x68, 0x72, 0x01, 0x22, 0x00, 0x21, 0x03, 0x20, - 0xef, 0xf7, 0xb1, 0xfd, 0xb0, 0xbd, 0xf4, 0x74, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x88, 0x00, - 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x21, 0x1c, 0x00, 0x20, 0x3c, 0x00, - 0x44, 0x8d, 0x01, 0x00, 0xf9, 0xf7, 0x56, 0xfb, - 0x05, 0x48, 0x00, 0x23, 0xc0, 0x56, 0x01, 0x28, - 0x03, 0xdd, 0x21, 0x1c, 0x00, 0x20, 0xf9, 0xf7, - 0x19, 0xfb, 0x10, 0xbd, 0x65, 0x1a, 0x00, 0x00, - 0xf4, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x08, 0x01, 0x01, 0x00, 0x02, 0x18, 0x04, 0xff, - 0x82, 0xe8, 0xd7, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, - 0x3c, 0x00, 0x80, 0x8d, 0x01, 0x00, 0x00, 0x18, - 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x01, 0x00, 0xff, 0x10, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x20, 0x00, 0x01, 0x00, 0x02, 0x10, - 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0c, - 0x0d, 0x0e, 0x3c, 0x00, 0xbc, 0x8d, 0x01, 0x00, - 0xff, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1b, - 0x1c, 0x1d, 0xff, 0x1a, 0x11, 0x13, 0x12, 0x0f, - 0x10, 0xff, 0x02, 0x00, 0xff, 0x01, 0x03, 0x09, - 0x0a, 0x0b, 0x00, 0x00, 0x30, 0x0d, 0x02, 0x00, - 0x00, 0x00, 0x28, 0x0e, 0x03, 0x00, 0x00, 0x00, - 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0d, - 0x02, 0x01, 0x00, 0x00, 0x1e, 0x0c, 0x00, 0x01, - 0x00, 0x00, 0x23, 0x0d, 0x3c, 0x00, 0xf8, 0x8d, - 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x1d, 0x0d, - 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, - 0xfb, 0x6d, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x8e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x8e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x8e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x8e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x8f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x8f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x8f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x8f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x90, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x90, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x90, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x91, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x91, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x91, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x92, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x92, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x92, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x92, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x93, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x93, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x93, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x94, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x94, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x94, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x95, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x95, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x95, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x95, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x96, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x96, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x96, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x97, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x97, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x97, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x98, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x98, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x98, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x98, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x99, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x99, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x99, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x9a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x9a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x9a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x9a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x9b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x9b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x9b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x9c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x9c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x9c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x9c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x9c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x9d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x9d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x9d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x9d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x9e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x9e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x9e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x9e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x9f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x9f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x9f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x9f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xa0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xa0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xa0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xa1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xa1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xa1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xa2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xa2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xa2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xa2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xa3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xa3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xa3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xa3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xa4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xa4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xa4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xa5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xa5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xa5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xa5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xa6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xa6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xa6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xa6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xa7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xa7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xa7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xa7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xa7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xa8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xa8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xa8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xa9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xa9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xa9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xa9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xaa, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xaa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xaa, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xaa, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xab, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xab, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xab, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xab, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xab, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xac, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xac, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xac, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xac, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xad, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xad, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xad, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xad, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xae, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xae, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xae, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xae, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xaf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xaf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xaf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xaf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xaf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xb0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xb0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xb0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xb1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xb1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xb1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xb2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xb2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xb2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xb3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xb3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xb3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xb4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xb4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xb4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xb4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xb5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xb5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xb5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xb5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xb6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xb6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xb6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xb6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xb6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xb7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xb7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xb7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xb7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xb8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xb8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xb8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xb9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xb9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xb9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xba, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xba, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xba, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xba, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xba, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xbb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xbb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xbb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xbb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xbc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xbc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xbc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xbc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xbd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xbd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xbd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xbd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xbe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xbe, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xbe, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xbf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xbf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xbf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xc0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xc0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xc0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xc1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xc1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xc1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xc2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xc2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xc2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xc3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xc3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xc3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xc4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xc4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xc4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xc5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xc5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xc5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xc5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xc6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xc6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xc6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xc7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xc7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xc7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xc8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xc8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xc8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xc9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xc9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xc9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xc9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xca, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xca, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xca, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xca, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xcb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xcb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xcb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xcc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xcc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xcc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xcc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xcd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xcd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xcd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xce, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xce, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xce, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xce, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xcf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xcf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xcf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xcf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xd0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xd0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xd0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xd1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xd1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xd1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xd2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xd2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xd2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xd2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xd3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xd3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xd3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xd3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xd4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xd4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xd4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xd4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xd5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xd5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xd5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xd5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xd6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xd6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xd6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xd6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xd7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xd7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xd7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xd7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xd8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xd8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xd8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xd8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xd9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xd9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xd9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xd9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xda, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xda, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xda, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xda, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xdb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xdb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xdb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xdb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xdc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xdc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xdc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xdd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xdd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xdd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xdd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xde, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xde, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xde, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xde, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xdf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xdf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xdf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xdf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xe0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xe0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xe0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xe1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xe1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xe1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xe1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xe2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xe2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xe2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xe2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xe3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xe3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xe3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xe3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xe4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xe4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xe4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xe5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xe5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xe5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xe5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xe6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xe6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xe6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xe7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xe7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xe7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xe7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xe8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xe8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xe8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xe9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xe9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xe9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xe9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xea, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xea, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xea, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xea, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xeb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xeb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xeb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xec, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xec, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xec, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xed, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xed, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xed, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xed, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xee, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xee, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xee, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xee, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xef, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xef, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xef, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xef, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xf0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xf0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xf0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xf1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xf1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xf1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xf1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xf2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xf2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xf2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xf2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xf3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xf3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xf3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xf4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xf4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xf4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xf5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xf5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xf5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xf6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xf6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xf6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xf6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xf7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xf7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xf7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xf8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xf8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xf8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xf9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xf9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xf9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xfa, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xfa, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xfa, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xfb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xfb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xfb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xfb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xfc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xfc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xfc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xfd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xfd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xfd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xfd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xfe, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xfe, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xfe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x68, 0xff, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x10, 0x04, 0x00, 0x70, 0xb5, 0x2b, 0x48, - 0x06, 0x21, 0x81, 0x75, 0xc1, 0x75, 0x01, 0x7e, - 0x49, 0x08, 0x49, 0x00, 0x01, 0x76, 0x01, 0x7e, - 0x02, 0x22, 0x91, 0x43, 0x01, 0x76, 0x26, 0x49, - 0x0b, 0x78, 0x5b, 0x08, 0x5b, 0x00, 0x0b, 0x70, - 0x04, 0x23, 0x8b, 0x70, 0x0c, 0x23, 0x43, 0x76, - 0x20, 0x23, 0x03, 0x75, 0x1a, 0x24, 0x44, 0x75, - 0x24, 0x24, 0x84, 0x76, 0x10, 0x24, 0xc4, 0x76, - 0x3c, 0x00, 0x3c, 0x10, 0x04, 0x00, 0x2a, 0x25, - 0x4d, 0x70, 0x05, 0x7a, 0x30, 0x26, 0xb5, 0x43, - 0x20, 0x35, 0x05, 0x72, 0x85, 0x7a, 0x6d, 0x08, - 0x6d, 0x00, 0x85, 0x72, 0x85, 0x7a, 0x95, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0x04, 0x26, 0x35, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0x08, 0x26, 0x35, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0xa5, 0x43, 0x85, 0x72, - 0x05, 0x7b, 0x2c, 0x43, 0x04, 0x73, 0x04, 0x7b, - 0x1c, 0x43, 0x3c, 0x00, 0x78, 0x10, 0x04, 0x00, - 0x04, 0x73, 0x04, 0x7b, 0x40, 0x25, 0x2c, 0x43, - 0x04, 0x73, 0x84, 0x7a, 0x23, 0x43, 0x83, 0x72, - 0x83, 0x7a, 0xab, 0x43, 0x83, 0x72, 0x03, 0x7b, - 0x80, 0x24, 0x23, 0x43, 0x03, 0x73, 0x08, 0x78, - 0x90, 0x43, 0x08, 0x70, 0x08, 0x78, 0x01, 0x22, - 0x10, 0x43, 0x08, 0x70, 0x08, 0x78, 0x04, 0x22, - 0x90, 0x43, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x00, - 0x0c, 0x80, 0x07, 0x00, 0x3c, 0x00, 0xb4, 0x10, - 0x04, 0x00, 0x80, 0x80, 0x07, 0x00, 0x01, 0x49, - 0x04, 0x20, 0x48, 0x73, 0x70, 0x47, 0x40, 0x80, - 0x07, 0x00, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x08, 0x80, 0x00, 0xf0, 0x0a, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x67, 0xfb, - 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x49, 0x18, 0x20, - 0xc1, 0xf7, 0x3b, 0xfa, 0x09, 0x49, 0x3c, 0x00, - 0xf0, 0x10, 0x04, 0x00, 0x02, 0x20, 0xc1, 0xf7, - 0x37, 0xfa, 0x08, 0x49, 0x1f, 0x20, 0xc1, 0xf7, - 0x33, 0xfa, 0x07, 0x49, 0x1c, 0x20, 0xc1, 0xf7, - 0x2f, 0xfa, 0x06, 0x49, 0x03, 0x20, 0xc1, 0xf7, - 0x2b, 0xfa, 0x80, 0xbd, 0x99, 0x2a, 0x00, 0x00, - 0x41, 0x25, 0x00, 0x00, 0x55, 0x25, 0x00, 0x00, - 0x5d, 0x25, 0x00, 0x00, 0x39, 0x25, 0x00, 0x00, - 0x80, 0xb5, 0xbf, 0xf7, 0x91, 0xfd, 0x80, 0xbd, - 0x3c, 0x00, 0x2c, 0x11, 0x04, 0x00, 0x80, 0xb5, - 0x05, 0x4a, 0x05, 0x49, 0x0a, 0x20, 0xbf, 0xf7, - 0x4e, 0xff, 0x01, 0x20, 0x04, 0x49, 0x80, 0x02, - 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd, 0xb4, 0x74, - 0x01, 0x00, 0xb1, 0x64, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x91, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0x05, 0x4a, 0x05, 0x49, - 0x1b, 0x20, 0xbf, 0xf7, 0x38, 0xff, 0x01, 0x20, - 0x04, 0x49, 0x3c, 0x00, 0x68, 0x11, 0x04, 0x00, - 0xc0, 0x06, 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd, - 0xb8, 0x74, 0x01, 0x00, 0x2d, 0x6e, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x04, 0x48, - 0x00, 0xf0, 0x80, 0xfe, 0x03, 0x49, 0x00, 0x20, - 0x48, 0x60, 0x88, 0x60, 0x80, 0xbd, 0x00, 0x00, - 0x41, 0x4b, 0x00, 0x00, 0xbc, 0x74, 0x01, 0x00, - 0x80, 0xb5, 0xc5, 0xf7, 0xd5, 0xfe, 0xce, 0xf7, - 0xd9, 0xf8, 0x03, 0x49, 0x3c, 0x00, 0xa4, 0x11, - 0x04, 0x00, 0x08, 0x60, 0x03, 0x49, 0x0a, 0x20, - 0xd1, 0xf7, 0xef, 0xf8, 0x80, 0xbd, 0xbc, 0x74, - 0x01, 0x00, 0x49, 0x6e, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x22, 0x20, 0x21, 0x06, 0x20, 0xc8, 0xf7, - 0x56, 0xfc, 0xbf, 0xf7, 0x70, 0xfe, 0x03, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x20, 0x21, 0x02, 0x48, - 0xbf, 0xf7, 0x63, 0xf9, 0x80, 0xbd, 0xcc, 0x5c, - 0x01, 0x00, 0x64, 0x6d, 0x01, 0x00, 0x3c, 0x00, - 0xe0, 0x11, 0x04, 0x00, 0x08, 0x48, 0x80, 0xb5, - 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48, - 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21, 0xbf, 0xf7, - 0xf3, 0xf8, 0x04, 0x4a, 0x04, 0x49, 0x03, 0x20, - 0xbf, 0xf7, 0xac, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x50, 0x6d, 0x01, 0x00, 0x89, 0x98, 0x00, 0x00, - 0x91, 0x98, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x03, 0xf8, 0x00, 0xf0, 0x19, 0xf8, 0x80, 0xbd, - 0x3c, 0x00, 0x1c, 0x12, 0x04, 0x00, 0x10, 0xb5, - 0x09, 0x4c, 0x60, 0x21, 0x20, 0x1c, 0xbf, 0xf7, - 0x3a, 0xf9, 0x00, 0x20, 0xc0, 0x43, 0xa0, 0x60, - 0x20, 0x60, 0xff, 0x20, 0x02, 0x30, 0xe0, 0x84, - 0x20, 0x22, 0x20, 0x1c, 0x40, 0x30, 0x02, 0x49, - 0xbf, 0xf7, 0x5b, 0xf9, 0x10, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x20, - 0x0a, 0x49, 0xc0, 0x43, 0x88, 0x60, 0x09, 0x4b, - 0x0a, 0x49, 0x3c, 0x00, 0x58, 0x12, 0x04, 0x00, - 0x00, 0x20, 0x82, 0x00, 0x01, 0x30, 0x00, 0x06, - 0x00, 0x0e, 0x20, 0x28, 0x99, 0x50, 0xf8, 0xd3, - 0x06, 0x49, 0x04, 0x4a, 0x08, 0x1c, 0x10, 0x30, - 0x08, 0x3a, 0x03, 0xc2, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00, - 0x75, 0x75, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, - 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x0c, 0x38, 0x3c, 0x00, 0x94, 0x12, - 0x04, 0x00, 0x01, 0x21, 0x41, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x03, 0x48, 0x00, 0x21, 0x00, 0x22, - 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0, 0x70, 0x47, - 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x04, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x48, 0x61, 0x02, 0x48, - 0x40, 0x21, 0x1c, 0x30, 0xbf, 0xf7, 0xe9, 0xf8, - 0x80, 0xbd, 0xfc, 0x5a, 0x01, 0x00, 0x3c, 0x00, - 0xd0, 0x12, 0x04, 0x00, 0x80, 0xb5, 0xce, 0xf7, - 0x3f, 0xf8, 0x03, 0x49, 0x88, 0x61, 0x03, 0x49, - 0x03, 0x20, 0xd1, 0xf7, 0x55, 0xf8, 0x80, 0xbd, - 0xfc, 0x5a, 0x01, 0x00, 0x0d, 0x17, 0x01, 0x00, - 0x80, 0xb5, 0xc0, 0xf7, 0xa5, 0xf9, 0x80, 0xbd, - 0xfe, 0xb5, 0x6c, 0x49, 0x00, 0x20, 0x00, 0x90, - 0xc8, 0x78, 0x6b, 0x4c, 0x6b, 0x4f, 0x43, 0x07, - 0xc0, 0x06, 0xc0, 0x17, 0xdb, 0x0e, 0xe3, 0x58, - 0x3c, 0x00, 0x0c, 0x13, 0x04, 0x00, 0x01, 0x30, - 0x38, 0x62, 0x3b, 0x61, 0x08, 0x1c, 0x80, 0x78, - 0x66, 0x4e, 0x03, 0x22, 0x41, 0x07, 0xa0, 0x36, - 0x02, 0x96, 0x49, 0x0f, 0x31, 0x72, 0x89, 0x00, - 0x61, 0x58, 0x3c, 0x1c, 0x61, 0x61, 0x01, 0x91, - 0xc0, 0x06, 0xc0, 0x0f, 0x78, 0x62, 0x20, 0x1c, - 0x00, 0x27, 0x87, 0x61, 0x00, 0x20, 0x21, 0x1c, - 0xc8, 0x61, 0x59, 0x48, 0x59, 0x49, 0x00, 0x78, - 0x09, 0x79, 0x3c, 0x00, 0x48, 0x13, 0x04, 0x00, - 0x5a, 0x4c, 0x4e, 0x07, 0x76, 0x0f, 0x71, 0x1c, - 0x8c, 0x46, 0xb1, 0x00, 0x8e, 0x46, 0x56, 0x49, - 0x80, 0x31, 0x00, 0x28, 0x24, 0xd0, 0x52, 0x4f, - 0x01, 0x28, 0x7f, 0x78, 0x1a, 0xd0, 0x02, 0x28, - 0x71, 0xd1, 0x4f, 0x48, 0x00, 0x2f, 0x0c, 0xd0, - 0x01, 0x2f, 0x6c, 0xd1, 0x40, 0x79, 0x4d, 0x4d, - 0x40, 0x07, 0x40, 0x0f, 0x82, 0x00, 0xaa, 0x58, - 0x4b, 0x4d, 0x01, 0x30, 0x3c, 0x00, 0x84, 0x13, - 0x04, 0x00, 0xea, 0x61, 0xa0, 0x73, 0x04, 0x22, - 0x4b, 0x48, 0x48, 0x4d, 0xc8, 0x61, 0x4a, 0x48, - 0x00, 0x2f, 0x00, 0xd0, 0x4a, 0x48, 0x2f, 0x1c, - 0x11, 0xe0, 0x42, 0x48, 0x00, 0x2f, 0x55, 0xd1, - 0x07, 0x70, 0x02, 0x27, 0x47, 0x70, 0x3f, 0x48, - 0x40, 0x78, 0x00, 0x28, 0x10, 0xd0, 0x01, 0x28, - 0x01, 0xd0, 0x02, 0x28, 0x4a, 0xd1, 0x3f, 0x48, - 0x3d, 0x4f, 0xc8, 0x61, 0x3f, 0x48, 0x3c, 0x00, - 0xc0, 0x13, 0x04, 0x00, 0x88, 0x61, 0x3a, 0x49, - 0x70, 0x46, 0x08, 0x58, 0x35, 0x1c, 0xb8, 0x61, - 0x60, 0x46, 0x60, 0x73, 0x04, 0xe0, 0x3c, 0x48, - 0x02, 0x22, 0x88, 0x61, 0x3b, 0x48, 0xc8, 0x61, - 0x00, 0x20, 0x32, 0x49, 0x06, 0xe0, 0x0e, 0x18, - 0xb6, 0x78, 0x76, 0x07, 0x76, 0x0f, 0x04, 0x2e, - 0x2f, 0xd8, 0x01, 0x30, 0x90, 0x42, 0xf6, 0xd3, - 0xc8, 0x79, 0x2e, 0x4f, 0xc0, 0x07, 0xc0, 0x0f, - 0x3c, 0x00, 0xfc, 0x13, 0x04, 0x00, 0xf8, 0x60, - 0x33, 0x48, 0x41, 0x68, 0x19, 0x43, 0x41, 0x60, - 0x81, 0x68, 0x19, 0x43, 0x81, 0x60, 0x01, 0x9a, - 0xb9, 0x69, 0x8c, 0x46, 0x11, 0x43, 0xfa, 0x69, - 0x86, 0x68, 0x11, 0x43, 0x8e, 0x43, 0x86, 0x60, - 0x46, 0x68, 0x31, 0x43, 0x41, 0x60, 0x01, 0x99, - 0x0b, 0x43, 0x18, 0x1c, 0x61, 0x46, 0x08, 0x43, - 0x10, 0x43, 0x01, 0x1c, 0x00, 0x22, 0x02, 0x20, - 0xc7, 0xf7, 0x3c, 0x00, 0x38, 0x14, 0x04, 0x00, - 0x03, 0xfa, 0x1e, 0x4e, 0x40, 0x3e, 0x70, 0x78, - 0xc0, 0x08, 0xc0, 0x00, 0x28, 0x43, 0x70, 0x70, - 0x70, 0x1c, 0x01, 0x78, 0x00, 0xe0, 0x29, 0xe0, - 0x08, 0x25, 0xa9, 0x43, 0x01, 0x70, 0x01, 0x20, - 0xc0, 0x43, 0xb0, 0x80, 0x00, 0x21, 0x01, 0x20, - 0xcf, 0xf7, 0x6c, 0xfc, 0x30, 0x1c, 0x80, 0x30, - 0x81, 0x78, 0x09, 0x09, 0x09, 0x01, 0x81, 0x70, - 0x0f, 0x21, 0x01, 0x70, 0x3c, 0x00, 0x74, 0x14, - 0x04, 0x00, 0x16, 0x4a, 0x69, 0x04, 0x11, 0x60, - 0x51, 0x60, 0x02, 0x9e, 0x10, 0x21, 0x32, 0x7a, - 0x7b, 0x6a, 0x00, 0x2b, 0x00, 0xd1, 0x00, 0x21, - 0x11, 0x43, 0x21, 0x73, 0x81, 0x78, 0x29, 0x43, - 0x81, 0x70, 0xe0, 0x78, 0x01, 0x21, 0x08, 0x43, - 0xe0, 0x70, 0xd2, 0xf7, 0xf2, 0xf9, 0x01, 0x20, - 0x00, 0x90, 0x00, 0x98, 0xfe, 0xbd, 0xc0, 0x57, - 0x01, 0x00, 0x6c, 0x43, 0x01, 0x00, 0x3c, 0x00, - 0xb0, 0x14, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x40, 0x90, 0x07, 0x00, 0xc9, 0x1d, 0x00, 0x00, - 0x81, 0x1d, 0x00, 0x00, 0xa5, 0x1d, 0x00, 0x00, - 0x99, 0x1d, 0x00, 0x00, 0xf1, 0x1d, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x03, 0x49, 0x00, 0x20, 0x88, 0x62, 0x08, 0x70, - 0x48, 0x70, 0x08, 0x71, 0x08, 0x62, 0x70, 0x47, - 0xac, 0x7e, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x3c, 0x00, 0xec, 0x14, 0x04, 0x00, 0x00, 0x20, - 0xcd, 0xf7, 0x69, 0xff, 0x80, 0xbd, 0xb0, 0xb5, - 0x0f, 0x48, 0xc0, 0xf7, 0x18, 0xfc, 0x0e, 0x4d, - 0x03, 0x20, 0x28, 0x70, 0x0d, 0x49, 0x0d, 0x48, - 0x0c, 0x39, 0x48, 0x60, 0x0d, 0x48, 0x0a, 0x4c, - 0x88, 0x60, 0x40, 0x21, 0x18, 0x34, 0x20, 0x1c, - 0xbe, 0xf7, 0xc1, 0xff, 0xff, 0x21, 0x68, 0x68, - 0x09, 0x06, 0x08, 0x43, 0x20, 0x60, 0xff, 0x21, - 0x06, 0x22, 0x3c, 0x00, 0x28, 0x15, 0x04, 0x00, - 0x20, 0x1d, 0xbf, 0xf7, 0x79, 0xf8, 0x01, 0x20, - 0xe0, 0x60, 0xb0, 0xbd, 0xc0, 0xa8, 0x13, 0x0a, - 0x20, 0x6e, 0x01, 0x00, 0xc0, 0xa8, 0x13, 0x01, - 0xff, 0xff, 0xff, 0x00, 0x80, 0xb5, 0x02, 0x49, - 0x01, 0x20, 0xc8, 0xf7, 0x45, 0xff, 0x80, 0xbd, - 0x9d, 0x1c, 0x00, 0x00, 0x98, 0xb5, 0x0c, 0x4c, - 0x00, 0x20, 0x60, 0x60, 0xe0, 0x60, 0x0b, 0x4b, - 0x0b, 0x49, 0x82, 0x00, 0x3c, 0x00, 0x64, 0x15, - 0x04, 0x00, 0x01, 0x30, 0x20, 0x28, 0x99, 0x50, - 0xfa, 0xdb, 0x6a, 0x46, 0x09, 0x49, 0x05, 0x20, - 0xbf, 0xf7, 0x2f, 0xfd, 0x00, 0x20, 0xc0, 0x43, - 0x20, 0x60, 0x06, 0x49, 0x20, 0x20, 0x08, 0x60, - 0x48, 0x60, 0x98, 0xbd, 0x00, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xa9, 0x75, - 0x00, 0x00, 0xb5, 0x9f, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x05, 0x49, 0x00, 0x20, 0x3c, 0x00, - 0xa0, 0x15, 0x04, 0x00, 0x08, 0x60, 0x05, 0x48, - 0x81, 0x78, 0x28, 0x22, 0x91, 0x43, 0x81, 0x70, - 0x81, 0x78, 0x11, 0x43, 0x81, 0x70, 0x70, 0x47, - 0x78, 0x6e, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x41, 0x48, 0x10, 0xb5, - 0x00, 0x68, 0x02, 0x21, 0x88, 0x43, 0x3f, 0x49, - 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x02, 0x21, - 0x08, 0x43, 0x3c, 0x49, 0x08, 0x60, 0x3c, 0x48, - 0x3c, 0x00, 0xdc, 0x15, 0x04, 0x00, 0x40, 0x68, - 0x80, 0x21, 0x88, 0x43, 0x3a, 0x49, 0x48, 0x60, - 0x08, 0x1c, 0x00, 0x68, 0x80, 0x21, 0x08, 0x43, - 0x37, 0x49, 0x08, 0x60, 0x37, 0x48, 0x01, 0x7a, - 0x01, 0x24, 0x21, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x02, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x04, 0x22, 0x91, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x08, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7b, - 0x21, 0x43, 0x3c, 0x00, 0x18, 0x16, 0x04, 0x00, - 0x01, 0x73, 0x01, 0x7b, 0x02, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x01, 0x7b, 0x04, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x2e, 0x21, 0x41, 0x73, 0x81, 0x7b, - 0x38, 0x22, 0x91, 0x43, 0x28, 0x31, 0x81, 0x73, - 0x20, 0x21, 0x41, 0x74, 0x81, 0x7b, 0xc9, 0x08, - 0xc9, 0x00, 0x03, 0x31, 0x81, 0x73, 0x22, 0x21, - 0xc1, 0x73, 0x20, 0x49, 0x3c, 0x00, 0x54, 0x16, - 0x04, 0x00, 0x09, 0x7a, 0x41, 0x72, 0x1e, 0x49, - 0x49, 0x7a, 0x01, 0x74, 0x3c, 0x22, 0x02, 0x77, - 0x01, 0x1c, 0x10, 0x31, 0x4a, 0x73, 0x50, 0x23, - 0x8b, 0x73, 0x5a, 0x23, 0xcb, 0x73, 0x0d, 0x23, - 0x01, 0x1c, 0x20, 0x31, 0x0b, 0x70, 0x17, 0x4b, - 0x43, 0x84, 0x0e, 0x23, 0x4b, 0x70, 0x00, 0x21, - 0x41, 0x82, 0x30, 0x21, 0x01, 0x70, 0x05, 0x21, - 0x41, 0x70, 0x04, 0x21, 0x41, 0x71, 0x3c, 0x00, - 0x90, 0x16, 0x04, 0x00, 0x84, 0x71, 0xc4, 0x71, - 0x0c, 0x21, 0x01, 0x71, 0xf8, 0x21, 0x41, 0x80, - 0x0f, 0x49, 0xca, 0x72, 0x8a, 0x72, 0x03, 0x22, - 0x0a, 0x72, 0x09, 0x22, 0x4a, 0x72, 0x08, 0x22, - 0x0a, 0x73, 0x02, 0x7a, 0x40, 0x23, 0x1a, 0x43, - 0x02, 0x72, 0x4c, 0x73, 0xff, 0xf7, 0xa2, 0xfc, - 0x08, 0x48, 0x01, 0x78, 0x21, 0x43, 0x01, 0x70, - 0x10, 0xbd, 0x00, 0x00, 0xf0, 0x00, 0x07, 0x00, - 0x3c, 0x00, 0xcc, 0x16, 0x04, 0x00, 0xf4, 0x00, - 0x07, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x76, 0x46, - 0x01, 0x00, 0x24, 0x09, 0x00, 0x00, 0x80, 0x80, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0x80, 0xb5, - 0x18, 0x21, 0x09, 0x48, 0xbe, 0xf7, 0xd7, 0xfe, - 0x08, 0x48, 0x00, 0x21, 0x3c, 0x38, 0x41, 0x60, - 0x81, 0x60, 0xc1, 0x60, 0x01, 0x61, 0x41, 0x61, - 0x81, 0x61, 0x01, 0x21, 0x01, 0x62, 0xff, 0xf7, - 0x5c, 0xff, 0x3c, 0x00, 0x08, 0x17, 0x04, 0x00, - 0xc0, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0x24, 0x7e, 0x01, 0x00, 0xb0, 0xb5, 0x21, 0x48, - 0x00, 0x68, 0x40, 0x08, 0x1f, 0x49, 0x40, 0x00, - 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x01, 0x21, - 0x08, 0x43, 0x1c, 0x49, 0x08, 0x60, 0x1c, 0x4a, - 0x10, 0x79, 0x01, 0x21, 0x08, 0x43, 0x10, 0x71, - 0x10, 0x79, 0x02, 0x21, 0x88, 0x43, 0x10, 0x71, - 0x00, 0xf0, 0x6c, 0xf8, 0x3c, 0x00, 0x44, 0x17, - 0x04, 0x00, 0x10, 0x7a, 0x01, 0x21, 0x08, 0x43, - 0x10, 0x72, 0x10, 0x7a, 0xfe, 0x21, 0x88, 0x43, - 0x0a, 0x30, 0x10, 0x72, 0x28, 0x20, 0x90, 0x72, - 0x5a, 0x20, 0xd0, 0x72, 0x11, 0x4d, 0x14, 0x20, - 0x28, 0x77, 0x2c, 0x1c, 0x10, 0x34, 0xa0, 0x73, - 0x16, 0x20, 0xa8, 0x75, 0x18, 0x20, 0xe8, 0x75, - 0xff, 0xf7, 0xa1, 0xfc, 0x0c, 0x48, 0x68, 0x86, - 0xe0, 0x7b, 0x40, 0x06, 0x40, 0x0e, 0x3c, 0x00, - 0x80, 0x17, 0x04, 0x00, 0x0e, 0x21, 0x08, 0x43, - 0xe0, 0x73, 0xe0, 0x7b, 0x80, 0x21, 0x08, 0x43, - 0xe0, 0x73, 0x07, 0x48, 0x41, 0x79, 0x04, 0x22, - 0x11, 0x43, 0x41, 0x71, 0xb0, 0xbd, 0x00, 0x00, - 0xf0, 0x00, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x30, 0x80, 0x07, 0x00, 0xff, 0x01, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x80, 0xb5, 0xff, 0xf7, - 0xaf, 0xff, 0x00, 0x20, 0x14, 0x49, 0xc0, 0x43, - 0x3c, 0x00, 0xbc, 0x17, 0x04, 0x00, 0x88, 0x60, - 0xc1, 0xf7, 0x0b, 0xf9, 0x13, 0x49, 0x00, 0x20, - 0x48, 0x62, 0xc8, 0x60, 0x48, 0x61, 0x08, 0x61, - 0x88, 0x61, 0xc8, 0x61, 0x0f, 0x4b, 0x08, 0x62, - 0x0f, 0x4a, 0x08, 0x63, 0x38, 0x33, 0x1a, 0x80, - 0x01, 0x22, 0x5a, 0x71, 0x0b, 0x4a, 0x40, 0x32, - 0xd0, 0x60, 0x13, 0x60, 0x08, 0x23, 0x13, 0x81, - 0x50, 0x60, 0x09, 0x4a, 0x8a, 0x62, 0xff, 0x22, - 0x0a, 0x70, 0x3c, 0x00, 0xf8, 0x17, 0x04, 0x00, - 0x48, 0x70, 0x05, 0x48, 0x00, 0x21, 0x00, 0x22, - 0x50, 0x30, 0x00, 0x23, 0x0e, 0xc0, 0xc1, 0xf7, - 0xff, 0xf8, 0x80, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0xbe, 0xba, 0x00, 0x00, - 0x85, 0x75, 0x00, 0x00, 0x03, 0x48, 0x10, 0x21, - 0x81, 0x71, 0x02, 0x21, 0xc1, 0x71, 0x30, 0x21, - 0x41, 0x72, 0x70, 0x47, 0x00, 0x80, 0x07, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x34, 0x18, - 0x04, 0x00, 0x00, 0xb5, 0xc1, 0xf7, 0xdb, 0xfb, - 0x00, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, - 0xcd, 0xf7, 0x87, 0xfd, 0x01, 0x49, 0x88, 0x60, - 0x80, 0xbd, 0x50, 0xd9, 0x01, 0x00, 0x80, 0xb5, - 0x06, 0x21, 0x05, 0x48, 0xbe, 0xf7, 0xfd, 0xfd, - 0x04, 0x49, 0x00, 0x20, 0x04, 0x39, 0x08, 0x60, - 0x00, 0xf0, 0x67, 0xf8, 0x00, 0xf0, 0x03, 0xf8, - 0x80, 0xbd, 0xec, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0x70, 0x18, 0x04, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x2c, 0x21, 0x20, 0x1c, 0xbe, 0xf7, 0x10, 0xfe, - 0x01, 0x20, 0x20, 0x70, 0x03, 0x49, 0x00, 0x20, - 0x1c, 0x39, 0xc8, 0x60, 0x08, 0x61, 0x88, 0x61, - 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0xcd, 0xf7, 0x5d, 0xfd, 0x09, 0x49, - 0x88, 0x60, 0x09, 0x49, 0x08, 0x20, 0xd0, 0xf7, - 0x73, 0xfd, 0x08, 0x49, 0x09, 0x20, 0xd0, 0xf7, - 0x3c, 0x00, 0xac, 0x18, 0x04, 0x00, 0x6f, 0xfd, - 0x07, 0x49, 0x11, 0x20, 0xd0, 0xf7, 0x6b, 0xfd, - 0x06, 0x48, 0xc2, 0xf7, 0x74, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x21, 0x35, - 0x00, 0x00, 0xa1, 0x38, 0x00, 0x00, 0x45, 0x34, - 0x00, 0x00, 0xbd, 0x26, 0x01, 0x00, 0x80, 0xb5, - 0x86, 0xb0, 0x0f, 0x48, 0xc4, 0xf7, 0x45, 0xf9, - 0x00, 0xf0, 0x45, 0xf8, 0xff, 0xf7, 0xd7, 0xff, - 0xff, 0xf7, 0x3c, 0x00, 0xe8, 0x18, 0x04, 0x00, - 0xab, 0xff, 0x0c, 0x49, 0x03, 0x20, 0xd0, 0xf7, - 0x4d, 0xfd, 0x0b, 0x48, 0x69, 0x46, 0x00, 0x90, - 0x00, 0x20, 0x01, 0x90, 0x09, 0x48, 0x04, 0x90, - 0x09, 0x48, 0x02, 0x90, 0x09, 0x48, 0x03, 0x90, - 0x09, 0x48, 0x05, 0x90, 0x00, 0x20, 0xc4, 0xf7, - 0xcf, 0xf8, 0x06, 0xb0, 0x80, 0xbd, 0x00, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x45, 0x35, 0x00, 0x00, - 0x95, 0x32, 0x00, 0x00, 0x3c, 0x00, 0x24, 0x19, - 0x04, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0xfd, 0x32, - 0x00, 0x00, 0xcd, 0x31, 0x00, 0x00, 0x45, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0xcd, 0xf7, 0xd5, 0xfc, - 0x09, 0x48, 0x09, 0x4c, 0x30, 0x21, 0x60, 0x61, - 0x08, 0x48, 0x74, 0x30, 0xbe, 0xf7, 0xa9, 0xfd, - 0x00, 0x20, 0xa0, 0x62, 0x06, 0x49, 0x20, 0x61, - 0xe1, 0x63, 0x60, 0x64, 0xa0, 0x64, 0x14, 0x21, - 0x21, 0x65, 0x60, 0x62, 0x10, 0xbd, 0x3c, 0x00, - 0x60, 0x19, 0x04, 0x00, 0xb9, 0x75, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x70, 0x17, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x09, 0x20, 0x04, 0x4a, - 0xd1, 0xf7, 0xe8, 0xfe, 0xcd, 0xf7, 0xec, 0xfc, - 0x02, 0x49, 0x08, 0x63, 0x80, 0xbd, 0x00, 0x00, - 0x39, 0x39, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x80, 0xb5, 0xac, 0x21, 0x03, 0x48, 0xbe, 0xf7, - 0x83, 0xfd, 0x00, 0xf0, 0x51, 0xf8, 0x00, 0xf0, - 0x3c, 0x00, 0x9c, 0x19, 0x04, 0x00, 0x49, 0xf8, - 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x08, 0xb5, - 0x00, 0xf0, 0x4d, 0xf8, 0x00, 0xf0, 0x45, 0xf8, - 0x00, 0x21, 0x16, 0x20, 0x18, 0x4a, 0xd1, 0xf7, - 0xc8, 0xfe, 0x17, 0x4a, 0x04, 0x21, 0x10, 0x1c, - 0x40, 0x30, 0x01, 0x70, 0x00, 0x21, 0x81, 0x70, - 0x11, 0x21, 0xc1, 0x80, 0x14, 0x49, 0x01, 0x81, - 0x10, 0x1c, 0x80, 0x30, 0xc1, 0x78, 0x08, 0x22, - 0x91, 0x43, 0x3c, 0x00, 0xd8, 0x19, 0x04, 0x00, - 0xc1, 0x70, 0xc1, 0x78, 0x11, 0x43, 0xc1, 0x70, - 0x6a, 0x46, 0x0f, 0x49, 0x14, 0x20, 0xbf, 0xf7, - 0xf5, 0xfa, 0x0e, 0x49, 0x07, 0x20, 0xd0, 0xf7, - 0xcd, 0xfc, 0x0d, 0x49, 0x0f, 0x20, 0xd0, 0xf7, - 0xc9, 0xfc, 0xcd, 0xf7, 0xab, 0xfc, 0x0b, 0x49, - 0x08, 0x60, 0x0a, 0x48, 0x44, 0x38, 0x80, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x00, 0x20, 0xc6, 0xf7, - 0x6f, 0xf9, 0x08, 0xbd, 0x3c, 0x00, 0x14, 0x1a, - 0x04, 0x00, 0xb5, 0x3b, 0x00, 0x00, 0x00, 0x90, - 0x07, 0x00, 0xe7, 0xfd, 0x00, 0x00, 0x8d, 0x41, - 0x00, 0x00, 0xcd, 0x48, 0x00, 0x00, 0xd9, 0x49, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0xf0, 0x6f, 0xfc, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x61, 0xfc, - 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5, - 0x30, 0x21, 0x0c, 0x48, 0xbe, 0xf7, 0x3c, 0x00, - 0x50, 0x1a, 0x04, 0x00, 0x25, 0xfd, 0x0b, 0x4c, - 0x00, 0x25, 0x0a, 0x48, 0x84, 0x3c, 0x38, 0x22, - 0x03, 0x21, 0x70, 0x38, 0x65, 0x60, 0xbe, 0xf7, - 0xdd, 0xfd, 0x06, 0x48, 0x38, 0x22, 0x01, 0x21, - 0x38, 0x38, 0xbe, 0xf7, 0xd7, 0xfd, 0x0e, 0x20, - 0xa5, 0x60, 0x60, 0x70, 0x20, 0x70, 0x00, 0xf0, - 0x1d, 0xf8, 0xb0, 0xbd, 0x94, 0x67, 0x01, 0x00, - 0x04, 0x49, 0x00, 0xb5, 0x01, 0x20, 0x48, 0x60, - 0x3c, 0x00, 0x8c, 0x1a, 0x04, 0x00, 0x88, 0x60, - 0xc8, 0x60, 0xc3, 0xf7, 0xf8, 0xff, 0x00, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x0a, 0x20, 0x02, 0x4a, 0xd1, 0xf7, - 0x50, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x1d, 0x5a, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x05, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0xfd, 0xfb, - 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x49, 0x04, 0x20, - 0xd0, 0xf7, 0x3c, 0x00, 0xc8, 0x1a, 0x04, 0x00, - 0x61, 0xfc, 0x80, 0xbd, 0x65, 0x1f, 0x00, 0x00, - 0x00, 0x21, 0x17, 0x48, 0xc9, 0x43, 0x80, 0xb5, - 0x16, 0x4b, 0x01, 0x70, 0x18, 0x1c, 0x10, 0x22, - 0x20, 0x30, 0x02, 0x71, 0x00, 0x22, 0x10, 0x33, - 0x9a, 0x73, 0x42, 0x79, 0x04, 0x23, 0x1a, 0x43, - 0x42, 0x71, 0x42, 0x79, 0x18, 0x23, 0x9a, 0x43, - 0x08, 0x32, 0x42, 0x71, 0x08, 0x1c, 0xd7, 0xf7, - 0x59, 0xf8, 0x00, 0x28, 0x3c, 0x00, 0x04, 0x1b, - 0x04, 0x00, 0x03, 0xd1, 0x01, 0x21, 0x9a, 0x20, - 0xbf, 0xf7, 0xcb, 0xfb, 0x50, 0x20, 0x09, 0x49, - 0x50, 0x22, 0x0a, 0x60, 0xc8, 0x60, 0x88, 0x60, - 0x48, 0x60, 0x08, 0x61, 0x01, 0x20, 0x48, 0x61, - 0x00, 0x20, 0xd7, 0xf7, 0xd8, 0xf8, 0x04, 0x49, - 0xff, 0x20, 0x08, 0x60, 0x80, 0xbd, 0xf4, 0x6b, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x04, 0x02, - 0x07, 0x00, 0xf4, 0x74, 0x01, 0x00, 0x3c, 0x00, - 0x40, 0x1b, 0x04, 0x00, 0x80, 0xb5, 0xd7, 0xf7, - 0xfb, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0xff, 0xf7, - 0xab, 0xfb, 0xbf, 0xf7, 0xdd, 0xfb, 0x81, 0x48, - 0xcd, 0xf7, 0x98, 0xfa, 0x00, 0x24, 0x23, 0x1c, - 0x04, 0x22, 0x04, 0x21, 0x00, 0x20, 0x01, 0xf0, - 0x39, 0xfa, 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7, - 0xc9, 0xfb, 0x23, 0x1c, 0x00, 0x22, 0xff, 0x21, - 0x00, 0x20, 0x01, 0xf0, 0x2f, 0xfa, 0x00, 0x28, - 0x3c, 0x00, 0x7c, 0x1b, 0x04, 0x00, 0x01, 0xd0, - 0xbf, 0xf7, 0xbf, 0xfb, 0x23, 0x1c, 0x00, 0x22, - 0xff, 0x21, 0x00, 0x20, 0x01, 0xf0, 0x25, 0xfa, - 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7, 0xb5, 0xfb, - 0xc4, 0xf7, 0x27, 0xff, 0x70, 0x48, 0x84, 0x70, - 0x6f, 0x49, 0x7f, 0x20, 0x88, 0x70, 0x6e, 0x49, - 0x0c, 0x60, 0x03, 0x20, 0x08, 0x60, 0x6b, 0x48, - 0x44, 0x70, 0x6c, 0x48, 0x04, 0x80, 0x69, 0x48, - 0xc0, 0x78, 0x3c, 0x00, 0xb8, 0x1b, 0x04, 0x00, - 0x08, 0x21, 0x08, 0x43, 0x67, 0x49, 0xc8, 0x70, - 0x08, 0x1c, 0xc0, 0x78, 0x04, 0x21, 0x08, 0x43, - 0x64, 0x49, 0xc8, 0x70, 0x01, 0xf0, 0x7e, 0xfa, - 0xff, 0xf7, 0x7e, 0xff, 0xff, 0xf7, 0x2c, 0xfe, - 0x01, 0xf0, 0x46, 0xfb, 0xff, 0xf7, 0x18, 0xfb, - 0x01, 0xf0, 0x52, 0xfa, 0xff, 0xf7, 0x82, 0xfb, - 0x5f, 0x48, 0xc1, 0x68, 0x10, 0x22, 0x91, 0x43, - 0xc1, 0x60, 0x01, 0x69, 0x3c, 0x00, 0xf4, 0x1b, - 0x04, 0x00, 0x5d, 0x4a, 0x11, 0x43, 0x01, 0x61, - 0x01, 0x69, 0xd2, 0x0a, 0x91, 0x43, 0x01, 0x61, - 0xc1, 0x68, 0x5a, 0x4a, 0x11, 0x43, 0xc1, 0x60, - 0x81, 0x6a, 0x59, 0x4a, 0x11, 0x43, 0x81, 0x62, - 0x00, 0xf0, 0x77, 0xf9, 0x01, 0xf0, 0x1f, 0xf8, - 0x00, 0xf0, 0x93, 0xfa, 0x01, 0xf0, 0x99, 0xfb, - 0x00, 0xf0, 0xf1, 0xff, 0x00, 0xf0, 0x99, 0xfc, - 0x00, 0xf0, 0xdd, 0xfc, 0x00, 0xf0, 0x3c, 0x00, - 0x30, 0x1c, 0x04, 0x00, 0x83, 0xfc, 0xff, 0xf7, - 0xb3, 0xfc, 0x01, 0xf0, 0x31, 0xfa, 0x01, 0xf0, - 0x71, 0xfa, 0xff, 0xf7, 0x87, 0xfa, 0xff, 0xf7, - 0x9b, 0xfa, 0x01, 0x21, 0x01, 0x20, 0x4b, 0x4a, - 0xd1, 0xf7, 0x7c, 0xfd, 0x01, 0x21, 0x02, 0x20, - 0x49, 0x4a, 0xd1, 0xf7, 0x77, 0xfd, 0x02, 0x21, - 0x03, 0x20, 0x48, 0x4a, 0xd1, 0xf7, 0x72, 0xfd, - 0x02, 0x21, 0x04, 0x20, 0x46, 0x4a, 0xd1, 0xf7, - 0x3c, 0x00, 0x6c, 0x1c, 0x04, 0x00, 0x6d, 0xfd, - 0x02, 0x21, 0x05, 0x20, 0x45, 0x4a, 0xd1, 0xf7, - 0x68, 0xfd, 0x02, 0x21, 0x06, 0x20, 0x43, 0x4a, - 0xd1, 0xf7, 0x63, 0xfd, 0x01, 0x21, 0x07, 0x20, - 0x42, 0x4a, 0xd1, 0xf7, 0x5e, 0xfd, 0x02, 0x21, - 0x17, 0x20, 0x40, 0x4a, 0xd1, 0xf7, 0x59, 0xfd, - 0x02, 0x21, 0x08, 0x20, 0x3f, 0x4a, 0xd1, 0xf7, - 0x54, 0xfd, 0xff, 0xf7, 0xc8, 0xfd, 0x3d, 0x48, - 0x04, 0x60, 0x3c, 0x00, 0xa8, 0x1c, 0x04, 0x00, - 0x44, 0x60, 0xff, 0xf7, 0x17, 0xfa, 0xff, 0xf7, - 0x09, 0xfa, 0xff, 0xf7, 0x4f, 0xfc, 0x00, 0xf0, - 0x43, 0xf9, 0xff, 0xf7, 0x33, 0xfa, 0xff, 0xf7, - 0xfb, 0xfa, 0x01, 0xf0, 0x85, 0xf8, 0x01, 0xf0, - 0xeb, 0xf9, 0x01, 0xf0, 0x23, 0xfa, 0x01, 0xf0, - 0x71, 0xf9, 0x00, 0xf0, 0xe3, 0xff, 0xff, 0xf7, - 0x6f, 0xfa, 0x00, 0xf0, 0xaf, 0xf9, 0x00, 0xf0, - 0xbd, 0xf9, 0x00, 0xf0, 0x3c, 0x00, 0xe4, 0x1c, - 0x04, 0x00, 0xad, 0xfc, 0x00, 0xf0, 0x9b, 0xfe, - 0xff, 0xf7, 0xcd, 0xfa, 0xff, 0xf7, 0xab, 0xfe, - 0x00, 0xf0, 0xc3, 0xf9, 0xff, 0xf7, 0xab, 0xfd, - 0x00, 0xf0, 0x8d, 0xff, 0x00, 0xf0, 0x21, 0xff, - 0x00, 0xf0, 0x65, 0xf9, 0x00, 0xf0, 0x97, 0xf9, - 0x00, 0xf0, 0xfd, 0xfe, 0x00, 0xf0, 0xe5, 0xfe, - 0x00, 0xf0, 0x3f, 0xf9, 0x00, 0xf0, 0x73, 0xf9, - 0xff, 0xf7, 0x37, 0xfe, 0x00, 0xf0, 0x3c, 0x00, - 0x20, 0x1d, 0x04, 0x00, 0x21, 0xf9, 0x00, 0xf0, - 0x73, 0xfb, 0xff, 0xf7, 0xe5, 0xfb, 0x00, 0xf0, - 0xd3, 0xfb, 0xff, 0xf7, 0xa9, 0xfe, 0x00, 0xf0, - 0xbb, 0xfb, 0x00, 0xf0, 0x09, 0xff, 0x00, 0xf0, - 0xdb, 0xf9, 0x18, 0x48, 0xc9, 0xf7, 0x56, 0xf8, - 0x17, 0x48, 0xc9, 0xf7, 0x2b, 0xf8, 0x00, 0x22, - 0x01, 0x21, 0xf0, 0x20, 0xd1, 0xf7, 0x2e, 0xfd, - 0x00, 0x20, 0x10, 0xbd, 0xa9, 0x69, 0x00, 0x00, - 0x3c, 0x00, 0x5c, 0x1d, 0x04, 0x00, 0x00, 0x00, - 0x07, 0x00, 0xf0, 0x00, 0x07, 0x00, 0x2c, 0x00, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0x08, 0x00, 0xc0, 0x3f, 0x74, 0x38, 0xfc, 0xdf, - 0x7f, 0x38, 0x55, 0x69, 0x00, 0x00, 0xe5, 0x13, - 0x00, 0x00, 0x61, 0x0c, 0x00, 0x00, 0x6d, 0x0c, - 0x00, 0x00, 0x3d, 0x0c, 0x00, 0x00, 0xf1, 0x0d, - 0x00, 0x00, 0xc5, 0x33, 0x00, 0x00, 0x3d, 0x0f, - 0x00, 0x00, 0x3c, 0x00, 0x98, 0x1d, 0x04, 0x00, - 0xad, 0xd8, 0x00, 0x00, 0x80, 0x00, 0x07, 0x00, - 0x50, 0x57, 0x01, 0x00, 0x04, 0x40, 0x01, 0x00, - 0x80, 0xb5, 0x01, 0xf0, 0xa9, 0xf9, 0x00, 0xf0, - 0xc9, 0xf8, 0xff, 0xf7, 0xc5, 0xfe, 0x01, 0xf0, - 0x03, 0xfb, 0x01, 0xf0, 0x93, 0xfa, 0xff, 0xf7, - 0xcb, 0xf9, 0x2c, 0x48, 0xff, 0xf7, 0xe8, 0xf9, - 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0, 0x58, 0xff, - 0xff, 0xf7, 0x34, 0xfd, 0x3c, 0x00, 0xd4, 0x1d, - 0x04, 0x00, 0xff, 0xf7, 0xf2, 0xfb, 0xff, 0xf7, - 0x7a, 0xfa, 0xff, 0xf7, 0x00, 0xfa, 0x00, 0xf0, - 0x34, 0xf9, 0x00, 0xf0, 0x3c, 0xf9, 0x01, 0xf0, - 0xe2, 0xf8, 0xff, 0xf7, 0x7a, 0xf9, 0xff, 0xf7, - 0x72, 0xf9, 0xff, 0xf7, 0x9a, 0xf9, 0x01, 0xf0, - 0x66, 0xf9, 0x01, 0xf0, 0x8e, 0xf9, 0x01, 0xf0, - 0xe0, 0xf8, 0x00, 0xf0, 0x06, 0xff, 0x00, 0xf0, - 0xf0, 0xfb, 0x00, 0xf0, 0x46, 0xfb, 0x3c, 0x00, - 0x10, 0x1e, 0x04, 0x00, 0x00, 0xf0, 0xbc, 0xff, - 0x00, 0xf0, 0xe4, 0xfc, 0x00, 0xf0, 0x20, 0xfe, - 0xff, 0xf7, 0x40, 0xfa, 0xff, 0xf7, 0x46, 0xfe, - 0xff, 0xf7, 0x56, 0xfd, 0x00, 0xf0, 0x2c, 0xf9, - 0x00, 0xf0, 0xfa, 0xfe, 0x00, 0xf0, 0x8a, 0xfe, - 0x00, 0xf0, 0xd4, 0xf8, 0x00, 0xf0, 0xb4, 0xf8, - 0x00, 0xf0, 0x78, 0xfe, 0x00, 0xf0, 0x4e, 0xfe, - 0x00, 0xf0, 0xde, 0xf8, 0xff, 0xf7, 0xac, 0xfd, - 0x3c, 0x00, 0x4c, 0x1e, 0x04, 0x00, 0x00, 0xf0, - 0x8c, 0xf8, 0x00, 0xf0, 0xf8, 0xfa, 0xff, 0xf7, - 0x76, 0xfb, 0xff, 0xf7, 0x20, 0xfe, 0x01, 0xf0, - 0xa6, 0xfa, 0x00, 0xf0, 0x48, 0xfb, 0x00, 0xf0, - 0x7c, 0xfe, 0x00, 0xf0, 0x5c, 0xf9, 0xbe, 0xf7, - 0x57, 0xfd, 0x00, 0x20, 0x80, 0xbd, 0x80, 0x38, - 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x08, 0x60, - 0x70, 0x47, 0xa8, 0x7e, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x3c, 0x00, 0x88, 0x1e, 0x04, 0x00, - 0x01, 0xd1, 0xbf, 0xf7, 0x39, 0xfa, 0x0f, 0x48, - 0x7d, 0x21, 0xc9, 0x00, 0x84, 0x60, 0x01, 0x80, - 0x0d, 0x49, 0x01, 0x61, 0x80, 0x21, 0x41, 0x80, - 0x00, 0x21, 0xc1, 0x60, 0x01, 0x62, 0x0b, 0x48, - 0x41, 0x80, 0x14, 0x21, 0x81, 0x80, 0x07, 0x21, - 0x41, 0x81, 0x06, 0x4a, 0x46, 0x23, 0x04, 0x32, - 0x05, 0x24, 0x13, 0x70, 0x54, 0x70, 0x0a, 0x21, - 0x91, 0x70, 0x81, 0x76, 0x3c, 0x00, 0xc4, 0x1e, - 0x04, 0x00, 0x03, 0x76, 0x04, 0x81, 0x10, 0xbd, - 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00, 0x00, 0x87, - 0x93, 0x03, 0x30, 0x00, 0x07, 0x00, 0x09, 0x48, - 0x80, 0xb5, 0x01, 0x69, 0x42, 0x69, 0x11, 0x43, - 0x82, 0x69, 0xc0, 0x69, 0x11, 0x43, 0x01, 0x43, - 0x00, 0x22, 0x03, 0x20, 0xc6, 0xf7, 0xbf, 0xfc, - 0xcc, 0xf7, 0x1b, 0xfa, 0x00, 0x20, 0xc2, 0xf7, - 0x92, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x1f, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x21, 0x81, 0x60, - 0x02, 0x21, 0xc1, 0x60, 0x03, 0x39, 0x41, 0x60, - 0xc7, 0xf7, 0x3a, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x08, 0xb5, 0x6a, 0x46, - 0x04, 0x49, 0x15, 0x20, 0xbf, 0xf7, 0x54, 0xf8, - 0x01, 0x20, 0x03, 0x49, 0x40, 0x05, 0x08, 0x60, - 0x48, 0x60, 0x08, 0xbd, 0xa5, 0x21, 0x01, 0x00, - 0x3c, 0x00, 0x3c, 0x1f, 0x04, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0x80, 0x68, 0xc0, 0x01, 0x80, 0x0f, - 0x05, 0xd1, 0x03, 0x22, 0xc1, 0x43, 0xc6, 0xf7, - 0xba, 0xfc, 0xd6, 0xf7, 0x00, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20, - 0x06, 0x4a, 0xd1, 0xf7, 0xea, 0xfb, 0x00, 0x22, - 0x07, 0x20, 0x3c, 0x00, 0x78, 0x1f, 0x04, 0x00, - 0x04, 0x49, 0xbe, 0xf7, 0xed, 0xfe, 0x04, 0x48, - 0xc7, 0xf7, 0x58, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x8d, 0x89, 0x00, 0x00, 0xd5, 0x9b, 0x00, 0x00, - 0x10, 0x46, 0x01, 0x00, 0x02, 0x48, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x70, 0x47, - 0x80, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x2c, 0x20, 0x06, 0x4a, 0xd1, 0xf7, 0xcc, 0xfb, - 0x00, 0x22, 0x00, 0x20, 0x3c, 0x00, 0xb4, 0x1f, - 0x04, 0x00, 0x04, 0x49, 0xbe, 0xf7, 0xcf, 0xfe, - 0x04, 0x49, 0x02, 0x20, 0xc8, 0xf7, 0x0b, 0xfa, - 0x80, 0xbd, 0x05, 0x8a, 0x00, 0x00, 0xe9, 0x9b, - 0x00, 0x00, 0xb1, 0x8b, 0x00, 0x00, 0x02, 0x48, - 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, - 0x70, 0x47, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x2b, 0x20, 0x04, 0x4a, 0xd1, 0xf7, - 0xae, 0xfb, 0x00, 0x22, 0x02, 0x20, 0x3c, 0x00, - 0xf0, 0x1f, 0x04, 0x00, 0x02, 0x49, 0xbe, 0xf7, - 0xb1, 0xfe, 0x80, 0xbd, 0x2d, 0x8a, 0x00, 0x00, - 0x8d, 0x8c, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0x07, 0x4a, - 0xd1, 0xf7, 0x9c, 0xfb, 0x00, 0x22, 0x01, 0x20, - 0x05, 0x49, 0xbe, 0xf7, 0x9f, 0xfe, 0x05, 0x48, - 0xcb, 0xf7, 0x56, 0xfa, 0x04, 0x48, 0xcc, 0xf7, - 0xf7, 0xf8, 0x80, 0xbd, 0xad, 0x8a, 0x00, 0x00, - 0x3c, 0x00, 0x2c, 0x20, 0x04, 0x00, 0x21, 0xe2, - 0x00, 0x00, 0xf9, 0xdf, 0x00, 0x00, 0x20, 0x44, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x02, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x01, 0x20, 0x48, 0x60, - 0x70, 0x47, 0xac, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x49, 0x0d, 0x20, 0xd0, 0xf7, 0x9b, 0xf9, - 0x80, 0xbd, 0x61, 0x98, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0xcd, 0xf7, 0x77, 0xf9, - 0x03, 0x49, 0x3c, 0x00, 0x68, 0x20, 0x04, 0x00, - 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48, 0xcd, 0xf7, - 0x97, 0xf9, 0x80, 0xbd, 0xa8, 0x79, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x29, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x86, 0xb0, - 0x0c, 0x48, 0xc3, 0xf7, 0x6d, 0xfd, 0xd6, 0xf7, - 0xd3, 0xfb, 0x0b, 0x48, 0x0d, 0x49, 0x00, 0x90, - 0x0a, 0x48, 0x04, 0x91, 0x01, 0x90, 0x0a, 0x48, - 0x69, 0x46, 0x02, 0x90, 0x3c, 0x00, 0xa4, 0x20, - 0x04, 0x00, 0x00, 0x20, 0x03, 0x90, 0x05, 0x90, - 0x01, 0x20, 0xc3, 0xf7, 0x00, 0xfd, 0x07, 0x49, - 0x03, 0x20, 0xd0, 0xf7, 0x6a, 0xf9, 0x06, 0xb0, - 0x80, 0xbd, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x87, - 0x01, 0x00, 0x95, 0x87, 0x01, 0x00, 0x55, 0x87, - 0x01, 0x00, 0x98, 0xd9, 0x01, 0x00, 0x6d, 0x87, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xd6, 0xf7, - 0x90, 0xfc, 0x03, 0x49, 0x00, 0x20, 0x3c, 0x00, - 0xe0, 0x20, 0x04, 0x00, 0x08, 0x60, 0x48, 0x60, - 0x02, 0x48, 0x14, 0x39, 0x48, 0x60, 0x80, 0xbd, - 0x90, 0xd9, 0x01, 0x00, 0x3d, 0x82, 0x01, 0x00, - 0x70, 0xb5, 0x00, 0x26, 0x09, 0x4c, 0x09, 0x4d, - 0x26, 0x60, 0x66, 0x60, 0x44, 0x21, 0x50, 0x35, - 0x28, 0x1c, 0xa6, 0x61, 0xbe, 0xf7, 0xc8, 0xf9, - 0x14, 0x20, 0xe0, 0x60, 0xe8, 0x63, 0x28, 0x20, - 0xe8, 0x61, 0xa0, 0x60, 0x28, 0x64, 0x2e, 0x70, - 0x3c, 0x00, 0x1c, 0x21, 0x04, 0x00, 0x70, 0xbd, - 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x18, 0x20, 0x04, 0x4a, 0xd1, 0xf7, - 0x0c, 0xfb, 0x03, 0x49, 0x08, 0x20, 0xd0, 0xf7, - 0x2a, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x15, 0x9c, - 0x00, 0x00, 0x69, 0x9c, 0x00, 0x00, 0xfe, 0xb5, - 0x26, 0x4d, 0x28, 0x78, 0xc0, 0x07, 0x0c, 0xd4, - 0x25, 0x49, 0x00, 0x20, 0x08, 0x70, 0x28, 0x70, - 0x24, 0x48, 0x3c, 0x00, 0x58, 0x21, 0x04, 0x00, - 0x81, 0x78, 0x49, 0x08, 0x49, 0x00, 0x81, 0x70, - 0x81, 0x78, 0x01, 0x22, 0x11, 0x43, 0x81, 0x70, - 0x00, 0x24, 0xff, 0x26, 0x1f, 0x4f, 0x01, 0x36, - 0x21, 0x1c, 0x01, 0xa8, 0xc6, 0xf7, 0x32, 0xf8, - 0x00, 0xab, 0x18, 0x79, 0x01, 0x28, 0x1f, 0xd0, - 0x02, 0x28, 0x19, 0xd0, 0x03, 0x28, 0x1e, 0xd1, - 0xb8, 0x68, 0x00, 0x21, 0xb0, 0x43, 0xb8, 0x60, - 0x78, 0x68, 0x30, 0x43, 0x3c, 0x00, 0x94, 0x21, - 0x04, 0x00, 0x78, 0x60, 0x3a, 0x68, 0x32, 0x40, - 0xa0, 0x20, 0x05, 0xe0, 0x3b, 0x68, 0x33, 0x40, - 0x93, 0x42, 0x01, 0xd0, 0x01, 0x21, 0x01, 0xe0, - 0x01, 0x38, 0xf7, 0xd2, 0x78, 0x68, 0xb0, 0x43, - 0x78, 0x60, 0x00, 0x29, 0x03, 0xd0, 0x01, 0xa8, - 0x00, 0xf0, 0x27, 0xff, 0x02, 0xe0, 0x01, 0xa8, - 0x00, 0xf0, 0x45, 0xff, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x16, 0x06, 0x2c, 0xcf, 0xdb, 0x3c, 0x00, - 0xd0, 0x21, 0x04, 0x00, 0x04, 0x49, 0x02, 0x22, - 0x08, 0x78, 0x10, 0x43, 0x08, 0x70, 0x28, 0x70, - 0xfe, 0xbd, 0x00, 0x00, 0x04, 0x00, 0x07, 0x00, - 0xe0, 0x60, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x10, 0x00, 0x07, 0x00, 0xb0, 0xb5, 0x00, 0x20, - 0x15, 0x23, 0x14, 0x49, 0x01, 0x25, 0x42, 0x00, - 0x8d, 0x54, 0x52, 0x18, 0x01, 0x30, 0x0e, 0x28, - 0x53, 0x70, 0xf8, 0xd3, 0x0f, 0x48, 0x1c, 0x22, - 0x3c, 0x00, 0x0c, 0x22, 0x04, 0x00, 0x1c, 0x38, - 0xbe, 0xf7, 0x73, 0xf9, 0x0d, 0x48, 0x0e, 0x21, - 0x2a, 0x38, 0xbe, 0xf7, 0x1c, 0xf9, 0x0b, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x0b, 0x4c, 0x2a, 0x21, - 0x20, 0x1c, 0xbe, 0xf7, 0x14, 0xf9, 0x25, 0x70, - 0x0e, 0x20, 0x60, 0x70, 0x17, 0x20, 0xa0, 0x70, - 0x07, 0x48, 0x53, 0x21, 0x01, 0x70, 0x45, 0x21, - 0x41, 0x70, 0x20, 0x21, 0x81, 0x70, 0xb0, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x48, 0x22, 0x04, 0x00, - 0xe6, 0x78, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00, - 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00, - 0x0c, 0x49, 0x0d, 0x48, 0x00, 0x22, 0x41, 0x60, - 0x0c, 0x49, 0x81, 0x60, 0x0c, 0x49, 0xc1, 0x60, - 0x0c, 0x49, 0x01, 0x61, 0x0c, 0x49, 0x41, 0x61, - 0x0c, 0x49, 0x82, 0x61, 0xc1, 0x61, 0x0c, 0x49, - 0x01, 0x62, 0x0c, 0x49, 0x41, 0x62, 0x0c, 0x49, - 0x81, 0x62, 0x0c, 0x49, 0x3c, 0x00, 0x84, 0x22, - 0x04, 0x00, 0xc1, 0x62, 0xc2, 0x63, 0x70, 0x47, - 0x00, 0x00, 0xc9, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0xc1, 0x75, 0x00, 0x00, 0x81, 0x75, - 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0xcd, 0x75, - 0x00, 0x00, 0x89, 0x75, 0x00, 0x00, 0x91, 0x75, - 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x8d, 0x75, - 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00, 0xb0, 0xb5, - 0x0e, 0x48, 0x0e, 0x49, 0x08, 0x60, 0x3c, 0x00, - 0xc0, 0x22, 0x04, 0x00, 0x08, 0x31, 0xc0, 0xf7, - 0x43, 0xfe, 0x0c, 0x49, 0x00, 0x25, 0x48, 0x60, - 0x0b, 0x48, 0x0a, 0x4c, 0x05, 0x60, 0x0b, 0x48, - 0x80, 0x3c, 0x05, 0x60, 0x10, 0x20, 0x20, 0x71, - 0xe0, 0x70, 0xa0, 0x71, 0x60, 0x71, 0x27, 0x20, - 0xc0, 0x43, 0xc3, 0xf7, 0xf7, 0xfb, 0x28, 0x20, - 0xc3, 0xf7, 0xfc, 0xfb, 0x25, 0x72, 0xb0, 0xbd, - 0xff, 0x3f, 0x00, 0x00, 0x2c, 0x7d, 0x01, 0x00, - 0x3c, 0x00, 0xfc, 0x22, 0x04, 0x00, 0x1c, 0x67, - 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x80, 0xb5, - 0x2c, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xc7, 0xf8, - 0x80, 0xbd, 0x3c, 0x7e, 0x01, 0x00, 0x80, 0xb5, - 0x38, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xbf, 0xf8, - 0x80, 0xbd, 0x68, 0x7e, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x0e, 0x20, 0x02, 0x4a, 0xd1, 0xf7, - 0x0c, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x21, 0xe0, - 0x00, 0x00, 0x3c, 0x00, 0x38, 0x23, 0x04, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0xb0, - 0x00, 0x27, 0x00, 0xab, 0x2f, 0x4e, 0x1f, 0x81, - 0x00, 0x25, 0x00, 0x24, 0x28, 0x1c, 0xd6, 0xf7, - 0xa1, 0xfb, 0x02, 0x2d, 0x03, 0xd1, 0xd6, 0xf7, - 0xf5, 0xfa, 0x00, 0x28, 0x0c, 0xd0, 0x01, 0x24, - 0x01, 0x2d, 0x03, 0xd1, 0x07, 0x20, 0x00, 0xab, - 0x18, 0x71, 0x01, 0xe0, 0x00, 0xab, 0x1f, 0x71, - 0x00, 0xab, 0x18, 0x79, 0x3c, 0x00, 0x74, 0x23, - 0x04, 0x00, 0xd6, 0xf7, 0x08, 0xfc, 0x00, 0x2c, - 0x39, 0xd0, 0x08, 0x21, 0x03, 0xa8, 0xd6, 0xf7, - 0xf2, 0xfa, 0x00, 0xab, 0x18, 0x7b, 0xfe, 0x28, - 0x31, 0xd1, 0x58, 0x7b, 0x01, 0x28, 0x2a, 0xd1, - 0x02, 0x21, 0x02, 0xa8, 0xd6, 0xf7, 0xe7, 0xfa, - 0x00, 0xab, 0x18, 0x89, 0x00, 0x28, 0x26, 0xd0, - 0x18, 0x89, 0x18, 0x49, 0x88, 0x42, 0x22, 0xd0, - 0x19, 0x89, 0x00, 0x20, 0xbf, 0xf7, 0x3c, 0x00, - 0xb0, 0x23, 0x04, 0x00, 0x13, 0xf9, 0x04, 0x1c, - 0x00, 0x69, 0x00, 0xab, 0x19, 0x89, 0xd6, 0xf7, - 0xd5, 0xfa, 0x20, 0x68, 0x00, 0xab, 0x1a, 0x89, - 0x01, 0x1c, 0x08, 0x31, 0x08, 0x3a, 0xcb, 0xf7, - 0xa1, 0xf9, 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28, - 0x04, 0xd0, 0x02, 0x21, 0x94, 0x20, 0x37, 0x60, - 0xbe, 0xf7, 0x62, 0xff, 0x20, 0x1c, 0xbf, 0xf7, - 0xc7, 0xf8, 0xd4, 0xe7, 0x01, 0x21, 0x94, 0x20, - 0x3c, 0x00, 0xec, 0x23, 0x04, 0x00, 0xbe, 0xf7, - 0x5a, 0xff, 0xd5, 0xf7, 0x26, 0xff, 0x01, 0x35, - 0x2d, 0x06, 0x2d, 0x0e, 0x04, 0x2d, 0xa5, 0xd3, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x58, 0x57, - 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0a, 0x48, - 0x00, 0x21, 0x02, 0x1c, 0x18, 0x32, 0x80, 0xb5, - 0x09, 0x4b, 0x02, 0xe0, 0x01, 0x60, 0x83, 0x80, - 0x08, 0x30, 0x82, 0x42, 0xfa, 0xd1, 0x04, 0x48, - 0x6c, 0x21, 0x3c, 0x00, 0x28, 0x24, 0x04, 0x00, - 0x6c, 0x38, 0xbe, 0xf7, 0x37, 0xf8, 0x04, 0x49, - 0x02, 0x20, 0xc7, 0xf7, 0xd1, 0xff, 0x80, 0xbd, - 0x7c, 0x79, 0x01, 0x00, 0xfc, 0x05, 0x00, 0x00, - 0x9d, 0x75, 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x26, 0x20, 0x0d, 0x4a, 0xd1, 0xf7, 0x7c, 0xf9, - 0x0c, 0x48, 0xc8, 0xf7, 0x73, 0xff, 0x0c, 0x48, - 0xc8, 0xf7, 0x76, 0xff, 0x0b, 0x49, 0x10, 0x20, - 0xcf, 0xf7, 0x94, 0xff, 0x3c, 0x00, 0x64, 0x24, - 0x04, 0x00, 0x0a, 0x49, 0x0c, 0x20, 0xcf, 0xf7, - 0x90, 0xff, 0x09, 0x49, 0x00, 0x20, 0xc7, 0xf7, - 0xb2, 0xff, 0xcc, 0xf7, 0x6e, 0xff, 0x07, 0x49, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0x9d, 0xa6, - 0x00, 0x00, 0xa9, 0xa4, 0x00, 0x00, 0x81, 0xa4, - 0x00, 0x00, 0x31, 0xa7, 0x00, 0x00, 0xb9, 0x6d, - 0x00, 0x00, 0xbd, 0xa6, 0x00, 0x00, 0x0c, 0x79, - 0x01, 0x00, 0x02, 0x49, 0x08, 0x78, 0x3c, 0x00, - 0xa0, 0x24, 0x04, 0x00, 0x40, 0x08, 0x40, 0x00, - 0x08, 0x70, 0x70, 0x47, 0x58, 0x00, 0x07, 0x00, - 0x00, 0x21, 0x08, 0x48, 0x80, 0xb5, 0x41, 0x61, - 0x81, 0x61, 0x01, 0x70, 0x41, 0x70, 0x41, 0x60, - 0x81, 0x60, 0x14, 0x22, 0xc2, 0x60, 0x01, 0x61, - 0x42, 0x62, 0xc1, 0x61, 0xff, 0xf7, 0x04, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x1d, 0x20, 0x04, 0x4a, - 0x3c, 0x00, 0xdc, 0x24, 0x04, 0x00, 0xd1, 0xf7, - 0x34, 0xf9, 0x03, 0x49, 0x08, 0x20, 0xcf, 0xf7, - 0x52, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x11, 0xe3, - 0x00, 0x00, 0x09, 0xe4, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x25, 0x20, 0x0a, 0x4a, 0xd1, 0xf7, - 0x24, 0xf9, 0xcc, 0xf7, 0x28, 0xff, 0x08, 0x49, - 0x08, 0x62, 0x08, 0x49, 0x01, 0x20, 0xcf, 0xf7, - 0x3e, 0xff, 0x07, 0x49, 0x02, 0x20, 0xcf, 0xf7, - 0x3a, 0xff, 0x3c, 0x00, 0x18, 0x25, 0x04, 0x00, - 0xfe, 0xf7, 0xe6, 0xff, 0x05, 0x48, 0xc1, 0xf7, - 0xe1, 0xf9, 0x80, 0xbd, 0x29, 0xa9, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0xa1, 0xaa, 0x00, 0x00, - 0x2d, 0x19, 0x00, 0x00, 0x45, 0xa8, 0x00, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x0c, 0x22, 0x22, 0x70, - 0xa0, 0x18, 0x05, 0x49, 0xbd, 0xf7, 0xd8, 0xff, - 0x00, 0x20, 0xc8, 0xf7, 0x85, 0xfb, 0x01, 0x20, - 0xa0, 0x60, 0x10, 0xbd, 0x3c, 0x00, 0x54, 0x25, - 0x04, 0x00, 0xa4, 0x69, 0x01, 0x00, 0x90, 0x57, - 0x01, 0x00, 0xb0, 0xb5, 0x1f, 0x4c, 0x00, 0x25, - 0x65, 0x80, 0x01, 0x20, 0x20, 0x70, 0x0a, 0x20, - 0xa0, 0x80, 0x90, 0x20, 0xe0, 0x80, 0x30, 0x20, - 0x20, 0x81, 0x90, 0x20, 0x60, 0x81, 0x30, 0x20, - 0xa0, 0x81, 0x17, 0x48, 0x04, 0x22, 0x07, 0x21, - 0x12, 0x30, 0xbe, 0xf7, 0x4c, 0xf8, 0x14, 0x48, - 0x04, 0x22, 0x05, 0x21, 0x16, 0x30, 0x3c, 0x00, - 0x90, 0x25, 0x04, 0x00, 0xbe, 0xf7, 0x46, 0xf8, - 0x12, 0x48, 0x11, 0x4a, 0xe0, 0x81, 0x20, 0x82, - 0x70, 0x32, 0x15, 0x70, 0x55, 0x70, 0x00, 0x20, - 0x3c, 0x23, 0x41, 0x01, 0x43, 0x43, 0x89, 0x18, - 0xf4, 0x31, 0x9b, 0x18, 0x01, 0x30, 0x04, 0x28, - 0x59, 0x60, 0xf5, 0xdb, 0x08, 0x48, 0x06, 0x22, - 0x1a, 0x30, 0x09, 0x49, 0xbd, 0xf7, 0x9a, 0xff, - 0x07, 0x48, 0x05, 0x4c, 0x0c, 0x30, 0x0f, 0xc8, - 0x3c, 0x00, 0xcc, 0x25, 0x04, 0x00, 0x20, 0x34, - 0x0f, 0xc4, 0x20, 0x21, 0x20, 0x1c, 0xbd, 0xf7, - 0x62, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0x2c, 0x09, 0x00, 0x00, 0x58, 0x40, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x07, 0x48, - 0x10, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x08, 0xd0, - 0x06, 0x48, 0xbe, 0xf7, 0x9c, 0xfe, 0x04, 0x1c, - 0xff, 0xf7, 0x9d, 0xfe, 0x20, 0x1c, 0xbe, 0xf7, - 0x96, 0xfe, 0x3c, 0x00, 0x08, 0x26, 0x04, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0x58, 0x57, 0x01, 0x00, - 0xb5, 0xad, 0x00, 0x00, 0x04, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x88, 0x70, 0x02, 0x21, 0x20, 0x20, - 0x02, 0x4a, 0xd1, 0xf7, 0x91, 0xf8, 0x80, 0xbd, - 0xb4, 0x79, 0x01, 0x00, 0x25, 0xb5, 0x00, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x8f, 0xfe, 0x01, 0x49, - 0x48, 0x61, 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x18, 0x21, 0x3c, 0x00, 0x44, 0x26, - 0x04, 0x00, 0x14, 0x48, 0xbd, 0xf7, 0x29, 0xff, - 0x14, 0x48, 0x01, 0x21, 0x01, 0x70, 0x00, 0x21, - 0xc1, 0x60, 0x41, 0x70, 0x01, 0x61, 0x00, 0xf0, - 0x02, 0xf9, 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0, - 0x1e, 0xf8, 0x00, 0xf0, 0xba, 0xf9, 0x00, 0xf0, - 0xcc, 0xf9, 0x00, 0xf0, 0x20, 0xf9, 0x00, 0xf0, - 0x64, 0xf9, 0x00, 0xf0, 0xce, 0xf9, 0x00, 0xf0, - 0xfc, 0xf8, 0x00, 0xf0, 0x82, 0xf9, 0x3c, 0x00, - 0x80, 0x26, 0x04, 0x00, 0x00, 0xf0, 0x28, 0xf8, - 0x00, 0xf0, 0x6e, 0xf8, 0x00, 0xf0, 0x4a, 0xf8, - 0xff, 0xf7, 0xc2, 0xff, 0x00, 0xf0, 0x72, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c, - 0x00, 0x25, 0x08, 0x48, 0x25, 0x77, 0x20, 0x60, - 0xce, 0xf7, 0xf0, 0xfd, 0x00, 0x20, 0xe5, 0x62, - 0xd0, 0xf7, 0xd0, 0xfa, 0x21, 0x1f, 0x08, 0x80, - 0x3c, 0x00, 0xbc, 0x26, 0x04, 0x00, 0xd0, 0xf7, - 0x6c, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x80, 0xb5, - 0xcc, 0xf7, 0xc1, 0xfc, 0x80, 0xbd, 0x05, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x70, 0x48, 0x70, - 0x03, 0x48, 0x04, 0x49, 0x03, 0x4a, 0x08, 0x30, - 0xcc, 0xf7, 0x27, 0xfe, 0x80, 0xbd, 0x2c, 0x63, - 0x01, 0x00, 0xed, 0xbc, 0x00, 0x00, 0x4d, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x26, 0x04, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x2b, 0xfe, 0x05, 0x49, - 0x48, 0x60, 0x01, 0x1c, 0x04, 0x48, 0xcc, 0xf7, - 0x4b, 0xfe, 0x04, 0x49, 0x03, 0x20, 0xcf, 0xf7, - 0x3d, 0xfe, 0x80, 0xbd, 0x2c, 0x63, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xc1, 0xbc, 0x00, 0x00, - 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x02, 0x49, 0x10, 0x38, - 0x01, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x34, 0x27, - 0x04, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x1c, 0xe6, - 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x09, 0xfe, - 0x05, 0x49, 0x05, 0x4a, 0x48, 0x60, 0x02, 0x21, - 0x24, 0x20, 0xd0, 0xf7, 0xfc, 0xff, 0x03, 0x48, - 0xc9, 0xf7, 0x6b, 0xfd, 0x80, 0xbd, 0x04, 0x7a, - 0x01, 0x00, 0x69, 0xbe, 0x00, 0x00, 0x71, 0xeb, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x4c, 0x14, 0x21, - 0x20, 0x1c, 0xbd, 0xf7, 0x96, 0xfe, 0x3c, 0x00, - 0x70, 0x27, 0x04, 0x00, 0x02, 0x48, 0x20, 0x60, - 0x10, 0xbd, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, - 0xec, 0xe5, 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, - 0xe7, 0xfd, 0x07, 0x49, 0x07, 0x4a, 0x48, 0x60, - 0x02, 0x21, 0x1f, 0x20, 0xd0, 0xf7, 0xda, 0xff, - 0x05, 0x49, 0x01, 0x20, 0x08, 0x60, 0x05, 0x49, - 0x0c, 0x20, 0xcf, 0xf7, 0xf5, 0xfd, 0x80, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0xd5, 0xbf, 0x00, 0x00, - 0x3c, 0x00, 0xac, 0x27, 0x04, 0x00, 0x80, 0x5a, - 0x01, 0x00, 0x85, 0xff, 0x00, 0x00, 0x80, 0xb5, - 0xff, 0xf7, 0x4f, 0xfd, 0x01, 0x21, 0x21, 0x20, - 0x02, 0x4a, 0xd0, 0xf7, 0xc2, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xc9, 0xc1, 0x00, 0x00, 0x80, 0xb5, - 0xcc, 0xf7, 0xc1, 0xfd, 0x02, 0x49, 0x08, 0x63, - 0xc9, 0xf7, 0x57, 0xfd, 0x80, 0xbd, 0x28, 0x7a, - 0x01, 0x00, 0x10, 0xb5, 0xcc, 0xf7, 0xb7, 0xfd, - 0x16, 0x4c, 0x3c, 0x00, 0xe8, 0x27, 0x04, 0x00, - 0x20, 0x61, 0xcc, 0xf7, 0xb3, 0xfd, 0x60, 0x61, - 0x14, 0x48, 0x15, 0x49, 0x08, 0x60, 0x16, 0x49, - 0x14, 0x48, 0x08, 0x60, 0xcc, 0xf7, 0xaa, 0xfd, - 0x14, 0x49, 0x08, 0x60, 0x00, 0xf0, 0x34, 0xf8, - 0xff, 0xf7, 0xe0, 0xff, 0xff, 0xf7, 0x5e, 0xff, - 0x00, 0xf0, 0x04, 0xf9, 0x00, 0xf0, 0x8e, 0xf8, - 0xff, 0xf7, 0x6e, 0xff, 0xff, 0xf7, 0xb0, 0xff, - 0xff, 0xf7, 0x8c, 0xff, 0x3c, 0x00, 0x24, 0x28, - 0x04, 0x00, 0xff, 0xf7, 0x04, 0xff, 0x00, 0xf0, - 0xaa, 0xf8, 0x0a, 0x48, 0xbf, 0xf7, 0xbd, 0xff, - 0xc9, 0xf7, 0xbb, 0xfd, 0x09, 0x49, 0x00, 0x20, - 0xcf, 0xf7, 0xa7, 0xfd, 0x10, 0xbd, 0x40, 0x7c, - 0x01, 0x00, 0x7d, 0xb7, 0x00, 0x00, 0x18, 0x7e, - 0x01, 0x00, 0xbd, 0xb8, 0x00, 0x00, 0x1c, 0x7e, - 0x01, 0x00, 0x20, 0x7e, 0x01, 0x00, 0xb9, 0xba, - 0x00, 0x00, 0x81, 0x24, 0x01, 0x00, 0x3c, 0x00, - 0x60, 0x28, 0x04, 0x00, 0x80, 0xb5, 0x38, 0x21, - 0x01, 0x48, 0xbd, 0xf7, 0x19, 0xfe, 0x80, 0xbd, - 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d, 0x00, 0x20, - 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60, 0xe0, 0x60, - 0x0a, 0x20, 0x20, 0x81, 0x28, 0x1c, 0xc8, 0xf7, - 0x3f, 0xfd, 0x28, 0x1c, 0xc8, 0xf7, 0x3a, 0xfd, - 0x08, 0x3d, 0x68, 0x60, 0x04, 0x48, 0xc9, 0xf7, - 0x3c, 0x00, 0x9c, 0x28, 0x04, 0x00, 0x1b, 0xfd, - 0x20, 0x1c, 0xc0, 0xf7, 0x6e, 0xfa, 0x28, 0x80, - 0xb0, 0xbd, 0xb8, 0x7a, 0x01, 0x00, 0xd5, 0x33, - 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x1d, 0x4c, - 0x00, 0x20, 0x0c, 0x21, 0x41, 0x43, 0x82, 0x00, - 0x01, 0x30, 0x09, 0x19, 0x08, 0x31, 0x00, 0x06, - 0x00, 0x0e, 0x04, 0x28, 0xb1, 0x50, 0xf4, 0xd3, - 0x18, 0x48, 0x0c, 0x38, 0x30, 0x61, 0xce, 0xf7, - 0xf4, 0xf9, 0x3c, 0x00, 0xd8, 0x28, 0x04, 0x00, - 0x14, 0x4c, 0xa0, 0x78, 0x00, 0x09, 0x00, 0x01, - 0xa0, 0x70, 0x00, 0x27, 0xe7, 0x70, 0x67, 0x70, - 0x00, 0x24, 0xa5, 0x00, 0x70, 0x59, 0x07, 0x70, - 0x20, 0x1c, 0xbe, 0xf7, 0x53, 0xf9, 0x71, 0x59, - 0x08, 0x71, 0x00, 0x21, 0x20, 0x1c, 0xce, 0xf7, - 0x7d, 0xf9, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x04, 0x2c, 0xee, 0xd3, 0x07, 0x4c, 0x20, 0x78, - 0x00, 0x09, 0x00, 0x01, 0x3c, 0x00, 0x14, 0x29, - 0x04, 0x00, 0x0a, 0x30, 0x20, 0x70, 0x20, 0x78, - 0xf0, 0x21, 0x88, 0x43, 0x30, 0x30, 0x20, 0x70, - 0xa0, 0x78, 0x0f, 0x21, 0x08, 0x43, 0xa0, 0x70, - 0xf8, 0xbd, 0x00, 0x50, 0x07, 0x00, 0x10, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x9f, 0xfb, - 0x80, 0xbd, 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d, - 0x00, 0x20, 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60, - 0xe0, 0x60, 0x0a, 0x20, 0x20, 0x81, 0x3c, 0x00, - 0x50, 0x29, 0x04, 0x00, 0x28, 0x1c, 0xc8, 0xf7, - 0xe1, 0xfc, 0x28, 0x1c, 0xc8, 0xf7, 0xd4, 0xfc, - 0x08, 0x3d, 0x68, 0x60, 0x20, 0x1c, 0xc0, 0xf7, - 0x0d, 0xfa, 0x28, 0x80, 0x02, 0x48, 0xc9, 0xf7, - 0x9b, 0xfc, 0xb0, 0xbd, 0x2c, 0x7b, 0x01, 0x00, - 0x49, 0x00, 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7, - 0x2f, 0xf8, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, - 0xb0, 0xb5, 0x12, 0x4d, 0x3c, 0x21, 0x28, 0x1c, - 0x3c, 0x00, 0x8c, 0x29, 0x04, 0x00, 0xbd, 0xf7, - 0x86, 0xfd, 0x0f, 0x48, 0x28, 0x21, 0x3c, 0x30, - 0xbd, 0xf7, 0x81, 0xfd, 0x0d, 0x48, 0x00, 0x21, - 0x14, 0x38, 0x01, 0x61, 0xc1, 0x60, 0xff, 0x21, - 0x01, 0x70, 0x41, 0x70, 0x0a, 0x49, 0x0a, 0x4a, - 0x41, 0x60, 0x01, 0x21, 0x0c, 0x20, 0xd0, 0xf7, - 0xc8, 0xfe, 0x2c, 0x1c, 0x30, 0x34, 0x0c, 0x3d, - 0x00, 0x20, 0xd0, 0xf7, 0x4a, 0xf9, 0x20, 0x80, - 0x0c, 0x3c, 0x3c, 0x00, 0xc8, 0x29, 0x04, 0x00, - 0xac, 0x42, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00, - 0x60, 0x7b, 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00, - 0x35, 0xcd, 0x00, 0x00, 0x08, 0x49, 0x00, 0x20, - 0x0c, 0x22, 0x42, 0x43, 0x52, 0x18, 0x10, 0x71, - 0x01, 0x30, 0x05, 0x28, 0xf8, 0xdb, 0x04, 0x48, - 0x00, 0x21, 0x08, 0x38, 0x01, 0x70, 0x41, 0x60, - 0xff, 0x21, 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, - 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x04, 0x2a, - 0x04, 0x00, 0x80, 0xb5, 0x78, 0x21, 0x01, 0x48, - 0xbd, 0xf7, 0x47, 0xfd, 0x80, 0xbd, 0xc4, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7, 0x97, 0xfa, - 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x0b, 0x4c, 0xff, 0x21, 0x05, 0x31, 0x20, 0x1c, - 0xbd, 0xf7, 0x37, 0xfd, 0x09, 0x48, 0xf0, 0x21, - 0x08, 0x51, 0x20, 0x1c, 0x40, 0x30, 0xc5, 0xf7, - 0x8e, 0xf9, 0x6c, 0x21, 0x06, 0x48, 0x3c, 0x00, - 0x40, 0x2a, 0x04, 0x00, 0xbd, 0xf7, 0x2c, 0xfd, - 0x04, 0x48, 0xc0, 0x21, 0x6c, 0x30, 0xbd, 0xf7, - 0x27, 0xfd, 0x10, 0xbd, 0xc4, 0x69, 0x01, 0x00, - 0xb0, 0xd9, 0x01, 0x00, 0xc8, 0x6a, 0x01, 0x00, - 0xb0, 0xb5, 0x0b, 0x4d, 0x00, 0x24, 0x1c, 0x20, - 0x60, 0x43, 0x40, 0x19, 0x6c, 0x30, 0xc3, 0xf7, - 0x0f, 0xfe, 0x01, 0x34, 0x04, 0x2c, 0xf6, 0xdb, - 0xcc, 0xf7, 0x6e, 0xfc, 0xa8, 0x63, 0xc7, 0xf7, - 0x3c, 0x00, 0x7c, 0x2a, 0x04, 0x00, 0x75, 0xf9, - 0x04, 0x48, 0xc9, 0xf7, 0x1c, 0xfc, 0x03, 0x48, - 0xcf, 0xf7, 0x03, 0xfa, 0xb0, 0xbd, 0xc4, 0x69, - 0x01, 0x00, 0xfd, 0x80, 0x00, 0x00, 0xe1, 0x22, - 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x20, - 0x20, 0x80, 0x03, 0x48, 0x06, 0x21, 0x08, 0x30, - 0xbd, 0xf7, 0xd5, 0xfc, 0x14, 0x20, 0x60, 0x60, - 0x10, 0xbd, 0x98, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x08, 0x4c, 0x3c, 0x00, 0xb8, 0x2a, 0x04, 0x00, - 0x00, 0x20, 0x20, 0x80, 0x60, 0x80, 0x06, 0x48, - 0x06, 0x21, 0x0c, 0x30, 0xbd, 0xf7, 0xc6, 0xfc, - 0x03, 0x48, 0x06, 0x21, 0x12, 0x30, 0xbd, 0xf7, - 0xc1, 0xfc, 0x14, 0x20, 0xa0, 0x60, 0x10, 0xbd, - 0x58, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x0d, 0x20, 0x05, 0x4a, - 0xd0, 0xf7, 0x2e, 0xfe, 0x04, 0x48, 0xc8, 0xf7, - 0x1f, 0xfc, 0x04, 0x48, 0x3c, 0x00, 0xf4, 0x2a, - 0x04, 0x00, 0xca, 0xf7, 0x44, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x51, 0xb1, - 0x00, 0x00, 0x09, 0xb1, 0x00, 0x00, 0x08, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x60, 0xff, 0xf7, - 0xd0, 0xff, 0xff, 0xf7, 0xc0, 0xff, 0xff, 0xf7, - 0x04, 0xfc, 0x00, 0xf0, 0x4a, 0xf8, 0xff, 0xf7, - 0x0a, 0xfc, 0x00, 0xf0, 0x3c, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x3c, 0x00, - 0x30, 0x2b, 0x04, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x29, 0xf8, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0xf0, - 0x51, 0xf8, 0x00, 0xf0, 0x31, 0xf8, 0x80, 0xbd, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0xff, 0x21, 0x89, 0x31, 0x02, 0x48, - 0xbd, 0xf7, 0xa2, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0xdc, 0x71, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x49, - 0x08, 0x20, 0xcf, 0xf7, 0x11, 0xfc, 0x80, 0xbd, - 0x3c, 0x00, 0x6c, 0x2b, 0x04, 0x00, 0x59, 0xd9, - 0x00, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7, - 0x4c, 0xf9, 0x02, 0x49, 0x48, 0x80, 0x80, 0xbd, - 0x00, 0x00, 0x8d, 0x1f, 0x00, 0x00, 0x98, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7, - 0x40, 0xf9, 0x02, 0x49, 0x88, 0x80, 0x80, 0xbd, - 0x00, 0x00, 0xd5, 0x23, 0x00, 0x00, 0x58, 0x7c, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, - 0x02, 0x48, 0x3c, 0x00, 0xa8, 0x2b, 0x04, 0x00, - 0xca, 0xf7, 0xe4, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x71, 0xe0, 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7, - 0xa5, 0xfb, 0x02, 0x21, 0x0f, 0x20, 0x06, 0x4a, - 0xd0, 0xf7, 0xc2, 0xfd, 0x14, 0x21, 0x05, 0x48, - 0xbd, 0xf7, 0x68, 0xfc, 0x03, 0x48, 0x78, 0x21, - 0x14, 0x30, 0xbd, 0xf7, 0x63, 0xfc, 0x80, 0xbd, - 0x35, 0xe2, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x3c, 0x00, 0xe4, 0x2b, - 0x04, 0x00, 0xb7, 0xfb, 0x05, 0x49, 0x08, 0x61, - 0x05, 0x49, 0x0e, 0x20, 0xcf, 0xf7, 0xcd, 0xfb, - 0x04, 0x49, 0x08, 0x20, 0xcf, 0xf7, 0xc9, 0xfb, - 0x80, 0xbd, 0xec, 0x65, 0x01, 0x00, 0x01, 0x02, - 0x01, 0x00, 0xc1, 0x2e, 0x00, 0x00, 0x01, 0x49, - 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x40, 0xd9, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, - 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x3c, 0x00, - 0x20, 0x2c, 0x04, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x07, 0x48, 0xc8, 0xf7, 0xf2, 0xff, - 0x06, 0x49, 0x48, 0x60, 0x06, 0x48, 0xc0, 0xf7, - 0x07, 0xfb, 0x06, 0x48, 0xc0, 0xf7, 0x86, 0xfb, - 0x05, 0x48, 0xc9, 0xf7, 0xa3, 0xfa, 0x80, 0xbd, - 0xa9, 0xe4, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0xb9, 0xe4, 0x00, 0x00, 0x85, 0x2e, 0x00, 0x00, - 0x81, 0xe4, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0x5c, 0x2c, 0x04, 0x00, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0, - 0x10, 0x38, 0xc8, 0x21, 0x01, 0x60, 0x00, 0x21, - 0x0c, 0x38, 0x02, 0x4a, 0xcc, 0xf7, 0x61, 0xfb, - 0x80, 0xbd, 0xd0, 0x60, 0x01, 0x00, 0xfd, 0xe5, - 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x67, 0xfb, - 0x04, 0x49, 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48, - 0x04, 0x30, 0xcc, 0xf7, 0x86, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x98, 0x2c, 0x04, 0x00, - 0xc0, 0x60, 0x01, 0x00, 0x09, 0x48, 0x80, 0xb5, - 0x0a, 0x21, 0x01, 0x70, 0x41, 0x70, 0x08, 0x49, - 0x08, 0x4a, 0x81, 0x60, 0x00, 0x21, 0xc1, 0x60, - 0x52, 0x79, 0x82, 0x70, 0x01, 0x61, 0x41, 0x61, - 0x28, 0x21, 0x18, 0x30, 0xbd, 0xf7, 0xee, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00, - 0xf8, 0xb5, 0x0f, 0x49, 0x3c, 0x00, 0xd4, 0x2c, - 0x04, 0x00, 0x0f, 0x48, 0x0d, 0x88, 0x4f, 0x88, - 0x06, 0x79, 0x00, 0x24, 0x30, 0x1b, 0x68, 0x43, - 0x68, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0x0f, 0xfd, - 0x61, 0x00, 0x09, 0x4a, 0xa6, 0x42, 0x50, 0x52, - 0x00, 0xd1, 0x3d, 0x1c, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x0e, 0x10, 0x2c, 0xea, 0xd3, 0x05, 0x49, - 0x01, 0x20, 0x08, 0x61, 0xf8, 0xbd, 0x3c, 0x00, - 0x10, 0x2d, 0x04, 0x00, 0xf6, 0x59, 0x01, 0x00, - 0x0c, 0x5a, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00, - 0x12, 0x5a, 0x01, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfa, 0x02, 0x49, - 0x01, 0x20, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x08, 0x1c, 0x0f, 0x49, 0x49, 0x79, 0x00, 0x29, - 0x01, 0xd1, 0x0e, 0x4b, 0x00, 0xe0, 0x0e, 0x4b, - 0x3c, 0x00, 0x4c, 0x2d, 0x04, 0x00, 0x00, 0x2c, - 0x07, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x0a, 0x1c, - 0x01, 0x24, 0x19, 0x1c, 0xbd, 0xf7, 0xcd, 0xfb, - 0x0a, 0xe0, 0x01, 0x24, 0x01, 0x1c, 0x18, 0x1c, - 0x12, 0x88, 0xbd, 0xf7, 0xc6, 0xfb, 0x00, 0xf0, - 0xc4, 0xfa, 0x05, 0x49, 0x01, 0x20, 0x08, 0x61, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x0c, 0x5a, - 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00, 0xfa, 0x59, - 0x01, 0x00, 0x3c, 0x00, 0x88, 0x2d, 0x04, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0x0d, 0x48, 0x8c, 0xb5, - 0xc1, 0x88, 0x00, 0xab, 0x0c, 0x4a, 0x99, 0x80, - 0x01, 0x89, 0x04, 0x20, 0xd9, 0x80, 0x18, 0x80, - 0x02, 0x21, 0x13, 0x20, 0xd0, 0xf7, 0xd0, 0xfc, - 0x00, 0xf0, 0xa6, 0xfa, 0x07, 0x49, 0x01, 0x20, - 0x08, 0x61, 0xff, 0xf7, 0x8d, 0xff, 0x6a, 0x46, - 0x01, 0xa9, 0x00, 0x20, 0xff, 0xf7, 0xbc, 0xff, - 0x8c, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xc4, 0x2d, - 0x04, 0x00, 0xf4, 0x59, 0x01, 0x00, 0x95, 0xf9, - 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, 0xf8, 0xb5, - 0x13, 0x4e, 0x01, 0x25, 0xb5, 0x70, 0x05, 0x20, - 0xf0, 0x70, 0x11, 0x49, 0x10, 0x48, 0x0e, 0xc9, - 0x2c, 0x30, 0x0e, 0xc0, 0x00, 0x20, 0x70, 0x61, - 0x0f, 0x48, 0x0f, 0x49, 0x10, 0x4f, 0x00, 0x24, - 0x48, 0x60, 0xa0, 0x00, 0x39, 0x58, 0x20, 0x1c, - 0xd1, 0xf7, 0xd7, 0xf8, 0x01, 0x34, 0x3c, 0x00, - 0x00, 0x2e, 0x04, 0x00, 0x10, 0x2c, 0xf7, 0xd3, - 0x06, 0x4c, 0x0b, 0x4a, 0x20, 0x34, 0x20, 0x1c, - 0x0a, 0x49, 0xb5, 0x60, 0xcc, 0xf7, 0x92, 0xfa, - 0xcc, 0xf7, 0x9e, 0xfa, 0x30, 0x61, 0x20, 0x60, - 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x04, 0x18, 0x02, 0x00, - 0x60, 0x00, 0x07, 0x00, 0xd4, 0x44, 0x01, 0x00, - 0x45, 0xfa, 0x00, 0x00, 0x71, 0xfa, 0x00, 0x00, - 0x3c, 0x00, 0x3c, 0x2e, 0x04, 0x00, 0x0c, 0x49, - 0x30, 0xb5, 0x00, 0x23, 0xcc, 0x56, 0x0b, 0x4b, - 0x00, 0x20, 0xf0, 0x25, 0x1a, 0x5c, 0x11, 0x07, - 0x09, 0x0f, 0x09, 0x19, 0x0f, 0x29, 0x01, 0xdd, - 0x0f, 0x21, 0x02, 0xe0, 0x00, 0x29, 0x00, 0xda, - 0x00, 0x21, 0x2a, 0x40, 0x51, 0x18, 0x19, 0x54, - 0x01, 0x30, 0x0e, 0x28, 0xee, 0xdb, 0x30, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xc0, 0x58, - 0x01, 0x00, 0x3c, 0x00, 0x78, 0x2e, 0x04, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28, 0x08, 0xd0, - 0x01, 0x24, 0x14, 0x80, 0x05, 0x20, 0xcc, 0xf7, - 0xb5, 0xf8, 0x80, 0x03, 0xc0, 0x0f, 0x28, 0x70, - 0x07, 0xe0, 0x28, 0x78, 0x01, 0x22, 0x41, 0x04, - 0x52, 0x04, 0x05, 0x20, 0xd0, 0xf7, 0xae, 0xfd, - 0x01, 0x24, 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, - 0x98, 0xb5, 0x05, 0x4c, 0x60, 0x68, 0xcc, 0xf7, - 0xf5, 0xfd, 0x00, 0x90, 0x3c, 0x00, 0xb4, 0x2e, - 0x04, 0x00, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80, - 0xce, 0xf7, 0xfb, 0xff, 0x98, 0xbd, 0xa0, 0x58, - 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c, - 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0, - 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24, - 0x29, 0x1c, 0xbd, 0xf7, 0x0c, 0xfb, 0x22, 0xe0, - 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c, - 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0x3c, 0x00, - 0xf0, 0x2e, 0x04, 0x00, 0x03, 0xfb, 0x00, 0x98, - 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30, 0x00, 0xe0, - 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20, - 0xbd, 0xf7, 0x98, 0xfb, 0x01, 0x06, 0x09, 0x16, - 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7, - 0x85, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1, - 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7, - 0xe9, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0x3c, 0x00, 0x2c, 0x2f, 0x04, 0x00, 0xda, 0x59, - 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c, - 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0, - 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24, - 0x29, 0x1c, 0xbd, 0xf7, 0xd6, 0xfa, 0x22, 0xe0, - 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c, - 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0xcd, 0xfa, - 0x00, 0x98, 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30, - 0x00, 0xe0, 0x3c, 0x00, 0x68, 0x2f, 0x04, 0x00, - 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20, - 0xbd, 0xf7, 0x62, 0xfb, 0x01, 0x06, 0x09, 0x16, - 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7, - 0x4f, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1, - 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7, - 0xb3, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0xcc, 0x59, 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5, - 0x01, 0x78, 0x00, 0x20, 0x3c, 0x00, 0xa4, 0x2f, - 0x04, 0x00, 0xcc, 0xf7, 0xb4, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x02, 0x49, 0x03, 0x20, 0x08, 0x70, - 0x00, 0x20, 0x48, 0x70, 0x70, 0x47, 0x9c, 0x73, - 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x11, 0x20, - 0x02, 0x4a, 0xd0, 0xf7, 0xbc, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xa1, 0xfe, 0x00, 0x00, 0xf0, 0xb5, - 0x0b, 0x4f, 0x1c, 0x1c, 0x00, 0x23, 0x3c, 0x00, - 0xe0, 0x2f, 0x04, 0x00, 0xfd, 0x56, 0x2b, 0x1c, - 0x06, 0x2d, 0x01, 0xd1, 0x01, 0x20, 0xf0, 0xbd, - 0x06, 0x4e, 0x05, 0x1c, 0xd8, 0x00, 0x34, 0x36, - 0x35, 0x54, 0x80, 0x19, 0x41, 0x70, 0x82, 0x70, - 0x44, 0x60, 0x58, 0x1c, 0x38, 0x70, 0x00, 0x20, - 0xf0, 0xbd, 0x00, 0x00, 0x98, 0x5a, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x48, 0x00, 0xf0, - 0x21, 0xf9, 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0, - 0x3c, 0x00, 0x1c, 0x30, 0x04, 0x00, 0x01, 0x23, - 0xe0, 0x56, 0x06, 0x21, 0x00, 0xf0, 0xcd, 0xf8, - 0x08, 0x4a, 0x01, 0x21, 0x10, 0x78, 0x08, 0x43, - 0x07, 0x49, 0x08, 0x70, 0x20, 0x23, 0x18, 0x43, - 0x08, 0x70, 0x80, 0x23, 0x18, 0x43, 0x10, 0x70, - 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x91, 0x9b, - 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x10, 0xb5, 0x0a, 0x49, 0x04, 0x1c, - 0x08, 0x78, 0x3c, 0x00, 0x58, 0x30, 0x04, 0x00, - 0x40, 0x08, 0x40, 0x00, 0x08, 0x70, 0x08, 0x49, - 0x08, 0x70, 0x08, 0x48, 0x00, 0xf0, 0xf8, 0xf8, - 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0, 0x01, 0x23, - 0xe0, 0x56, 0x05, 0x21, 0x00, 0xf0, 0xa4, 0xf8, - 0x10, 0xbd, 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00, - 0x04, 0x00, 0x07, 0x00, 0x91, 0x9b, 0x00, 0x00, - 0x03, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x3c, 0x00, 0x94, 0x30, - 0x04, 0x00, 0x70, 0x47, 0x00, 0x00, 0xe8, 0x60, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x00, 0x20, 0x60, 0x60, 0x20, 0x80, - 0xe0, 0x60, 0x02, 0x21, 0x14, 0x20, 0x04, 0x4a, - 0xd0, 0xf7, 0x49, 0xfb, 0x02, 0x48, 0x10, 0x30, - 0xa0, 0x60, 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x05, 0x1d, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x10, 0xb5, 0x48, 0x21, 0x3c, 0x00, - 0xd0, 0x30, 0x04, 0x00, 0x0a, 0x48, 0xbd, 0xf7, - 0xe3, 0xf9, 0x09, 0x4c, 0xe0, 0x21, 0x48, 0x34, - 0x20, 0x1c, 0xbd, 0xf7, 0xdd, 0xf9, 0x00, 0x20, - 0xc1, 0x00, 0x09, 0x19, 0x0a, 0x1c, 0x08, 0x32, - 0x01, 0x30, 0x1b, 0x28, 0x4a, 0x60, 0xf7, 0xd3, - 0x01, 0x48, 0x04, 0x38, 0x04, 0x60, 0x10, 0xbd, - 0x68, 0x5b, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x23, 0x20, 0x02, 0x4a, 0xd0, 0xf7, 0x1e, 0xfb, - 0x3c, 0x00, 0x0c, 0x31, 0x04, 0x00, 0x80, 0xbd, - 0x00, 0x00, 0x45, 0x23, 0x01, 0x00, 0x80, 0xb5, - 0xff, 0xf7, 0x6b, 0xf8, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0xf8, 0xb5, 0x01, 0x20, 0x1d, 0x49, - 0xc0, 0x07, 0x48, 0x60, 0x1d, 0x49, 0xff, 0x20, - 0x08, 0x73, 0x1c, 0x4e, 0x10, 0x20, 0x30, 0x60, - 0x05, 0x01, 0x35, 0x60, 0x1b, 0x4c, 0x80, 0x21, - 0x20, 0x1c, 0xbd, 0xf7, 0xac, 0xf9, 0x00, 0x21, - 0x19, 0x4a, 0x3c, 0x00, 0x48, 0x31, 0x04, 0x00, - 0x15, 0x4f, 0x00, 0x20, 0x0b, 0x01, 0x1b, 0x19, - 0x5a, 0x60, 0xcb, 0x00, 0xdb, 0x19, 0x18, 0x74, - 0x01, 0x31, 0x08, 0x29, 0xf6, 0xdb, 0x0f, 0x4c, - 0xfa, 0x21, 0x21, 0x80, 0x12, 0x49, 0x61, 0x80, - 0xa0, 0x60, 0x6a, 0x46, 0x11, 0x49, 0x04, 0x20, - 0xbd, 0xf7, 0x30, 0xff, 0x6a, 0x46, 0x10, 0x49, - 0x08, 0x20, 0xbd, 0xf7, 0x2b, 0xff, 0x10, 0x20, - 0x70, 0x60, 0x75, 0x60, 0x3c, 0x00, 0x84, 0x31, - 0x04, 0x00, 0x60, 0x68, 0x02, 0x21, 0x08, 0x43, - 0x60, 0x60, 0x0b, 0x49, 0x06, 0x4a, 0x08, 0x1c, - 0x10, 0x30, 0x08, 0x3a, 0x03, 0xc2, 0xf8, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0xac, 0x73, - 0x01, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x20, 0x4e, - 0x00, 0x00, 0x05, 0x2c, 0x01, 0x00, 0x11, 0x2c, - 0x01, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x3c, 0x00, - 0xc0, 0x31, 0x04, 0x00, 0x70, 0xb5, 0x0e, 0x1c, - 0x00, 0x24, 0xc4, 0xf7, 0x5b, 0xfe, 0x00, 0x28, - 0x3b, 0xd0, 0x45, 0x68, 0xff, 0x2d, 0x38, 0xd0, - 0x0c, 0x2e, 0x28, 0xd2, 0x01, 0xa3, 0x9b, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x05, 0x07, 0x09, 0x0b, - 0x0d, 0x10, 0x13, 0x16, 0x18, 0x1b, 0x1e, 0x21, - 0x18, 0x24, 0x20, 0xe0, 0x30, 0x24, 0x1e, 0xe0, - 0x60, 0x24, 0x1c, 0xe0, 0xc0, 0x24, 0x1a, 0xe0, - 0x3c, 0x00, 0xfc, 0x31, 0x04, 0x00, 0xff, 0x24, - 0x81, 0x34, 0x17, 0xe0, 0x09, 0x24, 0xa4, 0x01, - 0x14, 0xe0, 0x09, 0x24, 0xe4, 0x01, 0x11, 0xe0, - 0x0f, 0x4c, 0x0f, 0xe0, 0x09, 0x24, 0x24, 0x02, - 0x0c, 0xe0, 0x09, 0x24, 0x64, 0x02, 0x09, 0xe0, - 0x03, 0x24, 0xe4, 0x02, 0x06, 0xe0, 0x09, 0x24, - 0xa4, 0x02, 0x03, 0xe0, 0x09, 0x21, 0x9e, 0x20, - 0xbe, 0xf7, 0x39, 0xf8, 0x60, 0x00, 0x00, 0x19, - 0x40, 0x08, 0x3c, 0x00, 0x38, 0x32, 0x04, 0x00, - 0x05, 0x49, 0x80, 0x04, 0x40, 0x18, 0x05, 0x4a, - 0xa9, 0x00, 0x89, 0x18, 0x48, 0x60, 0x64, 0x20, - 0x60, 0x43, 0x70, 0xbd, 0xdc, 0x07, 0x00, 0x00, - 0x80, 0x38, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00, - 0x02, 0x49, 0x80, 0xb5, 0x08, 0x60, 0xd0, 0xf7, - 0x97, 0xf8, 0x80, 0xbd, 0x5c, 0x5b, 0x01, 0x00, - 0xf8, 0xb5, 0x00, 0x26, 0x17, 0x4c, 0x17, 0x4b, - 0x19, 0x49, 0x26, 0x70, 0x3c, 0x00, 0x74, 0x32, - 0x04, 0x00, 0x00, 0x20, 0x14, 0x33, 0x0d, 0x88, - 0x15, 0x4e, 0x15, 0x4a, 0x04, 0xe0, 0xc1, 0x00, - 0xcf, 0x18, 0x7a, 0x60, 0x5e, 0x50, 0x01, 0x30, - 0xa8, 0x42, 0xf8, 0xdb, 0xc6, 0xf7, 0x2b, 0xfd, - 0xff, 0x21, 0x11, 0x4d, 0xa5, 0x31, 0x28, 0x1c, - 0xbd, 0xf7, 0xff, 0xf8, 0x00, 0x21, 0x28, 0x1c, - 0x02, 0x1c, 0x14, 0x32, 0xc2, 0x60, 0x10, 0x1c, - 0x01, 0x31, 0x14, 0x29, 0xf8, 0xdb, 0x3c, 0x00, - 0xb0, 0x32, 0x04, 0x00, 0x00, 0x26, 0xc6, 0x60, - 0x05, 0x48, 0x0c, 0x30, 0x60, 0xc0, 0x09, 0x48, - 0x18, 0x21, 0xbd, 0xf7, 0xed, 0xf8, 0x01, 0x20, - 0x04, 0x34, 0x41, 0xc4, 0x00, 0x20, 0xf8, 0xbd, - 0x70, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00, - 0x30, 0xd9, 0x01, 0x00, 0x56, 0x57, 0x01, 0x00, - 0x04, 0x5f, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xcf, 0xf7, 0xb6, 0xfc, - 0x3c, 0x00, 0xec, 0x32, 0x04, 0x00, 0x01, 0x49, - 0x08, 0x80, 0x80, 0xbd, 0x00, 0x00, 0x2c, 0x74, - 0x01, 0x00, 0x11, 0x48, 0xf8, 0xb5, 0x41, 0x79, - 0x00, 0x29, 0x02, 0xd1, 0x05, 0x78, 0x0f, 0x4e, - 0x01, 0xe0, 0x45, 0x78, 0x0f, 0x4e, 0x02, 0x23, - 0xf7, 0x5e, 0x00, 0x24, 0x60, 0x1b, 0x78, 0x43, - 0x64, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0xf5, 0xf9, - 0x61, 0x00, 0x3c, 0x00, 0x28, 0x33, 0x04, 0x00, - 0x09, 0x4a, 0xac, 0x42, 0x50, 0x52, 0x01, 0xd1, - 0x00, 0x23, 0xf7, 0x5e, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x0e, 0x10, 0x2c, 0xe9, 0xd3, 0xf8, 0xbd, - 0x0c, 0x5a, 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00, - 0xfa, 0x59, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00, - 0x32, 0x5a, 0x01, 0x00, 0x38, 0xb5, 0x10, 0x4c, - 0xbe, 0x25, 0x25, 0x73, 0x20, 0x7a, 0x18, 0x21, - 0x88, 0x43, 0x20, 0x72, 0x3c, 0x00, 0x64, 0x33, - 0x04, 0x00, 0x6a, 0x46, 0x0d, 0x49, 0x0d, 0x20, - 0xbd, 0xf7, 0x33, 0xfe, 0x01, 0x20, 0x0b, 0x49, - 0x40, 0x03, 0x08, 0x60, 0x48, 0x60, 0x25, 0x73, - 0x2d, 0x20, 0xc0, 0x03, 0x20, 0x60, 0x25, 0x73, - 0x20, 0x7a, 0x10, 0x21, 0x08, 0x43, 0x20, 0x72, - 0x06, 0x48, 0x06, 0x49, 0x08, 0x60, 0x00, 0x20, - 0x48, 0x60, 0x38, 0xbd, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x8d, 0x3e, 0x01, 0x00, 0x24, 0x00, - 0xa0, 0x33, 0x04, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x00, 0x87, 0x93, 0x03, 0x04, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x15, 0x20, 0x02, 0x4a, - 0xd0, 0xf7, 0xc8, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x0d, 0x3e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x60, 0x04, 0x00, 0x44, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x40, 0x20, 0x07, 0x00, - 0xff, 0xff, 0xff, 0xff, -}; -const uint32_t fw_len = sizeof(fw_buf) / sizeof(fw_buf[0]); diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h deleted file mode 100644 index 1a3b75f..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef WL_OS_H -#define WL_OS_H - -#include -#include - -void *owl_os_alloc(size_t size); -void *owl_os_realloc(void *ptr, size_t size); -void owl_os_free(void *p); -void *owl_os_memcpy(void *dst, const void *src, size_t n); -void *owl_os_memset(void *s, int c, size_t n); -void *owl_os_memmove(void *dst, const void *src, size_t n); -size_t owl_os_strlen(char *s); -char *owl_os_strncpy(char *dst, const char *src, size_t n); -int owl_os_strncmp(const char *s1, const char *s2, size_t n); -int owl_os_strcmp(const char *s1, const char *s2); -char *owl_os_strcpy(char *dst, const char *src); -char *owl_os_strdup(const char *s); -char *owl_os_strndup(const char *s, size_t n); -int owl_os_memcmp(const void *s1, const void *s2, size_t n); -long int owl_os_strtol(const char *nptr, char **endptr, int base); -char *owl_os_strchr(const char *s, int c); -char *owl_os_strrchr(const char *s, int c); -int owl_os_strcasecmp(const char *s1, const char *s2); -char *owl_os_strstr(const char *haystack, const char *needle); - -int owl_os_snprintf(char *str, size_t size, const char *format, ...) - __attribute__((format(printf, 3, 4))); - -int owl_os_vprintf(const char *format, va_list arg); /* debug only */ -int owl_os_printf(const char *format, ...) /* debug only */ - __attribute__((format(printf, 1, 2))); - -#endif /* WL_OS_H */ - diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_sdio.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_sdio.h deleted file mode 100644 index ee08fad..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_sdio.h +++ /dev/null @@ -1,172 +0,0 @@ -/*! - * \file wl_sdio.h - * \brief SDIO interface for wl_api. - * Copyright (C) 2010 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -#ifndef WL_SDIO_H -#define WL_SDIO_H - -/** \defgroup wl_sdio SDIO Interface - * - * These functions implement the interface that the wl_api library - * needs to work with a SDIO transport layer. - * - * The functions prototyped here must be implemented when porting the - * wl_api library to a new platform with a different SDIO configuration - * - * On platforms supported by H&D Wireless these functions are - * implemented in the file avr32_sdio.c - * - * @{ - */ - -/** - * Maximum transfer size. This will set an upper limit on the len parameter - * passed to owl_sdio_tx() and owl_sdio_rx(). - * - */ -#define MAX_BLOCK_LEN 512 - - -/** - * This flag might be set when owl_sdio_cmd() is called in case the cmd will - * be followed by a data transfer. If the flag is set, the transfer direction is - * from the device to the host (read). Otherwise, the transfer direction is - * from the host to the device (write). - * - */ - #define CMD_FLAG_TO_HOST (1 << 0) - - -/** - * Indicates that the sdio driver needs to be polled in order to make - * forward progress, i.e. it does not support interrupts - * - * The actual polling will result in owl_sdio_cmd() being called to - * request status information from the device. - * - * To activate polling, this flag should be set in owl_sdio_init(). - */ -#define SDIO_FLAG_POLL (1 << 0) - -/** - * Indicates that the sdio driver only supports 1-bit mode. - * - * To set 1-bit mode, this flag should be set in owl_sdio_init(). - */ -#define SDIO_FLAG_1BIT_MODE (1 << 1) - -/** - * This function will be invoked when wlan initialization should be performed, - * this happens when the wl_fw_download() function in the transport group of - * wl_api is invoked. - * - * The wifi device supports sdio high speed mode and clock frequencies up to - * 50 MHz. - * - * The function is responsible for doing any necessary sdio initialization such - * as allocating gpio's, setting up the mci master, one time allocations of - * dma buffers etc. - * - * @param flags is an out parameter that should hold any sdio flags upon return. - * The avaible flags are prefixed with SDIO_FLAG_ - * - * - */ -void owl_sdio_init(uint8_t *flags); - - - -/** - * This function will be invoked when an sdio cmd should be sent to the - * device. - * - * @param idx is the sdio command number - * @param arg is the sdio command argument - * @param flags specifies other options, such as any transfer direction. - * @param rsp should hold the command response upon return. If null, the - * response can be ignored. - * @param data holds a pointer to any data that might follow the command. This - * allows the sdio driver to setup dma transfers while waiting for the - * command response. NULL if no data transfer will follow. Note that - * the same data pointer will be passed to owl_sdio_tx(), which should - * start the actual transfer. - * @param len is the length of the data buffer. - * - */ -void owl_sdio_cmd(uint8_t idx, uint32_t arg, uint8_t flags, uint32_t *rsp, - const uint8_t *data, uint16_t len); - - -/** - * This function will be invoked when data should be transmitted to the device. - * - * If wl_fw_downlad() was called with the size_align parameter set to non-zero, - * the pad parameter should be used. If the pad parameter is not 0, additional - * data must be transmitted after the data buffer has be sent. Depending on - * how the data buffer was first allocated (probably by an TCP/IP stack), it - * might be safe or unsafe to continue reading beyond the data buffer to - * transmit the additional padding bytes. - * - * @param data holds a pointer to the data to transmit, the pointer is the - * same as the one passed to wl_tx(). - * @param len is the number of bytes that should be transmitted, including - * padding. - * @param pad is the number of padding bytes to send. - * - */ -void owl_sdio_tx(const uint8_t *data, uint16_t len, uint8_t pad); - - -/** - * This function will be invoked when data should be received from the device. - * - * @param data should hold the read data upon return. - * @param len is the number of bytes to read. - * - */ -void owl_sdio_rx(uint8_t *data, uint16_t len); - - -/** - * Invoked when sdio rx interrupts from the device should be enabled or - * disabled. - * - * If SDIO_FLAG_POLL was set in wl_spi_init(), then this function can be - * left empty. - * - * @param enable specifies if interrupts should be enabled or disabled. - * - */ -void owl_sdio_irq(uint8_t enable); - - -/** - * Delay executiom for the specified number of ms. This function will be called - * with delays in the 10-20 ms range during fw download and startup of the - * Wi-Fi device. This function can be implemented with a simple for-loop if - * desired (beware of optimization). The timing does not have to be accurate as - * long as the actual delay becomes at least the specified number of ms. - * - * @param ms is the minimal amount of time to wait [ms]. - * - */ -void owl_sdio_mdelay(uint32_t ms); - - -/** - * This function should be called whenever an interrupt is detected. It can - * be called from an interrupt context. - * - * If SDIO_FLAG_POLL was set in owl_sdio_init(), then wl_sdio_irq() - * should never be called. - * - */ -extern void wl_sdio_irq(void); - -/*! @} */ - -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h deleted file mode 100644 index 5d91374..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h +++ /dev/null @@ -1,185 +0,0 @@ -/*! - * \file wl_spi.h - * \brief SPI interface for wl_api. - * Copyright (C) 2010 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -#ifndef WL_SPI_H -#define WL_SPI_H - -#ifndef WITHOUT_STDINT -#include -#endif - -/** \defgroup wl_spi SPI Interface - * - * These functions implement the interface that the wl_api library - * needs to work with a SPI transport layer. - * - * The functions prototyped here must be implemented when porting the - * wl_api library to a new platform with a different SPI configuration - * - * On platforms supported by H&D Wireless these functions are - * implemented in the file avr32_spi.c - * - * @{ - */ - -/** - * Maximum transfer size. This will set an upper limit on the len parameter - * passed to owl_spi_txrx(). - * - * - */ -#define MAX_BLOCK_LEN 512 - - -/** - * Indicates that the spi driver needs to be polled in order to make - * forward progress, i.e. it does not support interrupts through SD pin 8. - * - * The actual polling will result in owl_spi_txrx() being call to - * request status information from the device. - * - * To activate polling, this flag should be set in owl_spi_init(). - * - * See wl_poll() and wl_register_rx_isr() for more information regarding - * polled and interrupt modes. - * - */ -#define SPI_FLAG_POLL (1 << 0) - - -/** - * This function will be invoked when wlan device initialization should be - * performed, this happens when the wl_fw_download() function in the transport - * group of wl_api is invoked. - * - * The wifi device requires spi mode 3, i.e. clock polarity high and sample - * on second phase. This corresponds to CPOL=1, CPHA=1. Maximum frequency on - * spi clock is 30 MHz. - * - * The function is also responsible for doing any necessary spi initialization - * such as allocating gpio's, setting up the SPI master, one time allocations of - * dma buffers etc. - * - * - * If the SPB105 device is used, two signals; POWER (pin 10 on SPB105) and - * SHUTDOWN (pin 4 on SPB105) might be connected to gpio's on the host. - * The GPIO_POWER_PIN is the main power supply to the device. The - * GPIO_SHUTDOWN_PIN (active low) should be defined as an input. - * - * After GPIO_POWER_PIN is pulled high by the host, the device will pull the - * GPIO_SHUTDOWN_PIN high once the device is properly powered. - * - * However, if pin 4 (GPIO_SHUTDOWN_PIN) is not connected to the host, a delay - * of up to 250 ms must be added after GPIO_POWER_PIN is pulled high to ensure - * that startup is completed. The actual time is usually much shorter, therefore - * one might try to reduce the delay for a particualar hardware design. - * - * On SPB104, the GPIO_POWER_PIN will be connected to VCC and GPIO_SHUTDOWN_PIN - * will be unconnected; hence we have to make sure that we have enough delay - * after powering on the host. Since the device power-on usually happens at the - * same time as the host power-on, the startup time of the host can be - * subtracted from any delay put into owl_spi_init(). - * - * @param flags is an out parameter that should hold any spi flags upon return. - * The avaible flags are prefixed with SPI_FLAG_ - * - * @return 0 on success - * -1 if any error occurs - * - */ -int owl_spi_init(uint8_t *flags); - - -/** - * Invoked when a spi transfer should be performed. - * - * All buffers that are allocated by the wl library will have a size that is - * aligned to 4. If size-unaligned data is passed to this function, it is - * always allocated by the ip stack. If 4-byte size alignment (e.g. for DMA) - * is required, 1-3 extra padding bytes can be transmitted after the in buffer. - * These bytes must be 0xff. - * - * Since size-unaligned data always comes from the ip stack, the out ptr is - * always NULL for such data. - * - * @param in points a buffer which holds the data to be transmitted. If NULL, - * then \a len bytes with the value 0xff should be transmitted on the - * bus. - * @param out points a buffer should hold the data received from the device. If - * NULL, any received data can be discarded. - * @param len is the length of the in and out buffers. - * - */ -void owl_spi_txrx(const uint8_t *in, uint8_t* out, uint16_t len); - - -/** - * Invoked when spi rx interrupts from the device should be enabled or disabled. - * Note that the spi interrupts are obtained from pin 8 on SPB104 or pin 3 from - * SPB105. This pin can be be connected to a gpio on the host. The irq line - * will signal an interrupt on both edges. - * - * In general, the wifi device will not issue a new interrupt unless the - * last interrupt has been handled. Also, during normal operation (i.e after - * the complete callback registered in wl_init() has been invoked), - * owl_spi_irq() will never be invoked so interrupts will be enabled all - * the time. For the SPI-mode, the purpose of owl_spi_irq() is basically to - * make sure that the first interrupt (coming after the reset performed in - * owl_spi_init()) is ignored. - * - * If SPI_FLAG_POLL was set in owl_spi_init(), then this function can be - * left empty and the wifi device will be used in polled mode. In polled mode, - * the interrupt line is not used. Regardless of polled or interrupt-mode, - * wl_poll() must be called to ensure progress of the driver. - * - * @param enable specifies if interrupts should be enabled or disabled. - * - */ -void owl_spi_irq(uint8_t enable); - - -/** - * Invoked when the spi cs for the wifi device should be enabled. Note that - * multiple calls to owl_spi_txrx() might be done during a 'single' chip - * select. - * - * @param enable specifies whether chip select should be asserted or deasserted, - * The chip select signal is active low, so if enable is '1' then the - * chip select connected to the wifi device should be set to '0'. - * - */ -void owl_spi_cs(uint8_t enable); - - -/** - * Delay executiom for the specified number of ms. This function will be called - * with delays in the 10-20 ms range during fw download and startup of the - * Wi-Fi device. This function can be implemented with a simple for-loop if - * desired (beware of optimization). The timing does not have to be accurate as - * long as the actual delay becomes at least the specified number of ms. - * - * @param ms is the minimal amount of time to wait [ms]. - * - */ -void owl_spi_mdelay(uint32_t ms); - - -/** - * This function should be called whenever an interrupt is detected. It can - * be called from an interrupt context. - * - * If SPI_FLAG_POLL was set in owl_spi_init(), then wl_spi_irq() - * should never be called. - * - */ -extern void wl_spi_irq(void); - - -/*! @} */ - -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wlap_api.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wlap_api.h deleted file mode 100644 index 9a4483a..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wlap_api.h +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Programming interface for wlap_api. - * Copyright (C) 2011 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -/*! \file wlap_api.h ************************************************************* - * - * \brief WiFi AP API - * - * This file provides the wlap_api interface. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: - * \li SPB104 + EVK1100 - * \li SPB104 + EVK1101 - * \li SPB104 + EVK1104 - * \li SPB104 + EVK1105 (SPI) - * \li SPB104 + EVK1105 (SPI + irq) - * \li SPB105 + EVK1105 (SPI) - * - AppNote: - * - * \author H&D Wireless AB: \n - * - ***************************************************************************** - * - * \section intro Introduction - * This is the documentation for the WiFi AP Driver API \a wlap_api. - * - * \section files Main Files - * - wlap_api.h : WiFi driver interface. - * - libwlap_api_*.*.a - Driver library. - * - */ - -#ifndef WLAP_API_H -#define WLAP_API_H - -#define WLAP_API_RELEASE_NAME "unknown" - -#include - -/** \defgroup wl_softap Access Point Mode - * - * \brief Support the WiFi Access Point mode. - * - * @{ - */ -/* - * Station representation - * - */ -struct wl_sta_t -{ - struct wl_mac_addr_t bssid; /**< The BSSID of the network. */ - uint8_t queued_pkt_cnt; /**< Number of queueud packets for - this STA. */ - uint8_t in_ps; /**< Is the STA in power save mode. */ - uint8_t aid; /**< STA AID */ -}; - -/* Station list representation. Array of pointers to wl_sta_t entries. */ -struct wl_sta_list_t -{ - struct wl_sta_t **sta; /**< The list of pointers to stations */ - size_t cnt; /**< Number of stations */ -}; - -/*! \brief Get the list of currently associated stations (SoftAP). - * - * Retrieves the list of current stations from - * the driver. - * - * This function is not thread safe. It must be called in the - * same execution context as wl_poll(). - * - * @param network_list Output buffer. The API call returns - * a pointer to allocated memory containing the network list. - * @return - * - WL_SUCCESS - * - WL_FAILURE. - */ -wl_err_t wlap_get_sta_list(struct wl_sta_list_t **network_list); - - -/*! Callback used to read data from a TX packet. - * This function is supplied by the user of the API. - * - * @param dst Destination buffer. The data should be copied - * to this buffer. - * @param src_handle Handle to the source packet from where - * the data should be copied. This handle is the same one that - * is passed in parameter \a pkt_handle to \a wl_process_tx(). - * @param read_len Number of bytes to copy from \a src_handle - * to \a dst. - * @param offset The offset in bytes, counting from the - * beginning of the Ethernet header, from where to copy data. - * @return - * - The number of bytes copied. This number may be smaller - * than the length requested in \a read_len but it may not - * be shorter than the length of the packet counting from - * \a offset. In other words, if the caller of this function - * receives a return count that is shorter than \a read_len - * he will assume that all packet data has been read. - * - < 0 on error. - */ -typedef ssize_t (*wl_pkt_read_cb_t)(char *dst, - void *src_handle, - size_t read_len, - int offset); - -/*! \brief Register a data access function for TX packets (SoftAP). - * - * When a TX data packet has a different representation than a single - * contiguous buffer in memory then a packet read function must be - * implemented and registered with this call. Whenever the library - * needs to read packet data it will call this function to do it. - * - * This function can be ignored if the TX packet representation is - * a single contiguous buffer. This function is only needed in SoftAP - * mode. - * - * @param pkt_read_cb Read callback. - * @param ctx Context - */ -void wl_register_pkt_read_cb(wl_pkt_read_cb_t pkt_read_cb); - -/*! \brief Start a network using the SoftAP mode. - * - * This call will cause the WiFi chip to start sending beacons - * and accept associations from WiFi stations. - * - */ -wl_err_t wlap_start_ap(const char *ssid, - const size_t ssid_len, - const uint8_t channel, - const enum wl_auth_mode auth_mode, - const enum wl_enc_type enc_type); - -/*! \brief Disconnect a STA (SoftAP) - * - * @param bssid The BSSID of the station to disconnect. - * @return - * - WL_SUCCESS - * - WL_FAILURE. - */ -wl_err_t wlap_disconnect_sta(const struct wl_mac_addr_t bssid); - - -/*! @} */ /* End wl_softap group */ - - -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h deleted file mode 100644 index d0c51df..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h +++ /dev/null @@ -1,309 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Cycle counter driver. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32UC devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CYCLE_COUNTER_H_ -#define _CYCLE_COUNTER_H_ - -#include "compiler.h" - - -//! Structure holding private information, automatically initialized by the -//! cpu_set_timeout() function. -typedef struct -{ - //! The cycle count at the begining of the timeout. - unsigned long delay_start_cycle; - - //! The cycle count at the end of the timeout. - unsigned long delay_end_cycle; - - //! Enable/disable the timout detection - unsigned char timer_state; - #define CPU_TIMER_STATE_STARTED 0 - #define CPU_TIMER_STATE_REACHED 1 - #define CPU_TIMER_STATE_STOPPED 2 -} t_cpu_time; - - -/*! - * \brief Convert milli-seconds into CPU cycles. - * - * \param ms: Number of millisecond. - * \param fcpu_hz: CPU frequency in Hz. - * - * \return the converted number of CPU cycles. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ U32 cpu_ms_2_cy(unsigned long ms, unsigned long fcpu_hz) -{ - return ((unsigned long long)ms * fcpu_hz + 999) / 1000; -} - - -/*! - * \brief Convert micro-seconds into CPU cycles. - * - * \param us: Number of microsecond. - * \param fcpu_hz: CPU frequency in Hz. - * - * \return the converted number of CPU cycles. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ U32 cpu_us_2_cy(unsigned long us, unsigned long fcpu_hz) -{ - return ((unsigned long long)us * fcpu_hz + 999999) / 1000000; -} - - -/*! - * \brief Convert CPU cycles into milli-seconds. - * - * \param cy: Number of CPU cycles. - * \param fcpu_hz: CPU frequency in Hz. - * - * \return the converted number of milli-second. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ U32 cpu_cy_2_ms(unsigned long cy, unsigned long fcpu_hz) -{ - return ((unsigned long long)cy * 1000 + fcpu_hz-1) / fcpu_hz; -} - - -/*! - * \brief Convert CPU cycles into micro-seconds. - * - * \param cy: Number of CPU cycles. - * \param fcpu_hz: CPU frequency in Hz. - * - * \return the converted number of micro-second. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ U32 cpu_cy_2_us(unsigned long cy, unsigned long fcpu_hz) -{ - return ((unsigned long long)cy * 1000000 + fcpu_hz-1) / fcpu_hz; -} - - -/*! - * \brief Set a timer variable. - * - * Ex: t_cpu_time timer; - * cpu_set_timeout( cpu_ms_2_cy(10, FOSC0), &timer ); // timeout in 10 ms - * if( cpu_is_timeout(&timer) ) - * cpu_stop_timeout(&timer); - * ../.. - * - * \param delay: (input) delay in CPU cycles before timeout. - * \param cpu_time: (output) internal information used by the timer API. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void cpu_set_timeout(unsigned long delay, t_cpu_time *cpu_time) -{ - cpu_time->delay_start_cycle = Get_system_register(AVR32_COUNT); - cpu_time->delay_end_cycle = cpu_time->delay_start_cycle + delay; - cpu_time->timer_state = CPU_TIMER_STATE_STARTED; -} - - -/*! - * \brief Test if a timer variable reached its timeout. - * - * Once the timeout is reached, the function will always return TRUE, - * until the cpu_stop_timeout() function is called. - * - * Ex: t_cpu_time timer; - * cpu_set_timeout( 10, FOSC0, &timer ); // timeout in 10 ms - * if( cpu_is_timeout(&timer) ) - * cpu_stop_timeout(&timer); - * ../.. - * - * \param cpu_time: (input) internal information used by the timer API. - * - * \return TRUE if timeout occured, otherwise FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned long cpu_is_timeout(t_cpu_time *cpu_time) -{ - unsigned long current_cycle_count = Get_system_register(AVR32_COUNT); - - if( cpu_time->timer_state==CPU_TIMER_STATE_STOPPED ) - return FALSE; - - // Test if the timeout as already occured. - else if (cpu_time->timer_state == CPU_TIMER_STATE_REACHED) - return TRUE; - - // If the ending cycle count of this timeout is wrapped, ... - else if (cpu_time->delay_start_cycle > cpu_time->delay_end_cycle) - { - if (current_cycle_count < cpu_time->delay_start_cycle && current_cycle_count > cpu_time->delay_end_cycle) - { - cpu_time->timer_state = CPU_TIMER_STATE_REACHED; - return TRUE; - } - return FALSE; - } - else - { - if (current_cycle_count < cpu_time->delay_start_cycle || current_cycle_count > cpu_time->delay_end_cycle) - { - cpu_time->timer_state = CPU_TIMER_STATE_REACHED; - return TRUE; - } - return FALSE; - } -} - - -/*! - * \brief Stop a timeout detection. - * - * Ex: t_cpu_time timer; - * cpu_set_timeout( 10, FOSC0, &timer ); // timeout in 10 ms - * if( cpu_is_timeout(&timer) ) - * cpu_stop_timeout(&timer); - * ../.. - * - * \param cpu_time: (input) internal information used by the timer API. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void cpu_stop_timeout(t_cpu_time *cpu_time) -{ - cpu_time->timer_state = CPU_TIMER_STATE_STOPPED; -} - - -/*! - * \brief Test if a timer is stopped. - * - * \param cpu_time: (input) internal information used by the timer API. - * - * \return TRUE if timer is stopped, otherwise FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned long cpu_is_timer_stopped(t_cpu_time *cpu_time) -{ - - if( cpu_time->timer_state==CPU_TIMER_STATE_STOPPED ) - return TRUE; - else - return FALSE; -} - - -/*! - * \brief Waits during at least the specified delay (in millisecond) before returning. - * - * \param delay: Number of millisecond to wait. - * \param fcpu_hz: CPU frequency in Hz. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void cpu_delay_ms(unsigned long delay, unsigned long fcpu_hz) -{ - t_cpu_time timer; - cpu_set_timeout( cpu_ms_2_cy(delay, fcpu_hz), &timer); - while( !cpu_is_timeout(&timer) ); -} - -/*! - * \brief Waits during at least the specified delay (in microsecond) before returning. - * - * \param delay: Number of microsecond to wait. - * \param fcpu_hz: CPU frequency in Hz. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void cpu_delay_us(unsigned long delay, unsigned long fcpu_hz) -{ - t_cpu_time timer; - cpu_set_timeout( cpu_us_2_cy(delay, fcpu_hz), &timer); - while( !cpu_is_timeout(&timer) ); -} - -/*! - * \brief Waits during at least the specified delay (in CPU cycles) before returning. - * - * \param delay: Number of CPU cycles to wait. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void cpu_delay_cy(unsigned long delay) -{ - t_cpu_time timer; - cpu_set_timeout( delay, &timer); - while( !cpu_is_timeout(&timer) ); -} - - -#define Get_sys_count() ( Get_system_register(AVR32_COUNT) ) -#define Set_sys_count(x) ( Set_system_register(AVR32_COUNT, (x)) ) -#define Get_sys_compare() ( Get_system_register(AVR32_COMPARE) ) -#define Set_sys_compare(x) ( Set_system_register(AVR32_COMPARE, (x)) ) - - -#endif // _CYCLE_COUNTER_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c deleted file mode 100644 index 543fed6..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c +++ /dev/null @@ -1,995 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SMC on EBI driver for AVR32 UC3. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a SMC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "compiler.h" -#include "preprocessor.h" -#include "gpio.h" -#include "smc.h" - -// Configure the SM Controller with SM setup and timing information for all chip select -#define SMC_CS_SETUP(ncs) { \ - U32 nwe_setup = ((NWE_SETUP * hsb_mhz_up + 999) / 1000); \ - U32 ncs_wr_setup = ((NCS_WR_SETUP * hsb_mhz_up + 999) / 1000); \ - U32 nrd_setup = ((NRD_SETUP * hsb_mhz_up + 999) / 1000); \ - U32 ncs_rd_setup = ((NCS_RD_SETUP * hsb_mhz_up + 999) / 1000); \ - U32 nwe_pulse = ((NWE_PULSE * hsb_mhz_up + 999) / 1000); \ - U32 ncs_wr_pulse = ((NCS_WR_PULSE * hsb_mhz_up + 999) / 1000); \ - U32 nrd_pulse = ((NRD_PULSE * hsb_mhz_up + 999) / 1000); \ - U32 ncs_rd_pulse = ((NCS_RD_PULSE * hsb_mhz_up + 999) / 1000); \ - U32 nwe_cycle = ((NWE_CYCLE * hsb_mhz_up + 999) / 1000); \ - U32 nrd_cycle = ((NRD_CYCLE * hsb_mhz_up + 999) / 1000); \ - \ - /* Some coherence checks... */ \ - /* Ensures CS is active during Rd or Wr */ \ - if( ncs_rd_setup + ncs_rd_pulse < nrd_setup + nrd_pulse ) \ - ncs_rd_pulse = nrd_setup + nrd_pulse - ncs_rd_setup; \ - if( ncs_wr_setup + ncs_wr_pulse < nwe_setup + nwe_pulse ) \ - ncs_wr_pulse = nwe_setup + nwe_pulse - ncs_wr_setup; \ - \ - /* ncs_hold = n_cycle - ncs_setup - ncs_pulse */ \ - /* n_hold = n_cycle - n_setup - n_pulse */ \ - /* */ \ - /* All holds parameters must be positive or null, so: */ \ - /* nwe_cycle shall be >= ncs_wr_setup + ncs_wr_pulse */ \ - if( nwe_cycle < ncs_wr_setup + ncs_wr_pulse ) \ - nwe_cycle = ncs_wr_setup + ncs_wr_pulse; \ - \ - /* nwe_cycle shall be >= nwe_setup + nwe_pulse */ \ - if( nwe_cycle < nwe_setup + nwe_pulse ) \ - nwe_cycle = nwe_setup + nwe_pulse; \ - \ - /* nrd_cycle shall be >= ncs_rd_setup + ncs_rd_pulse */ \ - if( nrd_cycle < ncs_rd_setup + ncs_rd_pulse ) \ - nrd_cycle = ncs_rd_setup + ncs_rd_pulse; \ - \ - /* nrd_cycle shall be >= nrd_setup + nrd_pulse */ \ - if( nrd_cycle < nrd_setup + nrd_pulse ) \ - nrd_cycle = nrd_setup + nrd_pulse; \ - \ - AVR32_SMC.cs[ncs].setup = (nwe_setup << AVR32_SMC_SETUP0_NWE_SETUP_OFFSET) | \ - (ncs_wr_setup << AVR32_SMC_SETUP0_NCS_WR_SETUP_OFFSET) | \ - (nrd_setup << AVR32_SMC_SETUP0_NRD_SETUP_OFFSET) | \ - (ncs_rd_setup << AVR32_SMC_SETUP0_NCS_RD_SETUP_OFFSET); \ - AVR32_SMC.cs[ncs].pulse = (nwe_pulse << AVR32_SMC_PULSE0_NWE_PULSE_OFFSET) | \ - (ncs_wr_pulse << AVR32_SMC_PULSE0_NCS_WR_PULSE_OFFSET) | \ - (nrd_pulse << AVR32_SMC_PULSE0_NRD_PULSE_OFFSET) | \ - (ncs_rd_pulse << AVR32_SMC_PULSE0_NCS_RD_PULSE_OFFSET); \ - AVR32_SMC.cs[ncs].cycle = (nwe_cycle << AVR32_SMC_CYCLE0_NWE_CYCLE_OFFSET) | \ - (nrd_cycle << AVR32_SMC_CYCLE0_NRD_CYCLE_OFFSET); \ - AVR32_SMC.cs[ncs].mode = (((NCS_CONTROLLED_READ) ? AVR32_SMC_MODE0_READ_MODE_NCS_CONTROLLED : \ - AVR32_SMC_MODE0_READ_MODE_NRD_CONTROLLED) << AVR32_SMC_MODE0_READ_MODE_OFFSET) | \ - + (((NCS_CONTROLLED_WRITE) ? AVR32_SMC_MODE0_WRITE_MODE_NCS_CONTROLLED : \ - AVR32_SMC_MODE0_WRITE_MODE_NWE_CONTROLLED) << AVR32_SMC_MODE0_WRITE_MODE_OFFSET) | \ - (NWAIT_MODE << AVR32_SMC_MODE0_EXNW_MODE_OFFSET) | \ - (((SMC_8_BIT_CHIPS) ? AVR32_SMC_MODE0_BAT_BYTE_WRITE : \ - AVR32_SMC_MODE0_BAT_BYTE_SELECT) << AVR32_SMC_MODE0_BAT_OFFSET) | \ - (((SMC_DBW <= 8 ) ? AVR32_SMC_MODE0_DBW_8_BITS : \ - (SMC_DBW <= 16) ? AVR32_SMC_MODE0_DBW_16_BITS : \ - AVR32_SMC_MODE0_DBW_32_BITS) << AVR32_SMC_MODE0_DBW_OFFSET) | \ - (TDF_CYCLES << AVR32_SMC_MODE0_TDF_CYCLES_OFFSET) | \ - (TDF_OPTIM << AVR32_SMC_MODE0_TDF_MODE_OFFSET) | \ - (PAGE_MODE << AVR32_SMC_MODE0_PMEN_OFFSET) | \ - (PAGE_SIZE << AVR32_SMC_MODE0_PS_OFFSET); \ - smc_tab_cs_size[ncs] = (U8)EXT_SM_SIZE; \ - } - -static U8 smc_tab_cs_size[6]; - -static void smc_enable_muxed_pins(void); - - -void smc_init(unsigned long hsb_hz) -{ - unsigned long hsb_mhz_up = (hsb_hz + 999999) / 1000000; - -//! Whether to use the NCS0 pin -#ifdef SMC_USE_NCS0 - #include SMC_COMPONENT_CS0 - - // Setup SMC for NCS0 - SMC_CS_SETUP(0) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - - -//! Whether to use the NCS1 pin -#ifdef SMC_USE_NCS1 - #include SMC_COMPONENT_CS1 - - // Enable SM mode for CS1 if necessary. - AVR32_HMATRIX.sfr[AVR32_EBI_HMATRIX_NR] &= ~(1 << AVR32_EBI_SDRAM_CS); - AVR32_HMATRIX.sfr[AVR32_EBI_HMATRIX_NR]; - - // Setup SMC for NCS1 - SMC_CS_SETUP(1) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - -//! Whether to use the NCS2 pin -#ifdef SMC_USE_NCS2 - #include SMC_COMPONENT_CS2 - - // Setup SMC for NCS2 - SMC_CS_SETUP(2) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - -//! Whether to use the NCS3 pin -#ifdef SMC_USE_NCS3 - #include SMC_COMPONENT_CS3 - - // Setup SMC for NCS3 - SMC_CS_SETUP(3) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - -//! Whether to use the NCS4 pin -#ifdef SMC_USE_NCS4 - #include SMC_COMPONENT_CS4 - - // Setup SMC for NCS4 - SMC_CS_SETUP(4) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - -//! Whether to use the NCS5 pin -#ifdef SMC_USE_NCS5 - #include SMC_COMPONENT_CS5 - - // Setup SMC for NCS5 - SMC_CS_SETUP(5) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - // Put the multiplexed MCU pins used for the SM under control of the SMC. - smc_enable_muxed_pins(); -} - -/*! \brief Puts the multiplexed MCU pins used for the SMC - * - */ -static void smc_enable_muxed_pins(void) -{ - static const gpio_map_t SMC_EBI_GPIO_MAP = - { - // Enable data pins. -#ifdef EBI_DATA_0 - {ATPASTE2(EBI_DATA_0,_PIN),ATPASTE2(EBI_DATA_0,_FUNCTION)}, -#endif -#ifdef EBI_DATA_1 - {ATPASTE2(EBI_DATA_1,_PIN),ATPASTE2(EBI_DATA_1,_FUNCTION)}, -#endif -#ifdef EBI_DATA_2 - {ATPASTE2(EBI_DATA_2,_PIN),ATPASTE2(EBI_DATA_2,_FUNCTION)}, -#endif -#ifdef EBI_DATA_3 - {ATPASTE2(EBI_DATA_3,_PIN),ATPASTE2(EBI_DATA_3,_FUNCTION)}, -#endif -#ifdef EBI_DATA_4 - {ATPASTE2(EBI_DATA_4,_PIN),ATPASTE2(EBI_DATA_4,_FUNCTION)}, -#endif -#ifdef EBI_DATA_5 - {ATPASTE2(EBI_DATA_5,_PIN),ATPASTE2(EBI_DATA_5,_FUNCTION)}, -#endif -#ifdef EBI_DATA_6 - {ATPASTE2(EBI_DATA_6,_PIN),ATPASTE2(EBI_DATA_6,_FUNCTION)}, -#endif -#ifdef EBI_DATA_7 - {ATPASTE2(EBI_DATA_7,_PIN),ATPASTE2(EBI_DATA_7,_FUNCTION)}, -#endif -#ifdef EBI_DATA_8 - {ATPASTE2(EBI_DATA_8,_PIN),ATPASTE2(EBI_DATA_8,_FUNCTION)}, -#endif -#ifdef EBI_DATA_9 - {ATPASTE2(EBI_DATA_9,_PIN),ATPASTE2(EBI_DATA_9,_FUNCTION)}, -#endif -#ifdef EBI_DATA_10 - {ATPASTE2(EBI_DATA_10,_PIN),ATPASTE2(EBI_DATA_10,_FUNCTION)}, -#endif -#ifdef EBI_DATA_11 - {ATPASTE2(EBI_DATA_11,_PIN),ATPASTE2(EBI_DATA_11,_FUNCTION)}, -#endif -#ifdef EBI_DATA_12 - {ATPASTE2(EBI_DATA_12,_PIN),ATPASTE2(EBI_DATA_12,_FUNCTION)}, -#endif -#ifdef EBI_DATA_13 - {ATPASTE2(EBI_DATA_13,_PIN),ATPASTE2(EBI_DATA_13,_FUNCTION)}, -#endif -#ifdef EBI_DATA_14 - {ATPASTE2(EBI_DATA_14,_PIN),ATPASTE2(EBI_DATA_14,_FUNCTION)}, -#endif -#ifdef EBI_DATA_15 - {ATPASTE2(EBI_DATA_15,_PIN),ATPASTE2(EBI_DATA_15,_FUNCTION)}, -#endif -#ifdef EBI_DATA_16 - {ATPASTE2(EBI_DATA_16,_PIN),ATPASTE2(EBI_DATA_16,_FUNCTION)}, -#endif -#ifdef EBI_DATA_17 - {ATPASTE2(EBI_DATA_17,_PIN),ATPASTE2(EBI_DATA_17,_FUNCTION)}, -#endif -#ifdef EBI_DATA_18 - {ATPASTE2(EBI_DATA_18,_PIN),ATPASTE2(EBI_DATA_18,_FUNCTION)}, -#endif -#ifdef EBI_DATA_19 - {ATPASTE2(EBI_DATA_19,_PIN),ATPASTE2(EBI_DATA_19,_FUNCTION)}, -#endif -#ifdef EBI_DATA_20 - {ATPASTE2(EBI_DATA_20,_PIN),ATPASTE2(EBI_DATA_20,_FUNCTION)}, -#endif -#ifdef EBI_DATA_21 - {ATPASTE2(EBI_DATA_21,_PIN),ATPASTE2(EBI_DATA_21,_FUNCTION)}, -#endif -#ifdef EBI_DATA_22 - {ATPASTE2(EBI_DATA_22,_PIN),ATPASTE2(EBI_DATA_22,_FUNCTION)}, -#endif -#ifdef EBI_DATA_23 - {ATPASTE2(EBI_DATA_23,_PIN),ATPASTE2(EBI_DATA_23,_FUNCTION)}, -#endif -#ifdef EBI_DATA_24 - {ATPASTE2(EBI_DATA_24,_PIN),ATPASTE2(EBI_DATA_24,_FUNCTION)}, -#endif -#ifdef EBI_DATA_25 - {ATPASTE2(EBI_DATA_25,_PIN),ATPASTE2(EBI_DATA_25,_FUNCTION)}, -#endif -#ifdef EBI_DATA_26 - {ATPASTE2(EBI_DATA_26,_PIN),ATPASTE2(EBI_DATA_26,_FUNCTION)}, -#endif -#ifdef EBI_DATA_27 - {ATPASTE2(EBI_DATA_27,_PIN),ATPASTE2(EBI_DATA_27,_FUNCTION)}, -#endif -#ifdef EBI_DATA_28 - {ATPASTE2(EBI_DATA_28,_PIN),ATPASTE2(EBI_DATA_28,_FUNCTION)}, -#endif -#ifdef EBI_DATA_29 - {ATPASTE2(EBI_DATA_29,_PIN),ATPASTE2(EBI_DATA_29,_FUNCTION)}, -#endif -#ifdef EBI_DATA_30 - {ATPASTE2(EBI_DATA_30,_PIN),ATPASTE2(EBI_DATA_30,_FUNCTION)}, -#endif -#ifdef EBI_DATA_31 - {ATPASTE2(EBI_DATA_31,_PIN),ATPASTE2(EBI_DATA_31,_FUNCTION)}, -#endif - - // Enable address pins. -#if SMC_DBW_GLOBAL <= 8 -#ifdef EBI_ADDR_0 - {ATPASTE2(EBI_ADDR_0,_PIN),ATPASTE2(EBI_ADDR_0,_FUNCTION)}, -#endif -#endif -#if SMC_DBW_GLOBAL <= 16 -#ifdef EBI_ADDR_1 - {ATPASTE2(EBI_ADDR_1,_PIN),ATPASTE2(EBI_ADDR_1,_FUNCTION)}, -#endif -#endif - -#ifdef EBI_ADDR_2 - {ATPASTE2(EBI_ADDR_2,_PIN),ATPASTE2(EBI_ADDR_2,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_3 - {ATPASTE2(EBI_ADDR_3,_PIN),ATPASTE2(EBI_ADDR_3,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_4 - {ATPASTE2(EBI_ADDR_4,_PIN),ATPASTE2(EBI_ADDR_4,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_5 - {ATPASTE2(EBI_ADDR_5,_PIN),ATPASTE2(EBI_ADDR_5,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_6 - {ATPASTE2(EBI_ADDR_6,_PIN),ATPASTE2(EBI_ADDR_6,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_7 - {ATPASTE2(EBI_ADDR_7,_PIN),ATPASTE2(EBI_ADDR_7,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_8 - {ATPASTE2(EBI_ADDR_8,_PIN),ATPASTE2(EBI_ADDR_8,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_9 - {ATPASTE2(EBI_ADDR_9,_PIN),ATPASTE2(EBI_ADDR_9,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_10 - {ATPASTE2(EBI_ADDR_10,_PIN),ATPASTE2(EBI_ADDR_10,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_11 - {ATPASTE2(EBI_ADDR_11,_PIN),ATPASTE2(EBI_ADDR_11,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_12 - {ATPASTE2(EBI_ADDR_12,_PIN),ATPASTE2(EBI_ADDR_12,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_13 - {ATPASTE2(EBI_ADDR_13,_PIN),ATPASTE2(EBI_ADDR_13,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_14 - {ATPASTE2(EBI_ADDR_14,_PIN),ATPASTE2(EBI_ADDR_14,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_15 - {ATPASTE2(EBI_ADDR_15,_PIN),ATPASTE2(EBI_ADDR_15,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_16 - {ATPASTE2(EBI_ADDR_16,_PIN),ATPASTE2(EBI_ADDR_16,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_17 - {ATPASTE2(EBI_ADDR_17,_PIN),ATPASTE2(EBI_ADDR_17,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_18 - {ATPASTE2(EBI_ADDR_18,_PIN),ATPASTE2(EBI_ADDR_18,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_19 - {ATPASTE2(EBI_ADDR_19,_PIN),ATPASTE2(EBI_ADDR_19,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_20 - {ATPASTE2(EBI_ADDR_20,_PIN),ATPASTE2(EBI_ADDR_20,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_21 - {ATPASTE2(EBI_ADDR_21,_PIN),ATPASTE2(EBI_ADDR_21,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_22 - {ATPASTE2(EBI_ADDR_22,_PIN),ATPASTE2(EBI_ADDR_22,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_23 - {ATPASTE2(EBI_ADDR_23,_PIN),ATPASTE2(EBI_ADDR_23,_FUNCTION)}, -#endif - -#if SMC_DBW_GLOBAL <= 8 - #undef SMC_8_BIT_CHIPS - #define SMC_8_BIT_CHIPS TRUE -#endif - - // Enable data mask pins. -#if !SMC_8_BIT_CHIPS_GLOBAL -#ifdef EBI_ADDR_0 - {ATPASTE2(EBI_ADDR_0,_PIN),ATPASTE2(EBI_ADDR_0,_FUNCTION)}, -#endif -#endif -#ifdef EBI_NWE0 - {ATPASTE2(EBI_NWE0,_PIN),ATPASTE2(EBI_NWE0,_FUNCTION)}, -#endif - -#if SMC_DBW_GLOBAL >= 16 - #ifdef EBI_NWE1 - {ATPASTE2(EBI_NWE1,_PIN),ATPASTE2(EBI_NWE1,_FUNCTION)}, - #endif - #if SMC_DBW_GLOBAL >= 32 - #ifdef EBI_ADDR_1 - {ATPASTE2(EBI_ADDR_1,_PIN),ATPASTE2(EBI_ADDR_1,_FUNCTION)}, - #endif - #ifdef EBI_NWE3 - {ATPASTE2(EBI_NWE3,_PIN),ATPASTE2(EBI_NWE3,_FUNCTION)}, - #endif - #endif -#endif - #ifdef EBI_NRD - {ATPASTE2(EBI_NRD,_PIN),ATPASTE2(EBI_NRD,_FUNCTION)}, - #endif - - // Enable control pins. -#if NWAIT_MODE_GLOBAL != AVR32_SMC_EXNW_MODE_DISABLED - #ifdef EBI_NWAIT - {ATPASTE2(EBI_NWAIT,_PIN),ATPASTE2(EBI_NWAIT,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS0 - #ifdef EBI_NCS_0 - {ATPASTE2(EBI_NCS_0,_PIN),ATPASTE2(EBI_NCS_0,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS1 - #ifdef EBI_NCS_1 - {ATPASTE2(EBI_NCS_1,_PIN),ATPASTE2(EBI_NCS_1,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS2 - #ifdef EBI_NCS_2 - {ATPASTE2(EBI_NCS_2,_PIN),ATPASTE2(EBI_NCS_2,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS3 - #ifdef EBI_NCS_3 - {ATPASTE2(EBI_NCS_3,_PIN),ATPASTE2(EBI_NCS_3,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS4 - #ifdef EBI_NCS_4 - {ATPASTE2(EBI_NCS_4,_PIN),ATPASTE2(EBI_NCS_4,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS5 - #ifdef EBI_NCS_5 - {ATPASTE2(EBI_NCS_5,_PIN),ATPASTE2(EBI_NCS_5,_FUNCTION)}, - #endif -#endif - }; - - gpio_enable_module(SMC_EBI_GPIO_MAP, sizeof(SMC_EBI_GPIO_MAP) / sizeof(SMC_EBI_GPIO_MAP[0])); -} - -unsigned char smc_get_cs_size(unsigned char cs) -{ - return smc_tab_cs_size[cs]; -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h deleted file mode 100644 index c3bdf43..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h +++ /dev/null @@ -1,68 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SMC on EBI driver for AVR32 UC3. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a SMC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _SMC_H_ -#define _SMC_H_ - -#include - -#include "compiler.h" -#include "conf_ebi.h" - -/*! \brief Initializes the AVR32 SMC module and the connected SRAM(s). - * \param hsb_hz HSB frequency in Hz (the HSB frequency is applied to the SMC). - * \note Each access to the SMC address space validates the mode of the SMC - * and generates an operation corresponding to this mode. - */ -extern void smc_init(unsigned long hsb_hz); - -/*! \brief Return the size of the peripheral connected . - * \param cs The chip select value - */ -extern unsigned char smc_get_cs_size(unsigned char cs); - -#endif // _SMC_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c deleted file mode 100644 index 1008c94..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c +++ /dev/null @@ -1,183 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief EIC driver for AVR32 UC3. - * - * AVR32 External Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an EIC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "compiler.h" -#include "preprocessor.h" -#include "eic.h" - - - -void eic_init(volatile avr32_eic_t *eic, const eic_options_t *opt, unsigned int nb_lines) -{ - int i; - for (i = 0; i < nb_lines; i++) - { - // Set up mode level - eic->mode = (opt[i].eic_mode == 1) ? (eic->mode | (1 << opt[i].eic_line)) : (eic->mode & ~(1 << opt[i].eic_line)); - // Set up edge type - eic->edge = (opt[i].eic_edge == 1) ? (eic->edge | (1 << opt[i].eic_line)) : (eic->edge & ~(1 << opt[i].eic_line)); - // Set up level - eic->level = (opt[i].eic_level == 1) ? (eic->level | (1 << opt[i].eic_line)) : (eic->level & ~(1 << opt[i].eic_line)); - // Set up if filter is used - eic->filter = (opt[i].eic_filter == 1) ? (eic->filter | (1 << opt[i].eic_line)) : (eic->filter & ~(1 << opt[i].eic_line)); - // Set up which mode is used : asynchronous mode/ synchronous mode - eic->async = (opt[i].eic_async == 1) ? (eic->async | (1 << opt[i].eic_line)) : (eic->async & ~(1 << opt[i].eic_line)); - } -} - -void eic_enable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines) -{ - eic->en = mask_lines; -} - -void eic_enable_line(volatile avr32_eic_t *eic, unsigned int line_number) -{ - // Enable line line_number - eic->en = 1 << line_number; -} - -void eic_disable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines) -{ - eic->dis = mask_lines; -} - -void eic_disable_line(volatile avr32_eic_t *eic, unsigned int line_number) -{ - // Disable line line_number - eic->dis = 1 << line_number; -} - -Bool eic_is_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number) -{ - return (eic->ctrl & (1 << line_number)) != 0; -} - -void eic_enable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines) -{ - eic->ier = mask_lines; -} - -void eic_enable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number) -{ - // Enable line line_number - eic->ier = 1 << line_number; -} - -void eic_disable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - eic->idr = mask_lines; - eic->imr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - -void eic_disable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - // Disable line line_number - if (global_interrupt_enabled) Disable_global_interrupt(); - eic->idr = 1 << line_number; - eic->imr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - -Bool eic_is_interrupt_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number) -{ - return (eic->imr & (1 << line_number)) != 0; -} - -void eic_clear_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - eic->icr = mask_lines; - eic->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - -void eic_clear_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - // Clear line line_number - if (global_interrupt_enabled) Disable_global_interrupt(); - eic->icr = 1 << line_number; - eic->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - -Bool eic_is_interrupt_line_pending(volatile avr32_eic_t *eic, unsigned int line_number) -{ - return (eic->isr & (1 << line_number)) != 0; -} - -#if !defined(AVR32_EIC_301_H_INCLUDED) -void eic_enable_interrupt_scan(volatile avr32_eic_t *eic,unsigned int presc) -{ - // Enable SCAN function with PRESC value - eic->scan |= (presc << AVR32_EIC_SCAN_PRESC_OFFSET) | (1 << AVR32_EIC_SCAN_EN_OFFSET); -} - -void eic_disable_interrupt_scan(volatile avr32_eic_t *eic) -{ - // Disable SCAN function - eic->scan = 0 << AVR32_EIC_SCAN_EN_OFFSET; -} - -unsigned long eic_get_interrupt_pad_scan(volatile avr32_eic_t *eic) -{ - // Return pad number that causes interrupt - return(eic->scan>>AVR32_EIC_SCAN_PIN_OFFSET); -} -#endif \ No newline at end of file diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h deleted file mode 100644 index 32641b7..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h +++ /dev/null @@ -1,275 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief EIC driver for AVR32 UC3. - * - * AVR32 External Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an EIC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _EIC_H_ -#define _EIC_H_ - -#include "compiler.h" - -/*! \name External Interrupt lines - */ -//! @{ -#if (UC3A || UC3B) -#define EXT_INT0 AVR32_EIC_INT0 //!< Line 0 -#define EXT_INT1 AVR32_EIC_INT1 //!< Line 1 -#define EXT_INT2 AVR32_EIC_INT2 //!< Line 2 -#define EXT_INT3 AVR32_EIC_INT3 //!< Line 3 -#define EXT_INT4 AVR32_EIC_INT4 //!< Line 4 -#define EXT_INT5 AVR32_EIC_INT5 //!< Line 5 -#define EXT_INT6 AVR32_EIC_INT6 //!< Line 6 -#define EXT_INT7 AVR32_EIC_INT7 //!< Line 7 -#define EXT_NMI AVR32_EIC_NMI //!< Line 8 -#else -#define EXT_INT0 AVR32_EIC_INT1 //!< Line 0 -#define EXT_INT1 AVR32_EIC_INT2 //!< Line 1 -#define EXT_INT2 AVR32_EIC_INT3 //!< Line 2 -#define EXT_INT3 AVR32_EIC_INT4 //!< Line 3 -#define EXT_INT4 AVR32_EIC_INT5 //!< Line 4 -#define EXT_INT5 AVR32_EIC_INT6 //!< Line 5 -#define EXT_INT6 AVR32_EIC_INT7 //!< Line 6 -#define EXT_INT7 AVR32_EIC_INT8 //!< Line 7 -#define EXT_NMI AVR32_EIC_NMI //!< Line 8 - -#endif - -//! @} - -/*! \name Mode Trigger Options - */ -//! @{ -#define EIC_MODE_EDGE_TRIGGERED AVR32_EIC_EDGE_IRQ //!< -#define EIC_MODE_LEVEL_TRIGGERED AVR32_EIC_LEVEL_IRQ //!< -//! @} - -/*! \name Edge level Options - */ -//! @{ -#define EIC_EDGE_FALLING_EDGE AVR32_EIC_FALLING_EDGE //!< -#define EIC_EDGE_RISING_EDGE AVR32_EIC_RISING_EDGE //!< -//! @} - -/*! \name Level Options - */ -//! @{ -#define EIC_LEVEL_LOW_LEVEL AVR32_EIC_LOW_LEVEL //!< -#define EIC_LEVEL_HIGH_LEVEL AVR32_EIC_HIGH_LEVEL //!< -//! @} - -/*! \name Filter Options - */ -//! @{ -#define EIC_FILTER_ENABLED AVR32_EIC_FILTER_ON //!< -#define EIC_FILTER_DISABLED AVR32_EIC_FILTER_OFF //!< -//! @} - -/*! \name Synch Mode Options - */ -//! @{ -#define EIC_SYNCH_MODE AVR32_EIC_SYNC //!< -#define EIC_ASYNCH_MODE AVR32_EIC_USE_ASYNC //!< -//! @} - -//! Configuration parameters of the EIC module. -typedef struct -{ - //!Line - unsigned char eic_line; - - //! Mode : EDGE_LEVEL or TRIGGER_LEVEL - unsigned char eic_mode; - - //! Edge : FALLING_EDGE or RISING_EDGE - unsigned char eic_edge; - - //! Level : LOW_LEVEL or HIGH_LEVEL - unsigned char eic_level; - - //! Filter: NOT_FILTERED or FILTERED - unsigned char eic_filter; - - //! Async: SYNC mode or ASYNC - unsigned char eic_async; - -} eic_options_t; - - -/*! \brief Init the EIC driver. - * - * \param eic Base address of the EIC module - * \param opt Configuration parameters of the EIC module (see \ref eic_options_t) - * \param nb_lines Number of lines to consider, equal to size of opt buffer - */ -extern void eic_init(volatile avr32_eic_t *eic, const eic_options_t *opt, unsigned int nb_lines); - -/*! \brief Enable the EIC driver. - * - * \param eic Base address of the EIC module - * \param mask_lines Mask for current selected lines - */ -extern void eic_enable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines); - -/*! \brief Enable the EIC driver. - * - * \param eic Base address of the EIC module - * \param line_number Line number to enable - */ -extern void eic_enable_line(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Disable the EIC driver. - * - * \param eic Base address of the EIC module - * \param mask_lines Mask for current selected lines - */ -extern void eic_disable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines); - -/*! \brief Disable the EIC driver. - * - * \param eic Base address of the EIC module - * \param line_number Line number to disable - */ -extern void eic_disable_line(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Tells whether an EIC line is enabled. - * - * \param eic Base address of the EIC module - * \param line_number Line number to test - * - * \return Whether an EIC line is enabled. - */ -extern Bool eic_is_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \name Interrupt Control Functions - */ -//! @{ - -/*! \brief Enable the interrupt feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param mask_lines Mask for current selected lines - */ -extern void eic_enable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines); - -/*! \brief Enable the interrupt feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param line_number Line number to enable - */ -extern void eic_enable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Disable the interrupt feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param mask_lines Mask for current selected lines - */ -extern void eic_disable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines); - -/*! \brief Disable the interrupt feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param line_number Line number to disable - */ -extern void eic_disable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Tells whether an EIC interrupt line is enabled. - * - * \param eic Base address of the EIC module - * \param line_number Line number to test - * - * \return Whether an EIC interrupt line is enabled. - */ -extern Bool eic_is_interrupt_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Clear the interrupt flag. - * Call this function once you've handled the interrupt. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param mask_lines Mask for current selected lines - */ -extern void eic_clear_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines); - -/*! \brief Clear the interrupt flag. - * Call this function once you've handled the interrupt. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param line_number Line number to clear - */ -extern void eic_clear_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Tells whether an EIC interrupt line is pending. - * - * \param eic Base address of the EIC module - * \param line_number Line number to test - * - * \return Whether an EIC interrupt line is pending. - */ -extern Bool eic_is_interrupt_line_pending(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Enable the interrupt scan feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param presc Prescale select for the keypad scan rate in the range [0,31]. - */ -extern void eic_enable_interrupt_scan(volatile avr32_eic_t *eic, unsigned int presc); - -/*! \brief Disable the interrupt scan feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - */ -extern void eic_disable_interrupt_scan(volatile avr32_eic_t *eic); - -/*! \brief Return scan pad number that causes interrupt. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - */ -extern unsigned long eic_get_interrupt_pad_scan(volatile avr32_eic_t *eic); - -//! @} - - -#endif // _EIC_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c deleted file mode 100644 index 2eee15c..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c +++ /dev/null @@ -1,1117 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FLASHC driver for AVR32 UC3. - * - * AVR32 Flash Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a FLASHC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include -#include "compiler.h" -#include "flashc.h" - - -/*! \name FLASHC Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long fcr; - avr32_flashc_fcr_t FCR; -} u_avr32_flashc_fcr_t; - -typedef union -{ - unsigned long fcmd; - avr32_flashc_fcmd_t FCMD; -} u_avr32_flashc_fcmd_t; - -//! @} - - -/*! \name Flash Properties - */ -//! @{ - - -unsigned int flashc_get_flash_size(void) -{ -#if (defined AVR32_FLASHC_300_H_INCLUDED) - static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_PR_FSZ_SIZE] = - { - 32 << 10, - 64 << 10, - 128 << 10, - 256 << 10, - 384 << 10, - 512 << 10, - 768 << 10, - 1024 << 10 - }; - return FLASH_SIZE[(AVR32_FLASHC.pr & AVR32_FLASHC_PR_FSZ_MASK) >> AVR32_FLASHC_PR_FSZ_OFFSET]; -#else - static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_FSR_FSZ_SIZE] = - { - 32 << 10, - 64 << 10, - 128 << 10, - 256 << 10, - 384 << 10, - 512 << 10, - 768 << 10, - 1024 << 10 - }; - return FLASH_SIZE[(AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FSZ_MASK) >> AVR32_FLASHC_FSR_FSZ_OFFSET]; -#endif -} - - -unsigned int flashc_get_page_count(void) -{ - return flashc_get_flash_size() / AVR32_FLASHC_PAGE_SIZE; -} - - -unsigned int flashc_get_page_count_per_region(void) -{ - return flashc_get_page_count() / AVR32_FLASHC_REGIONS; -} - - -unsigned int flashc_get_page_region(int page_number) -{ - return ((page_number >= 0) ? page_number : flashc_get_page_number()) / flashc_get_page_count_per_region(); -} - - -unsigned int flashc_get_region_first_page_number(unsigned int region) -{ - return region * flashc_get_page_count_per_region(); -} - - -//! @} - - -/*! \name FLASHC Control - */ -//! @{ - - -unsigned int flashc_get_wait_state(void) -{ - return (AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FWS_MASK) >> AVR32_FLASHC_FCR_FWS_OFFSET; -} - - -void flashc_set_wait_state(unsigned int wait_state) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.fws = wait_state; - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_ready_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FRDY_MASK) != 0); -} - - -void flashc_enable_ready_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.frdy = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_lock_error_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_LOCKE_MASK) != 0); -} - - -void flashc_enable_lock_error_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.locke = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_prog_error_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_PROGE_MASK) != 0); -} - - -void flashc_enable_prog_error_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.proge = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -//! @} - - -/*! \name FLASHC Status - */ -//! @{ - - -Bool flashc_is_ready(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FRDY_MASK) != 0); -} - - -void flashc_default_wait_until_ready(void) -{ - while (!flashc_is_ready()); -} - - -void (*volatile flashc_wait_until_ready)(void) = flashc_default_wait_until_ready; - - -/*! \brief Gets the error status of the FLASHC. - * - * \return The error status of the FLASHC built up from - * \c AVR32_FLASHC_FSR_LOCKE_MASK and \c AVR32_FLASHC_FSR_PROGE_MASK. - * - * \warning This hardware error status is cleared by all functions reading the - * Flash Status Register (FSR). This function is therefore not part of - * the driver's API which instead presents \ref flashc_is_lock_error - * and \ref flashc_is_programming_error. - */ -static unsigned int flashc_get_error_status(void) -{ - return AVR32_FLASHC.fsr & (AVR32_FLASHC_FSR_LOCKE_MASK | - AVR32_FLASHC_FSR_PROGE_MASK); -} - - -//! Sticky error status of the FLASHC. -//! This variable is updated by functions that issue FLASHC commands. It -//! contains the cumulated FLASHC error status of all the FLASHC commands issued -//! by a function. -static unsigned int flashc_error_status = 0; - - -Bool flashc_is_lock_error(void) -{ - return ((flashc_error_status & AVR32_FLASHC_FSR_LOCKE_MASK) != 0); -} - - -Bool flashc_is_programming_error(void) -{ - return ((flashc_error_status & AVR32_FLASHC_FSR_PROGE_MASK) != 0); -} - - -//! @} - - -/*! \name FLASHC Command Control - */ -//! @{ - - -unsigned int flashc_get_command(void) -{ - return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_CMD_MASK) >> AVR32_FLASHC_FCMD_CMD_OFFSET; -} - - -unsigned int flashc_get_page_number(void) -{ - return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_PAGEN_MASK) >> AVR32_FLASHC_FCMD_PAGEN_OFFSET; -} - - -void flashc_issue_command(unsigned int command, int page_number) -{ - u_avr32_flashc_fcmd_t u_avr32_flashc_fcmd; - flashc_wait_until_ready(); - u_avr32_flashc_fcmd.fcmd = AVR32_FLASHC.fcmd; - u_avr32_flashc_fcmd.FCMD.cmd = command; - if (page_number >= 0) u_avr32_flashc_fcmd.FCMD.pagen = page_number; - u_avr32_flashc_fcmd.FCMD.key = AVR32_FLASHC_FCMD_KEY_KEY; - AVR32_FLASHC.fcmd = u_avr32_flashc_fcmd.fcmd; - flashc_error_status = flashc_get_error_status(); - flashc_wait_until_ready(); -} - - -//! @} - - -/*! \name FLASHC Global Commands - */ -//! @{ - - -void flashc_no_operation(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_NOP, -1); -} - - -void flashc_erase_all(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EA, -1); -} - - -//! @} - - -/*! \name FLASHC Protection Mechanisms - */ -//! @{ - - -Bool flashc_is_security_bit_active(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_SECURITY_MASK) != 0); -} - - -void flashc_activate_security_bit(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_SSB, -1); -} - - -unsigned int flashc_get_bootloader_protected_size(void) -{ - unsigned int bootprot = (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 - - flashc_read_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET, - AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE); - return (bootprot) ? AVR32_FLASHC_PAGE_SIZE << bootprot : 0; -} - - -unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size) -{ - flashc_set_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET, - AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE, - (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 - - ((bootprot_size) ? - 32 - clz((((min(max(bootprot_size, AVR32_FLASHC_PAGE_SIZE << 1), - AVR32_FLASHC_PAGE_SIZE << - ((1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1)) + - AVR32_FLASHC_PAGE_SIZE - 1) / - AVR32_FLASHC_PAGE_SIZE) << 1) - 1) - 1 : - 0)); - return flashc_get_bootloader_protected_size(); -} - - -Bool flashc_is_external_privileged_fetch_locked(void) -{ - return (!flashc_read_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET)); -} - - -void flashc_lock_external_privileged_fetch(Bool lock) -{ - flashc_set_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET, !lock); -} - - -Bool flashc_is_page_region_locked(int page_number) -{ - return flashc_is_region_locked(flashc_get_page_region(page_number)); -} - - -Bool flashc_is_region_locked(unsigned int region) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_LOCK0_MASK << (region & (AVR32_FLASHC_REGIONS - 1))) != 0); -} - - -void flashc_lock_page_region(int page_number, Bool lock) -{ - flashc_issue_command((lock) ? AVR32_FLASHC_FCMD_CMD_LP : AVR32_FLASHC_FCMD_CMD_UP, page_number); -} - - -void flashc_lock_region(unsigned int region, Bool lock) -{ - flashc_lock_page_region(flashc_get_region_first_page_number(region), lock); -} - - -void flashc_lock_all_regions(Bool lock) -{ - unsigned int error_status = 0; - unsigned int region = AVR32_FLASHC_REGIONS; - while (region) - { - flashc_lock_region(--region, lock); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -//! @} - - -/*! \name Access to General-Purpose Fuses - */ -//! @{ - - -Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit) -{ - return ((flashc_read_all_gp_fuses() & 1ULL << (gp_fuse_bit & 0x3F)) != 0); -} - - -U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width) -{ - return flashc_read_all_gp_fuses() >> (pos & 0x3F) & ((1ULL << min(width, 64)) - 1); -} - - -U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte) -{ - return flashc_read_all_gp_fuses() >> ((gp_fuse_byte & 0x07) << 3); -} - - -U64 flashc_read_all_gp_fuses(void) -{ - return AVR32_FLASHC.fgpfrlo | (U64)AVR32_FLASHC.fgpfrhi << 32; -} - - -Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EGPB, gp_fuse_bit & 0x3F); - return (check) ? flashc_read_gp_fuse_bit(gp_fuse_bit) : TRUE; -} - - -Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++) - { - flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; - return (check) ? (flashc_read_gp_fuse_bitfield(pos, width) == (1ULL << width) - 1) : TRUE; -} - - -Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check) -{ - unsigned int error_status; - unsigned int current_gp_fuse_byte; - U64 value = flashc_read_all_gp_fuses(); - flashc_erase_all_gp_fuses(FALSE); - error_status = flashc_error_status; - for (current_gp_fuse_byte = 0; current_gp_fuse_byte < 8; current_gp_fuse_byte++, value >>= 8) - { - if (current_gp_fuse_byte != gp_fuse_byte) - { - flashc_write_gp_fuse_byte(current_gp_fuse_byte, value); - error_status |= flashc_error_status; - } - } - flashc_error_status = error_status; - return (check) ? (flashc_read_gp_fuse_byte(gp_fuse_byte) == 0xFF) : TRUE; -} - - -Bool flashc_erase_all_gp_fuses(Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EAGPF, -1); - return (check) ? (flashc_read_all_gp_fuses() == 0xFFFFFFFFFFFFFFFFULL) : TRUE; -} - - -void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value) -{ - if (!value) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WGPB, gp_fuse_bit & 0x3F); -} - - -void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1) - { - flashc_write_gp_fuse_bit(gp_fuse_bit, value & 0x01); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_PGPFB, (gp_fuse_byte & 0x07) | value << 3); -} - - -void flashc_write_all_gp_fuses(U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_byte; - for (gp_fuse_byte = 0; gp_fuse_byte < 8; gp_fuse_byte++, value >>= 8) - { - flashc_write_gp_fuse_byte(gp_fuse_byte, value); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value) -{ - if (value) - flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE); - else - flashc_write_gp_fuse_bit(gp_fuse_bit, FALSE); -} - - -void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1) - { - flashc_set_gp_fuse_bit(gp_fuse_bit, value & 0x01); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value) -{ - unsigned int error_status; - switch (value) - { - case 0xFF: - flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE); - break; - case 0x00: - flashc_write_gp_fuse_byte(gp_fuse_byte, 0x00); - break; - default: - flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE); - error_status = flashc_error_status; - flashc_write_gp_fuse_byte(gp_fuse_byte, value); - flashc_error_status |= error_status; - } -} - - -void flashc_set_all_gp_fuses(U64 value) -{ - unsigned int error_status; - switch (value) - { - case 0xFFFFFFFFFFFFFFFFULL: - flashc_erase_all_gp_fuses(FALSE); - break; - case 0x0000000000000000ULL: - flashc_write_all_gp_fuses(0x0000000000000000ULL); - break; - default: - flashc_erase_all_gp_fuses(FALSE); - error_status = flashc_error_status; - flashc_write_all_gp_fuses(value); - flashc_error_status |= error_status; - } -} - - -//! @} - - -/*! \name Access to Flash Pages - */ -//! @{ - - -void flashc_clear_page_buffer(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_CPB, -1); -} - - -Bool flashc_is_page_erased(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_QPRR_MASK) != 0); -} - - -Bool flashc_quick_page_read(int page_number) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPR, page_number); - return flashc_is_page_erased(); -} - - -Bool flashc_erase_page(int page_number, Bool check) -{ - Bool page_erased = TRUE; - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EP, page_number); - if (check) - { - unsigned int error_status = flashc_error_status; - page_erased = flashc_quick_page_read(-1); - flashc_error_status |= error_status; - } - return page_erased; -} - - -Bool flashc_erase_all_pages(Bool check) -{ - Bool all_pages_erased = TRUE; - unsigned int error_status = 0; - unsigned int page_number = flashc_get_page_count(); - while (page_number) - { - all_pages_erased &= flashc_erase_page(--page_number, check); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; - return all_pages_erased; -} - - -void flashc_write_page(int page_number) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WP, page_number); -} - - -Bool flashc_quick_user_page_read(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPRUP, -1); - return flashc_is_page_erased(); -} - - -Bool flashc_erase_user_page(Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EUP, -1); - return (check) ? flashc_quick_user_page_read() : TRUE; -} - - -void flashc_write_user_page(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WUP, -1); -} - - -volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase) -{ - return flashc_memset16(dst, src | (U16)src << 8, nbytes, erase); -} - - -volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase) -{ - return flashc_memset32(dst, src | (U32)src << 16, nbytes, erase); -} - - -volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase) -{ - return flashc_memset64(dst, src | (U64)src << 32, nbytes, erase); -} - - -volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase) -{ - // Use aggregated pointers to have several alignments available for a same address. - UnionCVPtr flash_array_end; - UnionVPtr dest; - Union64 source = {0}; - StructCVPtr dest_end; - UnionCVPtr flash_page_source_end; - Bool incomplete_flash_page_end; - Union64 flash_dword; - UnionVPtr tmp; - unsigned int error_status = 0; - unsigned int i; - - // Reformat arguments. - flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size(); - dest.u8ptr = dst; - for (i = (Get_align((U32)dest.u8ptr, sizeof(U64)) - 1) & (sizeof(U64) - 1); - src; i = (i - 1) & (sizeof(U64) - 1)) - { - source.u8[i] = src; - src >>= 8; - } - dest_end.u8ptr = dest.u8ptr + nbytes; - - // If destination is outside flash, go to next flash page if any. - if (dest.u8ptr < AVR32_FLASH) - { - dest.u8ptr = AVR32_FLASH; - } - else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE) - { - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - - // If end of destination is outside flash, move it to the end of the previous flash page if any. - if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE) - { - dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE; - } - else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr) - { - dest_end.u8ptr = flash_array_end.u8ptr; - } - - // Align each end of destination pointer with its natural boundary. - dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16)); - dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32)); - dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64)); - - // While end of destination is not reached... - while (dest.u8ptr < dest_end.u8ptr) - { - // Clear the page buffer in order to prepare data for a flash page write. - flashc_clear_page_buffer(); - error_status |= flashc_error_status; - - // Determine where the source data will end in the current flash page. - flash_page_source_end.u64ptr = - (U64 *)min((U32)dest_end.u64ptr, - Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE); - - // Determine if the current destination page has an incomplete end. - incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >= - Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE)); - - // Use a flash double-word buffer to manage unaligned accesses. - flash_dword.u64 = source.u64; - - // If destination does not point to the beginning of the current flash page... - if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE)) - { - // Fill the beginning of the page buffer with the current flash page data. - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE); - tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - - // If destination is not 64-bit aligned... - if (!Test_align((U32)dest.u8ptr, sizeof(U64))) - { - // Fill the beginning of the flash double-word buffer with the current - // flash page data. - // This is required by the hardware, even if page erase is not - // requested, in order to be able to write successfully to erased parts - // of flash pages that have already been written to. - for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Align the destination pointer with its 64-bit boundary. - dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - - // If the current destination double-word is not the last one... - if (dest.u64ptr < dest_end.u64ptr) - { - // Write the flash double-word buffer to the page buffer and reinitialize it. - *dest.u64ptr++ = flash_dword.u64; - flash_dword.u64 = source.u64; - } - } - } - - // Write the source data to the page buffer with 64-bit alignment. - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - *dest.u64ptr++ = source.u64; - - // If the current destination page has an incomplete end... - if (incomplete_flash_page_end) - { - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - { - tmp.u8ptr = (volatile U8 *)dest_end.u8ptr; - - // If end of destination is not 64-bit aligned... - if (!Test_align((U32)dest_end.u8ptr, sizeof(U64))) - { - // Fill the end of the flash double-word buffer with the current flash page data. - for (i = Get_align((U32)dest_end.u8ptr, sizeof(U64)); i < sizeof(U64); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - - // Fill the end of the page buffer with the current flash page data. - for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - } - } - - // If the current flash page is in the flash array... - if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE) - { - // Erase the current page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_page(-1, FALSE); - error_status |= flashc_error_status; - } - flashc_write_page(-1); - error_status |= flashc_error_status; - - // If the end of the flash array is reached, go to the User page. - if (dest.u8ptr >= flash_array_end.u8ptr) - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - // If the current flash page is the User page... - else - { - // Erase the User page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_user_page(FALSE); - error_status |= flashc_error_status; - } - flashc_write_user_page(); - error_status |= flashc_error_status; - } - } - - // Update the FLASHC error status. - flashc_error_status = error_status; - - // Return the initial destination pointer as the standard memset function does. - return dst; -} - - -volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase) -{ - // Use aggregated pointers to have several alignments available for a same address. - UnionCVPtr flash_array_end; - UnionVPtr dest; - UnionCPtr source; - StructCVPtr dest_end; - UnionCVPtr flash_page_source_end; - Bool incomplete_flash_page_end; - Union64 flash_dword; - Bool flash_dword_pending = FALSE; - UnionVPtr tmp; - unsigned int error_status = 0; - unsigned int i, j; - - // Reformat arguments. - flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size(); - dest.u8ptr = dst; - source.u8ptr = src; - dest_end.u8ptr = dest.u8ptr + nbytes; - - // If destination is outside flash, go to next flash page if any. - if (dest.u8ptr < AVR32_FLASH) - { - source.u8ptr += AVR32_FLASH - dest.u8ptr; - dest.u8ptr = AVR32_FLASH; - } - else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE) - { - source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr; - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - - // If end of destination is outside flash, move it to the end of the previous flash page if any. - if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE) - { - dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE; - } - else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr) - { - dest_end.u8ptr = flash_array_end.u8ptr; - } - - // Align each end of destination pointer with its natural boundary. - dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16)); - dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32)); - dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64)); - - // While end of destination is not reached... - while (dest.u8ptr < dest_end.u8ptr) - { - // Clear the page buffer in order to prepare data for a flash page write. - flashc_clear_page_buffer(); - error_status |= flashc_error_status; - - // Determine where the source data will end in the current flash page. - flash_page_source_end.u64ptr = - (U64 *)min((U32)dest_end.u64ptr, - Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE); - - // Determine if the current destination page has an incomplete end. - incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >= - Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE)); - - // If destination does not point to the beginning of the current flash page... - if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE)) - { - // Fill the beginning of the page buffer with the current flash page data. - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE); - tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - - // If destination is not 64-bit aligned... - if (!Test_align((U32)dest.u8ptr, sizeof(U64))) - { - // Fill the beginning of the flash double-word buffer with the current - // flash page data. - // This is required by the hardware, even if page erase is not - // requested, in order to be able to write successfully to erased parts - // of flash pages that have already been written to. - for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Fill the end of the flash double-word buffer with the source data. - for (; i < sizeof(U64); i++) - flash_dword.u8[i] = *source.u8ptr++; - - // Align the destination pointer with its 64-bit boundary. - dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - - // If the current destination double-word is not the last one... - if (dest.u64ptr < dest_end.u64ptr) - { - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - // If the current destination double-word is the last one, the flash - // double-word buffer must be kept for later. - else flash_dword_pending = TRUE; - } - } - - // Read the source data with the maximal possible alignment and write it to - // the page buffer with 64-bit alignment. - switch (Get_align((U32)source.u8ptr, sizeof(U32))) - { - case 0: - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - *dest.u64ptr++ = *source.u64ptr++; - break; - - case sizeof(U16): - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - { - for (j = 0; j < sizeof(U64) / sizeof(U16); j++) flash_dword.u16[j] = *source.u16ptr++; - *dest.u64ptr++ = flash_dword.u64; - } - break; - - default: - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - { - for (j = 0; j < sizeof(U64); j++) flash_dword.u8[j] = *source.u8ptr++; - *dest.u64ptr++ = flash_dword.u64; - } - } - - // If the current destination page has an incomplete end... - if (incomplete_flash_page_end) - { - // If the flash double-word buffer is in use, do not initialize it. - if (flash_dword_pending) i = Get_align((U32)dest_end.u8ptr, sizeof(U64)); - // If the flash double-word buffer is free... - else - { - // Fill the beginning of the flash double-word buffer with the source data. - for (i = 0; i < Get_align((U32)dest_end.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *source.u8ptr++; - } - - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - { - tmp.u8ptr = (volatile U8 *)dest_end.u8ptr; - - // If end of destination is not 64-bit aligned... - if (!Test_align((U32)dest_end.u8ptr, sizeof(U64))) - { - // Fill the end of the flash double-word buffer with the current flash page data. - for (; i < sizeof(U64); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - - // Fill the end of the page buffer with the current flash page data. - for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - } - } - - // If the current flash page is in the flash array... - if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE) - { - // Erase the current page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_page(-1, FALSE); - error_status |= flashc_error_status; - } - flashc_write_page(-1); - error_status |= flashc_error_status; - - // If the end of the flash array is reached, go to the User page. - if (dest.u8ptr >= flash_array_end.u8ptr) - { - source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr; - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - } - // If the current flash page is the User page... - else - { - // Erase the User page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_user_page(FALSE); - error_status |= flashc_error_status; - } - flashc_write_user_page(); - error_status |= flashc_error_status; - } - } - - // Update the FLASHC error status. - flashc_error_status = error_status; - - // Return the initial destination pointer as the standard memcpy function does. - return dst; -} - - -#if UC3C -void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz) -{ - //! Device-specific data - #undef AVR32_FLASHC_FWS_0_MAX_FREQ - #undef AVR32_FLASHC_FWS_1_MAX_FREQ - #undef AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ - #undef AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ - #define AVR32_FLASHC_FWS_0_MAX_FREQ 33000000 - #define AVR32_FLASHC_FWS_1_MAX_FREQ 66000000 - #define AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ 33000000 - #define AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ 72000000 - // These defines are missing from or wrong in the toolchain header files uc3cxxx.h - // Put a Bugzilla - - if(cpu_f_hz > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ) // > 33MHz - { - // Set a wait-state - flashc_set_wait_state(1); - if(cpu_f_hz <= AVR32_FLASHC_FWS_1_MAX_FREQ) // <= 66MHz and >33Mhz - { - // Disable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); - } - else // > 66Mhz - { - // Enable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - } - } - else // <= 33 MHz - { - // Disable wait-state - flashc_set_wait_state(0); - - // Disable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); - - } -} -#endif // UC3C device-specific implementation - -//! @} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h deleted file mode 100644 index 9f2547a..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h +++ /dev/null @@ -1,1002 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FLASHC driver for AVR32 UC3. - * - * AVR32 Flash Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a FLASHC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _FLASHC_H_ -#define _FLASHC_H_ - -#include -#include -#include "compiler.h" - -//! Number of flash regions defined by the FLASHC. -#define AVR32_FLASHC_REGIONS (AVR32_FLASHC_FLASH_SIZE /\ - (AVR32_FLASHC_PAGES_PR_REGION * AVR32_FLASHC_PAGE_SIZE)) - - -/*! \name Flash Properties - */ -//! @{ - -/*! \brief Gets the size of the whole flash array. - * - * \return The size of the whole flash array in bytes. - */ -extern unsigned int flashc_get_flash_size(void); - -/*! \brief Gets the total number of pages in the flash array. - * - * \return The total number of pages in the flash array. - */ -extern unsigned int flashc_get_page_count(void); - -/*! \brief Gets the number of pages in each flash region. - * - * \return The number of pages in each flash region. - */ -extern unsigned int flashc_get_page_count_per_region(void); - -/*! \brief Gets the region number of a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return The region number of the specified page. - */ -extern unsigned int flashc_get_page_region(int page_number); - -/*! \brief Gets the number of the first page of a region. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * - * \return The number of the first page of the specified region. - */ -extern unsigned int flashc_get_region_first_page_number(unsigned int region); - -//! @} - - -/*! \name FLASHC Control - */ -//! @{ - -/*! \brief Gets the number of wait states of flash read accesses. - * - * \return The number of wait states of flash read accesses. - */ -extern unsigned int flashc_get_wait_state(void); - -/*! \brief Sets the number of wait states of flash read accesses. - * - * \param wait_state The number of wait states of flash read accesses: \c 0 to - * \c 1. - */ -extern void flashc_set_wait_state(unsigned int wait_state); - -/*! \brief Tells whether the Flash Ready interrupt is enabled. - * - * \return Whether the Flash Ready interrupt is enabled. - */ -extern Bool flashc_is_ready_int_enabled(void); - -/*! \brief Enables or disables the Flash Ready interrupt. - * - * \param enable Whether to enable the Flash Ready interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_ready_int(Bool enable); - -/*! \brief Tells whether the Lock Error interrupt is enabled. - * - * \return Whether the Lock Error interrupt is enabled. - */ -extern Bool flashc_is_lock_error_int_enabled(void); - -/*! \brief Enables or disables the Lock Error interrupt. - * - * \param enable Whether to enable the Lock Error interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_lock_error_int(Bool enable); - -/*! \brief Tells whether the Programming Error interrupt is enabled. - * - * \return Whether the Programming Error interrupt is enabled. - */ -extern Bool flashc_is_prog_error_int_enabled(void); - -/*! \brief Enables or disables the Programming Error interrupt. - * - * \param enable Whether to enable the Programming Error interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_prog_error_int(Bool enable); - -//! @} - - -/*! \name FLASHC Status - */ -//! @{ - -/*! \brief Tells whether the FLASHC is ready to run a new command. - * - * \return Whether the FLASHC is ready to run a new command. - */ -extern Bool flashc_is_ready(void); - -/*! \brief Waits actively until the FLASHC is ready to run a new command. - * - * This is the default function assigned to \ref flashc_wait_until_ready. - */ -extern void flashc_default_wait_until_ready(void); - -//! Pointer to the function used by the driver when it needs to wait until the -//! FLASHC is ready to run a new command. -//! The default function is \ref flashc_default_wait_until_ready. -//! The user may change this pointer to use another implementation. -extern void (*volatile flashc_wait_until_ready)(void); - -/*! \brief Tells whether a Lock Error has occurred during the last function - * called that issued one or more FLASHC commands. - * - * \return Whether a Lock Error has occurred during the last function called - * that issued one or more FLASHC commands. - */ -extern Bool flashc_is_lock_error(void); - -/*! \brief Tells whether a Programming Error has occurred during the last - * function called that issued one or more FLASHC commands. - * - * \return Whether a Programming Error has occurred during the last function - * called that issued one or more FLASHC commands. - */ -extern Bool flashc_is_programming_error(void); - -//! @} - - -/*! \name FLASHC Command Control - */ -//! @{ - -/*! \brief Gets the last issued FLASHC command. - * - * \return The last issued FLASHC command. - */ -extern unsigned int flashc_get_command(void); - -/*! \brief Gets the current FLASHC page number. - * - * \return The current FLASHC page number. - */ -extern unsigned int flashc_get_page_number(void); - -/*! \brief Issues a FLASHC command. - * - * \param command The command: \c AVR32_FLASHC_FCMD_CMD_x. - * \param page_number The page number to apply the command to: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: use this to apply the command to the current page number - * or if the command does not apply to any page number; - * \arg this argument may have other meanings according to the command. See - * the FLASHC chapter of the MCU datasheet. - * - * \warning A Lock Error is issued if the command violates the protection - * mechanism. - * - * \warning A Programming Error is issued if the command is invalid. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_issue_command(unsigned int command, int page_number); - -//! @} - - -/*! \name FLASHC Global Commands - */ -//! @{ - -/*! \brief Issues a No Operation command to the FLASHC. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_no_operation(void); - -/*! \brief Issues an Erase All command to the FLASHC. - * - * This command erases all bits in the flash array, the general-purpose fuse - * bits and the Security bit. The User page is not erased. - * - * This command also ensures that all volatile memories, such as register file - * and RAMs, are erased before the Security bit is erased, i.e. deactivated. - * - * \warning A Lock Error is issued if at least one region is locked or the - * bootloader protection is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern void flashc_erase_all(void); - -//! @} - - -/*! \name FLASHC Protection Mechanisms - */ -//! @{ - -/*! \brief Tells whether the Security bit is active. - * - * \return Whether the Security bit is active. - */ -extern Bool flashc_is_security_bit_active(void); - -/*! \brief Activates the Security bit. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_activate_security_bit(void); - -/*! \brief Gets the bootloader protected size. - * - * \return The bootloader protected size in bytes. - */ -extern unsigned int flashc_get_bootloader_protected_size(void); - -/*! \brief Sets the bootloader protected size. - * - * \param bootprot_size The wanted bootloader protected size in bytes. If this - * size is not supported, the actual size will be the - * nearest greater available size or the maximal possible - * size if the requested size is too large. - * - * \return The actual bootloader protected size in bytes. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size); - -/*! \brief Tells whether external privileged fetch is locked. - * - * \return Whether external privileged fetch is locked. - */ -extern Bool flashc_is_external_privileged_fetch_locked(void); - -/*! \brief Locks or unlocks external privileged fetch. - * - * \param lock Whether to lock external privileged fetch: \c TRUE or \c FALSE. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_external_privileged_fetch(Bool lock); - -/*! \brief Tells whether the region of a page is locked. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return Whether the region of the specified page is locked. - */ -extern Bool flashc_is_page_region_locked(int page_number); - -/*! \brief Tells whether a region is locked. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * - * \return Whether the specified region is locked. - */ -extern Bool flashc_is_region_locked(unsigned int region); - -/*! \brief Locks or unlocks the region of a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * \param lock Whether to lock the region of the specified page: \c TRUE or - * \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_page_region(int page_number, Bool lock); - -/*! \brief Locks or unlocks a region. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * \param lock Whether to lock the specified region: \c TRUE or \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_region(unsigned int region, Bool lock); - -/*! \brief Locks or unlocks all regions. - * - * \param lock Whether to lock the regions: \c TRUE or \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_all_regions(Bool lock); - -//! @} - - -/*! \name Access to General-Purpose Fuses - */ -//! @{ - -/*! \brief Reads a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * - * \return The value of the specified general-purpose fuse bit. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit); - -/*! \brief Reads a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * - * \return The value of the specified general-purpose fuse bit-field. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width); - -/*! \brief Reads a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * - * \return The value of the specified general-purpose fuse byte. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte); - -/*! \brief Reads all general-purpose fuses. - * - * \return The value of all general-purpose fuses as a word. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U64 flashc_read_all_gp_fuses(void); - -/*! \brief Erases a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check); - -/*! \brief Erases a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check); - -/*! \brief Erases a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check); - -/*! \brief Erases all general-purpose fuses. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_all_gp_fuses(Bool check); - -/*! \brief Writes a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param value The value of the specified general-purpose fuse bit. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value); - -/*! \brief Writes a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param value The value of the specified general-purpose fuse bit-field. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value); - -/*! \brief Writes a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param value The value of the specified general-purpose fuse byte. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value); - -/*! \brief Writes all general-purpose fuses. - * - * \param value The value of all general-purpose fuses as a word. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_all_gp_fuses(U64 value); - -/*! \brief Sets a general-purpose fuse bit with the appropriate erase and write - * operations. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param value The value of the specified general-purpose fuse bit. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value); - -/*! \brief Sets a general-purpose fuse bit-field with the appropriate erase and - * write operations. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param value The value of the specified general-purpose fuse bit-field. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value); - -/*! \brief Sets a general-purpose fuse byte with the appropriate erase and write - * operations. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param value The value of the specified general-purpose fuse byte. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value); - -/*! \brief Sets all general-purpose fuses with the appropriate erase and write - * operations. - * - * \param value The value of all general-purpose fuses as a word. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_all_gp_fuses(U64 value); - -//! @} - - -/*! \name Access to Flash Pages - */ -//! @{ - -/*! \brief Clears the page buffer. - * - * This command resets all bits in the page buffer to one. Write accesses to the - * page buffer can only change page buffer bits from one to zero. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_clear_page_buffer(void); - -/*! \brief Tells whether the page to which the last Quick Page Read or Quick - * Page Read User Page command was applied was erased. - * - * \return Whether the page to which the last Quick Page Read or Quick Page Read - * User Page command was applied was erased. - */ -extern Bool flashc_is_page_erased(void); - -/*! \brief Applies the Quick Page Read command to a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return Whether the specified page is erased. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern Bool flashc_quick_page_read(int page_number); - -/*! \brief Erases a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the command is applied to a page belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_page(int page_number, Bool check); - -/*! \brief Erases all pages within the flash array. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if at least one region is locked or the - * bootloader protection is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_all_pages(Bool check); - -/*! \brief Writes a page from the page buffer. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \warning A Lock Error is issued if the command is applied to a page belonging - * to a locked region or to the bootloader protected area. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - */ -extern void flashc_write_page(int page_number); - -/*! \brief Issues a Quick Page Read User Page command to the FLASHC. - * - * \return Whether the User page is erased. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern Bool flashc_quick_user_page_read(void); - -/*! \brief Erases the User page. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_user_page(Bool check); - -/*! \brief Writes the User page from the page buffer. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - */ -extern void flashc_write_user_page(void); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src source byte. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source byte. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source half-word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source half-word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source double-word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source double-word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source pattern. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source double-word. - * \param src_width \a src width in bits: 8, 16, 32 or 64. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -#define flashc_memset(dst, src, src_width, nbytes, erase) \ - TPASTE2(flashc_memset, src_width)((dst), (src), (nbytes), (erase)) - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the source pointed to by \a src. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Pointer to source data. - * \param nbytes Number of bytes to copy. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning If copying takes place between areas that overlap, the behavior is - * undefined. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase); - -#if UC3C - -/*! \brief Depednding to the CPU frequency, set the wait states of flash read - * accesses and enable or disable the High speed read mode. - * - * \param cpu_f_hz The CPU frequency - */ -void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz); -#endif // UC3C device-specific implementation - -//! @} - - -#endif // _FLASHC_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c deleted file mode 100644 index b6b83c7..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c +++ /dev/null @@ -1,458 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief GPIO driver for AVR32 UC3. - * - * This file defines a useful set of functions for the GPIO. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a GPIO module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "gpio.h" - -//! GPIO module instance. -#define GPIO AVR32_GPIO - - -/*! \name Peripheral Bus Interface - */ -//! @{ - - -int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size) -{ - int status = GPIO_SUCCESS; - unsigned int i; - - for (i = 0; i < size; i++) - { - status |= gpio_enable_module_pin(gpiomap->pin, gpiomap->function); - gpiomap++; - } - - return status; -} - - -int gpio_enable_module_pin(unsigned int pin, unsigned int function) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Enable the correct function. - switch (function) - { - case 0: // A function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 1: // B function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 2: // C function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 3: // D function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - case 4: // E function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 5: // F function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 6: // G function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 7: // H function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; -#endif - - default: - return GPIO_INVALID_ARGUMENT; - } - - // Disable GPIO control. - gpio_port->gperc = 1 << (pin & 0x1F); - - return GPIO_SUCCESS; -} - - -void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size) -{ - unsigned int i; - - for (i = 0; i < size; i++) - { - gpio_enable_gpio_pin(gpiomap->pin); - gpiomap++; - } -} - - -void gpio_enable_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->oderc = 1 << (pin & 0x1F); - gpio_port->gpers = 1 << (pin & 0x1F); -} - - -// The open-drain mode is not synthesized on the current AVR32 products. -// If one day some AVR32 products have this feature, the corresponding part -// numbers should be listed in the #if below. -// Note that other functions are available in this driver to use pins with open -// drain in GPIO mode. The advantage of the open-drain mode functions over these -// other functions is that they can be used not only in GPIO mode but also in -// module mode. -#if 0 - - -void gpio_enable_pin_open_drain(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->odmers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_open_drain(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->odmerc = 1 << (pin & 0x1F); -} - - -#endif - - -void gpio_enable_pin_pull_up(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puers = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pderc = 1 << (pin & 0x1F); -#endif -} - - -void gpio_disable_pin_pull_up(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); -} - -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) -// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control. - -/*! \brief Enables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -void gpio_enable_pin_pull_down(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); - gpio_port->pders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -void gpio_disable_pin_pull_down(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->pderc = 1 << (pin & 0x1F); -} - -/*! \brief Enables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -void gpio_enable_pin_buskeeper(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puers = 1 << (pin & 0x1F); - gpio_port->pders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -void gpio_disable_pin_buskeeper(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); - gpio_port->pderc = 1 << (pin & 0x1F); -} - -#endif - -int gpio_get_pin_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->pvr >> (pin & 0x1F)) & 1; -} - - -int gpio_get_gpio_pin_output_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->ovr >> (pin & 0x1F)) & 1; -} - - -int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return ((gpio_port->oder >> (pin & 0x1F)) & 1) ^ 1; -} - - -void gpio_set_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrs = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 1. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_clr_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_tgl_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrt = 1 << (pin & 0x1F); // Toggle the I/O line. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_set_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_clr_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_tgl_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line if the GPIO output driver is enabled: 0. - gpio_port->odert = 1 << (pin & 0x1F); // The GPIO output driver is toggled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_enable_pin_glitch_filter(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->gfers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_glitch_filter(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->gferc = 1 << (pin & 0x1F); -} - -/*! \brief Configure the edge detector of an input pin - * - * \param pin The pin number. - * \param mode The edge detection mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE - * or \ref GPIO_FALLING_EDGE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -static int gpio_configure_edge_detector(unsigned int pin, unsigned int mode) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Configure the edge detector. - switch (mode) - { - case GPIO_PIN_CHANGE: - gpio_port->imr0c = 1 << (pin & 0x1F); - gpio_port->imr1c = 1 << (pin & 0x1F); - break; - - case GPIO_RISING_EDGE: - gpio_port->imr0s = 1 << (pin & 0x1F); - gpio_port->imr1c = 1 << (pin & 0x1F); - break; - - case GPIO_FALLING_EDGE: - gpio_port->imr0c = 1 << (pin & 0x1F); - gpio_port->imr1s = 1 << (pin & 0x1F); - break; - - default: - return GPIO_INVALID_ARGUMENT; - } - - return GPIO_SUCCESS; -} - - -int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Enable the glitch filter. - gpio_port->gfers = 1 << (pin & 0x1F); - - // Configure the edge detector. - if(GPIO_INVALID_ARGUMENT == gpio_configure_edge_detector(pin, mode)) - return(GPIO_INVALID_ARGUMENT); - - // Enable interrupt. - gpio_port->iers = 1 << (pin & 0x1F); - - return GPIO_SUCCESS; -} - - -void gpio_disable_pin_interrupt(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->ierc = 1 << (pin & 0x1F); -} - - -int gpio_get_pin_interrupt_flag(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->ifr >> (pin & 0x1F)) & 1; -} - - -void gpio_clear_pin_interrupt_flag(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->ifrc = 1 << (pin & 0x1F); -} - - -//# -//# Peripheral Event System Support. -//# -#if UC3L -int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - if(TRUE == use_igf) - { - // Enable the glitch filter. - gpio_port->gfers = 1 << (pin & 0x1F); - } - else - { - // Disable the glitch filter. - gpio_port->gferc = 1 << (pin & 0x1F); - } - - // Configure the edge detector. - return(gpio_configure_edge_detector(pin, mode)); -} - -#endif - -//! @} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h deleted file mode 100644 index f0b5fd8..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h +++ /dev/null @@ -1,583 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief GPIO header for AVR32 UC3. - * - * This file contains basic GPIO driver functions. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a GPIO module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _GPIO_H_ -#define _GPIO_H_ - -#include -#include "compiler.h" - -/*! \name Return Values of the GPIO API - */ -//! @{ -#define GPIO_SUCCESS 0 //!< Function successfully completed. -#define GPIO_INVALID_ARGUMENT 1 //!< Input parameters are out of range. -//! @} - - -/*! \name Interrupt Trigger Modes - */ -//! @{ -#define GPIO_PIN_CHANGE 0 //!< Interrupt triggered upon pin change. -#define GPIO_RISING_EDGE 1 //!< Interrupt triggered upon rising edge. -#define GPIO_FALLING_EDGE 2 //!< Interrupt triggered upon falling edge. -//! @} - - -//! A type definition of pins and modules connectivity. -typedef struct -{ - unsigned char pin; //!< Module pin. - unsigned char function; //!< Module function. -} gpio_map_t[]; - - -/*! \name Peripheral Bus Interface - * - * Low-speed interface with a non-deterministic number of clock cycles per - * access. - * - * This interface operates with lower clock frequencies (fPB <= fCPU), and its - * timing is not deterministic since it needs to access a shared bus which may - * be heavily loaded. - * - * \note This interface is immediately available without initialization. - */ -//! @{ - -/*! \brief Enables specific module modes for a set of pins. - * - * \param gpiomap The pin map. - * \param size The number of pins in \a gpiomap. - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size); - -/*! \brief Enables a specific module mode for a pin. - * - * \param pin The pin number.\n - * Refer to the product header file `uc3x.h' (where x is the part - * number; e.g. x = a0512) for module pins. E.g., to enable a PWM - * channel output, the pin number can be AVR32_PWM_3_PIN for PWM - * channel 3. - * \param function The pin function.\n - * Refer to the product header file `uc3x.h' (where x is the - * part number; e.g. x = a0512) for module pin functions. E.g., - * to enable a PWM channel output, the pin function can be - * AVR32_PWM_3_FUNCTION for PWM channel 3. - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_module_pin(unsigned int pin, unsigned int function); - -/*! \brief Enables the GPIO mode of a set of pins. - * - * \param gpiomap The pin map. - * \param size The number of pins in \a gpiomap. - */ -extern void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size); - -/*! \brief Enables the GPIO mode of a pin. - * - * \param pin The pin number.\n - * Refer to the product header file `uc3x.h' (where x is the part - * number; e.g. x = a0512) for pin definitions. E.g., to enable the - * GPIO mode of PX21, AVR32_PIN_PX21 can be used. Module pins such as - * AVR32_PWM_3_PIN for PWM channel 3 can also be used to release - * module pins for GPIO. - */ -extern void gpio_enable_gpio_pin(unsigned int pin); - -// The open-drain mode is not synthesized on the current AVR32 products. -// If one day some AVR32 products have this feature, the corresponding part -// numbers should be listed in the #if below. -// Note that other functions are available in this driver to use pins with open -// drain in GPIO mode. The advantage of the open-drain mode functions over these -// other functions is that they can be used not only in GPIO mode but also in -// module mode. -#if 0 - -/*! \brief Enables the open-drain mode of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_open_drain(unsigned int pin); - -/*! \brief Disables the open-drain mode of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_open_drain(unsigned int pin); - -#endif - -/*! \brief Enables the pull-up resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_pull_up(unsigned int pin); - -/*! \brief Disables the pull-up resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_pull_up(unsigned int pin); - -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) -// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control. - -/*! \brief Enables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_pull_down(unsigned int pin); - -/*! \brief Disables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_pull_down(unsigned int pin); - -/*! \brief Enables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_buskeeper(unsigned int pin); - -/*! \brief Disables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_buskeeper(unsigned int pin); - -#endif - -/*! \brief Returns the value of a pin. - * - * \param pin The pin number. - * - * \return The pin value. - */ -extern int gpio_get_pin_value(unsigned int pin); - -/*! \brief Returns the output value set for a GPIO pin. - * - * \param pin The pin number. - * - * \return The pin output value. - * - * \note This function must be used in conjunction with \ref gpio_set_gpio_pin, - * \ref gpio_clr_gpio_pin and \ref gpio_tgl_gpio_pin. - */ -extern int gpio_get_gpio_pin_output_value(unsigned int pin); - -/*! \brief Returns the output value set for a GPIO pin using open drain. - * - * \param pin The pin number. - * - * \return The pin output value. - * - * \note This function must be used in conjunction with - * \ref gpio_set_gpio_open_drain_pin, \ref gpio_clr_gpio_open_drain_pin - * and \ref gpio_tgl_gpio_open_drain_pin. - */ -extern int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin); - -/*! \brief Drives a GPIO pin to 1. - * - * \param pin The pin number. - */ -extern void gpio_set_gpio_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 0. - * - * \param pin The pin number. - */ -extern void gpio_clr_gpio_pin(unsigned int pin); - -/*! \brief Toggles a GPIO pin. - * - * \param pin The pin number. - */ -extern void gpio_tgl_gpio_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 1 using open drain. - * - * \param pin The pin number. - */ -extern void gpio_set_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 0 using open drain. - * - * \param pin The pin number. - */ -extern void gpio_clr_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Toggles a GPIO pin using open drain. - * - * \param pin The pin number. - */ -extern void gpio_tgl_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Enables the glitch filter of a pin. - * - * When the glitch filter is enabled, a glitch with duration of less than 1 - * clock cycle is automatically rejected, while a pulse with duration of 2 clock - * cycles or more is accepted. For pulse durations between 1 clock cycle and 2 - * clock cycles, the pulse may or may not be taken into account, depending on - * the precise timing of its occurrence. Thus for a pulse to be guaranteed - * visible it must exceed 2 clock cycles, whereas for a glitch to be reliably - * filtered out, its duration must not exceed 1 clock cycle. The filter - * introduces 2 clock cycles latency. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_glitch_filter(unsigned int pin); - -/*! \brief Disables the glitch filter of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_glitch_filter(unsigned int pin); - -/*! \brief Enables the interrupt of a pin with the specified settings. - * - * \param pin The pin number. - * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or - * \ref GPIO_FALLING_EDGE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode); - -/*! \brief Disables the interrupt of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_interrupt(unsigned int pin); - -/*! \brief Gets the interrupt flag of a pin. - * - * \param pin The pin number. - * - * \return The pin interrupt flag. - */ -extern int gpio_get_pin_interrupt_flag(unsigned int pin); - -/*! \brief Clears the interrupt flag of a pin. - * - * \param pin The pin number. - */ -extern void gpio_clear_pin_interrupt_flag(unsigned int pin); - -//! @} - - -#if (defined AVR32_GPIO_LOCAL_ADDRESS) -/*! \name Local Bus Interface - * - * High-speed interface with only one clock cycle per access. - * - * This interface operates with high clock frequency (fCPU), and its timing is - * deterministic since it does not need to access a shared bus which may be - * heavily loaded. - * - * \warning To use this interface, the clock frequency of the peripheral bus on - * which the GPIO peripheral is connected must be set to the CPU clock - * frequency (fPB = fCPU). - * - * \note This interface has to be initialized in order to be available. - */ -//! @{ - -/*! \brief Enables the local bus interface for GPIO. - * - * \note This function must have been called at least once before using other - * functions in this interface. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_init(void) -{ - Set_system_register(AVR32_CPUCR, - Get_system_register(AVR32_CPUCR) | AVR32_CPUCR_LOCEN_MASK); -} - -/*! \brief Enables the output driver of a pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_enable_pin_output_driver(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the output driver of a pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_disable_pin_output_driver(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F); -} - -/*! \brief Returns the value of a pin. - * - * \param pin The pin number. - * - * \return The pin value. - * - * \note \ref gpio_local_init must have been called beforehand. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int gpio_local_get_pin_value(unsigned int pin) -{ - return (AVR32_GPIO_LOCAL.port[pin >> 5].pvr >> (pin & 0x1F)) & 1; -} - -/*! \brief Drives a GPIO pin to 1. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_set_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrs = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 0. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_clr_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F); -} - -/*! \brief Toggles a GPIO pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_tgl_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrt = 1 << (pin & 0x1F); -} - -/*! \brief Initializes the configuration of a GPIO pin so that it can be used - * with GPIO open-drain functions. - * - * \note This function must have been called at least once before using - * \ref gpio_local_set_gpio_open_drain_pin, - * \ref gpio_local_clr_gpio_open_drain_pin or - * \ref gpio_local_tgl_gpio_open_drain_pin. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_init_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 1 using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_set_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 0 using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_clr_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F); -} - -/*! \brief Toggles a GPIO pin using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_tgl_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].odert = 1 << (pin & 0x1F); -} - -//! @} -#endif // AVR32_GPIO_LOCAL_ADDRESS - -#if UC3L -//! @{ -/*! \name Peripheral Event System support - * - * The GPIO can be programmed to output peripheral events whenever an interrupt - * condition is detected, such as pin value change, or only when a rising or - * falling edge is detected. - * - */ - -/*! \brief Enables the peripheral event generation of a pin. - * - * \param pin The pin number. - * - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_enable_pin_periph_event(unsigned int pin) -{ - AVR32_GPIO.port[pin >> 5].oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin. - AVR32_GPIO.port[pin >> 5].evers = 1 << (pin & 0x1F); -} - -/*! \brief Disables the peripheral event generation of a pin. - * - * \param pin The pin number. - * - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_disable_pin_periph_event(unsigned int pin) -{ - AVR32_GPIO.port[pin >> 5].everc = 1 << (pin & 0x1F); -} - -/*! \brief Configure the peripheral event trigger mode of a pin - * - * \param pin The pin number. - * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or - * \ref GPIO_FALLING_EDGE). - * \param use_igf use the Input Glitch Filter (TRUE) or not (FALSE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf); - -//! @} -#endif - - -#endif // _GPIO_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x deleted file mode 100644 index ec4109d..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x +++ /dev/null @@ -1,239 +0,0 @@ -/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Exception and interrupt vectors. - * - * This file maps all events supported by an AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#if !__AVR32_UC__ && !__AVR32_AP__ - #error Implementation of the AVR32 architecture not supported by the INTC driver. -#endif - - -#include - - -//! @{ -//! \verbatim - - - .section .exception, "ax", @progbits - - -// Start of Exception Vector Table. - - // EVBA must be aligned with a power of two strictly greater than the EVBA- - // relative offset of the last vector. - .balign 0x200 - - // Export symbol. - .global _evba - .type _evba, @function -_evba: - - .org 0x000 - // Unrecoverable Exception. -_handle_Unrecoverable_Exception: - rjmp $ - - .org 0x004 - // TLB Multiple Hit. -_handle_TLB_Multiple_Hit: - rjmp $ - - .org 0x008 - // Bus Error Data Fetch. -_handle_Bus_Error_Data_Fetch: - rjmp $ - - .org 0x00C - // Bus Error Instruction Fetch. -_handle_Bus_Error_Instruction_Fetch: - rjmp $ - - .org 0x010 - // NMI. -_handle_NMI: - rjmp $ - - .org 0x014 - // Instruction Address. -_handle_Instruction_Address: - rjmp $ - - .org 0x018 - // ITLB Protection. -_handle_ITLB_Protection: - rjmp $ - - .org 0x01C - // Breakpoint. -_handle_Breakpoint: - rjmp $ - - .org 0x020 - // Illegal Opcode. -_handle_Illegal_Opcode: - rjmp $ - - .org 0x024 - // Unimplemented Instruction. -_handle_Unimplemented_Instruction: - rjmp $ - - .org 0x028 - // Privilege Violation. -_handle_Privilege_Violation: - rjmp $ - - .org 0x02C - // Floating-Point: UNUSED IN AVR32UC and AVR32AP. -_handle_Floating_Point: - rjmp $ - - .org 0x030 - // Coprocessor Absent: UNUSED IN AVR32UC. -_handle_Coprocessor_Absent: - rjmp $ - - .org 0x034 - // Data Address (Read). -_handle_Data_Address_Read: - rjmp $ - - .org 0x038 - // Data Address (Write). -_handle_Data_Address_Write: - rjmp $ - - .org 0x03C - // DTLB Protection (Read). -_handle_DTLB_Protection_Read: - rjmp $ - - .org 0x040 - // DTLB Protection (Write). -_handle_DTLB_Protection_Write: - rjmp $ - - .org 0x044 - // DTLB Modified: UNUSED IN AVR32UC. -_handle_DTLB_Modified: - rjmp $ - - .org 0x050 - // ITLB Miss. -_handle_ITLB_Miss: - rjmp $ - - .org 0x060 - // DTLB Miss (Read). -_handle_DTLB_Miss_Read: - rjmp $ - - .org 0x070 - // DTLB Miss (Write). -_handle_DTLB_Miss_Write: - rjmp $ - - .org 0x100 - // Supervisor Call. -_handle_Supervisor_Call: - rjmp $ - - -// Interrupt support. -// The interrupt controller must provide the offset address relative to EVBA. -// Important note: -// All interrupts call a C function named _get_interrupt_handler. -// This function will read group and interrupt line number to then return in -// R12 a pointer to a user-provided interrupt handler. - - .balign 4 - - .irp priority, 0, 1, 2, 3 -_int\priority: -#if __AVR32_UC__ - // R8-R12, LR, PC and SR are automatically pushed onto the system stack by the - // CPU upon interrupt entry. No other register is saved by hardware. -#elif __AVR32_AP__ - // PC and SR are automatically saved in respectively RAR_INTx and RSR_INTx by - // the CPU upon interrupt entry. No other register is saved by hardware. - pushm r8-r12, lr -#endif - mov r12, \priority // Pass the int_level parameter to the _get_interrupt_handler function. - call _get_interrupt_handler - cp.w r12, 0 // Get the pointer to the interrupt handler returned by the function. -#if __AVR32_UC__ - movne pc, r12 // If this was not a spurious interrupt (R12 != NULL), jump to the handler. -#elif __AVR32_AP__ - breq spint\priority // If this was a spurious interrupt (R12 == NULL), branch. - st.w --sp, r12 // Push the pointer to the interrupt handler onto the system stack since no register may be altered. - popm r8-r12, lr, pc // Restore registers and jump to the handler. -spint\priority: - popm r8-r12, lr -#endif - rete // If this was a spurious interrupt (R12 == NULL), return from event handler. - .endr - - -// Constant data area. - - .balign 4 - - // Values to store in the interrupt priority registers for the various interrupt priority levels. - // The interrupt priority registers contain the interrupt priority level and - // the EVBA-relative interrupt vector offset. - .global ipr_val - .type ipr_val, @object -ipr_val: - .word (AVR32_INTC_INT0 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int0 - _evba),\ - (AVR32_INTC_INT1 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int1 - _evba),\ - (AVR32_INTC_INT2 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int2 - _evba),\ - (AVR32_INTC_INT3 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int3 - _evba) - - -//! \endverbatim -//! @} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c deleted file mode 100644 index 84d498d..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c +++ /dev/null @@ -1,214 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief INTC driver for AVR32 UC3. - * - * AVR32 Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "compiler.h" -#include "preprocessor.h" -#include "intc.h" - -// define _evba from exception.S -extern void _evba; - -//! Values to store in the interrupt priority registers for the various interrupt priority levels. -extern const unsigned int ipr_val[AVR32_INTC_NUM_INT_LEVELS]; - -//! Creates a table of interrupt line handlers per interrupt group in order to optimize RAM space. -//! Each line handler table contains a set of pointers to interrupt handlers. -#if (defined __GNUC__) -#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \ -static volatile __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)]; -#elif (defined __ICCAVR32__) -#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \ -static volatile __no_init __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)]; -#endif -MREPEAT(AVR32_INTC_NUM_INT_GRPS, DECL_INT_LINE_HANDLER_TABLE, ~); -#undef DECL_INT_LINE_HANDLER_TABLE - -//! Table containing for each interrupt group the number of interrupt request -//! lines and a pointer to the table of interrupt line handlers. -static const struct -{ - unsigned int num_irqs; - volatile __int_handler *_int_line_handler_table; -} _int_handler_table[AVR32_INTC_NUM_INT_GRPS] = -{ -#define INSERT_INT_LINE_HANDLER_TABLE(GRP, unused) \ - {AVR32_INTC_NUM_IRQS_PER_GRP##GRP, _int_line_handler_table_##GRP}, - MREPEAT(AVR32_INTC_NUM_INT_GRPS, INSERT_INT_LINE_HANDLER_TABLE, ~) -#undef INSERT_INT_LINE_HANDLER_TABLE -}; - - -/*! \brief Default interrupt handler. - * - * \note Taken and adapted from Newlib. - */ -#if (defined __GNUC__) -__attribute__((__interrupt__)) -#elif (defined __ICCAVR32__) -__interrupt -#endif -static void _unhandled_interrupt(void) -{ - // Catch unregistered interrupts. - while (TRUE); -} - - -/*! \brief Gets the interrupt handler of the current event at the \a int_level - * interrupt priority level (called from exception.S). - * - * \param int_level Interrupt priority level to handle. - * - * \return Interrupt handler to execute. - * - * \note Taken and adapted from Newlib. - */ -__int_handler _get_interrupt_handler(unsigned int int_level) -{ - // ICR3 is mapped first, ICR0 last. - // Code in exception.S puts int_level in R12 which is used by AVR32-GCC to - // pass a single argument to a function. - unsigned int int_grp = AVR32_INTC.icr[AVR32_INTC_INT3 - int_level]; - unsigned int int_req = AVR32_INTC.irr[int_grp]; - - // As an interrupt may disappear while it is being fetched by the CPU - // (spurious interrupt caused by a delayed response from an MCU peripheral to - // an interrupt flag clear or interrupt disable instruction), check if there - // are remaining interrupt lines to process. - // If a spurious interrupt occurs, the status register (SR) contains an - // execution mode and interrupt level masks corresponding to a level 0 - // interrupt, whatever the interrupt priority level causing the spurious - // event. This behavior has been chosen because a spurious interrupt has not - // to be a priority one and because it may not cause any trouble to other - // interrupts. - // However, these spurious interrupts place the hardware in an unstable state - // and could give problems in other/future versions of the CPU, so the - // software has to be written so that they never occur. The only safe way of - // achieving this is to always clear or disable peripheral interrupts with the - // following sequence: - // 1: Mask the interrupt in the CPU by setting GM (or IxM) in SR. - // 2: Perform the bus access to the peripheral register that clears or - // disables the interrupt. - // 3: Wait until the interrupt has actually been cleared or disabled by the - // peripheral. This is usually performed by reading from a register in the - // same peripheral (it DOES NOT have to be the same register that was - // accessed in step 2, but it MUST be in the same peripheral), what takes - // bus system latencies into account, but peripheral internal latencies - // (generally 0 cycle) also have to be considered. - // 4: Unmask the interrupt in the CPU by clearing GM (or IxM) in SR. - // Note that steps 1 and 4 are useless inside interrupt handlers as the - // corresponding interrupt level is automatically masked by IxM (unless IxM is - // explicitly cleared by the software). - // - // Get the right IRQ handler. - // - // If several interrupt lines are active in the group, the interrupt line with - // the highest number is selected. This is to be coherent with the - // prioritization of interrupt groups performed by the hardware interrupt - // controller. - // - // If no handler has been registered for the pending interrupt, - // _unhandled_interrupt will be selected thanks to the initialization of - // _int_line_handler_table_x by INTC_init_interrupts. - // - // exception.S will provide the interrupt handler with a clean interrupt stack - // frame, with nothing more pushed onto the stack. The interrupt handler must - // manage the `rete' instruction, what can be done thanks to pure assembly, - // inline assembly or the `__attribute__((__interrupt__))' C function - // attribute. - return (int_req) ? _int_handler_table[int_grp]._int_line_handler_table[32 - clz(int_req) - 1] : NULL; -} - -//! Init EVBA address. This sequence might also be done in the UTILS/STARTUP/GCC/crt0.S -static __inline__ void INTC_init_evba(void) -{ - Set_system_register(AVR32_EVBA, (int)&_evba ); -} - -void INTC_init_interrupts(void) -{ - unsigned int int_grp, int_req; - - INTC_init_evba(); - - // For all interrupt groups, - for (int_grp = 0; int_grp < AVR32_INTC_NUM_INT_GRPS; int_grp++) - { - // For all interrupt request lines of each group, - for (int_req = 0; int_req < _int_handler_table[int_grp].num_irqs; int_req++) - { - // Assign _unhandled_interrupt as default interrupt handler. - _int_handler_table[int_grp]._int_line_handler_table[int_req] = &_unhandled_interrupt; - } - - // Set the interrupt group priority register to its default value. - // By default, all interrupt groups are linked to the interrupt priority - // level 0 and to the interrupt vector _int0. - AVR32_INTC.ipr[int_grp] = ipr_val[AVR32_INTC_INT0]; - } -} - - -void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level) -{ - // Determine the group of the IRQ. - unsigned int int_grp = irq / AVR32_INTC_MAX_NUM_IRQS_PER_GRP; - - // Store in _int_line_handler_table_x the pointer to the interrupt handler, so - // that _get_interrupt_handler can retrieve it when the interrupt is vectored. - _int_handler_table[int_grp]._int_line_handler_table[irq % AVR32_INTC_MAX_NUM_IRQS_PER_GRP] = handler; - - // Program the corresponding IPRX register to set the interrupt priority level - // and the interrupt vector offset that will be fetched by the core interrupt - // system. - // NOTE: The _intx functions are intermediate assembly functions between the - // core interrupt system and the user interrupt handler. - AVR32_INTC.ipr[int_grp] = ipr_val[int_level & (AVR32_INTC_IPR_INTLEVEL_MASK >> AVR32_INTC_IPR_INTLEVEL_OFFSET)]; -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h deleted file mode 100644 index 31a4fc1..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h +++ /dev/null @@ -1,100 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief INTC driver for AVR32 UC3. - * - * AVR32 Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -#include "compiler.h" - - -//! Maximal number of interrupt request lines per group. -#define AVR32_INTC_MAX_NUM_IRQS_PER_GRP 32 - -//! Number of interrupt priority levels. -#define AVR32_INTC_NUM_INT_LEVELS (1 << AVR32_INTC_IPR_INTLEVEL_SIZE) - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -//! Pointer to interrupt handler. -#if (defined __GNUC__) -typedef void (*__int_handler)(void); -#elif (defined __ICCAVR32__) -typedef void (__interrupt *__int_handler)(void); -#endif - - -/*! \brief Initializes the hardware interrupt controller driver. - * - * \note Taken and adapted from Newlib. - */ -extern void INTC_init_interrupts(void); - -/*! \brief Registers an interrupt handler. - * - * \param handler Interrupt handler to register. - * \param irq IRQ of the interrupt handler to register. - * \param int_level Interrupt priority level to assign to the group of this IRQ. - * - * \warning The interrupt handler must manage the `rete' instruction, what can - * be done thanks to pure assembly, inline assembly or the - * `__attribute__((__interrupt__))' C function attribute. - * - * \warning If several interrupt handlers of a same group are registered with - * different priority levels, only the latest priority level set will - * be effective. - * - * \note Taken and adapted from Newlib. - */ -extern void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level); - -#endif // __AVR32_ABI_COMPILER__ - - -#endif // _INTC_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c deleted file mode 100644 index 6c00f9e..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c +++ /dev/null @@ -1,296 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief PDCA driver for AVR32 UC3. - * - * This file defines a useful set of functions for the PDCA interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a PDCA module. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "compiler.h" -#include "pdca.h" - - -volatile avr32_pdca_channel_t *pdca_get_handler(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = &AVR32_PDCA.channel[pdca_ch_number]; - - if (pdca_ch_number >= AVR32_PDCA_CHANNEL_LENGTH) - return (volatile avr32_pdca_channel_t *)PDCA_INVALID_ARGUMENT; - - return pdca_channel; -} - - -int pdca_init_channel(unsigned int pdca_ch_number, const pdca_channel_options_t *opt) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_disable_interrupt_transfer_complete(pdca_ch_number); // disable channel interrupt - pdca_disable_interrupt_reload_counter_zero(pdca_ch_number); // disable channel interrupt - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pdca_channel->mar = (unsigned long)opt->addr; - pdca_channel->tcr = opt->size; - pdca_channel->psr = opt->pid; - pdca_channel->marr = (unsigned long)opt->r_addr; - pdca_channel->tcrr = opt->r_size; - pdca_channel->mr = -#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED ) -opt->etrig << AVR32_PDCA_ETRIG_OFFSET | -#endif // #ifdef AVR32_PDCA_120_H_INCLUDED - opt->transfer_size << AVR32_PDCA_SIZE_OFFSET; - pdca_channel->cr = AVR32_PDCA_ECLR_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); - - return PDCA_SUCCESS; -} - - -unsigned int pdca_get_channel_status(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - return (pdca_channel->sr & AVR32_PDCA_TEN_MASK) != 0; -} - - -void pdca_disable(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - // Disable transfer - pdca_channel->cr = AVR32_PDCA_TDIS_MASK; - -} - - -void pdca_enable(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - // Enable transfer - pdca_channel->cr = AVR32_PDCA_TEN_MASK; -} - - -unsigned int pdca_get_load_size(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - return pdca_channel->tcr; -} - - -void pdca_load_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pdca_channel->mar = (unsigned long)addr; - pdca_channel->tcr = size; - pdca_channel->cr = AVR32_PDCA_ECLR_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -unsigned int pdca_get_reload_size(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - return pdca_channel->tcrr; -} - - -void pdca_reload_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - // set up next memory address - pdca_channel->marr = (unsigned long)addr; - // set up next memory size - pdca_channel->tcrr = size; - pdca_channel->cr = AVR32_PDCA_ECLR_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pdca_set_peripheral_select(unsigned int pdca_ch_number, unsigned int pid) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->psr = pid; -} - - -void pdca_set_transfer_size(unsigned int pdca_ch_number, unsigned int transfer_size) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->mr = (pdca_channel->mr & ~AVR32_PDCA_SIZE_MASK) | - transfer_size << AVR32_PDCA_SIZE_OFFSET; -} - - -#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED ) - - -void pdca_disable_event_trigger(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->mr &= ~AVR32_PDCA_ETRIG_MASK; -} - - -void pdca_enable_event_trigger(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->mr |= AVR32_PDCA_ETRIG_MASK; -} - - -#endif // #ifdef AVR32_PDCA_120_H_INCLUDED - - -void pdca_disable_interrupt_transfer_error(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pdca_channel->idr = AVR32_PDCA_TERR_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pdca_enable_interrupt_transfer_error(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->ier = AVR32_PDCA_TERR_MASK; -} - - -void pdca_disable_interrupt_transfer_complete(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pdca_channel->idr = AVR32_PDCA_TRC_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pdca_enable_interrupt_transfer_complete(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->ier = AVR32_PDCA_TRC_MASK; -} - - -void pdca_disable_interrupt_reload_counter_zero(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pdca_channel->idr = AVR32_PDCA_RCZ_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pdca_enable_interrupt_reload_counter_zero(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->ier = AVR32_PDCA_RCZ_MASK; -} - - -unsigned long pdca_get_transfer_status(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - return pdca_channel->isr; -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h deleted file mode 100644 index 5668fe9..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h +++ /dev/null @@ -1,251 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief PDCA driver for AVR32 UC3. - * - * This file defines a useful set of functions for the PDCA interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a PDCA module. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _PDCA_H_ -#define _PDCA_H_ - -#include - - -//! Size of PDCA transfer: byte. -#define PDCA_TRANSFER_SIZE_BYTE AVR32_PDCA_BYTE - -//! Size of PDCA transfer: half-word. -#define PDCA_TRANSFER_SIZE_HALF_WORD AVR32_PDCA_HALF_WORD - -//! Size of PDCA transfer: word. -#define PDCA_TRANSFER_SIZE_WORD AVR32_PDCA_WORD - -/*! \name PDCA Driver Status Codes - */ -//! @{ -#define PDCA_SUCCESS 0 -#define PDCA_INVALID_ARGUMENT -1 -//! @} - -/*! \name PDCA Transfer Status Codes - */ -//! @{ -#define PDCA_TRANSFER_ERROR AVR32_PDCA_TERR_MASK -#define PDCA_TRANSFER_COMPLETE AVR32_PDCA_TRC_MASK -#define PDCA_TRANSFER_COUNTER_RELOAD_IS_ZERO AVR32_PDCA_RCZ_MASK -//! @} - - -//! PDCA channel options. -typedef struct -{ - //! Memory address. - volatile void *addr ; - //! Transfer counter. - unsigned int size ; - //! Next memory address. - volatile void *r_addr ; - //! Next transfer counter. - unsigned int r_size ; - //! Select peripheral ID. - unsigned int pid ; - //! Select the size of the transfer (byte, half-word or word). - unsigned int transfer_size ; -#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED ) -// Note: the options in this preprocessor section are only available from the PDCA IP version 1.2.0 on. - //! Enable (\c 1) or disable (\c 0) the transfer upon event trigger. - unsigned char etrig ; -#endif // #ifdef AVR32_PDCA_120_H_INCLUDED -} pdca_channel_options_t; - - -/*! \brief Get PDCA channel handler - * - * \param pdca_ch_number PDCA channel - * - * \return channel handled or PDCA_INVALID_ARGUMENT - */ -extern volatile avr32_pdca_channel_t *pdca_get_handler(unsigned int pdca_ch_number); - -/*! \brief Set the channel configuration - * - * \param pdca_ch_number PDCA channel - * \param opt channel option - */ -extern int pdca_init_channel(unsigned int pdca_ch_number, const pdca_channel_options_t *opt); - -/*! \brief Get the PDCA channel transfer enable status - * - * \param pdca_ch_number PDCA channel - * - * \return \c 1 if channel transfer is enabled, else \c 0 - */ -extern unsigned int pdca_get_channel_status(unsigned int pdca_ch_number); - -/*! \brief Disable the PDCA for the given channel - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_disable(unsigned int pdca_ch_number); - -/*! \brief Enable the PDCA for the given channel - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_enable(unsigned int pdca_ch_number); - -/*! \brief Get PDCA channel load size (or remaining size if transfer started) - * - * \param pdca_ch_number PDCA channel - * - * \return size current size to transfer - */ -extern unsigned int pdca_get_load_size(unsigned int pdca_ch_number); - -/*! \brief Set PDCA channel load values - * - * \param pdca_ch_number PDCA channel - * \param addr address where data to load are stored - * \param size size of the data block to load - */ -extern void pdca_load_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size); - -/*! \brief Get PDCA channel reload size - * - * \param pdca_ch_number PDCA channel - * - * \return size current reload size - */ -extern unsigned int pdca_get_reload_size(unsigned int pdca_ch_number); - -/*! \brief Set PDCA channel reload values - * - * \param pdca_ch_number PDCA channel - * \param addr address where data to load are stored - * \param size size of the data block to load - */ -extern void pdca_reload_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size); - -/*! \brief Set the peripheral function to use with the PDCA channel - * - * \param pdca_ch_number PDCA channel - * \param pid the peripheral ID - */ -extern void pdca_set_peripheral_select(unsigned int pdca_ch_number, unsigned int pid); - -/*! \brief Set the size of the transfer - * - * \param pdca_ch_number PDCA channel - * \param transfer_size size of the transfer (byte, half-word or word) - */ -extern void pdca_set_transfer_size(unsigned int pdca_ch_number, unsigned int transfer_size); - -#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED ) -// Note: the functions in this preprocessor section are only available from the PDCA IP version 1.2.0 on. - -/*! \brief Disable the event-triggered transfer feature - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_disable_event_trigger(unsigned int pdca_ch_number); - -/*! \brief Enable the event-triggered transfer feature - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_enable_event_trigger(unsigned int pdca_ch_number); - -#endif // #ifdef AVR32_PDCA_120_H_INCLUDED - -/*! \brief Disable PDCA transfer error interrupt - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_disable_interrupt_transfer_error(unsigned int pdca_ch_number); - -/*! \brief Enable PDCA transfer error interrupt - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_enable_interrupt_transfer_error(unsigned int pdca_ch_number); - -/*! \brief Disable PDCA transfer interrupt when completed (ie TCR and TCRR are both zero) - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_disable_interrupt_transfer_complete(unsigned int pdca_ch_number); - -/*! \brief Enable PDCA transfer interrupt when completed (ie TCR and TCRR are both zero) - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_enable_interrupt_transfer_complete(unsigned int pdca_ch_number); - -/*! \brief Disable PDCA transfer interrupt when TCRR reaches zero - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_disable_interrupt_reload_counter_zero(unsigned int pdca_ch_number); - -/*! \brief Enable PDCA transfer interrupt when TCRR reaches zero - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_enable_interrupt_reload_counter_zero(unsigned int pdca_ch_number); - -/*! \brief Get PDCA channel transfer status - * - * \param pdca_ch_number PDCA channel - * - * \return PDCA transfer status with the following bit-masks:\n - * - \c PDCA_TRANSFER_ERROR;\n - * - \c PDCA_TRANSFER_COMPLETE;\n - * - \c PDCA_TRANSFER_COUNTER_RELOAD_IS_ZERO. - */ -extern unsigned long pdca_get_transfer_status(unsigned int pdca_ch_number); - - -#endif // _PDCA_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c deleted file mode 100644 index 76d9268..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c +++ /dev/null @@ -1,546 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager driver. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "compiler.h" -#include "pm.h" - - -/*! \name PM Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long mcctrl; - avr32_pm_mcctrl_t MCCTRL; -} u_avr32_pm_mcctrl_t; - -typedef union -{ - unsigned long cksel; - avr32_pm_cksel_t CKSEL; -} u_avr32_pm_cksel_t; - -typedef union -{ - unsigned long pll; - avr32_pm_pll_t PLL; -} u_avr32_pm_pll_t; - -typedef union -{ - unsigned long oscctrl0; - avr32_pm_oscctrl0_t OSCCTRL0; -} u_avr32_pm_oscctrl0_t; - -typedef union -{ - unsigned long oscctrl1; - avr32_pm_oscctrl1_t OSCCTRL1; -} u_avr32_pm_oscctrl1_t; - -typedef union -{ - unsigned long oscctrl32; - avr32_pm_oscctrl32_t OSCCTRL32; -} u_avr32_pm_oscctrl32_t; - -typedef union -{ - unsigned long ier; - avr32_pm_ier_t IER; -} u_avr32_pm_ier_t; - -typedef union -{ - unsigned long idr; - avr32_pm_idr_t IDR; -} u_avr32_pm_idr_t; - -typedef union -{ - unsigned long icr; - avr32_pm_icr_t ICR; -} u_avr32_pm_icr_t; - -typedef union -{ - unsigned long gcctrl; - avr32_pm_gcctrl_t GCCTRL; -} u_avr32_pm_gcctrl_t; - -typedef union -{ - unsigned long rccr; - avr32_pm_rccr_t RCCR; -} u_avr32_pm_rccr_t; - -typedef union -{ - unsigned long bgcr; - avr32_pm_bgcr_t BGCR; -} u_avr32_pm_bgcr_t; - -typedef union -{ - unsigned long vregcr; - avr32_pm_vregcr_t VREGCR; -} u_avr32_pm_vregcr_t; - -typedef union -{ - unsigned long bod; - avr32_pm_bod_t BOD; -} u_avr32_pm_bod_t; - -//! @} - - -/*! \brief Sets the mode of the oscillator 0. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode Oscillator 0 mode (i.e. AVR32_PM_OSCCTRL0_MODE_x). - */ -static void pm_set_osc0_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0}; - // Modify - u_avr32_pm_oscctrl0.OSCCTRL0.mode = mode; - // Write - pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0; -} - - -void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc0_mode(pm, AVR32_PM_OSCCTRL0_MODE_EXT_CLOCK); -} - - -void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0) -{ - pm_set_osc0_mode(pm, (fosc0 < 900000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G0 : - (fosc0 < 3000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G1 : - (fosc0 < 8000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G2 : - AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G3); -} - - -void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk0_no_wait(pm, startup); - pm_wait_for_clk0_ready(pm); -} - - -void pm_disable_clk0(volatile avr32_pm_t *pm) -{ - pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC0EN_MASK; -} - - -void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0}; - // Modify - u_avr32_pm_oscctrl0.OSCCTRL0.startup = startup; - // Write back - pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0; - - pm->mcctrl |= AVR32_PM_MCCTRL_OSC0EN_MASK; -} - - -void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC0RDY_MASK)); -} - - -/*! \brief Sets the mode of the oscillator 1. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode Oscillator 1 mode (i.e. AVR32_PM_OSCCTRL1_MODE_x). - */ -static void pm_set_osc1_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1}; - // Modify - u_avr32_pm_oscctrl1.OSCCTRL1.mode = mode; - // Write - pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1; -} - - -void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc1_mode(pm, AVR32_PM_OSCCTRL1_MODE_EXT_CLOCK); -} - - -void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1) -{ - pm_set_osc1_mode(pm, (fosc1 < 900000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G0 : - (fosc1 < 3000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G1 : - (fosc1 < 8000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G2 : - AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G3); -} - - -void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk1_no_wait(pm, startup); - pm_wait_for_clk1_ready(pm); -} - - -void pm_disable_clk1(volatile avr32_pm_t *pm) -{ - pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC1EN_MASK; -} - - -void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1}; - // Modify - u_avr32_pm_oscctrl1.OSCCTRL1.startup = startup; - // Write back - pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1; - - pm->mcctrl |= AVR32_PM_MCCTRL_OSC1EN_MASK; -} - - -void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC1RDY_MASK)); -} - - -/*! \brief Sets the mode of the 32-kHz oscillator. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode 32-kHz oscillator mode (i.e. AVR32_PM_OSCCTRL32_MODE_x). - */ -static void pm_set_osc32_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32}; - // Modify - u_avr32_pm_oscctrl32.OSCCTRL32.mode = mode; - // Write - pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32; -} - - -void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_EXT_CLOCK); -} - - -void pm_enable_osc32_crystal(volatile avr32_pm_t *pm) -{ - pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_CRYSTAL); -} - - -void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk32_no_wait(pm, startup); - pm_wait_for_clk32_ready(pm); -} - - -void pm_disable_clk32(volatile avr32_pm_t *pm) -{ - pm->oscctrl32 &= ~AVR32_PM_OSCCTRL32_OSC32EN_MASK; -} - - -void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32}; - // Modify - u_avr32_pm_oscctrl32.OSCCTRL32.osc32en = 1; - u_avr32_pm_oscctrl32.OSCCTRL32.startup = startup; - // Write back - pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32; -} - - -void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC32RDY_MASK)); -} - - -void pm_cksel(volatile avr32_pm_t *pm, - unsigned int pbadiv, - unsigned int pbasel, - unsigned int pbbdiv, - unsigned int pbbsel, - unsigned int hsbdiv, - unsigned int hsbsel) -{ - u_avr32_pm_cksel_t u_avr32_pm_cksel = {0}; - - u_avr32_pm_cksel.CKSEL.cpusel = hsbsel; - u_avr32_pm_cksel.CKSEL.cpudiv = hsbdiv; - u_avr32_pm_cksel.CKSEL.hsbsel = hsbsel; - u_avr32_pm_cksel.CKSEL.hsbdiv = hsbdiv; - u_avr32_pm_cksel.CKSEL.pbasel = pbasel; - u_avr32_pm_cksel.CKSEL.pbadiv = pbadiv; - u_avr32_pm_cksel.CKSEL.pbbsel = pbbsel; - u_avr32_pm_cksel.CKSEL.pbbdiv = pbbdiv; - - pm->cksel = u_avr32_pm_cksel.cksel; - - // Wait for ckrdy bit and then clear it - while (!(pm->poscsr & AVR32_PM_POSCSR_CKRDY_MASK)); -} - - -void pm_gc_setup(volatile avr32_pm_t *pm, - unsigned int gc, - unsigned int osc_or_pll, // Use Osc (=0) or PLL (=1) - unsigned int pll_osc, // Sel Osc0/PLL0 or Osc1/PLL1 - unsigned int diven, - unsigned int div) -{ - u_avr32_pm_gcctrl_t u_avr32_pm_gcctrl = {0}; - - u_avr32_pm_gcctrl.GCCTRL.oscsel = pll_osc; - u_avr32_pm_gcctrl.GCCTRL.pllsel = osc_or_pll; - u_avr32_pm_gcctrl.GCCTRL.diven = diven; - u_avr32_pm_gcctrl.GCCTRL.div = div; - - pm->gcctrl[gc] = u_avr32_pm_gcctrl.gcctrl; -} - - -void pm_gc_enable(volatile avr32_pm_t *pm, - unsigned int gc) -{ - pm->gcctrl[gc] |= AVR32_PM_GCCTRL_CEN_MASK; -} - - -void pm_gc_disable(volatile avr32_pm_t *pm, - unsigned int gc) -{ - pm->gcctrl[gc] &= ~AVR32_PM_GCCTRL_CEN_MASK; -} - - -void pm_pll_setup(volatile avr32_pm_t *pm, - unsigned int pll, - unsigned int mul, - unsigned int div, - unsigned int osc, - unsigned int lockcount) -{ - u_avr32_pm_pll_t u_avr32_pm_pll = {0}; - - u_avr32_pm_pll.PLL.pllosc = osc; - u_avr32_pm_pll.PLL.plldiv = div; - u_avr32_pm_pll.PLL.pllmul = mul; - u_avr32_pm_pll.PLL.pllcount = lockcount; - - pm->pll[pll] = u_avr32_pm_pll.pll; -} - - -void pm_pll_set_option(volatile avr32_pm_t *pm, - unsigned int pll, - unsigned int pll_freq, - unsigned int pll_div2, - unsigned int pll_wbwdisable) -{ - u_avr32_pm_pll_t u_avr32_pm_pll = {pm->pll[pll]}; - u_avr32_pm_pll.PLL.pllopt = pll_freq | (pll_div2 << 1) | (pll_wbwdisable << 2); - pm->pll[pll] = u_avr32_pm_pll.pll; -} - - -unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, - unsigned int pll) -{ - return (pm->pll[pll] & AVR32_PM_PLLOPT_MASK) >> AVR32_PM_PLLOPT_OFFSET; -} - - -void pm_pll_enable(volatile avr32_pm_t *pm, - unsigned int pll) -{ - pm->pll[pll] |= AVR32_PM_PLLEN_MASK; -} - - -void pm_pll_disable(volatile avr32_pm_t *pm, - unsigned int pll) -{ - pm->pll[pll] &= ~AVR32_PM_PLLEN_MASK; -} - - -void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK0_MASK)); -} - - -void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK1_MASK)); -} - - -void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock) -{ - // Read - u_avr32_pm_mcctrl_t u_avr32_pm_mcctrl = {pm->mcctrl}; - // Modify - u_avr32_pm_mcctrl.MCCTRL.mcsel = clock; - // Write back - pm->mcctrl = u_avr32_pm_mcctrl.mcctrl; -} - - -void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup) -{ - pm_enable_osc0_crystal(pm, fosc0); // Enable the Osc0 in crystal mode - pm_enable_clk0(pm, startup); // Crystal startup time - This parameter is critical and depends on the characteristics of the crystal - pm_switch_to_clock(pm, AVR32_PM_MCSEL_OSC0); // Then switch main clock to Osc0 -} - - -void pm_bod_enable_irq(volatile avr32_pm_t *pm) -{ - pm->ier = AVR32_PM_IER_BODDET_MASK; -} - - -void pm_bod_disable_irq(volatile avr32_pm_t *pm) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pm->idr = AVR32_PM_IDR_BODDET_MASK; - pm->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pm_bod_clear_irq(volatile avr32_pm_t *pm) -{ - pm->icr = AVR32_PM_ICR_BODDET_MASK; -} - - -unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm) -{ - return ((pm->isr & AVR32_PM_ISR_BODDET_MASK) != 0); -} - - -unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm) -{ - return ((pm->imr & AVR32_PM_IMR_BODDET_MASK) != 0); -} - - -unsigned long pm_bod_get_level(volatile avr32_pm_t *pm) -{ - return (pm->bod & AVR32_PM_BOD_LEVEL_MASK) >> AVR32_PM_BOD_LEVEL_OFFSET; -} - - -unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp) -{ - return pm->gplp[gplp]; -} - - -void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value) -{ - pm->gplp[gplp] = value; -} - - -long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module) -{ - unsigned long domain = module>>5; - unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain); - - // Implementation-specific shortcut: the ckMASK registers are contiguous and - // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK. - - *regptr |= (1<<(module%32)); - - return PASS; -} - -long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module) -{ - unsigned long domain = module>>5; - unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain); - - // Implementation-specific shortcut: the ckMASK registers are contiguous and - // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK. - - *regptr &= ~(1<<(module%32)); - - return PASS; -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h deleted file mode 100644 index ca679f7..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h +++ /dev/null @@ -1,493 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager driver. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _PM_H_ -#define _PM_H_ - -#include -#include "compiler.h" -#include "preprocessor.h" - - -/*! \brief Sets the MCU in the specified sleep mode. - * - * \param mode Sleep mode: - * \arg \c AVR32_PM_SMODE_IDLE: Idle; - * \arg \c AVR32_PM_SMODE_FROZEN: Frozen; - * \arg \c AVR32_PM_SMODE_STANDBY: Standby; - * \arg \c AVR32_PM_SMODE_STOP: Stop; - * \arg \c AVR32_PM_SMODE_DEEP_STOP: DeepStop; - * \arg \c AVR32_PM_SMODE_STATIC: Static. - */ -#define SLEEP(mode) {__asm__ __volatile__ ("sleep "STRINGZ(mode));} - - -//! Input and output parameters when initializing PM clocks using pm_configure_clocks(). -typedef struct -{ - //! CPU frequency (input/output argument). - unsigned long cpu_f; - - //! PBA frequency (input/output argument). - unsigned long pba_f; - - //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument). - unsigned long osc0_f; - - //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument). - unsigned long osc0_startup; -} pm_freq_param_t; - -#define PM_FREQ_STATUS_FAIL (-1) -#define PM_FREQ_STATUS_OK (0) - - -/*! \brief Gets the MCU reset cause. - * - * \param pm Base address of the Power Manager instance (i.e. &AVR32_PM). - * - * \return The MCU reset cause which can be masked with the - * \c AVR32_PM_RCAUSE_x_MASK bit-masks to isolate specific causes. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned int pm_get_reset_cause(volatile avr32_pm_t *pm) -{ - return pm->rcause; -} - - -/*! - * \brief This function will enable the external clock mode of the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc0 Oscillator 0 crystal frequency (Hz) - */ -extern void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0); - - -/*! - * \brief This function will enable the oscillator 0 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk0(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 0 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 0 startup time, for which the function does not wait. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the Osc0 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the external clock mode of the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc1 Oscillator 1 crystal frequency (Hz) - */ -extern void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1); - - -/*! - * \brief This function will enable the oscillator 1 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 1 startup time. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk1(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 1 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 1 startup time, for which the function does not wait. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the Osc1 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the external clock mode of the 32-kHz oscillator. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the 32-kHz oscillator. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc32_crystal(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 32 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 32 kHz startup time. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 32. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk32(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 32 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 32 kHz startup time, for which the function does not wait. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the osc32 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will select all the power manager clocks. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pbadiv Peripheral Bus A clock divisor enable - * \param pbasel Peripheral Bus A select - * \param pbbdiv Peripheral Bus B clock divisor enable - * \param pbbsel Peripheral Bus B select - * \param hsbdiv High Speed Bus clock divisor enable (CPU clock = HSB clock) - * \param hsbsel High Speed Bus select (CPU clock = HSB clock ) - */ -extern void pm_cksel(volatile avr32_pm_t *pm, unsigned int pbadiv, unsigned int pbasel, unsigned int pbbdiv, unsigned int pbbsel, unsigned int hsbdiv, unsigned int hsbsel); - - -/*! - * \brief This function will setup a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - * \param osc_or_pll Use OSC (=0) or PLL (=1) - * \param pll_osc Select Osc0/PLL0 or Osc1/PLL1 - * \param diven Generic clock divisor enable - * \param div Generic clock divisor - */ -extern void pm_gc_setup(volatile avr32_pm_t *pm, unsigned int gc, unsigned int osc_or_pll, unsigned int pll_osc, unsigned int diven, unsigned int div); - - -/*! - * \brief This function will enable a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - */ -extern void pm_gc_enable(volatile avr32_pm_t *pm, unsigned int gc); - - -/*! - * \brief This function will disable a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - */ -extern void pm_gc_disable(volatile avr32_pm_t *pm, unsigned int gc); - - -/*! - * \brief This function will setup a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \param mul PLL MUL in the PLL formula - * \param div PLL DIV in the PLL formula - * \param osc OSC number (0 for osc0, 1 for osc1) - * \param lockcount PLL lockount - */ -extern void pm_pll_setup(volatile avr32_pm_t *pm, unsigned int pll, unsigned int mul, unsigned int div, unsigned int osc, unsigned int lockcount); - - -/*! - * \brief This function will set a PLL option. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \param pll_freq Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - * \param pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - * \param pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - */ -extern void pm_pll_set_option(volatile avr32_pm_t *pm, unsigned int pll, unsigned int pll_freq, unsigned int pll_div2, unsigned int pll_wbwdisable); - - -/*! - * \brief This function will get a PLL option. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \return Option - */ -extern unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will enable a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - */ -extern void pm_pll_enable(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will disable a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - */ -extern void pm_pll_disable(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will wait for PLL0 locked - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will wait for PLL1 locked - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will switch the power manager main clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param clock Clock to be switched on. AVR32_PM_MCSEL_SLOW for RCOsc, AVR32_PM_MCSEL_OSC0 for Osc0, AVR32_PM_MCSEL_PLL0 for PLL0. - */ -extern void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock); - - -/*! - * \brief Switch main clock to clock Osc0 (crystal mode) - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc0 Oscillator 0 crystal frequency (Hz) - * \param startup Crystal 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup); - - -/*! \brief Enables the Brown-Out Detector interrupt. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_enable_irq(volatile avr32_pm_t *pm); - - -/*! \brief Disables the Brown-Out Detector interrupt. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_disable_irq(volatile avr32_pm_t *pm); - - -/*! \brief Clears the Brown-Out Detector interrupt flag. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_clear_irq(volatile avr32_pm_t *pm); - - -/*! \brief Gets the Brown-Out Detector interrupt flag. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \retval 0 No BOD interrupt. - * \retval 1 BOD interrupt pending. - */ -extern unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm); - - -/*! \brief Gets the Brown-Out Detector interrupt enable status. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \retval 0 BOD interrupt disabled. - * \retval 1 BOD interrupt enabled. - */ -extern unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm); - - -/*! \brief Gets the triggering threshold of the Brown-Out Detector. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \return Triggering threshold of the BOD. See the electrical characteristics - * in the part datasheet for actual voltage levels. - */ -extern unsigned long pm_bod_get_level(volatile avr32_pm_t *pm); - - -/*! - * \brief Read the content of the PM GPLP registers - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * - * \return The content of the chosen GPLP register. - */ -extern unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp); - - -/*! - * \brief Write into the PM GPLP registers - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * \param value Value to write - */ -extern void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value); - - -/*! \brief Enable the clock of a module. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param module The module to clock (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks") - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module); - -/*! \brief Disable the clock of a module. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param module The module to shut down (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks") - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module); - - - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks - * according to the user wishes. - * - * This function needs some parameters stored in a pm_freq_param_t structure: - * - cpu_f and pba_f are the wanted frequencies, - * - osc0_f is the oscillator 0 on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0 startup time (e.g. OSC0_STARTUP). - * - * The function will then configure the clocks using the following rules: - * - It first try to find a valid PLL frequency (the highest possible value to avoid jitter) in order - * to satisfy the CPU frequency, - * - It optimizes the configuration depending the various divide stages, - * - Then, the PBA frequency is configured from the CPU freq. - * - Note that HSB and PBB are configured with the same frequency as CPU. - * - Note also that the number of wait states of the flash read accesses is automatically set-up depending - * the CPU frequency. As a consequence, the application needs the FLASHC driver to compile. - * - * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f. - * - * \param param pointer on the configuration structure. - * - * \retval PM_FREQ_STATUS_OK Mode successfully initialized. - * \retval PM_FREQ_STATUS_FAIL The configuration can not be done. - */ -extern int pm_configure_clocks(pm_freq_param_t *param); - - -/*! \brief Automatically configure the USB clock. - * - * USB clock is configured to 48MHz, using the PLL1 from the Oscillator0, assuming - * a 12 MHz crystal is connected to it. - */ -extern void pm_configure_usb_clock(void); - - -#endif // _PM_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c deleted file mode 100644 index 8beb83b..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c +++ /dev/null @@ -1,268 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager clocks configuration helper. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "compiler.h" -#include "pm.h" - -extern void flashc_set_wait_state(unsigned int wait_state); -#if (defined AVR32_FLASHC_210_H_INCLUDED) -extern void flashc_issue_command(unsigned int command, int page_number); -#endif - - -#define PM_MAX_MUL ((1 << AVR32_PM_PLL0_PLLMUL_SIZE) - 1) - - -int pm_configure_clocks(pm_freq_param_t *param) -{ - // Supported frequencies: - // Fosc0 mul div PLL div2_en cpu_f pba_f Comment - // 12 15 1 192 1 12 12 - // 12 9 3 40 1 20 20 PLL out of spec - // 12 15 1 192 1 24 12 - // 12 9 1 120 1 30 15 - // 12 9 3 40 0 40 20 PLL out of spec - // 12 15 1 192 1 48 12 - // 12 15 1 192 1 48 24 - // 12 8 1 108 1 54 27 - // 12 9 1 120 1 60 15 - // 12 9 1 120 1 60 30 - // 12 10 1 132 1 66 16.5 - // - unsigned long in_cpu_f = param->cpu_f; - unsigned long in_osc0_f = param->osc0_f; - unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0; - unsigned long pll_freq, rest; - Bool b_div2_pba, b_div2_cpu; - - // Switch to external Oscillator 0 - pm_switch_to_osc0(&AVR32_PM, in_osc0_f, param->osc0_startup); - - // Start with CPU freq config - if (in_cpu_f == in_osc0_f) - { - param->cpu_f = in_osc0_f; - param->pba_f = in_osc0_f; - return PM_FREQ_STATUS_OK; - } - else if (in_cpu_f < in_osc0_f) - { - // TBD - } - - rest = in_cpu_f % in_osc0_f; - - for (div = 1; div < 32; div++) - { - if ((div * rest) % in_osc0_f == 0) - break; - } - if (div == 32) - return PM_FREQ_STATUS_FAIL; - - mul = (in_cpu_f * div) / in_osc0_f; - - if (mul > PM_MAX_MUL) - return PM_FREQ_STATUS_FAIL; - - // export 2power from PLL div to div2_cpu - while (!(div % 2)) - { - div /= 2; - div2_cpu++; - } - - // Here we know the mul and div parameter of the PLL config. - // . Check out if the PLL has a valid in_cpu_f. - // . Try to have for the PLL frequency (VCO output) the highest possible value - // to reduce jitter. - while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ) - { - if (2 * mul > PM_MAX_MUL) - break; - mul *= 2; - div2_cpu++; - } - - if (div2_cpu != 0) - { - div2_cpu--; - div2_en = 1; - } - - pll_freq = in_osc0_f * mul / (div * (1 << div2_en)); - - // Update real CPU Frequency - param->cpu_f = pll_freq / (1 << div2_cpu); - mul--; - - pm_pll_setup(&AVR32_PM - , 0 // pll - , mul // mul - , div // div - , 0 // osc - , 16 // lockcount - ); - - pm_pll_set_option(&AVR32_PM - , 0 // pll - // PLL clock is lower than 160MHz: need to set pllopt. - , (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0 // pll_freq - , div2_en // pll_div2 - , 0 // pll_wbwdisable - ); - - rest = pll_freq; - while (rest > AVR32_PM_PBA_MAX_FREQ || - rest != param->pba_f) - { - div2_pba++; - rest = pll_freq / (1 << div2_pba); - if (rest < param->pba_f) - break; - } - - // Update real PBA Frequency - param->pba_f = pll_freq / (1 << div2_pba); - - // Enable PLL0 - pm_pll_enable(&AVR32_PM, 0); - - // Wait for PLL0 locked - pm_wait_for_pll0_locked(&AVR32_PM); - - if (div2_cpu) - { - b_div2_cpu = TRUE; - div2_cpu--; - } - else - b_div2_cpu = FALSE; - - if (div2_pba) - { - b_div2_pba = TRUE; - div2_pba--; - } - else - b_div2_pba = FALSE; - - pm_cksel(&AVR32_PM - , b_div2_pba, div2_pba // PBA - , b_div2_cpu, div2_cpu // PBB - , b_div2_cpu, div2_cpu // HSB - ); - - if (param->cpu_f > AVR32_FLASHC_FWS_0_MAX_FREQ) - { - flashc_set_wait_state(1); -#if (defined AVR32_FLASHC_210_H_INCLUDED) - if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - else - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); -#endif - } - else - { - flashc_set_wait_state(0); -#if (defined AVR32_FLASHC_210_H_INCLUDED) - if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - else - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); -#endif - } - - pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0); - - return PM_FREQ_STATUS_OK; -} - - -void pm_configure_usb_clock(void) -{ -#if UC3A3 - - // Setup USB GCLK. - pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc - 0, // osc_or_pll: use Osc (if 0) or PLL (if 1) - 0, // pll_osc: select Osc0/PLL0 or Osc1/PLL1 - 0, // diven - 0); // div - - // Enable USB GCLK. - pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB); -#else - // Use 12MHz from OSC0 and generate 96 MHz - pm_pll_setup(&AVR32_PM, 1, // pll. - 7, // mul. - 1, // div. - 0, // osc. - 16); // lockcount. - - pm_pll_set_option(&AVR32_PM, 1, // pll. - 1, // pll_freq: choose the range 80-180MHz. - 1, // pll_div2. - 0); // pll_wbwdisable. - - // start PLL1 and wait forl lock - pm_pll_enable(&AVR32_PM, 1); - - // Wait for PLL1 locked. - pm_wait_for_pll1_locked(&AVR32_PM); - - pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc. - 1, // osc_or_pll: use Osc (if 0) or PLL (if 1). - 1, // pll_osc: select Osc0/PLL0 or Osc1/PLL1. - 0, // diven. - 0); // div. - pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB); -#endif -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c deleted file mode 100644 index f5fc155..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c +++ /dev/null @@ -1,566 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief High-level library abstracting features such as oscillators/pll/dfll - * configuration, clock configuration, System-sensible parameters - * configuration, buses clocks configuration, sleep mode, reset. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ -#include "power_clocks_lib.h" - - -//! Device-specific data -#if UC3L -static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param); // FORWARD declaration -#endif - -#if UC3C -static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param); // FORWARD declaration -#endif - -long int pcl_configure_clocks(pcl_freq_param_t *param) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE - // Implementation for UC3A, UC3A3, UC3B parts. - return(pm_configure_clocks(param)); -#else - #ifdef AVR32_PM_410_H_INCLUDED - // Implementation for UC3C parts. - return(pcl_configure_clocks_uc3c(param)); - #else - // Implementation for UC3L parts. - return(pcl_configure_clocks_uc3l(param)); - #endif -#endif -} - - -//! Device-specific implementation -#if UC3L -// FORWARD declaration -static long int pcl_configure_synchronous_clocks( pm_clk_src_t main_clk_src, - unsigned long main_clock_freq_hz, - pcl_freq_param_t *param); - -long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RCSYS - - // Supported synchronous clocks frequencies if RCSYS is the main clock source: - // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > SCIF_SLOWCLOCK_FREQ_HZ) || (param->pba_f > SCIF_SLOWCLOCK_FREQ_HZ) - || (param->pbb_f > SCIF_SLOWCLOCK_FREQ_HZ)) - return(-1); -#endif - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_SLOW, SCIF_SLOWCLOCK_FREQ_HZ, param)); -} - - -long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RC120M - - // Supported synchronous clocks frequencies if RC120M is the main clock source: - // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > SCIF_RC120M_FREQ_HZ) || (param->pba_f > SCIF_RC120M_FREQ_HZ) - || (param->pbb_f > SCIF_RC120M_FREQ_HZ)) - return(-1); -#endif - - // Start the 120MHz internal RCosc (RC120M) clock - scif_start_rc120M(); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_RC120M, SCIF_RC120M_FREQ_HZ, param)); -} - - -long int pcl_configure_clocks_osc0(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_OSC0 - - // Supported synchronous clocks frequencies if OSC0 is the main clock source: - // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - unsigned long main_clock_freq; - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - main_clock_freq = param->osc0_f; -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq) - || (param->pbb_f > main_clock_freq)) - return(-1); -#endif - // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, main_clock_freq); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, param->osc0_startup, true); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_OSC0, main_clock_freq, param)); -} - - -long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_DFLL - - // Supported synchronous clocks frequencies if DFLL is the main clock source: - // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - unsigned long main_clock_freq; - scif_gclk_opt_t *pgc_dfllif_ref_opt; - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - main_clock_freq = param->dfll_f; -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target DFLL output frequency is in the correct range. - if((main_clock_freq > SCIF_DFLL_MAXFREQ_HZ) || (main_clock_freq < SCIF_DFLL_MINFREQ_HZ)) - return(-1); - // Verify that the target frequencies are reachable. - if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq) - || (param->pbb_f > main_clock_freq)) - return(-1); -#endif - pgc_dfllif_ref_opt = (scif_gclk_opt_t *)param->pextra_params; - // Implementation note: this implementation configures the DFLL in closed-loop - // mode (because it gives the best accuracy) which enables the generic clock CLK_DFLLIF_REF - // as a reference (RCSYS being used as the generic clock source, undivided). - scif_dfll0_closedloop_configure_and_start(pgc_dfllif_ref_opt, main_clock_freq, TRUE); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_DFLL0, main_clock_freq, param)); -} - - -static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RCSYS, PCL_MC_OSC0, PCL_MC_DFLL0, PCL_MC_RC120M - - // Supported synchronous clocks frequencies if RCSYS is the main clock source: - // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - - // Supported synchronous clocks frequencies if RC120M is the main clock source: - // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - - // Supported synchronous clocks frequencies if OSC0 is the main clock source: - // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - - // Supported synchronous clocks frequencies if DFLL is the main clock source: - // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - if(PCL_MC_RCSYS == param->main_clk_src) - { - return(pcl_configure_clocks_rcsys(param)); - } - else if(PCL_MC_RC120M == param->main_clk_src) - { - return(pcl_configure_clocks_rc120m(param)); - } - else if(PCL_MC_OSC0 == param->main_clk_src) - { - return(pcl_configure_clocks_osc0(param)); - } - else // PCL_MC_DFLL0 == param->main_clk_src - { - return(pcl_configure_clocks_dfll0(param)); - } -} - -static long int pcl_configure_synchronous_clocks(pm_clk_src_t main_clk_src, unsigned long main_clock_freq_hz, pcl_freq_param_t *param) -{ - //# - //# Set the Synchronous clock division ratio for each clock domain - //# - pm_set_all_cksel(main_clock_freq_hz, param->cpu_f, param->pba_f, param->pbb_f); - - //# - //# Set the Flash wait state and the speed read mode (depending on the target CPU frequency). - //# -#if UC3L - flashcdw_set_flash_waitstate_and_readmode(param->cpu_f); -#elif UC3C - flashc_set_flash_waitstate_and_readmode(param->cpu_f); -#endif - - - //# - //# Switch the main clock source to the selected clock. - //# - pm_set_mclk_source(main_clk_src); - - return PASS; -} - -#endif // UC3L device-specific implementation - -//! UC3C Device-specific implementation -#if UC3C -static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param) -{ - #define PM_MAX_MUL ((1 << AVR32_SCIF_PLLMUL_SIZE) - 1) - #define AVR32_PM_PBA_MAX_FREQ 66000000 - #define AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ 240000000 - #define AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ 160000000 - - // Implementation for UC3C parts. - // Supported frequencies: - // Fosc0 mul div PLL div2_en cpu_f pba_f Comment - // 12 15 1 192 1 12 12 - // 12 9 3 40 1 20 20 PLL out of spec - // 12 15 1 192 1 24 12 - // 12 9 1 120 1 30 15 - // 12 9 3 40 0 40 20 PLL out of spec - // 12 15 1 192 1 48 12 - // 12 15 1 192 1 48 24 - // 12 8 1 108 1 54 27 - // 12 9 1 120 1 60 15 - // 12 9 1 120 1 60 30 - // 12 10 1 132 1 66 16.5 - // - unsigned long in_cpu_f = param->cpu_f; - unsigned long in_osc0_f = param->osc0_f; - unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0; - unsigned long pll_freq, rest; - Bool b_div2_pba, b_div2_cpu; - - // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, in_osc0_f); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, param->osc0_startup, true); - // Set the main clock source as being OSC0. - pm_set_mclk_source(PM_CLK_SRC_OSC0); - - // Start with CPU freq config - if (in_cpu_f == in_osc0_f) - { - param->cpu_f = in_osc0_f; - param->pba_f = in_osc0_f; - return PASS; - } - else if (in_cpu_f < in_osc0_f) - { - // TBD - } - - rest = in_cpu_f % in_osc0_f; - - for (div = 1; div < 32; div++) - { - if ((div * rest) % in_osc0_f == 0) - break; - } - if (div == 32) - return FAIL; - - mul = (in_cpu_f * div) / in_osc0_f; - - if (mul > PM_MAX_MUL) - return FAIL; - - // export 2power from PLL div to div2_cpu - while (!(div % 2)) - { - div /= 2; - div2_cpu++; - } - - // Here we know the mul and div parameter of the PLL config. - // . Check out if the PLL has a valid in_cpu_f. - // . Try to have for the PLL frequency (VCO output) the highest possible value - // to reduce jitter. - while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ) - { - if (2 * mul > PM_MAX_MUL) - break; - mul *= 2; - div2_cpu++; - } - - if (div2_cpu != 0) - { - div2_cpu--; - div2_en = 1; - } - - pll_freq = in_osc0_f * mul / (div * (1 << div2_en)); - - // Update real CPU Frequency - param->cpu_f = pll_freq / (1 << div2_cpu); - mul--; - - scif_pll_opt_t opt; - - opt.osc = SCIF_OSC0, // Sel Osc0 or Osc1 - opt.lockcount = 16, // lockcount in main clock for the PLL wait lock - opt.div = div, // DIV=1 in the formula - opt.mul = mul, // MUL=7 in the formula - opt.pll_div2 = div2_en, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - opt.pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - opt.pll_freq = (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - - - scif_pll_setup(SCIF_PLL0, opt); // lockcount in main clock for the PLL wait lock - - /* Enable PLL0 */ - scif_pll_enable(SCIF_PLL0); - - /* Wait for PLL0 locked */ - scif_wait_for_pll_locked(SCIF_PLL0) ; - - rest = pll_freq; - while (rest > AVR32_PM_PBA_MAX_FREQ || - rest != param->pba_f) - { - div2_pba++; - rest = pll_freq / (1 << div2_pba); - if (rest < param->pba_f) - break; - } - - // Update real PBA Frequency - param->pba_f = pll_freq / (1 << div2_pba); - - - if (div2_cpu) - { - b_div2_cpu = TRUE; - div2_cpu--; - } - else - b_div2_cpu = FALSE; - - if (div2_pba) - { - b_div2_pba = TRUE; - div2_pba--; - } - else - b_div2_pba = FALSE; - - if (b_div2_cpu == TRUE ) - { - pm_set_clk_domain_div(PM_CLK_DOMAIN_0, (pm_divratio_t) div2_cpu); // CPU - pm_set_clk_domain_div(PM_CLK_DOMAIN_1, (pm_divratio_t) div2_cpu); // HSB - pm_set_clk_domain_div(PM_CLK_DOMAIN_3, (pm_divratio_t) div2_cpu); // PBB - } - if (b_div2_pba == TRUE ) - { - pm_set_clk_domain_div(PM_CLK_DOMAIN_2, (pm_divratio_t) div2_pba); // PBA - pm_set_clk_domain_div(PM_CLK_DOMAIN_4, (pm_divratio_t) div2_pba); // PBC - } - - // Set Flashc Wait State - flashc_set_flash_waitstate_and_readmode(param->cpu_f); - - // Set the main clock source as being PLL0. - pm_set_mclk_source(PM_CLK_SRC_PLL0); - - return PASS; -} -#endif // UC3C device-specific implementation - -long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - if(PCL_OSC0 == osc) - { - // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency, - // enable the OSC0, set the main clock source as being OSC0. - pm_switch_to_osc0(&AVR32_PM, fcrystal, startup); - } - else - { - return PCL_NOT_SUPPORTED; - } -#else -// Implementation for UC3C, UC3L parts. - #if AVR32_PM_VERSION_RESETVALUE < 0x400 - return PCL_NOT_SUPPORTED; - #else - if(PCL_OSC0 == osc) - { - // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, fcrystal); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, startup, true); - // Set the Flash wait state and the speed read mode (depending on the target CPU frequency). -#if UC3L - flashcdw_set_flash_waitstate_and_readmode(fcrystal); -#elif UC3C - flashc_set_flash_waitstate_and_readmode(fcrystal); -#endif - // Set the main clock source as being OSC0. - pm_set_mclk_source(PM_CLK_SRC_OSC0); - } - else - { - return PCL_NOT_SUPPORTED; - } - #endif -#endif - return PASS; -} - -long int pcl_configure_usb_clock(void) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - pm_configure_usb_clock(); - return PASS; -#else - #ifdef AVR32_PM_410_H_INCLUDED - const scif_pll_opt_t opt = { - .osc = SCIF_OSC0, // Sel Osc0 or Osc1 - .lockcount = 16, // lockcount in main clock for the PLL wait lock - .div = 1, // DIV=1 in the formula - .mul = 5, // MUL=7 in the formula - .pll_div2 = 1, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - .pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - .pll_freq = 1, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - }; - - /* Setup PLL1 on Osc0, mul=7 ,no divisor, lockcount=16, ie. 16Mhzx6 = 96MHz output */ - scif_pll_setup(SCIF_PLL1, opt); // lockcount in main clock for the PLL wait lock - - /* Enable PLL1 */ - scif_pll_enable(SCIF_PLL1); - - /* Wait for PLL1 locked */ - scif_wait_for_pll_locked(SCIF_PLL1) ; - - // Implementation for UC3C parts. - // Setup the generic clock for USB - scif_gc_setup(AVR32_SCIF_GCLK_USB, - SCIF_GCCTRL_PLL1, - AVR32_SCIF_GC_NO_DIV_CLOCK, - 0); - // Now enable the generic clock - scif_gc_enable(AVR32_SCIF_GCLK_USB); - return PASS; - #else - return PCL_NOT_SUPPORTED; - #endif -#endif -} - - -#if UC3L -#else -void pcl_write_gplp(unsigned long gplp, unsigned long value) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - pm_write_gplp(&AVR32_PM,gplp,value); -#else - scif_write_gplp(gplp,value); -#endif -} - -unsigned long pcl_read_gplp(unsigned long gplp) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - return pm_read_gplp(&AVR32_PM,gplp); -#else - return scif_read_gplp(gplp); -#endif -} -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h deleted file mode 100644 index 28c5888..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h +++ /dev/null @@ -1,379 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief High-level library abstracting features such as oscillators/pll/dfll - * configuration, clock configuration, System-sensible parameters - * configuration, buses clocks configuration, sleep mode, reset. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _POWER_CLOCKS_LIB_H_ -#define _POWER_CLOCKS_LIB_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "compiler.h" - -#ifndef AVR32_PM_VERSION_RESETVALUE -// Support for UC3A, UC3A3, UC3B parts. - #include "pm.h" -#else -//! Device-specific data -#if UC3L - #include "pm_uc3l.h" - #include "scif_uc3l.h" - #include "flashcdw.h" -#elif UC3C - #include "pm_uc3c.h" - #include "scif_uc3c.h" - #include "flashc.h" -#endif -#endif - -/*! \name Clocks Management - */ -//! @{ - -//! The different oscillators -typedef enum -{ - PCL_OSC0 = 0, - PCL_OSC1 = 1 -} pcl_osc_t; - -//! The different DFLLs -typedef enum -{ - PCL_DFLL0 = 0, - PCL_DFLL1 = 1 -} pcl_dfll_t; - -//! Possible Main Clock Sources -typedef enum -{ - PCL_MC_RCSYS, // Default main clock source, supported by all (aka Slow Clock) - PCL_MC_OSC0, // Supported by all - PCL_MC_OSC1, // Supported by UC3C only - PCL_MC_OSC0_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC0 as reference) - PCL_MC_OSC1_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC1 as reference) - PCL_MC_OSC0_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC0 as reference) - PCL_MC_OSC1_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC1 as reference) - PCL_MC_DFLL0, // Supported by UC3L - PCL_MC_DFLL1, // Not supported yet - PCL_MC_RC120M, // Supported by UC3L, UC3C - PCL_MC_RC8M, // Supported by UC3C - PCL_MC_CRIPOSC // Supported by UC3C -} pcl_mainclk_t; - -//! Input and output parameters to configure clocks with pcl_configure_clocks(). -// NOTE: regarding the frequency settings, always abide by the datasheet rules and min & max supported frequencies. -#ifndef AVR32_PM_VERSION_RESETVALUE -// Support for UC3A, UC3A3, UC3B parts. -#define pcl_freq_param_t pm_freq_param_t // See pm.h -#else -// Support for UC3C, UC3L parts. -typedef struct -{ - //! Main clock source selection (input argument). - pcl_mainclk_t main_clk_src; - - //! Target CPU frequency (input/output argument). - unsigned long cpu_f; - - //! Target PBA frequency (input/output argument). - unsigned long pba_f; - - //! Target PBB frequency (input/output argument). - unsigned long pbb_f; - - //! Target PBC frequency (input/output argument). - unsigned long pbc_f; - - //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument). - unsigned long osc0_f; - - //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument). - unsigned long osc0_startup; - - //! DFLL target frequency (input/output argument) (NOTE: the bigger, the most stable the frequency) - unsigned long dfll_f; - - //! Other parameters that might be necessary depending on the device (implementation-dependent). - // For the UC3L DFLL setup, this parameter should be pointing to a structure of - // type (scif_gclk_opt_t *). - void *pextra_params; -} pcl_freq_param_t; -#endif - -//! Define "not supported" for the lib. -#define PCL_NOT_SUPPORTED (-10000) - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - main_clk_src is the id of the main clock source to use, - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP). - * - dfll_f is the target DFLL frequency to set-up if main_clk_src is the dfll. - * - * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RCSYS osc as main source clock. - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies - * - * Supported main clock sources: PCL_MC_RCSYS - * - * Supported synchronous clocks frequencies: - * 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_rcsys() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RC120M osc as main source clock. - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies - * - * Supported main clock sources: PCL_MC_RC120M - * - * Supported synchronous clocks frequencies: - * 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_rc120m() and modify it to - * use preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the OSC0 osc as main source clock - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP). - * - * Supported main clock sources: PCL_MC_OSC0 - * - * Supported synchronous clocks frequencies: - * (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - * 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_osc0() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_osc0(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the DFLL0 as main source clock - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - dfll_f is the target DFLL frequency to set-up - * - * \note: when the DFLL0 is to be used as main source clock for the synchronous clocks, - * the target frequency of the DFLL should be chosen to be as high as possible - * within the specification range (for stability reasons); the target cpu and pbx - * frequencies will then be reached by appropriate division ratio. - * - * Supported main clock sources: PCL_MC_DFLL0 - * - * Supported synchronous clocks frequencies: - * (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - * 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_dfll0() and modify it to - * use preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param); - -/*! \brief Switch the main clock source to Osc0 configured in crystal mode - * - * \param osc The oscillator to enable and switch to. - * \param fcrystal Oscillator external crystal frequency (Hz) - * \param startup Oscillator startup time. - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup); - -/*! \brief Enable the clock of a module. - * - * \param module The module to clock (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks" - * or look in the module section). - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. -#define pcl_enable_module(module) pm_enable_module(&AVR32_PM, module) -#else -// Implementation for UC3C, UC3L parts. -#define pcl_enable_module(module) pm_enable_module(module) -#endif - -/*! \brief Disable the clock of a module. - * - * \param module The module to shut down (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks" - * or look in the module section). - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. -#define pcl_disable_module(module) pm_disable_module(&AVR32_PM, module) -#else -// Implementation for UC3C, UC3L parts. -#define pcl_disable_module(module) pm_disable_module(module) -#endif - -/*! \brief Configure the USB Clock - * - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long int pcl_configure_usb_clock(void); - -//! @} - -/*! \name Power Management - */ -//! @{ -/*! - * \brief Read the content of the GPLP registers - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * - * \return The content of the chosen GPLP register. - */ -extern unsigned long pcl_read_gplp(unsigned long gplp); - - -/*! - * \brief Write into the GPLP registers - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * \param value Value to write - */ -extern void pcl_write_gplp(unsigned long gplp, unsigned long value); - -//! @} - -#ifdef __cplusplus -} -#endif - -#endif // _POWER_CLOCKS_LIB_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c deleted file mode 100644 index 4cbae0f..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c +++ /dev/null @@ -1,213 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief RTC driver for AVR32 UC3. - * - * AVR32 Real Time Counter driver module. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an RTC and a PM module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "compiler.h" -#include "pm.h" -#include "rtc.h" - - -int rtc_is_busy(volatile avr32_rtc_t *rtc) -{ - return (rtc->ctrl & AVR32_RTC_CTRL_BUSY_MASK) != 0; -} - - -int rtc_init(volatile avr32_rtc_t *rtc, unsigned char osc_type, unsigned char psel) -{ - // If exit, it means that the configuration has not been set correctly - if (osc_type > (1 << AVR32_RTC_CTRL_CLK32_SIZE) - 1 || - psel > (1 << AVR32_RTC_CTRL_PSEL_SIZE) - 1) - return 0; - - // If we use the 32-kHz oscillator, we have to enable it first - if (osc_type == RTC_OSC_32KHZ) - { - // Select the 32-kHz oscillator crystal - pm_enable_osc32_crystal(&AVR32_PM); - // Enable the 32-kHz clock - pm_enable_clk32_no_wait(&AVR32_PM, AVR32_PM_OSCCTRL32_STARTUP_0_RCOSC); - } - - // Wait until the rtc CTRL register is up-to-date - while (rtc_is_busy(rtc)); - - // Set the new RTC configuration - rtc->ctrl = osc_type << AVR32_RTC_CTRL_CLK32_OFFSET | - psel << AVR32_RTC_CTRL_PSEL_OFFSET | - AVR32_RTC_CTRL_CLKEN_MASK; - - // Wait until write is done - while (rtc_is_busy(rtc)); - - // Set the counter value to 0 - rtc_set_value(rtc, 0x00000000); - // Set the top value to 0xFFFFFFFF - rtc_set_top_value(rtc, 0xFFFFFFFF); - - return 1; -} - - -void rtc_set_value(volatile avr32_rtc_t *rtc, unsigned long val) -{ - // Wait until we can write into the VAL register - while (rtc_is_busy(rtc)); - // Set the new val value - rtc->val = val; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -unsigned long rtc_get_value(volatile avr32_rtc_t *rtc) -{ - return rtc->val; -} - - -void rtc_enable_wake_up(volatile avr32_rtc_t *rtc) -{ - // Wait until the rtc CTRL register is up-to-date - while (rtc_is_busy(rtc)); - // Enable the wake up of the RTC - rtc->ctrl |= AVR32_RTC_CTRL_WAKE_EN_MASK; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -void rtc_disable_wake_up(volatile avr32_rtc_t *rtc) -{ - // Wait until the rtc CTRL register is up-to-date - while (rtc_is_busy(rtc)); - // Disable the wake up of the RTC - rtc->ctrl &= ~AVR32_RTC_CTRL_WAKE_EN_MASK; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -void rtc_enable(volatile avr32_rtc_t *rtc) -{ - // Wait until the rtc CTRL register is up-to-date - while (rtc_is_busy(rtc)); - // Enable the RTC - rtc->ctrl |= AVR32_RTC_CTRL_EN_MASK; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -void rtc_disable(volatile avr32_rtc_t *rtc) -{ - // Wait until the rtc CTRL register is up-to-date - while (rtc_is_busy(rtc)); - // Disable the RTC - rtc->ctrl &= ~AVR32_RTC_CTRL_EN_MASK; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -void rtc_enable_interrupt(volatile avr32_rtc_t *rtc) -{ - rtc->ier = AVR32_RTC_IER_TOPI_MASK; -} - - -void rtc_disable_interrupt(volatile avr32_rtc_t *rtc) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - rtc->idr = AVR32_RTC_IDR_TOPI_MASK; - rtc->imr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void rtc_clear_interrupt(volatile avr32_rtc_t *rtc) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - rtc->icr = AVR32_RTC_ICR_TOPI_MASK; - rtc->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void rtc_set_top_value(volatile avr32_rtc_t *rtc, unsigned long top) -{ - // Wait until we can write into the VAL register - while (rtc_is_busy(rtc)); - // Set the new val value - rtc->top = top; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -unsigned long rtc_get_top_value(volatile avr32_rtc_t *rtc) -{ - return rtc->top; -} - - -int rtc_interrupt_enabled(volatile avr32_rtc_t *rtc) -{ - return (rtc->imr & AVR32_RTC_IMR_TOPI_MASK) != 0; -} - - -int rtc_is_interrupt(volatile avr32_rtc_t *rtc) -{ - return (rtc->isr & AVR32_RTC_ISR_TOPI_MASK) != 0; -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h deleted file mode 100644 index 5702c29..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h +++ /dev/null @@ -1,191 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief RTC driver for AVR32 UC3. - * - * AVR32 Real Time Counter driver module. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an RTC and a PM module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _RTC_H_ -#define _RTC_H_ - -#include "compiler.h" -#include - - -/*! \name Oscillator Types - */ -//! @{ -#define RTC_OSC_32KHZ 1 -#define RTC_OSC_RC 0 -//! @} - -/*! \name Predefined PSEL Values - */ -//! @{ - -//! The PSEL value to set the RTC source clock (after the prescaler) to 1 Hz, -//! when using an external 32-kHz crystal. -#define RTC_PSEL_32KHZ_1HZ 14 - -//! The PSEL value to set the RTC source clock (after the prescaler) to 1.76 Hz, -//! when using the internal RC oscillator (~ 115 kHz). -#define RTC_PSEL_RC_1_76HZ 15 - -//! @} - - -/*! - * \brief This function will initialise the RTC module. - * If you use the 32 KHz oscillator, it will enable this module. - * This function also set the top value of the RTC to 0xFFFFFFFF - * and the value to 0. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \param osc_type The oscillator you want to use. If you need a better - * accuracy, use the 32 KHz oscillator (i.e. RTC_OSC_32KHZ). - * \param psel The preselector value for the corresponding oscillator (4-bits). - * To obtain this value, you can use this formula: - * psel = log(Fosc/Frtc)/log(2)-1, where Fosc is the frequency of the - * oscillator you are using (32 KHz or 115 KHz) and Frtc the frequency - * desired. - * \return 1 if the initialisation succeds otherwize it will return 0. - */ -extern int rtc_init(volatile avr32_rtc_t *rtc, unsigned char osc_type, unsigned char psel); - -/*! - * \brief Enable the RTC. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_enable(volatile avr32_rtc_t *rtc); - -/*! - * \brief Disable the RTC. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_disable(volatile avr32_rtc_t *rtc); - -/*! - * \brief Enable the wake up feature of the RTC. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_enable_wake_up(volatile avr32_rtc_t *rtc); - -/*! - * \brief Disable the wake up feature of the RTC. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_disable_wake_up(volatile avr32_rtc_t *rtc); - -/*! - * \brief Enable the interrupt feature of the RTC. - * An interrupt is raised when the value of the RTC - * is equal to its top value. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_enable_interrupt(volatile avr32_rtc_t *rtc); - -/*! - * \brief Disable the interrupt feature of the RTC. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_disable_interrupt(volatile avr32_rtc_t *rtc); - -/*! - * \brief Clear the interrupt flag. - * Call this function once you handled the interrupt. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_clear_interrupt(volatile avr32_rtc_t *rtc); - -/*! - * \brief Get the status of interrupts. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \return 1 if the interrupts are enabled otherwize it returns 0. - */ -extern int rtc_interrupt_enabled(volatile avr32_rtc_t *rtc); - -/*! - * \brief Check if an interrupt is raised. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \return 1 if an interrupt is currently raised otherwize it returns 0. - */ -extern int rtc_is_interrupt(volatile avr32_rtc_t *rtc); - -/*! - * \brief This function sets the RTC current top value. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \param top The top value you want to store. - */ -extern void rtc_set_top_value(volatile avr32_rtc_t *rtc, unsigned long top); - -/*! - * \brief This function returns the RTC current top value. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \return The RTC current top value. - */ -extern unsigned long rtc_get_top_value(volatile avr32_rtc_t *rtc); - -/*! - * \brief This function checks if the RTC is busy or not. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \return 1 if the RTC is busy otherwize it will return 0. - */ -extern int rtc_is_busy(volatile avr32_rtc_t *rtc); - -/*! - * \brief This function sets the RTC current value. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \param val The value you want to store. - */ -extern void rtc_set_value(volatile avr32_rtc_t *rtc, unsigned long val); - -/*! - * \brief This function returns the RTC current value. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \return The RTC current value. - */ -extern unsigned long rtc_get_value(volatile avr32_rtc_t *rtc); - - -#endif // _RTC_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c deleted file mode 100644 index d2b7ccd..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c +++ /dev/null @@ -1,443 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SPI driver for AVR32 UC3. - * - * This file defines a useful set of functions for the SPI interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "spi.h" - -#ifdef FREERTOS_USED - -#include "FreeRTOS.h" -#include "semphr.h" - -#endif - - -/*! \name SPI Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long cr; - avr32_spi_cr_t CR; -} u_avr32_spi_cr_t; - -typedef union -{ - unsigned long mr; - avr32_spi_mr_t MR; -} u_avr32_spi_mr_t; - -typedef union -{ - unsigned long tdr; - avr32_spi_tdr_t TDR; -} u_avr32_spi_tdr_t; - -typedef union -{ - unsigned long ier; - avr32_spi_ier_t IER; -} u_avr32_spi_ier_t; - -typedef union -{ - unsigned long idr; - avr32_spi_idr_t IDR; -} u_avr32_spi_idr_t; - -typedef union -{ - unsigned long csr; - avr32_spi_csr0_t CSR; -} u_avr32_spi_csr_t; - -//! @} - - -#ifdef FREERTOS_USED - -//! The SPI mutex. -static xSemaphoreHandle xSPIMutex; - -#endif - - -/*! \brief Calculates the baudrate divider. - * - * \param options Pointer to a structure containing initialization options for - * an SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \return Divider or error code. - * \retval >=0 Success. - * \retval <0 Error. - */ -static int getBaudDiv(const spi_options_t *options, unsigned int pba_hz) -{ - int baudDiv = (pba_hz + options->baudrate / 2) / options->baudrate; - - if (baudDiv <= 0 || baudDiv > 255) { - return -1; - } - - return baudDiv; -} - - -void spi_reset(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SWRST_MASK; -} - - -spi_status_t spi_initSlave(volatile avr32_spi_t *spi, - unsigned char bits, - unsigned char spi_mode) -{ - if (spi_mode > 3 || - bits < 8 || bits > 16) { - return SPI_ERROR_ARGUMENT; - } - - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - - // Will use CSR0 offsets; these are the same for CSR0 to CSR3. - spi->csr0 = ((spi_mode >> 1) << AVR32_SPI_CSR0_CPOL_OFFSET) | - (((spi_mode & 0x1) ^ 0x1) << AVR32_SPI_CSR0_NCPHA_OFFSET) | - ((bits - 8) << AVR32_SPI_CSR0_BITS_OFFSET); - - return SPI_OK; -} - - -spi_status_t spi_initTest(volatile avr32_spi_t *spi) -{ - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - spi->mr |= AVR32_SPI_MR_MSTR_MASK | // Master Mode. - AVR32_SPI_MR_LLB_MASK; // Local Loopback. - - return SPI_OK; -} - - -spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options) -{ - u_avr32_spi_mr_t u_avr32_spi_mr; - - if (options->modfdis > 1) { - return SPI_ERROR_ARGUMENT; - } - - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - - // Master Mode. - u_avr32_spi_mr.mr = spi->mr; - u_avr32_spi_mr.MR.mstr = 1; - u_avr32_spi_mr.MR.modfdis = options->modfdis; - u_avr32_spi_mr.MR.llb = 0; - u_avr32_spi_mr.MR.pcs = (1 << AVR32_SPI_MR_PCS_SIZE) - 1; - spi->mr = u_avr32_spi_mr.mr; - - return SPI_OK; -} - - -spi_status_t spi_selectionMode(volatile avr32_spi_t *spi, - unsigned char variable_ps, - unsigned char pcs_decode, - unsigned char delay) -{ - u_avr32_spi_mr_t u_avr32_spi_mr; - - if (variable_ps > 1 || - pcs_decode > 1) { - return SPI_ERROR_ARGUMENT; - } - - u_avr32_spi_mr.mr = spi->mr; - u_avr32_spi_mr.MR.ps = variable_ps; - u_avr32_spi_mr.MR.pcsdec = pcs_decode; - u_avr32_spi_mr.MR.dlybcs = delay; - spi->mr = u_avr32_spi_mr.mr; - - return SPI_OK; -} - - -spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip) -{ -#ifdef FREERTOS_USED - while (pdFALSE == xSemaphoreTake(xSPIMutex, 20)); -#endif - - // Assert all lines; no peripheral is selected. - spi->mr |= AVR32_SPI_MR_PCS_MASK; - - if (spi->mr & AVR32_SPI_MR_PCSDEC_MASK) { - // The signal is decoded; allow up to 15 chips. - if (chip > 14) { - return SPI_ERROR_ARGUMENT; - } - - spi->mr &= ~AVR32_SPI_MR_PCS_MASK | (chip << AVR32_SPI_MR_PCS_OFFSET); - } else { - if (chip > 3) { - return SPI_ERROR_ARGUMENT; - } - - spi->mr &= ~(1 << (AVR32_SPI_MR_PCS_OFFSET + chip)); - } - - return SPI_OK; -} - - -spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip) -{ - unsigned int timeout = SPI_TIMEOUT; - - while (!(spi->sr & AVR32_SPI_SR_TXEMPTY_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - // Assert all lines; no peripheral is selected. - spi->mr |= AVR32_SPI_MR_PCS_MASK; - - // Last transfer, so deassert the current NPCS if CSAAT is set. - spi->cr = AVR32_SPI_CR_LASTXFER_MASK; - -#ifdef FREERTOS_USED - xSemaphoreGive(xSPIMutex); -#endif - - return SPI_OK; -} - - -spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi, - const spi_options_t *options, - unsigned int pba_hz) -{ - u_avr32_spi_csr_t u_avr32_spi_csr; - - if (options->spi_mode > 3 || - options->stay_act > 1 || - options->bits < 8 || options->bits > 16) { - return SPI_ERROR_ARGUMENT; - } - - int baudDiv = getBaudDiv(options, pba_hz); - - if (baudDiv < 0) { - return SPI_ERROR_ARGUMENT; - } - - // Will use CSR0 offsets; these are the same for CSR0 to CSR3. - u_avr32_spi_csr.csr = 0; - u_avr32_spi_csr.CSR.cpol = options->spi_mode >> 1; - u_avr32_spi_csr.CSR.ncpha = (options->spi_mode & 0x1) ^ 0x1; - u_avr32_spi_csr.CSR.csaat = options->stay_act; - u_avr32_spi_csr.CSR.bits = options->bits - 8; - u_avr32_spi_csr.CSR.scbr = baudDiv; - u_avr32_spi_csr.CSR.dlybs = options->spck_delay; - u_avr32_spi_csr.CSR.dlybct = options->trans_delay; - - switch(options->reg) { - case 0: - spi->csr0 = u_avr32_spi_csr.csr; - break; - case 1: - spi->csr1 = u_avr32_spi_csr.csr; - break; - case 2: - spi->csr2 = u_avr32_spi_csr.csr; - break; - case 3: - spi->csr3 = u_avr32_spi_csr.csr; - break; - default: - return SPI_ERROR_ARGUMENT; - } - -#ifdef FREERTOS_USED - if (!xSPIMutex) - { - // Create the SPI mutex. - vSemaphoreCreateBinary(xSPIMutex); - if (!xSPIMutex) - { - while(1); - } - } -#endif - - return SPI_OK; -} - - -void spi_enable(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SPIEN_MASK; -} - - -void spi_disable(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SPIDIS_MASK; -} - - -int spi_is_enabled(volatile avr32_spi_t *spi) -{ - return (spi->sr & AVR32_SPI_SR_SPIENS_MASK) != 0; -} - - -inline unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_TDRE_MASK) != 0); -} - - -inline spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data) -{ - unsigned int timeout = SPI_TIMEOUT; - - while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - spi->tdr = data << AVR32_SPI_TDR_TD_OFFSET; - - return SPI_OK; -} - - -spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi, unsigned short data, - unsigned char pcs, unsigned char lastxfer) -{ - unsigned int timeout = SPI_TIMEOUT; - - if (pcs > 14 || lastxfer > 1) { - return SPI_ERROR_ARGUMENT; - } - - while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - spi->tdr = (data << AVR32_SPI_TDR_TD_OFFSET) | - (pcs << AVR32_SPI_TDR_PCS_OFFSET) | - (lastxfer << AVR32_SPI_TDR_LASTXFER_OFFSET); - - return SPI_OK; -} - - -inline unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_TXEMPTY_MASK) != 0); -} - - -unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_RDRF_MASK) != 0); -} - - -inline spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data) -{ - unsigned int timeout = SPI_TIMEOUT; - - while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) != - (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - *data = spi->rdr >> AVR32_SPI_RDR_RD_OFFSET; - - return SPI_OK; -} - - -unsigned char spi_getStatus(volatile avr32_spi_t *spi) -{ - spi_status_t ret = SPI_OK; - unsigned long sr = spi->sr; - - if (sr & AVR32_SPI_SR_OVRES_MASK) { - ret = SPI_ERROR_OVERRUN; - } - - if (sr & AVR32_SPI_SR_MODF_MASK) { - ret += SPI_ERROR_MODE_FAULT; - } - - if (ret == (SPI_ERROR_OVERRUN + SPI_ERROR_MODE_FAULT)) { - return SPI_ERROR_OVERRUN_AND_MODE_FAULT; - } - else if (ret > 0) { - return ret; - } else { - return SPI_OK; - } -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h deleted file mode 100644 index 6dcc928..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h +++ /dev/null @@ -1,342 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SPI driver for AVR32 UC3. - * - * This file defines a useful set of functions for the SPI interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _SPI_H_ -#define _SPI_H_ - -#include - - -//! Time-out value (number of attempts). -#define SPI_TIMEOUT 10000 - - -//! Status codes used by the SPI driver. -typedef enum -{ - SPI_ERROR = -1, - SPI_OK = 0, - SPI_ERROR_TIMEOUT = 1, - SPI_ERROR_ARGUMENT, - SPI_ERROR_OVERRUN, - SPI_ERROR_MODE_FAULT, - SPI_ERROR_OVERRUN_AND_MODE_FAULT -} spi_status_t; - -//! Option structure for SPI channels. -typedef struct -{ - //! The SPI channel to set up. - unsigned char reg; - - //! Preferred baudrate for the SPI. - unsigned int baudrate; - - //! Number of bits in each character (8 to 16). - unsigned char bits; - - //! Delay before first clock pulse after selecting slave (in PBA clock periods). - unsigned char spck_delay; - - //! Delay between each transfer/character (in PBA clock periods). - unsigned char trans_delay; - - //! Sets this chip to stay active after last transfer to it. - unsigned char stay_act; - - //! Which SPI mode to use when transmitting. - unsigned char spi_mode; - - //! Disables the mode fault detection. - //! With this bit cleared, the SPI master mode will disable itself if another - //! master tries to address it. - unsigned char modfdis; -} spi_options_t; - - -/*! \brief Resets the SPI controller. - * - * \param spi Base address of the SPI instance. - */ -extern void spi_reset(volatile avr32_spi_t *spi); - -/*! \brief Initializes the SPI in slave mode. - * - * \param spi Base address of the SPI instance. - * \param bits Number of bits in each transmitted character (8 to 16). - * \param spi_mode Clock polarity and phase. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_initSlave(volatile avr32_spi_t *spi, - unsigned char bits, - unsigned char spi_mode); - -/*! \brief Sets up the SPI in a test mode where the transmitter is connected to - * the receiver (local loopback). - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval SPI_OK Success. - */ -extern spi_status_t spi_initTest(volatile avr32_spi_t *spi); - -/*! \brief Initializes the SPI in master mode. - * - * \param spi Base address of the SPI instance. - * \param options Pointer to a structure containing initialization options. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options); - -/*! \brief Sets up how and when the slave chips are selected (master mode only). - * - * \param spi Base address of the SPI instance. - * \param variable_ps Target slave is selected in transfer register for every - * character to transmit. - * \param pcs_decode The four chip select lines are decoded externally. Values - * 0 to 14 can be given to \ref spi_selectChip. - * \param delay Delay in PBA periods between chip selects. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_selectionMode(volatile avr32_spi_t *spi, - unsigned char variable_ps, - unsigned char pcs_decode, - unsigned char delay); - -/*! \brief Selects slave chip. - * - * \param spi Base address of the SPI instance. - * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0 - * to 14). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip); - -/*! \brief Unselects slave chip. - * - * \param spi Base address of the SPI instance. - * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0 - * to 14). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if last transmission - * is not complete. Invoke \ref spi_writeEndCheck beforehand if needed. - */ -extern spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip); - -/*! \brief Sets options for a specific slave chip. - * - * The baudrate field has to be written before transfer in master mode. Four - * similar registers exist, one for each slave. When using encoded slave - * addressing, reg=0 sets options for slaves 0 to 3, reg=1 for slaves 4 to 7 and - * so on. - * - * \param spi Base address of the SPI instance. - * \param options Pointer to a structure containing initialization options for - * an SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi, - const spi_options_t *options, - unsigned int pba_hz); - -/*! \brief Enables the SPI. - * - * \param spi Base address of the SPI instance. - */ -extern void spi_enable(volatile avr32_spi_t *spi); - -/*! \brief Disables the SPI. - * - * Ensures that nothing is transferred while setting up buffers. - * - * \param spi Base address of the SPI instance. - * - * \warning This may cause data loss if used on a slave SPI. - */ -extern void spi_disable(volatile avr32_spi_t *spi); - -/*! \brief Tests if the SPI is enabled. - * - * \param spi Base address of the SPI instance. - * - * \return \c 1 if the SPI is enabled, otherwise \c 0. - */ -extern int spi_is_enabled(volatile avr32_spi_t *spi); - -/*! \brief Checks if there is no data in the transmit register. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 No data in TDR. - * \retval 0 Some data in TDR. - */ -extern unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi); - -/*! \brief Writes one data word in master fixed peripheral select mode or in - * slave mode. - * - * \param spi Base address of the SPI instance. - * \param data The data word to write. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if transmitter is - * busy and transmit buffer is full. Invoke - * \ref spi_writeRegisterEmptyCheck beforehand if needed. - * - * \note Once the data has been written to the transmit buffer, the end of - * transmission is not waited for. Invoke \ref spi_writeEndCheck if - * needed. - */ -extern spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data); - -/*! \brief Selects a slave in master variable peripheral select mode and writes - * one data word to it. - * - * \param spi Base address of the SPI instance. - * \param data The data word to write. - * \param pcs Slave selector (bit 0 -> nCS line 0, bit 1 -> nCS line 1, - * etc.). - * \param lastxfer Boolean indicating whether this is the last data word - * transfer. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - * - * \note Will block program execution until time-out occurs if transmitter is - * busy and transmit buffer is full. Invoke - * \ref spi_writeRegisterEmptyCheck beforehand if needed. - * - * \note Once the data has been written to the transmit buffer, the end of - * transmission is not waited for. Invoke \ref spi_writeEndCheck if - * needed. - */ -extern spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi, - unsigned short data, - unsigned char pcs, - unsigned char lastxfer); - -/*! \brief Checks if all transmissions are complete. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 All transmissions complete. - * \retval 0 Transmissions not complete. - */ -extern unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi); - -/*! \brief Checks if there is data in the receive register. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 Some data in RDR. - * \retval 0 No data in RDR. - */ -extern unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi); - -/*! \brief Reads one data word in master mode or in slave mode. - * - * \param spi Base address of the SPI instance. - * \param data Pointer to the location where to store the received data word. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if no data is - * received or last transmission is not complete. Invoke - * \ref spi_writeEndCheck or \ref spi_readRegisterFullCheck beforehand if - * needed. - */ -extern spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data); - -/*! \brief Gets status information from the SPI. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_OVERRUN Overrun error. - * \retval SPI_ERROR_MODE_FAULT Mode fault (SPI addressed as slave - * while in master mode). - * \retval SPI_ERROR_OVERRUN_AND_MODE_FAULT Overrun error and mode fault. - */ -extern unsigned char spi_getStatus(volatile avr32_spi_t *spi); - - -#endif // _SPI_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c deleted file mode 100644 index 225642e..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c +++ /dev/null @@ -1,314 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief TC driver for AVR32 UC3. - * - * AVR32 Timer/Counter driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a TC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "compiler.h" -#include "tc.h" - - -int tc_get_interrupt_settings(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return tc->channel[channel].imr; -} - - -int tc_configure_interrupts(volatile avr32_tc_t *tc, unsigned int channel, const tc_interrupt_t *bitfield) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Enable the appropriate interrupts. - tc->channel[channel].ier = bitfield->etrgs << AVR32_TC_ETRGS_OFFSET | - bitfield->ldrbs << AVR32_TC_LDRBS_OFFSET | - bitfield->ldras << AVR32_TC_LDRAS_OFFSET | - bitfield->cpcs << AVR32_TC_CPCS_OFFSET | - bitfield->cpbs << AVR32_TC_CPBS_OFFSET | - bitfield->cpas << AVR32_TC_CPAS_OFFSET | - bitfield->lovrs << AVR32_TC_LOVRS_OFFSET | - bitfield->covfs << AVR32_TC_COVFS_OFFSET; - - // Disable the appropriate interrupts. - if (global_interrupt_enabled) Disable_global_interrupt(); - tc->channel[channel].idr = (~bitfield->etrgs & 1) << AVR32_TC_ETRGS_OFFSET | - (~bitfield->ldrbs & 1) << AVR32_TC_LDRBS_OFFSET | - (~bitfield->ldras & 1) << AVR32_TC_LDRAS_OFFSET | - (~bitfield->cpcs & 1) << AVR32_TC_CPCS_OFFSET | - (~bitfield->cpbs & 1) << AVR32_TC_CPBS_OFFSET | - (~bitfield->cpas & 1) << AVR32_TC_CPAS_OFFSET | - (~bitfield->lovrs & 1) << AVR32_TC_LOVRS_OFFSET | - (~bitfield->covfs & 1) << AVR32_TC_COVFS_OFFSET; - tc->channel[channel].sr; - if (global_interrupt_enabled) Enable_global_interrupt(); - - return 0; -} - - -int tc_select_external_clock(volatile avr32_tc_t *tc, unsigned int channel, unsigned int ext_clk_sig_src) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS || ext_clk_sig_src >= 1 << AVR32_TC_BMR_TC0XC0S_SIZE) - return TC_INVALID_ARGUMENT; - - // Clear bit-field and set the correct behavior. - tc->bmr = (tc->bmr & ~(AVR32_TC_BMR_TC0XC0S_MASK << (channel * AVR32_TC_BMR_TC0XC0S_SIZE))) | - (ext_clk_sig_src << (channel * AVR32_TC_BMR_TC0XC0S_SIZE)); - - return 0; -} - - -int tc_init_capture(volatile avr32_tc_t *tc, const tc_capture_opt_t *opt) -{ - // Check for valid input. - if (opt->channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // MEASURE SIGNALS: Capture operating mode. - tc->channel[opt->channel].cmr = opt->ldrb << AVR32_TC_LDRB_OFFSET | - opt->ldra << AVR32_TC_LDRA_OFFSET | - 0 << AVR32_TC_WAVE_OFFSET | - opt->cpctrg << AVR32_TC_CPCTRG_OFFSET | - opt->abetrg << AVR32_TC_ABETRG_OFFSET | - opt->etrgedg << AVR32_TC_ETRGEDG_OFFSET| - opt->ldbdis << AVR32_TC_LDBDIS_OFFSET | - opt->ldbstop << AVR32_TC_LDBSTOP_OFFSET | - opt->burst << AVR32_TC_BURST_OFFSET | - opt->clki << AVR32_TC_CLKI_OFFSET | - opt->tcclks << AVR32_TC_TCCLKS_OFFSET; - - return 0; -} - - -int tc_init_waveform(volatile avr32_tc_t *tc, const tc_waveform_opt_t *opt) -{ - // Check for valid input. - if (opt->channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // GENERATE SIGNALS: Waveform operating mode. - tc->channel[opt->channel].cmr = opt->bswtrg << AVR32_TC_BSWTRG_OFFSET | - opt->beevt << AVR32_TC_BEEVT_OFFSET | - opt->bcpc << AVR32_TC_BCPC_OFFSET | - opt->bcpb << AVR32_TC_BCPB_OFFSET | - opt->aswtrg << AVR32_TC_ASWTRG_OFFSET | - opt->aeevt << AVR32_TC_AEEVT_OFFSET | - opt->acpc << AVR32_TC_ACPC_OFFSET | - opt->acpa << AVR32_TC_ACPA_OFFSET | - 1 << AVR32_TC_WAVE_OFFSET | - opt->wavsel << AVR32_TC_WAVSEL_OFFSET | - opt->enetrg << AVR32_TC_ENETRG_OFFSET | - opt->eevt << AVR32_TC_EEVT_OFFSET | - opt->eevtedg << AVR32_TC_EEVTEDG_OFFSET | - opt->cpcdis << AVR32_TC_CPCDIS_OFFSET | - opt->cpcstop << AVR32_TC_CPCSTOP_OFFSET | - opt->burst << AVR32_TC_BURST_OFFSET | - opt->clki << AVR32_TC_CLKI_OFFSET | - opt->tcclks << AVR32_TC_TCCLKS_OFFSET; - - return 0; -} - - -int tc_start(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Enable, reset and start the selected timer/counter channel. - tc->channel[channel].ccr = AVR32_TC_SWTRG_MASK | AVR32_TC_CLKEN_MASK; - - return 0; -} - - -int tc_stop(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Disable the selected timer/counter channel. - tc->channel[channel].ccr = AVR32_TC_CLKDIS_MASK; - - return 0; -} - - -int tc_software_trigger(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Reset the selected timer/counter channel. - tc->channel[channel].ccr = AVR32_TC_SWTRG_MASK; - - return 0; -} - - -void tc_sync_trigger(volatile avr32_tc_t *tc) -{ - // Reset all channels of the selected timer/counter. - tc->bcr = AVR32_TC_BCR_SYNC_MASK; -} - - -void tc_sync_start(volatile avr32_tc_t *tc) -{ - unsigned int i; - // Enable the clock for each channel. - for(i=0; ichannel[i].ccr = AVR32_TC_CLKEN_MASK; - - // Reset all channels of the selected timer/counter. - tc->bcr = AVR32_TC_BCR_SYNC_MASK; -} - - -int tc_read_sr(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return tc->channel[channel].sr; -} - - -int tc_read_tc(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].cv, AVR32_TC_CV_MASK); -} - - -int tc_read_ra(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].ra, AVR32_TC_RA_MASK); -} - - -int tc_read_rb(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].rb, AVR32_TC_RB_MASK); -} - - -int tc_read_rc(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].rc, AVR32_TC_RC_MASK); -} - - -int tc_write_ra(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // This function is only available in WAVEFORM mode. - if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK)) - Wr_bitfield(tc->channel[channel].ra, AVR32_TC_RA_MASK, value); - - return value; -} - - -int tc_write_rb(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // This function is only available in WAVEFORM mode. - if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK)) - Wr_bitfield(tc->channel[channel].rb, AVR32_TC_RB_MASK, value); - - return value; -} - - -int tc_write_rc(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // This function is only available in WAVEFORM mode. - if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK)) - Wr_bitfield(tc->channel[channel].rc, AVR32_TC_RC_MASK, value); - - return value; -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h deleted file mode 100644 index 45ef4f2..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h +++ /dev/null @@ -1,591 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Timer/Counter driver for AVR32 UC3. - * - * AVR32 Timer/Counter driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a TC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _TC_H_ -#define _TC_H_ - -#include - - -//! TC driver functions return value in case of invalid argument(s). -#define TC_INVALID_ARGUMENT (-1) - -//! Number of timer/counter channels. -#define TC_NUMBER_OF_CHANNELS (sizeof(((avr32_tc_t *)0)->channel) / sizeof(avr32_tc_channel_t)) - -/*! \name External Clock Signal 0 Selection - */ -//! @{ -#define TC_CH0_EXT_CLK0_SRC_TCLK0 AVR32_TC_TC0XC0S_TCLK0 -#define TC_CH0_EXT_CLK0_SRC_NO_CLK AVR32_TC_TC0XC0S_NO_CLK -#define TC_CH0_EXT_CLK0_SRC_TIOA1 AVR32_TC_TC0XC0S_TIOA1 -#define TC_CH0_EXT_CLK0_SRC_TIOA2 AVR32_TC_TC0XC0S_TIOA2 -//! @} - -/*! \name External Clock Signal 1 Selection - */ -//! @{ -#define TC_CH1_EXT_CLK1_SRC_TCLK1 AVR32_TC_TC1XC1S_TCLK1 -#define TC_CH1_EXT_CLK1_SRC_NO_CLK AVR32_TC_TC1XC1S_NO_CLK -#define TC_CH1_EXT_CLK1_SRC_TIOA0 AVR32_TC_TC1XC1S_TIOA0 -#define TC_CH1_EXT_CLK1_SRC_TIOA2 AVR32_TC_TC1XC1S_TIOA2 -//! @} - -/*! \name External Clock Signal 2 Selection - */ -//! @{ -#define TC_CH2_EXT_CLK2_SRC_TCLK2 AVR32_TC_TC2XC2S_TCLK2 -#define TC_CH2_EXT_CLK2_SRC_NO_CLK AVR32_TC_TC2XC2S_NO_CLK -#define TC_CH2_EXT_CLK2_SRC_TIOA0 AVR32_TC_TC2XC2S_TIOA0 -#define TC_CH2_EXT_CLK2_SRC_TIOA1 AVR32_TC_TC2XC2S_TIOA1 -//! @} - -/*! \name Event/Trigger Actions on Output - */ -//! @{ -#define TC_EVT_EFFECT_NOOP AVR32_TC_NONE -#define TC_EVT_EFFECT_SET AVR32_TC_SET -#define TC_EVT_EFFECT_CLEAR AVR32_TC_CLEAR -#define TC_EVT_EFFECT_TOGGLE AVR32_TC_TOGGLE -//! @} - -/*! \name RC Compare Trigger Enable - */ -//! @{ -#define TC_NO_TRIGGER_COMPARE_RC 0 -#define TC_TRIGGER_COMPARE_RC 1 -//! @} - -/*! \name Waveform Selection - */ -//! @{ -#define TC_WAVEFORM_SEL_UP_MODE AVR32_TC_WAVSEL_UP_NO_AUTO -#define TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER AVR32_TC_WAVSEL_UP_AUTO -#define TC_WAVEFORM_SEL_UPDOWN_MODE AVR32_TC_WAVSEL_UPDOWN_NO_AUTO -#define TC_WAVEFORM_SEL_UPDOWN_MODE_RC_TRIGGER AVR32_TC_WAVSEL_UPDOWN_AUTO -//! @} - -/*! \name TIOA or TIOB External Trigger Selection - */ -//! @{ -#define TC_EXT_TRIG_SEL_TIOA 1 -#define TC_EXT_TRIG_SEL_TIOB 0 -//! @} - -/*! \name External Event Selection - */ -//! @{ -#define TC_EXT_EVENT_SEL_TIOB_INPUT AVR32_TC_EEVT_TIOB_INPUT -#define TC_EXT_EVENT_SEL_XC0_OUTPUT AVR32_TC_EEVT_XC0_OUTPUT -#define TC_EXT_EVENT_SEL_XC1_OUTPUT AVR32_TC_EEVT_XC1_OUTPUT -#define TC_EXT_EVENT_SEL_XC2_OUTPUT AVR32_TC_EEVT_XC2_OUTPUT -//! @} - -/*! \name Edge Selection - */ -//! @{ -#define TC_SEL_NO_EDGE AVR32_TC_EEVTEDG_NO_EDGE -#define TC_SEL_RISING_EDGE AVR32_TC_EEVTEDG_POS_EDGE -#define TC_SEL_FALLING_EDGE AVR32_TC_EEVTEDG_NEG_EDGE -#define TC_SEL_EACH_EDGE AVR32_TC_EEVTEDG_BOTH_EDGES -//! @} - -/*! \name Burst Signal Selection - */ -//! @{ -#define TC_BURST_NOT_GATED AVR32_TC_BURST_NOT_GATED -#define TC_BURST_CLK_AND_XC0 AVR32_TC_BURST_CLK_AND_XC0 -#define TC_BURST_CLK_AND_XC1 AVR32_TC_BURST_CLK_AND_XC1 -#define TC_BURST_CLK_AND_XC2 AVR32_TC_BURST_CLK_AND_XC2 -//! @} - -/*! \name Clock Invert - */ -//! @{ -#define TC_CLOCK_RISING_EDGE 0 -#define TC_CLOCK_FALLING_EDGE 1 -//! @} - -/*! \name Clock Selection - */ -//! @{ -#define TC_CLOCK_SOURCE_TC1 AVR32_TC_TCCLKS_TIMER_CLOCK1 -#define TC_CLOCK_SOURCE_TC2 AVR32_TC_TCCLKS_TIMER_CLOCK2 -#define TC_CLOCK_SOURCE_TC3 AVR32_TC_TCCLKS_TIMER_CLOCK3 -#define TC_CLOCK_SOURCE_TC4 AVR32_TC_TCCLKS_TIMER_CLOCK4 -#define TC_CLOCK_SOURCE_TC5 AVR32_TC_TCCLKS_TIMER_CLOCK5 -#define TC_CLOCK_SOURCE_XC0 AVR32_TC_TCCLKS_XC0 -#define TC_CLOCK_SOURCE_XC1 AVR32_TC_TCCLKS_XC1 -#define TC_CLOCK_SOURCE_XC2 AVR32_TC_TCCLKS_XC2 -//! @} - - -//! Timer/counter interrupts. -typedef struct -{ - unsigned int :24; - - //! External trigger interrupt. - unsigned int etrgs : 1; - - //! RB load interrupt. - unsigned int ldrbs : 1; - - //! RA load interrupt. - unsigned int ldras : 1; - - //! RC compare interrupt. - unsigned int cpcs : 1; - - //! RB compare interrupt. - unsigned int cpbs : 1; - - //! RA compare interrupt. - unsigned int cpas : 1; - - //! Load overrun interrupt. - unsigned int lovrs : 1; - - //! Counter overflow interrupt. - unsigned int covfs : 1; -} tc_interrupt_t; - -//! Parameters when initializing a timer/counter in capture mode. -typedef struct -{ - //! Channel to initialize. - unsigned int channel ; - - unsigned int :12; - - //! RB loading selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int ldrb : 2; - - //! RA loading selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int ldra : 2; - - unsigned int : 1; - - //! RC compare trigger enable:\n - //! - \ref TC_NO_TRIGGER_COMPARE_RC;\n - //! - \ref TC_TRIGGER_COMPARE_RC. - unsigned int cpctrg : 1; - - unsigned int : 3; - - //! TIOA or TIOB external trigger selection:\n - //! - \ref TC_EXT_TRIG_SEL_TIOA;\n - //! - \ref TC_EXT_TRIG_SEL_TIOB. - unsigned int abetrg : 1; - - //! External trigger edge selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int etrgedg : 2; - - //! Counter clock disable with RB loading:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int ldbdis : 1; - - //! Counter clock stopped with RB loading:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int ldbstop : 1; - - //! Burst signal selection:\n - //! - \ref TC_BURST_NOT_GATED;\n - //! - \ref TC_BURST_CLK_AND_XC0;\n - //! - \ref TC_BURST_CLK_AND_XC1;\n - //! - \ref TC_BURST_CLK_AND_XC2. - unsigned int burst : 2; - - //! Clock invert:\n - //! - \ref TC_CLOCK_RISING_EDGE;\n - //! - \ref TC_CLOCK_FALLING_EDGE. - unsigned int clki : 1; - - //! Clock selection:\n - //! - \ref TC_CLOCK_SOURCE_TC1;\n - //! - \ref TC_CLOCK_SOURCE_TC2;\n - //! - \ref TC_CLOCK_SOURCE_TC3;\n - //! - \ref TC_CLOCK_SOURCE_TC4;\n - //! - \ref TC_CLOCK_SOURCE_TC5;\n - //! - \ref TC_CLOCK_SOURCE_XC0;\n - //! - \ref TC_CLOCK_SOURCE_XC1;\n - //! - \ref TC_CLOCK_SOURCE_XC2. - unsigned int tcclks : 3; -} tc_capture_opt_t; - -//! Parameters when initializing a timer/counter in waveform mode. -typedef struct -{ - //! Channel to initialize. - unsigned int channel ; - - //! Software trigger effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int bswtrg : 2; - - //! External event effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int beevt : 2; - - //! RC compare effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int bcpc : 2; - - //! RB compare effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int bcpb : 2; - - //! Software trigger effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int aswtrg : 2; - - //! External event effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int aeevt : 2; - - //! RC compare effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int acpc : 2; - - //! RA compare effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int acpa : 2; - - unsigned int : 1; - - //! Waveform selection:\n - //! - \ref TC_WAVEFORM_SEL_UP_MODE;\n - //! - \ref TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER;\n - //! - \ref TC_WAVEFORM_SEL_UPDOWN_MODE;\n - //! - \ref TC_WAVEFORM_SEL_UPDOWN_MODE_RC_TRIGGER. - unsigned int wavsel : 2; - - //! External event trigger enable:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int enetrg : 1; - - //! External event selection:\n - //! - \ref TC_EXT_EVENT_SEL_TIOB_INPUT;\n - //! - \ref TC_EXT_EVENT_SEL_XC0_OUTPUT;\n - //! - \ref TC_EXT_EVENT_SEL_XC1_OUTPUT;\n - //! - \ref TC_EXT_EVENT_SEL_XC2_OUTPUT. - unsigned int eevt : 2; - - //! External event edge selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int eevtedg : 2; - - //! Counter clock disable with RC compare:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int cpcdis : 1; - - //! Counter clock stopped with RC compare:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int cpcstop : 1; - - //! Burst signal selection:\n - //! - \ref TC_BURST_NOT_GATED;\n - //! - \ref TC_BURST_CLK_AND_XC0;\n - //! - \ref TC_BURST_CLK_AND_XC1;\n - //! - \ref TC_BURST_CLK_AND_XC2. - unsigned int burst : 2; - - //! Clock invert:\n - //! - \ref TC_CLOCK_RISING_EDGE;\n - //! - \ref TC_CLOCK_FALLING_EDGE. - unsigned int clki : 1; - - //! Clock selection:\n - //! - \ref TC_CLOCK_SOURCE_TC1;\n - //! - \ref TC_CLOCK_SOURCE_TC2;\n - //! - \ref TC_CLOCK_SOURCE_TC3;\n - //! - \ref TC_CLOCK_SOURCE_TC4;\n - //! - \ref TC_CLOCK_SOURCE_TC5;\n - //! - \ref TC_CLOCK_SOURCE_XC0;\n - //! - \ref TC_CLOCK_SOURCE_XC1;\n - //! - \ref TC_CLOCK_SOURCE_XC2. - unsigned int tcclks : 3; -} tc_waveform_opt_t; - - -/*! \brief Reads timer/counter interrupt settings. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 The interrupt enable configuration organized according to \ref tc_interrupt_t. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_get_interrupt_settings(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Enables various timer/counter interrupts. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param bitfield The interrupt enable configuration. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_configure_interrupts(volatile avr32_tc_t *tc, unsigned int channel, const tc_interrupt_t *bitfield); - -/*! \brief Selects which external clock to use and how to configure it. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param ext_clk_sig_src External clock signal selection: - * \arg \c TC_CH0_EXT_CLK0_SRC_TCLK0; - * \arg \c TC_CH0_EXT_CLK0_SRC_NO_CLK; - * \arg \c TC_CH0_EXT_CLK0_SRC_TIOA1; - * \arg \c TC_CH0_EXT_CLK0_SRC_TIOA2; - * \arg \c TC_CH1_EXT_CLK1_SRC_TCLK1; - * \arg \c TC_CH1_EXT_CLK1_SRC_NO_CLK; - * \arg \c TC_CH1_EXT_CLK1_SRC_TIOA0; - * \arg \c TC_CH1_EXT_CLK1_SRC_TIOA2; - * \arg \c TC_CH2_EXT_CLK2_SRC_TCLK2; - * \arg \c TC_CH2_EXT_CLK2_SRC_NO_CLK; - * \arg \c TC_CH2_EXT_CLK2_SRC_TIOA0; - * \arg \c TC_CH2_EXT_CLK2_SRC_TIOA1. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_select_external_clock(volatile avr32_tc_t *tc, unsigned int channel, unsigned int ext_clk_sig_src); - -/*! \brief Sets options for timer/counter capture initialization. - * - * \param tc Pointer to the TC instance to access. - * \param opt Options for capture mode. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_init_capture(volatile avr32_tc_t *tc, const tc_capture_opt_t *opt); - -/*! \brief Sets options for timer/counter waveform initialization. - * - * \param tc Pointer to the TC instance to access. - * \param opt Options for waveform generation. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_init_waveform(volatile avr32_tc_t *tc, const tc_waveform_opt_t *opt); - -/*! \brief Starts a timer/counter. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_start(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Stops a timer/counter. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_stop(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Performs a software trigger: the counter is reset and the clock is started. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_software_trigger(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Asserts a SYNC signal to generate a software trigger and reset all channels. - * - * \param tc Pointer to the TC instance to access. - */ -extern void tc_sync_trigger(volatile avr32_tc_t *tc); - -/*! \brief Start all TC channels simultaneously. - * - * \param tc Pointer to the TC instance to access. - */ -extern void tc_sync_start(volatile avr32_tc_t *tc); - -/*! \brief Reads the status register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 Status register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_sr(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's TC counter and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 TC counter value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_tc(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's RA register and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 RA register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_ra(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's RB register and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 RB register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_rb(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's RC register and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 RC register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_rc(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Writes a value to the channel's RA register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param value Value to write to the RA register. - * - * \retval >=0 Written value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_write_ra(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value); - -/*! \brief Writes a value to the channel's RB register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param value Value to write to the RB register. - * - * \retval >=0 Written value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_write_rb(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value); - -/*! \brief Writes a value to the channel's RC register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param value Value to write to the RC register. - * - * \retval >=0 Written value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_write_rc(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value); - - -#endif // _TC_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c deleted file mode 100644 index b95882a..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c +++ /dev/null @@ -1,914 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief USART driver for AVR32 UC3. - * - * This file contains basic functions for the AVR32 USART, with support for all - * modes, settings and clock speeds. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "compiler.h" -#include "usart.h" - - -//------------------------------------------------------------------------------ -/*! \name Private Functions - */ -//! @{ - - -/*! \brief Checks if the USART is in multidrop mode. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART is in multidrop mode, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -static __inline__ int usart_mode_is_multidrop(volatile avr32_usart_t *usart) -{ - return ((usart->mr >> AVR32_USART_MR_PAR_OFFSET) & AVR32_USART_MR_PAR_MULTI) == AVR32_USART_MR_PAR_MULTI; -} - - -/*! \brief Calculates a clock divider (\e CD) and a fractional part (\e FP) for - * the USART asynchronous modes to generate a baud rate as close as - * possible to the baud rate set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{Over \times (CD + \frac{FP}{8})} \f$, \e Over being 16 or 8. - * The maximal oversampling is selected if it allows to generate a baud rate close to the set point. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_async_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int over = (pba_hz >= 16 * baudrate) ? 16 : 8; - unsigned int cd_fp = ((1 << AVR32_USART_BRGR_FP_SIZE) * pba_hz + (over * baudrate) / 2) / (over * baudrate); - unsigned int cd = cd_fp >> AVR32_USART_BRGR_FP_SIZE; - unsigned int fp = cd_fp & ((1 << AVR32_USART_BRGR_FP_SIZE) - 1); - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK | - AVR32_USART_MR_SYNC_MASK | - AVR32_USART_MR_OVER_MASK)) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - ((over == 16) ? AVR32_USART_MR_OVER_X16 : AVR32_USART_MR_OVER_X8) << AVR32_USART_MR_OVER_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET | - fp << AVR32_USART_BRGR_FP_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Calculates a clock divider (\e CD) for the USART synchronous master - * modes to generate a baud rate as close as possible to the baud rate - * set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_sync_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + baudrate / 2) / baudrate; - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_SYNC_MASK; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Selects the SCK pin as the source of baud rate for the USART - * synchronous slave modes. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Baud rate successfully initialized. - */ -static int usart_set_sync_slave_baudrate(volatile avr32_usart_t *usart) -{ - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_SYNC_MASK; - - return USART_SUCCESS; -} - - -/*! \brief Calculates a clock divider (\e CD) for the USART ISO7816 mode to - * generate an ISO7816 clock as close as possible to the clock set point. - * - * ISO7816 clock calculation: - * \f$ Clock = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param clock ISO7816 clock set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS ISO7816 clock successfully initialized. - * \retval USART_INVALID_INPUT ISO7816 clock set point is out of range for the given input clock frequency. - */ -static int usart_set_iso7816_clock(volatile avr32_usart_t *usart, unsigned int clock, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + clock / 2) / clock; - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK | - AVR32_USART_MR_SYNC_MASK | - AVR32_USART_MR_OVER_MASK)) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_OVER_X16 << AVR32_USART_MR_OVER_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -/*! \brief Calculates a clock divider (\e CD) for the USART SPI master mode to - * generate a baud rate as close as possible to the baud rate set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_spi_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + baudrate / 2) / baudrate; - - if (cd < 4 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Selects the SCK pin as the source of baud rate for the USART SPI - * slave mode. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Baud rate successfully initialized. - */ -static int usart_set_spi_slave_baudrate(volatile avr32_usart_t *usart) -{ - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET; - - return USART_SUCCESS; -} - - -#endif // USART rev. >= 4.0.0 - - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Initialization Functions - */ -//! @{ - - -void usart_reset(volatile avr32_usart_t *usart) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - // Disable all USART interrupts. - // Interrupts needed should be set explicitly on every reset. - if (global_interrupt_enabled) Disable_global_interrupt(); - usart->idr = 0xFFFFFFFF; - usart->csr; - if (global_interrupt_enabled) Enable_global_interrupt(); - - // Reset mode and other registers that could cause unpredictable behavior after reset. - usart->mr = 0; - usart->rtor = 0; - usart->ttgr = 0; - - // Shutdown TX and RX (will be re-enabled when setup has successfully completed), - // reset status bits and turn off DTR and RTS. - usart->cr = AVR32_USART_CR_RSTRX_MASK | - AVR32_USART_CR_RSTTX_MASK | - AVR32_USART_CR_RSTSTA_MASK | - AVR32_USART_CR_RSTIT_MASK | - AVR32_USART_CR_RSTNACK_MASK | -#ifndef AVR32_USART_440_H_INCLUDED -// Note: Modem Signal Management DTR-DSR-DCD-RI are not included in USART rev.440. - AVR32_USART_CR_DTRDIS_MASK | -#endif - AVR32_USART_CR_RTSDIS_MASK; -} - - -int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_async_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1, 1.5 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable only output as input is not possible in synchronous mode without - // transferring clock. - usart->cr = AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set hardware handshaking mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_HARDWARE << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set modem mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_MODEM << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_CLKO_MASK; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_slave_baudrate(usart) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set RS485 mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_RS485 << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt, - long pba_hz, unsigned char irda_filter) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set IrDA filter. - usart->ifr = irda_filter; - - // Set IrDA mode and activate filtering of input. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MODE_IRDA << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_FILTER_MASK; - - return USART_SUCCESS; -} - - -int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->paritytype > 1) - return USART_INVALID_INPUT; - - if (t == 0) - { - // Set USART mode to ISO7816, T=0. - // The T=0 protocol always uses 2 stop bits. - usart->mr = AVR32_USART_MR_MODE_ISO7816_T0 << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET | - opt->bit_order << AVR32_USART_MR_MSBF_OFFSET; // Allow MSBF in T=0. - } - else if (t == 1) - { - // Only LSB first in the T=1 protocol. - // max_iterations field is only used in T=0 mode. - if (opt->bit_order != 0 || - opt->max_iterations != 0) - return USART_INVALID_INPUT; - - // Set USART mode to ISO7816, T=1. - // The T=1 protocol always uses 1 stop bit. - usart->mr = AVR32_USART_MR_MODE_ISO7816_T1 << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_NBSTOP_1 << AVR32_USART_MR_NBSTOP_OFFSET; - } - else - return USART_INVALID_INPUT; - - if (usart_set_iso7816_clock(usart, opt->iso7816_hz, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set FIDI register: bit rate = selected clock/FI_DI_ratio/16. - usart->fidi = opt->fidi_ratio; - - // Set ISO7816 spesific options in the MODE register. - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - AVR32_USART_MR_CLKO_MASK | // Enable clock output. - opt->inhibit_nack << AVR32_USART_MR_INACK_OFFSET | - opt->dis_suc_nack << AVR32_USART_MR_DSNACK_OFFSET | - opt->max_iterations << AVR32_USART_MR_MAX_ITERATION_OFFSET; - - // Setup complete; enable the receiver by default. - usart_iso7816_enable_receiver(usart); - - return USART_SUCCESS; -} - - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - usart->mr |= AVR32_USART_MR_MODE_LIN_MASTER << AVR32_USART_MR_MODE_OFFSET; // LIN master mode. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - usart->mr |= AVR32_USART_MR_MODE_LIN_SLAVE << AVR32_USART_MR_MODE_OFFSET; // LIN slave mode. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->spimode > 3 || - opt->channelmode > 3 || - usart_set_spi_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= AVR32_USART_MR_MODE_SPI_MASTER << AVR32_USART_MR_MODE_OFFSET | // SPI master mode. - ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase. - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode. - (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET | // SPI clock polarity. - AVR32_USART_MR_CLKO_MASK; // Drive SCK pin. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->spimode > 3 || - opt->channelmode > 3 || - usart_set_spi_slave_baudrate(usart) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= AVR32_USART_MR_MODE_SPI_SLAVE << AVR32_USART_MR_MODE_OFFSET | // SPI slave mode. - ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase. - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode. - (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET; // SPI clock polarity. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -#endif // USART rev. >= 4.0.0 - - -//! @} - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -/*! \name SPI Control Functions - */ -//! @{ - - -int usart_spi_selectChip(volatile avr32_usart_t *usart) -{ - // Force the SPI chip select. - usart->cr = AVR32_USART_CR_RTSEN_MASK; - - return USART_SUCCESS; -} - - -int usart_spi_unselectChip(volatile avr32_usart_t *usart) -{ - int timeout = USART_DEFAULT_TIMEOUT; - - do - { - if (!timeout--) return USART_FAILURE; - } while (!usart_tx_empty(usart)); - - // Release the SPI chip select. - usart->cr = AVR32_USART_CR_RTSDIS_MASK; - - return USART_SUCCESS; -} - - -//! @} - - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Transmit/Receive Functions - */ -//! @{ - - -int usart_send_address(volatile avr32_usart_t *usart, int address) -{ - // Check if USART is in multidrop / RS485 mode. - if (!usart_mode_is_multidrop(usart)) return USART_MODE_FAULT; - - // Prepare to send an address. - usart->cr = AVR32_USART_CR_SENDA_MASK; - - // Write the address to TX. - usart_bw_write_char(usart, address); - - return USART_SUCCESS; -} - - -int usart_write_char(volatile avr32_usart_t *usart, int c) -{ - if (usart_tx_ready(usart)) - { - usart->thr = (c << AVR32_USART_THR_TXCHR_OFFSET) & AVR32_USART_THR_TXCHR_MASK; - return USART_SUCCESS; - } - else - return USART_TX_BUSY; -} - - -int usart_putchar(volatile avr32_usart_t *usart, int c) -{ - int timeout = USART_DEFAULT_TIMEOUT; - - if (c == '\n') - { - do - { - if (!timeout--) return USART_FAILURE; - } while (usart_write_char(usart, '\r') != USART_SUCCESS); - - timeout = USART_DEFAULT_TIMEOUT; - } - - do - { - if (!timeout--) return USART_FAILURE; - } while (usart_write_char(usart, c) != USART_SUCCESS); - - return USART_SUCCESS; -} - - -int usart_read_char(volatile avr32_usart_t *usart, int *c) -{ - // Check for errors: frame, parity and overrun. In RS485 mode, a parity error - // would mean that an address char has been received. - if (usart->csr & (AVR32_USART_CSR_OVRE_MASK | - AVR32_USART_CSR_FRAME_MASK | - AVR32_USART_CSR_PARE_MASK)) - return USART_RX_ERROR; - - // No error; if we really did receive a char, read it and return SUCCESS. - if (usart_test_hit(usart)) - { - *c = (usart->rhr & AVR32_USART_RHR_RXCHR_MASK) >> AVR32_USART_RHR_RXCHR_OFFSET; - return USART_SUCCESS; - } - else - return USART_RX_EMPTY; -} - - -int usart_getchar(volatile avr32_usart_t *usart) -{ - int c, ret; - - while ((ret = usart_read_char(usart, &c)) == USART_RX_EMPTY); - - if (ret == USART_RX_ERROR) - return USART_FAILURE; - - return c; -} - - -void usart_write_line(volatile avr32_usart_t *usart, const char *string) -{ - while (*string != '\0') - usart_putchar(usart, *string++); -} - - -int usart_get_echo_line(volatile avr32_usart_t *usart) -{ - int rx_char; - int retval = USART_SUCCESS; - - while (1) - { - rx_char = usart_getchar(usart); - if (rx_char == USART_FAILURE) - { - usart_write_line(usart, "Error!!!\n"); - retval = USART_FAILURE; - break; - } - if (rx_char == '\x03') - { - retval = USART_FAILURE; - break; - } - usart_putchar(usart, rx_char); - if (rx_char == '\r') - { - usart_putchar(usart, '\n'); - break; - } - } - - return retval; -} - - -//! @} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h deleted file mode 100644 index bc1c100..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h +++ /dev/null @@ -1,889 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief USART driver for AVR32 UC3. - * - * This file contains basic functions for the AVR32 USART, with support for all - * modes, settings and clock speeds. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _USART_H_ -#define _USART_H_ - -#include -#include "compiler.h" - - -/*! \name Return Values - */ -//! @{ -#define USART_SUCCESS 0 //!< Successful completion. -#define USART_FAILURE -1 //!< Failure because of some unspecified reason. -#define USART_INVALID_INPUT 1 //!< Input value out of range. -#define USART_INVALID_ARGUMENT -1 //!< Argument value out of range. -#define USART_TX_BUSY 2 //!< Transmitter was busy. -#define USART_RX_EMPTY 3 //!< Nothing was received. -#define USART_RX_ERROR 4 //!< Transmission error occurred. -#define USART_MODE_FAULT 5 //!< USART not in the appropriate mode. -//! @} - -//! Default time-out value (number of attempts). -#define USART_DEFAULT_TIMEOUT 10000 - -/*! \name Parity Settings - */ -//! @{ -#define USART_EVEN_PARITY AVR32_USART_MR_PAR_EVEN //!< Use even parity on character transmission. -#define USART_ODD_PARITY AVR32_USART_MR_PAR_ODD //!< Use odd parity on character transmission. -#define USART_SPACE_PARITY AVR32_USART_MR_PAR_SPACE //!< Use a space as parity bit. -#define USART_MARK_PARITY AVR32_USART_MR_PAR_MARK //!< Use a mark as parity bit. -#define USART_NO_PARITY AVR32_USART_MR_PAR_NONE //!< Don't use a parity bit. -#define USART_MULTIDROP_PARITY AVR32_USART_MR_PAR_MULTI //!< Parity bit is used to flag address characters. -//! @} - -/*! \name Stop Bits Settings - */ -//! @{ -#define USART_1_STOPBIT AVR32_USART_MR_NBSTOP_1 //!< Use 1 stop bit. -#define USART_1_5_STOPBITS AVR32_USART_MR_NBSTOP_1_5 //!< Use 1.5 stop bits. -#define USART_2_STOPBITS AVR32_USART_MR_NBSTOP_2 //!< Use 2 stop bits (for more, just give the number of bits). -//! @} - -/*! \name Channel Modes - */ -//! @{ -#define USART_NORMAL_CHMODE AVR32_USART_MR_CHMODE_NORMAL //!< Normal communication. -#define USART_AUTO_ECHO AVR32_USART_MR_CHMODE_ECHO //!< Echo data. -#define USART_LOCAL_LOOPBACK AVR32_USART_MR_CHMODE_LOCAL_LOOP //!< Local loopback. -#define USART_REMOTE_LOOPBACK AVR32_USART_MR_CHMODE_REMOTE_LOOP //!< Remote loopback. -//! @} - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name LIN Node Actions - */ -//! @{ -#define USART_LIN_PUBLISH_ACTION AVR32_USART_LINMR_NACT_PUBLISH //!< The USART transmits the response. -#define USART_LIN_SUBSCRIBE_ACTION AVR32_USART_LINMR_NACT_SUBSCRIBE //!< The USART receives the response. -#define USART_LIN_IGNORE_ACTION AVR32_USART_LINMR_NACT_IGNORE //!< The USART does not transmit and does not receive the reponse. -//! @} - -/*! \name LIN Checksum Types - */ -//! @{ -#define USART_LIN_ENHANCED_CHECKSUM 0 //!< LIN 2.0 "enhanced" checksum. -#define USART_LIN_CLASSIC_CHECKSUM 1 //!< LIN 1.3 "classic" checksum. -//! @} - -#endif // USART rev. >= 4.0.0 - - -//! Input parameters when initializing RS232 and similar modes. -typedef struct -{ - //! Set baud rate of the USART (unused in slave modes). - unsigned long baudrate; - - //! Number of bits to transmit as a character (5 to 9). - unsigned char charlength; - - //! How to calculate the parity bit: \ref USART_EVEN_PARITY, \ref USART_ODD_PARITY, - //! \ref USART_SPACE_PARITY, \ref USART_MARK_PARITY, \ref USART_NO_PARITY or - //! \ref USART_MULTIDROP_PARITY. - unsigned char paritytype; - - //! Number of stop bits between two characters: \ref USART_1_STOPBIT, - //! \ref USART_1_5_STOPBITS, \ref USART_2_STOPBITS or any number from 3 to 257 - //! which will result in a time guard period of that length between characters. - //! \note \ref USART_1_5_STOPBITS is supported in asynchronous modes only. - unsigned short stopbits; - - //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO, - //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK. - unsigned char channelmode; -} usart_options_t; - -//! Input parameters when initializing ISO7816 mode. -typedef struct -{ - //! Set the frequency of the ISO7816 clock. - unsigned long iso7816_hz; - - //! The number of ISO7816 clock ticks in every bit period (1 to 2047, 0 = disable clock). - //! Bit rate = \ref iso7816_hz / \ref fidi_ratio. - unsigned short fidi_ratio; - - //! How to calculate the parity bit: \ref USART_EVEN_PARITY for normal mode or - //! \ref USART_ODD_PARITY for inverse mode. - unsigned char paritytype; - - //! Inhibit Non Acknowledge:\n - //! - 0: the NACK is generated;\n - //! - 1: the NACK is not generated. - //! - //! \note This bit will be used only in ISO7816 mode, protocol T = 0 receiver. - int inhibit_nack; - - //! Disable successive NACKs. - //! Successive parity errors are counted up to the value in the \ref max_iterations field. - //! These parity errors generate a NACK on the ISO line. As soon as this value is reached, - //! no addititional NACK is sent on the ISO line. The ITERATION flag is asserted. - int dis_suc_nack; - - //! Max number of repetitions (0 to 7). - unsigned char max_iterations; - - //! Bit order in transmitted characters:\n - //! - 0: LSB first;\n - //! - 1: MSB first. - int bit_order; -} usart_iso7816_options_t; - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -//! Input parameters when initializing SPI mode. -typedef struct -{ - //! Set the frequency of the SPI clock (unused in slave mode). - unsigned long baudrate; - - //! Number of bits to transmit as a character (5 to 9). - unsigned char charlength; - - //! Which SPI mode to use. - unsigned char spimode; - - //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO, - //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK. - unsigned char channelmode; -} usart_spi_options_t; - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Initialization Functions - */ -//! @{ - -/*! \brief Resets the USART and disables TX and RX. - * - * \param usart Base address of the USART instance. - */ -extern void usart_reset(volatile avr32_usart_t *usart); - -/*! \brief Sets up the USART to use the standard RS232 protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the standard RS232 protocol in TX-only mode. - * - * Compared to \ref usart_init_rs232, this function allows very high baud rates - * (up to \a pba_hz instead of \a pba_hz / \c 8) at the expense of full duplex. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - * - * \note The \c 1.5 stop bit is not supported in this mode. - */ -extern int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use hardware handshaking. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - * - * \note \ref usart_init_rs232 does not need to be invoked before this function. - */ -extern int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the modem protocol, activating dedicated inputs/outputs. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use a synchronous RS232-like protocol in master mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use a synchronous RS232-like protocol in slave mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the RS485 protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the IrDA protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * \param irda_filter Counter used to distinguish received ones from zeros. - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt, - long pba_hz, unsigned char irda_filter); - -/*! \brief Sets up the USART to use the ISO7816 T=0 or T=1 smartcard protocols. - * - * The receiver is enabled by default. \ref usart_iso7816_enable_receiver and - * \ref usart_iso7816_enable_transmitter can be called to change the half-duplex - * communication direction. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up ISO7816 communication (see \ref usart_iso7816_options_t). - * \param t ISO7816 mode to use (T=0 or T=1). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz); - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Sets up the USART to use the LIN master mode. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - */ -extern int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz); - -/*! \brief Sets up the USART to use the LIN slave mode. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - */ -extern int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz); - -/*! \brief Sets up the USART to use the SPI master mode. - * - * \ref usart_spi_selectChip and \ref usart_spi_unselectChip can be called to - * select or unselect the SPI slave chip. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the SPI slave mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz); - -#endif // USART rev. >= 4.0.0 - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Read and Reset Error Status Bits - */ -//! @{ - -/*! \brief Resets the error status. - * - * This function resets the status bits indicating that a parity error, - * framing error or overrun has occurred. The RXBRK bit, indicating - * a start/end of break condition on the RX line, is also reset. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_reset_status(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_RSTSTA_MASK; -} - -/*! \brief Checks if a parity error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a parity error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_parity_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_PARE_MASK) != 0; -} - -/*! \brief Checks if a framing error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a framing error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_framing_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_FRAME_MASK) != 0; -} - -/*! \brief Checks if an overrun error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a overrun error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_overrun_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_OVRE_MASK) != 0; -} - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Get LIN Error Status - * - * \param usart Base address of the USART instance. - * - * \retval The binary value of the error field. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_lin_get_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & (AVR32_USART_CSR_LINSNRE_MASK | - AVR32_USART_CSR_LINCE_MASK | - AVR32_USART_CSR_LINIPE_MASK | - AVR32_USART_CSR_LINISFE_MASK | - AVR32_USART_CSR_LINBE_MASK)) >> AVR32_USART_CSR_LINBE_OFFSET; -} - -#endif // USART rev. >= 4.0.0 - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name ISO7816 Control Functions - */ -//! @{ - -/*! \brief Enables the ISO7816 receiver. - * - * The ISO7816 transmitter is disabled. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_iso7816_enable_receiver(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_TXDIS_MASK | AVR32_USART_CR_RXEN_MASK; -} - -/*! \brief Enables the ISO7816 transmitter. - * - * The ISO7816 receiver is disabled. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_iso7816_enable_transmitter(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_RXDIS_MASK | AVR32_USART_CR_TXEN_MASK; -} - -//! @} - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name LIN Control Functions - */ -//! @{ - -/*! \brief Sets the node action. - * - * \param usart Base address of the USART instance. - * \param action The node action: \ref USART_LIN_PUBLISH_ACTION, - * \ref USART_LIN_SUBSCRIBE_ACTION or - * \ref USART_LIN_IGNORE_ACTION. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_node_action(volatile avr32_usart_t *usart, unsigned char action) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_NACT_MASK) | - action << AVR32_USART_LINMR_NACT_OFFSET; -} - -/*! \brief Enables or disables the Identifier parity. - * - * \param usart Base address of the USART instance. - * \param parity Whether to enable the Identifier parity: \c TRUE or \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_parity(volatile avr32_usart_t *usart, unsigned char parity) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_PARDIS_MASK) | - !parity << AVR32_USART_LINMR_PARDIS_OFFSET; -} - -/*! \brief Enables or disables the checksum. - * - * \param usart Base address of the USART instance. - * \param parity Whether to enable the checksum: \c TRUE or \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_checksum(volatile avr32_usart_t *usart, unsigned char checksum) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKDIS_MASK) | - !checksum << AVR32_USART_LINMR_CHKDIS_OFFSET; -} - -/*! \brief Sets the checksum type. - * - * \param usart Base address of the USART instance. - * \param chktyp The checksum type: \ref USART_LIN_ENHANCED_CHEKSUM or - * \ref USART_LIN_CLASSIC_CHECKSUM. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_checksum(volatile avr32_usart_t *usart, unsigned char chktyp) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKTYP_MASK) | - chktyp << AVR32_USART_LINMR_CHKTYP_OFFSET; -} - -/*! \brief Gets the response data length. - * - * \param usart Base address of the USART instance. - * - * \return The response data length. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned char usart_lin_get_data_length(volatile avr32_usart_t *usart) -{ - if (usart->linmr & AVR32_USART_LINMR_DLM_MASK) - { - unsigned char data_length = 1 << ((usart->linir >> (AVR32_USART_LINIR_IDCHR_OFFSET + 4)) & 0x03); - if (data_length == 1) - data_length = 2; - return data_length; - } - else - return ((usart->linmr & AVR32_USART_LINMR_DLC_MASK) >> AVR32_USART_LINMR_DLC_OFFSET) + 1; -} - -/*! \brief Sets the response data length for LIN 1.x. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_data_length_lin1x(volatile avr32_usart_t *usart) -{ - usart->linmr |= AVR32_USART_LINMR_DLM_MASK; -} - -/*! \brief Sets the response data length for LIN 2.x. - * - * \param usart Base address of the USART instance. - * \param data_length The response data length. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_data_length_lin2x(volatile avr32_usart_t *usart, unsigned char data_length) -{ - usart->linmr = (usart->linmr & ~(AVR32_USART_LINMR_DLC_MASK | - AVR32_USART_LINMR_DLM_MASK)) | - (data_length - 1) << AVR32_USART_LINMR_DLC_OFFSET; -} - -/*! \brief Enables or disables the frame slot mode. - * - * \param usart Base address of the USART instance. - * \param frameslot Whether to enable the frame slot mode: \c TRUE or - * \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_frameslot(volatile avr32_usart_t *usart, unsigned char frameslot) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_FSDIS_MASK) | - !frameslot << AVR32_USART_LINMR_FSDIS_OFFSET; -} - -/*! \brief Gets the Identifier character. - * - * \param usart Base address of the USART instance. - * - * \return The Identifier character. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned char usart_lin_get_id_char(volatile avr32_usart_t *usart) -{ - return (usart->linir & AVR32_USART_LINIR_IDCHR_MASK) >> AVR32_USART_LINIR_IDCHR_OFFSET; -} - -/*! \brief Sets the Identifier character. - * - * \param usart Base address of the USART instance. - * \param id_char The Identifier character. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_id_char(volatile avr32_usart_t *usart, unsigned char id_char) -{ - usart->linir = (usart->linir & ~AVR32_USART_LINIR_IDCHR_MASK) | - id_char << AVR32_USART_LINIR_IDCHR_OFFSET; -} - -//! @} - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name SPI Control Functions - */ -//! @{ - -/*! \brief Selects SPI slave chip. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - */ -extern int usart_spi_selectChip(volatile avr32_usart_t *usart); - -/*! \brief Unselects SPI slave chip. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - * \retval USART_FAILURE Time-out. - */ -extern int usart_spi_unselectChip(volatile avr32_usart_t *usart); - -//! @} - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Transmit/Receive Functions - */ -//! @{ - -/*! \brief Addresses a receiver. - * - * While in RS485 mode, receivers only accept data addressed to them. - * A packet/char with the address tag set has to precede any data. - * This function is used to address a receiver. This receiver should read - * all the following data, until an address packet addresses another receiver. - * - * \param usart Base address of the USART instance. - * \param address Address of the target device. - * - * \retval USART_SUCCESS Address successfully sent (if current mode is RS485). - * \retval USART_MODE_FAULT Wrong operating mode. - */ -extern int usart_send_address(volatile avr32_usart_t *usart, int address); - -/*! \brief Tests if the USART is ready to transmit a character. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Transmit Holding Register is free, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_tx_ready(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_TXRDY_MASK) != 0; -} - -/*! \brief Writes the given character to the TX buffer if the transmitter is ready. - * - * \param usart Base address of the USART instance. - * \param c The character (up to 9 bits) to transmit. - * - * \retval USART_SUCCESS The transmitter was ready. - * \retval USART_TX_BUSY The transmitter was busy. - */ -extern int usart_write_char(volatile avr32_usart_t *usart, int c); - -/*! \brief An active wait writing a character to the USART. - * - * \param usart Base address of the USART instance. - * \param c The character (up to 9 bits) to transmit. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_bw_write_char(volatile avr32_usart_t *usart, int c) -{ - while (usart_write_char(usart, c) != USART_SUCCESS); -} - -/*! \brief Sends a character with the USART. - * - * \param usart Base address of the USART instance. - * \param c Character to write. - * - * \retval USART_SUCCESS The character was written. - * \retval USART_FAILURE The function timed out before the USART transmitter became ready to send. - */ -extern int usart_putchar(volatile avr32_usart_t *usart, int c); - -/*! \brief Tests if all requested USART transmissions are over. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Transmit Shift Register and the USART Transmit - * Holding Register are free, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_tx_empty(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_TXEMPTY_MASK) != 0; -} - -/*! \brief Tests if the USART contains a received character. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Receive Holding Register is full, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_test_hit(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_RXRDY_MASK) != 0; -} - -/*! \brief Checks the RX buffer for a received character, and stores it at the - * given memory location. - * - * \param usart Base address of the USART instance. - * \param c Pointer to the where the read character should be stored - * (must be at least short in order to accept 9-bit characters). - * - * \retval USART_SUCCESS The character was read successfully. - * \retval USART_RX_EMPTY The RX buffer was empty. - * \retval USART_RX_ERROR An error was deteceted. - */ -extern int usart_read_char(volatile avr32_usart_t *usart, int *c); - -/*! \brief Waits until a character is received, and returns it. - * - * \param usart Base address of the USART instance. - * - * \return The received character, or \ref USART_FAILURE upon error. - */ -extern int usart_getchar(volatile avr32_usart_t *usart); - -/*! \brief Writes one character string to the USART. - * - * \param usart Base address of the USART instance. - * \param string String to be written. - */ -extern void usart_write_line(volatile avr32_usart_t *usart, const char *string); - -/*! \brief Gets and echoes characters until end of line. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - * \retval USART_FAILURE Low-level error detected or ETX character received. - */ -extern int usart_get_echo_line(volatile avr32_usart_t *usart); - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Abort LIN transmission. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_abort(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_LINABT_MASK; -} - -/*! \brief Tests if a LIN transfer has been completed. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a LIN transfer has been completed, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_lin_transfer_completed(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_LINTC_MASK) != 0; -} - -#endif // USART rev. >= 4.0.0 - -//! @} - - -#endif // _USART_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c deleted file mode 100644 index ad5ecca..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c +++ /dev/null @@ -1,87 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ****************************************************************** - * - * \brief Management of the delays. - * - * This file manages the "delays", with or without an OS. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ***************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -//_____ I N C L U D E S ___________________________________________________ - -#include "delay.h" - - -//_____ M A C R O S ________________________________________________________ - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! CPU frequency -#ifndef FREERTOS_USED -static unsigned long s_fcpu_hz; -#endif -#if (defined NUTOS_USED) -extern void NutSleep(unsigned long ms); -#endif - -//_____ D E C L A R A T I O N S ____________________________________________ - -void delay_init(unsigned long fcpu_hz) -{ -#ifndef FREERTOS_USED - s_fcpu_hz = fcpu_hz; -#endif -} - - -void delay_ms(unsigned long delay) -{ -#if (defined FREERTOS_USED) - vTaskDelay( (portTickType)TASK_DELAY_MS(delay) ); -#elif (defined NUTOS_USED) - NutSleep(delay); -#else - cpu_delay_ms(delay, s_fcpu_hz); -#endif -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h deleted file mode 100644 index 2811326..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h +++ /dev/null @@ -1,80 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3 delay management header file. - * - * This file contains definitions and services to handle "delays". - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _DELAY_H_ -#define _DELAY_H_ - -#include "compiler.h" -#ifdef FREERTOS_USED -# include "FreeRTOS.h" -# include "task.h" -#else -# include "cycle_counter.h" -#endif - - -/*! - * \brief Initialize the delay driver. - * - * \param fcpu_hz: CPU frequency in Hz. - */ -extern void delay_init(unsigned long fcpu_hz); - - -/*! - * \brief Waits during at least the specified delay (in millisecond) before returning. - * - * Note that in the case of FreeRTOS, the function will delay the current task for a given number of ms. - * - * \param delay: Number of millisecond to wait. - */ -extern void delay_ms(unsigned long delay); - - -#endif // _DELAY_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c deleted file mode 100644 index 8ef6c84..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c +++ /dev/null @@ -1,1724 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Dynamic Host Configuration Protocol client - * - */ - -/* - * - * Copyright (c) 2001-2004 Leon Woestenberg - * Copyright (c) 2001-2004 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is a contribution to the lwIP TCP/IP stack. - * The Swedish Institute of Computer Science and Adam Dunkels - * are specifically granted permission to redistribute this - * source code. - * - * Author: Leon Woestenberg - * - * This is a DHCP client for the lwIP TCP/IP stack. It aims to conform - * with RFC 2131 and RFC 2132. - * - * TODO: - * - Proper parsing of DHCP messages exploiting file/sname field overloading. - * - Add JavaDoc style documentation (API, internals). - * - Support for interfaces other than Ethernet (SLIP, PPP, ...) - * - * Please coordinate changes and requests with Leon Woestenberg - * - * - * Integration with your code: - * - * In lwip/dhcp.h - * #define DHCP_COARSE_TIMER_SECS (recommended 60 which is a minute) - * #define DHCP_FINE_TIMER_MSECS (recommended 500 which equals TCP coarse timer) - * - * Then have your application call dhcp_coarse_tmr() and - * dhcp_fine_tmr() on the defined intervals. - * - * dhcp_start(struct netif *netif); - * starts a DHCP client instance which configures the interface by - * obtaining an IP address lease and maintaining it. - * - * Use dhcp_release(netif) to end the lease and use dhcp_stop(netif) - * to remove the DHCP client. - * - */ - -#include "lwip/opt.h" - -#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/stats.h" -#include "lwip/mem.h" -#include "lwip/udp.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/inet.h" -#include "lwip/sys.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" -#include "lwip/dns.h" -#include "netif/etharp.h" - -#include - -/** Default for DHCP_GLOBAL_XID is 0xABCD0000 - * This can be changed by defining DHCP_GLOBAL_XID and DHCP_GLOBAL_XID_HEADER, e.g. - * #define DHCP_GLOBAL_XID_HEADER "stdlib.h" - * #define DHCP_GLOBAL_XID rand() - */ -#ifdef DHCP_GLOBAL_XID_HEADER -#include DHCP_GLOBAL_XID_HEADER /* include optional starting XID generation prototypes */ -#endif - -/** DHCP_OPTION_MAX_MSG_SIZE is set to the MTU - * MTU is checked to be big enough in dhcp_start */ -#define DHCP_MAX_MSG_LEN(netif) (netif->mtu) -#define DHCP_MAX_MSG_LEN_MIN_REQUIRED 576 -/** Minimum length for reply before packet is parsed */ -#define DHCP_MIN_REPLY_LEN 44 - -#define REBOOT_TRIES 2 - -/* DHCP client state machine functions */ -static void dhcp_handle_ack(struct netif *netif); -static void dhcp_handle_nak(struct netif *netif); -static void dhcp_handle_offer(struct netif *netif); - -static err_t dhcp_discover(struct netif *netif); -static err_t dhcp_select(struct netif *netif); -static void dhcp_bind(struct netif *netif); -#if DHCP_DOES_ARP_CHECK -static void dhcp_check(struct netif *netif); -static err_t dhcp_decline(struct netif *netif); -#endif /* DHCP_DOES_ARP_CHECK */ -static err_t dhcp_rebind(struct netif *netif); -static err_t dhcp_reboot(struct netif *netif); -static void dhcp_set_state(struct dhcp *dhcp, u8_t new_state); - -/* receive, unfold, parse and free incoming messages */ -static void dhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port); -static err_t dhcp_unfold_reply(struct dhcp *dhcp, struct pbuf *p); -static u8_t *dhcp_get_option_ptr(struct dhcp *dhcp, u8_t option_type); -static u8_t dhcp_get_option_byte(u8_t *ptr); -#if 0 -static u16_t dhcp_get_option_short(u8_t *ptr); -#endif -static u32_t dhcp_get_option_long(u8_t *ptr); -static void dhcp_free_reply(struct dhcp *dhcp); - -/* set the DHCP timers */ -static void dhcp_timeout(struct netif *netif); -static void dhcp_t1_timeout(struct netif *netif); -static void dhcp_t2_timeout(struct netif *netif); - -/* build outgoing messages */ -/* create a DHCP request, fill in common headers */ -static err_t dhcp_create_request(struct netif *netif); -/* free a DHCP request */ -static void dhcp_delete_request(struct netif *netif); -/* add a DHCP option (type, then length in bytes) */ -static void dhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len); -/* add option values */ -static void dhcp_option_byte(struct dhcp *dhcp, u8_t value); -static void dhcp_option_short(struct dhcp *dhcp, u16_t value); -static void dhcp_option_long(struct dhcp *dhcp, u32_t value); -/* always add the DHCP options trailer to end and pad */ -static void dhcp_option_trailer(struct dhcp *dhcp); - -/** - * Back-off the DHCP client (because of a received NAK response). - * - * Back-off the DHCP client because of a received NAK. Receiving a - * NAK means the client asked for something non-sensible, for - * example when it tries to renew a lease obtained on another network. - * - * We clear any existing set IP address and restart DHCP negotiation - * afresh (as per RFC2131 3.2.3). - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_nak(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_nak(netif=%p) %c%c%"U16_F"\n", - (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - /* Set the interface down since the address must no longer be used, as per RFC2131 */ - netif_set_down(netif); - /* remove IP address from interface */ - netif_set_ipaddr(netif, IP_ADDR_ANY); - netif_set_gw(netif, IP_ADDR_ANY); - netif_set_netmask(netif, IP_ADDR_ANY); - /* Change to a defined state */ - dhcp_set_state(dhcp, DHCP_BACKING_OFF); - /* We can immediately restart discovery */ - dhcp_discover(netif); -} - -#if DHCP_DOES_ARP_CHECK -/** - * Checks if the offered IP address is already in use. - * - * It does so by sending an ARP request for the offered address and - * entering CHECKING state. If no ARP reply is received within a small - * interval, the address is assumed to be free for use by us. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_check(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_check(netif=%p) %c%c\n", (void *)netif, (s16_t)netif->name[0], - (s16_t)netif->name[1])); - dhcp_set_state(dhcp, DHCP_CHECKING); - /* create an ARP query for the offered IP address, expecting that no host - responds, as the IP address should not be in use. */ - result = etharp_query(netif, &dhcp->offered_ip_addr, NULL); - if (result != ERR_OK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_check: could not perform ARP query\n")); - } - dhcp->tries++; - msecs = 500; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_check(): set request timeout %"U16_F" msecs\n", msecs)); -} -#endif /* DHCP_DOES_ARP_CHECK */ - -/** - * Remember the configuration offered by a DHCP server. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_offer(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - /* obtain the server address */ - u8_t *option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_SERVER_ID); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_offer(netif=%p) %c%c%"U16_F"\n", - (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - if (option_ptr != NULL) { - dhcp->server_ip_addr.addr = htonl(dhcp_get_option_long(&option_ptr[2])); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): server 0x%08"X32_F"\n", dhcp->server_ip_addr.addr)); - /* remember offered address */ - ip_addr_set(&dhcp->offered_ip_addr, (struct ip_addr *)&dhcp->msg_in->yiaddr); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): offer for 0x%08"X32_F"\n", dhcp->offered_ip_addr.addr)); - - dhcp_select(netif); - } -} - -/** - * Select a DHCP server offer out of all offers. - * - * Simply select the first offer received. - * - * @param netif the netif under DHCP control - * @return lwIP specific error (see error.h) - */ -static err_t -dhcp_select(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; -#if LWIP_NETIF_HOSTNAME - const char *p; -#endif /* LWIP_NETIF_HOSTNAME */ - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_select(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - dhcp_set_state(dhcp, DHCP_REQUESTING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_REQUEST); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - - /* MUST request the offered IP address */ - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); - - dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4); - dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr)); - - dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/); - dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK); - dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER); - dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST); - dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER); - -#if LWIP_NETIF_HOSTNAME - p = (const char*)netif->hostname; - if (p != NULL) { - dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, strlen(p)); - while (*p) { - dhcp_option_byte(dhcp, *p++); - } - } -#endif /* LWIP_NETIF_HOSTNAME */ - - dhcp_option_trailer(dhcp); - /* shrink the pbuf to the actual content length */ - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* send broadcast to any DHCP server */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_select: REQUESTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_select: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_select(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - -/** - * The DHCP timer that checks for lease renewal/rebind timeouts. - * - */ -void -dhcp_coarse_tmr() -{ - struct netif *netif = netif_list; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_coarse_tmr()\n")); - /* iterate through all network interfaces */ - while (netif != NULL) { - /* only act on DHCP configured interfaces */ - if (netif->dhcp != NULL) { - /* timer is active (non zero), and triggers (zeroes) now? */ - if (netif->dhcp->t2_timeout-- == 1) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t2 timeout\n")); - /* this clients' rebind timeout triggered */ - dhcp_t2_timeout(netif); - /* timer is active (non zero), and triggers (zeroes) now */ - } else if (netif->dhcp->t1_timeout-- == 1) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t1 timeout\n")); - /* this clients' renewal timeout triggered */ - dhcp_t1_timeout(netif); - } - } - /* proceed to next netif */ - netif = netif->next; - } -} - -/** - * DHCP transaction timeout handling - * - * A DHCP server is expected to respond within a short period of time. - * This timer checks whether an outstanding DHCP request is timed out. - * - */ -void -dhcp_fine_tmr() -{ - struct netif *netif = netif_list; - /* loop through netif's */ - while (netif != NULL) { - /* only act on DHCP configured interfaces */ - if (netif->dhcp != NULL) { - /* timer is active (non zero), and is about to trigger now */ - if (netif->dhcp->request_timeout > 1) { - netif->dhcp->request_timeout--; - } - else if (netif->dhcp->request_timeout == 1) { - netif->dhcp->request_timeout--; - /* { netif->dhcp->request_timeout == 0 } */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_fine_tmr(): request timeout\n")); - /* this clients' request timeout triggered */ - dhcp_timeout(netif); - } - } - /* proceed to next network interface */ - netif = netif->next; - } -} - -/** - * A DHCP negotiation transaction, or ARP request, has timed out. - * - * The timer that was started with the DHCP or ARP request has - * timed out, indicating no response was received in time. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_timeout(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout()\n")); - /* back-off period has passed, or server selection timed out */ - if ((dhcp->state == DHCP_BACKING_OFF) || (dhcp->state == DHCP_SELECTING)) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout(): restarting discovery\n")); - dhcp_discover(netif); - /* receiving the requested lease timed out */ - } else if (dhcp->state == DHCP_REQUESTING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REQUESTING, DHCP request timed out\n")); - if (dhcp->tries <= 5) { - dhcp_select(netif); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REQUESTING, releasing, restarting\n")); - dhcp_release(netif); - dhcp_discover(netif); - } -#if DHCP_DOES_ARP_CHECK - /* received no ARP reply for the offered address (which is good) */ - } else if (dhcp->state == DHCP_CHECKING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): CHECKING, ARP request timed out\n")); - if (dhcp->tries <= 1) { - dhcp_check(netif); - /* no ARP replies on the offered address, - looks like the IP address is indeed free */ - } else { - /* bind the interface to the offered address */ - dhcp_bind(netif); - } -#endif /* DHCP_DOES_ARP_CHECK */ - } - /* did not get response to renew request? */ - else if (dhcp->state == DHCP_RENEWING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RENEWING, DHCP request timed out\n")); - /* just retry renewal */ - /* note that the rebind timer will eventually time-out if renew does not work */ - dhcp_renew(netif); - /* did not get response to rebind request? */ - } else if (dhcp->state == DHCP_REBINDING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REBINDING, DHCP request timed out\n")); - if (dhcp->tries <= 8) { - dhcp_rebind(netif); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RELEASING, DISCOVERING\n")); - dhcp_release(netif); - dhcp_discover(netif); - } - } else if (dhcp->state == DHCP_REBOOTING) { - if (dhcp->tries < REBOOT_TRIES) { - dhcp_reboot(netif); - } else { - dhcp_discover(netif); - } - } -} - -/** - * The renewal period has timed out. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_t1_timeout(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_t1_timeout()\n")); - if ((dhcp->state == DHCP_REQUESTING) || (dhcp->state == DHCP_BOUND) || (dhcp->state == DHCP_RENEWING)) { - /* just retry to renew - note that the rebind timer (t2) will - * eventually time-out if renew tries fail. */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t1_timeout(): must renew\n")); - dhcp_renew(netif); - } -} - -/** - * The rebind period has timed out. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_t2_timeout(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t2_timeout()\n")); - if ((dhcp->state == DHCP_REQUESTING) || (dhcp->state == DHCP_BOUND) || (dhcp->state == DHCP_RENEWING)) { - /* just retry to rebind */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t2_timeout(): must rebind\n")); - dhcp_rebind(netif); - } -} - -/** - * Handle a DHCP ACK packet - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_ack(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - u8_t *option_ptr; - /* clear options we might not get from the ACK */ - dhcp->offered_sn_mask.addr = 0; - dhcp->offered_gw_addr.addr = 0; - dhcp->offered_bc_addr.addr = 0; - - /* lease time given? */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_LEASE_TIME); - if (option_ptr != NULL) { - /* remember offered lease time */ - dhcp->offered_t0_lease = dhcp_get_option_long(option_ptr + 2); - } - /* renewal period given? */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_T1); - if (option_ptr != NULL) { - /* remember given renewal period */ - dhcp->offered_t1_renew = dhcp_get_option_long(option_ptr + 2); - } else { - /* calculate safe periods for renewal */ - dhcp->offered_t1_renew = dhcp->offered_t0_lease / 2; - } - - /* renewal period given? */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_T2); - if (option_ptr != NULL) { - /* remember given rebind period */ - dhcp->offered_t2_rebind = dhcp_get_option_long(option_ptr + 2); - } else { - /* calculate safe periods for rebinding */ - dhcp->offered_t2_rebind = dhcp->offered_t0_lease; - } - - /* (y)our internet address */ - ip_addr_set(&dhcp->offered_ip_addr, &dhcp->msg_in->yiaddr); - -/** - * Patch #1308 - * TODO: we must check if the file field is not overloaded by DHCP options! - */ -#if 0 - /* boot server address */ - ip_addr_set(&dhcp->offered_si_addr, &dhcp->msg_in->siaddr); - /* boot file name */ - if (dhcp->msg_in->file[0]) { - dhcp->boot_file_name = mem_malloc(strlen(dhcp->msg_in->file) + 1); - strcpy(dhcp->boot_file_name, dhcp->msg_in->file); - } -#endif - - /* subnet mask */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_SUBNET_MASK); - /* subnet mask given? */ - if (option_ptr != NULL) { - dhcp->offered_sn_mask.addr = htonl(dhcp_get_option_long(&option_ptr[2])); - } - - /* gateway router */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_ROUTER); - if (option_ptr != NULL) { - dhcp->offered_gw_addr.addr = htonl(dhcp_get_option_long(&option_ptr[2])); - } - - /* broadcast address */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_BROADCAST); - if (option_ptr != NULL) { - dhcp->offered_bc_addr.addr = htonl(dhcp_get_option_long(&option_ptr[2])); - } - - /* DNS servers */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_DNS_SERVER); - if (option_ptr != NULL) { - u8_t n; - dhcp->dns_count = dhcp_get_option_byte(&option_ptr[1]) / (u32_t)sizeof(struct ip_addr); - /* limit to at most DHCP_MAX_DNS DNS servers */ - if (dhcp->dns_count > DHCP_MAX_DNS) - dhcp->dns_count = DHCP_MAX_DNS; - for (n = 0; n < dhcp->dns_count; n++) { - dhcp->offered_dns_addr[n].addr = htonl(dhcp_get_option_long(&option_ptr[2 + n * 4])); -#if LWIP_DNS - dns_setserver( n, (struct ip_addr *)(&(dhcp->offered_dns_addr[n].addr))); -#endif /* LWIP_DNS */ - } -#if LWIP_DNS - dns_setserver( n, (struct ip_addr *)(&ip_addr_any)); -#endif /* LWIP_DNS */ - } -} - -/** - * Start DHCP negotiation for a network interface. - * - * If no DHCP client instance was attached to this interface, - * a new client is created first. If a DHCP client instance - * was already present, it restarts negotiation. - * - * @param netif The lwIP network interface - * @return lwIP error code - * - ERR_OK - No error - * - ERR_MEM - Out of memory - */ -err_t -dhcp_start(struct netif *netif) -{ - struct dhcp *dhcp; - err_t result = ERR_OK; - - LWIP_ERROR("netif != NULL", (netif != NULL), return ERR_ARG;); - dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - /* Remove the flag that says this netif is handled by DHCP, - it is set when we succeeded starting. */ - netif->flags &= ~NETIF_FLAG_DHCP; - - /* check MTU of the netif */ - if (netif->mtu < DHCP_MAX_MSG_LEN_MIN_REQUIRED) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): Cannot use this netif with DHCP: MTU is too small\n")); - return ERR_MEM; - } - - /* no DHCP client attached yet? */ - if (dhcp == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting new DHCP client\n")); - dhcp = mem_malloc(sizeof(struct dhcp)); - if (dhcp == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): could not allocate dhcp\n")); - return ERR_MEM; - } - /* store this dhcp client in the netif */ - netif->dhcp = dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): allocated dhcp")); - /* already has DHCP client attached */ - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(): restarting DHCP configuration\n")); - if (dhcp->pcb != NULL) { - udp_remove(dhcp->pcb); - } - LWIP_ASSERT("pbuf p_out wasn't freed", dhcp->p_out == NULL); - LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL && - dhcp->options_in == NULL && dhcp->options_in_len == 0); - } - - /* clear data structure */ - memset(dhcp, 0, sizeof(struct dhcp)); - /* allocate UDP PCB */ - dhcp->pcb = udp_new(); - if (dhcp->pcb == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): could not obtain pcb\n")); - mem_free((void *)dhcp); - netif->dhcp = dhcp = NULL; - return ERR_MEM; - } -#if IP_SOF_BROADCAST - dhcp->pcb->so_options|=SOF_BROADCAST; -#endif /* IP_SOF_BROADCAST */ - /* set up local and remote port for the pcb */ - udp_bind(dhcp->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT); - udp_connect(dhcp->pcb, IP_ADDR_ANY, DHCP_SERVER_PORT); - /* set up the recv callback and argument */ - udp_recv(dhcp->pcb, dhcp_recv, netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting DHCP configuration\n")); - /* (re)start the DHCP negotiation */ - result = dhcp_discover(netif); - if (result != ERR_OK) { - /* free resources allocated above */ - dhcp_stop(netif); - return ERR_MEM; - } - /* Set the flag that says this netif is handled by DHCP. */ - netif->flags |= NETIF_FLAG_DHCP; - return result; -} - -/** - * Inform a DHCP server of our manual configuration. - * - * This informs DHCP servers of our fixed IP address configuration - * by sending an INFORM message. It does not involve DHCP address - * configuration, it is just here to be nice to the network. - * - * @param netif The lwIP network interface - */ -void -dhcp_inform(struct netif *netif) -{ - struct dhcp *dhcp, *old_dhcp; - err_t result = ERR_OK; - dhcp = mem_malloc(sizeof(struct dhcp)); - if (dhcp == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform(): could not allocate dhcp\n")); - return; - } - memset(dhcp, 0, sizeof(struct dhcp)); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_inform(): allocated dhcp\n")); - dhcp->pcb = udp_new(); - if (dhcp->pcb == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform(): could not obtain pcb")); - goto free_dhcp_and_return; - } - old_dhcp = netif->dhcp; - netif->dhcp = dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_inform(): created new udp pcb\n")); - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_INFORM); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - -#if IP_SOF_BROADCAST - dhcp->pcb->so_options|=SOF_BROADCAST; -#endif /* IP_SOF_BROADCAST */ - udp_bind(dhcp->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_inform: INFORMING\n")); - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform: could not allocate DHCP request\n")); - } - - udp_remove(dhcp->pcb); - dhcp->pcb = NULL; - netif->dhcp = old_dhcp; -free_dhcp_and_return: - mem_free((void *)dhcp); -} - -/** Handle a possible change in the network configuration. - * - * This enters the REBOOTING state to verify that the currently bound - * address is still valid. - */ -void -dhcp_network_changed(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - if (!dhcp) - return; - switch (dhcp->state) { - case DHCP_REBINDING: - case DHCP_RENEWING: - case DHCP_BOUND: - case DHCP_REBOOTING: - netif_set_down(netif); - dhcp->tries = 0; - dhcp_reboot(netif); - break; - case DHCP_OFF: - /* stay off */ - break; - default: - dhcp->tries = 0; - dhcp_discover(netif); - break; - } -} - -#if DHCP_DOES_ARP_CHECK -/** - * Match an ARP reply with the offered IP address. - * - * @param netif the network interface on which the reply was received - * @param addr The IP address we received a reply from - */ -void dhcp_arp_reply(struct netif *netif, struct ip_addr *addr) -{ - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_arp_reply()\n")); - /* is a DHCP client doing an ARP check? */ - if ((netif->dhcp != NULL) && (netif->dhcp->state == DHCP_CHECKING)) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_arp_reply(): CHECKING, arp reply for 0x%08"X32_F"\n", addr->addr)); - /* did a host respond with the address we - were offered by the DHCP server? */ - if (ip_addr_cmp(addr, &netif->dhcp->offered_ip_addr)) { - /* we will not accept the offered address */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING, - ("dhcp_arp_reply(): arp reply matched with offered address, declining\n")); - dhcp_decline(netif); - } - } -} - -/** - * Decline an offered lease. - * - * Tell the DHCP server we do not accept the offered address. - * One reason to decline the lease is when we find out the address - * is already in use by another host (through ARP). - * - * @param netif the netif under DHCP control - */ -static err_t -dhcp_decline(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result = ERR_OK; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline()\n")); - dhcp_set_state(dhcp, DHCP_BACKING_OFF); - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_DECLINE); - - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); - - dhcp_option_trailer(dhcp); - /* resize pbuf to reflect true size of options */ - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* per section 4.4.4, broadcast DECLINE messages */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_decline: BACKING OFF\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_decline: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = 10*1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} -#endif - - -/** - * Start the DHCP process, discover a DHCP server. - * - * @param netif the netif under DHCP control - */ -static err_t -dhcp_discover(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result = ERR_OK; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover()\n")); - ip_addr_set(&dhcp->offered_ip_addr, IP_ADDR_ANY); - dhcp_set_state(dhcp, DHCP_SELECTING); - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: making request\n")); - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_DISCOVER); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - - dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/); - dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK); - dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER); - dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST); - dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER); - - dhcp_option_trailer(dhcp); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: realloc()ing\n")); - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: sendto(DISCOVER, IP_ADDR_BROADCAST, DHCP_SERVER_PORT)\n")); - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: deleting()ing\n")); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover: SELECTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_discover: could not allocate DHCP request\n")); - } - dhcp->tries++; -#if LWIP_DHCP_AUTOIP_COOP - if(dhcp->tries >= LWIP_DHCP_AUTOIP_COOP_TRIES && dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_OFF) { - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_ON; - autoip_start(netif); - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - - -/** - * Bind the interface to the offered IP address. - * - * @param netif network interface to bind to the offered address - */ -static void -dhcp_bind(struct netif *netif) -{ - u32_t timeout; - struct dhcp *dhcp; - struct ip_addr sn_mask, gw_addr; - LWIP_ERROR("dhcp_bind: netif != NULL", (netif != NULL), return;); - dhcp = netif->dhcp; - LWIP_ERROR("dhcp_bind: dhcp != NULL", (dhcp != NULL), return;); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - - /* temporary DHCP lease? */ - if (dhcp->offered_t1_renew != 0xffffffffUL) { - /* set renewal period timer */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t1 renewal timer %"U32_F" secs\n", dhcp->offered_t1_renew)); - timeout = (dhcp->offered_t1_renew + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; - if(timeout > 0xffff) { - timeout = 0xffff; - } - dhcp->t1_timeout = (u16_t)timeout; - if (dhcp->t1_timeout == 0) { - dhcp->t1_timeout = 1; - } - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t1_renew*1000)); - } - /* set renewal period timer */ - if (dhcp->offered_t2_rebind != 0xffffffffUL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t2 rebind timer %"U32_F" secs\n", dhcp->offered_t2_rebind)); - timeout = (dhcp->offered_t2_rebind + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; - if(timeout > 0xffff) { - timeout = 0xffff; - } - dhcp->t2_timeout = (u16_t)timeout; - if (dhcp->t2_timeout == 0) { - dhcp->t2_timeout = 1; - } - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t2_rebind*1000)); - } - /* copy offered network mask */ - ip_addr_set(&sn_mask, &dhcp->offered_sn_mask); - - /* subnet mask not given? */ - /* TODO: this is not a valid check. what if the network mask is 0? */ - if (sn_mask.addr == 0) { - /* choose a safe subnet mask given the network class */ - u8_t first_octet = ip4_addr1(&sn_mask); - if (first_octet <= 127) { - sn_mask.addr = htonl(0xff000000); - } else if (first_octet >= 192) { - sn_mask.addr = htonl(0xffffff00); - } else { - sn_mask.addr = htonl(0xffff0000); - } - } - - ip_addr_set(&gw_addr, &dhcp->offered_gw_addr); - /* gateway address not given? */ - if (gw_addr.addr == 0) { - /* copy network address */ - gw_addr.addr = (dhcp->offered_ip_addr.addr & sn_mask.addr); - /* use first host address on network as gateway */ - gw_addr.addr |= htonl(0x00000001); - } - -#if LWIP_DHCP_AUTOIP_COOP - if(dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_ON) { - autoip_stop(netif); - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF; - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): IP: 0x%08"X32_F"\n", dhcp->offered_ip_addr.addr)); - netif_set_ipaddr(netif, &dhcp->offered_ip_addr); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): SN: 0x%08"X32_F"\n", sn_mask.addr)); - netif_set_netmask(netif, &sn_mask); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): GW: 0x%08"X32_F"\n", gw_addr.addr)); - netif_set_gw(netif, &gw_addr); - /* bring the interface up */ - netif_set_up(netif); - /* netif is now bound to DHCP leased address */ - dhcp_set_state(dhcp, DHCP_BOUND); -} - -/** - * Renew an existing DHCP lease at the involved DHCP server. - * - * @param netif network interface which must renew its lease - */ -err_t -dhcp_renew(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; -#if LWIP_NETIF_HOSTNAME - const char *p; -#endif /* LWIP_NETIF_HOSTNAME */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_renew()\n")); - dhcp_set_state(dhcp, DHCP_RENEWING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_REQUEST); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - -#if LWIP_NETIF_HOSTNAME - p = (const char*)netif->hostname; - if (p != NULL) { - dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, strlen(p)); - while (*p) { - dhcp_option_byte(dhcp, *p++); - } - } -#endif /* LWIP_NETIF_HOSTNAME */ - -#if 0 - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); -#endif - -#if 0 - dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4); - dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr)); -#endif - /* append DHCP message trailer */ - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - udp_sendto_if(dhcp->pcb, dhcp->p_out, &dhcp->server_ip_addr, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew: RENEWING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_renew: could not allocate DHCP request\n")); - } - dhcp->tries++; - /* back-off on retries, but to a maximum of 20 seconds */ - msecs = dhcp->tries < 10 ? dhcp->tries * 2000 : 20 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - -/** - * Rebind with a DHCP server for an existing DHCP lease. - * - * @param netif network interface which must rebind with a DHCP server - */ -static err_t -dhcp_rebind(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; -#if LWIP_NETIF_HOSTNAME - const char *p; -#endif /* LWIP_NETIF_HOSTNAME */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind()\n")); - dhcp_set_state(dhcp, DHCP_REBINDING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_REQUEST); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - -#if LWIP_NETIF_HOSTNAME - p = (const char*)netif->hostname; - if (p != NULL) { - dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, strlen(p)); - while (*p) { - dhcp_option_byte(dhcp, *p++); - } - } -#endif /* LWIP_NETIF_HOSTNAME */ - -#if 0 - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); - - dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4); - dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr)); -#endif - - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* broadcast to server */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind: REBINDING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_rebind: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - -/** - * Enter REBOOTING state to verify an existing lease - * - * @param netif network interface which must reboot - */ -static err_t -dhcp_reboot(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot()\n")); - dhcp_set_state(dhcp, DHCP_REBOOTING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_REQUEST); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, 576); - - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); - - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* broadcast to server */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot: REBOOTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_reboot: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - - -/** - * Release a DHCP lease. - * - * @param netif network interface which must release its lease - */ -err_t -dhcp_release(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_release()\n")); - - /* idle DHCP client */ - dhcp_set_state(dhcp, DHCP_OFF); - /* clean old DHCP offer */ - dhcp->server_ip_addr.addr = 0; - dhcp->offered_ip_addr.addr = dhcp->offered_sn_mask.addr = 0; - dhcp->offered_gw_addr.addr = dhcp->offered_bc_addr.addr = 0; - dhcp->offered_t0_lease = dhcp->offered_t1_renew = dhcp->offered_t2_rebind = 0; - dhcp->dns_count = 0; - - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_RELEASE); - - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - udp_sendto_if(dhcp->pcb, dhcp->p_out, &dhcp->server_ip_addr, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release: RELEASED, DHCP_OFF\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_release: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release(): set request timeout %"U16_F" msecs\n", msecs)); - /* bring the interface down */ - netif_set_down(netif); - /* remove IP address from interface */ - netif_set_ipaddr(netif, IP_ADDR_ANY); - netif_set_gw(netif, IP_ADDR_ANY); - netif_set_netmask(netif, IP_ADDR_ANY); - - /* TODO: netif_down(netif); */ - return result; -} - -/** - * Remove the DHCP client from the interface. - * - * @param netif The network interface to stop DHCP on - */ -void -dhcp_stop(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_ERROR("dhcp_stop: netif != NULL", (netif != NULL), return;); - /* Remove the flag that says this netif is handled by DHCP. */ - netif->flags &= ~NETIF_FLAG_DHCP; - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_stop()\n")); - /* netif is DHCP configured? */ - if (dhcp != NULL) { -#if LWIP_DHCP_AUTOIP_COOP - if(dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_ON) { - autoip_stop(netif); - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF; - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - - if (dhcp->pcb != NULL) { - udp_remove(dhcp->pcb); - dhcp->pcb = NULL; - } - LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL && - dhcp->options_in == NULL && dhcp->options_in_len == 0); - mem_free((void *)dhcp); - netif->dhcp = NULL; - } -} - -/* - * Set the DHCP state of a DHCP client. - * - * If the state changed, reset the number of tries. - * - * TODO: we might also want to reset the timeout here? - */ -static void -dhcp_set_state(struct dhcp *dhcp, u8_t new_state) -{ - if (new_state != dhcp->state) { - dhcp->state = new_state; - dhcp->tries = 0; - } -} - -/* - * Concatenate an option type and length field to the outgoing - * DHCP message. - * - */ -static void -dhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len) -{ - LWIP_ASSERT("dhcp_option: dhcp->options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = option_type; - dhcp->msg_out->options[dhcp->options_out_len++] = option_len; -} -/* - * Concatenate a single byte to the outgoing DHCP message. - * - */ -static void -dhcp_option_byte(struct dhcp *dhcp, u8_t value) -{ - LWIP_ASSERT("dhcp_option_byte: dhcp->options_out_len < DHCP_OPTIONS_LEN", dhcp->options_out_len < DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = value; -} - -static void -dhcp_option_short(struct dhcp *dhcp, u16_t value) -{ - LWIP_ASSERT("dhcp_option_short: dhcp->options_out_len + 2 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U <= DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff00U) >> 8); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t) (value & 0x00ffU); -} - -static void -dhcp_option_long(struct dhcp *dhcp, u32_t value) -{ - LWIP_ASSERT("dhcp_option_long: dhcp->options_out_len + 4 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 4U <= DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x00ff0000UL) >> 16); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x0000ff00UL) >> 8); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x000000ffUL)); -} - -/** - * Extract the DHCP message and the DHCP options. - * - * Extract the DHCP message and the DHCP options, each into a contiguous - * piece of memory. As a DHCP message is variable sized by its options, - * and also allows overriding some fields for options, the easy approach - * is to first unfold the options into a conitguous piece of memory, and - * use that further on. - * - */ -static err_t -dhcp_unfold_reply(struct dhcp *dhcp, struct pbuf *p) -{ - u16_t ret; - LWIP_ERROR("dhcp != NULL", (dhcp != NULL), return ERR_ARG;); - /* free any left-overs from previous unfolds */ - dhcp_free_reply(dhcp); - /* options present? */ - if (p->tot_len > (sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN)) { - dhcp->options_in_len = p->tot_len - (sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN); - dhcp->options_in = mem_malloc(dhcp->options_in_len); - if (dhcp->options_in == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_unfold_reply(): could not allocate dhcp->options\n")); - dhcp->options_in_len = 0; - return ERR_MEM; - } - } - dhcp->msg_in = mem_malloc(sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN); - if (dhcp->msg_in == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_unfold_reply(): could not allocate dhcp->msg_in\n")); - if (dhcp->options_in != NULL) { - mem_free(dhcp->options_in); - dhcp->options_in = NULL; - dhcp->options_in_len = 0; - } - return ERR_MEM; - } - - /** copy the DHCP message without options */ - ret = pbuf_copy_partial(p, dhcp->msg_in, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN, 0); - LWIP_ASSERT("ret == sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN", ret == sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_unfold_reply(): copied %"U16_F" bytes into dhcp->msg_in[]\n", - sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN)); - - if (dhcp->options_in != NULL) { - /** copy the DHCP options */ - ret = pbuf_copy_partial(p, dhcp->options_in, dhcp->options_in_len, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN); - LWIP_ASSERT("ret == dhcp->options_in_len", ret == dhcp->options_in_len); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_unfold_reply(): copied %"U16_F" bytes to dhcp->options_in[]\n", - dhcp->options_in_len)); - } - LWIP_UNUSED_ARG(ret); - return ERR_OK; -} - -/** - * Free the incoming DHCP message including contiguous copy of - * its DHCP options. - */ -static void dhcp_free_reply(struct dhcp *dhcp) -{ - if (dhcp->msg_in != NULL) { - mem_free((void *)dhcp->msg_in); - dhcp->msg_in = NULL; - } - if (dhcp->options_in) { - mem_free(dhcp->options_in); - dhcp->options_in = NULL; - dhcp->options_in_len = 0; - } - LWIP_DEBUGF(DHCP_DEBUG, ("dhcp_free_reply(): free'd\n")); -} - -/** - * If an incoming DHCP message is in response to us, then trigger the state machine - */ -static void dhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port) -{ - struct netif *netif = (struct netif *)arg; - struct dhcp *dhcp = netif->dhcp; - struct dhcp_msg *reply_msg = (struct dhcp_msg *)p->payload; - u8_t *options_ptr; - u8_t msg_type; - u8_t i; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_recv(pbuf = %p) from DHCP server %"U16_F".%"U16_F".%"U16_F".%"U16_F" port %"U16_F"\n", (void*)p, - (u16_t)(ntohl(addr->addr) >> 24 & 0xff), (u16_t)(ntohl(addr->addr) >> 16 & 0xff), - (u16_t)(ntohl(addr->addr) >> 8 & 0xff), (u16_t)(ntohl(addr->addr) & 0xff), port)); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("pbuf->len = %"U16_F"\n", p->len)); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("pbuf->tot_len = %"U16_F"\n", p->tot_len)); - /* prevent warnings about unused arguments */ - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(addr); - LWIP_UNUSED_ARG(port); - - LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL && - dhcp->options_in == NULL && dhcp->options_in_len == 0); - - if (p->len < DHCP_MIN_REPLY_LEN) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP reply message too short\n")); - goto free_pbuf_and_return; - } - - if (reply_msg->op != DHCP_BOOTREPLY) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("not a DHCP reply message, but type %"U16_F"\n", (u16_t)reply_msg->op)); - goto free_pbuf_and_return; - } - /* iterate through hardware address and match against DHCP message */ - for (i = 0; i < netif->hwaddr_len; i++) { - if (netif->hwaddr[i] != reply_msg->chaddr[i]) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("netif->hwaddr[%"U16_F"]==%02"X16_F" != reply_msg->chaddr[%"U16_F"]==%02"X16_F"\n", - (u16_t)i, (u16_t)netif->hwaddr[i], (u16_t)i, (u16_t)reply_msg->chaddr[i])); - goto free_pbuf_and_return; - } - } - /* match transaction ID against what we expected */ - if (ntohl(reply_msg->xid) != dhcp->xid) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("transaction id mismatch reply_msg->xid(%"X32_F")!=dhcp->xid(%"X32_F")\n",ntohl(reply_msg->xid),dhcp->xid)); - goto free_pbuf_and_return; - } - /* option fields could be unfold? */ - if (dhcp_unfold_reply(dhcp, p) != ERR_OK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("problem unfolding DHCP message - too short on memory?\n")); - goto free_pbuf_and_return; - } - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("searching DHCP_OPTION_MESSAGE_TYPE\n")); - /* obtain pointer to DHCP message type */ - options_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_MESSAGE_TYPE); - if (options_ptr == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP_OPTION_MESSAGE_TYPE option not found\n")); - goto free_pbuf_and_return; - } - - /* read DHCP message type */ - msg_type = dhcp_get_option_byte(options_ptr + 2); - /* message type is DHCP ACK? */ - if (msg_type == DHCP_ACK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_ACK received\n")); - /* in requesting state? */ - if (dhcp->state == DHCP_REQUESTING) { - dhcp_handle_ack(netif); - dhcp->request_timeout = 0; -#if DHCP_DOES_ARP_CHECK - /* check if the acknowledged lease address is already in use */ - dhcp_check(netif); -#else - /* bind interface to the acknowledged lease address */ - dhcp_bind(netif); -#endif - } - /* already bound to the given lease address? */ - else if ((dhcp->state == DHCP_REBOOTING) || (dhcp->state == DHCP_REBINDING) || (dhcp->state == DHCP_RENEWING)) { - dhcp->request_timeout = 0; - dhcp_bind(netif); - } - } - /* received a DHCP_NAK in appropriate state? */ - else if ((msg_type == DHCP_NAK) && - ((dhcp->state == DHCP_REBOOTING) || (dhcp->state == DHCP_REQUESTING) || - (dhcp->state == DHCP_REBINDING) || (dhcp->state == DHCP_RENEWING ))) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_NAK received\n")); - dhcp->request_timeout = 0; - dhcp_handle_nak(netif); - } - /* received a DHCP_OFFER in DHCP_SELECTING state? */ - else if ((msg_type == DHCP_OFFER) && (dhcp->state == DHCP_SELECTING)) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_OFFER received in DHCP_SELECTING state\n")); - dhcp->request_timeout = 0; - /* remember offered lease */ - dhcp_handle_offer(netif); - } -free_pbuf_and_return: - dhcp_free_reply(dhcp); - pbuf_free(p); -} - -/** - * Create a DHCP request, fill in common headers - * - * @param netif the netif under DHCP control - */ -static err_t -dhcp_create_request(struct netif *netif) -{ - struct dhcp *dhcp; - u16_t i; -#ifndef DHCP_GLOBAL_XID - /** default global transaction identifier starting value (easy to match - * with a packet analyser). We simply increment for each new request. - * Predefine DHCP_GLOBAL_XID to a better value or a function call to generate one - * at runtime, any supporting function prototypes can be defined in DHCP_GLOBAL_XID_HEADER */ - static u32_t xid = 0xABCD0000; -#else - static u32_t xid; - static u8_t xid_initialised = 0; - if (!xid_initialised) { - xid = DHCP_GLOBAL_XID; - xid_initialised = !xid_initialised; - } -#endif - LWIP_ERROR("dhcp_create_request: netif != NULL", (netif != NULL), return ERR_ARG;); - dhcp = netif->dhcp; - LWIP_ERROR("dhcp_create_request: dhcp != NULL", (dhcp != NULL), return ERR_VAL;); - LWIP_ASSERT("dhcp_create_request: dhcp->p_out == NULL", dhcp->p_out == NULL); - LWIP_ASSERT("dhcp_create_request: dhcp->msg_out == NULL", dhcp->msg_out == NULL); - dhcp->p_out = pbuf_alloc(PBUF_TRANSPORT, sizeof(struct dhcp_msg), PBUF_RAM); - if (dhcp->p_out == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_create_request(): could not allocate pbuf\n")); - return ERR_MEM; - } - LWIP_ASSERT("dhcp_create_request: check that first pbuf can hold struct dhcp_msg", - (dhcp->p_out->len >= sizeof(struct dhcp_msg))); - - /* reuse transaction identifier in retransmissions */ - if (dhcp->tries==0) - xid++; - dhcp->xid = xid; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, - ("transaction id xid(%"X32_F")\n", xid)); - - dhcp->msg_out = (struct dhcp_msg *)dhcp->p_out->payload; - - dhcp->msg_out->op = DHCP_BOOTREQUEST; - /* TODO: make link layer independent */ - dhcp->msg_out->htype = DHCP_HTYPE_ETH; - /* TODO: make link layer independent */ - dhcp->msg_out->hlen = DHCP_HLEN_ETH; - dhcp->msg_out->hops = 0; - dhcp->msg_out->xid = htonl(dhcp->xid); - dhcp->msg_out->secs = 0; - dhcp->msg_out->flags = 0; - dhcp->msg_out->ciaddr.addr = 0; - if (dhcp->state==DHCP_BOUND || dhcp->state==DHCP_RENEWING || dhcp->state==DHCP_REBINDING) { - dhcp->msg_out->ciaddr.addr = netif->ip_addr.addr; - } - dhcp->msg_out->yiaddr.addr = 0; - dhcp->msg_out->siaddr.addr = 0; - dhcp->msg_out->giaddr.addr = 0; - for (i = 0; i < DHCP_CHADDR_LEN; i++) { - /* copy netif hardware address, pad with zeroes */ - dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/; - } - for (i = 0; i < DHCP_SNAME_LEN; i++) { - dhcp->msg_out->sname[i] = 0; - } - for (i = 0; i < DHCP_FILE_LEN; i++) { - dhcp->msg_out->file[i] = 0; - } - dhcp->msg_out->cookie = htonl(0x63825363UL); - dhcp->options_out_len = 0; - /* fill options field with an incrementing array (for debugging purposes) */ - for (i = 0; i < DHCP_OPTIONS_LEN; i++) { - dhcp->msg_out->options[i] = (u8_t)i; /* for debugging only, no matter if truncated */ - } - return ERR_OK; -} - -/** - * Free previously allocated memory used to send a DHCP request. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_delete_request(struct netif *netif) -{ - struct dhcp *dhcp; - LWIP_ERROR("dhcp_delete_request: netif != NULL", (netif != NULL), return;); - dhcp = netif->dhcp; - LWIP_ERROR("dhcp_delete_request: dhcp != NULL", (dhcp != NULL), return;); - LWIP_ASSERT("dhcp_delete_request: dhcp->p_out != NULL", dhcp->p_out != NULL); - LWIP_ASSERT("dhcp_delete_request: dhcp->msg_out != NULL", dhcp->msg_out != NULL); - if (dhcp->p_out != NULL) { - pbuf_free(dhcp->p_out); - } - dhcp->p_out = NULL; - dhcp->msg_out = NULL; -} - -/** - * Add a DHCP message trailer - * - * Adds the END option to the DHCP message, and if - * necessary, up to three padding bytes. - * - * @param dhcp DHCP state structure - */ -static void -dhcp_option_trailer(struct dhcp *dhcp) -{ - LWIP_ERROR("dhcp_option_trailer: dhcp != NULL", (dhcp != NULL), return;); - LWIP_ASSERT("dhcp_option_trailer: dhcp->msg_out != NULL\n", dhcp->msg_out != NULL); - LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = DHCP_OPTION_END; - /* packet is too small, or not 4 byte aligned? */ - while ((dhcp->options_out_len < DHCP_MIN_OPTIONS_LEN) || (dhcp->options_out_len & 3)) { - /* LWIP_DEBUGF(DHCP_DEBUG,("dhcp_option_trailer:dhcp->options_out_len=%"U16_F", DHCP_OPTIONS_LEN=%"U16_F, dhcp->options_out_len, DHCP_OPTIONS_LEN)); */ - LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN); - /* add a fill/padding byte */ - dhcp->msg_out->options[dhcp->options_out_len++] = 0; - } -} - -/** - * Find the offset of a DHCP option inside the DHCP message. - * - * @param dhcp DHCP client - * @param option_type - * - * @return a byte offset into the UDP message where the option was found, or - * zero if the given option was not found. - */ -static u8_t *dhcp_get_option_ptr(struct dhcp *dhcp, u8_t option_type) -{ - u8_t overload = DHCP_OVERLOAD_NONE; - - /* options available? */ - if ((dhcp->options_in != NULL) && (dhcp->options_in_len > 0)) { - /* start with options field */ - u8_t *options = (u8_t *)dhcp->options_in; - u16_t offset = 0; - /* at least 1 byte to read and no end marker, then at least 3 bytes to read? */ - while ((offset < dhcp->options_in_len) && (options[offset] != DHCP_OPTION_END)) { - /* LWIP_DEBUGF(DHCP_DEBUG, ("msg_offset=%"U16_F", q->len=%"U16_F, msg_offset, q->len)); */ - /* are the sname and/or file field overloaded with options? */ - if (options[offset] == DHCP_OPTION_OVERLOAD) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded message detected\n")); - /* skip option type and length */ - offset += 2; - overload = options[offset++]; - } - /* requested option found */ - else if (options[offset] == option_type) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("option found at offset %"U16_F" in options\n", offset)); - return &options[offset]; - /* skip option */ - } else { - LWIP_DEBUGF(DHCP_DEBUG, ("skipping option %"U16_F" in options\n", options[offset])); - /* skip option type */ - offset++; - /* skip option length, and then length bytes */ - offset += 1 + options[offset]; - } - } - /* is this an overloaded message? */ - if (overload != DHCP_OVERLOAD_NONE) { - u16_t field_len; - if (overload == DHCP_OVERLOAD_FILE) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded file field\n")); - options = (u8_t *)&dhcp->msg_in->file; - field_len = DHCP_FILE_LEN; - } else if (overload == DHCP_OVERLOAD_SNAME) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname field\n")); - options = (u8_t *)&dhcp->msg_in->sname; - field_len = DHCP_SNAME_LEN; - /* TODO: check if else if () is necessary */ - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname and file field\n")); - options = (u8_t *)&dhcp->msg_in->sname; - field_len = DHCP_FILE_LEN + DHCP_SNAME_LEN; - } - offset = 0; - - /* at least 1 byte to read and no end marker */ - while ((offset < field_len) && (options[offset] != DHCP_OPTION_END)) { - if (options[offset] == option_type) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("option found at offset=%"U16_F"\n", offset)); - return &options[offset]; - /* skip option */ - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("skipping option %"U16_F"\n", options[offset])); - /* skip option type */ - offset++; - offset += 1 + options[offset]; - } - } - } - } - return NULL; -} - -/** - * Return the byte of DHCP option data. - * - * @param client DHCP client. - * @param ptr pointer obtained by dhcp_get_option_ptr(). - * - * @return byte value at the given address. - */ -static u8_t -dhcp_get_option_byte(u8_t *ptr) -{ - LWIP_DEBUGF(DHCP_DEBUG, ("option byte value=%"U16_F"\n", (u16_t)(*ptr))); - return *ptr; -} - -#if 0 /* currently unused */ -/** - * Return the 16-bit value of DHCP option data. - * - * @param client DHCP client. - * @param ptr pointer obtained by dhcp_get_option_ptr(). - * - * @return byte value at the given address. - */ -static u16_t -dhcp_get_option_short(u8_t *ptr) -{ - u16_t value; - value = *ptr++ << 8; - value |= *ptr; - LWIP_DEBUGF(DHCP_DEBUG, ("option short value=%"U16_F"\n", value)); - return value; -} -#endif - -/** - * Return the 32-bit value of DHCP option data. - * - * @param client DHCP client. - * @param ptr pointer obtained by dhcp_get_option_ptr(). - * - * @return byte value at the given address. - */ -static u32_t dhcp_get_option_long(u8_t *ptr) -{ - u32_t value; - value = (u32_t)(*ptr++) << 24; - value |= (u32_t)(*ptr++) << 16; - value |= (u32_t)(*ptr++) << 8; - value |= (u32_t)(*ptr++); - LWIP_DEBUGF(DHCP_DEBUG, ("option long value=%"U32_F"\n", value)); - return value; -} - -#endif /* LWIP_DHCP */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dns.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dns.c deleted file mode 100644 index 62ccf63..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dns.c +++ /dev/null @@ -1,982 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * DNS - host name to IP address resolver. - * - */ - -/** - - * This file implements a DNS host name to IP address resolver. - - * Port to lwIP from uIP - * by Jim Pettinato April 2007 - - * uIP version Copyright (c) 2002-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * 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. - * - * - * DNS.C - * - * The lwIP DNS resolver functions are used to lookup a host name and - * map it to a numerical IP address. It maintains a list of resolved - * hostnames that can be queried with the dns_lookup() function. - * New hostnames can be resolved using the dns_query() function. - * - * The lwIP version of the resolver also adds a non-blocking version of - * gethostbyname() that will work with a raw API application. This function - * checks for an IP address string first and converts it if it is valid. - * gethostbyname() then does a dns_lookup() to see if the name is - * already in the table. If so, the IP is returned. If not, a query is - * issued and the function returns with a ERR_INPROGRESS status. The app - * using the dns client must then go into a waiting state. - * - * Once a hostname has been resolved (or found to be non-existent), - * the resolver code calls a specified callback function (which - * must be implemented by the module that uses the resolver). - */ - -/*----------------------------------------------------------------------------- - * RFC 1035 - Domain names - implementation and specification - * RFC 2181 - Clarifications to the DNS Specification - *----------------------------------------------------------------------------*/ - -/** @todo: define good default values (rfc compliance) */ -/** @todo: improve answer parsing, more checkings... */ -/** @todo: check RFC1035 - 7.3. Processing responses */ - -/*----------------------------------------------------------------------------- - * Includes - *----------------------------------------------------------------------------*/ - -#include "lwip/opt.h" - -#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/udp.h" -#include "lwip/mem.h" -#include "lwip/dns.h" - -#include - -/** DNS server IP address */ -#ifndef DNS_SERVER_ADDRESS -#define DNS_SERVER_ADDRESS inet_addr("208.67.222.222") /* resolver1.opendns.com */ -#endif - -/** DNS server port address */ -#ifndef DNS_SERVER_PORT -#define DNS_SERVER_PORT 53 -#endif - -/** DNS maximum number of retries when asking for a name, before "timeout". */ -#ifndef DNS_MAX_RETRIES -#define DNS_MAX_RETRIES 4 -#endif - -/** DNS resource record max. TTL (one week as default) */ -#ifndef DNS_MAX_TTL -#define DNS_MAX_TTL 604800 -#endif - -/* DNS protocol flags */ -#define DNS_FLAG1_RESPONSE 0x80 -#define DNS_FLAG1_OPCODE_STATUS 0x10 -#define DNS_FLAG1_OPCODE_INVERSE 0x08 -#define DNS_FLAG1_OPCODE_STANDARD 0x00 -#define DNS_FLAG1_AUTHORATIVE 0x04 -#define DNS_FLAG1_TRUNC 0x02 -#define DNS_FLAG1_RD 0x01 -#define DNS_FLAG2_RA 0x80 -#define DNS_FLAG2_ERR_MASK 0x0f -#define DNS_FLAG2_ERR_NONE 0x00 -#define DNS_FLAG2_ERR_NAME 0x03 - -/* DNS protocol states */ -#define DNS_STATE_UNUSED 0 -#define DNS_STATE_NEW 1 -#define DNS_STATE_ASKING 2 -#define DNS_STATE_DONE 3 - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** DNS message header */ -struct dns_hdr { - PACK_STRUCT_FIELD(u16_t id); - PACK_STRUCT_FIELD(u8_t flags1); - PACK_STRUCT_FIELD(u8_t flags2); - PACK_STRUCT_FIELD(u16_t numquestions); - PACK_STRUCT_FIELD(u16_t numanswers); - PACK_STRUCT_FIELD(u16_t numauthrr); - PACK_STRUCT_FIELD(u16_t numextrarr); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif -#define SIZEOF_DNS_HDR 12 - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** DNS query message structure */ -struct dns_query { - /* DNS query record starts with either a domain name or a pointer - to a name already present somewhere in the packet. */ - PACK_STRUCT_FIELD(u16_t type); - PACK_STRUCT_FIELD(u16_t class); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif -#define SIZEOF_DNS_QUERY 4 - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** DNS answer message structure */ -struct dns_answer { - /* DNS answer record starts with either a domain name or a pointer - to a name already present somewhere in the packet. */ - PACK_STRUCT_FIELD(u16_t type); - PACK_STRUCT_FIELD(u16_t class); - PACK_STRUCT_FIELD(u32_t ttl); - PACK_STRUCT_FIELD(u16_t len); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif -#define SIZEOF_DNS_ANSWER 10 - -/** DNS table entry */ -struct dns_table_entry { - u8_t state; - u8_t numdns; - u8_t tmr; - u8_t retries; - u8_t seqno; - u8_t err; - u32_t ttl; - char name[DNS_MAX_NAME_LENGTH]; - struct ip_addr ipaddr; - /* pointer to callback on DNS query done */ - dns_found_callback found; - void *arg; -}; - -#if DNS_LOCAL_HOSTLIST -/** struct used for local host-list */ -struct local_hostlist_entry { - /** static hostname */ - const char *name; - /** static host address in network byteorder */ - u32_t addr; - struct local_hostlist_entry *next; -}; - -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC -/** Local host-list. For hostnames in this list, no - * external name resolution is performed */ -static struct local_hostlist_entry *local_hostlist_dynamic; -#else /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -/** Defining this allows the local_hostlist_static to be placed in a different - * linker section (e.g. FLASH) */ -#ifndef DNS_LOCAL_HOSTLIST_STORAGE_PRE -#define DNS_LOCAL_HOSTLIST_STORAGE_PRE static -#endif /* DNS_LOCAL_HOSTLIST_STORAGE_PRE */ -/** Defining this allows the local_hostlist_static to be placed in a different - * linker section (e.g. FLASH) */ -#ifndef DNS_LOCAL_HOSTLIST_STORAGE_POST -#define DNS_LOCAL_HOSTLIST_STORAGE_POST -#endif /* DNS_LOCAL_HOSTLIST_STORAGE_POST */ -DNS_LOCAL_HOSTLIST_STORAGE_PRE struct local_hostlist_entry local_hostlist_static[] - DNS_LOCAL_HOSTLIST_STORAGE_POST = DNS_LOCAL_HOSTLIST_INIT; - -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -static void dns_init_local(); -#endif /* DNS_LOCAL_HOSTLIST */ - - -/* forward declarations */ -static void dns_recv(void *s, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port); -static void dns_check_entries(void); - -/*----------------------------------------------------------------------------- - * Globales - *----------------------------------------------------------------------------*/ - -/* DNS variables */ -static struct udp_pcb *dns_pcb; -static u8_t dns_seqno; -static struct dns_table_entry dns_table[DNS_TABLE_SIZE]; -static struct ip_addr dns_servers[DNS_MAX_SERVERS]; - -#if (DNS_USES_STATIC_BUF == 1) -static u8_t dns_payload[DNS_MSG_SIZE]; -#endif /* (DNS_USES_STATIC_BUF == 1) */ - -/** - * Initialize the resolver: set up the UDP pcb and configure the default server - * (DNS_SERVER_ADDRESS). - */ -void -dns_init() -{ - struct ip_addr dnsserver; - - /* initialize default DNS server address */ - dnsserver.addr = DNS_SERVER_ADDRESS; - - LWIP_DEBUGF(DNS_DEBUG, ("dns_init: initializing\n")); - - /* if dns client not yet initialized... */ - if (dns_pcb == NULL) { - dns_pcb = udp_new(); - - if (dns_pcb != NULL) { - /* initialize DNS table not needed (initialized to zero since it is a - * global variable) */ - LWIP_ASSERT("For implicit initialization to work, DNS_STATE_UNUSED needs to be 0", - DNS_STATE_UNUSED == 0); - - /* initialize DNS client */ - udp_bind(dns_pcb, IP_ADDR_ANY, 0); - udp_recv(dns_pcb, dns_recv, NULL); - - /* initialize default DNS primary server */ - dns_setserver(0, &dnsserver); - } - } -#if DNS_LOCAL_HOSTLIST - dns_init_local(); -#endif -} - -/** - * Initialize one of the DNS servers. - * - * @param numdns the index of the DNS server to set must be < DNS_MAX_SERVERS - * @param dnsserver IP address of the DNS server to set - */ -void -dns_setserver(u8_t numdns, struct ip_addr *dnsserver) -{ - if ((numdns < DNS_MAX_SERVERS) && (dns_pcb != NULL) && - (dnsserver != NULL) && (dnsserver->addr !=0 )) { - dns_servers[numdns] = (*dnsserver); - } -} - -/** - * Obtain one of the currently configured DNS server. - * - * @param numdns the index of the DNS server - * @return IP address of the indexed DNS server or "ip_addr_any" if the DNS - * server has not been configured. - */ -struct ip_addr -dns_getserver(u8_t numdns) -{ - if (numdns < DNS_MAX_SERVERS) { - return dns_servers[numdns]; - } else { - return *IP_ADDR_ANY; - } -} - -/** - * The DNS resolver client timer - handle retries and timeouts and should - * be called every DNS_TMR_INTERVAL milliseconds (every second by default). - */ -void -dns_tmr(void) -{ - if (dns_pcb != NULL) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_tmr: dns_check_entries\n")); - dns_check_entries(); - } -} - -#if DNS_LOCAL_HOSTLIST -static void -dns_init_local() -{ -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC && defined(DNS_LOCAL_HOSTLIST_INIT) - int i; - struct local_hostlist_entry *entry; - /* Dynamic: copy entries from DNS_LOCAL_HOSTLIST_INIT to list */ - struct local_hostlist_entry local_hostlist_init[] = DNS_LOCAL_HOSTLIST_INIT; - for (i = 0; i < sizeof(local_hostlist_init) / sizeof(struct local_hostlist_entry); i++) { - entry = mem_malloc(sizeof(struct local_hostlist_entry)); - LWIP_ASSERT("mem-error in dns_init_local", entry != NULL); - if (entry != NULL) { - struct local_hostlist_entry *init_entry = &local_hostlist_init[i]; - entry->name = init_entry->name; - entry->addr = init_entry->addr; - entry->next = local_hostlist_dynamic; - local_hostlist_dynamic = entry; - } - } -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC && defined(DNS_LOCAL_HOSTLIST_INIT) */ -} - -/** - * Scans the local host-list for a hostname. - * - * @param hostname Hostname to look for in the local host-list - * @return The first IP address for the hostname in the local host-list or - * INADDR_NONE if not found. - */ -static u32_t -dns_lookup_local(const char *hostname) -{ -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC - struct local_hostlist_entry *entry = local_hostlist_dynamic; - while(entry != NULL) { - if(strcmp(entry->name, hostname) == 0) { - return entry->addr; - } - entry = entry->next; - } -#else /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - int i; - for (i = 0; i < sizeof(local_hostlist_static) / sizeof(struct local_hostlist_entry); i++) { - if(strcmp(local_hostlist_static[i].name, hostname) == 0) { - return local_hostlist_static[i].addr; - } - } -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - return INADDR_NONE; -} - -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC -/** Remove all entries from the local host-list for a specific hostname - * and/or IP addess - * - * @param hostname hostname for which entries shall be removed from the local - * host-list - * @param addr address for which entries shall be removed from the local host-list - * @return the number of removed entries - */ -int -dns_local_removehost(const char *hostname, const struct ip_addr *addr) -{ - int removed = 0; - struct local_hostlist_entry *entry = local_hostlist_dynamic; - struct local_hostlist_entry *last_entry = NULL; - while (entry != NULL) { - if (((hostname == NULL) || !strcmp(entry->name, hostname)) && - ((addr == NULL) || (entry->addr == addr->addr))) { - struct local_hostlist_entry *free_entry; - if (last_entry != NULL) { - last_entry->next = entry->next; - } else { - local_hostlist_dynamic = entry->next; - } - free_entry = entry; - entry = entry->next; - mem_free(free_entry); - removed++; - } else { - last_entry = entry; - entry = entry->next; - } - } - return removed; -} - -/** - * Add a hostname/IP address pair to the local host-list. - * Duplicates are not checked. - * - * @param hostname hostname of the new entry - * @param addr IP address of the new entry - * @return ERR_OK if succeeded or ERR_MEM on memory error - */ -err_t -dns_local_addhost(const char *hostname, const struct ip_addr *addr) -{ - struct local_hostlist_entry *entry; - entry = mem_malloc(sizeof(struct local_hostlist_entry)); - if (entry == NULL) { - return ERR_MEM; - } - entry->name = hostname; - entry->addr = addr->addr; - entry->next = local_hostlist_dynamic; - local_hostlist_dynamic = entry; - return ERR_OK; -} -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC*/ -#endif /* DNS_LOCAL_HOSTLIST */ - -/** - * Look up a hostname in the array of known hostnames. - * - * @note This function only looks in the internal array of known - * hostnames, it does not send out a query for the hostname if none - * was found. The function dns_enqueue() can be used to send a query - * for a hostname. - * - * @param name the hostname to look up - * @return the hostname's IP address, as u32_t (instead of struct ip_addr to - * better check for failure: != INADDR_NONE) or INADDR_NONE if the hostname - * was not found in the cached dns_table. - */ -static u32_t -dns_lookup(const char *name) -{ - u8_t i; -#if DNS_LOCAL_HOSTLIST || defined(DNS_LOOKUP_LOCAL_EXTERN) - u32_t addr; -#endif /* DNS_LOCAL_HOSTLIST || defined(DNS_LOOKUP_LOCAL_EXTERN) */ -#if DNS_LOCAL_HOSTLIST - if ((addr = dns_lookup_local(name)) != INADDR_NONE) { - return addr; - } -#endif /* DNS_LOCAL_HOSTLIST */ -#ifdef DNS_LOOKUP_LOCAL_EXTERN - if((addr = DNS_LOOKUP_LOCAL_EXTERN(name)) != INADDR_NONE) { - return addr; - } -#endif /* DNS_LOOKUP_LOCAL_EXTERN */ - - /* Walk through name list, return entry if found. If not, return NULL. */ - for (i = 0; i < DNS_TABLE_SIZE; ++i) { - if ((dns_table[i].state == DNS_STATE_DONE) && - (strcmp(name, dns_table[i].name) == 0)) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_lookup: \"%s\": found = ", name)); - ip_addr_debug_print(DNS_DEBUG, &(dns_table[i].ipaddr)); - LWIP_DEBUGF(DNS_DEBUG, ("\n")); - return dns_table[i].ipaddr.addr; - } - } - - return INADDR_NONE; -} - -#if DNS_DOES_NAME_CHECK -/** - * Compare the "dotted" name "query" with the encoded name "response" - * to make sure an answer from the DNS server matches the current dns_table - * entry (otherwise, answers might arrive late for hostname not on the list - * any more). - * - * @param query hostname (not encoded) from the dns_table - * @param response encoded hostname in the DNS response - * @return 0: names equal; 1: names differ - */ -static u8_t -dns_compare_name(unsigned char *query, unsigned char *response) -{ - unsigned char n; - - do { - n = *response++; - /** @see RFC 1035 - 4.1.4. Message compression */ - if ((n & 0xc0) == 0xc0) { - /* Compressed name */ - break; - } else { - /* Not compressed name */ - while (n > 0) { - if ((*query) != (*response)) { - return 1; - } - ++response; - ++query; - --n; - }; - ++query; - } - } while (*response != 0); - - return 0; -} -#endif /* DNS_DOES_NAME_CHECK */ - -/** - * Walk through a compact encoded DNS name and return the end of the name. - * - * @param query encoded DNS name in the DNS server response - * @return end of the name - */ -static unsigned char * -dns_parse_name(unsigned char *query) -{ - unsigned char n; - - do { - n = *query++; - /** @see RFC 1035 - 4.1.4. Message compression */ - if ((n & 0xc0) == 0xc0) { - /* Compressed name */ - break; - } else { - /* Not compressed name */ - while (n > 0) { - ++query; - --n; - }; - } - } while (*query != 0); - - return query + 1; -} - -/** - * Send a DNS query packet. - * - * @param numdns index of the DNS server in the dns_servers table - * @param name hostname to query - * @param id index of the hostname in dns_table, used as transaction ID in the - * DNS query packet - * @return ERR_OK if packet is sent; an err_t indicating the problem otherwise - */ -static err_t -dns_send(u8_t numdns, const char* name, u8_t id) -{ - err_t err; - struct dns_hdr *hdr; - struct dns_query qry; - struct pbuf *p; - char *query, *nptr; - const char *pHostname; - u8_t n; - - LWIP_DEBUGF(DNS_DEBUG, ("dns_send: dns_servers[%"U16_F"] \"%s\": request\n", - (u16_t)(numdns), name)); - LWIP_ASSERT("dns server out of array", numdns < DNS_MAX_SERVERS); - LWIP_ASSERT("dns server has no IP address set", dns_servers[numdns].addr != 0); - - /* if here, we have either a new query or a retry on a previous query to process */ - p = pbuf_alloc(PBUF_TRANSPORT, SIZEOF_DNS_HDR + DNS_MAX_NAME_LENGTH + - SIZEOF_DNS_QUERY, PBUF_RAM); - if (p != NULL) { - LWIP_ASSERT("pbuf must be in one piece", p->next == NULL); - /* fill dns header */ - hdr = (struct dns_hdr*)p->payload; - memset(hdr, 0, SIZEOF_DNS_HDR); - hdr->id = htons(id); - hdr->flags1 = DNS_FLAG1_RD; - hdr->numquestions = htons(1); - query = (char*)hdr + SIZEOF_DNS_HDR; - pHostname = name; - --pHostname; - - /* convert hostname into suitable query format. */ - do { - ++pHostname; - nptr = query; - ++query; - for(n = 0; *pHostname != '.' && *pHostname != 0; ++pHostname) { - *query = *pHostname; - ++query; - ++n; - } - *nptr = n; - } while(*pHostname != 0); - *query++='\0'; - - /* fill dns query */ - qry.type = htons(DNS_RRTYPE_A); - qry.class = htons(DNS_RRCLASS_IN); - MEMCPY( query, &qry, SIZEOF_DNS_QUERY); - - /* resize pbuf to the exact dns query */ - pbuf_realloc(p, (query + SIZEOF_DNS_QUERY) - ((char*)(p->payload))); - - /* connect to the server for faster receiving */ - udp_connect(dns_pcb, &dns_servers[numdns], DNS_SERVER_PORT); - /* send dns packet */ - err = udp_sendto(dns_pcb, p, &dns_servers[numdns], DNS_SERVER_PORT); - - /* free pbuf */ - pbuf_free(p); - } else { - err = ERR_MEM; - } - - return err; -} - -/** - * dns_check_entry() - see if pEntry has not yet been queried and, if so, sends out a query. - * Check an entry in the dns_table: - * - send out query for new entries - * - retry old pending entries on timeout (also with different servers) - * - remove completed entries from the table if their TTL has expired - * - * @param i index of the dns_table entry to check - */ -static void -dns_check_entry(u8_t i) -{ - struct dns_table_entry *pEntry = &dns_table[i]; - - LWIP_ASSERT("array index out of bounds", i < DNS_TABLE_SIZE); - - switch(pEntry->state) { - - case DNS_STATE_NEW: { - /* initialize new entry */ - pEntry->state = DNS_STATE_ASKING; - pEntry->numdns = 0; - pEntry->tmr = 1; - pEntry->retries = 0; - - /* send DNS packet for this entry */ - dns_send(pEntry->numdns, pEntry->name, i); - break; - } - - case DNS_STATE_ASKING: { - if (--pEntry->tmr == 0) { - if (++pEntry->retries == DNS_MAX_RETRIES) { - if ((pEntry->numdns+1numdns+1].addr!=0)) { - /* change of server */ - pEntry->numdns++; - pEntry->tmr = 1; - pEntry->retries = 0; - break; - } else { - LWIP_DEBUGF(DNS_DEBUG, ("dns_check_entry: \"%s\": timeout\n", pEntry->name)); - /* call specified callback function if provided */ - if (pEntry->found) - (*pEntry->found)(pEntry->name, NULL, pEntry->arg); - /* flush this entry */ - pEntry->state = DNS_STATE_UNUSED; - pEntry->found = NULL; - break; - } - } - - /* wait longer for the next retry */ - pEntry->tmr = pEntry->retries; - - /* send DNS packet for this entry */ - dns_send(pEntry->numdns, pEntry->name, i); - } - break; - } - - case DNS_STATE_DONE: { - /* if the time to live is nul */ - if (--pEntry->ttl == 0) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_check_entry: \"%s\": flush\n", pEntry->name)); - /* flush this entry */ - pEntry->state = DNS_STATE_UNUSED; - pEntry->found = NULL; - } - break; - } - case DNS_STATE_UNUSED: - /* nothing to do */ - break; - default: - LWIP_ASSERT("unknown dns_table entry state:", 0); - break; - } -} - -/** - * Call dns_check_entry for each entry in dns_table - check all entries. - */ -static void -dns_check_entries(void) -{ - u8_t i; - - for (i = 0; i < DNS_TABLE_SIZE; ++i) { - dns_check_entry(i); - } -} - -/** - * Receive input function for DNS response packets arriving for the dns UDP pcb. - * - * @params see udp.h - */ -static void -dns_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port) -{ - u8_t i; - char *pHostname; - struct dns_hdr *hdr; - struct dns_answer ans; - struct dns_table_entry *pEntry; - u8_t nquestions, nanswers; -#if (DNS_USES_STATIC_BUF == 0) - u8_t dns_payload[DNS_MSG_SIZE]; -#endif /* (DNS_USES_STATIC_BUF == 0) */ -#if (DNS_USES_STATIC_BUF == 2) - u8_t* dns_payload; -#endif /* (DNS_USES_STATIC_BUF == 2) */ - - LWIP_UNUSED_ARG(arg); - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(addr); - LWIP_UNUSED_ARG(port); - - /* is the dns message too big ? */ - if (p->tot_len > DNS_MSG_SIZE) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: pbuf too big\n")); - /* free pbuf and return */ - goto memerr1; - } - - /* is the dns message big enough ? */ - if (p->tot_len < (SIZEOF_DNS_HDR + SIZEOF_DNS_QUERY + SIZEOF_DNS_ANSWER)) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: pbuf too small\n")); - /* free pbuf and return */ - goto memerr1; - } - -#if (DNS_USES_STATIC_BUF == 2) - dns_payload = mem_malloc(p->tot_len); - if (dns_payload == NULL) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: mem_malloc error\n")); - /* free pbuf and return */ - goto memerr1; - } -#endif /* (DNS_USES_STATIC_BUF == 2) */ - - /* copy dns payload inside static buffer for processing */ - if (pbuf_copy_partial(p, dns_payload, p->tot_len, 0) == p->tot_len) { - /* The ID in the DNS header should be our entry into the name table. */ - hdr = (struct dns_hdr*)dns_payload; - i = htons(hdr->id); - if (i < DNS_TABLE_SIZE) { - pEntry = &dns_table[i]; - if(pEntry->state == DNS_STATE_ASKING) { - /* This entry is now completed. */ - pEntry->state = DNS_STATE_DONE; - pEntry->err = hdr->flags2 & DNS_FLAG2_ERR_MASK; - - /* We only care about the question(s) and the answers. The authrr - and the extrarr are simply discarded. */ - nquestions = htons(hdr->numquestions); - nanswers = htons(hdr->numanswers); - - /* Check for error. If so, call callback to inform. */ - if (((hdr->flags1 & DNS_FLAG1_RESPONSE) == 0) || (pEntry->err != 0) || (nquestions != 1)) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": error in flags\n", pEntry->name)); - /* call callback to indicate error, clean up memory and return */ - goto responseerr; - } - -#if DNS_DOES_NAME_CHECK - /* Check if the name in the "question" part match with the name in the entry. */ - if (dns_compare_name((unsigned char *)(pEntry->name), (unsigned char *)dns_payload + SIZEOF_DNS_HDR) != 0) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": response not match to query\n", pEntry->name)); - /* call callback to indicate error, clean up memory and return */ - goto responseerr; - } -#endif /* DNS_DOES_NAME_CHECK */ - - /* Skip the name in the "question" part */ - pHostname = (char *) dns_parse_name((unsigned char *)dns_payload + SIZEOF_DNS_HDR) + SIZEOF_DNS_QUERY; - - while(nanswers > 0) { - /* skip answer resource record's host name */ - pHostname = (char *) dns_parse_name((unsigned char *)pHostname); - - /* Check for IP address type and Internet class. Others are discarded. */ - MEMCPY(&ans, pHostname, SIZEOF_DNS_ANSWER); - if((ntohs(ans.type) == DNS_RRTYPE_A) && (ntohs(ans.class) == DNS_RRCLASS_IN) && (ntohs(ans.len) == sizeof(struct ip_addr)) ) { - /* read the answer resource record's TTL, and maximize it if needed */ - pEntry->ttl = ntohl(ans.ttl); - if (pEntry->ttl > DNS_MAX_TTL) { - pEntry->ttl = DNS_MAX_TTL; - } - /* read the IP address after answer resource record's header */ - MEMCPY( &(pEntry->ipaddr), (pHostname+SIZEOF_DNS_ANSWER), sizeof(struct ip_addr)); - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": response = ", pEntry->name)); - ip_addr_debug_print(DNS_DEBUG, (&(pEntry->ipaddr))); - LWIP_DEBUGF(DNS_DEBUG, ("\n")); - /* call specified callback function if provided */ - if (pEntry->found) { - (*pEntry->found)(pEntry->name, &pEntry->ipaddr, pEntry->arg); - } - /* deallocate memory and return */ - goto memerr2; - } else { - pHostname = pHostname + SIZEOF_DNS_ANSWER + htons(ans.len); - } - --nanswers; - } - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": error in response\n", pEntry->name)); - /* call callback to indicate error, clean up memory and return */ - goto responseerr; - } - } - } - - /* deallocate memory and return */ - goto memerr2; - -responseerr: - /* ERROR: call specified callback function with NULL as name to indicate an error */ - if (pEntry->found) { - (*pEntry->found)(pEntry->name, NULL, pEntry->arg); - } - /* flush this entry */ - pEntry->state = DNS_STATE_UNUSED; - pEntry->found = NULL; - -memerr2: -#if (DNS_USES_STATIC_BUF == 2) - /* free dns buffer */ - mem_free(dns_payload); -#endif /* (DNS_USES_STATIC_BUF == 2) */ - -memerr1: - /* free pbuf */ - pbuf_free(p); - return; -} - -/** - * Queues a new hostname to resolve and sends out a DNS query for that hostname - * - * @param name the hostname that is to be queried - * @param found a callback founction to be called on success, failure or timeout - * @param callback_arg argument to pass to the callback function - * @return @return a err_t return code. - */ -static err_t -dns_enqueue(const char *name, dns_found_callback found, void *callback_arg) -{ - u8_t i; - u8_t lseq, lseqi; - struct dns_table_entry *pEntry = NULL; - - /* search an unused entry, or the oldest one */ - lseq = lseqi = 0; - for (i = 0; i < DNS_TABLE_SIZE; ++i) { - pEntry = &dns_table[i]; - /* is it an unused entry ? */ - if (pEntry->state == DNS_STATE_UNUSED) - break; - - /* check if this is the oldest completed entry */ - if (pEntry->state == DNS_STATE_DONE) { - if ((dns_seqno - pEntry->seqno) > lseq) { - lseq = dns_seqno - pEntry->seqno; - lseqi = i; - } - } - } - - /* if we don't have found an unused entry, use the oldest completed one */ - if (i == DNS_TABLE_SIZE) { - if ((lseqi >= DNS_TABLE_SIZE) || (dns_table[lseqi].state != DNS_STATE_DONE)) { - /* no entry can't be used now, table is full */ - LWIP_DEBUGF(DNS_DEBUG, ("dns_enqueue: \"%s\": DNS entries table is full\n", name)); - return ERR_MEM; - } else { - /* use the oldest completed one */ - i = lseqi; - pEntry = &dns_table[i]; - } - } - - /* use this entry */ - LWIP_DEBUGF(DNS_DEBUG, ("dns_enqueue: \"%s\": use DNS entry %"U16_F"\n", name, (u16_t)(i))); - - /* fill the entry */ - pEntry->state = DNS_STATE_NEW; - pEntry->seqno = dns_seqno++; - pEntry->found = found; - pEntry->arg = callback_arg; - strcpy(pEntry->name, name); - - /* force to send query without waiting timer */ - dns_check_entry(i); - - /* dns query is enqueued */ - return ERR_INPROGRESS; -} - -/** - * Resolve a hostname (string) into an IP address. - * NON-BLOCKING callback version for use with raw API!!! - * - * Returns immediately with one of err_t return codes: - * - ERR_OK if hostname is a valid IP address string or the host - * name is already in the local names table. - * - ERR_INPROGRESS enqueue a request to be sent to the DNS server - * for resolution if no errors are present. - * - * @param hostname the hostname that is to be queried - * @param addr pointer to a struct ip_addr where to store the address if it is already - * cached in the dns_table (only valid if ERR_OK is returned!) - * @param found a callback function to be called on success, failure or timeout (only if - * ERR_INPROGRESS is returned!) - * @param callback_arg argument to pass to the callback function - * @return a err_t return code. - */ -err_t -dns_gethostbyname(const char *hostname, struct ip_addr *addr, dns_found_callback found, - void *callback_arg) -{ - /* not initialized or no valid server yet, or invalid addr pointer - * or invalid hostname or invalid hostname length */ - if ((dns_pcb == NULL) || (addr == NULL) || - (!hostname) || (!hostname[0]) || - (strlen(hostname) >= DNS_MAX_NAME_LENGTH)) { - return ERR_VAL; - } - -#if LWIP_HAVE_LOOPIF - if (strcmp(hostname,"localhost")==0) { - addr->addr = htonl(INADDR_LOOPBACK); - return ERR_OK; - } -#endif /* LWIP_HAVE_LOOPIF */ - - /* host name already in octet notation? set ip addr and return ERR_OK - * already have this address cached? */ - if (((addr->addr = inet_addr(hostname)) != INADDR_NONE) || - ((addr->addr = dns_lookup(hostname)) != INADDR_NONE)) { - return ERR_OK; - } - - /* queue query with specified callback */ - return dns_enqueue(hostname, found, callback_arg); -} - -#endif /* LWIP_DNS */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/init.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/init.c deleted file mode 100644 index b799527..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/init.c +++ /dev/null @@ -1,276 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Modules initialization - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/init.h" -#include "lwip/stats.h" -#include "lwip/sys.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/sockets.h" -#include "lwip/ip.h" -#include "lwip/raw.h" -#include "lwip/udp.h" -#include "lwip/tcp.h" -#include "lwip/snmp_msg.h" -#include "lwip/autoip.h" -#include "lwip/igmp.h" -#include "lwip/dns.h" -#include "netif/etharp.h" - -/* Compile-time sanity checks for configuration errors. - * These can be done independently of LWIP_DEBUG, without penalty. - */ -#ifndef BYTE_ORDER - #error "BYTE_ORDER is not defined, you have to define it in your cc.h" -#endif -#if (!IP_SOF_BROADCAST && IP_SOF_BROADCAST_RECV) - #error "If you want to use broadcast filter per pcb on recv operations, you have to define IP_SOF_BROADCAST=1 in your lwipopts.h" -#endif -#if (!LWIP_ARP && ARP_QUEUEING) - #error "If you want to use ARP Queueing, you have to define LWIP_ARP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_UDPLITE) - #error "If you want to use UDP Lite, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_SNMP) - #error "If you want to use SNMP, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_DHCP) - #error "If you want to use DHCP, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_IGMP) - #error "If you want to use IGMP, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_DNS) - #error "If you want to use DNS, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (LWIP_ARP && (ARP_TABLE_SIZE > 0x7f)) - #error "If you want to use ARP, ARP_TABLE_SIZE must fit in an s8_t, so, you have to reduce it in your lwipopts.h" -#endif -#if (LWIP_ARP && ARP_QUEUEING && (MEMP_NUM_ARP_QUEUE<=0)) - #error "If you want to use ARP Queueing, you have to define MEMP_NUM_ARP_QUEUE>=1 in your lwipopts.h" -#endif -#if (LWIP_RAW && (MEMP_NUM_RAW_PCB<=0)) - #error "If you want to use RAW, you have to define MEMP_NUM_RAW_PCB>=1 in your lwipopts.h" -#endif -#if (LWIP_UDP && (MEMP_NUM_UDP_PCB<=0)) - #error "If you want to use UDP, you have to define MEMP_NUM_UDP_PCB>=1 in your lwipopts.h" -#endif -#if (LWIP_TCP && (MEMP_NUM_TCP_PCB<=0)) - #error "If you want to use TCP, you have to define MEMP_NUM_TCP_PCB>=1 in your lwipopts.h" -#endif -#if (LWIP_TCP && (TCP_WND > 0xffff)) - #error "If you want to use TCP, TCP_WND must fit in an u16_t, so, you have to reduce it in your lwipopts.h" -#endif -#if (LWIP_TCP && (TCP_SND_QUEUELEN > 0xffff)) - #error "If you want to use TCP, TCP_SND_QUEUELEN must fit in an u16_t, so, you have to reduce it in your lwipopts.h" -#endif -#if (LWIP_TCP && ((TCP_MAXRTX > 12) || (TCP_SYNMAXRTX > 12))) - #error "If you want to use TCP, TCP_MAXRTX and TCP_SYNMAXRTX must less or equal to 12 (due to tcp_backoff table), so, you have to reduce them in your lwipopts.h" -#endif -#if (LWIP_TCP && TCP_LISTEN_BACKLOG && (TCP_DEFAULT_LISTEN_BACKLOG < 0) || (TCP_DEFAULT_LISTEN_BACKLOG > 0xff)) - #error "If you want to use TCP backlog, TCP_DEFAULT_LISTEN_BACKLOG must fit into an u8_t" -#endif -#if (LWIP_IGMP && (MEMP_NUM_IGMP_GROUP<=1)) - #error "If you want to use IGMP, you have to define MEMP_NUM_IGMP_GROUP>1 in your lwipopts.h" -#endif -#if (PPP_SUPPORT && (NO_SYS==1)) - #error "If you want to use PPP, you have to define NO_SYS=0 in your lwipopts.h" -#endif -#if (LWIP_NETIF_API && (NO_SYS==1)) - #error "If you want to use NETIF API, you have to define NO_SYS=0 in your lwipopts.h" -#endif -#if ((LWIP_SOCKET || LWIP_NETCONN) && (NO_SYS==1)) - #error "If you want to use Sequential API, you have to define NO_SYS=0 in your lwipopts.h" -#endif -#if ((LWIP_NETCONN || LWIP_SOCKET) && (MEMP_NUM_TCPIP_MSG_API<=0)) - #error "If you want to use Sequential API, you have to define MEMP_NUM_TCPIP_MSG_API>=1 in your lwipopts.h" -#endif -#if (!LWIP_NETCONN && LWIP_SOCKET) - #error "If you want to use Socket API, you have to define LWIP_NETCONN=1 in your lwipopts.h" -#endif -#if (((!LWIP_DHCP) || (!LWIP_AUTOIP)) && LWIP_DHCP_AUTOIP_COOP) - #error "If you want to use DHCP/AUTOIP cooperation mode, you have to define LWIP_DHCP=1 and LWIP_AUTOIP=1 in your lwipopts.h" -#endif -#if (((!LWIP_DHCP) || (!LWIP_ARP)) && DHCP_DOES_ARP_CHECK) - #error "If you want to use DHCP ARP checking, you have to define LWIP_DHCP=1 and LWIP_ARP=1 in your lwipopts.h" -#endif -#if (!LWIP_ARP && LWIP_AUTOIP) - #error "If you want to use AUTOIP, you have to define LWIP_ARP=1 in your lwipopts.h" -#endif -#if (LWIP_SNMP && (SNMP_CONCURRENT_REQUESTS<=0)) - #error "If you want to use SNMP, you have to define SNMP_CONCURRENT_REQUESTS>=1 in your lwipopts.h" -#endif -#if (LWIP_SNMP && (SNMP_TRAP_DESTINATIONS<=0)) - #error "If you want to use SNMP, you have to define SNMP_TRAP_DESTINATIONS>=1 in your lwipopts.h" -#endif -#if (LWIP_TCP && ((LWIP_EVENT_API && LWIP_CALLBACK_API) || (!LWIP_EVENT_API && !LWIP_CALLBACK_API))) - #error "One and exactly one of LWIP_EVENT_API and LWIP_CALLBACK_API has to be enabled in your lwipopts.h" -#endif -/* There must be sufficient timeouts, taking into account requirements of the subsystems. */ -#if ((NO_SYS==0) && (MEMP_NUM_SYS_TIMEOUT < (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + PPP_SUPPORT))) - #error "MEMP_NUM_SYS_TIMEOUT is too low to accomodate all required timeouts" -#endif -#if (IP_REASSEMBLY && (MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS)) - #error "MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS doesn't make sense since each struct ip_reassdata must hold 2 pbufs at least!" -#endif -#if (MEM_LIBC_MALLOC && MEM_USE_POOLS) - #error "MEM_LIBC_MALLOC and MEM_USE_POOLS may not both be simultaneously enabled in your lwipopts.h" -#endif -#if (MEM_USE_POOLS && !MEMP_USE_CUSTOM_POOLS) - #error "MEM_USE_POOLS requires custom pools (MEMP_USE_CUSTOM_POOLS) to be enabled in your lwipopts.h" -#endif -#if (PBUF_POOL_BUFSIZE <= MEM_ALIGNMENT) - #error "PBUF_POOL_BUFSIZE must be greater than MEM_ALIGNMENT or the offset may take the full first pbuf" -#endif -#if (TCP_QUEUE_OOSEQ && !LWIP_TCP) - #error "TCP_QUEUE_OOSEQ requires LWIP_TCP" -#endif -#if (DNS_LOCAL_HOSTLIST && !DNS_LOCAL_HOSTLIST_IS_DYNAMIC && !(defined(DNS_LOCAL_HOSTLIST_INIT))) - #error "you have to define define DNS_LOCAL_HOSTLIST_INIT {{'host1', 0x123}, {'host2', 0x234}} to initialize DNS_LOCAL_HOSTLIST" -#endif -#if PPP_SUPPORT && !PPPOS_SUPPORT & !PPPOE_SUPPORT - #error "PPP_SUPPORT needs either PPPOS_SUPPORT or PPPOE_SUPPORT turned on" -#endif - - -/* Compile-time checks for deprecated options. - */ -#ifdef MEMP_NUM_TCPIP_MSG - #error "MEMP_NUM_TCPIP_MSG option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef MEMP_NUM_API_MSG - #error "MEMP_NUM_API_MSG option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef TCP_REXMIT_DEBUG - #error "TCP_REXMIT_DEBUG option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef RAW_STATS - #error "RAW_STATS option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef ETHARP_QUEUE_FIRST - #error "ETHARP_QUEUE_FIRST option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef ETHARP_ALWAYS_INSERT - #error "ETHARP_ALWAYS_INSERT option is deprecated. Remove it from your lwipopts.h." -#endif -#if SO_REUSE -/* I removed the lot since this was an ugly hack. It broke the raw-API. - It also came with many ugly goto's, Christiaan Simons. */ - #error "SO_REUSE currently unavailable, this was a hack" -#endif - -#ifdef LWIP_DEBUG -static void -lwip_sanity_check(void) -{ - /* Warnings */ -#if LWIP_NETCONN - if (MEMP_NUM_NETCONN > (MEMP_NUM_TCP_PCB+MEMP_NUM_TCP_PCB_LISTEN+MEMP_NUM_UDP_PCB+MEMP_NUM_RAW_PCB)) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: MEMP_NUM_NETCONN should be less than the sum of MEMP_NUM_{TCP,RAW,UDP}_PCB+MEMP_NUM_TCP_PCB_LISTEN\n")); -#endif /* LWIP_NETCONN */ -#if LWIP_TCP - if (MEMP_NUM_TCP_SEG < TCP_SND_QUEUELEN) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: MEMP_NUM_TCP_SEG should be at least as big as TCP_SND_QUEUELEN\n")); - if (TCP_SND_BUF < 2 * TCP_MSS) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SND_BUF must be at least as much as (2 * TCP_MSS) for things to work smoothly\n")); - if (TCP_SND_QUEUELEN < (2 * (TCP_SND_BUF/TCP_MSS))) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SND_QUEUELEN must be at least as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work\n")); - if (TCP_SNDLOWAT > TCP_SND_BUF) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SNDLOWAT must be less than or equal to TCP_SND_BUF.\n")); - if (TCP_WND > (PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE)) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_WND is larger than space provided by PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE\n")); - if (TCP_WND < TCP_MSS) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_WND is smaller than MSS\n")); -#endif /* LWIP_TCP */ -} -#else /* LWIP_DEBUG */ -#define lwip_sanity_check() -#endif /* LWIP_DEBUG */ - -/** - * Perform Sanity check of user-configurable values, and initialize all modules. - */ -void -lwip_init(void) -{ - /* Sanity check user-configurable values */ - lwip_sanity_check(); - - /* Modules initialization */ - stats_init(); - sys_init(); - mem_init(); - memp_init(); - pbuf_init(); - netif_init(); -#if LWIP_SOCKET - lwip_socket_init(); -#endif /* LWIP_SOCKET */ - ip_init(); -#if LWIP_ARP - etharp_init(); -#endif /* LWIP_ARP */ -#if LWIP_RAW - raw_init(); -#endif /* LWIP_RAW */ -#if LWIP_UDP - udp_init(); -#endif /* LWIP_UDP */ -#if LWIP_TCP - tcp_init(); -#endif /* LWIP_TCP */ -#if LWIP_SNMP - snmp_init(); -#endif /* LWIP_SNMP */ -#if LWIP_AUTOIP - autoip_init(); -#endif /* LWIP_AUTOIP */ -#if LWIP_IGMP - igmp_init(); -#endif /* LWIP_IGMP */ -#if LWIP_DNS - dns_init(); -#endif /* LWIP_DNS */ -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/autoip.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/autoip.c deleted file mode 100644 index dde6b6d..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/autoip.c +++ /dev/null @@ -1,499 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * AutoIP Automatic LinkLocal IP Configuration - * - */ - -/* - * - * Copyright (c) 2007 Dominik Spies - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * Author: Dominik Spies - * - * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform - * with RFC 3927. - * - * - * Please coordinate changes and requests with Dominik Spies - * - */ - -/******************************************************************************* - * USAGE: - * - * define LWIP_AUTOIP 1 in your lwipopts.h - * - * If you don't use tcpip.c (so, don't call, you don't call tcpip_init): - * - First, call autoip_init(). - * - call autoip_tmr() all AUTOIP_TMR_INTERVAL msces, - * that should be defined in autoip.h. - * I recommend a value of 100. The value must divide 1000 with a remainder almost 0. - * Possible values are 1000, 500, 333, 250, 200, 166, 142, 125, 111, 100 .... - * - * Without DHCP: - * - Call autoip_start() after netif_add(). - * - * With DHCP: - * - define LWIP_DHCP_AUTOIP_COOP 1 in your lwipopts.h. - * - Configure your DHCP Client. - * - */ - -#include "lwip/opt.h" - -#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/mem.h" -#include "lwip/udp.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/autoip.h" -#include "netif/etharp.h" - -#include -#include - -/* 169.254.0.0 */ -#define AUTOIP_NET 0xA9FE0000 -/* 169.254.1.0 */ -#define AUTOIP_RANGE_START (AUTOIP_NET | 0x0100) -/* 169.254.254.255 */ -#define AUTOIP_RANGE_END (AUTOIP_NET | 0xFEFF) - - -/** Pseudo random macro based on netif informations. - * You could use "rand()" from the C Library if you define LWIP_AUTOIP_RAND in lwipopts.h */ -#ifndef LWIP_AUTOIP_RAND -#define LWIP_AUTOIP_RAND(netif) ( (((u32_t)((netif->hwaddr[5]) & 0xff) << 24) | \ - ((u32_t)((netif->hwaddr[3]) & 0xff) << 16) | \ - ((u32_t)((netif->hwaddr[2]) & 0xff) << 8) | \ - ((u32_t)((netif->hwaddr[4]) & 0xff))) + \ - (netif->autoip?netif->autoip->tried_llipaddr:0)) -#endif /* LWIP_AUTOIP_RAND */ - -/** - * Macro that generates the initial IP address to be tried by AUTOIP. - * If you want to override this, define it to something else in lwipopts.h. - */ -#ifndef LWIP_AUTOIP_CREATE_SEED_ADDR -#define LWIP_AUTOIP_CREATE_SEED_ADDR(netif) \ - htonl(AUTOIP_RANGE_START + ((u32_t)(((u8_t)(netif->hwaddr[4])) | \ - ((u32_t)((u8_t)(netif->hwaddr[5]))) << 8))) -#endif /* LWIP_AUTOIP_CREATE_SEED_ADDR */ - -/* static functions */ -static void autoip_handle_arp_conflict(struct netif *netif); - -/* creates a pseudo random LL IP-Address for a network interface */ -static void autoip_create_addr(struct netif *netif, struct ip_addr *ipaddr); - -/* sends an ARP probe */ -static err_t autoip_arp_probe(struct netif *netif); - -/* sends an ARP announce */ -static err_t autoip_arp_announce(struct netif *netif); - -/* configure interface for use with current LL IP-Address */ -static err_t autoip_bind(struct netif *netif); - -/* start sending probes for llipaddr */ -static void autoip_start_probing(struct netif *netif); - -/** - * Initialize this module - */ -void -autoip_init(void) -{ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_init()\n")); -} - -/** - * Handle a IP address conflict after an ARP conflict detection - */ -static void -autoip_handle_arp_conflict(struct netif *netif) -{ - /* Somehow detect if we are defending or retreating */ - unsigned char defend = 1; /* tbd */ - - if(defend) { - if(netif->autoip->lastconflict > 0) { - /* retreat, there was a conflicting ARP in the last - * DEFEND_INTERVAL seconds - */ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_handle_arp_conflict(): we are defending, but in DEFEND_INTERVAL, retreating\n")); - - /* TODO: close all TCP sessions */ - autoip_start(netif); - } else { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_handle_arp_conflict(): we are defend, send ARP Announce\n")); - autoip_arp_announce(netif); - netif->autoip->lastconflict = DEFEND_INTERVAL * AUTOIP_TICKS_PER_SECOND; - } - } else { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_handle_arp_conflict(): we do not defend, retreating\n")); - /* TODO: close all TCP sessions */ - autoip_start(netif); - } -} - -/** - * Create an IP-Address out of range 169.254.1.0 to 169.254.254.255 - * - * @param netif network interface on which create the IP-Address - * @param ipaddr ip address to initialize - */ -static void -autoip_create_addr(struct netif *netif, struct ip_addr *ipaddr) -{ - /* Here we create an IP-Address out of range 169.254.1.0 to 169.254.254.255 - * compliant to RFC 3927 Section 2.1 - * We have 254 * 256 possibilities */ - - u32_t addr = ntohl(LWIP_AUTOIP_CREATE_SEED_ADDR(netif)); - addr += netif->autoip->tried_llipaddr; - addr = AUTOIP_NET | (addr & 0xffff); - /* Now, 169.254.0.0 <= addr <= 169.254.255.255 */ - - if (addr < AUTOIP_RANGE_START) { - addr += AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1; - } - if (addr > AUTOIP_RANGE_END) { - addr -= AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1; - } - LWIP_ASSERT("AUTOIP address not in range", (addr >= AUTOIP_RANGE_START) && - (addr <= AUTOIP_RANGE_END)); - ipaddr->addr = htonl(addr); - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_create_addr(): tried_llipaddr=%"U16_F", 0x%08"X32_F"\n", - (u16_t)(netif->autoip->tried_llipaddr), (u32_t)(ipaddr->addr))); -} - -/** - * Sends an ARP probe from a network interface - * - * @param netif network interface used to send the probe - */ -static err_t -autoip_arp_probe(struct netif *netif) -{ - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast, - (struct eth_addr *)netif->hwaddr, IP_ADDR_ANY, ðzero, - &netif->autoip->llipaddr, ARP_REQUEST); -} - -/** - * Sends an ARP announce from a network interface - * - * @param netif network interface used to send the announce - */ -static err_t -autoip_arp_announce(struct netif *netif) -{ - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast, - (struct eth_addr *)netif->hwaddr, &netif->autoip->llipaddr, ðzero, - &netif->autoip->llipaddr, ARP_REQUEST); -} - -/** - * Configure interface for use with current LL IP-Address - * - * @param netif network interface to configure with current LL IP-Address - */ -static err_t -autoip_bind(struct netif *netif) -{ - struct autoip *autoip = netif->autoip; - struct ip_addr sn_mask, gw_addr; - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_bind(netif=%p) %c%c%"U16_F" 0x%08"X32_F"\n", - (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num, autoip->llipaddr.addr)); - - IP4_ADDR(&sn_mask, 255, 255, 0, 0); - IP4_ADDR(&gw_addr, 0, 0, 0, 0); - - netif_set_ipaddr(netif, &autoip->llipaddr); - netif_set_netmask(netif, &sn_mask); - netif_set_gw(netif, &gw_addr); - - /* bring the interface up */ - netif_set_up(netif); - - return ERR_OK; -} - -/** - * Start AutoIP client - * - * @param netif network interface on which start the AutoIP client - */ -err_t -autoip_start(struct netif *netif) -{ - struct autoip *autoip = netif->autoip; - err_t result = ERR_OK; - - if(netif_is_up(netif)) { - netif_set_down(netif); - } - - /* Set IP-Address, Netmask and Gateway to 0 to make sure that - * ARP Packets are formed correctly - */ - netif->ip_addr.addr = 0; - netif->netmask.addr = 0; - netif->gw.addr = 0; - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], - netif->name[1], (u16_t)netif->num)); - if(autoip == NULL) { - /* no AutoIP client attached yet? */ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_start(): starting new AUTOIP client\n")); - autoip = mem_malloc(sizeof(struct autoip)); - if(autoip == NULL) { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_start(): could not allocate autoip\n")); - return ERR_MEM; - } - memset( autoip, 0, sizeof(struct autoip)); - /* store this AutoIP client in the netif */ - netif->autoip = autoip; - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_start(): allocated autoip")); - } else { - autoip->state = AUTOIP_STATE_OFF; - autoip->ttw = 0; - autoip->sent_num = 0; - memset(&autoip->llipaddr, 0, sizeof(struct ip_addr)); - autoip->lastconflict = 0; - } - - autoip_create_addr(netif, &(autoip->llipaddr)); - autoip->tried_llipaddr++; - autoip_start_probing(netif); - - return result; -} - -static void -autoip_start_probing(struct netif *netif) -{ - struct autoip *autoip = netif->autoip; - - autoip->state = AUTOIP_STATE_PROBING; - autoip->sent_num = 0; - - /* time to wait to first probe, this is randomly - * choosen out of 0 to PROBE_WAIT seconds. - * compliant to RFC 3927 Section 2.2.1 - */ - autoip->ttw = (u16_t)(LWIP_AUTOIP_RAND(netif) % (PROBE_WAIT * AUTOIP_TICKS_PER_SECOND)); - - /* - * if we tried more then MAX_CONFLICTS we must limit our rate for - * accquiring and probing address - * compliant to RFC 3927 Section 2.2.1 - */ - if(autoip->tried_llipaddr > MAX_CONFLICTS) { - autoip->ttw = RATE_LIMIT_INTERVAL * AUTOIP_TICKS_PER_SECOND; - } -} - -/** - * Handle a possible change in the network configuration. - * - * If there is an AutoIP address configured, take the interface down - * and begin probing with the same address. - */ -void -autoip_network_changed(struct netif *netif) -{ - if (netif->autoip && netif->autoip->state != AUTOIP_STATE_OFF) { - netif_set_down(netif); - autoip_start_probing(netif); - } -} - -/** - * Stop AutoIP client - * - * @param netif network interface on which stop the AutoIP client - */ -err_t -autoip_stop(struct netif *netif) -{ - netif->autoip->state = AUTOIP_STATE_OFF; - netif_set_down(netif); - return ERR_OK; -} - -/** - * Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds - */ -void -autoip_tmr() -{ - struct netif *netif = netif_list; - /* loop through netif's */ - while (netif != NULL) { - /* only act on AutoIP configured interfaces */ - if (netif->autoip != NULL) { - if(netif->autoip->lastconflict > 0) { - netif->autoip->lastconflict--; - } - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_tmr() AutoIP-State: %"U16_F", ttw=%"U16_F"\n", - (u16_t)(netif->autoip->state), netif->autoip->ttw)); - - switch(netif->autoip->state) { - case AUTOIP_STATE_PROBING: - if(netif->autoip->ttw > 0) { - netif->autoip->ttw--; - } else { - if(netif->autoip->sent_num >= PROBE_NUM) { - netif->autoip->state = AUTOIP_STATE_ANNOUNCING; - netif->autoip->sent_num = 0; - netif->autoip->ttw = ANNOUNCE_WAIT * AUTOIP_TICKS_PER_SECOND; - } else { - autoip_arp_probe(netif); - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_tmr() PROBING Sent Probe\n")); - netif->autoip->sent_num++; - /* calculate time to wait to next probe */ - netif->autoip->ttw = (u16_t)((LWIP_AUTOIP_RAND(netif) % - ((PROBE_MAX - PROBE_MIN) * AUTOIP_TICKS_PER_SECOND) ) + - PROBE_MIN * AUTOIP_TICKS_PER_SECOND); - } - } - break; - - case AUTOIP_STATE_ANNOUNCING: - if(netif->autoip->ttw > 0) { - netif->autoip->ttw--; - } else { - if(netif->autoip->sent_num == 0) { - /* We are here the first time, so we waited ANNOUNCE_WAIT seconds - * Now we can bind to an IP address and use it. - * - * autoip_bind calls netif_set_up. This triggers a gratuitous ARP - * which counts as an announcement. - */ - autoip_bind(netif); - } else { - autoip_arp_announce(netif); - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_tmr() ANNOUNCING Sent Announce\n")); - } - netif->autoip->ttw = ANNOUNCE_INTERVAL * AUTOIP_TICKS_PER_SECOND; - netif->autoip->sent_num++; - - if(netif->autoip->sent_num >= ANNOUNCE_NUM) { - netif->autoip->state = AUTOIP_STATE_BOUND; - netif->autoip->sent_num = 0; - netif->autoip->ttw = 0; - } - } - break; - } - } - /* proceed to next network interface */ - netif = netif->next; - } -} - -/** - * Handles every incoming ARP Packet, called by etharp_arp_input. - * - * @param netif network interface to use for autoip processing - * @param hdr Incoming ARP packet - */ -void -autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr) -{ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_arp_reply()\n")); - if ((netif->autoip != NULL) && (netif->autoip->state != AUTOIP_STATE_OFF)) { - /* when ip.src == llipaddr && hw.src != netif->hwaddr - * - * when probing ip.dst == llipaddr && hw.src != netif->hwaddr - * we have a conflict and must solve it - */ - struct ip_addr sipaddr, dipaddr; - struct eth_addr netifaddr; - netifaddr.addr[0] = netif->hwaddr[0]; - netifaddr.addr[1] = netif->hwaddr[1]; - netifaddr.addr[2] = netif->hwaddr[2]; - netifaddr.addr[3] = netif->hwaddr[3]; - netifaddr.addr[4] = netif->hwaddr[4]; - netifaddr.addr[5] = netif->hwaddr[5]; - - /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without - * structure packing (not using structure copy which breaks strict-aliasing rules). - */ - SMEMCPY(&sipaddr, &hdr->sipaddr, sizeof(sipaddr)); - SMEMCPY(&dipaddr, &hdr->dipaddr, sizeof(dipaddr)); - - if ((netif->autoip->state == AUTOIP_STATE_PROBING) || - ((netif->autoip->state == AUTOIP_STATE_ANNOUNCING) && - (netif->autoip->sent_num == 0))) { - /* RFC 3927 Section 2.2.1: - * from beginning to after ANNOUNCE_WAIT - * seconds we have a conflict if - * ip.src == llipaddr OR - * ip.dst == llipaddr && hw.src != own hwaddr - */ - if ((ip_addr_cmp(&sipaddr, &netif->autoip->llipaddr)) || - (ip_addr_cmp(&dipaddr, &netif->autoip->llipaddr) && - !eth_addr_cmp(&netifaddr, &hdr->shwaddr))) { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING, - ("autoip_arp_reply(): Probe Conflict detected\n")); - autoip_start(netif); - } - } else { - /* RFC 3927 Section 2.5: - * in any state we have a conflict if - * ip.src == llipaddr && hw.src != own hwaddr - */ - if (ip_addr_cmp(&sipaddr, &netif->autoip->llipaddr) && - !eth_addr_cmp(&netifaddr, &hdr->shwaddr)) { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING, - ("autoip_arp_reply(): Conflicting ARP-Packet detected\n")); - autoip_handle_arp_conflict(netif); - } - } - } -} - -#endif /* LWIP_AUTOIP */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c deleted file mode 100644 index 3ee17ae..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c +++ /dev/null @@ -1,333 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * ICMP - Internet Control Message Protocol - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -/* Some ICMP messages should be passed to the transport protocols. This - is not implemented. */ - -#include "lwip/opt.h" - -#if LWIP_ICMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/icmp.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/ip.h" -#include "lwip/def.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" - -#include - -/** Small optimization: set to 0 if incoming PBUF_POOL pbuf always can be - * used to modify and send a response packet (and to 1 if this is not the case, - * e.g. when link header is stripped of when receiving) */ -#ifndef LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN -#define LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN 1 -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ - -/* The amount of data from the original packet to return in a dest-unreachable */ -#define ICMP_DEST_UNREACH_DATASIZE 8 - -static void icmp_send_response(struct pbuf *p, u8_t type, u8_t code); - -/** - * Processes ICMP input packets, called from ip_input(). - * - * Currently only processes icmp echo requests and sends - * out the echo response. - * - * @param p the icmp echo request packet, p->payload pointing to the ip header - * @param inp the netif on which this packet was received - */ -void -icmp_input(struct pbuf *p, struct netif *inp) -{ - u8_t type; -#ifdef LWIP_DEBUG - u8_t code; -#endif /* LWIP_DEBUG */ - struct icmp_echo_hdr *iecho; - struct ip_hdr *iphdr; - struct ip_addr tmpaddr; - s16_t hlen; - - ICMP_STATS_INC(icmp.recv); - snmp_inc_icmpinmsgs(); - - - iphdr = p->payload; - hlen = IPH_HL(iphdr) * 4; - if (pbuf_header(p, -hlen) || (p->tot_len < sizeof(u16_t)*2)) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: short ICMP (%"U16_F" bytes) received\n", p->tot_len)); - goto lenerr; - } - - type = *((u8_t *)p->payload); -#ifdef LWIP_DEBUG - code = *(((u8_t *)p->payload)+1); -#endif /* LWIP_DEBUG */ - switch (type) { - case ICMP_ECHO: -#if !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING - { - int accepted = 1; -#if !LWIP_MULTICAST_PING - /* multicast destination address? */ - if (ip_addr_ismulticast(&iphdr->dest)) { - accepted = 0; - } -#endif /* LWIP_MULTICAST_PING */ -#if !LWIP_BROADCAST_PING - /* broadcast destination address? */ - if (ip_addr_isbroadcast(&iphdr->dest, inp)) { - accepted = 0; - } -#endif /* LWIP_BROADCAST_PING */ - /* broadcast or multicast destination address not acceptd? */ - if (!accepted) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: Not echoing to multicast or broadcast pings\n")); - ICMP_STATS_INC(icmp.err); - pbuf_free(p); - return; - } - } -#endif /* !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING */ - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ping\n")); - if (p->tot_len < sizeof(struct icmp_echo_hdr)) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: bad ICMP echo received\n")); - goto lenerr; - } - if (inet_chksum_pbuf(p) != 0) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: checksum failed for received ICMP echo\n")); - pbuf_free(p); - ICMP_STATS_INC(icmp.chkerr); - snmp_inc_icmpinerrors(); - return; - } -#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN - if (pbuf_header(p, (PBUF_IP_HLEN + PBUF_LINK_HLEN))) { - /* p is not big enough to contain link headers - * allocate a new one and copy p into it - */ - struct pbuf *r; - /* switch p->payload to ip header */ - if (pbuf_header(p, hlen)) { - LWIP_ASSERT("icmp_input: moving p->payload to ip header failed\n", 0); - goto memerr; - } - /* allocate new packet buffer with space for link headers */ - r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM); - if (r == NULL) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: allocating new pbuf failed\n")); - goto memerr; - } - LWIP_ASSERT("check that first pbuf can hold struct the ICMP header", - (r->len >= hlen + sizeof(struct icmp_echo_hdr))); - /* copy the whole packet including ip header */ - if (pbuf_copy(r, p) != ERR_OK) { - LWIP_ASSERT("icmp_input: copying to new pbuf failed\n", 0); - goto memerr; - } - iphdr = r->payload; - /* switch r->payload back to icmp header */ - if (pbuf_header(r, -hlen)) { - LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0); - goto memerr; - } - /* free the original p */ - pbuf_free(p); - /* we now have an identical copy of p that has room for link headers */ - p = r; - } else { - /* restore p->payload to point to icmp header */ - if (pbuf_header(p, -(s16_t)(PBUF_IP_HLEN + PBUF_LINK_HLEN))) { - LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0); - goto memerr; - } - } -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ - /* At this point, all checks are OK. */ - /* We generate an answer by switching the dest and src ip addresses, - * setting the icmp type to ECHO_RESPONSE and updating the checksum. */ - iecho = p->payload; - tmpaddr.addr = iphdr->src.addr; - iphdr->src.addr = iphdr->dest.addr; - iphdr->dest.addr = tmpaddr.addr; - ICMPH_TYPE_SET(iecho, ICMP_ER); - /* adjust the checksum */ - if (iecho->chksum >= htons(0xffff - (ICMP_ECHO << 8))) { - iecho->chksum += htons(ICMP_ECHO << 8) + 1; - } else { - iecho->chksum += htons(ICMP_ECHO << 8); - } - - /* Set the correct TTL and recalculate the header checksum. */ - IPH_TTL_SET(iphdr, ICMP_TTL); - IPH_CHKSUM_SET(iphdr, 0); -#if CHECKSUM_GEN_IP - IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN)); -#endif /* CHECKSUM_GEN_IP */ - - ICMP_STATS_INC(icmp.xmit); - /* increase number of messages attempted to send */ - snmp_inc_icmpoutmsgs(); - /* increase number of echo replies attempted to send */ - snmp_inc_icmpoutechoreps(); - - if(pbuf_header(p, hlen)) { - LWIP_ASSERT("Can't move over header in packet", 0); - } else { - err_t ret; - ret = ip_output_if(p, &(iphdr->src), IP_HDRINCL, - ICMP_TTL, 0, IP_PROTO_ICMP, inp); - if (ret != ERR_OK) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ip_output_if returned an error: %c.\n", ret)); - } - } - break; - default: - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ICMP type %"S16_F" code %"S16_F" not supported.\n", - (s16_t)type, (s16_t)code)); - ICMP_STATS_INC(icmp.proterr); - ICMP_STATS_INC(icmp.drop); - } - pbuf_free(p); - return; -lenerr: - pbuf_free(p); - ICMP_STATS_INC(icmp.lenerr); - snmp_inc_icmpinerrors(); - return; -#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN -memerr: - pbuf_free(p); - ICMP_STATS_INC(icmp.err); - snmp_inc_icmpinerrors(); - return; -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ -} - -/** - * Send an icmp 'destination unreachable' packet, called from ip_input() if - * the transport layer protocol is unknown and from udp_input() if the local - * port is not bound. - * - * @param p the input packet for which the 'unreachable' should be sent, - * p->payload pointing to the IP header - * @param t type of the 'unreachable' packet - */ -void -icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t) -{ - icmp_send_response(p, ICMP_DUR, t); -} - -#if IP_FORWARD || IP_REASSEMBLY -/** - * Send a 'time exceeded' packet, called from ip_forward() if TTL is 0. - * - * @param p the input packet for which the 'time exceeded' should be sent, - * p->payload pointing to the IP header - * @param t type of the 'time exceeded' packet - */ -void -icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t) -{ - icmp_send_response(p, ICMP_TE, t); -} - -#endif /* IP_FORWARD || IP_REASSEMBLY */ - -/** - * Send an icmp packet in response to an incoming packet. - * - * @param p the input packet for which the 'unreachable' should be sent, - * p->payload pointing to the IP header - * @param type Type of the ICMP header - * @param code Code of the ICMP header - */ -static void -icmp_send_response(struct pbuf *p, u8_t type, u8_t code) -{ - struct pbuf *q; - struct ip_hdr *iphdr; - /* we can use the echo header here */ - struct icmp_echo_hdr *icmphdr; - - /* ICMP header + IP header + 8 bytes of data */ - q = pbuf_alloc(PBUF_IP, sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE, - PBUF_RAM); - if (q == NULL) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded: failed to allocate pbuf for ICMP packet.\n")); - return; - } - LWIP_ASSERT("check that first pbuf can hold icmp message", - (q->len >= (sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE))); - - iphdr = p->payload; - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded from ")); - ip_addr_debug_print(ICMP_DEBUG, &(iphdr->src)); - LWIP_DEBUGF(ICMP_DEBUG, (" to ")); - ip_addr_debug_print(ICMP_DEBUG, &(iphdr->dest)); - LWIP_DEBUGF(ICMP_DEBUG, ("\n")); - - icmphdr = q->payload; - icmphdr->type = type; - icmphdr->code = code; - icmphdr->id = 0; - icmphdr->seqno = 0; - - /* copy fields from original packet */ - SMEMCPY((u8_t *)q->payload + sizeof(struct icmp_echo_hdr), (u8_t *)p->payload, - IP_HLEN + ICMP_DEST_UNREACH_DATASIZE); - - /* calculate checksum */ - icmphdr->chksum = 0; - icmphdr->chksum = inet_chksum(icmphdr, q->len); - ICMP_STATS_INC(icmp.xmit); - /* increase number of messages attempted to send */ - snmp_inc_icmpoutmsgs(); - /* increase number of destination unreachable messages attempted to send */ - snmp_inc_icmpouttimeexcds(); - ip_output(q, NULL, &(iphdr->src), ICMP_TTL, 0, IP_PROTO_ICMP); - pbuf_free(q); -} - -#endif /* LWIP_ICMP */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c deleted file mode 100644 index b302ef4..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c +++ /dev/null @@ -1,759 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * IGMP - Internet Group Management Protocol - * - */ - -/* - * Copyright (c) 2002 CITEL Technologies Ltd. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of CITEL Technologies Ltd 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 CITEL TECHNOLOGIES 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 CITEL TECHNOLOGIES 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. - * - * This file is a contribution to the lwIP TCP/IP stack. - * The Swedish Institute of Computer Science and Adam Dunkels - * are specifically granted permission to redistribute this - * source code. -*/ - -/*------------------------------------------------------------- -Note 1) -Although the rfc requires V1 AND V2 capability -we will only support v2 since now V1 is very old (August 1989) -V1 can be added if required - -a debug print and statistic have been implemented to -show this up. -------------------------------------------------------------- -------------------------------------------------------------- -Note 2) -A query for a specific group address (as opposed to ALLHOSTS) -has now been implemented as I am unsure if it is required - -a debug print and statistic have been implemented to -show this up. -------------------------------------------------------------- -------------------------------------------------------------- -Note 3) -The router alert rfc 2113 is implemented in outgoing packets -but not checked rigorously incoming -------------------------------------------------------------- -Steve Reynolds -------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------- - * RFC 988 - Host extensions for IP multicasting - V0 - * RFC 1054 - Host extensions for IP multicasting - - * RFC 1112 - Host extensions for IP multicasting - V1 - * RFC 2236 - Internet Group Management Protocol, Version 2 - V2 <- this code is based on this RFC (it's the "de facto" standard) - * RFC 3376 - Internet Group Management Protocol, Version 3 - V3 - * RFC 4604 - Using Internet Group Management Protocol Version 3... - V3+ - * RFC 2113 - IP Router Alert Option - - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------- - * Includes - *----------------------------------------------------------------------------*/ - -#include "lwip/opt.h" - -#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/igmp.h" -#include "lwip/debug.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/ip.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/icmp.h" -#include "lwip/udp.h" -#include "lwip/tcp.h" -#include "lwip/stats.h" - -#include "string.h" - -/*----------------------------------------------------------------------------- - * Globales - *----------------------------------------------------------------------------*/ - -static struct igmp_group* igmp_group_list; -static struct ip_addr allsystems; -static struct ip_addr allrouters; - -/** - * Initialize the IGMP module - */ -void -igmp_init(void) -{ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_init: initializing\n")); - - IP4_ADDR(&allsystems, 224, 0, 0, 1); - IP4_ADDR(&allrouters, 224, 0, 0, 2); -} - -#ifdef LWIP_DEBUG -/** - * Dump global IGMP groups list - */ -void -igmp_dump_group_list() -{ - struct igmp_group *group = igmp_group_list; - - while (group != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_dump_group_list: [%"U32_F"] ", (u32_t)(group->group_state))); - ip_addr_debug_print(IGMP_DEBUG, &group->group_address); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", group->interface)); - group = group->next; - } - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); -} -#else -#define igmp_dump_group_list() -#endif /* LWIP_DEBUG */ - -/** - * Start IGMP processing on interface - * - * @param netif network interface on which start IGMP processing - */ -err_t -igmp_start(struct netif *netif) -{ - struct igmp_group* group; - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_start: starting IGMP processing on if %p\n", netif)); - - group = igmp_lookup_group(netif, &allsystems); - - if (group != NULL) { - group->group_state = IGMP_GROUP_IDLE_MEMBER; - group->use++; - - /* Allow the igmp messages at the MAC level */ - if (netif->igmp_mac_filter != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_start: igmp_mac_filter(ADD ")); - ip_addr_debug_print(IGMP_DEBUG, &allsystems); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter( netif, &allsystems, IGMP_ADD_MAC_FILTER); - } - - return ERR_OK; - } - - return ERR_MEM; -} - -/** - * Stop IGMP processing on interface - * - * @param netif network interface on which stop IGMP processing - */ -err_t -igmp_stop(struct netif *netif) -{ - struct igmp_group *group = igmp_group_list; - struct igmp_group *prev = NULL; - struct igmp_group *next; - - /* look for groups joined on this interface further down the list */ - while (group != NULL) { - next = group->next; - /* is it a group joined on this interface? */ - if (group->interface == netif) { - /* is it the first group of the list? */ - if (group == igmp_group_list) { - igmp_group_list = next; - } - /* is there a "previous" group defined? */ - if (prev != NULL) { - prev->next = next; - } - /* disable the group at the MAC level */ - if (netif->igmp_mac_filter != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_stop: igmp_mac_filter(DEL ")); - ip_addr_debug_print(IGMP_DEBUG, &group->group_address); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter(netif, &(group->group_address), IGMP_DEL_MAC_FILTER); - } - /* free group */ - memp_free(MEMP_IGMP_GROUP, group); - } else { - /* change the "previous" */ - prev = group; - } - /* move to "next" */ - group = next; - } - return ERR_OK; -} - -/** - * Report IGMP memberships for this interface - * - * @param netif network interface on which report IGMP memberships - */ -void -igmp_report_groups( struct netif *netif) -{ - struct igmp_group *group = igmp_group_list; - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_report_groups: sending IGMP reports on if %p\n", netif)); - - while (group != NULL) { - if (group->interface == netif) { - igmp_delaying_member( group, IGMP_JOIN_DELAYING_MEMBER_TMR); - } - group = group->next; - } -} - -/** - * Search for a group in the global igmp_group_list - * - * @param ifp the network interface for which to look - * @param addr the group ip address to search for - * @return a struct igmp_group* if the group has been found, - * NULL if the group wasn't found. - */ -struct igmp_group * -igmp_lookfor_group(struct netif *ifp, struct ip_addr *addr) -{ - struct igmp_group *group = igmp_group_list; - - while (group != NULL) { - if ((group->interface == ifp) && (ip_addr_cmp(&(group->group_address), addr))) { - return group; - } - group = group->next; - } - - /* to be clearer, we return NULL here instead of - * 'group' (which is also NULL at this point). - */ - return NULL; -} - -/** - * Search for a specific igmp group and create a new one if not found- - * - * @param ifp the network interface for which to look - * @param addr the group ip address to search - * @return a struct igmp_group*, - * NULL on memory error. - */ -struct igmp_group * -igmp_lookup_group(struct netif *ifp, struct ip_addr *addr) -{ - struct igmp_group *group = igmp_group_list; - - /* Search if the group already exists */ - group = igmp_lookfor_group(ifp, addr); - if (group != NULL) { - /* Group already exists. */ - return group; - } - - /* Group doesn't exist yet, create a new one */ - group = memp_malloc(MEMP_IGMP_GROUP); - if (group != NULL) { - group->interface = ifp; - ip_addr_set(&(group->group_address), addr); - group->timer = 0; /* Not running */ - group->group_state = IGMP_GROUP_NON_MEMBER; - group->last_reporter_flag = 0; - group->use = 0; - group->next = igmp_group_list; - - igmp_group_list = group; - } - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_lookup_group: %sallocated a new group with address ", (group?"":"impossible to "))); - ip_addr_debug_print(IGMP_DEBUG, addr); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", ifp)); - - return group; -} - -/** - * Remove a group in the global igmp_group_list - * - * @param group the group to remove from the global igmp_group_list - * @return ERR_OK if group was removed from the list, an err_t otherwise - */ -err_t -igmp_remove_group(struct igmp_group *group) -{ - err_t err = ERR_OK; - - /* Is it the first group? */ - if (igmp_group_list == group) { - igmp_group_list = group->next; - } else { - /* look for group further down the list */ - struct igmp_group *tmpGroup; - for (tmpGroup = igmp_group_list; tmpGroup != NULL; tmpGroup = tmpGroup->next) { - if (tmpGroup->next == group) { - tmpGroup->next = group->next; - break; - } - } - /* Group not found in the global igmp_group_list */ - if (tmpGroup == NULL) - err = ERR_ARG; - } - /* free group */ - memp_free(MEMP_IGMP_GROUP, group); - - return err; -} - -/** - * Called from ip_input() if a new IGMP packet is received. - * - * @param p received igmp packet, p->payload pointing to the ip header - * @param inp network interface on which the packet was received - * @param dest destination ip address of the igmp packet - */ -void -igmp_input(struct pbuf *p, struct netif *inp, struct ip_addr *dest) -{ - struct ip_hdr * iphdr; - struct igmp_msg* igmp; - struct igmp_group* group; - struct igmp_group* groupref; - - /* Note that the length CAN be greater than 8 but only 8 are used - All are included in the checksum */ - iphdr = p->payload; - if (pbuf_header(p, -(s16_t)(IPH_HL(iphdr) * 4)) || (p->len < IGMP_MINLEN)) { - pbuf_free(p); - IGMP_STATS_INC(igmp.lenerr); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: length error\n")); - return; - } - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: message from ")); - ip_addr_debug_print(IGMP_DEBUG, &(iphdr->src)); - LWIP_DEBUGF(IGMP_DEBUG, (" to address ")); - ip_addr_debug_print(IGMP_DEBUG, &(iphdr->dest)); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", inp)); - - /* Now calculate and check the checksum */ - igmp = (struct igmp_msg *)p->payload; - if (inet_chksum(igmp, p->len)) { - pbuf_free(p); - IGMP_STATS_INC(igmp.chkerr); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: checksum error\n")); - return; - } - - /* Packet is ok so find an existing group */ - group = igmp_lookfor_group(inp, dest); /* use the incoming IP address! */ - - /* If group can be found or create... */ - if (!group) { - pbuf_free(p); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP frame not for us\n")); - return; - } - - /* NOW ACT ON THE INCOMING MESSAGE TYPE... */ - switch (igmp->igmp_msgtype) { - case IGMP_MEMB_QUERY: { - /* IGMP_MEMB_QUERY to the "all systems" address ? */ - if ((ip_addr_cmp(dest, &allsystems)) && (igmp->igmp_group_address.addr == 0)) { - /* THIS IS THE GENERAL QUERY */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: General IGMP_MEMB_QUERY on \"ALL SYSTEMS\" address (224.0.0.1) [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp))); - - if (igmp->igmp_maxresp == 0) { - IGMP_STATS_INC(igmp.v1_rxed); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: got an all hosts query with time== 0 - this is V1 and not implemented - treat as v2\n")); - igmp->igmp_maxresp = IGMP_V1_DELAYING_MEMBER_TMR; - } - - IGMP_STATS_INC(igmp.group_query_rxed); - groupref = igmp_group_list; - while (groupref) { - /* Do not send messages on the all systems group address! */ - if ((groupref->interface == inp) && (!(ip_addr_cmp(&(groupref->group_address), &allsystems)))) { - igmp_delaying_member( groupref, igmp->igmp_maxresp); - } - groupref = groupref->next; - } - } else { - /* IGMP_MEMB_QUERY to a specific group ? */ - if (group->group_address.addr != 0) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP_MEMB_QUERY to a specific group ")); - ip_addr_debug_print(IGMP_DEBUG, &group->group_address); - if (ip_addr_cmp (dest, &allsystems)) { - LWIP_DEBUGF(IGMP_DEBUG, (" using \"ALL SYSTEMS\" address (224.0.0.1) [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp))); - /* we first need to re-lookfor the group since we used dest last time */ - group = igmp_lookfor_group(inp, &igmp->igmp_group_address); - } else { - LWIP_DEBUGF(IGMP_DEBUG, (" with the group address as destination [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp))); - } - - if (group != NULL) { - IGMP_STATS_INC(igmp.unicast_query); - igmp_delaying_member( group, igmp->igmp_maxresp); - } - } - } - break; - } - case IGMP_V2_MEMB_REPORT: { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP_V2_MEMB_REPORT\n")); - - IGMP_STATS_INC(igmp.report_rxed); - if (group->group_state == IGMP_GROUP_DELAYING_MEMBER) { - /* This is on a specific group we have already looked up */ - group->timer = 0; /* stopped */ - group->group_state = IGMP_GROUP_IDLE_MEMBER; - group->last_reporter_flag = 0; - } - break; - } - default: { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: unexpected msg %d in state %d on group %p on if %p\n", - igmp->igmp_msgtype, group->group_state, &group, group->interface)); - break; - } - } - - pbuf_free(p); - return; -} - -/** - * Join a group on one network interface. - * - * @param ifaddr ip address of the network interface which should join a new group - * @param groupaddr the ip address of the group which to join - * @return ERR_OK if group was joined on the netif(s), an err_t otherwise - */ -err_t -igmp_joingroup(struct ip_addr *ifaddr, struct ip_addr *groupaddr) -{ - err_t err = ERR_VAL; /* no matching interface */ - struct igmp_group *group; - struct netif *netif; - - /* make sure it is multicast address */ - LWIP_ERROR("igmp_joingroup: attempt to join non-multicast address", ip_addr_ismulticast(groupaddr), return ERR_VAL;); - LWIP_ERROR("igmp_joingroup: attempt to join allsystems address", (!ip_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;); - - /* loop through netif's */ - netif = netif_list; - while (netif != NULL) { - /* Should we join this interface ? */ - if ((netif->flags & NETIF_FLAG_IGMP) && ((ip_addr_isany(ifaddr) || ip_addr_cmp(&(netif->ip_addr), ifaddr)))) { - /* find group or create a new one if not found */ - group = igmp_lookup_group(netif, groupaddr); - - if (group != NULL) { - /* This should create a new group, check the state to make sure */ - if (group->group_state != IGMP_GROUP_NON_MEMBER) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: join to group not in state IGMP_GROUP_NON_MEMBER\n")); - } else { - /* OK - it was new group */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: join to new group: ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); - - /* If first use of the group, allow the group at the MAC level */ - if ((group->use==0) && (netif->igmp_mac_filter != NULL)) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: igmp_mac_filter(ADD ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter(netif, groupaddr, IGMP_ADD_MAC_FILTER); - } - - IGMP_STATS_INC(igmp.join_sent); - igmp_send(group, IGMP_V2_MEMB_REPORT); - - igmp_start_timer(group, IGMP_JOIN_DELAYING_MEMBER_TMR); - - /* Need to work out where this timer comes from */ - group->group_state = IGMP_GROUP_DELAYING_MEMBER; - } - /* Increment group use */ - group->use++; - /* Join on this interface */ - err = ERR_OK; - } else { - /* Return an error even if some network interfaces are joined */ - /** @todo undo any other netif already joined */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: Not enought memory to join to group\n")); - return ERR_MEM; - } - } - /* proceed to next network interface */ - netif = netif->next; - } - - return err; -} - -/** - * Leave a group on one network interface. - * - * @param ifaddr ip address of the network interface which should leave a group - * @param groupaddr the ip address of the group which to leave - * @return ERR_OK if group was left on the netif(s), an err_t otherwise - */ -err_t -igmp_leavegroup(struct ip_addr *ifaddr, struct ip_addr *groupaddr) -{ - err_t err = ERR_VAL; /* no matching interface */ - struct igmp_group *group; - struct netif *netif; - - /* make sure it is multicast address */ - LWIP_ERROR("igmp_leavegroup: attempt to leave non-multicast address", ip_addr_ismulticast(groupaddr), return ERR_VAL;); - LWIP_ERROR("igmp_leavegroup: attempt to leave allsystems address", (!ip_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;); - - /* loop through netif's */ - netif = netif_list; - while (netif != NULL) { - /* Should we leave this interface ? */ - if ((netif->flags & NETIF_FLAG_IGMP) && ((ip_addr_isany(ifaddr) || ip_addr_cmp(&(netif->ip_addr), ifaddr)))) { - /* find group */ - group = igmp_lookfor_group(netif, groupaddr); - - if (group != NULL) { - /* Only send a leave if the flag is set according to the state diagram */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: Leaving group: ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); - - /* If there is no other use of the group */ - if (group->use <= 1) { - /* If we are the last reporter for this group */ - if (group->last_reporter_flag) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: sending leaving group\n")); - IGMP_STATS_INC(igmp.leave_sent); - igmp_send(group, IGMP_LEAVE_GROUP); - } - - /* Disable the group at the MAC level */ - if (netif->igmp_mac_filter != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: igmp_mac_filter(DEL ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter(netif, groupaddr, IGMP_DEL_MAC_FILTER); - } - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: remove group: ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); - - /* Free the group */ - igmp_remove_group(group); - } else { - /* Decrement group use */ - group->use--; - } - /* Leave on this interface */ - err = ERR_OK; - } else { - /* It's not a fatal error on "leavegroup" */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: not member of group\n")); - } - } - /* proceed to next network interface */ - netif = netif->next; - } - - return err; -} - -/** - * The igmp timer function (both for NO_SYS=1 and =0) - * Should be called every IGMP_TMR_INTERVAL milliseconds (100 ms is default). - */ -void -igmp_tmr(void) -{ - struct igmp_group *group = igmp_group_list; - - while (group != NULL) { - if (group->timer != 0) { - group->timer -= 1; - if (group->timer == 0) { - igmp_timeout(group); - } - } - group = group->next; - } -} - -/** - * Called if a timeout for one group is reached. - * Sends a report for this group. - * - * @param group an igmp_group for which a timeout is reached - */ -void -igmp_timeout(struct igmp_group *group) -{ - /* If the state is IGMP_GROUP_DELAYING_MEMBER then we send a report for this group */ - if (group->group_state == IGMP_GROUP_DELAYING_MEMBER) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_timeout: report membership for group with address ")); - ip_addr_debug_print(IGMP_DEBUG, &(group->group_address)); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", group->interface)); - - igmp_send(group, IGMP_V2_MEMB_REPORT); - } -} - -/** - * Start a timer for an igmp group - * - * @param group the igmp_group for which to start a timer - * @param max_time the time in multiples of IGMP_TMR_INTERVAL (decrease with - * every call to igmp_tmr()) - */ -void -igmp_start_timer(struct igmp_group *group, u8_t max_time) -{ - /** - * @todo Important !! this should be random 0 -> max_time. Find out how to do this - */ - group->timer = max_time; -} - -/** - * Stop a timer for an igmp_group - * - * @param group the igmp_group for which to stop the timer - */ -void -igmp_stop_timer(struct igmp_group *group) -{ - group->timer = 0; -} - -/** - * Delaying membership report for a group if necessary - * - * @param group the igmp_group for which "delaying" membership report - * @param maxresp query delay - */ -void -igmp_delaying_member( struct igmp_group *group, u8_t maxresp) -{ - if ((group->group_state == IGMP_GROUP_IDLE_MEMBER) || - ((group->group_state == IGMP_GROUP_DELAYING_MEMBER) && (maxresp > group->timer))) { - igmp_start_timer(group, (maxresp)/2); - group->group_state = IGMP_GROUP_DELAYING_MEMBER; - } -} - - -/** - * Sends an IP packet on a network interface. This function constructs the IP header - * and calculates the IP header checksum. If the source IP address is NULL, - * the IP address of the outgoing network interface is filled in as source address. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * @param netif the netif on which to send this packet - * @return ERR_OK if the packet was sent OK - * ERR_BUF if p doesn't have enough space for IP/LINK headers - * returns errors returned by netif->output - */ -err_t -igmp_ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t proto, struct netif *netif) -{ - /* This is the "router alert" option */ - u16_t ra[2]; - ra[0] = htons (ROUTER_ALERT); - ra[1] = 0x0000; /* Router shall examine packet */ - return ip_output_if_opt(p, src, dest, ttl, 0, proto, netif, ra, ROUTER_ALERTLEN); -} - -/** - * Send an igmp packet to a specific group. - * - * @param group the group to which to send the packet - * @param type the type of igmp packet to send - */ -void -igmp_send(struct igmp_group *group, u8_t type) -{ - struct pbuf* p = NULL; - struct igmp_msg* igmp = NULL; - struct ip_addr src = {0}; - struct ip_addr* dest = NULL; - - /* IP header + "router alert" option + IGMP header */ - p = pbuf_alloc(PBUF_TRANSPORT, IGMP_MINLEN, PBUF_RAM); - - if (p) { - igmp = p->payload; - LWIP_ASSERT("igmp_send: check that first pbuf can hold struct igmp_msg", - (p->len >= sizeof(struct igmp_msg))); - ip_addr_set(&src, &((group->interface)->ip_addr)); - - if (type == IGMP_V2_MEMB_REPORT) { - dest = &(group->group_address); - IGMP_STATS_INC(igmp.report_sent); - ip_addr_set(&(igmp->igmp_group_address), &(group->group_address)); - group->last_reporter_flag = 1; /* Remember we were the last to report */ - } else { - if (type == IGMP_LEAVE_GROUP) { - dest = &allrouters; - ip_addr_set(&(igmp->igmp_group_address), &(group->group_address)); - } - } - - if ((type == IGMP_V2_MEMB_REPORT) || (type == IGMP_LEAVE_GROUP)) { - igmp->igmp_msgtype = type; - igmp->igmp_maxresp = 0; - igmp->igmp_checksum = 0; - igmp->igmp_checksum = inet_chksum( igmp, IGMP_MINLEN); - - igmp_ip_output_if(p, &src, dest, IGMP_TTL, IP_PROTO_IGMP, group->interface); - } - - pbuf_free(p); - } else { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_send: not enough memory for igmp_send\n")); - } -} - -#endif /* LWIP_IGMP */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c deleted file mode 100644 index 0d4f922..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c +++ /dev/null @@ -1,280 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Functions common to all TCP/IPv4 modules, such as the byte order functions. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/inet.h" - -/* Here for now until needed in other places in lwIP */ -#ifndef isprint -#define in_range(c, lo, up) ((u8_t)c >= lo && (u8_t)c <= up) -#define isprint(c) in_range(c, 0x20, 0x7f) -#define isdigit(c) in_range(c, '0', '9') -#define isxdigit(c) (isdigit(c) || in_range(c, 'a', 'f') || in_range(c, 'A', 'F')) -#define islower(c) in_range(c, 'a', 'z') -#define isspace(c) (c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v') -#endif - -/** - * Ascii internet address interpretation routine. - * The value returned is in network order. - * - * @param cp IP address in ascii represenation (e.g. "127.0.0.1") - * @return ip address in network order - */ -u32_t -inet_addr(const char *cp) -{ - struct in_addr val; - - if (inet_aton(cp, &val)) { - return (val.s_addr); - } - return (INADDR_NONE); -} - -/** - * Check whether "cp" is a valid ascii representation - * of an Internet address and convert to a binary address. - * Returns 1 if the address is valid, 0 if not. - * This replaces inet_addr, the return value from which - * cannot distinguish between failure and a local broadcast address. - * - * @param cp IP address in ascii represenation (e.g. "127.0.0.1") - * @param addr pointer to which to save the ip address in network order - * @return 1 if cp could be converted to addr, 0 on failure - */ -int -inet_aton(const char *cp, struct in_addr *addr) -{ - u32_t val; - u8_t base; - char c; - u32_t parts[4]; - u32_t *pp = parts; - - c = *cp; - for (;;) { - /* - * Collect number up to ``.''. - * Values are specified as for C: - * 0x=hex, 0=octal, 1-9=decimal. - */ - if (!isdigit(c)) - return (0); - val = 0; - base = 10; - if (c == '0') { - c = *++cp; - if (c == 'x' || c == 'X') { - base = 16; - c = *++cp; - } else - base = 8; - } - for (;;) { - if (isdigit(c)) { - val = (val * base) + (int)(c - '0'); - c = *++cp; - } else if (base == 16 && isxdigit(c)) { - val = (val << 4) | (int)(c + 10 - (islower(c) ? 'a' : 'A')); - c = *++cp; - } else - break; - } - if (c == '.') { - /* - * Internet format: - * a.b.c.d - * a.b.c (with c treated as 16 bits) - * a.b (with b treated as 24 bits) - */ - if (pp >= parts + 3) - return (0); - *pp++ = val; - c = *++cp; - } else - break; - } - /* - * Check for trailing characters. - */ - if (c != '\0' && !isspace(c)) - return (0); - /* - * Concoct the address according to - * the number of parts specified. - */ - switch (pp - parts + 1) { - - case 0: - return (0); /* initial nondigit */ - - case 1: /* a -- 32 bits */ - break; - - case 2: /* a.b -- 8.24 bits */ - if (val > 0xffffffUL) - return (0); - val |= parts[0] << 24; - break; - - case 3: /* a.b.c -- 8.8.16 bits */ - if (val > 0xffff) - return (0); - val |= (parts[0] << 24) | (parts[1] << 16); - break; - - case 4: /* a.b.c.d -- 8.8.8.8 bits */ - if (val > 0xff) - return (0); - val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8); - break; - } - if (addr) - addr->s_addr = htonl(val); - return (1); -} - -/** - * Convert numeric IP address into decimal dotted ASCII representation. - * returns ptr to static buffer; not reentrant! - * - * @param addr ip address in network order to convert - * @return pointer to a global static (!) buffer that holds the ASCII - * represenation of addr - */ -char * -inet_ntoa(struct in_addr addr) -{ - static char str[16]; - u32_t s_addr = addr.s_addr; - char inv[3]; - char *rp; - u8_t *ap; - u8_t rem; - u8_t n; - u8_t i; - - rp = str; - ap = (u8_t *)&s_addr; - for(n = 0; n < 4; n++) { - i = 0; - do { - rem = *ap % (u8_t)10; - *ap /= (u8_t)10; - inv[i++] = '0' + rem; - } while(*ap); - while(i--) - *rp++ = inv[i]; - *rp++ = '.'; - ap++; - } - *--rp = 0; - return str; -} - -/** - * These are reference implementations of the byte swapping functions. - * Again with the aim of being simple, correct and fully portable. - * Byte swapping is the second thing you would want to optimize. You will - * need to port it to your architecture and in your cc.h: - * - * #define LWIP_PLATFORM_BYTESWAP 1 - * #define LWIP_PLATFORM_HTONS(x) - * #define LWIP_PLATFORM_HTONL(x) - * - * Note ntohs() and ntohl() are merely references to the htonx counterparts. - */ - -#if (LWIP_PLATFORM_BYTESWAP == 0) && (BYTE_ORDER == LITTLE_ENDIAN) - -/** - * Convert an u16_t from host- to network byte order. - * - * @param n u16_t in host byte order - * @return n in network byte order - */ -u16_t -htons(u16_t n) -{ - return ((n & 0xff) << 8) | ((n & 0xff00) >> 8); -} - -/** - * Convert an u16_t from network- to host byte order. - * - * @param n u16_t in network byte order - * @return n in host byte order - */ -u16_t -ntohs(u16_t n) -{ - return htons(n); -} - -/** - * Convert an u32_t from host- to network byte order. - * - * @param n u32_t in host byte order - * @return n in network byte order - */ -u32_t -htonl(u32_t n) -{ - return ((n & 0xff) << 24) | - ((n & 0xff00) << 8) | - ((n & 0xff0000UL) >> 8) | - ((n & 0xff000000UL) >> 24); -} - -/** - * Convert an u32_t from network- to host byte order. - * - * @param n u32_t in network byte order - * @return n in host byte order - */ -u32_t -ntohl(u32_t n) -{ - return htonl(n); -} - -#endif /* (LWIP_PLATFORM_BYTESWAP == 0) && (BYTE_ORDER == LITTLE_ENDIAN) */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c deleted file mode 100644 index 47a11d4..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c +++ /dev/null @@ -1,440 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Incluse internet checksum functions. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/inet_chksum.h" -#include "lwip/inet.h" - -#include - -/* These are some reference implementations of the checksum algorithm, with the - * aim of being simple, correct and fully portable. Checksumming is the - * first thing you would want to optimize for your platform. If you create - * your own version, link it in and in your cc.h put: - * - * #define LWIP_CHKSUM - * - * Or you can select from the implementations below by defining - * LWIP_CHKSUM_ALGORITHM to 1, 2 or 3. - */ - -#ifndef LWIP_CHKSUM -# define LWIP_CHKSUM lwip_standard_chksum -# ifndef LWIP_CHKSUM_ALGORITHM -# define LWIP_CHKSUM_ALGORITHM 1 -# endif -#endif -/* If none set: */ -#ifndef LWIP_CHKSUM_ALGORITHM -# define LWIP_CHKSUM_ALGORITHM 0 -#endif - -/** Like the name says... */ -#if LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN) -/* little endian and PLATFORM_BYTESWAP defined */ -#define SWAP_BYTES_IN_WORD(w) LWIP_PLATFORM_HTONS(w) -#else -/* can't use htons on big endian (or PLATFORM_BYTESWAP not defined)... */ -#define SWAP_BYTES_IN_WORD(w) ((w & 0xff) << 8) | ((w & 0xff00) >> 8) -#endif - -/** Split an u32_t in two u16_ts and add them up */ -#define FOLD_U32T(u) ((u >> 16) + (u & 0x0000ffffUL)) - -#if (LWIP_CHKSUM_ALGORITHM == 1) /* Version #1 */ -/** - * lwip checksum - * - * @param dataptr points to start of data to be summed at any boundary - * @param len length of data to be summed - * @return host order (!) lwip checksum (non-inverted Internet sum) - * - * @note accumulator size limits summable length to 64k - * @note host endianess is irrelevant (p3 RFC1071) - */ -static u16_t -lwip_standard_chksum(void *dataptr, u16_t len) -{ - u32_t acc; - u16_t src; - u8_t *octetptr; - - acc = 0; - /* dataptr may be at odd or even addresses */ - octetptr = (u8_t*)dataptr; - while (len > 1) { - /* declare first octet as most significant - thus assume network order, ignoring host order */ - src = (*octetptr) << 8; - octetptr++; - /* declare second octet as least significant */ - src |= (*octetptr); - octetptr++; - acc += src; - len -= 2; - } - if (len > 0) { - /* accumulate remaining octet */ - src = (*octetptr) << 8; - acc += src; - } - /* add deferred carry bits */ - acc = (acc >> 16) + (acc & 0x0000ffffUL); - if ((acc & 0xffff0000UL) != 0) { - acc = (acc >> 16) + (acc & 0x0000ffffUL); - } - /* This maybe a little confusing: reorder sum using htons() - instead of ntohs() since it has a little less call overhead. - The caller must invert bits for Internet sum ! */ - return htons((u16_t)acc); -} -#endif - -#if (LWIP_CHKSUM_ALGORITHM == 2) /* Alternative version #2 */ -/* - * Curt McDowell - * Broadcom Corp. - * csm@broadcom.com - * - * IP checksum two bytes at a time with support for - * unaligned buffer. - * Works for len up to and including 0x20000. - * by Curt McDowell, Broadcom Corp. 12/08/2005 - * - * @param dataptr points to start of data to be summed at any boundary - * @param len length of data to be summed - * @return host order (!) lwip checksum (non-inverted Internet sum) - */ - -static u16_t -lwip_standard_chksum(void *dataptr, int len) -{ - u8_t *pb = dataptr; - u16_t *ps, t = 0; - u32_t sum = 0; - int odd = ((u32_t)pb & 1); - - /* Get aligned to u16_t */ - if (odd && len > 0) { - ((u8_t *)&t)[1] = *pb++; - len--; - } - - /* Add the bulk of the data */ - ps = (u16_t *)pb; - while (len > 1) { - sum += *ps++; - len -= 2; - } - - /* Consume left-over byte, if any */ - if (len > 0) { - ((u8_t *)&t)[0] = *(u8_t *)ps;; - } - - /* Add end bytes */ - sum += t; - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - sum = FOLD_U32T(sum); - sum = FOLD_U32T(sum); - - /* Swap if alignment was odd */ - if (odd) { - sum = SWAP_BYTES_IN_WORD(sum); - } - - return sum; -} -#endif - -#if (LWIP_CHKSUM_ALGORITHM == 3) /* Alternative version #3 */ -/** - * An optimized checksum routine. Basically, it uses loop-unrolling on - * the checksum loop, treating the head and tail bytes specially, whereas - * the inner loop acts on 8 bytes at a time. - * - * @arg start of buffer to be checksummed. May be an odd byte address. - * @len number of bytes in the buffer to be checksummed. - * @return host order (!) lwip checksum (non-inverted Internet sum) - * - * by Curt McDowell, Broadcom Corp. December 8th, 2005 - */ - -static u16_t -lwip_standard_chksum(void *dataptr, int len) -{ - u8_t *pb = dataptr; - u16_t *ps, t = 0; - u32_t *pl; - u32_t sum = 0, tmp; - /* starts at odd byte address? */ - int odd = ((u32_t)pb & 1); - - if (odd && len > 0) { - ((u8_t *)&t)[1] = *pb++; - len--; - } - - ps = (u16_t *)pb; - - if (((u32_t)ps & 3) && len > 1) { - sum += *ps++; - len -= 2; - } - - pl = (u32_t *)ps; - - while (len > 7) { - tmp = sum + *pl++; /* ping */ - if (tmp < sum) { - tmp++; /* add back carry */ - } - - sum = tmp + *pl++; /* pong */ - if (sum < tmp) { - sum++; /* add back carry */ - } - - len -= 8; - } - - /* make room in upper bits */ - sum = FOLD_U32T(sum); - - ps = (u16_t *)pl; - - /* 16-bit aligned word remaining? */ - while (len > 1) { - sum += *ps++; - len -= 2; - } - - /* dangling tail byte remaining? */ - if (len > 0) { /* include odd byte */ - ((u8_t *)&t)[0] = *(u8_t *)ps; - } - - sum += t; /* add end bytes */ - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - sum = FOLD_U32T(sum); - sum = FOLD_U32T(sum); - - if (odd) { - sum = SWAP_BYTES_IN_WORD(sum); - } - - return sum; -} -#endif - -/* inet_chksum_pseudo: - * - * Calculates the pseudo Internet checksum used by TCP and UDP for a pbuf chain. - * IP addresses are expected to be in network byte order. - * - * @param p chain of pbufs over that a checksum should be calculated (ip data part) - * @param src source ip address (used for checksum of pseudo header) - * @param dst destination ip address (used for checksum of pseudo header) - * @param proto ip protocol (used for checksum of pseudo header) - * @param proto_len length of the ip data part (used for checksum of pseudo header) - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -u16_t -inet_chksum_pseudo(struct pbuf *p, - struct ip_addr *src, struct ip_addr *dest, - u8_t proto, u16_t proto_len) -{ - u32_t acc; - struct pbuf *q; - u8_t swapped; - - acc = 0; - swapped = 0; - /* iterate through all pbuf in chain */ - for(q = p; q != NULL; q = q->next) { - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n", - (void *)q, (void *)q->next)); - acc += LWIP_CHKSUM(q->payload, q->len); - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/ - /* just executing this next line is probably faster that the if statement needed - to check whether we really need to execute it, and does no harm */ - acc = FOLD_U32T(acc); - if (q->len % 2 != 0) { - swapped = 1 - swapped; - acc = SWAP_BYTES_IN_WORD(acc); - } - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/ - } - - if (swapped) { - acc = SWAP_BYTES_IN_WORD(acc); - } - acc += (src->addr & 0xffffUL); - acc += ((src->addr >> 16) & 0xffffUL); - acc += (dest->addr & 0xffffUL); - acc += ((dest->addr >> 16) & 0xffffUL); - acc += (u32_t)htons((u16_t)proto); - acc += (u32_t)htons(proto_len); - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - acc = FOLD_U32T(acc); - acc = FOLD_U32T(acc); - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc)); - return (u16_t)~(acc & 0xffffUL); -} - -/* inet_chksum_pseudo: - * - * Calculates the pseudo Internet checksum used by TCP and UDP for a pbuf chain. - * IP addresses are expected to be in network byte order. - * - * @param p chain of pbufs over that a checksum should be calculated (ip data part) - * @param src source ip address (used for checksum of pseudo header) - * @param dst destination ip address (used for checksum of pseudo header) - * @param proto ip protocol (used for checksum of pseudo header) - * @param proto_len length of the ip data part (used for checksum of pseudo header) - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -/* Currently only used by UDPLITE, although this could change in the future. */ -#if LWIP_UDPLITE -u16_t -inet_chksum_pseudo_partial(struct pbuf *p, - struct ip_addr *src, struct ip_addr *dest, - u8_t proto, u16_t proto_len, u16_t chksum_len) -{ - u32_t acc; - struct pbuf *q; - u8_t swapped; - u16_t chklen; - - acc = 0; - swapped = 0; - /* iterate through all pbuf in chain */ - for(q = p; (q != NULL) && (chksum_len > 0); q = q->next) { - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n", - (void *)q, (void *)q->next)); - chklen = q->len; - if (chklen > chksum_len) { - chklen = chksum_len; - } - acc += LWIP_CHKSUM(q->payload, chklen); - chksum_len -= chklen; - LWIP_ASSERT("delete me", chksum_len < 0x7fff); - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/ - /* fold the upper bit down */ - acc = FOLD_U32T(acc); - if (q->len % 2 != 0) { - swapped = 1 - swapped; - acc = SWAP_BYTES_IN_WORD(acc); - } - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/ - } - - if (swapped) { - acc = SWAP_BYTES_IN_WORD(acc); - } - acc += (src->addr & 0xffffUL); - acc += ((src->addr >> 16) & 0xffffUL); - acc += (dest->addr & 0xffffUL); - acc += ((dest->addr >> 16) & 0xffffUL); - acc += (u32_t)htons((u16_t)proto); - acc += (u32_t)htons(proto_len); - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - acc = FOLD_U32T(acc); - acc = FOLD_U32T(acc); - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc)); - return (u16_t)~(acc & 0xffffUL); -} -#endif /* LWIP_UDPLITE */ - -/* inet_chksum: - * - * Calculates the Internet checksum over a portion of memory. Used primarily for IP - * and ICMP. - * - * @param dataptr start of the buffer to calculate the checksum (no alignment needed) - * @param len length of the buffer to calculate the checksum - * @return checksum (as u16_t) to be saved directly in the protocol header - */ - -u16_t -inet_chksum(void *dataptr, u16_t len) -{ - return ~LWIP_CHKSUM(dataptr, len); -} - -/** - * Calculate a checksum over a chain of pbufs (without pseudo-header, much like - * inet_chksum only pbufs are used). - * - * @param p pbuf chain over that the checksum should be calculated - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -u16_t -inet_chksum_pbuf(struct pbuf *p) -{ - u32_t acc; - struct pbuf *q; - u8_t swapped; - - acc = 0; - swapped = 0; - for(q = p; q != NULL; q = q->next) { - acc += LWIP_CHKSUM(q->payload, q->len); - acc = FOLD_U32T(acc); - if (q->len % 2 != 0) { - swapped = 1 - swapped; - acc = SWAP_BYTES_IN_WORD(acc); - } - } - - if (swapped) { - acc = SWAP_BYTES_IN_WORD(acc); - } - return (u16_t)~(acc & 0xffffUL); -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c deleted file mode 100644 index a958242..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c +++ /dev/null @@ -1,725 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * This is the IPv4 layer implementation for incoming and outgoing IP traffic. - * - * @see ip_frag.c - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" -#include "lwip/ip.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/ip_frag.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/icmp.h" -#include "lwip/igmp.h" -#include "lwip/raw.h" -#include "lwip/udp.h" -#include "lwip/tcp.h" -#include "lwip/snmp.h" -#include "lwip/dhcp.h" -#include "lwip/stats.h" -#include "arch/perf.h" - -#include - -/** - * The interface that provided the packet for the current callback - * invocation. - */ -struct netif *current_netif; - -/** - * Header of the input packet currently being processed. - */ -const struct ip_hdr *current_header; - -/** - * Finds the appropriate network interface for a given IP address. It - * searches the list of network interfaces linearly. A match is found - * if the masked IP address of the network interface equals the masked - * IP address given to the function. - * - * @param dest the destination IP address for which to find the route - * @return the netif on which to send to reach dest - */ -struct netif * -ip_route(struct ip_addr *dest) -{ - struct netif *netif; - - /* iterate through netifs */ - for(netif = netif_list; netif != NULL; netif = netif->next) { - /* network mask matches? */ - if (netif_is_up(netif)) { - if (ip_addr_netcmp(dest, &(netif->ip_addr), &(netif->netmask))) { - /* return netif on which to forward IP packet */ - return netif; - } - } - } - if ((netif_default == NULL) || (!netif_is_up(netif_default))) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_route: No route to 0x%"X32_F"\n", dest->addr)); - IP_STATS_INC(ip.rterr); - snmp_inc_ipoutnoroutes(); - return NULL; - } - /* no matching netif found, use default netif */ - return netif_default; -} - -#if IP_FORWARD -/** - * Forwards an IP packet. It finds an appropriate route for the - * packet, decrements the TTL value of the packet, adjusts the - * checksum and outputs the packet on the appropriate interface. - * - * @param p the packet to forward (p->payload points to IP header) - * @param iphdr the IP header of the input packet - * @param inp the netif on which this packet was received - * @return the netif on which the packet was sent (NULL if it wasn't sent) - */ -static struct netif * -ip_forward(struct pbuf *p, struct ip_hdr *iphdr, struct netif *inp) -{ - struct netif *netif; - - PERF_START; - /* Find network interface where to forward this IP packet to. */ - netif = ip_route((struct ip_addr *)&(iphdr->dest)); - if (netif == NULL) { - LWIP_DEBUGF(IP_DEBUG, ("ip_forward: no forwarding route for 0x%"X32_F" found\n", - iphdr->dest.addr)); - snmp_inc_ipoutnoroutes(); - return (struct netif *)NULL; - } - /* Do not forward packets onto the same network interface on which - * they arrived. */ - if (netif == inp) { - LWIP_DEBUGF(IP_DEBUG, ("ip_forward: not bouncing packets back on incoming interface.\n")); - snmp_inc_ipoutnoroutes(); - return (struct netif *)NULL; - } - - /* decrement TTL */ - IPH_TTL_SET(iphdr, IPH_TTL(iphdr) - 1); - /* send ICMP if TTL == 0 */ - if (IPH_TTL(iphdr) == 0) { - snmp_inc_ipinhdrerrors(); -#if LWIP_ICMP - /* Don't send ICMP messages in response to ICMP messages */ - if (IPH_PROTO(iphdr) != IP_PROTO_ICMP) { - icmp_time_exceeded(p, ICMP_TE_TTL); - } -#endif /* LWIP_ICMP */ - return (struct netif *)NULL; - } - - /* Incrementally update the IP checksum. */ - if (IPH_CHKSUM(iphdr) >= htons(0xffff - 0x100)) { - IPH_CHKSUM_SET(iphdr, IPH_CHKSUM(iphdr) + htons(0x100) + 1); - } else { - IPH_CHKSUM_SET(iphdr, IPH_CHKSUM(iphdr) + htons(0x100)); - } - - LWIP_DEBUGF(IP_DEBUG, ("ip_forward: forwarding packet to 0x%"X32_F"\n", - iphdr->dest.addr)); - - IP_STATS_INC(ip.fw); - IP_STATS_INC(ip.xmit); - snmp_inc_ipforwdatagrams(); - - PERF_STOP("ip_forward"); - /* transmit pbuf on chosen interface */ - netif->output(netif, p, (struct ip_addr *)&(iphdr->dest)); - return netif; -} -#endif /* IP_FORWARD */ - -/** - * This function is called by the network interface device driver when - * an IP packet is received. The function does the basic checks of the - * IP header such as packet size being at least larger than the header - * size etc. If the packet was not destined for us, the packet is - * forwarded (using ip_forward). The IP checksum is always checked. - * - * Finally, the packet is sent to the upper layer protocol input function. - * - * @param p the received IP packet (p->payload points to IP header) - * @param inp the netif on which this packet was received - * @return ERR_OK if the packet was processed (could return ERR_* if it wasn't - * processed, but currently always returns ERR_OK) - */ -err_t -ip_input(struct pbuf *p, struct netif *inp) -{ - struct ip_hdr *iphdr; - struct netif *netif; - u16_t iphdr_hlen; - u16_t iphdr_len; -#if LWIP_DHCP - int check_ip_src=1; -#endif /* LWIP_DHCP */ - - IP_STATS_INC(ip.recv); - snmp_inc_ipinreceives(); - - /* identify the IP header */ - iphdr = p->payload; - if (IPH_V(iphdr) != 4) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IP packet dropped due to bad version number %"U16_F"\n", IPH_V(iphdr))); - ip_debug_print(p); - pbuf_free(p); - IP_STATS_INC(ip.err); - IP_STATS_INC(ip.drop); - snmp_inc_ipinhdrerrors(); - return ERR_OK; - } - - /* obtain IP header length in number of 32-bit words */ - iphdr_hlen = IPH_HL(iphdr); - /* calculate IP header length in bytes */ - iphdr_hlen *= 4; - /* obtain ip length in bytes */ - iphdr_len = ntohs(IPH_LEN(iphdr)); - - /* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */ - if ((iphdr_hlen > p->len) || (iphdr_len > p->tot_len)) { - if (iphdr_hlen > p->len) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IP header (len %"U16_F") does not fit in first pbuf (len %"U16_F"), IP packet dropped.\n", - iphdr_hlen, p->len)); - } - if (iphdr_len > p->tot_len) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IP (len %"U16_F") is longer than pbuf (len %"U16_F"), IP packet dropped.\n", - iphdr_len, p->tot_len)); - } - /* free (drop) packet pbufs */ - pbuf_free(p); - IP_STATS_INC(ip.lenerr); - IP_STATS_INC(ip.drop); - snmp_inc_ipindiscards(); - return ERR_OK; - } - - /* verify checksum */ -#if CHECKSUM_CHECK_IP - if (inet_chksum(iphdr, iphdr_hlen) != 0) { - - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("Checksum (0x%"X16_F") failed, IP packet dropped.\n", inet_chksum(iphdr, iphdr_hlen))); - ip_debug_print(p); - pbuf_free(p); - IP_STATS_INC(ip.chkerr); - IP_STATS_INC(ip.drop); - snmp_inc_ipinhdrerrors(); - return ERR_OK; - } -#endif - - /* Trim pbuf. This should have been done at the netif layer, - * but we'll do it anyway just to be sure that its done. */ - pbuf_realloc(p, iphdr_len); - - /* match packet against an interface, i.e. is this packet for us? */ -#if LWIP_IGMP - if (ip_addr_ismulticast(&(iphdr->dest))) { - if ((inp->flags & NETIF_FLAG_IGMP) && (igmp_lookfor_group(inp, &(iphdr->dest)))) { - netif = inp; - } else { - netif = NULL; - } - } else -#endif /* LWIP_IGMP */ - { - /* start trying with inp. if that's not acceptable, start walking the - list of configured netifs. - 'first' is used as a boolean to mark whether we started walking the list */ - int first = 1; - netif = inp; - do { - LWIP_DEBUGF(IP_DEBUG, ("ip_input: iphdr->dest 0x%"X32_F" netif->ip_addr 0x%"X32_F" (0x%"X32_F", 0x%"X32_F", 0x%"X32_F")\n", - iphdr->dest.addr, netif->ip_addr.addr, - iphdr->dest.addr & netif->netmask.addr, - netif->ip_addr.addr & netif->netmask.addr, - iphdr->dest.addr & ~(netif->netmask.addr))); - - /* interface is up and configured? */ - if ((netif_is_up(netif)) && (!ip_addr_isany(&(netif->ip_addr)))) { - /* unicast to this interface address? */ - if (ip_addr_cmp(&(iphdr->dest), &(netif->ip_addr)) || - /* or broadcast on this interface network address? */ - ip_addr_isbroadcast(&(iphdr->dest), netif)) { - LWIP_DEBUGF(IP_DEBUG, ("ip_input: packet accepted on interface %c%c\n", - netif->name[0], netif->name[1])); - /* break out of for loop */ - break; - } - } - if (first) { - first = 0; - netif = netif_list; - } else { - netif = netif->next; - } - if (netif == inp) { - netif = netif->next; - } - } while(netif != NULL); - } - -#if LWIP_DHCP - /* Pass DHCP messages regardless of destination address. DHCP traffic is addressed - * using link layer addressing (such as Ethernet MAC) so we must not filter on IP. - * According to RFC 1542 section 3.1.1, referred by RFC 2131). - */ - if (netif == NULL) { - /* remote port is DHCP server? */ - if (IPH_PROTO(iphdr) == IP_PROTO_UDP) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: UDP packet to DHCP client port %"U16_F"\n", - ntohs(((struct udp_hdr *)((u8_t *)iphdr + iphdr_hlen))->dest))); - if (ntohs(((struct udp_hdr *)((u8_t *)iphdr + iphdr_hlen))->dest) == DHCP_CLIENT_PORT) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: DHCP packet accepted.\n")); - netif = inp; - check_ip_src = 0; - } - } - } -#endif /* LWIP_DHCP */ - - /* broadcast or multicast packet source address? Compliant with RFC 1122: 3.2.1.3 */ -#if LWIP_DHCP - /* DHCP servers need 0.0.0.0 to be allowed as source address (RFC 1.1.2.2: 3.2.1.3/a) */ - if (check_ip_src && (iphdr->src.addr != 0)) -#endif /* LWIP_DHCP */ - { if ((ip_addr_isbroadcast(&(iphdr->src), inp)) || - (ip_addr_ismulticast(&(iphdr->src)))) { - /* packet source is not valid */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("ip_input: packet source is not valid.\n")); - /* free (drop) packet pbufs */ - pbuf_free(p); - IP_STATS_INC(ip.drop); - snmp_inc_ipinaddrerrors(); - snmp_inc_ipindiscards(); - return ERR_OK; - } - } - - /* packet not for us? */ - if (netif == NULL) { - /* packet not for us, route or discard */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: packet not for us.\n")); -#if IP_FORWARD - /* non-broadcast packet? */ - if (!ip_addr_isbroadcast(&(iphdr->dest), inp)) { - /* try to forward IP packet on (other) interfaces */ - ip_forward(p, iphdr, inp); - } else -#endif /* IP_FORWARD */ - { - snmp_inc_ipinaddrerrors(); - snmp_inc_ipindiscards(); - } - pbuf_free(p); - return ERR_OK; - } - /* packet consists of multiple fragments? */ - if ((IPH_OFFSET(iphdr) & htons(IP_OFFMASK | IP_MF)) != 0) { -#if IP_REASSEMBLY /* packet fragment reassembly code present? */ - LWIP_DEBUGF(IP_DEBUG, ("IP packet is a fragment (id=0x%04"X16_F" tot_len=%"U16_F" len=%"U16_F" MF=%"U16_F" offset=%"U16_F"), calling ip_reass()\n", - ntohs(IPH_ID(iphdr)), p->tot_len, ntohs(IPH_LEN(iphdr)), !!(IPH_OFFSET(iphdr) & htons(IP_MF)), (ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK)*8)); - /* reassemble the packet*/ - p = ip_reass(p); - /* packet not fully reassembled yet? */ - if (p == NULL) { - return ERR_OK; - } - iphdr = p->payload; -#else /* IP_REASSEMBLY == 0, no packet fragment reassembly code present */ - pbuf_free(p); - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("IP packet dropped since it was fragmented (0x%"X16_F") (while IP_REASSEMBLY == 0).\n", - ntohs(IPH_OFFSET(iphdr)))); - IP_STATS_INC(ip.opterr); - IP_STATS_INC(ip.drop); - /* unsupported protocol feature */ - snmp_inc_ipinunknownprotos(); - return ERR_OK; -#endif /* IP_REASSEMBLY */ - } - -#if IP_OPTIONS_ALLOWED == 0 /* no support for IP options in the IP header? */ - -#if LWIP_IGMP - /* there is an extra "router alert" option in IGMP messages which we allow for but do not police */ - if((iphdr_hlen > IP_HLEN && (IPH_PROTO(iphdr) != IP_PROTO_IGMP)) { -#else - if (iphdr_hlen > IP_HLEN) { -#endif /* LWIP_IGMP */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("IP packet dropped since there were IP options (while IP_OPTIONS_ALLOWED == 0).\n")); - pbuf_free(p); - IP_STATS_INC(ip.opterr); - IP_STATS_INC(ip.drop); - /* unsupported protocol feature */ - snmp_inc_ipinunknownprotos(); - return ERR_OK; - } -#endif /* IP_OPTIONS_ALLOWED == 0 */ - - /* send to upper layers */ - LWIP_DEBUGF(IP_DEBUG, ("ip_input: \n")); - ip_debug_print(p); - LWIP_DEBUGF(IP_DEBUG, ("ip_input: p->len %"U16_F" p->tot_len %"U16_F"\n", p->len, p->tot_len)); - - current_netif = inp; - current_header = iphdr; - -#if LWIP_RAW - /* raw input did not eat the packet? */ - if (raw_input(p, inp) == 0) -#endif /* LWIP_RAW */ - { - - switch (IPH_PROTO(iphdr)) { -#if LWIP_UDP - case IP_PROTO_UDP: -#if LWIP_UDPLITE - case IP_PROTO_UDPLITE: -#endif /* LWIP_UDPLITE */ - snmp_inc_ipindelivers(); - udp_input(p, inp); - break; -#endif /* LWIP_UDP */ -#if LWIP_TCP - case IP_PROTO_TCP: - snmp_inc_ipindelivers(); - tcp_input(p, inp); - break; -#endif /* LWIP_TCP */ -#if LWIP_ICMP - case IP_PROTO_ICMP: - snmp_inc_ipindelivers(); - icmp_input(p, inp); - break; -#endif /* LWIP_ICMP */ -#if LWIP_IGMP - case IP_PROTO_IGMP: - igmp_input(p,inp,&(iphdr->dest)); - break; -#endif /* LWIP_IGMP */ - default: -#if LWIP_ICMP - /* send ICMP destination protocol unreachable unless is was a broadcast */ - if (!ip_addr_isbroadcast(&(iphdr->dest), inp) && - !ip_addr_ismulticast(&(iphdr->dest))) { - p->payload = iphdr; - icmp_dest_unreach(p, ICMP_DUR_PROTO); - } -#endif /* LWIP_ICMP */ - pbuf_free(p); - - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("Unsupported transport protocol %"U16_F"\n", IPH_PROTO(iphdr))); - - IP_STATS_INC(ip.proterr); - IP_STATS_INC(ip.drop); - snmp_inc_ipinunknownprotos(); - } - } - - current_netif = NULL; - current_header = NULL; - - return ERR_OK; -} - -/** - * Sends an IP packet on a network interface. This function constructs - * the IP header and calculates the IP header checksum. If the source - * IP address is NULL, the IP address of the outgoing network - * interface is filled in as source address. - * If the destination IP address is IP_HDRINCL, p is assumed to already - * include an IP header and p->payload points to it instead of the data. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param tos the TOS value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * @param netif the netif on which to send this packet - * @return ERR_OK if the packet was sent OK - * ERR_BUF if p doesn't have enough space for IP/LINK headers - * returns errors returned by netif->output - * - * @note ip_id: RFC791 "some host may be able to simply use - * unique identifiers independent of destination" - */ -err_t -ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, - u8_t proto, struct netif *netif) -{ -#if IP_OPTIONS_SEND - return ip_output_if_opt(p, src, dest, ttl, tos, proto, netif, NULL, 0); -} - -/** - * Same as ip_output_if() but with the possibility to include IP options: - * - * @ param ip_options pointer to the IP options, copied into the IP header - * @ param optlen length of ip_options - */ -err_t ip_output_if_opt(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options, - u16_t optlen) -{ -#endif /* IP_OPTIONS_SEND */ - struct ip_hdr *iphdr; - static u16_t ip_id = 0; - - snmp_inc_ipoutrequests(); - - /* Should the IP header be generated or is it already included in p? */ - if (dest != IP_HDRINCL) { - u16_t ip_hlen = IP_HLEN; -#if IP_OPTIONS_SEND - u16_t optlen_aligned = 0; - if (optlen != 0) { - /* round up to a multiple of 4 */ - optlen_aligned = ((optlen + 3) & ~3); - ip_hlen += optlen_aligned; - /* First write in the IP options */ - if (pbuf_header(p, optlen_aligned)) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_output_if_opt: not enough room for IP options in pbuf\n")); - IP_STATS_INC(ip.err); - snmp_inc_ipoutdiscards(); - return ERR_BUF; - } - MEMCPY(p->payload, ip_options, optlen); - if (optlen < optlen_aligned) { - /* zero the remaining bytes */ - memset(((char*)p->payload) + optlen, 0, optlen_aligned - optlen); - } - } -#endif /* IP_OPTIONS_SEND */ - /* generate IP header */ - if (pbuf_header(p, IP_HLEN)) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_output: not enough room for IP header in pbuf\n")); - - IP_STATS_INC(ip.err); - snmp_inc_ipoutdiscards(); - return ERR_BUF; - } - - iphdr = p->payload; - LWIP_ASSERT("check that first pbuf can hold struct ip_hdr", - (p->len >= sizeof(struct ip_hdr))); - - IPH_TTL_SET(iphdr, ttl); - IPH_PROTO_SET(iphdr, proto); - - ip_addr_set(&(iphdr->dest), dest); - - IPH_VHLTOS_SET(iphdr, 4, ip_hlen / 4, tos); - IPH_LEN_SET(iphdr, htons(p->tot_len)); - IPH_OFFSET_SET(iphdr, 0); - IPH_ID_SET(iphdr, htons(ip_id)); - ++ip_id; - - if (ip_addr_isany(src)) { - ip_addr_set(&(iphdr->src), &(netif->ip_addr)); - } else { - ip_addr_set(&(iphdr->src), src); - } - - IPH_CHKSUM_SET(iphdr, 0); -#if CHECKSUM_GEN_IP - IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, ip_hlen)); -#endif - } else { - /* IP header already included in p */ - iphdr = p->payload; - dest = &(iphdr->dest); - } - - IP_STATS_INC(ip.xmit); - - LWIP_DEBUGF(IP_DEBUG, ("ip_output_if: %c%c%"U16_F"\n", netif->name[0], netif->name[1], netif->num)); - ip_debug_print(p); - -#if ENABLE_LOOPBACK - if (ip_addr_cmp(dest, &netif->ip_addr)) { - /* Packet to self, enqueue it for loopback */ - LWIP_DEBUGF(IP_DEBUG, ("netif_loop_output()")); - return netif_loop_output(netif, p, dest); - } -#endif /* ENABLE_LOOPBACK */ -#if IP_FRAG - /* don't fragment if interface has mtu set to 0 [loopif] */ - if (netif->mtu && (p->tot_len > netif->mtu)) { - return ip_frag(p,netif,dest); - } -#endif - - LWIP_DEBUGF(IP_DEBUG, ("netif->output()")); - return netif->output(netif, p, dest); -} - -/** - * Simple interface to ip_output_if. It finds the outgoing network - * interface and calls upon ip_output_if to do the actual work. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param tos the TOS value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * - * @return ERR_RTE if no route is found - * see ip_output_if() for more return values - */ -err_t -ip_output(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto) -{ - struct netif *netif; - - if ((netif = ip_route(dest)) == NULL) { - LWIP_DEBUGF(IP_DEBUG, ("ip_output: No route to 0x%"X32_F"\n", dest->addr)); - IP_STATS_INC(ip.rterr); - return ERR_RTE; - } - - return ip_output_if(p, src, dest, ttl, tos, proto, netif); -} - -#if LWIP_NETIF_HWADDRHINT -/** Like ip_output, but takes and addr_hint pointer that is passed on to netif->addr_hint - * before calling ip_output_if. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param tos the TOS value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * @param addr_hint address hint pointer set to netif->addr_hint before - * calling ip_output_if() - * - * @return ERR_RTE if no route is found - * see ip_output_if() for more return values - */ -err_t -ip_output_hinted(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto, u8_t *addr_hint) -{ - struct netif *netif; - err_t err; - - if ((netif = ip_route(dest)) == NULL) { - LWIP_DEBUGF(IP_DEBUG, ("ip_output: No route to 0x%"X32_F"\n", dest->addr)); - IP_STATS_INC(ip.rterr); - return ERR_RTE; - } - - netif->addr_hint = addr_hint; - err = ip_output_if(p, src, dest, ttl, tos, proto, netif); - netif->addr_hint = NULL; - - return err; -} -#endif /* LWIP_NETIF_HWADDRHINT*/ - -#if IP_DEBUG -/* Print an IP header by using LWIP_DEBUGF - * @param p an IP packet, p->payload pointing to the IP header - */ -void -ip_debug_print(struct pbuf *p) -{ - struct ip_hdr *iphdr = p->payload; - u8_t *payload; - - payload = (u8_t *)iphdr + IP_HLEN; - - LWIP_DEBUGF(IP_DEBUG, ("IP header:\n")); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("|%2"S16_F" |%2"S16_F" | 0x%02"X16_F" | %5"U16_F" | (v, hl, tos, len)\n", - IPH_V(iphdr), - IPH_HL(iphdr), - IPH_TOS(iphdr), - ntohs(IPH_LEN(iphdr)))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %5"U16_F" |%"U16_F"%"U16_F"%"U16_F"| %4"U16_F" | (id, flags, offset)\n", - ntohs(IPH_ID(iphdr)), - ntohs(IPH_OFFSET(iphdr)) >> 15 & 1, - ntohs(IPH_OFFSET(iphdr)) >> 14 & 1, - ntohs(IPH_OFFSET(iphdr)) >> 13 & 1, - ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK)); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | 0x%04"X16_F" | (ttl, proto, chksum)\n", - IPH_TTL(iphdr), - IPH_PROTO(iphdr), - ntohs(IPH_CHKSUM(iphdr)))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | %3"U16_F" | %3"U16_F" | (src)\n", - ip4_addr1(&iphdr->src), - ip4_addr2(&iphdr->src), - ip4_addr3(&iphdr->src), - ip4_addr4(&iphdr->src))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | %3"U16_F" | %3"U16_F" | (dest)\n", - ip4_addr1(&iphdr->dest), - ip4_addr2(&iphdr->dest), - ip4_addr3(&iphdr->dest), - ip4_addr4(&iphdr->dest))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); -} -#endif /* IP_DEBUG */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c deleted file mode 100644 index 33e0aad..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c +++ /dev/null @@ -1,86 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * This is the IPv4 address tools implementation. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" -#include "lwip/ip_addr.h" -#include "lwip/inet.h" -#include "lwip/netif.h" - -#define IP_ADDR_ANY_VALUE 0x00000000UL -#define IP_ADDR_BROADCAST_VALUE 0xffffffffUL - -/* used by IP_ADDR_ANY and IP_ADDR_BROADCAST in ip_addr.h */ -const struct ip_addr ip_addr_any = { IP_ADDR_ANY_VALUE }; -const struct ip_addr ip_addr_broadcast = { IP_ADDR_BROADCAST_VALUE }; - -/** - * Determine if an address is a broadcast address on a network interface - * - * @param addr address to be checked - * @param netif the network interface against which the address is checked - * @return returns non-zero if the address is a broadcast address - */ -u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif) -{ - u32_t addr2test; - - addr2test = addr->addr; - /* all ones (broadcast) or all zeroes (old skool broadcast) */ - if ((~addr2test == IP_ADDR_ANY_VALUE) || - (addr2test == IP_ADDR_ANY_VALUE)) - return 1; - /* no broadcast support on this network interface? */ - else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) - /* the given address cannot be a broadcast address - * nor can we check against any broadcast addresses */ - return 0; - /* address matches network interface address exactly? => no broadcast */ - else if (addr2test == netif->ip_addr.addr) - return 0; - /* on the same (sub) network... */ - else if (ip_addr_netcmp(addr, &(netif->ip_addr), &(netif->netmask)) - /* ...and host identifier bits are all ones? =>... */ - && ((addr2test & ~netif->netmask.addr) == - (IP_ADDR_BROADCAST_VALUE & ~netif->netmask.addr))) - /* => network broadcast address */ - return 1; - else - return 0; -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c deleted file mode 100644 index ab35572..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c +++ /dev/null @@ -1,794 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * This is the IPv4 packet segmentation and reassembly implementation. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Jani Monoses - * Simon Goldschmidt - * original reassembly code by Adam Dunkels - * - */ - -#include "lwip/opt.h" -#include "lwip/ip_frag.h" -#include "lwip/ip.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/snmp.h" -#include "lwip/stats.h" -#include "lwip/icmp.h" - -#include - -#if IP_REASSEMBLY -/** - * The IP reassembly code currently has the following limitations: - * - IP header options are not supported - * - fragments must not overlap (e.g. due to different routes), - * currently, overlapping or duplicate fragments are thrown away - * if IP_REASS_CHECK_OVERLAP=1 (the default)! - * - * @todo: work with IP header options - */ - -/** Setting this to 0, you can turn off checking the fragments for overlapping - * regions. The code gets a little smaller. Only use this if you know that - * overlapping won't occur on your network! */ -#ifndef IP_REASS_CHECK_OVERLAP -#define IP_REASS_CHECK_OVERLAP 1 -#endif /* IP_REASS_CHECK_OVERLAP */ - -/** Set to 0 to prevent freeing the oldest datagram when the reassembly buffer is - * full (IP_REASS_MAX_PBUFS pbufs are enqueued). The code gets a little smaller. - * Datagrams will be freed by timeout only. Especially useful when MEMP_NUM_REASSDATA - * is set to 1, so one datagram can be reassembled at a time, only. */ -#ifndef IP_REASS_FREE_OLDEST -#define IP_REASS_FREE_OLDEST 1 -#endif /* IP_REASS_FREE_OLDEST */ - -#define IP_REASS_FLAG_LASTFRAG 0x01 - -/** This is a helper struct which holds the starting - * offset and the ending offset of this fragment to - * easily chain the fragments. - * It has to be packed since it has to fit inside the IP header. - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_reass_helper { - PACK_STRUCT_FIELD(struct pbuf *next_pbuf); - PACK_STRUCT_FIELD(u16_t start); - PACK_STRUCT_FIELD(u16_t end); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define IP_ADDRESSES_AND_ID_MATCH(iphdrA, iphdrB) \ - (ip_addr_cmp(&(iphdrA)->src, &(iphdrB)->src) && \ - ip_addr_cmp(&(iphdrA)->dest, &(iphdrB)->dest) && \ - IPH_ID(iphdrA) == IPH_ID(iphdrB)) ? 1 : 0 - -/* global variables */ -static struct ip_reassdata *reassdatagrams; -static u16_t ip_reass_pbufcount; - -/* function prototypes */ -static void ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev); -static int ip_reass_free_complete_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev); - -/** - * Reassembly timer base function - * for both NO_SYS == 0 and 1 (!). - * - * Should be called every 1000 msec (defined by IP_TMR_INTERVAL). - */ -void -ip_reass_tmr(void) -{ - struct ip_reassdata *r, *prev = NULL; - - r = reassdatagrams; - while (r != NULL) { - /* Decrement the timer. Once it reaches 0, - * clean up the incomplete fragment assembly */ - if (r->timer > 0) { - r->timer--; - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer dec %"U16_F"\n",(u16_t)r->timer)); - prev = r; - r = r->next; - } else { - /* reassembly timed out */ - struct ip_reassdata *tmp; - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer timed out\n")); - tmp = r; - /* get the next pointer before freeing */ - r = r->next; - /* free the helper struct and all enqueued pbufs */ - ip_reass_free_complete_datagram(tmp, prev); - } - } -} - -/** - * Free a datagram (struct ip_reassdata) and all its pbufs. - * Updates the total count of enqueued pbufs (ip_reass_pbufcount), - * SNMP counters and sends an ICMP time exceeded packet. - * - * @param ipr datagram to free - * @param prev the previous datagram in the linked list - * @return the number of pbufs freed - */ -static int -ip_reass_free_complete_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev) -{ - int pbufs_freed = 0; - struct pbuf *p; - struct ip_reass_helper *iprh; - - LWIP_ASSERT("prev != ipr", prev != ipr); - if (prev != NULL) { - LWIP_ASSERT("prev->next == ipr", prev->next == ipr); - } - - snmp_inc_ipreasmfails(); -#if LWIP_ICMP - iprh = (struct ip_reass_helper *)ipr->p->payload; - if (iprh->start == 0) { - /* The first fragment was received, send ICMP time exceeded. */ - /* First, de-queue the first pbuf from r->p. */ - p = ipr->p; - ipr->p = iprh->next_pbuf; - /* Then, copy the original header into it. */ - SMEMCPY(p->payload, &ipr->iphdr, IP_HLEN); - icmp_time_exceeded(p, ICMP_TE_FRAG); - pbufs_freed += pbuf_clen(p); - pbuf_free(p); - } -#endif /* LWIP_ICMP */ - - /* First, free all received pbufs. The individual pbufs need to be released - separately as they have not yet been chained */ - p = ipr->p; - while (p != NULL) { - struct pbuf *pcur; - iprh = (struct ip_reass_helper *)p->payload; - pcur = p; - /* get the next pointer before freeing */ - p = iprh->next_pbuf; - pbufs_freed += pbuf_clen(pcur); - pbuf_free(pcur); - } - /* Then, unchain the struct ip_reassdata from the list and free it. */ - ip_reass_dequeue_datagram(ipr, prev); - LWIP_ASSERT("ip_reass_pbufcount >= clen", ip_reass_pbufcount >= pbufs_freed); - ip_reass_pbufcount -= pbufs_freed; - - return pbufs_freed; -} - -#if IP_REASS_FREE_OLDEST -/** - * Free the oldest datagram to make room for enqueueing new fragments. - * The datagram 'fraghdr' belongs to is not freed! - * - * @param fraghdr IP header of the current fragment - * @param pbufs_needed number of pbufs needed to enqueue - * (used for freeing other datagrams if not enough space) - * @return the number of pbufs freed - */ -static int -ip_reass_remove_oldest_datagram(struct ip_hdr *fraghdr, int pbufs_needed) -{ - /* @todo Can't we simply remove the last datagram in the - * linked list behind reassdatagrams? - */ - struct ip_reassdata *r, *oldest, *prev; - int pbufs_freed = 0, pbufs_freed_current; - int other_datagrams; - - /* Free datagrams until being allowed to enqueue 'pbufs_needed' pbufs, - * but don't free the datagram that 'fraghdr' belongs to! */ - do { - oldest = NULL; - prev = NULL; - other_datagrams = 0; - r = reassdatagrams; - while (r != NULL) { - if (!IP_ADDRESSES_AND_ID_MATCH(&r->iphdr, fraghdr)) { - /* Not the same datagram as fraghdr */ - other_datagrams++; - if (oldest == NULL) { - oldest = r; - } else if (r->timer <= oldest->timer) { - /* older than the previous oldest */ - oldest = r; - } - } - if (r->next != NULL) { - prev = r; - } - r = r->next; - } - if (oldest != NULL) { - pbufs_freed_current = ip_reass_free_complete_datagram(oldest, prev); - pbufs_freed += pbufs_freed_current; - } - } while ((pbufs_freed < pbufs_needed) && (other_datagrams > 1)); - return pbufs_freed; -} -#endif /* IP_REASS_FREE_OLDEST */ - -/** - * Enqueues a new fragment into the fragment queue - * @param fraghdr points to the new fragments IP hdr - * @param clen number of pbufs needed to enqueue (used for freeing other datagrams if not enough space) - * @return A pointer to the queue location into which the fragment was enqueued - */ -static struct ip_reassdata* -ip_reass_enqueue_new_datagram(struct ip_hdr *fraghdr, int clen) -{ - struct ip_reassdata* ipr; - /* No matching previous fragment found, allocate a new reassdata struct */ - ipr = memp_malloc(MEMP_REASSDATA); - if (ipr == NULL) { -#if IP_REASS_FREE_OLDEST - if (ip_reass_remove_oldest_datagram(fraghdr, clen) >= clen) { - ipr = memp_malloc(MEMP_REASSDATA); - } - if (ipr == NULL) -#endif /* IP_REASS_FREE_OLDEST */ - { - IPFRAG_STATS_INC(ip_frag.memerr); - LWIP_DEBUGF(IP_REASS_DEBUG,("Failed to alloc reassdata struct\n")); - return NULL; - } - } - memset(ipr, 0, sizeof(struct ip_reassdata)); - ipr->timer = IP_REASS_MAXAGE; - - /* enqueue the new structure to the front of the list */ - ipr->next = reassdatagrams; - reassdatagrams = ipr; - /* copy the ip header for later tests and input */ - /* @todo: no ip options supported? */ - SMEMCPY(&(ipr->iphdr), fraghdr, IP_HLEN); - return ipr; -} - -/** - * Dequeues a datagram from the datagram queue. Doesn't deallocate the pbufs. - * @param ipr points to the queue entry to dequeue - */ -static void -ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev) -{ - - /* dequeue the reass struct */ - if (reassdatagrams == ipr) { - /* it was the first in the list */ - reassdatagrams = ipr->next; - } else { - /* it wasn't the first, so it must have a valid 'prev' */ - LWIP_ASSERT("sanity check linked list", prev != NULL); - prev->next = ipr->next; - } - - /* now we can free the ip_reass struct */ - memp_free(MEMP_REASSDATA, ipr); -} - -/** - * Chain a new pbuf into the pbuf list that composes the datagram. The pbuf list - * will grow over time as new pbufs are rx. - * Also checks that the datagram passes basic continuity checks (if the last - * fragment was received at least once). - * @param root_p points to the 'root' pbuf for the current datagram being assembled. - * @param new_p points to the pbuf for the current fragment - * @return 0 if invalid, >0 otherwise - */ -static int -ip_reass_chain_frag_into_datagram_and_validate(struct ip_reassdata *ipr, struct pbuf *new_p) -{ - struct ip_reass_helper *iprh, *iprh_tmp, *iprh_prev=NULL; - struct pbuf *q; - u16_t offset,len; - struct ip_hdr *fraghdr; - int valid = 1; - - /* Extract length and fragment offset from current fragment */ - fraghdr = (struct ip_hdr*)new_p->payload; - len = ntohs(IPH_LEN(fraghdr)) - IPH_HL(fraghdr) * 4; - offset = (ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) * 8; - - /* overwrite the fragment's ip header from the pbuf with our helper struct, - * and setup the embedded helper structure. */ - /* make sure the struct ip_reass_helper fits into the IP header */ - LWIP_ASSERT("sizeof(struct ip_reass_helper) <= IP_HLEN", - sizeof(struct ip_reass_helper) <= IP_HLEN); - iprh = (struct ip_reass_helper*)new_p->payload; - iprh->next_pbuf = NULL; - iprh->start = offset; - iprh->end = offset + len; - - /* Iterate through until we either get to the end of the list (append), - * or we find on with a larger offset (insert). */ - for (q = ipr->p; q != NULL;) { - iprh_tmp = (struct ip_reass_helper*)q->payload; - if (iprh->start < iprh_tmp->start) { - /* the new pbuf should be inserted before this */ - iprh->next_pbuf = q; - if (iprh_prev != NULL) { - /* not the fragment with the lowest offset */ -#if IP_REASS_CHECK_OVERLAP - if ((iprh->start < iprh_prev->end) || (iprh->end > iprh_tmp->start)) { - /* fragment overlaps with previous or following, throw away */ - goto freepbuf; - } -#endif /* IP_REASS_CHECK_OVERLAP */ - iprh_prev->next_pbuf = new_p; - } else { - /* fragment with the lowest offset */ - ipr->p = new_p; - } - break; - } else if(iprh->start == iprh_tmp->start) { - /* received the same datagram twice: no need to keep the datagram */ - goto freepbuf; -#if IP_REASS_CHECK_OVERLAP - } else if(iprh->start < iprh_tmp->end) { - /* overlap: no need to keep the new datagram */ - goto freepbuf; -#endif /* IP_REASS_CHECK_OVERLAP */ - } else { - /* Check if the fragments received so far have no wholes. */ - if (iprh_prev != NULL) { - if (iprh_prev->end != iprh_tmp->start) { - /* There is a fragment missing between the current - * and the previous fragment */ - valid = 0; - } - } - } - q = iprh_tmp->next_pbuf; - iprh_prev = iprh_tmp; - } - - /* If q is NULL, then we made it to the end of the list. Determine what to do now */ - if (q == NULL) { - if (iprh_prev != NULL) { - /* this is (for now), the fragment with the highest offset: - * chain it to the last fragment */ -#if IP_REASS_CHECK_OVERLAP - LWIP_ASSERT("check fragments don't overlap", iprh_prev->end <= iprh->start); -#endif /* IP_REASS_CHECK_OVERLAP */ - iprh_prev->next_pbuf = new_p; - if (iprh_prev->end != iprh->start) { - valid = 0; - } - } else { -#if IP_REASS_CHECK_OVERLAP - LWIP_ASSERT("no previous fragment, this must be the first fragment!", - ipr->p == NULL); -#endif /* IP_REASS_CHECK_OVERLAP */ - /* this is the first fragment we ever received for this ip datagram */ - ipr->p = new_p; - } - } - - /* At this point, the validation part begins: */ - /* If we already received the last fragment */ - if ((ipr->flags & IP_REASS_FLAG_LASTFRAG) != 0) { - /* and had no wholes so far */ - if (valid) { - /* then check if the rest of the fragments is here */ - /* Check if the queue starts with the first datagram */ - if (((struct ip_reass_helper*)ipr->p->payload)->start != 0) { - valid = 0; - } else { - /* and check that there are no wholes after this datagram */ - iprh_prev = iprh; - q = iprh->next_pbuf; - while (q != NULL) { - iprh = (struct ip_reass_helper*)q->payload; - if (iprh_prev->end != iprh->start) { - valid = 0; - break; - } - iprh_prev = iprh; - q = iprh->next_pbuf; - } - /* if still valid, all fragments are received - * (because to the MF==0 already arrived */ - if (valid) { - LWIP_ASSERT("sanity check", ipr->p != NULL); - LWIP_ASSERT("sanity check", - ((struct ip_reass_helper*)ipr->p->payload) != iprh); - LWIP_ASSERT("validate_datagram:next_pbuf!=NULL", - iprh->next_pbuf == NULL); - LWIP_ASSERT("validate_datagram:datagram end!=datagram len", - iprh->end == ipr->datagram_len); - } - } - } - /* If valid is 0 here, there are some fragments missing in the middle - * (since MF == 0 has already arrived). Such datagrams simply time out if - * no more fragments are received... */ - return valid; - } - /* If we come here, not all fragments were received, yet! */ - return 0; /* not yet valid! */ -#if IP_REASS_CHECK_OVERLAP -freepbuf: - ip_reass_pbufcount -= pbuf_clen(new_p); - pbuf_free(new_p); - return 0; -#endif /* IP_REASS_CHECK_OVERLAP */ -} - -/** - * Reassembles incoming IP fragments into an IP datagram. - * - * @param p points to a pbuf chain of the fragment - * @return NULL if reassembly is incomplete, ? otherwise - */ -struct pbuf * -ip_reass(struct pbuf *p) -{ - struct pbuf *r; - struct ip_hdr *fraghdr; - struct ip_reassdata *ipr; - struct ip_reass_helper *iprh; - u16_t offset, len; - u8_t clen; - struct ip_reassdata *ipr_prev = NULL; - - IPFRAG_STATS_INC(ip_frag.recv); - snmp_inc_ipreasmreqds(); - - fraghdr = (struct ip_hdr*)p->payload; - - if ((IPH_HL(fraghdr) * 4) != IP_HLEN) { - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: IP options currently not supported!\n")); - IPFRAG_STATS_INC(ip_frag.err); - goto nullreturn; - } - - offset = (ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) * 8; - len = ntohs(IPH_LEN(fraghdr)) - IPH_HL(fraghdr) * 4; - - /* Check if we are allowed to enqueue more datagrams. */ - clen = pbuf_clen(p); - if ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) { -#if IP_REASS_FREE_OLDEST - if (!ip_reass_remove_oldest_datagram(fraghdr, clen) || - ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS)) -#endif /* IP_REASS_FREE_OLDEST */ - { - /* No datagram could be freed and still too many pbufs enqueued */ - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: Overflow condition: pbufct=%d, clen=%d, MAX=%d\n", - ip_reass_pbufcount, clen, IP_REASS_MAX_PBUFS)); - IPFRAG_STATS_INC(ip_frag.memerr); - /* @todo: send ICMP time exceeded here? */ - /* drop this pbuf */ - goto nullreturn; - } - } - - /* Look for the datagram the fragment belongs to in the current datagram queue, - * remembering the previous in the queue for later dequeueing. */ - for (ipr = reassdatagrams; ipr != NULL; ipr = ipr->next) { - /* Check if the incoming fragment matches the one currently present - in the reassembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if (IP_ADDRESSES_AND_ID_MATCH(&ipr->iphdr, fraghdr)) { - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass: matching previous fragment ID=%"X16_F"\n", - ntohs(IPH_ID(fraghdr)))); - IPFRAG_STATS_INC(ip_frag.cachehit); - break; - } - ipr_prev = ipr; - } - - if (ipr == NULL) { - /* Enqueue a new datagram into the datagram queue */ - ipr = ip_reass_enqueue_new_datagram(fraghdr, clen); - /* Bail if unable to enqueue */ - if(ipr == NULL) { - goto nullreturn; - } - } else { - if (((ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) == 0) && - ((ntohs(IPH_OFFSET(&ipr->iphdr)) & IP_OFFMASK) != 0)) { - /* ipr->iphdr is not the header from the first fragment, but fraghdr is - * -> copy fraghdr into ipr->iphdr since we want to have the header - * of the first fragment (for ICMP time exceeded and later, for copying - * all options, if supported)*/ - SMEMCPY(&ipr->iphdr, fraghdr, IP_HLEN); - } - } - /* Track the current number of pbufs current 'in-flight', in order to limit - the number of fragments that may be enqueued at any one time */ - ip_reass_pbufcount += clen; - - /* At this point, we have either created a new entry or pointing - * to an existing one */ - - /* check for 'no more fragments', and update queue entry*/ - if ((ntohs(IPH_OFFSET(fraghdr)) & IP_MF) == 0) { - ipr->flags |= IP_REASS_FLAG_LASTFRAG; - ipr->datagram_len = offset + len; - LWIP_DEBUGF(IP_REASS_DEBUG, - ("ip_reass: last fragment seen, total len %"S16_F"\n", - ipr->datagram_len)); - } - /* find the right place to insert this pbuf */ - /* @todo: trim pbufs if fragments are overlapping */ - if (ip_reass_chain_frag_into_datagram_and_validate(ipr, p)) { - /* the totally last fragment (flag more fragments = 0) was received at least - * once AND all fragments are received */ - ipr->datagram_len += IP_HLEN; - - /* save the second pbuf before copying the header over the pointer */ - r = ((struct ip_reass_helper*)ipr->p->payload)->next_pbuf; - - /* copy the original ip header back to the first pbuf */ - fraghdr = (struct ip_hdr*)(ipr->p->payload); - SMEMCPY(fraghdr, &ipr->iphdr, IP_HLEN); - IPH_LEN_SET(fraghdr, htons(ipr->datagram_len)); - IPH_OFFSET_SET(fraghdr, 0); - IPH_CHKSUM_SET(fraghdr, 0); - /* @todo: do we need to set calculate the correct checksum? */ - IPH_CHKSUM_SET(fraghdr, inet_chksum(fraghdr, IP_HLEN)); - - p = ipr->p; - - /* chain together the pbufs contained within the reass_data list. */ - while(r != NULL) { - iprh = (struct ip_reass_helper*)r->payload; - - /* hide the ip header for every succeding fragment */ - pbuf_header(r, -IP_HLEN); - pbuf_cat(p, r); - r = iprh->next_pbuf; - } - /* release the sources allocate for the fragment queue entry */ - ip_reass_dequeue_datagram(ipr, ipr_prev); - - /* and adjust the number of pbufs currently queued for reassembly. */ - ip_reass_pbufcount -= pbuf_clen(p); - - /* Return the pbuf chain */ - return p; - } - /* the datagram is not (yet?) reassembled completely */ - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass_pbufcount: %d out\n", ip_reass_pbufcount)); - return NULL; - -nullreturn: - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: nullreturn\n")); - IPFRAG_STATS_INC(ip_frag.drop); - pbuf_free(p); - return NULL; -} -#endif /* IP_REASSEMBLY */ - -#if IP_FRAG -#if IP_FRAG_USES_STATIC_BUF -static u8_t buf[LWIP_MEM_ALIGN_SIZE(IP_FRAG_MAX_MTU + MEM_ALIGNMENT - 1)]; -#endif /* IP_FRAG_USES_STATIC_BUF */ - -/** - * Fragment an IP datagram if too large for the netif. - * - * Chop the datagram in MTU sized chunks and send them in order - * by using a fixed size static memory buffer (PBUF_REF) or - * point PBUF_REFs into p (depending on IP_FRAG_USES_STATIC_BUF). - * - * @param p ip packet to send - * @param netif the netif on which to send - * @param dest destination ip address to which to send - * - * @return ERR_OK if sent successfully, err_t otherwise - */ -err_t -ip_frag(struct pbuf *p, struct netif *netif, struct ip_addr *dest) -{ - struct pbuf *rambuf; -#if IP_FRAG_USES_STATIC_BUF - struct pbuf *header; -#else - struct pbuf *newpbuf; - struct ip_hdr *original_iphdr; -#endif - struct ip_hdr *iphdr; - u16_t nfb; - u16_t left, cop; - u16_t mtu = netif->mtu; - u16_t ofo, omf; - u16_t last; - u16_t poff = IP_HLEN; - u16_t tmp; -#if !IP_FRAG_USES_STATIC_BUF - u16_t newpbuflen = 0; - u16_t left_to_copy; -#endif - - /* Get a RAM based MTU sized pbuf */ -#if IP_FRAG_USES_STATIC_BUF - /* When using a static buffer, we use a PBUF_REF, which we will - * use to reference the packet (without link header). - * Layer and length is irrelevant. - */ - rambuf = pbuf_alloc(PBUF_LINK, 0, PBUF_REF); - if (rambuf == NULL) { - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_frag: pbuf_alloc(PBUF_LINK, 0, PBUF_REF) failed\n")); - return ERR_MEM; - } - rambuf->tot_len = rambuf->len = mtu; - rambuf->payload = LWIP_MEM_ALIGN((void *)buf); - - /* Copy the IP header in it */ - iphdr = rambuf->payload; - SMEMCPY(iphdr, p->payload, IP_HLEN); -#else /* IP_FRAG_USES_STATIC_BUF */ - original_iphdr = p->payload; - iphdr = original_iphdr; -#endif /* IP_FRAG_USES_STATIC_BUF */ - - /* Save original offset */ - tmp = ntohs(IPH_OFFSET(iphdr)); - ofo = tmp & IP_OFFMASK; - omf = tmp & IP_MF; - - left = p->tot_len - IP_HLEN; - - nfb = (mtu - IP_HLEN) / 8; - - while (left) { - last = (left <= mtu - IP_HLEN); - - /* Set new offset and MF flag */ - tmp = omf | (IP_OFFMASK & (ofo)); - if (!last) - tmp = tmp | IP_MF; - - /* Fill this fragment */ - cop = last ? left : nfb * 8; - -#if IP_FRAG_USES_STATIC_BUF - poff += pbuf_copy_partial(p, (u8_t*)iphdr + IP_HLEN, cop, poff); -#else /* IP_FRAG_USES_STATIC_BUF */ - /* When not using a static buffer, create a chain of pbufs. - * The first will be a PBUF_RAM holding the link and IP header. - * The rest will be PBUF_REFs mirroring the pbuf chain to be fragged, - * but limited to the size of an mtu. - */ - rambuf = pbuf_alloc(PBUF_LINK, IP_HLEN, PBUF_RAM); - if (rambuf == NULL) { - return ERR_MEM; - } - LWIP_ASSERT("this needs a pbuf in one piece!", - (p->len >= (IP_HLEN))); - SMEMCPY(rambuf->payload, original_iphdr, IP_HLEN); - iphdr = rambuf->payload; - - /* Can just adjust p directly for needed offset. */ - p->payload = (u8_t *)p->payload + poff; - p->len -= poff; - - left_to_copy = cop; - while (left_to_copy) { - newpbuflen = (left_to_copy < p->len) ? left_to_copy : p->len; - /* Is this pbuf already empty? */ - if (!newpbuflen) { - p = p->next; - continue; - } - newpbuf = pbuf_alloc(PBUF_RAW, 0, PBUF_REF); - if (newpbuf == NULL) { - pbuf_free(rambuf); - return ERR_MEM; - } - /* Mirror this pbuf, although we might not need all of it. */ - newpbuf->payload = p->payload; - newpbuf->len = newpbuf->tot_len = newpbuflen; - /* Add it to end of rambuf's chain, but using pbuf_cat, not pbuf_chain - * so that it is removed when pbuf_dechain is later called on rambuf. - */ - pbuf_cat(rambuf, newpbuf); - left_to_copy -= newpbuflen; - if (left_to_copy) - p = p->next; - } - poff = newpbuflen; -#endif /* IP_FRAG_USES_STATIC_BUF */ - - /* Correct header */ - IPH_OFFSET_SET(iphdr, htons(tmp)); - IPH_LEN_SET(iphdr, htons(cop + IP_HLEN)); - IPH_CHKSUM_SET(iphdr, 0); - IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN)); - -#if IP_FRAG_USES_STATIC_BUF - if (last) - pbuf_realloc(rambuf, left + IP_HLEN); - - /* This part is ugly: we alloc a RAM based pbuf for - * the link level header for each chunk and then - * free it.A PBUF_ROM style pbuf for which pbuf_header - * worked would make things simpler. - */ - header = pbuf_alloc(PBUF_LINK, 0, PBUF_RAM); - if (header != NULL) { - pbuf_chain(header, rambuf); - netif->output(netif, header, dest); - IPFRAG_STATS_INC(ip_frag.xmit); - snmp_inc_ipfragcreates(); - pbuf_free(header); - } else { - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_frag: pbuf_alloc() for header failed\n")); - pbuf_free(rambuf); - return ERR_MEM; - } -#else /* IP_FRAG_USES_STATIC_BUF */ - /* No need for separate header pbuf - we allowed room for it in rambuf - * when allocated. - */ - netif->output(netif, rambuf, dest); - IPFRAG_STATS_INC(ip_frag.xmit); - - /* Unfortunately we can't reuse rambuf - the hardware may still be - * using the buffer. Instead we free it (and the ensuing chain) and - * recreate it next time round the loop. If we're lucky the hardware - * will have already sent the packet, the free will really free, and - * there will be zero memory penalty. - */ - - pbuf_free(rambuf); -#endif /* IP_FRAG_USES_STATIC_BUF */ - left -= cop; - ofo += nfb; - } -#if IP_FRAG_USES_STATIC_BUF - pbuf_free(rambuf); -#endif /* IP_FRAG_USES_STATIC_BUF */ - snmp_inc_ipfragoks(); - return ERR_OK; -} -#endif /* IP_FRAG */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/mem.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/mem.c deleted file mode 100644 index ea3f4a6..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/mem.c +++ /dev/null @@ -1,635 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Dynamic memory manager - * - * This is a lightweight replacement for the standard C library malloc(). - * - * If you want to use the standard C library malloc() instead, define - * MEM_LIBC_MALLOC to 1 in your lwipopts.h - * - * To let mem_malloc() use pools (prevents fragmentation and is much faster than - * a heap but might waste some memory), define MEM_USE_POOLS to 1, define - * MEM_USE_CUSTOM_POOLS to 1 and create a file "lwippools.h" that includes a list - * of pools like this (more pools can be added between _START and _END): - * - * Define three pools with sizes 256, 512, and 1512 bytes - * LWIP_MALLOC_MEMPOOL_START - * LWIP_MALLOC_MEMPOOL(20, 256) - * LWIP_MALLOC_MEMPOOL(10, 512) - * LWIP_MALLOC_MEMPOOL(5, 1512) - * LWIP_MALLOC_MEMPOOL_END - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * Simon Goldschmidt - * - */ - -#include "lwip/opt.h" - -#if !MEM_LIBC_MALLOC /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/sys.h" -#include "lwip/stats.h" - -#include - -#if MEM_USE_POOLS -/* lwIP head implemented with different sized pools */ - -/** - * Allocate memory: determine the smallest pool that is big enough - * to contain an element of 'size' and get an element from that pool. - * - * @param size the size in bytes of the memory needed - * @return a pointer to the allocated memory or NULL if the pool is empty - */ -void * -mem_malloc(mem_size_t size) -{ - struct memp_malloc_helper *element; - memp_t poolnr; - mem_size_t required_size = size + sizeof(struct memp_malloc_helper); - - for (poolnr = MEMP_POOL_FIRST; poolnr <= MEMP_POOL_LAST; poolnr++) { -#if MEM_USE_POOLS_TRY_BIGGER_POOL -again: -#endif /* MEM_USE_POOLS_TRY_BIGGER_POOL */ - /* is this pool big enough to hold an element of the required size - plus a struct memp_malloc_helper that saves the pool this element came from? */ - if (required_size <= memp_sizes[poolnr]) { - break; - } - } - if (poolnr > MEMP_POOL_LAST) { - LWIP_ASSERT("mem_malloc(): no pool is that big!", 0); - return NULL; - } - element = (struct memp_malloc_helper*)memp_malloc(poolnr); - if (element == NULL) { - /* No need to DEBUGF or ASSERT: This error is already - taken care of in memp.c */ -#if MEM_USE_POOLS_TRY_BIGGER_POOL - /** Try a bigger pool if this one is empty! */ - if (poolnr < MEMP_POOL_LAST) { - poolnr++; - goto again; - } -#endif /* MEM_USE_POOLS_TRY_BIGGER_POOL */ - return NULL; - } - - /* save the pool number this element came from */ - element->poolnr = poolnr; - /* and return a pointer to the memory directly after the struct memp_malloc_helper */ - element++; - - return element; -} - -/** - * Free memory previously allocated by mem_malloc. Loads the pool number - * and calls memp_free with that pool number to put the element back into - * its pool - * - * @param rmem the memory element to free - */ -void -mem_free(void *rmem) -{ - struct memp_malloc_helper *hmem = (struct memp_malloc_helper*)rmem; - - LWIP_ASSERT("rmem != NULL", (rmem != NULL)); - LWIP_ASSERT("rmem == MEM_ALIGN(rmem)", (rmem == LWIP_MEM_ALIGN(rmem))); - - /* get the original struct memp_malloc_helper */ - hmem--; - - LWIP_ASSERT("hmem != NULL", (hmem != NULL)); - LWIP_ASSERT("hmem == MEM_ALIGN(hmem)", (hmem == LWIP_MEM_ALIGN(hmem))); - LWIP_ASSERT("hmem->poolnr < MEMP_MAX", (hmem->poolnr < MEMP_MAX)); - - /* and put it in the pool we saved earlier */ - memp_free(hmem->poolnr, hmem); -} - -#else /* MEM_USE_POOLS */ -/* lwIP replacement for your libc malloc() */ - -/** - * The heap is made up as a list of structs of this type. - * This does not have to be aligned since for getting its size, - * we only use the macro SIZEOF_STRUCT_MEM, which automatically alignes. - */ -struct mem { - /** index (-> ram[next]) of the next struct */ - mem_size_t next; - /** index (-> ram[next]) of the next struct */ - mem_size_t prev; - /** 1: this area is used; 0: this area is unused */ - u8_t used; -}; - -/** All allocated blocks will be MIN_SIZE bytes big, at least! - * MIN_SIZE can be overridden to suit your needs. Smaller values save space, - * larger values could prevent too small blocks to fragment the RAM too much. */ -#ifndef MIN_SIZE -#define MIN_SIZE 12 -#endif /* MIN_SIZE */ -/* some alignment macros: we define them here for better source code layout */ -#define MIN_SIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(MIN_SIZE) -#define SIZEOF_STRUCT_MEM LWIP_MEM_ALIGN_SIZE(sizeof(struct mem)) -#define MEM_SIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(MEM_SIZE) - -/** the heap. we need one struct mem at the end and some room for alignment */ -static u8_t ram_heap[MEM_SIZE_ALIGNED + (2*SIZEOF_STRUCT_MEM) + MEM_ALIGNMENT]; -/** pointer to the heap (ram_heap): for alignment, ram is now a pointer instead of an array */ -static u8_t *ram; -/** the last entry, always unused! */ -static struct mem *ram_end; -/** pointer to the lowest free block, this is used for faster search */ -static struct mem *lfree; - -/** concurrent access protection */ -static sys_sem_t mem_sem; - -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - -static volatile u8_t mem_free_count; - -/* Allow mem_free from other (e.g. interrupt) context */ -#define LWIP_MEM_FREE_DECL_PROTECT() SYS_ARCH_DECL_PROTECT(lev_free) -#define LWIP_MEM_FREE_PROTECT() SYS_ARCH_PROTECT(lev_free) -#define LWIP_MEM_FREE_UNPROTECT() SYS_ARCH_UNPROTECT(lev_free) -#define LWIP_MEM_ALLOC_DECL_PROTECT() SYS_ARCH_DECL_PROTECT(lev_alloc) -#define LWIP_MEM_ALLOC_PROTECT() SYS_ARCH_PROTECT(lev_alloc) -#define LWIP_MEM_ALLOC_UNPROTECT() SYS_ARCH_UNPROTECT(lev_alloc) - -#else /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - -/* Protect the heap only by using a semaphore */ -#define LWIP_MEM_FREE_DECL_PROTECT() -#define LWIP_MEM_FREE_PROTECT() sys_arch_sem_wait(mem_sem, 0) -#define LWIP_MEM_FREE_UNPROTECT() sys_sem_signal(mem_sem) -/* mem_malloc is protected using semaphore AND LWIP_MEM_ALLOC_PROTECT */ -#define LWIP_MEM_ALLOC_DECL_PROTECT() -#define LWIP_MEM_ALLOC_PROTECT() -#define LWIP_MEM_ALLOC_UNPROTECT() - -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - -/** - * "Plug holes" by combining adjacent empty struct mems. - * After this function is through, there should not exist - * one empty struct mem pointing to another empty struct mem. - * - * @param mem this points to a struct mem which just has been freed - * @internal this function is only called by mem_free() and mem_realloc() - * - * This assumes access to the heap is protected by the calling function - * already. - */ -static void -plug_holes(struct mem *mem) -{ - struct mem *nmem; - struct mem *pmem; - - LWIP_ASSERT("plug_holes: mem >= ram", (u8_t *)mem >= ram); - LWIP_ASSERT("plug_holes: mem < ram_end", (u8_t *)mem < (u8_t *)ram_end); - LWIP_ASSERT("plug_holes: mem->used == 0", mem->used == 0); - - /* plug hole forward */ - LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE_ALIGNED", mem->next <= MEM_SIZE_ALIGNED); - - nmem = (struct mem *)&ram[mem->next]; - if (mem != nmem && nmem->used == 0 && (u8_t *)nmem != (u8_t *)ram_end) { - /* if mem->next is unused and not end of ram, combine mem and mem->next */ - if (lfree == nmem) { - lfree = mem; - } - mem->next = nmem->next; - ((struct mem *)&ram[nmem->next])->prev = (u8_t *)mem - ram; - } - - /* plug hole backward */ - pmem = (struct mem *)&ram[mem->prev]; - if (pmem != mem && pmem->used == 0) { - /* if mem->prev is unused, combine mem and mem->prev */ - if (lfree == mem) { - lfree = pmem; - } - pmem->next = mem->next; - ((struct mem *)&ram[mem->next])->prev = (u8_t *)pmem - ram; - } -} - -/** - * Zero the heap and initialize start, end and lowest-free - */ -void -mem_init(void) -{ - struct mem *mem; - - LWIP_ASSERT("Sanity check alignment", - (SIZEOF_STRUCT_MEM & (MEM_ALIGNMENT-1)) == 0); - - /* align the heap */ - ram = LWIP_MEM_ALIGN(ram_heap); - /* initialize the start of the heap */ - mem = (struct mem *)ram; - mem->next = MEM_SIZE_ALIGNED; - mem->prev = 0; - mem->used = 0; - /* initialize the end of the heap */ - ram_end = (struct mem *)&ram[MEM_SIZE_ALIGNED]; - ram_end->used = 1; - ram_end->next = MEM_SIZE_ALIGNED; - ram_end->prev = MEM_SIZE_ALIGNED; - - mem_sem = sys_sem_new(1); - - /* initialize the lowest-free pointer to the start of the heap */ - lfree = (struct mem *)ram; - - MEM_STATS_AVAIL(avail, MEM_SIZE_ALIGNED); -} - -/** - * Put a struct mem back on the heap - * - * @param rmem is the data portion of a struct mem as returned by a previous - * call to mem_malloc() - */ -void -mem_free(void *rmem) -{ - struct mem *mem; - LWIP_MEM_FREE_DECL_PROTECT(); - - if (rmem == NULL) { - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("mem_free(p == NULL) was called.\n")); - return; - } - LWIP_ASSERT("mem_free: sanity check alignment", (((mem_ptr_t)rmem) & (MEM_ALIGNMENT-1)) == 0); - - LWIP_ASSERT("mem_free: legal memory", (u8_t *)rmem >= (u8_t *)ram && - (u8_t *)rmem < (u8_t *)ram_end); - - if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) { - SYS_ARCH_DECL_PROTECT(lev); - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory\n")); - /* protect mem stats from concurrent access */ - SYS_ARCH_PROTECT(lev); - MEM_STATS_INC(illegal); - SYS_ARCH_UNPROTECT(lev); - return; - } - /* protect the heap from concurrent access */ - LWIP_MEM_FREE_PROTECT(); - /* Get the corresponding struct mem ... */ - mem = (struct mem *)((u8_t *)rmem - SIZEOF_STRUCT_MEM); - /* ... which has to be in a used state ... */ - LWIP_ASSERT("mem_free: mem->used", mem->used); - /* ... and is now unused. */ - mem->used = 0; - - if (mem < lfree) { - /* the newly freed struct is now the lowest */ - lfree = mem; - } - - MEM_STATS_DEC_USED(used, mem->next - ((u8_t *)mem - ram)); - - /* finally, see if prev or next are free also */ - plug_holes(mem); -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 1; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_FREE_UNPROTECT(); -} - -/** - * In contrast to its name, mem_realloc can only shrink memory, not expand it. - * Since the only use (for now) is in pbuf_realloc (which also can only shrink), - * this shouldn't be a problem! - * - * @param rmem pointer to memory allocated by mem_malloc the is to be shrinked - * @param newsize required size after shrinking (needs to be smaller than or - * equal to the previous size) - * @return for compatibility reasons: is always == rmem, at the moment - * or NULL if newsize is > old size, in which case rmem is NOT touched - * or freed! - */ -void * -mem_realloc(void *rmem, mem_size_t newsize) -{ - mem_size_t size; - mem_size_t ptr, ptr2; - struct mem *mem, *mem2; - /* use the FREE_PROTECT here: it protects with sem OR SYS_ARCH_PROTECT */ - LWIP_MEM_FREE_DECL_PROTECT(); - - /* Expand the size of the allocated memory region so that we can - adjust for alignment. */ - newsize = LWIP_MEM_ALIGN_SIZE(newsize); - - if(newsize < MIN_SIZE_ALIGNED) { - /* every data block must be at least MIN_SIZE_ALIGNED long */ - newsize = MIN_SIZE_ALIGNED; - } - - if (newsize > MEM_SIZE_ALIGNED) { - return NULL; - } - - LWIP_ASSERT("mem_realloc: legal memory", (u8_t *)rmem >= (u8_t *)ram && - (u8_t *)rmem < (u8_t *)ram_end); - - if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) { - SYS_ARCH_DECL_PROTECT(lev); - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_realloc: illegal memory\n")); - /* protect mem stats from concurrent access */ - SYS_ARCH_PROTECT(lev); - MEM_STATS_INC(illegal); - SYS_ARCH_UNPROTECT(lev); - return rmem; - } - /* Get the corresponding struct mem ... */ - mem = (struct mem *)((u8_t *)rmem - SIZEOF_STRUCT_MEM); - /* ... and its offset pointer */ - ptr = (u8_t *)mem - ram; - - size = mem->next - ptr - SIZEOF_STRUCT_MEM; - LWIP_ASSERT("mem_realloc can only shrink memory", newsize <= size); - if (newsize > size) { - /* not supported */ - return NULL; - } - if (newsize == size) { - /* No change in size, simply return */ - return rmem; - } - - /* protect the heap from concurrent access */ - LWIP_MEM_FREE_PROTECT(); - - MEM_STATS_DEC_USED(used, (size - newsize)); - - mem2 = (struct mem *)&ram[mem->next]; - if(mem2->used == 0) { - /* The next struct is unused, we can simply move it at little */ - mem_size_t next; - /* remember the old next pointer */ - next = mem2->next; - /* create new struct mem which is moved directly after the shrinked mem */ - ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize; - if (lfree == mem2) { - lfree = (struct mem *)&ram[ptr2]; - } - mem2 = (struct mem *)&ram[ptr2]; - mem2->used = 0; - /* restore the next pointer */ - mem2->next = next; - /* link it back to mem */ - mem2->prev = ptr; - /* link mem to it */ - mem->next = ptr2; - /* last thing to restore linked list: as we have moved mem2, - * let 'mem2->next->prev' point to mem2 again. but only if mem2->next is not - * the end of the heap */ - if (mem2->next != MEM_SIZE_ALIGNED) { - ((struct mem *)&ram[mem2->next])->prev = ptr2; - } - /* no need to plug holes, we've already done that */ - } else if (newsize + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED <= size) { - /* Next struct is used but there's room for another struct mem with - * at least MIN_SIZE_ALIGNED of data. - * Old size ('size') must be big enough to contain at least 'newsize' plus a struct mem - * ('SIZEOF_STRUCT_MEM') with some data ('MIN_SIZE_ALIGNED'). - * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty - * region that couldn't hold data, but when mem->next gets freed, - * the 2 regions would be combined, resulting in more free memory */ - ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize; - mem2 = (struct mem *)&ram[ptr2]; - if (mem2 < lfree) { - lfree = mem2; - } - mem2->used = 0; - mem2->next = mem->next; - mem2->prev = ptr; - mem->next = ptr2; - if (mem2->next != MEM_SIZE_ALIGNED) { - ((struct mem *)&ram[mem2->next])->prev = ptr2; - } - /* the original mem->next is used, so no need to plug holes! */ - } - /* else { - next struct mem is used but size between mem and mem2 is not big enough - to create another struct mem - -> don't do anyhting. - -> the remaining space stays unused since it is too small - } */ -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 1; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_FREE_UNPROTECT(); - return rmem; -} - -/** - * Adam's mem_malloc() plus solution for bug #17922 - * Allocate a block of memory with a minimum of 'size' bytes. - * - * @param size is the minimum size of the requested block in bytes. - * @return pointer to allocated memory or NULL if no free memory was found. - * - * Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT). - */ -void * -mem_malloc(mem_size_t size) -{ - mem_size_t ptr, ptr2; - struct mem *mem, *mem2; -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - u8_t local_mem_free_count = 0; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_ALLOC_DECL_PROTECT(); - - if (size == 0) { - return NULL; - } - - /* Expand the size of the allocated memory region so that we can - adjust for alignment. */ - size = LWIP_MEM_ALIGN_SIZE(size); - - if(size < MIN_SIZE_ALIGNED) { - /* every data block must be at least MIN_SIZE_ALIGNED long */ - size = MIN_SIZE_ALIGNED; - } - - if (size > MEM_SIZE_ALIGNED) { - return NULL; - } - - /* protect the heap from concurrent access */ - sys_arch_sem_wait(mem_sem, 0); - LWIP_MEM_ALLOC_PROTECT(); -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - /* run as long as a mem_free disturbed mem_malloc */ - do { - local_mem_free_count = 0; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - /* Scan through the heap searching for a free block that is big enough, - * beginning with the lowest free block. - */ - for (ptr = (u8_t *)lfree - ram; ptr < MEM_SIZE_ALIGNED - size; - ptr = ((struct mem *)&ram[ptr])->next) { - mem = (struct mem *)&ram[ptr]; -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 0; - LWIP_MEM_ALLOC_UNPROTECT(); - /* allow mem_free to run */ - LWIP_MEM_ALLOC_PROTECT(); - if (mem_free_count != 0) { - local_mem_free_count = mem_free_count; - } - mem_free_count = 0; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - if ((!mem->used) && - (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) { - /* mem is not used and at least perfect fit is possible: - * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */ - - if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) { - /* (in addition to the above, we test if another struct mem (SIZEOF_STRUCT_MEM) containing - * at least MIN_SIZE_ALIGNED of data also fits in the 'user data space' of 'mem') - * -> split large block, create empty remainder, - * remainder must be large enough to contain MIN_SIZE_ALIGNED data: if - * mem->next - (ptr + (2*SIZEOF_STRUCT_MEM)) == size, - * struct mem would fit in but no data between mem2 and mem2->next - * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty - * region that couldn't hold data, but when mem->next gets freed, - * the 2 regions would be combined, resulting in more free memory - */ - ptr2 = ptr + SIZEOF_STRUCT_MEM + size; - /* create mem2 struct */ - mem2 = (struct mem *)&ram[ptr2]; - mem2->used = 0; - mem2->next = mem->next; - mem2->prev = ptr; - /* and insert it between mem and mem->next */ - mem->next = ptr2; - mem->used = 1; - - if (mem2->next != MEM_SIZE_ALIGNED) { - ((struct mem *)&ram[mem2->next])->prev = ptr2; - } - MEM_STATS_INC_USED(used, (size + SIZEOF_STRUCT_MEM)); - } else { - /* (a mem2 struct does no fit into the user data space of mem and mem->next will always - * be used at this point: if not we have 2 unused structs in a row, plug_holes should have - * take care of this). - * -> near fit or excact fit: do not split, no mem2 creation - * also can't move mem->next directly behind mem, since mem->next - * will always be used at this point! - */ - mem->used = 1; - MEM_STATS_INC_USED(used, mem->next - ((u8_t *)mem - ram)); - } - - if (mem == lfree) { - /* Find next free block after mem and update lowest free pointer */ - while (lfree->used && lfree != ram_end) { - LWIP_MEM_ALLOC_UNPROTECT(); - /* prevent high interrupt latency... */ - LWIP_MEM_ALLOC_PROTECT(); - lfree = (struct mem *)&ram[lfree->next]; - } - LWIP_ASSERT("mem_malloc: !lfree->used", ((lfree == ram_end) || (!lfree->used))); - } - LWIP_MEM_ALLOC_UNPROTECT(); - sys_sem_signal(mem_sem); - LWIP_ASSERT("mem_malloc: allocated memory not above ram_end.", - (mem_ptr_t)mem + SIZEOF_STRUCT_MEM + size <= (mem_ptr_t)ram_end); - LWIP_ASSERT("mem_malloc: allocated memory properly aligned.", - ((mem_ptr_t)mem + SIZEOF_STRUCT_MEM) % MEM_ALIGNMENT == 0); - LWIP_ASSERT("mem_malloc: sanity check alignment", - (((mem_ptr_t)mem) & (MEM_ALIGNMENT-1)) == 0); - - return (u8_t *)mem + SIZEOF_STRUCT_MEM; - } - } -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - /* if we got interrupted by a mem_free, try again */ - } while(local_mem_free_count != 0); -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("mem_malloc: could not allocate %"S16_F" bytes\n", (s16_t)size)); - MEM_STATS_INC(err); - LWIP_MEM_ALLOC_UNPROTECT(); - sys_sem_signal(mem_sem); - return NULL; -} - -#endif /* MEM_USE_POOLS */ -/** - * Contiguously allocates enough space for count objects that are size bytes - * of memory each and returns a pointer to the allocated memory. - * - * The allocated memory is filled with bytes of value zero. - * - * @param count number of objects to allocate - * @param size size of the objects to allocate - * @return pointer to allocated memory / NULL pointer if there is an error - */ -void *mem_calloc(mem_size_t count, mem_size_t size) -{ - void *p; - - /* allocate 'count' objects of size 'size' */ - p = mem_malloc(count * size); - if (p) { - /* zero the memory */ - memset(p, 0, count * size); - } - return p; -} - -#endif /* !MEM_LIBC_MALLOC */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/memp.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/memp.c deleted file mode 100644 index bd2fd26..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/memp.c +++ /dev/null @@ -1,388 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Dynamic pool memory manager - * - * lwIP has dedicated pools for many structures (netconn, protocol control blocks, - * packet buffers, ...). All these pools are managed here. - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/memp.h" -#include "lwip/pbuf.h" -#include "lwip/udp.h" -#include "lwip/raw.h" -#include "lwip/tcp.h" -#include "lwip/igmp.h" -#include "lwip/api.h" -#include "lwip/api_msg.h" -#include "lwip/tcpip.h" -#include "lwip/sys.h" -#include "lwip/stats.h" -#include "netif/etharp.h" -#include "lwip/ip_frag.h" - -#include - -#if !MEMP_MEM_MALLOC /* don't build if not configured for use in lwipopts.h */ - -struct memp { - struct memp *next; -#if MEMP_OVERFLOW_CHECK - const char *file; - int line; -#endif /* MEMP_OVERFLOW_CHECK */ -}; - -#if MEMP_OVERFLOW_CHECK -/* if MEMP_OVERFLOW_CHECK is turned on, we reserve some bytes at the beginning - * and at the end of each element, initialize them as 0xcd and check - * them later. */ -/* If MEMP_OVERFLOW_CHECK is >= 2, on every call to memp_malloc or memp_free, - * every single element in each pool is checked! - * This is VERY SLOW but also very helpful. */ -/* MEMP_SANITY_REGION_BEFORE and MEMP_SANITY_REGION_AFTER can be overridden in - * lwipopts.h to change the amount reserved for checking. */ -#ifndef MEMP_SANITY_REGION_BEFORE -#define MEMP_SANITY_REGION_BEFORE 16 -#endif /* MEMP_SANITY_REGION_BEFORE*/ -#if MEMP_SANITY_REGION_BEFORE > 0 -#define MEMP_SANITY_REGION_BEFORE_ALIGNED LWIP_MEM_ALIGN_SIZE(MEMP_SANITY_REGION_BEFORE) -#else -#define MEMP_SANITY_REGION_BEFORE_ALIGNED 0 -#endif /* MEMP_SANITY_REGION_BEFORE*/ -#ifndef MEMP_SANITY_REGION_AFTER -#define MEMP_SANITY_REGION_AFTER 16 -#endif /* MEMP_SANITY_REGION_AFTER*/ -#if MEMP_SANITY_REGION_AFTER > 0 -#define MEMP_SANITY_REGION_AFTER_ALIGNED LWIP_MEM_ALIGN_SIZE(MEMP_SANITY_REGION_AFTER) -#else -#define MEMP_SANITY_REGION_AFTER_ALIGNED 0 -#endif /* MEMP_SANITY_REGION_AFTER*/ - -/* MEMP_SIZE: save space for struct memp and for sanity check */ -#define MEMP_SIZE (LWIP_MEM_ALIGN_SIZE(sizeof(struct memp)) + MEMP_SANITY_REGION_BEFORE_ALIGNED) -#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x) + MEMP_SANITY_REGION_AFTER_ALIGNED) - -#else /* MEMP_OVERFLOW_CHECK */ - -/* No sanity checks - * We don't need to preserve the struct memp while not allocated, so we - * can save a little space and set MEMP_SIZE to 0. - */ -#define MEMP_SIZE 0 -#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x)) - -#endif /* MEMP_OVERFLOW_CHECK */ - -/** This array holds the first free element of each pool. - * Elements form a linked list. */ -static struct memp *memp_tab[MEMP_MAX]; - -#else /* MEMP_MEM_MALLOC */ - -#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x)) - -#endif /* MEMP_MEM_MALLOC */ - -/** This array holds the element sizes of each pool. */ -#if !MEM_USE_POOLS && !MEMP_MEM_MALLOC -static -#endif -const u16_t memp_sizes[MEMP_MAX] = { -#define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEM_ALIGN_SIZE(size), -#include "lwip/memp_std.h" -}; - -#if !MEMP_MEM_MALLOC /* don't build if not configured for use in lwipopts.h */ - -/** This array holds the number of elements in each pool. */ -static const u16_t memp_num[MEMP_MAX] = { -#define LWIP_MEMPOOL(name,num,size,desc) (num), -#include "lwip/memp_std.h" -}; - -/** This array holds a textual description of each pool. */ -#ifdef LWIP_DEBUG -static const char *memp_desc[MEMP_MAX] = { -#define LWIP_MEMPOOL(name,num,size,desc) (desc), -#include "lwip/memp_std.h" -}; -#endif /* LWIP_DEBUG */ - -/** This is the actual memory used by the pools. */ -static u8_t memp_memory[MEM_ALIGNMENT - 1 -#define LWIP_MEMPOOL(name,num,size,desc) + ( (num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size) ) ) -#include "lwip/memp_std.h" -]; - -#if MEMP_SANITY_CHECK -/** - * Check that memp-lists don't form a circle - */ -static int -memp_sanity(void) -{ - s16_t i, c; - struct memp *m, *n; - - for (i = 0; i < MEMP_MAX; i++) { - for (m = memp_tab[i]; m != NULL; m = m->next) { - c = 1; - for (n = memp_tab[i]; n != NULL; n = n->next) { - if (n == m && --c < 0) { - return 0; - } - } - } - } - return 1; -} -#endif /* MEMP_SANITY_CHECK*/ -#if MEMP_OVERFLOW_CHECK -/** - * Check if a memp element was victim of an overflow - * (e.g. the restricted area after it has been altered) - * - * @param p the memp element to check - * @param memp_size the element size of the pool p comes from - */ -static void -memp_overflow_check_element(struct memp *p, u16_t memp_size) -{ - u16_t k; - u8_t *m; -#if MEMP_SANITY_REGION_BEFORE_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE - MEMP_SANITY_REGION_BEFORE_ALIGNED; - for (k = 0; k < MEMP_SANITY_REGION_BEFORE_ALIGNED; k++) { - if (m[k] != 0xcd) { - LWIP_ASSERT("detected memp underflow!", 0); - } - } -#endif -#if MEMP_SANITY_REGION_AFTER_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE + memp_size; - for (k = 0; k < MEMP_SANITY_REGION_AFTER_ALIGNED; k++) { - if (m[k] != 0xcd) { - LWIP_ASSERT("detected memp overflow!", 0); - } - } -#endif -} - -/** - * Do an overflow check for all elements in every pool. - * - * @see memp_overflow_check_element for a description of the check - */ -static void -memp_overflow_check_all(void) -{ - u16_t i, j; - struct memp *p; - - p = LWIP_MEM_ALIGN(memp_memory); - for (i = 0; i < MEMP_MAX; ++i) { - p = p; - for (j = 0; j < memp_num[i]; ++j) { - memp_overflow_check_element(p, memp_sizes[i]); - p = (struct memp*)((u8_t*)p + MEMP_SIZE + memp_sizes[i] + MEMP_SANITY_REGION_AFTER_ALIGNED); - } - } -} - -/** - * Initialize the restricted areas of all memp elements in every pool. - */ -static void -memp_overflow_init(void) -{ - u16_t i, j; - struct memp *p; - u8_t *m; - - p = LWIP_MEM_ALIGN(memp_memory); - for (i = 0; i < MEMP_MAX; ++i) { - p = p; - for (j = 0; j < memp_num[i]; ++j) { -#if MEMP_SANITY_REGION_BEFORE_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE - MEMP_SANITY_REGION_BEFORE_ALIGNED; - memset(m, 0xcd, MEMP_SANITY_REGION_BEFORE_ALIGNED); -#endif -#if MEMP_SANITY_REGION_AFTER_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE + memp_sizes[i]; - memset(m, 0xcd, MEMP_SANITY_REGION_AFTER_ALIGNED); -#endif - p = (struct memp*)((u8_t*)p + MEMP_SIZE + memp_sizes[i] + MEMP_SANITY_REGION_AFTER_ALIGNED); - } - } -} -#endif /* MEMP_OVERFLOW_CHECK */ - -/** - * Initialize this module. - * - * Carves out memp_memory into linked lists for each pool-type. - */ -void -memp_init(void) -{ - struct memp *memp; - u16_t i, j; - - for (i = 0; i < MEMP_MAX; ++i) { - MEMP_STATS_AVAIL(used, i, 0); - MEMP_STATS_AVAIL(max, i, 0); - MEMP_STATS_AVAIL(err, i, 0); - MEMP_STATS_AVAIL(avail, i, memp_num[i]); - } - - memp = LWIP_MEM_ALIGN(memp_memory); - /* for every pool: */ - for (i = 0; i < MEMP_MAX; ++i) { - memp_tab[i] = NULL; - /* create a linked list of memp elements */ - for (j = 0; j < memp_num[i]; ++j) { - memp->next = memp_tab[i]; - memp_tab[i] = memp; - memp = (struct memp *)((u8_t *)memp + MEMP_SIZE + memp_sizes[i] -#if MEMP_OVERFLOW_CHECK - + MEMP_SANITY_REGION_AFTER_ALIGNED -#endif - ); - } - } -#if MEMP_OVERFLOW_CHECK - memp_overflow_init(); - /* check everything a first time to see if it worked */ - memp_overflow_check_all(); -#endif /* MEMP_OVERFLOW_CHECK */ -} - -/** - * Get an element from a specific pool. - * - * @param type the pool to get an element from - * - * the debug version has two more parameters: - * @param file file name calling this function - * @param line number of line where this function is called - * - * @return a pointer to the allocated memory or a NULL pointer on error - */ -void * -#if !MEMP_OVERFLOW_CHECK -memp_malloc(memp_t type) -#else -memp_malloc_fn(memp_t type, const char* file, const int line) -#endif -{ - struct memp *memp; - SYS_ARCH_DECL_PROTECT(old_level); - - LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;); - - SYS_ARCH_PROTECT(old_level); -#if MEMP_OVERFLOW_CHECK >= 2 - memp_overflow_check_all(); -#endif /* MEMP_OVERFLOW_CHECK >= 2 */ - - memp = memp_tab[type]; - - if (memp != NULL) { - memp_tab[type] = memp->next; -#if MEMP_OVERFLOW_CHECK - memp->next = NULL; - memp->file = file; - memp->line = line; -#endif /* MEMP_OVERFLOW_CHECK */ - MEMP_STATS_INC_USED(used, type); - LWIP_ASSERT("memp_malloc: memp properly aligned", - ((mem_ptr_t)memp % MEM_ALIGNMENT) == 0); - memp = (struct memp*)((u8_t*)memp + MEMP_SIZE); - } else { - LWIP_DEBUGF(MEMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("memp_malloc: out of memory in pool %s\n", memp_desc[type])); - MEMP_STATS_INC(err, type); - } - - SYS_ARCH_UNPROTECT(old_level); - - return memp; -} - -/** - * Put an element back into its pool. - * - * @param type the pool where to put mem - * @param mem the memp element to free - */ -void -memp_free(memp_t type, void *mem) -{ - struct memp *memp; - SYS_ARCH_DECL_PROTECT(old_level); - - if (mem == NULL) { - return; - } - LWIP_ASSERT("memp_free: mem properly aligned", - ((mem_ptr_t)mem % MEM_ALIGNMENT) == 0); - - memp = (struct memp *)((u8_t*)mem - MEMP_SIZE); - - SYS_ARCH_PROTECT(old_level); -#if MEMP_OVERFLOW_CHECK -#if MEMP_OVERFLOW_CHECK >= 2 - memp_overflow_check_all(); -#else - memp_overflow_check_element(memp, memp_sizes[type]); -#endif /* MEMP_OVERFLOW_CHECK >= 2 */ -#endif /* MEMP_OVERFLOW_CHECK */ - - MEMP_STATS_DEC(used, type); - - memp->next = memp_tab[type]; - memp_tab[type] = memp; - -#if MEMP_SANITY_CHECK - LWIP_ASSERT("memp sanity", memp_sanity()); -#endif /* MEMP_SANITY_CHECK */ - - SYS_ARCH_UNPROTECT(old_level); -} - -#endif /* MEMP_MEM_MALLOC */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/netif.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/netif.c deleted file mode 100644 index cf3815c..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/netif.c +++ /dev/null @@ -1,683 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * lwIP network interface abstraction - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/def.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/tcp.h" -#include "lwip/snmp.h" -#include "lwip/igmp.h" -#include "netif/etharp.h" -#if ENABLE_LOOPBACK -#include "lwip/sys.h" -#if LWIP_NETIF_LOOPBACK_MULTITHREADING -#include "lwip/tcpip.h" -#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */ -#endif /* ENABLE_LOOPBACK */ - -#if LWIP_AUTOIP -#include "lwip/autoip.h" -#endif /* LWIP_AUTOIP */ -#if LWIP_DHCP -#include "lwip/dhcp.h" -#endif /* LWIP_DHCP */ - -#if LWIP_NETIF_STATUS_CALLBACK -#define NETIF_STATUS_CALLBACK(n) { if (n->status_callback) (n->status_callback)(n); } -#else -#define NETIF_STATUS_CALLBACK(n) { /* NOP */ } -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -#if LWIP_NETIF_LINK_CALLBACK -#define NETIF_LINK_CALLBACK(n) { if (n->link_callback) (n->link_callback)(n); } -#else -#define NETIF_LINK_CALLBACK(n) { /* NOP */ } -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -struct netif *netif_list; -struct netif *netif_default; - -/** - * Add a network interface to the list of lwIP netifs. - * - * @param netif a pre-allocated netif structure - * @param ipaddr IP address for the new netif - * @param netmask network mask for the new netif - * @param gw default gateway IP address for the new netif - * @param state opaque data passed to the new netif - * @param init callback function that initializes the interface - * @param input callback function that is called to pass - * ingress packets up in the protocol layer stack. - * - * @return netif, or NULL if failed. - */ -struct netif * -netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw, - void *state, - err_t (* init)(struct netif *netif), - err_t (* input)(struct pbuf *p, struct netif *netif)) -{ - static u8_t netifnum = 0; - - /* reset new interface configuration state */ - netif->ip_addr.addr = 0; - netif->netmask.addr = 0; - netif->gw.addr = 0; - netif->flags = 0; -#if LWIP_DHCP - /* netif not under DHCP control by default */ - netif->dhcp = NULL; -#endif /* LWIP_DHCP */ -#if LWIP_AUTOIP - /* netif not under AutoIP control by default */ - netif->autoip = NULL; -#endif /* LWIP_AUTOIP */ -#if LWIP_NETIF_STATUS_CALLBACK - netif->status_callback = NULL; -#endif /* LWIP_NETIF_STATUS_CALLBACK */ -#if LWIP_NETIF_LINK_CALLBACK - netif->link_callback = NULL; -#endif /* LWIP_NETIF_LINK_CALLBACK */ -#if LWIP_IGMP - netif->igmp_mac_filter = NULL; -#endif /* LWIP_IGMP */ -#if ENABLE_LOOPBACK - netif->loop_first = NULL; - netif->loop_last = NULL; -#endif /* ENABLE_LOOPBACK */ - - /* remember netif specific state information data */ - netif->state = state; - netif->num = netifnum++; - netif->input = input; -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = NULL; -#endif /* LWIP_NETIF_HWADDRHINT*/ -#if ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS - netif->loop_cnt_current = 0; -#endif /* ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS */ - - netif_set_addr(netif, ipaddr, netmask, gw); - - /* call user specified initialization function for netif */ - if (init(netif) != ERR_OK) { - return NULL; - } - - /* add this netif to the list */ - netif->next = netif_list; - netif_list = netif; - snmp_inc_iflist(); - -#if LWIP_IGMP - /* start IGMP processing */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_start( netif); - } -#endif /* LWIP_IGMP */ - - LWIP_DEBUGF(NETIF_DEBUG, ("netif: added interface %c%c IP addr ", - netif->name[0], netif->name[1])); - ip_addr_debug_print(NETIF_DEBUG, ipaddr); - LWIP_DEBUGF(NETIF_DEBUG, (" netmask ")); - ip_addr_debug_print(NETIF_DEBUG, netmask); - LWIP_DEBUGF(NETIF_DEBUG, (" gw ")); - ip_addr_debug_print(NETIF_DEBUG, gw); - LWIP_DEBUGF(NETIF_DEBUG, ("\n")); - return netif; -} - -/** - * Change IP address configuration for a network interface (including netmask - * and default gateway). - * - * @param netif the network interface to change - * @param ipaddr the new IP address - * @param netmask the new netmask - * @param gw the new default gateway - */ -void -netif_set_addr(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw) -{ - netif_set_ipaddr(netif, ipaddr); - netif_set_netmask(netif, netmask); - netif_set_gw(netif, gw); -} - -/** - * Remove a network interface from the list of lwIP netifs. - * - * @param netif the network interface to remove - */ -void netif_remove(struct netif * netif) -{ - if ( netif == NULL ) return; - -#if LWIP_IGMP - /* stop IGMP processing */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_stop( netif); - } -#endif /* LWIP_IGMP */ - - snmp_delete_ipaddridx_tree(netif); - - /* is it the first netif? */ - if (netif_list == netif) { - netif_list = netif->next; - snmp_dec_iflist(); - } - else { - /* look for netif further down the list */ - struct netif * tmpNetif; - for (tmpNetif = netif_list; tmpNetif != NULL; tmpNetif = tmpNetif->next) { - if (tmpNetif->next == netif) { - tmpNetif->next = netif->next; - snmp_dec_iflist(); - break; - } - } - if (tmpNetif == NULL) - return; /* we didn't find any netif today */ - } - /* this netif is default? */ - if (netif_default == netif) - /* reset default netif */ - netif_set_default(NULL); - LWIP_DEBUGF( NETIF_DEBUG, ("netif_remove: removed netif\n") ); -} - -/** - * Find a network interface by searching for its name - * - * @param name the name of the netif (like netif->name) plus concatenated number - * in ascii representation (e.g. 'en0') - */ -struct netif * -netif_find(char *name) -{ - struct netif *netif; - u8_t num; - - if (name == NULL) { - return NULL; - } - - num = name[2] - '0'; - - for(netif = netif_list; netif != NULL; netif = netif->next) { - if (num == netif->num && - name[0] == netif->name[0] && - name[1] == netif->name[1]) { - LWIP_DEBUGF(NETIF_DEBUG, ("netif_find: found %c%c\n", name[0], name[1])); - return netif; - } - } - LWIP_DEBUGF(NETIF_DEBUG, ("netif_find: didn't find %c%c\n", name[0], name[1])); - return NULL; -} - -/** - * Change the IP address of a network interface - * - * @param netif the network interface to change - * @param ipaddr the new IP address - * - * @note call netif_set_addr() if you also want to change netmask and - * default gateway - */ -void -netif_set_ipaddr(struct netif *netif, struct ip_addr *ipaddr) -{ - /* TODO: Handling of obsolete pcbs */ - /* See: http://mail.gnu.org/archive/html/lwip-users/2003-03/msg00118.html */ -#if LWIP_TCP - struct tcp_pcb *pcb; - struct tcp_pcb_listen *lpcb; - - /* address is actually being changed? */ - if ((ip_addr_cmp(ipaddr, &(netif->ip_addr))) == 0) - { - /* extern struct tcp_pcb *tcp_active_pcbs; defined by tcp.h */ - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: netif address being changed\n")); - pcb = tcp_active_pcbs; - while (pcb != NULL) { - /* PCB bound to current local interface address? */ - if (ip_addr_cmp(&(pcb->local_ip), &(netif->ip_addr))) { - /* this connection must be aborted */ - struct tcp_pcb *next = pcb->next; - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: aborting TCP pcb %p\n", (void *)pcb)); - tcp_abort(pcb); - pcb = next; - } else { - pcb = pcb->next; - } - } - for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - /* PCB bound to current local interface address? */ - if ((!(ip_addr_isany(&(lpcb->local_ip)))) && - (ip_addr_cmp(&(lpcb->local_ip), &(netif->ip_addr)))) { - /* The PCB is listening to the old ipaddr and - * is set to listen to the new one instead */ - ip_addr_set(&(lpcb->local_ip), ipaddr); - } - } - } -#endif - snmp_delete_ipaddridx_tree(netif); - snmp_delete_iprteidx_tree(0,netif); - /* set new IP address to netif */ - ip_addr_set(&(netif->ip_addr), ipaddr); - snmp_insert_ipaddridx_tree(netif); - snmp_insert_iprteidx_tree(0,netif); - - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: IP address of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - netif->name[0], netif->name[1], - ip4_addr1(&netif->ip_addr), - ip4_addr2(&netif->ip_addr), - ip4_addr3(&netif->ip_addr), - ip4_addr4(&netif->ip_addr))); -} - -/** - * Change the default gateway for a network interface - * - * @param netif the network interface to change - * @param gw the new default gateway - * - * @note call netif_set_addr() if you also want to change ip address and netmask - */ -void -netif_set_gw(struct netif *netif, struct ip_addr *gw) -{ - ip_addr_set(&(netif->gw), gw); - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: GW address of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - netif->name[0], netif->name[1], - ip4_addr1(&netif->gw), - ip4_addr2(&netif->gw), - ip4_addr3(&netif->gw), - ip4_addr4(&netif->gw))); -} - -/** - * Change the netmask of a network interface - * - * @param netif the network interface to change - * @param netmask the new netmask - * - * @note call netif_set_addr() if you also want to change ip address and - * default gateway - */ -void -netif_set_netmask(struct netif *netif, struct ip_addr *netmask) -{ - snmp_delete_iprteidx_tree(0, netif); - /* set new netmask to netif */ - ip_addr_set(&(netif->netmask), netmask); - snmp_insert_iprteidx_tree(0, netif); - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: netmask of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - netif->name[0], netif->name[1], - ip4_addr1(&netif->netmask), - ip4_addr2(&netif->netmask), - ip4_addr3(&netif->netmask), - ip4_addr4(&netif->netmask))); -} - -/** - * Set a network interface as the default network interface - * (used to output all packets for which no specific route is found) - * - * @param netif the default network interface - */ -void -netif_set_default(struct netif *netif) -{ - if (netif == NULL) - { - /* remove default route */ - snmp_delete_iprteidx_tree(1, netif); - } - else - { - /* install default route */ - snmp_insert_iprteidx_tree(1, netif); - } - netif_default = netif; - LWIP_DEBUGF(NETIF_DEBUG, ("netif: setting default interface %c%c\n", - netif ? netif->name[0] : '\'', netif ? netif->name[1] : '\'')); -} - -/** - * Bring an interface up, available for processing - * traffic. - * - * @note: Enabling DHCP on a down interface will make it come - * up once configured. - * - * @see dhcp_start() - */ -void netif_set_up(struct netif *netif) -{ - if ( !(netif->flags & NETIF_FLAG_UP )) { - netif->flags |= NETIF_FLAG_UP; - -#if LWIP_SNMP - snmp_get_sysuptime(&netif->ts); -#endif /* LWIP_SNMP */ - - NETIF_LINK_CALLBACK(netif); - NETIF_STATUS_CALLBACK(netif); - -#if LWIP_ARP - /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */ - if (netif->flags & NETIF_FLAG_ETHARP) { - etharp_gratuitous(netif); - } -#endif /* LWIP_ARP */ - -#if LWIP_IGMP - /* resend IGMP memberships */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_report_groups( netif); - } -#endif /* LWIP_IGMP */ - } -} - -/** - * Bring an interface down, disabling any traffic processing. - * - * @note: Enabling DHCP on a down interface will make it come - * up once configured. - * - * @see dhcp_start() - */ -void netif_set_down(struct netif *netif) -{ - if ( netif->flags & NETIF_FLAG_UP ) - { - netif->flags &= ~NETIF_FLAG_UP; -#if LWIP_SNMP - snmp_get_sysuptime(&netif->ts); -#endif - - NETIF_LINK_CALLBACK(netif); - NETIF_STATUS_CALLBACK(netif); - } -} - -/** - * Ask if an interface is up - */ -u8_t netif_is_up(struct netif *netif) -{ - return (netif->flags & NETIF_FLAG_UP)?1:0; -} - -#if LWIP_NETIF_STATUS_CALLBACK -/** - * Set callback to be called when interface is brought up/down - */ -void netif_set_status_callback(struct netif *netif, void (* status_callback)(struct netif *netif )) -{ - if ( netif ) - netif->status_callback = status_callback; -} -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -#if LWIP_NETIF_LINK_CALLBACK -/** - * Called by a driver when its link goes up - */ -void netif_set_link_up(struct netif *netif ) -{ - netif->flags |= NETIF_FLAG_LINK_UP; - -#if LWIP_DHCP - if (netif->dhcp) { - dhcp_network_changed(netif); - } -#endif /* LWIP_DHCP */ - -#if LWIP_AUTOIP - if (netif->autoip) { - autoip_network_changed(netif); - } -#endif /* LWIP_AUTOIP */ - - if (netif->flags & NETIF_FLAG_UP) { -#if LWIP_ARP - /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */ - if (netif->flags & NETIF_FLAG_ETHARP) { - etharp_gratuitous(netif); - } -#endif /* LWIP_ARP */ - -#if LWIP_IGMP - /* resend IGMP memberships */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_report_groups( netif); - } -#endif /* LWIP_IGMP */ - } - NETIF_LINK_CALLBACK(netif); -} - -/** - * Called by a driver when its link goes down - */ -void netif_set_link_down(struct netif *netif ) -{ - netif->flags &= ~NETIF_FLAG_LINK_UP; - NETIF_LINK_CALLBACK(netif); -} - -/** - * Ask if a link is up - */ -u8_t netif_is_link_up(struct netif *netif) -{ - return (netif->flags & NETIF_FLAG_LINK_UP) ? 1 : 0; -} - -/** - * Set callback to be called when link is brought up/down - */ -void netif_set_link_callback(struct netif *netif, void (* link_callback)(struct netif *netif )) -{ - if (netif) { - netif->link_callback = link_callback; - } -} -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -#if ENABLE_LOOPBACK -/** - * Send an IP packet to be received on the same netif (loopif-like). - * The pbuf is simply copied and handed back to netif->input. - * In multithreaded mode, this is done directly since netif->input must put - * the packet on a queue. - * In callback mode, the packet is put on an internal queue and is fed to - * netif->input by netif_poll(). - * - * @param netif the lwip network interface structure - * @param p the (IP) packet to 'send' - * @param ipaddr the ip address to send the packet to (not used) - * @return ERR_OK if the packet has been sent - * ERR_MEM if the pbuf used to copy the packet couldn't be allocated - */ -err_t -netif_loop_output(struct netif *netif, struct pbuf *p, - struct ip_addr *ipaddr) -{ - struct pbuf *r; - err_t err; - struct pbuf *last; -#if LWIP_LOOPBACK_MAX_PBUFS - u8_t clen = 0; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ - SYS_ARCH_DECL_PROTECT(lev); - LWIP_UNUSED_ARG(ipaddr); - - /* Allocate a new pbuf */ - r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM); - if (r == NULL) { - return ERR_MEM; - } -#if LWIP_LOOPBACK_MAX_PBUFS - clen = pbuf_clen(r); - /* check for overflow or too many pbuf on queue */ - if(((netif->loop_cnt_current + clen) < netif->loop_cnt_current) || - ((netif->loop_cnt_current + clen) > LWIP_LOOPBACK_MAX_PBUFS)) { - pbuf_free(r); - r = NULL; - return ERR_MEM; - } - netif->loop_cnt_current += clen; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ - - /* Copy the whole pbuf queue p into the single pbuf r */ - if ((err = pbuf_copy(r, p)) != ERR_OK) { - pbuf_free(r); - r = NULL; - return err; - } - - /* Put the packet on a linked list which gets emptied through calling - netif_poll(). */ - - /* let last point to the last pbuf in chain r */ - for (last = r; last->next != NULL; last = last->next); - - SYS_ARCH_PROTECT(lev); - if(netif->loop_first != NULL) { - LWIP_ASSERT("if first != NULL, last must also be != NULL", netif->loop_last != NULL); - netif->loop_last->next = r; - netif->loop_last = last; - } else { - netif->loop_first = r; - netif->loop_last = last; - } - SYS_ARCH_UNPROTECT(lev); - -#if LWIP_NETIF_LOOPBACK_MULTITHREADING - /* For multithreading environment, schedule a call to netif_poll */ - tcpip_callback((void (*)(void *))(netif_poll), netif); -#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */ - - return ERR_OK; -} - -/** - * Call netif_poll() in the main loop of your application. This is to prevent - * reentering non-reentrant functions like tcp_input(). Packets passed to - * netif_loop_output() are put on a list that is passed to netif->input() by - * netif_poll(). - */ -void -netif_poll(struct netif *netif) -{ - struct pbuf *in; - SYS_ARCH_DECL_PROTECT(lev); - - do { - /* Get a packet from the list. With SYS_LIGHTWEIGHT_PROT=1, this is protected */ - SYS_ARCH_PROTECT(lev); - in = netif->loop_first; - if(in != NULL) { - struct pbuf *in_end = in; -#if LWIP_LOOPBACK_MAX_PBUFS - u8_t clen = pbuf_clen(in); - /* adjust the number of pbufs on queue */ - LWIP_ASSERT("netif->loop_cnt_current underflow", - ((netif->loop_cnt_current - clen) < netif->loop_cnt_current)); - netif->loop_cnt_current -= clen; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ - while(in_end->len != in_end->tot_len) { - LWIP_ASSERT("bogus pbuf: len != tot_len but next == NULL!", in_end->next != NULL); - in_end = in_end->next; - } - /* 'in_end' now points to the last pbuf from 'in' */ - if(in_end == netif->loop_last) { - /* this was the last pbuf in the list */ - netif->loop_first = netif->loop_last = NULL; - } else { - /* pop the pbuf off the list */ - netif->loop_first = in_end->next; - LWIP_ASSERT("should not be null since first != last!", netif->loop_first != NULL); - } - /* De-queue the pbuf from its successors on the 'loop_' list. */ - in_end->next = NULL; - } - SYS_ARCH_UNPROTECT(lev); - - if(in != NULL) { - /* loopback packets are always IP packets! */ - if(ip_input(in, netif) != ERR_OK) { - pbuf_free(in); - } - /* Don't reference the packet any more! */ - in = NULL; - } - /* go on while there is a packet on the list */ - } while(netif->loop_first != NULL); -} - -#if !LWIP_NETIF_LOOPBACK_MULTITHREADING -/** - * Calls netif_poll() for every netif on the netif_list. - */ -void -netif_poll_all(void) -{ - struct netif *netif = netif_list; - /* loop through netifs */ - while (netif != NULL) { - netif_poll(netif); - /* proceed to next network interface */ - netif = netif->next; - } -} -#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */ -#endif /* ENABLE_LOOPBACK */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c deleted file mode 100644 index 6284b9a..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c +++ /dev/null @@ -1,931 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Packet buffer management - * - * Packets are built from the pbuf data structure. It supports dynamic - * memory allocation for packet contents or can reference externally - * managed packet contents both in RAM and ROM. Quick allocation for - * incoming packets is provided through pools with fixed sized pbufs. - * - * A packet may span over multiple pbufs, chained as a singly linked - * list. This is called a "pbuf chain". - * - * Multiple packets may be queued, also using this singly linked list. - * This is called a "packet queue". - * - * So, a packet queue consists of one or more pbuf chains, each of - * which consist of one or more pbufs. CURRENTLY, PACKET QUEUES ARE - * NOT SUPPORTED!!! Use helper structs to queue multiple packets. - * - * The differences between a pbuf chain and a packet queue are very - * precise but subtle. - * - * The last pbuf of a packet has a ->tot_len field that equals the - * ->len field. It can be found by traversing the list. If the last - * pbuf of a packet has a ->next field other than NULL, more packets - * are on the queue. - * - * Therefore, looping through a pbuf of a single packet, has an - * loop end condition (tot_len == p->len), NOT (next == NULL). - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/stats.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/pbuf.h" -#include "lwip/sys.h" -#include "arch/perf.h" -#if TCP_QUEUE_OOSEQ -#include "lwip/tcp.h" -#endif - -#include - -#define SIZEOF_STRUCT_PBUF LWIP_MEM_ALIGN_SIZE(sizeof(struct pbuf)) -/* Since the pool is created in memp, PBUF_POOL_BUFSIZE will be automatically - aligned there. Therefore, PBUF_POOL_BUFSIZE_ALIGNED can be used here. */ -#define PBUF_POOL_BUFSIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(PBUF_POOL_BUFSIZE) - -#if !TCP_QUEUE_OOSEQ || NO_SYS -#define PBUF_POOL_IS_EMPTY() -#else /* !TCP_QUEUE_OOSEQ || NO_SYS */ -/** Define this to 0 to prevent freeing ooseq pbufs when the PBUF_POOL is empty */ -#ifndef PBUF_POOL_FREE_OOSEQ -#define PBUF_POOL_FREE_OOSEQ 1 -#endif /* PBUF_POOL_FREE_OOSEQ */ - -#if PBUF_POOL_FREE_OOSEQ -#include "lwip/tcpip.h" -#define PBUF_POOL_IS_EMPTY() pbuf_pool_is_empty() -static u8_t pbuf_free_ooseq_queued; -/** - * Attempt to reclaim some memory from queued out-of-sequence TCP segments - * if we run out of pool pbufs. It's better to give priority to new packets - * if we're running out. - * - * This must be done in the correct thread context therefore this function - * can only be used with NO_SYS=0 and through tcpip_callback. - */ -static void -pbuf_free_ooseq(void* arg) -{ - struct tcp_pcb* pcb; - SYS_ARCH_DECL_PROTECT(old_level); - LWIP_UNUSED_ARG(arg); - - SYS_ARCH_PROTECT(old_level); - pbuf_free_ooseq_queued = 0; - SYS_ARCH_UNPROTECT(old_level); - - for (pcb = tcp_active_pcbs; NULL != pcb; pcb = pcb->next) { - if (NULL != pcb->ooseq) { - /** Free the ooseq pbufs of one PCB only */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free_ooseq: freeing out-of-sequence pbufs\n")); - tcp_segs_free(pcb->ooseq); - pcb->ooseq = NULL; - return; - } - } -} - -/** Queue a call to pbuf_free_ooseq if not already queued. */ -static void -pbuf_pool_is_empty(void) -{ - u8_t queued; - SYS_ARCH_DECL_PROTECT(old_level); - - SYS_ARCH_PROTECT(old_level); - queued = pbuf_free_ooseq_queued; - pbuf_free_ooseq_queued = 1; - SYS_ARCH_UNPROTECT(old_level); - - if(!queued) { - /* queue a call to pbuf_free_ooseq if not already queued */ - if(tcpip_callback_with_block(pbuf_free_ooseq, NULL, 0) != ERR_OK) { - SYS_ARCH_PROTECT(old_level); - pbuf_free_ooseq_queued = 0; - SYS_ARCH_UNPROTECT(old_level); - } - } -} -#endif /* PBUF_POOL_FREE_OOSEQ */ -#endif /* !TCP_QUEUE_OOSEQ || NO_SYS */ - -/** - * Allocates a pbuf of the given type (possibly a chain for PBUF_POOL type). - * - * The actual memory allocated for the pbuf is determined by the - * layer at which the pbuf is allocated and the requested size - * (from the size parameter). - * - * @param layer flag to define header size - * @param length size of the pbuf's payload - * @param type this parameter decides how and where the pbuf - * should be allocated as follows: - * - * - PBUF_RAM: buffer memory for pbuf is allocated as one large - * chunk. This includes protocol headers as well. - * - PBUF_ROM: no buffer memory is allocated for the pbuf, even for - * protocol headers. Additional headers must be prepended - * by allocating another pbuf and chain in to the front of - * the ROM pbuf. It is assumed that the memory used is really - * similar to ROM in that it is immutable and will not be - * changed. Memory which is dynamic should generally not - * be attached to PBUF_ROM pbufs. Use PBUF_REF instead. - * - PBUF_REF: no buffer memory is allocated for the pbuf, even for - * protocol headers. It is assumed that the pbuf is only - * being used in a single thread. If the pbuf gets queued, - * then pbuf_take should be called to copy the buffer. - * - PBUF_POOL: the pbuf is allocated as a pbuf chain, with pbufs from - * the pbuf pool that is allocated during pbuf_init(). - * - * @return the allocated pbuf. If multiple pbufs where allocated, this - * is the first pbuf of a pbuf chain. - */ -struct pbuf * -pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type) -{ - struct pbuf *p, *q, *r; - u16_t offset; - s32_t rem_len; /* remaining length */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F")\n", length)); - - /* determine header offset */ - offset = 0; - switch (layer) { - case PBUF_TRANSPORT: - /* add room for transport (often TCP) layer header */ - offset += PBUF_TRANSPORT_HLEN; - /* FALLTHROUGH */ - case PBUF_IP: - /* add room for IP layer header */ - offset += PBUF_IP_HLEN; - /* FALLTHROUGH */ - case PBUF_LINK: - /* add room for link layer header */ - offset += PBUF_LINK_HLEN; - break; - case PBUF_RAW: - break; - default: - LWIP_ASSERT("pbuf_alloc: bad pbuf layer", 0); - return NULL; - } - - switch (type) { - case PBUF_POOL: - /* allocate head of pbuf chain into p */ - p = memp_malloc(MEMP_PBUF_POOL); - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc: allocated pbuf %p\n", (void *)p)); - if (p == NULL) { - PBUF_POOL_IS_EMPTY(); - return NULL; - } - p->type = type; - p->next = NULL; - - /* make the payload pointer point 'offset' bytes into pbuf data memory */ - p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + (SIZEOF_STRUCT_PBUF + offset))); - LWIP_ASSERT("pbuf_alloc: pbuf p->payload properly aligned", - ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0); - /* the total length of the pbuf chain is the requested size */ - p->tot_len = length; - /* set the length of the first pbuf in the chain */ - p->len = LWIP_MIN(length, PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)); - LWIP_ASSERT("check p->payload + p->len does not overflow pbuf", - ((u8_t*)p->payload + p->len <= - (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED)); - LWIP_ASSERT("PBUF_POOL_BUFSIZE must be bigger than MEM_ALIGNMENT", - (PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)) > 0 ); - /* set reference count (needed here in case we fail) */ - p->ref = 1; - - /* now allocate the tail of the pbuf chain */ - - /* remember first pbuf for linkage in next iteration */ - r = p; - /* remaining length to be allocated */ - rem_len = length - p->len; - /* any remaining pbufs to be allocated? */ - while (rem_len > 0) { - q = memp_malloc(MEMP_PBUF_POOL); - if (q == NULL) { - PBUF_POOL_IS_EMPTY(); - /* free chain so far allocated */ - pbuf_free(p); - /* bail out unsuccesfully */ - return NULL; - } - q->type = type; - q->flags = 0; - q->next = NULL; - /* make previous pbuf point to this pbuf */ - r->next = q; - /* set total length of this pbuf and next in chain */ - LWIP_ASSERT("rem_len < max_u16_t", rem_len < 0xffff); - q->tot_len = (u16_t)rem_len; - /* this pbuf length is pool size, unless smaller sized tail */ - q->len = LWIP_MIN((u16_t)rem_len, PBUF_POOL_BUFSIZE_ALIGNED); - q->payload = (void *)((u8_t *)q + SIZEOF_STRUCT_PBUF); - LWIP_ASSERT("pbuf_alloc: pbuf q->payload properly aligned", - ((mem_ptr_t)q->payload % MEM_ALIGNMENT) == 0); - LWIP_ASSERT("check p->payload + p->len does not overflow pbuf", - ((u8_t*)p->payload + p->len <= - (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED)); - q->ref = 1; - /* calculate remaining length to be allocated */ - rem_len -= q->len; - /* remember this pbuf for linkage in next iteration */ - r = q; - } - /* end of chain */ - /*r->next = NULL;*/ - - break; - case PBUF_RAM: - /* If pbuf is to be allocated in RAM, allocate memory for it. */ - p = (struct pbuf*)mem_malloc(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF + offset) + LWIP_MEM_ALIGN_SIZE(length)); - if (p == NULL) { - return NULL; - } - /* Set up internal structure of the pbuf. */ - p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset)); - p->len = p->tot_len = length; - p->next = NULL; - p->type = type; - - LWIP_ASSERT("pbuf_alloc: pbuf->payload properly aligned", - ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0); - break; - /* pbuf references existing (non-volatile static constant) ROM payload? */ - case PBUF_ROM: - /* pbuf references existing (externally allocated) RAM payload? */ - case PBUF_REF: - /* only allocate memory for the pbuf structure */ - p = memp_malloc(MEMP_PBUF); - if (p == NULL) { - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_alloc: Could not allocate MEMP_PBUF for PBUF_%s.\n", - (type == PBUF_ROM) ? "ROM" : "REF")); - return NULL; - } - /* caller must set this field properly, afterwards */ - p->payload = NULL; - p->len = p->tot_len = length; - p->next = NULL; - p->type = type; - break; - default: - LWIP_ASSERT("pbuf_alloc: erroneous type", 0); - return NULL; - } - /* set reference count */ - p->ref = 1; - /* set flags */ - p->flags = 0; - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F") == %p\n", length, (void *)p)); - return p; -} - - -/** - * Shrink a pbuf chain to a desired length. - * - * @param p pbuf to shrink. - * @param new_len desired new length of pbuf chain - * - * Depending on the desired length, the first few pbufs in a chain might - * be skipped and left unchanged. The new last pbuf in the chain will be - * resized, and any remaining pbufs will be freed. - * - * @note If the pbuf is ROM/REF, only the ->tot_len and ->len fields are adjusted. - * @note May not be called on a packet queue. - * - * @note Despite its name, pbuf_realloc cannot grow the size of a pbuf (chain). - */ -void -pbuf_realloc(struct pbuf *p, u16_t new_len) -{ - struct pbuf *q; - u16_t rem_len; /* remaining length */ - s32_t grow; - - LWIP_ASSERT("pbuf_realloc: p != NULL", p != NULL); - LWIP_ASSERT("pbuf_realloc: sane p->type", p->type == PBUF_POOL || - p->type == PBUF_ROM || - p->type == PBUF_RAM || - p->type == PBUF_REF); - - /* desired length larger than current length? */ - if (new_len >= p->tot_len) { - /* enlarging not yet supported */ - return; - } - - /* the pbuf chain grows by (new_len - p->tot_len) bytes - * (which may be negative in case of shrinking) */ - grow = new_len - p->tot_len; - - /* first, step over any pbufs that should remain in the chain */ - rem_len = new_len; - q = p; - /* should this pbuf be kept? */ - while (rem_len > q->len) { - /* decrease remaining length by pbuf length */ - rem_len -= q->len; - /* decrease total length indicator */ - LWIP_ASSERT("grow < max_u16_t", grow < 0xffff); - q->tot_len += (u16_t)grow; - /* proceed to next pbuf in chain */ - q = q->next; - LWIP_ASSERT("pbuf_realloc: q != NULL", q != NULL); - } - /* we have now reached the new last pbuf (in q) */ - /* rem_len == desired length for pbuf q */ - - /* shrink allocated memory for PBUF_RAM */ - /* (other types merely adjust their length fields */ - if ((q->type == PBUF_RAM) && (rem_len != q->len)) { - /* reallocate and adjust the length of the pbuf that will be split */ - q = mem_realloc(q, (u8_t *)q->payload - (u8_t *)q + rem_len); - LWIP_ASSERT("mem_realloc give q == NULL", q != NULL); - } - /* adjust length fields for new last pbuf */ - q->len = rem_len; - q->tot_len = q->len; - - /* any remaining pbufs in chain? */ - if (q->next != NULL) { - /* free remaining pbufs in chain */ - pbuf_free(q->next); - } - /* q is last packet in chain */ - q->next = NULL; - -} - -/** - * Adjusts the payload pointer to hide or reveal headers in the payload. - * - * Adjusts the ->payload pointer so that space for a header - * (dis)appears in the pbuf payload. - * - * The ->payload, ->tot_len and ->len fields are adjusted. - * - * @param p pbuf to change the header size. - * @param header_size_increment Number of bytes to increment header size which - * increases the size of the pbuf. New space is on the front. - * (Using a negative value decreases the header size.) - * If hdr_size_inc is 0, this function does nothing and returns succesful. - * - * PBUF_ROM and PBUF_REF type buffers cannot have their sizes increased, so - * the call will fail. A check is made that the increase in header size does - * not move the payload pointer in front of the start of the buffer. - * @return non-zero on failure, zero on success. - * - */ -u8_t -pbuf_header(struct pbuf *p, s16_t header_size_increment) -{ - u16_t type; - void *payload; - u16_t increment_magnitude; - - LWIP_ASSERT("p != NULL", p != NULL); - if ((header_size_increment == 0) || (p == NULL)) - return 0; - - if (header_size_increment < 0){ - increment_magnitude = -header_size_increment; - /* Check that we aren't going to move off the end of the pbuf */ - LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;); - } else { - increment_magnitude = header_size_increment; -#if 0 - /* Can't assert these as some callers speculatively call - pbuf_header() to see if it's OK. Will return 1 below instead. */ - /* Check that we've got the correct type of pbuf to work with */ - LWIP_ASSERT("p->type == PBUF_RAM || p->type == PBUF_POOL", - p->type == PBUF_RAM || p->type == PBUF_POOL); - /* Check that we aren't going to move off the beginning of the pbuf */ - LWIP_ASSERT("p->payload - increment_magnitude >= p + SIZEOF_STRUCT_PBUF", - (u8_t *)p->payload - increment_magnitude >= (u8_t *)p + SIZEOF_STRUCT_PBUF); -#endif - } - - type = p->type; - /* remember current payload pointer */ - payload = p->payload; - - /* pbuf types containing payloads? */ - if (type == PBUF_RAM || type == PBUF_POOL) { - /* set new payload pointer */ - p->payload = (u8_t *)p->payload - header_size_increment; - /* boundary check fails? */ - if ((u8_t *)p->payload < (u8_t *)p + SIZEOF_STRUCT_PBUF) { - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_header: failed as %p < %p (not enough space for new header size)\n", - (void *)p->payload, (void *)(p + 1))); - /* restore old payload pointer */ - p->payload = payload; - /* bail out unsuccesfully */ - return 1; - } - /* pbuf types refering to external payloads? */ - } else if (type == PBUF_REF || type == PBUF_ROM) { - /* hide a header in the payload? */ - if ((header_size_increment < 0) && (increment_magnitude <= p->len)) { - /* increase payload pointer */ - p->payload = (u8_t *)p->payload - header_size_increment; - } else { - /* cannot expand payload to front (yet!) - * bail out unsuccesfully */ - return 1; - } - } - else { - /* Unknown type */ - LWIP_ASSERT("bad pbuf type", 0); - return 1; - } - /* modify pbuf length fields */ - p->len += header_size_increment; - p->tot_len += header_size_increment; - - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_header: old %p new %p (%"S16_F")\n", - (void *)payload, (void *)p->payload, header_size_increment)); - - return 0; -} - -/** - * Dereference a pbuf chain or queue and deallocate any no-longer-used - * pbufs at the head of this chain or queue. - * - * Decrements the pbuf reference count. If it reaches zero, the pbuf is - * deallocated. - * - * For a pbuf chain, this is repeated for each pbuf in the chain, - * up to the first pbuf which has a non-zero reference count after - * decrementing. So, when all reference counts are one, the whole - * chain is free'd. - * - * @param p The pbuf (chain) to be dereferenced. - * - * @return the number of pbufs that were de-allocated - * from the head of the chain. - * - * @note MUST NOT be called on a packet queue (Not verified to work yet). - * @note the reference counter of a pbuf equals the number of pointers - * that refer to the pbuf (or into the pbuf). - * - * @internal examples: - * - * Assuming existing chains a->b->c with the following reference - * counts, calling pbuf_free(a) results in: - * - * 1->2->3 becomes ...1->3 - * 3->3->3 becomes 2->3->3 - * 1->1->2 becomes ......1 - * 2->1->1 becomes 1->1->1 - * 1->1->1 becomes ....... - * - */ -u8_t -pbuf_free(struct pbuf *p) -{ - u16_t type; - struct pbuf *q; - u8_t count; - - if (p == NULL) { - LWIP_ASSERT("p != NULL", p != NULL); - /* if assertions are disabled, proceed with debug output */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_free(p == NULL) was called.\n")); - return 0; - } - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free(%p)\n", (void *)p)); - - PERF_START; - - LWIP_ASSERT("pbuf_free: sane type", - p->type == PBUF_RAM || p->type == PBUF_ROM || - p->type == PBUF_REF || p->type == PBUF_POOL); - - count = 0; - /* de-allocate all consecutive pbufs from the head of the chain that - * obtain a zero reference count after decrementing*/ - while (p != NULL) { - u16_t ref; - SYS_ARCH_DECL_PROTECT(old_level); - /* Since decrementing ref cannot be guaranteed to be a single machine operation - * we must protect it. We put the new ref into a local variable to prevent - * further protection. */ - SYS_ARCH_PROTECT(old_level); - /* all pbufs in a chain are referenced at least once */ - LWIP_ASSERT("pbuf_free: p->ref > 0", p->ref > 0); - /* decrease reference count (number of pointers to pbuf) */ - ref = --(p->ref); - SYS_ARCH_UNPROTECT(old_level); - /* this pbuf is no longer referenced to? */ - if (ref == 0) { - /* remember next pbuf in chain for next iteration */ - q = p->next; - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: deallocating %p\n", (void *)p)); - type = p->type; - /* is this a pbuf from the pool? */ - if (type == PBUF_POOL) { - memp_free(MEMP_PBUF_POOL, p); - /* is this a ROM or RAM referencing pbuf? */ - } else if (type == PBUF_ROM || type == PBUF_REF) { - memp_free(MEMP_PBUF, p); - /* type == PBUF_RAM */ - } else { - mem_free(p); - } - count++; - /* proceed to next pbuf */ - p = q; - /* p->ref > 0, this pbuf is still referenced to */ - /* (and so the remaining pbufs in chain as well) */ - } else { - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: %p has ref %"U16_F", ending here.\n", (void *)p, ref)); - /* stop walking through the chain */ - p = NULL; - } - } - PERF_STOP("pbuf_free"); - /* return number of de-allocated pbufs */ - return count; -} - -/** - * Count number of pbufs in a chain - * - * @param p first pbuf of chain - * @return the number of pbufs in a chain - */ - -u8_t -pbuf_clen(struct pbuf *p) -{ - u8_t len; - - len = 0; - while (p != NULL) { - ++len; - p = p->next; - } - return len; -} - -/** - * Increment the reference count of the pbuf. - * - * @param p pbuf to increase reference counter of - * - */ -void -pbuf_ref(struct pbuf *p) -{ - SYS_ARCH_DECL_PROTECT(old_level); - /* pbuf given? */ - if (p != NULL) { - SYS_ARCH_PROTECT(old_level); - ++(p->ref); - SYS_ARCH_UNPROTECT(old_level); - } -} - -/** - * Concatenate two pbufs (each may be a pbuf chain) and take over - * the caller's reference of the tail pbuf. - * - * @note The caller MAY NOT reference the tail pbuf afterwards. - * Use pbuf_chain() for that purpose. - * - * @see pbuf_chain() - */ - -void -pbuf_cat(struct pbuf *h, struct pbuf *t) -{ - struct pbuf *p; - - LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)", - ((h != NULL) && (t != NULL)), return;); - - /* proceed to last pbuf of chain */ - for (p = h; p->next != NULL; p = p->next) { - /* add total length of second chain to all totals of first chain */ - p->tot_len += t->tot_len; - } - /* { p is last pbuf of first h chain, p->next == NULL } */ - LWIP_ASSERT("p->tot_len == p->len (of last pbuf in chain)", p->tot_len == p->len); - LWIP_ASSERT("p->next == NULL", p->next == NULL); - /* add total length of second chain to last pbuf total of first chain */ - p->tot_len += t->tot_len; - /* chain last pbuf of head (p) with first of tail (t) */ - p->next = t; - /* p->next now references t, but the caller will drop its reference to t, - * so netto there is no change to the reference count of t. - */ -} - -/** - * Chain two pbufs (or pbuf chains) together. - * - * The caller MUST call pbuf_free(t) once it has stopped - * using it. Use pbuf_cat() instead if you no longer use t. - * - * @param h head pbuf (chain) - * @param t tail pbuf (chain) - * @note The pbufs MUST belong to the same packet. - * @note MAY NOT be called on a packet queue. - * - * The ->tot_len fields of all pbufs of the head chain are adjusted. - * The ->next field of the last pbuf of the head chain is adjusted. - * The ->ref field of the first pbuf of the tail chain is adjusted. - * - */ -void -pbuf_chain(struct pbuf *h, struct pbuf *t) -{ - pbuf_cat(h, t); - /* t is now referenced by h */ - pbuf_ref(t); - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_chain: %p references %p\n", (void *)h, (void *)t)); -} - -/** - * Dechains the first pbuf from its succeeding pbufs in the chain. - * - * Makes p->tot_len field equal to p->len. - * @param p pbuf to dechain - * @return remainder of the pbuf chain, or NULL if it was de-allocated. - * @note May not be called on a packet queue. - */ -struct pbuf * -pbuf_dechain(struct pbuf *p) -{ - struct pbuf *q; - u8_t tail_gone = 1; - /* tail */ - q = p->next; - /* pbuf has successor in chain? */ - if (q != NULL) { - /* assert tot_len invariant: (p->tot_len == p->len + (p->next? p->next->tot_len: 0) */ - LWIP_ASSERT("p->tot_len == p->len + q->tot_len", q->tot_len == p->tot_len - p->len); - /* enforce invariant if assertion is disabled */ - q->tot_len = p->tot_len - p->len; - /* decouple pbuf from remainder */ - p->next = NULL; - /* total length of pbuf p is its own length only */ - p->tot_len = p->len; - /* q is no longer referenced by p, free it */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_dechain: unreferencing %p\n", (void *)q)); - tail_gone = pbuf_free(q); - if (tail_gone > 0) { - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, - ("pbuf_dechain: deallocated %p (as it is no longer referenced)\n", (void *)q)); - } - /* return remaining tail or NULL if deallocated */ - } - /* assert tot_len invariant: (p->tot_len == p->len + (p->next? p->next->tot_len: 0) */ - LWIP_ASSERT("p->tot_len == p->len", p->tot_len == p->len); - return ((tail_gone > 0) ? NULL : q); -} - -/** - * - * Create PBUF_RAM copies of pbufs. - * - * Used to queue packets on behalf of the lwIP stack, such as - * ARP based queueing. - * - * @note You MUST explicitly use p = pbuf_take(p); - * - * @note Only one packet is copied, no packet queue! - * - * @param p_to pbuf destination of the copy - * @param p_from pbuf source of the copy - * - * @return ERR_OK if pbuf was copied - * ERR_ARG if one of the pbufs is NULL or p_to is not big - * enough to hold p_from - */ -err_t -pbuf_copy(struct pbuf *p_to, struct pbuf *p_from) -{ - u16_t offset_to=0, offset_from=0, len; - - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy(%p, %p)\n", - (void*)p_to, (void*)p_from)); - - /* is the target big enough to hold the source? */ - LWIP_ERROR("pbuf_copy: target not big enough to hold source", ((p_to != NULL) && - (p_from != NULL) && (p_to->tot_len >= p_from->tot_len)), return ERR_ARG;); - - /* iterate through pbuf chain */ - do - { - LWIP_ASSERT("p_to != NULL", p_to != NULL); - /* copy one part of the original chain */ - if ((p_to->len - offset_to) >= (p_from->len - offset_from)) { - /* complete current p_from fits into current p_to */ - len = p_from->len - offset_from; - } else { - /* current p_from does not fit into current p_to */ - len = p_to->len - offset_to; - } - MEMCPY((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len); - offset_to += len; - offset_from += len; - LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len); - if (offset_to == p_to->len) { - /* on to next p_to (if any) */ - offset_to = 0; - p_to = p_to->next; - } - LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len); - if (offset_from >= p_from->len) { - /* on to next p_from (if any) */ - offset_from = 0; - p_from = p_from->next; - } - - if((p_from != NULL) && (p_from->len == p_from->tot_len)) { - /* don't copy more than one packet! */ - LWIP_ERROR("pbuf_copy() does not allow packet queues!\n", - (p_from->next == NULL), return ERR_VAL;); - } - if((p_to != NULL) && (p_to->len == p_to->tot_len)) { - /* don't copy more than one packet! */ - LWIP_ERROR("pbuf_copy() does not allow packet queues!\n", - (p_to->next == NULL), return ERR_VAL;); - } - } while (p_from); - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy: end of chain reached.\n")); - return ERR_OK; -} - -/** - * Copy (part of) the contents of a packet buffer - * to an application supplied buffer. - * - * @param buf the pbuf from which to copy data - * @param dataptr the application supplied buffer - * @param len length of data to copy (dataptr must be big enough). No more - * than buf->tot_len will be copied, irrespective of len - * @param offset offset into the packet buffer from where to begin copying len bytes - * @return the number of bytes copied, or 0 on failure - */ -u16_t -pbuf_copy_partial(struct pbuf *buf, void *dataptr, u16_t len, u16_t offset) -{ - struct pbuf *p; - u16_t left; - u16_t buf_copy_len; - u16_t copied_total = 0; - - LWIP_ERROR("pbuf_copy_partial: invalid buf", (buf != NULL), return 0;); - LWIP_ERROR("pbuf_copy_partial: invalid dataptr", (dataptr != NULL), return 0;); - - left = 0; - - if((buf == NULL) || (dataptr == NULL)) { - return 0; - } - - /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */ - for(p = buf; len != 0 && p != NULL; p = p->next) { - if ((offset != 0) && (offset >= p->len)) { - /* don't copy from this buffer -> on to the next */ - offset -= p->len; - } else { - /* copy from this buffer. maybe only partially. */ - buf_copy_len = p->len - offset; - if (buf_copy_len > len) - buf_copy_len = len; - /* copy the necessary parts of the buffer */ - MEMCPY(&((char*)dataptr)[left], &((char*)p->payload)[offset], buf_copy_len); - copied_total += buf_copy_len; - left += buf_copy_len; - len -= buf_copy_len; - offset = 0; - } - } - return copied_total; -} - -/** - * Copy application supplied data into a pbuf. - * This function can only be used to copy the equivalent of buf->tot_len data. - * - * @param buf pbuf to fill with data - * @param dataptr application supplied data buffer - * @param len length of the application supplied data buffer - * - * @return ERR_OK if successful, ERR_MEM if the pbuf is not big enough - */ -err_t -pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len) -{ - struct pbuf *p; - u16_t buf_copy_len; - u16_t total_copy_len = len; - u16_t copied_total = 0; - - LWIP_ERROR("pbuf_take: invalid buf", (buf != NULL), return 0;); - LWIP_ERROR("pbuf_take: invalid dataptr", (dataptr != NULL), return 0;); - - if ((buf == NULL) || (dataptr == NULL) || (buf->tot_len < len)) { - return ERR_ARG; - } - - /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */ - for(p = buf; total_copy_len != 0; p = p->next) { - LWIP_ASSERT("pbuf_take: invalid pbuf", p != NULL); - buf_copy_len = total_copy_len; - if (buf_copy_len > p->len) { - /* this pbuf cannot hold all remaining data */ - buf_copy_len = p->len; - } - /* copy the necessary parts of the buffer */ - MEMCPY(p->payload, &((char*)dataptr)[copied_total], buf_copy_len); - total_copy_len -= buf_copy_len; - copied_total += buf_copy_len; - } - LWIP_ASSERT("did not copy all data", total_copy_len == 0 && copied_total == len); - return ERR_OK; -} - -/** - * Creates a single pbuf out of a queue of pbufs. - * - * @remark: The source pbuf 'p' is not freed by this function because that can - * be illegal in some places! - * - * @param p the source pbuf - * @param layer pbuf_layer of the new pbuf - * - * @return a new, single pbuf (p->next is NULL) - * or the old pbuf if allocation fails - */ -struct pbuf* -pbuf_coalesce(struct pbuf *p, pbuf_layer layer) -{ - struct pbuf *q; - err_t err; - if (p->next == NULL) { - return p; - } - q = pbuf_alloc(layer, p->tot_len, PBUF_RAM); - if (q == NULL) { - /* @todo: what do we do now? */ - return p; - } - err = pbuf_copy(q, p); - LWIP_ASSERT("pbuf_copy failed", err == ERR_OK); - pbuf_free(p); - return q; -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/raw.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/raw.c deleted file mode 100644 index 6966bbc..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/raw.c +++ /dev/null @@ -1,355 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Implementation of raw protocol PCBs for low-level handling of - * different types of protocols besides (or overriding) those - * already available in lwIP. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/memp.h" -#include "lwip/inet.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/raw.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "arch/perf.h" - -#include - -/** The list of RAW PCBs */ -static struct raw_pcb *raw_pcbs; - -/** - * Determine if in incoming IP packet is covered by a RAW PCB - * and if so, pass it to a user-provided receive callback function. - * - * Given an incoming IP datagram (as a chain of pbufs) this function - * finds a corresponding RAW PCB and calls the corresponding receive - * callback function. - * - * @param p pbuf to be demultiplexed to a RAW PCB. - * @param inp network interface on which the datagram was received. - * @return - 1 if the packet has been eaten by a RAW PCB receive - * callback function. The caller MAY NOT not reference the - * packet any longer, and MAY NOT call pbuf_free(). - * @return - 0 if packet is not eaten (pbuf is still referenced by the - * caller). - * - */ -u8_t -raw_input(struct pbuf *p, struct netif *inp) -{ - struct raw_pcb *pcb, *prev; - struct ip_hdr *iphdr; - s16_t proto; - u8_t eaten = 0; - - LWIP_UNUSED_ARG(inp); - - iphdr = p->payload; - proto = IPH_PROTO(iphdr); - - prev = NULL; - pcb = raw_pcbs; - /* loop through all raw pcbs until the packet is eaten by one */ - /* this allows multiple pcbs to match against the packet by design */ - while ((eaten == 0) && (pcb != NULL)) { - if (pcb->protocol == proto) { -#if IP_SOF_BROADCAST_RECV - /* broadcast filter? */ - if ((pcb->so_options & SOF_BROADCAST) || !ip_addr_isbroadcast(&(iphdr->dest), inp)) -#endif /* IP_SOF_BROADCAST_RECV */ - { - /* receive callback function available? */ - if (pcb->recv != NULL) { - /* the receive callback function did not eat the packet? */ - if (pcb->recv(pcb->recv_arg, pcb, p, &(iphdr->src)) != 0) { - /* receive function ate the packet */ - p = NULL; - eaten = 1; - if (prev != NULL) { - /* move the pcb to the front of raw_pcbs so that is - found faster next time */ - prev->next = pcb->next; - pcb->next = raw_pcbs; - raw_pcbs = pcb; - } - } - } - /* no receive callback function was set for this raw PCB */ - } - /* drop the packet */ - } - prev = pcb; - pcb = pcb->next; - } - return eaten; -} - -/** - * Bind a RAW PCB. - * - * @param pcb RAW PCB to be bound with a local address ipaddr. - * @param ipaddr local IP address to bind with. Use IP_ADDR_ANY to - * bind to all local interfaces. - * - * @return lwIP error code. - * - ERR_OK. Successful. No error occured. - * - ERR_USE. The specified IP address is already bound to by - * another RAW PCB. - * - * @see raw_disconnect() - */ -err_t -raw_bind(struct raw_pcb *pcb, struct ip_addr *ipaddr) -{ - ip_addr_set(&pcb->local_ip, ipaddr); - return ERR_OK; -} - -/** - * Connect an RAW PCB. This function is required by upper layers - * of lwip. Using the raw api you could use raw_sendto() instead - * - * This will associate the RAW PCB with the remote address. - * - * @param pcb RAW PCB to be connected with remote address ipaddr and port. - * @param ipaddr remote IP address to connect with. - * - * @return lwIP error code - * - * @see raw_disconnect() and raw_sendto() - */ -err_t -raw_connect(struct raw_pcb *pcb, struct ip_addr *ipaddr) -{ - ip_addr_set(&pcb->remote_ip, ipaddr); - return ERR_OK; -} - - -/** - * Set the callback function for received packets that match the - * raw PCB's protocol and binding. - * - * The callback function MUST either - * - eat the packet by calling pbuf_free() and returning non-zero. The - * packet will not be passed to other raw PCBs or other protocol layers. - * - not free the packet, and return zero. The packet will be matched - * against further PCBs and/or forwarded to another protocol layers. - * - * @return non-zero if the packet was free()d, zero if the packet remains - * available for others. - */ -void -raw_recv(struct raw_pcb *pcb, - u8_t (* recv)(void *arg, struct raw_pcb *upcb, struct pbuf *p, - struct ip_addr *addr), - void *recv_arg) -{ - /* remember recv() callback and user data */ - pcb->recv = recv; - pcb->recv_arg = recv_arg; -} - -/** - * Send the raw IP packet to the given address. Note that actually you cannot - * modify the IP headers (this is inconsistent with the receive callback where - * you actually get the IP headers), you can only specify the IP payload here. - * It requires some more changes in lwIP. (there will be a raw_send() function - * then.) - * - * @param pcb the raw pcb which to send - * @param p the IP payload to send - * @param ipaddr the destination address of the IP packet - * - */ -err_t -raw_sendto(struct raw_pcb *pcb, struct pbuf *p, struct ip_addr *ipaddr) -{ - err_t err; - struct netif *netif; - struct ip_addr *src_ip; - struct pbuf *q; /* q will be sent down the stack */ - - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE, ("raw_sendto\n")); - - /* not enough space to add an IP header to first pbuf in given p chain? */ - if (pbuf_header(p, IP_HLEN)) { - /* allocate header in new pbuf */ - q = pbuf_alloc(PBUF_IP, 0, PBUF_RAM); - /* new header pbuf could not be allocated? */ - if (q == NULL) { - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("raw_sendto: could not allocate header\n")); - return ERR_MEM; - } - /* chain header q in front of given pbuf p */ - pbuf_chain(q, p); - /* { first pbuf q points to header pbuf } */ - LWIP_DEBUGF(RAW_DEBUG, ("raw_sendto: added header pbuf %p before given pbuf %p\n", (void *)q, (void *)p)); - } else { - /* first pbuf q equals given pbuf */ - q = p; - if(pbuf_header(q, -IP_HLEN)) { - LWIP_ASSERT("Can't restore header we just removed!", 0); - return ERR_MEM; - } - } - - if ((netif = ip_route(ipaddr)) == NULL) { - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_LEVEL_WARNING, ("raw_sendto: No route to 0x%"X32_F"\n", ipaddr->addr)); - /* free any temporary header pbuf allocated by pbuf_header() */ - if (q != p) { - pbuf_free(q); - } - return ERR_RTE; - } - -#if IP_SOF_BROADCAST - /* broadcast filter? */ - if ( ((pcb->so_options & SOF_BROADCAST) == 0) && ip_addr_isbroadcast(ipaddr, netif) ) { - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_LEVEL_WARNING, ("raw_sendto: SOF_BROADCAST not enabled on pcb %p\n", (void *)pcb)); - /* free any temporary header pbuf allocated by pbuf_header() */ - if (q != p) { - pbuf_free(q); - } - return ERR_VAL; - } -#endif /* IP_SOF_BROADCAST */ - - if (ip_addr_isany(&pcb->local_ip)) { - /* use outgoing network interface IP address as source address */ - src_ip = &(netif->ip_addr); - } else { - /* use RAW PCB local IP address as source address */ - src_ip = &(pcb->local_ip); - } - -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = &(pcb->addr_hint); -#endif /* LWIP_NETIF_HWADDRHINT*/ - err = ip_output_if (q, src_ip, ipaddr, pcb->ttl, pcb->tos, pcb->protocol, netif); -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = NULL; -#endif /* LWIP_NETIF_HWADDRHINT*/ - - /* did we chain a header earlier? */ - if (q != p) { - /* free the header */ - pbuf_free(q); - } - return err; -} - -/** - * Send the raw IP packet to the address given by raw_connect() - * - * @param pcb the raw pcb which to send - * @param p the IP payload to send - * - */ -err_t -raw_send(struct raw_pcb *pcb, struct pbuf *p) -{ - return raw_sendto(pcb, p, &pcb->remote_ip); -} - -/** - * Remove an RAW PCB. - * - * @param pcb RAW PCB to be removed. The PCB is removed from the list of - * RAW PCB's and the data structure is freed from memory. - * - * @see raw_new() - */ -void -raw_remove(struct raw_pcb *pcb) -{ - struct raw_pcb *pcb2; - /* pcb to be removed is first in list? */ - if (raw_pcbs == pcb) { - /* make list start at 2nd pcb */ - raw_pcbs = raw_pcbs->next; - /* pcb not 1st in list */ - } else { - for(pcb2 = raw_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { - /* find pcb in raw_pcbs list */ - if (pcb2->next != NULL && pcb2->next == pcb) { - /* remove pcb from list */ - pcb2->next = pcb->next; - } - } - } - memp_free(MEMP_RAW_PCB, pcb); -} - -/** - * Create a RAW PCB. - * - * @return The RAW PCB which was created. NULL if the PCB data structure - * could not be allocated. - * - * @param proto the protocol number of the IPs payload (e.g. IP_PROTO_ICMP) - * - * @see raw_remove() - */ -struct raw_pcb * -raw_new(u8_t proto) { - struct raw_pcb *pcb; - - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE, ("raw_new\n")); - - pcb = memp_malloc(MEMP_RAW_PCB); - /* could allocate RAW PCB? */ - if (pcb != NULL) { - /* initialize PCB to all zeroes */ - memset(pcb, 0, sizeof(struct raw_pcb)); - pcb->protocol = proto; - pcb->ttl = RAW_TTL; - pcb->next = raw_pcbs; - raw_pcbs = pcb; - } - return pcb; -} - -#endif /* LWIP_RAW */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/stats.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/stats.c deleted file mode 100644 index 4299a94..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/stats.c +++ /dev/null @@ -1,151 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Statistics module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_STATS /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/stats.h" -#include "lwip/mem.h" - -#include - -struct stats_ lwip_stats; - -#if LWIP_STATS_DISPLAY -void -stats_display_proto(struct stats_proto *proto, char *name) -{ - LWIP_PLATFORM_DIAG(("\n%s\n\t", name)); - LWIP_PLATFORM_DIAG(("xmit: %"STAT_COUNTER_F"\n\t", proto->xmit)); - LWIP_PLATFORM_DIAG(("recv: %"STAT_COUNTER_F"\n\t", proto->recv)); - LWIP_PLATFORM_DIAG(("fw: %"STAT_COUNTER_F"\n\t", proto->fw)); - LWIP_PLATFORM_DIAG(("drop: %"STAT_COUNTER_F"\n\t", proto->drop)); - LWIP_PLATFORM_DIAG(("chkerr: %"STAT_COUNTER_F"\n\t", proto->chkerr)); - LWIP_PLATFORM_DIAG(("lenerr: %"STAT_COUNTER_F"\n\t", proto->lenerr)); - LWIP_PLATFORM_DIAG(("memerr: %"STAT_COUNTER_F"\n\t", proto->memerr)); - LWIP_PLATFORM_DIAG(("rterr: %"STAT_COUNTER_F"\n\t", proto->rterr)); - LWIP_PLATFORM_DIAG(("proterr: %"STAT_COUNTER_F"\n\t", proto->proterr)); - LWIP_PLATFORM_DIAG(("opterr: %"STAT_COUNTER_F"\n\t", proto->opterr)); - LWIP_PLATFORM_DIAG(("err: %"STAT_COUNTER_F"\n\t", proto->err)); - LWIP_PLATFORM_DIAG(("cachehit: %"STAT_COUNTER_F"\n", proto->cachehit)); -} - -#if IGMP_STATS -void -stats_display_igmp(struct stats_igmp *igmp) -{ - LWIP_PLATFORM_DIAG(("\nIGMP\n\t")); - LWIP_PLATFORM_DIAG(("lenerr: %"STAT_COUNTER_F"\n\t", igmp->lenerr)); - LWIP_PLATFORM_DIAG(("chkerr: %"STAT_COUNTER_F"\n\t", igmp->chkerr)); - LWIP_PLATFORM_DIAG(("v1_rxed: %"STAT_COUNTER_F"\n\t", igmp->v1_rxed)); - LWIP_PLATFORM_DIAG(("join_sent: %"STAT_COUNTER_F"\n\t", igmp->join_sent)); - LWIP_PLATFORM_DIAG(("leave_sent: %"STAT_COUNTER_F"\n\t", igmp->leave_sent)); - LWIP_PLATFORM_DIAG(("unicast_query: %"STAT_COUNTER_F"\n\t", igmp->unicast_query)); - LWIP_PLATFORM_DIAG(("report_sent: %"STAT_COUNTER_F"\n\t", igmp->report_sent)); - LWIP_PLATFORM_DIAG(("report_rxed: %"STAT_COUNTER_F"\n\t", igmp->report_rxed)); - LWIP_PLATFORM_DIAG(("group_query_rxed: %"STAT_COUNTER_F"\n", igmp->group_query_rxed)); -} -#endif /* IGMP_STATS */ - -#if MEM_STATS || MEMP_STATS -void -stats_display_mem(struct stats_mem *mem, char *name) -{ - LWIP_PLATFORM_DIAG(("\nMEM %s\n\t", name)); - LWIP_PLATFORM_DIAG(("avail: %"U32_F"\n\t", (u32_t)mem->avail)); - LWIP_PLATFORM_DIAG(("used: %"U32_F"\n\t", (u32_t)mem->used)); - LWIP_PLATFORM_DIAG(("max: %"U32_F"\n\t", (u32_t)mem->max)); - LWIP_PLATFORM_DIAG(("err: %"U32_F"\n", (u32_t)mem->err)); -} - -#if MEMP_STATS -void -stats_display_memp(struct stats_mem *mem, int index) -{ - char * memp_names[] = { -#define LWIP_MEMPOOL(name,num,size,desc) desc, -#include "lwip/memp_std.h" - }; - if(index < MEMP_MAX) { - stats_display_mem(mem, memp_names[index]); - } -} -#endif /* MEMP_STATS */ -#endif /* MEM_STATS || MEMP_STATS */ - -#if SYS_STATS -void -stats_display_sys(struct stats_sys *sys) -{ - LWIP_PLATFORM_DIAG(("\nSYS\n\t")); - LWIP_PLATFORM_DIAG(("sem.used: %"U32_F"\n\t", (u32_t)sys->sem.used)); - LWIP_PLATFORM_DIAG(("sem.max: %"U32_F"\n\t", (u32_t)sys->sem.max)); - LWIP_PLATFORM_DIAG(("sem.err: %"U32_F"\n\t", (u32_t)sys->sem.err)); - LWIP_PLATFORM_DIAG(("mbox.used: %"U32_F"\n\t", (u32_t)sys->mbox.used)); - LWIP_PLATFORM_DIAG(("mbox.max: %"U32_F"\n\t", (u32_t)sys->mbox.max)); - LWIP_PLATFORM_DIAG(("mbox.err: %"U32_F"\n\t", (u32_t)sys->mbox.err)); -} -#endif /* SYS_STATS */ - -void -stats_display(void) -{ - s16_t i; - - LINK_STATS_DISPLAY(); - ETHARP_STATS_DISPLAY(); - IPFRAG_STATS_DISPLAY(); - IP_STATS_DISPLAY(); - IGMP_STATS_DISPLAY(); - ICMP_STATS_DISPLAY(); - UDP_STATS_DISPLAY(); - TCP_STATS_DISPLAY(); - MEM_STATS_DISPLAY(); - for (i = 0; i < MEMP_MAX; i++) { - MEMP_STATS_DISPLAY(i); - } - SYS_STATS_DISPLAY(); -} -#endif /* LWIP_STATS_DISPLAY */ - -#endif /* LWIP_STATS */ - diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c deleted file mode 100644 index c588d21..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c +++ /dev/null @@ -1,1463 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Transmission Control Protocol for IP - * - * This file contains common functions for the TCP implementation, such as functinos - * for manipulating the data structures and the TCP timer functions. TCP functions - * related to input and output is found in tcp_in.c and tcp_out.c respectively. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/snmp.h" -#include "lwip/tcp.h" -#include "lwip/debug.h" -#include "lwip/stats.h" - -#include - -const char *tcp_state_str[] = { - "CLOSED", - "LISTEN", - "SYN_SENT", - "SYN_RCVD", - "ESTABLISHED", - "FIN_WAIT_1", - "FIN_WAIT_2", - "CLOSE_WAIT", - "CLOSING", - "LAST_ACK", - "TIME_WAIT" -}; - -/* Incremented every coarse grained timer shot (typically every 500 ms). */ -u32_t tcp_ticks; -const u8_t tcp_backoff[13] = - { 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7}; - /* Times per slowtmr hits */ -const u8_t tcp_persist_backoff[7] = { 3, 6, 12, 24, 48, 96, 120 }; - -/* The TCP PCB lists. */ - -/** List of all TCP PCBs bound but not yet (connected || listening) */ -struct tcp_pcb *tcp_bound_pcbs; -/** List of all TCP PCBs in LISTEN state */ -union tcp_listen_pcbs_t tcp_listen_pcbs; -/** List of all TCP PCBs that are in a state in which - * they accept or send data. */ -struct tcp_pcb *tcp_active_pcbs; -/** List of all TCP PCBs in TIME-WAIT state */ -struct tcp_pcb *tcp_tw_pcbs; - -struct tcp_pcb *tcp_tmp_pcb; - -static u8_t tcp_timer; -static u16_t tcp_new_port(void); - -/** - * Called periodically to dispatch TCP timers. - * - */ -void -tcp_tmr(void) -{ - /* Call tcp_fasttmr() every 250 ms */ - tcp_fasttmr(); - - if (++tcp_timer & 1) { - /* Call tcp_tmr() every 500 ms, i.e., every other timer - tcp_tmr() is called. */ - tcp_slowtmr(); - } -} - -/** - * Closes the connection held by the PCB. - * - * Listening pcbs are freed and may not be referenced any more. - * Connection pcbs are freed if not yet connected and may not be referenced - * any more. If a connection is established (at least SYN received or in - * a closing state), the connection is closed, and put in a closing state. - * The pcb is then automatically freed in tcp_slowtmr(). It is therefore - * unsafe to reference it. - * - * @param pcb the tcp_pcb to close - * @return ERR_OK if connection has been closed - * another err_t if closing failed and pcb is not freed - */ -err_t -tcp_close(struct tcp_pcb *pcb) -{ - err_t err; - -#if TCP_DEBUG - LWIP_DEBUGF(TCP_DEBUG, ("tcp_close: closing in ")); - tcp_debug_print_state(pcb->state); -#endif /* TCP_DEBUG */ - - switch (pcb->state) { - case CLOSED: - /* Closing a pcb in the CLOSED state might seem erroneous, - * however, it is in this state once allocated and as yet unused - * and the user needs some way to free it should the need arise. - * Calling tcp_close() with a pcb that has already been closed, (i.e. twice) - * or for a pcb that has been used and then entered the CLOSED state - * is erroneous, but this should never happen as the pcb has in those cases - * been freed, and so any remaining handles are bogus. */ - err = ERR_OK; - TCP_RMV(&tcp_bound_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - pcb = NULL; - break; - case LISTEN: - err = ERR_OK; - tcp_pcb_remove((struct tcp_pcb **)&tcp_listen_pcbs.pcbs, pcb); - memp_free(MEMP_TCP_PCB_LISTEN, pcb); - pcb = NULL; - break; - case SYN_SENT: - err = ERR_OK; - tcp_pcb_remove(&tcp_active_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - pcb = NULL; - snmp_inc_tcpattemptfails(); - break; - case SYN_RCVD: - err = tcp_send_ctrl(pcb, TCP_FIN); - if (err == ERR_OK) { - snmp_inc_tcpattemptfails(); - pcb->state = FIN_WAIT_1; - } - break; - case ESTABLISHED: - err = tcp_send_ctrl(pcb, TCP_FIN); - if (err == ERR_OK) { - snmp_inc_tcpestabresets(); - pcb->state = FIN_WAIT_1; - } - break; - case CLOSE_WAIT: - err = tcp_send_ctrl(pcb, TCP_FIN); - if (err == ERR_OK) { - snmp_inc_tcpestabresets(); - pcb->state = LAST_ACK; - } - break; - default: - /* Has already been closed, do nothing. */ - err = ERR_OK; - pcb = NULL; - break; - } - - if (pcb != NULL && err == ERR_OK) { - /* To ensure all data has been sent when tcp_close returns, we have - to make sure tcp_output doesn't fail. - Since we don't really have to ensure all data has been sent when tcp_close - returns (unsent data is sent from tcp timer functions, also), we don't care - for the return value of tcp_output for now. */ - /* @todo: When implementing SO_LINGER, this must be changed somehow: - If SOF_LINGER is set, the data should be sent when tcp_close returns. */ - tcp_output(pcb); - } - return err; -} - -/** - * Abandons a connection and optionally sends a RST to the remote - * host. Deletes the local protocol control block. This is done when - * a connection is killed because of shortage of memory. - * - * @param pcb the tcp_pcb to abort - * @param reset boolean to indicate whether a reset should be sent - */ -void -tcp_abandon(struct tcp_pcb *pcb, int reset) -{ - u32_t seqno, ackno; - u16_t remote_port, local_port; - struct ip_addr remote_ip, local_ip; -#if LWIP_CALLBACK_API - void (* errf)(void *arg, err_t err); -#endif /* LWIP_CALLBACK_API */ - void *errf_arg; - - - /* Figure out on which TCP PCB list we are, and remove us. If we - are in an active state, call the receive function associated with - the PCB with a NULL argument, and send an RST to the remote end. */ - if (pcb->state == TIME_WAIT) { - tcp_pcb_remove(&tcp_tw_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - } else { - seqno = pcb->snd_nxt; - ackno = pcb->rcv_nxt; - ip_addr_set(&local_ip, &(pcb->local_ip)); - ip_addr_set(&remote_ip, &(pcb->remote_ip)); - local_port = pcb->local_port; - remote_port = pcb->remote_port; -#if LWIP_CALLBACK_API - errf = pcb->errf; -#endif /* LWIP_CALLBACK_API */ - errf_arg = pcb->callback_arg; - tcp_pcb_remove(&tcp_active_pcbs, pcb); - if (pcb->unacked != NULL) { - tcp_segs_free(pcb->unacked); - } - if (pcb->unsent != NULL) { - tcp_segs_free(pcb->unsent); - } -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL) { - tcp_segs_free(pcb->ooseq); - } -#endif /* TCP_QUEUE_OOSEQ */ - memp_free(MEMP_TCP_PCB, pcb); - TCP_EVENT_ERR(errf, errf_arg, ERR_ABRT); - if (reset) { - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_abandon: sending RST\n")); - tcp_rst(seqno, ackno, &local_ip, &remote_ip, local_port, remote_port); - } - } -} - -/** - * Binds the connection to a local portnumber and IP address. If the - * IP address is not given (i.e., ipaddr == NULL), the IP address of - * the outgoing network interface is used instead. - * - * @param pcb the tcp_pcb to bind (no check is done whether this pcb is - * already bound!) - * @param ipaddr the local ip address to bind to (use IP_ADDR_ANY to bind - * to any local address - * @param port the local port to bind to - * @return ERR_USE if the port is already in use - * ERR_OK if bound - */ -err_t -tcp_bind(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port) -{ - struct tcp_pcb *cpcb; - - LWIP_ERROR("tcp_bind: can only bind in state CLOSED", pcb->state == CLOSED, return ERR_ISCONN); - - if (port == 0) { - port = tcp_new_port(); - } - /* Check if the address already is in use. */ - /* Check the listen pcbs. */ - for(cpcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; - cpcb != NULL; cpcb = cpcb->next) { - if (cpcb->local_port == port) { - if (ip_addr_isany(&(cpcb->local_ip)) || - ip_addr_isany(ipaddr) || - ip_addr_cmp(&(cpcb->local_ip), ipaddr)) { - return ERR_USE; - } - } - } - /* Check the connected pcbs. */ - for(cpcb = tcp_active_pcbs; - cpcb != NULL; cpcb = cpcb->next) { - if (cpcb->local_port == port) { - if (ip_addr_isany(&(cpcb->local_ip)) || - ip_addr_isany(ipaddr) || - ip_addr_cmp(&(cpcb->local_ip), ipaddr)) { - return ERR_USE; - } - } - } - /* Check the bound, not yet connected pcbs. */ - for(cpcb = tcp_bound_pcbs; cpcb != NULL; cpcb = cpcb->next) { - if (cpcb->local_port == port) { - if (ip_addr_isany(&(cpcb->local_ip)) || - ip_addr_isany(ipaddr) || - ip_addr_cmp(&(cpcb->local_ip), ipaddr)) { - return ERR_USE; - } - } - } - /* @todo: until SO_REUSEADDR is implemented (see task #6995 on savannah), - * we have to check the pcbs in TIME-WAIT state, also: */ - for(cpcb = tcp_tw_pcbs; cpcb != NULL; cpcb = cpcb->next) { - if (cpcb->local_port == port) { - if (ip_addr_cmp(&(cpcb->local_ip), ipaddr)) { - return ERR_USE; - } - } - } - - if (!ip_addr_isany(ipaddr)) { - pcb->local_ip = *ipaddr; - } - pcb->local_port = port; - TCP_REG(&tcp_bound_pcbs, pcb); - LWIP_DEBUGF(TCP_DEBUG, ("tcp_bind: bind to port %"U16_F"\n", port)); - return ERR_OK; -} -#if LWIP_CALLBACK_API -/** - * Default accept callback if no accept callback is specified by the user. - */ -static err_t -tcp_accept_null(void *arg, struct tcp_pcb *pcb, err_t err) -{ - LWIP_UNUSED_ARG(arg); - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(err); - - return ERR_ABRT; -} -#endif /* LWIP_CALLBACK_API */ - -/** - * Set the state of the connection to be LISTEN, which means that it - * is able to accept incoming connections. The protocol control block - * is reallocated in order to consume less memory. Setting the - * connection to LISTEN is an irreversible process. - * - * @param pcb the original tcp_pcb - * @param backlog the incoming connections queue limit - * @return tcp_pcb used for listening, consumes less memory. - * - * @note The original tcp_pcb is freed. This function therefore has to be - * called like this: - * tpcb = tcp_listen(tpcb); - */ -struct tcp_pcb * -tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog) -{ - struct tcp_pcb_listen *lpcb; - - LWIP_UNUSED_ARG(backlog); - LWIP_ERROR("tcp_listen: pcb already connected", pcb->state == CLOSED, return NULL); - - /* already listening? */ - if (pcb->state == LISTEN) { - return pcb; - } - lpcb = memp_malloc(MEMP_TCP_PCB_LISTEN); - if (lpcb == NULL) { - return NULL; - } - lpcb->callback_arg = pcb->callback_arg; - lpcb->local_port = pcb->local_port; - lpcb->state = LISTEN; - lpcb->so_options = pcb->so_options; - lpcb->so_options |= SOF_ACCEPTCONN; - lpcb->ttl = pcb->ttl; - lpcb->tos = pcb->tos; - ip_addr_set(&lpcb->local_ip, &pcb->local_ip); - TCP_RMV(&tcp_bound_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); -#if LWIP_CALLBACK_API - lpcb->accept = tcp_accept_null; -#endif /* LWIP_CALLBACK_API */ -#if TCP_LISTEN_BACKLOG - lpcb->accepts_pending = 0; - lpcb->backlog = (backlog ? backlog : 1); -#endif /* TCP_LISTEN_BACKLOG */ - TCP_REG(&tcp_listen_pcbs.listen_pcbs, lpcb); - return (struct tcp_pcb *)lpcb; -} - -/** - * Update the state that tracks the available window space to advertise. - * - * Returns how much extra window would be advertised if we sent an - * update now. - */ -u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb) -{ - u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd; - - if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) { - /* we can advertise more window */ - pcb->rcv_ann_wnd = pcb->rcv_wnd; - return new_right_edge - pcb->rcv_ann_right_edge; - } else { - if (TCP_SEQ_GT(pcb->rcv_nxt, pcb->rcv_ann_right_edge)) { - /* Can happen due to other end sending out of advertised window, - * but within actual available (but not yet advertised) window */ - pcb->rcv_ann_wnd = 0; - } else { - /* keep the right edge of window constant */ - pcb->rcv_ann_wnd = pcb->rcv_ann_right_edge - pcb->rcv_nxt; - } - return 0; - } -} - -/** - * This function should be called by the application when it has - * processed the data. The purpose is to advertise a larger window - * when the data has been processed. - * - * @param pcb the tcp_pcb for which data is read - * @param len the amount of bytes that have been read by the application - */ -void -tcp_recved(struct tcp_pcb *pcb, u16_t len) -{ - int wnd_inflation; - - LWIP_ASSERT("tcp_recved: len would wrap rcv_wnd\n", - len <= 0xffff - pcb->rcv_wnd ); - - pcb->rcv_wnd += len; - if (pcb->rcv_wnd > TCP_WND) - pcb->rcv_wnd = TCP_WND; - - wnd_inflation = tcp_update_rcv_ann_wnd(pcb); - - /* If the change in the right edge of window is significant (default - * watermark is TCP_WND/2), then send an explicit update now. - * Otherwise wait for a packet to be sent in the normal course of - * events (or more window to be available later) */ - if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD) - tcp_ack_now(pcb); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: recveived %"U16_F" bytes, wnd %"U16_F" (%"U16_F").\n", - len, pcb->rcv_wnd, TCP_WND - pcb->rcv_wnd)); -} - -/** - * A nastly hack featuring 'goto' statements that allocates a - * new TCP local port. - * - * @return a new (free) local TCP port number - */ -static u16_t -tcp_new_port(void) -{ - struct tcp_pcb *pcb; -#ifndef TCP_LOCAL_PORT_RANGE_START -#define TCP_LOCAL_PORT_RANGE_START 4096 -#define TCP_LOCAL_PORT_RANGE_END 0x7fff -#endif - static u16_t port = TCP_LOCAL_PORT_RANGE_START; - - again: - if (++port > TCP_LOCAL_PORT_RANGE_END) { - port = TCP_LOCAL_PORT_RANGE_START; - } - - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - if (pcb->local_port == port) { - goto again; - } - } - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - if (pcb->local_port == port) { - goto again; - } - } - for(pcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; pcb != NULL; pcb = pcb->next) { - if (pcb->local_port == port) { - goto again; - } - } - return port; -} - -/** - * Connects to another host. The function given as the "connected" - * argument will be called when the connection has been established. - * - * @param pcb the tcp_pcb used to establish the connection - * @param ipaddr the remote ip address to connect to - * @param port the remote tcp port to connect to - * @param connected callback function to call when connected (or on error) - * @return ERR_VAL if invalid arguments are given - * ERR_OK if connect request has been sent - * other err_t values if connect request couldn't be sent - */ -err_t -tcp_connect(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port, - err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err)) -{ - err_t ret; - u32_t iss; - - LWIP_ERROR("tcp_connect: can only connected from state CLOSED", pcb->state == CLOSED, return ERR_ISCONN); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_connect to port %"U16_F"\n", port)); - if (ipaddr != NULL) { - pcb->remote_ip = *ipaddr; - } else { - return ERR_VAL; - } - pcb->remote_port = port; - if (pcb->local_port == 0) { - pcb->local_port = tcp_new_port(); - } - iss = tcp_next_iss(); - pcb->rcv_nxt = 0; - pcb->snd_nxt = iss; - pcb->lastack = iss - 1; - pcb->snd_lbb = iss - 1; - pcb->rcv_wnd = TCP_WND; - pcb->rcv_ann_wnd = TCP_WND; - pcb->rcv_ann_right_edge = pcb->rcv_nxt; - pcb->snd_wnd = TCP_WND; - /* As initial send MSS, we use TCP_MSS but limit it to 536. - The send MSS is updated when an MSS option is received. */ - pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS; -#if TCP_CALCULATE_EFF_SEND_MSS - pcb->mss = tcp_eff_send_mss(pcb->mss, ipaddr); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - pcb->cwnd = 1; - pcb->ssthresh = pcb->mss * 10; - pcb->state = SYN_SENT; -#if LWIP_CALLBACK_API - pcb->connected = connected; -#endif /* LWIP_CALLBACK_API */ - TCP_RMV(&tcp_bound_pcbs, pcb); - TCP_REG(&tcp_active_pcbs, pcb); - - snmp_inc_tcpactiveopens(); - - ret = tcp_enqueue(pcb, NULL, 0, TCP_SYN, 0, TF_SEG_OPTS_MSS -#if LWIP_TCP_TIMESTAMPS - | TF_SEG_OPTS_TS -#endif - ); - if (ret == ERR_OK) { - tcp_output(pcb); - } - return ret; -} - -/** - * Called every 500 ms and implements the retransmission timer and the timer that - * removes PCBs that have been in TIME-WAIT for enough time. It also increments - * various timers such as the inactivity timer in each PCB. - * - * Automatically called from tcp_tmr(). - */ -void -tcp_slowtmr(void) -{ - struct tcp_pcb *pcb, *pcb2, *prev; - u16_t eff_wnd; - u8_t pcb_remove; /* flag if a PCB should be removed */ - u8_t pcb_reset; /* flag if a RST should be sent when removing */ - err_t err; - - err = ERR_OK; - - ++tcp_ticks; - - /* Steps through all of the active PCBs. */ - prev = NULL; - pcb = tcp_active_pcbs; - if (pcb == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: no active pcbs\n")); - } - while (pcb != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: processing active pcb\n")); - LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED); - LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN); - LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT); - - pcb_remove = 0; - pcb_reset = 0; - - if (pcb->state == SYN_SENT && pcb->nrtx == TCP_SYNMAXRTX) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max SYN retries reached\n")); - } - else if (pcb->nrtx == TCP_MAXRTX) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n")); - } else { - if (pcb->persist_backoff > 0) { - /* If snd_wnd is zero, use persist timer to send 1 byte probes - * instead of using the standard retransmission mechanism. */ - pcb->persist_cnt++; - if (pcb->persist_cnt >= tcp_persist_backoff[pcb->persist_backoff-1]) { - pcb->persist_cnt = 0; - if (pcb->persist_backoff < sizeof(tcp_persist_backoff)) { - pcb->persist_backoff++; - } - tcp_zero_window_probe(pcb); - } - } else { - /* Increase the retransmission timer if it is running */ - if(pcb->rtime >= 0) - ++pcb->rtime; - - if (pcb->unacked != NULL && pcb->rtime >= pcb->rto) { - /* Time for a retransmission. */ - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_slowtmr: rtime %"S16_F - " pcb->rto %"S16_F"\n", - pcb->rtime, pcb->rto)); - - /* Double retransmission time-out unless we are trying to - * connect to somebody (i.e., we are in SYN_SENT). */ - if (pcb->state != SYN_SENT) { - pcb->rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[pcb->nrtx]; - } - - /* Reset the retransmission timer. */ - pcb->rtime = 0; - - /* Reduce congestion window and ssthresh. */ - eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd); - pcb->ssthresh = eff_wnd >> 1; - if (pcb->ssthresh < pcb->mss) { - pcb->ssthresh = pcb->mss * 2; - } - pcb->cwnd = pcb->mss; - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: cwnd %"U16_F - " ssthresh %"U16_F"\n", - pcb->cwnd, pcb->ssthresh)); - - /* The following needs to be called AFTER cwnd is set to one - mss - STJ */ - tcp_rexmit_rto(pcb); - } - } - } - /* Check if this PCB has stayed too long in FIN-WAIT-2 */ - if (pcb->state == FIN_WAIT_2) { - if ((u32_t)(tcp_ticks - pcb->tmr) > - TCP_FIN_WAIT_TIMEOUT / TCP_SLOW_INTERVAL) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in FIN-WAIT-2\n")); - } - } - - /* Check if KEEPALIVE should be sent */ - if((pcb->so_options & SOF_KEEPALIVE) && - ((pcb->state == ESTABLISHED) || - (pcb->state == CLOSE_WAIT))) { -#if LWIP_TCP_KEEPALIVE - if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + (pcb->keep_cnt*pcb->keep_intvl)) - / TCP_SLOW_INTERVAL) -#else - if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + TCP_MAXIDLE) / TCP_SLOW_INTERVAL) -#endif /* LWIP_TCP_KEEPALIVE */ - { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: KEEPALIVE timeout. Aborting connection to %"U16_F".%"U16_F".%"U16_F".%"U16_F".\n", - ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip), - ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip))); - - ++pcb_remove; - ++pcb_reset; - } -#if LWIP_TCP_KEEPALIVE - else if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + pcb->keep_cnt_sent * pcb->keep_intvl) - / TCP_SLOW_INTERVAL) -#else - else if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEPINTVL_DEFAULT) - / TCP_SLOW_INTERVAL) -#endif /* LWIP_TCP_KEEPALIVE */ - { - tcp_keepalive(pcb); - pcb->keep_cnt_sent++; - } - } - - /* If this PCB has queued out of sequence data, but has been - inactive for too long, will drop the data (it will eventually - be retransmitted). */ -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL && - (u32_t)tcp_ticks - pcb->tmr >= pcb->rto * TCP_OOSEQ_TIMEOUT) { - tcp_segs_free(pcb->ooseq); - pcb->ooseq = NULL; - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: dropping OOSEQ queued data\n")); - } -#endif /* TCP_QUEUE_OOSEQ */ - - /* Check if this PCB has stayed too long in SYN-RCVD */ - if (pcb->state == SYN_RCVD) { - if ((u32_t)(tcp_ticks - pcb->tmr) > - TCP_SYN_RCVD_TIMEOUT / TCP_SLOW_INTERVAL) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in SYN-RCVD\n")); - } - } - - /* Check if this PCB has stayed too long in LAST-ACK */ - if (pcb->state == LAST_ACK) { - if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in LAST-ACK\n")); - } - } - - /* If the PCB should be removed, do it. */ - if (pcb_remove) { - tcp_pcb_purge(pcb); - /* Remove PCB from tcp_active_pcbs list. */ - if (prev != NULL) { - LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs); - prev->next = pcb->next; - } else { - /* This PCB was the first. */ - LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_active_pcbs", tcp_active_pcbs == pcb); - tcp_active_pcbs = pcb->next; - } - - TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_ABRT); - if (pcb_reset) { - tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, - pcb->local_port, pcb->remote_port); - } - - pcb2 = pcb->next; - memp_free(MEMP_TCP_PCB, pcb); - pcb = pcb2; - } else { - - /* We check if we should poll the connection. */ - ++pcb->polltmr; - if (pcb->polltmr >= pcb->pollinterval) { - pcb->polltmr = 0; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: polling application\n")); - TCP_EVENT_POLL(pcb, err); - if (err == ERR_OK) { - tcp_output(pcb); - } - } - - prev = pcb; - pcb = pcb->next; - } - } - - - /* Steps through all of the TIME-WAIT PCBs. */ - prev = NULL; - pcb = tcp_tw_pcbs; - while (pcb != NULL) { - LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - pcb_remove = 0; - - /* Check if this PCB has stayed long enough in TIME-WAIT */ - if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { - ++pcb_remove; - } - - - - /* If the PCB should be removed, do it. */ - if (pcb_remove) { - tcp_pcb_purge(pcb); - /* Remove PCB from tcp_tw_pcbs list. */ - if (prev != NULL) { - LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs); - prev->next = pcb->next; - } else { - /* This PCB was the first. */ - LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb); - tcp_tw_pcbs = pcb->next; - } - pcb2 = pcb->next; - memp_free(MEMP_TCP_PCB, pcb); - pcb = pcb2; - } else { - prev = pcb; - pcb = pcb->next; - } - } -} - -/** - * Is called every TCP_FAST_INTERVAL (250 ms) and process data previously - * "refused" by upper layer (application) and sends delayed ACKs. - * - * Automatically called from tcp_tmr(). - */ -void -tcp_fasttmr(void) -{ - struct tcp_pcb *pcb; - - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - /* If there is data which was previously "refused" by upper layer */ - if (pcb->refused_data != NULL) { - /* Notify again application with data previously received. */ - err_t err; - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_fasttmr: notify kept packet\n")); - TCP_EVENT_RECV(pcb, pcb->refused_data, ERR_OK, err); - if (err == ERR_OK) { - pcb->refused_data = NULL; - } - } - - /* send delayed ACKs */ - if (pcb->flags & TF_ACK_DELAY) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n")); - tcp_ack_now(pcb); - pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); - } - } -} - -/** - * Deallocates a list of TCP segments (tcp_seg structures). - * - * @param seg tcp_seg list of TCP segments to free - * @return the number of pbufs that were deallocated - */ -u8_t -tcp_segs_free(struct tcp_seg *seg) -{ - u8_t count = 0; - struct tcp_seg *next; - while (seg != NULL) { - next = seg->next; - count += tcp_seg_free(seg); - seg = next; - } - return count; -} - -/** - * Frees a TCP segment (tcp_seg structure). - * - * @param seg single tcp_seg to free - * @return the number of pbufs that were deallocated - */ -u8_t -tcp_seg_free(struct tcp_seg *seg) -{ - u8_t count = 0; - - if (seg != NULL) { - if (seg->p != NULL) { - count = pbuf_free(seg->p); -#if TCP_DEBUG - seg->p = NULL; -#endif /* TCP_DEBUG */ - } - memp_free(MEMP_TCP_SEG, seg); - } - return count; -} - -/** - * Sets the priority of a connection. - * - * @param pcb the tcp_pcb to manipulate - * @param prio new priority - */ -void -tcp_setprio(struct tcp_pcb *pcb, u8_t prio) -{ - pcb->prio = prio; -} -#if TCP_QUEUE_OOSEQ - -/** - * Returns a copy of the given TCP segment. - * The pbuf and data are not copied, only the pointers - * - * @param seg the old tcp_seg - * @return a copy of seg - */ -struct tcp_seg * -tcp_seg_copy(struct tcp_seg *seg) -{ - struct tcp_seg *cseg; - - cseg = memp_malloc(MEMP_TCP_SEG); - if (cseg == NULL) { - return NULL; - } - SMEMCPY((u8_t *)cseg, (const u8_t *)seg, sizeof(struct tcp_seg)); - pbuf_ref(cseg->p); - return cseg; -} -#endif - -#if LWIP_CALLBACK_API -/** - * Default receive callback that is called if the user didn't register - * a recv callback for the pcb. - */ -err_t -tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) -{ - LWIP_UNUSED_ARG(arg); - if (p != NULL) { - tcp_recved(pcb, p->tot_len); - pbuf_free(p); - } else if (err == ERR_OK) { - return tcp_close(pcb); - } - return ERR_OK; -} -#endif /* LWIP_CALLBACK_API */ - -/** - * Kills the oldest active connection that has lower priority than prio. - * - * @param prio minimum priority - */ -static void -tcp_kill_prio(u8_t prio) -{ - struct tcp_pcb *pcb, *inactive; - u32_t inactivity; - u8_t mprio; - - - mprio = TCP_PRIO_MAX; - - /* We kill the oldest active connection that has lower priority than prio. */ - inactivity = 0; - inactive = NULL; - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - if (pcb->prio <= prio && - pcb->prio <= mprio && - (u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { - inactivity = tcp_ticks - pcb->tmr; - inactive = pcb; - mprio = pcb->prio; - } - } - if (inactive != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_prio: killing oldest PCB %p (%"S32_F")\n", - (void *)inactive, inactivity)); - tcp_abort(inactive); - } -} - -/** - * Kills the oldest connection that is in TIME_WAIT state. - * Called from tcp_alloc() if no more connections are available. - */ -static void -tcp_kill_timewait(void) -{ - struct tcp_pcb *pcb, *inactive; - u32_t inactivity; - - inactivity = 0; - inactive = NULL; - /* Go through the list of TIME_WAIT pcbs and get the oldest pcb. */ - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { - inactivity = tcp_ticks - pcb->tmr; - inactive = pcb; - } - } - if (inactive != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_timewait: killing oldest TIME-WAIT PCB %p (%"S32_F")\n", - (void *)inactive, inactivity)); - tcp_abort(inactive); - } -} - -/** - * Allocate a new tcp_pcb structure. - * - * @param prio priority for the new pcb - * @return a new tcp_pcb that initially is in state CLOSED - */ -struct tcp_pcb * -tcp_alloc(u8_t prio) -{ - struct tcp_pcb *pcb; - u32_t iss; - - pcb = memp_malloc(MEMP_TCP_PCB); - if (pcb == NULL) { - /* Try killing oldest connection in TIME-WAIT. */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest TIME-WAIT connection\n")); - tcp_kill_timewait(); - /* Try to allocate a tcp_pcb again. */ - pcb = memp_malloc(MEMP_TCP_PCB); - if (pcb == NULL) { - /* Try killing active connections with lower priority than the new one. */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing connection with prio lower than %d\n", prio)); - tcp_kill_prio(prio); - /* Try to allocate a tcp_pcb again. */ - pcb = memp_malloc(MEMP_TCP_PCB); - if (pcb != NULL) { - /* adjust err stats: memp_malloc failed twice before */ - MEMP_STATS_DEC(err, MEMP_TCP_PCB); - } - } - if (pcb != NULL) { - /* adjust err stats: timewait PCB was freed above */ - MEMP_STATS_DEC(err, MEMP_TCP_PCB); - } - } - if (pcb != NULL) { - memset(pcb, 0, sizeof(struct tcp_pcb)); - pcb->prio = TCP_PRIO_NORMAL; - pcb->snd_buf = TCP_SND_BUF; - pcb->snd_queuelen = 0; - pcb->rcv_wnd = TCP_WND; - pcb->rcv_ann_wnd = TCP_WND; - pcb->tos = 0; - pcb->ttl = TCP_TTL; - /* As initial send MSS, we use TCP_MSS but limit it to 536. - The send MSS is updated when an MSS option is received. */ - pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS; - pcb->rto = 3000 / TCP_SLOW_INTERVAL; - pcb->sa = 0; - pcb->sv = 3000 / TCP_SLOW_INTERVAL; - pcb->rtime = -1; - pcb->cwnd = 1; - iss = tcp_next_iss(); - pcb->snd_wl2 = iss; - pcb->snd_nxt = iss; - pcb->lastack = iss; - pcb->snd_lbb = iss; - pcb->tmr = tcp_ticks; - - pcb->polltmr = 0; - -#if LWIP_CALLBACK_API - pcb->recv = tcp_recv_null; -#endif /* LWIP_CALLBACK_API */ - - /* Init KEEPALIVE timer */ - pcb->keep_idle = TCP_KEEPIDLE_DEFAULT; - -#if LWIP_TCP_KEEPALIVE - pcb->keep_intvl = TCP_KEEPINTVL_DEFAULT; - pcb->keep_cnt = TCP_KEEPCNT_DEFAULT; -#endif /* LWIP_TCP_KEEPALIVE */ - - pcb->keep_cnt_sent = 0; - } - return pcb; -} - -/** - * Creates a new TCP protocol control block but doesn't place it on - * any of the TCP PCB lists. - * The pcb is not put on any list until binding using tcp_bind(). - * - * @internal: Maybe there should be a idle TCP PCB list where these - * PCBs are put on. Port reservation using tcp_bind() is implemented but - * allocated pcbs that are not bound can't be killed automatically if wanting - * to allocate a pcb with higher prio (@see tcp_kill_prio()) - * - * @return a new tcp_pcb that initially is in state CLOSED - */ -struct tcp_pcb * -tcp_new(void) -{ - return tcp_alloc(TCP_PRIO_NORMAL); -} - -/** - * Used to specify the argument that should be passed callback - * functions. - * - * @param pcb tcp_pcb to set the callback argument - * @param arg void pointer argument to pass to callback functions - */ -void -tcp_arg(struct tcp_pcb *pcb, void *arg) -{ - pcb->callback_arg = arg; -} -#if LWIP_CALLBACK_API - -/** - * Used to specify the function that should be called when a TCP - * connection receives data. - * - * @param pcb tcp_pcb to set the recv callback - * @param recv callback function to call for this pcb when data is received - */ -void -tcp_recv(struct tcp_pcb *pcb, - err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)) -{ - pcb->recv = recv; -} - -/** - * Used to specify the function that should be called when TCP data - * has been successfully delivered to the remote host. - * - * @param pcb tcp_pcb to set the sent callback - * @param sent callback function to call for this pcb when data is successfully sent - */ -void -tcp_sent(struct tcp_pcb *pcb, - err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len)) -{ - pcb->sent = sent; -} - -/** - * Used to specify the function that should be called when a fatal error - * has occured on the connection. - * - * @param pcb tcp_pcb to set the err callback - * @param errf callback function to call for this pcb when a fatal error - * has occured on the connection - */ -void -tcp_err(struct tcp_pcb *pcb, - void (* errf)(void *arg, err_t err)) -{ - pcb->errf = errf; -} - -/** - * Used for specifying the function that should be called when a - * LISTENing connection has been connected to another host. - * - * @param pcb tcp_pcb to set the accept callback - * @param accept callback function to call for this pcb when LISTENing - * connection has been connected to another host - */ -void -tcp_accept(struct tcp_pcb *pcb, - err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err)) -{ - pcb->accept = accept; -} -#endif /* LWIP_CALLBACK_API */ - - -/** - * Used to specify the function that should be called periodically - * from TCP. The interval is specified in terms of the TCP coarse - * timer interval, which is called twice a second. - * - */ -void -tcp_poll(struct tcp_pcb *pcb, - err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval) -{ -#if LWIP_CALLBACK_API - pcb->poll = poll; -#endif /* LWIP_CALLBACK_API */ - pcb->pollinterval = interval; -} - -/** - * Purges a TCP PCB. Removes any buffered data and frees the buffer memory - * (pcb->ooseq, pcb->unsent and pcb->unacked are freed). - * - * @param pcb tcp_pcb to purge. The pcb itself is not deallocated! - */ -void -tcp_pcb_purge(struct tcp_pcb *pcb) -{ - if (pcb->state != CLOSED && - pcb->state != TIME_WAIT && - pcb->state != LISTEN) { - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge\n")); - -#if TCP_LISTEN_BACKLOG - if (pcb->state == SYN_RCVD) { - /* Need to find the corresponding listen_pcb and decrease its accepts_pending */ - struct tcp_pcb_listen *lpcb; - LWIP_ASSERT("tcp_pcb_purge: pcb->state == SYN_RCVD but tcp_listen_pcbs is NULL", - tcp_listen_pcbs.listen_pcbs != NULL); - for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - if ((lpcb->local_port == pcb->local_port) && - (ip_addr_isany(&lpcb->local_ip) || - ip_addr_cmp(&pcb->local_ip, &lpcb->local_ip))) { - /* port and address of the listen pcb match the timed-out pcb */ - LWIP_ASSERT("tcp_pcb_purge: listen pcb does not have accepts pending", - lpcb->accepts_pending > 0); - lpcb->accepts_pending--; - break; - } - } - } -#endif /* TCP_LISTEN_BACKLOG */ - - - if (pcb->refused_data != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->refused_data\n")); - pbuf_free(pcb->refused_data); - pcb->refused_data = NULL; - } - if (pcb->unsent != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: not all data sent\n")); - } - if (pcb->unacked != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->unacked\n")); - } -#if TCP_QUEUE_OOSEQ /* LW */ - if (pcb->ooseq != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->ooseq\n")); - } - - /* Stop the retransmission timer as it will expect data on unacked - queue if it fires */ - pcb->rtime = -1; - - tcp_segs_free(pcb->ooseq); - pcb->ooseq = NULL; -#endif /* TCP_QUEUE_OOSEQ */ - tcp_segs_free(pcb->unsent); - tcp_segs_free(pcb->unacked); - pcb->unacked = pcb->unsent = NULL; - } -} - -/** - * Purges the PCB and removes it from a PCB list. Any delayed ACKs are sent first. - * - * @param pcblist PCB list to purge. - * @param pcb tcp_pcb to purge. The pcb itself is NOT deallocated! - */ -void -tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb) -{ - TCP_RMV(pcblist, pcb); - - tcp_pcb_purge(pcb); - - /* if there is an outstanding delayed ACKs, send it */ - if (pcb->state != TIME_WAIT && - pcb->state != LISTEN && - pcb->flags & TF_ACK_DELAY) { - pcb->flags |= TF_ACK_NOW; - tcp_output(pcb); - } - - if (pcb->state != LISTEN) { - LWIP_ASSERT("unsent segments leaking", pcb->unsent == NULL); - LWIP_ASSERT("unacked segments leaking", pcb->unacked == NULL); -#if TCP_QUEUE_OOSEQ - LWIP_ASSERT("ooseq segments leaking", pcb->ooseq == NULL); -#endif /* TCP_QUEUE_OOSEQ */ - } - - pcb->state = CLOSED; - - LWIP_ASSERT("tcp_pcb_remove: tcp_pcbs_sane()", tcp_pcbs_sane()); -} - -/** - * Calculates a new initial sequence number for new connections. - * - * @return u32_t pseudo random sequence number - */ -u32_t -tcp_next_iss(void) -{ - static u32_t iss = 6510; - - iss += tcp_ticks; /* XXX */ - return iss; -} - -#if TCP_CALCULATE_EFF_SEND_MSS -/** - * Calcluates the effective send mss that can be used for a specific IP address - * by using ip_route to determin the netif used to send to the address and - * calculating the minimum of TCP_MSS and that netif's mtu (if set). - */ -u16_t -tcp_eff_send_mss(u16_t sendmss, struct ip_addr *addr) -{ - u16_t mss_s; - struct netif *outif; - - outif = ip_route(addr); - if ((outif != NULL) && (outif->mtu != 0)) { - mss_s = outif->mtu - IP_HLEN - TCP_HLEN; - /* RFC 1122, chap 4.2.2.6: - * Eff.snd.MSS = min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize - * We correct for TCP options in tcp_enqueue(), and don't support - * IP options - */ - sendmss = LWIP_MIN(sendmss, mss_s); - } - return sendmss; -} -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - -const char* -tcp_debug_state_str(enum tcp_state s) -{ - return tcp_state_str[s]; -} - -#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG -/** - * Print a tcp header for debugging purposes. - * - * @param tcphdr pointer to a struct tcp_hdr - */ -void -tcp_debug_print(struct tcp_hdr *tcphdr) -{ - LWIP_DEBUGF(TCP_DEBUG, ("TCP header:\n")); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %5"U16_F" | %5"U16_F" | (src port, dest port)\n", - ntohs(tcphdr->src), ntohs(tcphdr->dest))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %010"U32_F" | (seq no)\n", - ntohl(tcphdr->seqno))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %010"U32_F" | (ack no)\n", - ntohl(tcphdr->ackno))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %2"U16_F" | |%"U16_F"%"U16_F"%"U16_F"%"U16_F"%"U16_F"%"U16_F"| %5"U16_F" | (hdrlen, flags (", - TCPH_HDRLEN(tcphdr), - TCPH_FLAGS(tcphdr) >> 5 & 1, - TCPH_FLAGS(tcphdr) >> 4 & 1, - TCPH_FLAGS(tcphdr) >> 3 & 1, - TCPH_FLAGS(tcphdr) >> 2 & 1, - TCPH_FLAGS(tcphdr) >> 1 & 1, - TCPH_FLAGS(tcphdr) & 1, - ntohs(tcphdr->wnd))); - tcp_debug_print_flags(TCPH_FLAGS(tcphdr)); - LWIP_DEBUGF(TCP_DEBUG, ("), win)\n")); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| 0x%04"X16_F" | %5"U16_F" | (chksum, urgp)\n", - ntohs(tcphdr->chksum), ntohs(tcphdr->urgp))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); -} - -/** - * Print a tcp state for debugging purposes. - * - * @param s enum tcp_state to print - */ -void -tcp_debug_print_state(enum tcp_state s) -{ - LWIP_DEBUGF(TCP_DEBUG, ("State: %s\n", tcp_state_str[s])); -} - -/** - * Print tcp flags for debugging purposes. - * - * @param flags tcp flags, all active flags are printed - */ -void -tcp_debug_print_flags(u8_t flags) -{ - if (flags & TCP_FIN) { - LWIP_DEBUGF(TCP_DEBUG, ("FIN ")); - } - if (flags & TCP_SYN) { - LWIP_DEBUGF(TCP_DEBUG, ("SYN ")); - } - if (flags & TCP_RST) { - LWIP_DEBUGF(TCP_DEBUG, ("RST ")); - } - if (flags & TCP_PSH) { - LWIP_DEBUGF(TCP_DEBUG, ("PSH ")); - } - if (flags & TCP_ACK) { - LWIP_DEBUGF(TCP_DEBUG, ("ACK ")); - } - if (flags & TCP_URG) { - LWIP_DEBUGF(TCP_DEBUG, ("URG ")); - } - if (flags & TCP_ECE) { - LWIP_DEBUGF(TCP_DEBUG, ("ECE ")); - } - if (flags & TCP_CWR) { - LWIP_DEBUGF(TCP_DEBUG, ("CWR ")); - } - LWIP_DEBUGF(TCP_DEBUG, ("\n")); -} - -/** - * Print all tcp_pcbs in every list for debugging purposes. - */ -void -tcp_debug_print_pcbs(void) -{ - struct tcp_pcb *pcb; - LWIP_DEBUGF(TCP_DEBUG, ("Active PCB states:\n")); - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_DEBUGF(TCP_DEBUG, ("[%p]Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ", - pcb, pcb->local_port, pcb->remote_port, - pcb->snd_nxt, pcb->rcv_nxt)); - tcp_debug_print_state(pcb->state); - } - LWIP_DEBUGF(TCP_DEBUG, ("Listen PCB states:\n")); - for(pcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_DEBUGF(TCP_DEBUG, ("[%p]Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ", - pcb, pcb->local_port, pcb->remote_port, - pcb->snd_nxt, pcb->rcv_nxt)); - tcp_debug_print_state(pcb->state); - } - LWIP_DEBUGF(TCP_DEBUG, ("TIME-WAIT PCB states:\n")); - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_DEBUGF(TCP_DEBUG, ("[%p]Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ", - pcb, pcb->local_port, pcb->remote_port, - pcb->snd_nxt, pcb->rcv_nxt)); - tcp_debug_print_state(pcb->state); - } -} - -/** - * Check state consistency of the tcp_pcb lists. - */ -s16_t -tcp_pcbs_sane(void) -{ - struct tcp_pcb *pcb; - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != CLOSED", pcb->state != CLOSED); - LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != LISTEN", pcb->state != LISTEN); - LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT); - } - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_pcbs_sane: tw pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - } - return 1; -} -#endif /* TCP_DEBUG */ - -#endif /* LWIP_TCP */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c deleted file mode 100644 index 3930b40..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c +++ /dev/null @@ -1,1508 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Transmission Control Protocol, incoming traffic - * - * The input processing functions of the TCP layer. - * - * These functions are generally called in the order (ip_input() ->) - * tcp_input() -> * tcp_process() -> tcp_receive() (-> application). - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/tcp.h" -#include "lwip/def.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "arch/perf.h" - -/* These variables are global to all functions involved in the input - processing of TCP segments. They are set by the tcp_input() - function. */ -static struct tcp_seg inseg; -static struct tcp_hdr *tcphdr; -static struct ip_hdr *iphdr; -static u32_t seqno, ackno; -static u8_t flags; -static u16_t tcplen; - -static u8_t recv_flags; -static struct pbuf *recv_data; - -struct tcp_pcb *tcp_input_pcb; - -/* Forward declarations. */ -static err_t tcp_process(struct tcp_pcb *pcb); -static void tcp_receive(struct tcp_pcb *pcb); -static void tcp_parseopt(struct tcp_pcb *pcb); - -static err_t tcp_listen_input(struct tcp_pcb_listen *pcb); -static err_t tcp_timewait_input(struct tcp_pcb *pcb); - -/** - * The initial input processing of TCP. It verifies the TCP header, demultiplexes - * the segment between the PCBs and passes it on to tcp_process(), which implements - * the TCP finite state machine. This function is called by the IP layer (in - * ip_input()). - * - * @param p received TCP segment to process (p->payload pointing to the IP header) - * @param inp network interface on which this segment was received - */ -void -tcp_input(struct pbuf *p, struct netif *inp) -{ - struct tcp_pcb *pcb, *prev; - struct tcp_pcb_listen *lpcb; - u8_t hdrlen; - err_t err; - - PERF_START; - - TCP_STATS_INC(tcp.recv); - snmp_inc_tcpinsegs(); - - iphdr = p->payload; - tcphdr = (struct tcp_hdr *)((u8_t *)p->payload + IPH_HL(iphdr) * 4); - -#if TCP_INPUT_DEBUG - tcp_debug_print(tcphdr); -#endif - - /* remove header from payload */ - if (pbuf_header(p, -((s16_t)(IPH_HL(iphdr) * 4))) || (p->tot_len < sizeof(struct tcp_hdr))) { - /* drop short packets */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: short packet (%"U16_F" bytes) discarded\n", p->tot_len)); - TCP_STATS_INC(tcp.lenerr); - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); - return; - } - - /* Don't even process incoming broadcasts/multicasts. */ - if (ip_addr_isbroadcast(&(iphdr->dest), inp) || - ip_addr_ismulticast(&(iphdr->dest))) { - TCP_STATS_INC(tcp.proterr); - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); - return; - } - -#if CHECKSUM_CHECK_TCP - /* Verify TCP checksum. */ - if (inet_chksum_pseudo(p, (struct ip_addr *)&(iphdr->src), - (struct ip_addr *)&(iphdr->dest), - IP_PROTO_TCP, p->tot_len) != 0) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packet discarded due to failing checksum 0x%04"X16_F"\n", - inet_chksum_pseudo(p, (struct ip_addr *)&(iphdr->src), (struct ip_addr *)&(iphdr->dest), - IP_PROTO_TCP, p->tot_len))); -#if TCP_DEBUG - tcp_debug_print(tcphdr); -#endif /* TCP_DEBUG */ - TCP_STATS_INC(tcp.chkerr); - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); - return; - } -#endif - - /* Move the payload pointer in the pbuf so that it points to the - TCP data instead of the TCP header. */ - hdrlen = TCPH_HDRLEN(tcphdr); - if(pbuf_header(p, -(hdrlen * 4))){ - /* drop short packets */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: short packet\n")); - TCP_STATS_INC(tcp.lenerr); - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); - return; - } - - /* Convert fields in TCP header to host byte order. */ - tcphdr->src = ntohs(tcphdr->src); - tcphdr->dest = ntohs(tcphdr->dest); - seqno = tcphdr->seqno = ntohl(tcphdr->seqno); - ackno = tcphdr->ackno = ntohl(tcphdr->ackno); - tcphdr->wnd = ntohs(tcphdr->wnd); - - flags = TCPH_FLAGS(tcphdr); - tcplen = p->tot_len + ((flags & (TCP_FIN | TCP_SYN)) ? 1 : 0); - - /* Demultiplex an incoming segment. First, we check if it is destined - for an active connection. */ - prev = NULL; - - - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED); - LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT); - LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN); - if (pcb->remote_port == tcphdr->src && - pcb->local_port == tcphdr->dest && - ip_addr_cmp(&(pcb->remote_ip), &(iphdr->src)) && - ip_addr_cmp(&(pcb->local_ip), &(iphdr->dest))) { - - /* Move this PCB to the front of the list so that subsequent - lookups will be faster (we exploit locality in TCP segment - arrivals). */ - LWIP_ASSERT("tcp_input: pcb->next != pcb (before cache)", pcb->next != pcb); - if (prev != NULL) { - prev->next = pcb->next; - pcb->next = tcp_active_pcbs; - tcp_active_pcbs = pcb; - } - LWIP_ASSERT("tcp_input: pcb->next != pcb (after cache)", pcb->next != pcb); - break; - } - prev = pcb; - } - - if (pcb == NULL) { - /* If it did not go to an active connection, we check the connections - in the TIME-WAIT state. */ - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - if (pcb->remote_port == tcphdr->src && - pcb->local_port == tcphdr->dest && - ip_addr_cmp(&(pcb->remote_ip), &(iphdr->src)) && - ip_addr_cmp(&(pcb->local_ip), &(iphdr->dest))) { - /* We don't really care enough to move this PCB to the front - of the list since we are not very likely to receive that - many segments for connections in TIME-WAIT. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packed for TIME_WAITing connection.\n")); - tcp_timewait_input(pcb); - pbuf_free(p); - return; - } - } - - /* Finally, if we still did not get a match, we check all PCBs that - are LISTENing for incoming connections. */ - prev = NULL; - for(lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - if ((ip_addr_isany(&(lpcb->local_ip)) || - ip_addr_cmp(&(lpcb->local_ip), &(iphdr->dest))) && - lpcb->local_port == tcphdr->dest) { - /* Move this PCB to the front of the list so that subsequent - lookups will be faster (we exploit locality in TCP segment - arrivals). */ - if (prev != NULL) { - ((struct tcp_pcb_listen *)prev)->next = lpcb->next; - /* our successor is the remainder of the listening list */ - lpcb->next = tcp_listen_pcbs.listen_pcbs; - /* put this listening pcb at the head of the listening list */ - tcp_listen_pcbs.listen_pcbs = lpcb; - } - - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packed for LISTENing connection.\n")); - tcp_listen_input(lpcb); - pbuf_free(p); - return; - } - prev = (struct tcp_pcb *)lpcb; - } - } - -#if TCP_INPUT_DEBUG - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags ")); - tcp_debug_print_flags(TCPH_FLAGS(tcphdr)); - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n")); -#endif /* TCP_INPUT_DEBUG */ - - - if (pcb != NULL) { - /* The incoming segment belongs to a connection. */ -#if TCP_INPUT_DEBUG -#if TCP_DEBUG - tcp_debug_print_state(pcb->state); -#endif /* TCP_DEBUG */ -#endif /* TCP_INPUT_DEBUG */ - - /* Set up a tcp_seg structure. */ - inseg.next = NULL; - inseg.len = p->tot_len; - inseg.dataptr = p->payload; - inseg.p = p; - inseg.tcphdr = tcphdr; - - recv_data = NULL; - recv_flags = 0; - - /* If there is data which was previously "refused" by upper layer */ - if (pcb->refused_data != NULL) { - /* Notify again application with data previously received. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: notify kept packet\n")); - TCP_EVENT_RECV(pcb, pcb->refused_data, ERR_OK, err); - if (err == ERR_OK) { - pcb->refused_data = NULL; - } else { - /* drop incoming packets, because pcb is "full" */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: drop incoming packets, because pcb is \"full\"\n")); - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); - return; - } - } - tcp_input_pcb = pcb; - err = tcp_process(pcb); - /* A return value of ERR_ABRT means that tcp_abort() was called - and that the pcb has been freed. If so, we don't do anything. */ - if (err != ERR_ABRT) { - if (recv_flags & TF_RESET) { - /* TF_RESET means that the connection was reset by the other - end. We then call the error callback to inform the - application that the connection is dead before we - deallocate the PCB. */ - TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_RST); - tcp_pcb_remove(&tcp_active_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - } else if (recv_flags & TF_CLOSED) { - /* The connection has been closed and we will deallocate the - PCB. */ - tcp_pcb_remove(&tcp_active_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - } else { - err = ERR_OK; - /* If the application has registered a "sent" function to be - called when new send buffer space is available, we call it - now. */ - if (pcb->acked > 0) { - TCP_EVENT_SENT(pcb, pcb->acked, err); - } - - if (recv_data != NULL) { - if(flags & TCP_PSH) { - recv_data->flags |= PBUF_FLAG_PUSH; - } - - /* Notify application that data has been received. */ - TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err); - - /* If the upper layer can't receive this data, store it */ - if (err != ERR_OK) { - pcb->refused_data = recv_data; - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: keep incoming packet, because pcb is \"full\"\n")); - } - } - - /* If a FIN segment was received, we call the callback - function with a NULL buffer to indicate EOF. */ - if (recv_flags & TF_GOT_FIN) { - TCP_EVENT_RECV(pcb, NULL, ERR_OK, err); - } - - tcp_input_pcb = NULL; - /* Try to send something out. */ - tcp_output(pcb); -#if TCP_INPUT_DEBUG -#if TCP_DEBUG - tcp_debug_print_state(pcb->state); -#endif /* TCP_DEBUG */ -#endif /* TCP_INPUT_DEBUG */ - } - } - tcp_input_pcb = NULL; - - - /* give up our reference to inseg.p */ - if (inseg.p != NULL) - { - pbuf_free(inseg.p); - inseg.p = NULL; - } - } else { - - /* If no matching PCB was found, send a TCP RST (reset) to the - sender. */ - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_input: no PCB match found, resetting.\n")); - if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) { - TCP_STATS_INC(tcp.proterr); - TCP_STATS_INC(tcp.drop); - tcp_rst(ackno, seqno + tcplen, - &(iphdr->dest), &(iphdr->src), - tcphdr->dest, tcphdr->src); - } - pbuf_free(p); - } - - LWIP_ASSERT("tcp_input: tcp_pcbs_sane()", tcp_pcbs_sane()); - PERF_STOP("tcp_input"); -} - -/** - * Called by tcp_input() when a segment arrives for a listening - * connection (from tcp_input()). - * - * @param pcb the tcp_pcb_listen for which a segment arrived - * @return ERR_OK if the segment was processed - * another err_t on error - * - * @note the return value is not (yet?) used in tcp_input() - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static err_t -tcp_listen_input(struct tcp_pcb_listen *pcb) -{ - struct tcp_pcb *npcb; - err_t rc; - - /* In the LISTEN state, we check for incoming SYN segments, - creates a new PCB, and responds with a SYN|ACK. */ - if (flags & TCP_ACK) { - /* For incoming segments with the ACK flag set, respond with a - RST. */ - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_listen_input: ACK in LISTEN, sending reset\n")); - tcp_rst(ackno + 1, seqno + tcplen, - &(iphdr->dest), &(iphdr->src), - tcphdr->dest, tcphdr->src); - } else if (flags & TCP_SYN) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection request %"U16_F" -> %"U16_F".\n", tcphdr->src, tcphdr->dest)); -#if TCP_LISTEN_BACKLOG - if (pcb->accepts_pending >= pcb->backlog) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: listen backlog exceeded for port %"U16_F"\n", tcphdr->dest)); - return ERR_ABRT; - } -#endif /* TCP_LISTEN_BACKLOG */ - npcb = tcp_alloc(pcb->prio); - /* If a new PCB could not be created (probably due to lack of memory), - we don't do anything, but rely on the sender will retransmit the - SYN at a time when we have more memory available. */ - if (npcb == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: could not allocate PCB\n")); - TCP_STATS_INC(tcp.memerr); - return ERR_MEM; - } -#if TCP_LISTEN_BACKLOG - pcb->accepts_pending++; -#endif /* TCP_LISTEN_BACKLOG */ - /* Set up the new PCB. */ - ip_addr_set(&(npcb->local_ip), &(iphdr->dest)); - npcb->local_port = pcb->local_port; - ip_addr_set(&(npcb->remote_ip), &(iphdr->src)); - npcb->remote_port = tcphdr->src; - npcb->state = SYN_RCVD; - npcb->rcv_nxt = seqno + 1; - npcb->rcv_ann_right_edge = npcb->rcv_nxt; - npcb->snd_wnd = tcphdr->wnd; - npcb->ssthresh = npcb->snd_wnd; - npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */ - npcb->callback_arg = pcb->callback_arg; -#if LWIP_CALLBACK_API - npcb->accept = pcb->accept; -#endif /* LWIP_CALLBACK_API */ - /* inherit socket options */ - npcb->so_options = pcb->so_options & (SOF_DEBUG|SOF_DONTROUTE|SOF_KEEPALIVE|SOF_OOBINLINE|SOF_LINGER); - /* Register the new PCB so that we can begin receiving segments - for it. */ - TCP_REG(&tcp_active_pcbs, npcb); - - /* Parse any options in the SYN. */ - tcp_parseopt(npcb); -#if TCP_CALCULATE_EFF_SEND_MSS - npcb->mss = tcp_eff_send_mss(npcb->mss, &(npcb->remote_ip)); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - - snmp_inc_tcppassiveopens(); - - /* Send a SYN|ACK together with the MSS option. */ - rc = tcp_enqueue(npcb, NULL, 0, TCP_SYN | TCP_ACK, 0, TF_SEG_OPTS_MSS -#if LWIP_TCP_TIMESTAMPS - /* and maybe include the TIMESTAMP option */ - | (npcb->flags & TF_TIMESTAMP ? TF_SEG_OPTS_TS : 0) -#endif - ); - if (rc != ERR_OK) { - tcp_abandon(npcb, 0); - return rc; - } - return tcp_output(npcb); - } - return ERR_OK; -} - -/** - * Called by tcp_input() when a segment arrives for a connection in - * TIME_WAIT. - * - * @param pcb the tcp_pcb for which a segment arrived - * - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static err_t -tcp_timewait_input(struct tcp_pcb *pcb) -{ - /* RFC 1337: in TIME_WAIT, ignore RST and ACK FINs + any 'acceptable' segments */ - /* RFC 793 3.9 Event Processing - Segment Arrives: - * - first check sequence number - we skip that one in TIME_WAIT (always - * acceptable since we only send ACKs) - * - second check the RST bit (... return) */ - if (flags & TCP_RST) { - return ERR_OK; - } - /* - fourth, check the SYN bit, */ - if (flags & TCP_SYN) { - /* If an incoming segment is not acceptable, an acknowledgment - should be sent in reply */ - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt+pcb->rcv_wnd)) { - /* If the SYN is in the window it is an error, send a reset */ - tcp_rst(ackno, seqno + tcplen, &(iphdr->dest), &(iphdr->src), - tcphdr->dest, tcphdr->src); - return ERR_OK; - } - } else if (flags & TCP_FIN) { - /* - eighth, check the FIN bit: Remain in the TIME-WAIT state. - Restart the 2 MSL time-wait timeout.*/ - pcb->tmr = tcp_ticks; - } - - if ((tcplen > 0)) { - /* Acknowledge data, FIN or out-of-window SYN */ - pcb->flags |= TF_ACK_NOW; - return tcp_output(pcb); - } - return ERR_OK; -} - -/** - * Implements the TCP state machine. Called by tcp_input. In some - * states tcp_receive() is called to receive data. The tcp_seg - * argument will be freed by the caller (tcp_input()) unless the - * recv_data pointer in the pcb is set. - * - * @param pcb the tcp_pcb for which a segment arrived - * - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static err_t -tcp_process(struct tcp_pcb *pcb) -{ - struct tcp_seg *rseg; - u8_t acceptable = 0; - err_t err; - - err = ERR_OK; - - /* Process incoming RST segments. */ - if (flags & TCP_RST) { - /* First, determine if the reset is acceptable. */ - if (pcb->state == SYN_SENT) { - if (ackno == pcb->snd_nxt) { - acceptable = 1; - } - } else { - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - pcb->rcv_nxt+pcb->rcv_wnd)) { - acceptable = 1; - } - } - - if (acceptable) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: Connection RESET\n")); - LWIP_ASSERT("tcp_input: pcb->state != CLOSED", pcb->state != CLOSED); - recv_flags |= TF_RESET; - pcb->flags &= ~TF_ACK_DELAY; - return ERR_RST; - } else { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n", - seqno, pcb->rcv_nxt)); - LWIP_DEBUGF(TCP_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n", - seqno, pcb->rcv_nxt)); - return ERR_OK; - } - } - - if ((flags & TCP_SYN) && (pcb->state != SYN_SENT && pcb->state != SYN_RCVD)) { - /* Cope with new connection attempt after remote end crashed */ - tcp_ack_now(pcb); - return ERR_OK; - } - - /* Update the PCB (in)activity timer. */ - pcb->tmr = tcp_ticks; - pcb->keep_cnt_sent = 0; - - tcp_parseopt(pcb); - - /* Do different things depending on the TCP state. */ - switch (pcb->state) { - case SYN_SENT: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("SYN-SENT: ackno %"U32_F" pcb->snd_nxt %"U32_F" unacked %"U32_F"\n", ackno, - pcb->snd_nxt, ntohl(pcb->unacked->tcphdr->seqno))); - /* received SYN ACK with expected sequence number? */ - if ((flags & TCP_ACK) && (flags & TCP_SYN) - && ackno == ntohl(pcb->unacked->tcphdr->seqno) + 1) { - pcb->snd_buf++; - pcb->rcv_nxt = seqno + 1; - pcb->rcv_ann_right_edge = pcb->rcv_nxt; - pcb->lastack = ackno; - pcb->snd_wnd = tcphdr->wnd; - pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */ - pcb->state = ESTABLISHED; - -#if TCP_CALCULATE_EFF_SEND_MSS - pcb->mss = tcp_eff_send_mss(pcb->mss, &(pcb->remote_ip)); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - - /* Set ssthresh again after changing pcb->mss (already set in tcp_connect - * but for the default value of pcb->mss) */ - pcb->ssthresh = pcb->mss * 10; - - pcb->cwnd = ((pcb->cwnd == 1) ? (pcb->mss * 2) : pcb->mss); - LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0)); - --pcb->snd_queuelen; - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_process: SYN-SENT --queuelen %"U16_F"\n", (u16_t)pcb->snd_queuelen)); - rseg = pcb->unacked; - pcb->unacked = rseg->next; - - /* If there's nothing left to acknowledge, stop the retransmit - timer, otherwise reset it to start again */ - if(pcb->unacked == NULL) - pcb->rtime = -1; - else { - pcb->rtime = 0; - pcb->nrtx = 0; - } - - tcp_seg_free(rseg); - - /* Call the user specified function to call when sucessfully - * connected. */ - TCP_EVENT_CONNECTED(pcb, ERR_OK, err); - tcp_ack_now(pcb); - } - /* received ACK? possibly a half-open connection */ - else if (flags & TCP_ACK) { - /* send a RST to bring the other side in a non-synchronized state. */ - tcp_rst(ackno, seqno + tcplen, &(iphdr->dest), &(iphdr->src), - tcphdr->dest, tcphdr->src); - } - break; - case SYN_RCVD: - if (flags & TCP_ACK) { - /* expected ACK number? */ - if (TCP_SEQ_BETWEEN(ackno, pcb->lastack+1, pcb->snd_nxt)) { - u16_t old_cwnd; - pcb->state = ESTABLISHED; - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection established %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); -#if LWIP_CALLBACK_API - LWIP_ASSERT("pcb->accept != NULL", pcb->accept != NULL); -#endif - /* Call the accept function. */ - TCP_EVENT_ACCEPT(pcb, ERR_OK, err); - if (err != ERR_OK) { - /* If the accept function returns with an error, we abort - * the connection. */ - tcp_abort(pcb); - return ERR_ABRT; - } - old_cwnd = pcb->cwnd; - /* If there was any data contained within this ACK, - * we'd better pass it on to the application as well. */ - tcp_receive(pcb); - - /* Prevent ACK for SYN to generate a sent event */ - if (pcb->acked != 0) { - pcb->acked--; - } - - pcb->cwnd = ((old_cwnd == 1) ? (pcb->mss * 2) : pcb->mss); - - if (recv_flags & TF_GOT_FIN) { - tcp_ack_now(pcb); - pcb->state = CLOSE_WAIT; - } - } - /* incorrect ACK number */ - else { - /* send RST */ - tcp_rst(ackno, seqno + tcplen, &(iphdr->dest), &(iphdr->src), - tcphdr->dest, tcphdr->src); - } - } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) { - /* Looks like another copy of the SYN - retransmit our SYN-ACK */ - tcp_rexmit(pcb); - } - break; - case CLOSE_WAIT: - /* FALLTHROUGH */ - case ESTABLISHED: - tcp_receive(pcb); - if (recv_flags & TF_GOT_FIN) { /* passive close */ - tcp_ack_now(pcb); - pcb->state = CLOSE_WAIT; - } - break; - case FIN_WAIT_1: - tcp_receive(pcb); - if (recv_flags & TF_GOT_FIN) { - if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { - LWIP_DEBUGF(TCP_DEBUG, - ("TCP connection closed: FIN_WAIT_1 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_ack_now(pcb); - tcp_pcb_purge(pcb); - TCP_RMV(&tcp_active_pcbs, pcb); - pcb->state = TIME_WAIT; - TCP_REG(&tcp_tw_pcbs, pcb); - } else { - tcp_ack_now(pcb); - pcb->state = CLOSING; - } - } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { - pcb->state = FIN_WAIT_2; - } - break; - case FIN_WAIT_2: - tcp_receive(pcb); - if (recv_flags & TF_GOT_FIN) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: FIN_WAIT_2 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_ack_now(pcb); - tcp_pcb_purge(pcb); - TCP_RMV(&tcp_active_pcbs, pcb); - pcb->state = TIME_WAIT; - TCP_REG(&tcp_tw_pcbs, pcb); - } - break; - case CLOSING: - tcp_receive(pcb); - if (flags & TCP_ACK && ackno == pcb->snd_nxt) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: CLOSING %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_pcb_purge(pcb); - TCP_RMV(&tcp_active_pcbs, pcb); - pcb->state = TIME_WAIT; - TCP_REG(&tcp_tw_pcbs, pcb); - } - break; - case LAST_ACK: - tcp_receive(pcb); - if (flags & TCP_ACK && ackno == pcb->snd_nxt) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: LAST_ACK %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - /* bugfix #21699: don't set pcb->state to CLOSED here or we risk leaking segments */ - recv_flags |= TF_CLOSED; - } - break; - default: - break; - } - return ERR_OK; -} - -#if TCP_QUEUE_OOSEQ -/** - * Insert segment into the list (segments covered with new one will be deleted) - * - * Called from tcp_receive() - */ -static void -tcp_oos_insert_segment(struct tcp_seg *cseg, struct tcp_seg *next) -{ - struct tcp_seg *old_seg; - - if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) { - /* received segment overlaps all following segments */ - tcp_segs_free(next); - next = NULL; - } - else { - /* delete some following segments - oos queue may have segments with FIN flag */ - while (next && - TCP_SEQ_GEQ((seqno + cseg->len), - (next->tcphdr->seqno + next->len))) { - /* cseg with FIN already processed */ - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) { - TCPH_FLAGS_SET(cseg->tcphdr, TCPH_FLAGS(cseg->tcphdr) | TCP_FIN); - } - old_seg = next; - next = next->next; - tcp_seg_free(old_seg); - } - if (next && - TCP_SEQ_GT(seqno + cseg->len, next->tcphdr->seqno)) { - /* We need to trim the incoming segment. */ - cseg->len = (u16_t)(next->tcphdr->seqno - seqno); - pbuf_realloc(cseg->p, cseg->len); - } - } - cseg->next = next; -} -#endif - -/** - * Called by tcp_process. Checks if the given segment is an ACK for outstanding - * data, and if so frees the memory of the buffered data. Next, is places the - * segment on any of the receive queues (pcb->recved or pcb->ooseq). If the segment - * is buffered, the pbuf is referenced by pbuf_ref so that it will not be freed until - * i it has been removed from the buffer. - * - * If the incoming segment constitutes an ACK for a segment that was used for RTT - * estimation, the RTT is estimated here as well. - * - * Called from tcp_process(). - */ -static void -tcp_receive(struct tcp_pcb *pcb) -{ - struct tcp_seg *next; -#if TCP_QUEUE_OOSEQ - struct tcp_seg *prev, *cseg; -#endif - struct pbuf *p; - s32_t off; - s16_t m; - u32_t right_wnd_edge; - u16_t new_tot_len; - int found_dupack = 0; - - if (flags & TCP_ACK) { - right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2; - - /* Update window. */ - if (TCP_SEQ_LT(pcb->snd_wl1, seqno) || - (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) || - (pcb->snd_wl2 == ackno && tcphdr->wnd > pcb->snd_wnd)) { - pcb->snd_wnd = tcphdr->wnd; - pcb->snd_wl1 = seqno; - pcb->snd_wl2 = ackno; - if (pcb->snd_wnd > 0 && pcb->persist_backoff > 0) { - pcb->persist_backoff = 0; - } - LWIP_DEBUGF(TCP_WND_DEBUG, ("tcp_receive: window update %"U16_F"\n", pcb->snd_wnd)); -#if TCP_WND_DEBUG - } else { - if (pcb->snd_wnd != tcphdr->wnd) { - LWIP_DEBUGF(TCP_WND_DEBUG, - ("tcp_receive: no window update lastack %"U32_F" ackno %" - U32_F" wl1 %"U32_F" seqno %"U32_F" wl2 %"U32_F"\n", - pcb->lastack, ackno, pcb->snd_wl1, seqno, pcb->snd_wl2)); - } -#endif /* TCP_WND_DEBUG */ - } - - /* (From Stevens TCP/IP Illustrated Vol II, p970.) Its only a - * duplicate ack if: - * 1) It doesn't ACK new data - * 2) length of received packet is zero (i.e. no payload) - * 3) the advertised window hasn't changed - * 4) There is outstanding unacknowledged data (retransmission timer running) - * 5) The ACK is == biggest ACK sequence number so far seen (snd_una) - * - * If it passes all five, should process as a dupack: - * a) dupacks < 3: do nothing - * b) dupacks == 3: fast retransmit - * c) dupacks > 3: increase cwnd - * - * If it only passes 1-3, should reset dupack counter (and add to - * stats, which we don't do in lwIP) - * - * If it only passes 1, should reset dupack counter - * - */ - - /* Clause 1 */ - if (TCP_SEQ_LEQ(ackno, pcb->lastack)) { - pcb->acked = 0; - /* Clause 2 */ - if (tcplen == 0) { - /* Clause 3 */ - if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge){ - /* Clause 4 */ - if (pcb->rtime >= 0) { - /* Clause 5 */ - if (pcb->lastack == ackno) { - found_dupack = 1; - if (pcb->dupacks + 1 > pcb->dupacks) - ++pcb->dupacks; - if (pcb->dupacks > 3) { - /* Inflate the congestion window, but not if it means that - the value overflows. */ - if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) { - pcb->cwnd += pcb->mss; - } - } else if (pcb->dupacks == 3) { - /* Do fast retransmit */ - tcp_rexmit_fast(pcb); - } - } - } - } - } - /* If Clause (1) or more is true, but not a duplicate ack, reset - * count of consecutive duplicate acks */ - if (!found_dupack) { - pcb->dupacks = 0; - } - } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack+1, pcb->snd_nxt)){ - /* We come here when the ACK acknowledges new data. */ - - /* Reset the "IN Fast Retransmit" flag, since we are no longer - in fast retransmit. Also reset the congestion window to the - slow start threshold. */ - if (pcb->flags & TF_INFR) { - pcb->flags &= ~TF_INFR; - pcb->cwnd = pcb->ssthresh; - } - - /* Reset the number of retransmissions. */ - pcb->nrtx = 0; - - /* Reset the retransmission time-out. */ - pcb->rto = (pcb->sa >> 3) + pcb->sv; - - /* Update the send buffer space. Diff between the two can never exceed 64K? */ - pcb->acked = (u16_t)(ackno - pcb->lastack); - - pcb->snd_buf += pcb->acked; - - /* Reset the fast retransmit variables. */ - pcb->dupacks = 0; - pcb->lastack = ackno; - - /* Update the congestion control variables (cwnd and - ssthresh). */ - if (pcb->state >= ESTABLISHED) { - if (pcb->cwnd < pcb->ssthresh) { - if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) { - pcb->cwnd += pcb->mss; - } - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: slow start cwnd %"U16_F"\n", pcb->cwnd)); - } else { - u16_t new_cwnd = (pcb->cwnd + pcb->mss * pcb->mss / pcb->cwnd); - if (new_cwnd > pcb->cwnd) { - pcb->cwnd = new_cwnd; - } - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: congestion avoidance cwnd %"U16_F"\n", pcb->cwnd)); - } - } - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: ACK for %"U32_F", unacked->seqno %"U32_F":%"U32_F"\n", - ackno, - pcb->unacked != NULL? - ntohl(pcb->unacked->tcphdr->seqno): 0, - pcb->unacked != NULL? - ntohl(pcb->unacked->tcphdr->seqno) + TCP_TCPLEN(pcb->unacked): 0)); - - /* Remove segment from the unacknowledged list if the incoming - ACK acknowlegdes them. */ - while (pcb->unacked != NULL && - TCP_SEQ_LEQ(ntohl(pcb->unacked->tcphdr->seqno) + - TCP_TCPLEN(pcb->unacked), ackno)) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->unacked\n", - ntohl(pcb->unacked->tcphdr->seqno), - ntohl(pcb->unacked->tcphdr->seqno) + - TCP_TCPLEN(pcb->unacked))); - - next = pcb->unacked; - pcb->unacked = pcb->unacked->next; - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen)); - LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p))); - /* Prevent ACK for FIN to generate a sent event */ - if ((pcb->acked != 0) && ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0)) { - pcb->acked--; - } - - pcb->snd_queuelen -= pbuf_clen(next->p); - tcp_seg_free(next); - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"U16_F" (after freeing unacked)\n", (u16_t)pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_receive: valid queue length", pcb->unacked != NULL || - pcb->unsent != NULL); - } - } - - /* If there's nothing left to acknowledge, stop the retransmit - timer, otherwise reset it to start again */ - if(pcb->unacked == NULL) - pcb->rtime = -1; - else - pcb->rtime = 0; - - pcb->polltmr = 0; - } else { - /* Fix bug bug #21582: out of sequence ACK, didn't really ack anything */ - pcb->acked = 0; - } - - /* We go through the ->unsent list to see if any of the segments - on the list are acknowledged by the ACK. This may seem - strange since an "unsent" segment shouldn't be acked. The - rationale is that lwIP puts all outstanding segments on the - ->unsent list after a retransmission, so these segments may - in fact have been sent once. */ - while (pcb->unsent != NULL && - TCP_SEQ_BETWEEN(ackno, ntohl(pcb->unsent->tcphdr->seqno) + - TCP_TCPLEN(pcb->unsent), pcb->snd_nxt)) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->unsent\n", - ntohl(pcb->unsent->tcphdr->seqno), ntohl(pcb->unsent->tcphdr->seqno) + - TCP_TCPLEN(pcb->unsent))); - - next = pcb->unsent; - pcb->unsent = pcb->unsent->next; - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen)); - LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p))); - /* Prevent ACK for FIN to generate a sent event */ - if ((pcb->acked != 0) && ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0)) { - pcb->acked--; - } - pcb->snd_queuelen -= pbuf_clen(next->p); - tcp_seg_free(next); - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"U16_F" (after freeing unsent)\n", (u16_t)pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_receive: valid queue length", - pcb->unacked != NULL || pcb->unsent != NULL); - } - } - /* End of ACK for new data processing. */ - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: pcb->rttest %"U32_F" rtseq %"U32_F" ackno %"U32_F"\n", - pcb->rttest, pcb->rtseq, ackno)); - - /* RTT estimation calculations. This is done by checking if the - incoming segment acknowledges the segment we use to take a - round-trip time measurement. */ - if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) { - /* diff between this shouldn't exceed 32K since this are tcp timer ticks - and a round-trip shouldn't be that long... */ - m = (s16_t)(tcp_ticks - pcb->rttest); - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: experienced rtt %"U16_F" ticks (%"U16_F" msec).\n", - m, m * TCP_SLOW_INTERVAL)); - - /* This is taken directly from VJs original code in his paper */ - m = m - (pcb->sa >> 3); - pcb->sa += m; - if (m < 0) { - m = -m; - } - m = m - (pcb->sv >> 2); - pcb->sv += m; - pcb->rto = (pcb->sa >> 3) + pcb->sv; - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: RTO %"U16_F" (%"U16_F" milliseconds)\n", - pcb->rto, pcb->rto * TCP_SLOW_INTERVAL)); - - pcb->rttest = 0; - } - } - - /* If the incoming segment contains data, we must process it - further. */ - if (tcplen > 0) { - /* This code basically does three things: - - +) If the incoming segment contains data that is the next - in-sequence data, this data is passed to the application. This - might involve trimming the first edge of the data. The rcv_nxt - variable and the advertised window are adjusted. - - +) If the incoming segment has data that is above the next - sequence number expected (->rcv_nxt), the segment is placed on - the ->ooseq queue. This is done by finding the appropriate - place in the ->ooseq queue (which is ordered by sequence - number) and trim the segment in both ends if needed. An - immediate ACK is sent to indicate that we received an - out-of-sequence segment. - - +) Finally, we check if the first segment on the ->ooseq queue - now is in sequence (i.e., if rcv_nxt >= ooseq->seqno). If - rcv_nxt > ooseq->seqno, we must trim the first edge of the - segment on ->ooseq before we adjust rcv_nxt. The data in the - segments that are now on sequence are chained onto the - incoming segment so that we only need to call the application - once. - */ - - /* First, we check if we must trim the first edge. We have to do - this if the sequence number of the incoming segment is less - than rcv_nxt, and the sequence number plus the length of the - segment is larger than rcv_nxt. */ - /* if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)){ - if (TCP_SEQ_LT(pcb->rcv_nxt, seqno + tcplen)) {*/ - if (TCP_SEQ_BETWEEN(pcb->rcv_nxt, seqno + 1, seqno + tcplen - 1)){ - /* Trimming the first edge is done by pushing the payload - pointer in the pbuf downwards. This is somewhat tricky since - we do not want to discard the full contents of the pbuf up to - the new starting point of the data since we have to keep the - TCP header which is present in the first pbuf in the chain. - - What is done is really quite a nasty hack: the first pbuf in - the pbuf chain is pointed to by inseg.p. Since we need to be - able to deallocate the whole pbuf, we cannot change this - inseg.p pointer to point to any of the later pbufs in the - chain. Instead, we point the ->payload pointer in the first - pbuf to data in one of the later pbufs. We also set the - inseg.data pointer to point to the right place. This way, the - ->p pointer will still point to the first pbuf, but the - ->p->payload pointer will point to data in another pbuf. - - After we are done with adjusting the pbuf pointers we must - adjust the ->data pointer in the seg and the segment - length.*/ - - off = pcb->rcv_nxt - seqno; - p = inseg.p; - LWIP_ASSERT("inseg.p != NULL", inseg.p); - LWIP_ASSERT("insane offset!", (off < 0x7fff)); - if (inseg.p->len < off) { - LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off)); - new_tot_len = (u16_t)(inseg.p->tot_len - off); - while (p->len < off) { - off -= p->len; - /* KJM following line changed (with addition of new_tot_len var) - to fix bug #9076 - inseg.p->tot_len -= p->len; */ - p->tot_len = new_tot_len; - p->len = 0; - p = p->next; - } - if(pbuf_header(p, (s16_t)-off)) { - /* Do we need to cope with this failing? Assert for now */ - LWIP_ASSERT("pbuf_header failed", 0); - } - } else { - if(pbuf_header(inseg.p, (s16_t)-off)) { - /* Do we need to cope with this failing? Assert for now */ - LWIP_ASSERT("pbuf_header failed", 0); - } - } - /* KJM following line changed to use p->payload rather than inseg->p->payload - to fix bug #9076 */ - inseg.dataptr = p->payload; - inseg.len -= (u16_t)(pcb->rcv_nxt - seqno); - inseg.tcphdr->seqno = seqno = pcb->rcv_nxt; - } - else { - if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)){ - /* the whole segment is < rcv_nxt */ - /* must be a duplicate of a packet that has already been correctly handled */ - - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: duplicate seqno %"U32_F"\n", seqno)); - tcp_ack_now(pcb); - } - } - - /* The sequence number must be within the window (above rcv_nxt - and below rcv_nxt + rcv_wnd) in order to be further - processed. */ - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - pcb->rcv_nxt + pcb->rcv_wnd - 1)){ - if (pcb->rcv_nxt == seqno) { - /* The incoming segment is the next in sequence. We check if - we have to trim the end of the segment and update rcv_nxt - and pass the data to the application. */ - tcplen = TCP_TCPLEN(&inseg); - - if (tcplen > pcb->rcv_wnd) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, - ("tcp_receive: other end overran receive window" - "seqno %"U32_F" len %"U32_F" right edge %"U32_F"\n", - seqno, tcplen, pcb->rcv_nxt + pcb->rcv_wnd)); - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - /* Must remove the FIN from the header as we're trimming - * that byte of sequence-space from the packet */ - TCPH_FLAGS_SET(inseg.tcphdr, TCPH_FLAGS(inseg.tcphdr) &~ TCP_FIN); - } - /* Adjust length of segment to fit in the window. */ - inseg.len = pcb->rcv_wnd; - if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { - inseg.len -= 1; - } - pbuf_realloc(inseg.p, inseg.len); - tcplen = TCP_TCPLEN(&inseg); - LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n", - (seqno + tcplen) == (pcb->rcv_nxt + pcb->rcv_wnd)); - } -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL) { - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, - ("tcp_receive: received in-order FIN, binning ooseq queue\n")); - /* Received in-order FIN means anything that was received - * out of order must now have been received in-order, so - * bin the ooseq queue - * rcv_nxt - * . |--ooseq--| - * .==seg============|FIN - */ - while (pcb->ooseq != NULL) { - struct tcp_seg *old_ooseq = pcb->ooseq; - pcb->ooseq = pcb->ooseq->next; - tcp_seg_free(old_ooseq); - } - } - else { - struct tcp_seg* next = pcb->ooseq; - struct tcp_seg *old_seg; - /* rcv_nxt - * . |--ooseq--| - * .==seg============| - */ - while (next && - TCP_SEQ_GEQ(seqno + tcplen, - next->tcphdr->seqno + next->len)) { - /* inseg doesn't have FIN (already processed) */ - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN && - (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) == 0) { - TCPH_FLAGS_SET(inseg.tcphdr, - TCPH_FLAGS(inseg.tcphdr) | TCP_FIN); - tcplen = TCP_TCPLEN(&inseg); - } - old_seg = next; - next = next->next; - tcp_seg_free(old_seg); - } - /* rcv_nxt - * . |--ooseq--| - * .==seg============| - */ - if (next && - TCP_SEQ_GT(seqno + tcplen, - next->tcphdr->seqno)) { - /* FIN in inseg already handled by dropping whole ooseq queue */ - inseg.len = (u16_t)(pcb->ooseq->tcphdr->seqno - seqno); - if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { - inseg.len -= 1; - } - pbuf_realloc(inseg.p, inseg.len); - tcplen = TCP_TCPLEN(&inseg); - LWIP_ASSERT("tcp_receive: segment not trimmed correctly to ooseq queue\n", - (seqno + tcplen) == pcb->ooseq->tcphdr->seqno); - } - pcb->ooseq = next; - } - } -#endif /* TCP_QUEUE_OOSEQ */ - - pcb->rcv_nxt = seqno + tcplen; - - /* Update the receiver's (our) window. */ - LWIP_ASSERT("tcp_receive: tcplen > rcv_wnd\n", pcb->rcv_wnd >= tcplen); - pcb->rcv_wnd -= tcplen; - - tcp_update_rcv_ann_wnd(pcb); - - /* If there is data in the segment, we make preparations to - pass this up to the application. The ->recv_data variable - is used for holding the pbuf that goes to the - application. The code for reassembling out-of-sequence data - chains its data on this pbuf as well. - - If the segment was a FIN, we set the TF_GOT_FIN flag that will - be used to indicate to the application that the remote side has - closed its end of the connection. */ - if (inseg.p->tot_len > 0) { - recv_data = inseg.p; - /* Since this pbuf now is the responsibility of the - application, we delete our reference to it so that we won't - (mistakingly) deallocate it. */ - inseg.p = NULL; - } - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: received FIN.\n")); - recv_flags |= TF_GOT_FIN; - } - -#if TCP_QUEUE_OOSEQ - /* We now check if we have segments on the ->ooseq queue that - is now in sequence. */ - while (pcb->ooseq != NULL && - pcb->ooseq->tcphdr->seqno == pcb->rcv_nxt) { - - cseg = pcb->ooseq; - seqno = pcb->ooseq->tcphdr->seqno; - - pcb->rcv_nxt += TCP_TCPLEN(cseg); - LWIP_ASSERT("tcp_receive: ooseq tcplen > rcv_wnd\n", - pcb->rcv_wnd >= TCP_TCPLEN(cseg)); - pcb->rcv_wnd -= TCP_TCPLEN(cseg); - - tcp_update_rcv_ann_wnd(pcb); - - if (cseg->p->tot_len > 0) { - /* Chain this pbuf onto the pbuf that we will pass to - the application. */ - if (recv_data) { - pbuf_cat(recv_data, cseg->p); - } else { - recv_data = cseg->p; - } - cseg->p = NULL; - } - if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: dequeued FIN.\n")); - recv_flags |= TF_GOT_FIN; - if (pcb->state == ESTABLISHED) { /* force passive close or we can move to active close */ - pcb->state = CLOSE_WAIT; - } - } - - pcb->ooseq = cseg->next; - tcp_seg_free(cseg); - } -#endif /* TCP_QUEUE_OOSEQ */ - - - /* Acknowledge the segment(s). */ - tcp_ack(pcb); - - } else { - /* We get here if the incoming segment is out-of-sequence. */ - tcp_send_empty_ack(pcb); -#if TCP_QUEUE_OOSEQ - /* We queue the segment on the ->ooseq queue. */ - if (pcb->ooseq == NULL) { - pcb->ooseq = tcp_seg_copy(&inseg); - } else { - /* If the queue is not empty, we walk through the queue and - try to find a place where the sequence number of the - incoming segment is between the sequence numbers of the - previous and the next segment on the ->ooseq queue. That is - the place where we put the incoming segment. If needed, we - trim the second edges of the previous and the incoming - segment so that it will fit into the sequence. - - If the incoming segment has the same sequence number as a - segment on the ->ooseq queue, we discard the segment that - contains less data. */ - - prev = NULL; - for(next = pcb->ooseq; next != NULL; next = next->next) { - if (seqno == next->tcphdr->seqno) { - /* The sequence number of the incoming segment is the - same as the sequence number of the segment on - ->ooseq. We check the lengths to see which one to - discard. */ - if (inseg.len > next->len) { - /* The incoming segment is larger than the old - segment. We replace some segments with the new - one. */ - cseg = tcp_seg_copy(&inseg); - if (cseg != NULL) { - if (prev != NULL) { - prev->next = cseg; - } else { - pcb->ooseq = cseg; - } - tcp_oos_insert_segment(cseg, next); - } - break; - } else { - /* Either the lenghts are the same or the incoming - segment was smaller than the old one; in either - case, we ditch the incoming segment. */ - break; - } - } else { - if (prev == NULL) { - if (TCP_SEQ_LT(seqno, next->tcphdr->seqno)) { - /* The sequence number of the incoming segment is lower - than the sequence number of the first segment on the - queue. We put the incoming segment first on the - queue. */ - cseg = tcp_seg_copy(&inseg); - if (cseg != NULL) { - pcb->ooseq = cseg; - tcp_oos_insert_segment(cseg, next); - } - break; - } - } else { - /*if (TCP_SEQ_LT(prev->tcphdr->seqno, seqno) && - TCP_SEQ_LT(seqno, next->tcphdr->seqno)) {*/ - if (TCP_SEQ_BETWEEN(seqno, prev->tcphdr->seqno+1, next->tcphdr->seqno-1)) { - /* The sequence number of the incoming segment is in - between the sequence numbers of the previous and - the next segment on ->ooseq. We trim trim the previous - segment, delete next segments that included in received segment - and trim received, if needed. */ - cseg = tcp_seg_copy(&inseg); - if (cseg != NULL) { - if (TCP_SEQ_GT(prev->tcphdr->seqno + prev->len, seqno)) { - /* We need to trim the prev segment. */ - prev->len = (u16_t)(seqno - prev->tcphdr->seqno); - pbuf_realloc(prev->p, prev->len); - } - prev->next = cseg; - tcp_oos_insert_segment(cseg, next); - } - break; - } - } - /* If the "next" segment is the last segment on the - ooseq queue, we add the incoming segment to the end - of the list. */ - if (next->next == NULL && - TCP_SEQ_GT(seqno, next->tcphdr->seqno)) { - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) { - /* segment "next" already contains all data */ - break; - } - next->next = tcp_seg_copy(&inseg); - if (next->next != NULL) { - if (TCP_SEQ_GT(next->tcphdr->seqno + next->len, seqno)) { - /* We need to trim the last segment. */ - next->len = (u16_t)(seqno - next->tcphdr->seqno); - pbuf_realloc(next->p, next->len); - } - } - break; - } - } - prev = next; - } - } -#endif /* TCP_QUEUE_OOSEQ */ - - } - } else { - /* The incoming segment is not withing the window. */ - tcp_send_empty_ack(pcb); - } - } else { - /* Segments with length 0 is taken care of here. Segments that - fall out of the window are ACKed. */ - /*if (TCP_SEQ_GT(pcb->rcv_nxt, seqno) || - TCP_SEQ_GEQ(seqno, pcb->rcv_nxt + pcb->rcv_wnd)) {*/ - if(!TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd-1)){ - tcp_ack_now(pcb); - } - } -} - -/** - * Parses the options contained in the incoming segment. - * - * Called from tcp_listen_input() and tcp_process(). - * Currently, only the MSS option is supported! - * - * @param pcb the tcp_pcb for which a segment arrived - */ -static void -tcp_parseopt(struct tcp_pcb *pcb) -{ - u16_t c, max_c; - u16_t mss; - u8_t *opts, opt; -#if LWIP_TCP_TIMESTAMPS - u32_t tsval; -#endif - - opts = (u8_t *)tcphdr + TCP_HLEN; - - /* Parse the TCP MSS option, if present. */ - if(TCPH_HDRLEN(tcphdr) > 0x5) { - max_c = (TCPH_HDRLEN(tcphdr) - 5) << 2; - for (c = 0; c < max_c; ) { - opt = opts[c]; - switch (opt) { - case 0x00: - /* End of options. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: EOL\n")); - return; - case 0x01: - /* NOP option. */ - ++c; - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: NOP\n")); - break; - case 0x02: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: MSS\n")); - if (opts[c + 1] != 0x04 || c + 0x04 > max_c) { - /* Bad length */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); - return; - } - /* An MSS option with the right option length. */ - mss = (opts[c + 2] << 8) | opts[c + 3]; - /* Limit the mss to the configured TCP_MSS and prevent division by zero */ - pcb->mss = ((mss > TCP_MSS) || (mss == 0)) ? TCP_MSS : mss; - /* Advance to next option */ - c += 0x04; - break; -#if LWIP_TCP_TIMESTAMPS - case 0x08: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: TS\n")); - if (opts[c + 1] != 0x0A || c + 0x0A > max_c) { - /* Bad length */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); - return; - } - /* TCP timestamp option with valid length */ - tsval = (opts[c+2]) | (opts[c+3] << 8) | - (opts[c+4] << 16) | (opts[c+5] << 24); - if (flags & TCP_SYN) { - pcb->ts_recent = ntohl(tsval); - pcb->flags |= TF_TIMESTAMP; - } else if (TCP_SEQ_BETWEEN(pcb->ts_lastacksent, seqno, seqno+tcplen)) { - pcb->ts_recent = ntohl(tsval); - } - /* Advance to next option */ - c += 0x0A; - break; -#endif - default: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: other\n")); - if (opts[c + 1] == 0) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); - /* If the length field is zero, the options are malformed - and we don't process them further. */ - return; - } - /* All other options have a length field, so that we easily - can skip past them. */ - c += opts[c + 1]; - } - } - } -} - -#endif /* LWIP_TCP */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c deleted file mode 100644 index 9605beb..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c +++ /dev/null @@ -1,1071 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Transmission Control Protocol, outgoing traffic - * - * The output functions of TCP. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/tcp.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/sys.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" - -#include -#define _TEST_HD_ -/* Forward declarations.*/ -static void tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb); - -static struct tcp_hdr * -tcp_output_set_header(struct tcp_pcb *pcb, struct pbuf *p, int optlen, - u32_t seqno_be /* already in network byte order */) -{ - struct tcp_hdr *tcphdr = p->payload; - tcphdr->src = htons(pcb->local_port); - tcphdr->dest = htons(pcb->remote_port); - tcphdr->seqno = seqno_be; - tcphdr->ackno = htonl(pcb->rcv_nxt); - TCPH_FLAGS_SET(tcphdr, TCP_ACK); - tcphdr->wnd = htons(pcb->rcv_ann_wnd); - tcphdr->urgp = 0; - TCPH_HDRLEN_SET(tcphdr, (5 + optlen / 4)); - tcphdr->chksum = 0; - - /* If we're sending a packet, update the announced right window edge */ - pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; - - return tcphdr; -} - -/** - * Called by tcp_close() to send a segment including flags but not data. - * - * @param pcb the tcp_pcb over which to send a segment - * @param flags the flags to set in the segment header - * @return ERR_OK if sent, another err_t otherwise - */ -err_t -tcp_send_ctrl(struct tcp_pcb *pcb, u8_t flags) -{ - /* no data, no length, flags, copy=1, no optdata */ - return tcp_enqueue(pcb, NULL, 0, flags, TCP_WRITE_FLAG_COPY, 0); -} - -/** - * Write data for sending (but does not send it immediately). - * - * It waits in the expectation of more data being sent soon (as - * it can send them more efficiently by combining them together). - * To prompt the system to send data now, call tcp_output() after - * calling tcp_write(). - * - * @param pcb Protocol control block of the TCP connection to enqueue data for. - * @param data pointer to the data to send - * @param len length (in bytes) of the data to send - * @param apiflags combination of following flags : - * - TCP_WRITE_FLAG_COPY (0x01) data will be copied into memory belonging to the stack - * - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will be set on last segment sent, - * @return ERR_OK if enqueued, another err_t on error - * - * @see tcp_write() - */ -err_t -tcp_write(struct tcp_pcb *pcb, const void *data, u16_t len, u8_t apiflags) -{ - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_write(pcb=%p, data=%p, len=%"U16_F", apiflags=%"U16_F")\n", (void *)pcb, - data, len, (u16_t)apiflags)); - /* connection is in valid state for data transmission? */ - if (pcb->state == ESTABLISHED || - pcb->state == CLOSE_WAIT || - pcb->state == SYN_SENT || - pcb->state == SYN_RCVD) { - if (len > 0) { -#if LWIP_TCP_TIMESTAMPS - return tcp_enqueue(pcb, (void *)data, len, 0, apiflags, - pcb->flags & TF_TIMESTAMP ? TF_SEG_OPTS_TS : 0); -#else - return tcp_enqueue(pcb, (void *)data, len, 0, apiflags, 0); -#endif - } - return ERR_OK; - } else { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_STATE | LWIP_DBG_LEVEL_SEVERE, ("tcp_write() called in invalid state\n")); - return ERR_CONN; - } -} - -/** - * Enqueue data and/or TCP options for transmission - * - * Called by tcp_connect(), tcp_listen_input(), tcp_send_ctrl() and tcp_write(). - * - * @param pcb Protocol control block for the TCP connection to enqueue data for. - * @param arg Pointer to the data to be enqueued for sending. - * @param len Data length in bytes - * @param flags tcp header flags to set in the outgoing segment - * @param apiflags combination of following flags : - * - TCP_WRITE_FLAG_COPY (0x01) data will be copied into memory belonging to the stack - * - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will be set on last segment sent, - * @param optflags options to include in segment later on (see definition of struct tcp_seg) - */ -err_t -tcp_enqueue(struct tcp_pcb *pcb, void *arg, u16_t len, - u8_t flags, u8_t apiflags, u8_t optflags) -{ - struct pbuf *p; - struct tcp_seg *seg, *useg, *queue; - u32_t seqno; - u16_t left, seglen; - void *ptr; - u16_t queuelen; - u8_t optlen; - - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, - ("tcp_enqueue(pcb=%p, arg=%p, len=%"U16_F", flags=%"X16_F", apiflags=%"U16_F")\n", - (void *)pcb, arg, len, (u16_t)flags, (u16_t)apiflags)); - LWIP_ERROR("tcp_enqueue: packet needs payload, options, or SYN/FIN (programmer violates API)", - ((len != 0) || (optflags != 0) || ((flags & (TCP_SYN | TCP_FIN)) != 0)), - return ERR_ARG;); - LWIP_ERROR("tcp_enqueue: len != 0 || arg == NULL (programmer violates API)", - ((len != 0) || (arg == NULL)), return ERR_ARG;); - - /* fail on too much data */ - if (len > pcb->snd_buf) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_WARNING, - ("tcp_enqueue: too much data (len=%"U16_F" > snd_buf=%"U16_F")\n", len, pcb->snd_buf)); - pcb->flags |= TF_NAGLEMEMERR; - return ERR_MEM; - } - left = len; - ptr = arg; - - optlen = LWIP_TCP_OPT_LENGTH(optflags); - - /* seqno will be the sequence number of the first segment enqueued - * by the call to this function. */ - seqno = pcb->snd_lbb; - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue: queuelen: %"U16_F"\n", (u16_t)pcb->snd_queuelen)); - - /* If total number of pbufs on the unsent/unacked queues exceeds the - * configured maximum, return an error */ - queuelen = pcb->snd_queuelen; - /* check for configured max queuelen and possible overflow */ - if ((queuelen >= TCP_SND_QUEUELEN) || (queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_WARNING, - ("tcp_enqueue: too long queue %"U16_F" (max %"U16_F")\n", queuelen, TCP_SND_QUEUELEN)); - TCP_STATS_INC(tcp.memerr); - pcb->flags |= TF_NAGLEMEMERR; - return ERR_MEM; - } - if (queuelen != 0) { - LWIP_ASSERT("tcp_enqueue: pbufs on queue => at least one queue non-empty", - pcb->unacked != NULL || pcb->unsent != NULL); - } else { - LWIP_ASSERT("tcp_enqueue: no pbufs on queue => both queues empty", - pcb->unacked == NULL && pcb->unsent == NULL); - } - - /* First, break up the data into segments and tuck them together in - * the local "queue" variable. */ - useg = queue = seg = NULL; - seglen = 0; - while (queue == NULL || left > 0) { - /* The segment length (including options) should be at most the MSS */ - seglen = left > (pcb->mss - optlen) ? (pcb->mss - optlen) : left; - - /* Allocate memory for tcp_seg, and fill in fields. */ - seg = memp_malloc(MEMP_TCP_SEG); - if (seg == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("tcp_enqueue: could not allocate memory for tcp_seg\n")); - goto memerr; - } - seg->next = NULL; - seg->p = NULL; - - /* first segment of to-be-queued data? */ - if (queue == NULL) { - queue = seg; - } - /* subsequent segments of to-be-queued data */ - else { - /* Attach the segment to the end of the queued segments */ - LWIP_ASSERT("useg != NULL", useg != NULL); - useg->next = seg; - } - /* remember last segment of to-be-queued data for next iteration */ - useg = seg; - - /* If copy is set, memory should be allocated - * and data copied into pbuf, otherwise data comes from - * ROM or other static memory, and need not be copied. */ - if (apiflags & TCP_WRITE_FLAG_COPY) { - if ((seg->p = pbuf_alloc(PBUF_TRANSPORT, seglen + optlen, PBUF_RAM)) == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("tcp_enqueue : could not allocate memory for pbuf copy size %"U16_F"\n", seglen)); - goto memerr; - } - LWIP_ASSERT("check that first pbuf can hold the complete seglen", - (seg->p->len >= seglen + optlen)); - queuelen += pbuf_clen(seg->p); - if (arg != NULL) { - MEMCPY((char *)seg->p->payload + optlen, ptr, seglen); - } - seg->dataptr = seg->p->payload; - } - /* do not copy data */ - else { - /* First, allocate a pbuf for the headers. */ - if ((seg->p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("tcp_enqueue: could not allocate memory for header pbuf\n")); - goto memerr; - } - queuelen += pbuf_clen(seg->p); - - /* Second, allocate a pbuf for holding the data. - * since the referenced data is available at least until it is sent out on the - * link (as it has to be ACKed by the remote party) we can safely use PBUF_ROM - * instead of PBUF_REF here. - */ - if (left > 0) { - if ((p = pbuf_alloc(PBUF_RAW, seglen, PBUF_ROM)) == NULL) { - /* If allocation fails, we have to deallocate the header pbuf as well. */ - pbuf_free(seg->p); - seg->p = NULL; - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("tcp_enqueue: could not allocate memory for zero-copy pbuf\n")); - goto memerr; - } - ++queuelen; - /* reference the non-volatile payload data */ - p->payload = ptr; - seg->dataptr = ptr; - - /* Concatenate the headers and data pbufs together. */ - pbuf_cat(seg->p/*header*/, p/*data*/); - p = NULL; - } - } - - /* Now that there are more segments queued, we check again if the - length of the queue exceeds the configured maximum or overflows. */ - if ((queuelen > TCP_SND_QUEUELEN) || (queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("tcp_enqueue: queue too long %"U16_F" (%"U16_F")\n", queuelen, TCP_SND_QUEUELEN)); - goto memerr; - } - - seg->len = seglen; - - /* build TCP header */ - if (pbuf_header(seg->p, TCP_HLEN)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_enqueue: no room for TCP header in pbuf.\n")); - TCP_STATS_INC(tcp.err); - goto memerr; - } - seg->tcphdr = seg->p->payload; - seg->tcphdr->src = htons(pcb->local_port); - seg->tcphdr->dest = htons(pcb->remote_port); - seg->tcphdr->seqno = htonl(seqno); - seg->tcphdr->urgp = 0; - TCPH_FLAGS_SET(seg->tcphdr, flags); - /* don't fill in tcphdr->ackno and tcphdr->wnd until later */ - - seg->flags = optflags; - - /* Set the length of the header */ - TCPH_HDRLEN_SET(seg->tcphdr, (5 + optlen / 4)); - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE, ("tcp_enqueue: queueing %"U32_F":%"U32_F" (0x%"X16_F")\n", - ntohl(seg->tcphdr->seqno), - ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg), - (u16_t)flags)); - - left -= seglen; - seqno += seglen; - ptr = (void *)((u8_t *)ptr + seglen); - } - - /* Now that the data to be enqueued has been broken up into TCP - segments in the queue variable, we add them to the end of the - pcb->unsent queue. */ - if (pcb->unsent == NULL) { - useg = NULL; - } - else { - for (useg = pcb->unsent; useg->next != NULL; useg = useg->next); - } - /* { useg is last segment on the unsent queue, NULL if list is empty } */ - - /* If there is room in the last pbuf on the unsent queue, - chain the first pbuf on the queue together with that. */ - if (useg != NULL && - TCP_TCPLEN(useg) != 0 && - !(TCPH_FLAGS(useg->tcphdr) & (TCP_SYN | TCP_FIN)) && - (!(flags & (TCP_SYN | TCP_FIN)) || (flags == TCP_FIN)) && - /* fit within max seg size */ - (useg->len + queue->len <= pcb->mss) && - /* only concatenate segments with the same options */ - (useg->flags == queue->flags) && - /* segments are consecutive */ - (ntohl(useg->tcphdr->seqno) + useg->len == ntohl(queue->tcphdr->seqno)) ) { - /* Remove TCP header from first segment of our to-be-queued list */ - if(pbuf_header(queue->p, -(TCP_HLEN + optlen))) { - /* Can we cope with this failing? Just assert for now */ - LWIP_ASSERT("pbuf_header failed\n", 0); - TCP_STATS_INC(tcp.err); - goto memerr; - } - if (queue->p->len == 0) { - /* free the first (header-only) pbuf if it is now empty (contained only headers) */ - struct pbuf *old_q = queue->p; - queue->p = queue->p->next; - old_q->next = NULL; - queuelen--; - pbuf_free(old_q); - } - if (flags & TCP_FIN) { - /* the new segment contains only FIN, no data -> put the FIN into the last segment */ - LWIP_ASSERT("FIN enqueued together with data", queue->p == NULL && queue->len == 0); - TCPH_SET_FLAG(useg->tcphdr, TCP_FIN); - } else { - LWIP_ASSERT("zero-length pbuf", (queue->p != NULL) && (queue->p->len > 0)); - pbuf_cat(useg->p, queue->p); - useg->len += queue->len; - useg->next = queue->next; - } - - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("tcp_enqueue: chaining segments, new len %"U16_F"\n", useg->len)); - if (seg == queue) { - seg = useg; - seglen = useg->len; - } - memp_free(MEMP_TCP_SEG, queue); - } - else { - /* empty list */ - if (useg == NULL) { - /* initialize list with this segment */ - pcb->unsent = queue; - } - /* enqueue segment */ - else { - useg->next = queue; - } - } - if ((flags & TCP_SYN) || (flags & TCP_FIN)) { - ++len; - } - if (flags & TCP_FIN) { - pcb->flags |= TF_FIN; - } - pcb->snd_lbb += len; - - pcb->snd_buf -= len; - - /* update number of segments on the queues */ - pcb->snd_queuelen = queuelen; - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue: %"S16_F" (after enqueued)\n", pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_enqueue: valid queue length", - pcb->unacked != NULL || pcb->unsent != NULL); - } - - /* Set the PSH flag in the last segment that we enqueued, but only - if the segment has data (indicated by seglen > 0). */ - if (seg != NULL && seglen > 0 && seg->tcphdr != NULL && ((apiflags & TCP_WRITE_FLAG_MORE)==0)) { - TCPH_SET_FLAG(seg->tcphdr, TCP_PSH); - } - - return ERR_OK; -memerr: - pcb->flags |= TF_NAGLEMEMERR; - TCP_STATS_INC(tcp.memerr); - - if (queue != NULL) { - tcp_segs_free(queue); - } - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_enqueue: valid queue length", pcb->unacked != NULL || - pcb->unsent != NULL); - } - LWIP_DEBUGF(TCP_QLEN_DEBUG | LWIP_DBG_STATE, ("tcp_enqueue: %"S16_F" (with mem err)\n", pcb->snd_queuelen)); - return ERR_MEM; -} - - -#if LWIP_TCP_TIMESTAMPS -/* Build a timestamp option (12 bytes long) at the specified options pointer) - * - * @param pcb tcp_pcb - * @param opts option pointer where to store the timestamp option - */ -static void -tcp_build_timestamp_option(struct tcp_pcb *pcb, u32_t *opts) -{ - /* Pad with two NOP options to make everything nicely aligned */ - opts[0] = htonl(0x0101080A); - opts[1] = htonl(sys_now()); - opts[2] = htonl(pcb->ts_recent); -} -#endif - -/** Send an ACK without data. - * - * @param pcb Protocol control block for the TCP connection to send the ACK - */ -err_t -tcp_send_empty_ack(struct tcp_pcb *pcb) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - u8_t optlen = 0; - -#if LWIP_TCP_TIMESTAMPS - if (pcb->flags & TF_TIMESTAMP) { - optlen = LWIP_TCP_OPT_LENGTH(TF_SEG_OPTS_TS); - } -#endif - p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen, PBUF_RAM); - if (p == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: (ACK) could not allocate pbuf\n")); - return ERR_BUF; - } - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, - ("tcp_output: sending ACK for %"U32_F"\n", pcb->rcv_nxt)); - /* remove ACK flags from the PCB, as we send an empty ACK now */ - pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); - - tcphdr = tcp_output_set_header(pcb, p, optlen, htonl(pcb->snd_nxt)); - - /* NB. MSS option is only sent on SYNs, so ignore it here */ -#if LWIP_TCP_TIMESTAMPS - pcb->ts_lastacksent = pcb->rcv_nxt; - - if (pcb->flags & TF_TIMESTAMP) { - tcp_build_timestamp_option(pcb, (u32_t *)(tcphdr + 1)); - } -#endif - -#if CHECKSUM_GEN_TCP - tcphdr->chksum = inet_chksum_pseudo(p, &(pcb->local_ip), &(pcb->remote_ip), - IP_PROTO_TCP, p->tot_len); -#endif -#if LWIP_NETIF_HWADDRHINT - ip_output_hinted(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, - IP_PROTO_TCP, &(pcb->addr_hint)); -#else /* LWIP_NETIF_HWADDRHINT*/ - ip_output(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, - IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ - pbuf_free(p); - - return ERR_OK; -} - -/** - * Find out what we can send and send it - * - * @param pcb Protocol control block for the TCP connection to send data - * @return ERR_OK if data has been sent or nothing to send - * another err_t on error - */ -err_t -tcp_output(struct tcp_pcb *pcb) -{ - struct tcp_seg *seg, *useg; - u32_t wnd, snd_nxt; -#if TCP_CWND_DEBUG - s16_t i = 0; -#endif /* TCP_CWND_DEBUG */ - - /* First, check if we are invoked by the TCP input processing - code. If so, we do not output anything. Instead, we rely on the - input processing code to call us when input processing is done - with. */ - if (tcp_input_pcb == pcb) { - return ERR_OK; - } - - wnd = LWIP_MIN(pcb->snd_wnd, pcb->cwnd); - - seg = pcb->unsent; - - /* If the TF_ACK_NOW flag is set and no data will be sent (either - * because the ->unsent queue is empty or because the window does - * not allow it), construct an empty ACK segment and send it. - * - * If data is to be sent, we will just piggyback the ACK (see below). - */ - if (pcb->flags & TF_ACK_NOW && - (seg == NULL || - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd)) { - return tcp_send_empty_ack(pcb); - } - - /* useg should point to last segment on unacked queue */ - useg = pcb->unacked; - if (useg != NULL) { - for (; useg->next != NULL; useg = useg->next); - } - -#if TCP_OUTPUT_DEBUG - if (seg == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: nothing to send (%p)\n", - (void*)pcb->unsent)); - } -#endif /* TCP_OUTPUT_DEBUG */ -#if TCP_CWND_DEBUG - if (seg == NULL) { - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_output: snd_wnd %"U16_F - ", cwnd %"U16_F", wnd %"U32_F - ", seg == NULL, ack %"U32_F"\n", - pcb->snd_wnd, pcb->cwnd, wnd, pcb->lastack)); - } else { - LWIP_DEBUGF(TCP_CWND_DEBUG, - ("tcp_output: snd_wnd %"U16_F", cwnd %"U16_F", wnd %"U32_F - ", effwnd %"U32_F", seq %"U32_F", ack %"U32_F"\n", - pcb->snd_wnd, pcb->cwnd, wnd, - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len, - ntohl(seg->tcphdr->seqno), pcb->lastack)); - } -#endif /* TCP_CWND_DEBUG */ - /* data available and window allows it to be sent? */ - while (seg != NULL && - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) { - LWIP_ASSERT("RST not expected here!", - (TCPH_FLAGS(seg->tcphdr) & TCP_RST) == 0); - /* Stop sending if the nagle algorithm would prevent it - * Don't stop: - * - if tcp_enqueue had a memory error before (prevent delayed ACK timeout) or - * - if FIN was already enqueued for this PCB (SYN is always alone in a segment - - * either seg->next != NULL or pcb->unacked == NULL; - * RST is no sent using tcp_enqueue/tcp_output. - */ - if((tcp_do_output_nagle(pcb) == 0) && - ((pcb->flags & (TF_NAGLEMEMERR | TF_FIN)) == 0)){ - break; - } -#if TCP_CWND_DEBUG - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_output: snd_wnd %"U16_F", cwnd %"U16_F", wnd %"U32_F", effwnd %"U32_F", seq %"U32_F", ack %"U32_F", i %"S16_F"\n", - pcb->snd_wnd, pcb->cwnd, wnd, - ntohl(seg->tcphdr->seqno) + seg->len - - pcb->lastack, - ntohl(seg->tcphdr->seqno), pcb->lastack, i)); - ++i; -#endif /* TCP_CWND_DEBUG */ - - pcb->unsent = seg->next; - - if (pcb->state != SYN_SENT) { - TCPH_SET_FLAG(seg->tcphdr, TCP_ACK); - pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); - } - - tcp_output_segment(seg, pcb); - snd_nxt = ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg); - if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) { - pcb->snd_nxt = snd_nxt; - } - /* put segment on unacknowledged list if length > 0 */ - if (TCP_TCPLEN(seg) > 0) { - seg->next = NULL; - /* unacked list is empty? */ - if (pcb->unacked == NULL) { - pcb->unacked = seg; - useg = seg; - /* unacked list is not empty? */ - } else { - /* In the case of fast retransmit, the packet should not go to the tail - * of the unacked queue, but rather somewhere before it. We need to check for - * this case. -STJ Jul 27, 2004 */ - if (TCP_SEQ_LT(ntohl(seg->tcphdr->seqno), ntohl(useg->tcphdr->seqno))){ - /* add segment to before tail of unacked list, keeping the list sorted */ - struct tcp_seg **cur_seg = &(pcb->unacked); - while (*cur_seg && - TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) { - cur_seg = &((*cur_seg)->next ); - } - seg->next = (*cur_seg); - (*cur_seg) = seg; - } else { - /* add segment to tail of unacked list */ - useg->next = seg; - useg = useg->next; - } - } - /* do not queue empty segments on the unacked list */ - } else { - tcp_seg_free(seg); - } - seg = pcb->unsent; - } - - if (seg != NULL && pcb->persist_backoff == 0 && - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > pcb->snd_wnd) { - /* prepare for persist timer */ - pcb->persist_cnt = 0; - pcb->persist_backoff = 1; - } - - pcb->flags &= ~TF_NAGLEMEMERR; - return ERR_OK; -} - -/** - * Called by tcp_output() to actually send a TCP segment over IP. - * - * @param seg the tcp_seg to send - * @param pcb the tcp_pcb for the TCP connection used to send the segment - */ -static void -tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb) -{ - u16_t len; - struct netif *netif; - u32_t *opts; - - /** @bug Exclude retransmitted segments from this count. */ - snmp_inc_tcpoutsegs(); - - /* The TCP header has already been constructed, but the ackno and - wnd fields remain. */ - seg->tcphdr->ackno = htonl(pcb->rcv_nxt); - - /* advertise our receive window size in this TCP segment */ - seg->tcphdr->wnd = htons(pcb->rcv_ann_wnd); - - pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; - - /* Add any requested options. NB MSS option is only set on SYN - packets, so ignore it here */ - opts = (u32_t *)(seg->tcphdr + 1); - if (seg->flags & TF_SEG_OPTS_MSS) { - TCP_BUILD_MSS_OPTION(*opts); - opts += 1; - } -#if LWIP_TCP_TIMESTAMPS - pcb->ts_lastacksent = pcb->rcv_nxt; - - if (seg->flags & TF_SEG_OPTS_TS) { - tcp_build_timestamp_option(pcb, opts); - opts += 3; - } -#endif - -#ifdef _TEST_HD_ - /* ANGR: set rtime this _before_ checking ip_route(). Otherwise TCP_SYN will - * not be retransmitted in case the interface was down and tcp_connect() - * will not return any error. Since we still want the err_cb() (or maybe - * the wifi link comes up), make sure that we fulfill the retransmissions in - * tcp_slowtmr() - */ - - /* Set retransmission timer running if it is not currently enabled */ - if(pcb->rtime == -1) - pcb->rtime = 0; -#endif - - /* If we don't have a local IP address, we get one by - calling ip_route(). */ - if (ip_addr_isany(&(pcb->local_ip))) { - netif = ip_route(&(pcb->remote_ip)); - if (netif == NULL) { - return; - } - ip_addr_set(&(pcb->local_ip), &(netif->ip_addr)); - } - -#ifndef _TEST_HD_ - //Set retransmission timer running if it is not currently enabled - if(pcb->rtime == -1) - pcb->rtime = 0; -#endif - - if (pcb->rttest == 0) { - pcb->rttest = tcp_ticks; - pcb->rtseq = ntohl(seg->tcphdr->seqno); - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_output_segment: rtseq %"U32_F"\n", pcb->rtseq)); - } - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output_segment: %"U32_F":%"U32_F"\n", - htonl(seg->tcphdr->seqno), htonl(seg->tcphdr->seqno) + - seg->len)); - - len = (u16_t)((u8_t *)seg->tcphdr - (u8_t *)seg->p->payload); - - seg->p->len -= len; - seg->p->tot_len -= len; - - seg->p->payload = seg->tcphdr; - - seg->tcphdr->chksum = 0; -#if CHECKSUM_GEN_TCP - seg->tcphdr->chksum = inet_chksum_pseudo(seg->p, - &(pcb->local_ip), - &(pcb->remote_ip), - IP_PROTO_TCP, seg->p->tot_len); -#endif - TCP_STATS_INC(tcp.xmit); - -#if LWIP_NETIF_HWADDRHINT - ip_output_hinted(seg->p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, - IP_PROTO_TCP, &(pcb->addr_hint)); -#else /* LWIP_NETIF_HWADDRHINT*/ - ip_output(seg->p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, - IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ -} - -/** - * Send a TCP RESET packet (empty segment with RST flag set) either to - * abort a connection or to show that there is no matching local connection - * for a received segment. - * - * Called by tcp_abort() (to abort a local connection), tcp_input() (if no - * matching local pcb was found), tcp_listen_input() (if incoming segment - * has ACK flag set) and tcp_process() (received segment in the wrong state) - * - * Since a RST segment is in most cases not sent for an active connection, - * tcp_rst() has a number of arguments that are taken from a tcp_pcb for - * most other segment output functions. - * - * @param seqno the sequence number to use for the outgoing segment - * @param ackno the acknowledge number to use for the outgoing segment - * @param local_ip the local IP address to send the segment from - * @param remote_ip the remote IP address to send the segment to - * @param local_port the local TCP port to send the segment from - * @param remote_port the remote TCP port to send the segment to - */ -void -tcp_rst(u32_t seqno, u32_t ackno, - struct ip_addr *local_ip, struct ip_addr *remote_ip, - u16_t local_port, u16_t remote_port) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - p = pbuf_alloc(PBUF_IP, TCP_HLEN, PBUF_RAM); - if (p == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_rst: could not allocate memory for pbuf\n")); - return; - } - LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr", - (p->len >= sizeof(struct tcp_hdr))); - - tcphdr = p->payload; - tcphdr->src = htons(local_port); - tcphdr->dest = htons(remote_port); - tcphdr->seqno = htonl(seqno); - tcphdr->ackno = htonl(ackno); - TCPH_FLAGS_SET(tcphdr, TCP_RST | TCP_ACK); - tcphdr->wnd = htons(TCP_WND); - tcphdr->urgp = 0; - TCPH_HDRLEN_SET(tcphdr, 5); - - tcphdr->chksum = 0; -#if CHECKSUM_GEN_TCP - tcphdr->chksum = inet_chksum_pseudo(p, local_ip, remote_ip, - IP_PROTO_TCP, p->tot_len); -#endif - TCP_STATS_INC(tcp.xmit); - snmp_inc_tcpoutrsts(); - /* Send output with hardcoded TTL since we have no access to the pcb */ - ip_output(p, local_ip, remote_ip, TCP_TTL, 0, IP_PROTO_TCP); - pbuf_free(p); - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %"U32_F" ackno %"U32_F".\n", seqno, ackno)); -} - -/** - * Requeue all unacked segments for retransmission - * - * Called by tcp_slowtmr() for slow retransmission. - * - * @param pcb the tcp_pcb for which to re-enqueue all unacked segments - */ -void -tcp_rexmit_rto(struct tcp_pcb *pcb) -{ - struct tcp_seg *seg; - - if (pcb->unacked == NULL) { - return; - } - - /* Move all unacked segments to the head of the unsent queue */ - for (seg = pcb->unacked; seg->next != NULL; seg = seg->next); - /* concatenate unsent queue after unacked queue */ - seg->next = pcb->unsent; - /* unsent queue is the concatenated queue (of unacked, unsent) */ - pcb->unsent = pcb->unacked; - /* unacked queue is now empty */ - pcb->unacked = NULL; - - /* increment number of retransmissions */ - ++pcb->nrtx; - - /* Don't take any RTT measurements after retransmitting. */ - pcb->rttest = 0; - - /* Do the actual retransmission */ - tcp_output(pcb); -} - -/** - * Requeue the first unacked segment for retransmission - * - * Called by tcp_receive() for fast retramsmit. - * - * @param pcb the tcp_pcb for which to retransmit the first unacked segment - */ -void -tcp_rexmit(struct tcp_pcb *pcb) -{ - struct tcp_seg *seg; - struct tcp_seg **cur_seg; - - if (pcb->unacked == NULL) { - return; - } - - /* Move the first unacked segment to the unsent queue */ - /* Keep the unsent queue sorted. */ - seg = pcb->unacked; - pcb->unacked = seg->next; - - cur_seg = &(pcb->unsent); - while (*cur_seg && - TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) { - cur_seg = &((*cur_seg)->next ); - } - seg->next = *cur_seg; - *cur_seg = seg; - - ++pcb->nrtx; - - /* Don't take any rtt measurements after retransmitting. */ - pcb->rttest = 0; - - /* Do the actual retransmission. */ - snmp_inc_tcpretranssegs(); - /* No need to call tcp_output: we are always called from tcp_input() - and thus tcp_output directly returns. */ -} - - -/** - * Handle retransmission after three dupacks received - * - * @param pcb the tcp_pcb for which to retransmit the first unacked segment - */ -void -tcp_rexmit_fast(struct tcp_pcb *pcb) -{ - if (pcb->unacked != NULL && !(pcb->flags & TF_INFR)) { - /* This is fast retransmit. Retransmit the first unacked segment. */ - LWIP_DEBUGF(TCP_FR_DEBUG, - ("tcp_receive: dupacks %"U16_F" (%"U32_F - "), fast retransmit %"U32_F"\n", - (u16_t)pcb->dupacks, pcb->lastack, - ntohl(pcb->unacked->tcphdr->seqno))); - tcp_rexmit(pcb); - - /* Set ssthresh to half of the minimum of the current - * cwnd and the advertised window */ - if (pcb->cwnd > pcb->snd_wnd) - pcb->ssthresh = pcb->snd_wnd / 2; - else - pcb->ssthresh = pcb->cwnd / 2; - - /* The minimum value for ssthresh should be 2 MSS */ - if (pcb->ssthresh < 2*pcb->mss) { - LWIP_DEBUGF(TCP_FR_DEBUG, - ("tcp_receive: The minimum value for ssthresh %"U16_F - " should be min 2 mss %"U16_F"...\n", - pcb->ssthresh, 2*pcb->mss)); - pcb->ssthresh = 2*pcb->mss; - } - - pcb->cwnd = pcb->ssthresh + 3 * pcb->mss; - pcb->flags |= TF_INFR; - } -} - - -/** - * Send keepalive packets to keep a connection active although - * no data is sent over it. - * - * Called by tcp_slowtmr() - * - * @param pcb the tcp_pcb for which to send a keepalive packet - */ -void -tcp_keepalive(struct tcp_pcb *pcb) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: sending KEEPALIVE probe to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip), - ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip))); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: tcp_ticks %"U32_F" pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n", - tcp_ticks, pcb->tmr, pcb->keep_cnt_sent)); - - p = pbuf_alloc(PBUF_IP, TCP_HLEN, PBUF_RAM); - - if(p == NULL) { - LWIP_DEBUGF(TCP_DEBUG, - ("tcp_keepalive: could not allocate memory for pbuf\n")); - return; - } - LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr", - (p->len >= sizeof(struct tcp_hdr))); - - tcphdr = tcp_output_set_header(pcb, p, 0, htonl(pcb->snd_nxt - 1)); - -#if CHECKSUM_GEN_TCP - tcphdr->chksum = inet_chksum_pseudo(p, &pcb->local_ip, &pcb->remote_ip, - IP_PROTO_TCP, p->tot_len); -#endif - TCP_STATS_INC(tcp.xmit); - - /* Send output to IP */ -#if LWIP_NETIF_HWADDRHINT - ip_output_hinted(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP, - &(pcb->addr_hint)); -#else /* LWIP_NETIF_HWADDRHINT*/ - ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ - - pbuf_free(p); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: seqno %"U32_F" ackno %"U32_F".\n", - pcb->snd_nxt - 1, pcb->rcv_nxt)); -} - - -/** - * Send persist timer zero-window probes to keep a connection active - * when a window update is lost. - * - * Called by tcp_slowtmr() - * - * @param pcb the tcp_pcb for which to send a zero-window probe packet - */ -void -tcp_zero_window_probe(struct tcp_pcb *pcb) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - struct tcp_seg *seg; - u16_t len; - u8_t is_fin; - - LWIP_DEBUGF(TCP_DEBUG, - ("tcp_zero_window_probe: sending ZERO WINDOW probe to %" - U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip), - ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip))); - - LWIP_DEBUGF(TCP_DEBUG, - ("tcp_zero_window_probe: tcp_ticks %"U32_F - " pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n", - tcp_ticks, pcb->tmr, pcb->keep_cnt_sent)); - - seg = pcb->unacked; - - if(seg == NULL) - seg = pcb->unsent; - - if(seg == NULL) - return; - - is_fin = ((TCPH_FLAGS(seg->tcphdr) & TCP_FIN) != 0) && (seg->len == 0); - len = is_fin ? TCP_HLEN : TCP_HLEN + 1; - - p = pbuf_alloc(PBUF_IP, len, PBUF_RAM); - if(p == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: no memory for pbuf\n")); - return; - } - LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr", - (p->len >= sizeof(struct tcp_hdr))); - - tcphdr = tcp_output_set_header(pcb, p, 0, seg->tcphdr->seqno); - - if (is_fin) { - /* FIN segment, no data */ - TCPH_FLAGS_SET(tcphdr, TCP_ACK | TCP_FIN); - } else { - /* Data segment, copy in one byte from the head of the unacked queue */ - *((char *)p->payload + sizeof(struct tcp_hdr)) = *(char *)seg->dataptr; - } - -#if CHECKSUM_GEN_TCP - tcphdr->chksum = inet_chksum_pseudo(p, &pcb->local_ip, &pcb->remote_ip, - IP_PROTO_TCP, p->tot_len); -#endif - TCP_STATS_INC(tcp.xmit); - - /* Send output to IP */ -#if LWIP_NETIF_HWADDRHINT - ip_output_hinted(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP, - &(pcb->addr_hint)); -#else /* LWIP_NETIF_HWADDRHINT*/ - ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ - - pbuf_free(p); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: seqno %"U32_F - " ackno %"U32_F".\n", - pcb->snd_nxt - 1, pcb->rcv_nxt)); -} -#endif /* LWIP_TCP */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/udp.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/udp.c deleted file mode 100644 index 697ca7c..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/udp.c +++ /dev/null @@ -1,843 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * User Datagram Protocol module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - - -/* udp.c - * - * The code for the User Datagram Protocol UDP & UDPLite (RFC 3828). - * - */ - -/* @todo Check the use of '(struct udp_pcb).chksum_len_rx'! - */ - -#include "lwip/opt.h" - -#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/udp.h" -#include "lwip/def.h" -#include "lwip/memp.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/icmp.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "arch/perf.h" -#include "lwip/dhcp.h" - -#include - -/* The list of UDP PCBs */ -/* exported in udp.h (was static) */ -struct udp_pcb *udp_pcbs; - -/** - * Process an incoming UDP datagram. - * - * Given an incoming UDP datagram (as a chain of pbufs) this function - * finds a corresponding UDP PCB and hands over the pbuf to the pcbs - * recv function. If no pcb is found or the datagram is incorrect, the - * pbuf is freed. - * - * @param p pbuf to be demultiplexed to a UDP PCB. - * @param inp network interface on which the datagram was received. - * - */ -void -udp_input(struct pbuf *p, struct netif *inp) -{ - struct udp_hdr *udphdr; - struct udp_pcb *pcb, *prev; - struct udp_pcb *uncon_pcb; - struct ip_hdr *iphdr; - u16_t src, dest; - u8_t local_match; - u8_t broadcast; - - PERF_START; - - UDP_STATS_INC(udp.recv); - - iphdr = p->payload; - - /* Check minimum length (IP header + UDP header) - * and move payload pointer to UDP header */ - if (p->tot_len < (IPH_HL(iphdr) * 4 + UDP_HLEN) || pbuf_header(p, -(s16_t)(IPH_HL(iphdr) * 4))) { - /* drop short packets */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp_input: short UDP datagram (%"U16_F" bytes) discarded\n", p->tot_len)); - UDP_STATS_INC(udp.lenerr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } - - udphdr = (struct udp_hdr *)p->payload; - - /* is broadcast packet ? */ - broadcast = ip_addr_isbroadcast(&(iphdr->dest), inp); - - LWIP_DEBUGF(UDP_DEBUG, ("udp_input: received datagram of length %"U16_F"\n", p->tot_len)); - - /* convert src and dest ports to host byte order */ - src = ntohs(udphdr->src); - dest = ntohs(udphdr->dest); - - udp_debug_print(udphdr); - - /* print the UDP source and destination */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp (%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F") <-- " - "(%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F")\n", - ip4_addr1(&iphdr->dest), ip4_addr2(&iphdr->dest), - ip4_addr3(&iphdr->dest), ip4_addr4(&iphdr->dest), ntohs(udphdr->dest), - ip4_addr1(&iphdr->src), ip4_addr2(&iphdr->src), - ip4_addr3(&iphdr->src), ip4_addr4(&iphdr->src), ntohs(udphdr->src))); - -#if LWIP_DHCP - pcb = NULL; - /* when LWIP_DHCP is active, packets to DHCP_CLIENT_PORT may only be processed by - the dhcp module, no other UDP pcb may use the local UDP port DHCP_CLIENT_PORT */ - if (dest == DHCP_CLIENT_PORT) { - /* all packets for DHCP_CLIENT_PORT not coming from DHCP_SERVER_PORT are dropped! */ - if (src == DHCP_SERVER_PORT) { - if ((inp->dhcp != NULL) && (inp->dhcp->pcb != NULL)) { - /* accept the packe if - (- broadcast or directed to us) -> DHCP is link-layer-addressed, local ip is always ANY! - - inp->dhcp->pcb->remote == ANY or iphdr->src */ - if ((ip_addr_isany(&inp->dhcp->pcb->remote_ip) || - ip_addr_cmp(&(inp->dhcp->pcb->remote_ip), &(iphdr->src)))) { - pcb = inp->dhcp->pcb; - } - } - } - } else -#endif /* LWIP_DHCP */ - { - prev = NULL; - local_match = 0; - uncon_pcb = NULL; - /* Iterate through the UDP pcb list for a matching pcb. - * 'Perfect match' pcbs (connected to the remote port & ip address) are - * preferred. If no perfect match is found, the first unconnected pcb that - * matches the local port and ip address gets the datagram. */ - for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - local_match = 0; - /* print the PCB local and remote address */ - LWIP_DEBUGF(UDP_DEBUG, - ("pcb (%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F") --- " - "(%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F")\n", - ip4_addr1(&pcb->local_ip), ip4_addr2(&pcb->local_ip), - ip4_addr3(&pcb->local_ip), ip4_addr4(&pcb->local_ip), pcb->local_port, - ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip), - ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip), pcb->remote_port)); - - /* compare PCB local addr+port to UDP destination addr+port */ - if ((pcb->local_port == dest) && - ((!broadcast && ip_addr_isany(&pcb->local_ip)) || - ip_addr_cmp(&(pcb->local_ip), &(iphdr->dest)) || -#if LWIP_IGMP - ip_addr_ismulticast(&(iphdr->dest)) || -#endif /* LWIP_IGMP */ -#if IP_SOF_BROADCAST_RECV - (broadcast && (pcb->so_options & SOF_BROADCAST)))) { -#else /* IP_SOF_BROADCAST_RECV */ - (broadcast))) { -#endif /* IP_SOF_BROADCAST_RECV */ - local_match = 1; - if ((uncon_pcb == NULL) && - ((pcb->flags & UDP_FLAGS_CONNECTED) == 0)) { - /* the first unconnected matching PCB */ - uncon_pcb = pcb; - } - } - /* compare PCB remote addr+port to UDP source addr+port */ - if ((local_match != 0) && - (pcb->remote_port == src) && - (ip_addr_isany(&pcb->remote_ip) || - ip_addr_cmp(&(pcb->remote_ip), &(iphdr->src)))) { - /* the first fully matching PCB */ - if (prev != NULL) { - /* move the pcb to the front of udp_pcbs so that is - found faster next time */ - prev->next = pcb->next; - pcb->next = udp_pcbs; - udp_pcbs = pcb; - } else { - UDP_STATS_INC(udp.cachehit); - } - break; - } - prev = pcb; - } - /* no fully matching pcb found? then look for an unconnected pcb */ - if (pcb == NULL) { - pcb = uncon_pcb; - } - } - - /* Check checksum if this is a match or if it was directed at us. */ - if (pcb != NULL || ip_addr_cmp(&inp->ip_addr, &iphdr->dest)) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_input: calculating checksum\n")); -#if LWIP_UDPLITE - if (IPH_PROTO(iphdr) == IP_PROTO_UDPLITE) { - /* Do the UDP Lite checksum */ -#if CHECKSUM_CHECK_UDP - u16_t chklen = ntohs(udphdr->len); - if (chklen < sizeof(struct udp_hdr)) { - if (chklen == 0) { - /* For UDP-Lite, checksum length of 0 means checksum - over the complete packet (See RFC 3828 chap. 3.1) */ - chklen = p->tot_len; - } else { - /* At least the UDP-Lite header must be covered by the - checksum! (Again, see RFC 3828 chap. 3.1) */ - UDP_STATS_INC(udp.chkerr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } - } - if (inet_chksum_pseudo_partial(p, (struct ip_addr *)&(iphdr->src), - (struct ip_addr *)&(iphdr->dest), - IP_PROTO_UDPLITE, p->tot_len, chklen) != 0) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("udp_input: UDP Lite datagram discarded due to failing checksum\n")); - UDP_STATS_INC(udp.chkerr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } -#endif /* CHECKSUM_CHECK_UDP */ - } else -#endif /* LWIP_UDPLITE */ - { -#if CHECKSUM_CHECK_UDP - if (udphdr->chksum != 0) { - if (inet_chksum_pseudo(p, (struct ip_addr *)&(iphdr->src), - (struct ip_addr *)&(iphdr->dest), - IP_PROTO_UDP, p->tot_len) != 0) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("udp_input: UDP datagram discarded due to failing checksum\n")); - UDP_STATS_INC(udp.chkerr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } - } -#endif /* CHECKSUM_CHECK_UDP */ - } - if(pbuf_header(p, -UDP_HLEN)) { - /* Can we cope with this failing? Just assert for now */ - LWIP_ASSERT("pbuf_header failed\n", 0); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } - if (pcb != NULL) { - snmp_inc_udpindatagrams(); - /* callback */ - if (pcb->recv != NULL) { - /* now the recv function is responsible for freeing p */ - pcb->recv(pcb->recv_arg, pcb, p, &iphdr->src, src); - } else { - /* no recv function registered? then we have to free the pbuf! */ - pbuf_free(p); - goto end; - } - } else { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_input: not for us.\n")); - -#if LWIP_ICMP - /* No match was found, send ICMP destination port unreachable unless - destination address was broadcast/multicast. */ - if (!broadcast && - !ip_addr_ismulticast(&iphdr->dest)) { - /* move payload pointer back to ip header */ - pbuf_header(p, (IPH_HL(iphdr) * 4) + UDP_HLEN); - LWIP_ASSERT("p->payload == iphdr", (p->payload == iphdr)); - icmp_dest_unreach(p, ICMP_DUR_PORT); - } -#endif /* LWIP_ICMP */ - UDP_STATS_INC(udp.proterr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpnoports(); - pbuf_free(p); - } - } else { - pbuf_free(p); - } -end: - PERF_STOP("udp_input"); -} - -/** - * Send data using UDP. - * - * @param pcb UDP PCB used to send the data. - * @param p chain of pbuf's to be sent. - * - * The datagram will be sent to the current remote_ip & remote_port - * stored in pcb. If the pcb is not bound to a port, it will - * automatically be bound to a random port. - * - * @return lwIP error code. - * - ERR_OK. Successful. No error occured. - * - ERR_MEM. Out of memory. - * - ERR_RTE. Could not find route to destination address. - * - More errors could be returned by lower protocol layers. - * - * @see udp_disconnect() udp_sendto() - */ -err_t -udp_send(struct udp_pcb *pcb, struct pbuf *p) -{ - /* send to the packet using remote ip and port stored in the pcb */ - return udp_sendto(pcb, p, &pcb->remote_ip, pcb->remote_port); -} - -/** - * Send data to a specified address using UDP. - * - * @param pcb UDP PCB used to send the data. - * @param p chain of pbuf's to be sent. - * @param dst_ip Destination IP address. - * @param dst_port Destination UDP port. - * - * dst_ip & dst_port are expected to be in the same byte order as in the pcb. - * - * If the PCB already has a remote address association, it will - * be restored after the data is sent. - * - * @return lwIP error code (@see udp_send for possible error codes) - * - * @see udp_disconnect() udp_send() - */ -err_t -udp_sendto(struct udp_pcb *pcb, struct pbuf *p, - struct ip_addr *dst_ip, u16_t dst_port) -{ - struct netif *netif; - - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send\n")); - - /* find the outgoing network interface for this packet */ -#if LWIP_IGMP - netif = ip_route((ip_addr_ismulticast(dst_ip))?(&(pcb->multicast_ip)):(dst_ip)); -#else - netif = ip_route(dst_ip); -#endif /* LWIP_IGMP */ - - /* no outgoing network interface could be found? */ - if (netif == NULL) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: No route to 0x%"X32_F"\n", dst_ip->addr)); - UDP_STATS_INC(udp.rterr); - return ERR_RTE; - } - return udp_sendto_if(pcb, p, dst_ip, dst_port, netif); -} - -/** - * Send data to a specified address using UDP. - * The netif used for sending can be specified. - * - * This function exists mainly for DHCP, to be able to send UDP packets - * on a netif that is still down. - * - * @param pcb UDP PCB used to send the data. - * @param p chain of pbuf's to be sent. - * @param dst_ip Destination IP address. - * @param dst_port Destination UDP port. - * @param netif the netif used for sending. - * - * dst_ip & dst_port are expected to be in the same byte order as in the pcb. - * - * @return lwIP error code (@see udp_send for possible error codes) - * - * @see udp_disconnect() udp_send() - */ -err_t -udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, - struct ip_addr *dst_ip, u16_t dst_port, struct netif *netif) -{ - struct udp_hdr *udphdr; - struct ip_addr *src_ip; - err_t err; - struct pbuf *q; /* q will be sent down the stack */ - -#if IP_SOF_BROADCAST - /* broadcast filter? */ - if ( ((pcb->so_options & SOF_BROADCAST) == 0) && ip_addr_isbroadcast(dst_ip, netif) ) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("udp_sendto_if: SOF_BROADCAST not enabled on pcb %p\n", (void *)pcb)); - return ERR_VAL; - } -#endif /* IP_SOF_BROADCAST */ - - /* if the PCB is not yet bound to a port, bind it here */ - if (pcb->local_port == 0) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send: not yet bound to a port, binding now\n")); - err = udp_bind(pcb, &pcb->local_ip, pcb->local_port); - if (err != ERR_OK) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: forced port bind failed\n")); - return err; - } - } - - /* not enough space to add an UDP header to first pbuf in given p chain? */ - if (pbuf_header(p, UDP_HLEN)) { - /* allocate header in a separate new pbuf */ - q = pbuf_alloc(PBUF_IP, UDP_HLEN, PBUF_RAM); - /* new header pbuf could not be allocated? */ - if (q == NULL) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: could not allocate header\n")); - return ERR_MEM; - } - /* chain header q in front of given pbuf p */ - pbuf_chain(q, p); - /* first pbuf q points to header pbuf */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp_send: added header pbuf %p before given pbuf %p\n", (void *)q, (void *)p)); - } else { - /* adding space for header within p succeeded */ - /* first pbuf q equals given pbuf */ - q = p; - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: added header in given pbuf %p\n", (void *)p)); - } - LWIP_ASSERT("check that first pbuf can hold struct udp_hdr", - (q->len >= sizeof(struct udp_hdr))); - /* q now represents the packet to be sent */ - udphdr = q->payload; - udphdr->src = htons(pcb->local_port); - udphdr->dest = htons(dst_port); - /* in UDP, 0 checksum means 'no checksum' */ - udphdr->chksum = 0x0000; - - /* PCB local address is IP_ANY_ADDR? */ - if (ip_addr_isany(&pcb->local_ip)) { - /* use outgoing network interface IP address as source address */ - src_ip = &(netif->ip_addr); - } else { - /* check if UDP PCB local IP address is correct - * this could be an old address if netif->ip_addr has changed */ - if (!ip_addr_cmp(&(pcb->local_ip), &(netif->ip_addr))) { - /* local_ip doesn't match, drop the packet */ - if (q != p) { - /* free the header pbuf */ - pbuf_free(q); - q = NULL; - /* p is still referenced by the caller, and will live on */ - } - return ERR_VAL; - } - /* use UDP PCB local IP address as source address */ - src_ip = &(pcb->local_ip); - } - - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: sending datagram of length %"U16_F"\n", q->tot_len)); - -#if LWIP_UDPLITE - /* UDP Lite protocol? */ - if (pcb->flags & UDP_FLAGS_UDPLITE) { - u16_t chklen, chklen_hdr; - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP LITE packet length %"U16_F"\n", q->tot_len)); - /* set UDP message length in UDP header */ - chklen_hdr = chklen = pcb->chksum_len_tx; - if ((chklen < sizeof(struct udp_hdr)) || (chklen > q->tot_len)) { - if (chklen != 0) { - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP LITE pcb->chksum_len is illegal: %"U16_F"\n", chklen)); - } - /* For UDP-Lite, checksum length of 0 means checksum - over the complete packet. (See RFC 3828 chap. 3.1) - At least the UDP-Lite header must be covered by the - checksum, therefore, if chksum_len has an illegal - value, we generate the checksum over the complete - packet to be safe. */ - chklen_hdr = 0; - chklen = q->tot_len; - } - udphdr->len = htons(chklen_hdr); - /* calculate checksum */ -#if CHECKSUM_GEN_UDP - udphdr->chksum = inet_chksum_pseudo_partial(q, src_ip, dst_ip, - IP_PROTO_UDPLITE, q->tot_len, chklen); - /* chksum zero must become 0xffff, as zero means 'no checksum' */ - if (udphdr->chksum == 0x0000) - udphdr->chksum = 0xffff; -#endif /* CHECKSUM_CHECK_UDP */ - /* output to IP */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: ip_output_if (,,,,IP_PROTO_UDPLITE,)\n")); -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = &(pcb->addr_hint); -#endif /* LWIP_NETIF_HWADDRHINT*/ - err = ip_output_if(q, src_ip, dst_ip, pcb->ttl, pcb->tos, IP_PROTO_UDPLITE, netif); -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = NULL; -#endif /* LWIP_NETIF_HWADDRHINT*/ - } else -#endif /* LWIP_UDPLITE */ - { /* UDP */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP packet length %"U16_F"\n", q->tot_len)); - udphdr->len = htons(q->tot_len); - /* calculate checksum */ -#if CHECKSUM_GEN_UDP - if ((pcb->flags & UDP_FLAGS_NOCHKSUM) == 0) { - udphdr->chksum = inet_chksum_pseudo(q, src_ip, dst_ip, IP_PROTO_UDP, q->tot_len); - /* chksum zero must become 0xffff, as zero means 'no checksum' */ - if (udphdr->chksum == 0x0000) udphdr->chksum = 0xffff; - } -#endif /* CHECKSUM_CHECK_UDP */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP checksum 0x%04"X16_F"\n", udphdr->chksum)); - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: ip_output_if (,,,,IP_PROTO_UDP,)\n")); - /* output to IP */ -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = &(pcb->addr_hint); -#endif /* LWIP_NETIF_HWADDRHINT*/ - err = ip_output_if(q, src_ip, dst_ip, pcb->ttl, pcb->tos, IP_PROTO_UDP, netif); -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = NULL; -#endif /* LWIP_NETIF_HWADDRHINT*/ - } - /* TODO: must this be increased even if error occured? */ - snmp_inc_udpoutdatagrams(); - - /* did we chain a separate header pbuf earlier? */ - if (q != p) { - /* free the header pbuf */ - pbuf_free(q); - q = NULL; - /* p is still referenced by the caller, and will live on */ - } - - UDP_STATS_INC(udp.xmit); - return err; -} - -/** - * Bind an UDP PCB. - * - * @param pcb UDP PCB to be bound with a local address ipaddr and port. - * @param ipaddr local IP address to bind with. Use IP_ADDR_ANY to - * bind to all local interfaces. - * @param port local UDP port to bind with. Use 0 to automatically bind - * to a random port between UDP_LOCAL_PORT_RANGE_START and - * UDP_LOCAL_PORT_RANGE_END. - * - * ipaddr & port are expected to be in the same byte order as in the pcb. - * - * @return lwIP error code. - * - ERR_OK. Successful. No error occured. - * - ERR_USE. The specified ipaddr and port are already bound to by - * another UDP PCB. - * - * @see udp_disconnect() - */ -err_t -udp_bind(struct udp_pcb *pcb, struct ip_addr *ipaddr, u16_t port) -{ - struct udp_pcb *ipcb; - u8_t rebind; - - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_bind(ipaddr = ")); - ip_addr_debug_print(UDP_DEBUG, ipaddr); - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, (", port = %"U16_F")\n", port)); - - rebind = 0; - /* Check for double bind and rebind of the same pcb */ - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - /* is this UDP PCB already on active list? */ - if (pcb == ipcb) { - /* pcb may occur at most once in active list */ - LWIP_ASSERT("rebind == 0", rebind == 0); - /* pcb already in list, just rebind */ - rebind = 1; - } - - /* this code does not allow upper layer to share a UDP port for - listening to broadcast or multicast traffic (See SO_REUSE_ADDR and - SO_REUSE_PORT under *BSD). TODO: See where it fits instead, OR - combine with implementation of UDP PCB flags. Leon Woestenberg. */ -#ifdef LWIP_UDP_TODO - /* port matches that of PCB in list? */ - else - if ((ipcb->local_port == port) && - /* IP address matches, or one is IP_ADDR_ANY? */ - (ip_addr_isany(&(ipcb->local_ip)) || - ip_addr_isany(ipaddr) || - ip_addr_cmp(&(ipcb->local_ip), ipaddr))) { - /* other PCB already binds to this local IP and port */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp_bind: local port %"U16_F" already bound by another pcb\n", port)); - return ERR_USE; - } -#endif - } - - ip_addr_set(&pcb->local_ip, ipaddr); - - /* no port specified? */ - if (port == 0) { -#ifndef UDP_LOCAL_PORT_RANGE_START -#define UDP_LOCAL_PORT_RANGE_START 4096 -#define UDP_LOCAL_PORT_RANGE_END 0x7fff -#endif - port = UDP_LOCAL_PORT_RANGE_START; - ipcb = udp_pcbs; - while ((ipcb != NULL) && (port != UDP_LOCAL_PORT_RANGE_END)) { - if (ipcb->local_port == port) { - /* port is already used by another udp_pcb */ - port++; - /* restart scanning all udp pcbs */ - ipcb = udp_pcbs; - } else - /* go on with next udp pcb */ - ipcb = ipcb->next; - } - if (ipcb != NULL) { - /* no more ports available in local range */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_bind: out of free UDP ports\n")); - return ERR_USE; - } - } - pcb->local_port = port; - snmp_insert_udpidx_tree(pcb); - /* pcb not active yet? */ - if (rebind == 0) { - /* place the PCB on the active list if not already there */ - pcb->next = udp_pcbs; - udp_pcbs = pcb; - } - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("udp_bind: bound to %"U16_F".%"U16_F".%"U16_F".%"U16_F", port %"U16_F"\n", - (u16_t)((ntohl(pcb->local_ip.addr) >> 24) & 0xff), - (u16_t)((ntohl(pcb->local_ip.addr) >> 16) & 0xff), - (u16_t)((ntohl(pcb->local_ip.addr) >> 8) & 0xff), - (u16_t)(ntohl(pcb->local_ip.addr) & 0xff), pcb->local_port)); - return ERR_OK; -} -/** - * Connect an UDP PCB. - * - * This will associate the UDP PCB with the remote address. - * - * @param pcb UDP PCB to be connected with remote address ipaddr and port. - * @param ipaddr remote IP address to connect with. - * @param port remote UDP port to connect with. - * - * @return lwIP error code - * - * ipaddr & port are expected to be in the same byte order as in the pcb. - * - * The udp pcb is bound to a random local port if not already bound. - * - * @see udp_disconnect() - */ -err_t -udp_connect(struct udp_pcb *pcb, struct ip_addr *ipaddr, u16_t port) -{ - struct udp_pcb *ipcb; - - if (pcb->local_port == 0) { - err_t err = udp_bind(pcb, &pcb->local_ip, pcb->local_port); - if (err != ERR_OK) - return err; - } - - ip_addr_set(&pcb->remote_ip, ipaddr); - pcb->remote_port = port; - pcb->flags |= UDP_FLAGS_CONNECTED; -/** TODO: this functionality belongs in upper layers */ -#ifdef LWIP_UDP_TODO - /* Nail down local IP for netconn_addr()/getsockname() */ - if (ip_addr_isany(&pcb->local_ip) && !ip_addr_isany(&pcb->remote_ip)) { - struct netif *netif; - - if ((netif = ip_route(&(pcb->remote_ip))) == NULL) { - LWIP_DEBUGF(UDP_DEBUG, ("udp_connect: No route to 0x%lx\n", pcb->remote_ip.addr)); - UDP_STATS_INC(udp.rterr); - return ERR_RTE; - } - /** TODO: this will bind the udp pcb locally, to the interface which - is used to route output packets to the remote address. However, we - might want to accept incoming packets on any interface! */ - pcb->local_ip = netif->ip_addr; - } else if (ip_addr_isany(&pcb->remote_ip)) { - pcb->local_ip.addr = 0; - } -#endif - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("udp_connect: connected to %"U16_F".%"U16_F".%"U16_F".%"U16_F",port %"U16_F"\n", - (u16_t)((ntohl(pcb->remote_ip.addr) >> 24) & 0xff), - (u16_t)((ntohl(pcb->remote_ip.addr) >> 16) & 0xff), - (u16_t)((ntohl(pcb->remote_ip.addr) >> 8) & 0xff), - (u16_t)(ntohl(pcb->remote_ip.addr) & 0xff), pcb->remote_port)); - - /* Insert UDP PCB into the list of active UDP PCBs. */ - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - if (pcb == ipcb) { - /* already on the list, just return */ - return ERR_OK; - } - } - /* PCB not yet on the list, add PCB now */ - pcb->next = udp_pcbs; - udp_pcbs = pcb; - return ERR_OK; -} - -/** - * Disconnect a UDP PCB - * - * @param pcb the udp pcb to disconnect. - */ -void -udp_disconnect(struct udp_pcb *pcb) -{ - /* reset remote address association */ - ip_addr_set(&pcb->remote_ip, IP_ADDR_ANY); - pcb->remote_port = 0; - /* mark PCB as unconnected */ - pcb->flags &= ~UDP_FLAGS_CONNECTED; -} - -/** - * Set a receive callback for a UDP PCB - * - * This callback will be called when receiving a datagram for the pcb. - * - * @param pcb the pcb for wich to set the recv callback - * @param recv function pointer of the callback function - * @param recv_arg additional argument to pass to the callback function - */ -void -udp_recv(struct udp_pcb *pcb, - void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, - struct ip_addr *addr, u16_t port), - void *recv_arg) -{ - /* remember recv() callback and user data */ - pcb->recv = recv; - pcb->recv_arg = recv_arg; -} - -/** - * Remove an UDP PCB. - * - * @param pcb UDP PCB to be removed. The PCB is removed from the list of - * UDP PCB's and the data structure is freed from memory. - * - * @see udp_new() - */ -void -udp_remove(struct udp_pcb *pcb) -{ - struct udp_pcb *pcb2; - - snmp_delete_udpidx_tree(pcb); - /* pcb to be removed is first in list? */ - if (udp_pcbs == pcb) { - /* make list start at 2nd pcb */ - udp_pcbs = udp_pcbs->next; - /* pcb not 1st in list */ - } else - for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { - /* find pcb in udp_pcbs list */ - if (pcb2->next != NULL && pcb2->next == pcb) { - /* remove pcb from list */ - pcb2->next = pcb->next; - } - } - memp_free(MEMP_UDP_PCB, pcb); -} - -/** - * Create a UDP PCB. - * - * @return The UDP PCB which was created. NULL if the PCB data structure - * could not be allocated. - * - * @see udp_remove() - */ -struct udp_pcb * -udp_new(void) -{ - struct udp_pcb *pcb; - pcb = memp_malloc(MEMP_UDP_PCB); - /* could allocate UDP PCB? */ - if (pcb != NULL) { - /* UDP Lite: by initializing to all zeroes, chksum_len is set to 0 - * which means checksum is generated over the whole datagram per default - * (recommended as default by RFC 3828). */ - /* initialize PCB to all zeroes */ - memset(pcb, 0, sizeof(struct udp_pcb)); - pcb->ttl = UDP_TTL; - } - return pcb; -} - -#if UDP_DEBUG -/** - * Print UDP header information for debug purposes. - * - * @param udphdr pointer to the udp header in memory. - */ -void -udp_debug_print(struct udp_hdr *udphdr) -{ - LWIP_DEBUGF(UDP_DEBUG, ("UDP header:\n")); - LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(UDP_DEBUG, ("| %5"U16_F" | %5"U16_F" | (src port, dest port)\n", - ntohs(udphdr->src), ntohs(udphdr->dest))); - LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(UDP_DEBUG, ("| %5"U16_F" | 0x%04"X16_F" | (len, chksum)\n", - ntohs(udphdr->len), ntohs(udphdr->chksum))); - LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n")); -} -#endif /* UDP_DEBUG */ - -#endif /* LWIP_UDP */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h deleted file mode 100644 index d5464b7..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h +++ /dev/null @@ -1,118 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * - * AutoIP Automatic LinkLocal IP Configuration - */ - -/* - * - * Copyright (c) 2007 Dominik Spies - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * Author: Dominik Spies - * - * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform - * with RFC 3927. - * - * - * Please coordinate changes and requests with Dominik Spies - * - */ - -#ifndef __LWIP_AUTOIP_H__ -#define __LWIP_AUTOIP_H__ - -#include "lwip/opt.h" - -#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/netif.h" -#include "lwip/udp.h" -#include "netif/etharp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* AutoIP Timing */ -#define AUTOIP_TMR_INTERVAL 100 -#define AUTOIP_TICKS_PER_SECOND (1000 / AUTOIP_TMR_INTERVAL) - -/* RFC 3927 Constants */ -#define PROBE_WAIT 1 /* second (initial random delay) */ -#define PROBE_MIN 1 /* second (minimum delay till repeated probe) */ -#define PROBE_MAX 2 /* seconds (maximum delay till repeated probe) */ -#define PROBE_NUM 3 /* (number of probe packets) */ -#define ANNOUNCE_NUM 2 /* (number of announcement packets) */ -#define ANNOUNCE_INTERVAL 2 /* seconds (time between announcement packets) */ -#define ANNOUNCE_WAIT 2 /* seconds (delay before announcing) */ -#define MAX_CONFLICTS 10 /* (max conflicts before rate limiting) */ -#define RATE_LIMIT_INTERVAL 60 /* seconds (delay between successive attempts) */ -#define DEFEND_INTERVAL 10 /* seconds (min. wait between defensive ARPs) */ - -/* AutoIP client states */ -#define AUTOIP_STATE_OFF 0 -#define AUTOIP_STATE_PROBING 1 -#define AUTOIP_STATE_ANNOUNCING 2 -#define AUTOIP_STATE_BOUND 3 - -struct autoip -{ - struct ip_addr llipaddr; /* the currently selected, probed, announced or used LL IP-Address */ - u8_t state; /* current AutoIP state machine state */ - u8_t sent_num; /* sent number of probes or announces, dependent on state */ - u16_t ttw; /* ticks to wait, tick is AUTOIP_TMR_INTERVAL long */ - u8_t lastconflict; /* ticks until a conflict can be solved by defending */ - u8_t tried_llipaddr; /* total number of probed/used Link Local IP-Addresses */ -}; - - -/** Init srand, has to be called before entering mainloop */ -void autoip_init(void); - -/** Start AutoIP client */ -err_t autoip_start(struct netif *netif); - -/** Stop AutoIP client */ -err_t autoip_stop(struct netif *netif); - -/** Handles every incoming ARP Packet, called by etharp_arp_input */ -void autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr); - -/** Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds */ -void autoip_tmr(void); - -/** Handle a possible change in the network configuration */ -void autoip_network_changed(struct netif *netif); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_AUTOIP */ - -#endif /* __LWIP_AUTOIP_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h deleted file mode 100644 index 3f917ba..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h +++ /dev/null @@ -1,113 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_ICMP_H__ -#define __LWIP_ICMP_H__ - -#include "lwip/opt.h" -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ICMP_ER 0 /* echo reply */ -#define ICMP_DUR 3 /* destination unreachable */ -#define ICMP_SQ 4 /* source quench */ -#define ICMP_RD 5 /* redirect */ -#define ICMP_ECHO 8 /* echo */ -#define ICMP_TE 11 /* time exceeded */ -#define ICMP_PP 12 /* parameter problem */ -#define ICMP_TS 13 /* timestamp */ -#define ICMP_TSR 14 /* timestamp reply */ -#define ICMP_IRQ 15 /* information request */ -#define ICMP_IR 16 /* information reply */ - -enum icmp_dur_type { - ICMP_DUR_NET = 0, /* net unreachable */ - ICMP_DUR_HOST = 1, /* host unreachable */ - ICMP_DUR_PROTO = 2, /* protocol unreachable */ - ICMP_DUR_PORT = 3, /* port unreachable */ - ICMP_DUR_FRAG = 4, /* fragmentation needed and DF set */ - ICMP_DUR_SR = 5 /* source route failed */ -}; - -enum icmp_te_type { - ICMP_TE_TTL = 0, /* time to live exceeded in transit */ - ICMP_TE_FRAG = 1 /* fragment reassembly time exceeded */ -}; - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -/** This is the standard ICMP header only that the u32_t data - * is splitted to two u16_t like ICMP echo needs it. - * This header is also used for other ICMP types that do not - * use the data part. - */ -PACK_STRUCT_BEGIN -struct icmp_echo_hdr { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u16_t id); - PACK_STRUCT_FIELD(u16_t seqno); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define ICMPH_TYPE(hdr) ((hdr)->type) -#define ICMPH_CODE(hdr) ((hdr)->code) - -/** Combines type and code to an u16_t */ -#define ICMPH_TYPE_SET(hdr, t) ((hdr)->type = (t)) -#define ICMPH_CODE_SET(hdr, c) ((hdr)->code = (c)) - - -#if LWIP_ICMP /* don't build if not configured for use in lwipopts.h */ - -void icmp_input(struct pbuf *p, struct netif *inp); -void icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t); -void icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t); - -#endif /* LWIP_ICMP */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_ICMP_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h deleted file mode 100644 index da67e75..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h +++ /dev/null @@ -1,164 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2002 CITEL Technologies Ltd. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of CITEL Technologies Ltd 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 CITEL TECHNOLOGIES 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 CITEL TECHNOLOGIES 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. - * - * This file is a contribution to the lwIP TCP/IP stack. - * The Swedish Institute of Computer Science and Adam Dunkels - * are specifically granted permission to redistribute this - * source code. -*/ - -#ifndef __LWIP_IGMP_H__ -#define __LWIP_IGMP_H__ - -#include "lwip/opt.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/pbuf.h" - -#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * IGMP constants - */ -#define IP_PROTO_IGMP 2 -#define IGMP_TTL 1 -#define IGMP_MINLEN 8 -#define ROUTER_ALERT 0x9404 -#define ROUTER_ALERTLEN 4 - -/* - * IGMP message types, including version number. - */ -#define IGMP_MEMB_QUERY 0x11 /* Membership query */ -#define IGMP_V1_MEMB_REPORT 0x12 /* Ver. 1 membership report */ -#define IGMP_V2_MEMB_REPORT 0x16 /* Ver. 2 membership report */ -#define IGMP_LEAVE_GROUP 0x17 /* Leave-group message */ - -/* IGMP timer */ -#define IGMP_TMR_INTERVAL 100 /* Milliseconds */ -#define IGMP_V1_DELAYING_MEMBER_TMR (1000/IGMP_TMR_INTERVAL) -#define IGMP_JOIN_DELAYING_MEMBER_TMR (500 /IGMP_TMR_INTERVAL) - -/* MAC Filter Actions */ -#define IGMP_DEL_MAC_FILTER 0 -#define IGMP_ADD_MAC_FILTER 1 - -/* Group membership states */ -#define IGMP_GROUP_NON_MEMBER 0 -#define IGMP_GROUP_DELAYING_MEMBER 1 -#define IGMP_GROUP_IDLE_MEMBER 2 - -/* - * IGMP packet format. - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct igmp_msg { - PACK_STRUCT_FIELD(u8_t igmp_msgtype); - PACK_STRUCT_FIELD(u8_t igmp_maxresp); - PACK_STRUCT_FIELD(u16_t igmp_checksum); - PACK_STRUCT_FIELD(struct ip_addr igmp_group_address); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/* - * now a group structure - there is - * a list of groups for each interface - * these should really be linked from the interface, but - * if we keep them separate we will not affect the lwip original code - * too much - * - * There will be a group for the all systems group address but this - * will not run the state machine as it is used to kick off reports - * from all the other groups - */ - -struct igmp_group { - struct igmp_group *next; - struct netif *interface; - struct ip_addr group_address; - u8_t last_reporter_flag; /* signifies we were the last person to report */ - u8_t group_state; - u16_t timer; - u8_t use; /* counter of simultaneous uses */ -}; - - -/* Prototypes */ -void igmp_init(void); - -err_t igmp_start( struct netif *netif); - -err_t igmp_stop( struct netif *netif); - -void igmp_report_groups( struct netif *netif); - -struct igmp_group *igmp_lookfor_group( struct netif *ifp, struct ip_addr *addr); - -struct igmp_group *igmp_lookup_group( struct netif *ifp, struct ip_addr *addr); - -err_t igmp_remove_group( struct igmp_group *group); - -void igmp_input( struct pbuf *p, struct netif *inp, struct ip_addr *dest); - -err_t igmp_joingroup( struct ip_addr *ifaddr, struct ip_addr *groupaddr); - -err_t igmp_leavegroup( struct ip_addr *ifaddr, struct ip_addr *groupaddr); - -void igmp_tmr(void); - -void igmp_timeout( struct igmp_group *group); - -void igmp_start_timer( struct igmp_group *group, u8_t max_time); - -void igmp_stop_timer( struct igmp_group *group); - -void igmp_delaying_member( struct igmp_group *group, u8_t maxresp); - -err_t igmp_ip_output_if( struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, u8_t ttl, u8_t proto, struct netif *netif); - -void igmp_send( struct igmp_group *group, u8_t type); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_IGMP */ - -#endif /* __LWIP_IGMP_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h deleted file mode 100644 index 903afdf..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h +++ /dev/null @@ -1,105 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_INET_H__ -#define __LWIP_INET_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* For compatibility with BSD code */ -struct in_addr { - u32_t s_addr; -}; - -#define INADDR_NONE ((u32_t)0xffffffffUL) /* 255.255.255.255 */ -#define INADDR_LOOPBACK ((u32_t)0x7f000001UL) /* 127.0.0.1 */ -#define INADDR_ANY ((u32_t)0x00000000UL) /* 0.0.0.0 */ -#define INADDR_BROADCAST ((u32_t)0xffffffffUL) /* 255.255.255.255 */ - -u32_t inet_addr(const char *cp); -int inet_aton(const char *cp, struct in_addr *addr); -char *inet_ntoa(struct in_addr addr); /* returns ptr to static buffer; not reentrant! */ - -#ifdef htons -#undef htons -#endif /* htons */ -#ifdef htonl -#undef htonl -#endif /* htonl */ -#ifdef ntohs -#undef ntohs -#endif /* ntohs */ -#ifdef ntohl -#undef ntohl -#endif /* ntohl */ - -#ifndef LWIP_PLATFORM_BYTESWAP -#define LWIP_PLATFORM_BYTESWAP 0 -#endif - -#if BYTE_ORDER == BIG_ENDIAN -#define htons(x) (x) -#define ntohs(x) (x) -#define htonl(x) (x) -#define ntohl(x) (x) -#else /* BYTE_ORDER != BIG_ENDIAN */ -#ifdef LWIP_PREFIX_BYTEORDER_FUNCS -/* workaround for naming collisions on some platforms */ -#define htons lwip_htons -#define ntohs lwip_ntohs -#define htonl lwip_htonl -#define ntohl lwip_ntohl -#endif /* LWIP_PREFIX_BYTEORDER_FUNCS */ -#if LWIP_PLATFORM_BYTESWAP -#define htons(x) LWIP_PLATFORM_HTONS(x) -#define ntohs(x) LWIP_PLATFORM_HTONS(x) -#define htonl(x) LWIP_PLATFORM_HTONL(x) -#define ntohl(x) LWIP_PLATFORM_HTONL(x) -#else /* LWIP_PLATFORM_BYTESWAP */ -u16_t htons(u16_t x); -u16_t ntohs(u16_t x); -u32_t htonl(u32_t x); -u32_t ntohl(u32_t x); -#endif /* LWIP_PLATFORM_BYTESWAP */ - -#endif /* BYTE_ORDER == BIG_ENDIAN */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_INET_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h deleted file mode 100644 index 6f5b1b6..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h +++ /dev/null @@ -1,62 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_INET_CHKSUM_H__ -#define __LWIP_INET_CHKSUM_H__ - -#include "lwip/opt.h" - -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -u16_t inet_chksum(void *dataptr, u16_t len); -u16_t inet_chksum_pbuf(struct pbuf *p); -u16_t inet_chksum_pseudo(struct pbuf *p, - struct ip_addr *src, struct ip_addr *dest, - u8_t proto, u16_t proto_len); -#if LWIP_UDPLITE -u16_t inet_chksum_pseudo_partial(struct pbuf *p, - struct ip_addr *src, struct ip_addr *dest, - u8_t proto, u16_t proto_len, u16_t chksum_len); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_INET_H__ */ - diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h deleted file mode 100644 index 6b2cdee..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h +++ /dev/null @@ -1,200 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_IP_H__ -#define __LWIP_IP_H__ - -#include "lwip/opt.h" - -#include "lwip/def.h" -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/err.h" -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Currently, the function ip_output_if_opt() is only used with IGMP */ -#define IP_OPTIONS_SEND LWIP_IGMP - -#define IP_HLEN 20 - -#define IP_PROTO_ICMP 1 -#define IP_PROTO_UDP 17 -#define IP_PROTO_UDPLITE 136 -#define IP_PROTO_TCP 6 - -/* This is passed as the destination address to ip_output_if (not - to ip_output), meaning that an IP header already is constructed - in the pbuf. This is used when TCP retransmits. */ -#ifdef IP_HDRINCL -#undef IP_HDRINCL -#endif /* IP_HDRINCL */ -#define IP_HDRINCL NULL - -#if LWIP_NETIF_HWADDRHINT -#define IP_PCB_ADDRHINT ;u8_t addr_hint -#else -#define IP_PCB_ADDRHINT -#endif /* LWIP_NETIF_HWADDRHINT */ - -/* This is the common part of all PCB types. It needs to be at the - beginning of a PCB type definition. It is located here so that - changes to this common part are made in one location instead of - having to change all PCB structs. */ -#define IP_PCB \ - /* ip addresses in network byte order */ \ - struct ip_addr local_ip; \ - struct ip_addr remote_ip; \ - /* Socket options */ \ - u16_t so_options; \ - /* Type Of Service */ \ - u8_t tos; \ - /* Time To Live */ \ - u8_t ttl \ - /* link layer address resolution hint */ \ - IP_PCB_ADDRHINT - -struct ip_pcb { -/* Common members of all PCB types */ - IP_PCB; -}; - -/* - * Option flags per-socket. These are the same like SO_XXX. - */ -#define SOF_DEBUG (u16_t)0x0001U /* turn on debugging info recording */ -#define SOF_ACCEPTCONN (u16_t)0x0002U /* socket has had listen() */ -#define SOF_REUSEADDR (u16_t)0x0004U /* allow local address reuse */ -#define SOF_KEEPALIVE (u16_t)0x0008U /* keep connections alive */ -#define SOF_DONTROUTE (u16_t)0x0010U /* just use interface addresses */ -#define SOF_BROADCAST (u16_t)0x0020U /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */ -#define SOF_USELOOPBACK (u16_t)0x0040U /* bypass hardware when possible */ -#define SOF_LINGER (u16_t)0x0080U /* linger on close if data present */ -#define SOF_OOBINLINE (u16_t)0x0100U /* leave received OOB data in line */ -#define SOF_REUSEPORT (u16_t)0x0200U /* allow local address & port reuse */ - - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_hdr { - /* version / header length / type of service */ - PACK_STRUCT_FIELD(u16_t _v_hl_tos); - /* total length */ - PACK_STRUCT_FIELD(u16_t _len); - /* identification */ - PACK_STRUCT_FIELD(u16_t _id); - /* fragment offset field */ - PACK_STRUCT_FIELD(u16_t _offset); -#define IP_RF 0x8000 /* reserved fragment flag */ -#define IP_DF 0x4000 /* dont fragment flag */ -#define IP_MF 0x2000 /* more fragments flag */ -#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ - /* time to live / protocol*/ - PACK_STRUCT_FIELD(u16_t _ttl_proto); - /* checksum */ - PACK_STRUCT_FIELD(u16_t _chksum); - /* source and destination IP addresses */ - PACK_STRUCT_FIELD(struct ip_addr src); - PACK_STRUCT_FIELD(struct ip_addr dest); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define IPH_V(hdr) (ntohs((hdr)->_v_hl_tos) >> 12) -#define IPH_HL(hdr) ((ntohs((hdr)->_v_hl_tos) >> 8) & 0x0f) -#define IPH_TOS(hdr) (ntohs((hdr)->_v_hl_tos) & 0xff) -#define IPH_LEN(hdr) ((hdr)->_len) -#define IPH_ID(hdr) ((hdr)->_id) -#define IPH_OFFSET(hdr) ((hdr)->_offset) -#define IPH_TTL(hdr) (ntohs((hdr)->_ttl_proto) >> 8) -#define IPH_PROTO(hdr) (ntohs((hdr)->_ttl_proto) & 0xff) -#define IPH_CHKSUM(hdr) ((hdr)->_chksum) - -#define IPH_VHLTOS_SET(hdr, v, hl, tos) (hdr)->_v_hl_tos = (htons(((v) << 12) | ((hl) << 8) | (tos))) -#define IPH_LEN_SET(hdr, len) (hdr)->_len = (len) -#define IPH_ID_SET(hdr, id) (hdr)->_id = (id) -#define IPH_OFFSET_SET(hdr, off) (hdr)->_offset = (off) -#define IPH_TTL_SET(hdr, ttl) (hdr)->_ttl_proto = (htons(IPH_PROTO(hdr) | ((u16_t)(ttl) << 8))) -#define IPH_PROTO_SET(hdr, proto) (hdr)->_ttl_proto = (htons((proto) | (IPH_TTL(hdr) << 8))) -#define IPH_CHKSUM_SET(hdr, chksum) (hdr)->_chksum = (chksum) - -/** The interface that provided the packet for the current callback invocation. */ -extern struct netif *current_netif; -/** Header of the input packet currently being processed. */ -extern const struct ip_hdr *current_header; - -#define ip_init() /* Compatibility define, not init needed. */ -struct netif *ip_route(struct ip_addr *dest); -err_t ip_input(struct pbuf *p, struct netif *inp); -err_t ip_output(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto); -err_t ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto, - struct netif *netif); -#if LWIP_NETIF_HWADDRHINT -err_t ip_output_hinted(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto, u8_t *addr_hint); -#endif /* LWIP_NETIF_HWADDRHINT */ -#if IP_OPTIONS_SEND -err_t ip_output_if_opt(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options, - u16_t optlen); -#endif /* IP_OPTIONS_SEND */ -/** Get the interface that received the current packet. - * This function must only be called from a receive callback (udp_recv, - * raw_recv, tcp_accept). It will return NULL otherwise. */ -#define ip_current_netif() (current_netif) -/** Get the IP header of the current packet. - * This function must only be called from a receive callback (udp_recv, - * raw_recv, tcp_accept). It will return NULL otherwise. */ -#define ip_current_header() (current_header) -#if IP_DEBUG -void ip_debug_print(struct pbuf *p); -#else -#define ip_debug_print(p) -#endif /* IP_DEBUG */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_H__ */ - - diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h deleted file mode 100644 index 5fbc44d..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h +++ /dev/null @@ -1,175 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_IP_ADDR_H__ -#define __LWIP_IP_ADDR_H__ - -#include "lwip/opt.h" - -#include "lwip/inet.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_addr { - PACK_STRUCT_FIELD(u32_t addr); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/* - * struct ipaddr2 is used in the definition of the ARP packet format in - * order to support compilers that don't have structure packing. - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_addr2 { - PACK_STRUCT_FIELD(u16_t addrw[2]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -struct netif; - -extern const struct ip_addr ip_addr_any; -extern const struct ip_addr ip_addr_broadcast; - -/** IP_ADDR_ can be used as a fixed IP address - * for the wildcard and the broadcast address - */ -#define IP_ADDR_ANY ((struct ip_addr *)&ip_addr_any) -#define IP_ADDR_BROADCAST ((struct ip_addr *)&ip_addr_broadcast) - -/* Definitions of the bits in an Internet address integer. - - On subnets, host and network parts are found according to - the subnet mask, not these masks. */ - -#define IN_CLASSA(a) ((((u32_t)(a)) & 0x80000000UL) == 0) -#define IN_CLASSA_NET 0xff000000 -#define IN_CLASSA_NSHIFT 24 -#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET) -#define IN_CLASSA_MAX 128 - -#define IN_CLASSB(a) ((((u32_t)(a)) & 0xc0000000UL) == 0x80000000UL) -#define IN_CLASSB_NET 0xffff0000 -#define IN_CLASSB_NSHIFT 16 -#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET) -#define IN_CLASSB_MAX 65536 - -#define IN_CLASSC(a) ((((u32_t)(a)) & 0xe0000000UL) == 0xc0000000UL) -#define IN_CLASSC_NET 0xffffff00 -#define IN_CLASSC_NSHIFT 8 -#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET) - -#define IN_CLASSD(a) (((u32_t)(a) & 0xf0000000UL) == 0xe0000000UL) -#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */ -#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */ -#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */ -#define IN_MULTICAST(a) IN_CLASSD(a) - -#define IN_EXPERIMENTAL(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL) -#define IN_BADCLASS(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL) - -#define IN_LOOPBACKNET 127 /* official! */ - -#define IP4_ADDR(ipaddr, a,b,c,d) \ - (ipaddr)->addr = htonl(((u32_t)((a) & 0xff) << 24) | \ - ((u32_t)((b) & 0xff) << 16) | \ - ((u32_t)((c) & 0xff) << 8) | \ - (u32_t)((d) & 0xff)) - -#define ip_addr_set(dest, src) (dest)->addr = \ - ((src) == NULL? 0:\ - (src)->addr) -/** - * Determine if two address are on the same network. - * - * @arg addr1 IP address 1 - * @arg addr2 IP address 2 - * @arg mask network identifier mask - * @return !0 if the network identifiers of both address match - */ -#define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \ - (mask)->addr) == \ - ((addr2)->addr & \ - (mask)->addr)) -#define ip_addr_cmp(addr1, addr2) ((addr1)->addr == (addr2)->addr) - -#define ip_addr_isany(addr1) ((addr1) == NULL || (addr1)->addr == 0) - -u8_t ip_addr_isbroadcast(struct ip_addr *, struct netif *); - -#define ip_addr_ismulticast(addr1) (((addr1)->addr & ntohl(0xf0000000UL)) == ntohl(0xe0000000UL)) - -#define ip_addr_islinklocal(addr1) (((addr1)->addr & ntohl(0xffff0000UL)) == ntohl(0xa9fe0000UL)) - -#define ip_addr_debug_print(debug, ipaddr) \ - LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F, \ - ipaddr != NULL ? \ - (u16_t)(ntohl((ipaddr)->addr) >> 24) & 0xff : 0, \ - ipaddr != NULL ? \ - (u16_t)(ntohl((ipaddr)->addr) >> 16) & 0xff : 0, \ - ipaddr != NULL ? \ - (u16_t)(ntohl((ipaddr)->addr) >> 8) & 0xff : 0, \ - ipaddr != NULL ? \ - (u16_t)ntohl((ipaddr)->addr) & 0xff : 0)) - -/* These are cast to u16_t, with the intent that they are often arguments - * to printf using the U16_F format from cc.h. */ -#define ip4_addr1(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 24) & 0xff) -#define ip4_addr2(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 16) & 0xff) -#define ip4_addr3(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 8) & 0xff) -#define ip4_addr4(ipaddr) ((u16_t)(ntohl((ipaddr)->addr)) & 0xff) - -/** - * Same as inet_ntoa() but takes a struct ip_addr* - */ -#define ip_ntoa(addr) ((addr != NULL) ? inet_ntoa(*((struct in_addr*)(addr))) : "NULL") - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_ADDR_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h deleted file mode 100644 index adc6e91..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h +++ /dev/null @@ -1,78 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Jani Monoses - * - */ - -#ifndef __LWIP_IP_FRAG_H__ -#define __LWIP_IP_FRAG_H__ - -#include "lwip/opt.h" -#include "lwip/err.h" -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/ip_addr.h" -#include "lwip/ip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if IP_REASSEMBLY -/* The IP reassembly timer interval in milliseconds. */ -#define IP_TMR_INTERVAL 1000 - -/* IP reassembly helper struct. - * This is exported because memp needs to know the size. - */ -struct ip_reassdata { - struct ip_reassdata *next; - struct pbuf *p; - struct ip_hdr iphdr; - u16_t datagram_len; - u8_t flags; - u8_t timer; -}; - -void ip_reass_init(void); -void ip_reass_tmr(void); -struct pbuf * ip_reass(struct pbuf *p); -#endif /* IP_REASSEMBLY */ - -#if IP_FRAG -err_t ip_frag(struct pbuf *p, struct netif *netif, struct ip_addr *dest); -#endif /* IP_FRAG */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_FRAG_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api.h deleted file mode 100644 index 7d2c9e6..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api.h +++ /dev/null @@ -1,224 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_API_H__ -#define __LWIP_API_H__ - -#include "lwip/opt.h" - -#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */ - -#include /* for size_t */ - -#include "lwip/netbuf.h" -#include "lwip/sys.h" -#include "lwip/ip_addr.h" -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Throughout this file, IP addresses and port numbers are expected to be in - * the same byte order as in the corresponding pcb. - */ - -/* Flags for netconn_write */ -#define NETCONN_NOFLAG 0x00 -#define NETCONN_NOCOPY 0x00 /* Only for source code compatibility */ -#define NETCONN_COPY 0x01 -#define NETCONN_MORE 0x02 - -/* Helpers to process several netconn_types by the same code */ -#define NETCONNTYPE_GROUP(t) (t&0xF0) -#define NETCONNTYPE_DATAGRAM(t) (t&0xE0) - -enum netconn_type { - NETCONN_INVALID = 0, - /* NETCONN_TCP Group */ - NETCONN_TCP = 0x10, - /* NETCONN_UDP Group */ - NETCONN_UDP = 0x20, - NETCONN_UDPLITE = 0x21, - NETCONN_UDPNOCHKSUM= 0x22, - /* NETCONN_RAW Group */ - NETCONN_RAW = 0x40 -}; - -enum netconn_state { - NETCONN_NONE, - NETCONN_WRITE, - NETCONN_LISTEN, - NETCONN_CONNECT, - NETCONN_CLOSE -}; - -enum netconn_evt { - NETCONN_EVT_RCVPLUS, - NETCONN_EVT_RCVMINUS, - NETCONN_EVT_SENDPLUS, - NETCONN_EVT_SENDMINUS -}; - -#if LWIP_IGMP -enum netconn_igmp { - NETCONN_JOIN, - NETCONN_LEAVE -}; -#endif /* LWIP_IGMP */ - -/* forward-declare some structs to avoid to include their headers */ -struct ip_pcb; -struct tcp_pcb; -struct udp_pcb; -struct raw_pcb; -struct netconn; - -/** A callback prototype to inform about events for a netconn */ -typedef void (* netconn_callback)(struct netconn *, enum netconn_evt, u16_t len); - -/** A netconn descriptor */ -struct netconn { - /** type of the netconn (TCP, UDP or RAW) */ - enum netconn_type type; - /** current state of the netconn */ - enum netconn_state state; - /** the lwIP internal protocol control block */ - union { - struct ip_pcb *ip; - struct tcp_pcb *tcp; - struct udp_pcb *udp; - struct raw_pcb *raw; - } pcb; - /** the last error this netconn had */ - err_t err; - /** sem that is used to synchroneously execute functions in the core context */ - sys_sem_t op_completed; - /** mbox where received packets are stored until they are fetched - by the netconn application thread (can grow quite big) */ - sys_mbox_t recvmbox; - /** mbox where new connections are stored until processed - by the application thread */ - sys_mbox_t acceptmbox; - /** only used for socket layer */ - int socket; -#if LWIP_SO_RCVTIMEO - /** timeout to wait for new data to be received - (or connections to arrive for listening netconns) */ - int recv_timeout; -#endif /* LWIP_SO_RCVTIMEO */ -#if LWIP_SO_RCVBUF - /** maximum amount of bytes queued in recvmbox */ - int recv_bufsize; -#endif /* LWIP_SO_RCVBUF */ - s16_t recv_avail; -#if LWIP_TCP - /** TCP: when data passed to netconn_write doesn't fit into the send buffer, - this temporarily stores the message. */ - struct api_msg_msg *write_msg; - /** TCP: when data passed to netconn_write doesn't fit into the send buffer, - this temporarily stores how much is already sent. */ - size_t write_offset; -#if LWIP_TCPIP_CORE_LOCKING - /** TCP: when data passed to netconn_write doesn't fit into the send buffer, - this temporarily stores whether to wake up the original application task - if data couldn't be sent in the first try. */ - u8_t write_delayed; -#endif /* LWIP_TCPIP_CORE_LOCKING */ -#endif /* LWIP_TCP */ - /** A callback function that is informed about events for this netconn */ - netconn_callback callback; -}; - -/* Register an Network connection event */ -#define API_EVENT(c,e,l) if (c->callback) { \ - (*c->callback)(c, e, l); \ - } - -/* Network connection functions: */ -#define netconn_new(t) netconn_new_with_proto_and_callback(t, 0, NULL) -#define netconn_new_with_callback(t, c) netconn_new_with_proto_and_callback(t, 0, c) -struct -netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto, - netconn_callback callback); -err_t netconn_delete (struct netconn *conn); -/** Get the type of a netconn (as enum netconn_type). */ -#define netconn_type(conn) (conn->type) - -err_t netconn_getaddr (struct netconn *conn, - struct ip_addr *addr, - u16_t *port, - u8_t local); -#define netconn_peer(c,i,p) netconn_getaddr(c,i,p,0) -#define netconn_addr(c,i,p) netconn_getaddr(c,i,p,1) - -err_t netconn_bind (struct netconn *conn, - struct ip_addr *addr, - u16_t port); -err_t netconn_connect (struct netconn *conn, - struct ip_addr *addr, - u16_t port); -err_t netconn_disconnect (struct netconn *conn); -err_t netconn_listen_with_backlog(struct netconn *conn, u8_t backlog); -#define netconn_listen(conn) netconn_listen_with_backlog(conn, TCP_DEFAULT_LISTEN_BACKLOG) -struct netconn * netconn_accept (struct netconn *conn); -struct netbuf * netconn_recv (struct netconn *conn); -err_t netconn_sendto (struct netconn *conn, - struct netbuf *buf, struct ip_addr *addr, u16_t port); -err_t netconn_send (struct netconn *conn, - struct netbuf *buf); -err_t netconn_write (struct netconn *conn, - const void *dataptr, size_t size, - u8_t apiflags); -err_t netconn_close (struct netconn *conn); - -#if LWIP_IGMP -err_t netconn_join_leave_group (struct netconn *conn, - struct ip_addr *multiaddr, - struct ip_addr *interface, - enum netconn_igmp join_or_leave); -#endif /* LWIP_IGMP */ -#if LWIP_DNS -err_t netconn_gethostbyname(const char *name, struct ip_addr *addr); -#endif /* LWIP_DNS */ - -#define netconn_err(conn) ((conn)->err) -#define netconn_recv_bufsize(conn) ((conn)->recv_bufsize) - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_NETCONN */ - -#endif /* __LWIP_API_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api_msg.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api_msg.h deleted file mode 100644 index 7718d90..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api_msg.h +++ /dev/null @@ -1,164 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_API_MSG_H__ -#define __LWIP_API_MSG_H__ - -#include "lwip/opt.h" - -#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */ - -#include /* for size_t */ - -#include "lwip/ip_addr.h" -#include "lwip/err.h" -#include "lwip/sys.h" -#include "lwip/igmp.h" -#include "lwip/api.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* IP addresses and port numbers are expected to be in - * the same byte order as in the corresponding pcb. - */ -/** This struct includes everything that is necessary to execute a function - for a netconn in another thread context (mainly used to process netconns - in the tcpip_thread context to be thread safe). */ -struct api_msg_msg { - /** The netconn which to process - always needed: it includes the semaphore - which is used to block the application thread until the function finished. */ - struct netconn *conn; - /** Depending on the executed function, one of these union members is used */ - union { - /** used for do_send */ - struct netbuf *b; - /** used for do_newconn */ - struct { - u8_t proto; - } n; - /** used for do_bind and do_connect */ - struct { - struct ip_addr *ipaddr; - u16_t port; - } bc; - /** used for do_getaddr */ - struct { - struct ip_addr *ipaddr; - u16_t *port; - u8_t local; - } ad; - /** used for do_write */ - struct { - const void *dataptr; - size_t len; - u8_t apiflags; - } w; - /** used for do_recv */ - struct { - u16_t len; - } r; -#if LWIP_IGMP - /** used for do_join_leave_group */ - struct { - struct ip_addr *multiaddr; - struct ip_addr *interface; - enum netconn_igmp join_or_leave; - } jl; -#endif /* LWIP_IGMP */ -#if TCP_LISTEN_BACKLOG - struct { - u8_t backlog; - } lb; -#endif /* TCP_LISTEN_BACKLOG */ - } msg; -}; - -/** This struct contains a function to execute in another thread context and - a struct api_msg_msg that serves as an argument for this function. - This is passed to tcpip_apimsg to execute functions in tcpip_thread context. */ -struct api_msg { - /** function to execute in tcpip_thread context */ - void (* function)(struct api_msg_msg *msg); - /** arguments for this function */ - struct api_msg_msg msg; -}; - -#if LWIP_DNS -/** As do_gethostbyname requires more arguments but doesn't require a netconn, - it has its own struct (to avoid struct api_msg getting bigger than necessary). - do_gethostbyname must be called using tcpip_callback instead of tcpip_apimsg - (see netconn_gethostbyname). */ -struct dns_api_msg { - /** Hostname to query or dotted IP address string */ - const char *name; - /** Rhe resolved address is stored here */ - struct ip_addr *addr; - /** This semaphore is posted when the name is resolved, the application thread - should wait on it. */ - sys_sem_t sem; - /** Errors are given back here */ - err_t *err; -}; -#endif /* LWIP_DNS */ - -void do_newconn ( struct api_msg_msg *msg); -void do_delconn ( struct api_msg_msg *msg); -void do_bind ( struct api_msg_msg *msg); -void do_connect ( struct api_msg_msg *msg); -void do_disconnect ( struct api_msg_msg *msg); -void do_listen ( struct api_msg_msg *msg); -void do_send ( struct api_msg_msg *msg); -void do_recv ( struct api_msg_msg *msg); -void do_write ( struct api_msg_msg *msg); -void do_getaddr ( struct api_msg_msg *msg); -void do_close ( struct api_msg_msg *msg); -#if LWIP_IGMP -void do_join_leave_group( struct api_msg_msg *msg); -#endif /* LWIP_IGMP */ - -#if LWIP_DNS -void do_gethostbyname(void *arg); -#endif /* LWIP_DNS */ - -struct netconn* netconn_alloc(enum netconn_type t, netconn_callback callback); -void netconn_free(struct netconn *conn); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_NETCONN */ - -#endif /* __LWIP_API_MSG_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/arch.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/arch.h deleted file mode 100644 index 5ab190a..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/arch.h +++ /dev/null @@ -1,235 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_ARCH_H__ -#define __LWIP_ARCH_H__ - -#ifndef LITTLE_ENDIAN -#define LITTLE_ENDIAN 1234 -#endif - -#ifndef BIG_ENDIAN -#define BIG_ENDIAN 4321 -#endif - -#include "arch/cc.h" - -/** Temporary: define format string for size_t if not defined in cc.h */ -#ifndef SZT_F -#define SZT_F U32_F -#endif /* SZT_F */ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef PACK_STRUCT_BEGIN -#define PACK_STRUCT_BEGIN -#endif /* PACK_STRUCT_BEGIN */ - -#ifndef PACK_STRUCT_END -#define PACK_STRUCT_END -#endif /* PACK_STRUCT_END */ - -#ifndef PACK_STRUCT_FIELD -#define PACK_STRUCT_FIELD(x) x -#endif /* PACK_STRUCT_FIELD */ - - -#ifndef LWIP_UNUSED_ARG -#define LWIP_UNUSED_ARG(x) (void)x -#endif /* LWIP_UNUSED_ARG */ - - -#ifdef LWIP_PROVIDE_ERRNO - -#define EPERM 1 /* Operation not permitted */ -#define ENOENT 2 /* No such file or directory */ -#define ESRCH 3 /* No such process */ -#define EINTR 4 /* Interrupted system call */ -#define EIO 5 /* I/O error */ -#define ENXIO 6 /* No such device or address */ -#define E2BIG 7 /* Arg list too long */ -#define ENOEXEC 8 /* Exec format error */ -#define EBADF 9 /* Bad file number */ -#define ECHILD 10 /* No child processes */ -#define EAGAIN 11 /* Try again */ -#define ENOMEM 12 /* Out of memory */ -#define EACCES 13 /* Permission denied */ -#define EFAULT 14 /* Bad address */ -#define ENOTBLK 15 /* Block device required */ -#define EBUSY 16 /* Device or resource busy */ -#define EEXIST 17 /* File exists */ -#define EXDEV 18 /* Cross-device link */ -#define ENODEV 19 /* No such device */ -#define ENOTDIR 20 /* Not a directory */ -#define EISDIR 21 /* Is a directory */ -#define EINVAL 22 /* Invalid argument */ -#define ENFILE 23 /* File table overflow */ -#define EMFILE 24 /* Too many open files */ -#define ENOTTY 25 /* Not a typewriter */ -#define ETXTBSY 26 /* Text file busy */ -#define EFBIG 27 /* File too large */ -#define ENOSPC 28 /* No space left on device */ -#define ESPIPE 29 /* Illegal seek */ -#define EROFS 30 /* Read-only file system */ -#define EMLINK 31 /* Too many links */ -#define EPIPE 32 /* Broken pipe */ -#define EDOM 33 /* Math argument out of domain of func */ -#define ERANGE 34 /* Math result not representable */ -#define EDEADLK 35 /* Resource deadlock would occur */ -#define ENAMETOOLONG 36 /* File name too long */ -#define ENOLCK 37 /* No record locks available */ -#define ENOSYS 38 /* Function not implemented */ -#define ENOTEMPTY 39 /* Directory not empty */ -#define ELOOP 40 /* Too many symbolic links encountered */ -#define EWOULDBLOCK EAGAIN /* Operation would block */ -#define ENOMSG 42 /* No message of desired type */ -#define EIDRM 43 /* Identifier removed */ -#define ECHRNG 44 /* Channel number out of range */ -#define EL2NSYNC 45 /* Level 2 not synchronized */ -#define EL3HLT 46 /* Level 3 halted */ -#define EL3RST 47 /* Level 3 reset */ -#define ELNRNG 48 /* Link number out of range */ -#define EUNATCH 49 /* Protocol driver not attached */ -#define ENOCSI 50 /* No CSI structure available */ -#define EL2HLT 51 /* Level 2 halted */ -#define EBADE 52 /* Invalid exchange */ -#define EBADR 53 /* Invalid request descriptor */ -#define EXFULL 54 /* Exchange full */ -#define ENOANO 55 /* No anode */ -#define EBADRQC 56 /* Invalid request code */ -#define EBADSLT 57 /* Invalid slot */ - -#define EDEADLOCK EDEADLK - -#define EBFONT 59 /* Bad font file format */ -#define ENOSTR 60 /* Device not a stream */ -#define ENODATA 61 /* No data available */ -#define ETIME 62 /* Timer expired */ -#define ENOSR 63 /* Out of streams resources */ -#define ENONET 64 /* Machine is not on the network */ -#define ENOPKG 65 /* Package not installed */ -#define EREMOTE 66 /* Object is remote */ -#define ENOLINK 67 /* Link has been severed */ -#define EADV 68 /* Advertise error */ -#define ESRMNT 69 /* Srmount error */ -#define ECOMM 70 /* Communication error on send */ -#define EPROTO 71 /* Protocol error */ -#define EMULTIHOP 72 /* Multihop attempted */ -#define EDOTDOT 73 /* RFS specific error */ -#define EBADMSG 74 /* Not a data message */ -#define EOVERFLOW 75 /* Value too large for defined data type */ -#define ENOTUNIQ 76 /* Name not unique on network */ -#define EBADFD 77 /* File descriptor in bad state */ -#define EREMCHG 78 /* Remote address changed */ -#define ELIBACC 79 /* Can not access a needed shared library */ -#define ELIBBAD 80 /* Accessing a corrupted shared library */ -#define ELIBSCN 81 /* .lib section in a.out corrupted */ -#define ELIBMAX 82 /* Attempting to link in too many shared libraries */ -#define ELIBEXEC 83 /* Cannot exec a shared library directly */ -#define EILSEQ 84 /* Illegal byte sequence */ -#define ERESTART 85 /* Interrupted system call should be restarted */ -#define ESTRPIPE 86 /* Streams pipe error */ -#define EUSERS 87 /* Too many users */ -#define ENOTSOCK 88 /* Socket operation on non-socket */ -#define EDESTADDRREQ 89 /* Destination address required */ -#define EMSGSIZE 90 /* Message too long */ -#define EPROTOTYPE 91 /* Protocol wrong type for socket */ -#define ENOPROTOOPT 92 /* Protocol not available */ -#define EPROTONOSUPPORT 93 /* Protocol not supported */ -#define ESOCKTNOSUPPORT 94 /* Socket type not supported */ -#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ -#define EPFNOSUPPORT 96 /* Protocol family not supported */ -#define EAFNOSUPPORT 97 /* Address family not supported by protocol */ -#define EADDRINUSE 98 /* Address already in use */ -#define EADDRNOTAVAIL 99 /* Cannot assign requested address */ -#define ENETDOWN 100 /* Network is down */ -#define ENETUNREACH 101 /* Network is unreachable */ -#define ENETRESET 102 /* Network dropped connection because of reset */ -#define ECONNABORTED 103 /* Software caused connection abort */ -#define ECONNRESET 104 /* Connection reset by peer */ -#define ENOBUFS 105 /* No buffer space available */ -#define EISCONN 106 /* Transport endpoint is already connected */ -#define ENOTCONN 107 /* Transport endpoint is not connected */ -#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ -#define ETOOMANYREFS 109 /* Too many references: cannot splice */ -#define ETIMEDOUT 110 /* Connection timed out */ -#define ECONNREFUSED 111 /* Connection refused */ -#define EHOSTDOWN 112 /* Host is down */ -#define EHOSTUNREACH 113 /* No route to host */ -#define EALREADY 114 /* Operation already in progress */ -#define EINPROGRESS 115 /* Operation now in progress */ -#define ESTALE 116 /* Stale NFS file handle */ -#define EUCLEAN 117 /* Structure needs cleaning */ -#define ENOTNAM 118 /* Not a XENIX named type file */ -#define ENAVAIL 119 /* No XENIX semaphores available */ -#define EISNAM 120 /* Is a named type file */ -#define EREMOTEIO 121 /* Remote I/O error */ -#define EDQUOT 122 /* Quota exceeded */ - -#define ENOMEDIUM 123 /* No medium found */ -#define EMEDIUMTYPE 124 /* Wrong medium type */ - - -#define ENSROK 0 /* DNS server returned answer with no data */ -#define ENSRNODATA 160 /* DNS server returned answer with no data */ -#define ENSRFORMERR 161 /* DNS server claims query was misformatted */ -#define ENSRSERVFAIL 162 /* DNS server returned general failure */ -#define ENSRNOTFOUND 163 /* Domain name not found */ -#define ENSRNOTIMP 164 /* DNS server does not implement requested operation */ -#define ENSRREFUSED 165 /* DNS server refused query */ -#define ENSRBADQUERY 166 /* Misformatted DNS query */ -#define ENSRBADNAME 167 /* Misformatted domain name */ -#define ENSRBADFAMILY 168 /* Unsupported address family */ -#define ENSRBADRESP 169 /* Misformatted DNS reply */ -#define ENSRCONNREFUSED 170 /* Could not contact DNS servers */ -#define ENSRTIMEOUT 171 /* Timeout while contacting DNS servers */ -#define ENSROF 172 /* End of file */ -#define ENSRFILE 173 /* Error reading file */ -#define ENSRNOMEM 174 /* Out of memory */ -#define ENSRDESTRUCTION 175 /* Application terminated lookup */ -#define ENSRQUERYDOMAINTOOLONG 176 /* Domain name is too long */ -#define ENSRCNAMELOOP 177 /* Domain name is too long */ - -#ifndef errno -extern int errno; -#endif - -#endif /* LWIP_PROVIDE_ERRNO */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_ARCH_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/debug.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/debug.h deleted file mode 100644 index fb07607..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/debug.h +++ /dev/null @@ -1,100 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_DEBUG_H__ -#define __LWIP_DEBUG_H__ - -#include "lwip/arch.h" - -/** lower two bits indicate debug level - * - 0 all - * - 1 warning - * - 2 serious - * - 3 severe - */ -#define LWIP_DBG_LEVEL_ALL 0x00 -#define LWIP_DBG_LEVEL_OFF LWIP_DBG_LEVEL_ALL /* compatibility define only */ -#define LWIP_DBG_LEVEL_WARNING 0x01 /* bad checksums, dropped packets, ... */ -#define LWIP_DBG_LEVEL_SERIOUS 0x02 /* memory allocation failures, ... */ -#define LWIP_DBG_LEVEL_SEVERE 0x03 -#define LWIP_DBG_MASK_LEVEL 0x03 - -/** flag for LWIP_DEBUGF to enable that debug message */ -#define LWIP_DBG_ON 0x80U -/** flag for LWIP_DEBUGF to disable that debug message */ -#define LWIP_DBG_OFF 0x00U - -/** flag for LWIP_DEBUGF indicating a tracing message (to follow program flow) */ -#define LWIP_DBG_TRACE 0x40U -/** flag for LWIP_DEBUGF indicating a state debug message (to follow module states) */ -#define LWIP_DBG_STATE 0x20U -/** flag for LWIP_DEBUGF indicating newly added code, not thoroughly tested yet */ -#define LWIP_DBG_FRESH 0x10U -/** flag for LWIP_DEBUGF to halt after printing this debug message */ -#define LWIP_DBG_HALT 0x08U - -#ifndef LWIP_NOASSERT -#define LWIP_ASSERT(message, assertion) do { if(!(assertion)) \ - LWIP_PLATFORM_ASSERT(message); } while(0) -#else /* LWIP_NOASSERT */ -#define LWIP_ASSERT(message, assertion) -#endif /* LWIP_NOASSERT */ - -/** if "expression" isn't true, then print "message" and execute "handler" expression */ -#ifndef LWIP_ERROR -#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \ - LWIP_PLATFORM_ASSERT(message); handler;}} while(0) -#endif /* LWIP_ERROR */ - -#ifdef LWIP_DEBUG -/** print debug message only if debug message type is enabled... - * AND is of correct type AND is at least LWIP_DBG_LEVEL - */ -#define LWIP_DEBUGF(debug, message) do { \ - if ( \ - ((debug) & LWIP_DBG_ON) && \ - ((debug) & LWIP_DBG_TYPES_ON) && \ - ((s16_t)((debug) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \ - LWIP_PLATFORM_DIAG(message); \ - if ((debug) & LWIP_DBG_HALT) { \ - while(1); \ - } \ - } \ - } while(0) - -#else /* LWIP_DEBUG */ -#define LWIP_DEBUGF(debug, message) -#endif /* LWIP_DEBUG */ - -#endif /* __LWIP_DEBUG_H__ */ - diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/def.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/def.h deleted file mode 100644 index c3681ac..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/def.h +++ /dev/null @@ -1,49 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_DEF_H__ -#define __LWIP_DEF_H__ - -/* this might define NULL already */ -#include "lwip/arch.h" - -#define LWIP_MAX(x , y) (((x) > (y)) ? (x) : (y)) -#define LWIP_MIN(x , y) (((x) < (y)) ? (x) : (y)) - -#ifndef NULL -#define NULL ((void *)0) -#endif - - -#endif /* __LWIP_DEF_H__ */ - diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dhcp.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dhcp.h deleted file mode 100644 index 27a0ade..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dhcp.h +++ /dev/null @@ -1,248 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** @file - */ - -#ifndef __LWIP_DHCP_H__ -#define __LWIP_DHCP_H__ - -#include "lwip/opt.h" - -#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/netif.h" -#include "lwip/udp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** period (in seconds) of the application calling dhcp_coarse_tmr() */ -#define DHCP_COARSE_TIMER_SECS 60 -/** period (in milliseconds) of the application calling dhcp_coarse_tmr() */ -#define DHCP_COARSE_TIMER_MSECS (DHCP_COARSE_TIMER_SECS * 1000UL) -/** period (in milliseconds) of the application calling dhcp_fine_tmr() */ -#define DHCP_FINE_TIMER_MSECS 500 - -struct dhcp -{ - /** transaction identifier of last sent request */ - u32_t xid; - /** our connection to the DHCP server */ - struct udp_pcb *pcb; - /** incoming msg */ - struct dhcp_msg *msg_in; - /** incoming msg options */ - void *options_in; - /** ingoing msg options length */ - u16_t options_in_len; - /** current DHCP state machine state */ - u8_t state; - /** retries of current request */ - u8_t tries; - - struct pbuf *p_out; /* pbuf of outcoming msg */ - struct dhcp_msg *msg_out; /* outgoing msg */ - u16_t options_out_len; /* outgoing msg options length */ - u16_t request_timeout; /* #ticks with period DHCP_FINE_TIMER_SECS for request timeout */ - u16_t t1_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for renewal time */ - u16_t t2_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for rebind time */ - struct ip_addr server_ip_addr; /* dhcp server address that offered this lease */ - struct ip_addr offered_ip_addr; - struct ip_addr offered_sn_mask; - struct ip_addr offered_gw_addr; - struct ip_addr offered_bc_addr; -#define DHCP_MAX_DNS 2 - u32_t dns_count; /* actual number of DNS servers obtained */ - struct ip_addr offered_dns_addr[DHCP_MAX_DNS]; /* DNS server addresses */ - - u32_t offered_t0_lease; /* lease period (in seconds) */ - u32_t offered_t1_renew; /* recommended renew time (usually 50% of lease period) */ - u32_t offered_t2_rebind; /* recommended rebind time (usually 66% of lease period) */ -#if LWIP_DHCP_AUTOIP_COOP - u8_t autoip_coop_state; -#endif -/** Patch #1308 - * TODO: See dhcp.c "TODO"s - */ -#if 0 - struct ip_addr offered_si_addr; - u8_t *boot_file_name; -#endif -}; - -/* MUST be compiled with "pack structs" or equivalent! */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** minimum set of fields of any DHCP message */ -struct dhcp_msg -{ - PACK_STRUCT_FIELD(u8_t op); - PACK_STRUCT_FIELD(u8_t htype); - PACK_STRUCT_FIELD(u8_t hlen); - PACK_STRUCT_FIELD(u8_t hops); - PACK_STRUCT_FIELD(u32_t xid); - PACK_STRUCT_FIELD(u16_t secs); - PACK_STRUCT_FIELD(u16_t flags); - PACK_STRUCT_FIELD(struct ip_addr ciaddr); - PACK_STRUCT_FIELD(struct ip_addr yiaddr); - PACK_STRUCT_FIELD(struct ip_addr siaddr); - PACK_STRUCT_FIELD(struct ip_addr giaddr); -#define DHCP_CHADDR_LEN 16U - PACK_STRUCT_FIELD(u8_t chaddr[DHCP_CHADDR_LEN]); -#define DHCP_SNAME_LEN 64U - PACK_STRUCT_FIELD(u8_t sname[DHCP_SNAME_LEN]); -#define DHCP_FILE_LEN 128U - PACK_STRUCT_FIELD(u8_t file[DHCP_FILE_LEN]); - PACK_STRUCT_FIELD(u32_t cookie); -#define DHCP_MIN_OPTIONS_LEN 68U -/** make sure user does not configure this too small */ -#if ((defined(DHCP_OPTIONS_LEN)) && (DHCP_OPTIONS_LEN < DHCP_MIN_OPTIONS_LEN)) -# undef DHCP_OPTIONS_LEN -#endif -/** allow this to be configured in lwipopts.h, but not too small */ -#if (!defined(DHCP_OPTIONS_LEN)) -/** set this to be sufficient for your options in outgoing DHCP msgs */ -# define DHCP_OPTIONS_LEN DHCP_MIN_OPTIONS_LEN -#endif - PACK_STRUCT_FIELD(u8_t options[DHCP_OPTIONS_LEN]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** start DHCP configuration */ -err_t dhcp_start(struct netif *netif); -/** enforce early lease renewal (not needed normally)*/ -err_t dhcp_renew(struct netif *netif); -/** release the DHCP lease, usually called before dhcp_stop()*/ -err_t dhcp_release(struct netif *netif); -/** stop DHCP configuration */ -void dhcp_stop(struct netif *netif); -/** inform server of our manual IP address */ -void dhcp_inform(struct netif *netif); -/** Handle a possible change in the network configuration */ -void dhcp_network_changed(struct netif *netif); - -/** if enabled, check whether the offered IP address is not in use, using ARP */ -#if DHCP_DOES_ARP_CHECK -void dhcp_arp_reply(struct netif *netif, struct ip_addr *addr); -#endif - -/** to be called every minute */ -void dhcp_coarse_tmr(void); -/** to be called every half second */ -void dhcp_fine_tmr(void); - -/** DHCP message item offsets and length */ -#define DHCP_MSG_OFS (UDP_DATA_OFS) - #define DHCP_OP_OFS (DHCP_MSG_OFS + 0) - #define DHCP_HTYPE_OFS (DHCP_MSG_OFS + 1) - #define DHCP_HLEN_OFS (DHCP_MSG_OFS + 2) - #define DHCP_HOPS_OFS (DHCP_MSG_OFS + 3) - #define DHCP_XID_OFS (DHCP_MSG_OFS + 4) - #define DHCP_SECS_OFS (DHCP_MSG_OFS + 8) - #define DHCP_FLAGS_OFS (DHCP_MSG_OFS + 10) - #define DHCP_CIADDR_OFS (DHCP_MSG_OFS + 12) - #define DHCP_YIADDR_OFS (DHCP_MSG_OFS + 16) - #define DHCP_SIADDR_OFS (DHCP_MSG_OFS + 20) - #define DHCP_GIADDR_OFS (DHCP_MSG_OFS + 24) - #define DHCP_CHADDR_OFS (DHCP_MSG_OFS + 28) - #define DHCP_SNAME_OFS (DHCP_MSG_OFS + 44) - #define DHCP_FILE_OFS (DHCP_MSG_OFS + 108) -#define DHCP_MSG_LEN 236 - -#define DHCP_COOKIE_OFS (DHCP_MSG_OFS + DHCP_MSG_LEN) -#define DHCP_OPTIONS_OFS (DHCP_MSG_OFS + DHCP_MSG_LEN + 4) - -#define DHCP_CLIENT_PORT 68 -#define DHCP_SERVER_PORT 67 - -/** DHCP client states */ -#define DHCP_REQUESTING 1 -#define DHCP_INIT 2 -#define DHCP_REBOOTING 3 -#define DHCP_REBINDING 4 -#define DHCP_RENEWING 5 -#define DHCP_SELECTING 6 -#define DHCP_INFORMING 7 -#define DHCP_CHECKING 8 -#define DHCP_PERMANENT 9 -#define DHCP_BOUND 10 -/** not yet implemented #define DHCP_RELEASING 11 */ -#define DHCP_BACKING_OFF 12 -#define DHCP_OFF 13 - -/** AUTOIP cooperatation flags */ -#define DHCP_AUTOIP_COOP_STATE_OFF 0 -#define DHCP_AUTOIP_COOP_STATE_ON 1 - -#define DHCP_BOOTREQUEST 1 -#define DHCP_BOOTREPLY 2 - -#define DHCP_DISCOVER 1 -#define DHCP_OFFER 2 -#define DHCP_REQUEST 3 -#define DHCP_DECLINE 4 -#define DHCP_ACK 5 -#define DHCP_NAK 6 -#define DHCP_RELEASE 7 -#define DHCP_INFORM 8 - -#define DHCP_HTYPE_ETH 1 - -#define DHCP_HLEN_ETH 6 - -#define DHCP_BROADCAST_FLAG 15 -#define DHCP_BROADCAST_MASK (1 << DHCP_FLAG_BROADCAST) - -/** BootP options */ -#define DHCP_OPTION_PAD 0 -#define DHCP_OPTION_SUBNET_MASK 1 /* RFC 2132 3.3 */ -#define DHCP_OPTION_ROUTER 3 -#define DHCP_OPTION_DNS_SERVER 6 -#define DHCP_OPTION_HOSTNAME 12 -#define DHCP_OPTION_IP_TTL 23 -#define DHCP_OPTION_MTU 26 -#define DHCP_OPTION_BROADCAST 28 -#define DHCP_OPTION_TCP_TTL 37 -#define DHCP_OPTION_END 255 - -/** DHCP options */ -#define DHCP_OPTION_REQUESTED_IP 50 /* RFC 2132 9.1, requested IP address */ -#define DHCP_OPTION_LEASE_TIME 51 /* RFC 2132 9.2, time in seconds, in 4 bytes */ -#define DHCP_OPTION_OVERLOAD 52 /* RFC2132 9.3, use file and/or sname field for options */ - -#define DHCP_OPTION_MESSAGE_TYPE 53 /* RFC 2132 9.6, important for DHCP */ -#define DHCP_OPTION_MESSAGE_TYPE_LEN 1 - - -#define DHCP_OPTION_SERVER_ID 54 /* RFC 2132 9.7, server IP address */ -#define DHCP_OPTION_PARAMETER_REQUEST_LIST 55 /* RFC 2132 9.8, requested option types */ - -#define DHCP_OPTION_MAX_MSG_SIZE 57 /* RFC 2132 9.10, message size accepted >= 576 */ -#define DHCP_OPTION_MAX_MSG_SIZE_LEN 2 - -#define DHCP_OPTION_T1 58 /* T1 renewal time */ -#define DHCP_OPTION_T2 59 /* T2 rebinding time */ -#define DHCP_OPTION_US 60 -#define DHCP_OPTION_CLIENT_ID 61 -#define DHCP_OPTION_TFTP_SERVERNAME 66 -#define DHCP_OPTION_BOOTFILE 67 - -/** possible combinations of overloading the file and sname fields with options */ -#define DHCP_OVERLOAD_NONE 0 -#define DHCP_OVERLOAD_FILE 1 -#define DHCP_OVERLOAD_SNAME 2 -#define DHCP_OVERLOAD_SNAME_FILE 3 - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_DHCP */ - -#endif /*__LWIP_DHCP_H__*/ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dns.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dns.h deleted file mode 100644 index c1b8ae0..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dns.h +++ /dev/null @@ -1,99 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * lwip DNS resolver header file. - - * Author: Jim Pettinato - * April 2007 - - * ported from uIP resolv.c Copyright (c) 2002-2003, Adam Dunkels. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * 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. - */ - -#ifndef __LWIP_DNS_H__ -#define __LWIP_DNS_H__ - -#include "lwip/opt.h" - -#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */ - -/** DNS timer period */ -#define DNS_TMR_INTERVAL 1000 - -/** DNS field TYPE used for "Resource Records" */ -#define DNS_RRTYPE_A 1 /* a host address */ -#define DNS_RRTYPE_NS 2 /* an authoritative name server */ -#define DNS_RRTYPE_MD 3 /* a mail destination (Obsolete - use MX) */ -#define DNS_RRTYPE_MF 4 /* a mail forwarder (Obsolete - use MX) */ -#define DNS_RRTYPE_CNAME 5 /* the canonical name for an alias */ -#define DNS_RRTYPE_SOA 6 /* marks the start of a zone of authority */ -#define DNS_RRTYPE_MB 7 /* a mailbox domain name (EXPERIMENTAL) */ -#define DNS_RRTYPE_MG 8 /* a mail group member (EXPERIMENTAL) */ -#define DNS_RRTYPE_MR 9 /* a mail rename domain name (EXPERIMENTAL) */ -#define DNS_RRTYPE_NULL 10 /* a null RR (EXPERIMENTAL) */ -#define DNS_RRTYPE_WKS 11 /* a well known service description */ -#define DNS_RRTYPE_PTR 12 /* a domain name pointer */ -#define DNS_RRTYPE_HINFO 13 /* host information */ -#define DNS_RRTYPE_MINFO 14 /* mailbox or mail list information */ -#define DNS_RRTYPE_MX 15 /* mail exchange */ -#define DNS_RRTYPE_TXT 16 /* text strings */ - -/** DNS field CLASS used for "Resource Records" */ -#define DNS_RRCLASS_IN 1 /* the Internet */ -#define DNS_RRCLASS_CS 2 /* the CSNET class (Obsolete - used only for examples in some obsolete RFCs) */ -#define DNS_RRCLASS_CH 3 /* the CHAOS class */ -#define DNS_RRCLASS_HS 4 /* Hesiod [Dyer 87] */ -#define DNS_RRCLASS_FLUSH 0x800 /* Flush bit */ - -/** Callback which is invoked when a hostname is found. - * A function of this type must be implemented by the application using the DNS resolver. - * @param name pointer to the name that was looked up. - * @param ipaddr pointer to a struct ip_addr containing the IP address of the hostname, - * or NULL if the name could not be found (or on any other error). - * @param callback_arg a user-specified callback argument passed to dns_gethostbyname -*/ -typedef void (*dns_found_callback)(const char *name, struct ip_addr *ipaddr, void *callback_arg); - - -void dns_init(void); - -void dns_tmr(void); - -void dns_setserver(u8_t numdns, struct ip_addr *dnsserver); - -struct ip_addr dns_getserver(u8_t numdns); - -err_t dns_gethostbyname(const char *hostname, struct ip_addr *addr, - dns_found_callback found, void *callback_arg); - -#if DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC -int dns_local_removehost(const char *hostname, const struct ip_addr *addr); -err_t dns_local_addhost(const char *hostname, const struct ip_addr *addr); -#endif /* DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -#endif /* LWIP_DNS */ - -#endif /* __LWIP_DNS_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/err.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/err.h deleted file mode 100644 index 792f276..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/err.h +++ /dev/null @@ -1,89 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_ERR_H__ -#define __LWIP_ERR_H__ - -#include "lwip/opt.h" -#include "lwip/arch.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Define LWIP_ERR_T in cc.h if you want to use - * a different type for your platform (must be signed). */ -#ifdef LWIP_ERR_T -typedef LWIP_ERR_T err_t; -#else /* LWIP_ERR_T */ - typedef s8_t err_t; -#endif /* LWIP_ERR_T*/ - -/* Definitions for error constants. */ - -#define ERR_OK 0 /* No error, everything OK. */ -#define ERR_MEM -1 /* Out of memory error. */ -#define ERR_BUF -2 /* Buffer error. */ -#define ERR_TIMEOUT -3 /* Timeout. */ -#define ERR_RTE -4 /* Routing problem. */ - -#define ERR_IS_FATAL(e) ((e) < ERR_RTE) - -#define ERR_ABRT -5 /* Connection aborted. */ -#define ERR_RST -6 /* Connection reset. */ -#define ERR_CLSD -7 /* Connection closed. */ -#define ERR_CONN -8 /* Not connected. */ - -#define ERR_VAL -9 /* Illegal value. */ - -#define ERR_ARG -10 /* Illegal argument. */ - -#define ERR_USE -11 /* Address in use. */ - -#define ERR_IF -12 /* Low-level netif error */ -#define ERR_ISCONN -13 /* Already connected. */ - -#define ERR_INPROGRESS -14 /* Operation in progress */ - - -#ifdef LWIP_DEBUG -extern const char *lwip_strerr(err_t err); -#else -#define lwip_strerr(x) "" -#endif /* LWIP_DEBUG */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_ERR_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/init.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/init.h deleted file mode 100644 index a86e0d9..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/init.h +++ /dev/null @@ -1,74 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_INIT_H__ -#define __LWIP_INIT_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** X.x.x: Major version of the stack */ -#define LWIP_VERSION_MAJOR 1U -/** x.X.x: Minor version of the stack */ -#define LWIP_VERSION_MINOR 3U -/** x.x.X: Revision of the stack */ -#define LWIP_VERSION_REVISION 2U -/** For release candidates, this is set to 1..254 - * For official releases, this is set to 255 (LWIP_RC_RELEASE) - * For development versions (CVS), this is set to 0 (LWIP_RC_DEVELOPMENT) */ -#define LWIP_VERSION_RC 255U - -/** LWIP_VERSION_RC is set to LWIP_RC_RELEASE for official releases */ -#define LWIP_RC_RELEASE 255U -/** LWIP_VERSION_RC is set to LWIP_RC_DEVELOPMENT for CVS versions */ -#define LWIP_RC_DEVELOPMENT 0U - -#define LWIP_VERSION_IS_RELEASE (LWIP_VERSION_RC == LWIP_RC_RELEASE) -#define LWIP_VERSION_IS_DEVELOPMENT (LWIP_VERSION_RC == LWIP_RC_DEVELOPMENT) -#define LWIP_VERSION_IS_RC ((LWIP_VERSION_RC != LWIP_RC_RELEASE) && (LWIP_VERSION_RC != LWIP_RC_DEVELOPMENT)) - -/** Provides the version of the stack */ -#define LWIP_VERSION (LWIP_VERSION_MAJOR << 24 | LWIP_VERSION_MINOR << 16 | \ - LWIP_VERSION_REVISION << 8 | LWIP_VERSION_RC) - -/* Modules initialization */ -void lwip_init(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_INIT_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/mem.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/mem.h deleted file mode 100644 index 327229e..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/mem.h +++ /dev/null @@ -1,109 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_MEM_H__ -#define __LWIP_MEM_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if MEM_LIBC_MALLOC - -#include /* for size_t */ - -typedef size_t mem_size_t; - -/* aliases for C library malloc() */ -#define mem_init() -/* in case C library malloc() needs extra protection, - * allow these defines to be overridden. - */ -#ifndef mem_free -#define mem_free free -#endif -#ifndef mem_malloc -#define mem_malloc malloc -#endif -#ifndef mem_calloc -#define mem_calloc calloc -#endif -#ifndef mem_realloc -static void *mem_realloc(void *mem, mem_size_t size) -{ - LWIP_UNUSED_ARG(size); - return mem; -} -#endif -#else /* MEM_LIBC_MALLOC */ - -/* MEM_SIZE would have to be aligned, but using 64000 here instead of - * 65535 leaves some room for alignment... - */ -#if MEM_SIZE > 64000l -typedef u32_t mem_size_t; -#else -typedef u16_t mem_size_t; -#endif /* MEM_SIZE > 64000 */ - -#if MEM_USE_POOLS -/** mem_init is not used when using pools instead of a heap */ -#define mem_init() -/** mem_realloc is not used when using pools instead of a heap: - we can't free part of a pool element and don't want to copy the rest */ -#define mem_realloc(mem, size) (mem) -#else /* MEM_USE_POOLS */ -/* lwIP alternative malloc */ -void mem_init(void); -void *mem_realloc(void *mem, mem_size_t size); -#endif /* MEM_USE_POOLS */ -void *mem_malloc(mem_size_t size); -void *mem_calloc(mem_size_t count, mem_size_t size); -void mem_free(void *mem); -#endif /* MEM_LIBC_MALLOC */ - -#ifndef LWIP_MEM_ALIGN_SIZE -#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1)) -#endif - -#ifndef LWIP_MEM_ALIGN -#define LWIP_MEM_ALIGN(addr) ((void *)(((mem_ptr_t)(addr) + MEM_ALIGNMENT - 1) & ~(mem_ptr_t)(MEM_ALIGNMENT-1))) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_MEM_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp.h deleted file mode 100644 index 3de7bf9..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp.h +++ /dev/null @@ -1,118 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#ifndef __LWIP_MEMP_H__ -#define __LWIP_MEMP_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Create the list of all memory pools managed by memp. MEMP_MAX represents a NULL pool at the end */ -typedef enum { -#define LWIP_MEMPOOL(name,num,size,desc) MEMP_##name, -#include "lwip/memp_std.h" - MEMP_MAX -} memp_t; - -#if MEM_USE_POOLS -/* Use a helper type to get the start and end of the user "memory pools" for mem_malloc */ -typedef enum { - /* Get the first (via: - MEMP_POOL_HELPER_START = ((u8_t) 1*MEMP_POOL_A + 0*MEMP_POOL_B + 0*MEMP_POOL_C + 0)*/ - MEMP_POOL_HELPER_FIRST = ((u8_t) -#define LWIP_MEMPOOL(name,num,size,desc) -#define LWIP_MALLOC_MEMPOOL_START 1 -#define LWIP_MALLOC_MEMPOOL(num, size) * MEMP_POOL_##size + 0 -#define LWIP_MALLOC_MEMPOOL_END -#include "lwip/memp_std.h" - ) , - /* Get the last (via: - MEMP_POOL_HELPER_END = ((u8_t) 0 + MEMP_POOL_A*0 + MEMP_POOL_B*0 + MEMP_POOL_C*1) */ - MEMP_POOL_HELPER_LAST = ((u8_t) -#define LWIP_MEMPOOL(name,num,size,desc) -#define LWIP_MALLOC_MEMPOOL_START -#define LWIP_MALLOC_MEMPOOL(num, size) 0 + MEMP_POOL_##size * -#define LWIP_MALLOC_MEMPOOL_END 1 -#include "lwip/memp_std.h" - ) -} memp_pool_helper_t; - -/* The actual start and stop values are here (cast them over) - We use this helper type and these defines so we can avoid using const memp_t values */ -#define MEMP_POOL_FIRST ((memp_t) MEMP_POOL_HELPER_FIRST) -#define MEMP_POOL_LAST ((memp_t) MEMP_POOL_HELPER_LAST) -#endif /* MEM_USE_POOLS */ - -#if MEMP_MEM_MALLOC || MEM_USE_POOLS -extern const u16_t memp_sizes[MEMP_MAX]; -#endif /* MEMP_MEM_MALLOC || MEM_USE_POOLS */ - -#if MEMP_MEM_MALLOC - -#include "mem.h" - -#define memp_init() -#define memp_malloc(type) mem_malloc(memp_sizes[type]) -#define memp_free(type, mem) mem_free(mem) - -#else /* MEMP_MEM_MALLOC */ - -#if MEM_USE_POOLS -/** This structure is used to save the pool one element came from. */ -struct memp_malloc_helper -{ - memp_t poolnr; -}; -#endif /* MEM_USE_POOLS */ - -void memp_init(void); - -#if MEMP_OVERFLOW_CHECK -void *memp_malloc_fn(memp_t type, const char* file, const int line); -#define memp_malloc(t) memp_malloc_fn((t), __FILE__, __LINE__) -#else -void *memp_malloc(memp_t type); -#endif -void memp_free(memp_t type, void *mem); - -#endif /* MEMP_MEM_MALLOC */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_MEMP_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp_std.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp_std.h deleted file mode 100644 index d8d4945..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp_std.h +++ /dev/null @@ -1,104 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * SETUP: Make sure we define everything we will need. - * - * We have create three types of pools: - * 1) MEMPOOL - standard pools - * 2) MALLOC_MEMPOOL - to be used by mem_malloc in mem.c - * 3) PBUF_MEMPOOL - a mempool of pbuf's, so include space for the pbuf struct - * - * If the include'r doesn't require any special treatment of each of the types - * above, then will declare #2 & #3 to be just standard mempools. - */ -#ifndef LWIP_MALLOC_MEMPOOL -/* This treats "malloc pools" just like any other pool. - The pools are a little bigger to provide 'size' as the amount of user data. */ -#define LWIP_MALLOC_MEMPOOL(num, size) LWIP_MEMPOOL(POOL_##size, num, (size + sizeof(struct memp_malloc_helper)), "MALLOC_"#size) -#define LWIP_MALLOC_MEMPOOL_START -#define LWIP_MALLOC_MEMPOOL_END -#endif /* LWIP_MALLOC_MEMPOOL */ - -#ifndef LWIP_PBUF_MEMPOOL -/* This treats "pbuf pools" just like any other pool. - * Allocates buffers for a pbuf struct AND a payload size */ -#define LWIP_PBUF_MEMPOOL(name, num, payload, desc) LWIP_MEMPOOL(name, num, (MEMP_ALIGN_SIZE(sizeof(struct pbuf)) + MEMP_ALIGN_SIZE(payload)), desc) -#endif /* LWIP_PBUF_MEMPOOL */ - - -/* - * A list of internal pools used by LWIP. - * - * LWIP_MEMPOOL(pool_name, number_elements, element_size, pool_description) - * creates a pool name MEMP_pool_name. description is used in stats.c - */ -#if LWIP_RAW -LWIP_MEMPOOL(RAW_PCB, MEMP_NUM_RAW_PCB, sizeof(struct raw_pcb), "RAW_PCB") -#endif /* LWIP_RAW */ - -#if LWIP_UDP -LWIP_MEMPOOL(UDP_PCB, MEMP_NUM_UDP_PCB, sizeof(struct udp_pcb), "UDP_PCB") -#endif /* LWIP_UDP */ - -#if LWIP_TCP -LWIP_MEMPOOL(TCP_PCB, MEMP_NUM_TCP_PCB, sizeof(struct tcp_pcb), "TCP_PCB") -LWIP_MEMPOOL(TCP_PCB_LISTEN, MEMP_NUM_TCP_PCB_LISTEN, sizeof(struct tcp_pcb_listen), "TCP_PCB_LISTEN") -LWIP_MEMPOOL(TCP_SEG, MEMP_NUM_TCP_SEG, sizeof(struct tcp_seg), "TCP_SEG") -#endif /* LWIP_TCP */ - -#if IP_REASSEMBLY -LWIP_MEMPOOL(REASSDATA, MEMP_NUM_REASSDATA, sizeof(struct ip_reassdata), "REASSDATA") -#endif /* IP_REASSEMBLY */ - -#if LWIP_NETCONN -LWIP_MEMPOOL(NETBUF, MEMP_NUM_NETBUF, sizeof(struct netbuf), "NETBUF") -LWIP_MEMPOOL(NETCONN, MEMP_NUM_NETCONN, sizeof(struct netconn), "NETCONN") -#endif /* LWIP_NETCONN */ - -#if NO_SYS==0 -LWIP_MEMPOOL(TCPIP_MSG_API, MEMP_NUM_TCPIP_MSG_API, sizeof(struct tcpip_msg), "TCPIP_MSG_API") -LWIP_MEMPOOL(TCPIP_MSG_INPKT,MEMP_NUM_TCPIP_MSG_INPKT, sizeof(struct tcpip_msg), "TCPIP_MSG_INPKT") -#endif /* NO_SYS==0 */ - -#if ARP_QUEUEING -LWIP_MEMPOOL(ARP_QUEUE, MEMP_NUM_ARP_QUEUE, sizeof(struct etharp_q_entry), "ARP_QUEUE") -#endif /* ARP_QUEUEING */ - -#if LWIP_IGMP -LWIP_MEMPOOL(IGMP_GROUP, MEMP_NUM_IGMP_GROUP, sizeof(struct igmp_group), "IGMP_GROUP") -#endif /* LWIP_IGMP */ - -#if NO_SYS==0 -LWIP_MEMPOOL(SYS_TIMEOUT, MEMP_NUM_SYS_TIMEOUT, sizeof(struct sys_timeo), "SYS_TIMEOUT") -#endif /* NO_SYS==0 */ - - -/* - * A list of pools of pbuf's used by LWIP. - * - * LWIP_PBUF_MEMPOOL(pool_name, number_elements, pbuf_payload_size, pool_description) - * creates a pool name MEMP_pool_name. description is used in stats.c - * This allocates enough space for the pbuf struct and a payload. - * (Example: pbuf_payload_size=0 allocates only size for the struct) - */ -LWIP_PBUF_MEMPOOL(PBUF, MEMP_NUM_PBUF, 0, "PBUF_REF/ROM") -LWIP_PBUF_MEMPOOL(PBUF_POOL, PBUF_POOL_SIZE, PBUF_POOL_BUFSIZE, "PBUF_POOL") - - -/* - * Allow for user-defined pools; this must be explicitly set in lwipopts.h - * since the default is to NOT look for lwippools.h - */ -#if MEMP_USE_CUSTOM_POOLS -#include "lwippools.h" -#endif /* MEMP_USE_CUSTOM_POOLS */ - -/* - * REQUIRED CLEANUP: Clear up so we don't get "multiply defined" error later - * (#undef is ignored for something that is not defined) - */ -#undef LWIP_MEMPOOL -#undef LWIP_MALLOC_MEMPOOL -#undef LWIP_MALLOC_MEMPOOL_START -#undef LWIP_MALLOC_MEMPOOL_END -#undef LWIP_PBUF_MEMPOOL diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netbuf.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netbuf.h deleted file mode 100644 index ab9ea33..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netbuf.h +++ /dev/null @@ -1,88 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_NETBUF_H__ -#define __LWIP_NETBUF_H__ - -#include "lwip/opt.h" -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct netbuf { - struct pbuf *p, *ptr; - struct ip_addr *addr; - u16_t port; -#if LWIP_NETBUF_RECVINFO - struct ip_addr *toaddr; - u16_t toport; -#endif /* LWIP_NETBUF_RECVINFO */ -}; - -/* Network buffer functions: */ -struct netbuf * netbuf_new (void); -void netbuf_delete (struct netbuf *buf); -void * netbuf_alloc (struct netbuf *buf, u16_t size); -void netbuf_free (struct netbuf *buf); -err_t netbuf_ref (struct netbuf *buf, - const void *dataptr, u16_t size); -void netbuf_chain (struct netbuf *head, - struct netbuf *tail); - -u16_t netbuf_len (struct netbuf *buf); -err_t netbuf_data (struct netbuf *buf, - void **dataptr, u16_t *len); -s8_t netbuf_next (struct netbuf *buf); -void netbuf_first (struct netbuf *buf); - - -#define netbuf_copy_partial(buf, dataptr, len, offset) \ - pbuf_copy_partial((buf)->p, (dataptr), (len), (offset)) -#define netbuf_copy(buf,dataptr,len) netbuf_copy_partial(buf, dataptr, len, 0) -#define netbuf_take(buf, dataptr, len) pbuf_take((buf)->p, dataptr, len) -#define netbuf_len(buf) ((buf)->p->tot_len) -#define netbuf_fromaddr(buf) ((buf)->addr) -#define netbuf_fromport(buf) ((buf)->port) -#if LWIP_NETBUF_RECVINFO -#define netbuf_destaddr(buf) ((buf)->toaddr) -#define netbuf_destport(buf) ((buf)->toport) -#endif /* LWIP_NETBUF_RECVINFO */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_NETBUF_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netdb.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netdb.h deleted file mode 100644 index c59c3a4..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netdb.h +++ /dev/null @@ -1,113 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Simon Goldschmidt - * - */ - -#include "lwip/opt.h" - -#if LWIP_DNS && LWIP_SOCKET - -#include /* for size_t */ - -#include "lwip/sockets.h" - -/* some rarely used options */ -#ifndef LWIP_DNS_API_DECLARE_H_ERRNO -#define LWIP_DNS_API_DECLARE_H_ERRNO 1 -#endif - -#ifndef LWIP_DNS_API_DEFINE_ERRORS -#define LWIP_DNS_API_DEFINE_ERRORS 1 -#endif - -#ifndef LWIP_DNS_API_DECLARE_STRUCTS -#define LWIP_DNS_API_DECLARE_STRUCTS 1 -#endif - -#if LWIP_DNS_API_DEFINE_ERRORS -/** Errors used by the DNS API functions, h_errno can be one of them */ -#define EAI_NONAME 200 -#define EAI_SERVICE 201 -#define EAI_FAIL 202 -#define EAI_MEMORY 203 - -#define HOST_NOT_FOUND 210 -#define NO_DATA 211 -#define NO_RECOVERY 212 -#define TRY_AGAIN 213 -#endif /* LWIP_DNS_API_DEFINE_ERRORS */ - -#if LWIP_DNS_API_DECLARE_STRUCTS -struct hostent { - char *h_name; /* Official name of the host. */ - char **h_aliases; /* A pointer to an array of pointers to alternative host names, - terminated by a null pointer. */ - int h_addrtype; /* Address type. */ - int h_length; /* The length, in bytes, of the address. */ - char **h_addr_list; /* A pointer to an array of pointers to network addresses (in - network byte order) for the host, terminated by a null pointer. */ -#define h_addr h_addr_list[0] /* for backward compatibility */ -}; - -struct addrinfo { - int ai_flags; /* Input flags. */ - int ai_family; /* Address family of socket. */ - int ai_socktype; /* Socket type. */ - int ai_protocol; /* Protocol of socket. */ - socklen_t ai_addrlen; /* Length of socket address. */ - struct sockaddr *ai_addr; /* Socket address of socket. */ - char *ai_canonname; /* Canonical name of service location. */ - struct addrinfo *ai_next; /* Pointer to next in list. */ -}; -#endif /* LWIP_DNS_API_DECLARE_STRUCTS */ - -#if LWIP_DNS_API_DECLARE_H_ERRNO -/* application accessable error code set by the DNS API functions */ -extern int h_errno; -#endif /* LWIP_DNS_API_DECLARE_H_ERRNO*/ - -struct hostent *lwip_gethostbyname(const char *name); -int lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf, - size_t buflen, struct hostent **result, int *h_errnop); -void lwip_freeaddrinfo(struct addrinfo *ai); -int lwip_getaddrinfo(const char *nodename, - const char *servname, - const struct addrinfo *hints, - struct addrinfo **res); - -#if LWIP_COMPAT_SOCKETS -#define gethostbyname(name) lwip_gethostbyname(name) -#define gethostbyname_r(name, ret, buf, buflen, result, h_errnop) \ - lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop) -#define freeaddrinfo(addrinfo) lwip_freeaddrinfo(addrinfo) -#define getaddrinfo(nodname, servname, hints, res) \ - lwip_getaddrinfo(nodname, servname, hints, res) -#endif /* LWIP_COMPAT_SOCKETS */ - -#endif /* LWIP_DNS && LWIP_SOCKET */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netif.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netif.h deleted file mode 100644 index 8e650d7..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netif.h +++ /dev/null @@ -1,265 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_NETIF_H__ -#define __LWIP_NETIF_H__ - -#include "lwip/opt.h" - -#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF) - -#include "lwip/err.h" - -#include "lwip/ip_addr.h" - -#include "lwip/inet.h" -#include "lwip/pbuf.h" -#if LWIP_DHCP -struct dhcp; -#endif -#if LWIP_AUTOIP -struct autoip; -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Throughout this file, IP addresses are expected to be in - * the same byte order as in IP_PCB. */ - -/** must be the maximum of all used hardware address lengths - across all types of interfaces in use */ -#define NETIF_MAX_HWADDR_LEN 6U - -/** TODO: define the use (where, when, whom) of netif flags */ - -/** whether the network interface is 'up'. this is - * a software flag used to control whether this network - * interface is enabled and processes traffic. - */ -#define NETIF_FLAG_UP 0x01U -/** if set, the netif has broadcast capability */ -#define NETIF_FLAG_BROADCAST 0x02U -/** if set, the netif is one end of a point-to-point connection */ -#define NETIF_FLAG_POINTTOPOINT 0x04U -/** if set, the interface is configured using DHCP */ -#define NETIF_FLAG_DHCP 0x08U -/** if set, the interface has an active link - * (set by the network interface driver) */ -#define NETIF_FLAG_LINK_UP 0x10U -/** if set, the netif is an device using ARP */ -#define NETIF_FLAG_ETHARP 0x20U -/** if set, the netif has IGMP capability */ -#define NETIF_FLAG_IGMP 0x40U - -/** Generic data structure used for all lwIP network interfaces. - * The following fields should be filled in by the initialization - * function for the device driver: hwaddr_len, hwaddr[], mtu, flags */ - -struct netif { - /** pointer to next in linked list */ - struct netif *next; - - /** IP address configuration in network byte order */ - struct ip_addr ip_addr; - struct ip_addr netmask; - struct ip_addr gw; - - /** This function is called by the network device driver - * to pass a packet up the TCP/IP stack. */ - err_t (* input)(struct pbuf *p, struct netif *inp); - /** This function is called by the IP module when it wants - * to send a packet on the interface. This function typically - * first resolves the hardware address, then sends the packet. */ - err_t (* output)(struct netif *netif, struct pbuf *p, - struct ip_addr *ipaddr); - /** This function is called by the ARP module when it wants - * to send a packet on the interface. This function outputs - * the pbuf as-is on the link medium. */ - err_t (* linkoutput)(struct netif *netif, struct pbuf *p); -#if LWIP_NETIF_STATUS_CALLBACK - /** This function is called when the netif state is set to up or down - */ - void (* status_callback)(struct netif *netif); -#endif /* LWIP_NETIF_STATUS_CALLBACK */ -#if LWIP_NETIF_LINK_CALLBACK - /** This function is called when the netif link is set to up or down - */ - void (* link_callback)(struct netif *netif); -#endif /* LWIP_NETIF_LINK_CALLBACK */ - /** This field can be set by the device driver and could point - * to state information for the device. */ - void *state; -#if LWIP_DHCP - /** the DHCP client state information for this netif */ - struct dhcp *dhcp; -#endif /* LWIP_DHCP */ -#if LWIP_AUTOIP - /** the AutoIP client state information for this netif */ - struct autoip *autoip; -#endif -#if LWIP_NETIF_HOSTNAME - /* the hostname for this netif, NULL is a valid value */ - char* hostname; -#endif /* LWIP_NETIF_HOSTNAME */ - /** maximum transfer unit (in bytes) */ - u16_t mtu; - /** number of bytes used in hwaddr */ - u8_t hwaddr_len; - /** link level hardware address of this interface */ - u8_t hwaddr[NETIF_MAX_HWADDR_LEN]; - /** flags (see NETIF_FLAG_ above) */ - u8_t flags; - /** descriptive abbreviation */ - char name[2]; - /** number of this interface */ - u8_t num; -#if LWIP_SNMP - /** link type (from "snmp_ifType" enum from snmp.h) */ - u8_t link_type; - /** (estimate) link speed */ - u32_t link_speed; - /** timestamp at last change made (up/down) */ - u32_t ts; - /** counters */ - u32_t ifinoctets; - u32_t ifinucastpkts; - u32_t ifinnucastpkts; - u32_t ifindiscards; - u32_t ifoutoctets; - u32_t ifoutucastpkts; - u32_t ifoutnucastpkts; - u32_t ifoutdiscards; -#endif /* LWIP_SNMP */ -#if LWIP_IGMP - /* This function could be called to add or delete a entry in the multicast filter table of the ethernet MAC.*/ - err_t (*igmp_mac_filter)( struct netif *netif, struct ip_addr *group, u8_t action); -#endif /* LWIP_IGMP */ -#if LWIP_NETIF_HWADDRHINT - u8_t *addr_hint; -#endif /* LWIP_NETIF_HWADDRHINT */ -#if ENABLE_LOOPBACK - /* List of packets to be queued for ourselves. */ - struct pbuf *loop_first; - struct pbuf *loop_last; -#if LWIP_LOOPBACK_MAX_PBUFS - u16_t loop_cnt_current; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ -#endif /* ENABLE_LOOPBACK */ -}; - -#if LWIP_SNMP -#define NETIF_INIT_SNMP(netif, type, speed) \ - /* use "snmp_ifType" enum from snmp.h for "type", snmp_ifType_ethernet_csmacd by example */ \ - netif->link_type = type; \ - /* your link speed here (units: bits per second) */ \ - netif->link_speed = speed; \ - netif->ts = 0; \ - netif->ifinoctets = 0; \ - netif->ifinucastpkts = 0; \ - netif->ifinnucastpkts = 0; \ - netif->ifindiscards = 0; \ - netif->ifoutoctets = 0; \ - netif->ifoutucastpkts = 0; \ - netif->ifoutnucastpkts = 0; \ - netif->ifoutdiscards = 0 -#else /* LWIP_SNMP */ -#define NETIF_INIT_SNMP(netif, type, speed) -#endif /* LWIP_SNMP */ - - -/** The list of network interfaces. */ -extern struct netif *netif_list; -/** The default network interface. */ -extern struct netif *netif_default; - -#define netif_init() /* Compatibility define, not init needed. */ - -struct netif *netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw, - void *state, - err_t (* init)(struct netif *netif), - err_t (* input)(struct pbuf *p, struct netif *netif)); - -void -netif_set_addr(struct netif *netif,struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw); -void netif_remove(struct netif * netif); - -/* Returns a network interface given its name. The name is of the form - "et0", where the first two letters are the "name" field in the - netif structure, and the digit is in the num field in the same - structure. */ -struct netif *netif_find(char *name); - -void netif_set_default(struct netif *netif); - -void netif_set_ipaddr(struct netif *netif, struct ip_addr *ipaddr); -void netif_set_netmask(struct netif *netif, struct ip_addr *netmask); -void netif_set_gw(struct netif *netif, struct ip_addr *gw); - -void netif_set_up(struct netif *netif); -void netif_set_down(struct netif *netif); -u8_t netif_is_up(struct netif *netif); - -#if LWIP_NETIF_STATUS_CALLBACK -/* - * Set callback to be called when interface is brought up/down - */ -void netif_set_status_callback(struct netif *netif, void (* status_callback)(struct netif *netif)); -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -#if LWIP_NETIF_LINK_CALLBACK -void netif_set_link_up(struct netif *netif); -void netif_set_link_down(struct netif *netif); -u8_t netif_is_link_up(struct netif *netif); -/* - * Set callback to be called when link is brought up/down - */ -void netif_set_link_callback(struct netif *netif, void (* link_callback)(struct netif *netif)); -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -#ifdef __cplusplus -} -#endif - -#if ENABLE_LOOPBACK -err_t netif_loop_output(struct netif *netif, struct pbuf *p, struct ip_addr *dest_ip); -void netif_poll(struct netif *netif); -#if !LWIP_NETIF_LOOPBACK_MULTITHREADING -void netif_poll_all(void); -#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */ -#endif /* ENABLE_LOOPBACK */ - -#endif /* __LWIP_NETIF_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netifapi.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netifapi.h deleted file mode 100644 index 22d8690..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netifapi.h +++ /dev/null @@ -1,107 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - */ - -#ifndef __LWIP_NETIFAPI_H__ -#define __LWIP_NETIFAPI_H__ - -#include "lwip/opt.h" - -#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/sys.h" -#include "lwip/netif.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct netifapi_msg_msg { -#if !LWIP_TCPIP_CORE_LOCKING - sys_sem_t sem; -#endif /* !LWIP_TCPIP_CORE_LOCKING */ - err_t err; - struct netif *netif; - union { - struct { - struct ip_addr *ipaddr; - struct ip_addr *netmask; - struct ip_addr *gw; - void *state; - err_t (* init) (struct netif *netif); - err_t (* input)(struct pbuf *p, struct netif *netif); - } add; - struct { - void (* voidfunc)(struct netif *netif); - err_t (* errtfunc)(struct netif *netif); - } common; - } msg; -}; - -struct netifapi_msg { - void (* function)(struct netifapi_msg_msg *msg); - struct netifapi_msg_msg msg; -}; - - -/* API for application */ -err_t netifapi_netif_add ( struct netif *netif, - struct ip_addr *ipaddr, - struct ip_addr *netmask, - struct ip_addr *gw, - void *state, - err_t (* init)(struct netif *netif), - err_t (* input)(struct pbuf *p, struct netif *netif) ); - -err_t netifapi_netif_set_addr ( struct netif *netif, - struct ip_addr *ipaddr, - struct ip_addr *netmask, - struct ip_addr *gw ); - -err_t netifapi_netif_common ( struct netif *netif, - void (* voidfunc)(struct netif *netif), - err_t (* errtfunc)(struct netif *netif) ); - -#define netifapi_netif_remove(n) netifapi_netif_common(n, netif_remove, NULL) -#define netifapi_netif_set_up(n) netifapi_netif_common(n, netif_set_up, NULL) -#define netifapi_netif_set_down(n) netifapi_netif_common(n, netif_set_down, NULL) -#define netifapi_netif_set_default(n) netifapi_netif_common(n, netif_set_default, NULL) -#define netifapi_dhcp_start(n) netifapi_netif_common(n, NULL, dhcp_start) -#define netifapi_dhcp_stop(n) netifapi_netif_common(n, dhcp_stop, NULL) -#define netifapi_autoip_start(n) netifapi_netif_common(n, NULL, autoip_start) -#define netifapi_autoip_stop(n) netifapi_netif_common(n, NULL, autoip_stop) - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_NETIF_API */ - -#endif /* __LWIP_NETIFAPI_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/opt.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/opt.h deleted file mode 100644 index a7cdbd8..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/opt.h +++ /dev/null @@ -1,1842 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * - * lwIP Options Configuration - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_OPT_H__ -#define __LWIP_OPT_H__ - -/* - * Include user defined options first. Anything not defined in these files - * will be set to standard values. Override anything you dont like! - */ -#include "lwipopts.h" -#include "lwip/debug.h" - -/* - ----------------------------------------------- - ---------- Platform specific locking ---------- - ----------------------------------------------- -*/ - -/** - * SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain - * critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#ifndef SYS_LIGHTWEIGHT_PROT -#define SYS_LIGHTWEIGHT_PROT 0 -#endif - -/** - * NO_SYS==1: Provides VERY minimal functionality. Otherwise, - * use lwIP facilities. - */ -#ifndef NO_SYS -#define NO_SYS 0 -#endif - -/** - * MEMCPY: override this if you have a faster implementation at hand than the - * one included in your C library - */ -#ifndef MEMCPY -#define MEMCPY(dst,src,len) memcpy(dst,src,len) -#endif - -/** - * SMEMCPY: override this with care! Some compilers (e.g. gcc) can inline a - * call to memcpy() if the length is known at compile time and is small. - */ -#ifndef SMEMCPY -#define SMEMCPY(dst,src,len) memcpy(dst,src,len) -#endif - -/* - ------------------------------------ - ---------- Memory options ---------- - ------------------------------------ -*/ -/** - * MEM_LIBC_MALLOC==1: Use malloc/free/realloc provided by your C-library - * instead of the lwip internal allocator. Can save code size if you - * already use it. - */ -#ifndef MEM_LIBC_MALLOC -#define MEM_LIBC_MALLOC 0 -#endif - -/** -* MEMP_MEM_MALLOC==1: Use mem_malloc/mem_free instead of the lwip pool allocator. -* Especially useful with MEM_LIBC_MALLOC but handle with care regarding execution -* speed and usage from interrupts! -*/ -#ifndef MEMP_MEM_MALLOC -#define MEMP_MEM_MALLOC 0 -#endif - -/** - * MEM_ALIGNMENT: should be set to the alignment of the CPU - * 4 byte alignment -> #define MEM_ALIGNMENT 4 - * 2 byte alignment -> #define MEM_ALIGNMENT 2 - */ -#ifndef MEM_ALIGNMENT -#define MEM_ALIGNMENT 1 -#endif - -/** - * MEM_SIZE: the size of the heap memory. If the application will send - * a lot of data that needs to be copied, this should be set high. - */ -#ifndef MEM_SIZE -#define MEM_SIZE 1600 -#endif - -/** - * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable - * amount of bytes before and after each memp element in every pool and fills - * it with a prominent default value. - * MEMP_OVERFLOW_CHECK == 0 no checking - * MEMP_OVERFLOW_CHECK == 1 checks each element when it is freed - * MEMP_OVERFLOW_CHECK >= 2 checks each element in every pool every time - * memp_malloc() or memp_free() is called (useful but slow!) - */ -#ifndef MEMP_OVERFLOW_CHECK -#define MEMP_OVERFLOW_CHECK 0 -#endif - -/** - * MEMP_SANITY_CHECK==1: run a sanity check after each memp_free() to make - * sure that there are no cycles in the linked lists. - */ -#ifndef MEMP_SANITY_CHECK -#define MEMP_SANITY_CHECK 0 -#endif - -/** - * MEM_USE_POOLS==1: Use an alternative to malloc() by allocating from a set - * of memory pools of various sizes. When mem_malloc is called, an element of - * the smallest pool that can provide the length needed is returned. - * To use this, MEMP_USE_CUSTOM_POOLS also has to be enabled. - */ -#ifndef MEM_USE_POOLS -#define MEM_USE_POOLS 0 -#endif - -/** - * MEM_USE_POOLS_TRY_BIGGER_POOL==1: if one malloc-pool is empty, try the next - * bigger pool - WARNING: THIS MIGHT WASTE MEMORY but it can make a system more - * reliable. */ -#ifndef MEM_USE_POOLS_TRY_BIGGER_POOL -#define MEM_USE_POOLS_TRY_BIGGER_POOL 0 -#endif - -/** - * MEMP_USE_CUSTOM_POOLS==1: whether to include a user file lwippools.h - * that defines additional pools beyond the "standard" ones required - * by lwIP. If you set this to 1, you must have lwippools.h in your - * inlude path somewhere. - */ -#ifndef MEMP_USE_CUSTOM_POOLS -#define MEMP_USE_CUSTOM_POOLS 0 -#endif - -/** - * Set this to 1 if you want to free PBUF_RAM pbufs (or call mem_free()) from - * interrupt context (or another context that doesn't allow waiting for a - * semaphore). - * If set to 1, mem_malloc will be protected by a semaphore and SYS_ARCH_PROTECT, - * while mem_free will only use SYS_ARCH_PROTECT. mem_malloc SYS_ARCH_UNPROTECTs - * with each loop so that mem_free can run. - * - * ATTENTION: As you can see from the above description, this leads to dis-/ - * enabling interrupts often, which can be slow! Also, on low memory, mem_malloc - * can need longer. - * - * If you don't want that, at least for NO_SYS=0, you can still use the following - * functions to enqueue a deallocation call which then runs in the tcpip_thread - * context: - * - pbuf_free_callback(p); - * - mem_free_callback(m); - */ -#ifndef LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT -#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0 -#endif - -/* - ------------------------------------------------ - ---------- Internal Memory Pool Sizes ---------- - ------------------------------------------------ -*/ -/** - * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF). - * If the application sends a lot of data out of ROM (or other static memory), - * this should be set high. - */ -#ifndef MEMP_NUM_PBUF -#define MEMP_NUM_PBUF 16 -#endif - -/** - * MEMP_NUM_RAW_PCB: Number of raw connection PCBs - * (requires the LWIP_RAW option) - */ -#ifndef MEMP_NUM_RAW_PCB -#define MEMP_NUM_RAW_PCB 4 -#endif - -/** - * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - * per active UDP "connection". - * (requires the LWIP_UDP option) - */ -#ifndef MEMP_NUM_UDP_PCB -#define MEMP_NUM_UDP_PCB 4 -#endif - -/** - * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections. - * (requires the LWIP_TCP option) - */ -#ifndef MEMP_NUM_TCP_PCB -#define MEMP_NUM_TCP_PCB 5 -#endif - -/** - * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. - * (requires the LWIP_TCP option) - */ -#ifndef MEMP_NUM_TCP_PCB_LISTEN -#define MEMP_NUM_TCP_PCB_LISTEN 8 -#endif - -/** - * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. - * (requires the LWIP_TCP option) - */ -#ifndef MEMP_NUM_TCP_SEG -#define MEMP_NUM_TCP_SEG 16 -#endif - -/** - * MEMP_NUM_REASSDATA: the number of simultaneously IP packets queued for - * reassembly (whole packets, not fragments!) - */ -#ifndef MEMP_NUM_REASSDATA -#define MEMP_NUM_REASSDATA 5 -#endif - -/** - * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing - * packets (pbufs) that are waiting for an ARP request (to resolve - * their destination address) to finish. - * (requires the ARP_QUEUEING option) - */ -#ifndef MEMP_NUM_ARP_QUEUE -#define MEMP_NUM_ARP_QUEUE 30 -#endif - -/** - * MEMP_NUM_IGMP_GROUP: The number of multicast groups whose network interfaces - * can be members et the same time (one per netif - allsystems group -, plus one - * per netif membership). - * (requires the LWIP_IGMP option) - */ -#ifndef MEMP_NUM_IGMP_GROUP -#define MEMP_NUM_IGMP_GROUP 8 -#endif - -/** - * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts. - * (requires NO_SYS==0) - */ -#ifndef MEMP_NUM_SYS_TIMEOUT -#define MEMP_NUM_SYS_TIMEOUT 3 -#endif - -/** - * MEMP_NUM_NETBUF: the number of struct netbufs. - * (only needed if you use the sequential API, like api_lib.c) - */ -#ifndef MEMP_NUM_NETBUF -#define MEMP_NUM_NETBUF 2 -#endif - -/** - * MEMP_NUM_NETCONN: the number of struct netconns. - * (only needed if you use the sequential API, like api_lib.c) - */ -#ifndef MEMP_NUM_NETCONN -#define MEMP_NUM_NETCONN 4 -#endif - -/** - * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used - * for callback/timeout API communication. - * (only needed if you use tcpip.c) - */ -#ifndef MEMP_NUM_TCPIP_MSG_API -#define MEMP_NUM_TCPIP_MSG_API 8 -#endif - -/** - * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used - * for incoming packets. - * (only needed if you use tcpip.c) - */ -#ifndef MEMP_NUM_TCPIP_MSG_INPKT -#define MEMP_NUM_TCPIP_MSG_INPKT 8 -#endif - -/** - * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. - */ -#ifndef PBUF_POOL_SIZE -#define PBUF_POOL_SIZE 16 -#endif - -/* - --------------------------------- - ---------- ARP options ---------- - --------------------------------- -*/ -/** - * LWIP_ARP==1: Enable ARP functionality. - */ -#ifndef LWIP_ARP -#define LWIP_ARP 1 -#endif - -/** - * ARP_TABLE_SIZE: Number of active MAC-IP address pairs cached. - */ -#ifndef ARP_TABLE_SIZE -#define ARP_TABLE_SIZE 10 -#endif - -/** - * ARP_QUEUEING==1: Outgoing packets are queued during hardware address - * resolution. - */ -#ifndef ARP_QUEUEING -#define ARP_QUEUEING 1 -#endif - -/** - * ETHARP_TRUST_IP_MAC==1: Incoming IP packets cause the ARP table to be - * updated with the source MAC and IP addresses supplied in the packet. - * You may want to disable this if you do not trust LAN peers to have the - * correct addresses, or as a limited approach to attempt to handle - * spoofing. If disabled, lwIP will need to make a new ARP request if - * the peer is not already in the ARP table, adding a little latency. - */ -#ifndef ETHARP_TRUST_IP_MAC -#define ETHARP_TRUST_IP_MAC 1 -#endif - -/** - * ETHARP_SUPPORT_VLAN==1: support receiving ethernet packets with VLAN header. - * Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check. - * If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted. - * If ETHARP_VLAN_CHECK is not defined, all traffic is accepted. - */ -#ifndef ETHARP_SUPPORT_VLAN -#define ETHARP_SUPPORT_VLAN 0 -#endif - -/* - -------------------------------- - ---------- IP options ---------- - -------------------------------- -*/ -/** - * IP_FORWARD==1: Enables the ability to forward IP packets across network - * interfaces. If you are going to run lwIP on a device with only one network - * interface, define this to 0. - */ -#ifndef IP_FORWARD -#define IP_FORWARD 0 -#endif - -/** - * IP_OPTIONS_ALLOWED: Defines the behavior for IP options. - * IP_OPTIONS_ALLOWED==0: All packets with IP options are dropped. - * IP_OPTIONS_ALLOWED==1: IP options are allowed (but not parsed). - */ -#ifndef IP_OPTIONS_ALLOWED -#define IP_OPTIONS_ALLOWED 1 -#endif - -/** - * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that - * this option does not affect outgoing packet sizes, which can be controlled - * via IP_FRAG. - */ -#ifndef IP_REASSEMBLY -#define IP_REASSEMBLY 1 -#endif - -/** - * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note - * that this option does not affect incoming packet sizes, which can be - * controlled via IP_REASSEMBLY. - */ -#ifndef IP_FRAG -#define IP_FRAG 1 -#endif - -/** - * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) - * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived - * in this time, the whole packet is discarded. - */ -#ifndef IP_REASS_MAXAGE -#define IP_REASS_MAXAGE 3 -#endif - -/** - * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. - * Since the received pbufs are enqueued, be sure to configure - * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive - * packets even if the maximum amount of fragments is enqueued for reassembly! - */ -#ifndef IP_REASS_MAX_PBUFS -#define IP_REASS_MAX_PBUFS 10 -#endif - -/** - * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP - * fragmentation. Otherwise pbufs are allocated and reference the original - * packet data to be fragmented. - */ -#ifndef IP_FRAG_USES_STATIC_BUF -#define IP_FRAG_USES_STATIC_BUF 1 -#endif - -/** - * IP_FRAG_MAX_MTU: Assumed max MTU on any interface for IP frag buffer - * (requires IP_FRAG_USES_STATIC_BUF==1) - */ -#if IP_FRAG_USES_STATIC_BUF && !defined(IP_FRAG_MAX_MTU) -#define IP_FRAG_MAX_MTU 1500 -#endif - -/** - * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. - */ -#ifndef IP_DEFAULT_TTL -#define IP_DEFAULT_TTL 255 -#endif - -/** - * IP_SOF_BROADCAST=1: Use the SOF_BROADCAST field to enable broadcast - * filter per pcb on udp and raw send operations. To enable broadcast filter - * on recv operations, you also have to set IP_SOF_BROADCAST_RECV=1. - */ -#ifndef IP_SOF_BROADCAST -#define IP_SOF_BROADCAST 0 -#endif - -/** - * IP_SOF_BROADCAST_RECV (requires IP_SOF_BROADCAST=1) enable the broadcast - * filter on recv operations. - */ -#ifndef IP_SOF_BROADCAST_RECV -#define IP_SOF_BROADCAST_RECV 0 -#endif - -/* - ---------------------------------- - ---------- ICMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_ICMP==1: Enable ICMP module inside the IP stack. - * Be careful, disable that make your product non-compliant to RFC1122 - */ -#ifndef LWIP_ICMP -#define LWIP_ICMP 1 -#endif - -/** - * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. - */ -#ifndef ICMP_TTL -#define ICMP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * LWIP_BROADCAST_PING==1: respond to broadcast pings (default is unicast only) - */ -#ifndef LWIP_BROADCAST_PING -#define LWIP_BROADCAST_PING 0 -#endif - -/** - * LWIP_MULTICAST_PING==1: respond to multicast pings (default is unicast only) - */ -#ifndef LWIP_MULTICAST_PING -#define LWIP_MULTICAST_PING 0 -#endif - -/* - --------------------------------- - ---------- RAW options ---------- - --------------------------------- -*/ -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#ifndef LWIP_RAW -#define LWIP_RAW 1 -#endif - -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#ifndef RAW_TTL -#define RAW_TTL (IP_DEFAULT_TTL) -#endif - -/* - ---------------------------------- - ---------- DHCP options ---------- - ---------------------------------- -*/ -/** - * LWIP_DHCP==1: Enable DHCP module. - */ -#ifndef LWIP_DHCP -#define LWIP_DHCP 0 -#endif - -/** - * DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address. - */ -#ifndef DHCP_DOES_ARP_CHECK -#define DHCP_DOES_ARP_CHECK ((LWIP_DHCP) && (LWIP_ARP)) -#endif - -/* - ------------------------------------ - ---------- AUTOIP options ---------- - ------------------------------------ -*/ -/** - * LWIP_AUTOIP==1: Enable AUTOIP module. - */ -#ifndef LWIP_AUTOIP -#define LWIP_AUTOIP 0 -#endif - -/** - * LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on - * the same interface at the same time. - */ -#ifndef LWIP_DHCP_AUTOIP_COOP -#define LWIP_DHCP_AUTOIP_COOP 0 -#endif - -/** - * LWIP_DHCP_AUTOIP_COOP_TRIES: Set to the number of DHCP DISCOVER probes - * that should be sent before falling back on AUTOIP. This can be set - * as low as 1 to get an AutoIP address very quickly, but you should - * be prepared to handle a changing IP address when DHCP overrides - * AutoIP. - */ -#ifndef LWIP_DHCP_AUTOIP_COOP_TRIES -#define LWIP_DHCP_AUTOIP_COOP_TRIES 9 -#endif - -/* - ---------------------------------- - ---------- SNMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP - * transport. - */ -#ifndef LWIP_SNMP -#define LWIP_SNMP 0 -#endif - -/** - * SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will - * allow. At least one request buffer is required. - */ -#ifndef SNMP_CONCURRENT_REQUESTS -#define SNMP_CONCURRENT_REQUESTS 1 -#endif - -/** - * SNMP_TRAP_DESTINATIONS: Number of trap destinations. At least one trap - * destination is required - */ -#ifndef SNMP_TRAP_DESTINATIONS -#define SNMP_TRAP_DESTINATIONS 1 -#endif - -/** - * SNMP_PRIVATE_MIB: - */ -#ifndef SNMP_PRIVATE_MIB -#define SNMP_PRIVATE_MIB 0 -#endif - -/** - * Only allow SNMP write actions that are 'safe' (e.g. disabeling netifs is not - * a safe action and disabled when SNMP_SAFE_REQUESTS = 1). - * Unsafe requests are disabled by default! - */ -#ifndef SNMP_SAFE_REQUESTS -#define SNMP_SAFE_REQUESTS 1 -#endif - -/* - ---------------------------------- - ---------- IGMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_IGMP==1: Turn on IGMP module. - */ -#ifndef LWIP_IGMP -#define LWIP_IGMP 0 -#endif - -/* - ---------------------------------- - ---------- DNS options ----------- - ---------------------------------- -*/ -/** - * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS - * transport. - */ -#ifndef LWIP_DNS -#define LWIP_DNS 0 -#endif - -/** DNS maximum number of entries to maintain locally. */ -#ifndef DNS_TABLE_SIZE -#define DNS_TABLE_SIZE 4 -#endif - -/** DNS maximum host name length supported in the name table. */ -#ifndef DNS_MAX_NAME_LENGTH -#define DNS_MAX_NAME_LENGTH 256 -#endif - -/** The maximum of DNS servers */ -#ifndef DNS_MAX_SERVERS -#define DNS_MAX_SERVERS 2 -#endif - -/** DNS do a name checking between the query and the response. */ -#ifndef DNS_DOES_NAME_CHECK -#define DNS_DOES_NAME_CHECK 1 -#endif - -/** DNS use a local buffer if DNS_USES_STATIC_BUF=0, a static one if - DNS_USES_STATIC_BUF=1, or a dynamic one if DNS_USES_STATIC_BUF=2. - The buffer will be of size DNS_MSG_SIZE */ -#ifndef DNS_USES_STATIC_BUF -#define DNS_USES_STATIC_BUF 1 -#endif - -/** DNS message max. size. Default value is RFC compliant. */ -#ifndef DNS_MSG_SIZE -#define DNS_MSG_SIZE 512 -#endif - -/** DNS_LOCAL_HOSTLIST: Implements a local host-to-address list. If enabled, - * you have to define - * #define DNS_LOCAL_HOSTLIST_INIT {{"host1", 0x123}, {"host2", 0x234}} - * (an array of structs name/address, where address is an u32_t in network - * byte order). - * - * Instead, you can also use an external function: - * #define DNS_LOOKUP_LOCAL_EXTERN(x) extern u32_t my_lookup_function(const char *name) - * that returns the IP address or INADDR_NONE if not found. - */ -#ifndef DNS_LOCAL_HOSTLIST -#define DNS_LOCAL_HOSTLIST 0 -#endif /* DNS_LOCAL_HOSTLIST */ - -/** If this is turned on, the local host-list can be dynamically changed - * at runtime. */ -#ifndef DNS_LOCAL_HOSTLIST_IS_DYNAMIC -#define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0 -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -/* - --------------------------------- - ---------- UDP options ---------- - --------------------------------- -*/ -/** - * LWIP_UDP==1: Turn on UDP. - */ -#ifndef LWIP_UDP -#define LWIP_UDP 1 -#endif - -/** - * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) - */ -#ifndef LWIP_UDPLITE -#define LWIP_UDPLITE 0 -#endif - -/** - * UDP_TTL: Default Time-To-Live value. - */ -#ifndef UDP_TTL -#define UDP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * LWIP_NETBUF_RECVINFO==1: append destination addr and port to every netbuf. - */ -#ifndef LWIP_NETBUF_RECVINFO -#define LWIP_NETBUF_RECVINFO 0 -#endif - -/* - --------------------------------- - ---------- TCP options ---------- - --------------------------------- -*/ -/** - * LWIP_TCP==1: Turn on TCP. - */ -#ifndef LWIP_TCP -#define LWIP_TCP 1 -#endif - -/** - * TCP_TTL: Default Time-To-Live value. - */ -#ifndef TCP_TTL -#define TCP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * TCP_WND: The size of a TCP window. This must be at least - * (2 * TCP_MSS) for things to work well - */ -#ifndef TCP_WND -#define TCP_WND (4 * TCP_MSS) -#endif - -/** - * TCP_MAXRTX: Maximum number of retransmissions of data segments. - */ -#ifndef TCP_MAXRTX -#define TCP_MAXRTX 12 -#endif - -/** - * TCP_SYNMAXRTX: Maximum number of retransmissions of SYN segments. - */ -#ifndef TCP_SYNMAXRTX -#define TCP_SYNMAXRTX 6 -#endif - -/** - * TCP_QUEUE_OOSEQ==1: TCP will queue segments that arrive out of order. - * Define to 0 if your device is low on memory. - */ -#ifndef TCP_QUEUE_OOSEQ -#define TCP_QUEUE_OOSEQ (LWIP_TCP) -#endif - -/** - * TCP_MSS: TCP Maximum segment size. (default is 536, a conservative default, - * you might want to increase this.) - * For the receive side, this MSS is advertised to the remote side - * when opening a connection. For the transmit size, this MSS sets - * an upper limit on the MSS advertised by the remote host. - */ -#ifndef TCP_MSS -#define TCP_MSS 536 -#endif - -/** - * TCP_CALCULATE_EFF_SEND_MSS: "The maximum size of a segment that TCP really - * sends, the 'effective send MSS,' MUST be the smaller of the send MSS (which - * reflects the available reassembly buffer size at the remote host) and the - * largest size permitted by the IP layer" (RFC 1122) - * Setting this to 1 enables code that checks TCP_MSS against the MTU of the - * netif used for a connection and limits the MSS if it would be too big otherwise. - */ -#ifndef TCP_CALCULATE_EFF_SEND_MSS -#define TCP_CALCULATE_EFF_SEND_MSS 1 -#endif - - -/** - * TCP_SND_BUF: TCP sender buffer space (bytes). - */ -#ifndef TCP_SND_BUF -#define TCP_SND_BUF 256 -#endif - -/** - * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least - * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. - */ -#ifndef TCP_SND_QUEUELEN -#define TCP_SND_QUEUELEN (4 * (TCP_SND_BUF)/(TCP_MSS)) -#endif - -/** - * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than or equal - * to TCP_SND_BUF. It is the amount of space which must be available in the - * TCP snd_buf for select to return writable. - */ -#ifndef TCP_SNDLOWAT -#define TCP_SNDLOWAT ((TCP_SND_BUF)/2) -#endif - -/** - * TCP_LISTEN_BACKLOG: Enable the backlog option for tcp listen pcb. - */ -#ifndef TCP_LISTEN_BACKLOG -#define TCP_LISTEN_BACKLOG 0 -#endif - -/** - * The maximum allowed backlog for TCP listen netconns. - * This backlog is used unless another is explicitly specified. - * 0xff is the maximum (u8_t). - */ -#ifndef TCP_DEFAULT_LISTEN_BACKLOG -#define TCP_DEFAULT_LISTEN_BACKLOG 0xff -#endif - -/** - * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option. - */ -#ifndef LWIP_TCP_TIMESTAMPS -#define LWIP_TCP_TIMESTAMPS 0 -#endif - -/** - * TCP_WND_UPDATE_THRESHOLD: difference in window to trigger an - * explicit window update - */ -#ifndef TCP_WND_UPDATE_THRESHOLD -#define TCP_WND_UPDATE_THRESHOLD (TCP_WND / 4) -#endif - -/** - * LWIP_EVENT_API and LWIP_CALLBACK_API: Only one of these should be set to 1. - * LWIP_EVENT_API==1: The user defines lwip_tcp_event() to receive all - * events (accept, sent, etc) that happen in the system. - * LWIP_CALLBACK_API==1: The PCB callback function is called directly - * for the event. - */ -#ifndef LWIP_EVENT_API -#define LWIP_EVENT_API 0 -#define LWIP_CALLBACK_API 1 -#else -#define LWIP_EVENT_API 1 -#define LWIP_CALLBACK_API 0 -#endif - - -/* - ---------------------------------- - ---------- Pbuf options ---------- - ---------------------------------- -*/ -/** - * PBUF_LINK_HLEN: the number of bytes that should be allocated for a - * link level header. The default is 14, the standard value for - * Ethernet. - */ -#ifndef PBUF_LINK_HLEN -#define PBUF_LINK_HLEN 14 -#endif - -/** - * PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. The default is - * designed to accomodate single full size TCP frame in one pbuf, including - * TCP_MSS, IP header, and link header. - */ -#ifndef PBUF_POOL_BUFSIZE -#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN) -#endif - -/* - ------------------------------------------------ - ---------- Network Interfaces options ---------- - ------------------------------------------------ -*/ -/** - * LWIP_NETIF_HOSTNAME==1: use DHCP_OPTION_HOSTNAME with netif's hostname - * field. - */ -#ifndef LWIP_NETIF_HOSTNAME -#define LWIP_NETIF_HOSTNAME 0 -#endif - -/** - * LWIP_NETIF_API==1: Support netif api (in netifapi.c) - */ -#ifndef LWIP_NETIF_API -#define LWIP_NETIF_API 0 -#endif - -/** - * LWIP_NETIF_STATUS_CALLBACK==1: Support a callback function whenever an interface - * changes its up/down status (i.e., due to DHCP IP acquistion) - */ -#ifndef LWIP_NETIF_STATUS_CALLBACK -#define LWIP_NETIF_STATUS_CALLBACK 0 -#endif - -/** - * LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface - * whenever the link changes (i.e., link down) - */ -#ifndef LWIP_NETIF_LINK_CALLBACK -#define LWIP_NETIF_LINK_CALLBACK 0 -#endif - -/** - * LWIP_NETIF_HWADDRHINT==1: Cache link-layer-address hints (e.g. table - * indices) in struct netif. TCP and UDP can make use of this to prevent - * scanning the ARP table for every sent packet. While this is faster for big - * ARP tables or many concurrent connections, it might be counterproductive - * if you have a tiny ARP table or if there never are concurrent connections. - */ -#ifndef LWIP_NETIF_HWADDRHINT -#define LWIP_NETIF_HWADDRHINT 0 -#endif - -/** - * LWIP_NETIF_LOOPBACK==1: Support sending packets with a destination IP - * address equal to the netif IP address, looping them back up the stack. - */ -#ifndef LWIP_NETIF_LOOPBACK -#define LWIP_NETIF_LOOPBACK 0 -#endif - -/** - * LWIP_LOOPBACK_MAX_PBUFS: Maximum number of pbufs on queue for loopback - * sending for each netif (0 = disabled) - */ -#ifndef LWIP_LOOPBACK_MAX_PBUFS -#define LWIP_LOOPBACK_MAX_PBUFS 0 -#endif - -/** - * LWIP_NETIF_LOOPBACK_MULTITHREADING: Indicates whether threading is enabled in - * the system, as netifs must change how they behave depending on this setting - * for the LWIP_NETIF_LOOPBACK option to work. - * Setting this is needed to avoid reentering non-reentrant functions like - * tcp_input(). - * LWIP_NETIF_LOOPBACK_MULTITHREADING==1: Indicates that the user is using a - * multithreaded environment like tcpip.c. In this case, netif->input() - * is called directly. - * LWIP_NETIF_LOOPBACK_MULTITHREADING==0: Indicates a polling (or NO_SYS) setup. - * The packets are put on a list and netif_poll() must be called in - * the main application loop. - */ -#ifndef LWIP_NETIF_LOOPBACK_MULTITHREADING -#define LWIP_NETIF_LOOPBACK_MULTITHREADING (!NO_SYS) -#endif - -/** - * LWIP_NETIF_TX_SINGLE_PBUF: if this is set to 1, lwIP tries to put all data - * to be sent into one single pbuf. This is for compatibility with DMA-enabled - * MACs that do not support scatter-gather. - * Beware that this might involve CPU-memcpy before transmitting that would not - * be needed without this flag! Use this only if you need to! - * - * @todo: TCP and IP-frag do not work with this, yet: - */ -#ifndef LWIP_NETIF_TX_SINGLE_PBUF -#define LWIP_NETIF_TX_SINGLE_PBUF 0 -#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ - -/* - ------------------------------------ - ---------- LOOPIF options ---------- - ------------------------------------ -*/ -/** - * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c - */ -#ifndef LWIP_HAVE_LOOPIF -#define LWIP_HAVE_LOOPIF 0 -#endif - -/* - ------------------------------------ - ---------- SLIPIF options ---------- - ------------------------------------ -*/ -/** - * LWIP_HAVE_SLIPIF==1: Support slip interface and slipif.c - */ -#ifndef LWIP_HAVE_SLIPIF -#define LWIP_HAVE_SLIPIF 0 -#endif - -/* - ------------------------------------ - ---------- Thread options ---------- - ------------------------------------ -*/ -/** - * TCPIP_THREAD_NAME: The name assigned to the main tcpip thread. - */ -#ifndef TCPIP_THREAD_NAME -#define TCPIP_THREAD_NAME "tcpip_thread" -#endif - -/** - * TCPIP_THREAD_STACKSIZE: The stack size used by the main tcpip thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef TCPIP_THREAD_STACKSIZE -#define TCPIP_THREAD_STACKSIZE 0 -#endif - -/** - * TCPIP_THREAD_PRIO: The priority assigned to the main tcpip thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef TCPIP_THREAD_PRIO -#define TCPIP_THREAD_PRIO 1 -#endif - -/** - * TCPIP_MBOX_SIZE: The mailbox size for the tcpip thread messages - * The queue size value itself is platform-dependent, but is passed to - * sys_mbox_new() when tcpip_init is called. - */ -#ifndef TCPIP_MBOX_SIZE -#define TCPIP_MBOX_SIZE 0 -#endif - -/** - * SLIPIF_THREAD_NAME: The name assigned to the slipif_loop thread. - */ -#ifndef SLIPIF_THREAD_NAME -#define SLIPIF_THREAD_NAME "slipif_loop" -#endif - -/** - * SLIP_THREAD_STACKSIZE: The stack size used by the slipif_loop thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef SLIPIF_THREAD_STACKSIZE -#define SLIPIF_THREAD_STACKSIZE 0 -#endif - -/** - * SLIPIF_THREAD_PRIO: The priority assigned to the slipif_loop thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef SLIPIF_THREAD_PRIO -#define SLIPIF_THREAD_PRIO 1 -#endif - -/** - * PPP_THREAD_NAME: The name assigned to the pppMain thread. - */ -#ifndef PPP_THREAD_NAME -#define PPP_THREAD_NAME "pppMain" -#endif - -/** - * PPP_THREAD_STACKSIZE: The stack size used by the pppMain thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef PPP_THREAD_STACKSIZE -#define PPP_THREAD_STACKSIZE 0 -#endif - -/** - * PPP_THREAD_PRIO: The priority assigned to the pppMain thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef PPP_THREAD_PRIO -#define PPP_THREAD_PRIO 1 -#endif - -/** - * DEFAULT_THREAD_NAME: The name assigned to any other lwIP thread. - */ -#ifndef DEFAULT_THREAD_NAME -#define DEFAULT_THREAD_NAME "lwIP" -#endif - -/** - * DEFAULT_THREAD_STACKSIZE: The stack size used by any other lwIP thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef DEFAULT_THREAD_STACKSIZE -#define DEFAULT_THREAD_STACKSIZE 0 -#endif - -/** - * DEFAULT_THREAD_PRIO: The priority assigned to any other lwIP thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef DEFAULT_THREAD_PRIO -#define DEFAULT_THREAD_PRIO 1 -#endif - -/** - * DEFAULT_RAW_RECVMBOX_SIZE: The mailbox size for the incoming packets on a - * NETCONN_RAW. The queue size value itself is platform-dependent, but is passed - * to sys_mbox_new() when the recvmbox is created. - */ -#ifndef DEFAULT_RAW_RECVMBOX_SIZE -#define DEFAULT_RAW_RECVMBOX_SIZE 0 -#endif - -/** - * DEFAULT_UDP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a - * NETCONN_UDP. The queue size value itself is platform-dependent, but is passed - * to sys_mbox_new() when the recvmbox is created. - */ -#ifndef DEFAULT_UDP_RECVMBOX_SIZE -#define DEFAULT_UDP_RECVMBOX_SIZE 0 -#endif - -/** - * DEFAULT_TCP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a - * NETCONN_TCP. The queue size value itself is platform-dependent, but is passed - * to sys_mbox_new() when the recvmbox is created. - */ -#ifndef DEFAULT_TCP_RECVMBOX_SIZE -#define DEFAULT_TCP_RECVMBOX_SIZE 0 -#endif - -/** - * DEFAULT_ACCEPTMBOX_SIZE: The mailbox size for the incoming connections. - * The queue size value itself is platform-dependent, but is passed to - * sys_mbox_new() when the acceptmbox is created. - */ -#ifndef DEFAULT_ACCEPTMBOX_SIZE -#define DEFAULT_ACCEPTMBOX_SIZE 0 -#endif - -/* - ---------------------------------------------- - ---------- Sequential layer options ---------- - ---------------------------------------------- -*/ -/** - * LWIP_TCPIP_CORE_LOCKING: (EXPERIMENTAL!) - * Don't use it if you're not an active lwIP project member - */ -#ifndef LWIP_TCPIP_CORE_LOCKING -#define LWIP_TCPIP_CORE_LOCKING 0 -#endif - -/** - * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) - */ -#ifndef LWIP_NETCONN -#define LWIP_NETCONN 1 -#endif - -/* - ------------------------------------ - ---------- Socket options ---------- - ------------------------------------ -*/ -/** - * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c) - */ -#ifndef LWIP_SOCKET -#define LWIP_SOCKET 1 -#endif - -/** - * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names. - * (only used if you use sockets.c) - */ -#ifndef LWIP_COMPAT_SOCKETS -#define LWIP_COMPAT_SOCKETS 1 -#endif - -/** - * LWIP_POSIX_SOCKETS_IO_NAMES==1: Enable POSIX-style sockets functions names. - * Disable this option if you use a POSIX operating system that uses the same - * names (read, write & close). (only used if you use sockets.c) - */ -#ifndef LWIP_POSIX_SOCKETS_IO_NAMES -#define LWIP_POSIX_SOCKETS_IO_NAMES 1 -#endif - -/** - * LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT - * options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set - * in seconds. (does not require sockets.c, and will affect tcp.c) - */ -#ifndef LWIP_TCP_KEEPALIVE -#define LWIP_TCP_KEEPALIVE 1 -#endif - -/** - * LWIP_SO_RCVTIMEO==1: Enable SO_RCVTIMEO processing. - */ -#ifndef LWIP_SO_RCVTIMEO -#define LWIP_SO_RCVTIMEO 0 -#endif - -/** - * LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing. - */ -#ifndef LWIP_SO_RCVBUF -#define LWIP_SO_RCVBUF 0 -#endif - -/** - * If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize. - */ -#ifndef RECV_BUFSIZE_DEFAULT -#define RECV_BUFSIZE_DEFAULT INT_MAX -#endif - -/** - * SO_REUSE==1: Enable SO_REUSEADDR and SO_REUSEPORT options. DO NOT USE! - */ -#ifndef SO_REUSE -#define SO_REUSE 0 -#endif - -/* - ---------------------------------------- - ---------- Statistics options ---------- - ---------------------------------------- -*/ -/** - * LWIP_STATS==1: Enable statistics collection in lwip_stats. - */ -#ifndef LWIP_STATS -#define LWIP_STATS 1 -#endif - -#if LWIP_STATS - -/** - * LWIP_STATS_DISPLAY==1: Compile in the statistics output functions. - */ -#ifndef LWIP_STATS_DISPLAY -#define LWIP_STATS_DISPLAY 0 -#endif - -/** - * LINK_STATS==1: Enable link stats. - */ -#ifndef LINK_STATS -#define LINK_STATS 1 -#endif - -/** - * ETHARP_STATS==1: Enable etharp stats. - */ -#ifndef ETHARP_STATS -#define ETHARP_STATS (LWIP_ARP) -#endif - -/** - * IP_STATS==1: Enable IP stats. - */ -#ifndef IP_STATS -#define IP_STATS 1 -#endif - -/** - * IPFRAG_STATS==1: Enable IP fragmentation stats. Default is - * on if using either frag or reass. - */ -#ifndef IPFRAG_STATS -#define IPFRAG_STATS (IP_REASSEMBLY || IP_FRAG) -#endif - -/** - * ICMP_STATS==1: Enable ICMP stats. - */ -#ifndef ICMP_STATS -#define ICMP_STATS 1 -#endif - -/** - * IGMP_STATS==1: Enable IGMP stats. - */ -#ifndef IGMP_STATS -#define IGMP_STATS (LWIP_IGMP) -#endif - -/** - * UDP_STATS==1: Enable UDP stats. Default is on if - * UDP enabled, otherwise off. - */ -#ifndef UDP_STATS -#define UDP_STATS (LWIP_UDP) -#endif - -/** - * TCP_STATS==1: Enable TCP stats. Default is on if TCP - * enabled, otherwise off. - */ -#ifndef TCP_STATS -#define TCP_STATS (LWIP_TCP) -#endif - -/** - * MEM_STATS==1: Enable mem.c stats. - */ -#ifndef MEM_STATS -#define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0)) -#endif - -/** - * MEMP_STATS==1: Enable memp.c pool stats. - */ -#ifndef MEMP_STATS -#define MEMP_STATS (MEMP_MEM_MALLOC == 0) -#endif - -/** - * SYS_STATS==1: Enable system stats (sem and mbox counts, etc). - */ -#ifndef SYS_STATS -#define SYS_STATS (NO_SYS == 0) -#endif - -#else - -#define LINK_STATS 0 -#define IP_STATS 0 -#define IPFRAG_STATS 0 -#define ICMP_STATS 0 -#define IGMP_STATS 0 -#define UDP_STATS 0 -#define TCP_STATS 0 -#define MEM_STATS 0 -#define MEMP_STATS 0 -#define SYS_STATS 0 -#define LWIP_STATS_DISPLAY 0 - -#endif /* LWIP_STATS */ - -/* - --------------------------------- - ---------- PPP options ---------- - --------------------------------- -*/ -/** - * PPP_SUPPORT==1: Enable PPP. - */ -#ifndef PPP_SUPPORT -#define PPP_SUPPORT 0 -#endif - -/** - * PPPOE_SUPPORT==1: Enable PPP Over Ethernet - */ -#ifndef PPPOE_SUPPORT -#define PPPOE_SUPPORT 0 -#endif - -/** - * PPPOS_SUPPORT==1: Enable PPP Over Serial - */ -#ifndef PPPOS_SUPPORT -#define PPPOS_SUPPORT PPP_SUPPORT -#endif - -#if PPP_SUPPORT - -/** - * NUM_PPP: Max PPP sessions. - */ -#ifndef NUM_PPP -#define NUM_PPP 1 -#endif - -/** - * PAP_SUPPORT==1: Support PAP. - */ -#ifndef PAP_SUPPORT -#define PAP_SUPPORT 0 -#endif - -/** - * CHAP_SUPPORT==1: Support CHAP. - */ -#ifndef CHAP_SUPPORT -#define CHAP_SUPPORT 0 -#endif - -/** - * MSCHAP_SUPPORT==1: Support MSCHAP. CURRENTLY NOT SUPPORTED! DO NOT SET! - */ -#ifndef MSCHAP_SUPPORT -#define MSCHAP_SUPPORT 0 -#endif - -/** - * CBCP_SUPPORT==1: Support CBCP. CURRENTLY NOT SUPPORTED! DO NOT SET! - */ -#ifndef CBCP_SUPPORT -#define CBCP_SUPPORT 0 -#endif - -/** - * CCP_SUPPORT==1: Support CCP. CURRENTLY NOT SUPPORTED! DO NOT SET! - */ -#ifndef CCP_SUPPORT -#define CCP_SUPPORT 0 -#endif - -/** - * VJ_SUPPORT==1: Support VJ header compression. - */ -#ifndef VJ_SUPPORT -#define VJ_SUPPORT 0 -#endif - -/** - * MD5_SUPPORT==1: Support MD5 (see also CHAP). - */ -#ifndef MD5_SUPPORT -#define MD5_SUPPORT 0 -#endif - -/* - * Timeouts - */ -#ifndef FSM_DEFTIMEOUT -#define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */ -#endif - -#ifndef FSM_DEFMAXTERMREQS -#define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */ -#endif - -#ifndef FSM_DEFMAXCONFREQS -#define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */ -#endif - -#ifndef FSM_DEFMAXNAKLOOPS -#define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */ -#endif - -#ifndef UPAP_DEFTIMEOUT -#define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */ -#endif - -#ifndef UPAP_DEFREQTIME -#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */ -#endif - -#ifndef CHAP_DEFTIMEOUT -#define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */ -#endif - -#ifndef CHAP_DEFTRANSMITS -#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */ -#endif - -/* Interval in seconds between keepalive echo requests, 0 to disable. */ -#ifndef LCP_ECHOINTERVAL -#define LCP_ECHOINTERVAL 0 -#endif - -/* Number of unanswered echo requests before failure. */ -#ifndef LCP_MAXECHOFAILS -#define LCP_MAXECHOFAILS 3 -#endif - -/* Max Xmit idle time (in jiffies) before resend flag char. */ -#ifndef PPP_MAXIDLEFLAG -#define PPP_MAXIDLEFLAG 100 -#endif - -/* - * Packet sizes - * - * Note - lcp shouldn't be allowed to negotiate stuff outside these - * limits. See lcp.h in the pppd directory. - * (XXX - these constants should simply be shared by lcp.c instead - * of living in lcp.h) - */ -#define PPP_MTU 1500 /* Default MTU (size of Info field) */ -#ifndef PPP_MAXMTU -/* #define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN) */ -#define PPP_MAXMTU 1500 /* Largest MTU we allow */ -#endif -#define PPP_MINMTU 64 -#define PPP_MRU 1500 /* default MRU = max length of info field */ -#define PPP_MAXMRU 1500 /* Largest MRU we allow */ -#ifndef PPP_DEFMRU -#define PPP_DEFMRU 296 /* Try for this */ -#endif -#define PPP_MINMRU 128 /* No MRUs below this */ - -#ifndef MAXNAMELEN -#define MAXNAMELEN 256 /* max length of hostname or name for auth */ -#endif -#ifndef MAXSECRETLEN -#define MAXSECRETLEN 256 /* max length of password or secret */ -#endif - -#endif /* PPP_SUPPORT */ - -/* - -------------------------------------- - ---------- Checksum options ---------- - -------------------------------------- -*/ -/** - * CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets. - */ -#ifndef CHECKSUM_GEN_IP -#define CHECKSUM_GEN_IP 1 -#endif - -/** - * CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets. - */ -#ifndef CHECKSUM_GEN_UDP -#define CHECKSUM_GEN_UDP 1 -#endif - -/** - * CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets. - */ -#ifndef CHECKSUM_GEN_TCP -#define CHECKSUM_GEN_TCP 1 -#endif - -/** - * CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets. - */ -#ifndef CHECKSUM_CHECK_IP -#define CHECKSUM_CHECK_IP 1 -#endif - -/** - * CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets. - */ -#ifndef CHECKSUM_CHECK_UDP -#define CHECKSUM_CHECK_UDP 1 -#endif - -/** - * CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets. - */ -#ifndef CHECKSUM_CHECK_TCP -#define CHECKSUM_CHECK_TCP 1 -#endif - -/* - --------------------------------------- - ---------- Debugging options ---------- - --------------------------------------- -*/ -/** - * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is - * compared against this value. If it is smaller, then debugging - * messages are written. - */ -#ifndef LWIP_DBG_MIN_LEVEL -#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL -#endif - -/** - * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable - * debug messages of certain types. - */ -#ifndef LWIP_DBG_TYPES_ON -#define LWIP_DBG_TYPES_ON LWIP_DBG_ON -#endif - -/** - * ETHARP_DEBUG: Enable debugging in etharp.c. - */ -#ifndef ETHARP_DEBUG -#define ETHARP_DEBUG LWIP_DBG_OFF -#endif - -/** - * NETIF_DEBUG: Enable debugging in netif.c. - */ -#ifndef NETIF_DEBUG -#define NETIF_DEBUG LWIP_DBG_OFF -#endif - -/** - * PBUF_DEBUG: Enable debugging in pbuf.c. - */ -#ifndef PBUF_DEBUG -#define PBUF_DEBUG LWIP_DBG_OFF -#endif - -/** - * API_LIB_DEBUG: Enable debugging in api_lib.c. - */ -#ifndef API_LIB_DEBUG -#define API_LIB_DEBUG LWIP_DBG_OFF -#endif - -/** - * API_MSG_DEBUG: Enable debugging in api_msg.c. - */ -#ifndef API_MSG_DEBUG -#define API_MSG_DEBUG LWIP_DBG_OFF -#endif - -/** - * SOCKETS_DEBUG: Enable debugging in sockets.c. - */ -#ifndef SOCKETS_DEBUG -#define SOCKETS_DEBUG LWIP_DBG_OFF -#endif - -/** - * ICMP_DEBUG: Enable debugging in icmp.c. - */ -#ifndef ICMP_DEBUG -#define ICMP_DEBUG LWIP_DBG_OFF -#endif - -/** - * IGMP_DEBUG: Enable debugging in igmp.c. - */ -#ifndef IGMP_DEBUG -#define IGMP_DEBUG LWIP_DBG_OFF -#endif - -/** - * INET_DEBUG: Enable debugging in inet.c. - */ -#ifndef INET_DEBUG -#define INET_DEBUG LWIP_DBG_OFF -#endif - -/** - * IP_DEBUG: Enable debugging for IP. - */ -#ifndef IP_DEBUG -#define IP_DEBUG LWIP_DBG_OFF -#endif - -/** - * IP_REASS_DEBUG: Enable debugging in ip_frag.c for both frag & reass. - */ -#ifndef IP_REASS_DEBUG -#define IP_REASS_DEBUG LWIP_DBG_OFF -#endif - -/** - * RAW_DEBUG: Enable debugging in raw.c. - */ -#ifndef RAW_DEBUG -#define RAW_DEBUG LWIP_DBG_OFF -#endif - -/** - * MEM_DEBUG: Enable debugging in mem.c. - */ -#ifndef MEM_DEBUG -#define MEM_DEBUG LWIP_DBG_OFF -#endif - -/** - * MEMP_DEBUG: Enable debugging in memp.c. - */ -#ifndef MEMP_DEBUG -#define MEMP_DEBUG LWIP_DBG_OFF -#endif - -/** - * SYS_DEBUG: Enable debugging in sys.c. - */ -#ifndef SYS_DEBUG -#define SYS_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_DEBUG: Enable debugging for TCP. - */ -#ifndef TCP_DEBUG -#define TCP_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_INPUT_DEBUG: Enable debugging in tcp_in.c for incoming debug. - */ -#ifndef TCP_INPUT_DEBUG -#define TCP_INPUT_DEBUG LWIP_DBG_ON -#endif - -/** - * TCP_FR_DEBUG: Enable debugging in tcp_in.c for fast retransmit. - */ -#ifndef TCP_FR_DEBUG -#define TCP_FR_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_RTO_DEBUG: Enable debugging in TCP for retransmit - * timeout. - */ -#ifndef TCP_RTO_DEBUG -#define TCP_RTO_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_CWND_DEBUG: Enable debugging for TCP congestion window. - */ -#ifndef TCP_CWND_DEBUG -#define TCP_CWND_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_WND_DEBUG: Enable debugging in tcp_in.c for window updating. - */ -#ifndef TCP_WND_DEBUG -#define TCP_WND_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_OUTPUT_DEBUG: Enable debugging in tcp_out.c output functions. - */ -#ifndef TCP_OUTPUT_DEBUG -#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_RST_DEBUG: Enable debugging for TCP with the RST message. - */ -#ifndef TCP_RST_DEBUG -#define TCP_RST_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_QLEN_DEBUG: Enable debugging for TCP queue lengths. - */ -#ifndef TCP_QLEN_DEBUG -#define TCP_QLEN_DEBUG LWIP_DBG_OFF -#endif - -/** - * UDP_DEBUG: Enable debugging in UDP. - */ -#ifndef UDP_DEBUG -#define UDP_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCPIP_DEBUG: Enable debugging in tcpip.c. - */ -#ifndef TCPIP_DEBUG -#define TCPIP_DEBUG LWIP_DBG_OFF -#endif - -/** - * PPP_DEBUG: Enable debugging for PPP. - */ -#ifndef PPP_DEBUG -#define PPP_DEBUG LWIP_DBG_OFF -#endif - -/** - * SLIP_DEBUG: Enable debugging in slipif.c. - */ -#ifndef SLIP_DEBUG -#define SLIP_DEBUG LWIP_DBG_OFF -#endif - -/** - * DHCP_DEBUG: Enable debugging in dhcp.c. - */ -#ifndef DHCP_DEBUG -#define DHCP_DEBUG LWIP_DBG_OFF -#endif - -/** - * AUTOIP_DEBUG: Enable debugging in autoip.c. - */ -#ifndef AUTOIP_DEBUG -#define AUTOIP_DEBUG LWIP_DBG_OFF -#endif - -/** - * SNMP_MSG_DEBUG: Enable debugging for SNMP messages. - */ -#ifndef SNMP_MSG_DEBUG -#define SNMP_MSG_DEBUG LWIP_DBG_OFF -#endif - -/** - * SNMP_MIB_DEBUG: Enable debugging for SNMP MIBs. - */ -#ifndef SNMP_MIB_DEBUG -#define SNMP_MIB_DEBUG LWIP_DBG_OFF -#endif - -/** - * DNS_DEBUG: Enable debugging for DNS. - */ -#ifndef DNS_DEBUG -#define DNS_DEBUG LWIP_DBG_OFF -#endif - -#endif /* __LWIP_OPT_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/pbuf.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/pbuf.h deleted file mode 100644 index 8ca61b1..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/pbuf.h +++ /dev/null @@ -1,122 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#ifndef __LWIP_PBUF_H__ -#define __LWIP_PBUF_H__ - -#include "lwip/opt.h" -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define PBUF_TRANSPORT_HLEN 20 -#define PBUF_IP_HLEN 20 - -typedef enum { - PBUF_TRANSPORT, - PBUF_IP, - PBUF_LINK, - PBUF_RAW -} pbuf_layer; - -typedef enum { - PBUF_RAM, /* pbuf data is stored in RAM */ - PBUF_ROM, /* pbuf data is stored in ROM */ - PBUF_REF, /* pbuf comes from the pbuf pool */ - PBUF_POOL /* pbuf payload refers to RAM */ -} pbuf_type; - - -/** indicates this packet's data should be immediately passed to the application */ -#define PBUF_FLAG_PUSH 0x01U - -struct pbuf { - /** next pbuf in singly linked pbuf chain */ - struct pbuf *next; - - /** pointer to the actual data in the buffer */ - void *payload; - - /** - * total length of this buffer and all next buffers in chain - * belonging to the same packet. - * - * For non-queue packet chains this is the invariant: - * p->tot_len == p->len + (p->next? p->next->tot_len: 0) - */ - u16_t tot_len; - - /** length of this buffer */ - u16_t len; - - /** pbuf_type as u8_t instead of enum to save space */ - u8_t /*pbuf_type*/ type; - - /** misc flags */ - u8_t flags; - - /** - * the reference count always equals the number of pointers - * that refer to this pbuf. This can be pointers from an application, - * the stack itself, or pbuf->next pointers from a chain. - */ - u16_t ref; - -}; - -/* Initializes the pbuf module. This call is empty for now, but may not be in future. */ -#define pbuf_init() - -struct pbuf *pbuf_alloc(pbuf_layer l, u16_t size, pbuf_type type); -void pbuf_realloc(struct pbuf *p, u16_t size); -u8_t pbuf_header(struct pbuf *p, s16_t header_size); -void pbuf_ref(struct pbuf *p); -void pbuf_ref_chain(struct pbuf *p); -u8_t pbuf_free(struct pbuf *p); -u8_t pbuf_clen(struct pbuf *p); -void pbuf_cat(struct pbuf *head, struct pbuf *tail); -void pbuf_chain(struct pbuf *head, struct pbuf *tail); -struct pbuf *pbuf_dechain(struct pbuf *p); -err_t pbuf_copy(struct pbuf *p_to, struct pbuf *p_from); -u16_t pbuf_copy_partial(struct pbuf *p, void *dataptr, u16_t len, u16_t offset); -err_t pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len); -struct pbuf *pbuf_coalesce(struct pbuf *p, pbuf_layer layer); - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_PBUF_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/raw.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/raw.h deleted file mode 100644 index 545c433..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/raw.h +++ /dev/null @@ -1,99 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_RAW_H__ -#define __LWIP_RAW_H__ - -#include "lwip/opt.h" - -#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/inet.h" -#include "lwip/ip.h" -#include "lwip/ip_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct raw_pcb { -/* Common members of all PCB types */ - IP_PCB; - - struct raw_pcb *next; - - u8_t protocol; - - /* receive callback function - * @param arg user supplied argument (raw_pcb.recv_arg) - * @param pcb the raw_pcb which received data - * @param p the packet buffer that was received - * @param addr the remote IP address from which the packet was received - * @return 1 if the packet was 'eaten' (aka. deleted), - * 0 if the packet lives on - * If returning 1, the callback is responsible for freeing the pbuf - * if it's not used any more. - */ - u8_t (* recv)(void *arg, struct raw_pcb *pcb, struct pbuf *p, - struct ip_addr *addr); - /* user-supplied argument for the recv callback */ - void *recv_arg; -}; - -/* The following functions is the application layer interface to the - RAW code. */ -struct raw_pcb * raw_new (u8_t proto); -void raw_remove (struct raw_pcb *pcb); -err_t raw_bind (struct raw_pcb *pcb, struct ip_addr *ipaddr); -err_t raw_connect (struct raw_pcb *pcb, struct ip_addr *ipaddr); - -void raw_recv (struct raw_pcb *pcb, - u8_t (* recv)(void *arg, struct raw_pcb *pcb, - struct pbuf *p, - struct ip_addr *addr), - void *recv_arg); -err_t raw_sendto (struct raw_pcb *pcb, struct pbuf *p, struct ip_addr *ipaddr); -err_t raw_send (struct raw_pcb *pcb, struct pbuf *p); - -/* The following functions are the lower layer interface to RAW. */ -u8_t raw_input (struct pbuf *p, struct netif *inp); -#define raw_init() /* Compatibility define, not init needed. */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_RAW */ - -#endif /* __LWIP_RAW_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sio.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sio.h deleted file mode 100644 index 10eabcf..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sio.h +++ /dev/null @@ -1,143 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - */ - -/* - * This is the interface to the platform specific serial IO module - * It needs to be implemented by those platforms which need SLIP or PPP - */ - -#ifndef __SIO_H__ -#define __SIO_H__ - -#include "lwip/arch.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* If you want to define sio_fd_t elsewhere or differently, - define this in your cc.h file. */ -#ifndef __sio_fd_t_defined -typedef void * sio_fd_t; -#endif - -/* The following functions can be defined to something else in your cc.h file - or be implemented in your custom sio.c file. */ - -#ifndef sio_open -/** - * Opens a serial device for communication. - * - * @param devnum device number - * @return handle to serial device if successful, NULL otherwise - */ -sio_fd_t sio_open(u8_t devnum); -#endif - -#ifndef sio_send -/** - * Sends a single character to the serial device. - * - * @param c character to send - * @param fd serial device handle - * - * @note This function will block until the character can be sent. - */ -void sio_send(u8_t c, sio_fd_t fd); -#endif - -#ifndef sio_recv -/** - * Receives a single character from the serial device. - * - * @param fd serial device handle - * - * @note This function will block until a character is received. - */ -u8_t sio_recv(sio_fd_t fd); -#endif - -#ifndef sio_read -/** - * Reads from the serial device. - * - * @param fd serial device handle - * @param data pointer to data buffer for receiving - * @param len maximum length (in bytes) of data to receive - * @return number of bytes actually received - may be 0 if aborted by sio_read_abort - * - * @note This function will block until data can be received. The blocking - * can be cancelled by calling sio_read_abort(). - */ -u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len); -#endif - -#ifndef sio_tryread -/** - * Tries to read from the serial device. Same as sio_read but returns - * immediately if no data is available and never blocks. - * - * @param fd serial device handle - * @param data pointer to data buffer for receiving - * @param len maximum length (in bytes) of data to receive - * @return number of bytes actually received - */ -u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len); -#endif - -#ifndef sio_write -/** - * Writes to the serial device. - * - * @param fd serial device handle - * @param data pointer to data to send - * @param len length (in bytes) of data to send - * @return number of bytes actually sent - * - * @note This function will block until all data can be sent. - */ -u32_t sio_write(sio_fd_t fd, u8_t *data, u32_t len); -#endif - -#ifndef sio_read_abort -/** - * Aborts a blocking sio_read() call. - * - * @param fd serial device handle - */ -void sio_read_abort(sio_fd_t fd); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __SIO_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp.h deleted file mode 100644 index b87717f..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp.h +++ /dev/null @@ -1,366 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001, 2002 Leon Woestenberg - * Copyright (c) 2001, 2002 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Leon Woestenberg - * - */ -#ifndef __LWIP_SNMP_H__ -#define __LWIP_SNMP_H__ - -#include "lwip/opt.h" -#include "lwip/netif.h" -#include "lwip/udp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @see RFC1213, "MIB-II, 6. Definitions" - */ -enum snmp_ifType { - snmp_ifType_other=1, /* none of the following */ - snmp_ifType_regular1822, - snmp_ifType_hdh1822, - snmp_ifType_ddn_x25, - snmp_ifType_rfc877_x25, - snmp_ifType_ethernet_csmacd, - snmp_ifType_iso88023_csmacd, - snmp_ifType_iso88024_tokenBus, - snmp_ifType_iso88025_tokenRing, - snmp_ifType_iso88026_man, - snmp_ifType_starLan, - snmp_ifType_proteon_10Mbit, - snmp_ifType_proteon_80Mbit, - snmp_ifType_hyperchannel, - snmp_ifType_fddi, - snmp_ifType_lapb, - snmp_ifType_sdlc, - snmp_ifType_ds1, /* T-1 */ - snmp_ifType_e1, /* european equiv. of T-1 */ - snmp_ifType_basicISDN, - snmp_ifType_primaryISDN, /* proprietary serial */ - snmp_ifType_propPointToPointSerial, - snmp_ifType_ppp, - snmp_ifType_softwareLoopback, - snmp_ifType_eon, /* CLNP over IP [11] */ - snmp_ifType_ethernet_3Mbit, - snmp_ifType_nsip, /* XNS over IP */ - snmp_ifType_slip, /* generic SLIP */ - snmp_ifType_ultra, /* ULTRA technologies */ - snmp_ifType_ds3, /* T-3 */ - snmp_ifType_sip, /* SMDS */ - snmp_ifType_frame_relay -}; - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -/** SNMP "sysuptime" Interval */ -#define SNMP_SYSUPTIME_INTERVAL 10 - -/** fixed maximum length for object identifier type */ -#define LWIP_SNMP_OBJ_ID_LEN 32 - -/** internal object identifier representation */ -struct snmp_obj_id -{ - u8_t len; - s32_t id[LWIP_SNMP_OBJ_ID_LEN]; -}; - -/* system */ -void snmp_set_sysdesr(u8_t* str, u8_t* len); -void snmp_set_sysobjid(struct snmp_obj_id *oid); -void snmp_get_sysobjid_ptr(struct snmp_obj_id **oid); -void snmp_inc_sysuptime(void); -void snmp_add_sysuptime(u32_t value); -void snmp_get_sysuptime(u32_t *value); -void snmp_set_syscontact(u8_t *ocstr, u8_t *ocstrlen); -void snmp_set_sysname(u8_t *ocstr, u8_t *ocstrlen); -void snmp_set_syslocation(u8_t *ocstr, u8_t *ocstrlen); - -/* network interface */ -void snmp_add_ifinoctets(struct netif *ni, u32_t value); -void snmp_inc_ifinucastpkts(struct netif *ni); -void snmp_inc_ifinnucastpkts(struct netif *ni); -void snmp_inc_ifindiscards(struct netif *ni); -void snmp_add_ifoutoctets(struct netif *ni, u32_t value); -void snmp_inc_ifoutucastpkts(struct netif *ni); -void snmp_inc_ifoutnucastpkts(struct netif *ni); -void snmp_inc_ifoutdiscards(struct netif *ni); -void snmp_inc_iflist(void); -void snmp_dec_iflist(void); - -/* ARP (for atTable and ipNetToMediaTable) */ -void snmp_insert_arpidx_tree(struct netif *ni, struct ip_addr *ip); -void snmp_delete_arpidx_tree(struct netif *ni, struct ip_addr *ip); - -/* IP */ -void snmp_inc_ipinreceives(void); -void snmp_inc_ipinhdrerrors(void); -void snmp_inc_ipinaddrerrors(void); -void snmp_inc_ipforwdatagrams(void); -void snmp_inc_ipinunknownprotos(void); -void snmp_inc_ipindiscards(void); -void snmp_inc_ipindelivers(void); -void snmp_inc_ipoutrequests(void); -void snmp_inc_ipoutdiscards(void); -void snmp_inc_ipoutnoroutes(void); -void snmp_inc_ipreasmreqds(void); -void snmp_inc_ipreasmoks(void); -void snmp_inc_ipreasmfails(void); -void snmp_inc_ipfragoks(void); -void snmp_inc_ipfragfails(void); -void snmp_inc_ipfragcreates(void); -void snmp_inc_iproutingdiscards(void); -void snmp_insert_ipaddridx_tree(struct netif *ni); -void snmp_delete_ipaddridx_tree(struct netif *ni); -void snmp_insert_iprteidx_tree(u8_t dflt, struct netif *ni); -void snmp_delete_iprteidx_tree(u8_t dflt, struct netif *ni); - -/* ICMP */ -void snmp_inc_icmpinmsgs(void); -void snmp_inc_icmpinerrors(void); -void snmp_inc_icmpindestunreachs(void); -void snmp_inc_icmpintimeexcds(void); -void snmp_inc_icmpinparmprobs(void); -void snmp_inc_icmpinsrcquenchs(void); -void snmp_inc_icmpinredirects(void); -void snmp_inc_icmpinechos(void); -void snmp_inc_icmpinechoreps(void); -void snmp_inc_icmpintimestamps(void); -void snmp_inc_icmpintimestampreps(void); -void snmp_inc_icmpinaddrmasks(void); -void snmp_inc_icmpinaddrmaskreps(void); -void snmp_inc_icmpoutmsgs(void); -void snmp_inc_icmpouterrors(void); -void snmp_inc_icmpoutdestunreachs(void); -void snmp_inc_icmpouttimeexcds(void); -void snmp_inc_icmpoutparmprobs(void); -void snmp_inc_icmpoutsrcquenchs(void); -void snmp_inc_icmpoutredirects(void); -void snmp_inc_icmpoutechos(void); -void snmp_inc_icmpoutechoreps(void); -void snmp_inc_icmpouttimestamps(void); -void snmp_inc_icmpouttimestampreps(void); -void snmp_inc_icmpoutaddrmasks(void); -void snmp_inc_icmpoutaddrmaskreps(void); - -/* TCP */ -void snmp_inc_tcpactiveopens(void); -void snmp_inc_tcppassiveopens(void); -void snmp_inc_tcpattemptfails(void); -void snmp_inc_tcpestabresets(void); -void snmp_inc_tcpinsegs(void); -void snmp_inc_tcpoutsegs(void); -void snmp_inc_tcpretranssegs(void); -void snmp_inc_tcpinerrs(void); -void snmp_inc_tcpoutrsts(void); - -/* UDP */ -void snmp_inc_udpindatagrams(void); -void snmp_inc_udpnoports(void); -void snmp_inc_udpinerrors(void); -void snmp_inc_udpoutdatagrams(void); -void snmp_insert_udpidx_tree(struct udp_pcb *pcb); -void snmp_delete_udpidx_tree(struct udp_pcb *pcb); - -/* SNMP */ -void snmp_inc_snmpinpkts(void); -void snmp_inc_snmpoutpkts(void); -void snmp_inc_snmpinbadversions(void); -void snmp_inc_snmpinbadcommunitynames(void); -void snmp_inc_snmpinbadcommunityuses(void); -void snmp_inc_snmpinasnparseerrs(void); -void snmp_inc_snmpintoobigs(void); -void snmp_inc_snmpinnosuchnames(void); -void snmp_inc_snmpinbadvalues(void); -void snmp_inc_snmpinreadonlys(void); -void snmp_inc_snmpingenerrs(void); -void snmp_add_snmpintotalreqvars(u8_t value); -void snmp_add_snmpintotalsetvars(u8_t value); -void snmp_inc_snmpingetrequests(void); -void snmp_inc_snmpingetnexts(void); -void snmp_inc_snmpinsetrequests(void); -void snmp_inc_snmpingetresponses(void); -void snmp_inc_snmpintraps(void); -void snmp_inc_snmpouttoobigs(void); -void snmp_inc_snmpoutnosuchnames(void); -void snmp_inc_snmpoutbadvalues(void); -void snmp_inc_snmpoutgenerrs(void); -void snmp_inc_snmpoutgetrequests(void); -void snmp_inc_snmpoutgetnexts(void); -void snmp_inc_snmpoutsetrequests(void); -void snmp_inc_snmpoutgetresponses(void); -void snmp_inc_snmpouttraps(void); -void snmp_get_snmpgrpid_ptr(struct snmp_obj_id **oid); -void snmp_set_snmpenableauthentraps(u8_t *value); -void snmp_get_snmpenableauthentraps(u8_t *value); - -/* LWIP_SNMP support not available */ -/* define everything to be empty */ -#else - -/* system */ -#define snmp_set_sysdesr(str, len) -#define snmp_set_sysobjid(oid); -#define snmp_get_sysobjid_ptr(oid) -#define snmp_inc_sysuptime() -#define snmp_add_sysuptime(value) -#define snmp_get_sysuptime(value) -#define snmp_set_syscontact(ocstr, ocstrlen); -#define snmp_set_sysname(ocstr, ocstrlen); -#define snmp_set_syslocation(ocstr, ocstrlen); - -/* network interface */ -#define snmp_add_ifinoctets(ni,value) -#define snmp_inc_ifinucastpkts(ni) -#define snmp_inc_ifinnucastpkts(ni) -#define snmp_inc_ifindiscards(ni) -#define snmp_add_ifoutoctets(ni,value) -#define snmp_inc_ifoutucastpkts(ni) -#define snmp_inc_ifoutnucastpkts(ni) -#define snmp_inc_ifoutdiscards(ni) -#define snmp_inc_iflist() -#define snmp_dec_iflist() - -/* ARP */ -#define snmp_insert_arpidx_tree(ni,ip) -#define snmp_delete_arpidx_tree(ni,ip) - -/* IP */ -#define snmp_inc_ipinreceives() -#define snmp_inc_ipinhdrerrors() -#define snmp_inc_ipinaddrerrors() -#define snmp_inc_ipforwdatagrams() -#define snmp_inc_ipinunknownprotos() -#define snmp_inc_ipindiscards() -#define snmp_inc_ipindelivers() -#define snmp_inc_ipoutrequests() -#define snmp_inc_ipoutdiscards() -#define snmp_inc_ipoutnoroutes() -#define snmp_inc_ipreasmreqds() -#define snmp_inc_ipreasmoks() -#define snmp_inc_ipreasmfails() -#define snmp_inc_ipfragoks() -#define snmp_inc_ipfragfails() -#define snmp_inc_ipfragcreates() -#define snmp_inc_iproutingdiscards() -#define snmp_insert_ipaddridx_tree(ni) -#define snmp_delete_ipaddridx_tree(ni) -#define snmp_insert_iprteidx_tree(dflt, ni) -#define snmp_delete_iprteidx_tree(dflt, ni) - -/* ICMP */ -#define snmp_inc_icmpinmsgs() -#define snmp_inc_icmpinerrors() -#define snmp_inc_icmpindestunreachs() -#define snmp_inc_icmpintimeexcds() -#define snmp_inc_icmpinparmprobs() -#define snmp_inc_icmpinsrcquenchs() -#define snmp_inc_icmpinredirects() -#define snmp_inc_icmpinechos() -#define snmp_inc_icmpinechoreps() -#define snmp_inc_icmpintimestamps() -#define snmp_inc_icmpintimestampreps() -#define snmp_inc_icmpinaddrmasks() -#define snmp_inc_icmpinaddrmaskreps() -#define snmp_inc_icmpoutmsgs() -#define snmp_inc_icmpouterrors() -#define snmp_inc_icmpoutdestunreachs() -#define snmp_inc_icmpouttimeexcds() -#define snmp_inc_icmpoutparmprobs() -#define snmp_inc_icmpoutsrcquenchs() -#define snmp_inc_icmpoutredirects() -#define snmp_inc_icmpoutechos() -#define snmp_inc_icmpoutechoreps() -#define snmp_inc_icmpouttimestamps() -#define snmp_inc_icmpouttimestampreps() -#define snmp_inc_icmpoutaddrmasks() -#define snmp_inc_icmpoutaddrmaskreps() -/* TCP */ -#define snmp_inc_tcpactiveopens() -#define snmp_inc_tcppassiveopens() -#define snmp_inc_tcpattemptfails() -#define snmp_inc_tcpestabresets() -#define snmp_inc_tcpinsegs() -#define snmp_inc_tcpoutsegs() -#define snmp_inc_tcpretranssegs() -#define snmp_inc_tcpinerrs() -#define snmp_inc_tcpoutrsts() - -/* UDP */ -#define snmp_inc_udpindatagrams() -#define snmp_inc_udpnoports() -#define snmp_inc_udpinerrors() -#define snmp_inc_udpoutdatagrams() -#define snmp_insert_udpidx_tree(pcb) -#define snmp_delete_udpidx_tree(pcb) - -/* SNMP */ -#define snmp_inc_snmpinpkts() -#define snmp_inc_snmpoutpkts() -#define snmp_inc_snmpinbadversions() -#define snmp_inc_snmpinbadcommunitynames() -#define snmp_inc_snmpinbadcommunityuses() -#define snmp_inc_snmpinasnparseerrs() -#define snmp_inc_snmpintoobigs() -#define snmp_inc_snmpinnosuchnames() -#define snmp_inc_snmpinbadvalues() -#define snmp_inc_snmpinreadonlys() -#define snmp_inc_snmpingenerrs() -#define snmp_add_snmpintotalreqvars(value) -#define snmp_add_snmpintotalsetvars(value) -#define snmp_inc_snmpingetrequests() -#define snmp_inc_snmpingetnexts() -#define snmp_inc_snmpinsetrequests() -#define snmp_inc_snmpingetresponses() -#define snmp_inc_snmpintraps() -#define snmp_inc_snmpouttoobigs() -#define snmp_inc_snmpoutnosuchnames() -#define snmp_inc_snmpoutbadvalues() -#define snmp_inc_snmpoutgenerrs() -#define snmp_inc_snmpoutgetrequests() -#define snmp_inc_snmpoutgetnexts() -#define snmp_inc_snmpoutsetrequests() -#define snmp_inc_snmpoutgetresponses() -#define snmp_inc_snmpouttraps() -#define snmp_get_snmpgrpid_ptr(oid) -#define snmp_set_snmpenableauthentraps(value) -#define snmp_get_snmpenableauthentraps(value) - -#endif /* LWIP_SNMP */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_SNMP_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h deleted file mode 100644 index a40d5ef..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h +++ /dev/null @@ -1,103 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Abstract Syntax Notation One (ISO 8824, 8825) codec. - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * Author: Christiaan Simons - */ - -#ifndef __LWIP_SNMP_ASN1_H__ -#define __LWIP_SNMP_ASN1_H__ - -#include "lwip/opt.h" -#include "lwip/err.h" -#include "lwip/pbuf.h" -#include "lwip/snmp.h" - -#if LWIP_SNMP - -#ifdef __cplusplus -extern "C" { -#endif - -#define SNMP_ASN1_UNIV (!0x80 | !0x40) -#define SNMP_ASN1_APPLIC (!0x80 | 0x40) -#define SNMP_ASN1_CONTXT ( 0x80 | !0x40) - -#define SNMP_ASN1_CONSTR (0x20) -#define SNMP_ASN1_PRIMIT (!0x20) - -/* universal tags */ -#define SNMP_ASN1_INTEG 2 -#define SNMP_ASN1_OC_STR 4 -#define SNMP_ASN1_NUL 5 -#define SNMP_ASN1_OBJ_ID 6 -#define SNMP_ASN1_SEQ 16 - -/* application specific (SNMP) tags */ -#define SNMP_ASN1_IPADDR 0 /* octet string size(4) */ -#define SNMP_ASN1_COUNTER 1 /* u32_t */ -#define SNMP_ASN1_GAUGE 2 /* u32_t */ -#define SNMP_ASN1_TIMETICKS 3 /* u32_t */ -#define SNMP_ASN1_OPAQUE 4 /* octet string */ - -/* context specific (SNMP) tags */ -#define SNMP_ASN1_PDU_GET_REQ 0 -#define SNMP_ASN1_PDU_GET_NEXT_REQ 1 -#define SNMP_ASN1_PDU_GET_RESP 2 -#define SNMP_ASN1_PDU_SET_REQ 3 -#define SNMP_ASN1_PDU_TRAP 4 - -err_t snmp_asn1_dec_type(struct pbuf *p, u16_t ofs, u8_t *type); -err_t snmp_asn1_dec_length(struct pbuf *p, u16_t ofs, u8_t *octets_used, u16_t *length); -err_t snmp_asn1_dec_u32t(struct pbuf *p, u16_t ofs, u16_t len, u32_t *value); -err_t snmp_asn1_dec_s32t(struct pbuf *p, u16_t ofs, u16_t len, s32_t *value); -err_t snmp_asn1_dec_oid(struct pbuf *p, u16_t ofs, u16_t len, struct snmp_obj_id *oid); -err_t snmp_asn1_dec_raw(struct pbuf *p, u16_t ofs, u16_t len, u16_t raw_len, u8_t *raw); - -void snmp_asn1_enc_length_cnt(u16_t length, u8_t *octets_needed); -void snmp_asn1_enc_u32t_cnt(u32_t value, u16_t *octets_needed); -void snmp_asn1_enc_s32t_cnt(s32_t value, u16_t *octets_needed); -void snmp_asn1_enc_oid_cnt(u8_t ident_len, s32_t *ident, u16_t *octets_needed); -err_t snmp_asn1_enc_type(struct pbuf *p, u16_t ofs, u8_t type); -err_t snmp_asn1_enc_length(struct pbuf *p, u16_t ofs, u16_t length); -err_t snmp_asn1_enc_u32t(struct pbuf *p, u16_t ofs, u8_t octets_needed, u32_t value); -err_t snmp_asn1_enc_s32t(struct pbuf *p, u16_t ofs, u8_t octets_needed, s32_t value); -err_t snmp_asn1_enc_oid(struct pbuf *p, u16_t ofs, u8_t ident_len, s32_t *ident); -err_t snmp_asn1_enc_raw(struct pbuf *p, u16_t ofs, u8_t raw_len, u8_t *raw); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SNMP */ - -#endif /* __LWIP_SNMP_ASN1_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h deleted file mode 100644 index 6e50a61..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h +++ /dev/null @@ -1,313 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * SNMP Agent message handling structures. - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * Author: Christiaan Simons - */ - -#ifndef __LWIP_SNMP_MSG_H__ -#define __LWIP_SNMP_MSG_H__ - -#include "lwip/opt.h" -#include "lwip/snmp.h" -#include "lwip/snmp_structs.h" - -#if LWIP_SNMP - -#if SNMP_PRIVATE_MIB -#include "private_mib.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* The listen port of the SNMP agent. Clients have to make their requests to - this port. Most standard clients won't work if you change this! */ -#ifndef SNMP_IN_PORT -#define SNMP_IN_PORT 161 -#endif -/* The remote port the SNMP agent sends traps to. Most standard trap sinks won't - work if you change this! */ -#ifndef SNMP_TRAP_PORT -#define SNMP_TRAP_PORT 162 -#endif - -#define SNMP_ES_NOERROR 0 -#define SNMP_ES_TOOBIG 1 -#define SNMP_ES_NOSUCHNAME 2 -#define SNMP_ES_BADVALUE 3 -#define SNMP_ES_READONLY 4 -#define SNMP_ES_GENERROR 5 - -#define SNMP_GENTRAP_COLDSTART 0 -#define SNMP_GENTRAP_WARMSTART 1 -#define SNMP_GENTRAP_AUTHFAIL 4 -#define SNMP_GENTRAP_ENTERPRISESPC 6 - -struct snmp_varbind -{ - /* next pointer, NULL for last in list */ - struct snmp_varbind *next; - /* previous pointer, NULL for first in list */ - struct snmp_varbind *prev; - - /* object identifier length (in s32_t) */ - u8_t ident_len; - /* object identifier array */ - s32_t *ident; - - /* object value ASN1 type */ - u8_t value_type; - /* object value length (in u8_t) */ - u8_t value_len; - /* object value */ - void *value; - - /* encoding varbind seq length length */ - u8_t seqlenlen; - /* encoding object identifier length length */ - u8_t olenlen; - /* encoding object value length length */ - u8_t vlenlen; - /* encoding varbind seq length */ - u16_t seqlen; - /* encoding object identifier length */ - u16_t olen; - /* encoding object value length */ - u16_t vlen; -}; - -struct snmp_varbind_root -{ - struct snmp_varbind *head; - struct snmp_varbind *tail; - /* number of variable bindings in list */ - u8_t count; - /* encoding varbind-list seq length length */ - u8_t seqlenlen; - /* encoding varbind-list seq length */ - u16_t seqlen; -}; - -/** output response message header length fields */ -struct snmp_resp_header_lengths -{ - /* encoding error-index length length */ - u8_t erridxlenlen; - /* encoding error-status length length */ - u8_t errstatlenlen; - /* encoding request id length length */ - u8_t ridlenlen; - /* encoding pdu length length */ - u8_t pdulenlen; - /* encoding community length length */ - u8_t comlenlen; - /* encoding version length length */ - u8_t verlenlen; - /* encoding sequence length length */ - u8_t seqlenlen; - - /* encoding error-index length */ - u16_t erridxlen; - /* encoding error-status length */ - u16_t errstatlen; - /* encoding request id length */ - u16_t ridlen; - /* encoding pdu length */ - u16_t pdulen; - /* encoding community length */ - u16_t comlen; - /* encoding version length */ - u16_t verlen; - /* encoding sequence length */ - u16_t seqlen; -}; - -/** output response message header length fields */ -struct snmp_trap_header_lengths -{ - /* encoding timestamp length length */ - u8_t tslenlen; - /* encoding specific-trap length length */ - u8_t strplenlen; - /* encoding generic-trap length length */ - u8_t gtrplenlen; - /* encoding agent-addr length length */ - u8_t aaddrlenlen; - /* encoding enterprise-id length length */ - u8_t eidlenlen; - /* encoding pdu length length */ - u8_t pdulenlen; - /* encoding community length length */ - u8_t comlenlen; - /* encoding version length length */ - u8_t verlenlen; - /* encoding sequence length length */ - u8_t seqlenlen; - - /* encoding timestamp length */ - u16_t tslen; - /* encoding specific-trap length */ - u16_t strplen; - /* encoding generic-trap length */ - u16_t gtrplen; - /* encoding agent-addr length */ - u16_t aaddrlen; - /* encoding enterprise-id length */ - u16_t eidlen; - /* encoding pdu length */ - u16_t pdulen; - /* encoding community length */ - u16_t comlen; - /* encoding version length */ - u16_t verlen; - /* encoding sequence length */ - u16_t seqlen; -}; - -/* Accepting new SNMP messages. */ -#define SNMP_MSG_EMPTY 0 -/* Search for matching object for variable binding. */ -#define SNMP_MSG_SEARCH_OBJ 1 -/* Perform SNMP operation on in-memory object. - Pass-through states, for symmetry only. */ -#define SNMP_MSG_INTERNAL_GET_OBJDEF 2 -#define SNMP_MSG_INTERNAL_GET_VALUE 3 -#define SNMP_MSG_INTERNAL_SET_TEST 4 -#define SNMP_MSG_INTERNAL_GET_OBJDEF_S 5 -#define SNMP_MSG_INTERNAL_SET_VALUE 6 -/* Perform SNMP operation on object located externally. - In theory this could be used for building a proxy agent. - Practical use is for an enterprise spc. app. gateway. */ -#define SNMP_MSG_EXTERNAL_GET_OBJDEF 7 -#define SNMP_MSG_EXTERNAL_GET_VALUE 8 -#define SNMP_MSG_EXTERNAL_SET_TEST 9 -#define SNMP_MSG_EXTERNAL_GET_OBJDEF_S 10 -#define SNMP_MSG_EXTERNAL_SET_VALUE 11 - -#define SNMP_COMMUNITY_STR_LEN 64 -struct snmp_msg_pstat -{ - /* lwIP local port (161) binding */ - struct udp_pcb *pcb; - /* source IP address */ - struct ip_addr sip; - /* source UDP port */ - u16_t sp; - /* request type */ - u8_t rt; - /* request ID */ - s32_t rid; - /* error status */ - s32_t error_status; - /* error index */ - s32_t error_index; - /* community name (zero terminated) */ - u8_t community[SNMP_COMMUNITY_STR_LEN + 1]; - /* community string length (exclusive zero term) */ - u8_t com_strlen; - /* one out of MSG_EMPTY, MSG_DEMUX, MSG_INTERNAL, MSG_EXTERNAL_x */ - u8_t state; - /* saved arguments for MSG_EXTERNAL_x */ - struct mib_external_node *ext_mib_node; - struct snmp_name_ptr ext_name_ptr; - struct obj_def ext_object_def; - struct snmp_obj_id ext_oid; - /* index into input variable binding list */ - u8_t vb_idx; - /* ptr into input variable binding list */ - struct snmp_varbind *vb_ptr; - /* list of variable bindings from input */ - struct snmp_varbind_root invb; - /* list of variable bindings to output */ - struct snmp_varbind_root outvb; - /* output response lengths used in ASN encoding */ - struct snmp_resp_header_lengths rhl; -}; - -struct snmp_msg_trap -{ - /* lwIP local port (161) binding */ - struct udp_pcb *pcb; - /* destination IP address in network order */ - struct ip_addr dip; - - /* source enterprise ID (sysObjectID) */ - struct snmp_obj_id *enterprise; - /* source IP address, raw network order format */ - u8_t sip_raw[4]; - /* generic trap code */ - u32_t gen_trap; - /* specific trap code */ - u32_t spc_trap; - /* timestamp */ - u32_t ts; - /* list of variable bindings to output */ - struct snmp_varbind_root outvb; - /* output trap lengths used in ASN encoding */ - struct snmp_trap_header_lengths thl; -}; - -/** Agent Version constant, 0 = v1 oddity */ -extern const s32_t snmp_version; -/** Agent default "public" community string */ -extern const char snmp_publiccommunity[7]; - -extern struct snmp_msg_trap trap_msg; - -/** Agent setup, start listening to port 161. */ -void snmp_init(void); -void snmp_trap_dst_enable(u8_t dst_idx, u8_t enable); -void snmp_trap_dst_ip_set(u8_t dst_idx, struct ip_addr *dst); - -/** Varbind-list functions. */ -struct snmp_varbind* snmp_varbind_alloc(struct snmp_obj_id *oid, u8_t type, u8_t len); -void snmp_varbind_free(struct snmp_varbind *vb); -void snmp_varbind_list_free(struct snmp_varbind_root *root); -void snmp_varbind_tail_add(struct snmp_varbind_root *root, struct snmp_varbind *vb); -struct snmp_varbind* snmp_varbind_tail_remove(struct snmp_varbind_root *root); - -/** Handle an internal (recv) or external (private response) event. */ -void snmp_msg_event(u8_t request_id); -err_t snmp_send_response(struct snmp_msg_pstat *m_stat); -err_t snmp_send_trap(s8_t generic_trap, struct snmp_obj_id *eoid, s32_t specific_trap); -void snmp_coldstart_trap(void); -void snmp_authfail_trap(void); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SNMP */ - -#endif /* __LWIP_SNMP_MSG_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_structs.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_structs.h deleted file mode 100644 index 93f4ea3..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_structs.h +++ /dev/null @@ -1,264 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Generic MIB tree structures. - * - * @todo namespace prefixes - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * Author: Christiaan Simons - */ - -#ifndef __LWIP_SNMP_STRUCTS_H__ -#define __LWIP_SNMP_STRUCTS_H__ - -#include "lwip/opt.h" - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/snmp.h" - -#if SNMP_PRIVATE_MIB -#include "private_mib.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* MIB object instance */ -#define MIB_OBJECT_NONE 0 -#define MIB_OBJECT_SCALAR 1 -#define MIB_OBJECT_TAB 2 - -/* MIB object access */ -#define MIB_OBJECT_READ_ONLY 0 -#define MIB_OBJECT_READ_WRITE 1 -#define MIB_OBJECT_WRITE_ONLY 2 -#define MIB_OBJECT_NOT_ACCESSIBLE 3 - -/** object definition returned by (get_object_def)() */ -struct obj_def -{ - /* MIB_OBJECT_NONE (0), MIB_OBJECT_SCALAR (1), MIB_OBJECT_TAB (2) */ - u8_t instance; - /* 0 read-only, 1 read-write, 2 write-only, 3 not-accessible */ - u8_t access; - /* ASN type for this object */ - u8_t asn_type; - /* value length (host length) */ - u16_t v_len; - /* length of instance part of supplied object identifier */ - u8_t id_inst_len; - /* instance part of supplied object identifier */ - s32_t *id_inst_ptr; -}; - -struct snmp_name_ptr -{ - u8_t ident_len; - s32_t *ident; -}; - -/** MIB const scalar (.0) node */ -#define MIB_NODE_SC 0x01 -/** MIB const array node */ -#define MIB_NODE_AR 0x02 -/** MIB array node (mem_malloced from RAM) */ -#define MIB_NODE_RA 0x03 -/** MIB list root node (mem_malloced from RAM) */ -#define MIB_NODE_LR 0x04 -/** MIB node for external objects */ -#define MIB_NODE_EX 0x05 - -/** node "base class" layout, the mandatory fields for a node */ -struct mib_node -{ - /** returns struct obj_def for the given object identifier */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - /** returns object value for the given object identifier, - @note the caller must allocate at least len bytes for the value */ - void (*get_value)(struct obj_def *od, u16_t len, void *value); - /** tests length and/or range BEFORE setting */ - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - /** sets object value, only to be called when set_test() */ - void (*set_value)(struct obj_def *od, u16_t len, void *value); - /** One out of MIB_NODE_AR, MIB_NODE_LR or MIB_NODE_EX */ - const u8_t node_type; - /* array or max list length */ - const u16_t maxlength; -}; - -/** derived node for scalars .0 index */ -typedef struct mib_node mib_scalar_node; - -/** derived node, points to a fixed size const array - of sub-identifiers plus a 'child' pointer */ -struct mib_array_node -{ - /* inherited "base class" members */ - void (* const get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (* const get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - const u8_t node_type; - const u16_t maxlength; - - /* aditional struct members */ - const s32_t *objid; - struct mib_node* const *nptr; -}; - -/** derived node, points to a fixed size mem_malloced array - of sub-identifiers plus a 'child' pointer */ -struct mib_ram_array_node -{ - /* inherited "base class" members */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - u8_t node_type; - u16_t maxlength; - - /* aditional struct members */ - s32_t *objid; - struct mib_node **nptr; -}; - -struct mib_list_node -{ - struct mib_list_node *prev; - struct mib_list_node *next; - s32_t objid; - struct mib_node *nptr; -}; - -/** derived node, points to a doubly linked list - of sub-identifiers plus a 'child' pointer */ -struct mib_list_rootnode -{ - /* inherited "base class" members */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - u8_t node_type; - u16_t maxlength; - - /* aditional struct members */ - struct mib_list_node *head; - struct mib_list_node *tail; - /* counts list nodes in list */ - u16_t count; -}; - -/** derived node, has access functions for mib object in external memory or device - using 'tree_level' and 'idx', with a range 0 .. (level_length() - 1) */ -struct mib_external_node -{ - /* inherited "base class" members */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - u8_t node_type; - u16_t maxlength; - - /* aditional struct members */ - /** points to an extenal (in memory) record of some sort of addressing - information, passed to and interpreted by the funtions below */ - void* addr_inf; - /** tree levels under this node */ - u8_t tree_levels; - /** number of objects at this level */ - u16_t (*level_length)(void* addr_inf, u8_t level); - /** compares object sub identifier with external id - return zero when equal, nonzero when unequal */ - s32_t (*ident_cmp)(void* addr_inf, u8_t level, u16_t idx, s32_t sub_id); - void (*get_objid)(void* addr_inf, u8_t level, u16_t idx, s32_t *sub_id); - - /** async Questions */ - void (*get_object_def_q)(void* addr_inf, u8_t rid, u8_t ident_len, s32_t *ident); - void (*get_value_q)(u8_t rid, struct obj_def *od); - void (*set_test_q)(u8_t rid, struct obj_def *od); - void (*set_value_q)(u8_t rid, struct obj_def *od, u16_t len, void *value); - /** async Answers */ - void (*get_object_def_a)(u8_t rid, u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value_a)(u8_t rid, struct obj_def *od, u16_t len, void *value); - u8_t (*set_test_a)(u8_t rid, struct obj_def *od, u16_t len, void *value); - void (*set_value_a)(u8_t rid, struct obj_def *od, u16_t len, void *value); - /** async Panic Close (agent returns error reply, - e.g. used for external transaction cleanup) */ - void (*get_object_def_pc)(u8_t rid, u8_t ident_len, s32_t *ident); - void (*get_value_pc)(u8_t rid, struct obj_def *od); - void (*set_test_pc)(u8_t rid, struct obj_def *od); - void (*set_value_pc)(u8_t rid, struct obj_def *od); -}; - -/** export MIB tree from mib2.c */ -extern const struct mib_array_node internet; - -/** dummy function pointers for non-leaf MIB nodes from mib2.c */ -void noleafs_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -void noleafs_get_value(struct obj_def *od, u16_t len, void *value); -u8_t noleafs_set_test(struct obj_def *od, u16_t len, void *value); -void noleafs_set_value(struct obj_def *od, u16_t len, void *value); - -void snmp_oidtoip(s32_t *ident, struct ip_addr *ip); -void snmp_iptooid(struct ip_addr *ip, s32_t *ident); -void snmp_ifindextonetif(s32_t ifindex, struct netif **netif); -void snmp_netiftoifindex(struct netif *netif, s32_t *ifidx); - -struct mib_list_node* snmp_mib_ln_alloc(s32_t id); -void snmp_mib_ln_free(struct mib_list_node *ln); -struct mib_list_rootnode* snmp_mib_lrn_alloc(void); -void snmp_mib_lrn_free(struct mib_list_rootnode *lrn); - -s8_t snmp_mib_node_insert(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **insn); -s8_t snmp_mib_node_find(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **fn); -struct mib_list_rootnode *snmp_mib_node_delete(struct mib_list_rootnode *rn, struct mib_list_node *n); - -struct mib_node* snmp_search_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_name_ptr *np); -struct mib_node* snmp_expand_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret); -u8_t snmp_iso_prefix_tst(u8_t ident_len, s32_t *ident); -u8_t snmp_iso_prefix_expand(u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SNMP */ - -#endif /* __LWIP_SNMP_STRUCTS_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sockets.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sockets.h deleted file mode 100644 index 675c1f7..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sockets.h +++ /dev/null @@ -1,359 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - - -#ifndef __LWIP_SOCKETS_H__ -#define __LWIP_SOCKETS_H__ - -#include "lwip/opt.h" - -#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */ - -#include /* for size_t */ - -#include "lwip/ip_addr.h" -#include "lwip/inet.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* members are in network byte order */ -struct sockaddr_in { - u8_t sin_len; - u8_t sin_family; - u16_t sin_port; - struct in_addr sin_addr; - char sin_zero[8]; -}; - -struct sockaddr { - u8_t sa_len; - u8_t sa_family; - char sa_data[14]; -}; - -#ifndef socklen_t -# define socklen_t u32_t -#endif - -/* Socket protocol types (TCP/UDP/RAW) */ -#define SOCK_STREAM 1 -#define SOCK_DGRAM 2 -#define SOCK_RAW 3 - -/* - * Option flags per-socket. These must match the SOF_ flags in ip.h! - */ -#define SO_DEBUG 0x0001 /* Unimplemented: turn on debugging info recording */ -#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ -#define SO_REUSEADDR 0x0004 /* Unimplemented: allow local address reuse */ -#define SO_KEEPALIVE 0x0008 /* keep connections alive */ -#define SO_DONTROUTE 0x0010 /* Unimplemented: just use interface addresses */ -#define SO_BROADCAST 0x0020 /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */ -#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when possible */ -#define SO_LINGER 0x0080 /* linger on close if data present */ -#define SO_OOBINLINE 0x0100 /* Unimplemented: leave received OOB data in line */ -#define SO_REUSEPORT 0x0200 /* Unimplemented: allow local address & port reuse */ - -#define SO_DONTLINGER ((int)(~SO_LINGER)) - -/* - * Additional options, not kept in so_options. - */ -#define SO_SNDBUF 0x1001 /* Unimplemented: send buffer size */ -#define SO_RCVBUF 0x1002 /* receive buffer size */ -#define SO_SNDLOWAT 0x1003 /* Unimplemented: send low-water mark */ -#define SO_RCVLOWAT 0x1004 /* Unimplemented: receive low-water mark */ -#define SO_SNDTIMEO 0x1005 /* Unimplemented: send timeout */ -#define SO_RCVTIMEO 0x1006 /* receive timeout */ -#define SO_ERROR 0x1007 /* get error status and clear */ -#define SO_TYPE 0x1008 /* get socket type */ -#define SO_CONTIMEO 0x1009 /* Unimplemented: connect timeout */ -#define SO_NO_CHECK 0x100a /* don't create UDP checksum */ - - -/* - * Structure used for manipulating linger option. - */ -struct linger { - int l_onoff; /* option on/off */ - int l_linger; /* linger time */ -}; - -/* - * Level number for (get/set)sockopt() to apply to socket itself. - */ -#define SOL_SOCKET 0xfff /* options for socket level */ - - -#define AF_UNSPEC 0 -#define AF_INET 2 -#define PF_INET AF_INET -#define PF_UNSPEC AF_UNSPEC - -#define IPPROTO_IP 0 -#define IPPROTO_TCP 6 -#define IPPROTO_UDP 17 -#define IPPROTO_UDPLITE 136 - -/* Flags we can use with send and recv. */ -#define MSG_PEEK 0x01 /* Peeks at an incoming message */ -#define MSG_WAITALL 0x02 /* Unimplemented: Requests that the function block until the full amount of data requested can be returned */ -#define MSG_OOB 0x04 /* Unimplemented: Requests out-of-band data. The significance and semantics of out-of-band data are protocol-specific */ -#define MSG_DONTWAIT 0x08 /* Nonblocking i/o for this operation only */ -#define MSG_MORE 0x10 /* Sender will send more */ - - -/* - * Options for level IPPROTO_IP - */ -#define IP_TOS 1 -#define IP_TTL 2 - -#if LWIP_TCP -/* - * Options for level IPPROTO_TCP - */ -#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */ -#define TCP_KEEPALIVE 0x02 /* send KEEPALIVE probes when idle for pcb->keep_idle milliseconds */ -#define TCP_KEEPIDLE 0x03 /* set pcb->keep_idle - Same as TCP_KEEPALIVE, but use seconds for get/setsockopt */ -#define TCP_KEEPINTVL 0x04 /* set pcb->keep_intvl - Use seconds for get/setsockopt */ -#define TCP_KEEPCNT 0x05 /* set pcb->keep_cnt - Use number of probes sent for get/setsockopt */ -#endif /* LWIP_TCP */ - -#if LWIP_UDP && LWIP_UDPLITE -/* - * Options for level IPPROTO_UDPLITE - */ -#define UDPLITE_SEND_CSCOV 0x01 /* sender checksum coverage */ -#define UDPLITE_RECV_CSCOV 0x02 /* minimal receiver checksum coverage */ -#endif /* LWIP_UDP && LWIP_UDPLITE*/ - - -#if LWIP_IGMP -/* - * Options and types for UDP multicast traffic handling - */ -#define IP_ADD_MEMBERSHIP 3 -#define IP_DROP_MEMBERSHIP 4 -#define IP_MULTICAST_TTL 5 -#define IP_MULTICAST_IF 6 -#define IP_MULTICAST_LOOP 7 - -typedef struct ip_mreq { - struct in_addr imr_multiaddr; /* IP multicast address of group */ - struct in_addr imr_interface; /* local IP address of interface */ -} ip_mreq; -#endif /* LWIP_IGMP */ - -/* - * The Type of Service provides an indication of the abstract - * parameters of the quality of service desired. These parameters are - * to be used to guide the selection of the actual service parameters - * when transmitting a datagram through a particular network. Several - * networks offer service precedence, which somehow treats high - * precedence traffic as more important than other traffic (generally - * by accepting only traffic above a certain precedence at time of high - * load). The major choice is a three way tradeoff between low-delay, - * high-reliability, and high-throughput. - * The use of the Delay, Throughput, and Reliability indications may - * increase the cost (in some sense) of the service. In many networks - * better performance for one of these parameters is coupled with worse - * performance on another. Except for very unusual cases at most two - * of these three indications should be set. - */ -#define IPTOS_TOS_MASK 0x1E -#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK) -#define IPTOS_LOWDELAY 0x10 -#define IPTOS_THROUGHPUT 0x08 -#define IPTOS_RELIABILITY 0x04 -#define IPTOS_LOWCOST 0x02 -#define IPTOS_MINCOST IPTOS_LOWCOST - -/* - * The Network Control precedence designation is intended to be used - * within a network only. The actual use and control of that - * designation is up to each network. The Internetwork Control - * designation is intended for use by gateway control originators only. - * If the actual use of these precedence designations is of concern to - * a particular network, it is the responsibility of that network to - * control the access to, and use of, those precedence designations. - */ -#define IPTOS_PREC_MASK 0xe0 -#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK) -#define IPTOS_PREC_NETCONTROL 0xe0 -#define IPTOS_PREC_INTERNETCONTROL 0xc0 -#define IPTOS_PREC_CRITIC_ECP 0xa0 -#define IPTOS_PREC_FLASHOVERRIDE 0x80 -#define IPTOS_PREC_FLASH 0x60 -#define IPTOS_PREC_IMMEDIATE 0x40 -#define IPTOS_PREC_PRIORITY 0x20 -#define IPTOS_PREC_ROUTINE 0x00 - - -/* - * Commands for ioctlsocket(), taken from the BSD file fcntl.h. - * lwip_ioctl only supports FIONREAD and FIONBIO, for now - * - * Ioctl's have the command encoded in the lower word, - * and the size of any in or out parameters in the upper - * word. The high 2 bits of the upper word are used - * to encode the in/out status of the parameter; for now - * we restrict parameters to at most 128 bytes. - */ -#if !defined(FIONREAD) || !defined(FIONBIO) -#define IOCPARM_MASK 0x7fU /* parameters must be < 128 bytes */ -#define IOC_VOID 0x20000000UL /* no parameters */ -#define IOC_OUT 0x40000000UL /* copy out parameters */ -#define IOC_IN 0x80000000UL /* copy in parameters */ -#define IOC_INOUT (IOC_IN|IOC_OUT) - /* 0x20000000 distinguishes new & - old ioctl's */ -#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) - -#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) - -#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) -#endif /* !defined(FIONREAD) || !defined(FIONBIO) */ - -#ifndef FIONREAD -#define FIONREAD _IOR('f', 127, unsigned long) /* get # bytes to read */ -#endif -#ifndef FIONBIO -#define FIONBIO _IOW('f', 126, unsigned long) /* set/clear non-blocking i/o */ -#endif - -/* Socket I/O Controls: unimplemented */ -#ifndef SIOCSHIWAT -#define SIOCSHIWAT _IOW('s', 0, unsigned long) /* set high watermark */ -#define SIOCGHIWAT _IOR('s', 1, unsigned long) /* get high watermark */ -#define SIOCSLOWAT _IOW('s', 2, unsigned long) /* set low watermark */ -#define SIOCGLOWAT _IOR('s', 3, unsigned long) /* get low watermark */ -#define SIOCATMARK _IOR('s', 7, unsigned long) /* at oob mark? */ -#endif - -/* Socket flags: */ -#ifndef O_NONBLOCK -#define O_NONBLOCK 04000U -#endif - -/* FD_SET used for lwip_select */ -#ifndef FD_SET - #undef FD_SETSIZE - /* Make FD_SETSIZE match NUM_SOCKETS in socket.c */ - #define FD_SETSIZE MEMP_NUM_NETCONN - #define FD_SET(n, p) ((p)->fd_bits[(n)/8] |= (1 << ((n) & 7))) - #define FD_CLR(n, p) ((p)->fd_bits[(n)/8] &= ~(1 << ((n) & 7))) - #define FD_ISSET(n,p) ((p)->fd_bits[(n)/8] & (1 << ((n) & 7))) - #define FD_ZERO(p) memset((void*)(p),0,sizeof(*(p))) - - typedef struct fd_set { - unsigned char fd_bits [(FD_SETSIZE+7)/8]; - } fd_set; - -#endif /* FD_SET */ - -/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided - * by your system, set this to 0 and include in cc.h */ -#ifndef LWIP_TIMEVAL_PRIVATE -#define LWIP_TIMEVAL_PRIVATE 1 -#endif - -#if LWIP_TIMEVAL_PRIVATE -struct timeval { - long tv_sec; /* seconds */ - long tv_usec; /* and microseconds */ -}; -#endif /* LWIP_TIMEVAL_PRIVATE */ - -void lwip_socket_init(void); - -int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen); -int lwip_bind(int s, const struct sockaddr *name, socklen_t namelen); -int lwip_shutdown(int s, int how); -int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen); -int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen); -int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen); -int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen); -int lwip_close(int s); -int lwip_connect(int s, const struct sockaddr *name, socklen_t namelen); -int lwip_listen(int s, int backlog); -int lwip_recv(int s, void *mem, size_t len, int flags); -int lwip_read(int s, void *mem, size_t len); -int lwip_recvfrom(int s, void *mem, size_t len, int flags, - struct sockaddr *from, socklen_t *fromlen); -int lwip_send(int s, const void *dataptr, size_t size, int flags); -int lwip_sendto(int s, const void *dataptr, size_t size, int flags, - const struct sockaddr *to, socklen_t tolen); -int lwip_socket(int domain, int type, int protocol); -int lwip_write(int s, const void *dataptr, size_t size); -int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, - struct timeval *timeout); -int lwip_ioctl(int s, long cmd, void *argp); - -#if LWIP_COMPAT_SOCKETS -#define accept(a,b,c) lwip_accept(a,b,c) -#define bind(a,b,c) lwip_bind(a,b,c) -#define shutdown(a,b) lwip_shutdown(a,b) -#define closesocket(s) lwip_close(s) -#define connect(a,b,c) lwip_connect(a,b,c) -#define getsockname(a,b,c) lwip_getsockname(a,b,c) -#define getpeername(a,b,c) lwip_getpeername(a,b,c) -#define setsockopt(a,b,c,d,e) lwip_setsockopt(a,b,c,d,e) -#define getsockopt(a,b,c,d,e) lwip_getsockopt(a,b,c,d,e) -#define listen(a,b) lwip_listen(a,b) -#define recv(a,b,c,d) lwip_recv(a,b,c,d) -#define recvfrom(a,b,c,d,e,f) lwip_recvfrom(a,b,c,d,e,f) -#define send(a,b,c,d) lwip_send(a,b,c,d) -#define sendto(a,b,c,d,e,f) lwip_sendto(a,b,c,d,e,f) -#define socket(a,b,c) lwip_socket(a,b,c) -#define select(a,b,c,d,e) lwip_select(a,b,c,d,e) -#define ioctlsocket(a,b,c) lwip_ioctl(a,b,c) - -#if LWIP_POSIX_SOCKETS_IO_NAMES -#define read(a,b,c) lwip_read(a,b,c) -#define write(a,b,c) lwip_write(a,b,c) -#define close(s) lwip_close(s) -#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */ - -#endif /* LWIP_COMPAT_SOCKETS */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SOCKET */ - -#endif /* __LWIP_SOCKETS_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/stats.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/stats.h deleted file mode 100644 index 4aec5e5..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/stats.h +++ /dev/null @@ -1,285 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_STATS_H__ -#define __LWIP_STATS_H__ - -#include "lwip/opt.h" - -#include "lwip/mem.h" -#include "lwip/memp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if LWIP_STATS - -#ifndef LWIP_STATS_LARGE -#define LWIP_STATS_LARGE 0 -#endif - -#if LWIP_STATS_LARGE -#define STAT_COUNTER u32_t -#define STAT_COUNTER_F U32_F -#else -#define STAT_COUNTER u16_t -#define STAT_COUNTER_F U16_F -#endif - -struct stats_proto { - STAT_COUNTER xmit; /* Transmitted packets. */ - STAT_COUNTER recv; /* Received packets. */ - STAT_COUNTER fw; /* Forwarded packets. */ - STAT_COUNTER drop; /* Dropped packets. */ - STAT_COUNTER chkerr; /* Checksum error. */ - STAT_COUNTER lenerr; /* Invalid length error. */ - STAT_COUNTER memerr; /* Out of memory error. */ - STAT_COUNTER rterr; /* Routing error. */ - STAT_COUNTER proterr; /* Protocol error. */ - STAT_COUNTER opterr; /* Error in options. */ - STAT_COUNTER err; /* Misc error. */ - STAT_COUNTER cachehit; -}; - -struct stats_igmp { - STAT_COUNTER lenerr; /* Invalid length error. */ - STAT_COUNTER chkerr; /* Checksum error. */ - STAT_COUNTER v1_rxed; /* */ - STAT_COUNTER join_sent; /* */ - STAT_COUNTER leave_sent; /* */ - STAT_COUNTER unicast_query; /* */ - STAT_COUNTER report_sent; /* */ - STAT_COUNTER report_rxed; /* */ - STAT_COUNTER group_query_rxed; /* */ -}; - -struct stats_mem { - mem_size_t avail; - mem_size_t used; - mem_size_t max; - STAT_COUNTER err; - STAT_COUNTER illegal; -}; - -struct stats_syselem { - STAT_COUNTER used; - STAT_COUNTER max; - STAT_COUNTER err; -}; - -struct stats_sys { - struct stats_syselem sem; - struct stats_syselem mbox; -}; - -struct stats_ { -#if LINK_STATS - struct stats_proto link; -#endif -#if ETHARP_STATS - struct stats_proto etharp; -#endif -#if IPFRAG_STATS - struct stats_proto ip_frag; -#endif -#if IP_STATS - struct stats_proto ip; -#endif -#if ICMP_STATS - struct stats_proto icmp; -#endif -#if IGMP_STATS - struct stats_igmp igmp; -#endif -#if UDP_STATS - struct stats_proto udp; -#endif -#if TCP_STATS - struct stats_proto tcp; -#endif -#if MEM_STATS - struct stats_mem mem; -#endif -#if MEMP_STATS - struct stats_mem memp[MEMP_MAX]; -#endif -#if SYS_STATS - struct stats_sys sys; -#endif -}; - -extern struct stats_ lwip_stats; - -#define stats_init() /* Compatibility define, not init needed. */ - -#define STATS_INC(x) ++lwip_stats.x -#define STATS_DEC(x) --lwip_stats.x -#else -#define stats_init() -#define STATS_INC(x) -#define STATS_DEC(x) -#endif /* LWIP_STATS */ - -#if TCP_STATS -#define TCP_STATS_INC(x) STATS_INC(x) -#define TCP_STATS_DISPLAY() stats_display_proto(&lwip_stats.tcp, "TCP") -#else -#define TCP_STATS_INC(x) -#define TCP_STATS_DISPLAY() -#endif - -#if UDP_STATS -#define UDP_STATS_INC(x) STATS_INC(x) -#define UDP_STATS_DISPLAY() stats_display_proto(&lwip_stats.udp, "UDP") -#else -#define UDP_STATS_INC(x) -#define UDP_STATS_DISPLAY() -#endif - -#if ICMP_STATS -#define ICMP_STATS_INC(x) STATS_INC(x) -#define ICMP_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp, "ICMP") -#else -#define ICMP_STATS_INC(x) -#define ICMP_STATS_DISPLAY() -#endif - -#if IGMP_STATS -#define IGMP_STATS_INC(x) STATS_INC(x) -#define IGMP_STATS_DISPLAY() stats_display_igmp(&lwip_stats.igmp) -#else -#define IGMP_STATS_INC(x) -#define IGMP_STATS_DISPLAY() -#endif - -#if IP_STATS -#define IP_STATS_INC(x) STATS_INC(x) -#define IP_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip, "IP") -#else -#define IP_STATS_INC(x) -#define IP_STATS_DISPLAY() -#endif - -#if IPFRAG_STATS -#define IPFRAG_STATS_INC(x) STATS_INC(x) -#define IPFRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip_frag, "IP_FRAG") -#else -#define IPFRAG_STATS_INC(x) -#define IPFRAG_STATS_DISPLAY() -#endif - -#if ETHARP_STATS -#define ETHARP_STATS_INC(x) STATS_INC(x) -#define ETHARP_STATS_DISPLAY() stats_display_proto(&lwip_stats.etharp, "ETHARP") -#else -#define ETHARP_STATS_INC(x) -#define ETHARP_STATS_DISPLAY() -#endif - -#if LINK_STATS -#define LINK_STATS_INC(x) STATS_INC(x) -#define LINK_STATS_DISPLAY() stats_display_proto(&lwip_stats.link, "LINK") -#else -#define LINK_STATS_INC(x) -#define LINK_STATS_DISPLAY() -#endif - -#if MEM_STATS -#define MEM_STATS_AVAIL(x, y) lwip_stats.mem.x = y -#define MEM_STATS_INC(x) STATS_INC(mem.x) -#define MEM_STATS_INC_USED(x, y) do { lwip_stats.mem.used += y; \ - if (lwip_stats.mem.max < lwip_stats.mem.used) { \ - lwip_stats.mem.max = lwip_stats.mem.used; \ - } \ - } while(0) -#define MEM_STATS_DEC_USED(x, y) lwip_stats.mem.x -= y -#define MEM_STATS_DISPLAY() stats_display_mem(&lwip_stats.mem, "HEAP") -#else -#define MEM_STATS_AVAIL(x, y) -#define MEM_STATS_INC(x) -#define MEM_STATS_INC_USED(x, y) -#define MEM_STATS_DEC_USED(x, y) -#define MEM_STATS_DISPLAY() -#endif - -#if MEMP_STATS -#define MEMP_STATS_AVAIL(x, i, y) lwip_stats.memp[i].x = y -#define MEMP_STATS_INC(x, i) STATS_INC(memp[i].x) -#define MEMP_STATS_DEC(x, i) STATS_DEC(memp[i].x) -#define MEMP_STATS_INC_USED(x, i) do { ++lwip_stats.memp[i].used; \ - if (lwip_stats.memp[i].max < lwip_stats.memp[i].used) { \ - lwip_stats.memp[i].max = lwip_stats.memp[i].used; \ - } \ - } while(0) -#define MEMP_STATS_DISPLAY(i) stats_display_memp(&lwip_stats.memp[i], i) -#else -#define MEMP_STATS_AVAIL(x, i, y) -#define MEMP_STATS_INC(x, i) -#define MEMP_STATS_DEC(x, i) -#define MEMP_STATS_INC_USED(x, i) -#define MEMP_STATS_DISPLAY(i) -#endif - -#if SYS_STATS -#define SYS_STATS_INC(x) STATS_INC(sys.x) -#define SYS_STATS_DEC(x) STATS_DEC(sys.x) -#define SYS_STATS_DISPLAY() stats_display_sys(&lwip_stats.sys) -#else -#define SYS_STATS_INC(x) -#define SYS_STATS_DEC(x) -#define SYS_STATS_DISPLAY() -#endif - -/* Display of statistics */ -#if LWIP_STATS_DISPLAY -void stats_display(void); -void stats_display_proto(struct stats_proto *proto, char *name); -void stats_display_igmp(struct stats_igmp *igmp); -void stats_display_mem(struct stats_mem *mem, char *name); -void stats_display_memp(struct stats_mem *mem, int index); -void stats_display_sys(struct stats_sys *sys); -#else -#define stats_display() -#define stats_display_proto(proto, name) -#define stats_display_igmp(igmp) -#define stats_display_mem(mem, name) -#define stats_display_memp(mem, index) -#define stats_display_sys(sys) -#endif /* LWIP_STATS_DISPLAY */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_STATS_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sys.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sys.h deleted file mode 100644 index 9a4f02a..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sys.h +++ /dev/null @@ -1,245 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_SYS_H__ -#define __LWIP_SYS_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if NO_SYS - -/* For a totally minimal and standalone system, we provide null - definitions of the sys_ functions. */ -typedef u8_t sys_sem_t; -typedef u8_t sys_mbox_t; -struct sys_timeo {u8_t dummy;}; - -#define sys_init() -#define sys_timeout(m,h,a) -#define sys_untimeout(m,a) -#define sys_sem_new(c) c -#define sys_sem_signal(s) -#define sys_sem_wait(s) -#define sys_sem_wait_timeout(s,t) -#define sys_arch_sem_wait(s,t) -#define sys_sem_free(s) -#define sys_mbox_new(s) 0 -#define sys_mbox_fetch(m,d) -#define sys_mbox_tryfetch(m,d) -#define sys_mbox_post(m,d) -#define sys_mbox_trypost(m,d) -#define sys_mbox_free(m) - -#define sys_thread_new(n,t,a,s,p) - -#else /* NO_SYS */ - -/** Return code for timeouts from sys_arch_mbox_fetch and sys_arch_sem_wait */ -#define SYS_ARCH_TIMEOUT 0xffffffffUL - -/* sys_mbox_tryfetch returns SYS_MBOX_EMPTY if appropriate. - * For now we use the same magic value, but we allow this to change in future. - */ -#define SYS_MBOX_EMPTY SYS_ARCH_TIMEOUT - -#include "lwip/err.h" -#include "arch/sys_arch.h" - -typedef void (* sys_timeout_handler)(void *arg); - -struct sys_timeo { - struct sys_timeo *next; - u32_t time; - sys_timeout_handler h; - void *arg; -}; - -struct sys_timeouts { - struct sys_timeo *next; -}; - -/* sys_init() must be called before anthing else. */ -void sys_init(void); - -/* - * sys_timeout(): - * - * Schedule a timeout a specified amount of milliseconds in the - * future. When the timeout occurs, the specified timeout handler will - * be called. The handler will be passed the "arg" argument when - * called. - * - */ -void sys_timeout(u32_t msecs, sys_timeout_handler h, void *arg); -void sys_untimeout(sys_timeout_handler h, void *arg); -struct sys_timeouts *sys_arch_timeouts(void); - -/* Semaphore functions. */ -sys_sem_t sys_sem_new(u8_t count); -void sys_sem_signal(sys_sem_t sem); -u32_t sys_arch_sem_wait(sys_sem_t sem, u32_t timeout); -void sys_sem_free(sys_sem_t sem); -void sys_sem_wait(sys_sem_t sem); -int sys_sem_wait_timeout(sys_sem_t sem, u32_t timeout); - -/* Time functions. */ -#ifndef sys_msleep -void sys_msleep(u32_t ms); /* only has a (close to) 1 jiffy resolution. */ -#endif -#ifndef sys_jiffies -u32_t sys_jiffies(void); /* since power up. */ -#endif - -/* Mailbox functions. */ -sys_mbox_t sys_mbox_new(int size); -void sys_mbox_post(sys_mbox_t mbox, void *msg); -err_t sys_mbox_trypost(sys_mbox_t mbox, void *msg); -u32_t sys_arch_mbox_fetch(sys_mbox_t mbox, void **msg, u32_t timeout); -#ifndef sys_arch_mbox_tryfetch /* Allow port to override with a macro */ -u32_t sys_arch_mbox_tryfetch(sys_mbox_t mbox, void **msg); -#endif -/* For now, we map straight to sys_arch implementation. */ -#define sys_mbox_tryfetch(mbox, msg) sys_arch_mbox_tryfetch(mbox, msg) -void sys_mbox_free(sys_mbox_t mbox); -void sys_mbox_fetch(sys_mbox_t mbox, void **msg); - -/* Thread functions. */ -sys_thread_t sys_thread_new(char *name, void (* thread)(void *arg), void *arg, int stacksize, int prio); - -#endif /* NO_SYS */ - -/** Returns the current time in milliseconds. */ -u32_t sys_now(void); - -/* Critical Region Protection */ -/* These functions must be implemented in the sys_arch.c file. - In some implementations they can provide a more light-weight protection - mechanism than using semaphores. Otherwise semaphores can be used for - implementation */ -#ifndef SYS_ARCH_PROTECT -/** SYS_LIGHTWEIGHT_PROT - * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection - * for certain critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#if SYS_LIGHTWEIGHT_PROT - -/** SYS_ARCH_DECL_PROTECT - * declare a protection variable. This macro will default to defining a variable of - * type sys_prot_t. If a particular port needs a different implementation, then - * this macro may be defined in sys_arch.h. - */ -#define SYS_ARCH_DECL_PROTECT(lev) sys_prot_t lev -/** SYS_ARCH_PROTECT - * Perform a "fast" protect. This could be implemented by - * disabling interrupts for an embedded system or by using a semaphore or - * mutex. The implementation should allow calling SYS_ARCH_PROTECT when - * already protected. The old protection level is returned in the variable - * "lev". This macro will default to calling the sys_arch_protect() function - * which should be implemented in sys_arch.c. If a particular port needs a - * different implementation, then this macro may be defined in sys_arch.h - */ -#define SYS_ARCH_PROTECT(lev) lev = sys_arch_protect() -/** SYS_ARCH_UNPROTECT - * Perform a "fast" set of the protection level to "lev". This could be - * implemented by setting the interrupt level to "lev" within the MACRO or by - * using a semaphore or mutex. This macro will default to calling the - * sys_arch_unprotect() function which should be implemented in - * sys_arch.c. If a particular port needs a different implementation, then - * this macro may be defined in sys_arch.h - */ -#define SYS_ARCH_UNPROTECT(lev) sys_arch_unprotect(lev) -sys_prot_t sys_arch_protect(void); -void sys_arch_unprotect(sys_prot_t pval); - -#else - -#define SYS_ARCH_DECL_PROTECT(lev) -#define SYS_ARCH_PROTECT(lev) -#define SYS_ARCH_UNPROTECT(lev) - -#endif /* SYS_LIGHTWEIGHT_PROT */ - -#endif /* SYS_ARCH_PROTECT */ - -/* - * Macros to set/get and increase/decrease variables in a thread-safe way. - * Use these for accessing variable that are used from more than one thread. - */ - -#ifndef SYS_ARCH_INC -#define SYS_ARCH_INC(var, val) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - var += val; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_INC */ - -#ifndef SYS_ARCH_DEC -#define SYS_ARCH_DEC(var, val) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - var -= val; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_DEC */ - -#ifndef SYS_ARCH_GET -#define SYS_ARCH_GET(var, ret) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - ret = var; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_GET */ - -#ifndef SYS_ARCH_SET -#define SYS_ARCH_SET(var, val) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - var = val; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_SET */ - - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_SYS_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcp.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcp.h deleted file mode 100644 index c151574..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcp.h +++ /dev/null @@ -1,709 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_TCP_H__ -#define __LWIP_TCP_H__ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/sys.h" -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/ip.h" -#include "lwip/icmp.h" -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct tcp_pcb; - -/* Functions for interfacing with TCP: */ - -/* Lower layer interface to TCP: */ -#define tcp_init() /* Compatibility define, not init needed. */ -void tcp_tmr (void); /* Must be called every - TCP_TMR_INTERVAL - ms. (Typically 250 ms). */ -/* Application program's interface: */ -struct tcp_pcb * tcp_new (void); -struct tcp_pcb * tcp_alloc (u8_t prio); - -void tcp_arg (struct tcp_pcb *pcb, void *arg); -void tcp_accept (struct tcp_pcb *pcb, - err_t (* accept)(void *arg, struct tcp_pcb *newpcb, - err_t err)); -void tcp_recv (struct tcp_pcb *pcb, - err_t (* recv)(void *arg, struct tcp_pcb *tpcb, - struct pbuf *p, err_t err)); -void tcp_sent (struct tcp_pcb *pcb, - err_t (* sent)(void *arg, struct tcp_pcb *tpcb, - u16_t len)); -void tcp_poll (struct tcp_pcb *pcb, - err_t (* poll)(void *arg, struct tcp_pcb *tpcb), - u8_t interval); -void tcp_err (struct tcp_pcb *pcb, - void (* err)(void *arg, err_t err)); - -#define tcp_mss(pcb) ((pcb)->mss) -#define tcp_sndbuf(pcb) ((pcb)->snd_buf) -#define tcp_nagle_disable(pcb) ((pcb)->flags |= TF_NODELAY) -#define tcp_nagle_enable(pcb) ((pcb)->flags &= ~TF_NODELAY) -#define tcp_nagle_disabled(pcb) (((pcb)->flags & TF_NODELAY) != 0) - -#if TCP_LISTEN_BACKLOG -#define tcp_accepted(pcb) (((struct tcp_pcb_listen *)(pcb))->accepts_pending--) -#else /* TCP_LISTEN_BACKLOG */ -#define tcp_accepted(pcb) -#endif /* TCP_LISTEN_BACKLOG */ - -void tcp_recved (struct tcp_pcb *pcb, u16_t len); -err_t tcp_bind (struct tcp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port); -err_t tcp_connect (struct tcp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port, err_t (* connected)(void *arg, - struct tcp_pcb *tpcb, - err_t err)); - -struct tcp_pcb * tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog); -#define tcp_listen(pcb) tcp_listen_with_backlog(pcb, TCP_DEFAULT_LISTEN_BACKLOG) - -void tcp_abandon (struct tcp_pcb *pcb, int reset); -#define tcp_abort(pcb) tcp_abandon((pcb), 1) -err_t tcp_close (struct tcp_pcb *pcb); - -/* Flags for "apiflags" parameter in tcp_write and tcp_enqueue */ -#define TCP_WRITE_FLAG_COPY 0x01 -#define TCP_WRITE_FLAG_MORE 0x02 - -err_t tcp_write (struct tcp_pcb *pcb, const void *dataptr, u16_t len, - u8_t apiflags); - -void tcp_setprio (struct tcp_pcb *pcb, u8_t prio); - -#define TCP_PRIO_MIN 1 -#define TCP_PRIO_NORMAL 64 -#define TCP_PRIO_MAX 127 - -/* It is also possible to call these two functions at the right - intervals (instead of calling tcp_tmr()). */ -void tcp_slowtmr (void); -void tcp_fasttmr (void); - - -/* Only used by IP to pass a TCP segment to TCP: */ -void tcp_input (struct pbuf *p, struct netif *inp); -/* Used within the TCP code only: */ -err_t tcp_send_empty_ack(struct tcp_pcb *pcb); -err_t tcp_output (struct tcp_pcb *pcb); -void tcp_rexmit (struct tcp_pcb *pcb); -void tcp_rexmit_rto (struct tcp_pcb *pcb); -void tcp_rexmit_fast (struct tcp_pcb *pcb); -u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb); - -/** - * This is the Nagle algorithm: try to combine user data to send as few TCP - * segments as possible. Only send if - * - no previously transmitted data on the connection remains unacknowledged or - * - the TF_NODELAY flag is set (nagle algorithm turned off for this pcb) or - * - the only unsent segment is at least pcb->mss bytes long (or there is more - * than one unsent segment - with lwIP, this can happen although unsent->len < mss) - * - or if we are in fast-retransmit (TF_INFR) - */ -#define tcp_do_output_nagle(tpcb) ((((tpcb)->unacked == NULL) || \ - ((tpcb)->flags & (TF_NODELAY | TF_INFR)) || \ - (((tpcb)->unsent != NULL) && (((tpcb)->unsent->next != NULL) || \ - ((tpcb)->unsent->len >= (tpcb)->mss))) \ - ) ? 1 : 0) -#define tcp_output_nagle(tpcb) (tcp_do_output_nagle(tpcb) ? tcp_output(tpcb) : ERR_OK) - - -#define TCP_SEQ_LT(a,b) ((s32_t)((a)-(b)) < 0) -#define TCP_SEQ_LEQ(a,b) ((s32_t)((a)-(b)) <= 0) -#define TCP_SEQ_GT(a,b) ((s32_t)((a)-(b)) > 0) -#define TCP_SEQ_GEQ(a,b) ((s32_t)((a)-(b)) >= 0) -/* is b<=a<=c? */ -#if 0 /* see bug #10548 */ -#define TCP_SEQ_BETWEEN(a,b,c) ((c)-(b) >= (a)-(b)) -#endif -#define TCP_SEQ_BETWEEN(a,b,c) (TCP_SEQ_GEQ(a,b) && TCP_SEQ_LEQ(a,c)) -#define TCP_FIN 0x01U -#define TCP_SYN 0x02U -#define TCP_RST 0x04U -#define TCP_PSH 0x08U -#define TCP_ACK 0x10U -#define TCP_URG 0x20U -#define TCP_ECE 0x40U -#define TCP_CWR 0x80U - -#define TCP_FLAGS 0x3fU - -/* Length of the TCP header, excluding options. */ -#define TCP_HLEN 20 - -#ifndef TCP_TMR_INTERVAL -#define TCP_TMR_INTERVAL 250 /* The TCP timer interval in milliseconds. */ -#endif /* TCP_TMR_INTERVAL */ - -#ifndef TCP_FAST_INTERVAL -#define TCP_FAST_INTERVAL TCP_TMR_INTERVAL /* the fine grained timeout in milliseconds */ -#endif /* TCP_FAST_INTERVAL */ - -#ifndef TCP_SLOW_INTERVAL -#define TCP_SLOW_INTERVAL (2*TCP_TMR_INTERVAL) /* the coarse grained timeout in milliseconds */ -#endif /* TCP_SLOW_INTERVAL */ - -#define TCP_FIN_WAIT_TIMEOUT 20000 /* milliseconds */ -#define TCP_SYN_RCVD_TIMEOUT 20000 /* milliseconds */ - -#define TCP_OOSEQ_TIMEOUT 6U /* x RTO */ - -#ifndef TCP_MSL -#define TCP_MSL 60000UL /* The maximum segment lifetime in milliseconds */ -#endif - -/* Keepalive values, compliant with RFC 1122. Don't change this unless you know what you're doing */ -#ifndef TCP_KEEPIDLE_DEFAULT -#define TCP_KEEPIDLE_DEFAULT 7200000UL /* Default KEEPALIVE timer in milliseconds */ -#endif - -#ifndef TCP_KEEPINTVL_DEFAULT -#define TCP_KEEPINTVL_DEFAULT 75000UL /* Default Time between KEEPALIVE probes in milliseconds */ -#endif - -#ifndef TCP_KEEPCNT_DEFAULT -#define TCP_KEEPCNT_DEFAULT 9U /* Default Counter for KEEPALIVE probes */ -#endif - -#define TCP_MAXIDLE TCP_KEEPCNT_DEFAULT * TCP_KEEPINTVL_DEFAULT /* Maximum KEEPALIVE probe time */ - -/* Fields are (of course) in network byte order. - * Some fields are converted to host byte order in tcp_input(). - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct tcp_hdr { - PACK_STRUCT_FIELD(u16_t src); - PACK_STRUCT_FIELD(u16_t dest); - PACK_STRUCT_FIELD(u32_t seqno); - PACK_STRUCT_FIELD(u32_t ackno); - PACK_STRUCT_FIELD(u16_t _hdrlen_rsvd_flags); - PACK_STRUCT_FIELD(u16_t wnd); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u16_t urgp); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define TCPH_OFFSET(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 8) -#define TCPH_HDRLEN(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 12) -#define TCPH_FLAGS(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) & TCP_FLAGS) - -#define TCPH_OFFSET_SET(phdr, offset) (phdr)->_hdrlen_rsvd_flags = htons(((offset) << 8) | TCPH_FLAGS(phdr)) -#define TCPH_HDRLEN_SET(phdr, len) (phdr)->_hdrlen_rsvd_flags = htons(((len) << 12) | TCPH_FLAGS(phdr)) -#define TCPH_FLAGS_SET(phdr, flags) (phdr)->_hdrlen_rsvd_flags = (((phdr)->_hdrlen_rsvd_flags & htons((u16_t)(~(u16_t)(TCP_FLAGS)))) | htons(flags)) -#define TCPH_SET_FLAG(phdr, flags ) (phdr)->_hdrlen_rsvd_flags = ((phdr)->_hdrlen_rsvd_flags | htons(flags)) -#define TCPH_UNSET_FLAG(phdr, flags) (phdr)->_hdrlen_rsvd_flags = htons(ntohs((phdr)->_hdrlen_rsvd_flags) | (TCPH_FLAGS(phdr) & ~(flags)) ) - -#define TCP_TCPLEN(seg) ((seg)->len + ((TCPH_FLAGS((seg)->tcphdr) & (TCP_FIN | TCP_SYN)) != 0)) - -enum tcp_state { - CLOSED = 0, - LISTEN = 1, - SYN_SENT = 2, - SYN_RCVD = 3, - ESTABLISHED = 4, - FIN_WAIT_1 = 5, - FIN_WAIT_2 = 6, - CLOSE_WAIT = 7, - CLOSING = 8, - LAST_ACK = 9, - TIME_WAIT = 10 -}; - -/** Flags used on input processing, not on pcb->flags -*/ -#define TF_RESET (u8_t)0x08U /* Connection was reset. */ -#define TF_CLOSED (u8_t)0x10U /* Connection was sucessfully closed. */ -#define TF_GOT_FIN (u8_t)0x20U /* Connection was closed by the remote end. */ - - -#if LWIP_CALLBACK_API - /* Function to call when a listener has been connected. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb a new tcp_pcb that now is connected - * @param err an error argument (TODO: that is current always ERR_OK?) - * @return ERR_OK: accept the new connection, - * any other err_t abortsthe new connection - */ -#define DEF_ACCEPT_CALLBACK err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err) -#else /* LWIP_CALLBACK_API */ -#define DEF_ACCEPT_CALLBACK -#endif /* LWIP_CALLBACK_API */ - -/** - * members common to struct tcp_pcb and struct tcp_listen_pcb - */ -#define TCP_PCB_COMMON(type) \ - type *next; /* for the linked list */ \ - enum tcp_state state; /* TCP state */ \ - u8_t prio; \ - void *callback_arg; \ - /* ports are in host byte order */ \ - u16_t local_port; \ - /* the accept callback for listen- and normal pcbs, if LWIP_CALLBACK_API */ \ - DEF_ACCEPT_CALLBACK - - -/* the TCP protocol control block */ -struct tcp_pcb { -/** common PCB members */ - IP_PCB; -/** protocol specific PCB members */ - TCP_PCB_COMMON(struct tcp_pcb); - - /* ports are in host byte order */ - u16_t remote_port; - - u8_t flags; -#define TF_ACK_DELAY ((u8_t)0x01U) /* Delayed ACK. */ -#define TF_ACK_NOW ((u8_t)0x02U) /* Immediate ACK. */ -#define TF_INFR ((u8_t)0x04U) /* In fast recovery. */ -#define TF_TIMESTAMP ((u8_t)0x08U) /* Timestamp option enabled */ -#define TF_FIN ((u8_t)0x20U) /* Connection was closed locally (FIN segment enqueued). */ -#define TF_NODELAY ((u8_t)0x40U) /* Disable Nagle algorithm */ -#define TF_NAGLEMEMERR ((u8_t)0x80U) /* nagle enabled, memerr, try to output to prevent delayed ACK to happen */ - - /* the rest of the fields are in host byte order - as we have to do some math with them */ - /* receiver variables */ - u32_t rcv_nxt; /* next seqno expected */ - u16_t rcv_wnd; /* receiver window available */ - u16_t rcv_ann_wnd; /* receiver window to announce */ - u32_t rcv_ann_right_edge; /* announced right edge of window */ - - /* Timers */ - u32_t tmr; - u8_t polltmr, pollinterval; - - /* Retransmission timer. */ - s16_t rtime; - - u16_t mss; /* maximum segment size */ - - /* RTT (round trip time) estimation variables */ - u32_t rttest; /* RTT estimate in 500ms ticks */ - u32_t rtseq; /* sequence number being timed */ - s16_t sa, sv; /* @todo document this */ - - s16_t rto; /* retransmission time-out */ - u8_t nrtx; /* number of retransmissions */ - - /* fast retransmit/recovery */ - u32_t lastack; /* Highest acknowledged seqno. */ - u8_t dupacks; - - /* congestion avoidance/control variables */ - u16_t cwnd; - u16_t ssthresh; - - /* sender variables */ - u32_t snd_nxt; /* next new seqno to be sent */ - u16_t snd_wnd; /* sender window */ - u32_t snd_wl1, snd_wl2; /* Sequence and acknowledgement numbers of last - window update. */ - u32_t snd_lbb; /* Sequence number of next byte to be buffered. */ - - u16_t acked; - - u16_t snd_buf; /* Available buffer space for sending (in bytes). */ -#define TCP_SNDQUEUELEN_OVERFLOW (0xffff-3) - u16_t snd_queuelen; /* Available buffer space for sending (in tcp_segs). */ - - - /* These are ordered by sequence number: */ - struct tcp_seg *unsent; /* Unsent (queued) segments. */ - struct tcp_seg *unacked; /* Sent but unacknowledged segments. */ -#if TCP_QUEUE_OOSEQ - struct tcp_seg *ooseq; /* Received out of sequence segments. */ -#endif /* TCP_QUEUE_OOSEQ */ - - struct pbuf *refused_data; /* Data previously received but not yet taken by upper layer */ - -#if LWIP_CALLBACK_API - /* Function to be called when more send buffer space is available. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb the tcp_pcb which has send buffer space available - * @param space the amount of bytes available - * @return ERR_OK: try to send some data by calling tcp_output - */ - err_t (* sent)(void *arg, struct tcp_pcb *pcb, u16_t space); - - /* Function to be called when (in-sequence) data has arrived. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb the tcp_pcb for which data has arrived - * @param p the packet buffer which arrived - * @param err an error argument (TODO: that is current always ERR_OK?) - * @return ERR_OK: try to send some data by calling tcp_output - */ - err_t (* recv)(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err); - - /* Function to be called when a connection has been set up. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb the tcp_pcb that now is connected - * @param err an error argument (TODO: that is current always ERR_OK?) - * @return value is currently ignored - */ - err_t (* connected)(void *arg, struct tcp_pcb *pcb, err_t err); - - /* Function which is called periodically. - * The period can be adjusted in multiples of the TCP slow timer interval - * by changing tcp_pcb.polltmr. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb the tcp_pcb to poll for - * @return ERR_OK: try to send some data by calling tcp_output - */ - err_t (* poll)(void *arg, struct tcp_pcb *pcb); - - /* Function to be called whenever a fatal error occurs. - * There is no pcb parameter since most of the times, the pcb is - * already deallocated (or there is no pcb) when this function is called. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param err an indication why the error callback is called: - * ERR_ABRT: aborted through tcp_abort or by a TCP timer - * ERR_RST: the connection was reset by the remote host - */ - void (* errf)(void *arg, err_t err); -#endif /* LWIP_CALLBACK_API */ - -#if LWIP_TCP_TIMESTAMPS - u32_t ts_lastacksent; - u32_t ts_recent; -#endif /* LWIP_TCP_TIMESTAMPS */ - - /* idle time before KEEPALIVE is sent */ - u32_t keep_idle; -#if LWIP_TCP_KEEPALIVE - u32_t keep_intvl; - u32_t keep_cnt; -#endif /* LWIP_TCP_KEEPALIVE */ - - /* Persist timer counter */ - u32_t persist_cnt; - /* Persist timer back-off */ - u8_t persist_backoff; - - /* KEEPALIVE counter */ - u8_t keep_cnt_sent; -}; - -struct tcp_pcb_listen { -/* Common members of all PCB types */ - IP_PCB; -/* Protocol specific PCB members */ - TCP_PCB_COMMON(struct tcp_pcb_listen); - -#if TCP_LISTEN_BACKLOG - u8_t backlog; - u8_t accepts_pending; -#endif /* TCP_LISTEN_BACKLOG */ -}; - -#if LWIP_EVENT_API - -enum lwip_event { - LWIP_EVENT_ACCEPT, - LWIP_EVENT_SENT, - LWIP_EVENT_RECV, - LWIP_EVENT_CONNECTED, - LWIP_EVENT_POLL, - LWIP_EVENT_ERR -}; - -err_t lwip_tcp_event(void *arg, struct tcp_pcb *pcb, - enum lwip_event, - struct pbuf *p, - u16_t size, - err_t err); - -#define TCP_EVENT_ACCEPT(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_ACCEPT, NULL, 0, err) -#define TCP_EVENT_SENT(pcb,space,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_SENT, NULL, space, ERR_OK) -#define TCP_EVENT_RECV(pcb,p,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_RECV, (p), 0, (err)) -#define TCP_EVENT_CONNECTED(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_CONNECTED, NULL, 0, (err)) -#define TCP_EVENT_POLL(pcb,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_POLL, NULL, 0, ERR_OK) -#define TCP_EVENT_ERR(errf,arg,err) lwip_tcp_event((arg), NULL, \ - LWIP_EVENT_ERR, NULL, 0, (err)) -#else /* LWIP_EVENT_API */ - -#define TCP_EVENT_ACCEPT(pcb,err,ret) \ - do { \ - if((pcb)->accept != NULL) \ - (ret) = (pcb)->accept((pcb)->callback_arg,(pcb),(err)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_SENT(pcb,space,ret) \ - do { \ - if((pcb)->sent != NULL) \ - (ret) = (pcb)->sent((pcb)->callback_arg,(pcb),(space)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_RECV(pcb,p,err,ret) \ - do { \ - if((pcb)->recv != NULL) { \ - (ret) = (pcb)->recv((pcb)->callback_arg,(pcb),(p),(err)); \ - } else { \ - (ret) = tcp_recv_null(NULL, (pcb), (p), (err)); \ - } \ - } while (0) - -#define TCP_EVENT_CONNECTED(pcb,err,ret) \ - do { \ - if((pcb)->connected != NULL) \ - (ret) = (pcb)->connected((pcb)->callback_arg,(pcb),(err)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_POLL(pcb,ret) \ - do { \ - if((pcb)->poll != NULL) \ - (ret) = (pcb)->poll((pcb)->callback_arg,(pcb)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_ERR(errf,arg,err) \ - do { \ - if((errf) != NULL) \ - (errf)((arg),(err)); \ - } while (0) - -#endif /* LWIP_EVENT_API */ - -/* This structure represents a TCP segment on the unsent and unacked queues */ -struct tcp_seg { - struct tcp_seg *next; /* used when putting segements on a queue */ - struct pbuf *p; /* buffer containing data + TCP header */ - void *dataptr; /* pointer to the TCP data in the pbuf */ - u16_t len; /* the TCP length of this segment */ - u8_t flags; -#define TF_SEG_OPTS_MSS (u8_t)0x01U /* Include MSS option. */ -#define TF_SEG_OPTS_TS (u8_t)0x02U /* Include timestamp option. */ - struct tcp_hdr *tcphdr; /* the TCP header */ -}; - -#define LWIP_TCP_OPT_LENGTH(flags) \ - (flags & TF_SEG_OPTS_MSS ? 4 : 0) + \ - (flags & TF_SEG_OPTS_TS ? 12 : 0) - -/** This returns a TCP header option for MSS in an u32_t */ -#define TCP_BUILD_MSS_OPTION(x) (x) = htonl(((u32_t)2 << 24) | \ - ((u32_t)4 << 16) | \ - (((u32_t)TCP_MSS / 256) << 8) | \ - (TCP_MSS & 255)) - -/* Internal functions and global variables: */ -struct tcp_pcb *tcp_pcb_copy(struct tcp_pcb *pcb); -void tcp_pcb_purge(struct tcp_pcb *pcb); -void tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb); - -u8_t tcp_segs_free(struct tcp_seg *seg); -u8_t tcp_seg_free(struct tcp_seg *seg); -struct tcp_seg *tcp_seg_copy(struct tcp_seg *seg); - -#define tcp_ack(pcb) \ - do { \ - if((pcb)->flags & TF_ACK_DELAY) { \ - (pcb)->flags &= ~TF_ACK_DELAY; \ - (pcb)->flags |= TF_ACK_NOW; \ - tcp_output(pcb); \ - } \ - else { \ - (pcb)->flags |= TF_ACK_DELAY; \ - } \ - } while (0) - -#define tcp_ack_now(pcb) \ - do { \ - (pcb)->flags |= TF_ACK_NOW; \ - tcp_output(pcb); \ - } while (0) - -err_t tcp_send_ctrl(struct tcp_pcb *pcb, u8_t flags); -err_t tcp_enqueue(struct tcp_pcb *pcb, void *dataptr, u16_t len, - u8_t flags, u8_t apiflags, u8_t optflags); - -void tcp_rexmit_seg(struct tcp_pcb *pcb, struct tcp_seg *seg); - -void tcp_rst(u32_t seqno, u32_t ackno, - struct ip_addr *local_ip, struct ip_addr *remote_ip, - u16_t local_port, u16_t remote_port); - -u32_t tcp_next_iss(void); - -void tcp_keepalive(struct tcp_pcb *pcb); -void tcp_zero_window_probe(struct tcp_pcb *pcb); - -#if TCP_CALCULATE_EFF_SEND_MSS -u16_t tcp_eff_send_mss(u16_t sendmss, struct ip_addr *addr); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - -#if LWIP_CALLBACK_API -err_t tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err); -#endif /* LWIP_CALLBACK_API */ - -extern struct tcp_pcb *tcp_input_pcb; -extern u32_t tcp_ticks; - -const char* tcp_debug_state_str(enum tcp_state s); -#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG -void tcp_debug_print(struct tcp_hdr *tcphdr); -void tcp_debug_print_flags(u8_t flags); -void tcp_debug_print_state(enum tcp_state s); -void tcp_debug_print_pcbs(void); -s16_t tcp_pcbs_sane(void); -#else -# define tcp_debug_print(tcphdr) -# define tcp_debug_print_flags(flags) -# define tcp_debug_print_state(s) -# define tcp_debug_print_pcbs() -# define tcp_pcbs_sane() 1 -#endif /* TCP_DEBUG */ - -#if NO_SYS -#define tcp_timer_needed() -#else -void tcp_timer_needed(void); -#endif - -/* The TCP PCB lists. */ -union tcp_listen_pcbs_t { /* List of all TCP PCBs in LISTEN state. */ - struct tcp_pcb_listen *listen_pcbs; - struct tcp_pcb *pcbs; -}; -extern union tcp_listen_pcbs_t tcp_listen_pcbs; -extern struct tcp_pcb *tcp_active_pcbs; /* List of all TCP PCBs that are in a - state in which they accept or send - data. */ -extern struct tcp_pcb *tcp_tw_pcbs; /* List of all TCP PCBs in TIME-WAIT. */ - -extern struct tcp_pcb *tcp_tmp_pcb; /* Only used for temporary storage. */ - -/* Axioms about the above lists: - 1) Every TCP PCB that is not CLOSED is in one of the lists. - 2) A PCB is only in one of the lists. - 3) All PCBs in the tcp_listen_pcbs list is in LISTEN state. - 4) All PCBs in the tcp_tw_pcbs list is in TIME-WAIT state. -*/ - -/* Define two macros, TCP_REG and TCP_RMV that registers a TCP PCB - with a PCB list or removes a PCB from a list, respectively. */ -#if 0 -#define TCP_REG(pcbs, npcb) do {\ - LWIP_DEBUGF(TCP_DEBUG, ("TCP_REG %p local port %d\n", npcb, npcb->local_port)); \ - for(tcp_tmp_pcb = *pcbs; \ - tcp_tmp_pcb != NULL; \ - tcp_tmp_pcb = tcp_tmp_pcb->next) { \ - LWIP_ASSERT("TCP_REG: already registered\n", tcp_tmp_pcb != npcb); \ - } \ - LWIP_ASSERT("TCP_REG: pcb->state != CLOSED", npcb->state != CLOSED); \ - npcb->next = *pcbs; \ - LWIP_ASSERT("TCP_REG: npcb->next != npcb", npcb->next != npcb); \ - *(pcbs) = npcb; \ - LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \ - tcp_timer_needed(); \ - } while(0) -#define TCP_RMV(pcbs, npcb) do { \ - LWIP_ASSERT("TCP_RMV: pcbs != NULL", *pcbs != NULL); \ - LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removing %p from %p\n", npcb, *pcbs)); \ - if(*pcbs == npcb) { \ - *pcbs = (*pcbs)->next; \ - } else for(tcp_tmp_pcb = *pcbs; tcp_tmp_pcb != NULL; tcp_tmp_pcb = tcp_tmp_pcb->next) { \ - if(tcp_tmp_pcb->next == npcb) { \ - tcp_tmp_pcb->next = npcb->next; \ - break; \ - } \ - } \ - npcb->next = NULL; \ - LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \ - LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removed %p from %p\n", npcb, *pcbs)); \ - } while(0) - -#else /* LWIP_DEBUG */ - -#define TCP_REG(pcbs, npcb) \ - do { \ - npcb->next = *pcbs; \ - *(pcbs) = npcb; \ - tcp_timer_needed(); \ - } while (0) - -#define TCP_RMV(pcbs, npcb) \ - do { \ - if(*(pcbs) == npcb) { \ - (*(pcbs)) = (*pcbs)->next; \ - } \ - else { \ - for(tcp_tmp_pcb = *pcbs; \ - tcp_tmp_pcb != NULL; \ - tcp_tmp_pcb = tcp_tmp_pcb->next) { \ - if(tcp_tmp_pcb->next == npcb) { \ - tcp_tmp_pcb->next = npcb->next; \ - break; \ - } \ - } \ - } \ - npcb->next = NULL; \ - } while(0) - -#endif /* LWIP_DEBUG */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_TCP */ - -#endif /* __LWIP_TCP_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcpip.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcpip.h deleted file mode 100644 index 00a3ec5..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcpip.h +++ /dev/null @@ -1,143 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_TCPIP_H__ -#define __LWIP_TCPIP_H__ - -#include "lwip/opt.h" - -#if !NO_SYS /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/api_msg.h" -#include "lwip/netifapi.h" -#include "lwip/pbuf.h" -#include "lwip/api.h" -#include "lwip/sys.h" -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if LWIP_TCPIP_CORE_LOCKING -/** The global semaphore to lock the stack. */ -extern sys_sem_t lock_tcpip_core; -#define LOCK_TCPIP_CORE() sys_sem_wait(lock_tcpip_core) -#define UNLOCK_TCPIP_CORE() sys_sem_signal(lock_tcpip_core) -#define TCPIP_APIMSG(m) tcpip_apimsg_lock(m) -#define TCPIP_APIMSG_ACK(m) -#define TCPIP_NETIFAPI(m) tcpip_netifapi_lock(m) -#define TCPIP_NETIFAPI_ACK(m) -#else -#define LOCK_TCPIP_CORE() -#define UNLOCK_TCPIP_CORE() -#define TCPIP_APIMSG(m) tcpip_apimsg(m) -#define TCPIP_APIMSG_ACK(m) sys_sem_signal(m->conn->op_completed) -#define TCPIP_NETIFAPI(m) tcpip_netifapi(m) -#define TCPIP_NETIFAPI_ACK(m) sys_sem_signal(m->sem) -#endif /* LWIP_TCPIP_CORE_LOCKING */ - -void tcpip_init(void (* tcpip_init_done)(void *), void *arg); - -#if LWIP_NETCONN -err_t tcpip_apimsg(struct api_msg *apimsg); -#if LWIP_TCPIP_CORE_LOCKING -err_t tcpip_apimsg_lock(struct api_msg *apimsg); -#endif /* LWIP_TCPIP_CORE_LOCKING */ -#endif /* LWIP_NETCONN */ - -err_t tcpip_input(struct pbuf *p, struct netif *inp); - -#if LWIP_NETIF_API -err_t tcpip_netifapi(struct netifapi_msg *netifapimsg); -#if LWIP_TCPIP_CORE_LOCKING -err_t tcpip_netifapi_lock(struct netifapi_msg *netifapimsg); -#endif /* LWIP_TCPIP_CORE_LOCKING */ -#endif /* LWIP_NETIF_API */ - -err_t tcpip_callback_with_block(void (*f)(void *ctx), void *ctx, u8_t block); -#define tcpip_callback(f, ctx) tcpip_callback_with_block(f, ctx, 1) - -/* free pbufs or heap memory from another context without blocking */ -err_t pbuf_free_callback(struct pbuf *p); -err_t mem_free_callback(void *m); - -err_t tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg); -err_t tcpip_untimeout(sys_timeout_handler h, void *arg); - -enum tcpip_msg_type { -#if LWIP_NETCONN - TCPIP_MSG_API, -#endif /* LWIP_NETCONN */ - TCPIP_MSG_INPKT, -#if LWIP_NETIF_API - TCPIP_MSG_NETIFAPI, -#endif /* LWIP_NETIF_API */ - TCPIP_MSG_CALLBACK, - TCPIP_MSG_TIMEOUT, - TCPIP_MSG_UNTIMEOUT -}; - -struct tcpip_msg { - enum tcpip_msg_type type; - sys_sem_t *sem; - union { -#if LWIP_NETCONN - struct api_msg *apimsg; -#endif /* LWIP_NETCONN */ -#if LWIP_NETIF_API - struct netifapi_msg *netifapimsg; -#endif /* LWIP_NETIF_API */ - struct { - struct pbuf *p; - struct netif *netif; - } inp; - struct { - void (*f)(void *ctx); - void *ctx; - } cb; - struct { - u32_t msecs; - sys_timeout_handler h; - void *arg; - } tmo; - } msg; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* !NO_SYS */ - -#endif /* __LWIP_TCPIP_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/udp.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/udp.h deleted file mode 100644 index 1269ee1..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/udp.h +++ /dev/null @@ -1,155 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_UDP_H__ -#define __LWIP_UDP_H__ - -#include "lwip/opt.h" - -#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/ip_addr.h" -#include "lwip/ip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define UDP_HLEN 8 - -/* Fields are (of course) in network byte order. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct udp_hdr { - PACK_STRUCT_FIELD(u16_t src); - PACK_STRUCT_FIELD(u16_t dest); /* src/dest UDP ports */ - PACK_STRUCT_FIELD(u16_t len); - PACK_STRUCT_FIELD(u16_t chksum); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define UDP_FLAGS_NOCHKSUM 0x01U -#define UDP_FLAGS_UDPLITE 0x02U -#define UDP_FLAGS_CONNECTED 0x04U - -struct udp_pcb { -/* Common members of all PCB types */ - IP_PCB; - -/* Protocol specific PCB members */ - - struct udp_pcb *next; - - u8_t flags; - /* ports are in host byte order */ - u16_t local_port, remote_port; - -#if LWIP_IGMP - /* outgoing network interface for multicast packets */ - struct ip_addr multicast_ip; -#endif /* LWIP_IGMP */ - -#if LWIP_UDPLITE - /* used for UDP_LITE only */ - u16_t chksum_len_rx, chksum_len_tx; -#endif /* LWIP_UDPLITE */ - - /* receive callback function - * addr and port are in same byte order as in the pcb - * The callback is responsible for freeing the pbuf - * if it's not used any more. - * - * ATTENTION: Be aware that 'addr' points into the pbuf 'p' so freeing this pbuf - * makes 'addr' invalid, too. - * - * @param arg user supplied argument (udp_pcb.recv_arg) - * @param pcb the udp_pcb which received data - * @param p the packet buffer that was received - * @param addr the remote IP address from which the packet was received - * @param port the remote port from which the packet was received - */ - void (* recv)(void *arg, struct udp_pcb *pcb, struct pbuf *p, - struct ip_addr *addr, u16_t port); - /* user-supplied argument for the recv callback */ - void *recv_arg; -}; -/* udp_pcbs export for exernal reference (e.g. SNMP agent) */ -extern struct udp_pcb *udp_pcbs; - -/* The following functions is the application layer interface to the - UDP code. */ -struct udp_pcb * udp_new (void); -void udp_remove (struct udp_pcb *pcb); -err_t udp_bind (struct udp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port); -err_t udp_connect (struct udp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port); -void udp_disconnect (struct udp_pcb *pcb); -void udp_recv (struct udp_pcb *pcb, - void (* recv)(void *arg, struct udp_pcb *upcb, - struct pbuf *p, - struct ip_addr *addr, - u16_t port), - void *recv_arg); -err_t udp_sendto_if (struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *dst_ip, u16_t dst_port, struct netif *netif); -err_t udp_sendto (struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *dst_ip, u16_t dst_port); -err_t udp_send (struct udp_pcb *pcb, struct pbuf *p); - -#define udp_flags(pcb) ((pcb)->flags) -#define udp_setflags(pcb, f) ((pcb)->flags = (f)) - -/* The following functions are the lower layer interface to UDP. */ -void udp_input (struct pbuf *p, struct netif *inp); - -#define udp_init() /* Compatibility define, not init needed. */ - -#if UDP_DEBUG -void udp_debug_print(struct udp_hdr *udphdr); -#else -#define udp_debug_print(udphdr) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_UDP */ - -#endif /* __LWIP_UDP_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/etharp.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/etharp.h deleted file mode 100644 index fb1542a..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/etharp.h +++ /dev/null @@ -1,194 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * Copyright (c) 2003-2004 Leon Woestenberg - * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#ifndef __NETIF_ETHARP_H__ -#define __NETIF_ETHARP_H__ - -#include "lwip/opt.h" - -#if LWIP_ARP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/ip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef ETH_PAD_SIZE -#define ETH_PAD_SIZE 0 -#endif - -#ifndef ETHARP_HWADDR_LEN -#define ETHARP_HWADDR_LEN 6 -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct eth_addr { - PACK_STRUCT_FIELD(u8_t addr[ETHARP_HWADDR_LEN]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct eth_hdr { -#if ETH_PAD_SIZE - PACK_STRUCT_FIELD(u8_t padding[ETH_PAD_SIZE]); -#endif - PACK_STRUCT_FIELD(struct eth_addr dest); - PACK_STRUCT_FIELD(struct eth_addr src); - PACK_STRUCT_FIELD(u16_t type); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define SIZEOF_ETH_HDR (14 + ETH_PAD_SIZE) - -#if ETHARP_SUPPORT_VLAN - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct eth_vlan_hdr { - PACK_STRUCT_FIELD(u16_t tpid); - PACK_STRUCT_FIELD(u16_t prio_vid); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define SIZEOF_VLAN_HDR 4 -#define VLAN_ID(vlan_hdr) (htons((vlan_hdr)->prio_vid) & 0xFFF) - -#endif /* ETHARP_SUPPORT_VLAN */ - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** the ARP message */ -struct etharp_hdr { - PACK_STRUCT_FIELD(u16_t hwtype); - PACK_STRUCT_FIELD(u16_t proto); - PACK_STRUCT_FIELD(u16_t _hwlen_protolen); - PACK_STRUCT_FIELD(u16_t opcode); - PACK_STRUCT_FIELD(struct eth_addr shwaddr); - PACK_STRUCT_FIELD(struct ip_addr2 sipaddr); - PACK_STRUCT_FIELD(struct eth_addr dhwaddr); - PACK_STRUCT_FIELD(struct ip_addr2 dipaddr); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define SIZEOF_ETHARP_HDR 28 -#define SIZEOF_ETHARP_PACKET (SIZEOF_ETH_HDR + SIZEOF_ETHARP_HDR) - -/** 5 seconds period */ -#define ARP_TMR_INTERVAL 5000 - -#define ETHTYPE_ARP 0x0806 -#define ETHTYPE_IP 0x0800 -#define ETHTYPE_VLAN 0x8100 -#define ETHTYPE_PPPOEDISC 0x8863 /* PPP Over Ethernet Discovery Stage */ -#define ETHTYPE_PPPOE 0x8864 /* PPP Over Ethernet Session Stage */ - -/** ARP message types (opcodes) */ -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -#if ARP_QUEUEING -/** struct for queueing outgoing packets for unknown address - * defined here to be accessed by memp.h - */ -struct etharp_q_entry { - struct etharp_q_entry *next; - struct pbuf *p; -}; -#endif /* ARP_QUEUEING */ - -#define etharp_init() /* Compatibility define, not init needed. */ -void etharp_tmr(void); -s8_t etharp_find_addr(struct netif *netif, struct ip_addr *ipaddr, - struct eth_addr **eth_ret, struct ip_addr **ip_ret); -void etharp_ip_input(struct netif *netif, struct pbuf *p); -void etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, - struct pbuf *p); -err_t etharp_output(struct netif *netif, struct pbuf *q, struct ip_addr *ipaddr); -err_t etharp_query(struct netif *netif, struct ip_addr *ipaddr, struct pbuf *q); -err_t etharp_request(struct netif *netif, struct ip_addr *ipaddr); -/** For Ethernet network interfaces, we might want to send "gratuitous ARP"; - * this is an ARP packet sent by a node in order to spontaneously cause other - * nodes to update an entry in their ARP cache. - * From RFC 3220 "IP Mobility Support for IPv4" section 4.6. */ -#define etharp_gratuitous(netif) etharp_request((netif), &(netif)->ip_addr) - -err_t ethernet_input(struct pbuf *p, struct netif *netif); - -#if LWIP_AUTOIP -err_t etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr, - const struct eth_addr *ethdst_addr, - const struct eth_addr *hwsrc_addr, const struct ip_addr *ipsrc_addr, - const struct eth_addr *hwdst_addr, const struct ip_addr *ipdst_addr, - const u16_t opcode); -#endif /* LWIP_AUTOIP */ - -#define eth_addr_cmp(addr1, addr2) (memcmp((addr1)->addr, (addr2)->addr, ETHARP_HWADDR_LEN) == 0) - -extern const struct eth_addr ethbroadcast, ethzero; - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_ARP */ - -#endif /* __NETIF_ARP_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/loopif.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/loopif.h deleted file mode 100644 index 3f4fa62..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/loopif.h +++ /dev/null @@ -1,55 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __NETIF_LOOPIF_H__ -#define __NETIF_LOOPIF_H__ - -#include "lwip/opt.h" -#include "lwip/netif.h" -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if !LWIP_NETIF_LOOPBACK_MULTITHREADING -#define loopif_poll netif_poll -#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */ - -err_t loopif_init(struct netif *netif); - -#ifdef __cplusplus -} -#endif - -#endif /* __NETIF_LOOPIF_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h deleted file mode 100644 index fac0a78..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h +++ /dev/null @@ -1,163 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/***************************************************************************** -* ppp_oe.h - PPP Over Ethernet implementation for lwIP. -* -* Copyright (c) 2006 by Marc Boucher, Services Informatiques (MBSI) inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE 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 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 06-01-01 Marc Boucher -* Ported to lwIP. -*****************************************************************************/ - - - -/* based on NetBSD: if_pppoe.c,v 1.64 2006/01/31 23:50:15 martin Exp */ - -/*- - * Copyright (c) 2002 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Martin Husemann . - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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. - */ -#ifndef PPP_OE_H -#define PPP_OE_H - -#include "lwip/opt.h" - -#if PPPOE_SUPPORT > 0 - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct pppoehdr { - PACK_STRUCT_FIELD(u8_t vertype); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t session); - PACK_STRUCT_FIELD(u16_t plen); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct pppoetag { - PACK_STRUCT_FIELD(u16_t tag); - PACK_STRUCT_FIELD(u16_t len); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - - -#define PPPOE_STATE_INITIAL 0 -#define PPPOE_STATE_PADI_SENT 1 -#define PPPOE_STATE_PADR_SENT 2 -#define PPPOE_STATE_SESSION 3 -#define PPPOE_STATE_CLOSING 4 -/* passive */ -#define PPPOE_STATE_PADO_SENT 1 - -#define PPPOE_HEADERLEN sizeof(struct pppoehdr) -#define PPPOE_VERTYPE 0x11 /* VER=1, TYPE = 1 */ - -#define PPPOE_TAG_EOL 0x0000 /* end of list */ -#define PPPOE_TAG_SNAME 0x0101 /* service name */ -#define PPPOE_TAG_ACNAME 0x0102 /* access concentrator name */ -#define PPPOE_TAG_HUNIQUE 0x0103 /* host unique */ -#define PPPOE_TAG_ACCOOKIE 0x0104 /* AC cookie */ -#define PPPOE_TAG_VENDOR 0x0105 /* vendor specific */ -#define PPPOE_TAG_RELAYSID 0x0110 /* relay session id */ -#define PPPOE_TAG_SNAME_ERR 0x0201 /* service name error */ -#define PPPOE_TAG_ACSYS_ERR 0x0202 /* AC system error */ -#define PPPOE_TAG_GENERIC_ERR 0x0203 /* gerneric error */ - -#define PPPOE_CODE_PADI 0x09 /* Active Discovery Initiation */ -#define PPPOE_CODE_PADO 0x07 /* Active Discovery Offer */ -#define PPPOE_CODE_PADR 0x19 /* Active Discovery Request */ -#define PPPOE_CODE_PADS 0x65 /* Active Discovery Session confirmation */ -#define PPPOE_CODE_PADT 0xA7 /* Active Discovery Terminate */ - -#ifndef ETHERMTU -#define ETHERMTU 1500 -#endif - -/* two byte PPP protocol discriminator, then IP data */ -#define PPPOE_MAXMTU (ETHERMTU-PPPOE_HEADERLEN-2) - -struct pppoe_softc; - - -void pppoe_init(void); - -err_t pppoe_create(struct netif *ethif, int pd, void (*linkStatusCB)(int pd, int up), struct pppoe_softc **scptr); -err_t pppoe_destroy(struct netif *ifp); - -int pppoe_connect(struct pppoe_softc *sc); -void pppoe_disconnect(struct pppoe_softc *sc); - -void pppoe_disc_input(struct netif *netif, struct pbuf *p); -void pppoe_data_input(struct netif *netif, struct pbuf *p); - -err_t pppoe_xmit(struct pppoe_softc *sc, struct pbuf *pb); - -extern int pppoe_hdrlen; - -#endif /* PPPOE_SUPPORT */ - -#endif /* PPP_OE_H */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/slipif.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/slipif.h deleted file mode 100644 index ddc2dfa..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/slipif.h +++ /dev/null @@ -1,53 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute 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 INSTITUTE 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 INSTITUTE 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __NETIF_SLIPIF_H__ -#define __NETIF_SLIPIF_H__ - -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -err_t slipif_init(struct netif * netif); -void slipif_poll(struct netif *netif); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c deleted file mode 100644 index 1a5d134..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c +++ /dev/null @@ -1,1224 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Address Resolution Protocol module for IP over Ethernet - * - * Functionally, ARP is divided into two parts. The first maps an IP address - * to a physical address when sending a packet, and the second part answers - * requests from other machines for our physical address. - * - * This implementation complies with RFC 826 (Ethernet ARP). It supports - * Gratuitious ARP from RFC3220 (IP Mobility Support for IPv4) section 4.6 - * if an interface calls etharp_gratuitous(our_netif) upon address change. - */ - -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * Copyright (c) 2003-2004 Leon Woestenberg - * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - */ - -#include "lwip/opt.h" - -#if LWIP_ARP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/inet.h" -#include "lwip/ip.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" -#include "netif/etharp.h" - -#if PPPOE_SUPPORT -#include "netif/ppp_oe.h" -#endif /* PPPOE_SUPPORT */ - -#include - -/** the time an ARP entry stays valid after its last update, - * for ARP_TMR_INTERVAL = 5000, this is - * (240 * 5) seconds = 20 minutes. - */ -#define ARP_MAXAGE 240 -/** the time an ARP entry stays pending after first request, - * for ARP_TMR_INTERVAL = 5000, this is - * (2 * 5) seconds = 10 seconds. - * - * @internal Keep this number at least 2, otherwise it might - * run out instantly if the timeout occurs directly after a request. - */ -#define ARP_MAXPENDING 2 - -#define HWTYPE_ETHERNET 1 - -#define ARPH_HWLEN(hdr) (ntohs((hdr)->_hwlen_protolen) >> 8) -#define ARPH_PROTOLEN(hdr) (ntohs((hdr)->_hwlen_protolen) & 0xff) - -#define ARPH_HWLEN_SET(hdr, len) (hdr)->_hwlen_protolen = htons(ARPH_PROTOLEN(hdr) | ((len) << 8)) -#define ARPH_PROTOLEN_SET(hdr, len) (hdr)->_hwlen_protolen = htons((len) | (ARPH_HWLEN(hdr) << 8)) - -enum etharp_state { - ETHARP_STATE_EMPTY = 0, - ETHARP_STATE_PENDING, - ETHARP_STATE_STABLE -}; - -struct etharp_entry { -#if ARP_QUEUEING - /** - * Pointer to queue of pending outgoing packets on this ARP entry. - */ - struct etharp_q_entry *q; -#endif - struct ip_addr ipaddr; - struct eth_addr ethaddr; - enum etharp_state state; - u8_t ctime; - struct netif *netif; -}; - -const struct eth_addr ethbroadcast = {{0xff,0xff,0xff,0xff,0xff,0xff}}; -const struct eth_addr ethzero = {{0,0,0,0,0,0}}; -static struct etharp_entry arp_table[ARP_TABLE_SIZE]; -#if !LWIP_NETIF_HWADDRHINT -static u8_t etharp_cached_entry; -#endif - -/** - * Try hard to create a new entry - we want the IP address to appear in - * the cache (even if this means removing an active entry or so). */ -#define ETHARP_TRY_HARD 1 -#define ETHARP_FIND_ONLY 2 - -#if LWIP_NETIF_HWADDRHINT -#define NETIF_SET_HINT(netif, hint) if (((netif) != NULL) && ((netif)->addr_hint != NULL)) \ - *((netif)->addr_hint) = (hint); -static s8_t find_entry(struct ip_addr *ipaddr, u8_t flags, struct netif *netif); -#else /* LWIP_NETIF_HWADDRHINT */ -static s8_t find_entry(struct ip_addr *ipaddr, u8_t flags); -#endif /* LWIP_NETIF_HWADDRHINT */ - -static err_t update_arp_entry(struct netif *netif, struct ip_addr *ipaddr, struct eth_addr *ethaddr, u8_t flags); - - -/* Some checks, instead of etharp_init(): */ -#if (LWIP_ARP && (ARP_TABLE_SIZE > 0x7f)) - #error "If you want to use ARP, ARP_TABLE_SIZE must fit in an s8_t, so, you have to reduce it in your lwipopts.h" -#endif - - -#if ARP_QUEUEING -/** - * Free a complete queue of etharp entries - * - * @param q a qeueue of etharp_q_entry's to free - */ -static void -free_etharp_q(struct etharp_q_entry *q) -{ - struct etharp_q_entry *r; - LWIP_ASSERT("q != NULL", q != NULL); - LWIP_ASSERT("q->p != NULL", q->p != NULL); - while (q) { - r = q; - q = q->next; - LWIP_ASSERT("r->p != NULL", (r->p != NULL)); - pbuf_free(r->p); - memp_free(MEMP_ARP_QUEUE, r); - } -} -#endif - -/** - * Clears expired entries in the ARP table. - * - * This function should be called every ETHARP_TMR_INTERVAL microseconds (5 seconds), - * in order to expire entries in the ARP table. - */ -void -etharp_tmr(void) -{ - u8_t i; - - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer\n")); - /* remove expired entries from the ARP table */ - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - arp_table[i].ctime++; - if (((arp_table[i].state == ETHARP_STATE_STABLE) && - (arp_table[i].ctime >= ARP_MAXAGE)) || - ((arp_table[i].state == ETHARP_STATE_PENDING) && - (arp_table[i].ctime >= ARP_MAXPENDING))) { - /* pending or stable entry has become old! */ - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired %s entry %"U16_F".\n", - arp_table[i].state == ETHARP_STATE_STABLE ? "stable" : "pending", (u16_t)i)); - /* clean up entries that have just been expired */ - /* remove from SNMP ARP index tree */ - snmp_delete_arpidx_tree(arp_table[i].netif, &arp_table[i].ipaddr); -#if ARP_QUEUEING - /* and empty packet queue */ - if (arp_table[i].q != NULL) { - /* remove all queued packets */ - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: freeing entry %"U16_F", packet queue %p.\n", (u16_t)i, (void *)(arp_table[i].q))); - free_etharp_q(arp_table[i].q); - arp_table[i].q = NULL; - } -#endif - /* recycle entry for re-use */ - arp_table[i].state = ETHARP_STATE_EMPTY; - } -#if ARP_QUEUEING - /* still pending entry? (not expired) */ - if (arp_table[i].state == ETHARP_STATE_PENDING) { - /* resend an ARP query here? */ - } -#endif - } -} - -/** - * Search the ARP table for a matching or new entry. - * - * If an IP address is given, return a pending or stable ARP entry that matches - * the address. If no match is found, create a new entry with this address set, - * but in state ETHARP_EMPTY. The caller must check and possibly change the - * state of the returned entry. - * - * If ipaddr is NULL, return a initialized new entry in state ETHARP_EMPTY. - * - * In all cases, attempt to create new entries from an empty entry. If no - * empty entries are available and ETHARP_TRY_HARD flag is set, recycle - * old entries. Heuristic choose the least important entry for recycling. - * - * @param ipaddr IP address to find in ARP cache, or to add if not found. - * @param flags - * - ETHARP_TRY_HARD: Try hard to create a entry by allowing recycling of - * active (stable or pending) entries. - * - * @return The ARP entry index that matched or is created, ERR_MEM if no - * entry is found or could be recycled. - */ -static s8_t -#if LWIP_NETIF_HWADDRHINT -find_entry(struct ip_addr *ipaddr, u8_t flags, struct netif *netif) -#else /* LWIP_NETIF_HWADDRHINT */ -find_entry(struct ip_addr *ipaddr, u8_t flags) -#endif /* LWIP_NETIF_HWADDRHINT */ -{ - s8_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE; - s8_t empty = ARP_TABLE_SIZE; - u8_t i = 0, age_pending = 0, age_stable = 0; -#if ARP_QUEUEING - /* oldest entry with packets on queue */ - s8_t old_queue = ARP_TABLE_SIZE; - /* its age */ - u8_t age_queue = 0; -#endif - - /* First, test if the last call to this function asked for the - * same address. If so, we're really fast! */ - if (ipaddr) { - /* ipaddr to search for was given */ -#if LWIP_NETIF_HWADDRHINT - if ((netif != NULL) && (netif->addr_hint != NULL)) { - /* per-pcb cached entry was given */ - u8_t per_pcb_cache = *(netif->addr_hint); - if ((per_pcb_cache < ARP_TABLE_SIZE) && arp_table[per_pcb_cache].state == ETHARP_STATE_STABLE) { - /* the per-pcb-cached entry is stable */ - if (ip_addr_cmp(ipaddr, &arp_table[per_pcb_cache].ipaddr)) { - /* per-pcb cached entry was the right one! */ - ETHARP_STATS_INC(etharp.cachehit); - return per_pcb_cache; - } - } - } -#else /* #if LWIP_NETIF_HWADDRHINT */ - if (arp_table[etharp_cached_entry].state == ETHARP_STATE_STABLE) { - /* the cached entry is stable */ - if (ip_addr_cmp(ipaddr, &arp_table[etharp_cached_entry].ipaddr)) { - /* cached entry was the right one! */ - ETHARP_STATS_INC(etharp.cachehit); - return etharp_cached_entry; - } - } -#endif /* #if LWIP_NETIF_HWADDRHINT */ - } - - /** - * a) do a search through the cache, remember candidates - * b) select candidate entry - * c) create new entry - */ - - /* a) in a single search sweep, do all of this - * 1) remember the first empty entry (if any) - * 2) remember the oldest stable entry (if any) - * 3) remember the oldest pending entry without queued packets (if any) - * 4) remember the oldest pending entry with queued packets (if any) - * 5) search for a matching IP entry, either pending or stable - * until 5 matches, or all entries are searched for. - */ - - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - /* no empty entry found yet and now we do find one? */ - if ((empty == ARP_TABLE_SIZE) && (arp_table[i].state == ETHARP_STATE_EMPTY)) { - LWIP_DEBUGF(ETHARP_DEBUG, ("find_entry: found empty entry %"U16_F"\n", (u16_t)i)); - /* remember first empty entry */ - empty = i; - } - /* pending entry? */ - else if (arp_table[i].state == ETHARP_STATE_PENDING) { - /* if given, does IP address match IP address in ARP entry? */ - if (ipaddr && ip_addr_cmp(ipaddr, &arp_table[i].ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: found matching pending entry %"U16_F"\n", (u16_t)i)); - /* found exact IP address match, simply bail out */ -#if LWIP_NETIF_HWADDRHINT - NETIF_SET_HINT(netif, i); -#else /* #if LWIP_NETIF_HWADDRHINT */ - etharp_cached_entry = i; -#endif /* #if LWIP_NETIF_HWADDRHINT */ - return i; -#if ARP_QUEUEING - /* pending with queued packets? */ - } else if (arp_table[i].q != NULL) { - if (arp_table[i].ctime >= age_queue) { - old_queue = i; - age_queue = arp_table[i].ctime; - } -#endif - /* pending without queued packets? */ - } else { - if (arp_table[i].ctime >= age_pending) { - old_pending = i; - age_pending = arp_table[i].ctime; - } - } - } - /* stable entry? */ - else if (arp_table[i].state == ETHARP_STATE_STABLE) { - /* if given, does IP address match IP address in ARP entry? */ - if (ipaddr && ip_addr_cmp(ipaddr, &arp_table[i].ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: found matching stable entry %"U16_F"\n", (u16_t)i)); - /* found exact IP address match, simply bail out */ -#if LWIP_NETIF_HWADDRHINT - NETIF_SET_HINT(netif, i); -#else /* #if LWIP_NETIF_HWADDRHINT */ - etharp_cached_entry = i; -#endif /* #if LWIP_NETIF_HWADDRHINT */ - return i; - /* remember entry with oldest stable entry in oldest, its age in maxtime */ - } else if (arp_table[i].ctime >= age_stable) { - old_stable = i; - age_stable = arp_table[i].ctime; - } - } - } - /* { we have no match } => try to create a new entry */ - - /* no empty entry found and not allowed to recycle? */ - if (((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_TRY_HARD) == 0)) - /* or don't create new entry, only search? */ - || ((flags & ETHARP_FIND_ONLY) != 0)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: no empty entry found and not allowed to recycle\n")); - return (s8_t)ERR_MEM; - } - - /* b) choose the least destructive entry to recycle: - * 1) empty entry - * 2) oldest stable entry - * 3) oldest pending entry without queued packets - * 4) oldest pending entry with queued packets - * - * { ETHARP_TRY_HARD is set at this point } - */ - - /* 1) empty entry available? */ - if (empty < ARP_TABLE_SIZE) { - i = empty; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting empty entry %"U16_F"\n", (u16_t)i)); - } - /* 2) found recyclable stable entry? */ - else if (old_stable < ARP_TABLE_SIZE) { - /* recycle oldest stable*/ - i = old_stable; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting oldest stable entry %"U16_F"\n", (u16_t)i)); -#if ARP_QUEUEING - /* no queued packets should exist on stable entries */ - LWIP_ASSERT("arp_table[i].q == NULL", arp_table[i].q == NULL); -#endif - /* 3) found recyclable pending entry without queued packets? */ - } else if (old_pending < ARP_TABLE_SIZE) { - /* recycle oldest pending */ - i = old_pending; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting oldest pending entry %"U16_F" (without queue)\n", (u16_t)i)); -#if ARP_QUEUEING - /* 4) found recyclable pending entry with queued packets? */ - } else if (old_queue < ARP_TABLE_SIZE) { - /* recycle oldest pending */ - i = old_queue; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting oldest pending entry %"U16_F", freeing packet queue %p\n", (u16_t)i, (void *)(arp_table[i].q))); - free_etharp_q(arp_table[i].q); - arp_table[i].q = NULL; -#endif - /* no empty or recyclable entries found */ - } else { - return (s8_t)ERR_MEM; - } - - /* { empty or recyclable entry found } */ - LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE); - - if (arp_table[i].state != ETHARP_STATE_EMPTY) - { - snmp_delete_arpidx_tree(arp_table[i].netif, &arp_table[i].ipaddr); - } - /* recycle entry (no-op for an already empty entry) */ - arp_table[i].state = ETHARP_STATE_EMPTY; - - /* IP address given? */ - if (ipaddr != NULL) { - /* set IP address */ - ip_addr_set(&arp_table[i].ipaddr, ipaddr); - } - arp_table[i].ctime = 0; -#if LWIP_NETIF_HWADDRHINT - NETIF_SET_HINT(netif, i); -#else /* #if LWIP_NETIF_HWADDRHINT */ - etharp_cached_entry = i; -#endif /* #if LWIP_NETIF_HWADDRHINT */ - return (err_t)i; -} - -/** - * Send an IP packet on the network using netif->linkoutput - * The ethernet header is filled in before sending. - * - * @params netif the lwIP network interface on which to send the packet - * @params p the packet to send, p->payload pointing to the (uninitialized) ethernet header - * @params src the source MAC address to be copied into the ethernet header - * @params dst the destination MAC address to be copied into the ethernet header - * @return ERR_OK if the packet was sent, any other err_t on failure - */ -static err_t -etharp_send_ip(struct netif *netif, struct pbuf *p, struct eth_addr *src, struct eth_addr *dst) -{ - struct eth_hdr *ethhdr = p->payload; - u8_t k; - - LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!", - (netif->hwaddr_len == ETHARP_HWADDR_LEN)); - k = ETHARP_HWADDR_LEN; - while(k > 0) { - k--; - ethhdr->dest.addr[k] = dst->addr[k]; - ethhdr->src.addr[k] = src->addr[k]; - } - ethhdr->type = htons(ETHTYPE_IP); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_send_ip: sending packet %p\n", (void *)p)); - /* send the packet */ - return netif->linkoutput(netif, p); -} - -/** - * Update (or insert) a IP/MAC address pair in the ARP cache. - * - * If a pending entry is resolved, any queued packets will be sent - * at this point. - * - * @param ipaddr IP address of the inserted ARP entry. - * @param ethaddr Ethernet address of the inserted ARP entry. - * @param flags Defines behaviour: - * - ETHARP_TRY_HARD Allows ARP to insert this as a new item. If not specified, - * only existing ARP entries will be updated. - * - * @return - * - ERR_OK Succesfully updated ARP cache. - * - ERR_MEM If we could not add a new ARP entry when ETHARP_TRY_HARD was set. - * - ERR_ARG Non-unicast address given, those will not appear in ARP cache. - * - * @see pbuf_free() - */ -static err_t -update_arp_entry(struct netif *netif, struct ip_addr *ipaddr, struct eth_addr *ethaddr, u8_t flags) -{ - s8_t i; - u8_t k; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry()\n")); - LWIP_ASSERT("netif->hwaddr_len == ETHARP_HWADDR_LEN", netif->hwaddr_len == ETHARP_HWADDR_LEN); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n", - ip4_addr1(ipaddr), ip4_addr2(ipaddr), ip4_addr3(ipaddr), ip4_addr4(ipaddr), - ethaddr->addr[0], ethaddr->addr[1], ethaddr->addr[2], - ethaddr->addr[3], ethaddr->addr[4], ethaddr->addr[5])); - /* non-unicast address? */ - if (ip_addr_isany(ipaddr) || - ip_addr_isbroadcast(ipaddr, netif) || - ip_addr_ismulticast(ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry: will not add non-unicast IP address to ARP cache\n")); - return ERR_ARG; - } - /* find or create ARP entry */ -#if LWIP_NETIF_HWADDRHINT - i = find_entry(ipaddr, flags, netif); -#else /* LWIP_NETIF_HWADDRHINT */ - i = find_entry(ipaddr, flags); -#endif /* LWIP_NETIF_HWADDRHINT */ - /* bail out if no entry could be found */ - if (i < 0) - return (err_t)i; - - /* mark it stable */ - arp_table[i].state = ETHARP_STATE_STABLE; - /* record network interface */ - arp_table[i].netif = netif; - - /* insert in SNMP ARP index tree */ - snmp_insert_arpidx_tree(netif, &arp_table[i].ipaddr); - - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry: updating stable entry %"S16_F"\n", (s16_t)i)); - /* update address */ - k = ETHARP_HWADDR_LEN; - while (k > 0) { - k--; - arp_table[i].ethaddr.addr[k] = ethaddr->addr[k]; - } - /* reset time stamp */ - arp_table[i].ctime = 0; -#if ARP_QUEUEING - /* this is where we will send out queued packets! */ - while (arp_table[i].q != NULL) { - struct pbuf *p; - /* remember remainder of queue */ - struct etharp_q_entry *q = arp_table[i].q; - /* pop first item off the queue */ - arp_table[i].q = q->next; - /* get the packet pointer */ - p = q->p; - /* now queue entry can be freed */ - memp_free(MEMP_ARP_QUEUE, q); - /* send the queued IP packet */ - etharp_send_ip(netif, p, (struct eth_addr*)(netif->hwaddr), ethaddr); - /* free the queued IP packet */ - pbuf_free(p); - } -#endif - return ERR_OK; -} - -/** - * Finds (stable) ethernet/IP address pair from ARP table - * using interface and IP address index. - * @note the addresses in the ARP table are in network order! - * - * @param netif points to interface index - * @param ipaddr points to the (network order) IP address index - * @param eth_ret points to return pointer - * @param ip_ret points to return pointer - * @return table index if found, -1 otherwise - */ -s8_t -etharp_find_addr(struct netif *netif, struct ip_addr *ipaddr, - struct eth_addr **eth_ret, struct ip_addr **ip_ret) -{ - s8_t i; - - LWIP_UNUSED_ARG(netif); - -#if LWIP_NETIF_HWADDRHINT - i = find_entry(ipaddr, ETHARP_FIND_ONLY, NULL); -#else /* LWIP_NETIF_HWADDRHINT */ - i = find_entry(ipaddr, ETHARP_FIND_ONLY); -#endif /* LWIP_NETIF_HWADDRHINT */ - if((i >= 0) && arp_table[i].state == ETHARP_STATE_STABLE) { - *eth_ret = &arp_table[i].ethaddr; - *ip_ret = &arp_table[i].ipaddr; - return i; - } - return -1; -} - -/** - * Updates the ARP table using the given IP packet. - * - * Uses the incoming IP packet's source address to update the - * ARP cache for the local network. The function does not alter - * or free the packet. This function must be called before the - * packet p is passed to the IP layer. - * - * @param netif The lwIP network interface on which the IP packet pbuf arrived. - * @param p The IP packet that arrived on netif. - * - * @return NULL - * - * @see pbuf_free() - */ -void -etharp_ip_input(struct netif *netif, struct pbuf *p) -{ - struct eth_hdr *ethhdr; - struct ip_hdr *iphdr; - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - /* Only insert an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - ethhdr = p->payload; - iphdr = (struct ip_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR); -#if ETHARP_SUPPORT_VLAN - if (ethhdr->type == ETHTYPE_VLAN) { - iphdr = (struct ip_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR); - } -#endif /* ETHARP_SUPPORT_VLAN */ - - /* source is not on the local network? */ - if (!ip_addr_netcmp(&(iphdr->src), &(netif->ip_addr), &(netif->netmask))) { - /* do nothing */ - return; - } - - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_ip_input: updating ETHARP table.\n")); - /* update ARP table */ - /* @todo We could use ETHARP_TRY_HARD if we think we are going to talk - * back soon (for example, if the destination IP address is ours. */ - update_arp_entry(netif, &(iphdr->src), &(ethhdr->src), 0); -} - - -/** - * Responds to ARP requests to us. Upon ARP replies to us, add entry to cache - * send out queued IP packets. Updates cache with snooped address pairs. - * - * Should be called for incoming ARP packets. The pbuf in the argument - * is freed by this function. - * - * @param netif The lwIP network interface on which the ARP packet pbuf arrived. - * @param ethaddr Ethernet address of netif. - * @param p The ARP packet that arrived on netif. Is freed by this function. - * - * @return NULL - * - * @see pbuf_free() - */ -void -etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p) -{ - struct etharp_hdr *hdr; - struct eth_hdr *ethhdr; - /* these are aligned properly, whereas the ARP header fields might not be */ - struct ip_addr sipaddr, dipaddr; - u8_t i; - u8_t for_us; -#if LWIP_AUTOIP - const u8_t * ethdst_hwaddr; -#endif /* LWIP_AUTOIP */ - - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - - /* drop short ARP packets: we have to check for p->len instead of p->tot_len here - since a struct etharp_hdr is pointed to p->payload, so it musn't be chained! */ - if (p->len < SIZEOF_ETHARP_PACKET) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("etharp_arp_input: packet dropped, too short (%"S16_F"/%"S16_F")\n", p->tot_len, - (s16_t)SIZEOF_ETHARP_PACKET)); - ETHARP_STATS_INC(etharp.lenerr); - ETHARP_STATS_INC(etharp.drop); - pbuf_free(p); - return; - } - - ethhdr = p->payload; - hdr = (struct etharp_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR); -#if ETHARP_SUPPORT_VLAN - if (ethhdr->type == ETHTYPE_VLAN) { - hdr = (struct etharp_hdr *)(((u8_t*)ethhdr) + SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR); - } -#endif /* ETHARP_SUPPORT_VLAN */ - - /* RFC 826 "Packet Reception": */ - if ((hdr->hwtype != htons(HWTYPE_ETHERNET)) || - (hdr->_hwlen_protolen != htons((ETHARP_HWADDR_LEN << 8) | sizeof(struct ip_addr))) || - (hdr->proto != htons(ETHTYPE_IP)) || - (ethhdr->type != htons(ETHTYPE_ARP))) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("etharp_arp_input: packet dropped, wrong hw type, hwlen, proto, protolen or ethernet type (%"U16_F"/%"U16_F"/%"U16_F"/%"U16_F"/%"U16_F")\n", - hdr->hwtype, ARPH_HWLEN(hdr), hdr->proto, ARPH_PROTOLEN(hdr), ethhdr->type)); - ETHARP_STATS_INC(etharp.proterr); - ETHARP_STATS_INC(etharp.drop); - pbuf_free(p); - return; - } - ETHARP_STATS_INC(etharp.recv); - -#if LWIP_AUTOIP - /* We have to check if a host already has configured our random - * created link local address and continously check if there is - * a host with this IP-address so we can detect collisions */ - autoip_arp_reply(netif, hdr); -#endif /* LWIP_AUTOIP */ - - /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without - * structure packing (not using structure copy which breaks strict-aliasing rules). */ - SMEMCPY(&sipaddr, &hdr->sipaddr, sizeof(sipaddr)); - SMEMCPY(&dipaddr, &hdr->dipaddr, sizeof(dipaddr)); - - /* this interface is not configured? */ - if (netif->ip_addr.addr == 0) { - for_us = 0; - } else { - /* ARP packet directed to us? */ - for_us = ip_addr_cmp(&dipaddr, &(netif->ip_addr)); - } - - /* ARP message directed to us? */ - if (for_us) { - /* add IP address in ARP cache; assume requester wants to talk to us. - * can result in directly sending the queued packets for this host. */ - update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), ETHARP_TRY_HARD); - /* ARP message not directed to us? */ - } else { - /* update the source IP address in the cache, if present */ - update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), 0); - } - - /* now act on the message itself */ - switch (htons(hdr->opcode)) { - /* ARP request? */ - case ARP_REQUEST: - /* ARP request. If it asked for our address, we send out a - * reply. In any case, we time-stamp any existing ARP entry, - * and possiby send out an IP packet that was queued on it. */ - - LWIP_DEBUGF (ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: incoming ARP request\n")); - /* ARP request for our address? */ - if (for_us) { - - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: replying to ARP request for our IP address\n")); - /* Re-use pbuf to send ARP reply. - Since we are re-using an existing pbuf, we can't call etharp_raw since - that would allocate a new pbuf. */ - hdr->opcode = htons(ARP_REPLY); - - hdr->dipaddr = hdr->sipaddr; - SMEMCPY(&hdr->sipaddr, &netif->ip_addr, sizeof(hdr->sipaddr)); - - LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!", - (netif->hwaddr_len == ETHARP_HWADDR_LEN)); - i = ETHARP_HWADDR_LEN; -#if LWIP_AUTOIP - /* If we are using Link-Local, ARP packets must be broadcast on the - * link layer. (See RFC3927 Section 2.5) */ - ethdst_hwaddr = ((netif->autoip != NULL) && (netif->autoip->state != AUTOIP_STATE_OFF)) ? (u8_t*)(ethbroadcast.addr) : hdr->shwaddr.addr; -#endif /* LWIP_AUTOIP */ - - while(i > 0) { - i--; - hdr->dhwaddr.addr[i] = hdr->shwaddr.addr[i]; -#if LWIP_AUTOIP - ethhdr->dest.addr[i] = ethdst_hwaddr[i]; -#else /* LWIP_AUTOIP */ - ethhdr->dest.addr[i] = hdr->shwaddr.addr[i]; -#endif /* LWIP_AUTOIP */ - hdr->shwaddr.addr[i] = ethaddr->addr[i]; - ethhdr->src.addr[i] = ethaddr->addr[i]; - } - - /* hwtype, hwaddr_len, proto, protolen and the type in the ethernet header - are already correct, we tested that before */ - - /* return ARP reply */ - netif->linkoutput(netif, p); - /* we are not configured? */ - } else if (netif->ip_addr.addr == 0) { - /* { for_us == 0 and netif->ip_addr.addr == 0 } */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: we are unconfigured, ARP request ignored.\n")); - /* request was not directed to us */ - } else { - /* { for_us == 0 and netif->ip_addr.addr != 0 } */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: ARP request was not for us.\n")); - } - break; - case ARP_REPLY: - /* ARP reply. We already updated the ARP cache earlier. */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: incoming ARP reply\n")); -#if (LWIP_DHCP && DHCP_DOES_ARP_CHECK) - /* DHCP wants to know about ARP replies from any host with an - * IP address also offered to us by the DHCP server. We do not - * want to take a duplicate IP address on a single network. - * @todo How should we handle redundant (fail-over) interfaces? */ - dhcp_arp_reply(netif, &sipaddr); -#endif - break; - default: - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: ARP unknown opcode type %"S16_F"\n", htons(hdr->opcode))); - ETHARP_STATS_INC(etharp.err); - break; - } - /* free ARP packet */ - pbuf_free(p); -} - -/** - * Resolve and fill-in Ethernet address header for outgoing IP packet. - * - * For IP multicast and broadcast, corresponding Ethernet addresses - * are selected and the packet is transmitted on the link. - * - * For unicast addresses, the packet is submitted to etharp_query(). In - * case the IP address is outside the local network, the IP address of - * the gateway is used. - * - * @param netif The lwIP network interface which the IP packet will be sent on. - * @param q The pbuf(s) containing the IP packet to be sent. - * @param ipaddr The IP address of the packet destination. - * - * @return - * - ERR_RTE No route to destination (no gateway to external networks), - * or the return type of either etharp_query() or etharp_send_ip(). - */ -err_t -etharp_output(struct netif *netif, struct pbuf *q, struct ip_addr *ipaddr) -{ - struct eth_addr *dest, mcastaddr; - - /* make room for Ethernet header - should not fail */ - if (pbuf_header(q, sizeof(struct eth_hdr)) != 0) { - /* bail out */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("etharp_output: could not allocate room for header.\n")); - LINK_STATS_INC(link.lenerr); - return ERR_BUF; - } - - /* assume unresolved Ethernet address */ - dest = NULL; - /* Determine on destination hardware address. Broadcasts and multicasts - * are special, other IP addresses are looked up in the ARP table. */ - - /* broadcast destination IP address? */ - if (ip_addr_isbroadcast(ipaddr, netif)) { - /* broadcast on Ethernet also */ - dest = (struct eth_addr *)ðbroadcast; - /* multicast destination IP address? */ - } else if (ip_addr_ismulticast(ipaddr)) { - /* Hash IP multicast address to MAC address.*/ - mcastaddr.addr[0] = 0x01; - mcastaddr.addr[1] = 0x00; - mcastaddr.addr[2] = 0x5e; - mcastaddr.addr[3] = ip4_addr2(ipaddr) & 0x7f; - mcastaddr.addr[4] = ip4_addr3(ipaddr); - mcastaddr.addr[5] = ip4_addr4(ipaddr); - /* destination Ethernet address is multicast */ - dest = &mcastaddr; - /* unicast destination IP address? */ - } else { - /* outside local network? */ - if (!ip_addr_netcmp(ipaddr, &(netif->ip_addr), &(netif->netmask))) { - /* interface has default gateway? */ - if (netif->gw.addr != 0) { - /* send to hardware address of default gateway IP address */ - ipaddr = &(netif->gw); - /* no default gateway available */ - } else { - /* no route to destination error (default gateway missing) */ - return ERR_RTE; - } - } - /* queue on destination Ethernet address belonging to ipaddr */ - return etharp_query(netif, ipaddr, q); - } - - /* continuation for multicast/broadcast destinations */ - /* obtain source Ethernet address of the given interface */ - /* send packet directly on the link */ - return etharp_send_ip(netif, q, (struct eth_addr*)(netif->hwaddr), dest); -} - -/** - * Send an ARP request for the given IP address and/or queue a packet. - * - * If the IP address was not yet in the cache, a pending ARP cache entry - * is added and an ARP request is sent for the given address. The packet - * is queued on this entry. - * - * If the IP address was already pending in the cache, a new ARP request - * is sent for the given address. The packet is queued on this entry. - * - * If the IP address was already stable in the cache, and a packet is - * given, it is directly sent and no ARP request is sent out. - * - * If the IP address was already stable in the cache, and no packet is - * given, an ARP request is sent out. - * - * @param netif The lwIP network interface on which ipaddr - * must be queried for. - * @param ipaddr The IP address to be resolved. - * @param q If non-NULL, a pbuf that must be delivered to the IP address. - * q is not freed by this function. - * - * @note q must only be ONE packet, not a packet queue! - * - * @return - * - ERR_BUF Could not make room for Ethernet header. - * - ERR_MEM Hardware address unknown, and no more ARP entries available - * to query for address or queue the packet. - * - ERR_MEM Could not queue packet due to memory shortage. - * - ERR_RTE No route to destination (no gateway to external networks). - * - ERR_ARG Non-unicast address given, those will not appear in ARP cache. - * - */ -err_t -etharp_query(struct netif *netif, struct ip_addr *ipaddr, struct pbuf *q) -{ - struct eth_addr * srcaddr = (struct eth_addr *)netif->hwaddr; - err_t result = ERR_MEM; - s8_t i; /* ARP entry index */ - - /* non-unicast address? */ - if (ip_addr_isbroadcast(ipaddr, netif) || - ip_addr_ismulticast(ipaddr) || - ip_addr_isany(ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: will not add non-unicast IP address to ARP cache\n")); - return ERR_ARG; - } - - /* find entry in ARP cache, ask to create entry if queueing packet */ -#if LWIP_NETIF_HWADDRHINT - i = find_entry(ipaddr, ETHARP_TRY_HARD, netif); -#else /* LWIP_NETIF_HWADDRHINT */ - i = find_entry(ipaddr, ETHARP_TRY_HARD); -#endif /* LWIP_NETIF_HWADDRHINT */ - - /* could not find or create entry? */ - if (i < 0) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not create ARP entry\n")); - if (q) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: packet dropped\n")); - ETHARP_STATS_INC(etharp.memerr); - } - return (err_t)i; - } - - /* mark a fresh entry as pending (we just sent a request) */ - if (arp_table[i].state == ETHARP_STATE_EMPTY) { - arp_table[i].state = ETHARP_STATE_PENDING; - } - - /* { i is either a STABLE or (new or existing) PENDING entry } */ - LWIP_ASSERT("arp_table[i].state == PENDING or STABLE", - ((arp_table[i].state == ETHARP_STATE_PENDING) || - (arp_table[i].state == ETHARP_STATE_STABLE))); - - /* do we have a pending entry? or an implicit query request? */ - if ((arp_table[i].state == ETHARP_STATE_PENDING) || (q == NULL)) { - /* try to resolve it; send out ARP request */ - result = etharp_request(netif, ipaddr); - if (result != ERR_OK) { - /* ARP request couldn't be sent */ - /* We don't re-send arp request in etharp_tmr, but we still queue packets, - since this failure could be temporary, and the next packet calling - etharp_query again could lead to sending the queued packets. */ - } - } - - /* packet given? */ - if (q != NULL) { - /* stable entry? */ - if (arp_table[i].state == ETHARP_STATE_STABLE) { - /* we have a valid IP->Ethernet address mapping */ - /* send the packet */ - result = etharp_send_ip(netif, q, srcaddr, &(arp_table[i].ethaddr)); - /* pending entry? (either just created or already pending */ - } else if (arp_table[i].state == ETHARP_STATE_PENDING) { -#if ARP_QUEUEING /* queue the given q packet */ - struct pbuf *p; - int copy_needed = 0; - /* IF q includes a PBUF_REF, PBUF_POOL or PBUF_RAM, we have no choice but - * to copy the whole queue into a new PBUF_RAM (see bug #11400) - * PBUF_ROMs can be left as they are, since ROM must not get changed. */ - p = q; - while (p) { - LWIP_ASSERT("no packet queues allowed!", (p->len != p->tot_len) || (p->next == 0)); - if(p->type != PBUF_ROM) { - copy_needed = 1; - break; - } - p = p->next; - } - if(copy_needed) { - /* copy the whole packet into new pbufs */ - p = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM); - if(p != NULL) { - if (pbuf_copy(p, q) != ERR_OK) { - pbuf_free(p); - p = NULL; - } - } - } else { - /* referencing the old pbuf is enough */ - p = q; - pbuf_ref(p); - } - /* packet could be taken over? */ - if (p != NULL) { - /* queue packet ... */ - struct etharp_q_entry *new_entry; - /* allocate a new arp queue entry */ - new_entry = memp_malloc(MEMP_ARP_QUEUE); - if (new_entry != NULL) { - new_entry->next = 0; - new_entry->p = p; - if(arp_table[i].q != NULL) { - /* queue was already existent, append the new entry to the end */ - struct etharp_q_entry *r; - r = arp_table[i].q; - while (r->next != NULL) { - r = r->next; - } - r->next = new_entry; - } else { - /* queue did not exist, first item in queue */ - arp_table[i].q = new_entry; - } - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: queued packet %p on ARP entry %"S16_F"\n", (void *)q, (s16_t)i)); - result = ERR_OK; - } else { - /* the pool MEMP_ARP_QUEUE is empty */ - pbuf_free(p); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q)); - /* { result == ERR_MEM } through initialization */ - } - } else { - ETHARP_STATS_INC(etharp.memerr); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q)); - /* { result == ERR_MEM } through initialization */ - } -#else /* ARP_QUEUEING == 0 */ - /* q && state == PENDING && ARP_QUEUEING == 0 => result = ERR_MEM */ - /* { result == ERR_MEM } through initialization */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: Ethernet destination address unknown, queueing disabled, packet %p dropped\n", (void *)q)); -#endif - } - } - return result; -} - -/** - * Send a raw ARP packet (opcode and all addresses can be modified) - * - * @param netif the lwip network interface on which to send the ARP packet - * @param ethsrc_addr the source MAC address for the ethernet header - * @param ethdst_addr the destination MAC address for the ethernet header - * @param hwsrc_addr the source MAC address for the ARP protocol header - * @param ipsrc_addr the source IP address for the ARP protocol header - * @param hwdst_addr the destination MAC address for the ARP protocol header - * @param ipdst_addr the destination IP address for the ARP protocol header - * @param opcode the type of the ARP packet - * @return ERR_OK if the ARP packet has been sent - * ERR_MEM if the ARP packet couldn't be allocated - * any other err_t on failure - */ -#if !LWIP_AUTOIP -static -#endif /* LWIP_AUTOIP */ -err_t -etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr, - const struct eth_addr *ethdst_addr, - const struct eth_addr *hwsrc_addr, const struct ip_addr *ipsrc_addr, - const struct eth_addr *hwdst_addr, const struct ip_addr *ipdst_addr, - const u16_t opcode) -{ - struct pbuf *p; - err_t result = ERR_OK; - u8_t k; /* ARP entry index */ - struct eth_hdr *ethhdr; - struct etharp_hdr *hdr; -#if LWIP_AUTOIP - const u8_t * ethdst_hwaddr; -#endif /* LWIP_AUTOIP */ - - /* allocate a pbuf for the outgoing ARP request packet */ - p = pbuf_alloc(PBUF_RAW, SIZEOF_ETHARP_PACKET, PBUF_RAM); - /* could allocate a pbuf for an ARP request? */ - if (p == NULL) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("etharp_raw: could not allocate pbuf for ARP request.\n")); - ETHARP_STATS_INC(etharp.memerr); - return ERR_MEM; - } - LWIP_ASSERT("check that first pbuf can hold struct etharp_hdr", - (p->len >= SIZEOF_ETHARP_PACKET)); - - ethhdr = p->payload; - hdr = (struct etharp_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_raw: sending raw ARP packet.\n")); - hdr->opcode = htons(opcode); - - LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!", - (netif->hwaddr_len == ETHARP_HWADDR_LEN)); - k = ETHARP_HWADDR_LEN; -#if LWIP_AUTOIP - /* If we are using Link-Local, ARP packets must be broadcast on the - * link layer. (See RFC3927 Section 2.5) */ - ethdst_hwaddr = ((netif->autoip != NULL) && (netif->autoip->state != AUTOIP_STATE_OFF)) ? (u8_t*)(ethbroadcast.addr) : ethdst_addr->addr; -#endif /* LWIP_AUTOIP */ - /* Write MAC-Addresses (combined loop for both headers) */ - while(k > 0) { - k--; - /* Write the ARP MAC-Addresses */ - hdr->shwaddr.addr[k] = hwsrc_addr->addr[k]; - hdr->dhwaddr.addr[k] = hwdst_addr->addr[k]; - /* Write the Ethernet MAC-Addresses */ -#if LWIP_AUTOIP - ethhdr->dest.addr[k] = ethdst_hwaddr[k]; -#else /* LWIP_AUTOIP */ - ethhdr->dest.addr[k] = ethdst_addr->addr[k]; -#endif /* LWIP_AUTOIP */ - ethhdr->src.addr[k] = ethsrc_addr->addr[k]; - } - hdr->sipaddr = *(struct ip_addr2 *)ipsrc_addr; - hdr->dipaddr = *(struct ip_addr2 *)ipdst_addr; - - hdr->hwtype = htons(HWTYPE_ETHERNET); - hdr->proto = htons(ETHTYPE_IP); - /* set hwlen and protolen together */ - hdr->_hwlen_protolen = htons((ETHARP_HWADDR_LEN << 8) | sizeof(struct ip_addr)); - - ethhdr->type = htons(ETHTYPE_ARP); - /* send ARP query */ - result = netif->linkoutput(netif, p); - ETHARP_STATS_INC(etharp.xmit); - /* free ARP query packet */ - pbuf_free(p); - p = NULL; - /* could not allocate pbuf for ARP request */ - - return result; -} - -/** - * Send an ARP request packet asking for ipaddr. - * - * @param netif the lwip network interface on which to send the request - * @param ipaddr the IP address for which to ask - * @return ERR_OK if the request has been sent - * ERR_MEM if the ARP packet couldn't be allocated - * any other err_t on failure - */ -err_t -etharp_request(struct netif *netif, struct ip_addr *ipaddr) -{ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_request: sending ARP request.\n")); - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast, - (struct eth_addr *)netif->hwaddr, &netif->ip_addr, ðzero, - ipaddr, ARP_REQUEST); -} - -/** - * Process received ethernet frames. Using this function instead of directly - * calling ip_input and passing ARP frames through etharp in ethernetif_input, - * the ARP cache is protected from concurrent access. - * - * @param p the recevied packet, p->payload pointing to the ethernet header - * @param netif the network interface on which the packet was received - */ -err_t -ethernet_input(struct pbuf *p, struct netif *netif) -{ - struct eth_hdr* ethhdr; - u16_t type; - - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = p->payload; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, - ("ethernet_input: dest:%02x:%02x:%02x:%02x:%02x:%02x, src:%02x:%02x:%02x:%02x:%02x:%02x, type:%2hx\n", - (unsigned)ethhdr->dest.addr[0], (unsigned)ethhdr->dest.addr[1], (unsigned)ethhdr->dest.addr[2], - (unsigned)ethhdr->dest.addr[3], (unsigned)ethhdr->dest.addr[4], (unsigned)ethhdr->dest.addr[5], - (unsigned)ethhdr->src.addr[0], (unsigned)ethhdr->src.addr[1], (unsigned)ethhdr->src.addr[2], - (unsigned)ethhdr->src.addr[3], (unsigned)ethhdr->src.addr[4], (unsigned)ethhdr->src.addr[5], - (unsigned)htons(ethhdr->type))); - - type = htons(ethhdr->type); -#if ETHARP_SUPPORT_VLAN - if (type == ETHTYPE_VLAN) { - struct eth_vlan_hdr *vlan = (struct eth_vlan_hdr*)(((char*)ethhdr) + SIZEOF_ETH_HDR); -#ifdef ETHARP_VLAN_CHECK /* if not, allow all VLANs */ - if (VLAN_ID(vlan) != ETHARP_VLAN_CHECK) { - /* silently ignore this packet: not for our VLAN */ - pbuf_free(p); - return ERR_OK; - } -#endif /* ETHARP_VLAN_CHECK */ - type = htons(vlan->tpid); - } -#endif /* ETHARP_SUPPORT_VLAN */ - - switch (type) { - /* IP packet? */ - case ETHTYPE_IP: -#if ETHARP_TRUST_IP_MAC - /* update ARP table */ - etharp_ip_input(netif, p); -#endif /* ETHARP_TRUST_IP_MAC */ - /* skip Ethernet header */ - if(pbuf_header(p, -(s16_t)SIZEOF_ETH_HDR)) { - LWIP_ASSERT("Can't move over header in packet", 0); - pbuf_free(p); - p = NULL; - } else { - /* pass to IP layer */ - ip_input(p, netif); - } - break; - - case ETHTYPE_ARP: - /* pass p to ARP module */ - etharp_arp_input(netif, (struct eth_addr*)(netif->hwaddr), p); - break; - -#if PPPOE_SUPPORT - case ETHTYPE_PPPOEDISC: /* PPP Over Ethernet Discovery Stage */ - pppoe_disc_input(netif, p); - break; - - case ETHTYPE_PPPOE: /* PPP Over Ethernet Session Stage */ - pppoe_data_input(netif, p); - break; -#endif /* PPPOE_SUPPORT */ - - default: - ETHARP_STATS_INC(etharp.proterr); - ETHARP_STATS_INC(etharp.drop); - pbuf_free(p); - p = NULL; - break; - } - - /* This means the pbuf is freed or consumed, - so the caller doesn't have to free it again */ - return ERR_OK; -} -#endif /* LWIP_ARP */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c deleted file mode 100644 index b7d6632..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c +++ /dev/null @@ -1,68 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Loop Interface - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#include "lwip/opt.h" - -#if LWIP_HAVE_LOOPIF - -#include "netif/loopif.h" -#include "lwip/snmp.h" - -/** - * Initialize a lwip network interface structure for a loopback interface - * - * @param netif the lwip network interface structure for this loopif - * @return ERR_OK if the loopif is initialized - * ERR_MEM if private data couldn't be allocated - */ -err_t -loopif_init(struct netif *netif) -{ - /* initialize the snmp variables and counters inside the struct netif - * ifSpeed: no assumption can be made! - */ - NETIF_INIT_SNMP(netif, snmp_ifType_softwareLoopback, 0); - - netif->name[0] = 'l'; - netif->name[1] = 'o'; - netif->output = netif_loop_output; - return ERR_OK; -} - -#endif /* LWIP_HAVE_LOOPIF */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h deleted file mode 100644 index fc9c07d..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __ARCH_CC_H__ -#define __ARCH_CC_H__ - -/* Define platform endianness */ -#ifndef BYTE_ORDER -#define BYTE_ORDER BIG_ENDIAN -#endif /* BYTE_ORDER */ - -/* Define generic types used in lwIP */ -typedef unsigned char u8_t; -typedef signed char s8_t; -typedef unsigned short u16_t; -typedef signed short s16_t; -typedef unsigned long u32_t; -typedef signed long s32_t; - -typedef u32_t mem_ptr_t; - -/* Define (sn)printf formatters for these lwIP types */ -#define U16_F "u" -#define S16_F "d" -#define X16_F "x" -#define U32_F "u" -#define S32_F "d" -#define X32_F "x" - -/* Compiler hints for packing structures */ -#define PACK_STRUCT_FIELD(x) x -#define PACK_STRUCT_STRUCT __attribute__((packed)) -#define PACK_STRUCT_BEGIN -#define PACK_STRUCT_END - -/* Plaform specific diagnostic output */ -#ifdef CONFIG_OWL -# include -# define LWIP_PLATFORM_DIAG(x) owl_printf x -# define LWIP_PLATFORM_ASSERT(x) owl_assert(x) -#else -# include -# define LWIP_PLATFORM_DIAG(x) do { printk x; } while(0) -# define LWIP_PLATFORM_ASSERT(x) do { \ - printk("Assertion \"%s\" failed at line " \ - "%d in %s\n", \ - x, __LINE__, __FILE__); while(1); \ - } while(0) -#endif - -#endif /* __ARCH_CC_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h deleted file mode 100644 index 4991787..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __PERF_H__ -#define __PERF_H__ - -#define PERF_START /* null definition */ -#define PERF_STOP(x) /* null definition */ - -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h deleted file mode 100644 index ae4df23..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h +++ /dev/null @@ -1,426 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * - * lwIP Options Configuration - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIPOPTS_H__ -#define __LWIPOPTS_H__ - -#include "wl_api.h" - -/* - ----------------------------------------------- - ---------- Platform specific locking ---------- - ----------------------------------------------- -*/ - -/** - * NO_SYS==1: Provides VERY minimal functionality. Otherwise, - * use lwIP facilities. - */ -#define NO_SYS 1 - - -/* - ------------------------------------ - ---------- Memory options ---------- - ------------------------------------ -*/ -/** - * MEM_ALIGNMENT: should be set to the alignment of the CPU - * 4 byte alignment -> #define MEM_ALIGNMENT 4 - * 2 byte alignment -> #define MEM_ALIGNMENT 2 - */ -#define MEM_ALIGNMENT 4 - -/** - * MEM_SIZE: the size of the heap memory. If the application will send - * a lot of data that needs to be copied, this should be set high. - */ -#define MEM_SIZE 16000 - - -/* - ------------------------------------------------ - ---------- Internal Memory Pool Sizes ---------- - ------------------------------------------------ -*/ -/** - * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF). - * If the application sends a lot of data out of ROM (or other static memory), - * this should be set high. - */ -#define MEMP_NUM_PBUF 30 - -/** - * MEMP_NUM_RAW_PCB: Number of raw connection PCBs - * (requires the LWIP_RAW option) - */ -#define MEMP_NUM_RAW_PCB 4 - -/** - * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - * per active UDP "connection". - * (requires the LWIP_UDP option) - */ -#define MEMP_NUM_UDP_PCB 4 - -/** - * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections. - * (requires the LWIP_TCP option) - */ -#define MEMP_NUM_TCP_PCB 2 - -/** - * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. - * (requires the LWIP_TCP option) - */ -#define MEMP_NUM_TCP_PCB_LISTEN 2 - -/** - * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. - * (requires the LWIP_TCP option) - */ -#define MEMP_NUM_TCP_SEG 32 - -/** - * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing - * packets (pbufs) that are waiting for an ARP request (to resolve - * their destination address) to finish. - * (requires the ARP_QUEUEING option) - */ -#define MEMP_NUM_ARP_QUEUE 2 - -/** - * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts. - * (requires NO_SYS==0) - */ -#define MEMP_NUM_SYS_TIMEOUT 0 - -/** - * MEMP_NUM_NETBUF: the number of struct netbufs. - * (only needed if you use the sequential API, like api_lib.c) - */ -#define MEMP_NUM_NETBUF 0 - -/** - * MEMP_NUM_NETCONN: the number of struct netconns. - * (only needed if you use the sequential API, like api_lib.c) - */ -#define MEMP_NUM_NETCONN 0 - -/** - * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used - * for callback/timeout API communication. - * (only needed if you use tcpip.c) - */ -#define MEMP_NUM_TCPIP_MSG_API 0 - -/** - * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used - * for incoming packets. - * (only needed if you use tcpip.c) - */ -#define MEMP_NUM_TCPIP_MSG_INPKT 0 - -/** - * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. - */ -#define PBUF_POOL_SIZE 32 - -/* - --------------------------------- - ---------- ARP options ---------- - --------------------------------- -*/ -/** - * LWIP_ARP==1: Enable ARP functionality. - */ -#define LWIP_ARP 1 - -/* - -------------------------------- - ---------- IP options ---------- - -------------------------------- -*/ -/** - * IP_FORWARD==1: Enables the ability to forward IP packets across network - * interfaces. If you are going to run lwIP on a device with only one network - * interface, define this to 0. - */ -#define IP_FORWARD 0 - -/** - * IP_OPTIONS: Defines the behavior for IP options. - * IP_OPTIONS==0_ALLOWED: All packets with IP options are dropped. - * IP_OPTIONS==1_ALLOWED: IP options are allowed (but not parsed). - */ -#define IP_OPTIONS_ALLOWED 1 - -/** - * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that - * this option does not affect outgoing packet sizes, which can be controlled - * via IP_FRAG. - */ -#define IP_REASSEMBLY 1 - -/** - * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note - * that this option does not affect incoming packet sizes, which can be - * controlled via IP_REASSEMBLY. - */ -#define IP_FRAG 1 - -/** - * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) - * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived - * in this time, the whole packet is discarded. - */ -#define IP_REASS_MAXAGE 3 - -/** - * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. - * Since the received pbufs are enqueued, be sure to configure - * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive - * packets even if the maximum amount of fragments is enqueued for reassembly! - */ -#define IP_REASS_MAX_PBUFS 10 - -/** - * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP - * fragmentation. Otherwise pbufs are allocated and reference the original - * packet data to be fragmented. - */ -#define IP_FRAG_USES_STATIC_BUF 0 - -/** - * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. - */ -#define IP_DEFAULT_TTL 255 - -/* - ---------------------------------- - ---------- ICMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_ICMP==1: Enable ICMP module inside the IP stack. - * Be careful, disable that make your product non-compliant to RFC1122 - */ -#define LWIP_ICMP 1 - -/** - * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. - */ -#define ICMP_TTL (IP_DEFAULT_TTL) - -/* - --------------------------------- - ---------- RAW options ---------- - --------------------------------- -*/ -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#define LWIP_RAW 1 - -/* - ---------------------------------- - ---------- DHCP options ---------- - ---------------------------------- -*/ -/** - * LWIP_DHCP==1: Enable DHCP module. - */ -#define LWIP_DHCP 1 - -/* - ------------------------------------ - ---------- AUTOIP options ---------- - ------------------------------------ -*/ -/** - * LWIP_AUTOIP==1: Enable AUTOIP module. - */ -#define LWIP_AUTOIP 0 - -/* - ---------------------------------- - ---------- SNMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP - * transport. - */ -#define LWIP_SNMP 0 -#define SNMP_PRIVATE_MIB 0 - -/* - ---------------------------------- - ---------- IGMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_IGMP==1: Turn on IGMP module. - */ -#define LWIP_IGMP 1 - -/* - ---------------------------------- - ---------- DNS options ----------- - ---------------------------------- -*/ -/** - * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS - * transport. - */ -#define LWIP_DNS 1 - -/* - --------------------------------- - ---------- UDP options ---------- - --------------------------------- -*/ -/** - * LWIP_UDP==1: Turn on UDP. - */ -#define LWIP_UDP 1 - -/** - * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) - */ -#define LWIP_UDPLITE 0 - -/** - * UDP_TTL: Default Time-To-Live value. - */ -#define UDP_TTL (IP_DEFAULT_TTL) - -/* - --------------------------------- - ---------- TCP options ---------- - --------------------------------- -*/ -/** - * LWIP_TCP==1: Turn on TCP. - */ -#define LWIP_TCP 1 - -/* - ---------------------------------- - ---------- Pbuf options ---------- - ---------------------------------- -*/ -/** - * PBUF_LINK_HLEN: the number of bytes that should be allocated for a - * link level header. The default is 14, the standard value for - * Ethernet. - */ -#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE) - -/* - ------------------------------------ - ---------- LOOPIF options ---------- - ------------------------------------ -*/ -/** - * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c - */ -#define LWIP_HAVE_LOOPIF 1 -#define LWIP_LOOPIF_MULTITHREADING 0 - -/* - ---------------------------------------------- - ---------- Sequential layer options ---------- - ---------------------------------------------- -*/ - -/** - * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) - */ -#define LWIP_NETCONN 0 - -/* - ------------------------------------ - ---------- Socket options ---------- - ------------------------------------ -*/ -/** - * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c) - */ -#define LWIP_SOCKET 0 - -/* - ---------------------------------------- - ---------- Statistics options ---------- - ---------------------------------------- -*/ -/** - * LWIP_STATS==1: Enable statistics collection in lwip_stats. - */ -#define LWIP_STATS 1 -#define LINK_STATS 1 - -/* Misc */ -#define LWIP_NETIF_LINK_CALLBACK 1 -#define LWIP_NETIF_STATUS_CALLBACK 1 -#define LWIP_TIMEVAL_PRIVATE 0 - -#undef DHCP_DOES_ARP_CHECK - -#if 0 -#define LWIP_DEBUG 1 -//#define NETIF_DEBUG LWIP_DBG_ON -#define DHCP_DEBUG LWIP_DBG_ON -//#define ICMP_DEBUG LWIP_DBG_ON -//#define TCP_DEBUG LWIP_DBG_ON -//#define TCP_RTO_DEBUG LWIP_DBG_ON -//#define IP_DEBUG LWIP_DBG_ON -//#define TCP_CWND_DEBUG LWIP_DBG_ON -//#define ETHARP_DEBUG LWIP_DBG_ON -//#define PBUF_DEBUG LWIP_DBG_ON -#define TCP_INPUT_DEBUG LWIP_DBG_ON -#define TCP_OUTPUT_DEBUG LWIP_DBG_ON -#endif - -#define ETH_PAD_SIZE WL_HEADER_SIZE /* size of wifiengine header */ -#define MEM_LIBC_MALLOC 1 - -#define TCP_MSS 512 -#define TCP_SND_BUF 4096 -#endif /* __LWIPOPTS_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/netif/wlif.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/netif/wlif.h deleted file mode 100644 index 6354e1c..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/netif/wlif.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef __NETIF_NRWLANIF_H__ -#define __NETIF_NRWLANIF_H__ - -#include "lwip/netif.h" -#include "lwip/err.h" - -err_t wlif_init(struct netif *netif); -void wlif_poll(struct netif *netif); - -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c deleted file mode 100644 index 55d5b6a..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c +++ /dev/null @@ -1,386 +0,0 @@ -#include "lwip/opt.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/stats.h" -#include "lwip/sys.h" -#include "netif/etharp.h" -#include "netif/wlif.h" -#include -#include - -#define IFNAME0 'w' -#define IFNAME1 'l' - -/* the queue size will affect the tx performance when using power save. - * A small queue will quickly become filled up if we have to wake the device - * before the actual transmission can occur. When the queue is filled up, the - * packets will be discarded and retransmission will be handled by the upper - * layers. In case of TCP, the retransmission time might be quite long. - * - * If the packets can be put in the pqueue instead, all the packets - * (if possible) will be transmitted when the device wakes up, so we don't have - * to wait for retransmission from upper layers. - */ -#define PQUEUE_SIZE 8 - -struct wlif_t { - volatile uint8_t rx_pending; - - struct { - struct pbuf* buf[PQUEUE_SIZE]; - uint8_t first; - uint8_t last; - } pqueue; -}; - -#define PQUEUE_EMPTY(q) (q.last == q.first) -#define PQUEUE_FULL(q) ((q.last + 1) % PQUEUE_SIZE == q.first) -#define PQUEUE_FIRST(q) (q.buf[q.first]) -#define PQUEUE_DEQUEUE(q) \ - ({ \ - struct pbuf* __p = PQUEUE_FIRST(q); \ - q.first = (q.first + 1) % PQUEUE_SIZE; \ - __p; \ - }) -#define PQUEUE_ENQUEUE(q, p) \ - ({ \ - q.buf[q.last] = p; \ - q.last = (q.last + 1) % PQUEUE_SIZE; \ - }) - - -static err_t process_pqueue(struct netif* netif) -{ - struct pbuf *p; - struct pbuf *q; - int status; - struct wlif_t *priv = (struct wlif_t*) netif->state; - - /* queue empty? finished */ - if (PQUEUE_EMPTY(priv->pqueue)) - return ERR_OK; - - /* get first packet in queue */ - p = PQUEUE_FIRST(priv->pqueue); - - status = wl_process_tx( - p->payload + WL_HEADER_SIZE, /* ptr to eth hdr */ - p->len - WL_HEADER_SIZE, /* input buffer len */ - p->tot_len - WL_HEADER_SIZE, /* pkt len */ - p->payload, /* ptr to WE hdr */ - 0, /* prio */ - p); /* pkt handle */ - - /* if we fail due to power save mode, leave packet in queue and - * try again when target is awake again (upon WL_RX_EVENT_WAKEUP). - */ - if (status == WL_RESOURCES) - return ERR_IF; - - /* if we fail for another reason, just discard the packet */ - if (status != WL_SUCCESS) { - PQUEUE_DEQUEUE(priv->pqueue); - pbuf_free(p); - return ERR_IF; - } - - /* Send the data from the pbuf to the interface, one pbuf at a - * time. The size of the data in each pbuf is kept in the ->len - * variable. - */ - for (q = p; q != NULL; q = q->next) - wl_tx(q->payload, q->len); - - /* remove packet from queue and dec refcnt */ - PQUEUE_DEQUEUE(priv->pqueue); - pbuf_free(p); - - LINK_STATS_INC(link.xmit); - - /* tell caller to process next packet */ - return ERR_INPROGRESS; -} - - -/** - * Called in interrupt context when we can read more data from the mac. - * - */ -static void -rx_isr(void* ctx) -{ - struct netif *netif = ctx; - struct wlif_t *priv = (struct wlif_t*) netif->state; - priv->rx_pending = 1; -} - - -/** - * In this function, the hardware should be initialized. - * Called from wlif_init(). - * - * @param netif the already initialized lwip network interface structure - * for this ethernetif - */ -static err_t -low_level_init(struct netif *netif) -{ - /* device capabilities */ - netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | - NETIF_FLAG_IGMP; - - /* NETIF_FLAG_LINK_UP must be set only when we have an wlan assoc */ - - /* set MAC hardware address length */ - netif->hwaddr_len = ETHARP_HWADDR_LEN; - - if (wl_get_mac_addr(netif->hwaddr) != WL_SUCCESS) - return ERR_IF; - - /* maximum transfer unit */ - netif->mtu = 1500; - - return ERR_OK; -} - - -/** - * This function should do the actual transmission of the packet. The packet is - * contained in the pbuf that is passed to the function. This pbuf - * might be chained. - * - * @param netif the lwip network interface structure for this ethernetif - * @param p the MAC packet to send (e.g. IP packet including MAC addresses and - * type) - * @return ERR_OK if the packet could be sent - * an err_t value if the packet couldn't be sent - * - * @note Returning ERR_MEM here if a DMA queue of your MAC is full can lead to - * strange results. You might consider waiting for space in the DMA queue - * to become availale since the stack doesn't retry to send a packet - * dropped because of memory failure (except for the TCP timers). - */ -static err_t -low_level_output(struct netif *netif, struct pbuf *p) -{ - struct wlif_t* priv = (struct wlif_t*) netif->state; - - /* must have a linear buffer containing up to and including - * the ethernet header - */ - if (p->len < sizeof(struct eth_hdr)) - return ERR_IF; - - /* queue full? drop packet */ - if (PQUEUE_FULL(priv->pqueue)) - return ERR_INPROGRESS; /* no one seems to check this anyway */ - - /* queue packet */ - PQUEUE_ENQUEUE(priv->pqueue, p); - pbuf_ref(p); - while (process_pqueue(netif) == ERR_INPROGRESS); - return ERR_OK; /* no one seems to check this anyway */ -} - -/** - * Should allocate a pbuf and transfer the bytes of the incoming - * packet from the interface into the pbuf. - * - * @param netif the lwip network interface structure for this ethernetif - * @return a pbuf filled with the received packet (including MAC header) - * NULL on memory error - */ -static struct pbuf * -low_level_input(struct netif *netif) -{ - struct pbuf *p; - struct wlif_t *priv = (struct wlif_t*) netif->state; - - char *stripped_pkt; - size_t stripped_pkt_len; - u16_t vlan; - u8_t rx_hdr_size; - int status; - u16_t len; - - /* maximum packet length from wl_rx() */ - len = WL_MAX_PKT_LEN; - - /* We allocate a continous pbuf */ - p = pbuf_alloc(PBUF_RAW, len, PBUF_RAM); - if (p == NULL) { - LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input: fail to alloc " - "pbuf of len:%"S32_F"\n", len)); - return NULL; - } - - /* Read the entire msg */ - priv->rx_pending = 0; - wl_rx(p->payload, &len); - if (len == 0) { - LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input: len was 0")); - return NULL; - } - - status = wl_process_rx( - p->payload, /* input buf */ - len, /* input buf length */ - &stripped_pkt, - &stripped_pkt_len, - &vlan); - - if (status == WL_ABSORBED) { - LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input: absorbed")); - pbuf_free(p); - return NULL; - } - - /* Data packet, remove padding */ - rx_hdr_size = stripped_pkt - (char*) p->payload; - pbuf_realloc(p, stripped_pkt_len + rx_hdr_size); - - LINK_STATS_INC(link.recv); - return p; -} - - -/** - * This function will be called by wlif_poll() when a packet has been received - * from the mac. Then the type of the received packet is determined and - * the appropriate input function is called. - * - * @param netif the lwip network interface structure for this ethernetif - */ -static void -wlif_input(struct netif *netif) -{ - struct eth_hdr *ethhdr; - struct pbuf *p; - - /* move received packet into a new pbuf */ - p = low_level_input(netif); - - /* no packet could be read, silently ignore this */ - if (p == NULL) - return; - - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = p->payload; - switch (htons(ethhdr->type)) { - /* IP or ARP packet? */ - case ETHTYPE_IP: - case ETHTYPE_ARP: -#if PPPOE_SUPPORT - /* PPPoE packet? */ - case ETHTYPE_PPPOEDISC: - case ETHTYPE_PPPOE: -#endif /* PPPOE_SUPPORT */ - /* full packet send to tcpip_thread to process */ - if (netif->input(p, netif) != ERR_OK) { - LWIP_DEBUGF(NETIF_DEBUG, - ("wlif_input: IP input error\n")); - pbuf_free(p); - p = NULL; - } - break; - - default: - pbuf_free(p); - p = NULL; - break; - } -} - -static ssize_t pkt_read_cb(char *dst, - void *src_handle, - size_t read_len, - int offset) { - ssize_t rc; - - rc = pbuf_copy_partial((struct pbuf *)src_handle, - dst, - read_len, - offset + WL_HEADER_SIZE); - if ( 0 == rc ) { - return -1; - } - - return rc; -} - -/** - * Should be called at the beginning of the program to set up the - * network interface. It calls the function low_level_init() to do the - * actual setup of the hardware. - * - * This function should be passed as a parameter to netif_add(). - * - * @param netif the lwip network interface structure for this ethernetif - * @return ERR_OK if the loopif is initialized - * ERR_MEM if private data couldn't be allocated - * any other err_t on error - */ -err_t -wlif_init(struct netif *netif) -{ - static struct wlif_t wlif; - - LWIP_ASSERT("netif != NULL", (netif != NULL)); - -#if LWIP_NETIF_HOSTNAME - /* Initialize interface hostname */ - if ( NULL == netif->hostname ) { - netif->hostname = "wlif"; - } -#endif /* LWIP_NETIF_HOSTNAME */ - - netif->state = &wlif; - netif->name[0] = IFNAME0; - netif->name[1] = IFNAME1; - - /* We directly use etharp_output() here to save a function call. - * You can instead declare your own function an call etharp_output() - * from it if you have to do some checks before sending (e.g. if link - * is available...) */ - netif->output = etharp_output; - netif->linkoutput = low_level_output; - - wl_register_rx_isr(rx_isr, netif); - wl_register_pkt_read_cb(pkt_read_cb); - - /* initialize the hardware */ - return low_level_init(netif); -} - - -/** - * - */ -void -wlif_poll(struct netif* netif) -{ - struct wlif_t* priv = NULL; - - /* wl api forward progress */ - wl_poll(); - - if (netif) - priv = (struct wlif_t*) netif->state; - - /* wlif_init() not called yet? */ - if (priv == NULL) - return; - - /* no packets pending? */ - if (!priv->rx_pending) - return; - - /* read the pending packet */ - wlif_input(netif); - - /* send any packets that was queued due to filled up target queue - * or power save mode. - */ - process_pqueue(netif); -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt deleted file mode 100644 index c95f30e..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt +++ /dev/null @@ -1 +0,0 @@ -This directory is specific to the WIFI H&D SPB104 components (\COMPONENTS\WIFI\HD_SPB104). diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c deleted file mode 100644 index 09790c2..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c +++ /dev/null @@ -1,571 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Abstraction layer for memory interfaces. - * - * This module contains the interfaces: - * - MEM <-> USB; - * - MEM <-> RAM; - * - MEM <-> MEM. - * - * This module may be configured and expanded to support the following features: - * - write-protected globals; - * - password-protected data; - * - specific features; - * - etc. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -//_____ I N C L U D E S ____________________________________________________ - -#include "compiler.h" -#include "preprocessor.h" -#ifdef FREERTOS_USED -#include "FreeRTOS.h" -#include "semphr.h" -#endif -#include "ctrl_access.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -#ifdef FREERTOS_USED - -/*! \name LUN Access Protection Macros - */ -//! @{ - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -#define Ctrl_access_lock() ctrl_access_lock() - -/*! \brief Unlocks accesses to LUNs. - */ -#define Ctrl_access_unlock() xSemaphoreGive(ctrl_access_semphr) - -//! @} - -//! Handle to the semaphore protecting accesses to LUNs. -static xSemaphoreHandle ctrl_access_semphr = NULL; - -#else - -/*! \name LUN Access Protection Macros - */ -//! @{ - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -#define Ctrl_access_lock() TRUE - -/*! \brief Unlocks accesses to LUNs. - */ -#define Ctrl_access_unlock() - -//! @} - -#endif // FREERTOS_USED - - -#if MAX_LUN - -/*! \brief Initializes an entry of the LUN descriptor table. - * - * \param lun Logical Unit Number. - * - * \return LUN descriptor table entry initializer. - */ -#if ACCESS_USB == ENABLED && ACCESS_MEM_TO_RAM == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _usb_read_10),\ - TPASTE3(Lun_, lun, _usb_write_10),\ - TPASTE3(Lun_, lun, _mem_2_ram),\ - TPASTE3(Lun_, lun, _ram_2_mem),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#elif ACCESS_USB == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _usb_read_10),\ - TPASTE3(Lun_, lun, _usb_write_10),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#elif ACCESS_MEM_TO_RAM == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _mem_2_ram),\ - TPASTE3(Lun_, lun, _ram_2_mem),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#else -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#endif - -//! LUN descriptor table. -static const struct -{ - Ctrl_status (*test_unit_ready)(void); - Ctrl_status (*read_capacity)(U32 *); - Bool (*wr_protect)(void); - Bool (*removal)(void); -#if ACCESS_USB == ENABLED - Ctrl_status (*usb_read_10)(U32, U16); - Ctrl_status (*usb_write_10)(U32, U16); -#endif -#if ACCESS_MEM_TO_RAM == ENABLED - Ctrl_status (*mem_2_ram)(U32, void *); - Ctrl_status (*ram_2_mem)(U32, const void *); -#endif - const char *name; -} lun_desc[MAX_LUN] = -{ -#if LUN_0 == ENABLE - Lun_desc_entry(0), -#endif -#if LUN_1 == ENABLE - Lun_desc_entry(1), -#endif -#if LUN_2 == ENABLE - Lun_desc_entry(2), -#endif -#if LUN_3 == ENABLE - Lun_desc_entry(3), -#endif -#if LUN_4 == ENABLE - Lun_desc_entry(4), -#endif -#if LUN_5 == ENABLE - Lun_desc_entry(5), -#endif -#if LUN_6 == ENABLE - Lun_desc_entry(6), -#endif -#if LUN_7 == ENABLE - Lun_desc_entry(7) -#endif -}; - -#endif - - -#if GLOBAL_WR_PROTECT == ENABLED -Bool g_wr_protect; -#endif - - -/*! \name Control Interface - */ -//! @{ - - -#ifdef FREERTOS_USED - -Bool ctrl_access_init(void) -{ - // If the handle to the protecting semaphore is not valid, - if (!ctrl_access_semphr) - { - // try to create the semaphore. - vSemaphoreCreateBinary(ctrl_access_semphr); - - // If the semaphore could not be created, there is no backup solution. - if (!ctrl_access_semphr) return FALSE; - } - - return TRUE; -} - - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -static Bool ctrl_access_lock(void) -{ - // If the semaphore could not be created, there is no backup solution. - if (!ctrl_access_semphr) return FALSE; - - // Wait for the semaphore. - while (!xSemaphoreTake(ctrl_access_semphr, portMAX_DELAY)); - - return TRUE; -} - -#endif // FREERTOS_USED - - -U8 get_nb_lun(void) -{ -#if MEM_USB == ENABLE - U8 nb_lun; - - if (!Ctrl_access_lock()) return MAX_LUN; - - nb_lun = MAX_LUN + host_get_lun(); - - Ctrl_access_unlock(); - - return nb_lun; -#else - return MAX_LUN; -#endif -} - - -U8 get_cur_lun(void) -{ - return LUN_ID_0; -} - - -Ctrl_status mem_test_unit_ready(U8 lun) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].test_unit_ready() : -#endif -#if LUN_USB == ENABLE - Lun_usb_test_unit_ready(lun - LUN_ID_USB); -#else - CTRL_FAIL; -#endif - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].read_capacity(u32_nb_sector) : -#endif -#if LUN_USB == ENABLE - Lun_usb_read_capacity(lun - LUN_ID_USB, u32_nb_sector); -#else - CTRL_FAIL; -#endif - - Ctrl_access_unlock(); - - return status; -} - - -U8 mem_sector_size(U8 lun) -{ - U8 sector_size; - - if (!Ctrl_access_lock()) return 0; - - sector_size = -#if MAX_LUN - (lun < MAX_LUN) ? 1 : -#endif -#if LUN_USB == ENABLE - Lun_usb_read_sector_size(lun - LUN_ID_USB); -#else - 0; -#endif - - Ctrl_access_unlock(); - - return sector_size; -} - - -Bool mem_wr_protect(U8 lun) -{ - Bool wr_protect; - - if (!Ctrl_access_lock()) return TRUE; - - wr_protect = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].wr_protect() : -#endif -#if LUN_USB == ENABLE - Lun_usb_wr_protect(lun - LUN_ID_USB); -#else - TRUE; -#endif - - Ctrl_access_unlock(); - - return wr_protect; -} - - -Bool mem_removal(U8 lun) -{ - Bool removal; - - if (!Ctrl_access_lock()) return TRUE; - - removal = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].removal() : -#endif -#if LUN_USB == ENABLE - Lun_usb_removal(); -#else - TRUE; -#endif - - Ctrl_access_unlock(); - - return removal; -} - - -const char *mem_name(U8 lun) -{ - return -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].name : -#endif -#if LUN_USB == ENABLE - LUN_USB_NAME; -#else - NULL; -#endif -} - - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - - -Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_read_action(nb_sector); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].usb_read_10(addr, nb_sector) : -#endif - CTRL_FAIL; - memory_stop_read_action(); - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_write_action(nb_sector); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].usb_write_10(addr, nb_sector) : -#endif - CTRL_FAIL; - memory_stop_write_action(); - - Ctrl_access_unlock(); - - return status; -} - - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - - -Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_read_action(1); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].mem_2_ram(addr, ram) : -#endif -#if LUN_USB == ENABLE - Lun_usb_mem_2_ram(addr, ram); -#else - CTRL_FAIL; -#endif - memory_stop_read_action(); - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_write_action(1); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].ram_2_mem(addr, ram) : -#endif -#if LUN_USB == ENABLE - Lun_usb_ram_2_mem(addr, ram); -#else - CTRL_FAIL; -#endif - memory_stop_write_action(); - - Ctrl_access_unlock(); - - return status; -} - - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#if ACCESS_STREAM == ENABLED - -/*! \name Streaming MEM <-> MEM Interface - */ -//! @{ - - - #if ACCESS_MEM_TO_MEM == ENABLED - -#include "fat.h" - -Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector) -{ -#if (defined __GNUC__) && (defined __AVR32__) - __attribute__((__aligned__(4))) -#elif (defined __ICCAVR32__) - #pragma data_alignment = 4 -#endif - static U8 sector_buf[FS_512B]; - Ctrl_status status = CTRL_GOOD; - - while (nb_sector--) - { - if ((status = memory_2_ram(src_lun, src_addr++, sector_buf)) != CTRL_GOOD) break; - if ((status = ram_2_memory(dest_lun, dest_addr++, sector_buf)) != CTRL_GOOD) break; - } - - return status; -} - - #endif // ACCESS_MEM_TO_MEM == ENABLED - - -Ctrl_status stream_state(U8 id) -{ - return CTRL_GOOD; -} - - -U16 stream_stop(U8 id) -{ - return 0; -} - - -//! @} - -#endif // ACCESS_STREAM == ENABLED diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h deleted file mode 100644 index 358bf65..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h +++ /dev/null @@ -1,369 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Abstraction layer for memory interfaces. - * - * This module contains the interfaces: - * - MEM <-> USB; - * - MEM <-> RAM; - * - MEM <-> MEM. - * - * This module may be configured and expanded to support the following features: - * - write-protected globals; - * - password-protected data; - * - specific features; - * - etc. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CTRL_ACCESS_H_ -#define _CTRL_ACCESS_H_ - -#include "compiler.h" -#include "conf_access.h" - - -//! Status returned by CTRL_ACCESS interfaces. -typedef enum -{ - CTRL_GOOD = PASS, //!< Success, memory ready. - CTRL_FAIL = FAIL, //!< An error occurred. - CTRL_NO_PRESENT = FAIL + 1, //!< Memory unplugged. - CTRL_BUSY = FAIL + 2 //!< Memory not initialized or changed. -} Ctrl_status; - - -// FYI: Each Logical Unit Number (LUN) corresponds to a memory. - -// Check LUN defines. -#ifndef LUN_0 - #error LUN_0 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_1 - #error LUN_1 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_2 - #error LUN_2 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_3 - #error LUN_3 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_4 - #error LUN_4 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_5 - #error LUN_5 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_6 - #error LUN_6 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_7 - #error LUN_7 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_USB - #error LUN_USB must be defined as ENABLE or DISABLE in conf_access.h -#endif - -/*! \name LUN IDs - */ -//! @{ -#define LUN_ID_0 (0) //!< First static LUN. -#define LUN_ID_1 (LUN_ID_0 + LUN_0) -#define LUN_ID_2 (LUN_ID_1 + LUN_1) -#define LUN_ID_3 (LUN_ID_2 + LUN_2) -#define LUN_ID_4 (LUN_ID_3 + LUN_3) -#define LUN_ID_5 (LUN_ID_4 + LUN_4) -#define LUN_ID_6 (LUN_ID_5 + LUN_5) -#define LUN_ID_7 (LUN_ID_6 + LUN_6) -#define MAX_LUN (LUN_ID_7 + LUN_7) //!< Number of static LUNs. -#define LUN_ID_USB (MAX_LUN) //!< First dynamic LUN (USB host mass storage). -//! @} - - -// Include LUN header files. -#if LUN_0 == ENABLE - #include LUN_0_INCLUDE -#endif -#if LUN_1 == ENABLE - #include LUN_1_INCLUDE -#endif -#if LUN_2 == ENABLE - #include LUN_2_INCLUDE -#endif -#if LUN_3 == ENABLE - #include LUN_3_INCLUDE -#endif -#if LUN_4 == ENABLE - #include LUN_4_INCLUDE -#endif -#if LUN_5 == ENABLE - #include LUN_5_INCLUDE -#endif -#if LUN_6 == ENABLE - #include LUN_6_INCLUDE -#endif -#if LUN_7 == ENABLE - #include LUN_7_INCLUDE -#endif -#if LUN_USB == ENABLE - #include LUN_USB_INCLUDE -#endif - - -// Check the configuration of write protection in conf_access.h. -#ifndef GLOBAL_WR_PROTECT - #error GLOBAL_WR_PROTECT must be defined as ENABLED or DISABLED in conf_access.h -#endif - - -#if GLOBAL_WR_PROTECT == ENABLED - -//! Write protect. -extern Bool g_wr_protect; - -#endif - - -/*! \name Control Interface - */ -//! @{ - -#ifdef FREERTOS_USED - -/*! \brief Initializes the LUN access locker. - * - * \return \c TRUE if the locker was successfully initialized, else \c FALSE. - */ -extern Bool ctrl_access_init(void); - -#endif // FREERTOS_USED - -/*! \brief Returns the number of LUNs. - * - * \return Number of LUNs in the system. - */ -extern U8 get_nb_lun(void); - -/*! \brief Returns the current LUN. - * - * \return Current LUN. - * - * \todo Implement. - */ -extern U8 get_cur_lun(void); - -/*! \brief Tests the memory state and initializes the memory if required. - * - * The TEST UNIT READY SCSI primary command allows an application client to poll - * a LUN until it is ready without having to allocate memory for returned data. - * - * This command may be used to check the media status of LUNs with removable - * media. - * - * \param lun Logical Unit Number. - * - * \return Status. - */ -extern Ctrl_status mem_test_unit_ready(U8 lun); - -/*! \brief Returns the address of the last valid sector (512 bytes) in the - * memory. - * - * \param lun Logical Unit Number. - * \param u32_nb_sector Pointer to the address of the last valid sector. - * - * \return Status. - */ -extern Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector); - -/*! \brief Returns the size of the physical sector. - * - * \param lun Logical Unit Number. - * - * \return Sector size (unit: 512 bytes). - */ -extern U8 mem_sector_size(U8 lun); - -/*! \brief Returns the write-protection state of the memory. - * - * \param lun Logical Unit Number. - * - * \return \c TRUE if the memory is write-protected, else \c FALSE. - * - * \note Only used by removable memories with hardware-specific write - * protection. - */ -extern Bool mem_wr_protect(U8 lun); - -/*! \brief Tells whether the memory is removable. - * - * \param lun Logical Unit Number. - * - * \return \c TRUE if the memory is removable, else \c FALSE. - */ -extern Bool mem_removal(U8 lun); - -/*! \brief Returns a pointer to the LUN name. - * - * \param lun Logical Unit Number. - * - * \return Pointer to the LUN name string. - */ -extern const char *mem_name(U8 lun); - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - -/*! \brief Tranfers data from the memory to USB. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to read. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector); - -/*! \brief Tranfers data from USB to the memory. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to write. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector); - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - -/*! \brief Copies 1 data sector from the memory to RAM. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to read. - * \param ram Pointer to RAM buffer to write. - * - * \return Status. - */ -extern Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram); - -/*! \brief Copies 1 data sector from RAM to the memory. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to write. - * \param ram Pointer to RAM buffer to read. - * - * \return Status. - */ -extern Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram); - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#if ACCESS_STREAM == ENABLED - -/*! \name Streaming MEM <-> MEM Interface - */ -//! @{ - -//! Erroneous streaming data transfer ID. -#define ID_STREAM_ERR 0xFF - - #if ACCESS_MEM_TO_MEM == ENABLED - -/*! \brief Copies data from one memory to another. - * - * \param src_lun Source Logical Unit Number. - * \param src_addr Source address of first memory sector to read. - * \param dest_lun Destination Logical Unit Number. - * \param dest_addr Destination address of first memory sector to write. - * \param nb_sector Number of sectors to copy. - * - * \return Status. - */ -extern Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector); - - #endif // ACCESS_MEM_TO_MEM == ENABLED - -/*! \brief Returns the state of a streaming data transfer. - * - * \param id Transfer ID. - * - * \return Status. - * - * \todo Implement. - */ -extern Ctrl_status stream_state(U8 id); - -/*! \brief Stops a streaming data transfer. - * - * \param id Transfer ID. - * - * \return Number of remaining sectors. - * - * \todo Implement. - */ -extern U16 stream_stop(U8 id); - -//! @} - -#endif // ACCESS_STREAM == ENABLED - - -#endif // _CTRL_ACCESS_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c deleted file mode 100644 index fe8a2a0..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c +++ /dev/null @@ -1,133 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Macros and functions dedicated to debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "compiler.h" -#include "debug.h" -#include "util.h" - - -#if (defined __GNUC__) -# include "malloc.h" - -U32 get_heap_curr_used_size( void ) -{ - struct mallinfo my_info=mallinfo(); - return my_info.uordblks; -} - -U32 get_heap_total_used_size( void ) -{ - struct mallinfo my_info=mallinfo(); - return my_info.arena; -} -#endif - -U32 get_heap_free_size( void ) -{ - U32 high_mark= AVR32_SRAM_SIZE; - U32 low_mark = 0; - U32 size ; - void* p_mem; - - size = (high_mark + low_mark)/2; - - do - { - p_mem = malloc(size); - if( p_mem != NULL) - { // Can allocate memory - free(p_mem); - low_mark = size; - } - else - { // Can not allocate memory - high_mark = size; - } - - size = (high_mark + low_mark)/2; - } - while( (high_mark-low_mark) >1 ); - - return size; -} - -static void* round_trace_pbuf; -static U32 round_trace_size; - -void uc3_round_trace_init(void* buf, U32 size) -{ - round_trace_pbuf = buf; - (*(U32*)round_trace_pbuf)=(U32)buf+4; - round_trace_size = size; -} - -void uc3_round_trace(U32 val) -{ - //Disable_global_interrupt(); - - U32* p_wr = (U32*)(*(U32*)round_trace_pbuf); - *p_wr = val; - p_wr++; - if( ((U32)p_wr % round_trace_size) ==0 ) - p_wr= (U32*)round_trace_pbuf+1; - *p_wr = 0xdeadbeef; - *(U32*)round_trace_pbuf = (U32)p_wr; - - //Enable_global_interrupt(); -} - -void dump(char* _buf, uint16_t _count) { - - int i; - for (i = 0; i < _count; ++i) - { - printk("0x%x ", _buf[i]); - if ((i!=0)&&(i % 10 == 0)) - printk("\n\t"); - } - printk("\n"); -} - diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h deleted file mode 100644 index a832d7c..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h +++ /dev/null @@ -1,116 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Macros and functions dedicated to debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _DEBUG_H_ -#define _DEBUG_H_ - -#include "stringz.h" - -/*! \brief These macros are used to add traces memory. - * - * First, initialise the trace with Uc3_trace_init(pointer), giving the start address - * of the memory location where will be stored the trace. - * Use Uc3_trace(something) to store "something" into the memory. The end of the trace - * is signaled by the "0xdeadbeef" pattern. - */ -#define Uc3_trace_init(debug_addr) \ - *(U32*)(debug_addr)=debug_addr+4 - -#define Uc3_trace(debug_addr, x) \ - *(U32*)(*(U32*)(debug_addr) ) = (U32)(x) ;\ - *(U32*)(*(U32*)(debug_addr)+4) = 0xdeadbeef ;\ - *(U32*)(debug_addr ) = *(U32*)(debug_addr)+4 - -/*! \brief This macro is used to insert labels into assembly output. - * - */ -#define Insert_label(name) \ - __asm__ __volatile__ (STRINGZ(name)":"); - -#if (defined __GNUC__) -/*! \brief Returns the number of total of used bytes allocated from the HEAP. - * - * \retval total number of used bytes. - */ -U32 get_heap_total_used_size( void ); - -/*! \brief Returns the number of bytes currently used from the HEAP. - * - * \retval total number of used bytes. - */ -U32 get_heap_curr_used_size( void ); -#endif - -/*! \brief Returns the number of free bytes in the HEAP. - * - * This funtion tries to allocate the maximum number of bytes by dichotomical method. - * - * \retval number of free bytes. - */ -extern U32 get_heap_free_size( void ); - -/*! \name Traces function using a round buffer - */ -//! @{ - -/*! \brief Initialize the trace using a round buffer. - * - * \param buf Base address of the buffer used for the trace. - * \param size Size of the round buffer. Must be a power of 2. - */ -void uc3_round_trace_init(void* buf, U32 size); - -/*! \brief Trace a data in the round buffer. - * - * The end of the trace is signaled by the "0xdeadbeef" pattern. - * \param val Data to trace; - */ -void uc3_round_trace(U32 val); - -//! @} - - -#endif // _DEBUG_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c deleted file mode 100644 index 99e9274..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c +++ /dev/null @@ -1,215 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Strings and integers print module for debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "compiler.h" -#include "gpio.h" -#include "usart.h" -#include "print_funcs.h" - - -//! ASCII representation of hexadecimal digits. -static const char HEX_DIGITS[16] = "0123456789ABCDEF"; - - -void init_dbg_rs232(long pba_hz) -{ - init_dbg_rs232_ex(DBG_USART_BAUDRATE, pba_hz); -} - - -void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz) -{ - static const gpio_map_t DBG_USART_GPIO_MAP = - { - {DBG_USART_RX_PIN, DBG_USART_RX_FUNCTION}, - {DBG_USART_TX_PIN, DBG_USART_TX_FUNCTION} - }; - - // Options for debug USART. - usart_options_t dbg_usart_options = - { - .baudrate = baudrate, - .charlength = 8, - .paritytype = USART_NO_PARITY, - .stopbits = USART_1_STOPBIT, - .channelmode = USART_NORMAL_CHMODE - }; - - // Setup GPIO for debug USART. - gpio_enable_module(DBG_USART_GPIO_MAP, - sizeof(DBG_USART_GPIO_MAP) / sizeof(DBG_USART_GPIO_MAP[0])); - - // Initialize it in RS232 mode. - usart_init_rs232(DBG_USART, &dbg_usart_options, pba_hz); -} - - -void print_dbg(const char *str) -{ - // Redirection to the debug USART. - print(DBG_USART, str); -} - - -void print_dbg_char(int c) -{ - // Redirection to the debug USART. - print_char(DBG_USART, c); -} - - -void print_dbg_ulong(unsigned long n) -{ - // Redirection to the debug USART. - print_ulong(DBG_USART, n); -} - - -void print_dbg_char_hex(unsigned char n) -{ - // Redirection to the debug USART. - print_char_hex(DBG_USART, n); -} - - -void print_dbg_short_hex(unsigned short n) -{ - // Redirection to the debug USART. - print_short_hex(DBG_USART, n); -} - - -void print_dbg_hex(unsigned long n) -{ - // Redirection to the debug USART. - print_hex(DBG_USART, n); -} - - -void print(volatile avr32_usart_t *usart, const char *str) -{ - // Invoke the USART driver to transmit the input string with the given USART. - usart_write_line(usart, str); -} - - -void print_char(volatile avr32_usart_t *usart, int c) -{ - // Invoke the USART driver to transmit the input character with the given USART. - usart_putchar(usart, c); -} - - -void print_ulong(volatile avr32_usart_t *usart, unsigned long n) -{ - char tmp[11]; - int i = sizeof(tmp) - 1; - - // Convert the given number to an ASCII decimal representation. - tmp[i] = '\0'; - do - { - tmp[--i] = '0' + n % 10; - n /= 10; - } while (n); - - // Transmit the resulting string with the given USART. - print(usart, tmp + i); -} - - -void print_char_hex(volatile avr32_usart_t *usart, unsigned char n) -{ - char tmp[3]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[2] = '\0'; - for (i = 1; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} - - -void print_short_hex(volatile avr32_usart_t *usart, unsigned short n) -{ - char tmp[5]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[4] = '\0'; - for (i = 3; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} - - -void print_hex(volatile avr32_usart_t *usart, unsigned long n) -{ - char tmp[9]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[8] = '\0'; - for (i = 7; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h deleted file mode 100644 index 38f931d..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h +++ /dev/null @@ -1,294 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Strings and integers print module for debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _PRINT_FUNCS_H_ -#define _PRINT_FUNCS_H_ - -#include -#include "board.h" - - -/*! \name USART Settings for the Debug Module - */ -//! @{ -#if BOARD == EVK1100 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1101 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == UC3C_EK -# define DBG_USART (&AVR32_USART2) -# define DBG_USART_RX_PIN AVR32_USART2_RXD_0_1_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART2_RXD_0_1_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART2_TXD_0_1_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART2_TXD_0_1_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1104 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1105 -# define DBG_USART (&AVR32_USART0) -# define DBG_USART_RX_PIN AVR32_USART0_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART0_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == STK1000 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION -# define DBG_USART_BAUDRATE 115200 -#elif BOARD == NGW100 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION -# define DBG_USART_BAUDRATE 115200 -#elif BOARD == STK600_RCUC3L0 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_1_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_1_FUNCTION -// For the RX pin, connect STK600.PORTE.PE3 to STK600.RS232 SPARE.RXD -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_1_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_1_FUNCTION -// For the TX pin, connect STK600.PORTE.PE2 to STK600.RS232 SPARE.TXD -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA -#elif BOARD == UC3L_EK -# define DBG_USART (&AVR32_USART3) -# define DBG_USART_RX_PIN AVR32_USART3_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART3_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART3_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART3_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART3_CLK_PBA -#elif BOARD == ARDUINO -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA -#endif - -#if !defined(DBG_USART) || \ - !defined(DBG_USART_RX_PIN) || \ - !defined(DBG_USART_RX_FUNCTION) || \ - !defined(DBG_USART_TX_PIN) || \ - !defined(DBG_USART_TX_FUNCTION) || \ - !defined(DBG_USART_BAUDRATE) -# error The USART configuration to use for debug on your board is missing -#endif -//! @} - -/*! \name VT100 Common Commands - */ -//! @{ -#define CLEARSCR "\x1B[2J\x1B[;H" //!< Clear screen. -#define CLEAREOL "\x1B[K" //!< Clear end of line. -#define CLEAREOS "\x1B[J" //!< Clear end of screen. -#define CLEARLCR "\x1B[0K" //!< Clear line cursor right. -#define CLEARLCL "\x1B[1K" //!< Clear line cursor left. -#define CLEARELN "\x1B[2K" //!< Clear entire line. -#define CLEARCDW "\x1B[0J" //!< Clear cursor down. -#define CLEARCUP "\x1B[1J" //!< Clear cursor up. -#define GOTOYX "\x1B[%.2d;%.2dH" //!< Set cursor to (y, x). -#define INSERTMOD "\x1B[4h" //!< Insert mode. -#define OVERWRITEMOD "\x1B[4l" //!< Overwrite mode. -#define DELAFCURSOR "\x1B[K" //!< Erase from cursor to end of line. -#define CRLF "\r\n" //!< Carriage Return + Line Feed. -//! @} - -/*! \name VT100 Cursor Commands - */ -//! @{ -#define CURSON "\x1B[?25h" //!< Show cursor. -#define CURSOFF "\x1B[?25l" //!< Hide cursor. -//! @} - -/*! \name VT100 Character Commands - */ -//! @{ -#define NORMAL "\x1B[0m" //!< Normal. -#define BOLD "\x1B[1m" //!< Bold. -#define UNDERLINE "\x1B[4m" //!< Underline. -#define BLINKING "\x1B[5m" //!< Blink. -#define INVVIDEO "\x1B[7m" //!< Inverse video. -//! @} - -/*! \name VT100 Color Commands - */ -//! @{ -#define CL_BLACK "\033[22;30m" //!< Black. -#define CL_RED "\033[22;31m" //!< Red. -#define CL_GREEN "\033[22;32m" //!< Green. -#define CL_BROWN "\033[22;33m" //!< Brown. -#define CL_BLUE "\033[22;34m" //!< Blue. -#define CL_MAGENTA "\033[22;35m" //!< Magenta. -#define CL_CYAN "\033[22;36m" //!< Cyan. -#define CL_GRAY "\033[22;37m" //!< Gray. -#define CL_DARKGRAY "\033[01;30m" //!< Dark gray. -#define CL_LIGHTRED "\033[01;31m" //!< Light red. -#define CL_LIGHTGREEN "\033[01;32m" //!< Light green. -#define CL_YELLOW "\033[01;33m" //!< Yellow. -#define CL_LIGHTBLUE "\033[01;34m" //!< Light blue. -#define CL_LIGHTMAGENTA "\033[01;35m" //!< Light magenta. -#define CL_LIGHTCYAN "\033[01;36m" //!< Light cyan. -#define CL_WHITE "\033[01;37m" //!< White. -//! @} - - -/*! \brief Sets up DBG_USART with 8N1 at DBG_USART_BAUDRATE. - * - * \param pba_hz PBA clock frequency (Hz). - */ -extern void init_dbg_rs232(long pba_hz); - -/*! \brief Sets up DBG_USART with 8N1 at a given baud rate. - * - * \param baudrate Baud rate to set DBG_USART to. - * \param pba_hz PBA clock frequency (Hz). - */ -extern void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz); - -/*! \brief Prints a string of characters to DBG_USART. - * - * \param str The string of characters to print. - */ -extern void print_dbg(const char *str); - -/*! \brief Prints a character to DBG_USART. - * - * \param c The character to print. - */ -extern void print_dbg_char(int c); - -/*! \brief Prints an integer to DBG_USART in a decimal representation. - * - * \param n The integer to print. - */ -extern void print_dbg_ulong(unsigned long n); - -/*! \brief Prints a char to DBG_USART in an hexadecimal representation. - * - * \param n The char to print. - */ -extern void print_dbg_char_hex(unsigned char n); - -/*! \brief Prints a short integer to DBG_USART in an hexadecimal representation. - * - * \param n The short integer to print. - */ -extern void print_dbg_short_hex(unsigned short n); - -/*! \brief Prints an integer to DBG_USART in an hexadecimal representation. - * - * \param n The integer to print. - */ -extern void print_dbg_hex(unsigned long n); - -/*! \brief Prints a string of characters to a given USART. - * - * \param usart Base address of the USART instance to print to. - * \param str The string of characters to print. - */ -extern void print(volatile avr32_usart_t *usart, const char *str); - -/*! \brief Prints a character to a given USART. - * - * \param usart Base address of the USART instance to print to. - * \param c The character to print. - */ -extern void print_char(volatile avr32_usart_t *usart, int c); - -/*! \brief Prints an integer to a given USART in a decimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The integer to print. - */ -extern void print_ulong(volatile avr32_usart_t *usart, unsigned long n); - -/*! \brief Prints a char to a given USART in an hexadecimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The char to print. - */ -extern void print_char_hex(volatile avr32_usart_t *usart, unsigned char n); - -/*! \brief Prints a short integer to a given USART in an hexadecimal - * representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The short integer to print. - */ -extern void print_short_hex(volatile avr32_usart_t *usart, unsigned short n); - -/*! \brief Prints an integer to a given USART in an hexadecimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The integer to print. - */ -extern void print_hex(volatile avr32_usart_t *usart, unsigned long n); - - -#endif // _PRINT_FUNCS_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h deleted file mode 100644 index e3ebea7..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h +++ /dev/null @@ -1,63 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS CPU include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_CPU_H__ -#define __AVR32_NEWLIB_ADDONS_CPU_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -#define CPU_HZ get_cpu_hz() - -void udelay(unsigned long usec); -void set_cpu_hz(unsigned int clk_hz); -unsigned int get_cpu_hz(); - -_END_STD_C - -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h deleted file mode 100644 index 31caf13..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h +++ /dev/null @@ -1,120 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS exceptions include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__ -#define __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -/* - Exception vector offsets -*/ -#define EVBA_UNRECOVERABLE 0x000 -#define EVBA_TLB_MULTIPLE 0x004 -#define EVBA_BUS_ERROR_DATA 0x008 -#define EVBA_BUS_ERROR_INSTR 0x00C -#define EVBA_NMI 0x010 -#define EVBA_INSTR_ADDR 0x014 -#define EVBA_ITLB_MISS 0x050 -#define EVBA_ITLB_PROT 0x018 -#define EVBA_BREAKPOINT 0x01C -#define EVBA_ILLEGAL_OPCODE 0x020 -#define EVBA_UNIMPLEMENTED 0x024 -#define EVBA_PRIVILEGE_VIOL 0x028 -#define EVBA_FLOATING_POINT 0x02C -#define EVBA_COP_ABSENT 0x030 -#define EVBA_SCALL 0x100 -#define EVBA_DATA_ADDR_R 0x034 -#define EVBA_DATA_ADDR_W 0x038 -#define EVBA_DTLB_MISS_R 0x060 -#define EVBA_DTLB_MISS_W 0x070 -#define EVBA_DTLB_PROT_R 0x03C -#define EVBA_DTLB_PROT_W 0x040 -#define EVBA_DTLB_MODIFIED 0x044 - - -/* - Define the form of the function used when registering exceptions. - The function should return the address which the exception should - return to after the exception processing. -*/ - -typedef unsigned int (*__exception_handler)(int /*evba_offset*/, int /*return address*/); - -/* - Define the form of the function used when registering a scall handler. -*/ - -typedef void (*__scall_handler)(int /*code*/, int /*p1*/, int /*p2*/ - , int /*p3*/, int /*p4*/); - -/* - Function for registering an exception handler for the exception with - offset given by evba_offset. -*/ -void _register_exception_handler(__exception_handler handler, int evba_offset); - -/* - Function for registering a scall handler which can be a arbirary - function which uses r8-r12 for parameters. -*/ -void _register_scall_handler(__scall_handler handler); - -/* - Initialize exceptions. Must be called before registering exception handlers - and needed to enable exceptions. 'evba' is the pointer to the exception - vector. 'handler_table' is a pointer to an array where the pointers to - the exception handlers are stored. This array must be at least 0x104 bytes - and word aligned. -*/ -void init_exceptions(void *evba, void *handler_table); - -_END_STD_C - -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h deleted file mode 100644 index 76d81f7..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h +++ /dev/null @@ -1,82 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS interrupts include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__ -#define __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -#define INT_GRPS 64 -#define INT_LINES 32 -#define INTPR_BASE (__intc_base__ + 0x0000) -#define INTREQ_BASE (__intc_base__ + 64*4) -#define INTCAUSE_BASE (__intc_base__ + 2*64*4) - -//Register offsets -#define INTLEVEL 30 -#define AUTOVECTOR 0 -#define AUTOVECTOR_BITS 14 - -//Priorities -#define INT0 0 -#define INT1 1 -#define INT2 2 -#define INT3 3 - - -typedef void (*__newlib_int_handler)(int /* int_grp*/, void */*user_handle*/); - -__newlib_int_handler register_interrupt(__newlib_int_handler handler, int int_grp, int line, int priority, - .../* void *user_handle*/); -void init_interrupts(); -void set_interrupts_base(void *base); - -_END_STD_C - -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h deleted file mode 100644 index a725769..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h +++ /dev/null @@ -1,174 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS miscellaneous macros include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_IO_H__ -#define __AVR32_NEWLIB_ADDONS_IO_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -typedef char u8; -typedef unsigned int u32; - -#define __raw_writeb(v,a) (*(volatile unsigned char *)(a) = (v)) -#define __raw_writew(v,a) (*(volatile unsigned short *)(a) = (v)) -#define __raw_writel(v,a) (*(volatile unsigned int *)(a) = (v)) - -#define __raw_readb(a) (*(volatile unsigned char *)(a)) -#define __raw_readw(a) (*(volatile unsigned short *)(a)) -#define __raw_readl(a) (*(volatile unsigned int *)(a)) - -/* As long as I/O is only performed in P4 (or possibly P3), we're safe */ -#define writeb(v,a) __raw_writeb(v,a) -#define writew(v,a) __raw_writew(v,a) -#define writel(v,a) __raw_writel(v,a) - -#define readb(a) __raw_readb(a) -#define readw(a) __raw_readw(a) -#define readl(a) __raw_readl(a) - -/* Memory segments when segmentation is enabled */ -#define P0SEG 0x00000000 -#define P1SEG 0x80000000 -#define P2SEG 0xa0000000 -#define P3SEG 0xc0000000 -#define P4SEG 0xe0000000 - -/* Returns the privileged segment base of a given address */ -#define PXSEG(a) (((unsigned long)(a)) & 0xe0000000) - -/* Returns the physical address of a PnSEG (n=1,2) address */ -#define PHYSADDR(a) (((unsigned long)(a)) & 0x1fffffff) - -/* - * Map an address to a certain privileged segment - */ -#define P1SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P1SEG)) -#define P2SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P2SEG)) -#define P3SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P3SEG)) -#define P4SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P4SEG)) - - -#define cached(addr) P1SEGADDR(addr) -#define uncached(addr) P2SEGADDR(addr) -#define physaddr(addr) PHYSADDR(addr) - -#define BF(field, value) \ - ({ union { \ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = 0; \ - __tmp.__val = value; \ - __tmp.__ul;}) - -#define BF_D(field, value) \ - ({ union { \ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = 0; \ - __tmp.__val = value; \ - __tmp.__ul;}) - -#define BFINS(var, field, value) \ - { union {\ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val = value; \ - var = __tmp.__ul;} - -#define BFEXT(var, field) \ - ({ union {\ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val; }) - -#define BFINS_D(var, field, value) \ - { union {\ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val = value; \ - var = __tmp.__ul;} - -#define BFEXT_D(var, field) \ - ({ union {\ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val; }) - - -_END_STD_C - -#endif diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h deleted file mode 100644 index 6c4697d..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h +++ /dev/null @@ -1,208 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS USART include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_USART_H__ -#define __AVR32_NEWLIB_ADDONS_USART_H__ - -#include <_ansi.h> - -#include "nlao_io.h" - -_BEGIN_STD_C - -struct usart3 { - volatile u32 us_cr; - volatile u32 us_mr; - volatile u32 us_ier; - volatile u32 us_idr; - volatile u32 us_imr; - volatile u32 us_csr; - volatile u32 us_rhr; - volatile u32 us_thr; - volatile u32 us_brgr; - volatile u32 us_rtor; - volatile u32 us_ttgr; - volatile u32 us_reserved[5]; - volatile u32 us_fidi; - volatile u32 us_ner; - volatile u32 us_xxr; - volatile u32 us_if; -}; - -/* Register offsets */ -#define US_CR 0x0000 -#define US_MR 0x0004 -#define US_IER 0x0008 -#define US_IDR 0x000c -#define US_IMR 0x0010 -#define US_CSR 0x0014 -#define US_RHR 0x0018 -#define US_THR 0x001c -#define US_BRGR 0x0020 -#define US_RTOR 0x0024 -#define US_TTGR 0x0028 - -#define US_FIDI 0x0040 -#define US_NER 0x0044 -#define US_XXR 0x0048 -#define US_IF 0x004c - -#define US_RPR 0x0100 -#define US_RCR 0x0104 -#define US_TPR 0x0108 -#define US_TCR 0x010c -#define US_RNPR 0x0110 -#define US_RNCR 0x0114 -#define US_TNPR 0x0118 -#define US_TNCR 0x011c -#define US_PTCR 0x0120 -#define US_PTSR 0x0124 - - - - -/* USART3 Control Register */ -#define US_CR_RSTRX (1 << 2) -#define US_CR_RSTTX (1 << 3) -#define US_CR_RXEN (1 << 4) -#define US_CR_RXDIS (1 << 5) -#define US_CR_TXEN (1 << 6) -#define US_CR_TXDIS (1 << 7) -#define US_CR_RSTSTA (1 << 8) -#define US_CR_STTBRK (1 << 9) -#define US_CR_STPBRK (1 << 10) - -#define US_CR_DTREN (1 << 16) -#define US_CR_DTRDIS (1 << 17) -#define US_CR_RTSEN (1 << 18) -#define US_CR_RTSDIS (1 << 19) - -/* USART3 Mode Register */ -#define US_MR_MODE (15 << 0) -#define US_MR_MODE_NORMAL ( 0 << 0) -#define US_MR_MODE_HWFLOW ( 2 << 0) -#define US_MR_CLKS ( 3 << 4) -#define US_MR_CLKS_CLOCK ( 0 << 4) -#define US_MR_CLKS_FDIV1 ( 1 << 4) -#define US_MR_CLKS_SLOW ( 2 << 4) -#define US_MR_CLKS_EXT ( 3 << 4) -#define US_MR_CHRL_5BITS ( 0 << 6) -#define US_MR_CHRL_6BITS ( 1 << 6) -#define US_MR_CHRL_7BITS ( 2 << 6) -#define US_MR_CHRL_8BITS ( 3 << 6) -#define US_MR_SYNC ( 1 << 8) -#define US_MR_PAR_EVEN ( 0 << 9) -#define US_MR_PAR_ODD ( 1 << 9) -#define US_MR_PAR_SPACE ( 2 << 9) -#define US_MR_PAR_MARK ( 3 << 9) -#define US_MR_PAR_NONE ( 4 << 9) -#define US_MR_PAR_MDROP ( 6 << 9) -#define US_MR_NBSTOP_1BIT ( 0 << 12) -#define US_MR_NBSTOP_1_5BIT ( 1 << 12) -#define US_MR_NBSTOP_2BITS ( 2 << 12) -#define US_MR_OVER ( 1 << 19) -#define US_MR_OVER_X16 ( 0 << 19) -#define US_MR_OVER_X8 ( 1 << 19) - -/* USART3 Channel Status Register */ -#define US_CSR_RXRDY (1 << 0) -#define US_CSR_TXRDY (1 << 1) -#define US_CSR_RXBRK (1 << 2) -#define US_CSR_ENDRX (1 << 3) -#define US_CSR_ENDTX (1 << 4) - - -#define US_CSR_OVRE (1 << 5) -#define US_CSR_FRAME (1 << 6) -#define US_CSR_PARE (1 << 7) - -#define US_CSR_TXEMPTY (1 << 9) - -#define US_CSR_TXBUFE (1 << 11) -#define US_CSR_RXBUFF (1 << 12) -#define US_CSR_RIIC (1 << 16) -#define US_CSR_DSRIC (1 << 17) -#define US_CSR_DCDIC (1 << 18) -#define US_CSR_CTSIC (1 << 19) -#define US_CSR_RI (1 << 20) -#define US_CSR_DSR (1 << 21) -#define US_CSR_DCD (1 << 22) -#define US_CSR_CTS (1 << 23) - -/* USART3 Baud Rate Generator Register */ -#define US_BRGR_CD_OFFSET 0 -#define US_BRGR_FP_OFFSET 16 - -#define US_BRGR_CD_SIZE 16 -#define US_BRGR_FP_SIZE 3 - -#define US_BRGR_CD (0xFFFF << 0) -#define US_BRGR_FP ( 7 << 16) - -/*USART3 PDC Transfer Control Register */ -#define US_PTCR_RXTEN (1 << 0) -#define US_PTCR_RXTDIS (1 << 1) -#define US_PTCR_TXTEN (1 << 8) -#define US_PTCR_TXTDIS (1 << 9) - -/*USART3 PDC Transfer Status Register */ -#define US_PTSR_RXTEN (1 << 0) -#define US_PTSR_TXTEN (1 << 8) - - -int usart_init(int baudrate); -void usart_putc(char c); -void usart_puts(const char *s); -int usart_getc(void); -int usart_tstc(void); -void usart_setbrg(int baudrate, int cpu_clock); -void set_usart_base(void *usart_base); - - -_END_STD_C - -#endif /* MERLIN_USART3_H */ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a deleted file mode 100644 index aa673ec..0000000 Binary files a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a and /dev/null differ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds deleted file mode 100644 index 59152ac..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * AVR32 AT32UC3A0512 GNU LD script file. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: AVR32 AT32UC3A0512 - * - * - author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32") - -OUTPUT_ARCH(avr32:uc) - -ENTRY(_start) - -MEMORY -{ - FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00080000 - INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC - USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200 -} - -PHDRS -{ - FLASH PT_LOAD; - INTRAM_ALIGN PT_NULL; - INTRAM_AT_FLASH PT_LOAD; - INTRAM PT_NULL; - USERPAGE PT_LOAD; -} - -SECTIONS -{ - /* If this heap size is selected, all the INTRAM space from the end of the - data area to the beginning of the stack will be allocated for the heap. */ - __max_heap_size__ = -1; - - /* Use a default heap size if heap size was not defined. */ - __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__; - - /* Use a default stack size if stack size was not defined. */ - __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K; - - /* Read-only sections, merged into text segment: */ - PROVIDE (__executable_start = 0x80000000); . = 0x80000000; - .interp : { *(.interp) } >FLASH AT>FLASH :FLASH - .reset : { *(.reset) } >FLASH AT>FLASH :FLASH - .hash : { *(.hash) } >FLASH AT>FLASH :FLASH - .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH - .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH - .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH - .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH - .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH - .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH - .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH - .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH - .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH - .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH - .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH - .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH - .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH - .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH - .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH - .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH - .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH - .init : - { - KEEP (*(.init)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .plt : { *(.plt) } >FLASH AT>FLASH :FLASH - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - KEEP (*(.text.*personality*)) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .fini : - { - KEEP (*(.fini)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH - .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH - .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH - .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH - .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH - . = ORIGIN(INTRAM); - .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN - /* Exception handling */ - .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - PROVIDE (__preinit_array_start = ALIGN(32 / 8)); - .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__fini_array_end = .); - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin*.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dtors : - { - KEEP (*crtbegin*.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - KEEP (*(.gnu.linkonce.d.*personality*)) - SORT(CONSTRUCTORS) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (edata = .); - __bss_start = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(8); - } >INTRAM AT>INTRAM :INTRAM - . = ALIGN(8); - _end = .; - PROVIDE (end = .); - __heap_start__ = ALIGN(8); - .heap : - { - *(.heap) - . = (__heap_size__ == __max_heap_size__) ? - ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) : - __heap_size__; - } >INTRAM AT>INTRAM :INTRAM - __heap_end__ = .; - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ : - { - _stack = .; - *(.stack) - . = __stack_size__; - _estack = .; - } >INTRAM AT>INTRAM :INTRAM - .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds deleted file mode 100644 index a5926d8..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * AVR32 AT32UC3A1256 GNU LD script file. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: AVR32 AT32UC3A1256 - * - * - author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32") - -OUTPUT_ARCH(avr32:uc) - -ENTRY(_start) - -MEMORY -{ - FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00040000 - INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC - USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200 -} - -PHDRS -{ - FLASH PT_LOAD; - INTRAM_ALIGN PT_NULL; - INTRAM_AT_FLASH PT_LOAD; - INTRAM PT_NULL; - USERPAGE PT_LOAD; -} - -SECTIONS -{ - /* If this heap size is selected, all the INTRAM space from the end of the - data area to the beginning of the stack will be allocated for the heap. */ - __max_heap_size__ = -1; - - /* Use a default heap size if heap size was not defined. */ - __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__; - - /* Use a default stack size if stack size was not defined. */ - __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K; - - /* Read-only sections, merged into text segment: */ - PROVIDE (__executable_start = 0x80000000); . = 0x80000000; - .interp : { *(.interp) } >FLASH AT>FLASH :FLASH - .reset : { *(.reset) } >FLASH AT>FLASH :FLASH - .hash : { *(.hash) } >FLASH AT>FLASH :FLASH - .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH - .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH - .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH - .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH - .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH - .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH - .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH - .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH - .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH - .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH - .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH - .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH - .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH - .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH - .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH - .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH - .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH - .init : - { - KEEP (*(.init)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .plt : { *(.plt) } >FLASH AT>FLASH :FLASH - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - KEEP (*(.text.*personality*)) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .fini : - { - KEEP (*(.fini)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH - .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH - .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH - .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH - .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH - . = ORIGIN(INTRAM); - .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN - /* Exception handling */ - .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - PROVIDE (__preinit_array_start = ALIGN(32 / 8)); - .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__fini_array_end = .); - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin*.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dtors : - { - KEEP (*crtbegin*.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - KEEP (*(.gnu.linkonce.d.*personality*)) - SORT(CONSTRUCTORS) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (edata = .); - __bss_start = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(8); - } >INTRAM AT>INTRAM :INTRAM - . = ALIGN(8); - _end = .; - PROVIDE (end = .); - __heap_start__ = ALIGN(8); - .heap : - { - *(.heap) - . = (__heap_size__ == __max_heap_size__) ? - ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) : - __heap_size__; - } >INTRAM AT>INTRAM :INTRAM - __heap_end__ = .; - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ : - { - _stack = .; - *(.stack) - . = __stack_size__; - _estack = .; - } >INTRAM AT>INTRAM :INTRAM - .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h deleted file mode 100644 index 41163b6..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h +++ /dev/null @@ -1,328 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor macro repeating utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _MREPEAT_H_ -#define _MREPEAT_H_ - -#include "preprocessor.h" - - -//! Maximal number of repetitions supported by MREPEAT. -#define MREPEAT_LIMIT 256 - -/*! \brief Macro repeat. - * - * This macro represents a horizontal repetition construct. - * - * \param count The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT. - * \param macro A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with - * the current repetition number and the auxiliary data argument. - * \param data Auxiliary data passed to macro. - * - * \return macro(0, data) macro(1, data) ... macro(count - 1, data) - */ -#define MREPEAT(count, macro, data) TPASTE2(MREPEAT, count)(macro, data) - -#define MREPEAT0( macro, data) -#define MREPEAT1( macro, data) MREPEAT0( macro, data) macro( 0, data) -#define MREPEAT2( macro, data) MREPEAT1( macro, data) macro( 1, data) -#define MREPEAT3( macro, data) MREPEAT2( macro, data) macro( 2, data) -#define MREPEAT4( macro, data) MREPEAT3( macro, data) macro( 3, data) -#define MREPEAT5( macro, data) MREPEAT4( macro, data) macro( 4, data) -#define MREPEAT6( macro, data) MREPEAT5( macro, data) macro( 5, data) -#define MREPEAT7( macro, data) MREPEAT6( macro, data) macro( 6, data) -#define MREPEAT8( macro, data) MREPEAT7( macro, data) macro( 7, data) -#define MREPEAT9( macro, data) MREPEAT8( macro, data) macro( 8, data) -#define MREPEAT10( macro, data) MREPEAT9( macro, data) macro( 9, data) -#define MREPEAT11( macro, data) MREPEAT10( macro, data) macro( 10, data) -#define MREPEAT12( macro, data) MREPEAT11( macro, data) macro( 11, data) -#define MREPEAT13( macro, data) MREPEAT12( macro, data) macro( 12, data) -#define MREPEAT14( macro, data) MREPEAT13( macro, data) macro( 13, data) -#define MREPEAT15( macro, data) MREPEAT14( macro, data) macro( 14, data) -#define MREPEAT16( macro, data) MREPEAT15( macro, data) macro( 15, data) -#define MREPEAT17( macro, data) MREPEAT16( macro, data) macro( 16, data) -#define MREPEAT18( macro, data) MREPEAT17( macro, data) macro( 17, data) -#define MREPEAT19( macro, data) MREPEAT18( macro, data) macro( 18, data) -#define MREPEAT20( macro, data) MREPEAT19( macro, data) macro( 19, data) -#define MREPEAT21( macro, data) MREPEAT20( macro, data) macro( 20, data) -#define MREPEAT22( macro, data) MREPEAT21( macro, data) macro( 21, data) -#define MREPEAT23( macro, data) MREPEAT22( macro, data) macro( 22, data) -#define MREPEAT24( macro, data) MREPEAT23( macro, data) macro( 23, data) -#define MREPEAT25( macro, data) MREPEAT24( macro, data) macro( 24, data) -#define MREPEAT26( macro, data) MREPEAT25( macro, data) macro( 25, data) -#define MREPEAT27( macro, data) MREPEAT26( macro, data) macro( 26, data) -#define MREPEAT28( macro, data) MREPEAT27( macro, data) macro( 27, data) -#define MREPEAT29( macro, data) MREPEAT28( macro, data) macro( 28, data) -#define MREPEAT30( macro, data) MREPEAT29( macro, data) macro( 29, data) -#define MREPEAT31( macro, data) MREPEAT30( macro, data) macro( 30, data) -#define MREPEAT32( macro, data) MREPEAT31( macro, data) macro( 31, data) -#define MREPEAT33( macro, data) MREPEAT32( macro, data) macro( 32, data) -#define MREPEAT34( macro, data) MREPEAT33( macro, data) macro( 33, data) -#define MREPEAT35( macro, data) MREPEAT34( macro, data) macro( 34, data) -#define MREPEAT36( macro, data) MREPEAT35( macro, data) macro( 35, data) -#define MREPEAT37( macro, data) MREPEAT36( macro, data) macro( 36, data) -#define MREPEAT38( macro, data) MREPEAT37( macro, data) macro( 37, data) -#define MREPEAT39( macro, data) MREPEAT38( macro, data) macro( 38, data) -#define MREPEAT40( macro, data) MREPEAT39( macro, data) macro( 39, data) -#define MREPEAT41( macro, data) MREPEAT40( macro, data) macro( 40, data) -#define MREPEAT42( macro, data) MREPEAT41( macro, data) macro( 41, data) -#define MREPEAT43( macro, data) MREPEAT42( macro, data) macro( 42, data) -#define MREPEAT44( macro, data) MREPEAT43( macro, data) macro( 43, data) -#define MREPEAT45( macro, data) MREPEAT44( macro, data) macro( 44, data) -#define MREPEAT46( macro, data) MREPEAT45( macro, data) macro( 45, data) -#define MREPEAT47( macro, data) MREPEAT46( macro, data) macro( 46, data) -#define MREPEAT48( macro, data) MREPEAT47( macro, data) macro( 47, data) -#define MREPEAT49( macro, data) MREPEAT48( macro, data) macro( 48, data) -#define MREPEAT50( macro, data) MREPEAT49( macro, data) macro( 49, data) -#define MREPEAT51( macro, data) MREPEAT50( macro, data) macro( 50, data) -#define MREPEAT52( macro, data) MREPEAT51( macro, data) macro( 51, data) -#define MREPEAT53( macro, data) MREPEAT52( macro, data) macro( 52, data) -#define MREPEAT54( macro, data) MREPEAT53( macro, data) macro( 53, data) -#define MREPEAT55( macro, data) MREPEAT54( macro, data) macro( 54, data) -#define MREPEAT56( macro, data) MREPEAT55( macro, data) macro( 55, data) -#define MREPEAT57( macro, data) MREPEAT56( macro, data) macro( 56, data) -#define MREPEAT58( macro, data) MREPEAT57( macro, data) macro( 57, data) -#define MREPEAT59( macro, data) MREPEAT58( macro, data) macro( 58, data) -#define MREPEAT60( macro, data) MREPEAT59( macro, data) macro( 59, data) -#define MREPEAT61( macro, data) MREPEAT60( macro, data) macro( 60, data) -#define MREPEAT62( macro, data) MREPEAT61( macro, data) macro( 61, data) -#define MREPEAT63( macro, data) MREPEAT62( macro, data) macro( 62, data) -#define MREPEAT64( macro, data) MREPEAT63( macro, data) macro( 63, data) -#define MREPEAT65( macro, data) MREPEAT64( macro, data) macro( 64, data) -#define MREPEAT66( macro, data) MREPEAT65( macro, data) macro( 65, data) -#define MREPEAT67( macro, data) MREPEAT66( macro, data) macro( 66, data) -#define MREPEAT68( macro, data) MREPEAT67( macro, data) macro( 67, data) -#define MREPEAT69( macro, data) MREPEAT68( macro, data) macro( 68, data) -#define MREPEAT70( macro, data) MREPEAT69( macro, data) macro( 69, data) -#define MREPEAT71( macro, data) MREPEAT70( macro, data) macro( 70, data) -#define MREPEAT72( macro, data) MREPEAT71( macro, data) macro( 71, data) -#define MREPEAT73( macro, data) MREPEAT72( macro, data) macro( 72, data) -#define MREPEAT74( macro, data) MREPEAT73( macro, data) macro( 73, data) -#define MREPEAT75( macro, data) MREPEAT74( macro, data) macro( 74, data) -#define MREPEAT76( macro, data) MREPEAT75( macro, data) macro( 75, data) -#define MREPEAT77( macro, data) MREPEAT76( macro, data) macro( 76, data) -#define MREPEAT78( macro, data) MREPEAT77( macro, data) macro( 77, data) -#define MREPEAT79( macro, data) MREPEAT78( macro, data) macro( 78, data) -#define MREPEAT80( macro, data) MREPEAT79( macro, data) macro( 79, data) -#define MREPEAT81( macro, data) MREPEAT80( macro, data) macro( 80, data) -#define MREPEAT82( macro, data) MREPEAT81( macro, data) macro( 81, data) -#define MREPEAT83( macro, data) MREPEAT82( macro, data) macro( 82, data) -#define MREPEAT84( macro, data) MREPEAT83( macro, data) macro( 83, data) -#define MREPEAT85( macro, data) MREPEAT84( macro, data) macro( 84, data) -#define MREPEAT86( macro, data) MREPEAT85( macro, data) macro( 85, data) -#define MREPEAT87( macro, data) MREPEAT86( macro, data) macro( 86, data) -#define MREPEAT88( macro, data) MREPEAT87( macro, data) macro( 87, data) -#define MREPEAT89( macro, data) MREPEAT88( macro, data) macro( 88, data) -#define MREPEAT90( macro, data) MREPEAT89( macro, data) macro( 89, data) -#define MREPEAT91( macro, data) MREPEAT90( macro, data) macro( 90, data) -#define MREPEAT92( macro, data) MREPEAT91( macro, data) macro( 91, data) -#define MREPEAT93( macro, data) MREPEAT92( macro, data) macro( 92, data) -#define MREPEAT94( macro, data) MREPEAT93( macro, data) macro( 93, data) -#define MREPEAT95( macro, data) MREPEAT94( macro, data) macro( 94, data) -#define MREPEAT96( macro, data) MREPEAT95( macro, data) macro( 95, data) -#define MREPEAT97( macro, data) MREPEAT96( macro, data) macro( 96, data) -#define MREPEAT98( macro, data) MREPEAT97( macro, data) macro( 97, data) -#define MREPEAT99( macro, data) MREPEAT98( macro, data) macro( 98, data) -#define MREPEAT100(macro, data) MREPEAT99( macro, data) macro( 99, data) -#define MREPEAT101(macro, data) MREPEAT100(macro, data) macro(100, data) -#define MREPEAT102(macro, data) MREPEAT101(macro, data) macro(101, data) -#define MREPEAT103(macro, data) MREPEAT102(macro, data) macro(102, data) -#define MREPEAT104(macro, data) MREPEAT103(macro, data) macro(103, data) -#define MREPEAT105(macro, data) MREPEAT104(macro, data) macro(104, data) -#define MREPEAT106(macro, data) MREPEAT105(macro, data) macro(105, data) -#define MREPEAT107(macro, data) MREPEAT106(macro, data) macro(106, data) -#define MREPEAT108(macro, data) MREPEAT107(macro, data) macro(107, data) -#define MREPEAT109(macro, data) MREPEAT108(macro, data) macro(108, data) -#define MREPEAT110(macro, data) MREPEAT109(macro, data) macro(109, data) -#define MREPEAT111(macro, data) MREPEAT110(macro, data) macro(110, data) -#define MREPEAT112(macro, data) MREPEAT111(macro, data) macro(111, data) -#define MREPEAT113(macro, data) MREPEAT112(macro, data) macro(112, data) -#define MREPEAT114(macro, data) MREPEAT113(macro, data) macro(113, data) -#define MREPEAT115(macro, data) MREPEAT114(macro, data) macro(114, data) -#define MREPEAT116(macro, data) MREPEAT115(macro, data) macro(115, data) -#define MREPEAT117(macro, data) MREPEAT116(macro, data) macro(116, data) -#define MREPEAT118(macro, data) MREPEAT117(macro, data) macro(117, data) -#define MREPEAT119(macro, data) MREPEAT118(macro, data) macro(118, data) -#define MREPEAT120(macro, data) MREPEAT119(macro, data) macro(119, data) -#define MREPEAT121(macro, data) MREPEAT120(macro, data) macro(120, data) -#define MREPEAT122(macro, data) MREPEAT121(macro, data) macro(121, data) -#define MREPEAT123(macro, data) MREPEAT122(macro, data) macro(122, data) -#define MREPEAT124(macro, data) MREPEAT123(macro, data) macro(123, data) -#define MREPEAT125(macro, data) MREPEAT124(macro, data) macro(124, data) -#define MREPEAT126(macro, data) MREPEAT125(macro, data) macro(125, data) -#define MREPEAT127(macro, data) MREPEAT126(macro, data) macro(126, data) -#define MREPEAT128(macro, data) MREPEAT127(macro, data) macro(127, data) -#define MREPEAT129(macro, data) MREPEAT128(macro, data) macro(128, data) -#define MREPEAT130(macro, data) MREPEAT129(macro, data) macro(129, data) -#define MREPEAT131(macro, data) MREPEAT130(macro, data) macro(130, data) -#define MREPEAT132(macro, data) MREPEAT131(macro, data) macro(131, data) -#define MREPEAT133(macro, data) MREPEAT132(macro, data) macro(132, data) -#define MREPEAT134(macro, data) MREPEAT133(macro, data) macro(133, data) -#define MREPEAT135(macro, data) MREPEAT134(macro, data) macro(134, data) -#define MREPEAT136(macro, data) MREPEAT135(macro, data) macro(135, data) -#define MREPEAT137(macro, data) MREPEAT136(macro, data) macro(136, data) -#define MREPEAT138(macro, data) MREPEAT137(macro, data) macro(137, data) -#define MREPEAT139(macro, data) MREPEAT138(macro, data) macro(138, data) -#define MREPEAT140(macro, data) MREPEAT139(macro, data) macro(139, data) -#define MREPEAT141(macro, data) MREPEAT140(macro, data) macro(140, data) -#define MREPEAT142(macro, data) MREPEAT141(macro, data) macro(141, data) -#define MREPEAT143(macro, data) MREPEAT142(macro, data) macro(142, data) -#define MREPEAT144(macro, data) MREPEAT143(macro, data) macro(143, data) -#define MREPEAT145(macro, data) MREPEAT144(macro, data) macro(144, data) -#define MREPEAT146(macro, data) MREPEAT145(macro, data) macro(145, data) -#define MREPEAT147(macro, data) MREPEAT146(macro, data) macro(146, data) -#define MREPEAT148(macro, data) MREPEAT147(macro, data) macro(147, data) -#define MREPEAT149(macro, data) MREPEAT148(macro, data) macro(148, data) -#define MREPEAT150(macro, data) MREPEAT149(macro, data) macro(149, data) -#define MREPEAT151(macro, data) MREPEAT150(macro, data) macro(150, data) -#define MREPEAT152(macro, data) MREPEAT151(macro, data) macro(151, data) -#define MREPEAT153(macro, data) MREPEAT152(macro, data) macro(152, data) -#define MREPEAT154(macro, data) MREPEAT153(macro, data) macro(153, data) -#define MREPEAT155(macro, data) MREPEAT154(macro, data) macro(154, data) -#define MREPEAT156(macro, data) MREPEAT155(macro, data) macro(155, data) -#define MREPEAT157(macro, data) MREPEAT156(macro, data) macro(156, data) -#define MREPEAT158(macro, data) MREPEAT157(macro, data) macro(157, data) -#define MREPEAT159(macro, data) MREPEAT158(macro, data) macro(158, data) -#define MREPEAT160(macro, data) MREPEAT159(macro, data) macro(159, data) -#define MREPEAT161(macro, data) MREPEAT160(macro, data) macro(160, data) -#define MREPEAT162(macro, data) MREPEAT161(macro, data) macro(161, data) -#define MREPEAT163(macro, data) MREPEAT162(macro, data) macro(162, data) -#define MREPEAT164(macro, data) MREPEAT163(macro, data) macro(163, data) -#define MREPEAT165(macro, data) MREPEAT164(macro, data) macro(164, data) -#define MREPEAT166(macro, data) MREPEAT165(macro, data) macro(165, data) -#define MREPEAT167(macro, data) MREPEAT166(macro, data) macro(166, data) -#define MREPEAT168(macro, data) MREPEAT167(macro, data) macro(167, data) -#define MREPEAT169(macro, data) MREPEAT168(macro, data) macro(168, data) -#define MREPEAT170(macro, data) MREPEAT169(macro, data) macro(169, data) -#define MREPEAT171(macro, data) MREPEAT170(macro, data) macro(170, data) -#define MREPEAT172(macro, data) MREPEAT171(macro, data) macro(171, data) -#define MREPEAT173(macro, data) MREPEAT172(macro, data) macro(172, data) -#define MREPEAT174(macro, data) MREPEAT173(macro, data) macro(173, data) -#define MREPEAT175(macro, data) MREPEAT174(macro, data) macro(174, data) -#define MREPEAT176(macro, data) MREPEAT175(macro, data) macro(175, data) -#define MREPEAT177(macro, data) MREPEAT176(macro, data) macro(176, data) -#define MREPEAT178(macro, data) MREPEAT177(macro, data) macro(177, data) -#define MREPEAT179(macro, data) MREPEAT178(macro, data) macro(178, data) -#define MREPEAT180(macro, data) MREPEAT179(macro, data) macro(179, data) -#define MREPEAT181(macro, data) MREPEAT180(macro, data) macro(180, data) -#define MREPEAT182(macro, data) MREPEAT181(macro, data) macro(181, data) -#define MREPEAT183(macro, data) MREPEAT182(macro, data) macro(182, data) -#define MREPEAT184(macro, data) MREPEAT183(macro, data) macro(183, data) -#define MREPEAT185(macro, data) MREPEAT184(macro, data) macro(184, data) -#define MREPEAT186(macro, data) MREPEAT185(macro, data) macro(185, data) -#define MREPEAT187(macro, data) MREPEAT186(macro, data) macro(186, data) -#define MREPEAT188(macro, data) MREPEAT187(macro, data) macro(187, data) -#define MREPEAT189(macro, data) MREPEAT188(macro, data) macro(188, data) -#define MREPEAT190(macro, data) MREPEAT189(macro, data) macro(189, data) -#define MREPEAT191(macro, data) MREPEAT190(macro, data) macro(190, data) -#define MREPEAT192(macro, data) MREPEAT191(macro, data) macro(191, data) -#define MREPEAT193(macro, data) MREPEAT192(macro, data) macro(192, data) -#define MREPEAT194(macro, data) MREPEAT193(macro, data) macro(193, data) -#define MREPEAT195(macro, data) MREPEAT194(macro, data) macro(194, data) -#define MREPEAT196(macro, data) MREPEAT195(macro, data) macro(195, data) -#define MREPEAT197(macro, data) MREPEAT196(macro, data) macro(196, data) -#define MREPEAT198(macro, data) MREPEAT197(macro, data) macro(197, data) -#define MREPEAT199(macro, data) MREPEAT198(macro, data) macro(198, data) -#define MREPEAT200(macro, data) MREPEAT199(macro, data) macro(199, data) -#define MREPEAT201(macro, data) MREPEAT200(macro, data) macro(200, data) -#define MREPEAT202(macro, data) MREPEAT201(macro, data) macro(201, data) -#define MREPEAT203(macro, data) MREPEAT202(macro, data) macro(202, data) -#define MREPEAT204(macro, data) MREPEAT203(macro, data) macro(203, data) -#define MREPEAT205(macro, data) MREPEAT204(macro, data) macro(204, data) -#define MREPEAT206(macro, data) MREPEAT205(macro, data) macro(205, data) -#define MREPEAT207(macro, data) MREPEAT206(macro, data) macro(206, data) -#define MREPEAT208(macro, data) MREPEAT207(macro, data) macro(207, data) -#define MREPEAT209(macro, data) MREPEAT208(macro, data) macro(208, data) -#define MREPEAT210(macro, data) MREPEAT209(macro, data) macro(209, data) -#define MREPEAT211(macro, data) MREPEAT210(macro, data) macro(210, data) -#define MREPEAT212(macro, data) MREPEAT211(macro, data) macro(211, data) -#define MREPEAT213(macro, data) MREPEAT212(macro, data) macro(212, data) -#define MREPEAT214(macro, data) MREPEAT213(macro, data) macro(213, data) -#define MREPEAT215(macro, data) MREPEAT214(macro, data) macro(214, data) -#define MREPEAT216(macro, data) MREPEAT215(macro, data) macro(215, data) -#define MREPEAT217(macro, data) MREPEAT216(macro, data) macro(216, data) -#define MREPEAT218(macro, data) MREPEAT217(macro, data) macro(217, data) -#define MREPEAT219(macro, data) MREPEAT218(macro, data) macro(218, data) -#define MREPEAT220(macro, data) MREPEAT219(macro, data) macro(219, data) -#define MREPEAT221(macro, data) MREPEAT220(macro, data) macro(220, data) -#define MREPEAT222(macro, data) MREPEAT221(macro, data) macro(221, data) -#define MREPEAT223(macro, data) MREPEAT222(macro, data) macro(222, data) -#define MREPEAT224(macro, data) MREPEAT223(macro, data) macro(223, data) -#define MREPEAT225(macro, data) MREPEAT224(macro, data) macro(224, data) -#define MREPEAT226(macro, data) MREPEAT225(macro, data) macro(225, data) -#define MREPEAT227(macro, data) MREPEAT226(macro, data) macro(226, data) -#define MREPEAT228(macro, data) MREPEAT227(macro, data) macro(227, data) -#define MREPEAT229(macro, data) MREPEAT228(macro, data) macro(228, data) -#define MREPEAT230(macro, data) MREPEAT229(macro, data) macro(229, data) -#define MREPEAT231(macro, data) MREPEAT230(macro, data) macro(230, data) -#define MREPEAT232(macro, data) MREPEAT231(macro, data) macro(231, data) -#define MREPEAT233(macro, data) MREPEAT232(macro, data) macro(232, data) -#define MREPEAT234(macro, data) MREPEAT233(macro, data) macro(233, data) -#define MREPEAT235(macro, data) MREPEAT234(macro, data) macro(234, data) -#define MREPEAT236(macro, data) MREPEAT235(macro, data) macro(235, data) -#define MREPEAT237(macro, data) MREPEAT236(macro, data) macro(236, data) -#define MREPEAT238(macro, data) MREPEAT237(macro, data) macro(237, data) -#define MREPEAT239(macro, data) MREPEAT238(macro, data) macro(238, data) -#define MREPEAT240(macro, data) MREPEAT239(macro, data) macro(239, data) -#define MREPEAT241(macro, data) MREPEAT240(macro, data) macro(240, data) -#define MREPEAT242(macro, data) MREPEAT241(macro, data) macro(241, data) -#define MREPEAT243(macro, data) MREPEAT242(macro, data) macro(242, data) -#define MREPEAT244(macro, data) MREPEAT243(macro, data) macro(243, data) -#define MREPEAT245(macro, data) MREPEAT244(macro, data) macro(244, data) -#define MREPEAT246(macro, data) MREPEAT245(macro, data) macro(245, data) -#define MREPEAT247(macro, data) MREPEAT246(macro, data) macro(246, data) -#define MREPEAT248(macro, data) MREPEAT247(macro, data) macro(247, data) -#define MREPEAT249(macro, data) MREPEAT248(macro, data) macro(248, data) -#define MREPEAT250(macro, data) MREPEAT249(macro, data) macro(249, data) -#define MREPEAT251(macro, data) MREPEAT250(macro, data) macro(250, data) -#define MREPEAT252(macro, data) MREPEAT251(macro, data) macro(251, data) -#define MREPEAT253(macro, data) MREPEAT252(macro, data) macro(252, data) -#define MREPEAT254(macro, data) MREPEAT253(macro, data) macro(253, data) -#define MREPEAT255(macro, data) MREPEAT254(macro, data) macro(254, data) -#define MREPEAT256(macro, data) MREPEAT255(macro, data) macro(255, data) - - -#endif // _MREPEAT_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h deleted file mode 100644 index 5b996ba..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h +++ /dev/null @@ -1,55 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _PREPROCESSOR_H_ -#define _PREPROCESSOR_H_ - -#include "tpaste.h" -#include "stringz.h" -#include "mrepeat.h" - - -#endif // _PREPROCESSOR_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h deleted file mode 100644 index 3528ea0..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h +++ /dev/null @@ -1,75 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor stringizing utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _STRINGZ_H_ -#define _STRINGZ_H_ - - -/*! \brief Stringize. - * - * Stringize a preprocessing token, this token being allowed to be \#defined. - * - * May be used only within macros with the token passed as an argument if the token is \#defined. - * - * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN) - * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to - * writing "A0". - */ -#define STRINGZ(x) #x - -/*! \brief Absolute stringize. - * - * Stringize a preprocessing token, this token being allowed to be \#defined. - * - * No restriction of use if the token is \#defined. - * - * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is - * equivalent to writing "A0". - */ -#define ASTRINGZ(x) STRINGZ(x) - - -#endif // _STRINGZ_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h deleted file mode 100644 index a5d7bee..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h +++ /dev/null @@ -1,95 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor token pasting utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _TPASTE_H_ -#define _TPASTE_H_ - - -/*! \name Token Paste - * - * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. - * - * May be used only within macros with the tokens passed as arguments if the tokens are \#defined. - * - * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by - * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is - * equivalent to writing U32. - */ -//! @{ -#define TPASTE2( a, b) a##b -#define TPASTE3( a, b, c) a##b##c -#define TPASTE4( a, b, c, d) a##b##c##d -#define TPASTE5( a, b, c, d, e) a##b##c##d##e -#define TPASTE6( a, b, c, d, e, f) a##b##c##d##e##f -#define TPASTE7( a, b, c, d, e, f, g) a##b##c##d##e##f##g -#define TPASTE8( a, b, c, d, e, f, g, h) a##b##c##d##e##f##g##h -#define TPASTE9( a, b, c, d, e, f, g, h, i) a##b##c##d##e##f##g##h##i -#define TPASTE10(a, b, c, d, e, f, g, h, i, j) a##b##c##d##e##f##g##h##i##j -//! @} - -/*! \name Absolute Token Paste - * - * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. - * - * No restriction of use if the tokens are \#defined. - * - * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined - * as 32 is equivalent to writing U32. - */ -//! @{ -#define ATPASTE2( a, b) TPASTE2( a, b) -#define ATPASTE3( a, b, c) TPASTE3( a, b, c) -#define ATPASTE4( a, b, c, d) TPASTE4( a, b, c, d) -#define ATPASTE5( a, b, c, d, e) TPASTE5( a, b, c, d, e) -#define ATPASTE6( a, b, c, d, e, f) TPASTE6( a, b, c, d, e, f) -#define ATPASTE7( a, b, c, d, e, f, g) TPASTE7( a, b, c, d, e, f, g) -#define ATPASTE8( a, b, c, d, e, f, g, h) TPASTE8( a, b, c, d, e, f, g, h) -#define ATPASTE9( a, b, c, d, e, f, g, h, i) TPASTE9( a, b, c, d, e, f, g, h, i) -#define ATPASTE10(a, b, c, d, e, f, g, h, i, j) TPASTE10(a, b, c, d, e, f, g, h, i, j) -//! @} - - -#endif // _TPASTE_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x deleted file mode 100644 index 23b658b..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x +++ /dev/null @@ -1,121 +0,0 @@ -/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AVR32UC C runtime startup file. - * - * This file has been built from the Newlib crt0.S. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32UC devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include - - -//! @{ -//! \verbatim - - - // This must be linked @ 0x80000000 if it is to be run upon reset. - .section .reset, "ax", @progbits - - - .global _start - .type _start, @function -_start: - // Jump to the C runtime startup routine. - lda.w pc, _stext - - - // _stext is placed outside the .reset section so that the program entry point - // can be changed without affecting the C runtime startup. - .section .text._stext, "ax", @progbits - - - .global _stext - .type _stext, @function -_stext: - // Set initial stack pointer. - lda.w sp, _estack - - // Set up EVBA so interrupts can be enabled. - lda.w r0, _evba - mtsr AVR32_EVBA, r0 - - // Enable the exception processing. - csrf AVR32_SR_EM_OFFSET - - // Load initialized data having a global lifetime from the data LMA. - lda.w r0, _data - lda.w r1, _edata - cp r0, r1 - brhs idata_load_loop_end - lda.w r2, _data_lma -idata_load_loop: - ld.d r4, r2++ - st.d r0++, r4 - cp r0, r1 - brlo idata_load_loop -idata_load_loop_end: - - // Clear uninitialized data having a global lifetime in the blank static storage section. - lda.w r0, __bss_start - lda.w r1, _end - cp r0, r1 - brhs udata_clear_loop_end - mov r2, 0 - mov r3, 0 -udata_clear_loop: - st.d r0++, r2 - cp r0, r1 - brlo udata_clear_loop -udata_clear_loop_end: - -#ifdef CONFIG_FRAME_POINTER - // Safety: Set the default "return" @ to the exit routine address. - lda.w lr, exit -#endif - - // Start the show. - lda.w pc, main - - -//! \endverbatim -//! @} diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h deleted file mode 100644 index 885be7f..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h +++ /dev/null @@ -1,1145 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Compiler file for AVR32. - * - * This file defines commonly used types and macros. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _COMPILER_H_ -#define _COMPILER_H_ - -#if ((defined __GNUC__) && (defined __AVR32__)) || (defined __ICCAVR32__ || defined __AAVR32__) -# include -#endif -#if (defined __ICCAVR32__) -# include -#endif -#include "preprocessor.h" - -#include "parts.h" - - -//_____ D E C L A R A T I O N S ____________________________________________ - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -#include -#include - - -#if (defined __ICCAVR32__) - -/*! \name Compiler Keywords - * - * Port of some keywords from GNU GCC for AVR32 to IAR Embedded Workbench for Atmel AVR32. - */ -//! @{ -#define __asm__ asm -#define __inline__ inline -#define __volatile__ -//! @} - -#endif - - -/*! \name Usual Types - */ -//! @{ -typedef unsigned char Bool; //!< Boolean. -#ifndef __cplusplus -#if !defined(__bool_true_false_are_defined) -typedef unsigned char bool; //!< Boolean. -#endif -#endif -typedef signed char S8 ; //!< 8-bit signed integer. -typedef unsigned char U8 ; //!< 8-bit unsigned integer. -typedef signed short int S16; //!< 16-bit signed integer. -typedef unsigned short int U16; //!< 16-bit unsigned integer. -typedef signed long int S32; //!< 32-bit signed integer. -typedef unsigned long int U32; //!< 32-bit unsigned integer. -typedef signed long long int S64; //!< 64-bit signed integer. -typedef unsigned long long int U64; //!< 64-bit unsigned integer. -typedef float F32; //!< 32-bit floating-point number. -typedef double F64; //!< 64-bit floating-point number. -//! @} - - -/*! \name Status Types - */ -//! @{ -typedef Bool Status_bool_t; //!< Boolean status. -typedef U8 Status_t; //!< 8-bit-coded status. -//! @} - - -/*! \name Aliasing Aggregate Types - */ -//! @{ - -//! 16-bit union. -typedef union -{ - S16 s16 ; - U16 u16 ; - S8 s8 [2]; - U8 u8 [2]; -} Union16; - -//! 32-bit union. -typedef union -{ - S32 s32 ; - U32 u32 ; - S16 s16[2]; - U16 u16[2]; - S8 s8 [4]; - U8 u8 [4]; -} Union32; - -//! 64-bit union. -typedef union -{ - S64 s64 ; - U64 u64 ; - S32 s32[2]; - U32 u32[2]; - S16 s16[4]; - U16 u16[4]; - S8 s8 [8]; - U8 u8 [8]; -} Union64; - -//! Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - S64 *s64ptr; - U64 *u64ptr; - S32 *s32ptr; - U32 *u32ptr; - S16 *s16ptr; - U16 *u16ptr; - S8 *s8ptr ; - U8 *u8ptr ; -} UnionPtr; - -//! Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - volatile S64 *s64ptr; - volatile U64 *u64ptr; - volatile S32 *s32ptr; - volatile U32 *u32ptr; - volatile S16 *s16ptr; - volatile U16 *u16ptr; - volatile S8 *s8ptr ; - volatile U8 *u8ptr ; -} UnionVPtr; - -//! Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - const S64 *s64ptr; - const U64 *u64ptr; - const S32 *s32ptr; - const U32 *u32ptr; - const S16 *s16ptr; - const U16 *u16ptr; - const S8 *s8ptr ; - const U8 *u8ptr ; -} UnionCPtr; - -//! Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - const volatile S64 *s64ptr; - const volatile U64 *u64ptr; - const volatile S32 *s32ptr; - const volatile U32 *u32ptr; - const volatile S16 *s16ptr; - const volatile U16 *u16ptr; - const volatile S8 *s8ptr ; - const volatile U8 *u8ptr ; -} UnionCVPtr; - -//! Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - S64 *s64ptr; - U64 *u64ptr; - S32 *s32ptr; - U32 *u32ptr; - S16 *s16ptr; - U16 *u16ptr; - S8 *s8ptr ; - U8 *u8ptr ; -} StructPtr; - -//! Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - volatile S64 *s64ptr; - volatile U64 *u64ptr; - volatile S32 *s32ptr; - volatile U32 *u32ptr; - volatile S16 *s16ptr; - volatile U16 *u16ptr; - volatile S8 *s8ptr ; - volatile U8 *u8ptr ; -} StructVPtr; - -//! Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - const S64 *s64ptr; - const U64 *u64ptr; - const S32 *s32ptr; - const U32 *u32ptr; - const S16 *s16ptr; - const U16 *u16ptr; - const S8 *s8ptr ; - const U8 *u8ptr ; -} StructCPtr; - -//! Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - const volatile S64 *s64ptr; - const volatile U64 *u64ptr; - const volatile S32 *s32ptr; - const volatile U32 *u32ptr; - const volatile S16 *s16ptr; - const volatile U16 *u16ptr; - const volatile S8 *s8ptr ; - const volatile U8 *u8ptr ; -} StructCVPtr; - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -//_____ M A C R O S ________________________________________________________ - -/*! \name Usual Constants - */ -//! @{ -#define DISABLE 0 -#define ENABLE 1 -#define DISABLED 0 -#define ENABLED 1 -#define OFF 0 -#define ON 1 -#define FALSE 0 -#define TRUE 1 -#ifndef __cplusplus -#if !defined(__bool_true_false_are_defined) -#define false FALSE -#define true TRUE -#endif -#endif -#define KO 0 -#define OK 1 -#define PASS 0 -#define FAIL 1 -#define LOW 0 -#define HIGH 1 -#define CLR 0 -#define SET 1 -//! @} - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -/*! \name Bit-Field Handling - */ -//! @{ - -/*! \brief Reads the bits of a value specified by a given bit-mask. - * - * \param value Value to read bits from. - * \param mask Bit-mask indicating bits to read. - * - * \return Read bits. - */ -#define Rd_bits( value, mask) ((value) & (mask)) - -/*! \brief Writes the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue to write bits to. - * \param mask Bit-mask indicating bits to write. - * \param bits Bits to write. - * - * \return Resulting value with written bits. - */ -#define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) |\ - ((bits ) & (mask))) - -/*! \brief Tests the bits of a value specified by a given bit-mask. - * - * \param value Value of which to test bits. - * \param mask Bit-mask indicating bits to test. - * - * \return \c 1 if at least one of the tested bits is set, else \c 0. - */ -#define Tst_bits( value, mask) (Rd_bits(value, mask) != 0) - -/*! \brief Clears the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to clear bits. - * \param mask Bit-mask indicating bits to clear. - * - * \return Resulting value with cleared bits. - */ -#define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask)) - -/*! \brief Sets the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to set bits. - * \param mask Bit-mask indicating bits to set. - * - * \return Resulting value with set bits. - */ -#define Set_bits(lvalue, mask) ((lvalue) |= (mask)) - -/*! \brief Toggles the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to toggle bits. - * \param mask Bit-mask indicating bits to toggle. - * - * \return Resulting value with toggled bits. - */ -#define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask)) - -/*! \brief Reads the bit-field of a value specified by a given bit-mask. - * - * \param value Value to read a bit-field from. - * \param mask Bit-mask indicating the bit-field to read. - * - * \return Read bit-field. - */ -#define Rd_bitfield( value, mask) (Rd_bits( value, mask) >> ctz(mask)) - -/*! \brief Writes the bit-field of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue to write a bit-field to. - * \param mask Bit-mask indicating the bit-field to write. - * \param bitfield Bit-field to write. - * - * \return Resulting value with written bit-field. - */ -#define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (U32)(bitfield) << ctz(mask))) - -//! @} - - -/*! \brief This macro is used to test fatal errors. - * - * The macro tests if the expression is FALSE. If it is, a fatal error is - * detected and the application hangs up. - * - * \param expr Expression to evaluate and supposed to be nonzero. - */ -#ifdef _ASSERT_ENABLE_ - #define Assert(expr) \ - {\ - if (!(expr)) while (TRUE);\ - } -#else - #define Assert(expr) -#endif - - -/*! \name Zero-Bit Counting - * - * Under AVR32-GCC, __builtin_clz and __builtin_ctz behave like macros when - * applied to constant expressions (values known at compile time), so they are - * more optimized than the use of the corresponding assembly instructions and - * they can be used as constant expressions e.g. to initialize objects having - * static storage duration, and like the corresponding assembly instructions - * when applied to non-constant expressions (values unknown at compile time), so - * they are more optimized than an assembly periphrasis. Hence, clz and ctz - * ensure a possible and optimized behavior for both constant and non-constant - * expressions. - */ -//! @{ - -/*! \brief Counts the leading zero bits of the given value considered as a 32-bit integer. - * - * \param u Value of which to count the leading zero bits. - * - * \return The count of leading zero bits in \a u. - */ -#if (defined __GNUC__) - #define clz(u) __builtin_clz(u) -#elif (defined __ICCAVR32__) - #define clz(u) __count_leading_zeros(u) -#endif - -/*! \brief Counts the trailing zero bits of the given value considered as a 32-bit integer. - * - * \param u Value of which to count the trailing zero bits. - * - * \return The count of trailing zero bits in \a u. - */ -#if (defined __GNUC__) - #define ctz(u) __builtin_ctz(u) -#elif (defined __ICCAVR32__) - #define ctz(u) __count_trailing_zeros(u) -#endif - -//! @} - - -/*! \name Bit Reversing - */ -//! @{ - -/*! \brief Reverses the bits of \a u8. - * - * \param u8 U8 of which to reverse the bits. - * - * \return Value resulting from \a u8 with reversed bits. - */ -#define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24)) - -/*! \brief Reverses the bits of \a u16. - * - * \param u16 U16 of which to reverse the bits. - * - * \return Value resulting from \a u16 with reversed bits. - */ -#define bit_reverse16(u16) ((U16)(bit_reverse32((U16)(u16)) >> 16)) - -/*! \brief Reverses the bits of \a u32. - * - * \param u32 U32 of which to reverse the bits. - * - * \return Value resulting from \a u32 with reversed bits. - */ -#if (defined __GNUC__) - #define bit_reverse32(u32) \ - (\ - {\ - unsigned int __value = (U32)(u32);\ - __asm__ ("brev\t%0" : "+r" (__value) : : "cc");\ - (U32)__value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define bit_reverse32(u32) ((U32)__bit_reverse((U32)(u32))) -#endif - -/*! \brief Reverses the bits of \a u64. - * - * \param u64 U64 of which to reverse the bits. - * - * \return Value resulting from \a u64 with reversed bits. - */ -#define bit_reverse64(u64) ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\ - ((U64)bit_reverse32((U64)(u64)) << 32))) - -//! @} - - -/*! \name Alignment - */ -//! @{ - -/*! \brief Tests alignment of the number \a val with the \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0. - */ -#define Test_align(val, n ) (!Tst_bits( val, (n) - 1 ) ) - -/*! \brief Gets alignment of the number \a val with respect to the \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Alignment of the number \a val with respect to the \a n boundary. - */ -#define Get_align( val, n ) ( Rd_bits( val, (n) - 1 ) ) - -/*! \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary. - * - * \param lval Input/output lvalue. - * \param n Boundary. - * \param alg Alignment. - * - * \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary. - */ -#define Set_align(lval, n, alg) ( Wr_bits(lval, (n) - 1, alg) ) - -/*! \brief Aligns the number \a val with the upper \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Value resulting from the number \a val aligned with the upper \a n boundary. - */ -#define Align_up( val, n ) (((val) + ((n) - 1)) & ~((n) - 1)) - -/*! \brief Aligns the number \a val with the lower \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Value resulting from the number \a val aligned with the lower \a n boundary. - */ -#define Align_down(val, n ) ( (val) & ~((n) - 1)) - -//! @} - - -/*! \name Mathematics - * - * The same considerations as for clz and ctz apply here but AVR32-GCC does not - * provide built-in functions to access the assembly instructions abs, min and - * max and it does not produce them by itself in most cases, so two sets of - * macros are defined here: - * - Abs, Min and Max to apply to constant expressions (values known at - * compile time); - * - abs, min and max to apply to non-constant expressions (values unknown at - * compile time). - */ -//! @{ - -/*! \brief Takes the absolute value of \a a. - * - * \param a Input value. - * - * \return Absolute value of \a a. - * - * \note More optimized if only used with values known at compile time. - */ -#define Abs(a) (((a) < 0 ) ? -(a) : (a)) - -/*! \brief Takes the minimal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Minimal value of \a a and \a b. - * - * \note More optimized if only used with values known at compile time. - */ -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -/*! \brief Takes the maximal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Maximal value of \a a and \a b. - * - * \note More optimized if only used with values known at compile time. - */ -#define Max(a, b) (((a) > (b)) ? (a) : (b)) - -/*! \brief Takes the absolute value of \a a. - * - * \param a Input value. - * - * \return Absolute value of \a a. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define abs(a) \ - (\ - {\ - int __value = (a);\ - __asm__ ("abs\t%0" : "+r" (__value) : : "cc");\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define abs(a) Abs(a) -#endif - -/*! \brief Takes the minimal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Minimal value of \a a and \a b. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define min(a, b) \ - (\ - {\ - int __value, __arg_a = (a), __arg_b = (b);\ - __asm__ ("min\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define min(a, b) __min(a, b) -#endif - -/*! \brief Takes the maximal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Maximal value of \a a and \a b. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define max(a, b) \ - (\ - {\ - int __value, __arg_a = (a), __arg_b = (b);\ - __asm__ ("max\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define max(a, b) __max(a, b) -#endif - -//! @} - - -/*! \brief Calls the routine at address \a addr. - * - * It generates a long call opcode. - * - * For example, `Long_call(0x80000000)' generates a software reset on a UC3 if - * it is invoked from the CPU supervisor mode. - * - * \param addr Address of the routine to call. - * - * \note It may be used as a long jump opcode in some special cases. - */ -#define Long_call(addr) ((*(void (*)(void))(addr))()) - -/*! \brief Resets the CPU by software. - * - * \warning It shall not be called from the CPU application mode. - */ -#if (defined __GNUC__) - #define Reset_CPU() \ - (\ - {\ - __asm__ __volatile__ (\ - "lddpc r9, 3f\n\t"\ - "mfsr r8, %[SR]\n\t"\ - "bfextu r8, r8, %[SR_M_OFFSET], %[SR_M_SIZE]\n\t"\ - "cp.w r8, 0b001\n\t"\ - "breq 0f\n\t"\ - "sub r8, pc, $ - 1f\n\t"\ - "pushm r8-r9\n\t"\ - "rete\n"\ - "0:\n\t"\ - "mtsr %[SR], r9\n"\ - "1:\n\t"\ - "mov r0, 0\n\t"\ - "mov r1, 0\n\t"\ - "mov r2, 0\n\t"\ - "mov r3, 0\n\t"\ - "mov r4, 0\n\t"\ - "mov r5, 0\n\t"\ - "mov r6, 0\n\t"\ - "mov r7, 0\n\t"\ - "mov r8, 0\n\t"\ - "mov r9, 0\n\t"\ - "mov r10, 0\n\t"\ - "mov r11, 0\n\t"\ - "mov r12, 0\n\t"\ - "mov sp, 0\n\t"\ - "stdsp sp[0], sp\n\t"\ - "ldmts sp, sp\n\t"\ - "mov lr, 0\n\t"\ - "lddpc pc, 2f\n\t"\ - ".balign 4\n"\ - "2:\n\t"\ - ".word _start\n"\ - "3:\n\t"\ - ".word %[RESET_SR]"\ - :\ - : [SR] "i" (AVR32_SR),\ - [SR_M_OFFSET] "i" (AVR32_SR_M_OFFSET),\ - [SR_M_SIZE] "i" (AVR32_SR_M_SIZE),\ - [RESET_SR] "i" (AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))\ - );\ - }\ - ) -#elif (defined __ICCAVR32__) - #define Reset_CPU() \ - {\ - extern void *volatile __program_start;\ - __asm__ __volatile__ (\ - "mov r7, LWRD(__program_start)\n\t"\ - "orh r7, HWRD(__program_start)\n\t"\ - "mov r9, LWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\ - "orh r9, HWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\ - "mfsr r8, "ASTRINGZ(AVR32_SR)"\n\t"\ - "bfextu r8, r8, "ASTRINGZ(AVR32_SR_M_OFFSET)", "ASTRINGZ(AVR32_SR_M_SIZE)"\n\t"\ - "cp.w r8, 001b\n\t"\ - "breq $ + 10\n\t"\ - "sub r8, pc, -12\n\t"\ - "pushm r8-r9\n\t"\ - "rete\n\t"\ - "mtsr "ASTRINGZ(AVR32_SR)", r9\n\t"\ - "mov r0, 0\n\t"\ - "mov r1, 0\n\t"\ - "mov r2, 0\n\t"\ - "mov r3, 0\n\t"\ - "mov r4, 0\n\t"\ - "mov r5, 0\n\t"\ - "mov r6, 0\n\t"\ - "st.w r0[4], r7\n\t"\ - "mov r7, 0\n\t"\ - "mov r8, 0\n\t"\ - "mov r9, 0\n\t"\ - "mov r10, 0\n\t"\ - "mov r11, 0\n\t"\ - "mov r12, 0\n\t"\ - "mov sp, 0\n\t"\ - "stdsp sp[0], sp\n\t"\ - "ldmts sp, sp\n\t"\ - "mov lr, 0\n\t"\ - "ld.w pc, lr[4]"\ - );\ - __program_start;\ - } -#endif - - -/*! \name System Register Access - */ -//! @{ - -/*! \brief Gets the value of the \a sysreg system register. - * - * \param sysreg Address of the system register of which to get the value. - * - * \return Value of the \a sysreg system register. - */ -#if (defined __GNUC__) - #define Get_system_register(sysreg) __builtin_mfsr(sysreg) -#elif (defined __ICCAVR32__) - #define Get_system_register(sysreg) __get_system_register(sysreg) -#endif - -/*! \brief Sets the value of the \a sysreg system register to \a value. - * - * \param sysreg Address of the system register of which to set the value. - * \param value Value to set the \a sysreg system register to. - */ -#if (defined __GNUC__) - #define Set_system_register(sysreg, value) __builtin_mtsr(sysreg, value) -#elif (defined __ICCAVR32__) - #define Set_system_register(sysreg, value) __set_system_register(sysreg, value) -#endif - -//! @} - - -/*! \name CPU Status Register Access - */ -//! @{ - -/*! \brief Tells whether exceptions are globally enabled. - * - * \return \c 1 if exceptions are globally enabled, else \c 0. - */ -#define Is_global_exception_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_EM_MASK)) - -/*! \brief Disables exceptions globally. - */ -#if (defined __GNUC__) - #define Disable_global_exception() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Disable_global_exception() (__set_status_flag(AVR32_SR_EM_OFFSET)) -#endif - -/*! \brief Enables exceptions globally. - */ -#if (defined __GNUC__) - #define Enable_global_exception() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Enable_global_exception() (__clear_status_flag(AVR32_SR_EM_OFFSET)) -#endif - -/*! \brief Tells whether interrupts are globally enabled. - * - * \return \c 1 if interrupts are globally enabled, else \c 0. - */ -#define Is_global_interrupt_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_GM_MASK)) - -/*! \brief Disables interrupts globally. - */ -#if (defined __GNUC__) - #define Disable_global_interrupt() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Disable_global_interrupt() (__disable_interrupt()) -#endif - -/*! \brief Enables interrupts globally. - */ -#if (defined __GNUC__) - #define Enable_global_interrupt() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Enable_global_interrupt() (__enable_interrupt()) -#endif - -/*! \brief Tells whether interrupt level \a int_level is enabled. - * - * \param int_level Interrupt level (0 to 3). - * - * \return \c 1 if interrupt level \a int_level is enabled, else \c 0. - */ -#define Is_interrupt_level_enabled(int_level) (!Tst_bits(Get_system_register(AVR32_SR), TPASTE3(AVR32_SR_I, int_level, M_MASK))) - -/*! \brief Disables interrupt level \a int_level. - * - * \param int_level Interrupt level to disable (0 to 3). - */ -#if (defined __GNUC__) - #define Disable_interrupt_level(int_level) ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));}) -#elif (defined __ICCAVR32__) - #define Disable_interrupt_level(int_level) (__set_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET))) -#endif - -/*! \brief Enables interrupt level \a int_level. - * - * \param int_level Interrupt level to enable (0 to 3). - */ -#if (defined __GNUC__) - #define Enable_interrupt_level(int_level) ({__asm__ __volatile__ ("csrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));}) -#elif (defined __ICCAVR32__) - #define Enable_interrupt_level(int_level) (__clear_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET))) -#endif - -/*! \brief Protects subsequent code from interrupts. - */ -#define AVR32_ENTER_CRITICAL_REGION( ) \ - { \ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \ - Disable_global_interrupt(); // Disable the appropriate interrupts. - -/*! \brief This macro must always be used in conjunction with AVR32_ENTER_CRITICAL_REGION - * so that interrupts are enabled again. - */ -#define AVR32_LEAVE_CRITICAL_REGION( ) \ - if (global_interrupt_enabled) Enable_global_interrupt(); \ - } - -//! @} - - -/*! \name Debug Register Access - */ -//! @{ - -/*! \brief Gets the value of the \a dbgreg debug register. - * - * \param dbgreg Address of the debug register of which to get the value. - * - * \return Value of the \a dbgreg debug register. - */ -#if (defined __GNUC__) - #define Get_debug_register(dbgreg) __builtin_mfdr(dbgreg) -#elif (defined __ICCAVR32__) - #define Get_debug_register(dbgreg) __get_debug_register(dbgreg) -#endif - -/*! \brief Sets the value of the \a dbgreg debug register to \a value. - * - * \param dbgreg Address of the debug register of which to set the value. - * \param value Value to set the \a dbgreg debug register to. - */ -#if (defined __GNUC__) - #define Set_debug_register(dbgreg, value) __builtin_mtdr(dbgreg, value) -#elif (defined __ICCAVR32__) - #define Set_debug_register(dbgreg, value) __set_debug_register(dbgreg, value) -#endif - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -//! Boolean evaluating MCU little endianism. -#if ((defined __GNUC__) && (defined __AVR32__)) || ((defined __ICCAVR32__) || (defined __AAVR32__)) - #define LITTLE_ENDIAN_MCU FALSE -#else - #error If you are here, you should check what is exactly the processor you are using... - #define LITTLE_ENDIAN_MCU FALSE -#endif - -// Check that MCU endianism is correctly defined. -#ifndef LITTLE_ENDIAN_MCU - #error YOU MUST define the MCU endianism with LITTLE_ENDIAN_MCU: either FALSE or TRUE -#endif - -//! Boolean evaluating MCU big endianism. -#define BIG_ENDIAN_MCU (!LITTLE_ENDIAN_MCU) - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -/*! \name MCU Endianism Handling - */ -//! @{ - -#if (LITTLE_ENDIAN_MCU==TRUE) - #define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16. - #define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16. - - #define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32. - #define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32. - #define LSB0W(u32) (((U8 *)&(u32))[0]) //!< Least significant byte of 1st rank of \a u32. - #define LSB1W(u32) (((U8 *)&(u32))[1]) //!< Least significant byte of 2nd rank of \a u32. - #define LSB2W(u32) (((U8 *)&(u32))[2]) //!< Least significant byte of 3rd rank of \a u32. - #define LSB3W(u32) (((U8 *)&(u32))[3]) //!< Least significant byte of 4th rank of \a u32. - #define MSB3W(u32) LSB0W(u32) //!< Most significant byte of 4th rank of \a u32. - #define MSB2W(u32) LSB1W(u32) //!< Most significant byte of 3rd rank of \a u32. - #define MSB1W(u32) LSB2W(u32) //!< Most significant byte of 2nd rank of \a u32. - #define MSB0W(u32) LSB3W(u32) //!< Most significant byte of 1st rank of \a u32. - - #define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64. - #define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64. - #define LSH0(u64) (((U16 *)&(u64))[0]) //!< Least significant half-word of 1st rank of \a u64. - #define LSH1(u64) (((U16 *)&(u64))[1]) //!< Least significant half-word of 2nd rank of \a u64. - #define LSH2(u64) (((U16 *)&(u64))[2]) //!< Least significant half-word of 3rd rank of \a u64. - #define LSH3(u64) (((U16 *)&(u64))[3]) //!< Least significant half-word of 4th rank of \a u64. - #define MSH3(u64) LSH0(u64) //!< Most significant half-word of 4th rank of \a u64. - #define MSH2(u64) LSH1(u64) //!< Most significant half-word of 3rd rank of \a u64. - #define MSH1(u64) LSH2(u64) //!< Most significant half-word of 2nd rank of \a u64. - #define MSH0(u64) LSH3(u64) //!< Most significant half-word of 1st rank of \a u64. - #define LSB0D(u64) (((U8 *)&(u64))[0]) //!< Least significant byte of 1st rank of \a u64. - #define LSB1D(u64) (((U8 *)&(u64))[1]) //!< Least significant byte of 2nd rank of \a u64. - #define LSB2D(u64) (((U8 *)&(u64))[2]) //!< Least significant byte of 3rd rank of \a u64. - #define LSB3D(u64) (((U8 *)&(u64))[3]) //!< Least significant byte of 4th rank of \a u64. - #define LSB4D(u64) (((U8 *)&(u64))[4]) //!< Least significant byte of 5th rank of \a u64. - #define LSB5D(u64) (((U8 *)&(u64))[5]) //!< Least significant byte of 6th rank of \a u64. - #define LSB6D(u64) (((U8 *)&(u64))[6]) //!< Least significant byte of 7th rank of \a u64. - #define LSB7D(u64) (((U8 *)&(u64))[7]) //!< Least significant byte of 8th rank of \a u64. - #define MSB7D(u64) LSB0D(u64) //!< Most significant byte of 8th rank of \a u64. - #define MSB6D(u64) LSB1D(u64) //!< Most significant byte of 7th rank of \a u64. - #define MSB5D(u64) LSB2D(u64) //!< Most significant byte of 6th rank of \a u64. - #define MSB4D(u64) LSB3D(u64) //!< Most significant byte of 5th rank of \a u64. - #define MSB3D(u64) LSB4D(u64) //!< Most significant byte of 4th rank of \a u64. - #define MSB2D(u64) LSB5D(u64) //!< Most significant byte of 3rd rank of \a u64. - #define MSB1D(u64) LSB6D(u64) //!< Most significant byte of 2nd rank of \a u64. - #define MSB0D(u64) LSB7D(u64) //!< Most significant byte of 1st rank of \a u64. - -#elif (BIG_ENDIAN_MCU==TRUE) - #define MSB(u16) (((U8 *)&(u16))[0]) //!< Most significant byte of \a u16. - #define LSB(u16) (((U8 *)&(u16))[1]) //!< Least significant byte of \a u16. - - #define MSH(u32) (((U16 *)&(u32))[0]) //!< Most significant half-word of \a u32. - #define LSH(u32) (((U16 *)&(u32))[1]) //!< Least significant half-word of \a u32. - #define MSB0W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 1st rank of \a u32. - #define MSB1W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 2nd rank of \a u32. - #define MSB2W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 3rd rank of \a u32. - #define MSB3W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 4th rank of \a u32. - #define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32. - #define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32. - #define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32. - #define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32. - - #define MSW(u64) (((U32 *)&(u64))[0]) //!< Most significant word of \a u64. - #define LSW(u64) (((U32 *)&(u64))[1]) //!< Least significant word of \a u64. - #define MSH0(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 1st rank of \a u64. - #define MSH1(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 2nd rank of \a u64. - #define MSH2(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 3rd rank of \a u64. - #define MSH3(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 4th rank of \a u64. - #define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64. - #define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64. - #define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64. - #define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64. - #define MSB0D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 1st rank of \a u64. - #define MSB1D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 2nd rank of \a u64. - #define MSB2D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 3rd rank of \a u64. - #define MSB3D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 4th rank of \a u64. - #define MSB4D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 5th rank of \a u64. - #define MSB5D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 6th rank of \a u64. - #define MSB6D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 7th rank of \a u64. - #define MSB7D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 8th rank of \a u64. - #define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64. - #define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64. - #define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64. - #define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64. - #define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64. - #define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64. - #define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64. - #define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64. - -#else - #error Unknown endianism. -#endif - -//! @} - - -/*! \name Endianism Conversion - * - * The same considerations as for clz and ctz apply here but AVR32-GCC's - * __builtin_bswap_16 and __builtin_bswap_32 do not behave like macros when - * applied to constant expressions, so two sets of macros are defined here: - * - Swap16, Swap32 and Swap64 to apply to constant expressions (values known - * at compile time); - * - swap16, swap32 and swap64 to apply to non-constant expressions (values - * unknown at compile time). - */ -//! @{ - -/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). - * - * \param u16 U16 of which to toggle the endianism. - * - * \return Value resulting from \a u16 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\ - ((U16)(u16) << 8))) - -/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). - * - * \param u32 U32 of which to toggle the endianism. - * - * \return Value resulting from \a u32 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\ - ((U32)Swap16((U32)(u32)) << 16))) - -/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). - * - * \param u64 U64 of which to toggle the endianism. - * - * \return Value resulting from \a u64 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\ - ((U64)Swap32((U64)(u64)) << 32))) - -/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). - * - * \param u16 U16 of which to toggle the endianism. - * - * \return Value resulting from \a u16 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define swap16(u16) ((U16)__builtin_bswap_16((U16)(u16))) -#elif (defined __ICCAVR32__) - #define swap16(u16) ((U16)__swap_bytes_in_halfwords((U16)(u16))) -#endif - -/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). - * - * \param u32 U32 of which to toggle the endianism. - * - * \return Value resulting from \a u32 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define swap32(u32) ((U32)__builtin_bswap_32((U32)(u32))) -#elif (defined __ICCAVR32__) - #define swap32(u32) ((U32)__swap_bytes((U32)(u32))) -#endif - -/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). - * - * \param u64 U64 of which to toggle the endianism. - * - * \return Value resulting from \a u64 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#define swap64(u64) ((U64)(((U64)swap32((U64)(u64) >> 32)) |\ - ((U64)swap32((U64)(u64)) << 32))) - -//! @} - - -/*! \name Target Abstraction - */ -//! @{ - -#define _GLOBEXT_ extern //!< extern storage-class specifier. -#define _CONST_TYPE_ const //!< const type qualifier. -#define _MEM_TYPE_SLOW_ //!< Slow memory type. -#define _MEM_TYPE_MEDFAST_ //!< Fairly fast memory type. -#define _MEM_TYPE_FAST_ //!< Fast memory type. - -typedef U8 Byte; //!< 8-bit unsigned integer. - -#define memcmp_ram2ram memcmp //!< Target-specific memcmp of RAM to RAM. -#define memcmp_code2ram memcmp //!< Target-specific memcmp of RAM to NVRAM. -#define memcpy_ram2ram memcpy //!< Target-specific memcpy from RAM to RAM. -#define memcpy_code2ram memcpy //!< Target-specific memcpy from NVRAM to RAM. - -#define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32. -#define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32. -#define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32. -#define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32. -#define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32. -#define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32. -#define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32. -#define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32. - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -#endif // _COMPILER_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h deleted file mode 100644 index ca516ee..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h +++ /dev/null @@ -1,136 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ****************************************************************** - * - * \brief ISP configuration file. - * - * This file contains the possible external configuration of the ISP. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USB module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ***************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CONF_ISP_H_ -#define _CONF_ISP_H_ - -#include -#include "compiler.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -#define PRODUCT_MANUFACTURER_ID 0x58 -#define PRODUCT_FAMILY_ID 0x20 - -#define ISP_VERSION 0x10 -#define ISP_ID0 0x00 -#define ISP_ID1 0x00 - -#define ISP_CFG1 (*(volatile U32 *)ISP_CFG1_ADDRESS) -#define ISP_CFG1_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG1_OFFSET) -#define ISP_CFG1_OFFSET 0x000001FC -#define ISP_CFG1_SIZE 4 - -#define ISP_CFG1_BOOT_KEY1 16 -#define ISP_CFG1_BOOT_KEY1_MASK 0xFFFF0000 -#define ISP_CFG1_BOOT_KEY1_OFFSET 16 -#define ISP_CFG1_BOOT_KEY1_SIZE 16 -#define ISP_CFG1_BOOT_KEY1_VALUE 0xE11E - -#define ISP_CFG1_FORCE 9 -#define ISP_CFG1_FORCE_MASK 0x00000200 -#define ISP_CFG1_FORCE_OFFSET 9 -#define ISP_CFG1_FORCE_SIZE 1 - -#define ISP_CFG1_IO_COND_EN 8 -#define ISP_CFG1_IO_COND_EN_MASK 0x00000100 -#define ISP_CFG1_IO_COND_EN_OFFSET 8 -#define ISP_CFG1_IO_COND_EN_SIZE 1 - -#define ISP_CFG1_CRC8 0 -#define ISP_CFG1_CRC8_MASK 0x000000FF -#define ISP_CFG1_CRC8_OFFSET 0 -#define ISP_CFG1_CRC8_SIZE 8 -#define ISP_CFG1_CRC8_POLYNOMIAL 0x107 - -#define ISP_CFG2 (*(volatile U32 *)ISP_CFG2_ADDRESS) -#define ISP_CFG2_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG2_OFFSET) -#define ISP_CFG2_OFFSET 0x000001F8 -#define ISP_CFG2_SIZE 4 - -#define ISP_CFG2_BOOT_KEY 17 -#define ISP_CFG2_BOOT_KEY_MASK 0xFFFE0000 -#define ISP_CFG2_BOOT_KEY_OFFSET 17 -#define ISP_CFG2_BOOT_KEY_SIZE 15 -#define ISP_CFG2_BOOT_KEY_VALUE 0x494F - -#define ISP_CFG2_IO_COND_LEVEL 16 -#define ISP_CFG2_IO_COND_LEVEL_MASK 0x00010000 -#define ISP_CFG2_IO_COND_LEVEL_OFFSET 16 -#define ISP_CFG2_IO_COND_LEVEL_SIZE 1 - -#define ISP_CFG2_IO_COND_PIN 8 -#define ISP_CFG2_IO_COND_PIN_MASK 0x0000FF00 -#define ISP_CFG2_IO_COND_PIN_OFFSET 8 -#define ISP_CFG2_IO_COND_PIN_SIZE 8 - -#define ISP_CFG2_CRC8 0 -#define ISP_CFG2_CRC8_MASK 0x000000FF -#define ISP_CFG2_CRC8_OFFSET 0 -#define ISP_CFG2_CRC8_SIZE 8 -#define ISP_CFG2_CRC8_POLYNOMIAL 0x107 - -#define ISP_KEY (*(volatile U32 *)ISP_KEY_ADDRESS) -#define ISP_KEY_ADDRESS (AVR32_SRAM_ADDRESS + ISP_KEY_OFFSET) -#define ISP_KEY_OFFSET 0x00000000 -#define ISP_KEY_SIZE 4 -#define ISP_KEY_VALUE ('I' << 24 | 'S' << 16 | 'P' << 8 | 'K') - -#ifndef ISP_OSC - #define ISP_OSC 0 -#endif - -#define DFU_FRAME_LENGTH 2048 - -#define PROGRAM_START_ADDRESS (AVR32_FLASH_ADDRESS + PROGRAM_START_OFFSET) -#define PROGRAM_START_OFFSET 0x00002000 - - -#endif // _CONF_ISP_H_ diff --git a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h b/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h deleted file mode 100644 index 6637b2f..0000000 --- a/firmwares/wifishield/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h +++ /dev/null @@ -1,203 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Arch file for AVR32. - * - * This file defines common AVR32 UC3 series. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _ARCH_H_ -#define _ARCH_H_ - -// UC3 A Series -#define UC3A0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A0128__) || \ - defined (__AVR32_UC3A0256__) || \ - defined (__AVR32_UC3A0512__) || \ - defined (__AVR32_UC3A0512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A0128__) || \ - defined (__AT32UC3A0256__) || \ - defined (__AT32UC3A0512__) || \ - defined (__AT32UC3A0512ES__))) - -#define UC3A1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A1128__) || \ - defined (__AVR32_UC3A1256__) || \ - defined (__AVR32_UC3A1512__) || \ - defined (__AVR32_UC3A1512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A1128__) || \ - defined (__AT32UC3A1256__) || \ - defined (__AT32UC3A1512__) || \ - defined (__AT32UC3A1512ES__))) - -#define UC3A3 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A364__) || \ - defined (__AVR32_UC3A364S__) || \ - defined (__AVR32_UC3A3128__) || \ - defined (__AVR32_UC3A3128S__) || \ - defined (__AVR32_UC3A3256__) || \ - defined (__AVR32_UC3A3256S__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A364__) || \ - defined (__AT32UC3A364S__) || \ - defined (__AT32UC3A3128__) || \ - defined (__AT32UC3A3128S__) || \ - defined (__AT32UC3A3256__) || \ - defined (__AT32UC3A3256S__))) - -#define UC3A (UC3A0 || UC3A1 || UC3A3) - -// UC3 B Series -#define UC3B0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3B064__) || \ - defined (__AVR32_UC3B0128__) || \ - defined (__AVR32_UC3B0256__) || \ - defined (__AVR32_UC3B0256ES__) || \ - defined (__AVR32_UC3B0512__) || \ - defined (__AVR32_UC3B0512REVC_))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3B064__) || \ - defined (__AT32UC3B0128__) || \ - defined (__AT32UC3B0256__) || \ - defined (__AT32UC3B0256ES__) || \ - defined (__AT32UC3B0512__) || \ - defined (__AT32UC3B0512REVC__))) - -#define UC3B1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3B164__) || \ - defined (__AVR32_UC3B1128__) || \ - defined (__AVR32_UC3B1256__) || \ - defined (__AVR32_UC3B1256ES__) || \ - defined (__AVR32_UC3B1512__) || \ - defined (__AVR32_UC3B1512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3B164__) || \ - defined (__AT32UC3B1128__) || \ - defined (__AT32UC3B1256__) || \ - defined (__AT32UC3B1256ES__) || \ - defined (__AT32UC3B1512__) || \ - defined (__AT32UC3B1512REVC__))) - -#define UC3B (UC3B0 || UC3B1 ) - -// UC3 C Series -#define UC3C0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C064C__) || \ - defined (__AVR32_UC3C0128C__) || \ - defined (__AVR32_UC3C0256C__) || \ - defined (__AVR32_UC3C0512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C064C__) || \ - defined (__AT32UC3C0128C__) || \ - defined (__AT32UC3C0256C__) || \ - defined (__AT32UC3C0512C__))) - -#define UC3C1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C164C__) || \ - defined (__AVR32_UC3C1128C__) || \ - defined (__AVR32_UC3C1256C__) || \ - defined (__AVR32_UC3C1512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C164C__) || \ - defined (__AT32UC3C1128C__) || \ - defined (__AT32UC3C1256C__) || \ - defined (__AT32UC3C1512C__))) - -#define UC3C2 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C264C__) || \ - defined (__AVR32_UC3C2128C__) || \ - defined (__AVR32_UC3C2256C__) || \ - defined (__AVR32_UC3C2512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C264C__) || \ - defined (__AT32UC3C2128C__) || \ - defined (__AT32UC3C2256C__) || \ - defined (__AT32UC3C2512C__))) - -#define UC3C (UC3C0 || UC3C1 || UC3C2) - -// UC3 L Device series -#define UC3L0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L016__) || \ - defined (__AVR32_UC3L032__) || \ - defined (__AVR32_UC3L064__) || \ - defined (__AVR32_UC3L064REVB__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L016__) || \ - defined (__AT32UC3L032__) || \ - defined (__AT32UC3L064__) || \ - defined (__AT32UC3L064REVB__))) - -#define UC3L1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L116__) || \ - defined (__AVR32_UC3L132__) || \ - defined (__AVR32_UC3L164__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L116__) || \ - defined (__AT32UC3L132__) || \ - defined (__AT32UC3L164__))) - -#define UC3L2 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L216__) || \ - defined (__AVR32_UC3L232__) || \ - defined (__AVR32_UC3L264__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L216__) || \ - defined (__AT32UC3L232__) || \ - defined (__AT32UC3L264__))) - -#define UC3L3 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L316__) || \ - defined (__AVR32_UC3L332__) || \ - defined (__AVR32_UC3L364__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L316__) || \ - defined (__AT32UC3L332__) || \ - defined (__AT32UC3L364__))) - -#define UC3L (UC3L0 || UC3L1 || UC3L2 || UC3L3) - -#endif // _ARCH_H_ diff --git a/firmwares/wifishield/wifiHD/src/ard_spi.c b/firmwares/wifishield/wifiHD/src/ard_spi.c deleted file mode 100644 index 8bd288b..0000000 --- a/firmwares/wifishield/wifiHD/src/ard_spi.c +++ /dev/null @@ -1,1969 +0,0 @@ -/* - * ard_spi.c - * - * Created on: May 27, 2010 - * Author: mlf by Metodo2 srl - */ - -//#define _APP_DEBUG_ - -#include -#include "board.h" -#include "gpio.h" -#include "usart.h" -#include "ard_spi.h" -#include "ard_tcp.h" -#include "wifi_spi.h" -#include "wl_cm.h" -#include "ard_utils.h" -#include "intc.h" -#include "spi.h" -#include "debug.h" -#include "delay.h" -#include "eic.h" -#include "timer.h" -#include "lwip/dns.h" -#include -#include "util.h" -#include "lwip/udp.h" -#include "lwip_setup.h" - -extern const char* fwVersion; - -/*! \name USART Settings - */ -//! @{ -#if BOARD == EVK1105 -# define ARD_USART_SPI (&AVR32_USART1) -# define ARD_USART_SPI_SCK_PIN AVR32_USART1_CLK_0_PIN -# define ARD_USART_SPI_SCK_FUNCTION AVR32_USART1_CLK_0_FUNCTION -# define ARD_USART_SPI_MISO_PIN AVR32_USART1_TXD_0_0_PIN -# define ARD_USART_SPI_MISO_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define ARD_USART_SPI_MOSI_PIN AVR32_USART1_RXD_0_0_PIN -# define ARD_USART_SPI_MOSI_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define ARD_USART_SPI_NSS_PIN AVR32_USART1_CTS_0_0_PIN -# define ARD_USART_SPI_NSS_FUNCTION AVR32_USART1_CTS_0_0_FUNCTION -# define ARD_USART_SPI_IRQ AVR32_USART1_IRQ -#endif -#if BOARD == ARDUINO -# define ARD_SPI (&AVR32_SPI0) -#define EXT_INT_PIN_LINE1 AVR32_EIC_EXTINT_5_PIN -#define EXT_INT_FUNCTION_LINE1 AVR32_EIC_EXTINT_5_FUNCTION -#define EXT_INT_LINE1 EXT_INT5 -#define EXT_INT_IRQ_LINE1 AVR32_EIC_IRQ_5 -#define EXT_INT_NB_LINES 1 -#endif - -/* These defines should be adjusted to match the application */ -/*! \brief CPU core speed in Hz */ -#define CPUHZ 60000000 -/*! \brief Number of bytes in the receive buffer when operating in slave mode */ -#define BUFFERSIZE 64 -/*! \brief A adjustable delay avoiding multiple requests on the switches */ -//#define TIMEOUT 150000 -#define TIMEOUT CPUHZ/200 -/*! \brief Number of bits in each SPI package*/ -#define SPI_BITS 8 -/*! \brief SPI slave speed in Hz */ -#define SPI_SLAVE_SPEED 1000000 - - -#ifndef CMD_MAX_LEN -#define CMD_MAX_LEN 1024 -#endif -#ifndef REPLY_MAX_LEN -#define REPLY_MAX_LEN 1024 -#endif - -#define _BUFFERSIZE 100 - -extern void tcp_debug_print_pcbs(void); -extern bool ifStatus; -extern bool scanNetCompleted; - -static char buf[CMD_MAX_LEN]; -static char reply[REPLY_MAX_LEN]; -static uint16_t cmdCorr = 0; -static uint16_t count = 0; -static uint16_t replyCount = 0; -static cmd_spi_state_t state = SPI_CMD_IDLE; -int receivedChars = 0; -static uint8_t _receiveBuffer[_BUFFERSIZE]; -bool startReply = false; -bool end_write = false; //TODO only for debug - -// Signal indicating a new command is coming from SPI interface -static volatile Bool startRecvCmdSignal = FALSE; - -#define MAX_CMD_NUM 36 -typedef struct sCmd_spi_list{ - cmd_spi_cb_t cb; - char cmd_id; - cmd_spi_rcb_t reply_cb; - void* ctx; - char flags; -}tCmd_spi_list; - -static tCmd_spi_list cmd_spi_list[MAX_CMD_NUM] = { {0} }; - -#ifdef _SPI_STATS_ -typedef struct sStatSpi -{ - int timeoutIntErr; - int timeoutErr; - int txErr; - int rxErr; - int wrongFrame; - int frameDisalign; - int overrideFrame; - int lastCmd; - int lastError; - unsigned long status; -}tStatSpi; - -tStatSpi statSpi = {0}; - -void initStatSpi() -{ - statSpi.lastCmd = 0; - statSpi.lastError = 0; - statSpi.status= 0; - statSpi.txErr = 0; - statSpi.rxErr = 0; - statSpi.timeoutErr= 0; - statSpi.timeoutIntErr= 0; - statSpi.wrongFrame = 0; - statSpi.frameDisalign = 0; - statSpi.overrideFrame = 0; -} - -void printStatSpi() -{ - printk("totSpiCmds\t: 0x%x\n", cmdCorr); - printk("lastCmd \t: 0x%x\n", statSpi.lastCmd); - printk("lastErr \t: 0x%x\n", statSpi.lastError); - printk("spiStatus\t: 0x%X\n", statSpi.status); - printk("spiTxErr \t: 0x%x\n", statSpi.txErr); - printk("spiRxErr \t: 0x%x\n", statSpi.rxErr); - printk("spiTmoErr\t: 0x%x\n", statSpi.timeoutErr); - printk("spiTmoIntErr\t: 0x%x\n", statSpi.timeoutIntErr); - printk("wrongFrame\t: 0x%x\n", statSpi.wrongFrame); - printk("disalFrame\t: 0x%x\n", statSpi.frameDisalign); - printk("overrideFrame\t: 0x%x\n", statSpi.overrideFrame); -} - -cmd_state_t -cmd_statSpi(int argc, char* argv[], void* ctx) -{ - printStatSpi(); - return CMD_DONE; -} - -cmd_state_t -cmd_resetStatSpi(int argc, char* argv[], void* ctx) -{ - initStatSpi(); - return CMD_DONE; -} -#endif - -#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) -#define RETURN_ERR(e) return (e==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -#define RESET_USART_CSR(usart) usart->cr = AVR32_USART_CR_RSTSTA_MASK; - -int result = WL_CONNECT_FAILED; //Store the result of the last operation - -void* mapSockTCP[MAX_SOCK_NUM][MAX_MODE_NUM]; - -//Udp RemoteIp and remote Port -static tRemoteClient remoteClients[MAX_SOCK_NUM] = {{0,0}}; - -void setRemoteClient(uint16_t sock, uint32_t _ipaddr, uint16_t _port) -{ - if (sock < MAX_SOCK_NUM) - { - remoteClients[sock].ipaddr = _ipaddr; - remoteClients[sock].port = _port; - } -} - -tRemoteClient* getRemoteClient(uint16_t sock) -{ - if (sock < MAX_SOCK_NUM) - { - return &remoteClients[sock]; - } - return NULL; -} - -struct netif* ard_netif = NULL; - -// Network list retrived in the last scanNetwork -static struct wl_network_list_t network_list = { 0 }; - -struct ip_addr _hostIpAddr; - -static bool hostIpAddrFound = false; - -void* getTTCP(uint8_t sock, uint8_t mode) -{ - if (sock < MAX_SOCK_NUM) - return mapSockTCP[sock][mode]; - return NULL; -} - -int getSock(void * _ttcp) -{ - if (_ttcp != NULL) - { - int i = 0; - for (; istart_time; - uint32_t bytes = ttcp->mode == TTCP_MODE_TRANSMIT ? ttcp->nbuf - * ttcp->buflen : ttcp->recved; - - if (ttcp->verbose) - printk("\n"); - - printk("TTCP [%p]: %d bytes processed, %d.%d KB/s (%s/%s)\n", ttcp, bytes, - bytes / ms, bytes % ms, ProtMode2Str(ttcp->udp), - Mode2Str(ttcp->mode)); -} -#endif - -void showTTCPstatus() -{ - printk("IF status: %s\n", (ifStatus) ? "UP":"DOWN"); - printk("CONN status: %s\n", (_connected) ? "UP":"DOWN"); - - int i = 0; - for (; iudp), Mode2Str(_ttcp->mode), ip2str(_ttcp->addr), _ttcp->port); - if (_ttcp->udp == TCP_MODE) - { - int j = 0; - for (; jtpcb[j]){ - printk("[%d tpcp-%p]-Status:%d\n", j, _ttcp->tpcb[j], _ttcp->tpcb[j]->state); - } - } - - if (_ttcp->lpcb){ - printk("[tlcp-%p]-Status:%d\n", _ttcp->lpcb, _ttcp->lpcb->state); - } - }else{ - if (_ttcp->upcb){ - struct ip_addr loc = _ttcp->upcb->local_ip; - printk("[upcp-%p] flags:0x%x local:%s[0x%x]-%d\n", - _ttcp->upcb, _ttcp->upcb->flags, - ip2str(loc), loc, _ttcp->upcb->local_port); - tRemoteClient remote = {0,0};; - getRemoteData(i, ii, &remote); - struct ip_addr ipaddr = { remote.ipaddr }; - printk("remote:%s(0x%x)-%d\n", ip2str(ipaddr), remote.ipaddr, remote.port); - } - } - //ard_tcp_print_stats(_ttcp); - printk("Data avail:%s\n", isAvailTcpDataByte(i)?"YES":"NO"); - printk("------------------------------\n"); - } - } - } - - tcp_debug_print_pcbs(); -} - -int write_stream(volatile avr32_spi_t *spi, const char *stream, uint16_t len) -{ - uint16_t _len = 0; - unsigned short dummy=0; - - do { - //SIGN1_DN(); - if (spi_write(spi, *stream) == SPI_ERROR_TIMEOUT) - { -#ifdef _SPI_STATS_ - statSpi.timeoutErr++; - statSpi.txErr++; - statSpi.lastError = SPI_ERROR_TIMEOUT; - statSpi.status = spi_getStatus(spi); -#endif - return SPI_ERROR_TIMEOUT; - } - else - { - stream++; - _len++; - spi_read(spi,&dummy); - } - //SIGN1_UP(); - }while (_len < len); - return SPI_OK; -} - -void sendError() -{ - AVAIL_FOR_SPI(); - if (spi_write(&AVR32_SPI, ERR_CMD) != SPI_ERROR_TIMEOUT) - { - //Wait to empty the buffer - while(!spi_writeRegisterEmptyCheck(&AVR32_SPI)); - } - BUSY_FOR_SPI(); - WARN("Send SPI error!\n"); -} - -#define ENABLE_SPI_INT() do { \ - volatile avr32_spi_t *spi = ARD_SPI; \ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \ - if (global_interrupt_enabled) Disable_global_interrupt(); \ - spi->IER.rdrf = 1; spi->IER.rxbuff = 1; spi->IER.endrx = 1; \ - if (global_interrupt_enabled) Enable_global_interrupt(); \ -}while(0); - -#define DISABLE_SPI_INT() do { \ - volatile avr32_spi_t *spi = ARD_SPI; \ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \ - if (global_interrupt_enabled) Disable_global_interrupt(); \ - spi->IDR.rdrf = 1; spi->IDR.rxbuff = 1; spi->IDR.endrx = 1; \ - if (global_interrupt_enabled) Enable_global_interrupt(); \ -}while(0); - -#define CLEAR_SPI_INT() do { \ - eic_clear_interrupt_line(&AVR32_EIC, AVR32_SPI0_IRQ); \ - }while(0); - -int spi_add_cmd(char _cmd_id, cmd_spi_cb_t cb, cmd_spi_rcb_t rcb, void* ctx, - char flag) { - U32 i; - for (i = 0; i < ARRAY_SIZE(cmd_spi_list); i++) - if (!cmd_spi_list[i].cb) - break; - - if (i == ARRAY_SIZE(cmd_spi_list)) - { - printk("List Commands full!\n"); - return -1; - } - cmd_spi_list[i].cmd_id = _cmd_id; - cmd_spi_list[i].cb = cb; - cmd_spi_list[i].reply_cb = rcb; - cmd_spi_list[i].ctx = ctx; - cmd_spi_list[i].flags = flag; - return 0; -} - -int set_net_cmd_cb(int numParam, char* buf, void* ctx) { - struct wl_ssid_t ssid; - wl_err_t err = WL_FAILURE; - tParam* param = (tParam*) buf; - - if (param->paramLen < WL_SSID_MAX_LENGTH) { - memcpy(ssid.ssid, ¶m->param, param->paramLen); - ssid.len = param->paramLen; - ssid.ssid[ssid.len] = 0; - INFO_SPI("SSID:%s\n", ssid.ssid); - //dump(ssid.ssid, ssid.len); - err = wl_cm_set_network(&ssid, NULL); - if (err != 1) - WARN("err=%d\n", err); - } else { - WARN("SSID len out of range"); - } - return err; -} - -extern uint8_t ascii_to_key(char *outp, const char *inp); - -int set_key_cmd_cb(int numParam, char* buf, void* ctx) { - struct wl_ssid_t ssid; - struct wl_mac_addr_t bssid; - uint8_t idx=0, len=0; - char key[13], key_hex[27]; - char keyIdx[2]; - wl_err_t err = WL_SUCCESS; - tParam* params = (tParam*) buf; - - INFO_SPI("%s params=%d\n", __FUNCTION__, numParam); - - // SSID - memset(&ssid, 0, sizeof ssid); - - if (params->paramLen < WL_SSID_MAX_LENGTH) { - memcpy(ssid.ssid, ¶ms->param, params->paramLen); - ssid.len = params->paramLen; - INFO_SPI("%s\n", ssid.ssid); - } else { - //printk("SSID len out of range"); - RETURN_ERR(WL_FAILURE) - } - - params = (tParam*)((char*)buf+PARAM_LEN_SIZE+params->paramLen); - strncpy(keyIdx, (const char*)¶ms->param, params->paramLen); - keyIdx[(uint8_t)params->paramLen]='\0'; - - idx = (uint8_t)atoi(keyIdx); - // KEY IDX - if ((params->paramLen != 1)||(idx < 0)||(idx > 3)){ - //printk("KEY IDX out of range %d\n", idx); - RETURN_ERR(WL_FAILURE) - } - - params = (tParam*)((char*)params+PARAM_LEN_SIZE+params->paramLen); - strncpy(key_hex, (const char*)¶ms->param, params->paramLen); - key_hex[(uint8_t)params->paramLen]='\0'; - len = ascii_to_key(key, key_hex); - // KEY - if (( len != 5)&&(len != 13)) - { - //printk("KEY len out of range %d", len); - RETURN_ERR(WL_FAILURE) - } -#if 0 - printk("KEY IDX = %d\n", idx); - dump(key, len); - printk("KEY len %d\n", len); -#endif - memset(&bssid.octet, 0xff, sizeof bssid.octet); - - wl_add_wep_key(idx, len, key, &bssid); - //wl_set_auth_mode(AUTH_MODE_SHARED_KEY); - wl_set_default_wep_key(idx); - - //Connect - err = wl_cm_set_network(&ssid, NULL); - if (err != 1) - WARN("err=%d\n", err); - RETURN_ERR(err) -} - -int set_passphrase_cmd_cb(int numParam, char* buf, void* ctx) { - struct wl_network_t net; - char pass[64]; - wl_err_t err = WL_SUCCESS; - tParam* params = (tParam*) buf; - - INFO_SPI("%s params=%d\n", __FUNCTION__, numParam); - - memset(&net, 0, sizeof net); - memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet); - - net.enc_type = ENC_TYPE_AUTO; - - // SSID - if (params->paramLen < WL_SSID_MAX_LENGTH) { - memcpy(net.ssid.ssid, ¶ms->param, params->paramLen); - net.ssid.len = params->paramLen; - INFO_SPI("%s %d\n", net.ssid.ssid, net.ssid.len); - } else { - //printk("SSID len out of range"); - RETURN_ERR(WL_FAILURE) - } - params = (tParam*)((char*)buf+PARAM_LEN_SIZE+params->paramLen); - // PASSPHRASE - - strncpy(pass, (const char*)¶ms->param, params->paramLen); - pass[(uint8_t)params->paramLen]='\0'; - INFO_SPI("Pass: %s %d\n", pass, params->paramLen); - - if (wl_set_passphrase(&net, - pass, - params->paramLen, - ENC_TYPE_AUTO, - AUTH_MODE_AUTO) - != WL_SUCCESS) { - WARN("%s : Failed to add passphrase\n", __func__); - - RETURN_ERR(WL_FAILURE) - } - printk("Connect to network..."); - //Connect - err = wl_cm_set_network(&net.ssid, NULL); - if (err != 1) - printk("err=%d\n", err); - else - printk("OK\n"); - RETURN_ERR(err) -} - -int set_ip_config_cmd_cb(int numParam, char* buf, void* ctx) { - struct ip_addr lwip_addr; - struct ctx_server *hs = ctx; - struct net_cfg *ncfg = &(hs->net_cfg); - struct netif *nif = ncfg->netif; - uint8_t parmsToChange=0; - const uint8_t MAX_IP_CONFIG_PARAMS = 3; - - wl_err_t err = WL_SUCCESS; - tParam* params = (tParam*) buf; - - if (params->paramLen == 1) - { - GET_PARAM_NEXT(BYTE, params, _parmsToChange); - parmsToChange = _parmsToChange; - } - else - RETURN_ERR(WL_FAILURE) - - INFO_SPI("%p numParam=%d parmsToChange=%d\n", ctx, numParam, parmsToChange); - - if (parmsToChange <= MAX_IP_CONFIG_PARAMS) - { - int i=0; - for (; iparamLen == 4) - { - GET_PARAM_NEXT(LONG, params, _ip_addr); - lwip_addr.addr = _ip_addr; - INFO_SPI("%d] nif:%p lwip_addr=0x%x\n", i, nif, lwip_addr.addr); - switch (i) - { - case 0: // local_ip - { - netif_set_ipaddr(nif, &lwip_addr); - break; - } - case 1: // gateway - { - netif_set_gw(nif, &lwip_addr); - break; - } - case 2: // subnet - { - netif_set_netmask(nif, &lwip_addr); - break; - } - } - }else{ - RETURN_ERR(WL_FAILURE) - } - - } - /* Disable DHCP */ - ncfg->dhcp_enabled = STATIC_IP_CONFIG; - }else - RETURN_ERR(WL_FAILURE) - - RETURN_ERR(err) -} - -int set_dns_config_cmd_cb(int numParam, char* buf, void* ctx) { - struct ip_addr lwip_addr; - struct ctx_server *hs = ctx; - struct net_cfg *ncfg = &(hs->net_cfg); - struct netif *nif = ncfg->netif; - uint8_t parmsToChange=0; - const uint8_t MAX_DNS_CONFIG_PARAMS = 2; - - wl_err_t err = WL_SUCCESS; - tParam* params = (tParam*) buf; - - if (params->paramLen == 1) - { - GET_PARAM_NEXT(BYTE, params, _parmsToChange); - parmsToChange = _parmsToChange; - } - else - RETURN_ERR(WL_FAILURE) - - INFO_SPI("%p numParam=%d parmsToChange=%d\n", ctx, numParam, parmsToChange); - - if (parmsToChange <= MAX_DNS_CONFIG_PARAMS) - { - int i=0; - for (; iparamLen == 4) - { - GET_PARAM_NEXT(LONG, params, _ip_addr); - lwip_addr.addr = _ip_addr; - INFO_SPI("%d] nif:%p lwip_addr=0x%x\n", i, nif, lwip_addr.addr); - dns_setserver(i, &lwip_addr); - }else{ - RETURN_ERR(WL_FAILURE) - } - } - /* Disable DHCP */ - ncfg->dhcp_enabled = STATIC_IP_CONFIG; - }else - RETURN_ERR(WL_FAILURE) - - RETURN_ERR(err) -} - - - -void set_result(wl_status_t _status) -{ - result = _status; -} - - -void set_result_cmd(int err) -{ - wl_err_t _err = (wl_err_t)err; - switch (_err) - { - case WL_SUCCESS: - set_result(WL_CONNECTED); - ERROR_LED_OFF(); - break; - default: - case WL_OOM: - case WL_INVALID_LENGTH: - case WL_NOT_SUPPORTED: - case WL_ABSORBED: - case WL_RESOURCES: - case WL_BUSY: - case WL_RETRY: - case WL_FAILURE: - set_result(WL_CONNECT_FAILED); - ERROR_LED_ON(); - break; - } - INFO_SPI("%s %d\n", __FUNCTION__, result); -} - - - -extern int ttcp_start(struct ip_addr addr, uint16_t port, void *opaque, - void *done_cb, int mode, uint16_t nbuf, uint16_t buflen, int udp, int verbose); - - -int start_server_tcp(uint16_t port, uint8_t sock, uint8_t protMode) -{ - struct ip_addr addr = { 0 }; - uint16_t buflen = 1024; - uint16_t nbuf = 1024; - wl_err_t err = WL_FAILURE; - -#ifdef _APP_DEBUG_ - int verbose = 1; -#else - int verbose = 0; -#endif - int udp = protMode; - int mode = 1; //RECEIVE - void* _ttcp = NULL; - - if (sock >= MAX_SOCK_NUM) - return WIFI_SPI_ERR; - - if (_connected) - { - WARN("Still connected...wait\n"); - return WIFI_SPI_ERR; - } - - if (!ifStatus) - { - WARN_VER("IF down...wait\n"); - return WIFI_SPI_ERR; - } - - - if (ard_tcp_start(addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, sock, &_ttcp) == 0) - { - INFO_SPI("Start Server %s [%d, %d] OK!\n", ProtMode2Str(protMode), port, sock); - setMapSock(sock, _ttcp); - err = WL_SUCCESS; - }else{ - - WARN("Start Server %s [%d, %d] FAILED!\n", ProtMode2Str(protMode), port, sock); - clearMapSockTcp(sock, TTCP_MODE_RECEIVE); - } - return err; -} - - -int start_server_tcp_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - tParam* params = (tParam*) buf; - if (numParam == 3) - { - GET_PARAM_NEXT(INT, params, port); - GET_PARAM_NEXT(BYTE, params, sock); - GET_PARAM_NEXT(BYTE, params, protMode); - err = start_server_tcp(port, sock, protMode); - } - return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -} - -int start_client_tcp(uint32_t _addr, uint16_t port, uint8_t sock, uint8_t protMode) -{ - uint16_t buflen = 1024; - uint16_t nbuf = 1024; - wl_err_t err = WL_FAILURE; - struct ip_addr addr = { .addr = _addr}; - - INFO_SPI("Addr:0x%x, port:%d, sock:%d, prot:%s\n", _addr, port, sock, ProtMode2Str(protMode)); - - #ifdef _APP_DEBUG_ - int verbose = 1; - #else - int verbose = 0; - #endif - - int udp = protMode; - int mode = 0; //TRANSMIT - void* _ttcp = NULL; - - if (sock >= MAX_SOCK_NUM) - return WIFI_SPI_ERR; - - // Check previous connection - _ttcp = getTTCP(sock, TTCP_MODE_TRANSMIT); - if (_ttcp != NULL) - { - WARN("Previous client %p not stopped !\n", _ttcp); - ard_tcp_stop(_ttcp); - clearMapSockTcp(sock, TTCP_MODE_TRANSMIT); - } - - if (ard_tcp_start(addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, sock, &_ttcp) == 0) - { - INFO_SPI("Start Client %s %p [0x%x, %d, %d] OK!\n", ProtMode2Str(protMode), - _ttcp, addr, port, sock); - setMapSock(sock, _ttcp); - err = WL_SUCCESS; - }else{ - INFO_SPI("Start Client %s %p [0x%x, %d, %d] FAILED!\n", ProtMode2Str(protMode), - _ttcp, addr, port, sock); - clearMapSockTcp(sock, TTCP_MODE_TRANSMIT); - } - return err; -} - - -int start_client_tcp_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - tParam* params = (tParam*) buf; - if (numParam == 4) - { - GET_PARAM_NEXT(LONG, params, _addr); - GET_PARAM_NEXT(INT, params, port); - GET_PARAM_NEXT(BYTE, params, sock); - GET_PARAM_NEXT(BYTE, params, protMode); - err = start_client_tcp(_addr, port, sock, protMode); - } - return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -} - -int stop_client_tcp_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - tParam* params = (tParam*) buf; - void* _ttcp = NULL; - - if (numParam == 1) - { - GET_PARAM_NEXT(BYTE, params, sock); - - INFO_SPI("Stop client sock:%d\n", sock); - - if (sock < MAX_SOCK_NUM) - { - _ttcp = getTTCP(sock, TTCP_MODE_TRANSMIT); - ard_tcp_stop(_ttcp); - err = WL_SUCCESS; - } - } - return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -} - -int insert_data_cmd_cb(int numParam, char* buf, void* ctx) { - - tDataParam* msg = (tDataParam*) buf; - if ((numParam == 2)&&(msg->dataLen == 1)) - { - GET_DATA_BYTE(sock, buf+2); - GET_DATA_INT(len, buf+3); - //printk("tcp:%p buf:%p len:%d\n", getTTCP(sock), (uint8_t*)(buf+5), len); - insertBuf(sock, (uint8_t*)(buf+5), len); - } - return WIFI_SPI_ACK; -} - -int send_data_udp_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - - tParam* params = (tParam*) buf; - if ((numParam == 1)&&(params->paramLen == 1)) - { - GET_PARAM_NEXT(BYTE, params, sock); - uint16_t len = 0; - uint8_t* p = mergeBuf(sock, NULL, &len); - err = sendUdpData(getTTCP(sock, TTCP_MODE_TRANSMIT), p, len); - clearBuf(sock); - free(p); - } - - return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -} - - -int send_data_tcp_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - DATA_LED_ON(); - tDataParam* msg = (tDataParam*) buf; - if ((numParam == 2)&&(msg->dataLen == 1)) - { - GET_DATA_BYTE(sock, buf+2); - GET_DATA_INT(len, buf+3); - //printk("tcp:%p buf:%p len:%d\n", getTTCP(sock), (uint8_t*)(buf+5), len); - err = sendTcpData(getTTCP(sock, TTCP_MODE_TRANSMIT), (uint8_t*)(buf+5), len); - } - DATA_LED_OFF(); - return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -} - -int ack_cmd_cb(int numParam, char* buf, void* ctx) { - return WIFI_SPI_ACK; -} - -int get_result_cmd_cb(int numParam, char* buf, void* ctx) { - INFO_SPI("ifStatus:%d result:%d\n", ifStatus, result); - return WIFI_SPI_ACK; -} - -int disconnect_cmd_cb(int numParam, char* buf, void* ctx) -{ - return ((wl_disconnect()==WL_SUCCESS)? WIFI_SPI_ACK : WIFI_SPI_ERR); -} - - -cmd_spi_state_t get_reply_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CREATE_HEADER_REPLY(reply, recv, 1); - - reply[3] = 1; // paramLen - if (ctx != NULL) { - reply[4] = (*(uint8_t*)ctx); //param - } else { - reply[4] = (ifStatus)?WL_CONNECTED:result; //param - } - - END_HEADER_REPLY(reply, 5, *count); - - //INFO_SPI("result:%d\n", result); - return SPI_CMD_DONE; -} - -cmd_spi_state_t ack_reply_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CREATE_HEADER_REPLY(reply, recv, 1); - - reply[3] = 1; // paramLen - if (ctx != NULL) { - reply[4] = (*(uint8_t*) ctx != 1) ? WIFI_SPI_ERR : WIFI_SPI_ACK; //param - } else { - reply[4] = WIFI_SPI_ACK; //param - } - - END_HEADER_REPLY(reply, 5, *count); - - return SPI_CMD_DONE; -} - -cmd_spi_state_t get_reply_ipaddr_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, 3); - - PUT_LONG_IN_BYTE_NO(ard_netif->ip_addr.addr, reply, 3); - PUT_LONG_IN_BYTE_NO(ard_netif->netmask.addr, reply, 8); - PUT_LONG_IN_BYTE_NO(ard_netif->gw.addr, reply, 13); - - END_HEADER_REPLY(reply, 18, *count); - - return SPI_CMD_DONE; -} - -void getRemoteData(uint8_t sock, uint8_t mode, tRemoteClient* remoteData) -{ - if ((sock>=0) && (sockudp == UDP_MODE)) - { - if (_ttcp->mode == TTCP_MODE_RECEIVE) - { - remoteData->ipaddr = getRemoteClient(sock)->ipaddr; - remoteData->port = getRemoteClient(sock)->port; - }else{ - remoteData->ipaddr = (_ttcp->upcb) ? _ttcp->upcb->remote_ip.addr : 0; - remoteData->port = (_ttcp->upcb) ? _ttcp->upcb->remote_port : 0; - } - } - } - } -} - - -cmd_spi_state_t get_reply_remote_data_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CHECK_ARD_NETIF(recv, reply, count); - DUMP_SPI_CMD(recv); - - GET_DATA_BYTE(sock, recv+4); - - CREATE_HEADER_REPLY(reply, recv, 2); - tRemoteClient remoteData = {0,0}; - //TODO pass the mode - getRemoteData(sock, TTCP_MODE_RECEIVE, &remoteData); - - PUT_LONG_IN_BYTE_NO(remoteData.ipaddr, reply, 3); - PUT_DATA_INT(remoteData.port, reply, 8); - - END_HEADER_REPLY(reply, 11, *count); - - return SPI_CMD_DONE; -} - - -void foundHostByName(const char *name, struct ip_addr *ipaddr, void *callback_arg) -{ - _hostIpAddr.addr = (ipaddr)?ipaddr->addr:0xffffffff; - INFO_SPI("foundHostByName: Found Host: name=%s ip=0x%x\n", name, _hostIpAddr.addr); - hostIpAddrFound = true; -} - -int req_reply_host_by_name_cb(int numParam, char* buf, void* ctx) { - - char hostName[DNS_MAX_NAME_LENGTH]; - tParam* params = (tParam*) buf; - - // HostName - if (params->paramLen < DNS_MAX_NAME_LENGTH) { - memcpy(hostName, ¶ms->param, params->paramLen); - hostName[params->paramLen]='\0'; - } else { - RETURN_ERR(WL_FAILURE) - } - - INFO_SPI("Looking for Host: name=%s\n", hostName); - _hostIpAddr.addr = 0; - hostIpAddrFound = false; - err_t err = dns_gethostbyname(hostName, &_hostIpAddr, foundHostByName, NULL); - if (err == ERR_OK) - { - INFO_SPI("Found Host: name=%s ip=0x%x\n", hostName, _hostIpAddr.addr); - hostIpAddrFound = true; - RETURN_ERR(WL_SUCCESS) - } - RETURN_ERR(WL_FAILURE) -} - -cmd_spi_state_t get_reply_host_by_name_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - u32_t addr = (hostIpAddrFound)?_hostIpAddr.addr : 0xffffffff; - INFO_SPI("Searching for Host: ip=0x%x found=%d\n", addr, hostIpAddrFound); - - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, 1); - - PUT_LONG_IN_BYTE_NO(addr, reply, 3); - - END_HEADER_REPLY(reply, 8, *count); - - return SPI_CMD_DONE; -} - -cmd_spi_state_t get_reply_mac_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, 1); - - reply[3] = WL_MAC_ADDR_LENGTH; - uint8_t mac[WL_MAC_ADDR_LENGTH]; - if (wl_get_mac_addr(mac) != WL_SUCCESS) { - RETURN_ERR_REPLY(recv, reply, count); - } - //rotate the byte order - reply[4]=mac[5]; - reply[5]=mac[4]; - reply[6]=mac[3]; - reply[7]=mac[2]; - reply[8]=mac[1]; - reply[9]=mac[0]; - END_HEADER_REPLY(reply, 10, *count); - - return SPI_CMD_DONE; -} - -cmd_spi_state_t get_reply_curr_net_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - uint32_t type = (uint32_t)ctx; - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, 1); - - struct wl_network_t* net = wl_get_current_network(); - uint8_t len = 0; - if (net != NULL) - { - switch (type) - { - default: - case GET_CURR_SSID_CMD: - { - len = net->ssid.len; - PUT_BUFDATA_BYTE(net->ssid.ssid, len, reply, 3); - break; - } - case GET_CURR_BSSID_CMD: - { - len = WL_MAC_ADDR_LENGTH; ; - PUT_BUFDATA_BYTE_REV(net->bssid.octet, len, reply, 3); - break; - } - case GET_CURR_RSSI_CMD: - { - len=sizeof(net->rssi); - PUT_LONG_IN_BYTE_HO(net->rssi, reply, 3); - //printk("RSSI:%d", net->rssi); - break; - } - case GET_CURR_ENCT_CMD: - { - len = sizeof(net->enc_type); - PUT_DATA_BYTE(net->enc_type, reply, 3); - //printk("ENCT:%d", net->enc_type); - break; - } - } - }else{ - PUT_DATA_BYTE(0, reply, 3); - } - - END_HEADER_REPLY(reply, 3+len+1, *count); - - //dump(reply, *count); - - return SPI_CMD_DONE; -} - -cmd_spi_state_t get_reply_idx_net_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - uint32_t type = (uint32_t)ctx; - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, 1); - - DUMP_SPI_CMD(recv); - - GET_DATA_BYTE(idx, recv+4); - - if (idx >= WL_NETWORKS_LIST_MAXNUM) - { - WARN("Index out of range: %d\n", idx); - return SPI_CMD_DONE; - } - uint8_t len = 0; - switch (type) - { - default: - case GET_IDX_SSID_CMD: - { - len = network_list.net[idx]->ssid.len; - PUT_BUFDATA_BYTE(network_list.net[idx]->ssid.ssid, len, reply, 3); - INFO_UTIL("SSID:%s\n", network_list.net[idx]->ssid.ssid); - break; - } - case GET_IDX_RSSI_CMD: - { - len = 4; - PUT_LONG_IN_BYTE_HO(network_list.net[idx]->rssi, reply, 3); - INFO_UTIL("RSSI:%d\n", network_list.net[idx]->rssi); - break; - } - case GET_IDX_ENCT_CMD: - { - len = 1; - PUT_DATA_BYTE(network_list.net[idx]->enc_type, reply, 3); - INFO_UTIL("ENCT:%d\n", network_list.net[idx]->enc_type); - break; - } - } - - - END_HEADER_REPLY(reply, 3+len+1, *count); - - DUMP(reply, *count); - - return SPI_CMD_DONE; -} - -static void copy_network_list(struct wl_network_list_t *dst, - struct wl_network_list_t *src) -{ - int i; - for (i = 0; i < dst->cnt; i++) - free(dst->net[i]); - free(dst->net); - - dst->cnt = 0; - - if (src->cnt == 0) - return; - dst->net = calloc(1, src->cnt * sizeof(struct wl_network_t *)); - if (dst->net == NULL) { - printk("could not allocate all gui net array\n"); - return; - } - - for (i = 0; i < src->cnt; i++) { - struct wl_network_t *net = src->net[i]; - dst->net[i] = malloc(sizeof(*net)); - if (dst->net[i] == NULL) { - printk("could not allocate all gui nets\n"); - return; - } - - memcpy(dst->net[i], net, sizeof(*net)); - dst->cnt++; - } -} - -int start_scan_net_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - - INFO_SPI("Start Network Scan %d\n", numParam); - if (scanNetCompleted){ - scanNetCompleted = false; - err = wl_scan(); - if (err != WL_SUCCESS) - { - // May be busy scanning already, no fatal error - WARN("err=%d\n", err); - err = WL_SUCCESS; - } - } - return err; -} - -cmd_spi_state_t get_reply_scan_networks_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - const int8_t SCAN_NOT_YET_COMPLETED = 0; - - if (!scanNetCompleted) - { - //return empty list with an error to retry - CREATE_HEADER_REPLY(reply, recv, SCAN_NOT_YET_COMPLETED); - END_HEADER_REPLY(reply, 3, *count); - INFO_SPI("Scan not completed!\n"); - return SPI_CMD_DONE; - } - - int network_cnt = 0; - struct wl_network_list_t* wl_network_list; - - wl_get_network_list(&wl_network_list); - if (wl_network_list->cnt == 0) - { - CREATE_HEADER_REPLY(reply, recv, 0); - END_HEADER_REPLY(reply, 3, *count); - INFO_SPI("Networks not found!\n"); - return SPI_CMD_DONE; - } - - if (wl_network_list->cnt > WL_NETWORKS_LIST_MAXNUM) - { - network_cnt = WL_NETWORKS_LIST_MAXNUM ; - } - else{ - network_cnt = wl_network_list->cnt ; - } - - copy_network_list(&network_list, wl_network_list); - CREATE_HEADER_REPLY(reply, recv, network_cnt); - - uint8_t start = 3; - int ii = 0; - for (; ii < network_cnt; ii++) - { - uint8_t len = network_list.net[ii]->ssid.len+1; - network_list.net[ii]->ssid.ssid[network_list.net[ii]->ssid.len]=0; - PUT_BUFDATA_BYTE(network_list.net[ii]->ssid.ssid, len, reply, start); - start += len+1; - INFO_SPI("%d - %s [%d]- %d - %d - 0x%x\n",ii, network_list.net[ii]->ssid.ssid, - len, network_list.net[ii]->enc_type, - network_list.net[ii]->rssi, network_list.net[ii]->bssid); - } - - END_HEADER_REPLY(reply, start, *count); - //DUMP(reply, *count); - - return SPI_CMD_DONE; -} - -cmd_spi_state_t get_state_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_1); - - uint8_t _state = CLOSED; - if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]=0)&&(_sock=0)&&(recv[4]=0)&&(recv[4]=0)&&(recv[4]=0)&&(sock=0)&&(recv[4]<0xFF)) - { - len = recv[4]; - int i= 0; - for (; i")); - DUMP_SPI(recv, count); - IF_SPI_DUMP(printk("<==")); - DUMP_SPI(reply, _count); - replyCount = _count; - return _result; -} - -unsigned char* getStartCmdSeq(unsigned char* _recv, int len, int *offset) -{ - int i = 0; - *offset = 0; - //DEB_PIN_UP(); - for (; inParam, - (char*) &(spiMsg->params[0]), cmd_spi_list[i].ctx); - }else - { - tSpiMsgData* spiMsg = (tSpiMsgData*) recv; - _result = cmd_spi_list[i].cb(spiMsg->nParam, - (char*) &(spiMsg->params[0]), cmd_spi_list[i].ctx); - } - - if (_result != WIFI_SPI_ACK) - return REPLY_ERR_CMD; - else - return REPLY_NO_ERR; - }else{ - if (spiMsg8(cmdId)) - { - tSpiMsg* spiMsg = (tSpiMsg*) recv; - _result = cmd_spi_list[i].cb(spiMsg->nParam, - (char*) &(spiMsg->params[0]), NULL); - }else{ - tSpiMsgData* spiMsg = (tSpiMsgData*) recv; - _result = cmd_spi_list[i].cb(spiMsg->nParam, - (char*) &(spiMsg->params[0]), NULL); - } - //Send Reply for GET commands or Immediate SET apply - if (cmd_spi_list[i].flags == CMD_GET_FLAG) { - if (sendReply(i, recv, reply, cmd_spi_list[i].ctx) != SPI_OK) - return REPLY_ERR_GET; - else - return REPLY_NO_ERR; - }else if (cmd_spi_list[i].flags == CMD_IMM_SET_FLAG) - { - if (sendReply(i, recv, reply, &_result) != SPI_OK) - return REPLY_ERR_GET; - else - return REPLY_NO_ERR; - - } - } - } - } - // Command not found - if (i==ARRAY_SIZE(cmd_spi_list)) - { - WARN("Unknown cmd 0x%x\n", cmdId); - DUMP(recv, count); - return REPLY_ERR_CMD; - } - return REPLY_NO_ERR; -} - -void init_spi_cmds(void* ctx) { - spi_add_cmd(SET_NET_CMD, set_net_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(SET_PASSPHRASE_CMD, set_passphrase_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(SET_KEY_CMD, set_key_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(SET_IP_CONFIG_CMD, set_ip_config_cmd_cb, ack_reply_cb, ctx, CMD_SET_FLAG); - spi_add_cmd(SET_DNS_CONFIG_CMD, set_dns_config_cmd_cb, ack_reply_cb, ctx, CMD_SET_FLAG); - spi_add_cmd(GET_CONN_STATUS_CMD, get_result_cmd_cb, get_reply_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_IPADDR_CMD, ack_cmd_cb, get_reply_ipaddr_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_MACADDR_CMD, ack_cmd_cb, get_reply_mac_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_CURR_SSID_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_SSID_CMD, CMD_GET_FLAG); - spi_add_cmd(GET_CURR_BSSID_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_BSSID_CMD, CMD_GET_FLAG); - spi_add_cmd(GET_CURR_RSSI_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_RSSI_CMD, CMD_GET_FLAG); - spi_add_cmd(GET_CURR_ENCT_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_ENCT_CMD, CMD_GET_FLAG); - spi_add_cmd(START_SCAN_NETWORKS, start_scan_net_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(SCAN_NETWORKS, ack_cmd_cb, get_reply_scan_networks_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(DISCONNECT_CMD, disconnect_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(GET_IDX_ENCT_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_ENCT_CMD, CMD_GET_FLAG); - spi_add_cmd(GET_IDX_SSID_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_SSID_CMD, CMD_GET_FLAG); - spi_add_cmd(GET_IDX_RSSI_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_RSSI_CMD, CMD_GET_FLAG); - spi_add_cmd(REQ_HOST_BY_NAME_CMD, req_reply_host_by_name_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(GET_HOST_BY_NAME_CMD, ack_cmd_cb, get_reply_host_by_name_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(START_SERVER_TCP_CMD, start_server_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(START_CLIENT_TCP_CMD, start_client_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(STOP_CLIENT_TCP_CMD, stop_client_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(GET_STATE_TCP_CMD, ack_cmd_cb, get_state_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_DATA_TCP_CMD, ack_cmd_cb, get_data_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(AVAIL_DATA_TCP_CMD, ack_cmd_cb, avail_data_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(SEND_DATA_TCP_CMD, send_data_tcp_cmd_cb, ack_reply_cb, NULL, CMD_IMM_SET_FLAG); - spi_add_cmd(DATA_SENT_TCP_CMD, ack_cmd_cb, data_sent_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_DATABUF_TCP_CMD, ack_cmd_cb, get_databuf_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_CLIENT_STATE_TCP_CMD, ack_cmd_cb, get_client_state_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_FW_VERSION_CMD, ack_cmd_cb, get_firmware_version_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_TEST_CMD, ack_cmd_cb, get_test_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(INSERT_DATABUF_CMD, insert_data_cmd_cb, ack_reply_cb, NULL, CMD_IMM_SET_FLAG); - spi_add_cmd(SEND_DATA_UDP_CMD, send_data_udp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(GET_REMOTE_DATA_CMD, ack_cmd_cb, get_reply_remote_data_cb, NULL, CMD_GET_FLAG); -} - - -int checkMsgParam8(unsigned char* buf) -{ - int paramLenTot=0; - tSpiMsg* spiMsg = (tSpiMsg*)buf; - tParam *param = spiMsg->params; - int i=0; - for (; inParam; ++i) - { - uint8_t _len = param->paramLen; - paramLenTot+= _len+1; - //printk("%d) len:0x%x\n", i, _len); - param = (tParam*)((char*)(param)+_len+1); - } - return paramLenTot; -} - -int checkMsgParam16(unsigned char* buf) -{ - int paramLenTot=0; - tSpiMsgData* spiMsg = (tSpiMsgData*)buf; - tDataParam* param = (tDataParam*)spiMsg->params; - int i=0; - for (; inParam; ++i) - { - uint16_t _len = param->dataLen; - paramLenTot+= _len+sizeof(param->dataLen); - //printk("%d) len:0x%x\n", i, _len); - param = (tDataParam*)((char*)(param)+_len+sizeof(param->dataLen)); - } - return paramLenTot; -} - -bool checkMsgFormat(uint8_t* _recv, int len, int* offset) -{ - - unsigned char* recv = getStartCmdSeq(_recv, len, offset); - if ((recv == NULL)||(recv!=_recv)) - { - DEB_PIN_TRIGGER(); - - IF_WARN_VER(DUMP((char*)_recv, len)); - - STATSPI_DISALIGN_ERROR(); - - if (recv == NULL) - return false; - } - tSpiMsg* spiMsg = (tSpiMsg*) recv; - if ((spiMsg->cmd == START_CMD)&&((spiMsg->tcmd & REPLY_FLAG) == 0)) - { - int paramLenTot = 0; - if (spiMsg8(spiMsg->tcmd)) - paramLenTot = checkMsgParam8(recv); - else - { - DUMP_SPI(_recv, len); - paramLenTot = checkMsgParam16(recv); - } - - //INFO_SPI("cmd:0x%x TotLen:%d\n", spiMsg->tcmd, paramLenTot); - char* p = (char*)recv + paramLenTot + sizeof(tSpiHdr); - if (*p == END_CMD) - { - return true; - }else{ - WARN("%d] Not found end cmd: 0x%x\n", cmdCorr, *p); - } - } - return false; -} - -//#define AVR32_USART_CSR_ITERATION_MASK (UNDERRUN) 0x00000400 -//#define AVR32_USART_CSR_OVRE_MASK 0x00000020 -//#define AVR32_USART_CSR_RXRDY_MASK 0x00000001 - - -void spi_poll(struct netif* netif) { - - ard_netif = netif; - - if (startReply) - { - startReply = false; - int offset = 0; - DISABLE_SPI_INT(); - if (checkMsgFormat(_receiveBuffer, receivedChars, &offset)) - { - state = SPI_CMD_INPROGRESS; - count = receivedChars-offset; - if (count >= CMD_MAX_LEN) - count = CMD_MAX_LEN; - memcpy(buf, &_receiveBuffer[offset], count); - - //mark as buffer used - _receiveBuffer[0] = 0; - - int err = call_reply_cb(buf, &reply[0]); - if (err != REPLY_NO_ERR) - { - DUMP_SPI(buf, count); - DUMP_SPI(reply, replyCount); - } - receivedChars = 0; - count = 0; - state = SPI_CMD_IDLE; - } - else - { - sendError(); - WARN("%d] Check format msg failed!\n", cmdCorr); - IF_WARN_VER(dump((char*)_receiveBuffer, receivedChars)); - state = SPI_CMD_IDLE; - count=0; - //mark as buffer used - _receiveBuffer[0] = 0; - } - CLEAR_SPI_INT(); - //Enable Spi int to receive a new command - ENABLE_SPI_INT(); - //Available for receiving a new spi data - AVAIL_FOR_SPI(); - } - -#ifdef _SPI_STATS_ - if (statSpi.lastError != 0) - { - WARN("%d] Errot=0x%x spiStatus:0x%x\n", cmdCorr, statSpi.lastError, statSpi.status); - statSpi.lastError = 0; - } -#endif -} - -inline int spi_slaveReceiveInt(volatile avr32_spi_t *spi) -{ - receivedChars=0; - int index = 0; - int err = SPI_OK; - state = SPI_CMD_INPUT; - bool endOfFrame = false; - - do { - unsigned int timeout = SPI_TIMEOUT; - err = SPI_OK; - - while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) != - (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) { - if ((timeout--)==0) { - err=SPI_ERROR_TIMEOUT; - break; - } - } - //DEB_PIN_TG(); - #if 0 -#ifdef _SPI_STATS_ - if (spi->sr & AVR32_SPI_SR_OVRES_MASK) - { - STATSPI_OVERRIDE_ERROR(); - } -#endif -#endif - if (err == SPI_OK) { - _receiveBuffer[index] = (spi->rdr >> AVR32_SPI_RDR_RD_OFFSET) & 0x00ff; - DEB_PIN_UP(2); - if ((index==0) && (_receiveBuffer[index] != START_CMD)) - DEB_PIN_TRIGGER(); - ++index; - ++receivedChars; - }else{ -#ifdef _SPI_STATS_ - STATSPI_TIMEOUT_ERROR(); -#endif - break; - } - - /* break on buffer overflow */ - if (receivedChars >= _BUFFERSIZE) { - err = SPI_ERROR_OVERRUN_AND_MODE_FAULT; - break; - } - - if (_receiveBuffer[index - 1] == END_CMD) - { - int8_t numParams = 0; - int idx = PARAM_LEN_POS+1; - bool islen16bit = ((_receiveBuffer[CMD_POS] & DATA_FLAG) == DATA_FLAG); - if (index >= idx) - { - numParams = _receiveBuffer[PARAM_LEN_POS]; - while (((index-1) > idx)&&(numParams>0)) - { - if (islen16bit) - idx += (_receiveBuffer[idx]<<8) + _receiveBuffer[idx+1]+2; - else - idx += _receiveBuffer[idx]+1; - --numParams; - } - if (((index-1) == idx) && (numParams == 0)) - endOfFrame = true; - } - if (!endOfFrame){ - WARN("Wrong termination index:%d nParam:%d idx:%d 16bit:%d\n", index, numParams, idx, islen16bit); - #ifdef _DEBUG_ - dump((char*)_receiveBuffer, receivedChars); - while(0); - #endif - } - } - } while (!endOfFrame); - return err; -} - -#if defined (__GNUC__) -__attribute__((__interrupt__)) -#elif defined (__ICCAVR32__) -__interrupt -#endif -static void spi_int_handler(void) -{ - volatile avr32_spi_t *spi = ARD_SPI; - DEB_PIN_DN(2); - DISABLE_SPI_INT(); - - if ((spi->sr & AVR32_SPI_SR_RDRF_MASK) != 0) - { - int err = spi_slaveReceiveInt(ARD_SPI); - if (err == SPI_OK) - { - BUSY_FOR_SPI(); - startReply=true; - ++cmdCorr; - //maintain disable interrupt to send the reply command - return; - } - } - ENABLE_SPI_INT(); -} - -inline spi_status_t spi_read8(volatile avr32_spi_t *spi, unsigned char *data) -{ - unsigned int timeout = SPI_TIMEOUT; - - while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) != - (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - *data = (spi->rdr >> AVR32_SPI_RDR_RD_OFFSET) & 0x00ff; - - return SPI_OK; -} - - -/*! - * \brief Interrupt handler of the External interrupt line "1". - */ -#if __GNUC__ -__attribute__((__interrupt__)) -#elif __ICCAVR32__ -__interrupt -#endif -static void eic_int_handler1(void) -{ - eic_clear_interrupt_line(&AVR32_EIC, EXT_INT_LINE1); - startRecvCmdSignal = TRUE; -} - -//! Structure holding the configuration parameters of the EIC module. -eic_options_t eic_options[EXT_INT_NB_LINES]; - -void initExtInt() -{ - // Enable edge-triggered interrupt. - eic_options[0].eic_mode = EIC_MODE_EDGE_TRIGGERED; - // Interrupt will trigger on falling edge. - eic_options[0].eic_edge = EIC_EDGE_FALLING_EDGE; - // Initialize in synchronous mode : interrupt is synchronized to the clock - eic_options[0].eic_async = EIC_SYNCH_MODE; - // Set the interrupt line number. - eic_options[0].eic_line = EXT_INT_LINE1; - - // Disable all interrupts. - Disable_global_interrupt(); - - INTC_register_interrupt(&eic_int_handler1, EXT_INT_IRQ_LINE1, AVR32_INTC_INT0); - - // Map the interrupt lines to the GPIO pins with the right peripheral functions. - gpio_enable_module_pin(EXT_INT_PIN_LINE1,EXT_INT_FUNCTION_LINE1); - - // Init the EIC controller with the options - eic_init(&AVR32_EIC, eic_options, EXT_INT_NB_LINES); - - // Enable the chosen lines and their corresponding interrupt feature. - eic_enable_line(&AVR32_EIC, eic_options[0].eic_line); - eic_enable_interrupt_line(&AVR32_EIC, eic_options[0].eic_line); - - // Enable all interrupts. - Enable_global_interrupt(); -} - -int initSpi(void* ctx) -{ - volatile avr32_spi_t *spi = &AVR32_SPI0; - gpio_map_t spi_piomap = { \ - {AVR32_SPI0_SCK_0_0_PIN, AVR32_SPI0_SCK_0_0_FUNCTION}, \ - {AVR32_SPI0_MISO_0_0_PIN, AVR32_SPI0_MISO_0_0_FUNCTION}, \ - {AVR32_SPI0_MOSI_0_0_PIN, AVR32_SPI0_MOSI_0_0_FUNCTION}, \ - {AVR32_SPI0_NPCS_0_0_PIN, AVR32_SPI0_NPCS_0_0_FUNCTION}, \ - }; - - INFO_INIT("SPI init...\n"); - - /* Init PIO */ - gpio_enable_module(spi_piomap, ARRAY_SIZE(spi_piomap)); - - spi_options_t spiOptions; - - spiOptions.reg = 0; - spiOptions.baudrate = SPI_SLAVE_SPEED; - spiOptions.bits = SPI_BITS; - spiOptions.spck_delay = 0; - spiOptions.trans_delay = 4; - spiOptions.stay_act = 0; - spiOptions.spi_mode = 0; - spiOptions.modfdis = 0; - - /* Initialize as slave; bits, spi_mode */ - if (spi_initSlave(spi, spiOptions.bits, spiOptions.spi_mode) != SPI_OK) - { - INFO_SPI("SPI initialization failed!"); - return 1; - } - - spi_status_t status = spi_setupChipReg(spi, &spiOptions, FPBA_HZ); - if (status == SPI_ERROR_ARGUMENT) - WARN("Error configuring SPI\n"); - - // Disable all interrupts. - Disable_global_interrupt(); - - // Register the SPI interrupt handler to the interrupt controller. - INTC_register_interrupt((__int_handler)(&spi_int_handler), AVR32_SPI0_IRQ, AVR32_INTC_INT0); - - // Enable all interrupts. - Enable_global_interrupt(); - - ENABLE_SPI_INT(); - - spi_enable(spi); -#ifdef _SPI_STATS_ - initStatSpi(); -#endif - init_spi_cmds(ctx); - - memset(_receiveBuffer, 0, sizeof(_receiveBuffer)); - memset(buf, 0, sizeof(buf)); - memset(reply, 0, sizeof(reply)); - - initMapSockTcp(); - set_result(WL_IDLE_STATUS); - - init_pBuf(); - - return 0; -} - diff --git a/firmwares/wifishield/wifiHD/src/ard_spi.h b/firmwares/wifishield/wifiHD/src/ard_spi.h deleted file mode 100644 index 27ec33e..0000000 --- a/firmwares/wifishield/wifiHD/src/ard_spi.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * ard_spi.h - * - * Created on: May 27, 2010 - * Author: mlf by Metodo2 srl - */ - -#ifndef ARD_SPI_H_ -#define ARD_SPI_H_ - -#include "lwip/netif.h" -#include "console.h" -#include "wl_definitions.h" - - -typedef enum { - SPI_CMD_IDLE, - SPI_CMD_INPUT, - SPI_CMD_DONE, - SPI_CMD_INPROGRESS, - SPI_CMD_REPLING, - SPI_CMD_FAIL, -} cmd_spi_state_t; - -typedef enum { - REPLY_ERR_GET, - REPLY_ERR_SET, - REPLY_ERR_CMD, - REPLY_ERR_MSG, - REPLY_NO_ERR, -} reply_err_t; - - -typedef enum { - CMD_GET_FLAG = 0x01, - CMD_SET_FLAG = 0x02, - CMD_IMM_SET_FLAG = 0x04, -}cmd_flags; - -typedef enum eProtMode {TCP_MODE, UDP_MODE}tProtMode; - -#define TIMEOUT_SPI 200 -#define SPI_ALIGN_ERROR 0xF0 -#define SPI_OVERRIDE_ERROR 0xF1 -#define SPI_TIMEOUT_ERROR 0xF2 -#define DUMMY_DATA 0xFF - -typedef int (*cmd_spi_cb_t)(int numParam, char* buf, void* ctx); -typedef cmd_spi_state_t (*cmd_spi_rcb_t)(char* recv, char* reply, void* ctx, uint16_t* _count); - -typedef struct eRemoteClient{ - uint32_t ipaddr; - uint16_t port; -}tRemoteClient; - -void set_result_cmd(int err) ; - -void set_result(wl_status_t _status); - -int initSpi(void* ctx); - -void initExtInt(); - -void spi_poll(struct netif* netif); - -int spi_slaveReceive(volatile avr32_spi_t *spi); - -void showTTCPstatus(); - -int getSock(void * _ttcp); - -void* getTTCP(uint8_t sock, uint8_t mode); - -void setMapSockMode(uint8_t sock, void* _ttcp, uint8_t _tcp_mode); - -void clearMapSockTcp(uint8_t sock, uint8_t mode); - -int start_server_tcp(uint16_t port, uint8_t sock, uint8_t protMode); - -int start_client_tcp(uint32_t _addr, uint16_t port, uint8_t sock, uint8_t protMode); - -void setRemoteClient(uint16_t sock, uint32_t _ipaddr, uint16_t _port); - -tRemoteClient* getRemoteClient(uint16_t sock); - -void getRemoteData(uint8_t sock, uint8_t mode, tRemoteClient* remoteData); - -#endif /* ARD_SPI_H_ */ diff --git a/firmwares/wifishield/wifiHD/src/ard_tcp.c b/firmwares/wifishield/wifiHD/src/ard_tcp.c deleted file mode 100644 index 0a73b20..0000000 --- a/firmwares/wifishield/wifiHD/src/ard_tcp.c +++ /dev/null @@ -1,987 +0,0 @@ -/* - * ard_tcp.c - * - * Created on: May 27, 2010 - * Author: mlf by Metodo2 srl - */ - -//#define _APP_DEBUG_ -#include "lwip/opt.h" - -#include "lwip/mem.h" -#include "lwip/raw.h" -#include "lwip/icmp.h" -#include "lwip/netif.h" -#include "lwip/sys.h" -#include "lwip/sockets.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/tcp.h" -#include "lwip/udp.h" - -#include "ard_tcp.h" -#include "ard_spi.h" -#include "timer.h" -#include "util.h" - -#include "getopt.h" -#include "ard_utils.h" -#include "debug.h" -#include "trace.h" - -unsigned int startTime = 0; -extern bool ifStatus; - -static err_t tcp_data_sent(void *arg, struct tcp_pcb *pcb, u16_t len); - -static void atcp_init_pend_flags(struct ttcp* _ttcp) -{ - int i = 0; - for (; ipending_close[i] = false; - } -} - -/** - * Clean up and free the ttcp structure - */ -static void ard_tcp_destroy(struct ttcp* ttcp) { - err_t err = ERR_OK; - DUMP_TCP_STATE(ttcp); - - uint8_t sock = getSock(ttcp); - if (sock == -1) - WARN("ttcp already deallocated!\n"); - - freeAllTcpData(sock); - int i = 0; - for (; itpcb[i]) { - tcp_arg(ttcp->tpcb[i], NULL); - tcp_sent(ttcp->tpcb[i], NULL); - tcp_recv(ttcp->tpcb[i], NULL); - tcp_err(ttcp->tpcb[i], NULL); - //TEMPORAQARY - //err = tcp_close(ttcp->tpcb); - INFO_TCP("Closing tpcb: state:0x%x err:%d\n", ttcp->tpcb[i]->state, err); - } - } - - if (ttcp->lpcb) { - tcp_arg(ttcp->lpcb, NULL); - tcp_accept(ttcp->lpcb, NULL); - err = tcp_close(ttcp->lpcb); - INFO_TCP("Closing lpcb: state:0x%x err:%d\n", ttcp->lpcb->state, err); - } - - if (ttcp->upcb) { - udp_disconnect(ttcp->upcb); - udp_remove(ttcp->upcb); - } - - FREE_PAYLOAD(ttcp); - free(ttcp); -} - -/** - * Invoked when transfer is done or aborted (non-zero result). - */ -static void ard_tcp_done(struct ttcp* ttcp, int result) { -// if (result == 0) -// ard_tcp_print_stats(ttcp); - - if (ttcp->done_cb) - ttcp->done_cb(ttcp->opaque, result); - - ard_tcp_destroy(ttcp); - clearMapSockTcp(getSock(ttcp), GET_TCP_MODE(ttcp)); -} - -/** - * Only used in TCP mode. - * Will transmit a maximum of pbuf->tot_len bytes. - * Called upon connect and when there's space available in the TCP send window - * - */ -static err_t tcp_send_data_pcb(struct ttcp *ttcp, struct tcp_pcb *pcb) { - err_t err = ERR_OK; - uint32_t len; - - GET_CLIENT_ID(ttcp, pcb); - - len = ttcp->left[id]; - ttcp->buff_sent[id] = 0; - - if (len == 0) return ERR_MEM; - - INFO_TCP_VER("left=%d len:%d\n", ttcp->left[id], len); - - /* don't send more than we have in the payload */ - if (len > ttcp->buflen) - len = ttcp->buflen; - - /* We cannot send more data than space available in the send - buffer. */ - if (len > tcp_sndbuf(pcb)) - len = tcp_sndbuf(pcb); - - IF_TCP(startTime = timer_get_ms()); - err = tcp_write(pcb, ttcp->payload[id], len, TCP_WRITE_FLAG_COPY); - if (err != ERR_OK) - { - INFO_TCP("tcp_write failed %p state:%d len:%d err:%d\n", - pcb, pcb->state, len, err); - ttcp->buff_sent[id] = 0; - }else{ - ttcp->buff_sent[id] = 1; - ttcp->left[id] -= len; - } - - return err; -} - - -/** - * Only used in TCP mode. - */ -static err_t tcp_connect_cb(void *arg, struct tcp_pcb *tpcb, err_t err) { - struct ttcp* _ttcp = arg; - - if (_ttcp == NULL) return ERR_ARG; - - GET_CLIENT_ID(_ttcp, tpcb); - INFO_TCP("TTCP [%p-%p]: connect %d %d\n", _ttcp, tpcb, err, tpcb->state); - - _connected = ( tpcb->state == ESTABLISHED) ? 1 : 0; - _ttcp->tcp_poll_retries[id] = 0; - - _ttcp->start_time = timer_get_ms(); - - return ERR_OK; -} - -static void cleanSockState_cb(void *ctx) { - struct ttcp* _ttcp = ctx; - - if (_ttcp == NULL) return; - - int sock = getSock(_ttcp); - if (sock != -1) - clearMapSockTcp(sock, GET_TCP_MODE(_ttcp)); - INFO_TCP("TTCP [%p]: cleanSockState_cb %d\n", _ttcp, sock); - _connected = false; -} - -/** - * Only used in TCP mode. - */ - -static err_t close_conn_pcb(struct tcp_pcb* tpcb) { - - err_t err = tcp_close(tpcb); - if (err== ERR_OK) - { - tcp_arg(tpcb, NULL); - tcp_sent(tpcb, NULL); - tcp_recv(tpcb, NULL); - } - - INFO_TCP("Closing tpcb[%p]: state:0x%x err:%d\n", tpcb, tpcb->state, err); - return err; -} - -static void atcp_conn_err_cb(void *arg, err_t err) { - struct ttcp* _ttcp = arg; - - WARN("TTCP [%p]: connection error: %d currId:%d\n", - _ttcp, err, getCurrClientConnId()); - - if (ifStatus == false) - printk("Abort connection\n"); - - if (err == ERR_ABRT) - { - removeNewClientConn(_ttcp, GET_CURR_PCB(_ttcp)); - FREE_PAYLOAD_ID(_ttcp, getCurrClientConnId()); - } -} - -static void atcp_conn_cli_err_cb(void *arg, err_t err) { - struct ttcp* _ttcp = arg; - - if (_ttcp == NULL) return; - - WARN("TTCP [%p]: connection error: %d arg:%p\n", - _ttcp, err, arg); - - if (ifStatus == false) - printk("Abort connection\n"); - - if ((_ttcp)&&(err == ERR_ABRT)) - { - WARN("TTCP [%p]: free memory\n", _ttcp); - cleanSockState_cb(_ttcp); - // TODO - FREE_PAYLOAD(_ttcp); - } - - //atcp_init_pend_flags(_ttcp); -} - -static err_t close_conn(struct ttcp *_ttcp, struct tcp_pcb* tpcb) { - - if (_ttcp == NULL) return ERR_MEM; - - GET_CLIENT_ID(_ttcp, tpcb); - - err_t err = close_conn_pcb(_ttcp->tpcb[id]); - - if (err == ERR_MEM) - { - WARN("Cannot close id:%d-%p put pending\n", id, _ttcp->tpcb[id]); - _ttcp->pending_close[id] = true; - } - else{ - _ttcp->pending_close[id] = false; - removeNewClientConn(_ttcp, _ttcp->tpcb[id]); - FREE_PAYLOAD_ID(_ttcp, id); - INFO_TCP("----------------------\n"); - } - return err; -} - -void closeConnections() -{ - int ii=0; - for (; iiudp == TCP_MODE) - { - ard_tcp_destroy(_ttcp); - clearMapSockTcp(getSock(_ttcp), GET_TCP_MODE(_ttcp)); - } - } - } - } -} - -/** - * Only used in TCP mode. - */ -static err_t atcp_recv_cb(void *arg, struct tcp_pcb *pcb, struct pbuf *p, - err_t err) { - struct ttcp* ttcp = arg; - - if (err == ERR_OK && p != NULL) { - DATA_LED_ON(); - /* for print_stats() */ - ttcp->recved += p->tot_len; - - if ((ttcp->verbose)||(verboseDebug & INFO_TCP_FLAG)) { - INFO_TCP("len:%d\n",p->tot_len); - DUMP_TCP(p->payload, p->tot_len); - ttcp->print_cnt++; - } - - uint8_t* pBufferStore = insert_pBuf(p, ttcp->sock, (void*) pcb); - INFO_TCP("sock:%d pcb:%p pbuf:%p err:%d bufStore:%p len:%d\n", - ttcp->sock, pcb, p, err, pBufferStore, p->tot_len); - pbuf_free(p); - DATA_LED_OFF(); - } - - /* p will be NULL when remote end is done */ - if (err == ERR_OK && p == NULL) { - INFO_TCP("atcp_recv_cb p=NULL on sock:%d pcb:%p\n", ttcp->sock, pcb); - close_conn(ttcp, pcb); - } - - if (err!=ERR_OK) - WARN("err=%d p=%p\n", err, p); - return ERR_OK; -} - -void ack_recved(void* pcb, int len) { - // Comment the call because it is activated on atcp_recv_cb - INFO_TCP("Received %p len:%d\n", pcb, len); - tcp_recved(pcb, len); -} - -static err_t atcp_poll(void *arg, struct tcp_pcb *pcb) { - struct ttcp* _ttcp = arg; - - if (_ttcp == NULL) return ERR_ARG; - - GET_CLIENT_ID(_ttcp, pcb); - - if (_ttcp->left[id]>0) - ++_ttcp->tcp_poll_retries[id]; - - if (_ttcp->tcp_poll_retries[id] > 4) { - WARN("ARD TCP [%p] arg=%p retries=%d abort\n", - pcb, arg, _ttcp->tcp_poll_retries[id]); - _ttcp->tcp_poll_retries[id] = 0; - tcp_abort(pcb); - _ttcp->pending_close[id] = false; - return ERR_ABRT; - } - - if (pcb) - INFO_TCP_POLL("keepAliveCnt:%d keep_idle:%d persist_cnt:%d\n", - pcb->keep_cnt_sent, pcb->keep_idle, pcb->persist_cnt); - - if (_ttcp->left[id] > 0) - INFO_TCP("ARD TCP [%p-%p] arg=%p retries=%d pend.close:%d len:%d\n", - (_ttcp)?GET_FIRST_CLIENT_TCP(_ttcp):0, pcb, arg, - _ttcp->tcp_poll_retries[id], _ttcp->pending_close[id], (_ttcp)?_ttcp->left[id]:0); - tcp_send_data_pcb(_ttcp, pcb); - - if (_ttcp->pending_close[id]) - { - err_t err = ERR_OK; - if (id >=0){ - err = tcp_close(pcb); - if (err == ERR_MEM) - { - _ttcp->pending_close[id] = true; - } - else - { - _ttcp->pending_close[id] = false; - removeNewClientConn(_ttcp, _ttcp->tpcb[id]); - FREE_PAYLOAD_ID(_ttcp, id); - INFO_TCP("----------------------\n"); - } - } - INFO_TCP("ARD TCP [%p-%p] try to close pending:%d err:%d id:%d\n", pcb, - (_ttcp)?GET_FIRST_CLIENT_TCP(_ttcp):0, _ttcp->pending_close[id], err, id); - } - return ERR_OK; -} - -static err_t atcp_poll_conn(void *arg, struct tcp_pcb *pcb) { - struct ttcp* _ttcp = arg; - - if (_ttcp == NULL) return ERR_ARG; - - GET_CLIENT_ID(_ttcp, pcb) - - INFO_TCP_POLL("ARD TCP [%p-%p] arg=%p retries=%d pend.close:%d conn:%d\n", - (_ttcp)?GET_FIRST_CLIENT_TCP(_ttcp):0, pcb, arg, - _ttcp->tcp_poll_retries[id], _ttcp->pending_close[id], _connected); - - if (id != NO_VALID_ID) - { - if (_ttcp->pending_close[id]) - ++(_ttcp->tcp_poll_retries[id]); - } - - if (_ttcp->tcp_poll_retries[id] > 8) { - WARN("ARD TCP [%p-%p] arg=%p retries=%d\n", - pcb, GET_FIRST_CLIENT_TCP(_ttcp), arg, _ttcp->tcp_poll_retries[id]); - _ttcp->tcp_poll_retries[id] = 0; - tcp_abort(pcb); - return ERR_ABRT; - } - - if ((_ttcp)&&(_connected)) tcp_send_data_pcb(_ttcp, pcb); - - if ((id != NO_VALID_ID) && (_ttcp->pending_close[id])) - { - err_t err = tcp_close(pcb); - if (err == ERR_MEM) - { - _ttcp->pending_close[id] = true; - } - else - { - cleanSockState_cb(_ttcp); - FREE_PAYLOAD_ID(_ttcp, id); - _ttcp->pending_close[id] = false; - } - - INFO_TCP("ARD TCP [%p-%p] try to close pending:%d\n", pcb, (_ttcp)?GET_FIRST_CLIENT_TCP(_ttcp):0, _ttcp->pending_close[id]); - } - return ERR_OK; -} - -int8_t currConnId = 0; - -int8_t getCurrClientConnId() { return currConnId;} - -int8_t getNewClientConnId(struct ttcp* _ttcp, struct tcp_pcb *newpcb) -{ - if (_ttcp != NULL){ - int i = 0; - for (; itpcb[idx] == newpcb) - { - INFO_TCP_VER("ttcp:%p id=%d, tpcb=%p\n", _ttcp, idx, newpcb); - return idx; - } - } - } - WARN("No Valid Id for ttcp:%p pcb:%p\n", _ttcp, newpcb); - return NO_VALID_ID; -} - -struct tcp_pcb * getFirstClient(struct ttcp* _ttcp, bool verbose) -{ - if (_ttcp != NULL){ - int i = 0; - for (; itpcb[idx] != NULL) - { - if (verbose) INFO_TCP("ttcp:%p id=%d, tpcb=%p\n", _ttcp, idx, _ttcp->tpcb[idx]); - currConnId = idx; - return _ttcp->tpcb[idx]; - } - } - } - if (verbose) WARN("No Valid client for ttcp:%p\n", _ttcp); - return NULL; -} - - -int8_t setNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb, uint8_t id) -{ - if ((_ttcp != NULL)&&(id>=0)&&(idtpcb[id] = newpcb; - return id; - } - return NO_VALID_ID; -} - -int8_t insertNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb) -{ - if (_ttcp != NULL){ - int i = 0; - for (; itpcb[idx] == NULL)||(_ttcp->tpcb[idx] == newpcb)) - { - INFO_TCP("ttcp:%p id=%d, tpcb=%p\n", _ttcp, idx, newpcb); - _ttcp->tpcb[idx] = newpcb; - return idx; - } - } - } - return NO_VALID_ID; -} - -int8_t removeNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb) -{ - if (_ttcp != NULL){ - int i = 0; - for (; itpcb[idx] == newpcb) - { - INFO_TCP("ttcp:%p id=%d, tpcb=%p\n", _ttcp, idx, newpcb); - _ttcp->tpcb[idx] = NULL; - return idx; - } - } - } - return NO_VALID_ID; -} - -bool cleanNewClientConn(struct ttcp* _ttcp) -{ - if (_ttcp != NULL){ - int i = 0; - for (; itpcb[i] = NULL; - return true; - } - return false; -} - - -/** - * Only used in TCP mode. - */ -static err_t atcp_accept_cb(void *arg, struct tcp_pcb *newpcb, err_t err) { - struct ttcp* _ttcp = arg; - - if (_ttcp == NULL) return ERR_ARG; - - INFO_TCP("ARD TCP [%p]: accept new [%p]\n", _ttcp, newpcb); - INFO_TCP("local:%d remote:%d state:%d\n", newpcb->local_port, newpcb->remote_port, newpcb->state); - - int8_t id = insertNewClientConn(_ttcp, newpcb); - - ASSERT((_ttcp->payload[id]==NULL), "payload not freed!"); - _ttcp->payload[id] = malloc(_ttcp->buflen); - INFO_TCP("Alloc payload %d-%p\n", id, _ttcp->payload[id]); - if (_ttcp->payload[id] == NULL) { - WARN("TTCP [%p]: could not allocate payload\n", _ttcp); - return -1; - } - tcp_arg(_ttcp->tpcb[id], _ttcp); - tcp_recv(_ttcp->tpcb[id], atcp_recv_cb); - tcp_err(_ttcp->tpcb[id], atcp_conn_err_cb); - tcp_poll(_ttcp->tpcb[id], atcp_poll, 4); - // Copy the pointer to ttcp also to TRANSMIT mode for the clients connected to the server - int _sock = getSock(_ttcp); - if ((_sock != -1)&&(IS_VALID_SOCK(_sock))) - setMapSockMode(_sock, _ttcp, TTCP_MODE_TRANSMIT); - _ttcp->start_time = timer_get_ms(); - return ERR_OK; -} - -/** - * Start TCP transfer. - */ -static int atcp_start(struct ttcp* ttcp) { - err_t err = ERR_OK; - - struct tcp_pcb * p = tcp_new(); - - if (p == NULL) { - WARN("TTCP [%p]: could not allocate pcb\n", ttcp); - return -1; - } - - currConnId = 0; - tcp_arg(p, ttcp); - atcp_init_pend_flags(ttcp); - - if (ttcp->mode == TTCP_MODE_TRANSMIT) { - int8_t id = insertNewClientConn(ttcp, p); - ttcp->payload[id] = malloc(ttcp->buflen); - INFO_TCP("Alloc payload %d-%p\n", id, ttcp->payload[id]); - if (ttcp->payload[id] == NULL) { - WARN("TTCP [%p]: could not allocate payload\n", ttcp); - return -1; - } - - struct tcp_pcb * pcb = p; - tcp_err(pcb, atcp_conn_cli_err_cb); - tcp_recv(pcb, atcp_recv_cb); - tcp_sent(pcb, tcp_data_sent); - tcp_poll(pcb, atcp_poll_conn, 4); - _connected = false; - INFO_TCP("[tpcb]-%p payload:%p\n", pcb, ttcp->payload[id]); - DUMP_TCP_STATE(ttcp); - if (tcp_connect(pcb, &ttcp->addr, ttcp->port, tcp_connect_cb) - != ERR_OK) { - WARN("TTCP [%p]: tcp connect failed\n", ttcp); - return -1; - } - - } else { - INFO_TCP("BEFORE BIND ttcp:%p lpcb:%p pcb:%p\n", ttcp, ttcp->lpcb, GET_FIRST_CLIENT_TCP(ttcp)); - - err = tcp_bind(p, IP_ADDR_ANY, ttcp->port); - if (err != ERR_OK){ - WARN("TTCP [%p]: bind failed err=%d Port already used\n", ttcp, err); - return -1; - } - - ttcp->lpcb = tcp_listen(p); - if (ttcp->lpcb == NULL) { - WARN("TTCP [%p]: listen failed\n", ttcp); - return -1; - } - - DUMP_TCP_STATE(ttcp); - tcp_accept(ttcp->lpcb, atcp_accept_cb); - } - - return 0; -} - -/** - * Only used in UDP mode. Will finalize the ttcp process when an end marker - * is seen. - */ -static void audp_recv_cb(void *arg, struct udp_pcb *upcb, struct pbuf *p, - struct ip_addr *addr, u16_t port) { - struct ttcp* ttcp = arg; - - /* for print_stats() */ - ttcp->recved += p->tot_len; - DUMP(p->payload,p->tot_len); - if (ttcp->verbose) { - printk("."); - if (ttcp->print_cnt % 80 == 0) - printk("\n"); - ttcp->print_cnt++; - } - INFO_TCP("UDP Insert %p sock:%d addr:%s port:%d\n", p, ttcp->sock, - ip2str(*addr), port); - insert_pBuf(p, ttcp->sock, (void*) upcb); - setRemoteClient(ttcp->sock, addr->addr, port); - - pbuf_free(p); -} - -/** - * Start UDP transfer. - */ -static int udp_start(struct ttcp* ttcp) { - err_t err = ERR_OK; - ttcp->udp_end_marker_left = 5; - ttcp->upcb = udp_new(); - if (ttcp->upcb == NULL) { - WARN("TTCP [%p]: could not allocate pcb\n", ttcp); - return -1; - } - - INFO_TCP("%s, upcb:%p %s:%d\n", __FUNCTION__, ttcp->upcb, ip2str(ttcp->addr), ttcp->port); - if (ttcp->mode == TTCP_MODE_TRANSMIT) { - if (udp_connect(ttcp->upcb, &(ttcp->addr), ttcp->port) != ERR_OK) { - WARN("TTCP [%p]: udp connect failed\n", ttcp); - return -1; - } - udp_recv(ttcp->upcb, audp_recv_cb, ttcp); - } else { - /* bind to any IP address on port specified */ - err = udp_bind(ttcp->upcb, IP_ADDR_ANY, ttcp->port); - if (err!= ERR_OK) { - WARN("TTCP [%p]: bind failed err=%d Port already used\n", ttcp, err); - return -1; - } - // clear remote client data - setRemoteClient(ttcp->sock, 0, 0); - udp_recv(ttcp->upcb, audp_recv_cb, ttcp); - } - INFO_TCP("%s, loc:0x%x-%d rem:0x%x-%d\n", __FUNCTION__, - ttcp->upcb->local_ip.addr, ttcp->upcb->local_port, - ttcp->upcb->remote_ip.addr, ttcp->upcb->remote_port); - return 0; -} - -/** - * Start a new ttcp transfer. It should be possible to call this function - * multiple times in order to get multiple ttcp streams. done_cb() will be - * invoked upon completion. - * - */ -int ard_tcp_start(struct ip_addr addr, uint16_t port, void *opaque, - ard_tcp_done_cb_t *done_cb, int mode, uint16_t nbuf, uint16_t buflen, - int udp, int verbose, uint8_t sock, void** _ttcp) { - struct ttcp* ttcp; - int status; - - if (mode != TTCP_MODE_TRANSMIT && mode != TTCP_MODE_RECEIVE) { - WARN("TTCP [-]: invalid mode\n"); - return -1; - } - - if (nbuf == 0) { - WARN("TTCP [-]: invalid nbuf\n"); - return -1; - } - - if (buflen == 0) { - WARN("TTCP [-]: invalid buflen\n"); - return -1; - } - - ttcp = calloc(1, sizeof(struct ttcp)); - if (ttcp == NULL) { - WARN("TTCP [-]: could not allocate memory for ttcp\n"); - return -1; - } - - ttcp->addr = addr; - ttcp->port = port; - ttcp->nbuf = nbuf; - ttcp->mode = mode; - ttcp->done_cb = done_cb; - ttcp->opaque = opaque; - ttcp->udp = udp; - ttcp->verbose = verbose; - ttcp->buflen = buflen; - cleanNewClientConn(ttcp); - - if (ttcp->udp) - status = udp_start(ttcp); - else - status = atcp_start(ttcp); - - if (status) { - WARN("Start server FAILED!\n"); - goto fail; - } - INFO_TCP("TTCP [%p-%p]: nbuf=%d, buflen=%d, port=%d (%s/%s)\n", ttcp, - ((ttcp->udp==1)?(void*)ttcp->upcb:GET_FIRST_CLIENT_TCP(ttcp)), ttcp->nbuf, ttcp->buflen, - ttcp->port, ProtMode2Str(ttcp->udp), Mode2Str(ttcp->mode)); - - *_ttcp = (void*) ttcp; - ttcp->sock = sock; - - return 0; - - fail: ard_tcp_destroy(ttcp); - return -1; -} - -void ard_tcp_stop(void* ttcp) { - struct ttcp* _ttcp = (struct ttcp*) ttcp; - if (_ttcp == NULL) - { - WARN("ttcp = NULL!\n"); - return; - } - if (_ttcp->mode == TTCP_MODE_TRANSMIT) { - int i = getCurrClientConnId(); - ard_tcp_destroy(_ttcp); - clearMapSockTcp(getSock(_ttcp), GET_TCP_MODE(_ttcp)); - _ttcp->tcp_poll_retries[i] = 0; - }else{ - DUMP_TCP_STATE(_ttcp); - - int i = getCurrClientConnId(); - if ((_ttcp)&&(_ttcp->tpcb[i])&&(_ttcp->tpcb[i]->state!=LAST_ACK)&&(_ttcp->tpcb[i]->state!=CLOSED)) - { - // Flush all the data - err_t err=tcp_output(_ttcp->tpcb[i]); - INFO_TCP("flush data: tpcb:%p err:%d\n", _ttcp->tpcb[i], err); - // if any socket cannot be close stop the close connection - close_conn(_ttcp, _ttcp->tpcb[i]); - } - } -} - -uint8_t getStateTcp(void* p, bool client) { - struct ttcp* _ttcp = (struct ttcp*) p; - - if (ifStatus == false) - return CLOSED; - struct tcp_pcb * pcb = GET_FIRST_CLIENT_TCP_NV(_ttcp); - if ((_ttcp != NULL) && ((pcb != NULL) || (client==0))) { - IF_SPI_POLL(DUMP_TCP_STATE(_ttcp)); - if (client) - { - if ((pcb->state != ESTABLISHED)&&(pcb->state != CLOSED)) - DUMP_TCP_STATE(_ttcp); - return pcb->state; - } - else - { - return _ttcp->lpcb->state; - } - } else { - WARN_POLL("TCP not initialized ttcp:%p tpcb:%p lpcb:%p\n", - _ttcp, ((_ttcp)?pcb:0), ((_ttcp)?_ttcp->lpcb:0)); - } - return CLOSED; -} - -uint8_t getModeTcp(void* p) { - struct ttcp* _ttcp = (struct ttcp*) p; - - if (_ttcp != NULL) - return _ttcp->mode; - return 0; -} - -uint8_t isDataSent(void* p) { - struct ttcp *_ttcp = (struct ttcp *)p; - - int8_t id = getCurrClientConnId(); - if ((_ttcp)&&(!_ttcp->buff_sent[id])) - { - return 0; - } - - return 1; -} - -static err_t tcp_data_sent(void *arg, struct tcp_pcb *pcb, u16_t len) { - struct ttcp *_ttcp; - - LWIP_UNUSED_ARG(len); - - _ttcp = arg; - - if (_ttcp == NULL) return ERR_ARG; - - GET_CLIENT_ID(_ttcp, pcb); - _ttcp->tcp_poll_retries[id] = 0; - _ttcp->buff_sent[id] = 1; - - INFO_TCP("Packet sent pcb:%p len:%d dur:%d left:%d\n", pcb, len, timer_get_ms() - startTime, - (_ttcp)?(_ttcp->left[id]):0); - - if ((_ttcp)&&(_ttcp->left[id] > 0)) { - tcp_send_data_pcb(_ttcp, pcb); - } - - return ERR_OK; -} - -int sendTcpData(void* p, uint8_t* buf, uint16_t len) -{ - struct ttcp* _ttcp = (struct ttcp*) p; - - if (_ttcp==NULL) - { - WARN("ttcp == NULL!\n"); - return WL_FAILURE; - } - - struct tcp_pcb * pcb = GET_FIRST_CLIENT_TCP_NV(_ttcp); - GET_CLIENT_ID(_ttcp, pcb); - - INFO_TCP_VER("ttcp:%p pcb:%p buf:%p len:%d\n", _ttcp, pcb, buf, len); - DUMP_TCP(buf,len); - IF_TCP_VER(DUMP_TCP_STATE(_ttcp)); - - if ((_ttcp != NULL) && (pcb != NULL) && - (buf != NULL) && (len != 0) && (_ttcp->payload[id] != NULL)) { - if (pcb->state == ESTABLISHED || pcb->state == CLOSE_WAIT || - pcb->state == SYN_SENT || pcb->state == SYN_RCVD) { - - memcpy(_ttcp->payload[id], buf, len); - _ttcp->payload[id][len]='\0'; - INFO_TCP_VER("'%s'\n", _ttcp->payload[id]); - _ttcp->left[id] = len; - tcp_sent(pcb, tcp_data_sent); - tcp_send_data_pcb(_ttcp, pcb); - - return WL_SUCCESS; - } - } - //printk("Write failure _ttcp=%p _ttcp->tpcb=%p buf=%p len=%d\n", _ttcp, _ttcp->tpcb, buf, len); - return WL_FAILURE; -} - -int sendUdpData(void* ttcp, uint8_t* buf, uint16_t len) { - struct ttcp* _ttcp = (struct ttcp*) ttcp; - if ((_ttcp != NULL) && (buf != NULL) && (len != 0)) - { - INFO_TCP("buf:%p len:%d\n", buf, len); - DUMP_TCP(buf,len); - }else{ - return WL_FAILURE; - } - - struct pbuf* p = pbuf_alloc(PBUF_TRANSPORT, len, PBUF_RAM); - if (p == NULL) { - WARN("TTCP [%p]: could not allocate pbuf\n", ttcp); - return WL_FAILURE; - } - memcpy(p->payload, buf, len); - if (udp_send(_ttcp->upcb, p) != ERR_OK) { - WARN("TTCP [%p]: udp_send() failed\n", _ttcp); - pbuf_free(p); - return WL_FAILURE; - } - - pbuf_free(p); - return WL_SUCCESS; -} - - - -char - usage[] = - "Usage: ttcp -t/-r [-options] host\n\ - -l length of bufs written to network (default 1024)\n\ - -n number of bufs written to network (default 1024)\n\ - -p port number to send to (default 2000)\n\ - -u udp\n\ - -v verbose\n"; - -/** - * - */ -cmd_state_t cmd_ttcp(int argc, char* argv[], void* ctx) { - - int c; - int mode = TTCP_MODE_TRANSMIT; - int verbose = 0; - uint16_t buflen = 1024; - uint16_t nbuf = 1024; - uint16_t port = 2000; - int udp = 0; - struct ip_addr addr = { 0 }; - - optind = 1; - while ((c = getopt(argc, argv, "utrl:n:p:v")) != -1) { - switch (c) { - case 't': - mode = TTCP_MODE_TRANSMIT; - break; - case 'r': - mode = TTCP_MODE_RECEIVE; - break; - case 'l': - buflen = atoi(optarg); - break; - case 'v': - verbose = 1; - break; - case 'n': - nbuf = atoi(optarg); - break; - case 'u': - udp = 1; - break; - case 'p': - port = atoi(optarg); - break; - } - } - - if (mode == TTCP_MODE_TRANSMIT) { - if (optind >= argc) { - printk("%s", usage); - return CMD_DONE; - } - - addr = str2ip(argv[optind]); - if (!addr.addr) { - printk("%s", usage); - return CMD_DONE; - } - } - void* _ttcp = NULL; - if (ard_tcp_start(addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, - 0, &_ttcp)) - return CMD_DONE; - - return CMD_DONE; -} - - -#if 0 -#include "lwip/sockets.h" - -void testlwip() -{ - int Sock; - fd_set fdsetR; - FD_ZERO(&fdsetR); - FD_SET(Sock, &fdsetR); - fd_set fdsetE = fdsetR; - - int rc; - const int cMillies = 10000; - struct timeval timeout; - timeout.tv_sec = cMillies / 1000; - timeout.tv_usec = (cMillies % 1000) * 1000; - //rc = lwip_select(Sock + 1, &fdsetR, NULL, &fdsetE, &timeout); -} -#endif diff --git a/firmwares/wifishield/wifiHD/src/ard_tcp.h b/firmwares/wifishield/wifiHD/src/ard_tcp.h deleted file mode 100644 index 078e0b0..0000000 --- a/firmwares/wifishield/wifiHD/src/ard_tcp.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * ard_tcp.h - * - * Created on: May 27, 2010 - * Author: mlf by Metodo2 srl - */ - -#ifndef ARD_TCP_H -#define ARD_TCP_H - -#include "console.h" -#include "lwip/tcp.h" - -typedef void (ard_tcp_done_cb_t)(void *opaque, int result); - -#define TTCP_MODE_TRANSMIT 0 -#define TTCP_MODE_RECEIVE 1 -#define MAX_MODE_NUM 2 - -#define GET_TCP_MODE(X) ((X!=NULL)?((struct ttcp*)(X))->mode:0) -#define IS_VALID_SOCK(SOCK) ((SOCK>=0)&&(SOCKudp:0) - -// Maximum number of client connection accepted by server -#define MAX_CLIENT_ACCEPTED 4 -#define NO_VALID_ID 0xff - -#define GET_FIRST_CLIENT_TCP(TTCP) getFirstClient(TTCP, 1) -#define GET_FIRST_CLIENT_TCP_NV(TTCP) getFirstClient(TTCP, 0) -#define GET_CLIENT_TCP(TTCP,ID) (((TTCP!=NULL)&&(ID>=0)&&(IDtpcb[ID] : NULL) -#define GET_CLIENT_ID(TTCP, PCB) uint8_t id = NO_VALID_ID; do { \ - id = getNewClientConnId(TTCP, PCB); \ - if (id == NO_VALID_ID) return ERR_MEM; \ - }while(0); -#define GET_IDX_CONN(I) ((I+currConnId)payload[id]); \ - if (TTCP->payload[id]) { \ - free(TTCP->payload[id]); \ - TTCP->payload[id] = NULL; } \ -}while(0); - -#define FREE_PAYLOAD_ID(TTCP,ID) do { \ - INFO_TCP("Freeing payload %d-%p\n", ID, TTCP->payload[ID]); \ - if (TTCP->payload[ID]) { \ - free(TTCP->payload[ID]); \ - TTCP->payload[ID] = NULL; } \ -}while(0); - - -typedef struct ttcp { - - /* options */ - struct ip_addr addr; /* host */ - uint16_t port; /* -p */ - uint16_t nbuf; /* -n */ - int mode; /* -t */ - int verbose; /* -v */ - int udp; /* -u */ - uint8_t sock; - uint8_t buff_sent[MAX_CLIENT_ACCEPTED]; - - /* common */ - uint16_t print_cnt; - uint32_t start_time; - uint32_t left[MAX_CLIENT_ACCEPTED]; - uint32_t recved; - ard_tcp_done_cb_t* done_cb; - void* opaque; - uint32_t buflen; /* -l */ - uint32_t tid; - - /* TCP specific */ - struct tcp_pcb* tpcb[MAX_CLIENT_ACCEPTED]; - struct tcp_pcb* lpcb; - char* payload[MAX_CLIENT_ACCEPTED]; - uint8_t tcp_poll_retries[MAX_CLIENT_ACCEPTED]; - bool pending_close[MAX_CLIENT_ACCEPTED]; - - /* UDP specific */ - int udp_started; - uint16_t udp_end_marker_left; - struct udp_pcb* upcb; -}ttcp_t; - -bool _connected; - -int ard_tcp_start(struct ip_addr addr, uint16_t port, void *opaque, - ard_tcp_done_cb_t *done_cb, int mode, uint16_t nbuf, uint16_t buflen, int udp, int verbose, uint8_t sock, void** _ttcp); - -void ard_tcp_stop(void* ttcp); - -uint8_t getStateTcp(void* p, bool client ); - -uint8_t getModeTcp(void* p); - -int sendTcpData(void* p, uint8_t* buf, uint16_t len); - -int sendUdpData(void* p, uint8_t* buf, uint16_t len); - -uint8_t isDataSent(void* p ); - -cmd_state_t cmd_ttcp(int argc, char* argv[], void* ctx); - -int8_t setNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb, uint8_t id); - -int8_t insertNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb); - -int8_t removeNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb); - -bool cleanNewClientConn(struct ttcp* _ttcp); - -int8_t getNewClientConnId(struct ttcp* _ttcp, struct tcp_pcb *newpcb); - -int8_t getCurrClientConnId(); - -struct tcp_pcb * getFirstClient(struct ttcp* _ttcp, bool verbose); - -void closeConnections(); - -#endif diff --git a/firmwares/wifishield/wifiHD/src/ard_utils.c b/firmwares/wifishield/wifiHD/src/ard_utils.c deleted file mode 100644 index c2937d8..0000000 --- a/firmwares/wifishield/wifiHD/src/ard_utils.c +++ /dev/null @@ -1,347 +0,0 @@ -/* - * ard_utils.c - * - * Created on: Jul 4, 2010 - * Author: mlf by Metodo2 srl - */ -//#define _APP_DEBUG_ - -#include "lwip/pbuf.h" -#include "wifi_spi.h" -#include "ard_utils.h" -#include "debug.h" -#include "ard_spi.h" -#include "ard_tcp.h" - -#define MAX_PBUF_STORED 30 - -tData pBufStore[MAX_PBUF_STORED][MAX_SOCK_NUM]; - -unsigned char headBuf[MAX_SOCK_NUM] = {0}; -unsigned char tailBuf[MAX_SOCK_NUM] = {0}; - -#define IS_BUF_AVAIL(x) (tailBuf[x] != headBuf[x]) -#define IS_BUF_EMPTY(x) ((tailBuf[x] == 0) && (headBuf[x] == 0)) - -void init_pBuf() -{ - memset(pBufStore, 0, sizeof(pBufStore)); -} - -uint8_t* insertBuf(uint8_t sock, uint8_t* buf, uint16_t len) -{ - DUMP(buf,len); - if (sock>= MAX_SOCK_NUM) - { - WARN("Sock out of range: sock=%d", sock); - return NULL; - } - if (pBufStore[headBuf[sock]][sock].data != NULL) - { - WARN("Overwriting buffer %p idx:%d!\n", pBufStore[headBuf[sock]][sock].data, headBuf[sock]); - // to avoid memory leak free the oldest buffer - freetDataIdx(headBuf[sock], sock); - } - - u8_t* p = (u8_t*)calloc(len,sizeof(u8_t)); - if(p != NULL) { - memcpy(p, buf, len); - - pBufStore[headBuf[sock]][sock].data = p; - pBufStore[headBuf[sock]][sock].len = len; - pBufStore[headBuf[sock]][sock].idx = 0; - pBufStore[headBuf[sock]][sock].pcb = getTTCP(sock, TTCP_MODE_TRANSMIT); - headBuf[sock]++; - - if (headBuf[sock] == MAX_PBUF_STORED) - headBuf[sock] = 0; - if (headBuf[sock] == tailBuf[sock]) - { - WARN("Avoid to Overwrite data [%d-%d]!\n", headBuf[sock], tailBuf[sock]); - if (headBuf[sock] != 0) - --headBuf[sock]; - else - headBuf[sock] = MAX_PBUF_STORED-1; - } - INFO_UTIL("Insert[%d]: %p:%d-%d [%d,%d]\n", sock, p, len, p[0], headBuf[sock], tailBuf[sock]); - } - return p; -} - - -uint16_t calcMergeLen(uint8_t sock) -{ - uint16_t len = 0; - - unsigned char index = tailBuf[sock]; - do { - if (pBufStore[index][sock].data != NULL) - { - len += pBufStore[index][sock].len; - len -= pBufStore[index][sock].idx; - INFO_UTIL_VER(" [%d]: len:%d idx:%d tot:%d\n", sock, pBufStore[index][sock].len, pBufStore[index][sock].idx, len); - } - ++index; - if (index == MAX_PBUF_STORED) - index = 0; - }while (index!=headBuf[sock]); - return len; -} - -uint16_t clearBuf(uint8_t sock) -{ - uint16_t len = 0; - - unsigned char index = tailBuf[sock]; - do { - if (pBufStore[index][sock].data != NULL) - { - freetDataIdx(index,sock); - } - ++index; - if (index == MAX_PBUF_STORED) - index = 0; - }while (index!=headBuf[sock]); - tailBuf[sock]=index; - return len; -} - -uint8_t* mergeBuf(uint8_t sock, uint8_t** buf, uint16_t* _len) -{ - uint16_t len = calcMergeLen(sock); - uint8_t* p = (u8_t*)calloc(len,sizeof(u8_t)); - uint8_t* _p = p; - if(p != NULL) { - unsigned char index = tailBuf[sock]; - do { - if (pBufStore[index][sock].data != NULL) - { - memcpy(p, pBufStore[index][sock].data, pBufStore[index][sock].len); - p += pBufStore[index][sock].len; - } - ++index; - if (index == MAX_PBUF_STORED) - index = 0; - }while (index!=headBuf[sock]); - } - DUMP(_p,len); - if (buf != NULL) - *buf = _p; - if (_len != NULL) - *_len = len; - return _p; -} - -uint8_t* insert_pBuf(struct pbuf* q, uint8_t sock, void* _pcb) -{ - if (q == NULL) - return NULL; - - if (pBufStore[headBuf[sock]][sock].data != NULL) - { - WARN("Overwriting buffer %p idx:%d!\n", pBufStore[headBuf[sock]][sock].data, headBuf[sock]); - // to avoid memory leak free the oldest buffer - freetDataIdx(headBuf[sock], sock); - } - - u8_t* p = (u8_t*)calloc(q->tot_len,sizeof(u8_t)); - if(p != NULL) { - if (pbuf_copy_partial(q, p, q->tot_len,0) != q->tot_len) { - WARN("pbuf_copy_partial failed: src:%p, dst:%p, len:%d\n", q, p, q->tot_len); - free(p); - p = NULL; - return p; - } - - pBufStore[headBuf[sock]][sock].data = p; - pBufStore[headBuf[sock]][sock].len = q->tot_len; - pBufStore[headBuf[sock]][sock].idx = 0; - pBufStore[headBuf[sock]][sock].pcb = _pcb; - headBuf[sock]++; - - if (headBuf[sock] == MAX_PBUF_STORED) - headBuf[sock] = 0; - if (headBuf[sock] == tailBuf[sock]) - { - WARN("Avoid to Overwrite data [%d-%d]!\n", headBuf[sock], tailBuf[sock]); - if (headBuf[sock] != 0) - --headBuf[sock]; - else - headBuf[sock] = MAX_PBUF_STORED-1; - } - INFO_UTIL("Insert[%d]: %p:%d-%d [%d,%d]\n", sock, p, q->tot_len, p[0], headBuf[sock], tailBuf[sock]); - } - return p; -} - -void dumpPbuf(uint8_t sock) -{ - unsigned char index = tailBuf[sock]; - printk("headBuf=%d tailBuf=%d\n", headBuf[sock], tailBuf[sock]); - do { - if (pBufStore[index][sock].data != NULL) - { - printk("%d] pcb:%p Buf: %p Len:%d\n", pBufStore[index][sock].idx, pBufStore[index][sock].pcb, - pBufStore[index][sock].data, pBufStore[index][sock].len); - } - ++index; - if (index == MAX_PBUF_STORED) - index = 0; - }while (index!=headBuf[sock]); -} - -tData* get_pBuf(uint8_t sock) -{ - if (IS_BUF_EMPTY(sock)) - return NULL; - - if (IS_BUF_AVAIL(sock)) - { - tData* p = &(pBufStore[tailBuf[sock]][sock]); - INFO_UTIL_VER("%p [%d,%d]\n", p, headBuf[sock], tailBuf[sock]); - return p; - } - return NULL; -} - -void freetData(void * buf, uint8_t sock) -{ - if (buf==NULL) - { - WARN("Buf == NULL!"); - return; - } - - pBufStore[tailBuf[sock]][sock].data = NULL; - pBufStore[tailBuf[sock]][sock].len = 0; - pBufStore[tailBuf[sock]][sock].idx = 0; - pBufStore[tailBuf[sock]][sock].pcb = 0; - - if (++tailBuf[sock] == MAX_PBUF_STORED) - tailBuf[sock] = 0; - INFO_UTIL("%p [%d,%d]\n", buf, headBuf[sock], tailBuf[sock]); - free(buf); -} - -void freetDataIdx(uint8_t idxBuf, uint8_t sock) -{ - if (idxBuf >=MAX_PBUF_STORED) - { - WARN("idxBuf out of range: %d\n", idxBuf); - return; - } - - void * buf = pBufStore[idxBuf][sock].data; - - INFO_UTIL("%p idx:%d\n", buf, idxBuf); - - free(buf); - - pBufStore[idxBuf][sock].data = 0; - pBufStore[idxBuf][sock].len = 0; - pBufStore[idxBuf][sock].idx = 0; - pBufStore[idxBuf][sock].pcb = 0; -} - - -void ack_recved(void* pcb, int len); - -void ackAndFreeData(void* pcb, int len, uint8_t sock, uint8_t* data) -{ - INFO_TCP("Ack pcb:%p len:%d sock:%d data:%p\n", pcb, len, sock, data); - if (!IS_UDP_SOCK(sock)) - ack_recved(pcb, len); - if (data != NULL) - freetData(data, sock); -} - - -bool isAvailTcpDataByte(uint8_t sock) -{ - tData* p = get_pBuf(sock); - - if (p != NULL) - { - INFO_UTIL_VER("check:%d %d %p\n",p->idx, p->len, p->data); - if (p->idx == p->len) - { - INFO_UTIL("Free %p other buf %d tail:%d head:%d\n", - p->data, IS_BUF_AVAIL(sock), tailBuf[sock], headBuf[sock]); - ackAndFreeData(p->pcb, p->len, sock, p->data); - return (IS_BUF_AVAIL(sock)); - }else{ - return true; - } - } - return false; -} - -uint16_t getAvailTcpDataByte(uint8_t sock) -{ - uint16_t len = calcMergeLen(sock); - INFO_UTIL_VER("Availabled data: %d\n", len); - return len; -} - - -bool getTcpDataByte(uint8_t sock, uint8_t* payload, uint8_t peek) -{ - // ref field in struct pbuf has been used as index pointer for byte data - tData* p = get_pBuf(sock); - - if (p != NULL) - { - if (p->idx < p->len) - { - uint8_t* buf = (uint8_t*)p->data; - if (peek) - *payload = buf[p->idx]; - else - *payload = buf[p->idx++]; - INFO_UTIL_VER("get:%d %p %d\n",p->idx, p->data, *payload); - if (p->idx == p->len) - ackAndFreeData(p->pcb, p->len, sock, p->data); - return true; - }else{ - ackAndFreeData(p->pcb, p->len, sock, p->data); - } - } - return false; -} - -bool getTcpData(uint8_t sock, void** payload, uint16_t* len) -{ - tData* p = NULL; - p = get_pBuf(sock); - if (p != NULL) - { - *payload = p->data; - *len = p->len; - return true; - } - return false; -} - -bool freeTcpData(uint8_t sock) -{ - tData* p = NULL; - p = get_pBuf(sock); - if (p != NULL) - { - ackAndFreeData(p->pcb, p->len, sock, p->data); - return true; - } - return false; -} - -void freeAllTcpData(uint8_t sock) -{ - tData* p = NULL; - do{ - p = get_pBuf(sock); - if (p != NULL) - freetData(p->data, sock); - }while(p!=NULL); -} - - diff --git a/firmwares/wifishield/wifiHD/src/ard_utils.h b/firmwares/wifishield/wifiHD/src/ard_utils.h deleted file mode 100644 index 323b328..0000000 --- a/firmwares/wifishield/wifiHD/src/ard_utils.h +++ /dev/null @@ -1,295 +0,0 @@ -/* - * ard_utils.h - * - * Created on: Jul 4, 2010 - * Author: mlf by Metodo2 srl - */ - -#ifndef ARD_UTILS_H_ -#define ARD_UTILS_H_ - -#include "gpio.h" -#include "debug.h" -#include "ARDUINO/arduino.h" -#define INIT_SIGNAL_FOR_SPI() gpio_disable_pin_pull_up(ARDUINO_HANDSHAKE_PIN); -#define BUSY_FOR_SPI() gpio_set_gpio_pin(ARDUINO_HANDSHAKE_PIN) -#define AVAIL_FOR_SPI() gpio_clr_gpio_pin(ARDUINO_HANDSHAKE_PIN) - -#define LED0_UP() gpio_set_gpio_pin(LED0_GPIO) -#define LED0_DN() gpio_clr_gpio_pin(LED0_GPIO) -#define LED0_TL() gpio_tgl_gpio_pin(LED0_GPIO) -#define LED1_UP() gpio_set_gpio_pin(LED1_GPIO) -#define LED1_DN() gpio_clr_gpio_pin(LED1_GPIO) -#define LED1_TL() gpio_tgl_gpio_pin(LED1_GPIO) -#define LED2_UP() gpio_set_gpio_pin(LED2_GPIO) -#define LED2_DN() gpio_clr_gpio_pin(LED2_GPIO) -#define LED2_TL() gpio_tgl_gpio_pin(LED2_GPIO) - -#ifdef _DEBUG_ -#define SIGN0_UP LED0_UP -#define SIGN0_DN LED0_DN -#define SIGN0_TL LED0_TL -#define SIGN1_UP LED1_UP -#define SIGN1_DN LED1_DN -#define SIGN1_TL LED1_TL -#define SIGN2_UP LED2_UP -#define SIGN2_DN LED2_DN -#define SIGN2_TL LED2_TL - -#define DEB_PIN_UP(X) gpio_set_gpio_pin(DEB##X##_PIN_GPIO) -#define DEB_PIN_DN(X) gpio_clr_gpio_pin(DEB##X##_PIN_GPIO) -#define DEB_PIN_ENA(X) gpio_enable_gpio_pin(DEB##X##_PIN_GPIO) -#define DEB_PIN_TOGGLE(X) gpio_tgl_gpio_pin(DEB##X##_PIN_GPIO) -#define DEB_PIN_TRIGGER(X) DEB_PIN_DN(X); DEB_PIN_UP(X); - - -#else -#define SIGN0_UP() -#define SIGN0_DN() -#define SIGN0_TL() -#define SIGN1_UP() -#define SIGN1_DN() -#define SIGN1_TL() -#define SIGN2_UP() -#define SIGN2_DN() -#define SIGN2_TL() - -#define DEB_PIN_UP(X) -#define DEB_PIN_DN(X) -#define DEB_PIN_ENA(X) -#define DEB_PIN_TOGGLE(X) -#define DEB_PIN_TRIGGER(X) - -//#define TOGGLE_SIG0 -#endif - -#define DELAY_450NS asm volatile("nop") -#define DELAY_1uS DELAY_450NS; DELAY_450NS; -#define TOGGLE_SIG0() SIGN0_UP(); DELAY_450NS;SIGN0_DN(); - - -#define LINK_LED_OFF LED0_UP -#define ERROR_LED_OFF LED1_UP -#define DATA_LED_OFF LED2_UP - -#define LINK_LED_ON LED0_DN -#define ERROR_LED_ON LED1_DN -#define DATA_LED_ON LED2_DN - -#define LINK_LED_BL LED0_TL -#define ERROR_LED_BL LED1_TL -#define DATA_LED_BL LED2_TL - - -#define CREATE_HEADER_REPLY(REPLY, RECV, NUM_PARAMS)\ - REPLY[0] = RECV[0]; \ - REPLY[1] = RECV[1] | REPLY_FLAG; \ - REPLY[2] = NUM_PARAMS; - -#define CREATE_HEADER_REPLY_WAIT(REPLY, RECV, NUM_PARAMS)\ - REPLY[0] = RECV[0]; \ - REPLY[1] = RECV[1] | WAIT_FLAG; \ - REPLY[2] = NUM_PARAMS; - - -#define END_HEADER_REPLY(REPLY, TOT_LEN, COUNT)\ - REPLY[TOT_LEN] = END_CMD; \ - REPLY[TOT_LEN+1] = 0; \ - COUNT=TOT_LEN+1; - -#define RETURN_ERR_REPLY(RECV,REPLY,COUNT) \ - {uint8_t err = 0; return ack_reply_cb(RECV,REPLY,&err,COUNT);} - -#define CHECK_ARD_NETIF(RECV,REPLY,COUNT) \ - if (ard_netif == NULL) \ - { uint8_t err = 0; return ack_reply_cb(RECV,REPLY,&err,COUNT); } - -#define PUT_LONG_IN_BYTE_HO(LONG, BYTE, IDX) { \ - uint32_t _long = LONG; \ - BYTE[IDX] = 4; \ - BYTE[IDX+1] = (uint8_t)(_long & 0xff); \ - BYTE[IDX+2] = (uint8_t)((_long & 0xff00)>>8); \ - BYTE[IDX+3] = (uint8_t)((_long & 0xff0000)>>16); \ - BYTE[IDX+4] = (uint8_t)((_long & 0xff000000)>>24); \ -} - -#define PUT_LONG_IN_BYTE_NO(LONG, BYTE, IDX) { \ - uint32_t _long = LONG; \ - BYTE[IDX] = 4; \ - BYTE[IDX+4] = (uint8_t)(_long & 0xff); \ - BYTE[IDX+3] = (uint8_t)((_long & 0xff00)>>8); \ - BYTE[IDX+2] = (uint8_t)((_long & 0xff0000)>>16); \ - BYTE[IDX+1] = (uint8_t)((_long & 0xff000000)>>24); \ -} - - -#define PUT_DATA_INT(INT, BYTE, IDX) { \ - uint16_t _int = INT; \ - BYTE[IDX] = 2; \ - BYTE[IDX+1] = (uint8_t)((_int & 0xff00)>>8); \ - BYTE[IDX+2] = (uint8_t)(_int & 0xff); \ -} - -#define PUT_DATA_INT_NO(INT, BYTE, IDX) { \ - uint16_t _int = INT; \ - BYTE[IDX] = 2; \ - BYTE[IDX+2] = (uint8_t)((_int & 0xff00)>>8); \ - BYTE[IDX+1] = (uint8_t)(_int & 0xff); \ -} - -#define PUT_DATA_BYTE(DATA, BYTE, IDX) { \ - BYTE[IDX] = 1; \ - BYTE[IDX+1] = (uint8_t)DATA; \ -} - -#define PUT_BUFDATA_BYTE(BUF, BUFLEN, BYTE, IDX) { \ - BYTE[IDX] = (uint8_t)(BUFLEN & 0xff); \ - uint16_t i = 0; \ - for (; i>8); \ - BYTE[IDX+1] = (uint8_t)(BUFLEN & 0xff); \ - uint16_t i = 0; \ - for (; iparamLen == LEN)) - -#define NEXT_PARAM(PARAM) \ - do { \ - if (PARAM!=NULL){ \ - PARAM=(tParam*)((uint8_t*)PARAM+PARAM->paramLen+1); \ - GET_PARAM_BYTE(PARAM, end) \ - if (end == END_CMD) WARN("End of cmd params", PARAM); \ - } \ - }while(0); - -#define GET_PARAM_LONG(PARAM, LONG) \ - uint32_t LONG = 0; \ - if CHECK_PARAM_LEN(PARAM, 4) { \ - tLongParam* s = (tLongParam*)PARAM; \ - LONG = s->param; \ - } - -#define GET_PARAM_INT(PARAM, INT) \ - uint16_t INT = 0; \ - if CHECK_PARAM_LEN(PARAM, 2) { \ - tIntParam* s = (tIntParam*)PARAM; \ - INT = s->param; \ - } - -#define GET_PARAM_BYTE(PARAM, BYTE) \ - uint8_t BYTE = 0; \ - if CHECK_PARAM_LEN(PARAM, 1) { \ - tByteParam* s = (tByteParam*)PARAM; \ - BYTE = s->param; \ - } - -#define GET_PARAM_NEXT(TYPE, PARAM, DATA) \ - GET_PARAM_##TYPE(PARAM, DATA) \ - NEXT_PARAM(PARAM) - -#ifdef _SPI_STATS_ -#define STATSPI_TIMEOUT_ERROR() \ - statSpi.timeoutIntErr++; \ - statSpi.rxErr++; \ - statSpi.lastError = SPI_TIMEOUT_ERROR; \ - statSpi.status = spi_getStatus(ARD_SPI); - -#define STATSPI_DISALIGN_ERROR() \ - statSpi.frameDisalign++; \ - statSpi.rxErr++; \ - statSpi.lastError = SPI_ALIGN_ERROR; \ - statSpi.status = spi_getStatus(ARD_SPI); - -#define STATSPI_OVERRIDE_ERROR() \ - statSpi.overrideFrame++; \ - statSpi.rxErr++; \ - statSpi.lastError = SPI_OVERRIDE_ERROR; \ - statSpi.status = spi_getStatus(ARD_SPI); - -#define STATSPI_TX_TIMEOUT_ERROR() \ - statSpi.timeoutErr++; \ - statSpi.txErr++; \ - statSpi.lastError = SPI_ERROR_TIMEOUT; \ - statSpi.status = spi_getStatus(ARD_SPI); -#else -#define STATSPI_TIMEOUT_ERROR() -#define STATSPI_TX_TIMEOUT_ERROR() -#define STATSPI_DISALIGN_ERROR() -#define STATSPI_OVERRIDE_ERROR() -#endif - -#define DUMP_TCP_STATE(TTCP) do {\ - int i = getCurrClientConnId(); \ - INFO_TCP("%d] ttcp:%p tpcb:%p state:%d lpcb:%p state:%d left:%d sent:%d\n", \ - i, TTCP, TTCP->tpcb[i], (TTCP->tpcb[i])?TTCP->tpcb[i]->state:0, \ - TTCP->lpcb, (TTCP->lpcb)?TTCP->lpcb->state:0, \ - (TTCP->tpcb[i])?TTCP->left[i]:0, (TTCP->tpcb[i])?TTCP->buff_sent[i]:0); \ - } while(0); - -#define Mode2Str(_Mode) ((_Mode==0)?"TRANSMIT":"RECEIVE") -#define ProtMode2Str(_protMode) ((_protMode==0)?"TCP":"UDP") - -typedef struct sData -{ - uint8_t* data; - uint16_t len; - uint16_t idx; - void* pcb; -}tData; - -struct pbuf; - -void init_pBuf(); - -uint8_t* insert_pBuf(struct pbuf* q, uint8_t sock, void* _pcb); - -uint8_t* insertBuf(uint8_t sock, uint8_t* buf, uint16_t len); - -uint8_t* mergeBuf(uint8_t sock, uint8_t** buf, uint16_t* _len); - -uint16_t clearBuf(uint8_t sock); - -tData* get_pBuf(uint8_t sock); - -void freetData(void * buf, uint8_t sock); - -void freetDataIdx(uint8_t idxBuf, uint8_t sock); - -bool isBufAvail(); - -bool getTcpData(uint8_t sock, void** payload, uint16_t* len); - -bool getTcpDataByte(uint8_t sock, uint8_t* payload, uint8_t peek); - -uint16_t getAvailTcpDataByte(uint8_t sock); - -bool isAvailTcpDataByte(uint8_t sock); - -uint8_t freeTcpData(uint8_t sock); - -void freeAllTcpData(uint8_t sock); - -#endif /* ARD_UTILS_H_ */ diff --git a/firmwares/wifishield/wifiHD/src/avr32_spi.c b/firmwares/wifishield/wifiHD/src/avr32_spi.c deleted file mode 100644 index 739fb28..0000000 --- a/firmwares/wifishield/wifiHD/src/avr32_spi.c +++ /dev/null @@ -1,394 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#include -#include -#include -#include -#include -#include -#include -#include - -#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) - -__attribute__((__interrupt__)) void avr32_irq_handler(void); -void owl_spi_mdelay(uint32_t ms); - -int owl_spi_init(U8 *flags) -{ -#ifdef _ASSERT_ENABLE_ /* To silence warning if Assert() macro is empty */ - volatile avr32_pm_t *pm = &AVR32_PM; -#endif - - volatile avr32_spi_t *spi = &WL_SPI; -#if WL_SPI_CS == 1 - volatile avr32_spi_csr1_t* CSR = &spi->CSR1; -#elif WL_SPI_CS == 2 - volatile avr32_spi_csr2_t* CSR = &spi->CSR2; -#elif WL_SPI_CS == 3 - volatile avr32_spi_csr3_t* CSR = &spi->CSR3; -#elif SPI_CS == 0 - volatile avr32_spi_csr0_t* CSR = &spi->CSR0; -#endif - -#ifndef WITH_NO_DMA - volatile avr32_pdca_channel_t *pdca_tx = &AVR32_PDCA.channel[0]; - volatile avr32_pdca_channel_t *pdca_rx = &AVR32_PDCA.channel[1]; -#endif - -#ifndef WL_IRQ_PIN - *flags = SPI_FLAG_POLL; -#else - *flags = 0; -#endif - - -#ifdef WL_IRQ_PIN - /* input, irq */ - gpio_enable_gpio_pin(WL_IRQ_PIN); - gpio_enable_pin_pull_up(WL_IRQ_PIN); -#endif - -//#ifdef WL_RESET_PIN -// /* reset pin */ -// gpio_enable_gpio_pin(WL_RESET_PIN); -// gpio_set_gpio_pin(WL_RESET_PIN); -//#endif - - -#ifdef WL_POWER_PIN - /* power off the device */ - gpio_enable_gpio_pin(WL_POWER_PIN); - gpio_set_gpio_pin(WL_POWER_PIN); -#endif - -#ifdef WL_SHUTDOWN_PIN - gpio_enable_gpio_pin(WL_SHUTDOWN_PIN); - -#ifdef WL_NO_INTERNAL_RESET /* never defined for SPB104/SPB105 */ - gpio_clr_gpio_pin(WL_SHUTDOWN_PIN); -#endif - -#ifdef WL_EXTERNAL_RESET - gpio_enable_gpio_pin(WL_RESET_PIN); -#endif - -#endif /* WL_SHUTDOWN_PIN */ - -#ifdef WL_POWER_PIN - /* power on the device */ - gpio_clr_gpio_pin(WL_POWER_PIN); -#endif - -#ifdef WL_SHUTDOWN_PIN - -#ifdef WL_NO_INTERNAL_RESET /* never defined for SPB104/SPB105 */ - owl_spi_mdelay(5); - gpio_set_gpio_pin(WL_SHUTDOWN_PIN); - -#elif WL_EXTERNAL_RESET - owl_spi_mdelay(5); - gpio_set_gpio_pin(WL_SHUTDOWN_PIN); - - owl_spi_mdelay(20); - //delay_ms(10); //2ms - - /* reset pin */ - gpio_set_gpio_pin(WL_RESET_PIN); - -#else - - /* The shutdown pin will go high once the device is powered */ - { -#define SHUTDOWN_TIMEOUT 350 - uint32_t shutdown_timer = 0; - while (gpio_get_pin_value(WL_SHUTDOWN_PIN) == 0) { - if (shutdown_timer > SHUTDOWN_TIMEOUT) - { - printk("Timeout WL Shutdown\n"); - return -1; - } - owl_spi_mdelay(5); - shutdown_timer += 5; - } - } -#endif /* WL_NO_INTERNAL_RESET */ - -#else - /* We need to make a guess about the time needed to power the device, - * this will depend on the hardware design. - */ - owl_spi_mdelay(5); -#endif /* WL_SHUTDOWN_PIN */ - - /* Note: SPI0 clock enabled at reset in pm->pbamask (see 13.6.3) */ - Assert(pm->pbamask & (1 << 5)); - - /* Note: GPIO clock enabled at reset in pm->pbamask (see 13.6.3) */ - Assert(pm->pbamask & (1 << 1)); -#ifdef WL_IRQ_PIN - /* 22.4.7: "In every port there are four interrupt lines - * connected to the interrupt controller. Every eigth - * interrupts in the port are ored together to form an - * interrupt line." - * - * WL_IRQ_# = (WL_IRQ_PIN / 32) * 4 + (WL_IRQ_PIN / 8) % 4 - * 62 => 1 * 4 + 3 = 7 - */ - INTC_register_interrupt(&avr32_irq_handler, WL_IRQ, AVR32_INTC_INT0); -#endif - -#ifndef WITH_NO_DMA - INTC_register_interrupt(&avr32_irq_handler, AVR32_PDCA_IRQ_0, - AVR32_INTC_INT0); - INTC_register_interrupt(&avr32_irq_handler, AVR32_PDCA_IRQ_1, - AVR32_INTC_INT0); - pdca_tx->IER.terr = 1; - pdca_rx->IER.terr = 1; -#endif - -#ifdef WL_SPI_CLOCK_DIVIDER - CSR->scbr = WL_SPI_CLOCK_DIVIDER; -#else - CSR->scbr = 2; -#endif - - /* Use max width of TDR register, 16 bit transfers */ - CSR->bits = 0x8; - - /* Make sure that we can hold CS low until transfer is completed, e.g - * LASTXFER is set in TDR. - */ - CSR->csaat = 1; - - /* NRG component requires clock polarity high */ - CSR->cpol = 1; - - -#ifdef WL_IRQ_PIN - /* make sure to clear any pending bits in ifr here. */ - gpio_clear_pin_interrupt_flag(WL_IRQ_PIN); -#endif - - return 0; -} - -#ifndef WITH_NO_DMA -static void dma_txrx(const U8* in, U8* out, U16 len) -{ - volatile avr32_pdca_channel_t *pdca_tx = &AVR32_PDCA.channel[0]; - volatile avr32_pdca_channel_t *pdca_rx = &AVR32_PDCA.channel[1]; - - /* setup tx */ - pdca_tx->mar = (U32) in; - pdca_tx->PSR.pid = WL_PDCA_PID_TX; - pdca_tx->tcr = len / 2; - pdca_tx->MR.size = 1; /* 2-byte */ - pdca_tx->IER.trc = 1; - - /* setup rx */ - pdca_rx->mar = (U32) out; - pdca_rx->PSR.pid = WL_PDCA_PID_RX; - pdca_rx->tcr = len / 2; - pdca_rx->MR.size = 1; /* 2-byte */ - pdca_rx->IER.trc = 1; - - /* start dma's. for some reason rx must be started prior to tx */ - pdca_rx->CR.ten = 1; - pdca_tx->CR.ten = 1; - - /* blocking wait until transfer is completed */ - while (!(pdca_tx->ISR.trc && pdca_rx->ISR.trc)); -} -#endif - -/* access data using byte pointers since we might get unaligned - * data from lwip. The cpu will issue a data abort if we try - * to access data which is not properly aligned. See data sheet. - * - * Note that fifo_txrx() doesn't handle the case where len is not a - * multiple of two bytes properly. - * - * However, there is no actual case where len is odd at the same time - * as the "out" pointer is non-NULL; therefore I think that in practice, - * we'll not write beyond the end of the "out" array. - * - * The extra unknown byte fetched from the in pointer will be discarded - * by the device since a length field included in the packet header will inform - * the device of the actual number of valid bytes (this implementation is - * kind of hidden inside the library). - */ -static void fifo_txrx(const U8 *in, U8* out, U16 len) -{ - volatile avr32_spi_t *spi = &WL_SPI; - UnionCPtr in_ptr; - UnionPtr out_ptr; - U32 sr; - - Assert(len); - - in_ptr.u8ptr = in; - out_ptr.u8ptr = out; - - while (len) { - U16 rdr; - union { - avr32_spi_tdr_t TDR; - U32 tdr; - } reg = { { 0 } }; - - while (!spi->SR.tdre); - while (!spi->SR.txempty); - - /* prepare tx data register contents */ - if (in_ptr.u8ptr) { - reg.TDR.td |= (in_ptr.u8ptr[0] << 8) | in_ptr.u8ptr[1]; - in_ptr.u16ptr++; - } - else - reg.TDR.td |= 0xffff; - - /* perform tx */ - spi->tdr = reg.tdr; - - /* wait until rx is ready */ - while (!spi->SR.rdrf); - - /* fetch rx data */ - rdr = spi->RDR.rd; - if (out_ptr.u8ptr) { - out_ptr.u8ptr[0] = (rdr >> 8) & 0xff; - out_ptr.u8ptr[1] = rdr & 0xff; - out_ptr.u16ptr++; - } - - if (len >= 2) - len -= 2; - else - len = 0; - } - - sr = spi->sr; - Assert(!(sr & AVR32_SPI_SR_OVRES_MASK)); - Assert(!(sr & AVR32_SPI_SR_MODF_MASK)); -} - -void owl_spi_txrx(const U8 *in, U8* out, U16 len) -{ -#ifndef WITH_NO_DMA - static uint8_t buf[MAX_BLOCK_LEN]; - - /* unaligned data or odd number of bytes, then skip dma */ - if ((U32) in % 4 || (U32) out % 4 || len % 2) { - fifo_txrx(in, out, len); - } else { - if (in == NULL) { - memset(buf, 0xff, len); - in = buf; - } else if (out == NULL) { - out = buf; - } - dma_txrx(in, out, len); - } -#else - fifo_txrx(in, out, len); -#endif -} - -void owl_spi_irq(U8 enable) -{ -#ifdef WL_IRQ_PIN - - if (enable) - gpio_enable_pin_interrupt(WL_IRQ_PIN, GPIO_PIN_CHANGE); - else - gpio_disable_pin_interrupt(WL_IRQ_PIN); -#endif -} - -void owl_spi_cs(U8 enable) -{ - volatile avr32_spi_t *spi = &WL_SPI; - - /* - * PCS = xxx0 => NPCS[3:0] = 1110 - * PCS = xx01 => NPCS[3:0] = 1101 - * PCS = x011 => NPCS[3:0] = 1011 - * PCS = 0111 => NPCS[3:0] = 0111 - * PCS = 1111 => forbidden (no peripheral is selected) - */ - - if (enable) -#if WL_SPI_CS == 2 - spi->MR.pcs = 0x3; /* cs2 */ -#elif WL_SPI_CS == 1 - spi->MR.pcs = 0x1; /* cs1 */ -#elif WL_SPI_CS == 3 - spi->MR.pcs = 0x7; /* cs3 */ -#elif WL_SPI_CS == 0 - spi->MR.pcs = 0x0; /* cs0 */ -#endif - else - spi->MR.pcs = 0xf; -} - -void owl_spi_mdelay(uint32_t ms) -{ - volatile int a = 0; - int i; - for (i = 0; i < ms * 5000; i++) - a++; -} - -__attribute__((__interrupt__)) void avr32_irq_handler(void) -{ -#ifndef WITH_NO_DMA - volatile avr32_pdca_channel_t *pdca_tx = &AVR32_PDCA.channel[0]; - volatile avr32_pdca_channel_t *pdca_rx = &AVR32_PDCA.channel[1]; - - /* tx xfer complete */ - if (pdca_tx->IMR.trc && pdca_tx->ISR.trc) { - pdca_tx->IDR.trc = 1; - pdca_tx->CR.tdis = 1; /* disable tx xfer */ - } - - /* rx xfer complete */ - if (pdca_rx->IMR.trc && pdca_rx->ISR.trc) { - pdca_rx->IDR.trc = 1; - pdca_rx->CR.tdis = 1; /* disable rx xfer */ - } -#endif - -#ifdef WL_IRQ_PIN - if (gpio_get_pin_interrupt_flag(WL_IRQ_PIN)) { - gpio_clear_pin_interrupt_flag(WL_IRQ_PIN); - wl_spi_irq(); - } -#endif - -} diff --git a/firmwares/wifishield/wifiHD/src/board_init.c b/firmwares/wifishield/wifiHD/src/board_init.c deleted file mode 100644 index a2a191e..0000000 --- a/firmwares/wifishield/wifiHD/src/board_init.c +++ /dev/null @@ -1,297 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - -#include -#include -#include -#include -#include -#ifdef WITH_SDRAM - #include -#endif -#include -#include - -#ifndef NO_SERIAL /* The bootloader does not want serial port - * code */ -#include - -int board_putchar(char c) -{ - int timeout = USART_DEFAULT_TIMEOUT; - if (c == '\n') { - do { - if (!timeout--) - return USART_FAILURE; - } while (usart_write_char(&CONFIG_CONSOLE_PORT, '\r') != - USART_SUCCESS); - - timeout = USART_DEFAULT_TIMEOUT; - } - - do { - if (!timeout--) - return USART_FAILURE; - } while (usart_write_char(&CONFIG_CONSOLE_PORT, c) != USART_SUCCESS); - - return USART_SUCCESS; -} -#endif /* NO_SERIAL */ -/** - * Initializes the MCU system clocks. - */ -static void -init_sys_clocks(void) -{ - - /* if we don't run on OSC0 don't switch to it since we don't know - * what kind of oscillator we have here - */ - -#if OSC == 0 - /* switch to OSC0 to speed up the booting */ - pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP); -#endif - - -#ifndef USE_PLL - return; -#endif - - /* For audio, ee have to use OSC1 on to generate the correct clockrate - * for the SSC - */ -#if OSC == 1 - /* start oscillator1 */ - pm_enable_osc1_crystal(&AVR32_PM, FOSC1); - pm_enable_clk1(&AVR32_PM, OSC1_STARTUP); -#endif - - /* configure pll multipliers */ - pm_pll_setup(&AVR32_PM, - 0, /* pll */ - PLL_MUL, /* mul */ - 1, /* div */ - OSC, /* osc */ - 16); /* lockcount */ - - /* set PLL operating range and divider (fpll = fvco/2) - * this gives PLL output = 66 MHz (62.0928 MHz for EVK1105/OSC1) - */ - pm_pll_set_option(&AVR32_PM, - 0, /* pll */ - 1, /* pll_freq */ - 1, /* pll_div2 */ - 0); /* pll_wbwdisable. */ - - - /* start PLL0 and wait for the lock */ - pm_pll_enable(&AVR32_PM, 0); - pm_wait_for_pll0_locked(&AVR32_PM); - - /* Set all peripheral clocks torun at master clock rate */ - pm_cksel(&AVR32_PM, - 0, /* pbadiv */ - 0, /* pbasel */ - 0, /* pbbdiv */ - 0, /* pbbsel */ - 0, /* hsbdiv */ - 0); /* hsbsel */ - - /* Set one waitstate for the flash */ - flashc_set_wait_state(1); - - /* Switch to PLL0 as the master clock */ - pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0); -} - -static void init_exceptions(void) -{ - extern void _evba; - Set_system_register(AVR32_EVBA, (int)&_evba); - Enable_global_exception(); -} - -static void init_hmatrix(void) -{ - union { - unsigned long scfg; - avr32_hmatrix_scfg_t SCFG; - } u_avr32_hmatrix_scfg = { - AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] - }; - u_avr32_hmatrix_scfg.SCFG.defmstr_type = - AVR32_HMATRIX_DEFMSTR_TYPE_LAST_DEFAULT; - AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] = - u_avr32_hmatrix_scfg.scfg; -} - -static void init_interrupts(void) -{ - INTC_init_interrupts(); - Enable_global_interrupt(); -} - -static void init_spi(void) -{ -#if defined(WL_SPI) - int i; -#endif - - -#if defined(AT45DBX_SPI) - static const gpio_map_t AT45DBX_SPI_GPIO_MAP = { - { AT45DBX_SPI_SCK_PIN, AT45DBX_SPI_SCK_FUNCTION }, - { AT45DBX_SPI_MISO_PIN, AT45DBX_SPI_MISO_FUNCTION }, - { AT45DBX_SPI_MOSI_PIN, AT45DBX_SPI_MOSI_FUNCTION }, - { AT45DBX_SPI_NPCS2_PIN, AT45DBX_SPI_NPCS2_FUNCTION }, - }; -#endif - - -#if defined(WL_SPI) - const gpio_map_t WL_SPI_GPIO_MAP = { -#if defined(WL_SPI_NPCS0) - WL_SPI_NPCS0, -#endif - WL_SPI_NPCS, WL_SPI_MISO, WL_SPI_MOSI, WL_SPI_SCK - }; -#endif - -#if defined(WL_SPI) || defined(AT45DBX_SPI) - spi_options_t spiOptions = { - .modfdis = 1 /* only param used by spi_initMaster() */ - }; -#endif - -#if defined(AT45DBX_SPI) - gpio_enable_module(AT45DBX_SPI_GPIO_MAP, - sizeof(AT45DBX_SPI_GPIO_MAP) / - sizeof(AT45DBX_SPI_GPIO_MAP[0])); - spi_initMaster(AT45DBX_SPI, &spiOptions); - spi_selectionMode(AT45DBX_SPI, 0, 0, 0); -#endif - -#if defined(WL_SPI) - /* same pins might be initialized twice here */ - gpio_enable_module(WL_SPI_GPIO_MAP, - sizeof(WL_SPI_GPIO_MAP) / - sizeof(WL_SPI_GPIO_MAP[0])); - for (i = 0; i < sizeof(WL_SPI_GPIO_MAP)/sizeof(WL_SPI_GPIO_MAP[0]); i++) - gpio_enable_pin_pull_up(WL_SPI_GPIO_MAP[i].pin); - - /* same SPI controller might be initialized again */ - spi_initMaster(&WL_SPI, &spiOptions); - spi_selectionMode(&WL_SPI, 0, 0, 0); -#endif - -#if defined(AT45DBX_SPI) - spi_enable(AT45DBX_SPI); - - /* put up flash reset pin */ - gpio_set_gpio_pin(AT45DBX_CHIP_RESET); -#endif - -#if defined(WL_SPI) - spi_enable(&WL_SPI); -#endif -} - - -static void init_rs232(void) -{ -#ifndef NO_SERIAL -#if defined(BOARD_RS232_0) - const gpio_map_t BOARD_RS232_0_GPIO_MAP = { - BOARD_RS232_0_TX, - BOARD_RS232_0_RX, -#if defined(BOARD_RS232_0_RTS) && defined (BOARD_RS232_0_CTS) - BOARD_RS232_0_RTS, - BOARD_RS232_0_CTS -#endif - - }; -#endif - -#if defined(BOARD_RS232_1) - const gpio_map_t BOARD_RS232_1_GPIO_MAP = { - BOARD_RS232_1_TX, - BOARD_RS232_1_RX -#if defined(BOARD_RS232_1_RTS) && defined (BOARD_RS232_1_CTS) - BOARD_RS232_1_RTS, - BOARD_RS232_1_CTS -#endif - }; -#endif - -#if defined(BOARD_RS232_0) - gpio_enable_module(BOARD_RS232_0_GPIO_MAP, - sizeof(BOARD_RS232_0_GPIO_MAP) / - sizeof(BOARD_RS232_0_GPIO_MAP[0])); -#endif - -#if defined(BOARD_RS232_1) - gpio_enable_module(BOARD_RS232_1_GPIO_MAP, - sizeof(BOARD_RS232_1_GPIO_MAP) / - sizeof(BOARD_RS232_1_GPIO_MAP[0])); -#endif -#endif /* NO_SERIAL */ -} - -static void init_printk(void) -{ -#ifndef NO_SERIAL -#if defined(CONFIG_CONSOLE_PORT) - const usart_options_t usart_options = { - .baudrate = 57600, - .charlength = 8, - .paritytype = USART_NO_PARITY, - .stopbits = USART_1_STOPBIT, - .channelmode = USART_NORMAL_CHMODE - }; - usart_init_rs232(&CONFIG_CONSOLE_PORT, &usart_options, FPBA_HZ); -#endif -#endif /* NO_SERIAL */ -} - -void board_init(void) -{ - - init_exceptions(); - init_hmatrix(); - init_sys_clocks(); - init_interrupts(); - - init_rs232(); - init_printk(); - -#ifdef WITH_SDRAM - sdramc_init(FHSB_HZ); -#endif - init_spi(); -} diff --git a/firmwares/wifishield/wifiHD/src/board_init.h b/firmwares/wifishield/wifiHD/src/board_init.h deleted file mode 100644 index 05a6609..0000000 --- a/firmwares/wifishield/wifiHD/src/board_init.h +++ /dev/null @@ -1,313 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef STARTUP_H -#define STARTUP_H - -#include -#include /* defines SPB104, SPB105 */ - -void board_init(void); - - - -/* - * - * EVK1100 - * --------------------------------------------------------------------------- - * - */ -#if BOARD == EVK1100 - -/* USART0 physical assignment */ -#define BOARD_RS232_0 AVR32_USART1 -#define BOARD_RS232_0_TX \ - { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION } -#define BOARD_RS232_0_RX \ - { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION } - -/* USART1 physical assignment */ -#define BOARD_RS232_1 AVR32_USART0 -#define BOARD_RS232_1_TX \ - { AVR32_USART0_TXD_0_0_PIN, AVR32_USART0_TXD_0_0_FUNCTION } -#define BOARD_RS232_1_RX \ - { AVR32_USART0_RXD_0_0_PIN, AVR32_USART0_RXD_0_0_FUNCTION }, - -/* Clocks */ -#define USE_PLL -#define OSC 0 -#define PLL_MUL 10 - -/* Wifi (SPB104 only) */ -#if defined(EXT_BOARD) -#if EXT_BOARD == SPB104 -#define WL_SPI AVR32_SPI1 /* Pin 8 NC, so no irq support if using SD-slot */ -#define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */ -#define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX -#define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX -#define WL_SPI_CS 1 -#define WL_SPI_NPCS0 { AVR32_SPI1_NPCS_0_0_PIN, AVR32_SPI1_NPCS_0_0_FUNCTION } -#define WL_SPI_NPCS { AVR32_SPI1_NPCS_1_0_PIN, AVR32_SPI1_NPCS_1_0_FUNCTION } -#define WL_SPI_MISO { AVR32_SPI1_MISO_0_0_PIN, AVR32_SPI1_MISO_0_0_FUNCTION } -#define WL_SPI_MOSI { AVR32_SPI1_MOSI_0_0_PIN, AVR32_SPI1_MOSI_0_0_FUNCTION } -#define WL_SPI_SCK { AVR32_SPI1_SCK_0_0_PIN, AVR32_SPI1_SCK_0_0_FUNCTION } -#endif -#endif /* EXT_BOARD */ - - - - - - -/* - * - * EVK1101 - * --------------------------------------------------------------------------- - * - */ -#elif BOARD == EVK1101 - -/* USART0 physical assignment */ -#define BOARD_RS232_0 AVR32_USART1 -#define BOARD_RS232_0_TX \ - { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION } -#define BOARD_RS232_0_RX \ - { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION } - -/* Clocks */ -#define USE_PLL -#define OSC 0 -#define PLL_MUL 9 - -/* Wifi (SPB104 only) */ -#if defined(EXT_BOARD) -#if EXT_BOARD == SPB104 /* Pin 8 NC, so no irq support if using SD-slot */ -#define WL_SPI AVR32_SPI -#define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */ -#define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI_TX -#define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI_RX -#define WL_SPI_CS 1 -#if EXT_BOARD == SPB105 - #define WL_SHUTDOWN_PIN AVR32_PIN_PA06 - #define WL_POWER_PIN AVR32_PIN_PA30 -#endif -#define WL_SPI_NPCS0 { AVR32_SPI_NPCS_0_0_PIN, AVR32_SPI_NPCS_0_0_FUNCTION } -#define WL_SPI_NPCS { AVR32_SPI_NPCS_1_0_PIN, AVR32_SPI_NPCS_1_0_FUNCTION } -#define WL_SPI_MISO { AVR32_SPI_MISO_0_0_PIN, AVR32_SPI_MISO_0_0_FUNCTION } -#define WL_SPI_MOSI { AVR32_SPI_MOSI_0_0_PIN, AVR32_SPI_MOSI_0_0_FUNCTION } -#define WL_SPI_SCK { AVR32_SPI_SCK_0_0_PIN, AVR32_SPI_SCK_0_0_FUNCTION } -#endif -#endif /* EXT_BOARD */ - - - - - - - -/* - * - * EVK1104 - * --------------------------------------------------------------------------- - * - */ -#elif BOARD == EVK1104 /* EVK1104 */ - -/* USART0 physical assignment */ -#define BOARD_RS232_0 AVR32_USART1 -#define BOARD_RS232_0_TX \ - { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION } -#define BOARD_RS232_0_RX \ - { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION } - -/* Clocks */ -#define USE_PLL -#define OSC 0 -#define PLL_MUL 9 /* for some reason we cant use 66 MHz */ - -/* Wifi (SDIO: SPB104 only; SPI: SPB105 only) */ -#if defined(EXT_BOARD) -#if EXT_BOARD == SPB105 - #define WL_SPI AVR32_SPI0 - #define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI0_TX - #define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI0_RX - #define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */ - #define WL_SHUTDOWN_PIN AVR32_PIN_PA17 /* Pin 8 on RF-head -> Pin 4 on wifi */ - #define WL_IRQ_PIN AVR32_PIN_PA18 /* Pin 6 on RF-head -> Pin 3 on wifi */ - #define WL_IRQ AVR32_GPIO_IRQ_2 - #define WL_SPI_CS 3 - #define WL_SPI_NPCS { AVR32_SPI0_NPCS_3_1_PIN, AVR32_SPI0_NPCS_3_1_FUNCTION } - #define WL_SPI_MISO { AVR32_SPI0_MISO_0_0_PIN, AVR32_SPI0_MISO_0_0_FUNCTION } - #define WL_SPI_MOSI { AVR32_SPI0_MOSI_0_0_PIN, AVR32_SPI0_MOSI_0_0_FUNCTION } - #define WL_SPI_SCK { AVR32_SPI0_SCK_0_0_PIN, AVR32_SPI0_SCK_0_0_FUNCTION } -#elif EXT_BOARD == SPB104 - #ifdef SDIO_SLOT_A - #define WL_SDIO_CLK { AVR32_MCI_CLK_0_PIN, AVR32_MCI_CLK_0_FUNCTION } - #define WL_SDIO_CMD { AVR32_MCI_CMD_0_PIN, AVR32_MCI_CMD_0_FUNCTION } - #define WL_SDIO_DAT0 { AVR32_MCI_DATA_0_PIN, AVR32_MCI_DATA_0_FUNCTION } - #define WL_SDIO_DAT1 { AVR32_MCI_DATA_1_PIN, AVR32_MCI_DATA_1_FUNCTION } - #define WL_SDIO_DAT2 { AVR32_MCI_DATA_2_PIN, AVR32_MCI_DATA_2_FUNCTION } - #define WL_SDIO_DAT3 { AVR32_MCI_DATA_3_PIN, AVR32_MCI_DATA_3_FUNCTION } - #else - #define WL_SDIO_CLK { AVR32_MCI_CLK_0_PIN, AVR32_MCI_CLK_0_FUNCTION } - #define WL_SDIO_CMD { AVR32_MCI_CMD_1_0_PIN, AVR32_MCI_CMD_1_0_FUNCTION } - #define WL_SDIO_DAT0 { AVR32_MCI_DATA_8_0_PIN, AVR32_MCI_DATA_8_0_FUNCTION } - #define WL_SDIO_DAT1 { AVR32_MCI_DATA_9_0_PIN, AVR32_MCI_DATA_9_0_FUNCTION } - #define WL_SDIO_DAT2 { AVR32_MCI_DATA_10_0_PIN, AVR32_MCI_DATA_10_0_FUNCTION } - #define WL_SDIO_DAT3 { AVR32_MCI_DATA_11_0_PIN, AVR32_MCI_DATA_11_0_FUNCTION } - #endif -#endif -#endif /* EXT_BOARD */ - - - - - - - -/* - * - * EVK1105 - * --------------------------------------------------------------------------- - * - */ -#elif BOARD == EVK1105 /* EVK1105 */ - - -/* USART0 physical assignment */ -#define BOARD_RS232_0 AVR32_USART0 -#define BOARD_RS232_0_TX \ - { AVR32_USART0_TXD_0_0_PIN, AVR32_USART0_TXD_0_0_FUNCTION } -#define BOARD_RS232_0_RX \ - { AVR32_USART0_RXD_0_0_PIN, AVR32_USART0_RXD_0_0_FUNCTION } - -/* Clocks */ -#define USE_PLL -#define OSC 1 -#define PLL_MUL 10 - -/* Wifi SPB104/SPB105 */ -#if defined(EXT_BOARD) - #define WL_SPI AVR32_SPI0 - #define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI0_TX - #define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI0_RX - #if EXT_BOARD == SPB105 - #define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */ - #define WL_SHUTDOWN_PIN AVR32_PIN_PB31 /* Pin 8 on RF-head -> Pin 4 on wifi */ - #define WL_IRQ_PIN AVR32_PIN_PB30 /* Pin 6 on RF-head -> Pin 3 on wifi */ - #define WL_IRQ AVR32_GPIO_IRQ_7 - #define WL_SPI_CS 2 - #elif EXT_BOARD == SPB104 - #define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */ - #define WL_SPI_CS 1 - #endif - #define WL_SPI_NPCS0 { AVR32_SPI0_NPCS_0_0_PIN, AVR32_SPI0_NPCS_0_0_FUNCTION } - #if WL_SPI_CS == 1 - #define WL_SPI_NPCS { AVR32_SPI0_NPCS_1_0_PIN, AVR32_SPI0_NPCS_1_0_FUNCTION } - #elif WL_SPI_CS == 2 - #define WL_SPI_NPCS { AVR32_SPI0_NPCS_2_0_PIN, AVR32_SPI0_NPCS_2_0_FUNCTION } - #endif - #define WL_SPI_MISO { AVR32_SPI0_MISO_0_0_PIN, AVR32_SPI0_MISO_0_0_FUNCTION } - #define WL_SPI_MOSI { AVR32_SPI0_MOSI_0_0_PIN, AVR32_SPI0_MOSI_0_0_FUNCTION } - #define WL_SPI_SCK { AVR32_SPI0_SCK_0_0_PIN, AVR32_SPI0_SCK_0_0_FUNCTION } -#endif /* EXT_BOARD */ - -/* - * - * ARDUINO - * --------------------------------------------------------------------------- - * - */ -#elif BOARD == ARDUINO /* ARDUINO */ - - -/* USART0 physical assignment */ -#define BOARD_RS232_1 AVR32_USART1 -#define BOARD_RS232_1_TX \ - { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION } -#define BOARD_RS232_1_RX \ - { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION } - -/* Clocks */ -#define USE_PLL -#define OSC 0 -#define PLL_MUL 8 - -#define WL_SPI AVR32_SPI1 -#define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX -#define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX - -#define WL_SHUTDOWN_PIN AVR32_PIN_PA09 -#define WL_IRQ_PIN AVR32_PIN_PA03 -/* -* WL_IRQ_# = (WL_IRQ_PIN / 32) * 4 + (WL_IRQ_PIN / 8) % 4 - * 3 => 0 * 4 + 0 = 0 -*/ -#define WL_IRQ AVR32_GPIO_IRQ_0 -#define WL_SPI_CS 0 -#define WL_RESET_PIN AVR32_PIN_PA07 -#define WL_EXTERNAL_RESET 1 - - -#define WL_SPI_NPCS { AVR32_SPI1_NPCS_0_0_PIN, AVR32_SPI1_NPCS_0_0_FUNCTION } -#define WL_SPI_MISO { AVR32_SPI1_MISO_0_0_PIN, AVR32_SPI1_MISO_0_0_FUNCTION } -#define WL_SPI_MOSI { AVR32_SPI1_MOSI_0_0_PIN, AVR32_SPI1_MOSI_0_0_FUNCTION } -#define WL_SPI_SCK { AVR32_SPI1_SCK_0_0_PIN, AVR32_SPI1_SCK_0_0_FUNCTION } - -#endif /* EVKxxxx */ - - - - - - - - - -#if OSC == 0 -# define FOSC FOSC0 /* 12 MHz */ -#else -# define FOSC FOSC1 /* 11.2896 MHz */ -#endif - -#ifdef USE_PLL -# define FMCK_HZ ((FOSC * (PLL_MUL + 1)) / 2) -#else -# define FMCK_HZ FOSC -#endif - -#define FCPU_HZ FMCK_HZ -#define FHSB_HZ FCPU_HZ -#define FPBB_HZ FMCK_HZ -#define FPBA_HZ FMCK_HZ - - -#ifndef CONFIG_CONSOLE_PORT -#define CONFIG_CONSOLE_PORT BOARD_RS232_1 -#endif - -#endif diff --git a/firmwares/wifishield/wifiHD/src/cmd_wl.c b/firmwares/wifishield/wifiHD/src/cmd_wl.c deleted file mode 100644 index a210dec..0000000 --- a/firmwares/wifishield/wifiHD/src/cmd_wl.c +++ /dev/null @@ -1,731 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include "lwip/netif.h" -#include "lwip/dns.h" -#include "debug.h" -#include "ard_spi.h" -#include "ard_tcp.h" -#include "ard_utils.h" - -extern void showTTCPstatus(); - -#define _DNS_CMD_ - -/** - * - */ -cmd_state_t -cmd_scan(int argc, char* argv[], void* ctx) -{ - /* Note that the scan results presented will - * be from the last scan, not this one. - */ - wl_scan(); - print_network_list(); - return CMD_DONE; -} - -cmd_state_t -cmd_debug_toggle(int argc, char* argv[], void* ctx) -{ - extern uint8_t tr_data_trace; - if ( argc != 2 ) { - printk("usage: dt <1|0>\n"); - return CMD_DONE; - } - if ( '0' == argv[1][0] ) { - tr_data_trace = 0; - } - if ( '1' == argv[1][0] ) { - tr_data_trace = 1; - } - return CMD_DONE; -} - -/** - * - */ -cmd_state_t -cmd_connect(int argc, char* argv[], void* ctx) -{ - struct wl_ssid_t ssid; - char desired_ssid[WL_SSID_MAX_LENGTH]; - int len = 0; - - if (argc < 2) { - printk("usage: connect \n"); - return CMD_DONE; - } - - len = join_argv(desired_ssid, sizeof desired_ssid, argc - 1, argv + 1); - if (0 == len) { - return CMD_DONE; - } - - memcpy(ssid.ssid, desired_ssid, len); - ssid.len = len; - /* Start connection manager */ - wl_cm_set_network(&ssid, NULL); - wl_cm_start(); - return CMD_DONE; -} - -#ifdef WFE_6_12 -cmd_state_t -cmd_ibss(int argc, char* argv[], void* ctx) -{ - struct wl_ssid_t ssid; - char desired_ssid[WL_SSID_MAX_LENGTH]; - uint8_t channel; - enum wl_auth_mode amode; - int len = 0; - wl_err_t ret; - - if ( 2 == argc && ! strncmp(argv[1], "none", 4) ) { - printk("Disconnecting\n"); - wl_disconnect(); - wl_cm_stop(); - return CMD_DONE; - } - if (argc < 4) { - printk("usage: ibss \n"); - printk(" ibss none\n"); - return CMD_DONE; - } - - channel = atoi(argv[argc - 2]); - if ( *argv[argc - 1] == '0' ) { - amode = AUTH_MODE_OPEN_SYSTEM; - } else { - amode = AUTH_MODE_SHARED_KEY; - } - len = join_argv(desired_ssid, sizeof desired_ssid, argc - 3, argv + 1); - if (0 == len) { - return CMD_DONE; - } - if ( channel > 14 ) { - printk("Invalid channel %d\n", (int)channel); - return CMD_DONE; - } - printk("%s : Start with ssid \"%s\", channel %d\n", __func__, - desired_ssid, channel); - memcpy(ssid.ssid, desired_ssid, len); - ssid.len = len; - /* Stop the connection manager */ - wl_cm_stop(); - - ret = wl_start_adhoc_net(ssid, channel, amode); - switch (ret) { - case WL_BUSY: - printk("Driver is busy. Already connected?\n"); - break; - case WL_RETRY: - printk("Driver is busy. Retry operation\n"); - break; - case WL_OOM: - printk("Out of memory\n"); - break; - case WL_INVALID_ARGS: - printk("Invalid argument\n"); - break; - case WL_SUCCESS: - break; - default: - printk("Unknown error %d\n", ret); - break; - } - return CMD_DONE; -} -#endif -/** - * - */ -cmd_state_t -cmd_set_ip(int argc, char* argv[], void* ctx) -{ - struct ctx_server *hs = ctx; - struct net_cfg *ncfg = &(hs->net_cfg); - struct ip_addr lwip_addr; - struct netif *nif = ncfg->netif; - - if (argc == 2 && - (strncmp(argv[1], "none", 4) == 0)) { - ncfg->dhcp_enabled = DYNAMIC_IP_CONFIG; - - return CMD_DONE; - } - else if (argc != 4 ) { - printk("usage: ipconfig \n"); - printk(" or : ipconfig none (to enable DHCP)\n"); - return CMD_DONE; - } - - /* IP address */ - lwip_addr = str2ip(argv[1]); - INFO_SPI("nif:%p lwip_addr=0x%x\n", nif, lwip_addr.addr); - netif_set_ipaddr(nif, &lwip_addr); - /* Netmask */ - lwip_addr = str2ip(argv[2]); - netif_set_netmask(nif, &lwip_addr); - /* Default Gateway address */ - lwip_addr = str2ip(argv[3]); - netif_set_gw(nif, &lwip_addr); - /* Disable DHCP */ - ncfg->dhcp_enabled = STATIC_IP_CONFIG; - - return CMD_DONE; -} - -#ifdef WITH_WPA - -/** - * - */ -cmd_state_t -cmd_delpass(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: dpass \n"; - struct wl_network_t net; - char desired_ssid[WL_SSID_MAX_LENGTH]; - int len = 0; - - if (argc != 2) { - printk(usage); - return CMD_DONE; - } - - memset(&net, 0, sizeof net); - memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet); - - len = join_argv(desired_ssid, sizeof desired_ssid, argc - 1, argv + 1); - if (0 == len) { - return CMD_DONE; - } - memcpy(net.ssid.ssid, desired_ssid, len); - net.ssid.len = len; - net.enc_type = ENC_TYPE_AUTO; - if (wl_clear_passphrase(&net) != WL_SUCCESS) { - printk("%s : Failed to delete passphrase\n", __func__); - } - - return CMD_DONE; -} - - -/** - * - */ -cmd_state_t -cmd_setpass(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: wpass \n"; - struct wl_network_t net; - char desired_ssid[WL_SSID_MAX_LENGTH]; - int len = 0; - - if (argc < 3) { - printk(usage); - return CMD_DONE; - } - /* Not really kosher, an ssid may legally contain 0-bytes but - * the console interface does not deal with that. - */ - memset(&net, 0, sizeof net); - memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet); - - len = join_argv(desired_ssid, sizeof desired_ssid, argc - 2, argv + 1); - if (0 == len) { - return CMD_DONE; - } - - memcpy(net.ssid.ssid, desired_ssid, len); - net.ssid.len = len; - net.enc_type = ENC_TYPE_AUTO; - if (wl_set_passphrase(&net, - argv[argc - 1], - strlen(argv[argc - 1]), - ENC_TYPE_AUTO, - AUTH_MODE_AUTO) - != WL_SUCCESS) { - printk("%s : Failed to add passphrase\n", __func__); - } - - return CMD_DONE; -} -#endif - -#ifdef _DNS_CMD_ -void foundHost(const char *name, struct ip_addr *ipaddr, void *callback_arg) -{ - printk("Found Host: name=%s ip=0x%x\n", name, ipaddr->addr); -} - -/** - * - */ -cmd_state_t -cmd_gethostbyname(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: getHost \n"; - char hostname[DNS_MAX_NAME_LENGTH]; - struct ip_addr _addr; - int len = 0; - - if (argc < 2) { - printk(usage); - return CMD_DONE; - } - - len = join_argv(hostname, sizeof hostname, argc - 1, argv + 1); - if (0 == len) { - return CMD_DONE; - } - err_t err = dns_gethostbyname(hostname, &_addr, foundHost, NULL); - if (err == ERR_OK) - { - printk("Found Host: name=%s ip=0x%x\n", hostname, _addr.addr); - } - - return CMD_DONE; -} - -/** - * - */ -cmd_state_t -cmd_setDnsServer(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: setdns [1-2] aaa.bbb.ccc.ddd\n"; - struct ip_addr dnsIp; - int dnsIdx = 0; - - if (argc < 3) { - printk(usage); - return CMD_DONE; - } - - /* DNS IDX */ - dnsIdx = atoi(argv[1])-1; - /* IP address */ - dnsIp = str2ip(argv[2]); - - printk("Set DNS server %d to %s\n", dnsIdx, ip2str(dnsIp)); - dns_setserver(dnsIdx, &dnsIp); - struct ip_addr addr1 = dns_getserver(0); - struct ip_addr addr2 = dns_getserver(1); - - printk("==> DNS1: %s\n", ip2str(addr1), addr1); - printk("==> DNS2: %s\n", ip2str(addr2), addr2); - - return CMD_DONE; -} - -/** - * - */ -cmd_state_t -cmd_startSrv(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: startSrv \n"; - - int port = 0; - int sock = 0; - int protMode = 0; - - if (argc < 4) { - printk(usage); - return CMD_DONE; - } - - /* TCP port */ - port = atoi(argv[1]); - /* socket index */ - sock = atoi(argv[2]); - /* Protocol Mode */ - protMode = atoi(argv[3]); - - printk("Start %s server on port %d sock %d\n", ProtMode2Str(protMode), port, sock); - if (start_server_tcp(port, sock, protMode) == -1) - { - WARN("Start %s server on port %d sock %d FAILED\n", ProtMode2Str(protMode), port, sock); - } - return CMD_DONE; -} - -/** - * - */ -cmd_state_t -cmd_startCli(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: startCli \n"; - struct ip_addr addr = {0}; - int port = 0; - int sock = 0; - int protMode = 0; - - if (argc < 5) { - printk(usage); - return CMD_DONE; - } - - /* IP address */ - addr = str2ip(argv[1]); - /* TCP port */ - port = atoi(argv[2]); - /* socket index */ - sock = atoi(argv[3]); - /* Protocol Mode */ - protMode = atoi(argv[4]); - - printk("Start client on addr 0x%x, port %d sock %d mode %d\n", addr, port, sock, protMode); - if (start_client_tcp(addr.addr, port, sock, protMode) == -1) - { - WARN("Start client on port %d sock %d prot %d mode %d FAILED\n", port, sock, protMode); - } - return CMD_DONE; -} - -#endif - - -/** - * - */ -cmd_state_t -cmd_status(int argc, char* argv[], void* ctx) -{ - struct net_cfg *ncfg = ctx; - struct wl_network_t* net; - uint8_t mac[WL_MAC_ADDR_LENGTH]; - - printk("wl_api version " WL_API_RELEASE_NAME "\n"); - /* print mac address */ - if (wl_get_mac_addr(mac) != WL_SUCCESS) { - printk("failed to get mac address\n"); - }else{ - printk("hw addr: %s\n", mac2str(mac)); - } - - /* print network info */ - net = wl_get_current_network(); - printk("link status: "); - if (!net) { - printk("down\n"); - - }else{ - print_network(net); - } - - /* print ip address */ - if (netif_is_up(netif_default)) - { - printk("ip addr: %s - ", ip2str(netif_default->ip_addr)); - printk("netmask: %s - ", ip2str(netif_default->netmask)); - printk("gateway: %s\n", ip2str(netif_default->gw)); - } - else - printk("ip interface is down\n"); - printk("dhcp : "); - if (ncfg->dhcp_enabled == DYNAMIC_IP_CONFIG) { - printk("enabled\n"); - } - else { - printk("disabled\n"); - } - struct ip_addr addr1 = dns_getserver(0); - struct ip_addr addr2 = dns_getserver(1); - - printk("DNS: %s - ", ip2str(addr1)); - printk("%s\n", ip2str(addr2)); - - showTTCPstatus(); - return CMD_DONE; -} - -#ifdef ADD_CMDS -/** - * - */ -cmd_state_t -cmd_power(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: powersave \n"; - - if (argc < 2) { - printk(usage); - return CMD_DONE; - } - - if (!strcmp(argv[1], "on")) { - if (wl_enable_ps() != WL_SUCCESS) { - printk("could not enable power save\n"); - return CMD_DONE; - } - return CMD_DONE; - } - else if(!strcmp(argv[1], "off")) { - if (wl_disable_ps() != WL_SUCCESS) { - printk("could not disable power save\n"); - return CMD_DONE; - } - return CMD_DONE; - } - - printk(usage); - return CMD_DONE; -} -#endif - -#ifdef ADD_CMDS -/** - * - */ -cmd_state_t -cmd_psconf(int argc, char* argv[], void* ctx) -{ - const char *usage = - "usage: psconf (0/1 default 0)\n" \ - " ([ms] default 10)\n" \ - " ([ms] default 5000)\n"\ - " (0/1 default 1)\n"\ - " ([beacons] default 20)\n"; - - uint8_t use_ps_poll; - uint32_t traffic_timeout; - uint32_t ps_delay; - uint8_t rx_all_dtim; - uint16_t listen_interval; - - if (argc < 6) { - printk(usage); - return CMD_DONE; - } - - use_ps_poll = atoi(argv[1]); - traffic_timeout = atoi(argv[2]); - ps_delay = atoi(argv[3]); - rx_all_dtim = atoi(argv[4]); - listen_interval = atoi(argv[5]); - - if (use_ps_poll > 1) { - printk(usage); - return CMD_DONE; - } - - if (rx_all_dtim > 1) { - printk(usage); - return CMD_DONE; - } - - if (wl_conf_ps(use_ps_poll, traffic_timeout, ps_delay, - rx_all_dtim, listen_interval) != WL_SUCCESS) - printk("configuration failed\n"); - - return CMD_DONE; -} -#endif - -/** - * - */ -cmd_state_t -cmd_setkey(int argc, char* argv[], void* ctx) -{ - int idx, len; - char key[13]; - struct wl_mac_addr_t bssid; - const char *usage = "usage: setkey \n\t "\ - "or: setkey none\n"; - - memset(&bssid.octet, 0xff, sizeof bssid.octet); - if (argc == 2 && strcmp(argv[1], "none") == 0) { - printk("Deleting WEP keys\n"); - wl_delete_wep_key(0, &bssid); - wl_delete_wep_key(1, &bssid); - wl_delete_wep_key(2, &bssid); - wl_delete_wep_key(3, &bssid); - return CMD_DONE; - } - if (argc < 3) { - printk(usage); - return CMD_DONE; - } - idx = atoi(argv[1]); - len = strlen(argv[2]); - /* Pass phrase? */ - if ( 5 == len || 13 == len ) { - strncpy(key, argv[2], len); - } - /* Otherwise it's a hex string */ - else { - len = ascii_to_key(key, argv[2]); - if (0 == len || idx > 3 || idx < 0 || (idx == 0 && *argv[1] != '0')) { - printk(usage); - return CMD_DONE; - } - if (len != 5 && len != 13) { - printk(" WEP key must be 10 (WEP-40) or 26 (WEP-104) digits\n"); - return CMD_DONE; - } - } - wl_add_wep_key(idx, len, key, &bssid); - wl_set_default_wep_key(idx); - - return CMD_DONE; -} - -cmd_state_t -cmd_debug(int argc, char* argv[], void* ctx) -{ - int level; - const char *usage = "usage: debug
\n\t"\ - "section: init, cm, spi, tcp , util, warn\n\t" - "level : 0 (off), 1 (on), 2 (verbose)\n\t" - "or: debug print/on/off\n"; - - if (argc == 2 && strcmp(argv[1], "off") == 0) { - printk("Debug OFF\n"); - INIT_DEBUG_VARIABLES() - return CMD_DONE; - }else if (argc == 2 && strcmp(argv[1], "print") == 0) { - PRINT_DEBUG_VARIABLES() - return CMD_DONE; - }else if (argc == 2 && strcmp(argv[1], "on") == 0) { - printk("Debug ON\n"); - TURNON_DEBUG_VARIABLES(); - return CMD_DONE; - } - if (argc < 3) { - printk(usage); - return CMD_DONE; - } - level = atoi(argv[2]); - if (argc == 3 && strcmp(argv[1], "init") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_INIT_FLAG); - }else if (argc == 3 && strcmp(argv[1], "spi") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_SPI_FLAG); - }else if (argc == 3 && strcmp(argv[1], "tcp") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_TCP_FLAG); - }else if (argc == 3 && strcmp(argv[1], "cm") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_CM_FLAG); - }else if (argc == 3 && strcmp(argv[1], "util") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_UTIL_FLAG); - }else if (argc == 3 && strcmp(argv[1], "warn") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_WARN_FLAG); - } - return CMD_DONE; -} - -extern void dumpPbuf(uint8_t sock); - -/** - * - */ -cmd_state_t -cmd_dumpBuf(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: dumpPbuf [sock]\n\t"\ - "sock: socket Number\n"; - - if (argc == 2 && strcmp(argv[1], "all") == 0) { - printk("Dump All Buffers\n"); - int i = 0; - for (; i= 2) { - - uint8_t sock = atoi(argv[1]); - printk("Socket: %d\n", sock); - - if (argc >= 3) { - uint8_t patternType = atoi(argv[2]); - printk("PatternType: %d\n", patternType); - if (patternType == 1) - { - insertBuf(sock, (uint8_t*)pattern2[0], strlen(pattern2[0])); - insertBuf(sock, (uint8_t*)pattern2[1], strlen(pattern2[1])); - insertBuf(sock, (uint8_t*)pattern2[2], strlen(pattern2[2])); - } - if (patternType == 2) - { - mergeBuf(sock, NULL, NULL); - } - }else{ - if (sock < MAX_SOCK_NUM) - { - sendUdpData(getTTCP(sock, TTCP_MODE_TRANSMIT), (uint8_t*)pattern, sizeof(pattern)/sizeof(char)); - } - } - - } - return CMD_DONE; -} diff --git a/firmwares/wifishield/wifiHD/src/cmd_wl.h b/firmwares/wifishield/wifiHD/src/cmd_wl.h deleted file mode 100644 index a1d1a0f..0000000 --- a/firmwares/wifishield/wifiHD/src/cmd_wl.h +++ /dev/null @@ -1,66 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef CMD_CM_H -#define CMD_CM_H - -#include -#include "netif/wlif.h" - -/*! A pointer to a struct of type "struct net_cfg" should be passed as - * the ctx pointer in the callbacks below. The struct must have a - * single instance per netif. - */ -#define _DNS_CMD_ - -cmd_state_t cmd_scan(int argc, char* argv[], void* ctx); -cmd_state_t cmd_connect(int argc, char* argv[], void* ctx); -cmd_state_t cmd_set_ip(int argc, char* argv[], void* ctx); -cmd_state_t cmd_setkey(int argc, char* argv[], void* ctx); -cmd_state_t cmd_status(int argc, char* argv[], void* ctx); -cmd_state_t cmd_power(int argc, char* argv[], void* ctx); -cmd_state_t cmd_psconf(int argc, char* argv[], void* ctx); -cmd_state_t cmd_setpass(int argc, char* argv[], void* ctx); -cmd_state_t cmd_delpass(int argc, char* argv[], void* ctx); -cmd_state_t cmd_debug(int argc, char* argv[], void* ctx); -cmd_state_t cmd_debug_toggle(int argc, char* argv[], void* ctx); -cmd_state_t cmd_statSpi(int argc, char* argv[], void* ctx); -cmd_state_t cmd_resetStatSpi(int argc, char* argv[], void* ctx); -cmd_state_t cmd_gethostbyname(int argc, char* argv[], void* ctx); -cmd_state_t cmd_setDnsServer(int argc, char* argv[], void* ctx); -cmd_state_t cmd_startSrv(int argc, char* argv[], void* ctx); -cmd_state_t cmd_startCli(int argc, char* argv[], void* ctx); -cmd_state_t cmd_dumpBuf(int argc, char* argv[], void* ctx); -cmd_state_t cmd_sendUdpData(int argc, char* argv[], void* ctx); -#ifdef WFE_6_12 -cmd_state_t cmd_ibss(int argc, char* argv[], void* ctx); -#endif - - -#endif diff --git a/firmwares/wifishield/wifiHD/src/console.c b/firmwares/wifishield/wifiHD/src/console.c deleted file mode 100644 index e54943f..0000000 --- a/firmwares/wifishield/wifiHD/src/console.c +++ /dev/null @@ -1,212 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#define MAX_CMD_CONSOLE_NUM 15 -struct { - cmd_cb_t cb; - const char* str; - void* ctx; -} cmd_list[MAX_CMD_CONSOLE_NUM] = { { 0 } }; - -#ifndef CMD_MAX_LEN -#define CMD_MAX_LEN 80 -#endif -extern int board_putchar(char c); -int io_getc(char *c) -{ - int ci; - int status; - status = usart_read_char(&CONFIG_CONSOLE_PORT, &ci); - if (status == USART_RX_EMPTY) - return 1; - - if (status == USART_RX_ERROR) { - CONFIG_CONSOLE_PORT.cr = AVR32_USART_CR_RSTSTA_MASK; - return 1; - } - - if (ci == '\r') { - board_putchar('\n'); - /* Echo char. */ - } else if (ci == '\b') { - board_putchar(ci); - board_putchar(' '); - board_putchar(ci); - } else - board_putchar(ci); - - - *c = ci; - return 0; -} - -static uint8_t is_initialized = 0; - -char* console_gets() -{ - static char buf[CMD_MAX_LEN]; - static int pos = 0; - char c; - - for (;;) { - if (io_getc(&c)) - return NULL; - - if (c == '\r' || c == '\n') { - buf[pos] = 0; - pos = 0; - return buf; - } - if (c == '\b') { - pos -= 1; - if (pos < 0) pos = 0; - buf[pos] = 0; - } - else - buf[pos++] = c; - if (pos == sizeof(buf)) - pos = 0; - } - return NULL; -} - -int console_add_cmd(const char* str, cmd_cb_t cb, void* ctx) -{ - uint32_t i; - for (i = 0; i < ARRAY_SIZE(cmd_list); i++) - if (!cmd_list[i].cb) - break; - - if (i == ARRAY_SIZE(cmd_list)) - return -1; - - cmd_list[i].str = str; - cmd_list[i].cb = cb; - cmd_list[i].ctx = ctx; - return 0; -} - -void console_init(void) -{ - printk("\n$ "); - is_initialized = 1; -} - -void console_init_silent(void) { - is_initialized = 1; -} - -int console_schedule_cmd(char *cmd, int interactive) { -#define MAX_ARGS 16 - static int argc, i; - static char* argv[MAX_ARGS]; - static char *buf; - static enum { INPUT, RUN } state = INPUT; - - switch (state) { - case INPUT: { - char* token; - if (NULL == cmd) { - return 0; - } - buf = strdup(cmd); - if (!buf) - return 0; - if (!strlen(buf)) { - interactive ? printk("$ ") : 0; - free(buf); - return 0; - } -#ifdef WIFI_DEBUG_ON - printk("%s : Scheduling command \"%s\"\n", - __func__, - buf); -#endif - for (i = 0; i < ARRAY_SIZE(cmd_list); i++) - if(cmd_list[i].str && !strncmp(cmd_list[i].str, buf, min(strlen(cmd_list[i].str), strlen(buf)))) - break; - - if (ARRAY_SIZE(cmd_list) == 0) { - printk("No commands available. Is the WiFi card responding?\n"); - } - if (i == ARRAY_SIZE(cmd_list)) { - if (interactive) { - printk("available commands:\n"); - for (i = 0; i < ARRAY_SIZE(cmd_list); i++) - if (cmd_list[i].cb) - printk(" %s\n", cmd_list[i].str); - printk("$ "); - } - free(buf); - return 0; - } - - for (token = strtok(buf, " "); token != NULL; - token = strtok(NULL, " ")) { - argv[argc] = token; - argc++; - if (argc == MAX_ARGS) - break; - } - - state = RUN; - } /* fall through */ - - case RUN: { - cmd_state_t s = cmd_list[i].cb(argc, argv, cmd_list[i].ctx); - if (s == CMD_INPROGRESS) - return 1; - - interactive ? printk("$ ") : 0; - - argc = 0; - memset(argv, 0, sizeof argv); - free(buf); - state = INPUT; - } - } - - return 1; -} - - -void console_poll(void) -{ - char *buf; - buf = console_gets(); - console_schedule_cmd(buf, 1); -} diff --git a/firmwares/wifishield/wifiHD/src/console.h b/firmwares/wifishield/wifiHD/src/console.h deleted file mode 100644 index 79bfedb..0000000 --- a/firmwares/wifishield/wifiHD/src/console.h +++ /dev/null @@ -1,46 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef CONSOLE_H -#define CONSOLE_H - - -typedef enum { - CMD_DONE, - CMD_INPROGRESS -} cmd_state_t; - -typedef cmd_state_t (*cmd_cb_t)(int argc, char* argv[], void* ctx); - -void console_init(void); -void console_init_silent(void); -char* console_gets(void); -int console_add_cmd(const char* str, cmd_cb_t cb, void* ctx); -int console_schedule_cmd(char *cmd, int interactive); -void console_poll(void); - -#endif diff --git a/firmwares/wifishield/wifiHD/src/debug.h b/firmwares/wifishield/wifiHD/src/debug.h deleted file mode 100644 index 154b799..0000000 --- a/firmwares/wifishield/wifiHD/src/debug.h +++ /dev/null @@ -1,191 +0,0 @@ -//*********************************************/ -// -// File: debug.h -// -// Author: Domenico La Fauci -// -//********************************************/ - - -#ifndef Debug_H -#define Debug_H - -#include -#include - -#define INFO_INIT_FLAG 1 -#define INFO_TCP_FLAG 2 -#define INFO_SPI_FLAG 4 -#define INFO_CM_FLAG 8 -#define INFO_UTIL_FLAG 16 - -#define INFO_D (1<<0xD) // Debug -#define INFO_E (1<<0xE) // Error -#define INFO_WARN_FLAG (1<<0xF) // Warning -#define DEFAULT_INFO_FLAG 0 //INFO_WARN_FLAG - -#ifdef _DEBUG_ -#define DEFINE_DEBUG_VARIABLES() \ -uint16_t enableDebug = DEFAULT_INFO_FLAG | INFO_WARN_FLAG; \ -uint16_t verboseDebug = 0; \ -uint16_t dumpDebug = 0; \ -uint16_t pollDebug = 0; -#else -#define DEFINE_DEBUG_VARIABLES() \ -uint16_t enableDebug = DEFAULT_INFO_FLAG; \ -uint16_t verboseDebug = 0; \ -uint16_t dumpDebug = 0; \ -uint16_t pollDebug = 0; -#endif - -#define INIT_DEBUG_VARIABLES() \ - enableDebug = DEFAULT_INFO_FLAG | INFO_WARN_FLAG; \ - verboseDebug = 0; \ - dumpDebug = 0; pollDebug = 0; - - -#define PRINT_DEBUG_VARIABLES() \ - printk("Debug enabled: 0x%x\n", enableDebug); \ - printk("Verbose enabled: 0x%x\n", verboseDebug); \ - printk("Dump enabled: 0x%x\n", dumpDebug); \ - printk("POoll enabled: 0x%x\n", pollDebug); - -#define TURNON_DEBUG_VARIABLES() \ - enableDebug = 0xff; - -extern uint16_t enableDebug; -extern uint16_t verboseDebug; -extern uint16_t dumpDebug; -extern uint16_t pollDebug; - -#define ENABLE_DEBUG_LEVEL 1 -#define VERBOSE_DEBUG_LEVEL 2 -#define DUMP_DEBUG_LEVEL 3 -#define POLL_DEBUG_LEVEL 4 - -#define CHECK_DEBUG(VAR, LEVEL, LEVEL_LIMIT, FLAG) \ - do{ \ - if (LEVEL >= LEVEL_LIMIT) VAR |= FLAG; \ - else VAR &= ~FLAG; \ - }while(0); - -#define CHECK_ENA_DEBUG(LEVEL, FLAG) \ - CHECK_DEBUG(enableDebug, LEVEL, ENABLE_DEBUG_LEVEL, FLAG) -#define CHECK_VERB_DEBUG(LEVEL, FLAG) \ - CHECK_DEBUG(verboseDebug, LEVEL, VERBOSE_DEBUG_LEVEL, FLAG) -#define CHECK_DUMP_DEBUG(LEVEL, FLAG) \ - CHECK_DEBUG(dumpDebug, LEVEL, DUMP_DEBUG_LEVEL, FLAG) -#define CHECK_POLL_DEBUG(LEVEL, FLAG) \ - CHECK_DEBUG(pollDebug, LEVEL, POLL_DEBUG_LEVEL, FLAG) - - -#define CHECK_DEBUG_LEVEL(LEVEL, INFO_FLAG) \ - CHECK_ENA_DEBUG(LEVEL, INFO_FLAG) \ - CHECK_VERB_DEBUG(LEVEL, INFO_FLAG) \ - CHECK_DUMP_DEBUG(LEVEL, INFO_FLAG) \ - CHECK_POLL_DEBUG(LEVEL, INFO_FLAG) - -#ifdef _INFO_DEBUG_ -#define PRINT_DEBUG(msg, args...) do { \ - printk("[%s] " msg , __func__ , ##args ); \ -} while (0) - -#define INFO_DEBUG(msg, args...) do { \ - printk("I-[%s] " msg , __func__ , ##args ); \ -} while (0) - -#define WARN_DEBUG(msg, args...) do { \ - printk("W-[%s] " msg , __func__ , ##args ); \ -} while (0) - -#else -do { }while(0); -#endif - -#define IF_DEBUG(X,Y) do { \ -if (enableDebug & INFO_##X##_FLAG) \ -Y; \ -} while (0) - -#define IF_DEBUG_VER(X,Y) do { \ -if (verboseDebug & INFO_##X##_FLAG) \ -Y; \ -} while (0) - -#define IF_DEBUG_DUMP(X,Y) do { \ -if (dumpDebug & INFO_##X##_FLAG) \ -Y; \ -} while (0) - -#define IF_DEBUG_POLL(X,Y) do { \ -if (pollDebug & INFO_##X##_FLAG) {\ -Y; \ -}} while (0) - - - -#define IF_WARN(Y) IF_DEBUG(WARN,Y) -#define IF_WARN_VER(Y) IF_DEBUG_VER(WARN,Y) -#define IF_TCP(Y) IF_DEBUG(TCP,Y) -#define IF_TCP_VER(Y) IF_DEBUG_VER(TCP,Y) -#define IF_TCP_POLL(Y) IF_DEBUG_POLL(TCP,Y) -#define IF_TCP_DUMP(Y) IF_DEBUG_DUMP(TCP,Y) -#define IF_SPI(Y) IF_DEBUG(SPI,Y) -#define IF_SPI_VER(Y) IF_DEBUG_VER(SPI,Y) -#define IF_SPI_DUMP(Y) IF_DEBUG_DUMP(SPI,Y) -#define IF_SPI_POLL(Y) IF_DEBUG_POLL(SPI,Y) -#define IF_UTIL(Y) IF_DEBUG(UTIL,Y) -#define IF_UTIL_VER(Y) IF_DEBUG_VER(UTIL,Y) - -#define WARN(msg, args...) IF_DEBUG(WARN,WARN_DEBUG(msg, ##args)) -#define WARN_VER(msg, args...) IF_DEBUG_VER(WARN,WARN_DEBUG(msg, ##args)) -#define WARN_POLL(msg, args...) IF_DEBUG_POLL(WARN,WARN_DEBUG(msg, ##args)) -#if 0 // disable to reduce the size of binary -#define INFO_INIT(msg, args...) IF_DEBUG(INIT,PRINT_DEBUG(msg, ##args)) -#define INFO_INIT_VER(msg, args...) IF_DEBUG_VER(INIT,PRINT_DEBUG(msg, ##args)) -#else -#define INFO_INIT(msg, args...) -#define INFO_INIT_VER(msg, args...) -#endif -#define INFO_TCP(msg, args...) IF_DEBUG(TCP,PRINT_DEBUG(msg, ##args)) -#define INFO_TCP_VER(msg, args...) IF_DEBUG_VER(TCP,PRINT_DEBUG(msg, ##args)) -#define INFO_TCP_DUMP(msg, args...) IF_DEBUG_DUMP(TCP,PRINT_DEBUG(msg, ##args)) -#define INFO_TCP_POLL(msg, args...) IF_DEBUG_POLL(TCP,PRINT_DEBUG(msg, ##args)) -#define INFO_SPI(msg, args...) IF_DEBUG(SPI,PRINT_DEBUG(msg, ##args)) -#define INFO_SPI_VER(msg, args...) IF_DEBUG_VER(SPI,PRINT_DEBUG(msg, ##args)) -#define INFO_SPI_DUMP(msg, args...) IF_DEBUG_DUMP(SPI,PRINT_DEBUG(msg, ##args)) -#define INFO_SPI_POLL(msg, args...) IF_DEBUG_POLL(SPI,PRINT_DEBUG(msg, ##args)) -#define INFO_UTIL(msg, args...) IF_DEBUG(UTIL,PRINT_DEBUG(msg, ##args)) -#define INFO_UTIL_VER(msg, args...) IF_DEBUG_VER(UTIL,PRINT_DEBUG(msg, ##args)) -#define CM_DPRINTF(msg, args...) IF_DEBUG(CM,PRINT_DEBUG(msg, ##args)) - -extern void dump(char* _buf, uint16_t _count); - -#define _DUMP(BUF, COUNT) do { \ - printk("[%s]: ", __func__); \ - dump((char*)BUF, COUNT); \ - } while (0) - -#ifdef _APP_DEBUG_ -#define DUMP(BUF, COUNT) _DUMP(BUF, COUNT) -#else -#define DUMP(BUF, COUNT) do {} while (0) -#endif -#endif - -#define DUMP_TCP(BUF, COUNT) IF_TCP_DUMP(_DUMP(BUF, COUNT)) -#define DUMP_SPI(BUF, COUNT) IF_SPI_DUMP(_DUMP(BUF, COUNT)) - -#define DUMP_SPI_CMD(BUF) do { \ - if (dumpDebug & INFO_SPI_FLAG) { \ - int i = 0; \ - for (; i < CMD_MAX_LEN; ++i) \ - { \ - printk("0x%x ", BUF[i]); \ - if (BUF[i] == END_CMD) \ - break; \ - } \ - printk("\n"); \ - } \ -}while(0); - diff --git a/firmwares/wifishield/wifiHD/src/fw_download.h b/firmwares/wifishield/wifiHD/src/fw_download.h deleted file mode 100644 index e36214f..0000000 --- a/firmwares/wifishield/wifiHD/src/fw_download.h +++ /dev/null @@ -1,38 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef FW_DOWNLOAD_H -#define FW_DOWNLOAD_H - -#include -#include - -int fw_download_init(void); -size_t fw_read_cb(void *ctx, const uint8_t** buf, size_t offset, size_t len); -#endif diff --git a/firmwares/wifishield/wifiHD/src/fw_download_extflash.c b/firmwares/wifishield/wifiHD/src/fw_download_extflash.c deleted file mode 100644 index d679271..0000000 --- a/firmwares/wifishield/wifiHD/src/fw_download_extflash.c +++ /dev/null @@ -1,82 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#include -#include -#include -#include -#include - -int fw_download_init(void) -{ - nvram_init(); - return 0; -} - -#define BUF_SIZE 512 - - -size_t fw_read_cb(void* ctx, - const uint8_t** buf, - size_t offset, - size_t len) -{ - static uint8_t* fw_buf = NULL; - size_t rlen; - /* when firmware download is completed, this function will be - * invoked one additional time with buf set to NULL. we can - * free the firmware buffer at this time since it's no longer - * needed. - */ - if (NULL == buf) { - if (fw_buf) { - free(fw_buf); - fw_buf = NULL; - } - return 0; - } - - /* first call? then initialize flash and allocate a buffer to hold - * firmware data. - */ - if (fw_buf == NULL) { - fw_buf = malloc(BUF_SIZE); - - if (fw_buf == NULL) { - printk("could not allocate firmware buffer\n"); - return 0; - } - } - /* read at most a full buffer */ - rlen = len > BUF_SIZE ? BUF_SIZE : len; - - /* read data and update output parameters */ - nvram_read(offset, fw_buf, rlen); - *buf = fw_buf; - - return rlen; -} diff --git a/firmwares/wifishield/wifiHD/src/license.txt b/firmwares/wifishield/wifiHD/src/license.txt deleted file mode 100644 index e57439f..0000000 --- a/firmwares/wifishield/wifiHD/src/license.txt +++ /dev/null @@ -1,42 +0,0 @@ - Copyright (C) 2009, H&D Wireless AB All rights reserved. - - The license to use this software in whole and in part and to - redistribute it in any form follows with the WiFi HW module from H&D - Wireless and is granted under the following restrictions: - - 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. The name of H&D Wireless AB may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - 4. The software may only be used together with hardware from H&D - Wireless all other use is prohibited. - - 5. The license to use and redistribute the software is granted - together with the purchase of a hardware platform on a one to one - basis - - 6. The binary code may not be reversed engineered or by other means - copied to circumvent this license. - - THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT - SHALL HD WIRELESS AB 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. - - For more information regarding this software license Contact H&D - Wireless AB (support@hd-wireless.se). diff --git a/firmwares/wifishield/wifiHD/src/lwip_setup.c b/firmwares/wifishield/wifiHD/src/lwip_setup.c deleted file mode 100644 index bfa8c09..0000000 --- a/firmwares/wifishield/wifiHD/src/lwip_setup.c +++ /dev/null @@ -1,145 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - -/*! - * \file lwIP setup code - * - * \brief Collects the lwIP setup code that an application has to - * execute in a standalone environment. - * - * \author H&D Wireless AB \n - * - */ - -#include -#include -#include -#include -#include -#include -#include - -#include "lwip_setup.h" -#include "lwip/dns.h" - - -/** - * - */ -static void -tcp_tmr_cb(void *ctx) -{ - tcp_tmr(); -} - -/** - * - */ -static void -ip_tmr_cb(void *ctx) -{ - ip_reass_tmr(); -} - -/** - * - */ -static void -dns_tmr_cb(void *ctx) -{ - dns_tmr(); -} - -/** - * - */ -static void -etharp_tmr_cb(void *ctx) -{ - etharp_tmr(); -} - - -/** - * - */ -static void -dhcp_fine_tmr_cb(void *ctx) -{ - dhcp_fine_tmr(); -} - -/** - * - */ -static void -dhcp_coarse_tmr_cb(void *ctx) -{ - dhcp_coarse_tmr(); -} - -int start_ip_stack(struct net_cfg *cfg, - struct ip_addr ipaddr, - struct ip_addr netmask, - struct ip_addr gw) { - - if (cfg->dhcp_enabled) { - IP4_ADDR(&gw, 0,0,0,0); - IP4_ADDR(&ipaddr, 0,0,0,0); - IP4_ADDR(&netmask, 0,0,0,0); - } - - /* add wl to lwip interface list and set as default */ - cfg->netif = netif_add(cfg->netif, - &ipaddr, - &netmask, - &gw, - NULL, - wlif_init, /* init */ - ethernet_input /* handles ARP and IP packets */); - - if (cfg->netif == NULL) - return -1; - netif_set_default(cfg->netif); - - /* register lwip timer callbacks for tcp, arp and dhcp protocols */ - timer_sched_timeout_cb(5000, TIMEOUT_PERIODIC, - etharp_tmr_cb, NULL); - timer_sched_timeout_cb(TCP_TMR_INTERVAL, TIMEOUT_PERIODIC, - tcp_tmr_cb, NULL); - timer_sched_timeout_cb(DHCP_FINE_TIMER_MSECS, TIMEOUT_PERIODIC, - dhcp_fine_tmr_cb, NULL); - timer_sched_timeout_cb(DHCP_COARSE_TIMER_MSECS, TIMEOUT_PERIODIC, - dhcp_coarse_tmr_cb, NULL); - timer_sched_timeout_cb(IP_TMR_INTERVAL, TIMEOUT_PERIODIC, - ip_tmr_cb, NULL); - timer_sched_timeout_cb(DNS_TMR_INTERVAL, TIMEOUT_PERIODIC, - dns_tmr_cb, NULL); - - return 1; -} diff --git a/firmwares/wifishield/wifiHD/src/lwip_setup.h b/firmwares/wifishield/wifiHD/src/lwip_setup.h deleted file mode 100644 index 7edf2b5..0000000 --- a/firmwares/wifishield/wifiHD/src/lwip_setup.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _LWIP_SETUP_H -#define _LWIP_SETUP_H - -#define INIT_IP_CONFIG 0xff -#define STATIC_IP_CONFIG 0 -#define DYNAMIC_IP_CONFIG 1 - -struct net_cfg { - struct netif *netif; /* lwip network interface */ - uint8_t dhcp_enabled; - uint8_t dhcp_running; -}; - -struct ctx_server { - struct net_cfg net_cfg; - uint8_t wl_init_complete; -}; - -/*! Start the IP stack. - * If cfg->netif must have been allocated and lwip_init() - * must have been called before this function is called - * (since the IP stack may have to be polled before this - * function can be called). - */ -int start_ip_stack(struct net_cfg *cfg, - struct ip_addr ipaddr, - struct ip_addr netmask, - struct ip_addr gw); - -#endif /* _LWIP_SETUP_H */ diff --git a/firmwares/wifishield/wifiHD/src/lwipopts.h b/firmwares/wifishield/wifiHD/src/lwipopts.h deleted file mode 100644 index 7b08b84..0000000 --- a/firmwares/wifishield/wifiHD/src/lwipopts.h +++ /dev/null @@ -1,450 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * - * lwIP Options Configuration - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIPOPTS_H__ -#define __LWIPOPTS_H__ - -#include "wl_api.h" -#include - -#ifndef BOARD -#error "BOARD must be defined" -#endif - -/* - ----------------------------------------------- - ---------- Platform specific locking ---------- - ----------------------------------------------- -*/ - -/** - * NO_SYS==1: Provides VERY minimal functionality. Otherwise, - * use lwIP facilities. - */ -#define NO_SYS 1 - - -/* - ------------------------------------ - ---------- Memory options ---------- - ------------------------------------ -*/ -/** - * MEM_ALIGNMENT: should be set to the alignment of the CPU - * 4 byte alignment -> #define MEM_ALIGNMENT 4 - * 2 byte alignment -> #define MEM_ALIGNMENT 2 - */ -#define MEM_ALIGNMENT 4 - -/** - * MEM_SIZE: the size of the heap memory. If the application will send - * a lot of data that needs to be copied, this should be set high. - */ -#define MEM_SIZE 16000 - - -/* - ------------------------------------------------ - ---------- Internal Memory Pool Sizes ---------- - ------------------------------------------------ -*/ -/** - * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF). - * If the application sends a lot of data out of ROM (or other static memory), - * this should be set high. - */ -#if BOARD == EVK1101 /* Reduced RAM */ - #define MEMP_NUM_PBUF 4 -#else - #define MEMP_NUM_PBUF 30 -#endif -/** - * MEMP_NUM_RAW_PCB: Number of raw connection PCBs - * (requires the LWIP_RAW option) - */ -#define MEMP_NUM_RAW_PCB 4 - -/** - * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - * per active UDP "connection". - * (requires the LWIP_UDP option) - */ -#define MEMP_NUM_UDP_PCB 4 - -/** - * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections. - * (requires the LWIP_TCP option) - */ -#define MEMP_NUM_TCP_PCB 4 - -/** - * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. - * (requires the LWIP_TCP option) - */ -#define MEMP_NUM_TCP_PCB_LISTEN 2 - -/** - * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. - * (requires the LWIP_TCP option) - */ -#if BOARD == EVK1101 /* Reduced RAM */ - #define MEMP_NUM_TCP_SEG 2 -#else - #define MEMP_NUM_TCP_SEG 32 -#endif - -/** - * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing - * packets (pbufs) that are waiting for an ARP request (to resolve - * their destination address) to finish. - * (requires the ARP_QUEUEING option) - */ -#define MEMP_NUM_ARP_QUEUE 2 - -/** - * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts. - * (requires NO_SYS==0) - */ -#define MEMP_NUM_SYS_TIMEOUT 0 - -/** - * MEMP_NUM_NETBUF: the number of struct netbufs. - * (only needed if you use the sequential API, like api_lib.c) - */ -#define MEMP_NUM_NETBUF 0 - -/** - * MEMP_NUM_NETCONN: the number of struct netconns. - * (only needed if you use the sequential API, like api_lib.c) - */ -#define MEMP_NUM_NETCONN 0 - -/** - * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used - * for callback/timeout API communication. - * (only needed if you use tcpip.c) - */ -#define MEMP_NUM_TCPIP_MSG_API 0 - -/** - * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used - * for incoming packets. - * (only needed if you use tcpip.c) - */ -#define MEMP_NUM_TCPIP_MSG_INPKT 0 - -/** - * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. - */ -#if BOARD == EVK1101 /* Reduced RAM */ - #define PBUF_POOL_SIZE 2 -#else - #define PBUF_POOL_SIZE 32 -#endif -/* - --------------------------------- - ---------- ARP options ---------- - --------------------------------- -*/ -/** - * LWIP_ARP==1: Enable ARP functionality. - */ -#define LWIP_ARP 1 - -/* - -------------------------------- - ---------- IP options ---------- - -------------------------------- -*/ -/** - * IP_FORWARD==1: Enables the ability to forward IP packets across network - * interfaces. If you are going to run lwIP on a device with only one network - * interface, define this to 0. - */ -#define IP_FORWARD 0 - -/** - * IP_OPTIONS: Defines the behavior for IP options. - * IP_OPTIONS==0_ALLOWED: All packets with IP options are dropped. - * IP_OPTIONS==1_ALLOWED: IP options are allowed (but not parsed). - */ -#define IP_OPTIONS_ALLOWED 1 - -/** - * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that - * this option does not affect outgoing packet sizes, which can be controlled - * via IP_FRAG. - */ -#define IP_REASSEMBLY 1 - -/** - * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note - * that this option does not affect incoming packet sizes, which can be - * controlled via IP_REASSEMBLY. - */ -#define IP_FRAG 1 - -/** - * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) - * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived - * in this time, the whole packet is discarded. - */ -#define IP_REASS_MAXAGE 3 - -/** - * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. - * Since the received pbufs are enqueued, be sure to configure - * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive - * packets even if the maximum amount of fragments is enqueued for reassembly! - */ -#if BOARD == EVK1101 /* Reduced RAM */ - #define IP_REASS_MAX_PBUFS PBUF_POOL_SIZE - #define MEMP_NUM_REASSDATA PBUF_POOL_SIZE-1 -#else - #define IP_REASS_MAX_PBUFS 10 -#endif - -/** - * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP - * fragmentation. Otherwise pbufs are allocated and reference the original - * packet data to be fragmented. - */ -#define IP_FRAG_USES_STATIC_BUF 0 - -/** - * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. - */ -#define IP_DEFAULT_TTL 255 - -/* - ---------------------------------- - ---------- ICMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_ICMP==1: Enable ICMP module inside the IP stack. - * Be careful, disable that make your product non-compliant to RFC1122 - */ -#define LWIP_ICMP 1 - -/** - * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. - */ -#define ICMP_TTL (IP_DEFAULT_TTL) - -/* - --------------------------------- - ---------- RAW options ---------- - --------------------------------- -*/ -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#define LWIP_RAW 1 - -/* - ---------------------------------- - ---------- DHCP options ---------- - ---------------------------------- -*/ -/** - * LWIP_DHCP==1: Enable DHCP module. - */ -#define LWIP_DHCP 1 - -/* - ------------------------------------ - ---------- AUTOIP options ---------- - ------------------------------------ -*/ -/** - * LWIP_AUTOIP==1: Enable AUTOIP module. - */ -#define LWIP_AUTOIP 0 - -/* - ---------------------------------- - ---------- SNMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP - * transport. - */ -#define LWIP_SNMP 0 -#define SNMP_PRIVATE_MIB 0 - -/* - ---------------------------------- - ---------- IGMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_IGMP==1: Turn on IGMP module. - */ -#define LWIP_IGMP 0 - -/* - ---------------------------------- - ---------- DNS options ----------- - ---------------------------------- -*/ -/** - * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS - * transport. - */ -#define LWIP_DNS 1 - -/* - --------------------------------- - ---------- UDP options ---------- - --------------------------------- -*/ -/** - * LWIP_UDP==1: Turn on UDP. - */ -#define LWIP_UDP 1 - -/** - * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) - */ -#define LWIP_UDPLITE 0 - -/** - * UDP_TTL: Default Time-To-Live value. - */ -#define UDP_TTL (IP_DEFAULT_TTL) - -/* - --------------------------------- - ---------- TCP options ---------- - --------------------------------- -*/ -/** - * LWIP_TCP==1: Turn on TCP. - */ -#define LWIP_TCP 1 - -/* - ---------------------------------- - ---------- Pbuf options ---------- - ---------------------------------- -*/ -/** - * PBUF_LINK_HLEN: the number of bytes that should be allocated for a - * link level header. The default is 14, the standard value for - * Ethernet. - */ -#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE) - -/* - ------------------------------------ - ---------- LOOPIF options ---------- - ------------------------------------ -*/ -/** - * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c - */ -#define LWIP_HAVE_LOOPIF 1 -#define LWIP_LOOPIF_MULTITHREADING 0 - -/* - ---------------------------------------------- - ---------- Sequential layer options ---------- - ---------------------------------------------- -*/ - -/** - * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) - */ -#define LWIP_NETCONN 0 - -/* - ------------------------------------ - ---------- Socket options ---------- - ------------------------------------ -*/ -/** - * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c) - */ -#define LWIP_SOCKET 0 - -/* - ---------------------------------------- - ---------- Statistics options ---------- - ---------------------------------------- -*/ -/** - * LWIP_STATS==1: Enable statistics collection in lwip_stats. - */ -#define LWIP_STATS 1 -#define LINK_STATS 1 - -/* Misc */ -#define LWIP_NETIF_LINK_CALLBACK 1 -#define LWIP_NETIF_STATUS_CALLBACK 1 -#define LWIP_TIMEVAL_PRIVATE 0 - -#undef DHCP_DOES_ARP_CHECK - -#if 0 -#define LWIP_DEBUG 1 -//#define NETIF_DEBUG LWIP_DBG_ON -//#define DHCP_DEBUG LWIP_DBG_ON -//#define ICMP_DEBUG LWIP_DBG_ON -//#define TCP_DEBUG LWIP_DBG_ON -//#define TCP_RTO_DEBUG LWIP_DBG_ON -//#define IP_DEBUG LWIP_DBG_ON -//#define TCP_CWND_DEBUG LWIP_DBG_ON -//#define ETHARP_DEBUG LWIP_DBG_ON -#define PBUF_DEBUG LWIP_DBG_ON -//#define TCP_INPUT_DEBUG LWIP_DBG_ON -//#define TCP_OUTPUT_DEBUG LWIP_DBG_ON -#endif - -#define ETH_PAD_SIZE WL_HEADER_SIZE /* size of wifiengine header */ -#define MEM_LIBC_MALLOC 1 - -#define TCP_MSS 512 -#if BOARD == EVK1101 /* Reduced RAM */ - #define TCP_SND_BUF (1460*1) /* MTU (1500) - IP - TCP hdrs == 1460 */ -#else - #define TCP_SND_BUF 4096 -#endif -#endif /* __LWIPOPTS_H__ */ diff --git a/firmwares/wifishield/wifiHD/src/main.c b/firmwares/wifishield/wifiHD/src/main.c deleted file mode 100644 index fffb34e..0000000 --- a/firmwares/wifishield/wifiHD/src/main.c +++ /dev/null @@ -1,454 +0,0 @@ -/* - * main.c - * - * Created on: May 27, 2010 - * Author: mlf by Metodo2 srl - */ - -//#define _TEST_SPI_ - -#include -#include "board.h" -#include "gpio.h" - -#include -#include "wl_api.h" -#include "wl_cm.h" - -#include "lwip/init.h" -#include "lwip/dhcp.h" -#include "lwip/dns.h" -#include "lwip/tcp.h" -#include "netif/etharp.h" -#include "netif/wlif.h" - -#include "board_init.h" -#include "trace.h" - -#include "timer.h" -#include "util.h" -#include "cmd_wl.h" -#include "ping.h" -#include "ard_tcp.h" -#include "spi.h" -#include "ard_spi.h" -#include "delay.h" -#include "tc.h" -#include "debug.h" -#include "ard_utils.h" -#include - -/* FIRMWARE version */ -const char* fwVersion = "1.1.0"; - -#if BOARD == ARDUINO -#if !defined(DATAFLASH) -#include "wl_fw.h" - -int fw_download_init(void) { return 0;} -void fw_download_cb(void* ctx, uint8_t** buf, uint32_t* len) -{ - //printk("Fw download not available!\n"); - /* remember accross different calls */ - static uint8_t* _fw_buf = (uint8_t*)&fw_buf[0]; - static uint32_t offset = 0; - - /* when firmware download is completed, this function will be invoked - * on additional time with the input value of len set to 0. we can free - * the firmware buffer at this time since it's no longer needed. - */ - if (*len == 0) { - return; - } - - /* decide how much to read. we know *len bytes remains, but we only have - * room for SECTOR_SIEZ bytes in our buffer (fw_buf) - */ - uint32_t fw_len = *len; - - *buf = (_fw_buf+offset); - *len = fw_len; - - /* we need to know where to start reading upon next call */ - offset += fw_len; - -} -#else -#include "fw_download.h" -#endif -#endif - -bool ifStatus = false; -bool scanNetCompleted = false; - -static bool initSpiComplete = false; - -// variable used as enable flag for debug prints -DEFINE_DEBUG_VARIABLES(); - -/** - * - */ -static void -wl_cm_scan_cb(void* ctx) -{ - INFO_INIT("Scan Completed!\n"); - scanNetCompleted=true; -} - -/** - * - */ -static void -wl_cm_conn_cb(struct wl_network_t* net, void* ctx) -{ - struct ctx_server* hs = ctx; - - LINK_LED_ON(); - - INFO_INIT("Connection cb...\n"); - - printk("link up, connected to \"%s\"\n", ssid2str(&net->ssid)); - if ( hs->net_cfg.dhcp_enabled == DYNAMIC_IP_CONFIG ) { - INFO_INIT("Start DHCP...\n"); - printk("requesting dhcp ... "); - int8_t result = dhcp_start(hs->net_cfg.netif); - printk((result==ERR_OK)?"OK\n":"FAILED\n"); - hs->net_cfg.dhcp_running = 1; - } - else { - netif_set_up(hs->net_cfg.netif); - } - - INFO_INIT("Start DNS...\n"); - dns_init(); -} - - -/** - * - */ -static void -wl_cm_disconn_cb(void* ctx) -{ - struct ctx_server* hs = ctx; - - LINK_LED_OFF(); - INFO_INIT("Disconnection cb...\n"); - - if (hs->net_cfg.dhcp_running) { - printk("link down, release dhcp\n"); - dhcp_release(hs->net_cfg.netif); - dhcp_stop(hs->net_cfg.netif); - hs->net_cfg.dhcp_running = 0; - } else { - printk("link down\n"); - netif_set_down(hs->net_cfg.netif); - } - - set_result_cmd(WL_FAILURE); -} - -#if 0 -static void wl_cm_err_cb(void* ctx) -{ - int err = *(int*)ctx; - WARN("Error: %d\n", err); - set_result_cmd(err); -} -#endif - -/** - * - */ -static void -ip_status_cb(struct netif* netif) -{ - INFO_INIT("IP status cb...\n"); - if (netif_is_up(netif)) { - set_result_cmd(WL_SUCCESS); - printk("bound to %s\n", ip2str(netif->ip_addr)); - ifStatus = true; - }else{ - ifStatus = false; - closeConnections(); - WARN("Interface not up!\n"); - } -} - - -/** - * - */ -void -led_init(void) -{ - gpio_enable_gpio_pin(LED0_GPIO); - gpio_enable_gpio_pin(LED1_GPIO); - gpio_enable_gpio_pin(LED2_GPIO); - LINK_LED_OFF(); - ERROR_LED_OFF(); - DATA_LED_OFF(); -} - - -void tc_init(void) -{ - // The timer/counter instance and channel number are used in several functions. - // It's defined as local variable for ease-of-use causes and readability. - volatile avr32_tc_t *tc = WIFI_TC; - - // Options for waveform genration. - tc_waveform_opt_t waveform_opt = - { - .channel = WIFI_TC_CHANNEL_ID, // Channel selection. - - .bswtrg = TC_EVT_EFFECT_NOOP, // Software trigger effect on TIOB. - .beevt = TC_EVT_EFFECT_NOOP, // External event effect on TIOB. - .bcpc = TC_EVT_EFFECT_NOOP, // RC compare effect on TIOB. - .bcpb = TC_EVT_EFFECT_NOOP, // RB compare effect on TIOB. - - .aswtrg = TC_EVT_EFFECT_NOOP, // Software trigger effect on TIOA. - .aeevt = TC_EVT_EFFECT_NOOP, // External event effect on TIOA. - .acpc = TC_EVT_EFFECT_TOGGLE, // RC compare effect on TIOA: toggle. - .acpa = TC_EVT_EFFECT_TOGGLE, // RA compare effect on TIOA: toggle (other possibilities are none, set and clear). - - .wavsel = TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER,// Waveform selection: Up mode with automatic trigger(reset) on RC compare. - .enetrg = FALSE, // External event trigger enable. - .eevt = TC_EXT_EVENT_SEL_TIOB_INPUT, // External event selection. - .eevtedg = TC_SEL_NO_EDGE, // External event edge selection. - .cpcdis = FALSE, // Counter disable when RC compare. - .cpcstop = FALSE, // Counter clock stopped with RC compare. - - .burst = TC_BURST_NOT_GATED, // Burst signal selection. - .clki = TC_CLOCK_RISING_EDGE, // Clock inversion. - .tcclks = TC_CLOCK_SOURCE_TC2 // Internal source clock 3, connected to fPBA / 2. - }; - - // Assign I/O to timer/counter channel pin & function. - gpio_enable_module_pin(WIFI_TC_CHANNEL_PIN, WIFI_TC_CHANNEL_FUNCTION); - - // Initialize the timer/counter. - tc_init_waveform(tc, &waveform_opt); // Initialize the timer/counter waveform. - - // Set the compare triggers. - tc_write_ra(tc, WIFI_TC_CHANNEL_ID, 0x01A4); // Set RA value. - tc_write_rc(tc, WIFI_TC_CHANNEL_ID, 0x0348); // Set RC value. - - // Start the timer/counter. - tc_start(tc, WIFI_TC_CHANNEL_ID); - -} - -/** - * - */ -void -poll(struct ctx_server* hs) -{ - /* this will trigger any scheduled timer callbacks */ - timer_poll(); - - /* handle console input */ - console_poll(); - - /* wl api 'tick' */ - wl_tick(timer_get_ms()); - - /* lwip driver poll */ - wlif_poll(hs->net_cfg.netif); - - if (initSpiComplete) spi_poll(hs->net_cfg.netif); - -#ifdef WITH_GUI - gui_exec(timer_get_ms()); -#endif -} - -void initShell(void* ctx) -{ - /* initialize shell */ - INFO_INIT("Shell init...\n"); - console_init(); - console_add_cmd("scan", cmd_scan, NULL); - console_add_cmd("connect", cmd_connect, NULL); - console_add_cmd("setkey", cmd_setkey, NULL); - console_add_cmd("status", cmd_status, ctx); - console_add_cmd("debug", cmd_debug, NULL); - console_add_cmd("dumpBuf", cmd_dumpBuf, NULL); - console_add_cmd("ipconfig", cmd_set_ip, ctx); -#ifdef ADD_CMDS - console_add_cmd("powersave", cmd_power, NULL); - console_add_cmd("psconf", cmd_psconf, NULL); -#endif -#ifdef PING_CMD - console_add_cmd("ping", cmd_ping, NULL); -#endif - console_add_cmd("ttcp", cmd_ttcp, NULL); -#ifdef WITH_WPA - console_add_cmd("wpass", cmd_setpass, NULL); - console_add_cmd("dpass", cmd_delpass, NULL); -#endif -#ifdef _SPI_STATS_ - console_add_cmd("spiStat", cmd_statSpi, NULL); - console_add_cmd("resetSpiStat", cmd_resetStatSpi, NULL); -#endif -#ifdef _DNS_CMD_ - console_add_cmd("getHost", cmd_gethostbyname, NULL); - console_add_cmd("setDNS", cmd_setDnsServer, NULL); -#endif - console_add_cmd("startSrv", cmd_startSrv, NULL); - console_add_cmd("startCli", cmd_startCli, NULL); - console_add_cmd("sendUdp", cmd_sendUdpData, NULL); - -} - -/** - * - */ -void -wl_init_complete_cb(void* ctx) -{ - struct ctx_server *hs = ctx; - struct ip_addr ipaddr, netmask, gw; - wl_err_t wl_status; - - if (hs->net_cfg.dhcp_enabled == INIT_IP_CONFIG) - { - IP4_ADDR(&gw, 0,0,0,0); - IP4_ADDR(&ipaddr, 0,0,0,0); - IP4_ADDR(&netmask, 0,0,0,0); - - /* default is dhcp enabled */ - hs->net_cfg.dhcp_enabled = DYNAMIC_IP_CONFIG; - } - - start_ip_stack(&hs->net_cfg, - ipaddr, - netmask, - gw); - netif_set_status_callback(hs->net_cfg.netif, ip_status_cb); - - INFO_INIT("Starting CM...\n"); - /* start connection manager */ - wl_status = wl_cm_init(wl_cm_scan_cb, wl_cm_conn_cb, wl_cm_disconn_cb, hs); - ASSERT(wl_status == WL_SUCCESS, "failed to init wl conn mgr"); - wl_cm_start(); - - wl_scan(); - - if (initSpi(hs)){ - WARN("Spi not initialized\n"); - }else - { - initSpiComplete = true; - AVAIL_FOR_SPI(); - } - - hs->wl_init_complete = 1; -} - -void startup_init(void) -{ - INIT_SIGNAL_FOR_SPI(); - BUSY_FOR_SPI(); - - // if DEBUG enabled use DEB_PIN_GPIO for debug purposes - DEB_PIN_ENA(); - DEB_PIN_ENA(2); - DEB_PIN_UP(); - DEB_PIN_UP(2); -} - -const char timestamp[] = __TIMESTAMP__; - -/** - * - */ -int -main(void) -{ - wl_err_t wl_status; - int status; - struct ctx_server *hs; - enum wl_host_attention_mode mode; - - startup_init(); - - board_init(); - - led_init(); - - tc_init(); - - delay_init(FOSC0); - -#ifdef _TEST_SPI_ - for (;;) - { - /* handle console input */ - - console_poll(); - - spi_poll(NULL); - - } -#else - printk("Arduino Wifi Startup... [%s]\n", timestamp); - - size_t size_ctx_server = sizeof(struct ctx_server); - hs = calloc(1, size_ctx_server); - ASSERT(hs, "out of memory"); - - size_t size_netif = sizeof(struct netif); - hs->net_cfg.netif = calloc(1, size_netif); - ASSERT(hs->net_cfg.netif, "out of memory"); - hs->net_cfg.dhcp_enabled = INIT_IP_CONFIG; - - INFO_INIT("hs:%p size:0x%x netif:%p size:0x%x\n", hs, size_ctx_server, - hs->net_cfg.netif, size_netif); - initShell(hs); - timer_init(NULL, NULL); - lwip_init(); - - status = fw_download_init(); - ASSERT(status == 0, "failed to prepare for firmware download\n"); - - wl_status = wl_transport_init(fw_read_cb, hs, &mode); - if (wl_status != WL_SUCCESS) - goto err; - INFO_INIT("Mode: 0x%x\n", mode); - wl_status = wl_init(hs, wl_init_complete_cb, mode); - if (wl_status != WL_SUCCESS) - goto err; - - /* start main loop */ - for (;;) - poll(hs); - - -err: - /* show error message on console and display if wlan initialization fails */ - -#define WL_CARD_FAILURE_STR "Could not detect wl device, aborting\n" -#define WL_FIRMWARE_INVALID_STR "Invalid firmware data, aborting\n" -#define WL_OTHER_FAILURE_STR "Failed to start wl initialization\n" - - switch (wl_status) { - case WL_CARD_FAILURE: - printk(WL_CARD_FAILURE_STR); - break; - - case WL_FIRMWARE_INVALID: - printk(WL_FIRMWARE_INVALID_STR); - break; - - default: - printk(WL_OTHER_FAILURE_STR); - break; - } - for (;;) { - timer_poll(); - } -#endif -} diff --git a/firmwares/wifishield/wifiHD/src/nvram.c b/firmwares/wifishield/wifiHD/src/nvram.c deleted file mode 100644 index 2c61c5f..0000000 --- a/firmwares/wifishield/wifiHD/src/nvram.c +++ /dev/null @@ -1,153 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#include - -#include "compiler.h" -#include "preprocessor.h" -#include "board.h" -#include "power_clocks_lib.h" -#include "gpio.h" -#include "spi.h" -#include "conf_at45dbx.h" -#include "at45dbx.h" -#include -#include - - -static struct nvram { - uint8_t read; - void *data; - uint32_t len; - uint16_t off; -} PRIV; - -int nvram_init(void) -{ - spi_options_t spiOptions = { - .reg = AT45DBX_SPI_FIRST_NPCS, - .baudrate = AT45DBX_SPI_MASTER_SPEED, - .bits = AT45DBX_SPI_BITS, - .spck_delay = 0, - .trans_delay = 0, - .stay_act = 1, - .spi_mode = 0, - .modfdis = 1 - }; - - at45dbx_init(spiOptions, FPBA_HZ); - return 0; -} - - -/** - * Invoked by at45dbx driver - * - */ -void at45dbx_read_multiple_sector_callback(const void *psector) -{ - struct nvram *priv = &PRIV; - const uint8_t *buf = psector; - - if (!priv->read) - return; - - memcpy(priv->data, buf + priv->off, priv->len); -} - - -/** - * Invoked by at45dbx driver - * - */ -void at45dbx_write_multiple_sector_callback(void *psector) -{ - struct nvram *priv = &PRIV; - uint8_t *buf = psector; - memcpy(buf + priv->off, priv->data, priv->len); -} - - -/** - * Write/read any number bytes into any offset of nor flash by taking care - * of cases where the length is not aligned to the sector size or where - * the addr is not aligned to the sector offsets. - * - */ -static int nvram_rw(uint32_t addr, void *data, uint16_t len, int write) -{ - struct nvram *priv = &PRIV; - priv->read = write ? 0 : 1; - - while (len) { - uint32_t sector = addr / AT45DBX_SECTOR_SIZE; - priv->data = data; - priv->off = addr % AT45DBX_SECTOR_SIZE; - priv->len = AT45DBX_SECTOR_SIZE; - - if (len < AT45DBX_SECTOR_SIZE) - priv->len = len; - - if (priv->len > AT45DBX_SECTOR_SIZE - priv->off) - priv->len = AT45DBX_SECTOR_SIZE - priv->off; - - at45dbx_read_open(sector); - at45dbx_read_multiple_sector(1); - at45dbx_read_close(); - - if (write) { - at45dbx_write_open(sector); - at45dbx_write_multiple_sector(1); - at45dbx_write_close(); - } - - data += priv->len; - len -= priv->len; - addr += priv->len; - } - - return 0; -} - -/** - * Write any number bytes into any offset of nor flash. - * - */ -int nvram_write(uint32_t addr, const void *data, uint32_t len) -{ - return nvram_rw(addr, (void *) data, len, 1); -} - - -/** - * Read any number bytes into any offset of nor flash. - * - */ -int nvram_read(uint32_t addr, void *data, uint32_t len) -{ - return nvram_rw(addr, data, len, 0); -} diff --git a/firmwares/wifishield/wifiHD/src/nvram.h b/firmwares/wifishield/wifiHD/src/nvram.h deleted file mode 100644 index 8882749..0000000 --- a/firmwares/wifishield/wifiHD/src/nvram.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NVRAM_H -#define NVRAM_H - -#include - -int nvram_init(void); -int nvram_read(uint32_t addr, void *data, uint32_t len); -int nvram_write(uint32_t addr, const void *data, uint32_t len); - -#endif diff --git a/firmwares/wifishield/wifiHD/src/owl_os.c b/firmwares/wifishield/wifiHD/src/owl_os.c deleted file mode 100644 index d17d8ce..0000000 --- a/firmwares/wifishield/wifiHD/src/owl_os.c +++ /dev/null @@ -1,140 +0,0 @@ -#include -#include -#include -#include - -#include - -void *owl_os_alloc(size_t size) -{ - return malloc(size); -} - -void *owl_os_realloc(void *ptr, size_t size) -{ - return realloc(ptr, size); -} - -void owl_os_free(void *p) -{ - free(p); -} - -void *owl_os_memcpy(void *dst, const void *src, size_t n) -{ - return memcpy(dst, src, n); -} - -void *owl_os_memset(void *s, int c, size_t n) -{ - return memset(s, c, n); -} - -void *owl_os_memmove(void *dst, const void *src, size_t n) -{ - return memmove(dst, src, n); -} - -size_t owl_os_strlen(char *s) -{ - return strlen(s); -} - -char *owl_os_strncpy(char *dst, const char *src, size_t n) -{ - return strncpy(dst, src, n); -} - -int owl_os_strncmp(const char *s1, const char *s2, size_t n) -{ - return strncmp(s1, s2, n); -} - -int owl_os_strcmp(const char *s1, const char *s2) -{ - return strcmp(s1, s2); -} - -char *owl_os_strcpy(char *dst, const char *src) -{ - return strcpy(dst, src); -} - -char *owl_os_strdup(const char *s) -{ - return strdup(s); -} - -char *owl_os_strndup(const char *s, size_t n) -{ - return strndup(s, n); -} - -int owl_os_memcmp(const void *s1, const void *s2, size_t n) -{ - return memcmp(s1, s2, n); -} - -long int owl_os_strtol(const char *nptr, char **endptr, int base) -{ - return strtol(nptr, endptr, base); -} - -char *owl_os_strchr(const char *s, int c) -{ - return strchr(s, c); -} - -char *owl_os_strrchr(const char *s, int c) -{ - return strrchr(s, c); -} - -int owl_os_strcasecmp(const char *s1, const char *s2) -{ - return strcasecmp(s1, s2); -} - -char *owl_os_strstr(const char *haystack, const char *needle) -{ - return strstr(haystack, needle); -} - -int owl_os_snprintf(char *str, size_t size, const char *format, ...) -{ - int ret; - va_list ap; - va_start(ap, format); - ret = vsniprintf(str, size, format, ap); - va_end(ap); - return ret; -} - -/* for debugging only, never called if wl_api was built without debug */ -#ifdef CONFIG_OWL -#include "owl_env.h" -int owl_os_printf(const char *fmt, ...) -{ - char *str = NULL; - va_list args; - int len; - char *iter; - - va_start(args, fmt); - - if ((str = malloc(160)) == NULL) - return -1; - - if ((len = vsniprintf(str, 160, fmt, args)) < 0) { - free(str); - return -1; - } - - iter = str; - while (*iter) - owl_putc(*iter++); - - free(str); - return len; -} -#endif diff --git a/firmwares/wifishield/wifiHD/src/ping.c b/firmwares/wifishield/wifiHD/src/ping.c deleted file mode 100644 index aba97db..0000000 --- a/firmwares/wifishield/wifiHD/src/ping.c +++ /dev/null @@ -1,340 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is derived from a part of the lwIP TCP/IP stack. - * - */ -#ifdef PING_CMD -#include "lwip/opt.h" - -#include "lwip/mem.h" -#include "lwip/raw.h" -#include "lwip/icmp.h" -#include "lwip/netif.h" -#include "lwip/sys.h" -#include "lwip/sockets.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" - -#include "ping.h" -#include "timer.h" -#include "util.h" - -#include "getopt.h" - -#define PING_ID 0xAFAF - -struct ping_info_t { - struct ip_addr destination; - uint32_t deadline; /* -w (in seconds) */ - uint32_t interval; /* -i (in ms) */ - uint32_t timeout; /* ms */ - uint32_t data_size; /* -s */ - uint32_t count; /* -c, 0 means continous ping */ - uint32_t size; - uint32_t first_tx_tm; - uint32_t last_tx_tm; - uint32_t last_rx_tm; - uint32_t num_tx; - uint32_t num_rx; - uint32_t flags; - uint16_t seq_num; - Bool quiet; /* -q */ - ping_complete_cb_t complete_cb; - void *ctx; -#define PING_REPLY (1 << 0) -}; - -static struct ping_info_t INFO; - -/** Prepare a echo ICMP request */ -static void ping_prepare_echo(struct icmp_echo_hdr *iecho, - struct ping_info_t* ping_info) -{ - int i; - - ICMPH_TYPE_SET(iecho,ICMP_ECHO); - ICMPH_CODE_SET(iecho, 0); - iecho->chksum = 0; - iecho->id = PING_ID; - iecho->seqno = htons(++ping_info->seq_num); - iecho->chksum = 0; - - /* fill the additional data buffer with some data */ - for(i = 0; i < ping_info->data_size; i++) { - ((char*)iecho)[sizeof(struct icmp_echo_hdr) + i] = i; - } - - iecho->chksum = inet_chksum(iecho, ping_info->size); -} - -/* Ping using the raw ip */ -static u8_t ping_recv(void *arg, struct raw_pcb *pcb, struct pbuf *p, - struct ip_addr *addr) -{ - struct icmp_echo_hdr *iecho; - struct ip_hdr *ip = p->payload; - struct ping_info_t* ping_info = (struct ping_info_t*) arg; - uint32_t us; - - if (pbuf_header( p, -PBUF_IP_HLEN)==0) { - iecho = p->payload; - - if ((iecho->id == PING_ID) && - (iecho->seqno == htons(ping_info->seq_num))) { - ping_info->last_rx_tm = timer_get_ms(); - ping_info->num_rx++; - us = 1000 * - (ping_info->last_rx_tm - ping_info->last_tx_tm); - - if (!ping_info->quiet) - printk("%d bytes from %s: icmp_seq=%d ttl=%d " \ - "time=%d.%03d ms\n", - p->tot_len, ip2str(ip->src), - iecho->seqno, - IPH_TTL(ip), - us / 1000, us % 1000); - - /* do some ping result processing */ - ping_info->flags |= PING_REPLY; - } - } - - pbuf_free(p); - return 1; /* eat the event */ -} - -static void ping_send(struct raw_pcb *raw, struct ping_info_t* ping_info) -{ - struct pbuf *p; - struct icmp_echo_hdr *iecho; - - if (!(p = pbuf_alloc(PBUF_IP, ping_info->size, PBUF_RAM))) { - return; - } - if ((p->len == p->tot_len) && (p->next == NULL)) { - iecho = p->payload; - - ping_prepare_echo(iecho, ping_info); - raw_sendto(raw, p, &ping_info->destination); - - if (!ping_info->first_tx_tm) - ping_info->first_tx_tm = timer_get_ms(); - ping_info->last_tx_tm = timer_get_ms(); - ping_info->num_tx++; - } - pbuf_free(p); -} - -void ping_set_callback(ping_complete_cb_t cb, void *ctx) { - INFO.complete_cb = cb; - INFO.ctx = ctx; -} - -void ping_stop(uint32_t *tx_cnt, uint32_t *rx_cnt) { - struct ping_info_t *ping_info = &INFO; - - *tx_cnt = ping_info->num_tx; - *rx_cnt = ping_info->num_rx; - ping_info->count = ping_info->num_tx; - if ( 0 == ping_info->count ) { - ping_info->count = 1; - } -} - -static int init_ping_info(int argc, char* argv[], struct ping_info_t* ping_info) -{ - int c; - ping_complete_cb_t cb; - void *ctx; - - cb = ping_info->complete_cb; - ctx = ping_info->ctx; - memset(ping_info, 0, sizeof(struct ping_info_t)); - ping_info->complete_cb = cb; - ping_info->ctx = ctx; - - ping_info->deadline = 0; - ping_info->interval = 1000; - ping_info->timeout = 3000; - ping_info->data_size = 32; - ping_info->count = 3; - ping_info->destination = - netif_default ? netif_default->gw : ip_addr_any; - - optind = 1; - while ((c = getopt(argc, argv, "c:i:s:w:q")) != -1) { - switch (c) { - case 'c': - ping_info->count = atoi(optarg); - break; - - case 'i': - ping_info->interval = atoi(optarg); - break; - - case 's': - ping_info->data_size = atoi(optarg); - break; - - case 'q': - ping_info->quiet = TRUE; - break; - - case 'w': - ping_info->deadline = atoi(optarg); - break; - } - } - - ping_info->size = sizeof(struct icmp_echo_hdr) + ping_info->data_size; - - if (optind >= argc) - return -1; - - ping_info->destination = str2ip(argv[optind]); - if (!ping_info->destination.addr) - return -1; - - - ping_info->last_rx_tm = timer_get_ms(); - - return 0; -} - -static void print_stats(struct ping_info_t* ping_info) -{ - printk("\n--- %s ping statistics ---\n", - ip2str(ping_info->destination)); - printk("%d packets transmitted, %d received, %d%% packet loss, "\ - "time %dms\n\n", - ping_info->num_tx, ping_info->num_rx, - 100 * (ping_info->num_tx - ping_info->num_rx) / - ping_info->num_tx, - timer_get_ms() - ping_info->first_tx_tm); -} - -static void ping_finalize(struct ping_info_t* ping_info) { - print_stats(ping_info); - if (ping_info->complete_cb) { - ping_info->complete_cb(ping_info->num_tx, ping_info->num_rx, ping_info->ctx); - } -} - -cmd_state_t cmd_ping(int argc, char* argv[], void* ctx) -{ - static enum { - INIT, - PING, - WAIT_REPLY - } state = INIT; - - struct ping_info_t *ping_info = &INFO; - static struct raw_pcb *pcb; - - switch (state) { - case INIT: - if (init_ping_info(argc, argv, ping_info) != 0) { - printk("Usage: ping [-c count] [-i interval] " \ - "[-s packetsize]\n " \ - "[-w deadline] [-q] destination\n"); - return CMD_DONE; - } - - if (!(pcb = raw_new(IP_PROTO_ICMP))) { - printk("could not allocate pcb\n"); - state = INIT; - return CMD_DONE; - } - raw_recv(pcb, ping_recv, ping_info); - raw_bind(pcb, IP_ADDR_ANY); - - printk("PING %s %d(%d) bytes of data\n", - ip2str(ping_info->destination), - ping_info->data_size, - ping_info->size); - state = PING; - /* fall through */ - - case PING: - if (!netif_is_up(netif_default)) { - printk("netif is down\n"); - raw_remove(pcb); - state = INIT; - return CMD_DONE; - } - - if (ping_info->count && ping_info->num_tx == ping_info->count) { - ping_finalize(ping_info); - raw_remove(pcb); - state = INIT; - return CMD_DONE; - } - - - if (timer_get_ms() < ping_info->last_rx_tm + ping_info->interval) { - return CMD_INPROGRESS; - } - ping_send(pcb, ping_info); - - state = WAIT_REPLY; - return CMD_INPROGRESS; - - case WAIT_REPLY: - if (ping_info->flags & PING_REPLY) { - ping_info->flags &= (~PING_REPLY); - state = PING; - return CMD_INPROGRESS; - } - - if (timer_get_ms() > - ping_info->last_tx_tm + ping_info->timeout) { - if (!ping_info->quiet) - printk("timeout from %s\n", - ip2str(ping_info->destination)); - state = PING; - return CMD_INPROGRESS; - } - - if (ping_info->deadline && - timer_get_ms() > - ping_info->first_tx_tm + ping_info->deadline * 1000) { - ping_finalize(ping_info); - raw_remove(pcb); - state = INIT; - return CMD_DONE; - } - - return CMD_INPROGRESS; - } - - /* unreachable */ - Assert(0); - return CMD_DONE; -} -#endif diff --git a/firmwares/wifishield/wifiHD/src/ping.h b/firmwares/wifishield/wifiHD/src/ping.h deleted file mode 100644 index 47d409d..0000000 --- a/firmwares/wifishield/wifiHD/src/ping.h +++ /dev/null @@ -1,45 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 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. - * - * This file is derived from a part of the lwIP TCP/IP stack. - * - */ -#ifndef PING_H -#define PING_H - -#include "console.h" - -typedef void (*ping_complete_cb_t)(uint32_t tx_pkt_cnt, uint32_t rx_pkt_cnt, void *ctx); - -void ping_set_callback(ping_complete_cb_t cb, void *ctx); - -void ping_stop(uint32_t *tx_cnt, uint32_t *rx_cnt); - -cmd_state_t cmd_ping(int argc, char* argv[], void* ctx); - -#endif diff --git a/firmwares/wifishield/wifiHD/src/printf-stdarg.c b/firmwares/wifishield/wifiHD/src/printf-stdarg.c deleted file mode 100644 index 92eb217..0000000 --- a/firmwares/wifishield/wifiHD/src/printf-stdarg.c +++ /dev/null @@ -1,323 +0,0 @@ -/* This source file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief sprintf functions to replace newlib for AVR32 UC3. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (C) 2006-2008, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - - -#include - -static void printchar(char **str, int c) -{ - extern int board_putchar(char c); - - if (str) { - **str = c; - ++(*str); - } - else (void) board_putchar(c); -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = -i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = t + '0'; - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -#if 0 -int fprintf(__FILE *stream, const char *format, ...) -{ -return 0; -} -#endif - -int printk_va(char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'p' ) { - pad = 8; - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printk(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return printk_va( 0, format, args ); -} - -#ifndef __ARM__ -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return printk_va( &out, format, args ); -} -#endif - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif diff --git a/firmwares/wifishield/wifiHD/src/printf-stdarg.h b/firmwares/wifishield/wifiHD/src/printf-stdarg.h deleted file mode 100644 index bce38b6..0000000 --- a/firmwares/wifishield/wifiHD/src/printf-stdarg.h +++ /dev/null @@ -1,34 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef PRINTF_STDARG_H -#define PRINTF_STDARG_H -#include - -int printk(const char *format, ...); -int printk_va(char **out, const char *format, va_list args ); -#endif diff --git a/firmwares/wifishield/wifiHD/src/timer.c b/firmwares/wifishield/wifiHD/src/timer.c deleted file mode 100644 index 6ffba63..0000000 --- a/firmwares/wifishield/wifiHD/src/timer.c +++ /dev/null @@ -1,232 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - -#include -#include -#include -#include -#ifdef FREERTOS_USED -#include "FreeRTOS.h" -#include "task.h" -#endif - -#define TIMER_HZ 4 - - -struct timeout_t { - U32 tick; - U32 expire_at_tick; - Bool expired; - U8 type; - void (*cb)(void* ctx); - void* ctx; -}; - -struct timer_t { - volatile U32 tick; - struct timeout_t timeout[10]; - void (*tick_isr) (void* ctx); - const U32 MS_PER_TICK; - void *ctx; -}; - -#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) - - -static struct timer_t TIMER = { - .tick = 0, -#ifdef FREERTOS_USED - .MS_PER_TICK = 1 / portTICK_RATE_MS, -#else - .MS_PER_TICK = TIMER_HZ, -#endif - .timeout = { { 0 } }, -}; - -#ifdef FREERTOS_USED /* Use TICK-hook */ - -void vApplicationTickHook( void ) { - struct timer_t* priv = &TIMER; - priv->tick++; - if(priv->tick_isr) { - priv->tick_isr(priv->ctx); - } -} - -#else /* Use interrupt directly */ - -static __attribute__((__interrupt__)) void irq_handler(void) -{ - volatile avr32_rtc_t *rtc = &AVR32_RTC; - struct timer_t* priv = &TIMER; - priv->tick++; - - if(priv->tick_isr) - priv->tick_isr(priv->ctx); - - rtc->icr = AVR32_RTC_ICR_TOPI_MASK; - rtc->isr; -} - -#endif - -void timer_init(void (*tick_isr) (void* ctx), void* ctx) -{ - struct timer_t* priv = &TIMER; - uint8_t id; - -#ifndef FREERTOS_USED - INTC_register_interrupt(&irq_handler, AVR32_RTC_IRQ, AVR32_INTC_INT0); - if (!rtc_init(&AVR32_RTC, RTC_OSC_RC, 0)) - Assert(0); - - rtc_set_top_value(&AVR32_RTC, 115 * priv->MS_PER_TICK / 2); - rtc_enable_interrupt(&AVR32_RTC); - rtc_enable(&AVR32_RTC); -#else - /* With FreeRTOS we use the OS tick instead */ -#endif - priv->tick_isr = tick_isr; - priv->ctx = ctx; - - for (id = 0; id < ARRAY_SIZE(priv->timeout); id++) - priv->timeout[id].expired = TRUE; -} - - -U32 timer_get_ms(void) -{ - struct timer_t* priv = &TIMER; - return priv->tick * priv->MS_PER_TICK; -} - -void timer_delay(U32 ms) -{ - struct timer_t* priv = &TIMER; - U32 expire_at_tick = priv->tick + ms / priv->MS_PER_TICK; - while (priv->tick < expire_at_tick); -} - -/** - * Called from application main loop to invoke any scheduled timeout cbs. - * This function might be called as often as possible rather than at each tick - * to support the timeout value '0', e.g a timeout within less than one tick. - * - */ -void timer_poll(void) -{ - struct timer_t* priv = &TIMER; - U8 i; - - for (i = 0; i < ARRAY_SIZE(priv->timeout); i++) { - struct timeout_t* tmo = &priv->timeout[i]; - if (tmo->expired) - continue; - - if (tmo->expire_at_tick > priv->tick) - continue; - - if (tmo->cb) - tmo->cb(tmo->ctx); - - if (tmo->type == TIMEOUT_PERIODIC) - tmo->expire_at_tick = priv->tick + tmo->tick; - else - tmo->expired = TRUE; - } -} - -static U32 timer_sched_timeout(U32 ms, U8 type) -{ - struct timer_t* priv = &TIMER; - struct timeout_t* tmo; - U8 id; - - Assert(type == TIMEOUT_ONESHOT || type == TIMEOUT_PERIODIC); - - for (id = 0; id < ARRAY_SIZE(priv->timeout); id++) { - tmo = &priv->timeout[id]; - if (tmo->expired) - break; - } - - Assert(id != ARRAY_SIZE(priv->timeout)); - - tmo->tick = ms / priv->MS_PER_TICK; - tmo->expire_at_tick = priv->tick + tmo->tick; - tmo->type = type; - tmo->expired = FALSE; - return id; -} - -U32 timer_sched_timeout_cb(U32 ms, U8 type, void (*cb)(void *ctx), void* ctx) -{ - struct timer_t* priv = &TIMER; - struct timeout_t* tmo; - U8 id; - - Assert(cb); - id = timer_sched_timeout(ms, type); - tmo = &priv->timeout[id]; - - tmo->cb = cb; - tmo->ctx = ctx; - return id; -} - - -U32 timer_mod(U32 id, U32 ms, U8 type, void (*cb)(void *ctx), void* ctx) -{ - struct timer_t* priv = &TIMER; - - if (id != INVALID_TIMER_ID && !priv->timeout[id].expired) - timer_cancel_timeout(id); - - return timer_sched_timeout_cb(ms, type, cb, ctx); -} - -void timer_cancel_timeout(U32 id) -{ - struct timer_t* priv = &TIMER; - struct timeout_t* tmo; - - tmo = &priv->timeout[id]; - tmo->expired = TRUE; -} - -int timer_interval_passed(U32 old, U32 new, U32 diff) { - /* New did not wrap */ - if (new > old && new - old > diff) { - return 1; - } - /* New did wrap */ - else if (new < old && ( ( (U32)(-1) - old ) + new ) > diff ) { - return 1; - } - return 0; -} diff --git a/firmwares/wifishield/wifiHD/src/timer.h b/firmwares/wifishield/wifiHD/src/timer.h deleted file mode 100644 index 6614fbc..0000000 --- a/firmwares/wifishield/wifiHD/src/timer.h +++ /dev/null @@ -1,51 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef TIMER_H -#define TIMER_H -#include - -enum { - TIMEOUT_ONESHOT, - TIMEOUT_PERIODIC -}; - -#define INVALID_TIMER_ID 0xFFFFFFFF - -/* Handle timer overflows. Return 1 if the interval has passed. */ -int timer_interval_passed(uint32_t old, uint32_t new, uint32_t diff); - -void timer_tick(); -void timer_init(void (*tick_isr) (void* ctx), void* ctx); -void timer_poll(void); -void timer_delay(uint32_t ms); -uint32_t timer_sched_timeout_cb(uint32_t ms, uint8_t type, void (*cb)(void *ctx), void* ctx); -uint32_t timer_mod(uint32_t id, uint32_t ms, uint8_t type, void (*cb)(void *ctx), void* ctx); -void timer_cancel_timeout(uint32_t id); -uint32_t timer_get_ms(void); - -#endif diff --git a/firmwares/wifishield/wifiHD/src/top_defs.h b/firmwares/wifishield/wifiHD/src/top_defs.h deleted file mode 100644 index 09f7c3e..0000000 --- a/firmwares/wifishield/wifiHD/src/top_defs.h +++ /dev/null @@ -1,120 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef _TOP_DEFS_H -#define _TOP_DEFS_H - -#include -#include - -#define ARRAY_SIZE(a) sizeof(a) / sizeof((a)[0]) - -#ifndef UNREF -#define UNREF(x) x = x -#endif - -#if __GNUC__ -#ifdef __KERNEL__ -#define WEAK_DECL -#else -#define WEAK_DECL __attribute__ ((__weak__)) -#endif -#define PACKED __attribute__ ((__packed__)) -#define USED __attribute__ ((__used__)) -#else - #error "Unsupported compiler" -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - - -#if 0 -#include -/* - * These functions should _NOT_ be used, call iprintf, sniprintf, iscanf, siscanf etc - * instead. Those functions do not have support for floating point formats. - * Not using these functions saves 27kB of code. - */ -extern int printf(const char *format, ...) __attribute__ ((deprecated)); -extern int sprintf(char *str, const char *format, ...) __attribute__ ((deprecated)); -extern int snprintf(char *str, size_t size, const char *format, ...) __attribute__ ((deprecated)); - -int vprintf(const char *format, va_list ap) __attribute__ ((deprecated)); -int vfprintf(FILE *stream, const char *format, va_list ap) __attribute__ ((deprecated)); -int vsprintf(char *str, const char *format, va_list ap) __attribute__ ((deprecated)); -int vsnprintf(char *str, size_t size, const char *format, va_list ap) __attribute__ ((deprecated)); - -int scanf(const char *format, ...) __attribute__ ((deprecated)); -int fscanf(FILE *stream, const char *format, ...) __attribute__ ((deprecated)); -int sscanf(const char *str, const char *format, ...) __attribute__ ((deprecated)); - -int vscanf(const char *format, va_list ap) __attribute__ ((deprecated)); -int vsscanf(const char *str, const char *format, va_list ap) __attribute__ ((deprecated)); -int vfscanf(FILE *stream, const char *format, va_list ap) __attribute__ ((deprecated)); -#endif - -#endif - - - -#if defined(__linux__) || defined(__APPLE__) - #include - #include - #define sniprintf snprintf - #define asiprintf asprintf - #define printk printf - #define siscanf sscanf - - #define WL_ASSERT(x) assert(x) - #define WL_DEBUG(args...) printf(args) - - #ifdef NO_LWIP - /* IP address representation from lwIP */ - struct ip_addr { - uint32_t addr; - } PACKED; - #endif - - #define FEAT_SOCKETS - -#else - #define WL_ASSERT(cond) do { \ - if (!(cond)) { \ - printk("%s:%d\n", __FILE__, __LINE__); \ - for(;;); \ - } \ - } while(0) - #define WL_DEBUG(args...) printk(args) - - -#endif diff --git a/firmwares/wifishield/wifiHD/src/trace.h b/firmwares/wifishield/wifiHD/src/trace.h deleted file mode 100644 index 984262a..0000000 --- a/firmwares/wifishield/wifiHD/src/trace.h +++ /dev/null @@ -1,44 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef TRACE_H -#define TRACE_H - -#include -#include "printf-stdarg.h" - -#define ASSERT(cond, str) do { \ - if (!(cond)) { \ - printk("%s\n", str); \ - Assert(0); \ - } \ - } while(0) - - -#endif diff --git a/firmwares/wifishield/wifiHD/src/util.c b/firmwares/wifishield/wifiHD/src/util.c deleted file mode 100644 index c01edeb..0000000 --- a/firmwares/wifishield/wifiHD/src/util.c +++ /dev/null @@ -1,260 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -const char* ip2str(struct ip_addr addr) -{ - static char buf[16]; - -#if BYTE_ORDER == LITTLE_ENDIAN - sniprintf(buf, sizeof(buf), "%lu.%lu.%lu.%lu", - addr.addr & 0xff, - (addr.addr >> 8) & 0xff, - (addr.addr >> 16) & 0xff, - (addr.addr >> 24) & 0xff); - return buf; -#else - sniprintf(buf, sizeof(buf), "%lu.%lu.%lu.%lu", - (addr.addr >> 24) & 0xff, - (addr.addr >> 16) & 0xff, - (addr.addr >> 8) & 0xff, - (addr.addr) & 0xff); - return buf; -#endif -} - -struct ip_addr str2ip(const char* str) -{ - int a,b,c,d; - uint32_t ip = 0; - struct ip_addr addr; - - if (siscanf(str,"%d.%d.%d.%d",&a,&b,&c,&d) != 4) - goto out; - - if (a < 0 || a > 255 || b < 0 || b > 255 || - c < 0 || c > 255 || d < 0 || d > 255) { - goto out; - } - -#if BYTE_ORDER == LITTLE_ENDIAN - ip = (d << 24) | (c << 16) | (b << 8) | a; -#else - ip = (a << 24) | (b << 16) | (c << 8) | d; -#endif - - out: - addr.addr = ip; - return addr; -} - -uint8_t ascii_to_key(char *outp, const char *inp) { - char buf[3]; - int len; - buf[2] = '\0'; - len = strlen(inp); - if (len % 2) { - printk("Invalid length\n"); - } - len = 0; - while (*inp) { - if (! isxdigit(*inp) || ! isxdigit(*(inp+1)) || - len > WL_MAX_PASS_LEN) { - return 0; - } - buf[0] = *inp++; - buf[1] = *inp++; - *outp++ = strtol(buf, NULL, 16); - len++; - } - return len; -} - - - -void printbuf(const char *prefix, const void *data, size_t len) -{ - const unsigned char *s = data; - int i, j; - - for (i = 0; i < len; i += 16) - { - printk("%s ", prefix); - for(j = 0; j < 16; j++) { - if(i + j >= len) - printk(" "); - else - printk("%02X ", (uint16_t)s[i + j]); - } - printk(": "); - for(j = 0; j < 16; j++) { - if(i + j >= len) - break; - if(s[i+j] >= 32 && s[i+j] < 127) - printk("%c", s[i + j]); - else - printk("."); - } - printk("\n"); - } -} - - -void print_network(struct wl_network_t* wl_network) -{ - printk("%s ", mac2str(wl_network->bssid.octet)); - printk("\"%s\"", ssid2str(&wl_network->ssid)); - printk(" RSSI %d dBm ", wl_network->rssi); - switch(wl_network->net_type) { - case WL_CONN_TYPE_ADHOC: - printk(" Ad-Hoc "); - break; - default : - break; - } - switch (wl_network->enc_type) { - case ENC_TYPE_WEP : - printk(" (WEP encryption)"); - break; - case ENC_TYPE_TKIP : - printk(" (TKIP encryption)"); - break; - case ENC_TYPE_CCMP : - printk(" (CCMP encryption)"); - break; - case ENC_TYPE_NONE : - break; - } - printk("\n"); - -} - -void print_network_list(void) -{ - struct wl_network_list_t* wl_network_list; - uint8_t i; - - wl_get_network_list(&wl_network_list); - - if (wl_network_list->cnt == 0) - printk("no nets found\n"); - - for (i = 0; i < wl_network_list->cnt; i++) - print_network(wl_network_list->net[i]); -} - -int join_argv(char *dst, size_t dst_len, int argc, char* argv[]) { - char *p = dst; - int i; - int len = 0; - - /* Not really kosher, an ssid may legally contain 0-bytes but - * the console interface does not deal with that. - */ - for (i = 0; i < argc; i++) { - len += strlen(argv[i]); - if (len > dst_len) { - printk("ssid too long (max %d)\n", (int) dst_len); - return 0; - } - p += sniprintf(p, - dst_len - (p - dst), - "%s ", - argv[i]); - } - if (p == dst) { - return 0; - } - p--; - *p = '\0'; /* Delete last space */ - - return p - dst; -} - -const char* ssid2str(struct wl_ssid_t *ssid) { - static char buf[WL_SSID_MAX_LENGTH + 1]; - - memset(buf, 0, sizeof buf); - memcpy(buf, ssid->ssid, ssid->len); - - return buf; -} - - -const char* mac2str(uint8_t* mac) -{ - static char buf[18]; - sniprintf(buf, sizeof(buf), "%02x-%02x-%02x-%02x-%02x-%02x", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); - return buf; -} - - -char* enc_type2str(enum wl_enc_type enc_type) -{ - switch(enc_type) { - case ENC_TYPE_WEP: - return "WEP"; - case ENC_TYPE_CCMP: - return "CCMP"; - case ENC_TYPE_TKIP: - return "TKIP"; - default: - return ""; - }; -} - -int equal_ssid(const struct wl_ssid_t* ssid1, - const struct wl_ssid_t* ssid2) { - if (ssid1->len == ssid2->len && - (memcmp(ssid1->ssid, ssid2->ssid, ssid1->len) == 0)) { - return 1; - } - return 0; -} - -int equal_bssid(const struct wl_mac_addr_t* bssid1, - const struct wl_mac_addr_t* bssid2) { - if (memcmp(bssid1, bssid2, sizeof *bssid1) == 0) { - return 1; - } - return 0; -} - - diff --git a/firmwares/wifishield/wifiHD/src/util.h b/firmwares/wifishield/wifiHD/src/util.h deleted file mode 100644 index 2b3f74f..0000000 --- a/firmwares/wifishield/wifiHD/src/util.h +++ /dev/null @@ -1,71 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef _UTIL_H -#define _UTIL_H -#include -#include -#include -#include "lwip/ip.h" -#include - -const char* ip2str(struct ip_addr addr); - -struct ip_addr str2ip(const char* str); - -uint8_t ascii_to_key(char *outp, const char *inp); - -void print_network(struct wl_network_t* wl_network); - -void print_network_list(void); - -int join_argv(char *dst, size_t dst_len, int argc, char* argv[]); - -void printbuf(const char *prefix, const void *data, size_t len); - -const char* ssid2str(struct wl_ssid_t *ssid); - -const char* mac2str(uint8_t mac[6]); - -char* enc_type2str(enum wl_enc_type enc_type); - -int equal_ssid(const struct wl_ssid_t* ssid1, - const struct wl_ssid_t* ssid2); - -int equal_bssid(const struct wl_mac_addr_t* bssid1, - const struct wl_mac_addr_t* bssid2); - -#define NET_SET_SSID(net, xssid, ssid_len) do { \ - DE_MEMCPY((net)->ssid.ssid, (xssid), (ssid_len)); \ - (net)->ssid.len = (ssid_len); \ - } while (0) - -#define NET_SET_BSSID(net, xbssid) do { \ - DE_MEMCPY(&(net)->bssid, &(xbssid), sizeof (xbssid)); \ - } while (0) - -#endif /* _UTIL_H */ diff --git a/firmwares/wifishield/wifiHD/src/wifi_spi.h b/firmwares/wifishield/wifiHD/src/wifi_spi.h deleted file mode 100644 index e2e262c..0000000 --- a/firmwares/wifishield/wifiHD/src/wifi_spi.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - * wifi_spi.h - * - * Created on: Jul 4, 2010 - * Author: mlf by Metodo2 srl - */ -#ifndef WiFi_Spi_h -#define WiFi_Spi_h - -#include "wl_definitions.h" - -#define CMD_FLAG 0 -#define REPLY_FLAG 1<<7 -#define DATA_FLAG 0x40 - -#define WIFI_SPI_ACK 1 -#define WIFI_SPI_ERR 0xFF - -#define TIMEOUT_CHAR 1000 - -//#define MAX_SOCK_NUM 4 /**< Maxmium number of socket */ -#define NO_SOCKET_AVAIL 255 - -#define START_CMD 0xE0 -#define END_CMD 0xEE -#define ERR_CMD 0xEF -#define CMD_POS 1 // Position of Command OpCode on SPI stream -#define PARAM_LEN_POS 2 // Position of Param len on SPI stream - -enum { - SET_NET_CMD = 0x10, - SET_PASSPHRASE_CMD = 0x11, - SET_KEY_CMD = 0x12, - TEST_CMD = 0x13, - SET_IP_CONFIG_CMD = 0x14, - SET_DNS_CONFIG_CMD = 0x15, - - GET_CONN_STATUS_CMD = 0x20, - GET_IPADDR_CMD = 0x21, - GET_MACADDR_CMD = 0x22, - GET_CURR_SSID_CMD = 0x23, - GET_CURR_BSSID_CMD = 0x24, - GET_CURR_RSSI_CMD = 0x25, - GET_CURR_ENCT_CMD = 0x26, - SCAN_NETWORKS = 0x27, - START_SERVER_TCP_CMD= 0x28, - GET_STATE_TCP_CMD = 0x29, - DATA_SENT_TCP_CMD = 0x2A, - AVAIL_DATA_TCP_CMD = 0x2B, - GET_DATA_TCP_CMD = 0x2C, - START_CLIENT_TCP_CMD= 0x2D, - STOP_CLIENT_TCP_CMD = 0x2E, - GET_CLIENT_STATE_TCP_CMD = 0x2F, - DISCONNECT_CMD = 0x30, - GET_IDX_SSID_CMD = 0x31, - GET_IDX_RSSI_CMD = 0x32, - GET_IDX_ENCT_CMD = 0x33, - REQ_HOST_BY_NAME_CMD= 0x34, - GET_HOST_BY_NAME_CMD= 0x35, - START_SCAN_NETWORKS = 0x36, - GET_FW_VERSION_CMD = 0x37, - GET_TEST_CMD = 0x38, - SEND_DATA_UDP_CMD = 0x39, - GET_REMOTE_DATA_CMD = 0x3A, - - // All command with DATA_FLAG 0x40 send a 16bit Len - - SEND_DATA_TCP_CMD = 0x44, - GET_DATABUF_TCP_CMD = 0x45, - INSERT_DATABUF_CMD = 0x46, - -}; - -#if 0 -enum wl_tcp_state { - CLOSED = 0, - LISTEN = 1, - SYN_SENT = 2, - SYN_RCVD = 3, - ESTABLISHED = 4, - FIN_WAIT_1 = 5, - FIN_WAIT_2 = 6, - CLOSE_WAIT = 7, - CLOSING = 8, - LAST_ACK = 9, - TIME_WAIT = 10 -}; -#endif - -enum numParams{ - PARAM_NUMS_0, - PARAM_NUMS_1, - PARAM_NUMS_2, - PARAM_NUMS_3, - PARAM_NUMS_4, - PARAM_NUMS_5, - MAX_PARAM_NUMS -}; - -#define MAX_PARAMS MAX_PARAM_NUMS-1 -#define PARAM_LEN_SIZE 1 - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - char* param; -}tParam; - -typedef struct __attribute__((__packed__)) -{ - uint16_t dataLen; - char* data; -}tDataParam; - - -typedef struct __attribute__((__packed__)) -{ - unsigned char cmd; - unsigned char tcmd; - unsigned char nParam; - tParam params[MAX_PARAMS]; -}tSpiMsg; - -typedef struct __attribute__((__packed__)) -{ - unsigned char cmd; - unsigned char tcmd; - unsigned char nParam; - tDataParam params[MAX_PARAMS]; -}tSpiMsgData; - - -typedef struct __attribute__((__packed__)) -{ - unsigned char cmd; - unsigned char tcmd; - //unsigned char totLen; - unsigned char nParam; -}tSpiHdr; - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - uint32_t param; -}tLongParam; - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - uint16_t param; -}tIntParam; - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - uint8_t param; -}tByteParam; - -#endif -uint8_t param; \ No newline at end of file diff --git a/firmwares/wifishield/wifiHD/src/wl_cm.c b/firmwares/wifishield/wifiHD/src/wl_cm.c deleted file mode 100644 index ebc0e45..0000000 --- a/firmwares/wifishield/wifiHD/src/wl_cm.c +++ /dev/null @@ -1,431 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#include "wl_cm.h" -#include "util.h" -#include -#include "debug.h" - -/** Roaming configuration parameters **/ - -/*! The ROAMING_RSSI_THRESHOLD setting defines how bad the current - * signal strength should be before we'll consider roaming to an AP - * with better signal strength. The objective is to stay on the - * current AP as long as the RSSI is decent, even if there are other - * APs in the same BSS with better RSSI available. - * If ROAMING_RSSI_THRESHOLD is too high we might roam unecessarily. - * If ROAMING_RSSI_THRESHOLD is too low we might not roam in time to - * avoid packet loss. This also impacts power consumption, staying - * too long with an AP with poor RSSI will consume more power. - * Unit is dBm. - */ -#define ROAMING_RSSI_THRESHOLD -65 - -/*! The ROAMING_RSSI_DIFF setting defines how much better - * than the currently associated AP a new AP must be before - * we'll attempt to roam over to the new AP. - * If ROAMING_RSSI_DIFF is too high it might be too hard - * to roam (important if the STA is expected to move - * quickly through different AP coverage areas). - * If ROAMING_RSSI_DIFF is too low we might bounce between - * two APs with similar signal strengths. - * Unit is dBm. - */ -#define ROAMING_RSSI_DIFF 10 - -# include "printf-stdarg.h" -#include "ard_utils.h" -#include "debug.h" - -/** \defgroup wl_cm Connection Manager - * - * These functions are used to configure and control the WiFi connetion - * manager. - * - * - * @{ - */ - -struct cm_candidate { - struct wl_ssid_t ssid; - struct wl_mac_addr_t bssid; -}; - -struct cm { - cm_scan_cb_t *scan_cb; - cm_conn_cb_t *conn_cb; - cm_disconn_cb_t *disconn_cb; - void* ctx; - uint8_t enabled; - struct cm_candidate candidate; -}; - - -/** - * This function can be modified to pick a network based on - * application specific criteria. - * - * If the SSID can not be found in the scan list it will be - * assumed to be a hidden SSID and the wl_connect() command - * will be called to attempt to probe for the network and - * connect to it. - */ -static struct wl_network_t* -find_best_candidate(struct cm* cm) -{ - struct wl_network_list_t* netlist; - struct wl_network_t *best_net = NULL; - uint8_t i; - - if (wl_get_network_list(&netlist) != WL_SUCCESS) - return NULL; - - if (netlist->cnt == 0) - return NULL; - - for (i = 0; i < netlist->cnt; i++) { - /* match on ssid */ - if (cm->candidate.ssid.len) - if (!equal_ssid(&cm->candidate.ssid, - &netlist->net[i]->ssid)) - continue; - - /* match bssid */ - if (strncmp((char*) cm->candidate.bssid.octet, - "\xff\xff\xff\xff\xff\xff", 6)) - if (!equal_bssid(&cm->candidate.bssid, - &netlist->net[i]->bssid)) - continue; - /* check for best rssi. */ - if ( best_net && - ( best_net->rssi > netlist->net[i]->rssi) ) { - continue; - } - best_net = netlist->net[i]; - } - - return best_net; -} - - -/** - * - */ -static void -select_net(struct cm* cm) -{ - struct wl_network_t *candidate_net; - struct wl_network_t *current_net; - struct wl_ssid_t *ssid_p; - - int ret; - - /* Nothing to do */ - if (0 == cm->candidate.ssid.len) { - return; - } - - current_net = wl_get_current_network(); - candidate_net = find_best_candidate(cm); - - /* Connected to the candidate? ... */ - if ( current_net == candidate_net ) { - if ( current_net ) { - /* ...yes, dont change. */ - - return; - } - } - - /* Roaming checks */ - if (current_net && candidate_net) { - /* Are we changing BSSs? */ - if ( equal_ssid(&candidate_net->ssid, - ¤t_net->ssid)) { - - /* ...no. Does the currently connected - * net have a decent RSSI?...*/ - if ( current_net->rssi > ROAMING_RSSI_THRESHOLD ) { - /* ...yes, stay with it. */ - return; - } - /* ...no. Does the candidate have - * sufficiently better RSSI to - * motivate a switch to it? */ - if ( candidate_net->rssi < current_net->rssi + - ROAMING_RSSI_DIFF) { - return; - } - /* ...yes, try to roam to candidate_net */ - CM_DPRINTF("CM: Roaming from rssi %d to %d\n", - current_net->rssi, - candidate_net->rssi); - } - } - /* a candidate is found */ - if (candidate_net) { - /* We connect to a specific bssid here because - * find_best_candidate() might have picked a - * particulare AP among many with the same SSID. - * wl_connect() would pick one of them at random. - */ - ret = wl_connect_bssid(candidate_net->bssid); - } - /* no candidate found */ - else { - CM_DPRINTF("CM: No candidate found for ssid \"%s\"\n", - ssid2str(&cm->candidate.ssid)); - /* Might be a hidden SSID so we try to connect to it. - * wl_connect() will trigger a directed scan - * for the SSID in this case. - */ - ssid_p = &cm->candidate.ssid; - ret = wl_connect(ssid_p->ssid, ssid_p->len); - } - switch (ret) { - case WL_SUCCESS : - return; - case WL_BUSY: - wl_disconnect(); - return; - case WL_RETRY: - break; - default : - CM_DPRINTF("CM: failed to connect\n"); - break; - } - - /* some operation failed or no candidate found */ - if (wl_scan() != WL_SUCCESS) - CM_DPRINTF("CM: failed to scan\n"); -} - - -/** - * - */ -static void -wl_scan_complete_cb(void* ctx) -{ - struct cm *cm = ctx; - - CM_DPRINTF("CM: scan completed\n"); - - if (cm->scan_cb) - cm->scan_cb(cm->ctx); - - if ( 0 == cm->enabled ) { - return; - } - select_net(cm); -} - -/** - * - */ -static void -wl_media_connected_cb(void* ctx) -{ - struct cm *cm = ctx; - struct wl_network_t *net = wl_get_current_network(); - CM_DPRINTF("CM: connected to %s\n", ssid2str(&net->ssid)); - LINK_LED_ON(); - ERROR_LED_OFF(); - if (cm->conn_cb) - cm->conn_cb(net, cm->ctx); -} - - -/** - * - */ -static void -wl_conn_failure_cb(void* ctx) -{ - struct cm *cm = ctx; - CM_DPRINTF("CM: connect failed, scanning\n"); - ERROR_LED_ON(); - LINK_LED_OFF(); - - if ( 0 == cm->enabled ) { - return; - } - if (wl_scan() != WL_SUCCESS) - /* should never happen */ - CM_DPRINTF("CM: could not start scan after connect fail!\n"); -} - - -/** - * - */ -static void -wl_conn_lost_cb(void* ctx) -{ - struct cm *cm = ctx; - CM_DPRINTF("CM: connection lost, scanning\n"); - LINK_LED_OFF(); - if (cm->disconn_cb) - cm->disconn_cb(cm->ctx); - - if ( 0 == cm->enabled ) { - return; - } - if (wl_scan() != WL_SUCCESS) - /* should never happen */ - CM_DPRINTF("CM: could not start scan after connect lost!\n"); -} - - -/** - * - */ -static void -wl_event_cb(struct wl_event_t event, void* ctx) -{ - struct cm *cm = ctx; - - switch (event.id) { - case WL_EVENT_MEDIA_CONNECTED: - wl_media_connected_cb(cm); - break; - - case WL_EVENT_CONN_FAILURE: - wl_conn_failure_cb(cm); - break; - - case WL_EVENT_MEDIA_DISCONNECTED: - CM_DPRINTF("CM: disconnected\n"); - wl_conn_lost_cb(cm); - break; - - case WL_EVENT_SCAN_COMPLETE: - wl_scan_complete_cb(cm); - break; - - default: - CM_DPRINTF("CM: unhandled event\n"); - }; -} - -static struct cm *cm = NULL; - - -/** - * Doesn't actually start the CM, just initializing. CM will run whenever - * an valid ssid is set through wl_cm_set_network() and wl_cm_start() - * has been called. - */ -wl_err_t -wl_cm_init(cm_scan_cb_t scan_cb, - cm_conn_cb_t conn_cb, - cm_disconn_cb_t disconn_cb, - void* ctx) -{ - if (cm != NULL) - return WL_FAILURE; - - cm = calloc(1, sizeof(struct cm)); - if (cm == NULL) { - CM_DPRINTF("CM: out of memory\n"); - return WL_FAILURE; - } - - if (wl_register_event_cb(wl_event_cb, cm) != WL_SUCCESS) { - CM_DPRINTF("CM: could not register event cb\n"); - return WL_FAILURE; - } - - cm->scan_cb = scan_cb; - cm->conn_cb = conn_cb; - cm->disconn_cb = disconn_cb; - cm->enabled = 0; - cm->ctx = ctx; - - CM_DPRINTF("CM: initialized\n"); - return WL_SUCCESS; -} - -wl_err_t -wl_cm_start(void) { - if (NULL == cm) - return WL_FAILURE; - - cm->enabled = 1; - return WL_SUCCESS; -} - -wl_err_t -wl_cm_stop(void) { - if (NULL == cm) - return WL_FAILURE; - - cm->enabled = 0; - return WL_SUCCESS; -} - - -/** - * Set the desired network which the connection manager should try to - * connect to. - * - * The ssid and bssid of the desired network should be specified. The ssid and - * bssid will be matched against the networks found during scan. If any - * parameter is null, it will always match. If both parameters are null, - * the first found network will be chosen. - * - * @param ssid The ssid of the desired network. If null, any ssid will match. - * @param bssid The bssid of the desired network. If null, any bssid will match. - * - */ -wl_err_t -wl_cm_set_network(struct wl_ssid_t *ssid, struct wl_mac_addr_t *bssid) -{ - if (cm == NULL) - return WL_FAILURE; - - if (ssid) - memcpy(&cm->candidate.ssid, ssid, sizeof(cm->candidate.ssid)); - else - cm->candidate.ssid.len = 0; - - if (bssid) - memcpy(&cm->candidate.bssid, bssid, - sizeof(cm->candidate.bssid)); - else - memset(&cm->candidate.bssid, 0xff, sizeof(cm->candidate.bssid)); - - if (cm->candidate.ssid.len) - wl_scan(); - - return WL_SUCCESS; -} -/* - * @} - */ diff --git a/firmwares/wifishield/wifiHD/src/wl_cm.h b/firmwares/wifishield/wifiHD/src/wl_cm.h deleted file mode 100644 index bbb65d9..0000000 --- a/firmwares/wifishield/wifiHD/src/wl_cm.h +++ /dev/null @@ -1,51 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef WL_CM_H -#define WL_CM_H - -#include -#include -#include - -typedef void (cm_scan_cb_t)(void* ctx); -typedef void (cm_conn_cb_t)(struct wl_network_t *net, void* ctx); -typedef void (cm_disconn_cb_t)(void* ctx); - -wl_err_t wl_cm_set_network(struct wl_ssid_t *ssid, struct wl_mac_addr_t *bssid); - -wl_err_t wl_cm_init(cm_scan_cb_t scan_cb, - cm_conn_cb_t conn_cb, - cm_disconn_cb_t disconn_cb, - void* ctx); - -wl_err_t wl_cm_start(void); -wl_err_t wl_cm_stop(void); - -#endif diff --git a/firmwares/wifishield/wifiHD/src/wl_definitions.h b/firmwares/wifishield/wifiHD/src/wl_definitions.h deleted file mode 100644 index b07c203..0000000 --- a/firmwares/wifishield/wifiHD/src/wl_definitions.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * wl_definitions.h - * - * Created on: Mar 6, 2011 - * Author: mlf by Metodo2 srl - */ - -#ifndef WL_DEFINITIONS_H_ -#define WL_DEFINITIONS_H_ - -// Maximum size of a SSID -#define WL_SSID_MAX_LENGTH 32 -// Length of passphrase. Valid lengths are 8-63. -#define WL_WPA_KEY_MAX_LENGTH 63 -// Length of key in bytes. Valid values are 5 and 13. -#define WL_WEP_KEY_MAX_LENGTH 13 -// Size of a MAC-address or BSSID -#define WL_MAC_ADDR_LENGTH 6 -// Size of a MAC-address or BSSID -#define WL_IPV4_LENGTH 4 -// Maximum size of a SSID list -#define WL_NETWORKS_LIST_MAXNUM 10 -// Maxmium number of socket -#define MAX_SOCK_NUM 4 -//Maximum number of attempts to establish wifi connection -#define WL_MAX_ATTEMPT_CONNECTION 10 - -typedef enum { - WL_IDLE_STATUS, - WL_NO_SSID_AVAIL, - WL_SCAN_COMPLETED, - WL_CONNECTED, - WL_CONNECT_FAILED, - WL_CONNECTION_LOST, - WL_DISCONNECTED -} wl_status_t; - - -#endif /* WL_DEFINITIONS_H_ */ diff --git a/firmwares/wifishield/wifiHD/wifiHD.cproj b/firmwares/wifishield/wifiHD/wifiHD.cproj deleted file mode 100644 index 3d15941..0000000 --- a/firmwares/wifishield/wifiHD/wifiHD.cproj +++ /dev/null @@ -1,1291 +0,0 @@ - - - - 2.0 - 6.0 - com.Atmel.AVRGCC32 - 417e15db-488a-4b56-8d4e-fbe832b2b649 - wifiHD - AT32uc3a1256 - none - Importer - Executable - C - wifiHD - .elf - $(MSBuildProjectDirectory)\$(Configuration) - Native - com.atmel.avrdbg.tool.jtagicemk3 - true - - - - - - - - - - - - - - JTAG - - com.atmel.avrdbg.tool.jtagicemk3 - JTAGICE3 - J30200003078 - true - false - - - - 127.0.0.1 - 51999 - False - - - JTAG - - 250000 - 1000000 - 150000 - false - false - 0 - 0 - 0 - 0 - - - - 3.5.0 - false - - 0 - - - - - True - True - True - True - - - BOARD=ARDUINO - WITH_KEY - WITH_WPA - WITH_NO_DMA - DATAFLASH=1 - _INFO_DEBUG_=1 - - - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4 - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD - - - Optimize for size (-Os) - -fdata-sections -ffunction-sections - True - True - True - True - -c -fmessage-length=0 - True - - - newlib_addons-at32ucr2-speed_opt - _ucr2_hd_spi_v2.7.0 - _ucr2_hd_wl_sta_intwpa_v2.7.0 - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC - - - True - True - True - -Wl,--gc-sections -Wl,-e,_trampoline -T../src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - - - - - - - True - True - True - True - false - false - - - BOARD=ARDUINO - NO_SYS - _DEBUG_ - _ASSERT_ENABLE_ - WITH_KEY - WITH_WPA - WITH_NO_DMA - DATAFLASH=1 - _INFO_DEBUG_=1 - - - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4 - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD - - - Optimize (-O1) - -fdata-sections -ffunction-sections - true - false - false - false - false - true - true - false - false - false - Maximum (-g3) - false - false - true - false - false - false - false - -c -fmessage-length=0 - false - true - false - false - false - false - - - newlib_addons-at32ucr2-speed_opt - _ucr2_hd_spi_v2.7.0 - _ucr2_hd_wl_sta_intwpa_v2.7.0 - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC - - - true - false - false - false - false - true - true - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - Default (-g) - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - false - Default (-Wa,-g) - - - - - bin\Debug_512\ - - - True - True - True - True - false - false - - - BOARD=ARDUINO - _APP_DEBUG_ - _DEBUG_ - _ASSERT_ENABLE_ - EXT_BOARD=SPB104 - WITH_KEY - WITH_WPA - WITH_NO_DMA - LWIP_DEBUG - _INFO_DEBUG_=1 - - - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4 - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD - - - Optimize (-O1) - -fdata-sections - true - false - false - false - false - true - false - false - false - false - Maximum (-g3) - false - false - true - false - false - false - false - -c -fmessage-length=0 - false - true - false - false - false - false - - - newlib_addons-at32ucr2-speed_opt - _ucr2_hd_spi_standalone_v2.1.1 - _ucr2_hd_wl_standalone_v2.1.1 - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.1.1/UCR2/GCC - - - true - false - false - false - false - true - true - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - Default (-g) - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - false - Default (-Wa,-g) - - - - - bin\Release_512\ - - - True - True - True - True - false - false - - - BOARD=ARDUINO - _ASSERT_ENABLE_ - EXT_BOARD=SPB104 - WITH_KEY - WITH_WPA - WITH_NO_DMA - LWIP_DEBUG - _INFO_DEBUG_=1 - - - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4 - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD - - - -fdata-sections - true - false - false - false - false - true - false - false - false - false - false - false - true - false - false - false - false - -c -fmessage-length=0 - false - true - false - false - false - false - - - newlib_addons-at32ucr2-speed_opt - _ucr2_hd_spi_standalone_v2.1.1 - _ucr2_hd_wl_standalone_v2.1.1 - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.1.1/UCR2/GCC - - - true - false - false - false - false - true - true - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - false - - - - - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - - - - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - - compile - - - compile - - - compile - - - - - compile - - - compile - - - compile - - - - - - compile - - - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - - compile - - - compile - - - - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - - compile - - - - - compile - - - - compile - - - compile - - - - compile - - - - compile - - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - - - - - compile - - - - - compile - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - \ No newline at end of file diff --git a/firmwares/wifishield/wifi_dnld/.cproject b/firmwares/wifishield/wifi_dnld/.cproject deleted file mode 100644 index 286dad7..0000000 --- a/firmwares/wifishield/wifi_dnld/.cproject +++ /dev/null @@ -1,1281 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/firmwares/wifishield/wifi_dnld/.project b/firmwares/wifishield/wifi_dnld/.project deleted file mode 100644 index aa3047b..0000000 --- a/firmwares/wifishield/wifi_dnld/.project +++ /dev/null @@ -1,70 +0,0 @@ - - - wifi_dnld - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/wifi_dnld/Debug} - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - com.atmel.avr32.core.nature - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/firmwares/wifishield/wifi_dnld/Release/wifi_dnld.elf b/firmwares/wifishield/wifi_dnld/Release/wifi_dnld.elf deleted file mode 100644 index 11ec3dd..0000000 Binary files a/firmwares/wifishield/wifi_dnld/Release/wifi_dnld.elf and /dev/null differ diff --git a/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_access.h b/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_access.h deleted file mode 100644 index 23e9b34..0000000 --- a/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_access.h +++ /dev/null @@ -1,170 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Memory access control configuration file. - * - * This file contains the possible external configuration of the memory access - * control. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CONF_ACCESS_H_ -#define _CONF_ACCESS_H_ - -#include "compiler.h" -#include "board.h" - - -/*! \name Activation of Logical Unit Numbers - */ -//! @{ -#define LUN_0 DISABLE //!< On-Chip Virtual Memory. -#define LUN_1 ENABLE //!< AT45DBX Data Flash. -#define LUN_2 DISABLE //!< SD/MMC Card over SPI. -#define LUN_3 DISABLE -#define LUN_4 DISABLE -#define LUN_5 DISABLE -#define LUN_6 DISABLE -#define LUN_7 DISABLE -#define LUN_USB DISABLE //!< Host Mass-Storage Memory. -//! @} - -/*! \name LUN 0 Definitions - */ -//! @{ -#define VIRTUAL_MEM LUN_0 -#define LUN_ID_VIRTUAL_MEM LUN_ID_0 -#define LUN_0_INCLUDE "virtual_mem.h" -#define Lun_0_test_unit_ready virtual_test_unit_ready -#define Lun_0_read_capacity virtual_read_capacity -#define Lun_0_wr_protect virtual_wr_protect -#define Lun_0_removal virtual_removal -#define Lun_0_usb_read_10 virtual_usb_read_10 -#define Lun_0_usb_write_10 virtual_usb_write_10 -#define Lun_0_mem_2_ram virtual_mem_2_ram -#define Lun_0_ram_2_mem virtual_ram_2_mem -#define LUN_0_NAME "\"On-Chip Virtual Memory\"" -//! @} - -/*! \name LUN 1 Definitions - */ -//! @{ -#define AT45DBX_MEM LUN_1 -#define LUN_ID_AT45DBX_MEM LUN_ID_1 -#define LUN_1_INCLUDE "at45dbx_mem.h" -#define Lun_1_test_unit_ready at45dbx_test_unit_ready -#define Lun_1_read_capacity at45dbx_read_capacity -#define Lun_1_wr_protect at45dbx_wr_protect -#define Lun_1_removal at45dbx_removal -#define Lun_1_usb_read_10 at45dbx_usb_read_10 -#define Lun_1_usb_write_10 at45dbx_usb_write_10 -#define Lun_1_mem_2_ram at45dbx_df_2_ram -#define Lun_1_ram_2_mem at45dbx_ram_2_df -#define LUN_1_NAME "\"AT45DBX Data Flash\"" -//! @} - -/*! \name LUN 2 Definitions - */ -//! @{ -#define SD_MMC_SPI_MEM LUN_2 -#define LUN_ID_SD_MMC_SPI_MEM LUN_ID_2 -#define LUN_2_INCLUDE "sd_mmc_spi_mem.h" -#define Lun_2_test_unit_ready sd_mmc_spi_test_unit_ready -#define Lun_2_read_capacity sd_mmc_spi_read_capacity -#define Lun_2_wr_protect sd_mmc_spi_wr_protect -#define Lun_2_removal sd_mmc_spi_removal -#define Lun_2_usb_read_10 sd_mmc_spi_usb_read_10 -#define Lun_2_usb_write_10 sd_mmc_spi_usb_write_10 -#define Lun_2_mem_2_ram sd_mmc_spi_mem_2_ram -#define Lun_2_ram_2_mem sd_mmc_spi_ram_2_mem -#define LUN_2_NAME "\"SD/MMC Card over SPI\"" -//! @} - -/*! \name USB LUNs Definitions - */ -//! @{ -#define MEM_USB LUN_USB -#define LUN_ID_MEM_USB LUN_ID_USB -#define LUN_USB_INCLUDE "host_mem.h" -#define Lun_usb_test_unit_ready(lun) host_test_unit_ready(lun) -#define Lun_usb_read_capacity(lun, nb_sect) host_read_capacity(lun, nb_sect) -#define Lun_usb_read_sector_size(lun) host_read_sector_size(lun) -#define Lun_usb_wr_protect(lun) host_wr_protect(lun) -#define Lun_usb_removal() host_removal() -#define Lun_usb_mem_2_ram(addr, ram) host_read_10_ram(addr, ram) -#define Lun_usb_ram_2_mem(addr, ram) host_write_10_ram(addr, ram) -#define LUN_USB_NAME "\"Host Mass-Storage Memory\"" -//! @} - -/*! \name Actions Associated with Memory Accesses - * - * Write here the action to associate with each memory access. - * - * \warning Be careful not to waste time in order not to disturb the functions. - */ -//! @{ -#define memory_start_read_action(nb_sectors) -#define memory_stop_read_action() -#define memory_start_write_action(nb_sectors) -#define memory_stop_write_action() -//! @} - -/*! \name Activation of Interface Features - */ -//! @{ -#define ACCESS_USB DISABLED //!< MEM <-> USB interface. -#define ACCESS_MEM_TO_RAM ENABLED //!< MEM <-> RAM interface. -#define ACCESS_STREAM DISABLED //!< Streaming MEM <-> MEM interface. -#define ACCESS_STREAM_RECORD DISABLED //!< Streaming MEM <-> MEM interface in record mode. -#define ACCESS_MEM_TO_MEM DISABLED //!< MEM <-> MEM interface. -#define ACCESS_CODEC DISABLED //!< Codec interface. -//! @} - -/*! \name Specific Options for Access Control - */ -//! @{ -#define GLOBAL_WR_PROTECT DISABLED //!< Management of a global write protection. -//! @} - - -#endif // _CONF_ACCESS_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_at45dbx.h b/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_at45dbx.h deleted file mode 100644 index 3280e4f..0000000 --- a/firmwares/wifishield/wifi_dnld/src/CONFIG/conf_at45dbx.h +++ /dev/null @@ -1,83 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT45DBX configuration file. - * - * This file contains the possible external configuration of the AT45DBX. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CONF_AT45DBX_H_ -#define _CONF_AT45DBX_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error conf_at45dbx.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "at45dbx.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! Size of AT45DBX data flash memories to manage. -#define AT45DBX_MEM_SIZE AT45DBX_1MB - -//! Number of AT45DBX components to manage. -#define AT45DBX_MEM_CNT 1 - -//! First chip select used by AT45DBX components on the SPI module instance. -//! AT45DBX_SPI_NPCS0_PIN always corresponds to this first NPCS, whatever it is. -#define AT45DBX_SPI_FIRST_NPCS AT45DBX_SPI_NPCS - -//! SPI master speed in Hz. -#define AT45DBX_SPI_MASTER_SPEED 12000000 - -//! Number of bits in each SPI transfer. -#define AT45DBX_SPI_BITS 8 - - -#endif // _CONF_AT45DBX_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/Doc/SPB104 product brief.pdf b/firmwares/wifishield/wifi_dnld/src/Doc/SPB104 product brief.pdf deleted file mode 100644 index 8705cb1..0000000 Binary files a/firmwares/wifishield/wifi_dnld/src/Doc/SPB104 product brief.pdf and /dev/null differ diff --git a/firmwares/wifishield/wifi_dnld/src/Doc/gettingstarted.pdf b/firmwares/wifishield/wifi_dnld/src/Doc/gettingstarted.pdf deleted file mode 100644 index 7c37693..0000000 Binary files a/firmwares/wifishield/wifi_dnld/src/Doc/gettingstarted.pdf and /dev/null differ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x deleted file mode 100644 index c127121..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x +++ /dev/null @@ -1,74 +0,0 @@ -/* This file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AVR32 UC3 ISP trampoline. - * - * In order to be able to program a project with both BatchISP and JTAGICE mkII - * without having to take the general-purpose fuses into consideration, add this - * file to the project and change the program entry point to _trampoline. - * - * The pre-programmed ISP will be erased if JTAGICE mkII is used. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32UC devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (C) 2006-2008, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - - -#include "conf_isp.h" - - -//! @{ -//! \verbatim - - - // This must be linked @ 0x80000000 if it is to be run upon reset. - .section .reset, "ax", @progbits - - - .global _trampoline - .type _trampoline, @function -_trampoline: - // Jump to program start. - rjmp program_start - - .org PROGRAM_START_OFFSET -program_start: - // Jump to the C runtime startup routine. - lda.w pc, _stext - - -//! \endverbatim -//! @} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h deleted file mode 100644 index fbdd466..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h +++ /dev/null @@ -1,234 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board header file. - * - * This file contains definitions and services related to the features of the - * EVK1100 board rev. B and C. - * - * To use this board, define BOARD=EVK1100. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _ARDUINO_H_ -#define _ARDUINO_H_ - -#include "compiler.h" - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. -# include "led.h" -#endif // __AVR32_ABI_COMPILER__ - - -/*! \name Oscillator Definitions - */ -//! @{ - -// RCOsc has no custom calibration by default. Set the following definition to -// the appropriate value if a custom RCOsc calibration has been applied to your -// part. -//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz. - -#define FOSC32 32768 //!< Osc32 frequency: Hz. -#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods. - -#define FOSC0 12000000 //!< Osc0 frequency: Hz. -#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods. - -// Osc1 crystal is not mounted by default. Set the following definitions to the -// appropriate values if a custom Osc1 crystal is mounted on your board. -//#define FOSC1 12000000 //!< Osc1 frequency: Hz. -//#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods. - -//! @} - - -//! Number of LEDs. -#define LED_COUNT 3 - -/*! \name GPIO Connections of LEDs - */ -//! @{ -#define LED0_GPIO AVR32_PIN_PB19 -#define LED1_GPIO AVR32_PIN_PB20 -#define LED2_GPIO AVR32_PIN_PB21 -//! @} - -/*! \name PWM Channels of LEDs - */ -//! @{ -#define LED0_PWM 0 -#define LED1_PWM 1 -#define LED2_PWM 2 -//! @} - -/*! \name PWM Functions of LEDs - */ -//! @{ -#define LED0_PWM_FUNCTION AVR32_PWM_0_FUNCTION -#define LED1_PWM_FUNCTION AVR32_PWM_1_FUNCTION -#define LED2_PWM_FUNCTION AVR32_PWM_2_FUNCTION -//! @} - -/*! \name Color Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED_MONO0_GREEN LED0 -#define LED_MONO1_GREEN LED1 -#define LED_MONO2_GREEN LED2 -//! @} - -#if 0 -/*! \name SPI Connections of the DIP204 LCD - */ -//! @{ -#define DIP204_SPI (&AVR32_SPI1) -#define DIP204_SPI_NPCS 2 -#define DIP204_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define DIP204_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define DIP204_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define DIP204_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define DIP204_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define DIP204_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define DIP204_SPI_NPCS_PIN AVR32_SPI1_NPCS_2_0_PIN -#define DIP204_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION -//! @} - -/*! \name GPIO and PWM Connections of the DIP204 LCD Backlight - */ -//! @{ -#define DIP204_BACKLIGHT_PIN AVR32_PIN_PB18 -#define DIP204_PWM_CHANNEL 6 -#define DIP204_PWM_PIN AVR32_PWM_6_PIN -#define DIP204_PWM_FUNCTION AVR32_PWM_6_FUNCTION -//! @} -#endif - -/*! \name SPI Connections of the AT45DBX Data Flash Memory - */ -//! @{ -#define AT45DBX_SPI (&AVR32_SPI1) -#define AT45DBX_SPI_NPCS 2 -#define AT45DBX_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define AT45DBX_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define AT45DBX_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define AT45DBX_SPI_NPCS2_PIN AVR32_SPI1_NPCS_2_0_PIN -#define AT45DBX_SPI_NPCS2_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION -#define AT45DBX_CHIP_RESET AVR32_PIN_PA02 -//! @} - - -/*! \name GPIO and SPI Connections of the SD/MMC Connector - */ -//! @{ -//#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02 -//#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA07 -#define SD_MMC_SPI (&AVR32_SPI1) -#define SD_MMC_SPI_NPCS 1 -#define SD_MMC_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define SD_MMC_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define SD_MMC_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define SD_MMC_SPI_NPCS_PIN AVR32_SPI1_NPCS_1_0_PIN -#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_1_0_FUNCTION -//! @} - -/* Timer Counter to generate clock for WiFi chip*/ -# define WIFI_TC (&AVR32_TC) -# define WIFI_TC_CHANNEL_ID 0 -# define WIFI_TC_CHANNEL_PIN AVR32_TC_A0_0_0_PIN -# define WIFI_TC_CHANNEL_FUNCTION AVR32_TC_A0_0_0_FUNCTION -// Note that TC_A0_0_0 pin is pin 6 (PB23) on AT32UC3A1512 QFP100. - -/* Pin related to WiFi chip communication */ -#ifndef USE_POLL - #define USE_POLL -#endif - #define SPI_CS 0 - #define AVR32_SPI AVR32_SPI1 - #define GPIO_IRQ_PIN AVR32_PIN_PA03 - #define GPIO_IRQ AVR32_GPIO_IRQ_7 - #define GPIO_W_RESET_PIN AVR32_PIN_PA07 - #define GPIO_W_SHUTDOWN_PIN AVR32_PIN_PA09 - -/* Pin related to shield communication */ - #define ARDUINO_HANDSHAKE_PIN AVR32_PIN_PA25 - - #define AVR32_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX - #define AVR32_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX - - -#if 0 -/*! \name TWI Connections of the Spare TWI Connector - */ -//! @{ -#define SPARE_TWI (&AVR32_TWI) -#define SPARE_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define SPARE_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define SPARE_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define SPARE_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -//! @} - - -/*! \name SPI Connections of the Spare SPI Connector - */ -//! @{ -#define SPARE_SPI (&AVR32_SPI0) -#define SPARE_SPI_NPCS 0 -#define SPARE_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define SPARE_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define SPARE_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define SPARE_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define SPARE_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define SPARE_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define SPARE_SPI_NPCS_PIN AVR32_SPI0_NPCS_0_0_PIN -#define SPARE_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION -//! @} -#endif - -#endif // _ARDUINO_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c deleted file mode 100644 index d7cd439..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c +++ /dev/null @@ -1,346 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1100 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "preprocessor.h" -#include "compiler.h" -#include "arduino.h" -#include "led.h" - - -//! Structure describing LED hardware connections. -typedef const struct -{ - struct - { - U32 PORT; //!< LED GPIO port. - U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port. - } GPIO; //!< LED GPIO descriptor. - struct - { - S32 CHANNEL; //!< LED PWM channel (< 0 if N/A). - S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A). - } PWM; //!< LED PWM descriptor. -} tLED_DESCRIPTOR; - - -//! Hardware descriptors of all LEDs. -static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] = -{ -#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \ - { \ - {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\ - {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \ - }, - MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~) -#undef INSERT_LED_DESCRIPTOR -}; - - -//! Saved state of all LEDs. -static volatile U32 LED_State = (1 << LED_COUNT) - 1; - - -U32 LED_Read_Display(void) -{ - return LED_State; -} - - -void LED_Display(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor; - volatile avr32_gpio_port_t *led_gpio_port; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - LED_State = leds; - - // For all LEDs... - for (led_descriptor = &LED_DESCRIPTOR[0]; - led_descriptor < LED_DESCRIPTOR + LED_COUNT; - led_descriptor++) - { - // Set the LED to the requested state. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - } -} - - -U32 LED_Read_Display_Mask(U32 mask) -{ - return Rd_bits(LED_State, mask); -} - - -void LED_Display_Mask(U32 mask, U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - mask &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Wr_bits(LED_State, mask, leds); - - // While there are specified LEDs left to manage... - while (mask) - { - // Select the next specified LED and set it to the requested state. - led_shift = 1 + ctz(mask); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - leds >>= led_shift - 1; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - mask >>= led_shift; - } -} - - -Bool LED_Test(U32 leds) -{ - return Tst_bits(LED_State, leds); -} - - -void LED_Off(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Clr_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it off. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_On(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Set_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it on. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_Toggle(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Tgl_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and toggle it. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -U32 LED_Read_Display_Field(U32 field) -{ - return Rd_bitfield(LED_State, field); -} - - -void LED_Display_Field(U32 field, U32 leds) -{ - // Move the bit-field to the appropriate position for the bit-mask. - LED_Display_Mask(field, leds << ctz(field)); -} - - -U8 LED_Get_Intensity(U32 led) -{ - tLED_DESCRIPTOR *led_descriptor; - - // Check that the argument value is valid. - led = ctz(led); - led_descriptor = &LED_DESCRIPTOR[led]; - if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0; - - // Return the duty cycle value if the LED PWM channel is enabled, else 0. - return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ? - AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0; -} - - -void LED_Set_Intensity(U32 leds, U8 intensity) -{ - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_pwm_channel_t *led_pwm_channel; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // For each specified LED... - for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift) - { - // Select the next specified LED and check that it has a PWM channel. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - if (led_descriptor->PWM.CHANNEL < 0) continue; - - // Initialize or update the LED PWM channel. - led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL]; - if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL))) - { - led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) & - ~(AVR32_PWM_CALG_MASK | - AVR32_PWM_CPOL_MASK | - AVR32_PWM_CPD_MASK); - led_pwm_channel->cprd = 0x000000FF; - led_pwm_channel->cdty = intensity; - AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL; - } - else - { - AVR32_PWM.isr; - while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL))); - led_pwm_channel->cupd = intensity; - } - - // Switch the LED pin to its PWM function. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (led_descriptor->PWM.FUNCTION & 0x1) - { - led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK; - } - if (led_descriptor->PWM.FUNCTION & 0x2) - { - led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK; - } -} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h deleted file mode 100644 index a577124..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h +++ /dev/null @@ -1,191 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1100 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _LED_H_ -#define _LED_H_ - -#include "compiler.h" - - -/*! \name Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED0 0x01 -#define LED1 0x02 -#define LED2 0x04 -#define LED3 0x08 -#define LED4 0x10 -#define LED5 0x20 -#define LED6 0x40 -#define LED7 0x80 -//! @} - - -/*! \brief Gets the last state of all LEDs set through the LED API. - * - * \return State of all LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display(void); - -/*! \brief Sets the state of all LEDs. - * - * \param leds New state of all LEDs (1 bit per LED). - * - * \note The pins of all LEDs are set to GPIO output mode. - */ -extern void LED_Display(U32 leds); - -/*! \brief Gets the last state of the specified LEDs set through the LED API. - * - * \param mask LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Mask(U32 mask); - -/*! \brief Sets the state of the specified LEDs. - * - * \param mask LEDs of which to set the state (1 bit per LED). - * - * \param leds New state of the specified LEDs (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Mask(U32 mask, U32 leds); - -/*! \brief Tests the last state of the specified LEDs set through the LED API. - * - * \param leds LEDs of which to test the state (1 bit per LED). - * - * \return \c TRUE if at least one of the specified LEDs has a state on, else - * \c FALSE. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern Bool LED_Test(U32 leds); - -/*! \brief Turns off the specified LEDs. - * - * \param leds LEDs to turn off (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Off(U32 leds); - -/*! \brief Turns on the specified LEDs. - * - * \param leds LEDs to turn on (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_On(U32 leds); - -/*! \brief Toggles the specified LEDs. - * - * \param leds LEDs to toggle (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Toggle(U32 leds); - -/*! \brief Gets as a bit-field the last state of the specified LEDs set through - * the LED API. - * - * \param field LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED, beginning with the first - * specified LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Field(U32 field); - -/*! \brief Sets as a bit-field the state of the specified LEDs. - * - * \param field LEDs of which to set the state (1 bit per LED). - * \param leds New state of the specified LEDs (1 bit per LED, beginning with - * the first specified LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Field(U32 field, U32 leds); - -/*! \brief Gets the intensity of the specified LED. - * - * \param led LED of which to get the intensity (1 bit per LED; only the least - * significant set bit is used). - * - * \return Intensity of the specified LED (0x00 to 0xFF). - * - * \warning The PWM channel of the specified LED is supposed to be used only by - * this module. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U8 LED_Get_Intensity(U32 led); - -/*! \brief Sets the intensity of the specified LEDs. - * - * \param leds LEDs of which to set the intensity (1 bit per LED). - * \param intensity New intensity of the specified LEDs (0x00 to 0xFF). - * - * \warning The PWM channels of the specified LEDs are supposed to be used only - * by this module. - * - * \note The pins of the specified LEDs are set to PWM output mode. - */ -extern void LED_Set_Intensity(U32 leds, U8 intensity); - - -#endif // _LED_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h deleted file mode 100644 index edda44c..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h +++ /dev/null @@ -1,433 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board header file. - * - * This file contains definitions and services related to the features of the - * EVK1105 board rev. B. - * - * To use this board, define BOARD=EVK1105. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _EVK1105_H_ -#define _EVK1105_H_ - -#ifdef EVK1105_REV3 -# include "evk1105_rev3.h" -#else - -#include "compiler.h" - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. -# include "led.h" -#endif // __AVR32_ABI_COMPILER__ - - -/*! \name Oscillator Definitions - */ -//! @{ - -// RCOsc has no custom calibration by default. Set the following definition to -// the appropriate value if a custom RCOsc calibration has been applied to your -// part. -//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz. - -#define FOSC32 32768 //!< Osc32 frequency: Hz. -#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods. - -#define FOSC0 12000000 //!< Osc0 frequency: Hz. -#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods. - -#define FOSC1 11289600 //!< Osc1 frequency: Hz -#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods. - - -//! @} - - -/*! \name SDRAM Definitions - */ -//! @{ - -//! Part header file of used SDRAM(s). -#define SDRAM_PART_HDR "MT48LC16M16A2TG7E/mt48lc16m16a2tg7e.h" - -//! Data bus width to use the SDRAM(s) with (16 or 32 bits; always 16 bits on -//! UC3). -#define SDRAM_DBW 16 -//! @} - - -/*! \name USB Definitions - */ -//! @{ -//! Multiplexed pin used for USB_ID: AVR32_USBB_USB_ID_x_x. -//! To be selected according to the AVR32_USBB_USB_ID_x_x_PIN and -//! AVR32_USBB_USB_ID_x_x_FUNCTION definitions from . -#define AVR32_USBB_USB_ID_0_2_PIN 21 -#define AVR32_USBB_USB_ID_0_2_FUNCTION 2 -#define USB_ID AVR32_USBB_USB_ID_0_2 - -//! Multiplexed pin used for USB_VBOF: AVR32_USBB_USB_VBOF_x_x. -//! To be selected according to the AVR32_USBB_USB_VBOF_x_x_PIN and -//! AVR32_USBB_USB_VBOF_x_x_FUNCTION definitions from . -# define USB_VBOF AVR32_USBB_USB_VBOF_0_1 - - -//! Active level of the USB_VBOF output pin. -# define USB_VBOF_ACTIVE_LEVEL LOW - -//! USB overcurrent detection pin. -# define USB_OVERCURRENT_DETECT_PIN AVR32_PIN_PX15 - -//! @} - - -//! GPIO connection of the MAC PHY PWR_DOWN/INT signal. -# define MACB_INTERRUPT_PIN AVR32_PIN_PA26 - - - -//! Number of LEDs. -#define LED_COUNT 4 - -/*! \name GPIO Connections of LEDs - */ -//! @{ -# define LED0_GPIO AVR32_PIN_PB27 -# define LED1_GPIO AVR32_PIN_PB28 -# define LED2_GPIO AVR32_PIN_PA05 -# define LED3_GPIO AVR32_PIN_PA06 -//! @} - -/*! \name Color Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED_MONO0_GREEN LED0 -#define LED_MONO1_GREEN LED1 -#define LED_MONO2_GREEN LED2 -#define LED_MONO3_GREEN LED3 -//! @} - -/*! \name PWM Channels of LEDs - */ -//! @{ -#define LED0_PWM 4 -#define LED1_PWM 5 -#define LED2_PWM (-1) -#define LED3_PWM (-1) -//! @} - -/*! \name PWM Functions of LEDs - */ -//! @{ -/* TODO: Implement PWM functionality */ -#define LED0_PWM_FUNCTION (-1)//AVR32_PWM_0_FUNCTION -#define LED1_PWM_FUNCTION (-1)//AVR32_PWM_1_FUNCTION -#define LED2_PWM_FUNCTION (-1) -#define LED3_PWM_FUNCTION (-1) -//! @} - -//! External interrupt connection of touch sensor. -#define QT1081_EIC_EXTINT_PIN AVR32_EIC_EXTINT_1_PIN -#define QT1081_EIC_EXTINT_FUNCTION AVR32_EIC_EXTINT_1_FUNCTION -#define QT1081_EIC_EXTINT_IRQ AVR32_EIC_IRQ_1 -#define QT1081_EIC_EXTINT_INT AVR32_EIC_INT1 -/*! \name Touch sensor low power mode select - */ -#define QT1081_LP_MODE AVR32_PIN_PB29 - -/*! \name GPIO Connections of touch buttons - */ -//! @{ -#define QT1081_TOUCH_SENSOR_0 AVR32_PIN_PB22 -#define QT1081_TOUCH_SENSOR_0_PRESSED 1 -#define QT1081_TOUCH_SENSOR_1 AVR32_PIN_PB23 -#define QT1081_TOUCH_SENSOR_1_PRESSED 1 -#define QT1081_TOUCH_SENSOR_2 AVR32_PIN_PB24 -#define QT1081_TOUCH_SENSOR_2_PRESSED 1 -#define QT1081_TOUCH_SENSOR_3 AVR32_PIN_PB25 -#define QT1081_TOUCH_SENSOR_3_PRESSED 1 -#define QT1081_TOUCH_SENSOR_4 AVR32_PIN_PB26 -#define QT1081_TOUCH_SENSOR_4_PRESSED 1 - -#define QT1081_TOUCH_SENSOR_ENTER QT1081_TOUCH_SENSOR_4 -#define QT1081_TOUCH_SENSOR_ENTER_PRESSED QT1081_TOUCH_SENSOR_4_PRESSED -#define QT1081_TOUCH_SENSOR_LEFT QT1081_TOUCH_SENSOR_3 -#define QT1081_TOUCH_SENSOR_LEFT_PRESSED QT1081_TOUCH_SENSOR_3_PRESSED -#define QT1081_TOUCH_SENSOR_RIGHT QT1081_TOUCH_SENSOR_2 -#define QT1081_TOUCH_SENSOR_RIGHT_PRESSED QT1081_TOUCH_SENSOR_2_PRESSED -#define QT1081_TOUCH_SENSOR_UP QT1081_TOUCH_SENSOR_0 -#define QT1081_TOUCH_SENSOR_UP_PRESSED QT1081_TOUCH_SENSOR_0_PRESSED -#define QT1081_TOUCH_SENSOR_DOWN QT1081_TOUCH_SENSOR_1 -#define QT1081_TOUCH_SENSOR_DOWN_PRESSED QT1081_TOUCH_SENSOR_1_PRESSED -//! @} - -/*! \name SPI Connections of the AT45DBX Data Flash Memory - */ -//! @{ -#define AT45DBX_SPI (&AVR32_SPI0) -#define AT45DBX_SPI_NPCS 0 -#define AT45DBX_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define AT45DBX_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define AT45DBX_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define AT45DBX_SPI_NPCS0_PIN AVR32_SPI0_NPCS_0_0_PIN -#define AT45DBX_SPI_NPCS0_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION -//! @} - -/*! \name GPIO and SPI Connections of the SD/MMC Connector - */ -//! @{ -#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02 -#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA18 -#define SD_MMC_SPI (&AVR32_SPI0) -#define SD_MMC_SPI_NPCS 1 -#define SD_MMC_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define SD_MMC_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define SD_MMC_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define SD_MMC_SPI_NPCS_PIN AVR32_SPI0_NPCS_1_0_PIN -#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_1_0_FUNCTION -//! @} - - -/*! \name TWI expansion - */ -//! @{ -#define EXPANSION_TWI (&AVR32_TWI) -#define EXPANSION_RESET AVR32_PIN_PX16 -#define EXPANSION_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define EXPANSION_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define EXPANSION_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define EXPANSION_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -//! @} - -/*! \name Wireless expansion - */ - -#define WEXPANSION_EXTINT_PIN AVR32_EIC_EXTINT_8_PIN -#define WEXPANSION_EXTINT_FUNCTION AVR32_EIC_EXTINT_8_FUNCTION -#define WEXPANSION_GPIO1 AVR32_PIN_PB30 -#define WEXPANSION_GPIO2 AVR32_PIN_PB31 - -#define WEXPANSION_SPI (&AVR32_SPI0) -#define WEXPANSION_SPI_NPCS 2 -#define WEXPANSION_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define WEXPANSION_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define WEXPANSION_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define WEXPANSION_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define WEXPANSION_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define WEXPANSION_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define WEXPANSION_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN -#define WEXPANSION_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION - -//! @} - -/*! \name ET024006DHU TFT display - */ -//! @{ - -#define ET024006DHU_TE_PIN AVR32_PIN_PX19 -#define ET024006DHU_RESET_PIN AVR32_PIN_PX22 -#define ET024006DHU_BL_PIN AVR32_PWM_6_PIN -#define ET024006DHU_BL_FUNCTION AVR32_PWM_6_FUNCTION -#define ET024006DHU_DNC_PIN AVR32_EBI_ADDR_21_1_PIN -#define ET024006DHU_DNC_FUNCTION AVR32_EBI_ADDR_21_1_FUNCTION -#define ET024006DHU_EBI_NCS_PIN AVR32_EBI_NCS_0_1_PIN -#define ET024006DHU_EBI_NCS_FUNCTION AVR32_EBI_NCS_0_1_FUNCTION - -//! @} -/*! \name Optional SPI connection to the TFT - */ -//! @{ - -#define ET024006DHU_SPI (&AVR32_SPI0) -#define ET024006DHU_SPI_NPCS 3 -#define ET024006DHU_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define ET024006DHU_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define ET024006DHU_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define ET024006DHU_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define ET024006DHU_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define ET024006DHU_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define ET024006DHU_SPI_NPCS_PIN AVR32_SPI1_NPCS_3_0_PIN -#define ET024006DHU_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_3_0_FUNCTION - -//! @} - - -/*! \name Audio amplifier connection to the DAC - */ -//! @{ - -#define TPA6130_ABDAC (&AVR32_ABDAC) - -#define TPA6130_DATA0_PIN AVR32_ABDAC_DATA_0_1_PIN -#define TPA6130_DATA0_FUNCTION AVR32_ABDAC_DATA_0_1_FUNCTION -#define TPA6130_DATAN0_PIN AVR32_ABDAC_DATAN_0_1_PIN -#define TPA6130_DATAN0_FUNCTION AVR32_ABDAC_DATAN_0_1_FUNCTION -#define TPA6130_DATA1_PIN AVR32_ABDAC_DATA_1_1_PIN -#define TPA6130_DATA1_FUNCTION AVR32_ABDAC_DATA_1_1_FUNCTION -#define TPA6130_DATAN1_PIN AVR32_ABDAC_DATAN_1_1_PIN -#define TPA6130_DATAN1_FUNCTION AVR32_ABDAC_DATAN_1_1_FUNCTION - -#define TPA6130_ABDAC_PDCA_PID AVR32_PDCA_PID_ABDAC_TX -#define TPA6130_ABDAC_PDCA_CHANNEL 0 -#define TPA6130_ABDAC_PDCA_IRQ AVR32_PDCA_IRQ_0 -#define TPA6130_ABDAC_PDCA_INT_LEVEL AVR32_INTC_INT3 - -#define TPA6130_TWI (&AVR32_TWI) -#define TPA6130_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define TPA6130_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define TPA6130_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define TPA6130_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION - -//! }@ -/*! \name TI TLV320AIC23B sound chip - */ -//! @{ -#define TLV320_SSC (&AVR32_SSC) -#define TLV320_SSC_TX_CLOCK_PIN AVR32_SSC_TX_CLOCK_0_PIN -#define TLV320_SSC_TX_CLOCK_FUNCTION AVR32_SSC_TX_CLOCK_0_FUNCTION -#define TLV320_SSC_TX_DATA_PIN AVR32_SSC_TX_DATA_0_PIN -#define TLV320_SSC_TX_DATA_FUNCTION AVR32_SSC_TX_DATA_0_FUNCTION -#define TLV320_SSC_TX_FRAME_SYNC_PIN AVR32_SSC_TX_FRAME_SYNC_0_PIN -#define TLV320_SSC_TX_FRAME_SYNC_FUNCTION AVR32_SSC_TX_FRAME_SYNC_0_FUNCTION - -#define TLV320_TWI (&AVR32_TWI) -#define TLV320_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define TLV320_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define TLV320_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define TLV320_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION - -#define TLV320_PM_GCLK_PIN AVR32_PM_GCLK_0_0_PIN -#define TLV320_PM_GCLK_FUNCTION AVR32_PM_GCLK_0_0_FUNCTION -//! @} - -////! \name SPI: Apple Authentication Chip Hardware Connections -////! @{ -#define IPOD_AUTH_CHIP_SPI (&AVR32_SPI0) -#define IPOD_AUTH_CHIP_SPI_IRQ AVR32_SPI0_IRQ -#define IPOD_AUTH_CHIP_SPI_NPCS 2 -#define IPOD_AUTH_CHIP_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN -#define IPOD_AUTH_CHIP_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_N_RESET_PIN AVR32_PIN_PB30 -#define IPOD_AUTH_CHIP_SPI_CP_READY_PIN AVR32_PIN_PB31 -//! }@ - -/*! \name Connections of the iPOD Authentication Coprocessor - */ -//! @{ - -#define IPOD_AUTH_CHIP_TWI (&AVR32_TWI) -#define IPOD_AUTH_CHIP_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define IPOD_AUTH_CHIP_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define IPOD_AUTH_CHIP_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define IPOD_AUTH_CHIP_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -#define IPOD_AUTH_CHIP_TWI_N_RESET_PIN AVR32_PIN_PX16 - -//! @} - -/*! \name USART connection to the UC3B board controller - */ -//! @{ - -#define USART0_RXD_PIN AVR32_USART0_RXD_0_0_PIN -#define USART0_RXD_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION -#define USART0_TXD_PIN AVR32_USART0_TXD_0_0_PIN -#define USART0_TXD_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION -#define USART0_RTS_PIN AVR32_USART0_RTS_0_0_PIN -#define USART0_RTS_FUNCTION AVR32_USART0_RTS_0_0_FUNCTION -#define USART0_CTS_PIN AVR32_USART0_CTS_0_0_PIN -#define USART0_CTS_FUNCTION AVR32_USART0_CTS_0_0_FUNCTION - -//! @} - -#define ADC_VEXT_PIN AVR32_ADC_AD_7_PIN -#define ADC_VEXT_FUNCTION AVR32_ADC_AD_7_FUNCTION - -/*! \name LCD Connections of the ET024006DHU display - */ -//! @{ -#define ET024006DHU_SMC_USE_NCS 0 -#define ET024006DHU_SMC_COMPONENT_CS "smc_et024006dhu.h" - -#define ET024006DHU_EBI_DATA_0 AVR32_EBI_DATA_0 -#define ET024006DHU_EBI_DATA_1 AVR32_EBI_DATA_1 -#define ET024006DHU_EBI_DATA_2 AVR32_EBI_DATA_2 -#define ET024006DHU_EBI_DATA_3 AVR32_EBI_DATA_3 -#define ET024006DHU_EBI_DATA_4 AVR32_EBI_DATA_4 -#define ET024006DHU_EBI_DATA_5 AVR32_EBI_DATA_5 -#define ET024006DHU_EBI_DATA_6 AVR32_EBI_DATA_6 -#define ET024006DHU_EBI_DATA_7 AVR32_EBI_DATA_7 -#define ET024006DHU_EBI_DATA_8 AVR32_EBI_DATA_8 -#define ET024006DHU_EBI_DATA_9 AVR32_EBI_DATA_9 -#define ET024006DHU_EBI_DATA_10 AVR32_EBI_DATA_10 -#define ET024006DHU_EBI_DATA_11 AVR32_EBI_DATA_11 -#define ET024006DHU_EBI_DATA_12 AVR32_EBI_DATA_12 -#define ET024006DHU_EBI_DATA_13 AVR32_EBI_DATA_13 -#define ET024006DHU_EBI_DATA_14 AVR32_EBI_DATA_14 -#define ET024006DHU_EBI_DATA_15 AVR32_EBI_DATA_15 - -#define ET024006DHU_EBI_ADDR_21 AVR32_EBI_ADDR_21_1 - -#define ET024006DHU_EBI_NWE AVR32_EBI_NWE0_0 -#define ET024006DHU_EBI_NRD AVR32_EBI_NRD_0 -#define ET024006DHU_EBI_NCS AVR32_EBI_NCS_0_1 -//! @} - - -#endif // !EVK1105_REVA - -#endif // _EVK1105_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c deleted file mode 100644 index 561652a..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c +++ /dev/null @@ -1,346 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1105 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "preprocessor.h" -#include "compiler.h" -#include "evk1105.h" -#include "led.h" - - -//! Structure describing LED hardware connections. -typedef const struct -{ - struct - { - U32 PORT; //!< LED GPIO port. - U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port. - } GPIO; //!< LED GPIO descriptor. - struct - { - S32 CHANNEL; //!< LED PWM channel (< 0 if N/A). - S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A). - } PWM; //!< LED PWM descriptor. -} tLED_DESCRIPTOR; - - -//! Hardware descriptors of all LEDs. -static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] = -{ -#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \ - { \ - {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\ - {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \ - }, - MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~) -#undef INSERT_LED_DESCRIPTOR -}; - - -//! Saved state of all LEDs. -static volatile U32 LED_State = (1 << LED_COUNT) - 1; - - -U32 LED_Read_Display(void) -{ - return LED_State; -} - - -void LED_Display(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor; - volatile avr32_gpio_port_t *led_gpio_port; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - LED_State = leds; - - // For all LEDs... - for (led_descriptor = &LED_DESCRIPTOR[0]; - led_descriptor < LED_DESCRIPTOR + LED_COUNT; - led_descriptor++) - { - // Set the LED to the requested state. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - } -} - - -U32 LED_Read_Display_Mask(U32 mask) -{ - return Rd_bits(LED_State, mask); -} - - -void LED_Display_Mask(U32 mask, U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - mask &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Wr_bits(LED_State, mask, leds); - - // While there are specified LEDs left to manage... - while (mask) - { - // Select the next specified LED and set it to the requested state. - led_shift = 1 + ctz(mask); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - leds >>= led_shift - 1; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - mask >>= led_shift; - } -} - - -Bool LED_Test(U32 leds) -{ - return Tst_bits(LED_State, leds); -} - - -void LED_Off(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Clr_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it off. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_On(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Set_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it on. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_Toggle(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Tgl_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and toggle it. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -U32 LED_Read_Display_Field(U32 field) -{ - return Rd_bitfield(LED_State, field); -} - - -void LED_Display_Field(U32 field, U32 leds) -{ - // Move the bit-field to the appropriate position for the bit-mask. - LED_Display_Mask(field, leds << ctz(field)); -} - - -U8 LED_Get_Intensity(U32 led) -{ - tLED_DESCRIPTOR *led_descriptor; - - // Check that the argument value is valid. - led = ctz(led); - led_descriptor = &LED_DESCRIPTOR[led]; - if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0; - - // Return the duty cycle value if the LED PWM channel is enabled, else 0. - return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ? - AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0; -} - - -void LED_Set_Intensity(U32 leds, U8 intensity) -{ - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_pwm_channel_t *led_pwm_channel; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // For each specified LED... - for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift) - { - // Select the next specified LED and check that it has a PWM channel. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - if (led_descriptor->PWM.CHANNEL < 0) continue; - - // Initialize or update the LED PWM channel. - led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL]; - if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL))) - { - led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) & - ~(AVR32_PWM_CALG_MASK | - AVR32_PWM_CPOL_MASK | - AVR32_PWM_CPD_MASK); - led_pwm_channel->cprd = 0x000000FF; - led_pwm_channel->cdty = intensity; - AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL; - } - else - { - AVR32_PWM.isr; - while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL))); - led_pwm_channel->cupd = intensity; - } - - // Switch the LED pin to its PWM function. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (led_descriptor->PWM.FUNCTION & 0x1) - { - led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK; - } - if (led_descriptor->PWM.FUNCTION & 0x2) - { - led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK; - } -} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h deleted file mode 100644 index 7766b6a..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h +++ /dev/null @@ -1,187 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1105 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _LED_H_ -#define _LED_H_ - -#include "compiler.h" - - -/*! \name Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED0 0x01 -#define LED1 0x02 -#define LED2 0x04 -#define LED3 0x08 -//! @} - - -/*! \brief Gets the last state of all LEDs set through the LED API. - * - * \return State of all LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display(void); - -/*! \brief Sets the state of all LEDs. - * - * \param leds New state of all LEDs (1 bit per LED). - * - * \note The pins of all LEDs are set to GPIO output mode. - */ -extern void LED_Display(U32 leds); - -/*! \brief Gets the last state of the specified LEDs set through the LED API. - * - * \param mask LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Mask(U32 mask); - -/*! \brief Sets the state of the specified LEDs. - * - * \param mask LEDs of which to set the state (1 bit per LED). - * - * \param leds New state of the specified LEDs (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Mask(U32 mask, U32 leds); - -/*! \brief Tests the last state of the specified LEDs set through the LED API. - * - * \param leds LEDs of which to test the state (1 bit per LED). - * - * \return \c TRUE if at least one of the specified LEDs has a state on, else - * \c FALSE. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern Bool LED_Test(U32 leds); - -/*! \brief Turns off the specified LEDs. - * - * \param leds LEDs to turn off (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Off(U32 leds); - -/*! \brief Turns on the specified LEDs. - * - * \param leds LEDs to turn on (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_On(U32 leds); - -/*! \brief Toggles the specified LEDs. - * - * \param leds LEDs to toggle (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Toggle(U32 leds); - -/*! \brief Gets as a bit-field the last state of the specified LEDs set through - * the LED API. - * - * \param field LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED, beginning with the first - * specified LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Field(U32 field); - -/*! \brief Sets as a bit-field the state of the specified LEDs. - * - * \param field LEDs of which to set the state (1 bit per LED). - * \param leds New state of the specified LEDs (1 bit per LED, beginning with - * the first specified LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Field(U32 field, U32 leds); - -/*! \brief Gets the intensity of the specified LED. - * - * \param led LED of which to get the intensity (1 bit per LED; only the least - * significant set bit is used). - * - * \return Intensity of the specified LED (0x00 to 0xFF). - * - * \warning The PWM channel of the specified LED is supposed to be used only by - * this module. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U8 LED_Get_Intensity(U32 led); - -/*! \brief Sets the intensity of the specified LEDs. - * - * \param leds LEDs of which to set the intensity (1 bit per LED). - * \param intensity New intensity of the specified LEDs (0x00 to 0xFF). - * - * \warning The PWM channels of the specified LEDs are supposed to be used only - * by this module. - * - * \note The pins of the specified LEDs are set to PWM output mode. - */ -extern void LED_Set_Intensity(U32 leds, U8 intensity); - - -#endif // _LED_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h deleted file mode 100644 index 78ee91e..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h +++ /dev/null @@ -1,120 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Standard board header file. - * - * This file includes the appropriate board header file according to the - * defined board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _BOARD_H_ -#define _BOARD_H_ - -#include - -/*! \name Base Boards - */ -//! @{ -#define EVK1100 1 //!< AT32UC3A EVK1100 board. -#define EVK1101 2 //!< AT32UC3B EVK1101 board. -#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board. -#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. -#define EVK1105 5 //!< AT32UC3A EVK1105 board. -#define STK1000 6 //!< AT32AP7000 STK1000 board. -#define NGW100 7 //!< AT32AP7000 NGW100 board. -#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board. -#define UC3L_EK 9 //!< AT32UC3L-EK board. -#define USER_BOARD 99 //!< User-reserved board (if any). -//! @} - -/*! \name Extension Boards - */ -//! @{ -#define EXT1102 1 //!< AT32UC3B EXT1102 board. -#define MC300 2 //!< AT32UC3 MC300 board. -#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). -//! @} - -#if BOARD == EVK1100 - #include "EVK1100/evk1100.h" -#elif BOARD == EVK1101 - #include "EVK1101/evk1101.h" -#elif BOARD == UC3C_EK - #include "UC3C_EK/uc3c_ek.h" -#elif BOARD == EVK1104 - #include "EVK1104/evk1104.h" -#elif BOARD == EVK1105 - #include "EVK1105/evk1105.h" -#elif BOARD == STK1000 - #include "STK1000/stk1000.h" -#elif BOARD == NGW100 - #include "NGW100/ngw100.h" -#elif BOARD == STK600_RCUC3L0 - #include "STK600/RCUC3L0/stk600_rcuc3l0.h" -#elif BOARD == UC3L_EK - #include "UC3L_EK/uc3l_ek.h" -#elif BOARD == ARDUINO - #include "ARDUINO/arduino.h" -#else - #error No known AVR32 board defined -#endif - -#if (defined EXT_BOARD) - #if EXT_BOARD == EXT1102 - #include "EXT1102/ext1102.h" - #elif EXT_BOARD == MC300 - #include "MC300/mc300.h" - #elif EXT_BOARD == USER_EXT_BOARD - // User-reserved area: #include the header file of your extension board here - // (if any). - #endif -#endif - - -#ifndef FRCOSC - #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency. -#endif - - -#endif // _BOARD_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori deleted file mode 100644 index 30052c8..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori +++ /dev/null @@ -1,121 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Standard board header file. - * - * This file includes the appropriate board header file according to the - * defined board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _BOARD_H_ -#define _BOARD_H_ - -#include - -/*! \name Base Boards - */ -//! @{ -#define EVK1100 1 //!< AT32UC3A EVK1100 board. -#define EVK1101 2 //!< AT32UC3B EVK1101 board. -#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board. -#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. -#define EVK1105 5 //!< AT32UC3A EVK1105 board. -#define STK1000 6 //!< AT32AP7000 STK1000 board. -#define NGW100 7 //!< AT32AP7000 NGW100 board. -#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board. -#define UC3L_EK 9 //!< AT32UC3L-EK board. -#define USER_BOARD 99 //!< User-reserved board (if any). -//! @} - -/*! \name Extension Boards - */ -//! @{ -#define EXT1102 1 //!< AT32UC3B EXT1102 board. -#define MC300 2 //!< AT32UC3 MC300 board. -#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). -//! @} - -#if BOARD == EVK1100 - #include "EVK1100/evk1100.h" -#elif BOARD == EVK1101 - #include "EVK1101/evk1101.h" -#elif BOARD == UC3C_EK - #include "UC3C_EK/uc3c_ek.h" -#elif BOARD == EVK1104 - #include "EVK1104/evk1104.h" -#elif BOARD == EVK1105 - #include "EVK1105/evk1105.h" -#elif BOARD == STK1000 - #include "STK1000/stk1000.h" -#elif BOARD == NGW100 - #include "NGW100/ngw100.h" -#elif BOARD == STK600_RCUC3L0 - #include "STK600/RCUC3L0/stk600_rcuc3l0.h" -#elif BOARD == UC3L_EK - #include "UC3L_EK/uc3l_ek.h" -#elif BOARD == USER_BOARD - // User-reserved area: #include the header file of your board here (if any). - #include "user_board.h" -#else - #error No known AVR32 board defined -#endif - -#if (defined EXT_BOARD) - #if EXT_BOARD == EXT1102 - #include "EXT1102/ext1102.h" - #elif EXT_BOARD == MC300 - #include "MC300/mc300.h" - #elif EXT_BOARD == USER_EXT_BOARD - // User-reserved area: #include the header file of your extension board here - // (if any). - #endif -#endif - - -#ifndef FRCOSC - #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency. -#endif - - -#endif // _BOARD_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c deleted file mode 100644 index d4b1b73..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c +++ /dev/null @@ -1,672 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Management of the AT45DBX data flash controller through SPI. - * - * This file manages the accesses to the AT45DBX data flash components. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -//_____ I N C L U D E S ___________________________________________________ - -#include "conf_access.h" - - -#if AT45DBX_MEM == ENABLE - -#include "compiler.h" -#include "board.h" -#include "gpio.h" -#include "spi.h" -#include "conf_at45dbx.h" -#include "at45dbx.h" -#include "printf-stdarg.h" - -#if AT45DBX_MEM_CNT > 4 - #error AT45DBX_MEM_CNT must not exceed 4 -#endif - - -//_____ D E F I N I T I O N S ______________________________________________ - -/*! \name AT45DBX Group A Commands - */ -//! @{ -#define AT45DBX_CMDA_RD_PAGE 0xD2 //!< Main Memory Page Read (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_ARRAY_LEG 0xE8 //!< Continuous Array Read, Legacy Command (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_ARRAY_LF_SM 0x03 //!< Continuous Array Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDA_RD_ARRAY_AF_SM 0x0B //!< Continuous Array Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDA_RD_SECTOR_PROT_REG 0x32 //!< Read Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_SECTOR_LKDN_REG 0x35 //!< Read Sector Lockdown Register (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_SECURITY_REG 0x77 //!< Read Security Register (Serial/8-bit Mode). -//! @} - -/*! \name AT45DBX Group B Commands - */ -//! @{ -#define AT45DBX_CMDB_ER_PAGE 0x81 //!< Page Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_BLOCK 0x50 //!< Block Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_SECTOR 0x7C //!< Sector Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_CHIP 0xC794809A //!< Chip Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_XFR_PAGE_TO_BUF1 0x53 //!< Main Memory Page to Buffer 1 Transfer (Serial/8-bit Mode). -#define AT45DBX_CMDB_XFR_PAGE_TO_BUF2 0x55 //!< Main Memory Page to Buffer 2 Transfer (Serial/8-bit Mode). -#define AT45DBX_CMDB_CMP_PAGE_TO_BUF1 0x60 //!< Main Memory Page to Buffer 1 Compare (Serial/8-bit Mode). -#define AT45DBX_CMDB_CMP_PAGE_TO_BUF2 0x61 //!< Main Memory Page to Buffer 2 Compare (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF1_TO_PAGE_ER 0x83 //!< Buffer 1 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF2_TO_PAGE_ER 0x86 //!< Buffer 2 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF1_TO_PAGE 0x88 //!< Buffer 1 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF2_TO_PAGE 0x89 //!< Buffer 2 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_PAGE_TH_BUF1 0x82 //!< Main Memory Page Program through Buffer 1 (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_PAGE_TH_BUF2 0x85 //!< Main Memory Page Program through Buffer 2 (Serial/8-bit Mode). -#define AT45DBX_CMDB_RWR_PAGE_TH_BUF1 0x58 //!< Auto Page Rewrite through Buffer 1 (Serial/8-bit Mode). -#define AT45DBX_CMDB_RWR_PAGE_TH_BUF2 0x59 //!< Auto Page Rewrite through Buffer 2 (Serial/8-bit Mode). -//! @} - -/*! \name AT45DBX Group C Commands - */ -//! @{ -#define AT45DBX_CMDC_RD_BUF1_LF_SM 0xD1 //!< Buffer 1 Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF2_LF_SM 0xD3 //!< Buffer 2 Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF1_AF_SM 0xD4 //!< Buffer 1 Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF2_AF_SM 0xD6 //!< Buffer 2 Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF1_AF_8M 0x54 //!< Buffer 1 Read, Any-Frequency Mode (8-bit Mode). -#define AT45DBX_CMDC_RD_BUF2_AF_8M 0x56 //!< Buffer 2 Read, Any-Frequency Mode (8-bit Mode). -#define AT45DBX_CMDC_WR_BUF1 0x84 //!< Buffer 1 Write (Serial/8-bit Mode). -#define AT45DBX_CMDC_WR_BUF2 0x87 //!< Buffer 2 Write (Serial/8-bit Mode). -#define AT45DBX_CMDC_RD_STATUS_REG 0xD7 //!< Status Register Read (Serial/8-bit Mode). -#define AT45DBX_CMDC_RD_MNFCT_DEV_ID_SM 0x9F //!< Manufacturer and Device ID Read (Serial Mode). -//! @} - -/*! \name AT45DBX Group D Commands - */ -//! @{ -#define AT45DBX_CMDD_EN_SECTOR_PROT 0x3D2A7FA9 //!< Enable Sector Protection (Serial/8-bit Mode). -#define AT45DBX_CMDD_DIS_SECTOR_PROT 0x3D2A7F9A //!< Disable Sector Protection (Serial/8-bit Mode). -#define AT45DBX_CMDD_ER_SECTOR_PROT_REG 0x3D2A7FCF //!< Erase Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_SECTOR_PROT_REG 0x3D2A7FFC //!< Program Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_LKDN_SECTOR 0x3D2A7F30 //!< Sector Lockdown (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_SECURITY_REG 0x9B000000 //!< Program Security Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_CONF_REG 0x3D2A80A6 //!< Program Configuration Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_DEEP_PWR_DN 0xB9 //!< Deep Power-down (Serial/8-bit Mode). -#define AT45DBX_CMDD_RSM_DEEP_PWR_DN 0xAB //!< Resume from Deep Power-down (Serial/8-bit Mode). -//! @} - - -/*! \name Bit-Masks and Values for the Status Register - */ -//! @{ -#define AT45DBX_MSK_BUSY 0x80 //!< Busy status bit-mask. -#define AT45DBX_BUSY 0x00 //!< Busy status value (0x00 when busy, 0x80 when ready). -#define AT45DBX_MSK_DENSITY 0x3C //!< Device density bit-mask. -//! @} -#if AT45DBX_MEM_SIZE == AT45DBX_1MB - -/*! \name AT45DB081 Memories - */ -//! @{ -#define AT45DB021D_DENSITY 0x14 //!< Device density value. -#define AT45DBX_DENSITY 0x24 //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 9 //!< Address bits for byte position within buffer. - -//! @} -#elif AT45DBX_MEM_SIZE == AT45DBX_2MB -/*! \name AT45DB021D Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x21 //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer. - -//! @} -#if 0 -/*! \name AT45DB161 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x2C //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer. - -//! @} -#endif - -#elif AT45DBX_MEM_SIZE == AT45DBX_4MB - -/*! \name AT45DB321 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x34 //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer. - -//! @} - -#elif AT45DBX_MEM_SIZE == AT45DBX_8MB - -/*! \name AT45DB642 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x3C //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 11 //!< Address bits for byte position within buffer. - - -//! @} - -#else - #error AT45DBX_MEM_SIZE is not defined to a supported value -#endif - - - -//! Address bits for page selection. -#define AT45DBX_PAGE_ADDR_BITS (AT45DBX_MEM_SIZE - AT45DBX_PAGE_BITS) - -//! Number of bits for addresses within pages. -#define AT45DBX_PAGE_BITS (AT45DBX_BYTE_ADDR_BITS - 1) - -//! Page size in bytes. -#define AT45DBX_PAGE_SIZE (1 << AT45DBX_PAGE_BITS) - -//! Bit-mask for byte position within buffer in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_BYTE ((1 << AT45DBX_PAGE_BITS) - 1) - -//! Bit-mask for page selection in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_PAGE (((1 << AT45DBX_PAGE_ADDR_BITS) - 1) << AT45DBX_PAGE_BITS) - -//! Bit-mask for byte position within sector in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_SECTOR ((1 << AT45DBX_SECTOR_BITS) - 1) - - -/*! \brief Sends a dummy byte through SPI. - */ -#define spi_write_dummy() spi_write(AT45DBX_SPI, 0xFF) - - -//! Boolean indicating whether memory is in busy state. -static Bool at45dbx_busy; - -//! Memory data pointer. -static U32 gl_ptr_mem; - -//! Sector buffer. -static U8 sector_buf[AT45DBX_SECTOR_SIZE]; - - -/*! \name Control Functions - */ -//! @{ - - -Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz) -{ - // Setup SPI registers according to spiOptions. - for (spiOptions.reg = AT45DBX_SPI_FIRST_NPCS; - spiOptions.reg < AT45DBX_SPI_FIRST_NPCS + AT45DBX_MEM_CNT; - spiOptions.reg++) - { - if (spi_setupChipReg(AT45DBX_SPI, &spiOptions, pba_hz) != SPI_OK) return KO; - } - - // Memory ready. - at45dbx_busy = FALSE; - - return OK; -} - - -/*! \brief Selects or unselects a DF memory. - * - * \param memidx Memory ID of DF to select or unselect. - * \param bSelect Boolean indicating whether the DF memory has to be selected. - */ -static void at45dbx_chipselect_df(U8 memidx, Bool bSelect) -{ - if (bSelect) - { - // Select SPI chip. - spi_selectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx); - } - else - { - // Unselect SPI chip. - spi_unselectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx); - } -} - - -Bool at45dbx_mem_check(void) -{ - U8 df; - U16 status = 0; - - // DF memory check. - for (df = 0; df < AT45DBX_MEM_CNT; df++) - { - // Select the DF memory to check. - at45dbx_chipselect_df(df, TRUE); - - // Send the Status Register Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG); - - // Send a dummy byte to read the status register. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &status); - - // Unselect the checked DF memory. - at45dbx_chipselect_df(df, FALSE); - - // Unexpected device density value. - if ((status & AT45DBX_MSK_DENSITY) < AT45DB021D_DENSITY) - { - printk("Unexpected device density value: %d (0x%x)\n", (status & AT45DBX_MSK_DENSITY), status); - return KO; - } - } - - return OK; -} - - -/*! \brief Waits until the DF is ready. - */ -static void at45dbx_wait_ready(void) -{ - U16 status; - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Send the Status Register Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG); - - // Read the status register until the DF is ready. - do - { - // Send a dummy byte to read the status register. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &status); - } while ((status & AT45DBX_MSK_BUSY) == AT45DBX_BUSY); - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); -} - - -Bool at45dbx_read_open(U32 sector) -{ - U32 addr; - - // Set the global memory pointer to a byte address. - gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE. - - // If the DF memory is busy, wait until it's ready. - if (at45dbx_busy) at45dbx_wait_ready(); - at45dbx_busy = FALSE; - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Initiate a page read at a given sector. - - // Send the Main Memory Page Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDA_RD_PAGE); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read; - // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) | - Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE); - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - // Send 32 don't care clock cycles to initialize the read operation. - spi_write_dummy(); - spi_write_dummy(); - spi_write_dummy(); - spi_write_dummy(); - - return OK; -} - - -void at45dbx_read_close(void) -{ - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory ready. - at45dbx_busy = FALSE; -} - - -Bool at45dbx_write_open(U32 sector) -{ - U32 addr; - - // Set the global memory pointer to a byte address. - gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE. - - // If the DF memory is busy, wait until it's ready. - if (at45dbx_busy) at45dbx_wait_ready(); - at45dbx_busy = FALSE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Transfer the content of the current page to buffer 1. - - // Send the Main Memory Page to Buffer 1 Transfer command. - spi_write(AT45DBX_SPI, AT45DBX_CMDB_XFR_PAGE_TO_BUF1); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read; - // - then AT45DBX_BYTE_ADDR_BITS don't care bits. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS; - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Wait for end of page transfer. - at45dbx_wait_ready(); -#endif - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Initiate a page write at a given sector. - - // Send the Main Memory Page Program through Buffer 1 command. - spi_write(AT45DBX_SPI, AT45DBX_CMDB_PR_PAGE_TH_BUF1); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be written; - // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) | - Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE); - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - return OK; -} - - -void at45dbx_write_close(void) -{ - // While end of logical sector not reached, zero-fill remaining memory bytes. - while (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_SECTOR)) - { - spi_write(AT45DBX_SPI, 0x00); - gl_ptr_mem++; - } - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; -} - - -//! @} - - -/*! \name Single-Byte Access Functions - */ -//! @{ - - -U8 at45dbx_read_byte(void) -{ - U16 data; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously finished a page read. - // => We have to access the next page. - - // Memory ready. - at45dbx_busy = FALSE; - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_read_open input parameter is a sector. - at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Send a dummy byte to read the next data byte. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &data); - gl_ptr_mem++; - - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) - { - // unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return data; -} - - -Bool at45dbx_write_byte(U8 b) -{ - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously launched a page programming. - // => We have to access the next page. - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_write_open input parameter is a sector. - at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Write the next data byte. - spi_write(AT45DBX_SPI, b); - gl_ptr_mem++; - - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) - { - // unselect the DF memory gl_ptr_mem points to in order to program the page. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -//! @} - - -/*! \name Multiple-Sector Access Functions - */ -//! @{ - - -Bool at45dbx_read_multiple_sector(U16 nb_sector) -{ - while (nb_sector--) - { - // Read the next sector. - at45dbx_read_sector_2_ram(sector_buf); - at45dbx_read_multiple_sector_callback(sector_buf); - } - - return OK; -} - - -Bool at45dbx_write_multiple_sector(U16 nb_sector) -{ - while (nb_sector--) - { - // Write the next sector. - at45dbx_write_multiple_sector_callback(sector_buf); - at45dbx_write_sector_from_ram(sector_buf); - } - - return OK; -} - - -//! @} - - -/*! \name Single-Sector Access Functions - */ -//! @{ - - -Bool at45dbx_read_sector_2_ram(void *ram) -{ - U8 *_ram = ram; - U16 i; - U16 data; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously finished a page read. - // => We have to access the next page. - - // Memory ready. - at45dbx_busy = FALSE; - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_read_open input parameter is a sector. - at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Read the next sector. - for (i = AT45DBX_SECTOR_SIZE; i; i--) - { - // Send a dummy byte to read the next data byte. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &data); - *_ram++ = data; - } - - // Update the memory pointer. - gl_ptr_mem += AT45DBX_SECTOR_SIZE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) -#endif - { - // unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -Bool at45dbx_write_sector_from_ram(const void *ram) -{ - const U8 *_ram = ram; - U16 i; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously launched a page programming. - // => We have to access the next page. - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_write_open input parameter is a sector. - at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Write the next sector. - for (i = AT45DBX_SECTOR_SIZE; i; i--) - { - // Write the next data byte. - spi_write(AT45DBX_SPI, *_ram++); - } - - // Update the memory pointer. - gl_ptr_mem += AT45DBX_SECTOR_SIZE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) -#endif - { - // unselect the DF memory gl_ptr_mem points to in order to program the page. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -//! @} - - -#endif // AT45DBX_MEM == ENABLE diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h deleted file mode 100644 index 5816b61..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h +++ /dev/null @@ -1,269 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Management of the AT45DBX data flash controller through SPI. - * - * This file manages the accesses to the AT45DBX data flash components. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _AT45DBX_H_ -#define _AT45DBX_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error at45dbx.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "spi.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -/*! \name Available AT45DBX Sizes - * - * Number of address bits of available AT45DBX data flash memories. - * - * \note Only memories with page sizes of at least 512 bytes (sector size) are - * supported. - */ -//! @{ -#define AT45DBX_1MB 20 -#define AT45DBX_2MB 21 -#define AT45DBX_4MB 22 -#define AT45DBX_8MB 23 -//! @} - -// AT45DBX_1MB -#define AT45DBX_SECTOR_BITS 8 //! Number of bits for addresses within sectors. -// AT45DBX_2MB AT45DBX_4MB AT45DBX_8MB -//#define AT45DBX_SECTOR_BITS 9 //! Number of bits for addresses within sectors. - -//! Sector size in bytes. -#define AT45DBX_SECTOR_SIZE (1 << AT45DBX_SECTOR_BITS) - -//_____ D E C L A R A T I O N S ____________________________________________ - -/*! \name Control Functions - */ -//! @{ - -/*! \brief Initializes the data flash controller and the SPI channel by which - * the DF is controlled. - * - * \param spiOptions Initialization options of the DF SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \retval OK Success. - * \retval KO Failure. - */ -extern Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz); - -/*! \brief Performs a memory check on all DFs. - * - * \retval OK Success. - * \retval KO Failure. - */ -extern Bool at45dbx_mem_check(void); - -/*! \brief Opens a DF memory in read mode at a given sector. - * - * \param sector Start sector. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note Sector may be page-unaligned (depending on the DF page size). - */ -extern Bool at45dbx_read_open(U32 sector); - -/*! \brief Unselects the current DF memory. - */ -extern void at45dbx_read_close(void); - -/*! \brief This function opens a DF memory in write mode at a given sector. - * - * \param sector Start sector. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note Sector may be page-unaligned (depending on the DF page size). - * - * \note If \ref AT45DBX_PAGE_SIZE > \ref AT45DBX_SECTOR_SIZE, page content is - * first loaded in buffer to then be partially updated by write byte or - * write sector functions. - */ -extern Bool at45dbx_write_open(U32 sector); - -/*! \brief Fills the end of the current logical sector and launches page programming. - */ -extern void at45dbx_write_close(void); - -//! @} - - -/*! \name Single-Byte Access Functions - */ -//! @{ - -/*! \brief Performs a single byte read from DF memory. - * - * \return The read byte. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - */ -extern U8 at45dbx_read_byte(void); - -/*! \brief Performs a single byte write to DF memory. - * - * \param b The byte to write. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - */ -extern Bool at45dbx_write_byte(U8 b); - -//! @} - - -/*! \name Multiple-Sector Access Functions - */ -//! @{ - -/*! \brief Reads \a nb_sector sectors from DF memory. - * - * Data flow is: DF -> callback. - * - * \param nb_sector Number of contiguous sectors to read. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - * - * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of - * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each - * byte. - */ -extern Bool at45dbx_read_multiple_sector(U16 nb_sector); - -/*! \brief Callback function invoked after each sector read during - * \ref at45dbx_read_multiple_sector. - * - * \param psector Pointer to read sector. - */ -extern void at45dbx_read_multiple_sector_callback(const void *psector); - -/*! \brief Writes \a nb_sector sectors to DF memory. - * - * Data flow is: callback -> DF. - * - * \param nb_sector Number of contiguous sectors to write. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - * - * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of - * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each - * byte. - */ -extern Bool at45dbx_write_multiple_sector(U16 nb_sector); - -/*! \brief Callback function invoked before each sector write during - * \ref at45dbx_write_multiple_sector. - * - * \param psector Pointer to sector to write. - */ -extern void at45dbx_write_multiple_sector_callback(void *psector); - -//! @} - - -/*! \name Single-Sector Access Functions - */ -//! @{ - -/*! \brief Reads 1 DF sector to a RAM buffer. - * - * Data flow is: DF -> RAM. - * - * \param ram Pointer to RAM buffer. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - */ -extern Bool at45dbx_read_sector_2_ram(void *ram); - -/*! \brief Writes 1 DF sector from a RAM buffer. - * - * Data flow is: RAM -> DF. - * - * \param ram Pointer to RAM buffer. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - */ -extern Bool at45dbx_write_sector_from_ram(const void *ram); - -//! @} - - -#endif // _AT45DBX_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c deleted file mode 100644 index 4c0ace2..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c +++ /dev/null @@ -1,234 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief CTRL_ACCESS interface for the AT45DBX data flash controller. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -//_____ I N C L U D E S ___________________________________________________ - -#include "conf_access.h" - - -#if AT45DBX_MEM == ENABLE - -#include "conf_at45dbx.h" -#include "at45dbx.h" -#include "at45dbx_mem.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! Whether to detect write accesses to the memory. -#define AT45DBX_MEM_TEST_CHANGE_STATE ENABLED - - -#if (ACCESS_USB == ENABLED || ACCESS_MEM_TO_RAM == ENABLED) && AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - -//! Memory data modified flag. -static volatile Bool s_b_data_modify = FALSE; - -#endif - - -/*! \name Control Interface - */ -//! @{ - - -Ctrl_status at45dbx_test_unit_ready(void) -{ - return (at45dbx_mem_check() == OK) ? CTRL_GOOD : CTRL_NO_PRESENT; -} - - -Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector) -{ - *u32_nb_sector = (AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) - 1; - - return CTRL_GOOD; -} - - -Bool at45dbx_wr_protect(void) -{ - return FALSE; -} - - -Bool at45dbx_removal(void) -{ - return FALSE; -} - - -//! @} - - -#if ACCESS_USB == ENABLED - -#include "usb_drv.h" -#include "scsi_decoder.h" - - -/*! \name MEM <-> USB Interface - */ -//! @{ - - -Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector) -{ - if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - - at45dbx_read_open(addr); - at45dbx_read_multiple_sector(nb_sector); - at45dbx_read_close(); - - return CTRL_GOOD; -} - - -void at45dbx_read_multiple_sector_callback(const void *psector) -{ - U16 data_to_transfer = AT45DBX_SECTOR_SIZE; - - // Transfer read sector to the USB interface. - while (data_to_transfer) - { - while (!Is_usb_in_ready(g_scsi_ep_ms_in)) - { - if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_in)) - return; // USB Reset - } - - Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_in); - data_to_transfer = usb_write_ep_txpacket(g_scsi_ep_ms_in, psector, - data_to_transfer, &psector); - Usb_ack_in_ready_send(g_scsi_ep_ms_in); - } -} - - -Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector) -{ - if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - -#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - if (nb_sector) s_b_data_modify = TRUE; -#endif - - at45dbx_write_open(addr); - at45dbx_write_multiple_sector(nb_sector); - at45dbx_write_close(); - - return CTRL_GOOD; -} - - -void at45dbx_write_multiple_sector_callback(void *psector) -{ - U16 data_to_transfer = AT45DBX_SECTOR_SIZE; - - // Transfer sector to write from the USB interface. - while (data_to_transfer) - { - while (!Is_usb_out_received(g_scsi_ep_ms_out)) - { - if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_out)) - return; // USB Reset - } - - Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_out); - data_to_transfer = usb_read_ep_rxpacket(g_scsi_ep_ms_out, psector, - data_to_transfer, &psector); - Usb_ack_out_received_free(g_scsi_ep_ms_out); - } -} - - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - - -Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram) -{ - if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - - at45dbx_read_open(addr); - at45dbx_read_sector_2_ram(ram); - at45dbx_read_close(); - - return CTRL_GOOD; -} - - -Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram) -{ - if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - -#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - s_b_data_modify = TRUE; -#endif - - at45dbx_write_open(addr); - at45dbx_write_sector_from_ram(ram); - at45dbx_write_close(); - - return CTRL_GOOD; -} - - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#endif // AT45DBX_MEM == ENABLE diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h deleted file mode 100644 index de24fa3..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h +++ /dev/null @@ -1,164 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief CTRL_ACCESS interface for the AT45DBX data flash controller. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _AT45DBX_MEM_H_ -#define _AT45DBX_MEM_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error at45dbx_mem.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "ctrl_access.h" - - -//_____ D E C L A R A T I O N S ____________________________________________ - -/*! \name Control Interface - */ -//! @{ - -/*! \brief Tests the memory state and initializes the memory if required. - * - * The TEST UNIT READY SCSI primary command allows an application client to poll - * a LUN until it is ready without having to allocate memory for returned data. - * - * This command may be used to check the media status of LUNs with removable - * media. - * - * \return Status. - */ -extern Ctrl_status at45dbx_test_unit_ready(void); - -/*! \brief Returns the address of the last valid sector in the memory. - * - * \param u32_nb_sector Pointer to the address of the last valid sector. - * - * \return Status. - */ -extern Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector); - -/*! \brief Returns the write-protection state of the memory. - * - * \return \c TRUE if the memory is write-protected, else \c FALSE. - * - * \note Only used by removable memories with hardware-specific write - * protection. - */ -extern Bool at45dbx_wr_protect(void); - -/*! \brief Tells whether the memory is removable. - * - * \return \c TRUE if the memory is removable, else \c FALSE. - */ -extern Bool at45dbx_removal(void); - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - -/*! \brief Tranfers data from the memory to USB. - * - * \param addr Address of first memory sector to read. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector); - -/*! \brief Tranfers data from USB to the memory. - * - * \param addr Address of first memory sector to write. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector); - -//! @} - -#endif - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - -/*! \brief Copies 1 data sector from the memory to RAM. - * - * \param addr Address of first memory sector to read. - * \param ram Pointer to RAM buffer to write. - * - * \return Status. - */ -extern Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram); - -/*! \brief Copies 1 data sector from RAM to the memory. - * - * \param addr Address of first memory sector to write. - * \param ram Pointer to RAM buffer to read. - * - * \return Status. - */ -extern Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram); - -//! @} - -#endif - - -#endif // _AT45DBX_MEM_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c deleted file mode 100644 index 2eee15c..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c +++ /dev/null @@ -1,1117 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FLASHC driver for AVR32 UC3. - * - * AVR32 Flash Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a FLASHC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include -#include "compiler.h" -#include "flashc.h" - - -/*! \name FLASHC Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long fcr; - avr32_flashc_fcr_t FCR; -} u_avr32_flashc_fcr_t; - -typedef union -{ - unsigned long fcmd; - avr32_flashc_fcmd_t FCMD; -} u_avr32_flashc_fcmd_t; - -//! @} - - -/*! \name Flash Properties - */ -//! @{ - - -unsigned int flashc_get_flash_size(void) -{ -#if (defined AVR32_FLASHC_300_H_INCLUDED) - static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_PR_FSZ_SIZE] = - { - 32 << 10, - 64 << 10, - 128 << 10, - 256 << 10, - 384 << 10, - 512 << 10, - 768 << 10, - 1024 << 10 - }; - return FLASH_SIZE[(AVR32_FLASHC.pr & AVR32_FLASHC_PR_FSZ_MASK) >> AVR32_FLASHC_PR_FSZ_OFFSET]; -#else - static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_FSR_FSZ_SIZE] = - { - 32 << 10, - 64 << 10, - 128 << 10, - 256 << 10, - 384 << 10, - 512 << 10, - 768 << 10, - 1024 << 10 - }; - return FLASH_SIZE[(AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FSZ_MASK) >> AVR32_FLASHC_FSR_FSZ_OFFSET]; -#endif -} - - -unsigned int flashc_get_page_count(void) -{ - return flashc_get_flash_size() / AVR32_FLASHC_PAGE_SIZE; -} - - -unsigned int flashc_get_page_count_per_region(void) -{ - return flashc_get_page_count() / AVR32_FLASHC_REGIONS; -} - - -unsigned int flashc_get_page_region(int page_number) -{ - return ((page_number >= 0) ? page_number : flashc_get_page_number()) / flashc_get_page_count_per_region(); -} - - -unsigned int flashc_get_region_first_page_number(unsigned int region) -{ - return region * flashc_get_page_count_per_region(); -} - - -//! @} - - -/*! \name FLASHC Control - */ -//! @{ - - -unsigned int flashc_get_wait_state(void) -{ - return (AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FWS_MASK) >> AVR32_FLASHC_FCR_FWS_OFFSET; -} - - -void flashc_set_wait_state(unsigned int wait_state) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.fws = wait_state; - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_ready_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FRDY_MASK) != 0); -} - - -void flashc_enable_ready_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.frdy = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_lock_error_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_LOCKE_MASK) != 0); -} - - -void flashc_enable_lock_error_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.locke = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_prog_error_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_PROGE_MASK) != 0); -} - - -void flashc_enable_prog_error_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.proge = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -//! @} - - -/*! \name FLASHC Status - */ -//! @{ - - -Bool flashc_is_ready(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FRDY_MASK) != 0); -} - - -void flashc_default_wait_until_ready(void) -{ - while (!flashc_is_ready()); -} - - -void (*volatile flashc_wait_until_ready)(void) = flashc_default_wait_until_ready; - - -/*! \brief Gets the error status of the FLASHC. - * - * \return The error status of the FLASHC built up from - * \c AVR32_FLASHC_FSR_LOCKE_MASK and \c AVR32_FLASHC_FSR_PROGE_MASK. - * - * \warning This hardware error status is cleared by all functions reading the - * Flash Status Register (FSR). This function is therefore not part of - * the driver's API which instead presents \ref flashc_is_lock_error - * and \ref flashc_is_programming_error. - */ -static unsigned int flashc_get_error_status(void) -{ - return AVR32_FLASHC.fsr & (AVR32_FLASHC_FSR_LOCKE_MASK | - AVR32_FLASHC_FSR_PROGE_MASK); -} - - -//! Sticky error status of the FLASHC. -//! This variable is updated by functions that issue FLASHC commands. It -//! contains the cumulated FLASHC error status of all the FLASHC commands issued -//! by a function. -static unsigned int flashc_error_status = 0; - - -Bool flashc_is_lock_error(void) -{ - return ((flashc_error_status & AVR32_FLASHC_FSR_LOCKE_MASK) != 0); -} - - -Bool flashc_is_programming_error(void) -{ - return ((flashc_error_status & AVR32_FLASHC_FSR_PROGE_MASK) != 0); -} - - -//! @} - - -/*! \name FLASHC Command Control - */ -//! @{ - - -unsigned int flashc_get_command(void) -{ - return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_CMD_MASK) >> AVR32_FLASHC_FCMD_CMD_OFFSET; -} - - -unsigned int flashc_get_page_number(void) -{ - return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_PAGEN_MASK) >> AVR32_FLASHC_FCMD_PAGEN_OFFSET; -} - - -void flashc_issue_command(unsigned int command, int page_number) -{ - u_avr32_flashc_fcmd_t u_avr32_flashc_fcmd; - flashc_wait_until_ready(); - u_avr32_flashc_fcmd.fcmd = AVR32_FLASHC.fcmd; - u_avr32_flashc_fcmd.FCMD.cmd = command; - if (page_number >= 0) u_avr32_flashc_fcmd.FCMD.pagen = page_number; - u_avr32_flashc_fcmd.FCMD.key = AVR32_FLASHC_FCMD_KEY_KEY; - AVR32_FLASHC.fcmd = u_avr32_flashc_fcmd.fcmd; - flashc_error_status = flashc_get_error_status(); - flashc_wait_until_ready(); -} - - -//! @} - - -/*! \name FLASHC Global Commands - */ -//! @{ - - -void flashc_no_operation(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_NOP, -1); -} - - -void flashc_erase_all(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EA, -1); -} - - -//! @} - - -/*! \name FLASHC Protection Mechanisms - */ -//! @{ - - -Bool flashc_is_security_bit_active(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_SECURITY_MASK) != 0); -} - - -void flashc_activate_security_bit(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_SSB, -1); -} - - -unsigned int flashc_get_bootloader_protected_size(void) -{ - unsigned int bootprot = (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 - - flashc_read_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET, - AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE); - return (bootprot) ? AVR32_FLASHC_PAGE_SIZE << bootprot : 0; -} - - -unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size) -{ - flashc_set_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET, - AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE, - (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 - - ((bootprot_size) ? - 32 - clz((((min(max(bootprot_size, AVR32_FLASHC_PAGE_SIZE << 1), - AVR32_FLASHC_PAGE_SIZE << - ((1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1)) + - AVR32_FLASHC_PAGE_SIZE - 1) / - AVR32_FLASHC_PAGE_SIZE) << 1) - 1) - 1 : - 0)); - return flashc_get_bootloader_protected_size(); -} - - -Bool flashc_is_external_privileged_fetch_locked(void) -{ - return (!flashc_read_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET)); -} - - -void flashc_lock_external_privileged_fetch(Bool lock) -{ - flashc_set_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET, !lock); -} - - -Bool flashc_is_page_region_locked(int page_number) -{ - return flashc_is_region_locked(flashc_get_page_region(page_number)); -} - - -Bool flashc_is_region_locked(unsigned int region) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_LOCK0_MASK << (region & (AVR32_FLASHC_REGIONS - 1))) != 0); -} - - -void flashc_lock_page_region(int page_number, Bool lock) -{ - flashc_issue_command((lock) ? AVR32_FLASHC_FCMD_CMD_LP : AVR32_FLASHC_FCMD_CMD_UP, page_number); -} - - -void flashc_lock_region(unsigned int region, Bool lock) -{ - flashc_lock_page_region(flashc_get_region_first_page_number(region), lock); -} - - -void flashc_lock_all_regions(Bool lock) -{ - unsigned int error_status = 0; - unsigned int region = AVR32_FLASHC_REGIONS; - while (region) - { - flashc_lock_region(--region, lock); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -//! @} - - -/*! \name Access to General-Purpose Fuses - */ -//! @{ - - -Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit) -{ - return ((flashc_read_all_gp_fuses() & 1ULL << (gp_fuse_bit & 0x3F)) != 0); -} - - -U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width) -{ - return flashc_read_all_gp_fuses() >> (pos & 0x3F) & ((1ULL << min(width, 64)) - 1); -} - - -U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte) -{ - return flashc_read_all_gp_fuses() >> ((gp_fuse_byte & 0x07) << 3); -} - - -U64 flashc_read_all_gp_fuses(void) -{ - return AVR32_FLASHC.fgpfrlo | (U64)AVR32_FLASHC.fgpfrhi << 32; -} - - -Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EGPB, gp_fuse_bit & 0x3F); - return (check) ? flashc_read_gp_fuse_bit(gp_fuse_bit) : TRUE; -} - - -Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++) - { - flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; - return (check) ? (flashc_read_gp_fuse_bitfield(pos, width) == (1ULL << width) - 1) : TRUE; -} - - -Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check) -{ - unsigned int error_status; - unsigned int current_gp_fuse_byte; - U64 value = flashc_read_all_gp_fuses(); - flashc_erase_all_gp_fuses(FALSE); - error_status = flashc_error_status; - for (current_gp_fuse_byte = 0; current_gp_fuse_byte < 8; current_gp_fuse_byte++, value >>= 8) - { - if (current_gp_fuse_byte != gp_fuse_byte) - { - flashc_write_gp_fuse_byte(current_gp_fuse_byte, value); - error_status |= flashc_error_status; - } - } - flashc_error_status = error_status; - return (check) ? (flashc_read_gp_fuse_byte(gp_fuse_byte) == 0xFF) : TRUE; -} - - -Bool flashc_erase_all_gp_fuses(Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EAGPF, -1); - return (check) ? (flashc_read_all_gp_fuses() == 0xFFFFFFFFFFFFFFFFULL) : TRUE; -} - - -void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value) -{ - if (!value) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WGPB, gp_fuse_bit & 0x3F); -} - - -void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1) - { - flashc_write_gp_fuse_bit(gp_fuse_bit, value & 0x01); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_PGPFB, (gp_fuse_byte & 0x07) | value << 3); -} - - -void flashc_write_all_gp_fuses(U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_byte; - for (gp_fuse_byte = 0; gp_fuse_byte < 8; gp_fuse_byte++, value >>= 8) - { - flashc_write_gp_fuse_byte(gp_fuse_byte, value); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value) -{ - if (value) - flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE); - else - flashc_write_gp_fuse_bit(gp_fuse_bit, FALSE); -} - - -void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1) - { - flashc_set_gp_fuse_bit(gp_fuse_bit, value & 0x01); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value) -{ - unsigned int error_status; - switch (value) - { - case 0xFF: - flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE); - break; - case 0x00: - flashc_write_gp_fuse_byte(gp_fuse_byte, 0x00); - break; - default: - flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE); - error_status = flashc_error_status; - flashc_write_gp_fuse_byte(gp_fuse_byte, value); - flashc_error_status |= error_status; - } -} - - -void flashc_set_all_gp_fuses(U64 value) -{ - unsigned int error_status; - switch (value) - { - case 0xFFFFFFFFFFFFFFFFULL: - flashc_erase_all_gp_fuses(FALSE); - break; - case 0x0000000000000000ULL: - flashc_write_all_gp_fuses(0x0000000000000000ULL); - break; - default: - flashc_erase_all_gp_fuses(FALSE); - error_status = flashc_error_status; - flashc_write_all_gp_fuses(value); - flashc_error_status |= error_status; - } -} - - -//! @} - - -/*! \name Access to Flash Pages - */ -//! @{ - - -void flashc_clear_page_buffer(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_CPB, -1); -} - - -Bool flashc_is_page_erased(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_QPRR_MASK) != 0); -} - - -Bool flashc_quick_page_read(int page_number) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPR, page_number); - return flashc_is_page_erased(); -} - - -Bool flashc_erase_page(int page_number, Bool check) -{ - Bool page_erased = TRUE; - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EP, page_number); - if (check) - { - unsigned int error_status = flashc_error_status; - page_erased = flashc_quick_page_read(-1); - flashc_error_status |= error_status; - } - return page_erased; -} - - -Bool flashc_erase_all_pages(Bool check) -{ - Bool all_pages_erased = TRUE; - unsigned int error_status = 0; - unsigned int page_number = flashc_get_page_count(); - while (page_number) - { - all_pages_erased &= flashc_erase_page(--page_number, check); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; - return all_pages_erased; -} - - -void flashc_write_page(int page_number) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WP, page_number); -} - - -Bool flashc_quick_user_page_read(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPRUP, -1); - return flashc_is_page_erased(); -} - - -Bool flashc_erase_user_page(Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EUP, -1); - return (check) ? flashc_quick_user_page_read() : TRUE; -} - - -void flashc_write_user_page(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WUP, -1); -} - - -volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase) -{ - return flashc_memset16(dst, src | (U16)src << 8, nbytes, erase); -} - - -volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase) -{ - return flashc_memset32(dst, src | (U32)src << 16, nbytes, erase); -} - - -volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase) -{ - return flashc_memset64(dst, src | (U64)src << 32, nbytes, erase); -} - - -volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase) -{ - // Use aggregated pointers to have several alignments available for a same address. - UnionCVPtr flash_array_end; - UnionVPtr dest; - Union64 source = {0}; - StructCVPtr dest_end; - UnionCVPtr flash_page_source_end; - Bool incomplete_flash_page_end; - Union64 flash_dword; - UnionVPtr tmp; - unsigned int error_status = 0; - unsigned int i; - - // Reformat arguments. - flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size(); - dest.u8ptr = dst; - for (i = (Get_align((U32)dest.u8ptr, sizeof(U64)) - 1) & (sizeof(U64) - 1); - src; i = (i - 1) & (sizeof(U64) - 1)) - { - source.u8[i] = src; - src >>= 8; - } - dest_end.u8ptr = dest.u8ptr + nbytes; - - // If destination is outside flash, go to next flash page if any. - if (dest.u8ptr < AVR32_FLASH) - { - dest.u8ptr = AVR32_FLASH; - } - else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE) - { - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - - // If end of destination is outside flash, move it to the end of the previous flash page if any. - if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE) - { - dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE; - } - else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr) - { - dest_end.u8ptr = flash_array_end.u8ptr; - } - - // Align each end of destination pointer with its natural boundary. - dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16)); - dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32)); - dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64)); - - // While end of destination is not reached... - while (dest.u8ptr < dest_end.u8ptr) - { - // Clear the page buffer in order to prepare data for a flash page write. - flashc_clear_page_buffer(); - error_status |= flashc_error_status; - - // Determine where the source data will end in the current flash page. - flash_page_source_end.u64ptr = - (U64 *)min((U32)dest_end.u64ptr, - Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE); - - // Determine if the current destination page has an incomplete end. - incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >= - Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE)); - - // Use a flash double-word buffer to manage unaligned accesses. - flash_dword.u64 = source.u64; - - // If destination does not point to the beginning of the current flash page... - if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE)) - { - // Fill the beginning of the page buffer with the current flash page data. - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE); - tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - - // If destination is not 64-bit aligned... - if (!Test_align((U32)dest.u8ptr, sizeof(U64))) - { - // Fill the beginning of the flash double-word buffer with the current - // flash page data. - // This is required by the hardware, even if page erase is not - // requested, in order to be able to write successfully to erased parts - // of flash pages that have already been written to. - for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Align the destination pointer with its 64-bit boundary. - dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - - // If the current destination double-word is not the last one... - if (dest.u64ptr < dest_end.u64ptr) - { - // Write the flash double-word buffer to the page buffer and reinitialize it. - *dest.u64ptr++ = flash_dword.u64; - flash_dword.u64 = source.u64; - } - } - } - - // Write the source data to the page buffer with 64-bit alignment. - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - *dest.u64ptr++ = source.u64; - - // If the current destination page has an incomplete end... - if (incomplete_flash_page_end) - { - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - { - tmp.u8ptr = (volatile U8 *)dest_end.u8ptr; - - // If end of destination is not 64-bit aligned... - if (!Test_align((U32)dest_end.u8ptr, sizeof(U64))) - { - // Fill the end of the flash double-word buffer with the current flash page data. - for (i = Get_align((U32)dest_end.u8ptr, sizeof(U64)); i < sizeof(U64); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - - // Fill the end of the page buffer with the current flash page data. - for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - } - } - - // If the current flash page is in the flash array... - if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE) - { - // Erase the current page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_page(-1, FALSE); - error_status |= flashc_error_status; - } - flashc_write_page(-1); - error_status |= flashc_error_status; - - // If the end of the flash array is reached, go to the User page. - if (dest.u8ptr >= flash_array_end.u8ptr) - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - // If the current flash page is the User page... - else - { - // Erase the User page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_user_page(FALSE); - error_status |= flashc_error_status; - } - flashc_write_user_page(); - error_status |= flashc_error_status; - } - } - - // Update the FLASHC error status. - flashc_error_status = error_status; - - // Return the initial destination pointer as the standard memset function does. - return dst; -} - - -volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase) -{ - // Use aggregated pointers to have several alignments available for a same address. - UnionCVPtr flash_array_end; - UnionVPtr dest; - UnionCPtr source; - StructCVPtr dest_end; - UnionCVPtr flash_page_source_end; - Bool incomplete_flash_page_end; - Union64 flash_dword; - Bool flash_dword_pending = FALSE; - UnionVPtr tmp; - unsigned int error_status = 0; - unsigned int i, j; - - // Reformat arguments. - flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size(); - dest.u8ptr = dst; - source.u8ptr = src; - dest_end.u8ptr = dest.u8ptr + nbytes; - - // If destination is outside flash, go to next flash page if any. - if (dest.u8ptr < AVR32_FLASH) - { - source.u8ptr += AVR32_FLASH - dest.u8ptr; - dest.u8ptr = AVR32_FLASH; - } - else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE) - { - source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr; - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - - // If end of destination is outside flash, move it to the end of the previous flash page if any. - if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE) - { - dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE; - } - else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr) - { - dest_end.u8ptr = flash_array_end.u8ptr; - } - - // Align each end of destination pointer with its natural boundary. - dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16)); - dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32)); - dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64)); - - // While end of destination is not reached... - while (dest.u8ptr < dest_end.u8ptr) - { - // Clear the page buffer in order to prepare data for a flash page write. - flashc_clear_page_buffer(); - error_status |= flashc_error_status; - - // Determine where the source data will end in the current flash page. - flash_page_source_end.u64ptr = - (U64 *)min((U32)dest_end.u64ptr, - Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE); - - // Determine if the current destination page has an incomplete end. - incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >= - Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE)); - - // If destination does not point to the beginning of the current flash page... - if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE)) - { - // Fill the beginning of the page buffer with the current flash page data. - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE); - tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - - // If destination is not 64-bit aligned... - if (!Test_align((U32)dest.u8ptr, sizeof(U64))) - { - // Fill the beginning of the flash double-word buffer with the current - // flash page data. - // This is required by the hardware, even if page erase is not - // requested, in order to be able to write successfully to erased parts - // of flash pages that have already been written to. - for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Fill the end of the flash double-word buffer with the source data. - for (; i < sizeof(U64); i++) - flash_dword.u8[i] = *source.u8ptr++; - - // Align the destination pointer with its 64-bit boundary. - dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - - // If the current destination double-word is not the last one... - if (dest.u64ptr < dest_end.u64ptr) - { - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - // If the current destination double-word is the last one, the flash - // double-word buffer must be kept for later. - else flash_dword_pending = TRUE; - } - } - - // Read the source data with the maximal possible alignment and write it to - // the page buffer with 64-bit alignment. - switch (Get_align((U32)source.u8ptr, sizeof(U32))) - { - case 0: - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - *dest.u64ptr++ = *source.u64ptr++; - break; - - case sizeof(U16): - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - { - for (j = 0; j < sizeof(U64) / sizeof(U16); j++) flash_dword.u16[j] = *source.u16ptr++; - *dest.u64ptr++ = flash_dword.u64; - } - break; - - default: - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - { - for (j = 0; j < sizeof(U64); j++) flash_dword.u8[j] = *source.u8ptr++; - *dest.u64ptr++ = flash_dword.u64; - } - } - - // If the current destination page has an incomplete end... - if (incomplete_flash_page_end) - { - // If the flash double-word buffer is in use, do not initialize it. - if (flash_dword_pending) i = Get_align((U32)dest_end.u8ptr, sizeof(U64)); - // If the flash double-word buffer is free... - else - { - // Fill the beginning of the flash double-word buffer with the source data. - for (i = 0; i < Get_align((U32)dest_end.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *source.u8ptr++; - } - - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - { - tmp.u8ptr = (volatile U8 *)dest_end.u8ptr; - - // If end of destination is not 64-bit aligned... - if (!Test_align((U32)dest_end.u8ptr, sizeof(U64))) - { - // Fill the end of the flash double-word buffer with the current flash page data. - for (; i < sizeof(U64); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - - // Fill the end of the page buffer with the current flash page data. - for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - } - } - - // If the current flash page is in the flash array... - if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE) - { - // Erase the current page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_page(-1, FALSE); - error_status |= flashc_error_status; - } - flashc_write_page(-1); - error_status |= flashc_error_status; - - // If the end of the flash array is reached, go to the User page. - if (dest.u8ptr >= flash_array_end.u8ptr) - { - source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr; - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - } - // If the current flash page is the User page... - else - { - // Erase the User page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_user_page(FALSE); - error_status |= flashc_error_status; - } - flashc_write_user_page(); - error_status |= flashc_error_status; - } - } - - // Update the FLASHC error status. - flashc_error_status = error_status; - - // Return the initial destination pointer as the standard memcpy function does. - return dst; -} - - -#if UC3C -void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz) -{ - //! Device-specific data - #undef AVR32_FLASHC_FWS_0_MAX_FREQ - #undef AVR32_FLASHC_FWS_1_MAX_FREQ - #undef AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ - #undef AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ - #define AVR32_FLASHC_FWS_0_MAX_FREQ 33000000 - #define AVR32_FLASHC_FWS_1_MAX_FREQ 66000000 - #define AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ 33000000 - #define AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ 72000000 - // These defines are missing from or wrong in the toolchain header files uc3cxxx.h - // Put a Bugzilla - - if(cpu_f_hz > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ) // > 33MHz - { - // Set a wait-state - flashc_set_wait_state(1); - if(cpu_f_hz <= AVR32_FLASHC_FWS_1_MAX_FREQ) // <= 66MHz and >33Mhz - { - // Disable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); - } - else // > 66Mhz - { - // Enable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - } - } - else // <= 33 MHz - { - // Disable wait-state - flashc_set_wait_state(0); - - // Disable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); - - } -} -#endif // UC3C device-specific implementation - -//! @} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h deleted file mode 100644 index 9f2547a..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h +++ /dev/null @@ -1,1002 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FLASHC driver for AVR32 UC3. - * - * AVR32 Flash Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a FLASHC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _FLASHC_H_ -#define _FLASHC_H_ - -#include -#include -#include "compiler.h" - -//! Number of flash regions defined by the FLASHC. -#define AVR32_FLASHC_REGIONS (AVR32_FLASHC_FLASH_SIZE /\ - (AVR32_FLASHC_PAGES_PR_REGION * AVR32_FLASHC_PAGE_SIZE)) - - -/*! \name Flash Properties - */ -//! @{ - -/*! \brief Gets the size of the whole flash array. - * - * \return The size of the whole flash array in bytes. - */ -extern unsigned int flashc_get_flash_size(void); - -/*! \brief Gets the total number of pages in the flash array. - * - * \return The total number of pages in the flash array. - */ -extern unsigned int flashc_get_page_count(void); - -/*! \brief Gets the number of pages in each flash region. - * - * \return The number of pages in each flash region. - */ -extern unsigned int flashc_get_page_count_per_region(void); - -/*! \brief Gets the region number of a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return The region number of the specified page. - */ -extern unsigned int flashc_get_page_region(int page_number); - -/*! \brief Gets the number of the first page of a region. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * - * \return The number of the first page of the specified region. - */ -extern unsigned int flashc_get_region_first_page_number(unsigned int region); - -//! @} - - -/*! \name FLASHC Control - */ -//! @{ - -/*! \brief Gets the number of wait states of flash read accesses. - * - * \return The number of wait states of flash read accesses. - */ -extern unsigned int flashc_get_wait_state(void); - -/*! \brief Sets the number of wait states of flash read accesses. - * - * \param wait_state The number of wait states of flash read accesses: \c 0 to - * \c 1. - */ -extern void flashc_set_wait_state(unsigned int wait_state); - -/*! \brief Tells whether the Flash Ready interrupt is enabled. - * - * \return Whether the Flash Ready interrupt is enabled. - */ -extern Bool flashc_is_ready_int_enabled(void); - -/*! \brief Enables or disables the Flash Ready interrupt. - * - * \param enable Whether to enable the Flash Ready interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_ready_int(Bool enable); - -/*! \brief Tells whether the Lock Error interrupt is enabled. - * - * \return Whether the Lock Error interrupt is enabled. - */ -extern Bool flashc_is_lock_error_int_enabled(void); - -/*! \brief Enables or disables the Lock Error interrupt. - * - * \param enable Whether to enable the Lock Error interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_lock_error_int(Bool enable); - -/*! \brief Tells whether the Programming Error interrupt is enabled. - * - * \return Whether the Programming Error interrupt is enabled. - */ -extern Bool flashc_is_prog_error_int_enabled(void); - -/*! \brief Enables or disables the Programming Error interrupt. - * - * \param enable Whether to enable the Programming Error interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_prog_error_int(Bool enable); - -//! @} - - -/*! \name FLASHC Status - */ -//! @{ - -/*! \brief Tells whether the FLASHC is ready to run a new command. - * - * \return Whether the FLASHC is ready to run a new command. - */ -extern Bool flashc_is_ready(void); - -/*! \brief Waits actively until the FLASHC is ready to run a new command. - * - * This is the default function assigned to \ref flashc_wait_until_ready. - */ -extern void flashc_default_wait_until_ready(void); - -//! Pointer to the function used by the driver when it needs to wait until the -//! FLASHC is ready to run a new command. -//! The default function is \ref flashc_default_wait_until_ready. -//! The user may change this pointer to use another implementation. -extern void (*volatile flashc_wait_until_ready)(void); - -/*! \brief Tells whether a Lock Error has occurred during the last function - * called that issued one or more FLASHC commands. - * - * \return Whether a Lock Error has occurred during the last function called - * that issued one or more FLASHC commands. - */ -extern Bool flashc_is_lock_error(void); - -/*! \brief Tells whether a Programming Error has occurred during the last - * function called that issued one or more FLASHC commands. - * - * \return Whether a Programming Error has occurred during the last function - * called that issued one or more FLASHC commands. - */ -extern Bool flashc_is_programming_error(void); - -//! @} - - -/*! \name FLASHC Command Control - */ -//! @{ - -/*! \brief Gets the last issued FLASHC command. - * - * \return The last issued FLASHC command. - */ -extern unsigned int flashc_get_command(void); - -/*! \brief Gets the current FLASHC page number. - * - * \return The current FLASHC page number. - */ -extern unsigned int flashc_get_page_number(void); - -/*! \brief Issues a FLASHC command. - * - * \param command The command: \c AVR32_FLASHC_FCMD_CMD_x. - * \param page_number The page number to apply the command to: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: use this to apply the command to the current page number - * or if the command does not apply to any page number; - * \arg this argument may have other meanings according to the command. See - * the FLASHC chapter of the MCU datasheet. - * - * \warning A Lock Error is issued if the command violates the protection - * mechanism. - * - * \warning A Programming Error is issued if the command is invalid. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_issue_command(unsigned int command, int page_number); - -//! @} - - -/*! \name FLASHC Global Commands - */ -//! @{ - -/*! \brief Issues a No Operation command to the FLASHC. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_no_operation(void); - -/*! \brief Issues an Erase All command to the FLASHC. - * - * This command erases all bits in the flash array, the general-purpose fuse - * bits and the Security bit. The User page is not erased. - * - * This command also ensures that all volatile memories, such as register file - * and RAMs, are erased before the Security bit is erased, i.e. deactivated. - * - * \warning A Lock Error is issued if at least one region is locked or the - * bootloader protection is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern void flashc_erase_all(void); - -//! @} - - -/*! \name FLASHC Protection Mechanisms - */ -//! @{ - -/*! \brief Tells whether the Security bit is active. - * - * \return Whether the Security bit is active. - */ -extern Bool flashc_is_security_bit_active(void); - -/*! \brief Activates the Security bit. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_activate_security_bit(void); - -/*! \brief Gets the bootloader protected size. - * - * \return The bootloader protected size in bytes. - */ -extern unsigned int flashc_get_bootloader_protected_size(void); - -/*! \brief Sets the bootloader protected size. - * - * \param bootprot_size The wanted bootloader protected size in bytes. If this - * size is not supported, the actual size will be the - * nearest greater available size or the maximal possible - * size if the requested size is too large. - * - * \return The actual bootloader protected size in bytes. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size); - -/*! \brief Tells whether external privileged fetch is locked. - * - * \return Whether external privileged fetch is locked. - */ -extern Bool flashc_is_external_privileged_fetch_locked(void); - -/*! \brief Locks or unlocks external privileged fetch. - * - * \param lock Whether to lock external privileged fetch: \c TRUE or \c FALSE. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_external_privileged_fetch(Bool lock); - -/*! \brief Tells whether the region of a page is locked. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return Whether the region of the specified page is locked. - */ -extern Bool flashc_is_page_region_locked(int page_number); - -/*! \brief Tells whether a region is locked. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * - * \return Whether the specified region is locked. - */ -extern Bool flashc_is_region_locked(unsigned int region); - -/*! \brief Locks or unlocks the region of a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * \param lock Whether to lock the region of the specified page: \c TRUE or - * \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_page_region(int page_number, Bool lock); - -/*! \brief Locks or unlocks a region. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * \param lock Whether to lock the specified region: \c TRUE or \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_region(unsigned int region, Bool lock); - -/*! \brief Locks or unlocks all regions. - * - * \param lock Whether to lock the regions: \c TRUE or \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_all_regions(Bool lock); - -//! @} - - -/*! \name Access to General-Purpose Fuses - */ -//! @{ - -/*! \brief Reads a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * - * \return The value of the specified general-purpose fuse bit. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit); - -/*! \brief Reads a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * - * \return The value of the specified general-purpose fuse bit-field. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width); - -/*! \brief Reads a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * - * \return The value of the specified general-purpose fuse byte. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte); - -/*! \brief Reads all general-purpose fuses. - * - * \return The value of all general-purpose fuses as a word. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U64 flashc_read_all_gp_fuses(void); - -/*! \brief Erases a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check); - -/*! \brief Erases a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check); - -/*! \brief Erases a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check); - -/*! \brief Erases all general-purpose fuses. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_all_gp_fuses(Bool check); - -/*! \brief Writes a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param value The value of the specified general-purpose fuse bit. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value); - -/*! \brief Writes a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param value The value of the specified general-purpose fuse bit-field. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value); - -/*! \brief Writes a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param value The value of the specified general-purpose fuse byte. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value); - -/*! \brief Writes all general-purpose fuses. - * - * \param value The value of all general-purpose fuses as a word. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_all_gp_fuses(U64 value); - -/*! \brief Sets a general-purpose fuse bit with the appropriate erase and write - * operations. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param value The value of the specified general-purpose fuse bit. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value); - -/*! \brief Sets a general-purpose fuse bit-field with the appropriate erase and - * write operations. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param value The value of the specified general-purpose fuse bit-field. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value); - -/*! \brief Sets a general-purpose fuse byte with the appropriate erase and write - * operations. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param value The value of the specified general-purpose fuse byte. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value); - -/*! \brief Sets all general-purpose fuses with the appropriate erase and write - * operations. - * - * \param value The value of all general-purpose fuses as a word. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_all_gp_fuses(U64 value); - -//! @} - - -/*! \name Access to Flash Pages - */ -//! @{ - -/*! \brief Clears the page buffer. - * - * This command resets all bits in the page buffer to one. Write accesses to the - * page buffer can only change page buffer bits from one to zero. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_clear_page_buffer(void); - -/*! \brief Tells whether the page to which the last Quick Page Read or Quick - * Page Read User Page command was applied was erased. - * - * \return Whether the page to which the last Quick Page Read or Quick Page Read - * User Page command was applied was erased. - */ -extern Bool flashc_is_page_erased(void); - -/*! \brief Applies the Quick Page Read command to a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return Whether the specified page is erased. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern Bool flashc_quick_page_read(int page_number); - -/*! \brief Erases a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the command is applied to a page belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_page(int page_number, Bool check); - -/*! \brief Erases all pages within the flash array. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if at least one region is locked or the - * bootloader protection is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_all_pages(Bool check); - -/*! \brief Writes a page from the page buffer. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \warning A Lock Error is issued if the command is applied to a page belonging - * to a locked region or to the bootloader protected area. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - */ -extern void flashc_write_page(int page_number); - -/*! \brief Issues a Quick Page Read User Page command to the FLASHC. - * - * \return Whether the User page is erased. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern Bool flashc_quick_user_page_read(void); - -/*! \brief Erases the User page. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_user_page(Bool check); - -/*! \brief Writes the User page from the page buffer. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - */ -extern void flashc_write_user_page(void); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src source byte. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source byte. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source half-word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source half-word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source double-word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source double-word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source pattern. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source double-word. - * \param src_width \a src width in bits: 8, 16, 32 or 64. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -#define flashc_memset(dst, src, src_width, nbytes, erase) \ - TPASTE2(flashc_memset, src_width)((dst), (src), (nbytes), (erase)) - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the source pointed to by \a src. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Pointer to source data. - * \param nbytes Number of bytes to copy. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning If copying takes place between areas that overlap, the behavior is - * undefined. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase); - -#if UC3C - -/*! \brief Depednding to the CPU frequency, set the wait states of flash read - * accesses and enable or disable the High speed read mode. - * - * \param cpu_f_hz The CPU frequency - */ -void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz); -#endif // UC3C device-specific implementation - -//! @} - - -#endif // _FLASHC_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c deleted file mode 100644 index b6b83c7..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c +++ /dev/null @@ -1,458 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief GPIO driver for AVR32 UC3. - * - * This file defines a useful set of functions for the GPIO. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a GPIO module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "gpio.h" - -//! GPIO module instance. -#define GPIO AVR32_GPIO - - -/*! \name Peripheral Bus Interface - */ -//! @{ - - -int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size) -{ - int status = GPIO_SUCCESS; - unsigned int i; - - for (i = 0; i < size; i++) - { - status |= gpio_enable_module_pin(gpiomap->pin, gpiomap->function); - gpiomap++; - } - - return status; -} - - -int gpio_enable_module_pin(unsigned int pin, unsigned int function) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Enable the correct function. - switch (function) - { - case 0: // A function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 1: // B function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 2: // C function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 3: // D function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - case 4: // E function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 5: // F function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 6: // G function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 7: // H function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; -#endif - - default: - return GPIO_INVALID_ARGUMENT; - } - - // Disable GPIO control. - gpio_port->gperc = 1 << (pin & 0x1F); - - return GPIO_SUCCESS; -} - - -void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size) -{ - unsigned int i; - - for (i = 0; i < size; i++) - { - gpio_enable_gpio_pin(gpiomap->pin); - gpiomap++; - } -} - - -void gpio_enable_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->oderc = 1 << (pin & 0x1F); - gpio_port->gpers = 1 << (pin & 0x1F); -} - - -// The open-drain mode is not synthesized on the current AVR32 products. -// If one day some AVR32 products have this feature, the corresponding part -// numbers should be listed in the #if below. -// Note that other functions are available in this driver to use pins with open -// drain in GPIO mode. The advantage of the open-drain mode functions over these -// other functions is that they can be used not only in GPIO mode but also in -// module mode. -#if 0 - - -void gpio_enable_pin_open_drain(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->odmers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_open_drain(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->odmerc = 1 << (pin & 0x1F); -} - - -#endif - - -void gpio_enable_pin_pull_up(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puers = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pderc = 1 << (pin & 0x1F); -#endif -} - - -void gpio_disable_pin_pull_up(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); -} - -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) -// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control. - -/*! \brief Enables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -void gpio_enable_pin_pull_down(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); - gpio_port->pders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -void gpio_disable_pin_pull_down(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->pderc = 1 << (pin & 0x1F); -} - -/*! \brief Enables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -void gpio_enable_pin_buskeeper(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puers = 1 << (pin & 0x1F); - gpio_port->pders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -void gpio_disable_pin_buskeeper(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); - gpio_port->pderc = 1 << (pin & 0x1F); -} - -#endif - -int gpio_get_pin_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->pvr >> (pin & 0x1F)) & 1; -} - - -int gpio_get_gpio_pin_output_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->ovr >> (pin & 0x1F)) & 1; -} - - -int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return ((gpio_port->oder >> (pin & 0x1F)) & 1) ^ 1; -} - - -void gpio_set_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrs = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 1. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_clr_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_tgl_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrt = 1 << (pin & 0x1F); // Toggle the I/O line. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_set_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_clr_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_tgl_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line if the GPIO output driver is enabled: 0. - gpio_port->odert = 1 << (pin & 0x1F); // The GPIO output driver is toggled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_enable_pin_glitch_filter(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->gfers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_glitch_filter(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->gferc = 1 << (pin & 0x1F); -} - -/*! \brief Configure the edge detector of an input pin - * - * \param pin The pin number. - * \param mode The edge detection mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE - * or \ref GPIO_FALLING_EDGE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -static int gpio_configure_edge_detector(unsigned int pin, unsigned int mode) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Configure the edge detector. - switch (mode) - { - case GPIO_PIN_CHANGE: - gpio_port->imr0c = 1 << (pin & 0x1F); - gpio_port->imr1c = 1 << (pin & 0x1F); - break; - - case GPIO_RISING_EDGE: - gpio_port->imr0s = 1 << (pin & 0x1F); - gpio_port->imr1c = 1 << (pin & 0x1F); - break; - - case GPIO_FALLING_EDGE: - gpio_port->imr0c = 1 << (pin & 0x1F); - gpio_port->imr1s = 1 << (pin & 0x1F); - break; - - default: - return GPIO_INVALID_ARGUMENT; - } - - return GPIO_SUCCESS; -} - - -int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Enable the glitch filter. - gpio_port->gfers = 1 << (pin & 0x1F); - - // Configure the edge detector. - if(GPIO_INVALID_ARGUMENT == gpio_configure_edge_detector(pin, mode)) - return(GPIO_INVALID_ARGUMENT); - - // Enable interrupt. - gpio_port->iers = 1 << (pin & 0x1F); - - return GPIO_SUCCESS; -} - - -void gpio_disable_pin_interrupt(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->ierc = 1 << (pin & 0x1F); -} - - -int gpio_get_pin_interrupt_flag(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->ifr >> (pin & 0x1F)) & 1; -} - - -void gpio_clear_pin_interrupt_flag(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->ifrc = 1 << (pin & 0x1F); -} - - -//# -//# Peripheral Event System Support. -//# -#if UC3L -int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - if(TRUE == use_igf) - { - // Enable the glitch filter. - gpio_port->gfers = 1 << (pin & 0x1F); - } - else - { - // Disable the glitch filter. - gpio_port->gferc = 1 << (pin & 0x1F); - } - - // Configure the edge detector. - return(gpio_configure_edge_detector(pin, mode)); -} - -#endif - -//! @} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h deleted file mode 100644 index f0b5fd8..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h +++ /dev/null @@ -1,583 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief GPIO header for AVR32 UC3. - * - * This file contains basic GPIO driver functions. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a GPIO module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _GPIO_H_ -#define _GPIO_H_ - -#include -#include "compiler.h" - -/*! \name Return Values of the GPIO API - */ -//! @{ -#define GPIO_SUCCESS 0 //!< Function successfully completed. -#define GPIO_INVALID_ARGUMENT 1 //!< Input parameters are out of range. -//! @} - - -/*! \name Interrupt Trigger Modes - */ -//! @{ -#define GPIO_PIN_CHANGE 0 //!< Interrupt triggered upon pin change. -#define GPIO_RISING_EDGE 1 //!< Interrupt triggered upon rising edge. -#define GPIO_FALLING_EDGE 2 //!< Interrupt triggered upon falling edge. -//! @} - - -//! A type definition of pins and modules connectivity. -typedef struct -{ - unsigned char pin; //!< Module pin. - unsigned char function; //!< Module function. -} gpio_map_t[]; - - -/*! \name Peripheral Bus Interface - * - * Low-speed interface with a non-deterministic number of clock cycles per - * access. - * - * This interface operates with lower clock frequencies (fPB <= fCPU), and its - * timing is not deterministic since it needs to access a shared bus which may - * be heavily loaded. - * - * \note This interface is immediately available without initialization. - */ -//! @{ - -/*! \brief Enables specific module modes for a set of pins. - * - * \param gpiomap The pin map. - * \param size The number of pins in \a gpiomap. - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size); - -/*! \brief Enables a specific module mode for a pin. - * - * \param pin The pin number.\n - * Refer to the product header file `uc3x.h' (where x is the part - * number; e.g. x = a0512) for module pins. E.g., to enable a PWM - * channel output, the pin number can be AVR32_PWM_3_PIN for PWM - * channel 3. - * \param function The pin function.\n - * Refer to the product header file `uc3x.h' (where x is the - * part number; e.g. x = a0512) for module pin functions. E.g., - * to enable a PWM channel output, the pin function can be - * AVR32_PWM_3_FUNCTION for PWM channel 3. - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_module_pin(unsigned int pin, unsigned int function); - -/*! \brief Enables the GPIO mode of a set of pins. - * - * \param gpiomap The pin map. - * \param size The number of pins in \a gpiomap. - */ -extern void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size); - -/*! \brief Enables the GPIO mode of a pin. - * - * \param pin The pin number.\n - * Refer to the product header file `uc3x.h' (where x is the part - * number; e.g. x = a0512) for pin definitions. E.g., to enable the - * GPIO mode of PX21, AVR32_PIN_PX21 can be used. Module pins such as - * AVR32_PWM_3_PIN for PWM channel 3 can also be used to release - * module pins for GPIO. - */ -extern void gpio_enable_gpio_pin(unsigned int pin); - -// The open-drain mode is not synthesized on the current AVR32 products. -// If one day some AVR32 products have this feature, the corresponding part -// numbers should be listed in the #if below. -// Note that other functions are available in this driver to use pins with open -// drain in GPIO mode. The advantage of the open-drain mode functions over these -// other functions is that they can be used not only in GPIO mode but also in -// module mode. -#if 0 - -/*! \brief Enables the open-drain mode of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_open_drain(unsigned int pin); - -/*! \brief Disables the open-drain mode of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_open_drain(unsigned int pin); - -#endif - -/*! \brief Enables the pull-up resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_pull_up(unsigned int pin); - -/*! \brief Disables the pull-up resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_pull_up(unsigned int pin); - -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) -// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control. - -/*! \brief Enables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_pull_down(unsigned int pin); - -/*! \brief Disables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_pull_down(unsigned int pin); - -/*! \brief Enables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_buskeeper(unsigned int pin); - -/*! \brief Disables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_buskeeper(unsigned int pin); - -#endif - -/*! \brief Returns the value of a pin. - * - * \param pin The pin number. - * - * \return The pin value. - */ -extern int gpio_get_pin_value(unsigned int pin); - -/*! \brief Returns the output value set for a GPIO pin. - * - * \param pin The pin number. - * - * \return The pin output value. - * - * \note This function must be used in conjunction with \ref gpio_set_gpio_pin, - * \ref gpio_clr_gpio_pin and \ref gpio_tgl_gpio_pin. - */ -extern int gpio_get_gpio_pin_output_value(unsigned int pin); - -/*! \brief Returns the output value set for a GPIO pin using open drain. - * - * \param pin The pin number. - * - * \return The pin output value. - * - * \note This function must be used in conjunction with - * \ref gpio_set_gpio_open_drain_pin, \ref gpio_clr_gpio_open_drain_pin - * and \ref gpio_tgl_gpio_open_drain_pin. - */ -extern int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin); - -/*! \brief Drives a GPIO pin to 1. - * - * \param pin The pin number. - */ -extern void gpio_set_gpio_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 0. - * - * \param pin The pin number. - */ -extern void gpio_clr_gpio_pin(unsigned int pin); - -/*! \brief Toggles a GPIO pin. - * - * \param pin The pin number. - */ -extern void gpio_tgl_gpio_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 1 using open drain. - * - * \param pin The pin number. - */ -extern void gpio_set_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 0 using open drain. - * - * \param pin The pin number. - */ -extern void gpio_clr_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Toggles a GPIO pin using open drain. - * - * \param pin The pin number. - */ -extern void gpio_tgl_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Enables the glitch filter of a pin. - * - * When the glitch filter is enabled, a glitch with duration of less than 1 - * clock cycle is automatically rejected, while a pulse with duration of 2 clock - * cycles or more is accepted. For pulse durations between 1 clock cycle and 2 - * clock cycles, the pulse may or may not be taken into account, depending on - * the precise timing of its occurrence. Thus for a pulse to be guaranteed - * visible it must exceed 2 clock cycles, whereas for a glitch to be reliably - * filtered out, its duration must not exceed 1 clock cycle. The filter - * introduces 2 clock cycles latency. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_glitch_filter(unsigned int pin); - -/*! \brief Disables the glitch filter of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_glitch_filter(unsigned int pin); - -/*! \brief Enables the interrupt of a pin with the specified settings. - * - * \param pin The pin number. - * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or - * \ref GPIO_FALLING_EDGE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode); - -/*! \brief Disables the interrupt of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_interrupt(unsigned int pin); - -/*! \brief Gets the interrupt flag of a pin. - * - * \param pin The pin number. - * - * \return The pin interrupt flag. - */ -extern int gpio_get_pin_interrupt_flag(unsigned int pin); - -/*! \brief Clears the interrupt flag of a pin. - * - * \param pin The pin number. - */ -extern void gpio_clear_pin_interrupt_flag(unsigned int pin); - -//! @} - - -#if (defined AVR32_GPIO_LOCAL_ADDRESS) -/*! \name Local Bus Interface - * - * High-speed interface with only one clock cycle per access. - * - * This interface operates with high clock frequency (fCPU), and its timing is - * deterministic since it does not need to access a shared bus which may be - * heavily loaded. - * - * \warning To use this interface, the clock frequency of the peripheral bus on - * which the GPIO peripheral is connected must be set to the CPU clock - * frequency (fPB = fCPU). - * - * \note This interface has to be initialized in order to be available. - */ -//! @{ - -/*! \brief Enables the local bus interface for GPIO. - * - * \note This function must have been called at least once before using other - * functions in this interface. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_init(void) -{ - Set_system_register(AVR32_CPUCR, - Get_system_register(AVR32_CPUCR) | AVR32_CPUCR_LOCEN_MASK); -} - -/*! \brief Enables the output driver of a pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_enable_pin_output_driver(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the output driver of a pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_disable_pin_output_driver(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F); -} - -/*! \brief Returns the value of a pin. - * - * \param pin The pin number. - * - * \return The pin value. - * - * \note \ref gpio_local_init must have been called beforehand. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int gpio_local_get_pin_value(unsigned int pin) -{ - return (AVR32_GPIO_LOCAL.port[pin >> 5].pvr >> (pin & 0x1F)) & 1; -} - -/*! \brief Drives a GPIO pin to 1. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_set_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrs = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 0. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_clr_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F); -} - -/*! \brief Toggles a GPIO pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_tgl_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrt = 1 << (pin & 0x1F); -} - -/*! \brief Initializes the configuration of a GPIO pin so that it can be used - * with GPIO open-drain functions. - * - * \note This function must have been called at least once before using - * \ref gpio_local_set_gpio_open_drain_pin, - * \ref gpio_local_clr_gpio_open_drain_pin or - * \ref gpio_local_tgl_gpio_open_drain_pin. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_init_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 1 using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_set_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 0 using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_clr_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F); -} - -/*! \brief Toggles a GPIO pin using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_tgl_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].odert = 1 << (pin & 0x1F); -} - -//! @} -#endif // AVR32_GPIO_LOCAL_ADDRESS - -#if UC3L -//! @{ -/*! \name Peripheral Event System support - * - * The GPIO can be programmed to output peripheral events whenever an interrupt - * condition is detected, such as pin value change, or only when a rising or - * falling edge is detected. - * - */ - -/*! \brief Enables the peripheral event generation of a pin. - * - * \param pin The pin number. - * - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_enable_pin_periph_event(unsigned int pin) -{ - AVR32_GPIO.port[pin >> 5].oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin. - AVR32_GPIO.port[pin >> 5].evers = 1 << (pin & 0x1F); -} - -/*! \brief Disables the peripheral event generation of a pin. - * - * \param pin The pin number. - * - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_disable_pin_periph_event(unsigned int pin) -{ - AVR32_GPIO.port[pin >> 5].everc = 1 << (pin & 0x1F); -} - -/*! \brief Configure the peripheral event trigger mode of a pin - * - * \param pin The pin number. - * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or - * \ref GPIO_FALLING_EDGE). - * \param use_igf use the Input Glitch Filter (TRUE) or not (FALSE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf); - -//! @} -#endif - - -#endif // _GPIO_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x deleted file mode 100644 index ec4109d..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x +++ /dev/null @@ -1,239 +0,0 @@ -/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Exception and interrupt vectors. - * - * This file maps all events supported by an AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#if !__AVR32_UC__ && !__AVR32_AP__ - #error Implementation of the AVR32 architecture not supported by the INTC driver. -#endif - - -#include - - -//! @{ -//! \verbatim - - - .section .exception, "ax", @progbits - - -// Start of Exception Vector Table. - - // EVBA must be aligned with a power of two strictly greater than the EVBA- - // relative offset of the last vector. - .balign 0x200 - - // Export symbol. - .global _evba - .type _evba, @function -_evba: - - .org 0x000 - // Unrecoverable Exception. -_handle_Unrecoverable_Exception: - rjmp $ - - .org 0x004 - // TLB Multiple Hit. -_handle_TLB_Multiple_Hit: - rjmp $ - - .org 0x008 - // Bus Error Data Fetch. -_handle_Bus_Error_Data_Fetch: - rjmp $ - - .org 0x00C - // Bus Error Instruction Fetch. -_handle_Bus_Error_Instruction_Fetch: - rjmp $ - - .org 0x010 - // NMI. -_handle_NMI: - rjmp $ - - .org 0x014 - // Instruction Address. -_handle_Instruction_Address: - rjmp $ - - .org 0x018 - // ITLB Protection. -_handle_ITLB_Protection: - rjmp $ - - .org 0x01C - // Breakpoint. -_handle_Breakpoint: - rjmp $ - - .org 0x020 - // Illegal Opcode. -_handle_Illegal_Opcode: - rjmp $ - - .org 0x024 - // Unimplemented Instruction. -_handle_Unimplemented_Instruction: - rjmp $ - - .org 0x028 - // Privilege Violation. -_handle_Privilege_Violation: - rjmp $ - - .org 0x02C - // Floating-Point: UNUSED IN AVR32UC and AVR32AP. -_handle_Floating_Point: - rjmp $ - - .org 0x030 - // Coprocessor Absent: UNUSED IN AVR32UC. -_handle_Coprocessor_Absent: - rjmp $ - - .org 0x034 - // Data Address (Read). -_handle_Data_Address_Read: - rjmp $ - - .org 0x038 - // Data Address (Write). -_handle_Data_Address_Write: - rjmp $ - - .org 0x03C - // DTLB Protection (Read). -_handle_DTLB_Protection_Read: - rjmp $ - - .org 0x040 - // DTLB Protection (Write). -_handle_DTLB_Protection_Write: - rjmp $ - - .org 0x044 - // DTLB Modified: UNUSED IN AVR32UC. -_handle_DTLB_Modified: - rjmp $ - - .org 0x050 - // ITLB Miss. -_handle_ITLB_Miss: - rjmp $ - - .org 0x060 - // DTLB Miss (Read). -_handle_DTLB_Miss_Read: - rjmp $ - - .org 0x070 - // DTLB Miss (Write). -_handle_DTLB_Miss_Write: - rjmp $ - - .org 0x100 - // Supervisor Call. -_handle_Supervisor_Call: - rjmp $ - - -// Interrupt support. -// The interrupt controller must provide the offset address relative to EVBA. -// Important note: -// All interrupts call a C function named _get_interrupt_handler. -// This function will read group and interrupt line number to then return in -// R12 a pointer to a user-provided interrupt handler. - - .balign 4 - - .irp priority, 0, 1, 2, 3 -_int\priority: -#if __AVR32_UC__ - // R8-R12, LR, PC and SR are automatically pushed onto the system stack by the - // CPU upon interrupt entry. No other register is saved by hardware. -#elif __AVR32_AP__ - // PC and SR are automatically saved in respectively RAR_INTx and RSR_INTx by - // the CPU upon interrupt entry. No other register is saved by hardware. - pushm r8-r12, lr -#endif - mov r12, \priority // Pass the int_level parameter to the _get_interrupt_handler function. - call _get_interrupt_handler - cp.w r12, 0 // Get the pointer to the interrupt handler returned by the function. -#if __AVR32_UC__ - movne pc, r12 // If this was not a spurious interrupt (R12 != NULL), jump to the handler. -#elif __AVR32_AP__ - breq spint\priority // If this was a spurious interrupt (R12 == NULL), branch. - st.w --sp, r12 // Push the pointer to the interrupt handler onto the system stack since no register may be altered. - popm r8-r12, lr, pc // Restore registers and jump to the handler. -spint\priority: - popm r8-r12, lr -#endif - rete // If this was a spurious interrupt (R12 == NULL), return from event handler. - .endr - - -// Constant data area. - - .balign 4 - - // Values to store in the interrupt priority registers for the various interrupt priority levels. - // The interrupt priority registers contain the interrupt priority level and - // the EVBA-relative interrupt vector offset. - .global ipr_val - .type ipr_val, @object -ipr_val: - .word (AVR32_INTC_INT0 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int0 - _evba),\ - (AVR32_INTC_INT1 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int1 - _evba),\ - (AVR32_INTC_INT2 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int2 - _evba),\ - (AVR32_INTC_INT3 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int3 - _evba) - - -//! \endverbatim -//! @} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c deleted file mode 100644 index 84d498d..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c +++ /dev/null @@ -1,214 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief INTC driver for AVR32 UC3. - * - * AVR32 Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "compiler.h" -#include "preprocessor.h" -#include "intc.h" - -// define _evba from exception.S -extern void _evba; - -//! Values to store in the interrupt priority registers for the various interrupt priority levels. -extern const unsigned int ipr_val[AVR32_INTC_NUM_INT_LEVELS]; - -//! Creates a table of interrupt line handlers per interrupt group in order to optimize RAM space. -//! Each line handler table contains a set of pointers to interrupt handlers. -#if (defined __GNUC__) -#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \ -static volatile __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)]; -#elif (defined __ICCAVR32__) -#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \ -static volatile __no_init __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)]; -#endif -MREPEAT(AVR32_INTC_NUM_INT_GRPS, DECL_INT_LINE_HANDLER_TABLE, ~); -#undef DECL_INT_LINE_HANDLER_TABLE - -//! Table containing for each interrupt group the number of interrupt request -//! lines and a pointer to the table of interrupt line handlers. -static const struct -{ - unsigned int num_irqs; - volatile __int_handler *_int_line_handler_table; -} _int_handler_table[AVR32_INTC_NUM_INT_GRPS] = -{ -#define INSERT_INT_LINE_HANDLER_TABLE(GRP, unused) \ - {AVR32_INTC_NUM_IRQS_PER_GRP##GRP, _int_line_handler_table_##GRP}, - MREPEAT(AVR32_INTC_NUM_INT_GRPS, INSERT_INT_LINE_HANDLER_TABLE, ~) -#undef INSERT_INT_LINE_HANDLER_TABLE -}; - - -/*! \brief Default interrupt handler. - * - * \note Taken and adapted from Newlib. - */ -#if (defined __GNUC__) -__attribute__((__interrupt__)) -#elif (defined __ICCAVR32__) -__interrupt -#endif -static void _unhandled_interrupt(void) -{ - // Catch unregistered interrupts. - while (TRUE); -} - - -/*! \brief Gets the interrupt handler of the current event at the \a int_level - * interrupt priority level (called from exception.S). - * - * \param int_level Interrupt priority level to handle. - * - * \return Interrupt handler to execute. - * - * \note Taken and adapted from Newlib. - */ -__int_handler _get_interrupt_handler(unsigned int int_level) -{ - // ICR3 is mapped first, ICR0 last. - // Code in exception.S puts int_level in R12 which is used by AVR32-GCC to - // pass a single argument to a function. - unsigned int int_grp = AVR32_INTC.icr[AVR32_INTC_INT3 - int_level]; - unsigned int int_req = AVR32_INTC.irr[int_grp]; - - // As an interrupt may disappear while it is being fetched by the CPU - // (spurious interrupt caused by a delayed response from an MCU peripheral to - // an interrupt flag clear or interrupt disable instruction), check if there - // are remaining interrupt lines to process. - // If a spurious interrupt occurs, the status register (SR) contains an - // execution mode and interrupt level masks corresponding to a level 0 - // interrupt, whatever the interrupt priority level causing the spurious - // event. This behavior has been chosen because a spurious interrupt has not - // to be a priority one and because it may not cause any trouble to other - // interrupts. - // However, these spurious interrupts place the hardware in an unstable state - // and could give problems in other/future versions of the CPU, so the - // software has to be written so that they never occur. The only safe way of - // achieving this is to always clear or disable peripheral interrupts with the - // following sequence: - // 1: Mask the interrupt in the CPU by setting GM (or IxM) in SR. - // 2: Perform the bus access to the peripheral register that clears or - // disables the interrupt. - // 3: Wait until the interrupt has actually been cleared or disabled by the - // peripheral. This is usually performed by reading from a register in the - // same peripheral (it DOES NOT have to be the same register that was - // accessed in step 2, but it MUST be in the same peripheral), what takes - // bus system latencies into account, but peripheral internal latencies - // (generally 0 cycle) also have to be considered. - // 4: Unmask the interrupt in the CPU by clearing GM (or IxM) in SR. - // Note that steps 1 and 4 are useless inside interrupt handlers as the - // corresponding interrupt level is automatically masked by IxM (unless IxM is - // explicitly cleared by the software). - // - // Get the right IRQ handler. - // - // If several interrupt lines are active in the group, the interrupt line with - // the highest number is selected. This is to be coherent with the - // prioritization of interrupt groups performed by the hardware interrupt - // controller. - // - // If no handler has been registered for the pending interrupt, - // _unhandled_interrupt will be selected thanks to the initialization of - // _int_line_handler_table_x by INTC_init_interrupts. - // - // exception.S will provide the interrupt handler with a clean interrupt stack - // frame, with nothing more pushed onto the stack. The interrupt handler must - // manage the `rete' instruction, what can be done thanks to pure assembly, - // inline assembly or the `__attribute__((__interrupt__))' C function - // attribute. - return (int_req) ? _int_handler_table[int_grp]._int_line_handler_table[32 - clz(int_req) - 1] : NULL; -} - -//! Init EVBA address. This sequence might also be done in the UTILS/STARTUP/GCC/crt0.S -static __inline__ void INTC_init_evba(void) -{ - Set_system_register(AVR32_EVBA, (int)&_evba ); -} - -void INTC_init_interrupts(void) -{ - unsigned int int_grp, int_req; - - INTC_init_evba(); - - // For all interrupt groups, - for (int_grp = 0; int_grp < AVR32_INTC_NUM_INT_GRPS; int_grp++) - { - // For all interrupt request lines of each group, - for (int_req = 0; int_req < _int_handler_table[int_grp].num_irqs; int_req++) - { - // Assign _unhandled_interrupt as default interrupt handler. - _int_handler_table[int_grp]._int_line_handler_table[int_req] = &_unhandled_interrupt; - } - - // Set the interrupt group priority register to its default value. - // By default, all interrupt groups are linked to the interrupt priority - // level 0 and to the interrupt vector _int0. - AVR32_INTC.ipr[int_grp] = ipr_val[AVR32_INTC_INT0]; - } -} - - -void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level) -{ - // Determine the group of the IRQ. - unsigned int int_grp = irq / AVR32_INTC_MAX_NUM_IRQS_PER_GRP; - - // Store in _int_line_handler_table_x the pointer to the interrupt handler, so - // that _get_interrupt_handler can retrieve it when the interrupt is vectored. - _int_handler_table[int_grp]._int_line_handler_table[irq % AVR32_INTC_MAX_NUM_IRQS_PER_GRP] = handler; - - // Program the corresponding IPRX register to set the interrupt priority level - // and the interrupt vector offset that will be fetched by the core interrupt - // system. - // NOTE: The _intx functions are intermediate assembly functions between the - // core interrupt system and the user interrupt handler. - AVR32_INTC.ipr[int_grp] = ipr_val[int_level & (AVR32_INTC_IPR_INTLEVEL_MASK >> AVR32_INTC_IPR_INTLEVEL_OFFSET)]; -} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h deleted file mode 100644 index 31a4fc1..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h +++ /dev/null @@ -1,100 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief INTC driver for AVR32 UC3. - * - * AVR32 Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -#include "compiler.h" - - -//! Maximal number of interrupt request lines per group. -#define AVR32_INTC_MAX_NUM_IRQS_PER_GRP 32 - -//! Number of interrupt priority levels. -#define AVR32_INTC_NUM_INT_LEVELS (1 << AVR32_INTC_IPR_INTLEVEL_SIZE) - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -//! Pointer to interrupt handler. -#if (defined __GNUC__) -typedef void (*__int_handler)(void); -#elif (defined __ICCAVR32__) -typedef void (__interrupt *__int_handler)(void); -#endif - - -/*! \brief Initializes the hardware interrupt controller driver. - * - * \note Taken and adapted from Newlib. - */ -extern void INTC_init_interrupts(void); - -/*! \brief Registers an interrupt handler. - * - * \param handler Interrupt handler to register. - * \param irq IRQ of the interrupt handler to register. - * \param int_level Interrupt priority level to assign to the group of this IRQ. - * - * \warning The interrupt handler must manage the `rete' instruction, what can - * be done thanks to pure assembly, inline assembly or the - * `__attribute__((__interrupt__))' C function attribute. - * - * \warning If several interrupt handlers of a same group are registered with - * different priority levels, only the latest priority level set will - * be effective. - * - * \note Taken and adapted from Newlib. - */ -extern void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level); - -#endif // __AVR32_ABI_COMPILER__ - - -#endif // _INTC_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c deleted file mode 100644 index 76d9268..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c +++ /dev/null @@ -1,546 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager driver. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "compiler.h" -#include "pm.h" - - -/*! \name PM Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long mcctrl; - avr32_pm_mcctrl_t MCCTRL; -} u_avr32_pm_mcctrl_t; - -typedef union -{ - unsigned long cksel; - avr32_pm_cksel_t CKSEL; -} u_avr32_pm_cksel_t; - -typedef union -{ - unsigned long pll; - avr32_pm_pll_t PLL; -} u_avr32_pm_pll_t; - -typedef union -{ - unsigned long oscctrl0; - avr32_pm_oscctrl0_t OSCCTRL0; -} u_avr32_pm_oscctrl0_t; - -typedef union -{ - unsigned long oscctrl1; - avr32_pm_oscctrl1_t OSCCTRL1; -} u_avr32_pm_oscctrl1_t; - -typedef union -{ - unsigned long oscctrl32; - avr32_pm_oscctrl32_t OSCCTRL32; -} u_avr32_pm_oscctrl32_t; - -typedef union -{ - unsigned long ier; - avr32_pm_ier_t IER; -} u_avr32_pm_ier_t; - -typedef union -{ - unsigned long idr; - avr32_pm_idr_t IDR; -} u_avr32_pm_idr_t; - -typedef union -{ - unsigned long icr; - avr32_pm_icr_t ICR; -} u_avr32_pm_icr_t; - -typedef union -{ - unsigned long gcctrl; - avr32_pm_gcctrl_t GCCTRL; -} u_avr32_pm_gcctrl_t; - -typedef union -{ - unsigned long rccr; - avr32_pm_rccr_t RCCR; -} u_avr32_pm_rccr_t; - -typedef union -{ - unsigned long bgcr; - avr32_pm_bgcr_t BGCR; -} u_avr32_pm_bgcr_t; - -typedef union -{ - unsigned long vregcr; - avr32_pm_vregcr_t VREGCR; -} u_avr32_pm_vregcr_t; - -typedef union -{ - unsigned long bod; - avr32_pm_bod_t BOD; -} u_avr32_pm_bod_t; - -//! @} - - -/*! \brief Sets the mode of the oscillator 0. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode Oscillator 0 mode (i.e. AVR32_PM_OSCCTRL0_MODE_x). - */ -static void pm_set_osc0_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0}; - // Modify - u_avr32_pm_oscctrl0.OSCCTRL0.mode = mode; - // Write - pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0; -} - - -void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc0_mode(pm, AVR32_PM_OSCCTRL0_MODE_EXT_CLOCK); -} - - -void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0) -{ - pm_set_osc0_mode(pm, (fosc0 < 900000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G0 : - (fosc0 < 3000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G1 : - (fosc0 < 8000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G2 : - AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G3); -} - - -void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk0_no_wait(pm, startup); - pm_wait_for_clk0_ready(pm); -} - - -void pm_disable_clk0(volatile avr32_pm_t *pm) -{ - pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC0EN_MASK; -} - - -void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0}; - // Modify - u_avr32_pm_oscctrl0.OSCCTRL0.startup = startup; - // Write back - pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0; - - pm->mcctrl |= AVR32_PM_MCCTRL_OSC0EN_MASK; -} - - -void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC0RDY_MASK)); -} - - -/*! \brief Sets the mode of the oscillator 1. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode Oscillator 1 mode (i.e. AVR32_PM_OSCCTRL1_MODE_x). - */ -static void pm_set_osc1_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1}; - // Modify - u_avr32_pm_oscctrl1.OSCCTRL1.mode = mode; - // Write - pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1; -} - - -void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc1_mode(pm, AVR32_PM_OSCCTRL1_MODE_EXT_CLOCK); -} - - -void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1) -{ - pm_set_osc1_mode(pm, (fosc1 < 900000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G0 : - (fosc1 < 3000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G1 : - (fosc1 < 8000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G2 : - AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G3); -} - - -void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk1_no_wait(pm, startup); - pm_wait_for_clk1_ready(pm); -} - - -void pm_disable_clk1(volatile avr32_pm_t *pm) -{ - pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC1EN_MASK; -} - - -void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1}; - // Modify - u_avr32_pm_oscctrl1.OSCCTRL1.startup = startup; - // Write back - pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1; - - pm->mcctrl |= AVR32_PM_MCCTRL_OSC1EN_MASK; -} - - -void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC1RDY_MASK)); -} - - -/*! \brief Sets the mode of the 32-kHz oscillator. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode 32-kHz oscillator mode (i.e. AVR32_PM_OSCCTRL32_MODE_x). - */ -static void pm_set_osc32_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32}; - // Modify - u_avr32_pm_oscctrl32.OSCCTRL32.mode = mode; - // Write - pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32; -} - - -void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_EXT_CLOCK); -} - - -void pm_enable_osc32_crystal(volatile avr32_pm_t *pm) -{ - pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_CRYSTAL); -} - - -void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk32_no_wait(pm, startup); - pm_wait_for_clk32_ready(pm); -} - - -void pm_disable_clk32(volatile avr32_pm_t *pm) -{ - pm->oscctrl32 &= ~AVR32_PM_OSCCTRL32_OSC32EN_MASK; -} - - -void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32}; - // Modify - u_avr32_pm_oscctrl32.OSCCTRL32.osc32en = 1; - u_avr32_pm_oscctrl32.OSCCTRL32.startup = startup; - // Write back - pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32; -} - - -void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC32RDY_MASK)); -} - - -void pm_cksel(volatile avr32_pm_t *pm, - unsigned int pbadiv, - unsigned int pbasel, - unsigned int pbbdiv, - unsigned int pbbsel, - unsigned int hsbdiv, - unsigned int hsbsel) -{ - u_avr32_pm_cksel_t u_avr32_pm_cksel = {0}; - - u_avr32_pm_cksel.CKSEL.cpusel = hsbsel; - u_avr32_pm_cksel.CKSEL.cpudiv = hsbdiv; - u_avr32_pm_cksel.CKSEL.hsbsel = hsbsel; - u_avr32_pm_cksel.CKSEL.hsbdiv = hsbdiv; - u_avr32_pm_cksel.CKSEL.pbasel = pbasel; - u_avr32_pm_cksel.CKSEL.pbadiv = pbadiv; - u_avr32_pm_cksel.CKSEL.pbbsel = pbbsel; - u_avr32_pm_cksel.CKSEL.pbbdiv = pbbdiv; - - pm->cksel = u_avr32_pm_cksel.cksel; - - // Wait for ckrdy bit and then clear it - while (!(pm->poscsr & AVR32_PM_POSCSR_CKRDY_MASK)); -} - - -void pm_gc_setup(volatile avr32_pm_t *pm, - unsigned int gc, - unsigned int osc_or_pll, // Use Osc (=0) or PLL (=1) - unsigned int pll_osc, // Sel Osc0/PLL0 or Osc1/PLL1 - unsigned int diven, - unsigned int div) -{ - u_avr32_pm_gcctrl_t u_avr32_pm_gcctrl = {0}; - - u_avr32_pm_gcctrl.GCCTRL.oscsel = pll_osc; - u_avr32_pm_gcctrl.GCCTRL.pllsel = osc_or_pll; - u_avr32_pm_gcctrl.GCCTRL.diven = diven; - u_avr32_pm_gcctrl.GCCTRL.div = div; - - pm->gcctrl[gc] = u_avr32_pm_gcctrl.gcctrl; -} - - -void pm_gc_enable(volatile avr32_pm_t *pm, - unsigned int gc) -{ - pm->gcctrl[gc] |= AVR32_PM_GCCTRL_CEN_MASK; -} - - -void pm_gc_disable(volatile avr32_pm_t *pm, - unsigned int gc) -{ - pm->gcctrl[gc] &= ~AVR32_PM_GCCTRL_CEN_MASK; -} - - -void pm_pll_setup(volatile avr32_pm_t *pm, - unsigned int pll, - unsigned int mul, - unsigned int div, - unsigned int osc, - unsigned int lockcount) -{ - u_avr32_pm_pll_t u_avr32_pm_pll = {0}; - - u_avr32_pm_pll.PLL.pllosc = osc; - u_avr32_pm_pll.PLL.plldiv = div; - u_avr32_pm_pll.PLL.pllmul = mul; - u_avr32_pm_pll.PLL.pllcount = lockcount; - - pm->pll[pll] = u_avr32_pm_pll.pll; -} - - -void pm_pll_set_option(volatile avr32_pm_t *pm, - unsigned int pll, - unsigned int pll_freq, - unsigned int pll_div2, - unsigned int pll_wbwdisable) -{ - u_avr32_pm_pll_t u_avr32_pm_pll = {pm->pll[pll]}; - u_avr32_pm_pll.PLL.pllopt = pll_freq | (pll_div2 << 1) | (pll_wbwdisable << 2); - pm->pll[pll] = u_avr32_pm_pll.pll; -} - - -unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, - unsigned int pll) -{ - return (pm->pll[pll] & AVR32_PM_PLLOPT_MASK) >> AVR32_PM_PLLOPT_OFFSET; -} - - -void pm_pll_enable(volatile avr32_pm_t *pm, - unsigned int pll) -{ - pm->pll[pll] |= AVR32_PM_PLLEN_MASK; -} - - -void pm_pll_disable(volatile avr32_pm_t *pm, - unsigned int pll) -{ - pm->pll[pll] &= ~AVR32_PM_PLLEN_MASK; -} - - -void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK0_MASK)); -} - - -void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK1_MASK)); -} - - -void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock) -{ - // Read - u_avr32_pm_mcctrl_t u_avr32_pm_mcctrl = {pm->mcctrl}; - // Modify - u_avr32_pm_mcctrl.MCCTRL.mcsel = clock; - // Write back - pm->mcctrl = u_avr32_pm_mcctrl.mcctrl; -} - - -void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup) -{ - pm_enable_osc0_crystal(pm, fosc0); // Enable the Osc0 in crystal mode - pm_enable_clk0(pm, startup); // Crystal startup time - This parameter is critical and depends on the characteristics of the crystal - pm_switch_to_clock(pm, AVR32_PM_MCSEL_OSC0); // Then switch main clock to Osc0 -} - - -void pm_bod_enable_irq(volatile avr32_pm_t *pm) -{ - pm->ier = AVR32_PM_IER_BODDET_MASK; -} - - -void pm_bod_disable_irq(volatile avr32_pm_t *pm) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pm->idr = AVR32_PM_IDR_BODDET_MASK; - pm->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pm_bod_clear_irq(volatile avr32_pm_t *pm) -{ - pm->icr = AVR32_PM_ICR_BODDET_MASK; -} - - -unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm) -{ - return ((pm->isr & AVR32_PM_ISR_BODDET_MASK) != 0); -} - - -unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm) -{ - return ((pm->imr & AVR32_PM_IMR_BODDET_MASK) != 0); -} - - -unsigned long pm_bod_get_level(volatile avr32_pm_t *pm) -{ - return (pm->bod & AVR32_PM_BOD_LEVEL_MASK) >> AVR32_PM_BOD_LEVEL_OFFSET; -} - - -unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp) -{ - return pm->gplp[gplp]; -} - - -void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value) -{ - pm->gplp[gplp] = value; -} - - -long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module) -{ - unsigned long domain = module>>5; - unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain); - - // Implementation-specific shortcut: the ckMASK registers are contiguous and - // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK. - - *regptr |= (1<<(module%32)); - - return PASS; -} - -long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module) -{ - unsigned long domain = module>>5; - unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain); - - // Implementation-specific shortcut: the ckMASK registers are contiguous and - // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK. - - *regptr &= ~(1<<(module%32)); - - return PASS; -} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h deleted file mode 100644 index ca679f7..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h +++ /dev/null @@ -1,493 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager driver. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _PM_H_ -#define _PM_H_ - -#include -#include "compiler.h" -#include "preprocessor.h" - - -/*! \brief Sets the MCU in the specified sleep mode. - * - * \param mode Sleep mode: - * \arg \c AVR32_PM_SMODE_IDLE: Idle; - * \arg \c AVR32_PM_SMODE_FROZEN: Frozen; - * \arg \c AVR32_PM_SMODE_STANDBY: Standby; - * \arg \c AVR32_PM_SMODE_STOP: Stop; - * \arg \c AVR32_PM_SMODE_DEEP_STOP: DeepStop; - * \arg \c AVR32_PM_SMODE_STATIC: Static. - */ -#define SLEEP(mode) {__asm__ __volatile__ ("sleep "STRINGZ(mode));} - - -//! Input and output parameters when initializing PM clocks using pm_configure_clocks(). -typedef struct -{ - //! CPU frequency (input/output argument). - unsigned long cpu_f; - - //! PBA frequency (input/output argument). - unsigned long pba_f; - - //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument). - unsigned long osc0_f; - - //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument). - unsigned long osc0_startup; -} pm_freq_param_t; - -#define PM_FREQ_STATUS_FAIL (-1) -#define PM_FREQ_STATUS_OK (0) - - -/*! \brief Gets the MCU reset cause. - * - * \param pm Base address of the Power Manager instance (i.e. &AVR32_PM). - * - * \return The MCU reset cause which can be masked with the - * \c AVR32_PM_RCAUSE_x_MASK bit-masks to isolate specific causes. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned int pm_get_reset_cause(volatile avr32_pm_t *pm) -{ - return pm->rcause; -} - - -/*! - * \brief This function will enable the external clock mode of the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc0 Oscillator 0 crystal frequency (Hz) - */ -extern void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0); - - -/*! - * \brief This function will enable the oscillator 0 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk0(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 0 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 0 startup time, for which the function does not wait. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the Osc0 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the external clock mode of the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc1 Oscillator 1 crystal frequency (Hz) - */ -extern void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1); - - -/*! - * \brief This function will enable the oscillator 1 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 1 startup time. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk1(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 1 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 1 startup time, for which the function does not wait. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the Osc1 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the external clock mode of the 32-kHz oscillator. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the 32-kHz oscillator. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc32_crystal(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 32 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 32 kHz startup time. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 32. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk32(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 32 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 32 kHz startup time, for which the function does not wait. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the osc32 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will select all the power manager clocks. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pbadiv Peripheral Bus A clock divisor enable - * \param pbasel Peripheral Bus A select - * \param pbbdiv Peripheral Bus B clock divisor enable - * \param pbbsel Peripheral Bus B select - * \param hsbdiv High Speed Bus clock divisor enable (CPU clock = HSB clock) - * \param hsbsel High Speed Bus select (CPU clock = HSB clock ) - */ -extern void pm_cksel(volatile avr32_pm_t *pm, unsigned int pbadiv, unsigned int pbasel, unsigned int pbbdiv, unsigned int pbbsel, unsigned int hsbdiv, unsigned int hsbsel); - - -/*! - * \brief This function will setup a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - * \param osc_or_pll Use OSC (=0) or PLL (=1) - * \param pll_osc Select Osc0/PLL0 or Osc1/PLL1 - * \param diven Generic clock divisor enable - * \param div Generic clock divisor - */ -extern void pm_gc_setup(volatile avr32_pm_t *pm, unsigned int gc, unsigned int osc_or_pll, unsigned int pll_osc, unsigned int diven, unsigned int div); - - -/*! - * \brief This function will enable a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - */ -extern void pm_gc_enable(volatile avr32_pm_t *pm, unsigned int gc); - - -/*! - * \brief This function will disable a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - */ -extern void pm_gc_disable(volatile avr32_pm_t *pm, unsigned int gc); - - -/*! - * \brief This function will setup a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \param mul PLL MUL in the PLL formula - * \param div PLL DIV in the PLL formula - * \param osc OSC number (0 for osc0, 1 for osc1) - * \param lockcount PLL lockount - */ -extern void pm_pll_setup(volatile avr32_pm_t *pm, unsigned int pll, unsigned int mul, unsigned int div, unsigned int osc, unsigned int lockcount); - - -/*! - * \brief This function will set a PLL option. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \param pll_freq Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - * \param pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - * \param pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - */ -extern void pm_pll_set_option(volatile avr32_pm_t *pm, unsigned int pll, unsigned int pll_freq, unsigned int pll_div2, unsigned int pll_wbwdisable); - - -/*! - * \brief This function will get a PLL option. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \return Option - */ -extern unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will enable a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - */ -extern void pm_pll_enable(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will disable a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - */ -extern void pm_pll_disable(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will wait for PLL0 locked - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will wait for PLL1 locked - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will switch the power manager main clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param clock Clock to be switched on. AVR32_PM_MCSEL_SLOW for RCOsc, AVR32_PM_MCSEL_OSC0 for Osc0, AVR32_PM_MCSEL_PLL0 for PLL0. - */ -extern void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock); - - -/*! - * \brief Switch main clock to clock Osc0 (crystal mode) - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc0 Oscillator 0 crystal frequency (Hz) - * \param startup Crystal 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup); - - -/*! \brief Enables the Brown-Out Detector interrupt. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_enable_irq(volatile avr32_pm_t *pm); - - -/*! \brief Disables the Brown-Out Detector interrupt. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_disable_irq(volatile avr32_pm_t *pm); - - -/*! \brief Clears the Brown-Out Detector interrupt flag. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_clear_irq(volatile avr32_pm_t *pm); - - -/*! \brief Gets the Brown-Out Detector interrupt flag. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \retval 0 No BOD interrupt. - * \retval 1 BOD interrupt pending. - */ -extern unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm); - - -/*! \brief Gets the Brown-Out Detector interrupt enable status. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \retval 0 BOD interrupt disabled. - * \retval 1 BOD interrupt enabled. - */ -extern unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm); - - -/*! \brief Gets the triggering threshold of the Brown-Out Detector. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \return Triggering threshold of the BOD. See the electrical characteristics - * in the part datasheet for actual voltage levels. - */ -extern unsigned long pm_bod_get_level(volatile avr32_pm_t *pm); - - -/*! - * \brief Read the content of the PM GPLP registers - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * - * \return The content of the chosen GPLP register. - */ -extern unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp); - - -/*! - * \brief Write into the PM GPLP registers - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * \param value Value to write - */ -extern void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value); - - -/*! \brief Enable the clock of a module. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param module The module to clock (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks") - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module); - -/*! \brief Disable the clock of a module. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param module The module to shut down (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks") - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module); - - - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks - * according to the user wishes. - * - * This function needs some parameters stored in a pm_freq_param_t structure: - * - cpu_f and pba_f are the wanted frequencies, - * - osc0_f is the oscillator 0 on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0 startup time (e.g. OSC0_STARTUP). - * - * The function will then configure the clocks using the following rules: - * - It first try to find a valid PLL frequency (the highest possible value to avoid jitter) in order - * to satisfy the CPU frequency, - * - It optimizes the configuration depending the various divide stages, - * - Then, the PBA frequency is configured from the CPU freq. - * - Note that HSB and PBB are configured with the same frequency as CPU. - * - Note also that the number of wait states of the flash read accesses is automatically set-up depending - * the CPU frequency. As a consequence, the application needs the FLASHC driver to compile. - * - * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f. - * - * \param param pointer on the configuration structure. - * - * \retval PM_FREQ_STATUS_OK Mode successfully initialized. - * \retval PM_FREQ_STATUS_FAIL The configuration can not be done. - */ -extern int pm_configure_clocks(pm_freq_param_t *param); - - -/*! \brief Automatically configure the USB clock. - * - * USB clock is configured to 48MHz, using the PLL1 from the Oscillator0, assuming - * a 12 MHz crystal is connected to it. - */ -extern void pm_configure_usb_clock(void); - - -#endif // _PM_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c deleted file mode 100644 index 8beb83b..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c +++ /dev/null @@ -1,268 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager clocks configuration helper. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include -#include "compiler.h" -#include "pm.h" - -extern void flashc_set_wait_state(unsigned int wait_state); -#if (defined AVR32_FLASHC_210_H_INCLUDED) -extern void flashc_issue_command(unsigned int command, int page_number); -#endif - - -#define PM_MAX_MUL ((1 << AVR32_PM_PLL0_PLLMUL_SIZE) - 1) - - -int pm_configure_clocks(pm_freq_param_t *param) -{ - // Supported frequencies: - // Fosc0 mul div PLL div2_en cpu_f pba_f Comment - // 12 15 1 192 1 12 12 - // 12 9 3 40 1 20 20 PLL out of spec - // 12 15 1 192 1 24 12 - // 12 9 1 120 1 30 15 - // 12 9 3 40 0 40 20 PLL out of spec - // 12 15 1 192 1 48 12 - // 12 15 1 192 1 48 24 - // 12 8 1 108 1 54 27 - // 12 9 1 120 1 60 15 - // 12 9 1 120 1 60 30 - // 12 10 1 132 1 66 16.5 - // - unsigned long in_cpu_f = param->cpu_f; - unsigned long in_osc0_f = param->osc0_f; - unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0; - unsigned long pll_freq, rest; - Bool b_div2_pba, b_div2_cpu; - - // Switch to external Oscillator 0 - pm_switch_to_osc0(&AVR32_PM, in_osc0_f, param->osc0_startup); - - // Start with CPU freq config - if (in_cpu_f == in_osc0_f) - { - param->cpu_f = in_osc0_f; - param->pba_f = in_osc0_f; - return PM_FREQ_STATUS_OK; - } - else if (in_cpu_f < in_osc0_f) - { - // TBD - } - - rest = in_cpu_f % in_osc0_f; - - for (div = 1; div < 32; div++) - { - if ((div * rest) % in_osc0_f == 0) - break; - } - if (div == 32) - return PM_FREQ_STATUS_FAIL; - - mul = (in_cpu_f * div) / in_osc0_f; - - if (mul > PM_MAX_MUL) - return PM_FREQ_STATUS_FAIL; - - // export 2power from PLL div to div2_cpu - while (!(div % 2)) - { - div /= 2; - div2_cpu++; - } - - // Here we know the mul and div parameter of the PLL config. - // . Check out if the PLL has a valid in_cpu_f. - // . Try to have for the PLL frequency (VCO output) the highest possible value - // to reduce jitter. - while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ) - { - if (2 * mul > PM_MAX_MUL) - break; - mul *= 2; - div2_cpu++; - } - - if (div2_cpu != 0) - { - div2_cpu--; - div2_en = 1; - } - - pll_freq = in_osc0_f * mul / (div * (1 << div2_en)); - - // Update real CPU Frequency - param->cpu_f = pll_freq / (1 << div2_cpu); - mul--; - - pm_pll_setup(&AVR32_PM - , 0 // pll - , mul // mul - , div // div - , 0 // osc - , 16 // lockcount - ); - - pm_pll_set_option(&AVR32_PM - , 0 // pll - // PLL clock is lower than 160MHz: need to set pllopt. - , (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0 // pll_freq - , div2_en // pll_div2 - , 0 // pll_wbwdisable - ); - - rest = pll_freq; - while (rest > AVR32_PM_PBA_MAX_FREQ || - rest != param->pba_f) - { - div2_pba++; - rest = pll_freq / (1 << div2_pba); - if (rest < param->pba_f) - break; - } - - // Update real PBA Frequency - param->pba_f = pll_freq / (1 << div2_pba); - - // Enable PLL0 - pm_pll_enable(&AVR32_PM, 0); - - // Wait for PLL0 locked - pm_wait_for_pll0_locked(&AVR32_PM); - - if (div2_cpu) - { - b_div2_cpu = TRUE; - div2_cpu--; - } - else - b_div2_cpu = FALSE; - - if (div2_pba) - { - b_div2_pba = TRUE; - div2_pba--; - } - else - b_div2_pba = FALSE; - - pm_cksel(&AVR32_PM - , b_div2_pba, div2_pba // PBA - , b_div2_cpu, div2_cpu // PBB - , b_div2_cpu, div2_cpu // HSB - ); - - if (param->cpu_f > AVR32_FLASHC_FWS_0_MAX_FREQ) - { - flashc_set_wait_state(1); -#if (defined AVR32_FLASHC_210_H_INCLUDED) - if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - else - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); -#endif - } - else - { - flashc_set_wait_state(0); -#if (defined AVR32_FLASHC_210_H_INCLUDED) - if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - else - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); -#endif - } - - pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0); - - return PM_FREQ_STATUS_OK; -} - - -void pm_configure_usb_clock(void) -{ -#if UC3A3 - - // Setup USB GCLK. - pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc - 0, // osc_or_pll: use Osc (if 0) or PLL (if 1) - 0, // pll_osc: select Osc0/PLL0 or Osc1/PLL1 - 0, // diven - 0); // div - - // Enable USB GCLK. - pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB); -#else - // Use 12MHz from OSC0 and generate 96 MHz - pm_pll_setup(&AVR32_PM, 1, // pll. - 7, // mul. - 1, // div. - 0, // osc. - 16); // lockcount. - - pm_pll_set_option(&AVR32_PM, 1, // pll. - 1, // pll_freq: choose the range 80-180MHz. - 1, // pll_div2. - 0); // pll_wbwdisable. - - // start PLL1 and wait forl lock - pm_pll_enable(&AVR32_PM, 1); - - // Wait for PLL1 locked. - pm_wait_for_pll1_locked(&AVR32_PM); - - pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc. - 1, // osc_or_pll: use Osc (if 0) or PLL (if 1). - 1, // pll_osc: select Osc0/PLL0 or Osc1/PLL1. - 0, // diven. - 0); // div. - pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB); -#endif -} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c deleted file mode 100644 index f5fc155..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c +++ /dev/null @@ -1,566 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief High-level library abstracting features such as oscillators/pll/dfll - * configuration, clock configuration, System-sensible parameters - * configuration, buses clocks configuration, sleep mode, reset. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ -#include "power_clocks_lib.h" - - -//! Device-specific data -#if UC3L -static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param); // FORWARD declaration -#endif - -#if UC3C -static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param); // FORWARD declaration -#endif - -long int pcl_configure_clocks(pcl_freq_param_t *param) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE - // Implementation for UC3A, UC3A3, UC3B parts. - return(pm_configure_clocks(param)); -#else - #ifdef AVR32_PM_410_H_INCLUDED - // Implementation for UC3C parts. - return(pcl_configure_clocks_uc3c(param)); - #else - // Implementation for UC3L parts. - return(pcl_configure_clocks_uc3l(param)); - #endif -#endif -} - - -//! Device-specific implementation -#if UC3L -// FORWARD declaration -static long int pcl_configure_synchronous_clocks( pm_clk_src_t main_clk_src, - unsigned long main_clock_freq_hz, - pcl_freq_param_t *param); - -long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RCSYS - - // Supported synchronous clocks frequencies if RCSYS is the main clock source: - // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > SCIF_SLOWCLOCK_FREQ_HZ) || (param->pba_f > SCIF_SLOWCLOCK_FREQ_HZ) - || (param->pbb_f > SCIF_SLOWCLOCK_FREQ_HZ)) - return(-1); -#endif - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_SLOW, SCIF_SLOWCLOCK_FREQ_HZ, param)); -} - - -long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RC120M - - // Supported synchronous clocks frequencies if RC120M is the main clock source: - // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > SCIF_RC120M_FREQ_HZ) || (param->pba_f > SCIF_RC120M_FREQ_HZ) - || (param->pbb_f > SCIF_RC120M_FREQ_HZ)) - return(-1); -#endif - - // Start the 120MHz internal RCosc (RC120M) clock - scif_start_rc120M(); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_RC120M, SCIF_RC120M_FREQ_HZ, param)); -} - - -long int pcl_configure_clocks_osc0(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_OSC0 - - // Supported synchronous clocks frequencies if OSC0 is the main clock source: - // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - unsigned long main_clock_freq; - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - main_clock_freq = param->osc0_f; -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq) - || (param->pbb_f > main_clock_freq)) - return(-1); -#endif - // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, main_clock_freq); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, param->osc0_startup, true); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_OSC0, main_clock_freq, param)); -} - - -long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_DFLL - - // Supported synchronous clocks frequencies if DFLL is the main clock source: - // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - unsigned long main_clock_freq; - scif_gclk_opt_t *pgc_dfllif_ref_opt; - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - main_clock_freq = param->dfll_f; -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target DFLL output frequency is in the correct range. - if((main_clock_freq > SCIF_DFLL_MAXFREQ_HZ) || (main_clock_freq < SCIF_DFLL_MINFREQ_HZ)) - return(-1); - // Verify that the target frequencies are reachable. - if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq) - || (param->pbb_f > main_clock_freq)) - return(-1); -#endif - pgc_dfllif_ref_opt = (scif_gclk_opt_t *)param->pextra_params; - // Implementation note: this implementation configures the DFLL in closed-loop - // mode (because it gives the best accuracy) which enables the generic clock CLK_DFLLIF_REF - // as a reference (RCSYS being used as the generic clock source, undivided). - scif_dfll0_closedloop_configure_and_start(pgc_dfllif_ref_opt, main_clock_freq, TRUE); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_DFLL0, main_clock_freq, param)); -} - - -static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RCSYS, PCL_MC_OSC0, PCL_MC_DFLL0, PCL_MC_RC120M - - // Supported synchronous clocks frequencies if RCSYS is the main clock source: - // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - - // Supported synchronous clocks frequencies if RC120M is the main clock source: - // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - - // Supported synchronous clocks frequencies if OSC0 is the main clock source: - // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - - // Supported synchronous clocks frequencies if DFLL is the main clock source: - // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - if(PCL_MC_RCSYS == param->main_clk_src) - { - return(pcl_configure_clocks_rcsys(param)); - } - else if(PCL_MC_RC120M == param->main_clk_src) - { - return(pcl_configure_clocks_rc120m(param)); - } - else if(PCL_MC_OSC0 == param->main_clk_src) - { - return(pcl_configure_clocks_osc0(param)); - } - else // PCL_MC_DFLL0 == param->main_clk_src - { - return(pcl_configure_clocks_dfll0(param)); - } -} - -static long int pcl_configure_synchronous_clocks(pm_clk_src_t main_clk_src, unsigned long main_clock_freq_hz, pcl_freq_param_t *param) -{ - //# - //# Set the Synchronous clock division ratio for each clock domain - //# - pm_set_all_cksel(main_clock_freq_hz, param->cpu_f, param->pba_f, param->pbb_f); - - //# - //# Set the Flash wait state and the speed read mode (depending on the target CPU frequency). - //# -#if UC3L - flashcdw_set_flash_waitstate_and_readmode(param->cpu_f); -#elif UC3C - flashc_set_flash_waitstate_and_readmode(param->cpu_f); -#endif - - - //# - //# Switch the main clock source to the selected clock. - //# - pm_set_mclk_source(main_clk_src); - - return PASS; -} - -#endif // UC3L device-specific implementation - -//! UC3C Device-specific implementation -#if UC3C -static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param) -{ - #define PM_MAX_MUL ((1 << AVR32_SCIF_PLLMUL_SIZE) - 1) - #define AVR32_PM_PBA_MAX_FREQ 66000000 - #define AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ 240000000 - #define AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ 160000000 - - // Implementation for UC3C parts. - // Supported frequencies: - // Fosc0 mul div PLL div2_en cpu_f pba_f Comment - // 12 15 1 192 1 12 12 - // 12 9 3 40 1 20 20 PLL out of spec - // 12 15 1 192 1 24 12 - // 12 9 1 120 1 30 15 - // 12 9 3 40 0 40 20 PLL out of spec - // 12 15 1 192 1 48 12 - // 12 15 1 192 1 48 24 - // 12 8 1 108 1 54 27 - // 12 9 1 120 1 60 15 - // 12 9 1 120 1 60 30 - // 12 10 1 132 1 66 16.5 - // - unsigned long in_cpu_f = param->cpu_f; - unsigned long in_osc0_f = param->osc0_f; - unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0; - unsigned long pll_freq, rest; - Bool b_div2_pba, b_div2_cpu; - - // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, in_osc0_f); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, param->osc0_startup, true); - // Set the main clock source as being OSC0. - pm_set_mclk_source(PM_CLK_SRC_OSC0); - - // Start with CPU freq config - if (in_cpu_f == in_osc0_f) - { - param->cpu_f = in_osc0_f; - param->pba_f = in_osc0_f; - return PASS; - } - else if (in_cpu_f < in_osc0_f) - { - // TBD - } - - rest = in_cpu_f % in_osc0_f; - - for (div = 1; div < 32; div++) - { - if ((div * rest) % in_osc0_f == 0) - break; - } - if (div == 32) - return FAIL; - - mul = (in_cpu_f * div) / in_osc0_f; - - if (mul > PM_MAX_MUL) - return FAIL; - - // export 2power from PLL div to div2_cpu - while (!(div % 2)) - { - div /= 2; - div2_cpu++; - } - - // Here we know the mul and div parameter of the PLL config. - // . Check out if the PLL has a valid in_cpu_f. - // . Try to have for the PLL frequency (VCO output) the highest possible value - // to reduce jitter. - while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ) - { - if (2 * mul > PM_MAX_MUL) - break; - mul *= 2; - div2_cpu++; - } - - if (div2_cpu != 0) - { - div2_cpu--; - div2_en = 1; - } - - pll_freq = in_osc0_f * mul / (div * (1 << div2_en)); - - // Update real CPU Frequency - param->cpu_f = pll_freq / (1 << div2_cpu); - mul--; - - scif_pll_opt_t opt; - - opt.osc = SCIF_OSC0, // Sel Osc0 or Osc1 - opt.lockcount = 16, // lockcount in main clock for the PLL wait lock - opt.div = div, // DIV=1 in the formula - opt.mul = mul, // MUL=7 in the formula - opt.pll_div2 = div2_en, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - opt.pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - opt.pll_freq = (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - - - scif_pll_setup(SCIF_PLL0, opt); // lockcount in main clock for the PLL wait lock - - /* Enable PLL0 */ - scif_pll_enable(SCIF_PLL0); - - /* Wait for PLL0 locked */ - scif_wait_for_pll_locked(SCIF_PLL0) ; - - rest = pll_freq; - while (rest > AVR32_PM_PBA_MAX_FREQ || - rest != param->pba_f) - { - div2_pba++; - rest = pll_freq / (1 << div2_pba); - if (rest < param->pba_f) - break; - } - - // Update real PBA Frequency - param->pba_f = pll_freq / (1 << div2_pba); - - - if (div2_cpu) - { - b_div2_cpu = TRUE; - div2_cpu--; - } - else - b_div2_cpu = FALSE; - - if (div2_pba) - { - b_div2_pba = TRUE; - div2_pba--; - } - else - b_div2_pba = FALSE; - - if (b_div2_cpu == TRUE ) - { - pm_set_clk_domain_div(PM_CLK_DOMAIN_0, (pm_divratio_t) div2_cpu); // CPU - pm_set_clk_domain_div(PM_CLK_DOMAIN_1, (pm_divratio_t) div2_cpu); // HSB - pm_set_clk_domain_div(PM_CLK_DOMAIN_3, (pm_divratio_t) div2_cpu); // PBB - } - if (b_div2_pba == TRUE ) - { - pm_set_clk_domain_div(PM_CLK_DOMAIN_2, (pm_divratio_t) div2_pba); // PBA - pm_set_clk_domain_div(PM_CLK_DOMAIN_4, (pm_divratio_t) div2_pba); // PBC - } - - // Set Flashc Wait State - flashc_set_flash_waitstate_and_readmode(param->cpu_f); - - // Set the main clock source as being PLL0. - pm_set_mclk_source(PM_CLK_SRC_PLL0); - - return PASS; -} -#endif // UC3C device-specific implementation - -long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - if(PCL_OSC0 == osc) - { - // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency, - // enable the OSC0, set the main clock source as being OSC0. - pm_switch_to_osc0(&AVR32_PM, fcrystal, startup); - } - else - { - return PCL_NOT_SUPPORTED; - } -#else -// Implementation for UC3C, UC3L parts. - #if AVR32_PM_VERSION_RESETVALUE < 0x400 - return PCL_NOT_SUPPORTED; - #else - if(PCL_OSC0 == osc) - { - // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, fcrystal); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, startup, true); - // Set the Flash wait state and the speed read mode (depending on the target CPU frequency). -#if UC3L - flashcdw_set_flash_waitstate_and_readmode(fcrystal); -#elif UC3C - flashc_set_flash_waitstate_and_readmode(fcrystal); -#endif - // Set the main clock source as being OSC0. - pm_set_mclk_source(PM_CLK_SRC_OSC0); - } - else - { - return PCL_NOT_SUPPORTED; - } - #endif -#endif - return PASS; -} - -long int pcl_configure_usb_clock(void) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - pm_configure_usb_clock(); - return PASS; -#else - #ifdef AVR32_PM_410_H_INCLUDED - const scif_pll_opt_t opt = { - .osc = SCIF_OSC0, // Sel Osc0 or Osc1 - .lockcount = 16, // lockcount in main clock for the PLL wait lock - .div = 1, // DIV=1 in the formula - .mul = 5, // MUL=7 in the formula - .pll_div2 = 1, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - .pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - .pll_freq = 1, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - }; - - /* Setup PLL1 on Osc0, mul=7 ,no divisor, lockcount=16, ie. 16Mhzx6 = 96MHz output */ - scif_pll_setup(SCIF_PLL1, opt); // lockcount in main clock for the PLL wait lock - - /* Enable PLL1 */ - scif_pll_enable(SCIF_PLL1); - - /* Wait for PLL1 locked */ - scif_wait_for_pll_locked(SCIF_PLL1) ; - - // Implementation for UC3C parts. - // Setup the generic clock for USB - scif_gc_setup(AVR32_SCIF_GCLK_USB, - SCIF_GCCTRL_PLL1, - AVR32_SCIF_GC_NO_DIV_CLOCK, - 0); - // Now enable the generic clock - scif_gc_enable(AVR32_SCIF_GCLK_USB); - return PASS; - #else - return PCL_NOT_SUPPORTED; - #endif -#endif -} - - -#if UC3L -#else -void pcl_write_gplp(unsigned long gplp, unsigned long value) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - pm_write_gplp(&AVR32_PM,gplp,value); -#else - scif_write_gplp(gplp,value); -#endif -} - -unsigned long pcl_read_gplp(unsigned long gplp) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - return pm_read_gplp(&AVR32_PM,gplp); -#else - return scif_read_gplp(gplp); -#endif -} -#endif diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h deleted file mode 100644 index 28c5888..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h +++ /dev/null @@ -1,379 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief High-level library abstracting features such as oscillators/pll/dfll - * configuration, clock configuration, System-sensible parameters - * configuration, buses clocks configuration, sleep mode, reset. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _POWER_CLOCKS_LIB_H_ -#define _POWER_CLOCKS_LIB_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "compiler.h" - -#ifndef AVR32_PM_VERSION_RESETVALUE -// Support for UC3A, UC3A3, UC3B parts. - #include "pm.h" -#else -//! Device-specific data -#if UC3L - #include "pm_uc3l.h" - #include "scif_uc3l.h" - #include "flashcdw.h" -#elif UC3C - #include "pm_uc3c.h" - #include "scif_uc3c.h" - #include "flashc.h" -#endif -#endif - -/*! \name Clocks Management - */ -//! @{ - -//! The different oscillators -typedef enum -{ - PCL_OSC0 = 0, - PCL_OSC1 = 1 -} pcl_osc_t; - -//! The different DFLLs -typedef enum -{ - PCL_DFLL0 = 0, - PCL_DFLL1 = 1 -} pcl_dfll_t; - -//! Possible Main Clock Sources -typedef enum -{ - PCL_MC_RCSYS, // Default main clock source, supported by all (aka Slow Clock) - PCL_MC_OSC0, // Supported by all - PCL_MC_OSC1, // Supported by UC3C only - PCL_MC_OSC0_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC0 as reference) - PCL_MC_OSC1_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC1 as reference) - PCL_MC_OSC0_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC0 as reference) - PCL_MC_OSC1_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC1 as reference) - PCL_MC_DFLL0, // Supported by UC3L - PCL_MC_DFLL1, // Not supported yet - PCL_MC_RC120M, // Supported by UC3L, UC3C - PCL_MC_RC8M, // Supported by UC3C - PCL_MC_CRIPOSC // Supported by UC3C -} pcl_mainclk_t; - -//! Input and output parameters to configure clocks with pcl_configure_clocks(). -// NOTE: regarding the frequency settings, always abide by the datasheet rules and min & max supported frequencies. -#ifndef AVR32_PM_VERSION_RESETVALUE -// Support for UC3A, UC3A3, UC3B parts. -#define pcl_freq_param_t pm_freq_param_t // See pm.h -#else -// Support for UC3C, UC3L parts. -typedef struct -{ - //! Main clock source selection (input argument). - pcl_mainclk_t main_clk_src; - - //! Target CPU frequency (input/output argument). - unsigned long cpu_f; - - //! Target PBA frequency (input/output argument). - unsigned long pba_f; - - //! Target PBB frequency (input/output argument). - unsigned long pbb_f; - - //! Target PBC frequency (input/output argument). - unsigned long pbc_f; - - //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument). - unsigned long osc0_f; - - //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument). - unsigned long osc0_startup; - - //! DFLL target frequency (input/output argument) (NOTE: the bigger, the most stable the frequency) - unsigned long dfll_f; - - //! Other parameters that might be necessary depending on the device (implementation-dependent). - // For the UC3L DFLL setup, this parameter should be pointing to a structure of - // type (scif_gclk_opt_t *). - void *pextra_params; -} pcl_freq_param_t; -#endif - -//! Define "not supported" for the lib. -#define PCL_NOT_SUPPORTED (-10000) - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - main_clk_src is the id of the main clock source to use, - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP). - * - dfll_f is the target DFLL frequency to set-up if main_clk_src is the dfll. - * - * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RCSYS osc as main source clock. - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies - * - * Supported main clock sources: PCL_MC_RCSYS - * - * Supported synchronous clocks frequencies: - * 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_rcsys() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RC120M osc as main source clock. - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies - * - * Supported main clock sources: PCL_MC_RC120M - * - * Supported synchronous clocks frequencies: - * 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_rc120m() and modify it to - * use preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the OSC0 osc as main source clock - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP). - * - * Supported main clock sources: PCL_MC_OSC0 - * - * Supported synchronous clocks frequencies: - * (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - * 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_osc0() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_osc0(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the DFLL0 as main source clock - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - dfll_f is the target DFLL frequency to set-up - * - * \note: when the DFLL0 is to be used as main source clock for the synchronous clocks, - * the target frequency of the DFLL should be chosen to be as high as possible - * within the specification range (for stability reasons); the target cpu and pbx - * frequencies will then be reached by appropriate division ratio. - * - * Supported main clock sources: PCL_MC_DFLL0 - * - * Supported synchronous clocks frequencies: - * (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - * 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_dfll0() and modify it to - * use preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param); - -/*! \brief Switch the main clock source to Osc0 configured in crystal mode - * - * \param osc The oscillator to enable and switch to. - * \param fcrystal Oscillator external crystal frequency (Hz) - * \param startup Oscillator startup time. - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup); - -/*! \brief Enable the clock of a module. - * - * \param module The module to clock (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks" - * or look in the module section). - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. -#define pcl_enable_module(module) pm_enable_module(&AVR32_PM, module) -#else -// Implementation for UC3C, UC3L parts. -#define pcl_enable_module(module) pm_enable_module(module) -#endif - -/*! \brief Disable the clock of a module. - * - * \param module The module to shut down (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks" - * or look in the module section). - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. -#define pcl_disable_module(module) pm_disable_module(&AVR32_PM, module) -#else -// Implementation for UC3C, UC3L parts. -#define pcl_disable_module(module) pm_disable_module(module) -#endif - -/*! \brief Configure the USB Clock - * - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long int pcl_configure_usb_clock(void); - -//! @} - -/*! \name Power Management - */ -//! @{ -/*! - * \brief Read the content of the GPLP registers - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * - * \return The content of the chosen GPLP register. - */ -extern unsigned long pcl_read_gplp(unsigned long gplp); - - -/*! - * \brief Write into the GPLP registers - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * \param value Value to write - */ -extern void pcl_write_gplp(unsigned long gplp, unsigned long value); - -//! @} - -#ifdef __cplusplus -} -#endif - -#endif // _POWER_CLOCKS_LIB_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c deleted file mode 100644 index cadb8b1..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c +++ /dev/null @@ -1,443 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SPI driver for AVR32 UC3. - * - * This file defines a useful set of functions for the SPI interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "spi.h" - -#ifdef FREERTOS_USED - -#include "FreeRTOS.h" -#include "semphr.h" - -#endif - - -/*! \name SPI Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long cr; - avr32_spi_cr_t CR; -} u_avr32_spi_cr_t; - -typedef union -{ - unsigned long mr; - avr32_spi_mr_t MR; -} u_avr32_spi_mr_t; - -typedef union -{ - unsigned long tdr; - avr32_spi_tdr_t TDR; -} u_avr32_spi_tdr_t; - -typedef union -{ - unsigned long ier; - avr32_spi_ier_t IER; -} u_avr32_spi_ier_t; - -typedef union -{ - unsigned long idr; - avr32_spi_idr_t IDR; -} u_avr32_spi_idr_t; - -typedef union -{ - unsigned long csr; - avr32_spi_csr0_t CSR; -} u_avr32_spi_csr_t; - -//! @} - - -#ifdef FREERTOS_USED - -//! The SPI mutex. -static xSemaphoreHandle xSPIMutex; - -#endif - - -/*! \brief Calculates the baudrate divider. - * - * \param options Pointer to a structure containing initialization options for - * an SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \return Divider or error code. - * \retval >=0 Success. - * \retval <0 Error. - */ -static int getBaudDiv(const spi_options_t *options, unsigned int pba_hz) -{ - int baudDiv = (pba_hz + options->baudrate / 2) / options->baudrate; - - if (baudDiv <= 0 || baudDiv > 255) { - return -1; - } - - return baudDiv; -} - - -void spi_reset(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SWRST_MASK; -} - - -spi_status_t spi_initSlave(volatile avr32_spi_t *spi, - unsigned char bits, - unsigned char spi_mode) -{ - if (spi_mode > 3 || - bits < 8 || bits > 16) { - return SPI_ERROR_ARGUMENT; - } - - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - - // Will use CSR0 offsets; these are the same for CSR0 to CSR3. - spi->csr0 = ((spi_mode >> 1) << AVR32_SPI_CSR0_CPOL_OFFSET) | - (((spi_mode & 0x1) ^ 0x1) << AVR32_SPI_CSR0_NCPHA_OFFSET) | - ((bits - 8) << AVR32_SPI_CSR0_BITS_OFFSET); - - return SPI_OK; -} - - -spi_status_t spi_initTest(volatile avr32_spi_t *spi) -{ - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - spi->mr |= AVR32_SPI_MR_MSTR_MASK | // Master Mode. - AVR32_SPI_MR_LLB_MASK; // Local Loopback. - - return SPI_OK; -} - - -spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options) -{ - u_avr32_spi_mr_t u_avr32_spi_mr; - - if (options->modfdis > 1) { - return SPI_ERROR_ARGUMENT; - } - - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - - // Master Mode. - u_avr32_spi_mr.mr = spi->mr; - u_avr32_spi_mr.MR.mstr = 1; - u_avr32_spi_mr.MR.modfdis = options->modfdis; - u_avr32_spi_mr.MR.llb = 0; - u_avr32_spi_mr.MR.pcs = (1 << AVR32_SPI_MR_PCS_SIZE) - 1; - spi->mr = u_avr32_spi_mr.mr; - - return SPI_OK; -} - - -spi_status_t spi_selectionMode(volatile avr32_spi_t *spi, - unsigned char variable_ps, - unsigned char pcs_decode, - unsigned char delay) -{ - u_avr32_spi_mr_t u_avr32_spi_mr; - - if (variable_ps > 1 || - pcs_decode > 1) { - return SPI_ERROR_ARGUMENT; - } - - u_avr32_spi_mr.mr = spi->mr; - u_avr32_spi_mr.MR.ps = variable_ps; - u_avr32_spi_mr.MR.pcsdec = pcs_decode; - u_avr32_spi_mr.MR.dlybcs = delay; - spi->mr = u_avr32_spi_mr.mr; - - return SPI_OK; -} - - -spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip) -{ -#ifdef FREERTOS_USED - while (pdFALSE == xSemaphoreTake(xSPIMutex, 20)); -#endif - - // Assert all lines; no peripheral is selected. - spi->mr |= AVR32_SPI_MR_PCS_MASK; - - if (spi->mr & AVR32_SPI_MR_PCSDEC_MASK) { - // The signal is decoded; allow up to 15 chips. - if (chip > 14) { - return SPI_ERROR_ARGUMENT; - } - - spi->mr &= ~AVR32_SPI_MR_PCS_MASK | (chip << AVR32_SPI_MR_PCS_OFFSET); - } else { - if (chip > 3) { - return SPI_ERROR_ARGUMENT; - } - - spi->mr &= ~(1 << (AVR32_SPI_MR_PCS_OFFSET + chip)); - } - - return SPI_OK; -} - - -spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip) -{ - unsigned int timeout = SPI_TIMEOUT; - - while (!(spi->sr & AVR32_SPI_SR_TXEMPTY_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - // Assert all lines; no peripheral is selected. - spi->mr |= AVR32_SPI_MR_PCS_MASK; - - // Last transfer, so deassert the current NPCS if CSAAT is set. - spi->cr = AVR32_SPI_CR_LASTXFER_MASK; - -#ifdef FREERTOS_USED - xSemaphoreGive(xSPIMutex); -#endif - - return SPI_OK; -} - - -spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi, - const spi_options_t *options, - unsigned int pba_hz) -{ - u_avr32_spi_csr_t u_avr32_spi_csr; - - if (options->spi_mode > 3 || - options->stay_act > 1 || - options->bits < 8 || options->bits > 16) { - return SPI_ERROR_ARGUMENT; - } - - int baudDiv = getBaudDiv(options, pba_hz); - - if (baudDiv < 0) { - return SPI_ERROR_ARGUMENT; - } - - // Will use CSR0 offsets; these are the same for CSR0 to CSR3. - u_avr32_spi_csr.csr = 0; - u_avr32_spi_csr.CSR.cpol = options->spi_mode >> 1; - u_avr32_spi_csr.CSR.ncpha = (options->spi_mode & 0x1) ^ 0x1; - u_avr32_spi_csr.CSR.csaat = options->stay_act; - u_avr32_spi_csr.CSR.bits = options->bits - 8; - u_avr32_spi_csr.CSR.scbr = baudDiv; - u_avr32_spi_csr.CSR.dlybs = options->spck_delay; - u_avr32_spi_csr.CSR.dlybct = options->trans_delay; - - switch(options->reg) { - case 0: - spi->csr0 = u_avr32_spi_csr.csr; - break; - case 1: - spi->csr1 = u_avr32_spi_csr.csr; - break; - case 2: - spi->csr2 = u_avr32_spi_csr.csr; - break; - case 3: - spi->csr3 = u_avr32_spi_csr.csr; - break; - default: - return SPI_ERROR_ARGUMENT; - } - -#ifdef FREERTOS_USED - if (!xSPIMutex) - { - // Create the SPI mutex. - vSemaphoreCreateBinary(xSPIMutex); - if (!xSPIMutex) - { - while(1); - } - } -#endif - - return SPI_OK; -} - - -void spi_enable(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SPIEN_MASK; -} - - -void spi_disable(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SPIDIS_MASK; -} - - -int spi_is_enabled(volatile avr32_spi_t *spi) -{ - return (spi->sr & AVR32_SPI_SR_SPIENS_MASK) != 0; -} - - -unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_TDRE_MASK) != 0); -} - - -spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data) -{ - unsigned int timeout = SPI_TIMEOUT; - - while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - spi->tdr = data << AVR32_SPI_TDR_TD_OFFSET; - - return SPI_OK; -} - - -spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi, unsigned short data, - unsigned char pcs, unsigned char lastxfer) -{ - unsigned int timeout = SPI_TIMEOUT; - - if (pcs > 14 || lastxfer > 1) { - return SPI_ERROR_ARGUMENT; - } - - while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - spi->tdr = (data << AVR32_SPI_TDR_TD_OFFSET) | - (pcs << AVR32_SPI_TDR_PCS_OFFSET) | - (lastxfer << AVR32_SPI_TDR_LASTXFER_OFFSET); - - return SPI_OK; -} - - -unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_TXEMPTY_MASK) != 0); -} - - -unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_RDRF_MASK) != 0); -} - - -spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data) -{ - unsigned int timeout = SPI_TIMEOUT; - - while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) != - (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - *data = spi->rdr >> AVR32_SPI_RDR_RD_OFFSET; - - return SPI_OK; -} - - -unsigned char spi_getStatus(volatile avr32_spi_t *spi) -{ - spi_status_t ret = SPI_OK; - unsigned long sr = spi->sr; - - if (sr & AVR32_SPI_SR_OVRES_MASK) { - ret = SPI_ERROR_OVERRUN; - } - - if (sr & AVR32_SPI_SR_MODF_MASK) { - ret += SPI_ERROR_MODE_FAULT; - } - - if (ret == (SPI_ERROR_OVERRUN + SPI_ERROR_MODE_FAULT)) { - return SPI_ERROR_OVERRUN_AND_MODE_FAULT; - } - else if (ret > 0) { - return ret; - } else { - return SPI_OK; - } -} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h deleted file mode 100644 index 6dcc928..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h +++ /dev/null @@ -1,342 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SPI driver for AVR32 UC3. - * - * This file defines a useful set of functions for the SPI interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _SPI_H_ -#define _SPI_H_ - -#include - - -//! Time-out value (number of attempts). -#define SPI_TIMEOUT 10000 - - -//! Status codes used by the SPI driver. -typedef enum -{ - SPI_ERROR = -1, - SPI_OK = 0, - SPI_ERROR_TIMEOUT = 1, - SPI_ERROR_ARGUMENT, - SPI_ERROR_OVERRUN, - SPI_ERROR_MODE_FAULT, - SPI_ERROR_OVERRUN_AND_MODE_FAULT -} spi_status_t; - -//! Option structure for SPI channels. -typedef struct -{ - //! The SPI channel to set up. - unsigned char reg; - - //! Preferred baudrate for the SPI. - unsigned int baudrate; - - //! Number of bits in each character (8 to 16). - unsigned char bits; - - //! Delay before first clock pulse after selecting slave (in PBA clock periods). - unsigned char spck_delay; - - //! Delay between each transfer/character (in PBA clock periods). - unsigned char trans_delay; - - //! Sets this chip to stay active after last transfer to it. - unsigned char stay_act; - - //! Which SPI mode to use when transmitting. - unsigned char spi_mode; - - //! Disables the mode fault detection. - //! With this bit cleared, the SPI master mode will disable itself if another - //! master tries to address it. - unsigned char modfdis; -} spi_options_t; - - -/*! \brief Resets the SPI controller. - * - * \param spi Base address of the SPI instance. - */ -extern void spi_reset(volatile avr32_spi_t *spi); - -/*! \brief Initializes the SPI in slave mode. - * - * \param spi Base address of the SPI instance. - * \param bits Number of bits in each transmitted character (8 to 16). - * \param spi_mode Clock polarity and phase. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_initSlave(volatile avr32_spi_t *spi, - unsigned char bits, - unsigned char spi_mode); - -/*! \brief Sets up the SPI in a test mode where the transmitter is connected to - * the receiver (local loopback). - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval SPI_OK Success. - */ -extern spi_status_t spi_initTest(volatile avr32_spi_t *spi); - -/*! \brief Initializes the SPI in master mode. - * - * \param spi Base address of the SPI instance. - * \param options Pointer to a structure containing initialization options. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options); - -/*! \brief Sets up how and when the slave chips are selected (master mode only). - * - * \param spi Base address of the SPI instance. - * \param variable_ps Target slave is selected in transfer register for every - * character to transmit. - * \param pcs_decode The four chip select lines are decoded externally. Values - * 0 to 14 can be given to \ref spi_selectChip. - * \param delay Delay in PBA periods between chip selects. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_selectionMode(volatile avr32_spi_t *spi, - unsigned char variable_ps, - unsigned char pcs_decode, - unsigned char delay); - -/*! \brief Selects slave chip. - * - * \param spi Base address of the SPI instance. - * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0 - * to 14). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip); - -/*! \brief Unselects slave chip. - * - * \param spi Base address of the SPI instance. - * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0 - * to 14). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if last transmission - * is not complete. Invoke \ref spi_writeEndCheck beforehand if needed. - */ -extern spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip); - -/*! \brief Sets options for a specific slave chip. - * - * The baudrate field has to be written before transfer in master mode. Four - * similar registers exist, one for each slave. When using encoded slave - * addressing, reg=0 sets options for slaves 0 to 3, reg=1 for slaves 4 to 7 and - * so on. - * - * \param spi Base address of the SPI instance. - * \param options Pointer to a structure containing initialization options for - * an SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi, - const spi_options_t *options, - unsigned int pba_hz); - -/*! \brief Enables the SPI. - * - * \param spi Base address of the SPI instance. - */ -extern void spi_enable(volatile avr32_spi_t *spi); - -/*! \brief Disables the SPI. - * - * Ensures that nothing is transferred while setting up buffers. - * - * \param spi Base address of the SPI instance. - * - * \warning This may cause data loss if used on a slave SPI. - */ -extern void spi_disable(volatile avr32_spi_t *spi); - -/*! \brief Tests if the SPI is enabled. - * - * \param spi Base address of the SPI instance. - * - * \return \c 1 if the SPI is enabled, otherwise \c 0. - */ -extern int spi_is_enabled(volatile avr32_spi_t *spi); - -/*! \brief Checks if there is no data in the transmit register. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 No data in TDR. - * \retval 0 Some data in TDR. - */ -extern unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi); - -/*! \brief Writes one data word in master fixed peripheral select mode or in - * slave mode. - * - * \param spi Base address of the SPI instance. - * \param data The data word to write. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if transmitter is - * busy and transmit buffer is full. Invoke - * \ref spi_writeRegisterEmptyCheck beforehand if needed. - * - * \note Once the data has been written to the transmit buffer, the end of - * transmission is not waited for. Invoke \ref spi_writeEndCheck if - * needed. - */ -extern spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data); - -/*! \brief Selects a slave in master variable peripheral select mode and writes - * one data word to it. - * - * \param spi Base address of the SPI instance. - * \param data The data word to write. - * \param pcs Slave selector (bit 0 -> nCS line 0, bit 1 -> nCS line 1, - * etc.). - * \param lastxfer Boolean indicating whether this is the last data word - * transfer. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - * - * \note Will block program execution until time-out occurs if transmitter is - * busy and transmit buffer is full. Invoke - * \ref spi_writeRegisterEmptyCheck beforehand if needed. - * - * \note Once the data has been written to the transmit buffer, the end of - * transmission is not waited for. Invoke \ref spi_writeEndCheck if - * needed. - */ -extern spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi, - unsigned short data, - unsigned char pcs, - unsigned char lastxfer); - -/*! \brief Checks if all transmissions are complete. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 All transmissions complete. - * \retval 0 Transmissions not complete. - */ -extern unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi); - -/*! \brief Checks if there is data in the receive register. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 Some data in RDR. - * \retval 0 No data in RDR. - */ -extern unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi); - -/*! \brief Reads one data word in master mode or in slave mode. - * - * \param spi Base address of the SPI instance. - * \param data Pointer to the location where to store the received data word. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if no data is - * received or last transmission is not complete. Invoke - * \ref spi_writeEndCheck or \ref spi_readRegisterFullCheck beforehand if - * needed. - */ -extern spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data); - -/*! \brief Gets status information from the SPI. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_OVERRUN Overrun error. - * \retval SPI_ERROR_MODE_FAULT Mode fault (SPI addressed as slave - * while in master mode). - * \retval SPI_ERROR_OVERRUN_AND_MODE_FAULT Overrun error and mode fault. - */ -extern unsigned char spi_getStatus(volatile avr32_spi_t *spi); - - -#endif // _SPI_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c deleted file mode 100644 index b95882a..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c +++ /dev/null @@ -1,914 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief USART driver for AVR32 UC3. - * - * This file contains basic functions for the AVR32 USART, with support for all - * modes, settings and clock speeds. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "compiler.h" -#include "usart.h" - - -//------------------------------------------------------------------------------ -/*! \name Private Functions - */ -//! @{ - - -/*! \brief Checks if the USART is in multidrop mode. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART is in multidrop mode, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -static __inline__ int usart_mode_is_multidrop(volatile avr32_usart_t *usart) -{ - return ((usart->mr >> AVR32_USART_MR_PAR_OFFSET) & AVR32_USART_MR_PAR_MULTI) == AVR32_USART_MR_PAR_MULTI; -} - - -/*! \brief Calculates a clock divider (\e CD) and a fractional part (\e FP) for - * the USART asynchronous modes to generate a baud rate as close as - * possible to the baud rate set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{Over \times (CD + \frac{FP}{8})} \f$, \e Over being 16 or 8. - * The maximal oversampling is selected if it allows to generate a baud rate close to the set point. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_async_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int over = (pba_hz >= 16 * baudrate) ? 16 : 8; - unsigned int cd_fp = ((1 << AVR32_USART_BRGR_FP_SIZE) * pba_hz + (over * baudrate) / 2) / (over * baudrate); - unsigned int cd = cd_fp >> AVR32_USART_BRGR_FP_SIZE; - unsigned int fp = cd_fp & ((1 << AVR32_USART_BRGR_FP_SIZE) - 1); - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK | - AVR32_USART_MR_SYNC_MASK | - AVR32_USART_MR_OVER_MASK)) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - ((over == 16) ? AVR32_USART_MR_OVER_X16 : AVR32_USART_MR_OVER_X8) << AVR32_USART_MR_OVER_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET | - fp << AVR32_USART_BRGR_FP_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Calculates a clock divider (\e CD) for the USART synchronous master - * modes to generate a baud rate as close as possible to the baud rate - * set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_sync_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + baudrate / 2) / baudrate; - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_SYNC_MASK; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Selects the SCK pin as the source of baud rate for the USART - * synchronous slave modes. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Baud rate successfully initialized. - */ -static int usart_set_sync_slave_baudrate(volatile avr32_usart_t *usart) -{ - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_SYNC_MASK; - - return USART_SUCCESS; -} - - -/*! \brief Calculates a clock divider (\e CD) for the USART ISO7816 mode to - * generate an ISO7816 clock as close as possible to the clock set point. - * - * ISO7816 clock calculation: - * \f$ Clock = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param clock ISO7816 clock set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS ISO7816 clock successfully initialized. - * \retval USART_INVALID_INPUT ISO7816 clock set point is out of range for the given input clock frequency. - */ -static int usart_set_iso7816_clock(volatile avr32_usart_t *usart, unsigned int clock, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + clock / 2) / clock; - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK | - AVR32_USART_MR_SYNC_MASK | - AVR32_USART_MR_OVER_MASK)) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_OVER_X16 << AVR32_USART_MR_OVER_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -/*! \brief Calculates a clock divider (\e CD) for the USART SPI master mode to - * generate a baud rate as close as possible to the baud rate set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_spi_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + baudrate / 2) / baudrate; - - if (cd < 4 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Selects the SCK pin as the source of baud rate for the USART SPI - * slave mode. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Baud rate successfully initialized. - */ -static int usart_set_spi_slave_baudrate(volatile avr32_usart_t *usart) -{ - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET; - - return USART_SUCCESS; -} - - -#endif // USART rev. >= 4.0.0 - - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Initialization Functions - */ -//! @{ - - -void usart_reset(volatile avr32_usart_t *usart) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - // Disable all USART interrupts. - // Interrupts needed should be set explicitly on every reset. - if (global_interrupt_enabled) Disable_global_interrupt(); - usart->idr = 0xFFFFFFFF; - usart->csr; - if (global_interrupt_enabled) Enable_global_interrupt(); - - // Reset mode and other registers that could cause unpredictable behavior after reset. - usart->mr = 0; - usart->rtor = 0; - usart->ttgr = 0; - - // Shutdown TX and RX (will be re-enabled when setup has successfully completed), - // reset status bits and turn off DTR and RTS. - usart->cr = AVR32_USART_CR_RSTRX_MASK | - AVR32_USART_CR_RSTTX_MASK | - AVR32_USART_CR_RSTSTA_MASK | - AVR32_USART_CR_RSTIT_MASK | - AVR32_USART_CR_RSTNACK_MASK | -#ifndef AVR32_USART_440_H_INCLUDED -// Note: Modem Signal Management DTR-DSR-DCD-RI are not included in USART rev.440. - AVR32_USART_CR_DTRDIS_MASK | -#endif - AVR32_USART_CR_RTSDIS_MASK; -} - - -int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_async_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1, 1.5 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable only output as input is not possible in synchronous mode without - // transferring clock. - usart->cr = AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set hardware handshaking mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_HARDWARE << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set modem mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_MODEM << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_CLKO_MASK; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_slave_baudrate(usart) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set RS485 mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_RS485 << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt, - long pba_hz, unsigned char irda_filter) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set IrDA filter. - usart->ifr = irda_filter; - - // Set IrDA mode and activate filtering of input. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MODE_IRDA << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_FILTER_MASK; - - return USART_SUCCESS; -} - - -int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->paritytype > 1) - return USART_INVALID_INPUT; - - if (t == 0) - { - // Set USART mode to ISO7816, T=0. - // The T=0 protocol always uses 2 stop bits. - usart->mr = AVR32_USART_MR_MODE_ISO7816_T0 << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET | - opt->bit_order << AVR32_USART_MR_MSBF_OFFSET; // Allow MSBF in T=0. - } - else if (t == 1) - { - // Only LSB first in the T=1 protocol. - // max_iterations field is only used in T=0 mode. - if (opt->bit_order != 0 || - opt->max_iterations != 0) - return USART_INVALID_INPUT; - - // Set USART mode to ISO7816, T=1. - // The T=1 protocol always uses 1 stop bit. - usart->mr = AVR32_USART_MR_MODE_ISO7816_T1 << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_NBSTOP_1 << AVR32_USART_MR_NBSTOP_OFFSET; - } - else - return USART_INVALID_INPUT; - - if (usart_set_iso7816_clock(usart, opt->iso7816_hz, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set FIDI register: bit rate = selected clock/FI_DI_ratio/16. - usart->fidi = opt->fidi_ratio; - - // Set ISO7816 spesific options in the MODE register. - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - AVR32_USART_MR_CLKO_MASK | // Enable clock output. - opt->inhibit_nack << AVR32_USART_MR_INACK_OFFSET | - opt->dis_suc_nack << AVR32_USART_MR_DSNACK_OFFSET | - opt->max_iterations << AVR32_USART_MR_MAX_ITERATION_OFFSET; - - // Setup complete; enable the receiver by default. - usart_iso7816_enable_receiver(usart); - - return USART_SUCCESS; -} - - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - usart->mr |= AVR32_USART_MR_MODE_LIN_MASTER << AVR32_USART_MR_MODE_OFFSET; // LIN master mode. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - usart->mr |= AVR32_USART_MR_MODE_LIN_SLAVE << AVR32_USART_MR_MODE_OFFSET; // LIN slave mode. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->spimode > 3 || - opt->channelmode > 3 || - usart_set_spi_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= AVR32_USART_MR_MODE_SPI_MASTER << AVR32_USART_MR_MODE_OFFSET | // SPI master mode. - ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase. - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode. - (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET | // SPI clock polarity. - AVR32_USART_MR_CLKO_MASK; // Drive SCK pin. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->spimode > 3 || - opt->channelmode > 3 || - usart_set_spi_slave_baudrate(usart) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= AVR32_USART_MR_MODE_SPI_SLAVE << AVR32_USART_MR_MODE_OFFSET | // SPI slave mode. - ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase. - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode. - (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET; // SPI clock polarity. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -#endif // USART rev. >= 4.0.0 - - -//! @} - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -/*! \name SPI Control Functions - */ -//! @{ - - -int usart_spi_selectChip(volatile avr32_usart_t *usart) -{ - // Force the SPI chip select. - usart->cr = AVR32_USART_CR_RTSEN_MASK; - - return USART_SUCCESS; -} - - -int usart_spi_unselectChip(volatile avr32_usart_t *usart) -{ - int timeout = USART_DEFAULT_TIMEOUT; - - do - { - if (!timeout--) return USART_FAILURE; - } while (!usart_tx_empty(usart)); - - // Release the SPI chip select. - usart->cr = AVR32_USART_CR_RTSDIS_MASK; - - return USART_SUCCESS; -} - - -//! @} - - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Transmit/Receive Functions - */ -//! @{ - - -int usart_send_address(volatile avr32_usart_t *usart, int address) -{ - // Check if USART is in multidrop / RS485 mode. - if (!usart_mode_is_multidrop(usart)) return USART_MODE_FAULT; - - // Prepare to send an address. - usart->cr = AVR32_USART_CR_SENDA_MASK; - - // Write the address to TX. - usart_bw_write_char(usart, address); - - return USART_SUCCESS; -} - - -int usart_write_char(volatile avr32_usart_t *usart, int c) -{ - if (usart_tx_ready(usart)) - { - usart->thr = (c << AVR32_USART_THR_TXCHR_OFFSET) & AVR32_USART_THR_TXCHR_MASK; - return USART_SUCCESS; - } - else - return USART_TX_BUSY; -} - - -int usart_putchar(volatile avr32_usart_t *usart, int c) -{ - int timeout = USART_DEFAULT_TIMEOUT; - - if (c == '\n') - { - do - { - if (!timeout--) return USART_FAILURE; - } while (usart_write_char(usart, '\r') != USART_SUCCESS); - - timeout = USART_DEFAULT_TIMEOUT; - } - - do - { - if (!timeout--) return USART_FAILURE; - } while (usart_write_char(usart, c) != USART_SUCCESS); - - return USART_SUCCESS; -} - - -int usart_read_char(volatile avr32_usart_t *usart, int *c) -{ - // Check for errors: frame, parity and overrun. In RS485 mode, a parity error - // would mean that an address char has been received. - if (usart->csr & (AVR32_USART_CSR_OVRE_MASK | - AVR32_USART_CSR_FRAME_MASK | - AVR32_USART_CSR_PARE_MASK)) - return USART_RX_ERROR; - - // No error; if we really did receive a char, read it and return SUCCESS. - if (usart_test_hit(usart)) - { - *c = (usart->rhr & AVR32_USART_RHR_RXCHR_MASK) >> AVR32_USART_RHR_RXCHR_OFFSET; - return USART_SUCCESS; - } - else - return USART_RX_EMPTY; -} - - -int usart_getchar(volatile avr32_usart_t *usart) -{ - int c, ret; - - while ((ret = usart_read_char(usart, &c)) == USART_RX_EMPTY); - - if (ret == USART_RX_ERROR) - return USART_FAILURE; - - return c; -} - - -void usart_write_line(volatile avr32_usart_t *usart, const char *string) -{ - while (*string != '\0') - usart_putchar(usart, *string++); -} - - -int usart_get_echo_line(volatile avr32_usart_t *usart) -{ - int rx_char; - int retval = USART_SUCCESS; - - while (1) - { - rx_char = usart_getchar(usart); - if (rx_char == USART_FAILURE) - { - usart_write_line(usart, "Error!!!\n"); - retval = USART_FAILURE; - break; - } - if (rx_char == '\x03') - { - retval = USART_FAILURE; - break; - } - usart_putchar(usart, rx_char); - if (rx_char == '\r') - { - usart_putchar(usart, '\n'); - break; - } - } - - return retval; -} - - -//! @} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h deleted file mode 100644 index bc1c100..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h +++ /dev/null @@ -1,889 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief USART driver for AVR32 UC3. - * - * This file contains basic functions for the AVR32 USART, with support for all - * modes, settings and clock speeds. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _USART_H_ -#define _USART_H_ - -#include -#include "compiler.h" - - -/*! \name Return Values - */ -//! @{ -#define USART_SUCCESS 0 //!< Successful completion. -#define USART_FAILURE -1 //!< Failure because of some unspecified reason. -#define USART_INVALID_INPUT 1 //!< Input value out of range. -#define USART_INVALID_ARGUMENT -1 //!< Argument value out of range. -#define USART_TX_BUSY 2 //!< Transmitter was busy. -#define USART_RX_EMPTY 3 //!< Nothing was received. -#define USART_RX_ERROR 4 //!< Transmission error occurred. -#define USART_MODE_FAULT 5 //!< USART not in the appropriate mode. -//! @} - -//! Default time-out value (number of attempts). -#define USART_DEFAULT_TIMEOUT 10000 - -/*! \name Parity Settings - */ -//! @{ -#define USART_EVEN_PARITY AVR32_USART_MR_PAR_EVEN //!< Use even parity on character transmission. -#define USART_ODD_PARITY AVR32_USART_MR_PAR_ODD //!< Use odd parity on character transmission. -#define USART_SPACE_PARITY AVR32_USART_MR_PAR_SPACE //!< Use a space as parity bit. -#define USART_MARK_PARITY AVR32_USART_MR_PAR_MARK //!< Use a mark as parity bit. -#define USART_NO_PARITY AVR32_USART_MR_PAR_NONE //!< Don't use a parity bit. -#define USART_MULTIDROP_PARITY AVR32_USART_MR_PAR_MULTI //!< Parity bit is used to flag address characters. -//! @} - -/*! \name Stop Bits Settings - */ -//! @{ -#define USART_1_STOPBIT AVR32_USART_MR_NBSTOP_1 //!< Use 1 stop bit. -#define USART_1_5_STOPBITS AVR32_USART_MR_NBSTOP_1_5 //!< Use 1.5 stop bits. -#define USART_2_STOPBITS AVR32_USART_MR_NBSTOP_2 //!< Use 2 stop bits (for more, just give the number of bits). -//! @} - -/*! \name Channel Modes - */ -//! @{ -#define USART_NORMAL_CHMODE AVR32_USART_MR_CHMODE_NORMAL //!< Normal communication. -#define USART_AUTO_ECHO AVR32_USART_MR_CHMODE_ECHO //!< Echo data. -#define USART_LOCAL_LOOPBACK AVR32_USART_MR_CHMODE_LOCAL_LOOP //!< Local loopback. -#define USART_REMOTE_LOOPBACK AVR32_USART_MR_CHMODE_REMOTE_LOOP //!< Remote loopback. -//! @} - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name LIN Node Actions - */ -//! @{ -#define USART_LIN_PUBLISH_ACTION AVR32_USART_LINMR_NACT_PUBLISH //!< The USART transmits the response. -#define USART_LIN_SUBSCRIBE_ACTION AVR32_USART_LINMR_NACT_SUBSCRIBE //!< The USART receives the response. -#define USART_LIN_IGNORE_ACTION AVR32_USART_LINMR_NACT_IGNORE //!< The USART does not transmit and does not receive the reponse. -//! @} - -/*! \name LIN Checksum Types - */ -//! @{ -#define USART_LIN_ENHANCED_CHECKSUM 0 //!< LIN 2.0 "enhanced" checksum. -#define USART_LIN_CLASSIC_CHECKSUM 1 //!< LIN 1.3 "classic" checksum. -//! @} - -#endif // USART rev. >= 4.0.0 - - -//! Input parameters when initializing RS232 and similar modes. -typedef struct -{ - //! Set baud rate of the USART (unused in slave modes). - unsigned long baudrate; - - //! Number of bits to transmit as a character (5 to 9). - unsigned char charlength; - - //! How to calculate the parity bit: \ref USART_EVEN_PARITY, \ref USART_ODD_PARITY, - //! \ref USART_SPACE_PARITY, \ref USART_MARK_PARITY, \ref USART_NO_PARITY or - //! \ref USART_MULTIDROP_PARITY. - unsigned char paritytype; - - //! Number of stop bits between two characters: \ref USART_1_STOPBIT, - //! \ref USART_1_5_STOPBITS, \ref USART_2_STOPBITS or any number from 3 to 257 - //! which will result in a time guard period of that length between characters. - //! \note \ref USART_1_5_STOPBITS is supported in asynchronous modes only. - unsigned short stopbits; - - //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO, - //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK. - unsigned char channelmode; -} usart_options_t; - -//! Input parameters when initializing ISO7816 mode. -typedef struct -{ - //! Set the frequency of the ISO7816 clock. - unsigned long iso7816_hz; - - //! The number of ISO7816 clock ticks in every bit period (1 to 2047, 0 = disable clock). - //! Bit rate = \ref iso7816_hz / \ref fidi_ratio. - unsigned short fidi_ratio; - - //! How to calculate the parity bit: \ref USART_EVEN_PARITY for normal mode or - //! \ref USART_ODD_PARITY for inverse mode. - unsigned char paritytype; - - //! Inhibit Non Acknowledge:\n - //! - 0: the NACK is generated;\n - //! - 1: the NACK is not generated. - //! - //! \note This bit will be used only in ISO7816 mode, protocol T = 0 receiver. - int inhibit_nack; - - //! Disable successive NACKs. - //! Successive parity errors are counted up to the value in the \ref max_iterations field. - //! These parity errors generate a NACK on the ISO line. As soon as this value is reached, - //! no addititional NACK is sent on the ISO line. The ITERATION flag is asserted. - int dis_suc_nack; - - //! Max number of repetitions (0 to 7). - unsigned char max_iterations; - - //! Bit order in transmitted characters:\n - //! - 0: LSB first;\n - //! - 1: MSB first. - int bit_order; -} usart_iso7816_options_t; - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -//! Input parameters when initializing SPI mode. -typedef struct -{ - //! Set the frequency of the SPI clock (unused in slave mode). - unsigned long baudrate; - - //! Number of bits to transmit as a character (5 to 9). - unsigned char charlength; - - //! Which SPI mode to use. - unsigned char spimode; - - //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO, - //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK. - unsigned char channelmode; -} usart_spi_options_t; - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Initialization Functions - */ -//! @{ - -/*! \brief Resets the USART and disables TX and RX. - * - * \param usart Base address of the USART instance. - */ -extern void usart_reset(volatile avr32_usart_t *usart); - -/*! \brief Sets up the USART to use the standard RS232 protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the standard RS232 protocol in TX-only mode. - * - * Compared to \ref usart_init_rs232, this function allows very high baud rates - * (up to \a pba_hz instead of \a pba_hz / \c 8) at the expense of full duplex. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - * - * \note The \c 1.5 stop bit is not supported in this mode. - */ -extern int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use hardware handshaking. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - * - * \note \ref usart_init_rs232 does not need to be invoked before this function. - */ -extern int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the modem protocol, activating dedicated inputs/outputs. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use a synchronous RS232-like protocol in master mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use a synchronous RS232-like protocol in slave mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the RS485 protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the IrDA protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * \param irda_filter Counter used to distinguish received ones from zeros. - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt, - long pba_hz, unsigned char irda_filter); - -/*! \brief Sets up the USART to use the ISO7816 T=0 or T=1 smartcard protocols. - * - * The receiver is enabled by default. \ref usart_iso7816_enable_receiver and - * \ref usart_iso7816_enable_transmitter can be called to change the half-duplex - * communication direction. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up ISO7816 communication (see \ref usart_iso7816_options_t). - * \param t ISO7816 mode to use (T=0 or T=1). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz); - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Sets up the USART to use the LIN master mode. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - */ -extern int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz); - -/*! \brief Sets up the USART to use the LIN slave mode. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - */ -extern int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz); - -/*! \brief Sets up the USART to use the SPI master mode. - * - * \ref usart_spi_selectChip and \ref usart_spi_unselectChip can be called to - * select or unselect the SPI slave chip. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the SPI slave mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz); - -#endif // USART rev. >= 4.0.0 - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Read and Reset Error Status Bits - */ -//! @{ - -/*! \brief Resets the error status. - * - * This function resets the status bits indicating that a parity error, - * framing error or overrun has occurred. The RXBRK bit, indicating - * a start/end of break condition on the RX line, is also reset. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_reset_status(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_RSTSTA_MASK; -} - -/*! \brief Checks if a parity error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a parity error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_parity_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_PARE_MASK) != 0; -} - -/*! \brief Checks if a framing error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a framing error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_framing_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_FRAME_MASK) != 0; -} - -/*! \brief Checks if an overrun error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a overrun error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_overrun_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_OVRE_MASK) != 0; -} - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Get LIN Error Status - * - * \param usart Base address of the USART instance. - * - * \retval The binary value of the error field. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_lin_get_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & (AVR32_USART_CSR_LINSNRE_MASK | - AVR32_USART_CSR_LINCE_MASK | - AVR32_USART_CSR_LINIPE_MASK | - AVR32_USART_CSR_LINISFE_MASK | - AVR32_USART_CSR_LINBE_MASK)) >> AVR32_USART_CSR_LINBE_OFFSET; -} - -#endif // USART rev. >= 4.0.0 - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name ISO7816 Control Functions - */ -//! @{ - -/*! \brief Enables the ISO7816 receiver. - * - * The ISO7816 transmitter is disabled. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_iso7816_enable_receiver(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_TXDIS_MASK | AVR32_USART_CR_RXEN_MASK; -} - -/*! \brief Enables the ISO7816 transmitter. - * - * The ISO7816 receiver is disabled. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_iso7816_enable_transmitter(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_RXDIS_MASK | AVR32_USART_CR_TXEN_MASK; -} - -//! @} - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name LIN Control Functions - */ -//! @{ - -/*! \brief Sets the node action. - * - * \param usart Base address of the USART instance. - * \param action The node action: \ref USART_LIN_PUBLISH_ACTION, - * \ref USART_LIN_SUBSCRIBE_ACTION or - * \ref USART_LIN_IGNORE_ACTION. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_node_action(volatile avr32_usart_t *usart, unsigned char action) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_NACT_MASK) | - action << AVR32_USART_LINMR_NACT_OFFSET; -} - -/*! \brief Enables or disables the Identifier parity. - * - * \param usart Base address of the USART instance. - * \param parity Whether to enable the Identifier parity: \c TRUE or \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_parity(volatile avr32_usart_t *usart, unsigned char parity) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_PARDIS_MASK) | - !parity << AVR32_USART_LINMR_PARDIS_OFFSET; -} - -/*! \brief Enables or disables the checksum. - * - * \param usart Base address of the USART instance. - * \param parity Whether to enable the checksum: \c TRUE or \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_checksum(volatile avr32_usart_t *usart, unsigned char checksum) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKDIS_MASK) | - !checksum << AVR32_USART_LINMR_CHKDIS_OFFSET; -} - -/*! \brief Sets the checksum type. - * - * \param usart Base address of the USART instance. - * \param chktyp The checksum type: \ref USART_LIN_ENHANCED_CHEKSUM or - * \ref USART_LIN_CLASSIC_CHECKSUM. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_checksum(volatile avr32_usart_t *usart, unsigned char chktyp) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKTYP_MASK) | - chktyp << AVR32_USART_LINMR_CHKTYP_OFFSET; -} - -/*! \brief Gets the response data length. - * - * \param usart Base address of the USART instance. - * - * \return The response data length. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned char usart_lin_get_data_length(volatile avr32_usart_t *usart) -{ - if (usart->linmr & AVR32_USART_LINMR_DLM_MASK) - { - unsigned char data_length = 1 << ((usart->linir >> (AVR32_USART_LINIR_IDCHR_OFFSET + 4)) & 0x03); - if (data_length == 1) - data_length = 2; - return data_length; - } - else - return ((usart->linmr & AVR32_USART_LINMR_DLC_MASK) >> AVR32_USART_LINMR_DLC_OFFSET) + 1; -} - -/*! \brief Sets the response data length for LIN 1.x. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_data_length_lin1x(volatile avr32_usart_t *usart) -{ - usart->linmr |= AVR32_USART_LINMR_DLM_MASK; -} - -/*! \brief Sets the response data length for LIN 2.x. - * - * \param usart Base address of the USART instance. - * \param data_length The response data length. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_data_length_lin2x(volatile avr32_usart_t *usart, unsigned char data_length) -{ - usart->linmr = (usart->linmr & ~(AVR32_USART_LINMR_DLC_MASK | - AVR32_USART_LINMR_DLM_MASK)) | - (data_length - 1) << AVR32_USART_LINMR_DLC_OFFSET; -} - -/*! \brief Enables or disables the frame slot mode. - * - * \param usart Base address of the USART instance. - * \param frameslot Whether to enable the frame slot mode: \c TRUE or - * \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_frameslot(volatile avr32_usart_t *usart, unsigned char frameslot) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_FSDIS_MASK) | - !frameslot << AVR32_USART_LINMR_FSDIS_OFFSET; -} - -/*! \brief Gets the Identifier character. - * - * \param usart Base address of the USART instance. - * - * \return The Identifier character. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned char usart_lin_get_id_char(volatile avr32_usart_t *usart) -{ - return (usart->linir & AVR32_USART_LINIR_IDCHR_MASK) >> AVR32_USART_LINIR_IDCHR_OFFSET; -} - -/*! \brief Sets the Identifier character. - * - * \param usart Base address of the USART instance. - * \param id_char The Identifier character. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_id_char(volatile avr32_usart_t *usart, unsigned char id_char) -{ - usart->linir = (usart->linir & ~AVR32_USART_LINIR_IDCHR_MASK) | - id_char << AVR32_USART_LINIR_IDCHR_OFFSET; -} - -//! @} - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name SPI Control Functions - */ -//! @{ - -/*! \brief Selects SPI slave chip. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - */ -extern int usart_spi_selectChip(volatile avr32_usart_t *usart); - -/*! \brief Unselects SPI slave chip. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - * \retval USART_FAILURE Time-out. - */ -extern int usart_spi_unselectChip(volatile avr32_usart_t *usart); - -//! @} - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Transmit/Receive Functions - */ -//! @{ - -/*! \brief Addresses a receiver. - * - * While in RS485 mode, receivers only accept data addressed to them. - * A packet/char with the address tag set has to precede any data. - * This function is used to address a receiver. This receiver should read - * all the following data, until an address packet addresses another receiver. - * - * \param usart Base address of the USART instance. - * \param address Address of the target device. - * - * \retval USART_SUCCESS Address successfully sent (if current mode is RS485). - * \retval USART_MODE_FAULT Wrong operating mode. - */ -extern int usart_send_address(volatile avr32_usart_t *usart, int address); - -/*! \brief Tests if the USART is ready to transmit a character. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Transmit Holding Register is free, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_tx_ready(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_TXRDY_MASK) != 0; -} - -/*! \brief Writes the given character to the TX buffer if the transmitter is ready. - * - * \param usart Base address of the USART instance. - * \param c The character (up to 9 bits) to transmit. - * - * \retval USART_SUCCESS The transmitter was ready. - * \retval USART_TX_BUSY The transmitter was busy. - */ -extern int usart_write_char(volatile avr32_usart_t *usart, int c); - -/*! \brief An active wait writing a character to the USART. - * - * \param usart Base address of the USART instance. - * \param c The character (up to 9 bits) to transmit. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_bw_write_char(volatile avr32_usart_t *usart, int c) -{ - while (usart_write_char(usart, c) != USART_SUCCESS); -} - -/*! \brief Sends a character with the USART. - * - * \param usart Base address of the USART instance. - * \param c Character to write. - * - * \retval USART_SUCCESS The character was written. - * \retval USART_FAILURE The function timed out before the USART transmitter became ready to send. - */ -extern int usart_putchar(volatile avr32_usart_t *usart, int c); - -/*! \brief Tests if all requested USART transmissions are over. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Transmit Shift Register and the USART Transmit - * Holding Register are free, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_tx_empty(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_TXEMPTY_MASK) != 0; -} - -/*! \brief Tests if the USART contains a received character. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Receive Holding Register is full, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_test_hit(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_RXRDY_MASK) != 0; -} - -/*! \brief Checks the RX buffer for a received character, and stores it at the - * given memory location. - * - * \param usart Base address of the USART instance. - * \param c Pointer to the where the read character should be stored - * (must be at least short in order to accept 9-bit characters). - * - * \retval USART_SUCCESS The character was read successfully. - * \retval USART_RX_EMPTY The RX buffer was empty. - * \retval USART_RX_ERROR An error was deteceted. - */ -extern int usart_read_char(volatile avr32_usart_t *usart, int *c); - -/*! \brief Waits until a character is received, and returns it. - * - * \param usart Base address of the USART instance. - * - * \return The received character, or \ref USART_FAILURE upon error. - */ -extern int usart_getchar(volatile avr32_usart_t *usart); - -/*! \brief Writes one character string to the USART. - * - * \param usart Base address of the USART instance. - * \param string String to be written. - */ -extern void usart_write_line(volatile avr32_usart_t *usart, const char *string); - -/*! \brief Gets and echoes characters until end of line. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - * \retval USART_FAILURE Low-level error detected or ETX character received. - */ -extern int usart_get_echo_line(volatile avr32_usart_t *usart); - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Abort LIN transmission. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_abort(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_LINABT_MASK; -} - -/*! \brief Tests if a LIN transfer has been completed. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a LIN transfer has been completed, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_lin_transfer_completed(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_LINTC_MASK) != 0; -} - -#endif // USART rev. >= 4.0.0 - -//! @} - - -#endif // _USART_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c deleted file mode 100644 index 09790c2..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c +++ /dev/null @@ -1,571 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Abstraction layer for memory interfaces. - * - * This module contains the interfaces: - * - MEM <-> USB; - * - MEM <-> RAM; - * - MEM <-> MEM. - * - * This module may be configured and expanded to support the following features: - * - write-protected globals; - * - password-protected data; - * - specific features; - * - etc. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -//_____ I N C L U D E S ____________________________________________________ - -#include "compiler.h" -#include "preprocessor.h" -#ifdef FREERTOS_USED -#include "FreeRTOS.h" -#include "semphr.h" -#endif -#include "ctrl_access.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -#ifdef FREERTOS_USED - -/*! \name LUN Access Protection Macros - */ -//! @{ - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -#define Ctrl_access_lock() ctrl_access_lock() - -/*! \brief Unlocks accesses to LUNs. - */ -#define Ctrl_access_unlock() xSemaphoreGive(ctrl_access_semphr) - -//! @} - -//! Handle to the semaphore protecting accesses to LUNs. -static xSemaphoreHandle ctrl_access_semphr = NULL; - -#else - -/*! \name LUN Access Protection Macros - */ -//! @{ - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -#define Ctrl_access_lock() TRUE - -/*! \brief Unlocks accesses to LUNs. - */ -#define Ctrl_access_unlock() - -//! @} - -#endif // FREERTOS_USED - - -#if MAX_LUN - -/*! \brief Initializes an entry of the LUN descriptor table. - * - * \param lun Logical Unit Number. - * - * \return LUN descriptor table entry initializer. - */ -#if ACCESS_USB == ENABLED && ACCESS_MEM_TO_RAM == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _usb_read_10),\ - TPASTE3(Lun_, lun, _usb_write_10),\ - TPASTE3(Lun_, lun, _mem_2_ram),\ - TPASTE3(Lun_, lun, _ram_2_mem),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#elif ACCESS_USB == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _usb_read_10),\ - TPASTE3(Lun_, lun, _usb_write_10),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#elif ACCESS_MEM_TO_RAM == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _mem_2_ram),\ - TPASTE3(Lun_, lun, _ram_2_mem),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#else -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#endif - -//! LUN descriptor table. -static const struct -{ - Ctrl_status (*test_unit_ready)(void); - Ctrl_status (*read_capacity)(U32 *); - Bool (*wr_protect)(void); - Bool (*removal)(void); -#if ACCESS_USB == ENABLED - Ctrl_status (*usb_read_10)(U32, U16); - Ctrl_status (*usb_write_10)(U32, U16); -#endif -#if ACCESS_MEM_TO_RAM == ENABLED - Ctrl_status (*mem_2_ram)(U32, void *); - Ctrl_status (*ram_2_mem)(U32, const void *); -#endif - const char *name; -} lun_desc[MAX_LUN] = -{ -#if LUN_0 == ENABLE - Lun_desc_entry(0), -#endif -#if LUN_1 == ENABLE - Lun_desc_entry(1), -#endif -#if LUN_2 == ENABLE - Lun_desc_entry(2), -#endif -#if LUN_3 == ENABLE - Lun_desc_entry(3), -#endif -#if LUN_4 == ENABLE - Lun_desc_entry(4), -#endif -#if LUN_5 == ENABLE - Lun_desc_entry(5), -#endif -#if LUN_6 == ENABLE - Lun_desc_entry(6), -#endif -#if LUN_7 == ENABLE - Lun_desc_entry(7) -#endif -}; - -#endif - - -#if GLOBAL_WR_PROTECT == ENABLED -Bool g_wr_protect; -#endif - - -/*! \name Control Interface - */ -//! @{ - - -#ifdef FREERTOS_USED - -Bool ctrl_access_init(void) -{ - // If the handle to the protecting semaphore is not valid, - if (!ctrl_access_semphr) - { - // try to create the semaphore. - vSemaphoreCreateBinary(ctrl_access_semphr); - - // If the semaphore could not be created, there is no backup solution. - if (!ctrl_access_semphr) return FALSE; - } - - return TRUE; -} - - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -static Bool ctrl_access_lock(void) -{ - // If the semaphore could not be created, there is no backup solution. - if (!ctrl_access_semphr) return FALSE; - - // Wait for the semaphore. - while (!xSemaphoreTake(ctrl_access_semphr, portMAX_DELAY)); - - return TRUE; -} - -#endif // FREERTOS_USED - - -U8 get_nb_lun(void) -{ -#if MEM_USB == ENABLE - U8 nb_lun; - - if (!Ctrl_access_lock()) return MAX_LUN; - - nb_lun = MAX_LUN + host_get_lun(); - - Ctrl_access_unlock(); - - return nb_lun; -#else - return MAX_LUN; -#endif -} - - -U8 get_cur_lun(void) -{ - return LUN_ID_0; -} - - -Ctrl_status mem_test_unit_ready(U8 lun) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].test_unit_ready() : -#endif -#if LUN_USB == ENABLE - Lun_usb_test_unit_ready(lun - LUN_ID_USB); -#else - CTRL_FAIL; -#endif - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].read_capacity(u32_nb_sector) : -#endif -#if LUN_USB == ENABLE - Lun_usb_read_capacity(lun - LUN_ID_USB, u32_nb_sector); -#else - CTRL_FAIL; -#endif - - Ctrl_access_unlock(); - - return status; -} - - -U8 mem_sector_size(U8 lun) -{ - U8 sector_size; - - if (!Ctrl_access_lock()) return 0; - - sector_size = -#if MAX_LUN - (lun < MAX_LUN) ? 1 : -#endif -#if LUN_USB == ENABLE - Lun_usb_read_sector_size(lun - LUN_ID_USB); -#else - 0; -#endif - - Ctrl_access_unlock(); - - return sector_size; -} - - -Bool mem_wr_protect(U8 lun) -{ - Bool wr_protect; - - if (!Ctrl_access_lock()) return TRUE; - - wr_protect = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].wr_protect() : -#endif -#if LUN_USB == ENABLE - Lun_usb_wr_protect(lun - LUN_ID_USB); -#else - TRUE; -#endif - - Ctrl_access_unlock(); - - return wr_protect; -} - - -Bool mem_removal(U8 lun) -{ - Bool removal; - - if (!Ctrl_access_lock()) return TRUE; - - removal = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].removal() : -#endif -#if LUN_USB == ENABLE - Lun_usb_removal(); -#else - TRUE; -#endif - - Ctrl_access_unlock(); - - return removal; -} - - -const char *mem_name(U8 lun) -{ - return -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].name : -#endif -#if LUN_USB == ENABLE - LUN_USB_NAME; -#else - NULL; -#endif -} - - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - - -Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_read_action(nb_sector); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].usb_read_10(addr, nb_sector) : -#endif - CTRL_FAIL; - memory_stop_read_action(); - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_write_action(nb_sector); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].usb_write_10(addr, nb_sector) : -#endif - CTRL_FAIL; - memory_stop_write_action(); - - Ctrl_access_unlock(); - - return status; -} - - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - - -Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_read_action(1); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].mem_2_ram(addr, ram) : -#endif -#if LUN_USB == ENABLE - Lun_usb_mem_2_ram(addr, ram); -#else - CTRL_FAIL; -#endif - memory_stop_read_action(); - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_write_action(1); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].ram_2_mem(addr, ram) : -#endif -#if LUN_USB == ENABLE - Lun_usb_ram_2_mem(addr, ram); -#else - CTRL_FAIL; -#endif - memory_stop_write_action(); - - Ctrl_access_unlock(); - - return status; -} - - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#if ACCESS_STREAM == ENABLED - -/*! \name Streaming MEM <-> MEM Interface - */ -//! @{ - - - #if ACCESS_MEM_TO_MEM == ENABLED - -#include "fat.h" - -Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector) -{ -#if (defined __GNUC__) && (defined __AVR32__) - __attribute__((__aligned__(4))) -#elif (defined __ICCAVR32__) - #pragma data_alignment = 4 -#endif - static U8 sector_buf[FS_512B]; - Ctrl_status status = CTRL_GOOD; - - while (nb_sector--) - { - if ((status = memory_2_ram(src_lun, src_addr++, sector_buf)) != CTRL_GOOD) break; - if ((status = ram_2_memory(dest_lun, dest_addr++, sector_buf)) != CTRL_GOOD) break; - } - - return status; -} - - #endif // ACCESS_MEM_TO_MEM == ENABLED - - -Ctrl_status stream_state(U8 id) -{ - return CTRL_GOOD; -} - - -U16 stream_stop(U8 id) -{ - return 0; -} - - -//! @} - -#endif // ACCESS_STREAM == ENABLED diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h deleted file mode 100644 index 358bf65..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h +++ /dev/null @@ -1,369 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Abstraction layer for memory interfaces. - * - * This module contains the interfaces: - * - MEM <-> USB; - * - MEM <-> RAM; - * - MEM <-> MEM. - * - * This module may be configured and expanded to support the following features: - * - write-protected globals; - * - password-protected data; - * - specific features; - * - etc. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CTRL_ACCESS_H_ -#define _CTRL_ACCESS_H_ - -#include "compiler.h" -#include "conf_access.h" - - -//! Status returned by CTRL_ACCESS interfaces. -typedef enum -{ - CTRL_GOOD = PASS, //!< Success, memory ready. - CTRL_FAIL = FAIL, //!< An error occurred. - CTRL_NO_PRESENT = FAIL + 1, //!< Memory unplugged. - CTRL_BUSY = FAIL + 2 //!< Memory not initialized or changed. -} Ctrl_status; - - -// FYI: Each Logical Unit Number (LUN) corresponds to a memory. - -// Check LUN defines. -#ifndef LUN_0 - #error LUN_0 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_1 - #error LUN_1 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_2 - #error LUN_2 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_3 - #error LUN_3 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_4 - #error LUN_4 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_5 - #error LUN_5 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_6 - #error LUN_6 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_7 - #error LUN_7 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_USB - #error LUN_USB must be defined as ENABLE or DISABLE in conf_access.h -#endif - -/*! \name LUN IDs - */ -//! @{ -#define LUN_ID_0 (0) //!< First static LUN. -#define LUN_ID_1 (LUN_ID_0 + LUN_0) -#define LUN_ID_2 (LUN_ID_1 + LUN_1) -#define LUN_ID_3 (LUN_ID_2 + LUN_2) -#define LUN_ID_4 (LUN_ID_3 + LUN_3) -#define LUN_ID_5 (LUN_ID_4 + LUN_4) -#define LUN_ID_6 (LUN_ID_5 + LUN_5) -#define LUN_ID_7 (LUN_ID_6 + LUN_6) -#define MAX_LUN (LUN_ID_7 + LUN_7) //!< Number of static LUNs. -#define LUN_ID_USB (MAX_LUN) //!< First dynamic LUN (USB host mass storage). -//! @} - - -// Include LUN header files. -#if LUN_0 == ENABLE - #include LUN_0_INCLUDE -#endif -#if LUN_1 == ENABLE - #include LUN_1_INCLUDE -#endif -#if LUN_2 == ENABLE - #include LUN_2_INCLUDE -#endif -#if LUN_3 == ENABLE - #include LUN_3_INCLUDE -#endif -#if LUN_4 == ENABLE - #include LUN_4_INCLUDE -#endif -#if LUN_5 == ENABLE - #include LUN_5_INCLUDE -#endif -#if LUN_6 == ENABLE - #include LUN_6_INCLUDE -#endif -#if LUN_7 == ENABLE - #include LUN_7_INCLUDE -#endif -#if LUN_USB == ENABLE - #include LUN_USB_INCLUDE -#endif - - -// Check the configuration of write protection in conf_access.h. -#ifndef GLOBAL_WR_PROTECT - #error GLOBAL_WR_PROTECT must be defined as ENABLED or DISABLED in conf_access.h -#endif - - -#if GLOBAL_WR_PROTECT == ENABLED - -//! Write protect. -extern Bool g_wr_protect; - -#endif - - -/*! \name Control Interface - */ -//! @{ - -#ifdef FREERTOS_USED - -/*! \brief Initializes the LUN access locker. - * - * \return \c TRUE if the locker was successfully initialized, else \c FALSE. - */ -extern Bool ctrl_access_init(void); - -#endif // FREERTOS_USED - -/*! \brief Returns the number of LUNs. - * - * \return Number of LUNs in the system. - */ -extern U8 get_nb_lun(void); - -/*! \brief Returns the current LUN. - * - * \return Current LUN. - * - * \todo Implement. - */ -extern U8 get_cur_lun(void); - -/*! \brief Tests the memory state and initializes the memory if required. - * - * The TEST UNIT READY SCSI primary command allows an application client to poll - * a LUN until it is ready without having to allocate memory for returned data. - * - * This command may be used to check the media status of LUNs with removable - * media. - * - * \param lun Logical Unit Number. - * - * \return Status. - */ -extern Ctrl_status mem_test_unit_ready(U8 lun); - -/*! \brief Returns the address of the last valid sector (512 bytes) in the - * memory. - * - * \param lun Logical Unit Number. - * \param u32_nb_sector Pointer to the address of the last valid sector. - * - * \return Status. - */ -extern Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector); - -/*! \brief Returns the size of the physical sector. - * - * \param lun Logical Unit Number. - * - * \return Sector size (unit: 512 bytes). - */ -extern U8 mem_sector_size(U8 lun); - -/*! \brief Returns the write-protection state of the memory. - * - * \param lun Logical Unit Number. - * - * \return \c TRUE if the memory is write-protected, else \c FALSE. - * - * \note Only used by removable memories with hardware-specific write - * protection. - */ -extern Bool mem_wr_protect(U8 lun); - -/*! \brief Tells whether the memory is removable. - * - * \param lun Logical Unit Number. - * - * \return \c TRUE if the memory is removable, else \c FALSE. - */ -extern Bool mem_removal(U8 lun); - -/*! \brief Returns a pointer to the LUN name. - * - * \param lun Logical Unit Number. - * - * \return Pointer to the LUN name string. - */ -extern const char *mem_name(U8 lun); - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - -/*! \brief Tranfers data from the memory to USB. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to read. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector); - -/*! \brief Tranfers data from USB to the memory. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to write. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector); - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - -/*! \brief Copies 1 data sector from the memory to RAM. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to read. - * \param ram Pointer to RAM buffer to write. - * - * \return Status. - */ -extern Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram); - -/*! \brief Copies 1 data sector from RAM to the memory. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to write. - * \param ram Pointer to RAM buffer to read. - * - * \return Status. - */ -extern Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram); - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#if ACCESS_STREAM == ENABLED - -/*! \name Streaming MEM <-> MEM Interface - */ -//! @{ - -//! Erroneous streaming data transfer ID. -#define ID_STREAM_ERR 0xFF - - #if ACCESS_MEM_TO_MEM == ENABLED - -/*! \brief Copies data from one memory to another. - * - * \param src_lun Source Logical Unit Number. - * \param src_addr Source address of first memory sector to read. - * \param dest_lun Destination Logical Unit Number. - * \param dest_addr Destination address of first memory sector to write. - * \param nb_sector Number of sectors to copy. - * - * \return Status. - */ -extern Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector); - - #endif // ACCESS_MEM_TO_MEM == ENABLED - -/*! \brief Returns the state of a streaming data transfer. - * - * \param id Transfer ID. - * - * \return Status. - * - * \todo Implement. - */ -extern Ctrl_status stream_state(U8 id); - -/*! \brief Stops a streaming data transfer. - * - * \param id Transfer ID. - * - * \return Number of remaining sectors. - * - * \todo Implement. - */ -extern U16 stream_stop(U8 id); - -//! @} - -#endif // ACCESS_STREAM == ENABLED - - -#endif // _CTRL_ACCESS_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c deleted file mode 100644 index c7c0a03..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c +++ /dev/null @@ -1,119 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Macros and functions dedicated to debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "compiler.h" -#include "debug.h" - - -#if (defined __GNUC__) -# include "malloc.h" - -U32 get_heap_curr_used_size( void ) -{ - struct mallinfo my_info=mallinfo(); - return my_info.uordblks; -} - -U32 get_heap_total_used_size( void ) -{ - struct mallinfo my_info=mallinfo(); - return my_info.arena; -} -#endif - -U32 get_heap_free_size( void ) -{ - U32 high_mark= AVR32_SRAM_SIZE; - U32 low_mark = 0; - U32 size ; - void* p_mem; - - size = (high_mark + low_mark)/2; - - do - { - p_mem = malloc(size); - if( p_mem != NULL) - { // Can allocate memory - free(p_mem); - low_mark = size; - } - else - { // Can not allocate memory - high_mark = size; - } - - size = (high_mark + low_mark)/2; - } - while( (high_mark-low_mark) >1 ); - - return size; -} - -static void* round_trace_pbuf; -static U32 round_trace_size; - -void uc3_round_trace_init(void* buf, U32 size) -{ - round_trace_pbuf = buf; - (*(U32*)round_trace_pbuf)=(U32)buf+4; - round_trace_size = size; -} - -void uc3_round_trace(U32 val) -{ - //Disable_global_interrupt(); - - U32* p_wr = (U32*)(*(U32*)round_trace_pbuf); - *p_wr = val; - p_wr++; - if( ((U32)p_wr % round_trace_size) ==0 ) - p_wr= (U32*)round_trace_pbuf+1; - *p_wr = 0xdeadbeef; - *(U32*)round_trace_pbuf = (U32)p_wr; - - //Enable_global_interrupt(); -} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h deleted file mode 100644 index a832d7c..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h +++ /dev/null @@ -1,116 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Macros and functions dedicated to debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _DEBUG_H_ -#define _DEBUG_H_ - -#include "stringz.h" - -/*! \brief These macros are used to add traces memory. - * - * First, initialise the trace with Uc3_trace_init(pointer), giving the start address - * of the memory location where will be stored the trace. - * Use Uc3_trace(something) to store "something" into the memory. The end of the trace - * is signaled by the "0xdeadbeef" pattern. - */ -#define Uc3_trace_init(debug_addr) \ - *(U32*)(debug_addr)=debug_addr+4 - -#define Uc3_trace(debug_addr, x) \ - *(U32*)(*(U32*)(debug_addr) ) = (U32)(x) ;\ - *(U32*)(*(U32*)(debug_addr)+4) = 0xdeadbeef ;\ - *(U32*)(debug_addr ) = *(U32*)(debug_addr)+4 - -/*! \brief This macro is used to insert labels into assembly output. - * - */ -#define Insert_label(name) \ - __asm__ __volatile__ (STRINGZ(name)":"); - -#if (defined __GNUC__) -/*! \brief Returns the number of total of used bytes allocated from the HEAP. - * - * \retval total number of used bytes. - */ -U32 get_heap_total_used_size( void ); - -/*! \brief Returns the number of bytes currently used from the HEAP. - * - * \retval total number of used bytes. - */ -U32 get_heap_curr_used_size( void ); -#endif - -/*! \brief Returns the number of free bytes in the HEAP. - * - * This funtion tries to allocate the maximum number of bytes by dichotomical method. - * - * \retval number of free bytes. - */ -extern U32 get_heap_free_size( void ); - -/*! \name Traces function using a round buffer - */ -//! @{ - -/*! \brief Initialize the trace using a round buffer. - * - * \param buf Base address of the buffer used for the trace. - * \param size Size of the round buffer. Must be a power of 2. - */ -void uc3_round_trace_init(void* buf, U32 size); - -/*! \brief Trace a data in the round buffer. - * - * The end of the trace is signaled by the "0xdeadbeef" pattern. - * \param val Data to trace; - */ -void uc3_round_trace(U32 val); - -//! @} - - -#endif // _DEBUG_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c deleted file mode 100644 index 99e9274..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c +++ /dev/null @@ -1,215 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Strings and integers print module for debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include "compiler.h" -#include "gpio.h" -#include "usart.h" -#include "print_funcs.h" - - -//! ASCII representation of hexadecimal digits. -static const char HEX_DIGITS[16] = "0123456789ABCDEF"; - - -void init_dbg_rs232(long pba_hz) -{ - init_dbg_rs232_ex(DBG_USART_BAUDRATE, pba_hz); -} - - -void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz) -{ - static const gpio_map_t DBG_USART_GPIO_MAP = - { - {DBG_USART_RX_PIN, DBG_USART_RX_FUNCTION}, - {DBG_USART_TX_PIN, DBG_USART_TX_FUNCTION} - }; - - // Options for debug USART. - usart_options_t dbg_usart_options = - { - .baudrate = baudrate, - .charlength = 8, - .paritytype = USART_NO_PARITY, - .stopbits = USART_1_STOPBIT, - .channelmode = USART_NORMAL_CHMODE - }; - - // Setup GPIO for debug USART. - gpio_enable_module(DBG_USART_GPIO_MAP, - sizeof(DBG_USART_GPIO_MAP) / sizeof(DBG_USART_GPIO_MAP[0])); - - // Initialize it in RS232 mode. - usart_init_rs232(DBG_USART, &dbg_usart_options, pba_hz); -} - - -void print_dbg(const char *str) -{ - // Redirection to the debug USART. - print(DBG_USART, str); -} - - -void print_dbg_char(int c) -{ - // Redirection to the debug USART. - print_char(DBG_USART, c); -} - - -void print_dbg_ulong(unsigned long n) -{ - // Redirection to the debug USART. - print_ulong(DBG_USART, n); -} - - -void print_dbg_char_hex(unsigned char n) -{ - // Redirection to the debug USART. - print_char_hex(DBG_USART, n); -} - - -void print_dbg_short_hex(unsigned short n) -{ - // Redirection to the debug USART. - print_short_hex(DBG_USART, n); -} - - -void print_dbg_hex(unsigned long n) -{ - // Redirection to the debug USART. - print_hex(DBG_USART, n); -} - - -void print(volatile avr32_usart_t *usart, const char *str) -{ - // Invoke the USART driver to transmit the input string with the given USART. - usart_write_line(usart, str); -} - - -void print_char(volatile avr32_usart_t *usart, int c) -{ - // Invoke the USART driver to transmit the input character with the given USART. - usart_putchar(usart, c); -} - - -void print_ulong(volatile avr32_usart_t *usart, unsigned long n) -{ - char tmp[11]; - int i = sizeof(tmp) - 1; - - // Convert the given number to an ASCII decimal representation. - tmp[i] = '\0'; - do - { - tmp[--i] = '0' + n % 10; - n /= 10; - } while (n); - - // Transmit the resulting string with the given USART. - print(usart, tmp + i); -} - - -void print_char_hex(volatile avr32_usart_t *usart, unsigned char n) -{ - char tmp[3]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[2] = '\0'; - for (i = 1; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} - - -void print_short_hex(volatile avr32_usart_t *usart, unsigned short n) -{ - char tmp[5]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[4] = '\0'; - for (i = 3; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} - - -void print_hex(volatile avr32_usart_t *usart, unsigned long n) -{ - char tmp[9]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[8] = '\0'; - for (i = 7; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h deleted file mode 100644 index 38f931d..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h +++ /dev/null @@ -1,294 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Strings and integers print module for debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _PRINT_FUNCS_H_ -#define _PRINT_FUNCS_H_ - -#include -#include "board.h" - - -/*! \name USART Settings for the Debug Module - */ -//! @{ -#if BOARD == EVK1100 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1101 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == UC3C_EK -# define DBG_USART (&AVR32_USART2) -# define DBG_USART_RX_PIN AVR32_USART2_RXD_0_1_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART2_RXD_0_1_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART2_TXD_0_1_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART2_TXD_0_1_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1104 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1105 -# define DBG_USART (&AVR32_USART0) -# define DBG_USART_RX_PIN AVR32_USART0_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART0_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == STK1000 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION -# define DBG_USART_BAUDRATE 115200 -#elif BOARD == NGW100 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION -# define DBG_USART_BAUDRATE 115200 -#elif BOARD == STK600_RCUC3L0 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_1_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_1_FUNCTION -// For the RX pin, connect STK600.PORTE.PE3 to STK600.RS232 SPARE.RXD -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_1_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_1_FUNCTION -// For the TX pin, connect STK600.PORTE.PE2 to STK600.RS232 SPARE.TXD -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA -#elif BOARD == UC3L_EK -# define DBG_USART (&AVR32_USART3) -# define DBG_USART_RX_PIN AVR32_USART3_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART3_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART3_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART3_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART3_CLK_PBA -#elif BOARD == ARDUINO -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA -#endif - -#if !defined(DBG_USART) || \ - !defined(DBG_USART_RX_PIN) || \ - !defined(DBG_USART_RX_FUNCTION) || \ - !defined(DBG_USART_TX_PIN) || \ - !defined(DBG_USART_TX_FUNCTION) || \ - !defined(DBG_USART_BAUDRATE) -# error The USART configuration to use for debug on your board is missing -#endif -//! @} - -/*! \name VT100 Common Commands - */ -//! @{ -#define CLEARSCR "\x1B[2J\x1B[;H" //!< Clear screen. -#define CLEAREOL "\x1B[K" //!< Clear end of line. -#define CLEAREOS "\x1B[J" //!< Clear end of screen. -#define CLEARLCR "\x1B[0K" //!< Clear line cursor right. -#define CLEARLCL "\x1B[1K" //!< Clear line cursor left. -#define CLEARELN "\x1B[2K" //!< Clear entire line. -#define CLEARCDW "\x1B[0J" //!< Clear cursor down. -#define CLEARCUP "\x1B[1J" //!< Clear cursor up. -#define GOTOYX "\x1B[%.2d;%.2dH" //!< Set cursor to (y, x). -#define INSERTMOD "\x1B[4h" //!< Insert mode. -#define OVERWRITEMOD "\x1B[4l" //!< Overwrite mode. -#define DELAFCURSOR "\x1B[K" //!< Erase from cursor to end of line. -#define CRLF "\r\n" //!< Carriage Return + Line Feed. -//! @} - -/*! \name VT100 Cursor Commands - */ -//! @{ -#define CURSON "\x1B[?25h" //!< Show cursor. -#define CURSOFF "\x1B[?25l" //!< Hide cursor. -//! @} - -/*! \name VT100 Character Commands - */ -//! @{ -#define NORMAL "\x1B[0m" //!< Normal. -#define BOLD "\x1B[1m" //!< Bold. -#define UNDERLINE "\x1B[4m" //!< Underline. -#define BLINKING "\x1B[5m" //!< Blink. -#define INVVIDEO "\x1B[7m" //!< Inverse video. -//! @} - -/*! \name VT100 Color Commands - */ -//! @{ -#define CL_BLACK "\033[22;30m" //!< Black. -#define CL_RED "\033[22;31m" //!< Red. -#define CL_GREEN "\033[22;32m" //!< Green. -#define CL_BROWN "\033[22;33m" //!< Brown. -#define CL_BLUE "\033[22;34m" //!< Blue. -#define CL_MAGENTA "\033[22;35m" //!< Magenta. -#define CL_CYAN "\033[22;36m" //!< Cyan. -#define CL_GRAY "\033[22;37m" //!< Gray. -#define CL_DARKGRAY "\033[01;30m" //!< Dark gray. -#define CL_LIGHTRED "\033[01;31m" //!< Light red. -#define CL_LIGHTGREEN "\033[01;32m" //!< Light green. -#define CL_YELLOW "\033[01;33m" //!< Yellow. -#define CL_LIGHTBLUE "\033[01;34m" //!< Light blue. -#define CL_LIGHTMAGENTA "\033[01;35m" //!< Light magenta. -#define CL_LIGHTCYAN "\033[01;36m" //!< Light cyan. -#define CL_WHITE "\033[01;37m" //!< White. -//! @} - - -/*! \brief Sets up DBG_USART with 8N1 at DBG_USART_BAUDRATE. - * - * \param pba_hz PBA clock frequency (Hz). - */ -extern void init_dbg_rs232(long pba_hz); - -/*! \brief Sets up DBG_USART with 8N1 at a given baud rate. - * - * \param baudrate Baud rate to set DBG_USART to. - * \param pba_hz PBA clock frequency (Hz). - */ -extern void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz); - -/*! \brief Prints a string of characters to DBG_USART. - * - * \param str The string of characters to print. - */ -extern void print_dbg(const char *str); - -/*! \brief Prints a character to DBG_USART. - * - * \param c The character to print. - */ -extern void print_dbg_char(int c); - -/*! \brief Prints an integer to DBG_USART in a decimal representation. - * - * \param n The integer to print. - */ -extern void print_dbg_ulong(unsigned long n); - -/*! \brief Prints a char to DBG_USART in an hexadecimal representation. - * - * \param n The char to print. - */ -extern void print_dbg_char_hex(unsigned char n); - -/*! \brief Prints a short integer to DBG_USART in an hexadecimal representation. - * - * \param n The short integer to print. - */ -extern void print_dbg_short_hex(unsigned short n); - -/*! \brief Prints an integer to DBG_USART in an hexadecimal representation. - * - * \param n The integer to print. - */ -extern void print_dbg_hex(unsigned long n); - -/*! \brief Prints a string of characters to a given USART. - * - * \param usart Base address of the USART instance to print to. - * \param str The string of characters to print. - */ -extern void print(volatile avr32_usart_t *usart, const char *str); - -/*! \brief Prints a character to a given USART. - * - * \param usart Base address of the USART instance to print to. - * \param c The character to print. - */ -extern void print_char(volatile avr32_usart_t *usart, int c); - -/*! \brief Prints an integer to a given USART in a decimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The integer to print. - */ -extern void print_ulong(volatile avr32_usart_t *usart, unsigned long n); - -/*! \brief Prints a char to a given USART in an hexadecimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The char to print. - */ -extern void print_char_hex(volatile avr32_usart_t *usart, unsigned char n); - -/*! \brief Prints a short integer to a given USART in an hexadecimal - * representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The short integer to print. - */ -extern void print_short_hex(volatile avr32_usart_t *usart, unsigned short n); - -/*! \brief Prints an integer to a given USART in an hexadecimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The integer to print. - */ -extern void print_hex(volatile avr32_usart_t *usart, unsigned long n); - - -#endif // _PRINT_FUNCS_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h deleted file mode 100644 index e3ebea7..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h +++ /dev/null @@ -1,63 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS CPU include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_CPU_H__ -#define __AVR32_NEWLIB_ADDONS_CPU_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -#define CPU_HZ get_cpu_hz() - -void udelay(unsigned long usec); -void set_cpu_hz(unsigned int clk_hz); -unsigned int get_cpu_hz(); - -_END_STD_C - -#endif diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h deleted file mode 100644 index 31caf13..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h +++ /dev/null @@ -1,120 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS exceptions include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__ -#define __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -/* - Exception vector offsets -*/ -#define EVBA_UNRECOVERABLE 0x000 -#define EVBA_TLB_MULTIPLE 0x004 -#define EVBA_BUS_ERROR_DATA 0x008 -#define EVBA_BUS_ERROR_INSTR 0x00C -#define EVBA_NMI 0x010 -#define EVBA_INSTR_ADDR 0x014 -#define EVBA_ITLB_MISS 0x050 -#define EVBA_ITLB_PROT 0x018 -#define EVBA_BREAKPOINT 0x01C -#define EVBA_ILLEGAL_OPCODE 0x020 -#define EVBA_UNIMPLEMENTED 0x024 -#define EVBA_PRIVILEGE_VIOL 0x028 -#define EVBA_FLOATING_POINT 0x02C -#define EVBA_COP_ABSENT 0x030 -#define EVBA_SCALL 0x100 -#define EVBA_DATA_ADDR_R 0x034 -#define EVBA_DATA_ADDR_W 0x038 -#define EVBA_DTLB_MISS_R 0x060 -#define EVBA_DTLB_MISS_W 0x070 -#define EVBA_DTLB_PROT_R 0x03C -#define EVBA_DTLB_PROT_W 0x040 -#define EVBA_DTLB_MODIFIED 0x044 - - -/* - Define the form of the function used when registering exceptions. - The function should return the address which the exception should - return to after the exception processing. -*/ - -typedef unsigned int (*__exception_handler)(int /*evba_offset*/, int /*return address*/); - -/* - Define the form of the function used when registering a scall handler. -*/ - -typedef void (*__scall_handler)(int /*code*/, int /*p1*/, int /*p2*/ - , int /*p3*/, int /*p4*/); - -/* - Function for registering an exception handler for the exception with - offset given by evba_offset. -*/ -void _register_exception_handler(__exception_handler handler, int evba_offset); - -/* - Function for registering a scall handler which can be a arbirary - function which uses r8-r12 for parameters. -*/ -void _register_scall_handler(__scall_handler handler); - -/* - Initialize exceptions. Must be called before registering exception handlers - and needed to enable exceptions. 'evba' is the pointer to the exception - vector. 'handler_table' is a pointer to an array where the pointers to - the exception handlers are stored. This array must be at least 0x104 bytes - and word aligned. -*/ -void init_exceptions(void *evba, void *handler_table); - -_END_STD_C - -#endif diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h deleted file mode 100644 index 76d81f7..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h +++ /dev/null @@ -1,82 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS interrupts include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__ -#define __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -#define INT_GRPS 64 -#define INT_LINES 32 -#define INTPR_BASE (__intc_base__ + 0x0000) -#define INTREQ_BASE (__intc_base__ + 64*4) -#define INTCAUSE_BASE (__intc_base__ + 2*64*4) - -//Register offsets -#define INTLEVEL 30 -#define AUTOVECTOR 0 -#define AUTOVECTOR_BITS 14 - -//Priorities -#define INT0 0 -#define INT1 1 -#define INT2 2 -#define INT3 3 - - -typedef void (*__newlib_int_handler)(int /* int_grp*/, void */*user_handle*/); - -__newlib_int_handler register_interrupt(__newlib_int_handler handler, int int_grp, int line, int priority, - .../* void *user_handle*/); -void init_interrupts(); -void set_interrupts_base(void *base); - -_END_STD_C - -#endif diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h deleted file mode 100644 index a725769..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h +++ /dev/null @@ -1,174 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS miscellaneous macros include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_IO_H__ -#define __AVR32_NEWLIB_ADDONS_IO_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -typedef char u8; -typedef unsigned int u32; - -#define __raw_writeb(v,a) (*(volatile unsigned char *)(a) = (v)) -#define __raw_writew(v,a) (*(volatile unsigned short *)(a) = (v)) -#define __raw_writel(v,a) (*(volatile unsigned int *)(a) = (v)) - -#define __raw_readb(a) (*(volatile unsigned char *)(a)) -#define __raw_readw(a) (*(volatile unsigned short *)(a)) -#define __raw_readl(a) (*(volatile unsigned int *)(a)) - -/* As long as I/O is only performed in P4 (or possibly P3), we're safe */ -#define writeb(v,a) __raw_writeb(v,a) -#define writew(v,a) __raw_writew(v,a) -#define writel(v,a) __raw_writel(v,a) - -#define readb(a) __raw_readb(a) -#define readw(a) __raw_readw(a) -#define readl(a) __raw_readl(a) - -/* Memory segments when segmentation is enabled */ -#define P0SEG 0x00000000 -#define P1SEG 0x80000000 -#define P2SEG 0xa0000000 -#define P3SEG 0xc0000000 -#define P4SEG 0xe0000000 - -/* Returns the privileged segment base of a given address */ -#define PXSEG(a) (((unsigned long)(a)) & 0xe0000000) - -/* Returns the physical address of a PnSEG (n=1,2) address */ -#define PHYSADDR(a) (((unsigned long)(a)) & 0x1fffffff) - -/* - * Map an address to a certain privileged segment - */ -#define P1SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P1SEG)) -#define P2SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P2SEG)) -#define P3SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P3SEG)) -#define P4SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P4SEG)) - - -#define cached(addr) P1SEGADDR(addr) -#define uncached(addr) P2SEGADDR(addr) -#define physaddr(addr) PHYSADDR(addr) - -#define BF(field, value) \ - ({ union { \ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = 0; \ - __tmp.__val = value; \ - __tmp.__ul;}) - -#define BF_D(field, value) \ - ({ union { \ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = 0; \ - __tmp.__val = value; \ - __tmp.__ul;}) - -#define BFINS(var, field, value) \ - { union {\ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val = value; \ - var = __tmp.__ul;} - -#define BFEXT(var, field) \ - ({ union {\ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val; }) - -#define BFINS_D(var, field, value) \ - { union {\ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val = value; \ - var = __tmp.__ul;} - -#define BFEXT_D(var, field) \ - ({ union {\ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val; }) - - -_END_STD_C - -#endif diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h deleted file mode 100644 index 6c4697d..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h +++ /dev/null @@ -1,208 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS USART include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_USART_H__ -#define __AVR32_NEWLIB_ADDONS_USART_H__ - -#include <_ansi.h> - -#include "nlao_io.h" - -_BEGIN_STD_C - -struct usart3 { - volatile u32 us_cr; - volatile u32 us_mr; - volatile u32 us_ier; - volatile u32 us_idr; - volatile u32 us_imr; - volatile u32 us_csr; - volatile u32 us_rhr; - volatile u32 us_thr; - volatile u32 us_brgr; - volatile u32 us_rtor; - volatile u32 us_ttgr; - volatile u32 us_reserved[5]; - volatile u32 us_fidi; - volatile u32 us_ner; - volatile u32 us_xxr; - volatile u32 us_if; -}; - -/* Register offsets */ -#define US_CR 0x0000 -#define US_MR 0x0004 -#define US_IER 0x0008 -#define US_IDR 0x000c -#define US_IMR 0x0010 -#define US_CSR 0x0014 -#define US_RHR 0x0018 -#define US_THR 0x001c -#define US_BRGR 0x0020 -#define US_RTOR 0x0024 -#define US_TTGR 0x0028 - -#define US_FIDI 0x0040 -#define US_NER 0x0044 -#define US_XXR 0x0048 -#define US_IF 0x004c - -#define US_RPR 0x0100 -#define US_RCR 0x0104 -#define US_TPR 0x0108 -#define US_TCR 0x010c -#define US_RNPR 0x0110 -#define US_RNCR 0x0114 -#define US_TNPR 0x0118 -#define US_TNCR 0x011c -#define US_PTCR 0x0120 -#define US_PTSR 0x0124 - - - - -/* USART3 Control Register */ -#define US_CR_RSTRX (1 << 2) -#define US_CR_RSTTX (1 << 3) -#define US_CR_RXEN (1 << 4) -#define US_CR_RXDIS (1 << 5) -#define US_CR_TXEN (1 << 6) -#define US_CR_TXDIS (1 << 7) -#define US_CR_RSTSTA (1 << 8) -#define US_CR_STTBRK (1 << 9) -#define US_CR_STPBRK (1 << 10) - -#define US_CR_DTREN (1 << 16) -#define US_CR_DTRDIS (1 << 17) -#define US_CR_RTSEN (1 << 18) -#define US_CR_RTSDIS (1 << 19) - -/* USART3 Mode Register */ -#define US_MR_MODE (15 << 0) -#define US_MR_MODE_NORMAL ( 0 << 0) -#define US_MR_MODE_HWFLOW ( 2 << 0) -#define US_MR_CLKS ( 3 << 4) -#define US_MR_CLKS_CLOCK ( 0 << 4) -#define US_MR_CLKS_FDIV1 ( 1 << 4) -#define US_MR_CLKS_SLOW ( 2 << 4) -#define US_MR_CLKS_EXT ( 3 << 4) -#define US_MR_CHRL_5BITS ( 0 << 6) -#define US_MR_CHRL_6BITS ( 1 << 6) -#define US_MR_CHRL_7BITS ( 2 << 6) -#define US_MR_CHRL_8BITS ( 3 << 6) -#define US_MR_SYNC ( 1 << 8) -#define US_MR_PAR_EVEN ( 0 << 9) -#define US_MR_PAR_ODD ( 1 << 9) -#define US_MR_PAR_SPACE ( 2 << 9) -#define US_MR_PAR_MARK ( 3 << 9) -#define US_MR_PAR_NONE ( 4 << 9) -#define US_MR_PAR_MDROP ( 6 << 9) -#define US_MR_NBSTOP_1BIT ( 0 << 12) -#define US_MR_NBSTOP_1_5BIT ( 1 << 12) -#define US_MR_NBSTOP_2BITS ( 2 << 12) -#define US_MR_OVER ( 1 << 19) -#define US_MR_OVER_X16 ( 0 << 19) -#define US_MR_OVER_X8 ( 1 << 19) - -/* USART3 Channel Status Register */ -#define US_CSR_RXRDY (1 << 0) -#define US_CSR_TXRDY (1 << 1) -#define US_CSR_RXBRK (1 << 2) -#define US_CSR_ENDRX (1 << 3) -#define US_CSR_ENDTX (1 << 4) - - -#define US_CSR_OVRE (1 << 5) -#define US_CSR_FRAME (1 << 6) -#define US_CSR_PARE (1 << 7) - -#define US_CSR_TXEMPTY (1 << 9) - -#define US_CSR_TXBUFE (1 << 11) -#define US_CSR_RXBUFF (1 << 12) -#define US_CSR_RIIC (1 << 16) -#define US_CSR_DSRIC (1 << 17) -#define US_CSR_DCDIC (1 << 18) -#define US_CSR_CTSIC (1 << 19) -#define US_CSR_RI (1 << 20) -#define US_CSR_DSR (1 << 21) -#define US_CSR_DCD (1 << 22) -#define US_CSR_CTS (1 << 23) - -/* USART3 Baud Rate Generator Register */ -#define US_BRGR_CD_OFFSET 0 -#define US_BRGR_FP_OFFSET 16 - -#define US_BRGR_CD_SIZE 16 -#define US_BRGR_FP_SIZE 3 - -#define US_BRGR_CD (0xFFFF << 0) -#define US_BRGR_FP ( 7 << 16) - -/*USART3 PDC Transfer Control Register */ -#define US_PTCR_RXTEN (1 << 0) -#define US_PTCR_RXTDIS (1 << 1) -#define US_PTCR_TXTEN (1 << 8) -#define US_PTCR_TXTDIS (1 << 9) - -/*USART3 PDC Transfer Status Register */ -#define US_PTSR_RXTEN (1 << 0) -#define US_PTSR_TXTEN (1 << 8) - - -int usart_init(int baudrate); -void usart_putc(char c); -void usart_puts(const char *s); -int usart_getc(void); -int usart_tstc(void); -void usart_setbrg(int baudrate, int cpu_clock); -void set_usart_base(void *usart_base); - - -_END_STD_C - -#endif /* MERLIN_USART3_H */ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a deleted file mode 100644 index aa673ec..0000000 Binary files a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a and /dev/null differ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds deleted file mode 100644 index 59152ac..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * AVR32 AT32UC3A0512 GNU LD script file. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: AVR32 AT32UC3A0512 - * - * - author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32") - -OUTPUT_ARCH(avr32:uc) - -ENTRY(_start) - -MEMORY -{ - FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00080000 - INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC - USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200 -} - -PHDRS -{ - FLASH PT_LOAD; - INTRAM_ALIGN PT_NULL; - INTRAM_AT_FLASH PT_LOAD; - INTRAM PT_NULL; - USERPAGE PT_LOAD; -} - -SECTIONS -{ - /* If this heap size is selected, all the INTRAM space from the end of the - data area to the beginning of the stack will be allocated for the heap. */ - __max_heap_size__ = -1; - - /* Use a default heap size if heap size was not defined. */ - __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__; - - /* Use a default stack size if stack size was not defined. */ - __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K; - - /* Read-only sections, merged into text segment: */ - PROVIDE (__executable_start = 0x80000000); . = 0x80000000; - .interp : { *(.interp) } >FLASH AT>FLASH :FLASH - .reset : { *(.reset) } >FLASH AT>FLASH :FLASH - .hash : { *(.hash) } >FLASH AT>FLASH :FLASH - .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH - .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH - .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH - .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH - .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH - .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH - .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH - .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH - .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH - .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH - .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH - .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH - .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH - .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH - .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH - .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH - .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH - .init : - { - KEEP (*(.init)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .plt : { *(.plt) } >FLASH AT>FLASH :FLASH - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - KEEP (*(.text.*personality*)) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .fini : - { - KEEP (*(.fini)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH - .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH - .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH - .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH - .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH - . = ORIGIN(INTRAM); - .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN - /* Exception handling */ - .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - PROVIDE (__preinit_array_start = ALIGN(32 / 8)); - .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__fini_array_end = .); - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin*.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dtors : - { - KEEP (*crtbegin*.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - KEEP (*(.gnu.linkonce.d.*personality*)) - SORT(CONSTRUCTORS) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (edata = .); - __bss_start = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(8); - } >INTRAM AT>INTRAM :INTRAM - . = ALIGN(8); - _end = .; - PROVIDE (end = .); - __heap_start__ = ALIGN(8); - .heap : - { - *(.heap) - . = (__heap_size__ == __max_heap_size__) ? - ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) : - __heap_size__; - } >INTRAM AT>INTRAM :INTRAM - __heap_end__ = .; - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ : - { - _stack = .; - *(.stack) - . = __stack_size__; - _estack = .; - } >INTRAM AT>INTRAM :INTRAM - .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds deleted file mode 100644 index a5926d8..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * AVR32 AT32UC3A1256 GNU LD script file. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: AVR32 AT32UC3A1256 - * - * - author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32") - -OUTPUT_ARCH(avr32:uc) - -ENTRY(_start) - -MEMORY -{ - FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00040000 - INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC - USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200 -} - -PHDRS -{ - FLASH PT_LOAD; - INTRAM_ALIGN PT_NULL; - INTRAM_AT_FLASH PT_LOAD; - INTRAM PT_NULL; - USERPAGE PT_LOAD; -} - -SECTIONS -{ - /* If this heap size is selected, all the INTRAM space from the end of the - data area to the beginning of the stack will be allocated for the heap. */ - __max_heap_size__ = -1; - - /* Use a default heap size if heap size was not defined. */ - __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__; - - /* Use a default stack size if stack size was not defined. */ - __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K; - - /* Read-only sections, merged into text segment: */ - PROVIDE (__executable_start = 0x80000000); . = 0x80000000; - .interp : { *(.interp) } >FLASH AT>FLASH :FLASH - .reset : { *(.reset) } >FLASH AT>FLASH :FLASH - .hash : { *(.hash) } >FLASH AT>FLASH :FLASH - .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH - .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH - .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH - .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH - .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH - .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH - .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH - .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH - .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH - .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH - .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH - .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH - .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH - .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH - .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH - .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH - .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH - .init : - { - KEEP (*(.init)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .plt : { *(.plt) } >FLASH AT>FLASH :FLASH - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - KEEP (*(.text.*personality*)) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .fini : - { - KEEP (*(.fini)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH - .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH - .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH - .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH - .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH - . = ORIGIN(INTRAM); - .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN - /* Exception handling */ - .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - PROVIDE (__preinit_array_start = ALIGN(32 / 8)); - .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__fini_array_end = .); - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin*.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dtors : - { - KEEP (*crtbegin*.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - KEEP (*(.gnu.linkonce.d.*personality*)) - SORT(CONSTRUCTORS) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (edata = .); - __bss_start = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(8); - } >INTRAM AT>INTRAM :INTRAM - . = ALIGN(8); - _end = .; - PROVIDE (end = .); - __heap_start__ = ALIGN(8); - .heap : - { - *(.heap) - . = (__heap_size__ == __max_heap_size__) ? - ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) : - __heap_size__; - } >INTRAM AT>INTRAM :INTRAM - __heap_end__ = .; - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ : - { - _stack = .; - *(.stack) - . = __stack_size__; - _estack = .; - } >INTRAM AT>INTRAM :INTRAM - .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h deleted file mode 100644 index 41163b6..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h +++ /dev/null @@ -1,328 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor macro repeating utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _MREPEAT_H_ -#define _MREPEAT_H_ - -#include "preprocessor.h" - - -//! Maximal number of repetitions supported by MREPEAT. -#define MREPEAT_LIMIT 256 - -/*! \brief Macro repeat. - * - * This macro represents a horizontal repetition construct. - * - * \param count The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT. - * \param macro A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with - * the current repetition number and the auxiliary data argument. - * \param data Auxiliary data passed to macro. - * - * \return macro(0, data) macro(1, data) ... macro(count - 1, data) - */ -#define MREPEAT(count, macro, data) TPASTE2(MREPEAT, count)(macro, data) - -#define MREPEAT0( macro, data) -#define MREPEAT1( macro, data) MREPEAT0( macro, data) macro( 0, data) -#define MREPEAT2( macro, data) MREPEAT1( macro, data) macro( 1, data) -#define MREPEAT3( macro, data) MREPEAT2( macro, data) macro( 2, data) -#define MREPEAT4( macro, data) MREPEAT3( macro, data) macro( 3, data) -#define MREPEAT5( macro, data) MREPEAT4( macro, data) macro( 4, data) -#define MREPEAT6( macro, data) MREPEAT5( macro, data) macro( 5, data) -#define MREPEAT7( macro, data) MREPEAT6( macro, data) macro( 6, data) -#define MREPEAT8( macro, data) MREPEAT7( macro, data) macro( 7, data) -#define MREPEAT9( macro, data) MREPEAT8( macro, data) macro( 8, data) -#define MREPEAT10( macro, data) MREPEAT9( macro, data) macro( 9, data) -#define MREPEAT11( macro, data) MREPEAT10( macro, data) macro( 10, data) -#define MREPEAT12( macro, data) MREPEAT11( macro, data) macro( 11, data) -#define MREPEAT13( macro, data) MREPEAT12( macro, data) macro( 12, data) -#define MREPEAT14( macro, data) MREPEAT13( macro, data) macro( 13, data) -#define MREPEAT15( macro, data) MREPEAT14( macro, data) macro( 14, data) -#define MREPEAT16( macro, data) MREPEAT15( macro, data) macro( 15, data) -#define MREPEAT17( macro, data) MREPEAT16( macro, data) macro( 16, data) -#define MREPEAT18( macro, data) MREPEAT17( macro, data) macro( 17, data) -#define MREPEAT19( macro, data) MREPEAT18( macro, data) macro( 18, data) -#define MREPEAT20( macro, data) MREPEAT19( macro, data) macro( 19, data) -#define MREPEAT21( macro, data) MREPEAT20( macro, data) macro( 20, data) -#define MREPEAT22( macro, data) MREPEAT21( macro, data) macro( 21, data) -#define MREPEAT23( macro, data) MREPEAT22( macro, data) macro( 22, data) -#define MREPEAT24( macro, data) MREPEAT23( macro, data) macro( 23, data) -#define MREPEAT25( macro, data) MREPEAT24( macro, data) macro( 24, data) -#define MREPEAT26( macro, data) MREPEAT25( macro, data) macro( 25, data) -#define MREPEAT27( macro, data) MREPEAT26( macro, data) macro( 26, data) -#define MREPEAT28( macro, data) MREPEAT27( macro, data) macro( 27, data) -#define MREPEAT29( macro, data) MREPEAT28( macro, data) macro( 28, data) -#define MREPEAT30( macro, data) MREPEAT29( macro, data) macro( 29, data) -#define MREPEAT31( macro, data) MREPEAT30( macro, data) macro( 30, data) -#define MREPEAT32( macro, data) MREPEAT31( macro, data) macro( 31, data) -#define MREPEAT33( macro, data) MREPEAT32( macro, data) macro( 32, data) -#define MREPEAT34( macro, data) MREPEAT33( macro, data) macro( 33, data) -#define MREPEAT35( macro, data) MREPEAT34( macro, data) macro( 34, data) -#define MREPEAT36( macro, data) MREPEAT35( macro, data) macro( 35, data) -#define MREPEAT37( macro, data) MREPEAT36( macro, data) macro( 36, data) -#define MREPEAT38( macro, data) MREPEAT37( macro, data) macro( 37, data) -#define MREPEAT39( macro, data) MREPEAT38( macro, data) macro( 38, data) -#define MREPEAT40( macro, data) MREPEAT39( macro, data) macro( 39, data) -#define MREPEAT41( macro, data) MREPEAT40( macro, data) macro( 40, data) -#define MREPEAT42( macro, data) MREPEAT41( macro, data) macro( 41, data) -#define MREPEAT43( macro, data) MREPEAT42( macro, data) macro( 42, data) -#define MREPEAT44( macro, data) MREPEAT43( macro, data) macro( 43, data) -#define MREPEAT45( macro, data) MREPEAT44( macro, data) macro( 44, data) -#define MREPEAT46( macro, data) MREPEAT45( macro, data) macro( 45, data) -#define MREPEAT47( macro, data) MREPEAT46( macro, data) macro( 46, data) -#define MREPEAT48( macro, data) MREPEAT47( macro, data) macro( 47, data) -#define MREPEAT49( macro, data) MREPEAT48( macro, data) macro( 48, data) -#define MREPEAT50( macro, data) MREPEAT49( macro, data) macro( 49, data) -#define MREPEAT51( macro, data) MREPEAT50( macro, data) macro( 50, data) -#define MREPEAT52( macro, data) MREPEAT51( macro, data) macro( 51, data) -#define MREPEAT53( macro, data) MREPEAT52( macro, data) macro( 52, data) -#define MREPEAT54( macro, data) MREPEAT53( macro, data) macro( 53, data) -#define MREPEAT55( macro, data) MREPEAT54( macro, data) macro( 54, data) -#define MREPEAT56( macro, data) MREPEAT55( macro, data) macro( 55, data) -#define MREPEAT57( macro, data) MREPEAT56( macro, data) macro( 56, data) -#define MREPEAT58( macro, data) MREPEAT57( macro, data) macro( 57, data) -#define MREPEAT59( macro, data) MREPEAT58( macro, data) macro( 58, data) -#define MREPEAT60( macro, data) MREPEAT59( macro, data) macro( 59, data) -#define MREPEAT61( macro, data) MREPEAT60( macro, data) macro( 60, data) -#define MREPEAT62( macro, data) MREPEAT61( macro, data) macro( 61, data) -#define MREPEAT63( macro, data) MREPEAT62( macro, data) macro( 62, data) -#define MREPEAT64( macro, data) MREPEAT63( macro, data) macro( 63, data) -#define MREPEAT65( macro, data) MREPEAT64( macro, data) macro( 64, data) -#define MREPEAT66( macro, data) MREPEAT65( macro, data) macro( 65, data) -#define MREPEAT67( macro, data) MREPEAT66( macro, data) macro( 66, data) -#define MREPEAT68( macro, data) MREPEAT67( macro, data) macro( 67, data) -#define MREPEAT69( macro, data) MREPEAT68( macro, data) macro( 68, data) -#define MREPEAT70( macro, data) MREPEAT69( macro, data) macro( 69, data) -#define MREPEAT71( macro, data) MREPEAT70( macro, data) macro( 70, data) -#define MREPEAT72( macro, data) MREPEAT71( macro, data) macro( 71, data) -#define MREPEAT73( macro, data) MREPEAT72( macro, data) macro( 72, data) -#define MREPEAT74( macro, data) MREPEAT73( macro, data) macro( 73, data) -#define MREPEAT75( macro, data) MREPEAT74( macro, data) macro( 74, data) -#define MREPEAT76( macro, data) MREPEAT75( macro, data) macro( 75, data) -#define MREPEAT77( macro, data) MREPEAT76( macro, data) macro( 76, data) -#define MREPEAT78( macro, data) MREPEAT77( macro, data) macro( 77, data) -#define MREPEAT79( macro, data) MREPEAT78( macro, data) macro( 78, data) -#define MREPEAT80( macro, data) MREPEAT79( macro, data) macro( 79, data) -#define MREPEAT81( macro, data) MREPEAT80( macro, data) macro( 80, data) -#define MREPEAT82( macro, data) MREPEAT81( macro, data) macro( 81, data) -#define MREPEAT83( macro, data) MREPEAT82( macro, data) macro( 82, data) -#define MREPEAT84( macro, data) MREPEAT83( macro, data) macro( 83, data) -#define MREPEAT85( macro, data) MREPEAT84( macro, data) macro( 84, data) -#define MREPEAT86( macro, data) MREPEAT85( macro, data) macro( 85, data) -#define MREPEAT87( macro, data) MREPEAT86( macro, data) macro( 86, data) -#define MREPEAT88( macro, data) MREPEAT87( macro, data) macro( 87, data) -#define MREPEAT89( macro, data) MREPEAT88( macro, data) macro( 88, data) -#define MREPEAT90( macro, data) MREPEAT89( macro, data) macro( 89, data) -#define MREPEAT91( macro, data) MREPEAT90( macro, data) macro( 90, data) -#define MREPEAT92( macro, data) MREPEAT91( macro, data) macro( 91, data) -#define MREPEAT93( macro, data) MREPEAT92( macro, data) macro( 92, data) -#define MREPEAT94( macro, data) MREPEAT93( macro, data) macro( 93, data) -#define MREPEAT95( macro, data) MREPEAT94( macro, data) macro( 94, data) -#define MREPEAT96( macro, data) MREPEAT95( macro, data) macro( 95, data) -#define MREPEAT97( macro, data) MREPEAT96( macro, data) macro( 96, data) -#define MREPEAT98( macro, data) MREPEAT97( macro, data) macro( 97, data) -#define MREPEAT99( macro, data) MREPEAT98( macro, data) macro( 98, data) -#define MREPEAT100(macro, data) MREPEAT99( macro, data) macro( 99, data) -#define MREPEAT101(macro, data) MREPEAT100(macro, data) macro(100, data) -#define MREPEAT102(macro, data) MREPEAT101(macro, data) macro(101, data) -#define MREPEAT103(macro, data) MREPEAT102(macro, data) macro(102, data) -#define MREPEAT104(macro, data) MREPEAT103(macro, data) macro(103, data) -#define MREPEAT105(macro, data) MREPEAT104(macro, data) macro(104, data) -#define MREPEAT106(macro, data) MREPEAT105(macro, data) macro(105, data) -#define MREPEAT107(macro, data) MREPEAT106(macro, data) macro(106, data) -#define MREPEAT108(macro, data) MREPEAT107(macro, data) macro(107, data) -#define MREPEAT109(macro, data) MREPEAT108(macro, data) macro(108, data) -#define MREPEAT110(macro, data) MREPEAT109(macro, data) macro(109, data) -#define MREPEAT111(macro, data) MREPEAT110(macro, data) macro(110, data) -#define MREPEAT112(macro, data) MREPEAT111(macro, data) macro(111, data) -#define MREPEAT113(macro, data) MREPEAT112(macro, data) macro(112, data) -#define MREPEAT114(macro, data) MREPEAT113(macro, data) macro(113, data) -#define MREPEAT115(macro, data) MREPEAT114(macro, data) macro(114, data) -#define MREPEAT116(macro, data) MREPEAT115(macro, data) macro(115, data) -#define MREPEAT117(macro, data) MREPEAT116(macro, data) macro(116, data) -#define MREPEAT118(macro, data) MREPEAT117(macro, data) macro(117, data) -#define MREPEAT119(macro, data) MREPEAT118(macro, data) macro(118, data) -#define MREPEAT120(macro, data) MREPEAT119(macro, data) macro(119, data) -#define MREPEAT121(macro, data) MREPEAT120(macro, data) macro(120, data) -#define MREPEAT122(macro, data) MREPEAT121(macro, data) macro(121, data) -#define MREPEAT123(macro, data) MREPEAT122(macro, data) macro(122, data) -#define MREPEAT124(macro, data) MREPEAT123(macro, data) macro(123, data) -#define MREPEAT125(macro, data) MREPEAT124(macro, data) macro(124, data) -#define MREPEAT126(macro, data) MREPEAT125(macro, data) macro(125, data) -#define MREPEAT127(macro, data) MREPEAT126(macro, data) macro(126, data) -#define MREPEAT128(macro, data) MREPEAT127(macro, data) macro(127, data) -#define MREPEAT129(macro, data) MREPEAT128(macro, data) macro(128, data) -#define MREPEAT130(macro, data) MREPEAT129(macro, data) macro(129, data) -#define MREPEAT131(macro, data) MREPEAT130(macro, data) macro(130, data) -#define MREPEAT132(macro, data) MREPEAT131(macro, data) macro(131, data) -#define MREPEAT133(macro, data) MREPEAT132(macro, data) macro(132, data) -#define MREPEAT134(macro, data) MREPEAT133(macro, data) macro(133, data) -#define MREPEAT135(macro, data) MREPEAT134(macro, data) macro(134, data) -#define MREPEAT136(macro, data) MREPEAT135(macro, data) macro(135, data) -#define MREPEAT137(macro, data) MREPEAT136(macro, data) macro(136, data) -#define MREPEAT138(macro, data) MREPEAT137(macro, data) macro(137, data) -#define MREPEAT139(macro, data) MREPEAT138(macro, data) macro(138, data) -#define MREPEAT140(macro, data) MREPEAT139(macro, data) macro(139, data) -#define MREPEAT141(macro, data) MREPEAT140(macro, data) macro(140, data) -#define MREPEAT142(macro, data) MREPEAT141(macro, data) macro(141, data) -#define MREPEAT143(macro, data) MREPEAT142(macro, data) macro(142, data) -#define MREPEAT144(macro, data) MREPEAT143(macro, data) macro(143, data) -#define MREPEAT145(macro, data) MREPEAT144(macro, data) macro(144, data) -#define MREPEAT146(macro, data) MREPEAT145(macro, data) macro(145, data) -#define MREPEAT147(macro, data) MREPEAT146(macro, data) macro(146, data) -#define MREPEAT148(macro, data) MREPEAT147(macro, data) macro(147, data) -#define MREPEAT149(macro, data) MREPEAT148(macro, data) macro(148, data) -#define MREPEAT150(macro, data) MREPEAT149(macro, data) macro(149, data) -#define MREPEAT151(macro, data) MREPEAT150(macro, data) macro(150, data) -#define MREPEAT152(macro, data) MREPEAT151(macro, data) macro(151, data) -#define MREPEAT153(macro, data) MREPEAT152(macro, data) macro(152, data) -#define MREPEAT154(macro, data) MREPEAT153(macro, data) macro(153, data) -#define MREPEAT155(macro, data) MREPEAT154(macro, data) macro(154, data) -#define MREPEAT156(macro, data) MREPEAT155(macro, data) macro(155, data) -#define MREPEAT157(macro, data) MREPEAT156(macro, data) macro(156, data) -#define MREPEAT158(macro, data) MREPEAT157(macro, data) macro(157, data) -#define MREPEAT159(macro, data) MREPEAT158(macro, data) macro(158, data) -#define MREPEAT160(macro, data) MREPEAT159(macro, data) macro(159, data) -#define MREPEAT161(macro, data) MREPEAT160(macro, data) macro(160, data) -#define MREPEAT162(macro, data) MREPEAT161(macro, data) macro(161, data) -#define MREPEAT163(macro, data) MREPEAT162(macro, data) macro(162, data) -#define MREPEAT164(macro, data) MREPEAT163(macro, data) macro(163, data) -#define MREPEAT165(macro, data) MREPEAT164(macro, data) macro(164, data) -#define MREPEAT166(macro, data) MREPEAT165(macro, data) macro(165, data) -#define MREPEAT167(macro, data) MREPEAT166(macro, data) macro(166, data) -#define MREPEAT168(macro, data) MREPEAT167(macro, data) macro(167, data) -#define MREPEAT169(macro, data) MREPEAT168(macro, data) macro(168, data) -#define MREPEAT170(macro, data) MREPEAT169(macro, data) macro(169, data) -#define MREPEAT171(macro, data) MREPEAT170(macro, data) macro(170, data) -#define MREPEAT172(macro, data) MREPEAT171(macro, data) macro(171, data) -#define MREPEAT173(macro, data) MREPEAT172(macro, data) macro(172, data) -#define MREPEAT174(macro, data) MREPEAT173(macro, data) macro(173, data) -#define MREPEAT175(macro, data) MREPEAT174(macro, data) macro(174, data) -#define MREPEAT176(macro, data) MREPEAT175(macro, data) macro(175, data) -#define MREPEAT177(macro, data) MREPEAT176(macro, data) macro(176, data) -#define MREPEAT178(macro, data) MREPEAT177(macro, data) macro(177, data) -#define MREPEAT179(macro, data) MREPEAT178(macro, data) macro(178, data) -#define MREPEAT180(macro, data) MREPEAT179(macro, data) macro(179, data) -#define MREPEAT181(macro, data) MREPEAT180(macro, data) macro(180, data) -#define MREPEAT182(macro, data) MREPEAT181(macro, data) macro(181, data) -#define MREPEAT183(macro, data) MREPEAT182(macro, data) macro(182, data) -#define MREPEAT184(macro, data) MREPEAT183(macro, data) macro(183, data) -#define MREPEAT185(macro, data) MREPEAT184(macro, data) macro(184, data) -#define MREPEAT186(macro, data) MREPEAT185(macro, data) macro(185, data) -#define MREPEAT187(macro, data) MREPEAT186(macro, data) macro(186, data) -#define MREPEAT188(macro, data) MREPEAT187(macro, data) macro(187, data) -#define MREPEAT189(macro, data) MREPEAT188(macro, data) macro(188, data) -#define MREPEAT190(macro, data) MREPEAT189(macro, data) macro(189, data) -#define MREPEAT191(macro, data) MREPEAT190(macro, data) macro(190, data) -#define MREPEAT192(macro, data) MREPEAT191(macro, data) macro(191, data) -#define MREPEAT193(macro, data) MREPEAT192(macro, data) macro(192, data) -#define MREPEAT194(macro, data) MREPEAT193(macro, data) macro(193, data) -#define MREPEAT195(macro, data) MREPEAT194(macro, data) macro(194, data) -#define MREPEAT196(macro, data) MREPEAT195(macro, data) macro(195, data) -#define MREPEAT197(macro, data) MREPEAT196(macro, data) macro(196, data) -#define MREPEAT198(macro, data) MREPEAT197(macro, data) macro(197, data) -#define MREPEAT199(macro, data) MREPEAT198(macro, data) macro(198, data) -#define MREPEAT200(macro, data) MREPEAT199(macro, data) macro(199, data) -#define MREPEAT201(macro, data) MREPEAT200(macro, data) macro(200, data) -#define MREPEAT202(macro, data) MREPEAT201(macro, data) macro(201, data) -#define MREPEAT203(macro, data) MREPEAT202(macro, data) macro(202, data) -#define MREPEAT204(macro, data) MREPEAT203(macro, data) macro(203, data) -#define MREPEAT205(macro, data) MREPEAT204(macro, data) macro(204, data) -#define MREPEAT206(macro, data) MREPEAT205(macro, data) macro(205, data) -#define MREPEAT207(macro, data) MREPEAT206(macro, data) macro(206, data) -#define MREPEAT208(macro, data) MREPEAT207(macro, data) macro(207, data) -#define MREPEAT209(macro, data) MREPEAT208(macro, data) macro(208, data) -#define MREPEAT210(macro, data) MREPEAT209(macro, data) macro(209, data) -#define MREPEAT211(macro, data) MREPEAT210(macro, data) macro(210, data) -#define MREPEAT212(macro, data) MREPEAT211(macro, data) macro(211, data) -#define MREPEAT213(macro, data) MREPEAT212(macro, data) macro(212, data) -#define MREPEAT214(macro, data) MREPEAT213(macro, data) macro(213, data) -#define MREPEAT215(macro, data) MREPEAT214(macro, data) macro(214, data) -#define MREPEAT216(macro, data) MREPEAT215(macro, data) macro(215, data) -#define MREPEAT217(macro, data) MREPEAT216(macro, data) macro(216, data) -#define MREPEAT218(macro, data) MREPEAT217(macro, data) macro(217, data) -#define MREPEAT219(macro, data) MREPEAT218(macro, data) macro(218, data) -#define MREPEAT220(macro, data) MREPEAT219(macro, data) macro(219, data) -#define MREPEAT221(macro, data) MREPEAT220(macro, data) macro(220, data) -#define MREPEAT222(macro, data) MREPEAT221(macro, data) macro(221, data) -#define MREPEAT223(macro, data) MREPEAT222(macro, data) macro(222, data) -#define MREPEAT224(macro, data) MREPEAT223(macro, data) macro(223, data) -#define MREPEAT225(macro, data) MREPEAT224(macro, data) macro(224, data) -#define MREPEAT226(macro, data) MREPEAT225(macro, data) macro(225, data) -#define MREPEAT227(macro, data) MREPEAT226(macro, data) macro(226, data) -#define MREPEAT228(macro, data) MREPEAT227(macro, data) macro(227, data) -#define MREPEAT229(macro, data) MREPEAT228(macro, data) macro(228, data) -#define MREPEAT230(macro, data) MREPEAT229(macro, data) macro(229, data) -#define MREPEAT231(macro, data) MREPEAT230(macro, data) macro(230, data) -#define MREPEAT232(macro, data) MREPEAT231(macro, data) macro(231, data) -#define MREPEAT233(macro, data) MREPEAT232(macro, data) macro(232, data) -#define MREPEAT234(macro, data) MREPEAT233(macro, data) macro(233, data) -#define MREPEAT235(macro, data) MREPEAT234(macro, data) macro(234, data) -#define MREPEAT236(macro, data) MREPEAT235(macro, data) macro(235, data) -#define MREPEAT237(macro, data) MREPEAT236(macro, data) macro(236, data) -#define MREPEAT238(macro, data) MREPEAT237(macro, data) macro(237, data) -#define MREPEAT239(macro, data) MREPEAT238(macro, data) macro(238, data) -#define MREPEAT240(macro, data) MREPEAT239(macro, data) macro(239, data) -#define MREPEAT241(macro, data) MREPEAT240(macro, data) macro(240, data) -#define MREPEAT242(macro, data) MREPEAT241(macro, data) macro(241, data) -#define MREPEAT243(macro, data) MREPEAT242(macro, data) macro(242, data) -#define MREPEAT244(macro, data) MREPEAT243(macro, data) macro(243, data) -#define MREPEAT245(macro, data) MREPEAT244(macro, data) macro(244, data) -#define MREPEAT246(macro, data) MREPEAT245(macro, data) macro(245, data) -#define MREPEAT247(macro, data) MREPEAT246(macro, data) macro(246, data) -#define MREPEAT248(macro, data) MREPEAT247(macro, data) macro(247, data) -#define MREPEAT249(macro, data) MREPEAT248(macro, data) macro(248, data) -#define MREPEAT250(macro, data) MREPEAT249(macro, data) macro(249, data) -#define MREPEAT251(macro, data) MREPEAT250(macro, data) macro(250, data) -#define MREPEAT252(macro, data) MREPEAT251(macro, data) macro(251, data) -#define MREPEAT253(macro, data) MREPEAT252(macro, data) macro(252, data) -#define MREPEAT254(macro, data) MREPEAT253(macro, data) macro(253, data) -#define MREPEAT255(macro, data) MREPEAT254(macro, data) macro(254, data) -#define MREPEAT256(macro, data) MREPEAT255(macro, data) macro(255, data) - - -#endif // _MREPEAT_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h deleted file mode 100644 index 5b996ba..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h +++ /dev/null @@ -1,55 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _PREPROCESSOR_H_ -#define _PREPROCESSOR_H_ - -#include "tpaste.h" -#include "stringz.h" -#include "mrepeat.h" - - -#endif // _PREPROCESSOR_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h deleted file mode 100644 index 3528ea0..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h +++ /dev/null @@ -1,75 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor stringizing utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _STRINGZ_H_ -#define _STRINGZ_H_ - - -/*! \brief Stringize. - * - * Stringize a preprocessing token, this token being allowed to be \#defined. - * - * May be used only within macros with the token passed as an argument if the token is \#defined. - * - * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN) - * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to - * writing "A0". - */ -#define STRINGZ(x) #x - -/*! \brief Absolute stringize. - * - * Stringize a preprocessing token, this token being allowed to be \#defined. - * - * No restriction of use if the token is \#defined. - * - * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is - * equivalent to writing "A0". - */ -#define ASTRINGZ(x) STRINGZ(x) - - -#endif // _STRINGZ_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h deleted file mode 100644 index a5d7bee..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h +++ /dev/null @@ -1,95 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor token pasting utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _TPASTE_H_ -#define _TPASTE_H_ - - -/*! \name Token Paste - * - * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. - * - * May be used only within macros with the tokens passed as arguments if the tokens are \#defined. - * - * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by - * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is - * equivalent to writing U32. - */ -//! @{ -#define TPASTE2( a, b) a##b -#define TPASTE3( a, b, c) a##b##c -#define TPASTE4( a, b, c, d) a##b##c##d -#define TPASTE5( a, b, c, d, e) a##b##c##d##e -#define TPASTE6( a, b, c, d, e, f) a##b##c##d##e##f -#define TPASTE7( a, b, c, d, e, f, g) a##b##c##d##e##f##g -#define TPASTE8( a, b, c, d, e, f, g, h) a##b##c##d##e##f##g##h -#define TPASTE9( a, b, c, d, e, f, g, h, i) a##b##c##d##e##f##g##h##i -#define TPASTE10(a, b, c, d, e, f, g, h, i, j) a##b##c##d##e##f##g##h##i##j -//! @} - -/*! \name Absolute Token Paste - * - * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. - * - * No restriction of use if the tokens are \#defined. - * - * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined - * as 32 is equivalent to writing U32. - */ -//! @{ -#define ATPASTE2( a, b) TPASTE2( a, b) -#define ATPASTE3( a, b, c) TPASTE3( a, b, c) -#define ATPASTE4( a, b, c, d) TPASTE4( a, b, c, d) -#define ATPASTE5( a, b, c, d, e) TPASTE5( a, b, c, d, e) -#define ATPASTE6( a, b, c, d, e, f) TPASTE6( a, b, c, d, e, f) -#define ATPASTE7( a, b, c, d, e, f, g) TPASTE7( a, b, c, d, e, f, g) -#define ATPASTE8( a, b, c, d, e, f, g, h) TPASTE8( a, b, c, d, e, f, g, h) -#define ATPASTE9( a, b, c, d, e, f, g, h, i) TPASTE9( a, b, c, d, e, f, g, h, i) -#define ATPASTE10(a, b, c, d, e, f, g, h, i, j) TPASTE10(a, b, c, d, e, f, g, h, i, j) -//! @} - - -#endif // _TPASTE_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x deleted file mode 100644 index 23b658b..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x +++ /dev/null @@ -1,121 +0,0 @@ -/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AVR32UC C runtime startup file. - * - * This file has been built from the Newlib crt0.S. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32UC devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#include - - -//! @{ -//! \verbatim - - - // This must be linked @ 0x80000000 if it is to be run upon reset. - .section .reset, "ax", @progbits - - - .global _start - .type _start, @function -_start: - // Jump to the C runtime startup routine. - lda.w pc, _stext - - - // _stext is placed outside the .reset section so that the program entry point - // can be changed without affecting the C runtime startup. - .section .text._stext, "ax", @progbits - - - .global _stext - .type _stext, @function -_stext: - // Set initial stack pointer. - lda.w sp, _estack - - // Set up EVBA so interrupts can be enabled. - lda.w r0, _evba - mtsr AVR32_EVBA, r0 - - // Enable the exception processing. - csrf AVR32_SR_EM_OFFSET - - // Load initialized data having a global lifetime from the data LMA. - lda.w r0, _data - lda.w r1, _edata - cp r0, r1 - brhs idata_load_loop_end - lda.w r2, _data_lma -idata_load_loop: - ld.d r4, r2++ - st.d r0++, r4 - cp r0, r1 - brlo idata_load_loop -idata_load_loop_end: - - // Clear uninitialized data having a global lifetime in the blank static storage section. - lda.w r0, __bss_start - lda.w r1, _end - cp r0, r1 - brhs udata_clear_loop_end - mov r2, 0 - mov r3, 0 -udata_clear_loop: - st.d r0++, r2 - cp r0, r1 - brlo udata_clear_loop -udata_clear_loop_end: - -#ifdef CONFIG_FRAME_POINTER - // Safety: Set the default "return" @ to the exit routine address. - lda.w lr, exit -#endif - - // Start the show. - lda.w pc, main - - -//! \endverbatim -//! @} diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h deleted file mode 100644 index 885be7f..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h +++ /dev/null @@ -1,1145 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Compiler file for AVR32. - * - * This file defines commonly used types and macros. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _COMPILER_H_ -#define _COMPILER_H_ - -#if ((defined __GNUC__) && (defined __AVR32__)) || (defined __ICCAVR32__ || defined __AAVR32__) -# include -#endif -#if (defined __ICCAVR32__) -# include -#endif -#include "preprocessor.h" - -#include "parts.h" - - -//_____ D E C L A R A T I O N S ____________________________________________ - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -#include -#include - - -#if (defined __ICCAVR32__) - -/*! \name Compiler Keywords - * - * Port of some keywords from GNU GCC for AVR32 to IAR Embedded Workbench for Atmel AVR32. - */ -//! @{ -#define __asm__ asm -#define __inline__ inline -#define __volatile__ -//! @} - -#endif - - -/*! \name Usual Types - */ -//! @{ -typedef unsigned char Bool; //!< Boolean. -#ifndef __cplusplus -#if !defined(__bool_true_false_are_defined) -typedef unsigned char bool; //!< Boolean. -#endif -#endif -typedef signed char S8 ; //!< 8-bit signed integer. -typedef unsigned char U8 ; //!< 8-bit unsigned integer. -typedef signed short int S16; //!< 16-bit signed integer. -typedef unsigned short int U16; //!< 16-bit unsigned integer. -typedef signed long int S32; //!< 32-bit signed integer. -typedef unsigned long int U32; //!< 32-bit unsigned integer. -typedef signed long long int S64; //!< 64-bit signed integer. -typedef unsigned long long int U64; //!< 64-bit unsigned integer. -typedef float F32; //!< 32-bit floating-point number. -typedef double F64; //!< 64-bit floating-point number. -//! @} - - -/*! \name Status Types - */ -//! @{ -typedef Bool Status_bool_t; //!< Boolean status. -typedef U8 Status_t; //!< 8-bit-coded status. -//! @} - - -/*! \name Aliasing Aggregate Types - */ -//! @{ - -//! 16-bit union. -typedef union -{ - S16 s16 ; - U16 u16 ; - S8 s8 [2]; - U8 u8 [2]; -} Union16; - -//! 32-bit union. -typedef union -{ - S32 s32 ; - U32 u32 ; - S16 s16[2]; - U16 u16[2]; - S8 s8 [4]; - U8 u8 [4]; -} Union32; - -//! 64-bit union. -typedef union -{ - S64 s64 ; - U64 u64 ; - S32 s32[2]; - U32 u32[2]; - S16 s16[4]; - U16 u16[4]; - S8 s8 [8]; - U8 u8 [8]; -} Union64; - -//! Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - S64 *s64ptr; - U64 *u64ptr; - S32 *s32ptr; - U32 *u32ptr; - S16 *s16ptr; - U16 *u16ptr; - S8 *s8ptr ; - U8 *u8ptr ; -} UnionPtr; - -//! Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - volatile S64 *s64ptr; - volatile U64 *u64ptr; - volatile S32 *s32ptr; - volatile U32 *u32ptr; - volatile S16 *s16ptr; - volatile U16 *u16ptr; - volatile S8 *s8ptr ; - volatile U8 *u8ptr ; -} UnionVPtr; - -//! Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - const S64 *s64ptr; - const U64 *u64ptr; - const S32 *s32ptr; - const U32 *u32ptr; - const S16 *s16ptr; - const U16 *u16ptr; - const S8 *s8ptr ; - const U8 *u8ptr ; -} UnionCPtr; - -//! Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - const volatile S64 *s64ptr; - const volatile U64 *u64ptr; - const volatile S32 *s32ptr; - const volatile U32 *u32ptr; - const volatile S16 *s16ptr; - const volatile U16 *u16ptr; - const volatile S8 *s8ptr ; - const volatile U8 *u8ptr ; -} UnionCVPtr; - -//! Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - S64 *s64ptr; - U64 *u64ptr; - S32 *s32ptr; - U32 *u32ptr; - S16 *s16ptr; - U16 *u16ptr; - S8 *s8ptr ; - U8 *u8ptr ; -} StructPtr; - -//! Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - volatile S64 *s64ptr; - volatile U64 *u64ptr; - volatile S32 *s32ptr; - volatile U32 *u32ptr; - volatile S16 *s16ptr; - volatile U16 *u16ptr; - volatile S8 *s8ptr ; - volatile U8 *u8ptr ; -} StructVPtr; - -//! Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - const S64 *s64ptr; - const U64 *u64ptr; - const S32 *s32ptr; - const U32 *u32ptr; - const S16 *s16ptr; - const U16 *u16ptr; - const S8 *s8ptr ; - const U8 *u8ptr ; -} StructCPtr; - -//! Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - const volatile S64 *s64ptr; - const volatile U64 *u64ptr; - const volatile S32 *s32ptr; - const volatile U32 *u32ptr; - const volatile S16 *s16ptr; - const volatile U16 *u16ptr; - const volatile S8 *s8ptr ; - const volatile U8 *u8ptr ; -} StructCVPtr; - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -//_____ M A C R O S ________________________________________________________ - -/*! \name Usual Constants - */ -//! @{ -#define DISABLE 0 -#define ENABLE 1 -#define DISABLED 0 -#define ENABLED 1 -#define OFF 0 -#define ON 1 -#define FALSE 0 -#define TRUE 1 -#ifndef __cplusplus -#if !defined(__bool_true_false_are_defined) -#define false FALSE -#define true TRUE -#endif -#endif -#define KO 0 -#define OK 1 -#define PASS 0 -#define FAIL 1 -#define LOW 0 -#define HIGH 1 -#define CLR 0 -#define SET 1 -//! @} - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -/*! \name Bit-Field Handling - */ -//! @{ - -/*! \brief Reads the bits of a value specified by a given bit-mask. - * - * \param value Value to read bits from. - * \param mask Bit-mask indicating bits to read. - * - * \return Read bits. - */ -#define Rd_bits( value, mask) ((value) & (mask)) - -/*! \brief Writes the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue to write bits to. - * \param mask Bit-mask indicating bits to write. - * \param bits Bits to write. - * - * \return Resulting value with written bits. - */ -#define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) |\ - ((bits ) & (mask))) - -/*! \brief Tests the bits of a value specified by a given bit-mask. - * - * \param value Value of which to test bits. - * \param mask Bit-mask indicating bits to test. - * - * \return \c 1 if at least one of the tested bits is set, else \c 0. - */ -#define Tst_bits( value, mask) (Rd_bits(value, mask) != 0) - -/*! \brief Clears the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to clear bits. - * \param mask Bit-mask indicating bits to clear. - * - * \return Resulting value with cleared bits. - */ -#define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask)) - -/*! \brief Sets the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to set bits. - * \param mask Bit-mask indicating bits to set. - * - * \return Resulting value with set bits. - */ -#define Set_bits(lvalue, mask) ((lvalue) |= (mask)) - -/*! \brief Toggles the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to toggle bits. - * \param mask Bit-mask indicating bits to toggle. - * - * \return Resulting value with toggled bits. - */ -#define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask)) - -/*! \brief Reads the bit-field of a value specified by a given bit-mask. - * - * \param value Value to read a bit-field from. - * \param mask Bit-mask indicating the bit-field to read. - * - * \return Read bit-field. - */ -#define Rd_bitfield( value, mask) (Rd_bits( value, mask) >> ctz(mask)) - -/*! \brief Writes the bit-field of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue to write a bit-field to. - * \param mask Bit-mask indicating the bit-field to write. - * \param bitfield Bit-field to write. - * - * \return Resulting value with written bit-field. - */ -#define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (U32)(bitfield) << ctz(mask))) - -//! @} - - -/*! \brief This macro is used to test fatal errors. - * - * The macro tests if the expression is FALSE. If it is, a fatal error is - * detected and the application hangs up. - * - * \param expr Expression to evaluate and supposed to be nonzero. - */ -#ifdef _ASSERT_ENABLE_ - #define Assert(expr) \ - {\ - if (!(expr)) while (TRUE);\ - } -#else - #define Assert(expr) -#endif - - -/*! \name Zero-Bit Counting - * - * Under AVR32-GCC, __builtin_clz and __builtin_ctz behave like macros when - * applied to constant expressions (values known at compile time), so they are - * more optimized than the use of the corresponding assembly instructions and - * they can be used as constant expressions e.g. to initialize objects having - * static storage duration, and like the corresponding assembly instructions - * when applied to non-constant expressions (values unknown at compile time), so - * they are more optimized than an assembly periphrasis. Hence, clz and ctz - * ensure a possible and optimized behavior for both constant and non-constant - * expressions. - */ -//! @{ - -/*! \brief Counts the leading zero bits of the given value considered as a 32-bit integer. - * - * \param u Value of which to count the leading zero bits. - * - * \return The count of leading zero bits in \a u. - */ -#if (defined __GNUC__) - #define clz(u) __builtin_clz(u) -#elif (defined __ICCAVR32__) - #define clz(u) __count_leading_zeros(u) -#endif - -/*! \brief Counts the trailing zero bits of the given value considered as a 32-bit integer. - * - * \param u Value of which to count the trailing zero bits. - * - * \return The count of trailing zero bits in \a u. - */ -#if (defined __GNUC__) - #define ctz(u) __builtin_ctz(u) -#elif (defined __ICCAVR32__) - #define ctz(u) __count_trailing_zeros(u) -#endif - -//! @} - - -/*! \name Bit Reversing - */ -//! @{ - -/*! \brief Reverses the bits of \a u8. - * - * \param u8 U8 of which to reverse the bits. - * - * \return Value resulting from \a u8 with reversed bits. - */ -#define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24)) - -/*! \brief Reverses the bits of \a u16. - * - * \param u16 U16 of which to reverse the bits. - * - * \return Value resulting from \a u16 with reversed bits. - */ -#define bit_reverse16(u16) ((U16)(bit_reverse32((U16)(u16)) >> 16)) - -/*! \brief Reverses the bits of \a u32. - * - * \param u32 U32 of which to reverse the bits. - * - * \return Value resulting from \a u32 with reversed bits. - */ -#if (defined __GNUC__) - #define bit_reverse32(u32) \ - (\ - {\ - unsigned int __value = (U32)(u32);\ - __asm__ ("brev\t%0" : "+r" (__value) : : "cc");\ - (U32)__value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define bit_reverse32(u32) ((U32)__bit_reverse((U32)(u32))) -#endif - -/*! \brief Reverses the bits of \a u64. - * - * \param u64 U64 of which to reverse the bits. - * - * \return Value resulting from \a u64 with reversed bits. - */ -#define bit_reverse64(u64) ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\ - ((U64)bit_reverse32((U64)(u64)) << 32))) - -//! @} - - -/*! \name Alignment - */ -//! @{ - -/*! \brief Tests alignment of the number \a val with the \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0. - */ -#define Test_align(val, n ) (!Tst_bits( val, (n) - 1 ) ) - -/*! \brief Gets alignment of the number \a val with respect to the \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Alignment of the number \a val with respect to the \a n boundary. - */ -#define Get_align( val, n ) ( Rd_bits( val, (n) - 1 ) ) - -/*! \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary. - * - * \param lval Input/output lvalue. - * \param n Boundary. - * \param alg Alignment. - * - * \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary. - */ -#define Set_align(lval, n, alg) ( Wr_bits(lval, (n) - 1, alg) ) - -/*! \brief Aligns the number \a val with the upper \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Value resulting from the number \a val aligned with the upper \a n boundary. - */ -#define Align_up( val, n ) (((val) + ((n) - 1)) & ~((n) - 1)) - -/*! \brief Aligns the number \a val with the lower \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Value resulting from the number \a val aligned with the lower \a n boundary. - */ -#define Align_down(val, n ) ( (val) & ~((n) - 1)) - -//! @} - - -/*! \name Mathematics - * - * The same considerations as for clz and ctz apply here but AVR32-GCC does not - * provide built-in functions to access the assembly instructions abs, min and - * max and it does not produce them by itself in most cases, so two sets of - * macros are defined here: - * - Abs, Min and Max to apply to constant expressions (values known at - * compile time); - * - abs, min and max to apply to non-constant expressions (values unknown at - * compile time). - */ -//! @{ - -/*! \brief Takes the absolute value of \a a. - * - * \param a Input value. - * - * \return Absolute value of \a a. - * - * \note More optimized if only used with values known at compile time. - */ -#define Abs(a) (((a) < 0 ) ? -(a) : (a)) - -/*! \brief Takes the minimal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Minimal value of \a a and \a b. - * - * \note More optimized if only used with values known at compile time. - */ -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -/*! \brief Takes the maximal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Maximal value of \a a and \a b. - * - * \note More optimized if only used with values known at compile time. - */ -#define Max(a, b) (((a) > (b)) ? (a) : (b)) - -/*! \brief Takes the absolute value of \a a. - * - * \param a Input value. - * - * \return Absolute value of \a a. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define abs(a) \ - (\ - {\ - int __value = (a);\ - __asm__ ("abs\t%0" : "+r" (__value) : : "cc");\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define abs(a) Abs(a) -#endif - -/*! \brief Takes the minimal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Minimal value of \a a and \a b. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define min(a, b) \ - (\ - {\ - int __value, __arg_a = (a), __arg_b = (b);\ - __asm__ ("min\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define min(a, b) __min(a, b) -#endif - -/*! \brief Takes the maximal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Maximal value of \a a and \a b. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define max(a, b) \ - (\ - {\ - int __value, __arg_a = (a), __arg_b = (b);\ - __asm__ ("max\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define max(a, b) __max(a, b) -#endif - -//! @} - - -/*! \brief Calls the routine at address \a addr. - * - * It generates a long call opcode. - * - * For example, `Long_call(0x80000000)' generates a software reset on a UC3 if - * it is invoked from the CPU supervisor mode. - * - * \param addr Address of the routine to call. - * - * \note It may be used as a long jump opcode in some special cases. - */ -#define Long_call(addr) ((*(void (*)(void))(addr))()) - -/*! \brief Resets the CPU by software. - * - * \warning It shall not be called from the CPU application mode. - */ -#if (defined __GNUC__) - #define Reset_CPU() \ - (\ - {\ - __asm__ __volatile__ (\ - "lddpc r9, 3f\n\t"\ - "mfsr r8, %[SR]\n\t"\ - "bfextu r8, r8, %[SR_M_OFFSET], %[SR_M_SIZE]\n\t"\ - "cp.w r8, 0b001\n\t"\ - "breq 0f\n\t"\ - "sub r8, pc, $ - 1f\n\t"\ - "pushm r8-r9\n\t"\ - "rete\n"\ - "0:\n\t"\ - "mtsr %[SR], r9\n"\ - "1:\n\t"\ - "mov r0, 0\n\t"\ - "mov r1, 0\n\t"\ - "mov r2, 0\n\t"\ - "mov r3, 0\n\t"\ - "mov r4, 0\n\t"\ - "mov r5, 0\n\t"\ - "mov r6, 0\n\t"\ - "mov r7, 0\n\t"\ - "mov r8, 0\n\t"\ - "mov r9, 0\n\t"\ - "mov r10, 0\n\t"\ - "mov r11, 0\n\t"\ - "mov r12, 0\n\t"\ - "mov sp, 0\n\t"\ - "stdsp sp[0], sp\n\t"\ - "ldmts sp, sp\n\t"\ - "mov lr, 0\n\t"\ - "lddpc pc, 2f\n\t"\ - ".balign 4\n"\ - "2:\n\t"\ - ".word _start\n"\ - "3:\n\t"\ - ".word %[RESET_SR]"\ - :\ - : [SR] "i" (AVR32_SR),\ - [SR_M_OFFSET] "i" (AVR32_SR_M_OFFSET),\ - [SR_M_SIZE] "i" (AVR32_SR_M_SIZE),\ - [RESET_SR] "i" (AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))\ - );\ - }\ - ) -#elif (defined __ICCAVR32__) - #define Reset_CPU() \ - {\ - extern void *volatile __program_start;\ - __asm__ __volatile__ (\ - "mov r7, LWRD(__program_start)\n\t"\ - "orh r7, HWRD(__program_start)\n\t"\ - "mov r9, LWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\ - "orh r9, HWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\ - "mfsr r8, "ASTRINGZ(AVR32_SR)"\n\t"\ - "bfextu r8, r8, "ASTRINGZ(AVR32_SR_M_OFFSET)", "ASTRINGZ(AVR32_SR_M_SIZE)"\n\t"\ - "cp.w r8, 001b\n\t"\ - "breq $ + 10\n\t"\ - "sub r8, pc, -12\n\t"\ - "pushm r8-r9\n\t"\ - "rete\n\t"\ - "mtsr "ASTRINGZ(AVR32_SR)", r9\n\t"\ - "mov r0, 0\n\t"\ - "mov r1, 0\n\t"\ - "mov r2, 0\n\t"\ - "mov r3, 0\n\t"\ - "mov r4, 0\n\t"\ - "mov r5, 0\n\t"\ - "mov r6, 0\n\t"\ - "st.w r0[4], r7\n\t"\ - "mov r7, 0\n\t"\ - "mov r8, 0\n\t"\ - "mov r9, 0\n\t"\ - "mov r10, 0\n\t"\ - "mov r11, 0\n\t"\ - "mov r12, 0\n\t"\ - "mov sp, 0\n\t"\ - "stdsp sp[0], sp\n\t"\ - "ldmts sp, sp\n\t"\ - "mov lr, 0\n\t"\ - "ld.w pc, lr[4]"\ - );\ - __program_start;\ - } -#endif - - -/*! \name System Register Access - */ -//! @{ - -/*! \brief Gets the value of the \a sysreg system register. - * - * \param sysreg Address of the system register of which to get the value. - * - * \return Value of the \a sysreg system register. - */ -#if (defined __GNUC__) - #define Get_system_register(sysreg) __builtin_mfsr(sysreg) -#elif (defined __ICCAVR32__) - #define Get_system_register(sysreg) __get_system_register(sysreg) -#endif - -/*! \brief Sets the value of the \a sysreg system register to \a value. - * - * \param sysreg Address of the system register of which to set the value. - * \param value Value to set the \a sysreg system register to. - */ -#if (defined __GNUC__) - #define Set_system_register(sysreg, value) __builtin_mtsr(sysreg, value) -#elif (defined __ICCAVR32__) - #define Set_system_register(sysreg, value) __set_system_register(sysreg, value) -#endif - -//! @} - - -/*! \name CPU Status Register Access - */ -//! @{ - -/*! \brief Tells whether exceptions are globally enabled. - * - * \return \c 1 if exceptions are globally enabled, else \c 0. - */ -#define Is_global_exception_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_EM_MASK)) - -/*! \brief Disables exceptions globally. - */ -#if (defined __GNUC__) - #define Disable_global_exception() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Disable_global_exception() (__set_status_flag(AVR32_SR_EM_OFFSET)) -#endif - -/*! \brief Enables exceptions globally. - */ -#if (defined __GNUC__) - #define Enable_global_exception() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Enable_global_exception() (__clear_status_flag(AVR32_SR_EM_OFFSET)) -#endif - -/*! \brief Tells whether interrupts are globally enabled. - * - * \return \c 1 if interrupts are globally enabled, else \c 0. - */ -#define Is_global_interrupt_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_GM_MASK)) - -/*! \brief Disables interrupts globally. - */ -#if (defined __GNUC__) - #define Disable_global_interrupt() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Disable_global_interrupt() (__disable_interrupt()) -#endif - -/*! \brief Enables interrupts globally. - */ -#if (defined __GNUC__) - #define Enable_global_interrupt() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Enable_global_interrupt() (__enable_interrupt()) -#endif - -/*! \brief Tells whether interrupt level \a int_level is enabled. - * - * \param int_level Interrupt level (0 to 3). - * - * \return \c 1 if interrupt level \a int_level is enabled, else \c 0. - */ -#define Is_interrupt_level_enabled(int_level) (!Tst_bits(Get_system_register(AVR32_SR), TPASTE3(AVR32_SR_I, int_level, M_MASK))) - -/*! \brief Disables interrupt level \a int_level. - * - * \param int_level Interrupt level to disable (0 to 3). - */ -#if (defined __GNUC__) - #define Disable_interrupt_level(int_level) ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));}) -#elif (defined __ICCAVR32__) - #define Disable_interrupt_level(int_level) (__set_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET))) -#endif - -/*! \brief Enables interrupt level \a int_level. - * - * \param int_level Interrupt level to enable (0 to 3). - */ -#if (defined __GNUC__) - #define Enable_interrupt_level(int_level) ({__asm__ __volatile__ ("csrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));}) -#elif (defined __ICCAVR32__) - #define Enable_interrupt_level(int_level) (__clear_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET))) -#endif - -/*! \brief Protects subsequent code from interrupts. - */ -#define AVR32_ENTER_CRITICAL_REGION( ) \ - { \ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \ - Disable_global_interrupt(); // Disable the appropriate interrupts. - -/*! \brief This macro must always be used in conjunction with AVR32_ENTER_CRITICAL_REGION - * so that interrupts are enabled again. - */ -#define AVR32_LEAVE_CRITICAL_REGION( ) \ - if (global_interrupt_enabled) Enable_global_interrupt(); \ - } - -//! @} - - -/*! \name Debug Register Access - */ -//! @{ - -/*! \brief Gets the value of the \a dbgreg debug register. - * - * \param dbgreg Address of the debug register of which to get the value. - * - * \return Value of the \a dbgreg debug register. - */ -#if (defined __GNUC__) - #define Get_debug_register(dbgreg) __builtin_mfdr(dbgreg) -#elif (defined __ICCAVR32__) - #define Get_debug_register(dbgreg) __get_debug_register(dbgreg) -#endif - -/*! \brief Sets the value of the \a dbgreg debug register to \a value. - * - * \param dbgreg Address of the debug register of which to set the value. - * \param value Value to set the \a dbgreg debug register to. - */ -#if (defined __GNUC__) - #define Set_debug_register(dbgreg, value) __builtin_mtdr(dbgreg, value) -#elif (defined __ICCAVR32__) - #define Set_debug_register(dbgreg, value) __set_debug_register(dbgreg, value) -#endif - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -//! Boolean evaluating MCU little endianism. -#if ((defined __GNUC__) && (defined __AVR32__)) || ((defined __ICCAVR32__) || (defined __AAVR32__)) - #define LITTLE_ENDIAN_MCU FALSE -#else - #error If you are here, you should check what is exactly the processor you are using... - #define LITTLE_ENDIAN_MCU FALSE -#endif - -// Check that MCU endianism is correctly defined. -#ifndef LITTLE_ENDIAN_MCU - #error YOU MUST define the MCU endianism with LITTLE_ENDIAN_MCU: either FALSE or TRUE -#endif - -//! Boolean evaluating MCU big endianism. -#define BIG_ENDIAN_MCU (!LITTLE_ENDIAN_MCU) - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -/*! \name MCU Endianism Handling - */ -//! @{ - -#if (LITTLE_ENDIAN_MCU==TRUE) - #define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16. - #define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16. - - #define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32. - #define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32. - #define LSB0W(u32) (((U8 *)&(u32))[0]) //!< Least significant byte of 1st rank of \a u32. - #define LSB1W(u32) (((U8 *)&(u32))[1]) //!< Least significant byte of 2nd rank of \a u32. - #define LSB2W(u32) (((U8 *)&(u32))[2]) //!< Least significant byte of 3rd rank of \a u32. - #define LSB3W(u32) (((U8 *)&(u32))[3]) //!< Least significant byte of 4th rank of \a u32. - #define MSB3W(u32) LSB0W(u32) //!< Most significant byte of 4th rank of \a u32. - #define MSB2W(u32) LSB1W(u32) //!< Most significant byte of 3rd rank of \a u32. - #define MSB1W(u32) LSB2W(u32) //!< Most significant byte of 2nd rank of \a u32. - #define MSB0W(u32) LSB3W(u32) //!< Most significant byte of 1st rank of \a u32. - - #define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64. - #define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64. - #define LSH0(u64) (((U16 *)&(u64))[0]) //!< Least significant half-word of 1st rank of \a u64. - #define LSH1(u64) (((U16 *)&(u64))[1]) //!< Least significant half-word of 2nd rank of \a u64. - #define LSH2(u64) (((U16 *)&(u64))[2]) //!< Least significant half-word of 3rd rank of \a u64. - #define LSH3(u64) (((U16 *)&(u64))[3]) //!< Least significant half-word of 4th rank of \a u64. - #define MSH3(u64) LSH0(u64) //!< Most significant half-word of 4th rank of \a u64. - #define MSH2(u64) LSH1(u64) //!< Most significant half-word of 3rd rank of \a u64. - #define MSH1(u64) LSH2(u64) //!< Most significant half-word of 2nd rank of \a u64. - #define MSH0(u64) LSH3(u64) //!< Most significant half-word of 1st rank of \a u64. - #define LSB0D(u64) (((U8 *)&(u64))[0]) //!< Least significant byte of 1st rank of \a u64. - #define LSB1D(u64) (((U8 *)&(u64))[1]) //!< Least significant byte of 2nd rank of \a u64. - #define LSB2D(u64) (((U8 *)&(u64))[2]) //!< Least significant byte of 3rd rank of \a u64. - #define LSB3D(u64) (((U8 *)&(u64))[3]) //!< Least significant byte of 4th rank of \a u64. - #define LSB4D(u64) (((U8 *)&(u64))[4]) //!< Least significant byte of 5th rank of \a u64. - #define LSB5D(u64) (((U8 *)&(u64))[5]) //!< Least significant byte of 6th rank of \a u64. - #define LSB6D(u64) (((U8 *)&(u64))[6]) //!< Least significant byte of 7th rank of \a u64. - #define LSB7D(u64) (((U8 *)&(u64))[7]) //!< Least significant byte of 8th rank of \a u64. - #define MSB7D(u64) LSB0D(u64) //!< Most significant byte of 8th rank of \a u64. - #define MSB6D(u64) LSB1D(u64) //!< Most significant byte of 7th rank of \a u64. - #define MSB5D(u64) LSB2D(u64) //!< Most significant byte of 6th rank of \a u64. - #define MSB4D(u64) LSB3D(u64) //!< Most significant byte of 5th rank of \a u64. - #define MSB3D(u64) LSB4D(u64) //!< Most significant byte of 4th rank of \a u64. - #define MSB2D(u64) LSB5D(u64) //!< Most significant byte of 3rd rank of \a u64. - #define MSB1D(u64) LSB6D(u64) //!< Most significant byte of 2nd rank of \a u64. - #define MSB0D(u64) LSB7D(u64) //!< Most significant byte of 1st rank of \a u64. - -#elif (BIG_ENDIAN_MCU==TRUE) - #define MSB(u16) (((U8 *)&(u16))[0]) //!< Most significant byte of \a u16. - #define LSB(u16) (((U8 *)&(u16))[1]) //!< Least significant byte of \a u16. - - #define MSH(u32) (((U16 *)&(u32))[0]) //!< Most significant half-word of \a u32. - #define LSH(u32) (((U16 *)&(u32))[1]) //!< Least significant half-word of \a u32. - #define MSB0W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 1st rank of \a u32. - #define MSB1W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 2nd rank of \a u32. - #define MSB2W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 3rd rank of \a u32. - #define MSB3W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 4th rank of \a u32. - #define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32. - #define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32. - #define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32. - #define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32. - - #define MSW(u64) (((U32 *)&(u64))[0]) //!< Most significant word of \a u64. - #define LSW(u64) (((U32 *)&(u64))[1]) //!< Least significant word of \a u64. - #define MSH0(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 1st rank of \a u64. - #define MSH1(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 2nd rank of \a u64. - #define MSH2(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 3rd rank of \a u64. - #define MSH3(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 4th rank of \a u64. - #define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64. - #define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64. - #define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64. - #define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64. - #define MSB0D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 1st rank of \a u64. - #define MSB1D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 2nd rank of \a u64. - #define MSB2D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 3rd rank of \a u64. - #define MSB3D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 4th rank of \a u64. - #define MSB4D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 5th rank of \a u64. - #define MSB5D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 6th rank of \a u64. - #define MSB6D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 7th rank of \a u64. - #define MSB7D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 8th rank of \a u64. - #define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64. - #define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64. - #define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64. - #define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64. - #define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64. - #define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64. - #define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64. - #define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64. - -#else - #error Unknown endianism. -#endif - -//! @} - - -/*! \name Endianism Conversion - * - * The same considerations as for clz and ctz apply here but AVR32-GCC's - * __builtin_bswap_16 and __builtin_bswap_32 do not behave like macros when - * applied to constant expressions, so two sets of macros are defined here: - * - Swap16, Swap32 and Swap64 to apply to constant expressions (values known - * at compile time); - * - swap16, swap32 and swap64 to apply to non-constant expressions (values - * unknown at compile time). - */ -//! @{ - -/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). - * - * \param u16 U16 of which to toggle the endianism. - * - * \return Value resulting from \a u16 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\ - ((U16)(u16) << 8))) - -/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). - * - * \param u32 U32 of which to toggle the endianism. - * - * \return Value resulting from \a u32 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\ - ((U32)Swap16((U32)(u32)) << 16))) - -/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). - * - * \param u64 U64 of which to toggle the endianism. - * - * \return Value resulting from \a u64 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\ - ((U64)Swap32((U64)(u64)) << 32))) - -/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). - * - * \param u16 U16 of which to toggle the endianism. - * - * \return Value resulting from \a u16 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define swap16(u16) ((U16)__builtin_bswap_16((U16)(u16))) -#elif (defined __ICCAVR32__) - #define swap16(u16) ((U16)__swap_bytes_in_halfwords((U16)(u16))) -#endif - -/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). - * - * \param u32 U32 of which to toggle the endianism. - * - * \return Value resulting from \a u32 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define swap32(u32) ((U32)__builtin_bswap_32((U32)(u32))) -#elif (defined __ICCAVR32__) - #define swap32(u32) ((U32)__swap_bytes((U32)(u32))) -#endif - -/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). - * - * \param u64 U64 of which to toggle the endianism. - * - * \return Value resulting from \a u64 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#define swap64(u64) ((U64)(((U64)swap32((U64)(u64) >> 32)) |\ - ((U64)swap32((U64)(u64)) << 32))) - -//! @} - - -/*! \name Target Abstraction - */ -//! @{ - -#define _GLOBEXT_ extern //!< extern storage-class specifier. -#define _CONST_TYPE_ const //!< const type qualifier. -#define _MEM_TYPE_SLOW_ //!< Slow memory type. -#define _MEM_TYPE_MEDFAST_ //!< Fairly fast memory type. -#define _MEM_TYPE_FAST_ //!< Fast memory type. - -typedef U8 Byte; //!< 8-bit unsigned integer. - -#define memcmp_ram2ram memcmp //!< Target-specific memcmp of RAM to RAM. -#define memcmp_code2ram memcmp //!< Target-specific memcmp of RAM to NVRAM. -#define memcpy_ram2ram memcpy //!< Target-specific memcpy from RAM to RAM. -#define memcpy_code2ram memcpy //!< Target-specific memcpy from NVRAM to RAM. - -#define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32. -#define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32. -#define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32. -#define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32. -#define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32. -#define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32. -#define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32. -#define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32. - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -#endif // _COMPILER_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h deleted file mode 100644 index ca516ee..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h +++ /dev/null @@ -1,136 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ****************************************************************** - * - * \brief ISP configuration file. - * - * This file contains the possible external configuration of the ISP. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USB module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ***************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _CONF_ISP_H_ -#define _CONF_ISP_H_ - -#include -#include "compiler.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -#define PRODUCT_MANUFACTURER_ID 0x58 -#define PRODUCT_FAMILY_ID 0x20 - -#define ISP_VERSION 0x10 -#define ISP_ID0 0x00 -#define ISP_ID1 0x00 - -#define ISP_CFG1 (*(volatile U32 *)ISP_CFG1_ADDRESS) -#define ISP_CFG1_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG1_OFFSET) -#define ISP_CFG1_OFFSET 0x000001FC -#define ISP_CFG1_SIZE 4 - -#define ISP_CFG1_BOOT_KEY1 16 -#define ISP_CFG1_BOOT_KEY1_MASK 0xFFFF0000 -#define ISP_CFG1_BOOT_KEY1_OFFSET 16 -#define ISP_CFG1_BOOT_KEY1_SIZE 16 -#define ISP_CFG1_BOOT_KEY1_VALUE 0xE11E - -#define ISP_CFG1_FORCE 9 -#define ISP_CFG1_FORCE_MASK 0x00000200 -#define ISP_CFG1_FORCE_OFFSET 9 -#define ISP_CFG1_FORCE_SIZE 1 - -#define ISP_CFG1_IO_COND_EN 8 -#define ISP_CFG1_IO_COND_EN_MASK 0x00000100 -#define ISP_CFG1_IO_COND_EN_OFFSET 8 -#define ISP_CFG1_IO_COND_EN_SIZE 1 - -#define ISP_CFG1_CRC8 0 -#define ISP_CFG1_CRC8_MASK 0x000000FF -#define ISP_CFG1_CRC8_OFFSET 0 -#define ISP_CFG1_CRC8_SIZE 8 -#define ISP_CFG1_CRC8_POLYNOMIAL 0x107 - -#define ISP_CFG2 (*(volatile U32 *)ISP_CFG2_ADDRESS) -#define ISP_CFG2_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG2_OFFSET) -#define ISP_CFG2_OFFSET 0x000001F8 -#define ISP_CFG2_SIZE 4 - -#define ISP_CFG2_BOOT_KEY 17 -#define ISP_CFG2_BOOT_KEY_MASK 0xFFFE0000 -#define ISP_CFG2_BOOT_KEY_OFFSET 17 -#define ISP_CFG2_BOOT_KEY_SIZE 15 -#define ISP_CFG2_BOOT_KEY_VALUE 0x494F - -#define ISP_CFG2_IO_COND_LEVEL 16 -#define ISP_CFG2_IO_COND_LEVEL_MASK 0x00010000 -#define ISP_CFG2_IO_COND_LEVEL_OFFSET 16 -#define ISP_CFG2_IO_COND_LEVEL_SIZE 1 - -#define ISP_CFG2_IO_COND_PIN 8 -#define ISP_CFG2_IO_COND_PIN_MASK 0x0000FF00 -#define ISP_CFG2_IO_COND_PIN_OFFSET 8 -#define ISP_CFG2_IO_COND_PIN_SIZE 8 - -#define ISP_CFG2_CRC8 0 -#define ISP_CFG2_CRC8_MASK 0x000000FF -#define ISP_CFG2_CRC8_OFFSET 0 -#define ISP_CFG2_CRC8_SIZE 8 -#define ISP_CFG2_CRC8_POLYNOMIAL 0x107 - -#define ISP_KEY (*(volatile U32 *)ISP_KEY_ADDRESS) -#define ISP_KEY_ADDRESS (AVR32_SRAM_ADDRESS + ISP_KEY_OFFSET) -#define ISP_KEY_OFFSET 0x00000000 -#define ISP_KEY_SIZE 4 -#define ISP_KEY_VALUE ('I' << 24 | 'S' << 16 | 'P' << 8 | 'K') - -#ifndef ISP_OSC - #define ISP_OSC 0 -#endif - -#define DFU_FRAME_LENGTH 2048 - -#define PROGRAM_START_ADDRESS (AVR32_FLASH_ADDRESS + PROGRAM_START_OFFSET) -#define PROGRAM_START_OFFSET 0x00002000 - - -#endif // _CONF_ISP_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h b/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h deleted file mode 100644 index 6637b2f..0000000 --- a/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h +++ /dev/null @@ -1,203 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Arch file for AVR32. - * - * This file defines common AVR32 UC3 series. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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 - * - */ - -#ifndef _ARCH_H_ -#define _ARCH_H_ - -// UC3 A Series -#define UC3A0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A0128__) || \ - defined (__AVR32_UC3A0256__) || \ - defined (__AVR32_UC3A0512__) || \ - defined (__AVR32_UC3A0512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A0128__) || \ - defined (__AT32UC3A0256__) || \ - defined (__AT32UC3A0512__) || \ - defined (__AT32UC3A0512ES__))) - -#define UC3A1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A1128__) || \ - defined (__AVR32_UC3A1256__) || \ - defined (__AVR32_UC3A1512__) || \ - defined (__AVR32_UC3A1512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A1128__) || \ - defined (__AT32UC3A1256__) || \ - defined (__AT32UC3A1512__) || \ - defined (__AT32UC3A1512ES__))) - -#define UC3A3 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A364__) || \ - defined (__AVR32_UC3A364S__) || \ - defined (__AVR32_UC3A3128__) || \ - defined (__AVR32_UC3A3128S__) || \ - defined (__AVR32_UC3A3256__) || \ - defined (__AVR32_UC3A3256S__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A364__) || \ - defined (__AT32UC3A364S__) || \ - defined (__AT32UC3A3128__) || \ - defined (__AT32UC3A3128S__) || \ - defined (__AT32UC3A3256__) || \ - defined (__AT32UC3A3256S__))) - -#define UC3A (UC3A0 || UC3A1 || UC3A3) - -// UC3 B Series -#define UC3B0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3B064__) || \ - defined (__AVR32_UC3B0128__) || \ - defined (__AVR32_UC3B0256__) || \ - defined (__AVR32_UC3B0256ES__) || \ - defined (__AVR32_UC3B0512__) || \ - defined (__AVR32_UC3B0512REVC_))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3B064__) || \ - defined (__AT32UC3B0128__) || \ - defined (__AT32UC3B0256__) || \ - defined (__AT32UC3B0256ES__) || \ - defined (__AT32UC3B0512__) || \ - defined (__AT32UC3B0512REVC__))) - -#define UC3B1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3B164__) || \ - defined (__AVR32_UC3B1128__) || \ - defined (__AVR32_UC3B1256__) || \ - defined (__AVR32_UC3B1256ES__) || \ - defined (__AVR32_UC3B1512__) || \ - defined (__AVR32_UC3B1512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3B164__) || \ - defined (__AT32UC3B1128__) || \ - defined (__AT32UC3B1256__) || \ - defined (__AT32UC3B1256ES__) || \ - defined (__AT32UC3B1512__) || \ - defined (__AT32UC3B1512REVC__))) - -#define UC3B (UC3B0 || UC3B1 ) - -// UC3 C Series -#define UC3C0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C064C__) || \ - defined (__AVR32_UC3C0128C__) || \ - defined (__AVR32_UC3C0256C__) || \ - defined (__AVR32_UC3C0512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C064C__) || \ - defined (__AT32UC3C0128C__) || \ - defined (__AT32UC3C0256C__) || \ - defined (__AT32UC3C0512C__))) - -#define UC3C1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C164C__) || \ - defined (__AVR32_UC3C1128C__) || \ - defined (__AVR32_UC3C1256C__) || \ - defined (__AVR32_UC3C1512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C164C__) || \ - defined (__AT32UC3C1128C__) || \ - defined (__AT32UC3C1256C__) || \ - defined (__AT32UC3C1512C__))) - -#define UC3C2 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C264C__) || \ - defined (__AVR32_UC3C2128C__) || \ - defined (__AVR32_UC3C2256C__) || \ - defined (__AVR32_UC3C2512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C264C__) || \ - defined (__AT32UC3C2128C__) || \ - defined (__AT32UC3C2256C__) || \ - defined (__AT32UC3C2512C__))) - -#define UC3C (UC3C0 || UC3C1 || UC3C2) - -// UC3 L Device series -#define UC3L0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L016__) || \ - defined (__AVR32_UC3L032__) || \ - defined (__AVR32_UC3L064__) || \ - defined (__AVR32_UC3L064REVB__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L016__) || \ - defined (__AT32UC3L032__) || \ - defined (__AT32UC3L064__) || \ - defined (__AT32UC3L064REVB__))) - -#define UC3L1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L116__) || \ - defined (__AVR32_UC3L132__) || \ - defined (__AVR32_UC3L164__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L116__) || \ - defined (__AT32UC3L132__) || \ - defined (__AT32UC3L164__))) - -#define UC3L2 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L216__) || \ - defined (__AVR32_UC3L232__) || \ - defined (__AVR32_UC3L264__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L216__) || \ - defined (__AT32UC3L232__) || \ - defined (__AT32UC3L264__))) - -#define UC3L3 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L316__) || \ - defined (__AVR32_UC3L332__) || \ - defined (__AVR32_UC3L364__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L316__) || \ - defined (__AT32UC3L332__) || \ - defined (__AT32UC3L364__))) - -#define UC3L (UC3L0 || UC3L1 || UC3L2 || UC3L3) - -#endif // _ARCH_H_ diff --git a/firmwares/wifishield/wifi_dnld/src/clocks.c b/firmwares/wifishield/wifi_dnld/src/clocks.c deleted file mode 100644 index cdd07fa..0000000 --- a/firmwares/wifishield/wifi_dnld/src/clocks.c +++ /dev/null @@ -1,101 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - - -#include -#include "board.h" -#include "clocks.h" -#include "pm.h" -#include "flashc.h" -#include "gpio.h" - -/** - * Initializes the MCU system clocks. - */ -void -init_sys_clocks(void) -{ - /* switch to OSC0 to speed up the booting */ - pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP); - -#ifndef USE_PLL - return; -#endif - - /* For audio, ee have to use OSC1 on to generate the correct clockrate - * for the SSC - */ -#if OSC == 1 - /* start oscillator1 */ - pm_enable_osc1_crystal(&AVR32_PM, FOSC1); - pm_enable_clk1(&AVR32_PM, OSC1_STARTUP); -#endif - - /* configure pll multipliers */ - pm_pll_setup(&AVR32_PM, - 0, /* pll */ - PLL_MUL, /* mul */ - 1, /* div */ - OSC, /* osc */ - 16); /* lockcount */ - - /* set PLL operating range and divider (fpll = fvco/2) - * this gives PLL output = 66 MHz (62.0928 MHz for EVK1105/OSC1) - */ - pm_pll_set_option(&AVR32_PM, - 0, /* pll */ - 1, /* pll_freq */ - 1, /* pll_div2 */ - 0); /* pll_wbwdisable. */ - - - /* start PLL0 and wait for the lock */ - pm_pll_enable(&AVR32_PM, 0); - pm_wait_for_pll0_locked(&AVR32_PM); - - /* Set all peripheral clocks torun at master clock rate */ - pm_cksel(&AVR32_PM, - 0, /* pbadiv */ - 0, /* pbasel */ - 0, /* pbbdiv */ - 0, /* pbbsel */ - 0, /* hsbdiv */ - 0); /* hsbsel */ - - /* Set one waitstate for the flash */ - flashc_set_wait_state(1); - - /* Switch to PLL0 as the master clock */ - pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0); - -#if OSC == 1 - pm_configure_usb_clock(); -#endif -} diff --git a/firmwares/wifishield/wifi_dnld/src/clocks.h b/firmwares/wifishield/wifi_dnld/src/clocks.h deleted file mode 100644 index cceda29..0000000 --- a/firmwares/wifishield/wifi_dnld/src/clocks.h +++ /dev/null @@ -1,78 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - -#ifndef CLOCKS_H -#define CLOCKS_H - -#include "board.h" - - -#if BOARD == EVK1100 -# define USE_PLL -# define OSC 0 -# define PLL_MUL 10 -#elif BOARD == EVK1101 -# define USE_PLL -# define OSC 0 -# define PLL_MUL 9 -#elif BOARD == EVK1104 -# define USE_PLL -# define OSC 0 -# define PLL_MUL 9 /* for some reason we cant use 66 MHz */ -#elif BOARD == EVK1105 -# define USE_PLL -# define OSC 1 -# define PLL_MUL 10 -#elif BOARD == ARDUINO -# define USE_PLL -# define OSC 0 -# define PLL_MUL 8 -#endif - -#if OSC == 0 -# define FOSC FOSC0 /* 12 MHz */ -#else -# define FOSC FOSC1 /* 11.2896 MHz */ -#endif - -#ifdef USE_PLL -# define FMCK_HZ ((FOSC * (PLL_MUL + 1)) / 2) -#else -# define FMCK_HZ FOSC -#endif - -#define FCPU_HZ FMCK_HZ -#define FHSB_HZ FCPU_HZ -#define FPBB_HZ FMCK_HZ -#define FPBA_HZ FMCK_HZ - -void init_sys_clocks(void); - -#endif diff --git a/firmwares/wifishield/wifi_dnld/src/flash_fw.c b/firmwares/wifishield/wifi_dnld/src/flash_fw.c deleted file mode 100644 index 75d35f6..0000000 --- a/firmwares/wifishield/wifi_dnld/src/flash_fw.c +++ /dev/null @@ -1,125 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#include - -#include "printf-stdarg.h" -#include "wl_fw.h" -#include "startup.h" -#include "nor_flash.h" -#include "gpio.h" - -#define GREEN_OFF() gpio_set_gpio_pin(LED0_GPIO) -#define GREEN_ON() gpio_clr_gpio_pin(LED0_GPIO) -#define GREEN_BLINK() gpio_tgl_gpio_pin(LED0_GPIO) -#define RED_OFF() gpio_set_gpio_pin(LED1_GPIO) -#define RED_ON() gpio_clr_gpio_pin(LED1_GPIO) -#define RED_BLINK() gpio_tgl_gpio_pin(LED1_GPIO) -#define BLUE_OFF() gpio_set_gpio_pin(LED2_GPIO) -#define BLUE_ON() gpio_clr_gpio_pin(LED2_GPIO) -#define BLUE_BLINK() gpio_tgl_gpio_pin(LED2_GPIO) - - -/** - * - */ -void -led_init(void) -{ - gpio_enable_gpio_pin(LED0_GPIO); - gpio_enable_gpio_pin(LED1_GPIO); - gpio_enable_gpio_pin(LED2_GPIO); - GREEN_OFF(); - RED_OFF(); - BLUE_OFF(); -} - - -int main(void) -{ - U32 pos, len; - - startup_init(); - printk("*** HD chip firmware upgrade ver 2.7 ***\n"); - led_init(); - flash_init(); - GREEN_ON(); - if (at45dbx_mem_check() == OK) - { - printk("Memory check... [ OK ]\n"); - } - else - { - RED_ON(); - GREEN_OFF(); - printk("Memory check... [FAIL]\n"); - return 0; - } - printk("Writing firmware data to flash\n"); - pos = 0; - while (pos < fw_len) { - if (fw_len - pos > SECTOR_SIZE) - len = SECTOR_SIZE; - else - len = fw_len - pos; - - flash_write(pos, fw_buf + pos, len); - pos += len; - } - - printk("Verifying firmware data\n"); - pos = 0; - while (pos < fw_len) { - static U8 page_buf[SECTOR_SIZE]; - U32 i; - - if (fw_len - pos > SECTOR_SIZE) - len = SECTOR_SIZE; - else - len = fw_len - pos; - - flash_read(pos, page_buf, len); - - for (i = 0; i < len; i++) - if (*(page_buf + i) != *(fw_buf + pos + i)) { - RED_ON(); - GREEN_OFF(); - printk("Verify failed at byte %d, 0x%02x != 0x%02x\n", - pos + i, *(page_buf + i), *(fw_buf + pos + i)); - return 0; - } - - - pos += len; - } - GREEN_OFF(); - BLUE_ON(); - printk("Firmware successfully stored in flash!\n"); - return 0; -} diff --git a/firmwares/wifishield/wifi_dnld/src/license.txt b/firmwares/wifishield/wifi_dnld/src/license.txt deleted file mode 100644 index e57439f..0000000 --- a/firmwares/wifishield/wifi_dnld/src/license.txt +++ /dev/null @@ -1,42 +0,0 @@ - Copyright (C) 2009, H&D Wireless AB All rights reserved. - - The license to use this software in whole and in part and to - redistribute it in any form follows with the WiFi HW module from H&D - Wireless and is granted under the following restrictions: - - 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. The name of H&D Wireless AB may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - 4. The software may only be used together with hardware from H&D - Wireless all other use is prohibited. - - 5. The license to use and redistribute the software is granted - together with the purchase of a hardware platform on a one to one - basis - - 6. The binary code may not be reversed engineered or by other means - copied to circumvent this license. - - THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT - SHALL HD WIRELESS AB 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. - - For more information regarding this software license Contact H&D - Wireless AB (support@hd-wireless.se). diff --git a/firmwares/wifishield/wifi_dnld/src/nor_flash.c b/firmwares/wifishield/wifi_dnld/src/nor_flash.c deleted file mode 100644 index 0115949..0000000 --- a/firmwares/wifishield/wifi_dnld/src/nor_flash.c +++ /dev/null @@ -1,99 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#include -#include "compiler.h" -#include "preprocessor.h" -#include "board.h" -#include "power_clocks_lib.h" -#include "gpio.h" -#include "spi.h" -#include "conf_at45dbx.h" -#include "at45dbx.h" -#include "clocks.h" - - -void flash_init(void) -{ - static const gpio_map_t AT45DBX_SPI_GPIO_MAP = { - { AT45DBX_SPI_SCK_PIN, AT45DBX_SPI_SCK_FUNCTION }, - { AT45DBX_SPI_MISO_PIN, AT45DBX_SPI_MISO_FUNCTION }, - { AT45DBX_SPI_MOSI_PIN, AT45DBX_SPI_MOSI_FUNCTION }, - { AT45DBX_SPI_NPCS2_PIN, AT45DBX_SPI_NPCS2_FUNCTION }, - }; - - spi_options_t spiOptions = { - .reg = AT45DBX_SPI_FIRST_NPCS, - .baudrate = AT45DBX_SPI_MASTER_SPEED, - .bits = AT45DBX_SPI_BITS, - .spck_delay = 0, - .trans_delay = 0, - .stay_act = 1, - .spi_mode = 0, - .modfdis = 1 - }; - - gpio_enable_module(AT45DBX_SPI_GPIO_MAP, - sizeof(AT45DBX_SPI_GPIO_MAP) / - sizeof(AT45DBX_SPI_GPIO_MAP[0])); - - spi_initMaster(AT45DBX_SPI, &spiOptions); - - spi_selectionMode(AT45DBX_SPI, 0, 0, 0); - spi_enable(AT45DBX_SPI); - - /* put up flash reset pin */ - gpio_set_gpio_pin(AT45DBX_CHIP_RESET); - - at45dbx_init(spiOptions, FPBA_HZ); -} - -void flash_write(U32 addr, const U8* buf, U32 len) -{ - U32 sector = addr / AT45DBX_SECTOR_SIZE; - U32 i; - Assert(addr % AT45DBX_SECTOR_SIZE == 0); - - at45dbx_write_open(sector); - for (i = 0; i < len; i++) - at45dbx_write_byte(buf[i]); - at45dbx_write_close(); -} - -void flash_read(U32 addr, U8* buf, U32 len) -{ - U32 sector = addr / AT45DBX_SECTOR_SIZE; - U32 i; - Assert(addr % AT45DBX_SECTOR_SIZE == 0); - - at45dbx_read_open(sector); - for (i = 0; i < len; i++) - buf[i] = at45dbx_read_byte(); - at45dbx_read_close(); -} diff --git a/firmwares/wifishield/wifi_dnld/src/nor_flash.h b/firmwares/wifishield/wifi_dnld/src/nor_flash.h deleted file mode 100644 index 52a4a20..0000000 --- a/firmwares/wifishield/wifi_dnld/src/nor_flash.h +++ /dev/null @@ -1,41 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef NOR_FLASH_H -#define NOR_FLASH_H - -#include "at45dbx.h" - -#define SECTOR_SIZE AT45DBX_SECTOR_SIZE - -void flash_init(void); -void flash_write(U32 addr, const U8* buf, U32 len); -void flash_read(U32 addr, U8* buf, U32 len); - -#endif diff --git a/firmwares/wifishield/wifi_dnld/src/printf-stdarg.c b/firmwares/wifishield/wifi_dnld/src/printf-stdarg.c deleted file mode 100644 index 86ab88e..0000000 --- a/firmwares/wifishield/wifi_dnld/src/printf-stdarg.c +++ /dev/null @@ -1,323 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* This source file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief sprintf functions to replace newlib for AVR32 UC3. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (C) 2006-2008, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ - -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - - -#include -#include - -#define putchar(c) print_dbg_char(c) - -static void printchar(char **str, int c) -{ - extern int putchar(int c); - - if (str) { - **str = c; - ++(*str); - } - else (void)putchar(c); -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = -i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = t + '0'; - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -int fprintf(__FILE *stream, const char *format, ...) -{ -return 0; -} -int printk_va(char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'p' ) { - pad = 8; - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printk(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return printk_va( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return printk_va( &out, format, args ); -} - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif diff --git a/firmwares/wifishield/wifi_dnld/src/printf-stdarg.h b/firmwares/wifishield/wifi_dnld/src/printf-stdarg.h deleted file mode 100644 index f6bd664..0000000 --- a/firmwares/wifishield/wifi_dnld/src/printf-stdarg.h +++ /dev/null @@ -1,36 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef PRINTF_STDARG_H -#define PRINTF_STDARG_H -#include - -int printk(const char *format, ...); -int printk_va(char **out, const char *format, va_list args ); -#endif diff --git a/firmwares/wifishield/wifi_dnld/src/startup.c b/firmwares/wifishield/wifi_dnld/src/startup.c deleted file mode 100644 index fa2a8c0..0000000 --- a/firmwares/wifishield/wifi_dnld/src/startup.c +++ /dev/null @@ -1,75 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#include "startup.h" -#include "pm.h" -#include "intc.h" -#include "board.h" -#include "print_funcs.h" -#include "clocks.h" - - -static void init_exceptions(void) -{ - extern void _evba; - Set_system_register(AVR32_EVBA, (int)&_evba); - Enable_global_exception(); -} - -static void init_hmatrix(void) -{ - union { - unsigned long scfg; - avr32_hmatrix_scfg_t SCFG; - } u_avr32_hmatrix_scfg = { - AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] - }; - u_avr32_hmatrix_scfg.SCFG.defmstr_type = - AVR32_HMATRIX_DEFMSTR_TYPE_LAST_DEFAULT; - AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] = - u_avr32_hmatrix_scfg.scfg; -} - -static void init_interrupts(void) -{ - INTC_init_interrupts(); - - //initExtInt(); - - Enable_global_interrupt(); -} - -void startup_init(void) -{ - init_exceptions(); - init_hmatrix(); - init_sys_clocks(); - init_interrupts(); - init_dbg_rs232(FPBA_HZ); -} diff --git a/firmwares/wifishield/wifi_dnld/src/startup.h b/firmwares/wifishield/wifi_dnld/src/startup.h deleted file mode 100644 index a9adc60..0000000 --- a/firmwares/wifishield/wifi_dnld/src/startup.h +++ /dev/null @@ -1,35 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``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 EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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. - */ -#ifndef STARTUP_H -#define STARTUP_H - -void startup_init(void); - -#endif diff --git a/firmwares/wifishield/wifi_dnld/src/wl_fw.h b/firmwares/wifishield/wifi_dnld/src/wl_fw.h deleted file mode 100644 index 5be5f37..0000000 --- a/firmwares/wifishield/wifi_dnld/src/wl_fw.h +++ /dev/null @@ -1,19287 +0,0 @@ -/* - * Programming interface for wl_api. - * Copyright (C) 2010 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -#ifndef WITHOUT_STDINT -#include -#endif -const uint8_t fw_buf[154188] = { - 0x10, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00, - 0x38, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x61, 0x04, 0x00, - 0x30, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x30, 0x61, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xee, - 0xee, 0xee, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0, - 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0, - 0x9f, 0xe5, 0x00, 0x00, 0xa0, 0xe1, 0x18, 0xf0, - 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x44, 0x00, - 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08, - 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x08, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0xe1, 0x1f, 0x00, 0xc0, 0xe3, - 0x13, 0x00, 0x80, 0xe3, 0xc0, 0x00, 0x80, 0xe3, - 0x00, 0xf0, 0x2f, 0xe1, 0x1c, 0xf0, 0x9f, 0xe5, - 0x3d, 0x02, 0x00, 0xeb, 0x5a, 0x02, 0x00, 0xeb, - 0x8d, 0x02, 0x00, 0xeb, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x41, 0xf0, 0xde, 0xfb, - 0x01, 0xf0, 0xdc, 0xfd, 0x3c, 0x00, 0x78, 0x00, - 0x00, 0x00, 0xfe, 0xe7, 0x00, 0x00, 0x5c, 0x00, - 0x00, 0x00, 0x78, 0x47, 0xc0, 0x46, 0x01, 0x00, - 0x00, 0xea, 0x78, 0x47, 0xc0, 0x46, 0x17, 0x00, - 0x00, 0xea, 0x8c, 0x11, 0x9f, 0xe5, 0x00, 0x20, - 0x91, 0xe5, 0x00, 0x30, 0x0f, 0xe1, 0x84, 0x11, - 0x9f, 0xe5, 0xfd, 0x20, 0xa1, 0xe8, 0x80, 0x01, - 0x9f, 0xe5, 0x80, 0x21, 0x9f, 0xe5, 0x01, 0x20, - 0x42, 0xe0, 0x0d, 0x00, 0x40, 0xe0, 0x3c, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x50, 0xe1, - 0x28, 0x00, 0x00, 0xaa, 0x68, 0x01, 0x9f, 0xe5, - 0x0d, 0x00, 0x50, 0xe1, 0x02, 0x00, 0x00, 0xba, - 0x04, 0x20, 0x10, 0xe4, 0x04, 0x20, 0x81, 0xe4, - 0xfa, 0xff, 0xff, 0xea, 0x58, 0x11, 0x9f, 0xe5, - 0x58, 0x01, 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5, - 0x3c, 0x11, 0x9f, 0xe5, 0x50, 0x01, 0x9f, 0xe5, - 0x00, 0x00, 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1, - 0x3c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x48, 0x11, - 0x9f, 0xe5, 0x00, 0x00, 0x91, 0xe5, 0x24, 0x11, - 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5, 0x2c, 0x11, - 0x9f, 0xe5, 0x38, 0x01, 0x9f, 0xe5, 0x00, 0x00, - 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1, 0x74, 0x02, - 0x00, 0xeb, 0x10, 0x01, 0x9f, 0xe5, 0x28, 0x11, - 0x9f, 0xe5, 0x04, 0x20, 0x91, 0xe4, 0x04, 0x20, - 0x00, 0xe4, 0x04, 0x21, 0x9f, 0xe5, 0x02, 0x00, - 0x51, 0xe1, 0x3c, 0x00, 0x2c, 0x01, 0x00, 0x00, - 0xfa, 0xff, 0xff, 0x1a, 0xf0, 0x10, 0x9f, 0xe5, - 0xfd, 0x20, 0xb1, 0xe8, 0x03, 0xf0, 0x2f, 0xe1, - 0xe0, 0x10, 0x9f, 0xe5, 0x00, 0x20, 0x81, 0xe5, - 0xe8, 0x10, 0x9f, 0xe5, 0xf4, 0x20, 0x9f, 0xe5, - 0x00, 0x20, 0x81, 0xe5, 0x02, 0x10, 0x80, 0xe2, - 0x00, 0x00, 0x20, 0xe0, 0x01, 0x00, 0x40, 0xe2, - 0x11, 0xff, 0x2f, 0xe1, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x3c, 0x00, 0x68, 0x01, - 0x00, 0x00, 0x01, 0xf0, 0x9c, 0xf8, 0x78, 0x47, - 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, - 0x2f, 0xe1, 0x01, 0xf0, 0x94, 0xf8, 0x78, 0x47, - 0x00, 0x00, 0x03, 0x00, 0x2d, 0xe9, 0x00, 0x10, - 0x0f, 0xe1, 0x00, 0x10, 0x80, 0xe5, 0xb8, 0x10, - 0x9f, 0xe5, 0x04, 0x10, 0x80, 0xe5, 0x00, 0x10, - 0xa0, 0xe1, 0x10, 0x00, 0x80, 0xe2, 0xfc, 0x1f, - 0xa0, 0xe8, 0x00, 0x20, 0xa0, 0xe1, 0x3c, 0x00, - 0xa4, 0x01, 0x00, 0x00, 0x01, 0x30, 0xa0, 0xe1, - 0x03, 0x00, 0xbd, 0xe8, 0x08, 0x00, 0x83, 0xe5, - 0x0c, 0x10, 0x83, 0xe5, 0xd3, 0x00, 0xa0, 0xe3, - 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8, - 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4, - 0xd2, 0x00, 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1, - 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1, - 0x04, 0x10, 0x82, 0xe4, 0xd1, 0x00, 0xa0, 0xe3, - 0x3c, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, - 0x21, 0xe1, 0x00, 0x7f, 0xa2, 0xe8, 0x00, 0x10, - 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4, 0xd7, 0x00, - 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60, - 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10, - 0x82, 0xe4, 0xdb, 0x00, 0xa0, 0xe3, 0x00, 0xf0, - 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10, - 0x4f, 0xe1, 0x00, 0x10, 0x82, 0xe5, 0x00, 0x00, - 0x93, 0xe5, 0x3c, 0x00, 0x1c, 0x02, 0x00, 0x00, - 0x00, 0xf0, 0x2f, 0xe1, 0x1e, 0xff, 0x2f, 0xe1, - 0x20, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, - 0x20, 0xee, 0x01, 0x00, 0xd8, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0xf0, 0x9f, 0xe5, - 0x10, 0x01, 0x00, 0x00, 0x08, 0x03, 0x00, 0x00, - 0xee, 0xee, 0xee, 0xee, 0x24, 0x03, 0x00, 0x00, - 0x20, 0x02, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x63, 0x1c, 0x0b, 0x4d, 0x3c, 0x00, 0x58, 0x02, - 0x00, 0x00, 0x01, 0xd1, 0x6c, 0x69, 0x10, 0xe0, - 0x00, 0xf0, 0x6c, 0xfb, 0x09, 0x48, 0xff, 0xf7, - 0x0c, 0xff, 0xec, 0x60, 0x08, 0x4a, 0x51, 0x68, - 0x50, 0x68, 0x88, 0x42, 0xfc, 0xd0, 0x02, 0x20, - 0x28, 0x70, 0x01, 0x21, 0x8a, 0x20, 0x01, 0xf0, - 0x12, 0xf8, 0x20, 0x1c, 0xb0, 0xbd, 0x30, 0x00, - 0x07, 0x00, 0x51, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x3c, 0x00, - 0x94, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0xf0, - 0x50, 0xfb, 0x14, 0x48, 0xff, 0xf7, 0xf0, 0xfe, - 0x13, 0x49, 0x14, 0x48, 0xc1, 0x60, 0x01, 0x21, - 0x13, 0x4a, 0x49, 0x03, 0x91, 0x60, 0x13, 0x49, - 0xca, 0x78, 0x08, 0x23, 0x9a, 0x43, 0xca, 0x70, - 0xca, 0x78, 0x04, 0x23, 0x1a, 0x43, 0xca, 0x70, - 0x6b, 0x1c, 0x0d, 0xd0, 0x0e, 0x4b, 0x5a, 0x68, - 0x59, 0x68, 0x91, 0x42, 0xfc, 0xd0, 0xbe, 0x21, - 0x3c, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x19, 0x73, - 0x19, 0x7a, 0x11, 0x22, 0x91, 0x43, 0x19, 0x72, - 0x19, 0x7a, 0xc9, 0x07, 0xfc, 0xd4, 0x02, 0x21, - 0x01, 0x70, 0xff, 0xf7, 0xd0, 0xfe, 0x20, 0x1c, - 0xb0, 0xbd, 0x91, 0x02, 0x00, 0x00, 0xff, 0xff, - 0xff, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, - 0x08, 0x47, 0x10, 0x47, 0x18, 0x47, 0x20, 0x47, - 0x28, 0x47, 0x30, 0x47, 0x38, 0x47, 0x10, 0xb5, - 0x04, 0x1c, 0x10, 0x1c, 0x00, 0xf0, 0x23, 0xf9, - 0x03, 0xc4, 0x10, 0xbc, 0x08, 0xbc, 0x18, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x03, 0x00, 0x00, - 0x10, 0xb4, 0x04, 0x2a, 0x0e, 0xd3, 0x03, 0x1c, - 0x0b, 0x43, 0x9b, 0x07, 0x0a, 0xd1, 0x08, 0xc8, - 0x10, 0xc9, 0xa3, 0x42, 0x02, 0xd1, 0x04, 0x3a, - 0x04, 0x2a, 0xf8, 0xd2, 0xa3, 0x42, 0x01, 0xd0, - 0x04, 0x38, 0x04, 0x39, 0x00, 0x2a, 0x02, 0xd1, - 0x00, 0x20, 0x10, 0xbc, 0x70, 0x47, 0xd3, 0x07, - 0x01, 0xd5, 0x01, 0x32, 0x05, 0xe0, 0x03, 0x78, - 0x0c, 0x78, 0x01, 0x31, 0x3c, 0x00, 0x38, 0x04, - 0x00, 0x00, 0x01, 0x30, 0xa3, 0x42, 0x07, 0xd1, - 0x03, 0x78, 0x0c, 0x78, 0x01, 0x31, 0x01, 0x30, - 0xa3, 0x42, 0x01, 0xd1, 0x02, 0x3a, 0xf1, 0xd1, - 0x18, 0x1b, 0xe9, 0xe7, 0x00, 0x00, 0x78, 0x47, - 0x00, 0x00, 0x00, 0x20, 0xa0, 0xe3, 0x04, 0x00, - 0x51, 0xe3, 0x08, 0x00, 0x00, 0x3a, 0x03, 0xc0, - 0x10, 0xe2, 0x0d, 0x00, 0x00, 0x0a, 0x04, 0xc0, - 0x6c, 0xe2, 0x02, 0x00, 0x5c, 0xe3, 0x3c, 0x00, - 0x74, 0x04, 0x00, 0x00, 0x01, 0x20, 0xc0, 0xe4, - 0x01, 0x20, 0xc0, 0xa4, 0x01, 0x20, 0xc0, 0xc4, - 0x0c, 0x10, 0x41, 0xe0, 0x06, 0x00, 0x00, 0xea, - 0x81, 0xcf, 0xb0, 0xe1, 0x01, 0x20, 0xc0, 0x24, - 0x01, 0x20, 0xc0, 0x24, 0x01, 0x20, 0xc0, 0x44, - 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, - 0x00, 0x20, 0xa0, 0xe3, 0x00, 0x40, 0x2d, 0xe9, - 0x02, 0x30, 0xa0, 0xe1, 0x02, 0xc0, 0xa0, 0xe1, - 0x3c, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x02, 0xe0, - 0xa0, 0xe1, 0x20, 0x10, 0x51, 0xe2, 0x0c, 0x50, - 0xa0, 0x28, 0x0c, 0x50, 0xa0, 0x28, 0x20, 0x10, - 0x51, 0x22, 0xfb, 0xff, 0xff, 0x2a, 0x01, 0x1e, - 0xb0, 0xe1, 0x0c, 0x50, 0xa0, 0x28, 0x0c, 0x00, - 0xa0, 0x48, 0x00, 0x40, 0xbd, 0xe8, 0x01, 0x11, - 0xb0, 0xe1, 0x04, 0x20, 0x80, 0x24, 0x1e, 0xff, - 0x2f, 0x01, 0x01, 0x20, 0xc0, 0x44, 0x01, 0x20, - 0xc0, 0x44, 0x3c, 0x00, 0xec, 0x04, 0x00, 0x00, - 0x40, 0x04, 0x11, 0xe3, 0x01, 0x20, 0xc0, 0x14, - 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, - 0x03, 0x00, 0x52, 0xe3, 0x3e, 0x00, 0x00, 0x9a, - 0x03, 0xc0, 0x10, 0xe2, 0x08, 0x00, 0x00, 0x0a, - 0x01, 0x30, 0xd1, 0xe4, 0x02, 0x00, 0x5c, 0xe3, - 0x0c, 0x20, 0x82, 0xe0, 0x01, 0xc0, 0xd1, 0x94, - 0x01, 0x30, 0xc0, 0xe4, 0x01, 0x30, 0xd1, 0x34, - 0x04, 0x20, 0x42, 0xe2, 0x3c, 0x00, 0x28, 0x05, - 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x94, 0x01, 0x30, - 0xc0, 0x34, 0x03, 0x30, 0x11, 0xe2, 0x1e, 0x00, - 0x00, 0x0a, 0x04, 0x20, 0x52, 0xe2, 0x2f, 0x00, - 0x00, 0x3a, 0x03, 0xc0, 0x31, 0xe7, 0x02, 0x00, - 0x53, 0xe3, 0x08, 0x00, 0x00, 0x0a, 0x0f, 0x00, - 0x00, 0x8a, 0x2c, 0x34, 0xa0, 0xe1, 0x04, 0xc0, - 0xb1, 0xe5, 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x3c, - 0x83, 0xe1, 0x04, 0x30, 0x80, 0xe4, 0x3c, 0x00, - 0x64, 0x05, 0x00, 0x00, 0xf9, 0xff, 0xff, 0x2a, - 0x01, 0x10, 0x81, 0xe2, 0x23, 0x00, 0x00, 0xea, - 0x2c, 0x38, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5, - 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x38, 0x83, 0xe1, - 0x04, 0x30, 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a, - 0x02, 0x10, 0x81, 0xe2, 0x1b, 0x00, 0x00, 0xea, - 0x2c, 0x3c, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5, - 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x34, 0x83, 0xe1, - 0x3c, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x04, 0x30, - 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a, 0x03, 0x10, - 0x81, 0xe2, 0x13, 0x00, 0x00, 0xea, 0x78, 0x47, - 0x00, 0x00, 0x10, 0x40, 0x2d, 0xe9, 0x20, 0x20, - 0x52, 0xe2, 0x05, 0x00, 0x00, 0x3a, 0x18, 0x50, - 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x18, 0x50, - 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x20, 0x20, - 0x52, 0x22, 0xf9, 0xff, 0xff, 0x2a, 0x02, 0xce, - 0xb0, 0xe1, 0x3c, 0x00, 0xdc, 0x05, 0x00, 0x00, - 0x18, 0x50, 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, - 0x18, 0x00, 0xb1, 0x48, 0x18, 0x00, 0xa0, 0x48, - 0x10, 0x40, 0xbd, 0xe8, 0x02, 0xcf, 0xb0, 0xe1, - 0x04, 0x30, 0x91, 0x24, 0x04, 0x30, 0x80, 0x24, - 0x1e, 0xff, 0x2f, 0x01, 0x82, 0x2f, 0xb0, 0xe1, - 0x01, 0x20, 0xd1, 0x44, 0x01, 0x30, 0xd1, 0x24, - 0x01, 0xc0, 0xd1, 0x24, 0x01, 0x20, 0xc0, 0x44, - 0x01, 0x30, 0xc0, 0x24, 0x3c, 0x00, 0x18, 0x06, - 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x24, 0x1e, 0xff, - 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0xff, 0x30, - 0x01, 0xe2, 0x02, 0x10, 0xa0, 0xe1, 0x03, 0x24, - 0x83, 0xe1, 0x02, 0x28, 0x82, 0xe1, 0x88, 0xff, - 0xff, 0xea, 0x78, 0x47, 0x00, 0x00, 0x80, 0x24, - 0x10, 0xe2, 0x00, 0x00, 0x60, 0x42, 0x41, 0x30, - 0x32, 0xe0, 0x00, 0x10, 0x61, 0x22, 0xa1, 0xc1, - 0x70, 0xe0, 0x20, 0x00, 0x00, 0x3a, 0x3c, 0x00, - 0x54, 0x06, 0x00, 0x00, 0x21, 0xc4, 0x70, 0xe0, - 0x0f, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, - 0xff, 0x24, 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0, - 0x17, 0x00, 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, - 0x09, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, - 0xff, 0x28, 0x82, 0xe3, 0x21, 0xc4, 0x70, 0xe0, - 0x00, 0x04, 0xa0, 0x21, 0xff, 0x2c, 0x82, 0x23, - 0x21, 0xc2, 0x70, 0xe0, 0x0e, 0x00, 0x00, 0x3a, - 0x3c, 0x00, 0x90, 0x06, 0x00, 0x00, 0x00, 0xc0, - 0x70, 0xe2, 0x83, 0x00, 0x00, 0x2a, 0x20, 0x04, - 0xa0, 0x21, 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3, - 0x70, 0xe0, 0x00, 0x13, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0xa1, 0xc2, 0x70, 0xe0, 0x80, 0x12, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc2, - 0x70, 0xe0, 0x00, 0x12, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x3c, 0x00, 0xcc, 0x06, 0x00, 0x00, - 0xa1, 0xc1, 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0, - 0x00, 0x11, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, - 0xa1, 0xc0, 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x01, 0xc0, 0x70, 0xe0, - 0x00, 0x10, 0x41, 0x20, 0x02, 0x20, 0xb2, 0xe0, - 0xe5, 0xff, 0xff, 0x2a, 0xc3, 0x0f, 0x32, 0xe0, - 0xa3, 0x0f, 0x80, 0xe0, 0x3c, 0x00, 0x08, 0x07, - 0x00, 0x00, 0x00, 0x10, 0x61, 0x22, 0x1e, 0xff, - 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0x00, 0x20, - 0xa0, 0xe3, 0xa1, 0xc1, 0x70, 0xe0, 0x20, 0x00, - 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x0f, 0x00, - 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0xff, 0x24, - 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0, 0x17, 0x00, - 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x09, 0x00, - 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0x3c, 0x00, - 0x44, 0x07, 0x00, 0x00, 0xff, 0x28, 0x82, 0xe3, - 0x21, 0xc4, 0x70, 0xe0, 0x00, 0x04, 0xa0, 0x21, - 0xff, 0x2c, 0x82, 0x23, 0x21, 0xc2, 0x70, 0xe0, - 0x0e, 0x00, 0x00, 0x3a, 0x00, 0xc0, 0x70, 0xe2, - 0x50, 0x00, 0x00, 0x2a, 0x20, 0x04, 0xa0, 0x21, - 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3, 0x70, 0xe0, - 0x00, 0x13, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, - 0x3c, 0x00, 0x80, 0x07, 0x00, 0x00, 0xa1, 0xc2, - 0x70, 0xe0, 0x80, 0x12, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x21, 0xc2, 0x70, 0xe0, 0x00, 0x12, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc1, - 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0, 0x00, 0x11, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc0, - 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x3c, 0x00, 0xbc, 0x07, 0x00, 0x00, - 0x01, 0xc0, 0x70, 0xe0, 0x00, 0x10, 0x41, 0x20, - 0x02, 0x20, 0xb2, 0xe0, 0xe5, 0xff, 0xff, 0x2a, - 0x02, 0x00, 0xa0, 0xe1, 0x1e, 0xff, 0x2f, 0xe1, - 0x78, 0x47, 0x00, 0x00, 0x0a, 0x10, 0x40, 0xe2, - 0x20, 0x01, 0x40, 0xe0, 0x20, 0x02, 0x80, 0xe0, - 0x20, 0x04, 0x80, 0xe0, 0x20, 0x08, 0x80, 0xe0, - 0xa0, 0x01, 0xa0, 0xe1, 0x00, 0x21, 0x80, 0xe0, - 0x82, 0x10, 0x51, 0xe0, 0x3c, 0x00, 0xf8, 0x07, - 0x00, 0x00, 0x01, 0x00, 0x80, 0x52, 0x0a, 0x10, - 0x81, 0x42, 0x1e, 0xff, 0x2f, 0xe1, 0x30, 0xb4, - 0x44, 0x1c, 0x81, 0x07, 0x08, 0xd0, 0x01, 0x78, - 0x01, 0x30, 0x00, 0x29, 0x02, 0xd1, 0x00, 0x1b, - 0x30, 0xbc, 0x70, 0x47, 0x81, 0x07, 0xf6, 0xd1, - 0x0b, 0x4a, 0xd5, 0x01, 0x02, 0xc8, 0x8b, 0x1a, - 0x8b, 0x43, 0x2b, 0x40, 0xfa, 0xd0, 0x00, 0x1b, - 0x0a, 0x06, 0x01, 0xd1, 0x03, 0x38, 0x3c, 0x00, - 0x34, 0x08, 0x00, 0x00, 0xef, 0xe7, 0x0a, 0x04, - 0x12, 0x0e, 0x01, 0xd1, 0x02, 0x38, 0xea, 0xe7, - 0x09, 0x02, 0x09, 0x0e, 0xe7, 0xd1, 0x01, 0x38, - 0xe5, 0xe7, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0xf0, 0xb4, 0x03, 0x1c, 0x04, 0x1c, 0x0c, 0x43, - 0xa4, 0x07, 0x0c, 0xd1, 0x10, 0x4d, 0xef, 0x01, - 0x02, 0xe0, 0x04, 0x31, 0x04, 0x3a, 0x10, 0xc3, - 0x04, 0x2a, 0x04, 0xd3, 0x0c, 0x68, 0x66, 0x1b, - 0x3c, 0x00, 0x70, 0x08, 0x00, 0x00, 0xa6, 0x43, - 0x3e, 0x40, 0xf5, 0xd0, 0x00, 0x2a, 0x07, 0xd0, - 0x0c, 0x78, 0x01, 0x31, 0x1c, 0x70, 0x01, 0x33, - 0x00, 0x2c, 0x03, 0xd0, 0x01, 0x3a, 0xf7, 0xd1, - 0xf0, 0xbc, 0x70, 0x47, 0x01, 0x2a, 0xfb, 0xd9, - 0x51, 0x1e, 0x00, 0x22, 0x1a, 0x70, 0x01, 0x33, - 0x01, 0x39, 0xfb, 0xd1, 0xf4, 0xe7, 0x01, 0x01, - 0x01, 0x01, 0x78, 0x47, 0x00, 0x00, 0x02, 0x00, - 0xa0, 0xe3, 0x3c, 0x00, 0xac, 0x08, 0x00, 0x00, - 0x02, 0x10, 0xa0, 0xe3, 0x2e, 0xfe, 0xff, 0xea, - 0x1f, 0x40, 0x2d, 0xe9, 0x00, 0x00, 0x0f, 0xe1, - 0xc0, 0x00, 0x80, 0xe3, 0x00, 0xf0, 0x2f, 0xe1, - 0x81, 0x00, 0xa0, 0xe3, 0x02, 0x10, 0xa0, 0xe3, - 0x01, 0x20, 0x8f, 0xe2, 0x12, 0xff, 0x2f, 0xe1, - 0x00, 0xf0, 0xe6, 0xfc, 0x78, 0x47, 0x00, 0x00, - 0x1f, 0x40, 0xbd, 0xe8, 0xfe, 0xff, 0xff, 0xea, - 0x1f, 0x50, 0x2d, 0xe9, 0x3c, 0x00, 0xe8, 0x08, - 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, - 0x2f, 0xe1, 0x00, 0xf0, 0x40, 0xfb, 0x78, 0x47, - 0x00, 0x00, 0x1f, 0x50, 0xbd, 0xe8, 0x04, 0xf0, - 0x5e, 0xe2, 0x1f, 0x50, 0x2d, 0xe9, 0x01, 0x00, - 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1, 0x00, 0xf0, - 0x18, 0xfb, 0x78, 0x47, 0x00, 0x00, 0x1f, 0x50, - 0xbd, 0xe8, 0x04, 0xf0, 0x5e, 0xe2, 0x00, 0xbd, - 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47, 0x3c, 0x00, - 0x24, 0x09, 0x00, 0x00, 0x00, 0x30, 0x0f, 0xe1, - 0xc0, 0x30, 0xc3, 0xe3, 0x03, 0xf0, 0x21, 0xe1, - 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1, - 0x01, 0xbd, 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47, - 0x00, 0x30, 0x0f, 0xe1, 0xc0, 0x30, 0x83, 0xe3, - 0x03, 0xf0, 0x21, 0xe1, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x01, 0xbd, 0x00, 0x00, - 0x18, 0x00, 0x9f, 0xe5, 0x04, 0x10, 0x90, 0xe4, - 0x3c, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x00, - 0x51, 0xe3, 0x02, 0x00, 0x00, 0x0a, 0x04, 0x20, - 0x90, 0xe4, 0x00, 0x20, 0x81, 0xe5, 0xf9, 0xff, - 0xff, 0xea, 0x0e, 0xf0, 0xa0, 0xe1, 0x7c, 0x09, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, - 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xd8, 0x03, - 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0xd8, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x09, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x10, 0x8e, 0x01, 0x00, - 0x10, 0x8e, 0x01, 0x00, 0x88, 0xf8, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, - 0xc4, 0x33, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1, - 0x58, 0x40, 0x9f, 0xe5, 0x3c, 0x00, 0xd8, 0x09, - 0x00, 0x00, 0x04, 0x00, 0x94, 0xe4, 0x01, 0x00, - 0x50, 0xe3, 0x05, 0xf0, 0xa0, 0x01, 0x04, 0x10, - 0x94, 0xe4, 0x04, 0x20, 0x94, 0xe4, 0x03, 0x00, - 0x00, 0xeb, 0x04, 0x00, 0x94, 0xe4, 0x04, 0x10, - 0x94, 0xe4, 0x07, 0x00, 0x00, 0xeb, 0xf5, 0xff, - 0xff, 0xea, 0x01, 0x00, 0x50, 0xe1, 0x0e, 0xf0, - 0xa0, 0x01, 0x02, 0x00, 0x51, 0xe1, 0x04, 0x30, - 0x90, 0x14, 0x04, 0x30, 0x81, 0x14, 0x3c, 0x00, - 0x14, 0x0a, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x14, 0x20, 0x9f, 0xe5, - 0x00, 0x20, 0x92, 0xe5, 0x01, 0x00, 0x50, 0xe1, - 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x80, 0x09, 0x00, 0x00, - 0xcc, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x20, 0xe6, 0x01, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x43, 0x5f, 0x00, 0x04, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x0a, 0x00, 0x00, 0x20, 0xee, - 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x49, 0x52, - 0x51, 0x5f, 0x00, 0x02, 0x00, 0x00, 0x20, 0xf2, - 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x46, 0x49, - 0x51, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x20, 0xf4, - 0x01, 0x00, 0x17, 0x00, 0x00, 0x00, 0x41, 0x42, - 0x54, 0x5f, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4, - 0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x55, 0x4e, - 0x44, 0x5f, 0x3c, 0x00, 0x8c, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4, 0x01, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x55, 0x53, 0x52, 0x5f, - 0x01, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1, - 0x00, 0x60, 0x0f, 0xe1, 0x8c, 0x40, 0x9f, 0xe5, - 0x04, 0x10, 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3, - 0x09, 0x00, 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4, - 0x01, 0x10, 0x80, 0xe0, 0x03, 0x10, 0xc1, 0xe3, - 0x04, 0x20, 0x94, 0xe4, 0x3c, 0x00, 0xc8, 0x0a, - 0x00, 0x00, 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0, - 0x2f, 0xe1, 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20, - 0x94, 0xe4, 0x13, 0x00, 0x00, 0xeb, 0xf2, 0xff, - 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1, 0x05, 0xf0, - 0xa0, 0xe1, 0x0e, 0x50, 0xa0, 0xe1, 0x00, 0x60, - 0x0f, 0xe1, 0x44, 0x40, 0x9f, 0xe5, 0x04, 0x10, - 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3, 0x08, 0x00, - 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4, 0x3c, 0x00, - 0x04, 0x0b, 0x00, 0x00, 0x01, 0x10, 0x80, 0xe0, - 0x03, 0x10, 0xc1, 0xe3, 0x04, 0x20, 0x94, 0xe4, - 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0, 0x2f, 0xe1, - 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20, 0x94, 0xe4, - 0xf3, 0xff, 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1, - 0x05, 0xf0, 0xa0, 0xe1, 0x01, 0x00, 0x50, 0xe1, - 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x3c, 0x0a, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x01, 0x60, - 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0x70, 0x47, - 0x00, 0x00, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00, - 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x10, 0x0e, - 0x01, 0xee, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00, - 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x1e, 0xff, - 0x2f, 0xe1, 0x10, 0x1e, 0x10, 0xee, 0x01, 0x00, - 0x11, 0xe3, 0x03, 0x00, 0x00, 0x0a, 0x10, 0x1e, - 0x11, 0xee, 0x3c, 0x00, 0x7c, 0x0b, 0x00, 0x00, - 0x00, 0x10, 0x80, 0xe5, 0x01, 0x00, 0xa0, 0xe3, - 0x1e, 0xff, 0x2f, 0xe1, 0x00, 0x00, 0x20, 0xe0, - 0x1e, 0xff, 0x2f, 0xe1, 0x8d, 0x46, 0x97, 0x46, - 0x78, 0x47, 0xc0, 0x46, 0x78, 0xfd, 0xff, 0xea, - 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x28, 0x01, 0xd9, - 0x00, 0xf0, 0xac, 0xfb, 0x0c, 0x48, 0x40, 0x68, - 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24, 0x0b, 0x48, - 0x01, 0x68, 0x09, 0x48, 0x3c, 0x00, 0xb8, 0x0b, - 0x00, 0x00, 0x12, 0x30, 0x00, 0x29, 0x05, 0xd0, - 0x06, 0x21, 0x61, 0x43, 0x40, 0x5c, 0xc3, 0x00, - 0x18, 0x18, 0x04, 0xe0, 0x06, 0x21, 0x61, 0x43, - 0x40, 0x5c, 0x14, 0x23, 0x58, 0x43, 0x0a, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x10, 0xbd, 0xd4, 0x7a, - 0x01, 0x00, 0xa8, 0x69, 0x01, 0x00, 0x80, 0xb5, - 0x09, 0x4a, 0x09, 0x49, 0x03, 0x20, 0x00, 0xf0, - 0xf2, 0xf9, 0x08, 0x49, 0x08, 0x20, 0x3c, 0x00, - 0xf4, 0x0b, 0x00, 0x00, 0x08, 0x60, 0x48, 0x60, - 0x07, 0x49, 0x1d, 0x20, 0x01, 0xf0, 0xb2, 0xfc, - 0x06, 0x49, 0x1e, 0x20, 0x01, 0xf0, 0xae, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, - 0x31, 0x27, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x29, 0x25, 0x00, 0x00, 0x31, 0x25, 0x00, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x08, 0x20, 0x88, 0x60, - 0x1d, 0x20, 0x01, 0xf0, 0xbf, 0xfc, 0x1e, 0x20, - 0x3c, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x01, 0xf0, - 0xbc, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xd1, 0x2a, - 0x80, 0xb5, 0x01, 0xd1, 0x05, 0xf0, 0x19, 0xfc, - 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x08, 0x80, 0x05, 0x20, 0x05, 0xf0, 0xd5, 0xfb, - 0x80, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x80, 0xb5, - 0x54, 0x28, 0x01, 0xd1, 0x06, 0xf0, 0xcd, 0xf8, - 0x80, 0xbd, 0x3c, 0x00, 0x6c, 0x0c, 0x00, 0x00, - 0xb0, 0xb5, 0x10, 0x4d, 0x02, 0x1c, 0x01, 0x24, - 0x01, 0x2a, 0x0d, 0x48, 0x29, 0x68, 0x06, 0xd0, - 0xc4, 0x2a, 0x03, 0xd1, 0x6a, 0x68, 0x00, 0x2a, - 0x05, 0xd0, 0xac, 0x60, 0xb0, 0xbd, 0x0e, 0xf0, - 0x89, 0xfb, 0x6c, 0x60, 0x08, 0xe0, 0x00, 0x22, - 0xaa, 0x60, 0x6c, 0x60, 0x0e, 0xf0, 0x82, 0xfb, - 0x00, 0x21, 0x04, 0x20, 0x12, 0xf0, 0xc8, 0xfc, - 0x06, 0xf0, 0xd8, 0xf8, 0x3c, 0x00, 0xa8, 0x0c, - 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x60, - 0x01, 0x00, 0xbc, 0x74, 0x01, 0x00, 0x05, 0x4a, - 0x51, 0x69, 0x08, 0x1a, 0x11, 0x69, 0x09, 0x68, - 0x10, 0x31, 0x81, 0x42, 0x01, 0xd8, 0x50, 0x61, - 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x8c, 0x6e, - 0x01, 0x00, 0x01, 0x49, 0x49, 0x68, 0x40, 0x1a, - 0x70, 0x47, 0x8c, 0x6e, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x0c, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, - 0x02, 0x4a, 0x51, 0x69, 0x08, 0x18, 0x50, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, - 0x0e, 0x49, 0x0f, 0x48, 0x10, 0xb5, 0x19, 0x22, - 0x92, 0x01, 0x41, 0x60, 0x89, 0x18, 0xc1, 0x60, - 0x0b, 0x49, 0x00, 0x22, 0x0c, 0x31, 0x01, 0x60, - 0x0a, 0x49, 0x82, 0x60, 0x09, 0x68, 0x01, 0x23, - 0xdb, 0x03, 0xc9, 0x18, 0x08, 0x4c, 0x41, 0x61, - 0x3c, 0x00, 0x20, 0x0d, 0x00, 0x00, 0x21, 0x68, - 0x00, 0x29, 0x02, 0xd0, 0x07, 0x49, 0x01, 0x61, - 0x01, 0xe0, 0x00, 0xf0, 0x0c, 0xf8, 0x22, 0x60, - 0x10, 0xbd, 0x44, 0xdc, 0x01, 0x00, 0x8c, 0x6e, - 0x01, 0x00, 0xc8, 0x09, 0x00, 0x00, 0x34, 0x58, - 0x01, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x01, 0x48, - 0x02, 0x49, 0x08, 0x61, 0x70, 0x47, 0xc8, 0x09, - 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, 0x08, 0x28, - 0x05, 0xd2, 0x3c, 0x00, 0x5c, 0x0d, 0x00, 0x00, - 0x03, 0x4b, 0x80, 0x00, 0x19, 0x50, 0x02, 0x49, - 0x20, 0x31, 0x0a, 0x50, 0x70, 0x47, 0x00, 0x00, - 0x64, 0x6d, 0x01, 0x00, 0x70, 0xb5, 0x06, 0x1c, - 0x0d, 0x48, 0x0d, 0x1c, 0x00, 0x68, 0x14, 0x1c, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x00, 0xf0, - 0x09, 0xfc, 0x70, 0xbd, 0x28, 0x06, 0x01, 0xd5, - 0x00, 0xf0, 0x22, 0xfe, 0x22, 0x1c, 0x29, 0x1c, - 0x30, 0x1c, 0x08, 0xf0, 0x3c, 0x00, 0x98, 0x0d, - 0x00, 0x00, 0xdd, 0xfd, 0x01, 0x1c, 0x03, 0x48, - 0x54, 0x30, 0x43, 0x69, 0x32, 0x1c, 0xff, 0xf7, - 0x1b, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0x50, 0x6d, - 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0d, 0x48, - 0x1f, 0x1c, 0x00, 0x68, 0x15, 0x1c, 0x0c, 0x1c, - 0x00, 0x28, 0x02, 0xd1, 0x28, 0x1c, 0x00, 0xf0, - 0xe8, 0xfb, 0x20, 0x06, 0x01, 0xd5, 0x00, 0xf0, - 0x02, 0xfe, 0x2a, 0x1c, 0x21, 0x1c, 0x3c, 0x00, - 0xd4, 0x0d, 0x00, 0x00, 0x30, 0x1c, 0x08, 0xf0, - 0xbd, 0xfd, 0x01, 0x1c, 0x03, 0x48, 0x54, 0x30, - 0x43, 0x69, 0x3a, 0x1c, 0xff, 0xf7, 0xfb, 0xfa, - 0xf8, 0xbd, 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00, - 0xf8, 0xb5, 0xf1, 0x28, 0x4e, 0xd1, 0x2a, 0x48, - 0x69, 0x46, 0x82, 0x69, 0xff, 0xf7, 0xee, 0xfa, - 0x27, 0x49, 0x00, 0x26, 0x54, 0x39, 0xc8, 0x68, - 0x8b, 0x68, 0xc2, 0x00, 0x01, 0x30, 0xd5, 0x18, - 0x3c, 0x00, 0x10, 0x0e, 0x00, 0x00, 0x07, 0x28, - 0xc8, 0x60, 0x00, 0xd1, 0xce, 0x60, 0x22, 0x48, - 0x6c, 0x68, 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x21, 0x20, 0x1c, 0x08, 0xf0, 0x3b, 0xfb, - 0x6e, 0x60, 0x25, 0x68, 0x20, 0x89, 0xa9, 0x78, - 0x02, 0x39, 0x40, 0x1a, 0xe9, 0x78, 0x40, 0x1a, - 0x20, 0x81, 0xa8, 0x78, 0x28, 0x18, 0x02, 0x38, - 0x20, 0x60, 0x6e, 0x78, 0x28, 0x78, 0x08, 0x28, - 0x17, 0xd2, 0x3c, 0x00, 0x4c, 0x0e, 0x00, 0x00, - 0x30, 0x06, 0x07, 0xd5, 0x27, 0x1c, 0x20, 0x1c, - 0x00, 0xf0, 0x7a, 0xfc, 0x04, 0x1c, 0x38, 0x1c, - 0x00, 0xf0, 0x9c, 0xfb, 0x28, 0x78, 0x0f, 0x49, - 0x40, 0x39, 0x80, 0x00, 0x0a, 0x58, 0x00, 0x2a, - 0x04, 0xd0, 0x31, 0x1c, 0x20, 0x1c, 0xff, 0xf7, - 0xb3, 0xfa, 0x08, 0xe0, 0x05, 0x21, 0x00, 0xe0, - 0x04, 0x21, 0x06, 0x20, 0x00, 0xf0, 0x10, 0xfa, - 0x20, 0x1c, 0x00, 0xf0, 0x3c, 0x00, 0x88, 0x0e, - 0x00, 0x00, 0x87, 0xfb, 0x30, 0x06, 0x01, 0xd5, - 0x00, 0xf0, 0xa1, 0xfd, 0xf8, 0xbd, 0x01, 0x21, - 0x06, 0x20, 0x00, 0xf0, 0x04, 0xfa, 0xf9, 0xe7, - 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00, 0xcc, 0x5c, - 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d, 0x19, 0x4f, - 0x01, 0x24, 0x54, 0x35, 0x29, 0x1c, 0x03, 0x20, - 0x7c, 0x60, 0x17, 0x4b, 0x18, 0x4a, 0x05, 0xf0, - 0xf4, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x3c, 0x00, - 0xc4, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x38, 0x60, - 0x1f, 0xe0, 0x3c, 0x60, 0x07, 0x21, 0x28, 0x1c, - 0xea, 0x69, 0xff, 0xf7, 0x83, 0xfa, 0x38, 0x20, - 0x00, 0xf0, 0x80, 0xfc, 0x00, 0x24, 0xb8, 0x60, - 0xb8, 0x68, 0xe6, 0x00, 0x35, 0x18, 0x68, 0x46, - 0x02, 0x21, 0x00, 0xf0, 0x75, 0xfb, 0x28, 0x60, - 0x28, 0x1c, 0x00, 0xf0, 0xa5, 0xfd, 0xb8, 0x68, - 0x81, 0x59, 0x06, 0x48, 0x54, 0x30, 0x02, 0x6a, - 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xf7, - 0x6c, 0xfa, 0x01, 0x34, 0x07, 0x2c, 0xea, 0xdb, - 0x00, 0x20, 0xf8, 0x60, 0x38, 0x61, 0xf8, 0xbd, - 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00, 0x81, 0x9a, - 0x00, 0x00, 0x61, 0x9a, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0, - 0x03, 0x48, 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21, - 0xff, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0x50, 0x6d, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x0f, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0xb5, 0x0a, 0x4e, - 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e, 0xa1, 0x69, - 0x00, 0x29, 0x07, 0xd0, 0x30, 0x68, 0x41, 0x60, - 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58, 0xff, 0xf7, - 0x3e, 0xfa, 0xf4, 0xe7, 0x03, 0x49, 0x02, 0x20, - 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10, 0x07, 0x00, - 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02, 0x07, 0x00, - 0x70, 0xb5, 0x0a, 0x4e, 0x3c, 0x00, 0x78, 0x0f, - 0x00, 0x00, 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e, - 0xe1, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x70, 0x68, - 0x41, 0x60, 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58, - 0xff, 0xf7, 0x24, 0xfa, 0xf4, 0xe7, 0x03, 0x49, - 0x02, 0x20, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02, - 0x07, 0x00, 0xb0, 0xb5, 0x09, 0x4d, 0x04, 0x1c, - 0x28, 0x1c, 0x20, 0x22, 0x40, 0x30, 0x3c, 0x00, - 0xb4, 0x0f, 0x00, 0x00, 0x05, 0x49, 0xff, 0xf7, - 0x9f, 0xfa, 0xe0, 0x68, 0xe8, 0x60, 0x20, 0x69, - 0x28, 0x61, 0xa0, 0x6a, 0xa8, 0x62, 0x60, 0x68, - 0x68, 0x60, 0xb0, 0xbd, 0x70, 0x52, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x00, 0x24, - 0x00, 0x23, 0x20, 0x28, 0x01, 0xdb, 0x01, 0x24, - 0x07, 0xe0, 0x08, 0x4e, 0x80, 0x00, 0x35, 0x58, - 0x07, 0x4f, 0xbd, 0x42, 0x00, 0xd0, 0x2b, 0x1c, - 0x3c, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x31, 0x50, - 0x13, 0x60, 0x00, 0x2c, 0x03, 0xd0, 0x21, 0x1c, - 0x82, 0x20, 0x00, 0xf0, 0x52, 0xf9, 0x20, 0x1c, - 0xf8, 0xbd, 0xe0, 0x7e, 0x01, 0x00, 0x75, 0x75, - 0x00, 0x00, 0xb0, 0xb5, 0x0b, 0x4d, 0x04, 0x1c, - 0x28, 0x68, 0x00, 0x28, 0x0f, 0xd0, 0x20, 0x1c, - 0x12, 0xf0, 0xb7, 0xfd, 0x00, 0x28, 0x0a, 0xd0, - 0x21, 0x7a, 0x28, 0x7a, 0x0a, 0x07, 0x00, 0x07, - 0x00, 0x0f, 0x3c, 0x00, 0x2c, 0x10, 0x00, 0x00, - 0x12, 0x0f, 0x90, 0x42, 0x29, 0x72, 0x01, 0xd0, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0xf0, 0xb5, 0x42, 0x4e, - 0x05, 0x1c, 0x30, 0x68, 0x85, 0xb0, 0x00, 0x28, - 0x63, 0xd0, 0x00, 0x24, 0x00, 0x20, 0x00, 0x2d, - 0x06, 0xd0, 0x69, 0x78, 0x18, 0x29, 0x03, 0xd1, - 0xe9, 0x79, 0x01, 0x29, 0x00, 0xd1, 0x01, 0x20, - 0x00, 0x28, 0x45, 0xd0, 0x3c, 0x00, 0x68, 0x10, - 0x00, 0x00, 0x00, 0x20, 0xb0, 0x72, 0x81, 0x00, - 0x4a, 0x19, 0x93, 0x7a, 0x59, 0x06, 0x89, 0x0f, - 0xdb, 0x06, 0x04, 0xd5, 0xb3, 0x7a, 0x01, 0x27, - 0x8f, 0x40, 0x3b, 0x43, 0xb3, 0x72, 0xd2, 0x7a, - 0x13, 0x09, 0x12, 0x07, 0x12, 0x0f, 0x93, 0x42, - 0x05, 0xd3, 0x01, 0x22, 0x8a, 0x40, 0x14, 0x43, - 0x01, 0xaa, 0x89, 0x00, 0x50, 0x50, 0x01, 0x30, - 0x04, 0x28, 0xe4, 0xdb, 0xb0, 0x7a, 0x3c, 0x00, - 0xa4, 0x10, 0x00, 0x00, 0x20, 0x40, 0x01, 0x07, - 0x0d, 0xd5, 0x41, 0x07, 0x09, 0xd5, 0xc1, 0x07, - 0x05, 0xd5, 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24, - 0x05, 0xe0, 0x02, 0x99, 0x02, 0xe0, 0x01, 0x99, - 0x00, 0xe0, 0x03, 0x99, 0x04, 0x91, 0x41, 0x07, - 0x09, 0xd5, 0xc1, 0x07, 0x05, 0xd5, 0x81, 0x07, - 0x01, 0xd5, 0x00, 0x24, 0x03, 0xe0, 0x02, 0x99, - 0x00, 0xe0, 0x01, 0x99, 0x03, 0x91, 0xc1, 0x07, - 0x3c, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x05, 0xd5, - 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24, 0x01, 0xe0, - 0x02, 0x99, 0x01, 0x91, 0x80, 0x07, 0x01, 0xd5, - 0x00, 0x24, 0x22, 0xe0, 0x0f, 0x2c, 0x20, 0xd1, - 0x70, 0x68, 0x00, 0x28, 0x0b, 0xd0, 0x04, 0x9a, - 0x02, 0xab, 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a, - 0x28, 0x1c, 0x0b, 0xf0, 0x8a, 0xfb, 0x00, 0x20, - 0x70, 0x60, 0x10, 0xe0, 0x17, 0xe0, 0x30, 0x7a, - 0x29, 0x7a, 0x3c, 0x00, 0x1c, 0x11, 0x00, 0x00, - 0x00, 0x07, 0x09, 0x07, 0x09, 0x0f, 0x00, 0x0f, - 0x88, 0x42, 0x07, 0xd0, 0x04, 0x9a, 0x02, 0xab, - 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a, 0x28, 0x1c, - 0x0b, 0xf0, 0x76, 0xfb, 0x28, 0x7a, 0x30, 0x72, - 0x01, 0x20, 0x0f, 0x2c, 0x00, 0xd0, 0x00, 0x20, - 0x05, 0xb0, 0xf0, 0xbd, 0x01, 0x20, 0xfb, 0xe7, - 0x70, 0x78, 0x01, 0x00, 0x0d, 0x4a, 0x70, 0xb5, - 0x11, 0x68, 0x00, 0x20, 0x3c, 0x00, 0x58, 0x11, - 0x00, 0x00, 0x00, 0x29, 0x0e, 0xd0, 0x11, 0x7a, - 0x09, 0x06, 0x0b, 0xd5, 0x53, 0x7a, 0x94, 0x7a, - 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40, - 0x1e, 0x1c, 0x16, 0x40, 0x03, 0xd0, 0x22, 0x40, - 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x16, 0xf2, 0xd5, 0x70, 0xbd, - 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x10, 0xb5, - 0x08, 0x4c, 0x20, 0x68, 0x00, 0x28, 0x3c, 0x00, - 0x94, 0x11, 0x00, 0x00, 0x04, 0xd0, 0x60, 0x68, - 0x00, 0x28, 0x01, 0xd1, 0x0b, 0xf0, 0xc0, 0xfb, - 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x07, 0xc4, - 0x0c, 0x3c, 0x01, 0x20, 0x60, 0x60, 0x10, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00, - 0xf8, 0xb5, 0x0e, 0x4d, 0x04, 0x1c, 0x00, 0x20, - 0x68, 0x72, 0x20, 0x1c, 0x12, 0xf0, 0xde, 0xfc, - 0x3c, 0x00, 0xd0, 0x11, 0x00, 0x00, 0x00, 0x28, - 0x12, 0xd0, 0x00, 0x20, 0x03, 0x21, 0x01, 0x22, - 0x0f, 0x1a, 0x16, 0x1c, 0x23, 0x7a, 0xbe, 0x40, - 0x33, 0x40, 0x04, 0xd0, 0x6b, 0x7a, 0x16, 0x1c, - 0x86, 0x40, 0x33, 0x43, 0x6b, 0x72, 0x01, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x03, 0x28, 0xef, 0xd9, - 0xf8, 0xbd, 0x70, 0x78, 0x01, 0x00, 0x92, 0x00, - 0x51, 0x18, 0x8a, 0x7a, 0x12, 0x07, 0x12, 0x0f, - 0x02, 0x70, 0x3c, 0x00, 0x0c, 0x12, 0x00, 0x00, - 0xca, 0x7a, 0x12, 0x07, 0x12, 0x0f, 0x42, 0x70, - 0xca, 0x7a, 0x12, 0x09, 0x82, 0x70, 0x09, 0x7b, - 0x81, 0x80, 0x70, 0x47, 0x03, 0x4a, 0x0f, 0x21, - 0x52, 0x7a, 0x01, 0x20, 0x91, 0x43, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00, - 0x40, 0x07, 0x05, 0x49, 0x40, 0x0f, 0x05, 0x4a, - 0x09, 0x56, 0x52, 0x7a, 0x01, 0x20, 0x0a, 0x40, - 0x00, 0xd1, 0x00, 0x20, 0x3c, 0x00, 0x48, 0x12, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x5e, 0x46, - 0x01, 0x00, 0x70, 0x78, 0x01, 0x00, 0x12, 0x4a, - 0x70, 0xb5, 0x53, 0x7a, 0x94, 0x7a, 0xff, 0x20, - 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40, - 0x1e, 0x1c, 0x16, 0x40, 0x14, 0xd0, 0x22, 0x40, - 0x12, 0xd1, 0x08, 0x06, 0x00, 0x0e, 0x07, 0xd0, - 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x07, 0xd0, - 0x03, 0x28, 0x07, 0xd1, 0x07, 0x20, 0x3c, 0x00, - 0x84, 0x12, 0x00, 0x00, 0x70, 0xbd, 0x03, 0x20, - 0x70, 0xbd, 0x01, 0x20, 0x70, 0xbd, 0x05, 0x20, - 0x70, 0xbd, 0xff, 0x20, 0x70, 0xbd, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x16, 0xe1, 0xd5, 0x70, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x13, 0x48, 0x0d, 0x1c, 0x81, 0x68, 0x00, 0x29, - 0x05, 0xd0, 0x01, 0x7b, 0x00, 0x29, 0x01, 0xd1, - 0x04, 0x73, 0x45, 0x73, 0xf8, 0xbd, 0x0f, 0x4e, - 0x3c, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x31, 0x1c, - 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab, 0x1a, 0x70, - 0xc9, 0x79, 0x59, 0x70, 0x42, 0x68, 0x00, 0x2a, - 0x07, 0xd0, 0x20, 0x02, 0x28, 0x43, 0x01, 0x1c, - 0x00, 0x20, 0xff, 0xf7, 0x7e, 0xf8, 0x00, 0x28, - 0x04, 0xd1, 0x2a, 0x1c, 0x21, 0x1c, 0x00, 0x20, - 0x11, 0xf0, 0x0f, 0xf8, 0x00, 0xab, 0x18, 0x88, - 0xf0, 0x84, 0xe2, 0xe7, 0x00, 0x00, 0x88, 0x5a, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x12, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x81, 0x20, 0xff, 0xf7, 0xcd, 0xff, 0x80, 0xbd, - 0x01, 0x49, 0x01, 0x20, 0x88, 0x60, 0x70, 0x47, - 0x88, 0x5a, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x88, 0x60, 0x08, 0x7b, 0x00, 0x28, - 0x02, 0xd0, 0x49, 0x7b, 0xff, 0xf7, 0xbc, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, - 0x02, 0x4a, 0x01, 0x1c, 0x3c, 0x00, 0x38, 0x13, - 0x00, 0x00, 0x50, 0x68, 0x51, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x10, 0xb5, - 0x0c, 0x1c, 0x07, 0xf0, 0x64, 0xfa, 0x04, 0x61, - 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, 0xff, 0xb5, - 0x0e, 0x1c, 0x1f, 0x1c, 0x38, 0x20, 0x81, 0xb0, - 0x00, 0xf0, 0x3d, 0xfa, 0x1d, 0x49, 0x04, 0x1c, - 0x48, 0x69, 0x00, 0x28, 0x01, 0xd1, 0x4c, 0x61, - 0x00, 0xe0, 0x04, 0x60, 0x30, 0x01, 0x3c, 0x00, - 0x74, 0x13, 0x00, 0x00, 0x00, 0x90, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0xf0, 0x15, 0xfa, 0x05, 0x1c, - 0x00, 0x99, 0xff, 0xf7, 0x8b, 0xf8, 0x00, 0x20, - 0x73, 0x1e, 0x04, 0xe0, 0x01, 0x01, 0x4a, 0x19, - 0x10, 0x32, 0x6a, 0x50, 0x01, 0x30, 0x98, 0x42, - 0xf8, 0xd3, 0x00, 0x01, 0x2d, 0x50, 0x38, 0x21, - 0x20, 0x1c, 0xff, 0xf7, 0x7b, 0xf8, 0xa5, 0x60, - 0x65, 0x60, 0xe6, 0x85, 0x0c, 0x20, 0x60, 0x86, - 0x3c, 0x00, 0xb0, 0x13, 0x00, 0x00, 0xaf, 0x20, - 0x80, 0x01, 0xe0, 0x61, 0x0e, 0x20, 0xe0, 0x86, - 0x00, 0x20, 0x20, 0x60, 0x01, 0x98, 0xe0, 0x60, - 0x38, 0x68, 0x60, 0x61, 0x03, 0x99, 0x04, 0x48, - 0x08, 0x60, 0x04, 0x48, 0x38, 0x60, 0x05, 0xb0, - 0x00, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xfc, 0x5a, - 0x01, 0x00, 0xdd, 0x15, 0x01, 0x00, 0xfd, 0x16, - 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xf0, 0x2a, - 0x80, 0xb5, 0x3c, 0x00, 0xec, 0x13, 0x00, 0x00, - 0x04, 0xd0, 0xf1, 0x2a, 0x07, 0xd1, 0x06, 0xf0, - 0x09, 0xfb, 0x80, 0xbd, 0x07, 0xf0, 0x0c, 0xfa, - 0x0d, 0xf0, 0xa8, 0xfa, 0x80, 0xbd, 0x01, 0x21, - 0x02, 0x20, 0xff, 0xf7, 0x4d, 0xff, 0x80, 0xbd, - 0x01, 0x49, 0x00, 0x20, 0x48, 0x61, 0x70, 0x47, - 0xfc, 0x5a, 0x01, 0x00, 0x00, 0x28, 0x02, 0xd0, - 0x00, 0x29, 0x00, 0xd0, 0xc1, 0x60, 0x70, 0x47, - 0xf8, 0xb5, 0x17, 0x1c, 0x3c, 0x00, 0x28, 0x14, - 0x00, 0x00, 0x0e, 0x1c, 0x05, 0x1c, 0x1c, 0x1c, - 0x1c, 0x30, 0x07, 0xf0, 0xc8, 0xf8, 0x01, 0x69, - 0x42, 0x69, 0x80, 0x68, 0x89, 0x19, 0x89, 0x1a, - 0x81, 0x42, 0x06, 0xd2, 0x23, 0x1c, 0x3a, 0x1c, - 0x31, 0x1c, 0x28, 0x1c, 0x00, 0xf0, 0x05, 0xf8, - 0xf8, 0xbd, 0x00, 0x20, 0x38, 0x60, 0x20, 0x60, - 0xfa, 0xe7, 0xff, 0xb5, 0x85, 0xb0, 0x05, 0x98, - 0x01, 0x27, 0x0e, 0x1c, 0x1c, 0x30, 0x3c, 0x00, - 0x64, 0x14, 0x00, 0x00, 0x07, 0xf0, 0xae, 0xf8, - 0x04, 0x1c, 0x80, 0x88, 0x04, 0x30, 0x03, 0x90, - 0x2c, 0x48, 0x04, 0x90, 0x80, 0x79, 0x02, 0x90, - 0xa0, 0x69, 0xb0, 0x42, 0x17, 0xd2, 0x35, 0x1a, - 0x11, 0xe0, 0x03, 0x98, 0xff, 0xf7, 0x16, 0xfc, - 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21, 0x8e, 0x20, - 0xff, 0xf7, 0x08, 0xff, 0x00, 0x25, 0x00, 0x27, - 0x05, 0xe0, 0x21, 0x68, 0x01, 0x60, 0x20, 0x60, - 0x3c, 0x00, 0xa0, 0x14, 0x00, 0x00, 0xa0, 0x69, - 0x01, 0x30, 0xa0, 0x61, 0x01, 0x3d, 0xeb, 0xd2, - 0x00, 0x2f, 0x35, 0xd0, 0xa0, 0x69, 0x80, 0x1b, - 0xa0, 0x61, 0x20, 0x69, 0x80, 0x19, 0x20, 0x61, - 0x61, 0x69, 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42, - 0x03, 0xd9, 0x07, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0xec, 0xfe, 0x25, 0x68, 0x2f, 0x1c, 0x70, 0x1e, - 0x01, 0x95, 0x00, 0xe0, 0x3f, 0x68, 0x01, 0x38, - 0xfc, 0xd2, 0x3c, 0x00, 0xdc, 0x14, 0x00, 0x00, - 0x38, 0x68, 0x20, 0x60, 0x02, 0x98, 0x04, 0x99, - 0x88, 0x71, 0x2e, 0x68, 0x2c, 0x60, 0x32, 0x1d, - 0x00, 0x92, 0x29, 0x1c, 0x20, 0x31, 0x01, 0x22, - 0x28, 0x1d, 0x05, 0x9b, 0x08, 0xf0, 0x7a, 0xfc, - 0xbd, 0x42, 0x01, 0xd0, 0x35, 0x1c, 0xf0, 0xe7, - 0x00, 0x20, 0x38, 0x61, 0x01, 0x98, 0x07, 0x99, - 0x04, 0x30, 0x08, 0x60, 0x08, 0x98, 0x04, 0x37, - 0x07, 0x60, 0x09, 0xb0, 0x3c, 0x00, 0x18, 0x15, - 0x00, 0x00, 0xf0, 0xbd, 0x02, 0x98, 0x04, 0x99, - 0x88, 0x71, 0xf9, 0xe7, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x15, 0x1c, - 0x00, 0x20, 0x0c, 0x60, 0x09, 0xe0, 0xe2, 0x68, - 0x20, 0x1c, 0x00, 0x92, 0xa3, 0x8a, 0x21, 0x68, - 0xa2, 0x69, 0x08, 0xf0, 0x56, 0xfc, 0x20, 0x1c, - 0xe4, 0x68, 0x00, 0x2c, 0xf3, 0xd1, 0x28, 0x60, - 0x38, 0xbd, 0x80, 0xb5, 0x0c, 0xe0, 0x3c, 0x00, - 0x54, 0x15, 0x00, 0x00, 0xc2, 0x68, 0x8a, 0x42, - 0x08, 0xd1, 0x00, 0x21, 0xc1, 0x60, 0x00, 0x28, - 0x03, 0xd1, 0x06, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0x9d, 0xfe, 0x80, 0xbd, 0x10, 0x1c, 0x00, 0x28, - 0xf7, 0xd0, 0xef, 0xe7, 0x10, 0xb5, 0x04, 0x1c, - 0x0c, 0xd0, 0xa0, 0x69, 0x00, 0x28, 0x06, 0xd1, - 0x20, 0x69, 0x00, 0x28, 0x03, 0xd0, 0x06, 0xf0, - 0xf7, 0xfd, 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c, - 0x3c, 0x00, 0x90, 0x15, 0x00, 0x00, 0x06, 0xf0, - 0xf2, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x00, 0x28, 0x09, 0xd0, 0xc4, 0x68, 0x03, 0xe0, - 0xff, 0xf7, 0xe7, 0xff, 0x20, 0x1c, 0xf9, 0xe7, - 0x00, 0x2c, 0xf9, 0xd1, 0xff, 0xf7, 0xe1, 0xff, - 0x10, 0xbd, 0x01, 0x1c, 0x00, 0x20, 0x04, 0xe0, - 0x0a, 0x89, 0xc9, 0x68, 0x10, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0x29, 0xf8, 0xd1, 0x70, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x15, 0x00, 0x00, - 0x00, 0xe0, 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29, - 0xfb, 0xd1, 0x70, 0x47, 0xf8, 0xb5, 0x06, 0x1c, - 0x0c, 0x1c, 0x1c, 0x20, 0x00, 0xf0, 0x68, 0xfa, - 0x05, 0x1c, 0x00, 0x2e, 0x01, 0xd1, 0x00, 0x2c, - 0x02, 0xd1, 0x30, 0x1c, 0x01, 0x21, 0x03, 0xe0, - 0x20, 0x1c, 0x00, 0xf0, 0x5d, 0xfa, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x92, 0x0a, 0x1c, 0x01, 0x1c, - 0x23, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x08, 0x16, - 0x00, 0x00, 0x08, 0xf0, 0xf2, 0xfb, 0x28, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x03, 0x32, 0x92, 0x08, - 0x92, 0x00, 0x14, 0x04, 0x24, 0x0c, 0x09, 0x19, - 0x1d, 0x1c, 0xc9, 0x18, 0x09, 0x04, 0x09, 0x0c, - 0xff, 0xf7, 0xd7, 0xff, 0x01, 0x89, 0x02, 0x68, - 0x12, 0x19, 0x09, 0x1b, 0x49, 0x1b, 0x02, 0x60, - 0x01, 0x81, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x0a, 0x4c, 0xa0, 0x21, 0x20, 0x1c, 0x3c, 0x00, - 0x44, 0x16, 0x00, 0x00, 0xfe, 0xf7, 0x2a, 0xff, - 0x00, 0x20, 0x26, 0x1c, 0xa0, 0x36, 0x07, 0x4d, - 0x07, 0xe0, 0x0c, 0x21, 0x41, 0x43, 0x49, 0x19, - 0x0e, 0xc9, 0x27, 0x1d, 0x0e, 0xc7, 0x20, 0x34, - 0x01, 0x30, 0xa6, 0x42, 0xf5, 0xd1, 0xf8, 0xbd, - 0xd0, 0x5c, 0x01, 0x00, 0xc8, 0x3f, 0x01, 0x00, - 0xf7, 0xb5, 0xc4, 0x68, 0x06, 0x1c, 0x00, 0x25, - 0x00, 0x2c, 0x82, 0xb0, 0x23, 0xd0, 0x20, 0x89, - 0x3c, 0x00, 0x80, 0x16, 0x00, 0x00, 0x90, 0x42, - 0x20, 0xd3, 0xe1, 0x68, 0x87, 0x1a, 0x01, 0x91, - 0x00, 0x21, 0xe1, 0x60, 0x03, 0x99, 0x00, 0x20, - 0xff, 0xf7, 0xa1, 0xff, 0x05, 0x1c, 0x20, 0x89, - 0xc0, 0x1b, 0x20, 0x81, 0x2a, 0x68, 0x03, 0x99, - 0x30, 0x1c, 0x00, 0xf0, 0x16, 0xf8, 0x20, 0x89, - 0xc0, 0x19, 0x20, 0x81, 0x01, 0x99, 0x20, 0x1c, - 0xff, 0xf7, 0xb1, 0xfe, 0x21, 0x1c, 0x28, 0x1c, - 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0x16, 0x00, 0x00, - 0xad, 0xfe, 0x29, 0x1c, 0x30, 0x1c, 0xff, 0xf7, - 0xa9, 0xfe, 0x01, 0x20, 0x00, 0x2d, 0x00, 0xd1, - 0x00, 0x20, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xf7, 0xb5, 0x04, 0x1c, 0x0e, 0x1c, 0x00, 0x20, - 0x01, 0xe0, 0x20, 0x1c, 0x0c, 0x1c, 0xe1, 0x68, - 0x00, 0x29, 0xfa, 0xd1, 0x27, 0x89, 0xb7, 0x42, - 0x0a, 0xd3, 0xb8, 0x1b, 0x00, 0x04, 0x00, 0x0c, - 0x20, 0x81, 0x21, 0x68, 0x3c, 0x00, 0xf8, 0x16, - 0x00, 0x00, 0x09, 0x18, 0x02, 0x98, 0x32, 0x1c, - 0xfe, 0xf7, 0xfb, 0xfe, 0xfe, 0xbd, 0xf1, 0x1b, - 0x0d, 0x04, 0x2d, 0x0c, 0x00, 0x28, 0x19, 0xd0, - 0x01, 0x89, 0xa9, 0x42, 0x16, 0xd3, 0x49, 0x1b, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x00, 0x68, - 0x41, 0x18, 0x02, 0x98, 0x2a, 0x1c, 0xfe, 0xf7, - 0xe8, 0xfe, 0x21, 0x68, 0x02, 0x98, 0x72, 0x1b, - 0x40, 0x19, 0xfe, 0xf7, 0xe2, 0xfe, 0x3c, 0x00, - 0x34, 0x17, 0x00, 0x00, 0x20, 0x89, 0xc0, 0x1b, - 0x20, 0x81, 0x20, 0x68, 0xc0, 0x19, 0x20, 0x60, - 0xdf, 0xe7, 0x03, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0xad, 0xfd, 0xda, 0xe7, 0xf8, 0xb5, 0x04, 0x1c, - 0x00, 0x26, 0x13, 0xe0, 0x21, 0x89, 0x00, 0x20, - 0xff, 0xf7, 0x3e, 0xff, 0x05, 0x1c, 0x22, 0x89, - 0x21, 0x68, 0x00, 0x68, 0xfe, 0xf7, 0xc8, 0xfe, - 0x00, 0x2e, 0x01, 0xd1, 0x2e, 0x1c, 0x03, 0xe0, - 0x3c, 0x00, 0x70, 0x17, 0x00, 0x00, 0x29, 0x1c, - 0x38, 0x1c, 0xff, 0xf7, 0x50, 0xfe, 0xe4, 0x68, - 0x2f, 0x1c, 0x00, 0x2c, 0xe9, 0xd1, 0x30, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x89, - 0x40, 0x1a, 0x05, 0x04, 0x20, 0x68, 0x2d, 0x0c, - 0x40, 0x18, 0x29, 0x1c, 0xff, 0xf7, 0x1f, 0xff, - 0x21, 0x89, 0x49, 0x1b, 0x21, 0x81, 0xe1, 0x68, - 0xc1, 0x60, 0xe0, 0x60, 0xb0, 0xbd, 0x10, 0xb5, - 0x03, 0x30, 0x3c, 0x00, 0xac, 0x17, 0x00, 0x00, - 0x09, 0x4a, 0x81, 0x08, 0x10, 0x68, 0x3d, 0x24, - 0x08, 0x4b, 0x64, 0x01, 0x89, 0x00, 0x09, 0x18, - 0x1b, 0x19, 0x99, 0x42, 0x01, 0xd8, 0x11, 0x60, - 0x10, 0xbd, 0x0f, 0x21, 0x80, 0x20, 0xff, 0xf7, - 0x6b, 0xfd, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xb4, 0xcf, 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00, - 0x10, 0xb5, 0x11, 0xf0, 0x61, 0xff, 0x04, 0x1c, - 0x03, 0xd1, 0x0d, 0x21, 0x3c, 0x00, 0xe8, 0x17, - 0x00, 0x00, 0x80, 0x20, 0xff, 0xf7, 0x5b, 0xfd, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x01, 0x1f, 0x0b, 0x68, 0x0d, 0x48, 0x00, 0x22, - 0x83, 0x42, 0x04, 0xd0, 0x01, 0x32, 0x10, 0x30, - 0x03, 0x2a, 0xf9, 0xd3, 0x01, 0xe0, 0x03, 0x2a, - 0x06, 0xd3, 0x09, 0x24, 0x21, 0x1c, 0x80, 0x20, - 0xff, 0xf7, 0x45, 0xfd, 0x20, 0x1c, 0xb0, 0xbd, - 0x05, 0x4b, 0x00, 0x24, 0x9a, 0x79, 0x3c, 0x00, - 0x24, 0x18, 0x00, 0x00, 0x85, 0x68, 0x0d, 0x60, - 0x81, 0x60, 0x9a, 0x71, 0xf5, 0xe7, 0x00, 0x00, - 0x20, 0x57, 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, - 0xb0, 0xb5, 0x00, 0x21, 0x10, 0x4a, 0x00, 0x23, - 0xd4, 0x68, 0x84, 0x42, 0x04, 0xd2, 0x01, 0x33, - 0x10, 0x32, 0x03, 0x2b, 0xf8, 0xd3, 0x01, 0xe0, - 0x03, 0x2b, 0x01, 0xd3, 0x04, 0x21, 0x0e, 0xe0, - 0x0a, 0x4c, 0xa3, 0x79, 0x90, 0x68, 0x00, 0x28, - 0x3c, 0x00, 0x60, 0x18, 0x00, 0x00, 0x02, 0xd1, - 0xa3, 0x71, 0x03, 0x21, 0x06, 0xe0, 0x05, 0x68, - 0x95, 0x60, 0xa3, 0x71, 0x00, 0x29, 0x01, 0xd1, - 0x04, 0xc0, 0xb0, 0xbd, 0x80, 0x20, 0xff, 0xf7, - 0x14, 0xfd, 0x00, 0x20, 0xb0, 0xbd, 0x20, 0x57, - 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xa0, 0x30, - 0x00, 0x8a, 0x40, 0x07, 0x40, 0x0f, 0x08, 0x28, - 0x0f, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x3c, 0x00, 0x9c, 0x18, 0x00, 0x00, - 0x05, 0x03, 0x03, 0x05, 0x07, 0x07, 0x09, 0x09, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x02, 0x20, 0x70, 0x47, 0x03, 0x20, 0x70, 0x47, - 0x04, 0x20, 0x70, 0x47, 0xb0, 0xb5, 0x10, 0x4d, - 0x68, 0x69, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x49, - 0x00, 0x22, 0x2c, 0x31, 0x03, 0xc9, 0x01, 0x43, - 0x03, 0x20, 0x06, 0xf0, 0xcf, 0xff, 0x0b, 0x4c, - 0x00, 0x22, 0x03, 0xcc, 0x3c, 0x00, 0xd8, 0x18, - 0x00, 0x00, 0x08, 0x3c, 0x01, 0x43, 0x03, 0x20, - 0x06, 0xf0, 0xaf, 0xff, 0x03, 0xcc, 0x08, 0x43, - 0x07, 0x49, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60, - 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x01, 0x20, - 0x68, 0x61, 0xb0, 0xbd, 0x00, 0x00, 0x64, 0x73, - 0x01, 0x00, 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x0f, 0xf0, - 0xa8, 0xfa, 0x05, 0x4d, 0xe8, 0x6a, 0x3c, 0x00, - 0x14, 0x19, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1, - 0x00, 0x2c, 0x04, 0xd0, 0x20, 0x1c, 0x0f, 0xf0, - 0xb7, 0xfd, 0x01, 0x20, 0x28, 0x70, 0xb0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x88, 0x6a, 0x00, 0x28, 0x04, 0xda, 0x00, 0x20, - 0x88, 0x62, 0x01, 0x21, 0x0d, 0xf0, 0x42, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7e, 0x01, 0x00, - 0xf8, 0xb5, 0x1e, 0x4d, 0x04, 0x1c, 0x00, 0x20, - 0x3c, 0x00, 0x50, 0x19, 0x00, 0x00, 0x68, 0x62, - 0xa8, 0x70, 0x1c, 0x48, 0x00, 0x78, 0xc0, 0x07, - 0x22, 0xd5, 0xb8, 0x20, 0x03, 0x59, 0x1a, 0x48, - 0x00, 0x78, 0x0e, 0x28, 0x09, 0xd1, 0x0a, 0x1c, - 0x80, 0x32, 0x06, 0xd0, 0x18, 0x4e, 0x0d, 0x20, - 0x32, 0x5c, 0x8a, 0x42, 0x01, 0xdd, 0x01, 0x38, - 0xfa, 0xd1, 0x59, 0x1e, 0x0b, 0x06, 0x1b, 0x0e, - 0xab, 0x70, 0xab, 0x62, 0x0e, 0x28, 0x0b, 0xd2, - 0x08, 0xe0, 0x3c, 0x00, 0x8c, 0x19, 0x00, 0x00, - 0x62, 0x18, 0xb0, 0x32, 0x12, 0x7b, 0x82, 0x42, - 0x02, 0xd8, 0x58, 0x1a, 0xa8, 0x62, 0x02, 0xe0, - 0x01, 0x39, 0x00, 0x29, 0xf4, 0xda, 0x0e, 0xf0, - 0x35, 0xf9, 0x00, 0x90, 0x00, 0xab, 0x18, 0x78, - 0x59, 0x78, 0x81, 0x42, 0x00, 0xd9, 0x58, 0x78, - 0xed, 0x30, 0xe8, 0x70, 0x01, 0x21, 0x20, 0x1c, - 0x0d, 0xf0, 0x02, 0xfd, 0xf8, 0xbd, 0x00, 0x00, - 0xac, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x19, - 0x00, 0x00, 0x1d, 0x75, 0x01, 0x00, 0x11, 0x67, - 0x01, 0x00, 0xc7, 0x52, 0x01, 0x00, 0x0e, 0x49, - 0x10, 0xb5, 0x08, 0x69, 0x8b, 0x68, 0xc2, 0x00, - 0xd4, 0x18, 0x62, 0x68, 0x00, 0x2a, 0x0f, 0xd1, - 0x01, 0x30, 0x08, 0x61, 0x07, 0x28, 0x01, 0xd1, - 0x00, 0x20, 0x08, 0x61, 0x20, 0x1c, 0x00, 0xf0, - 0x24, 0xf8, 0x05, 0x48, 0x21, 0x68, 0x54, 0x30, - 0x02, 0x6a, 0xfe, 0xf7, 0xec, 0xfc, 0x3c, 0x00, - 0x04, 0x1a, 0x00, 0x00, 0x10, 0xbd, 0x06, 0x21, - 0x06, 0x20, 0xff, 0xf7, 0x4b, 0xfc, 0x10, 0xbd, - 0x50, 0x6d, 0x01, 0x00, 0x08, 0x49, 0x09, 0x79, - 0xc9, 0x07, 0x08, 0x4a, 0x08, 0xd4, 0x00, 0xe0, - 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29, 0xfb, 0xd1, - 0x01, 0x89, 0x04, 0x31, 0x01, 0x81, 0x00, 0xe0, - 0x00, 0x20, 0xd0, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x60, 0x80, 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00, - 0x3c, 0x00, 0x40, 0x1a, 0x00, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x19, 0x21, 0x89, 0x01, 0x00, 0x20, - 0xff, 0xf7, 0xc5, 0xfd, 0x01, 0x1c, 0x60, 0x60, - 0x20, 0x68, 0xff, 0xf7, 0xe0, 0xfc, 0x60, 0x68, - 0x21, 0x68, 0x08, 0x30, 0x08, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x0a, 0x28, 0x01, 0xda, 0x04, 0x20, - 0x04, 0xe0, 0x50, 0x28, 0x01, 0xda, 0x05, 0x20, - 0x00, 0xe0, 0x07, 0x20, 0x04, 0x4a, 0x11, 0x78, - 0x38, 0x23, 0x3c, 0x00, 0x7c, 0x1a, 0x00, 0x00, - 0xc0, 0x00, 0x18, 0x40, 0x99, 0x43, 0x08, 0x43, - 0x10, 0x70, 0x70, 0x47, 0x88, 0x00, 0x07, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x40, 0x68, - 0x08, 0xe0, 0x01, 0x69, 0xa9, 0x42, 0x04, 0xd1, - 0x44, 0x68, 0x05, 0xf0, 0xc7, 0xfd, 0x20, 0x1c, - 0x00, 0xe0, 0x40, 0x68, 0x00, 0x28, 0xf4, 0xd1, - 0xb0, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, - 0xf8, 0xb5, 0x00, 0x25, 0x3c, 0x00, 0xb8, 0x1a, - 0x00, 0x00, 0x06, 0xf0, 0x84, 0xfd, 0x11, 0x4f, - 0x04, 0x1c, 0xbe, 0x79, 0x20, 0x68, 0x00, 0x28, - 0x07, 0xd1, 0xa0, 0x88, 0x04, 0x30, 0xff, 0xf7, - 0xf2, 0xf8, 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21, - 0x0f, 0xe0, 0x01, 0x68, 0x21, 0x60, 0xa1, 0x69, - 0x01, 0x39, 0xa1, 0x61, 0x10, 0xc0, 0x05, 0x1c, - 0x20, 0x69, 0x01, 0x30, 0x20, 0x61, 0x61, 0x69, - 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42, 0x3c, 0x00, - 0xf4, 0x1a, 0x00, 0x00, 0x03, 0xd9, 0x07, 0x21, - 0x8e, 0x20, 0xff, 0xf7, 0xd3, 0xfb, 0xbe, 0x71, - 0x28, 0x1c, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0xb0, 0xb5, 0x09, 0xf0, 0xbb, 0xff, 0x2f, 0x4c, - 0x00, 0x28, 0x20, 0x74, 0x03, 0xd0, 0x01, 0x21, - 0x01, 0x20, 0x0a, 0xf0, 0x71, 0xfc, 0x2b, 0x4d, - 0x14, 0x35, 0x28, 0x68, 0x00, 0x28, 0x4d, 0xd0, - 0x01, 0x21, 0x0f, 0x20, 0x11, 0xf0, 0x82, 0xfd, - 0x3c, 0x00, 0x30, 0x1b, 0x00, 0x00, 0x28, 0x89, - 0x08, 0xf0, 0xfb, 0xff, 0x01, 0x1c, 0x01, 0x22, - 0x0f, 0x20, 0x11, 0xf0, 0x40, 0xfd, 0xe0, 0x78, - 0x01, 0x25, 0x02, 0x28, 0x36, 0xd1, 0x0a, 0xf0, - 0xc6, 0xf8, 0x00, 0x28, 0x0a, 0xd0, 0x0b, 0xf0, - 0x92, 0xfb, 0x1e, 0x49, 0x09, 0x68, 0x40, 0x18, - 0x11, 0xf0, 0x5f, 0xf8, 0x00, 0x28, 0x01, 0xd1, - 0x02, 0x20, 0x2f, 0xe0, 0xe0, 0x78, 0x02, 0x28, - 0x24, 0xd1, 0x3c, 0x00, 0x6c, 0x1b, 0x00, 0x00, - 0x60, 0x70, 0x25, 0x70, 0x60, 0x68, 0x01, 0x28, - 0x1c, 0xd0, 0x15, 0x48, 0x10, 0x38, 0x81, 0x7b, - 0x00, 0x29, 0x04, 0xd1, 0x85, 0x73, 0x0f, 0x20, - 0x13, 0x49, 0x10, 0xf0, 0x01, 0xfc, 0x08, 0xf0, - 0x4f, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x48, - 0x01, 0x21, 0x98, 0x38, 0x00, 0x69, 0x01, 0xf0, - 0xb7, 0xfd, 0x00, 0x28, 0x05, 0xd0, 0x01, 0x20, - 0x0e, 0xf0, 0x0c, 0xfd, 0x3c, 0x00, 0xa8, 0x1b, - 0x00, 0x00, 0x01, 0x20, 0x0e, 0xf0, 0x1d, 0xfc, - 0xb0, 0xbd, 0x05, 0xf0, 0xdc, 0xfe, 0xb0, 0xbd, - 0xe0, 0x78, 0x00, 0x28, 0x01, 0xd1, 0x25, 0x70, - 0xf7, 0xe7, 0x03, 0x20, 0x00, 0xe0, 0x04, 0x20, - 0x0d, 0xf0, 0x8d, 0xfa, 0xb0, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0x6c, 0x57, 0x01, 0x00, 0xe9, 0x03, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x00, 0x21, - 0x00, 0x20, 0x0a, 0x4d, 0x00, 0xe0, 0x3c, 0x00, - 0xe4, 0x1b, 0x00, 0x00, 0x01, 0x31, 0xcb, 0x00, - 0x5a, 0x19, 0x16, 0x79, 0x01, 0x2e, 0x02, 0xd0, - 0x52, 0x79, 0xa2, 0x42, 0x02, 0xd0, 0x0b, 0x29, - 0xf4, 0xd3, 0x70, 0xbd, 0x0b, 0x29, 0xfc, 0xd2, - 0xc8, 0x00, 0x01, 0x21, 0x5a, 0x19, 0x28, 0x58, - 0x11, 0x71, 0x70, 0xbd, 0x38, 0x58, 0x01, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23, - 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x6a, - 0x3c, 0x00, 0x20, 0x1c, 0x00, 0x00, 0xfe, 0xf7, - 0xda, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5, - 0x04, 0xf0, 0x37, 0xff, 0x00, 0x20, 0x11, 0xf0, - 0x84, 0xfc, 0x00, 0x20, 0x80, 0xbd, 0xb0, 0xb5, - 0x05, 0x4c, 0x05, 0x1c, 0x20, 0x6b, 0xe1, 0x6a, - 0x02, 0xf0, 0xe3, 0xfd, 0x29, 0x1c, 0xa0, 0x6a, - 0x02, 0xf0, 0x11, 0xfb, 0xb0, 0xbd, 0xa4, 0x6c, - 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x1c, 0x00, 0x00, - 0xb0, 0xb5, 0x03, 0x1c, 0x08, 0x1c, 0x14, 0x1c, - 0x00, 0x2b, 0x0c, 0x4d, 0x09, 0xd0, 0x69, 0x69, - 0x89, 0x00, 0x01, 0x31, 0x0a, 0x04, 0x12, 0x0c, - 0x22, 0x80, 0x29, 0x1c, 0xfe, 0xf7, 0x3e, 0xfc, - 0x0a, 0xe0, 0x01, 0x1c, 0x28, 0x1c, 0x22, 0x88, - 0xfe, 0xf7, 0x38, 0xfc, 0x20, 0x88, 0x01, 0x28, - 0x02, 0xd9, 0x80, 0x08, 0x01, 0x38, 0x68, 0x61, - 0x01, 0x20, 0xb0, 0xbd, 0x3c, 0x00, 0x98, 0x1c, - 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0xf1, 0xb5, - 0x00, 0x98, 0x00, 0x26, 0xc1, 0x68, 0x08, 0x68, - 0x09, 0x89, 0x1c, 0x29, 0x34, 0xd3, 0xc1, 0x88, - 0xff, 0x23, 0x01, 0x33, 0x99, 0x42, 0x2f, 0xd1, - 0x01, 0x88, 0xc9, 0x1a, 0x2c, 0xd1, 0x41, 0x88, - 0x08, 0x29, 0x29, 0xd1, 0x01, 0x79, 0x06, 0x29, - 0x26, 0xd1, 0x41, 0x79, 0x04, 0x29, 0x23, 0xd1, - 0x00, 0x25, 0x00, 0x24, 0x07, 0x1c, 0x3c, 0x00, - 0xd4, 0x1c, 0x00, 0x00, 0x18, 0x37, 0x0b, 0xe0, - 0xa0, 0x00, 0x41, 0x18, 0x04, 0x31, 0x04, 0x22, - 0x38, 0x1c, 0xfe, 0xf7, 0x8b, 0xfb, 0x00, 0x28, - 0x01, 0xd1, 0x01, 0x25, 0x04, 0xe0, 0x01, 0x34, - 0x0a, 0x49, 0x48, 0x69, 0xa0, 0x42, 0xef, 0xd8, - 0x08, 0x49, 0x08, 0x78, 0x00, 0x28, 0x0a, 0xd0, - 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, 0x06, 0xd1, - 0x00, 0x2d, 0x04, 0xd1, 0x00, 0x98, 0xc0, 0x68, - 0x3c, 0x00, 0x10, 0x1d, 0x00, 0x00, 0xff, 0xf7, - 0x42, 0xfc, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e, - 0x01, 0x00, 0x02, 0x49, 0x48, 0x60, 0x01, 0x20, - 0x48, 0x61, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x01, 0x26, - 0x03, 0xf0, 0xef, 0xfa, 0x25, 0x1c, 0x10, 0x35, - 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x1d, 0x00, 0x00, - 0x04, 0xd0, 0x00, 0x20, 0x20, 0x77, 0x03, 0xf0, - 0xf1, 0xfb, 0x07, 0xe0, 0x03, 0xf0, 0x38, 0xfd, - 0x00, 0x28, 0x09, 0xd0, 0x01, 0x20, 0x20, 0x77, - 0x03, 0xf0, 0xce, 0xfc, 0x01, 0x1c, 0x06, 0x22, - 0x28, 0x1c, 0xfe, 0xf7, 0xc3, 0xfb, 0x02, 0xe0, - 0x02, 0x20, 0x20, 0x77, 0x00, 0x26, 0x30, 0x1c, - 0x70, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0x7a, - 0xc0, 0x07, 0x03, 0x49, 0x3c, 0x00, 0x88, 0x1d, - 0x00, 0x00, 0xc0, 0x0f, 0x88, 0x62, 0x70, 0x47, - 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, 0x88, 0x62, - 0x70, 0x47, 0xa4, 0x6c, 0x01, 0x00, 0x06, 0x48, - 0x80, 0x7a, 0xc1, 0x07, 0x06, 0x4a, 0xc9, 0x0f, - 0x91, 0x62, 0x20, 0x21, 0x80, 0x07, 0x00, 0xd4, - 0x00, 0x21, 0xa0, 0x32, 0x11, 0x70, 0x70, 0x47, - 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0x3c, 0x00, - 0xc4, 0x1d, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x07, 0x4a, 0x12, 0x68, 0x07, 0x4b, 0x9b, 0x69, - 0x1a, 0x40, 0x01, 0xd0, 0x01, 0x22, 0x00, 0xe0, - 0x00, 0x22, 0x0a, 0x60, 0x01, 0x21, 0x00, 0x2a, - 0x00, 0xd0, 0x00, 0x21, 0x01, 0x60, 0x70, 0x47, - 0x10, 0x00, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x01, 0x22, 0x02, 0x60, 0x0a, 0x60, 0x70, 0x47, - 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x1c, 0x58, 0x31, - 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x04, 0x1c, - 0x06, 0x22, 0x28, 0x1d, 0xfe, 0xf7, 0x77, 0xfb, - 0x21, 0x1c, 0x5e, 0x31, 0x06, 0x22, 0x28, 0x1c, - 0x0a, 0x30, 0xfe, 0xf7, 0x70, 0xfb, 0x21, 0x1c, - 0x64, 0x31, 0x06, 0x22, 0x28, 0x1c, 0x10, 0x30, - 0xfe, 0xf7, 0x69, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5, - 0x00, 0x25, 0x1d, 0x72, 0x17, 0x1c, 0x0e, 0x1c, - 0xb2, 0x6d, 0x00, 0x21, 0x92, 0x19, 0x50, 0x32, - 0xd2, 0x7a, 0x3c, 0x00, 0x3c, 0x1e, 0x00, 0x00, - 0x1c, 0x1c, 0x5a, 0x72, 0x00, 0x78, 0x32, 0x1c, - 0x80, 0x32, 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, - 0x01, 0x90, 0x08, 0x98, 0x02, 0x92, 0x00, 0x28, - 0x01, 0xd1, 0x30, 0x7f, 0x2b, 0xe0, 0x37, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x00, 0xdd, 0x01, 0x1c, - 0x01, 0x98, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x98, - 0x01, 0x28, 0x10, 0xd1, 0x02, 0x9a, 0x90, 0x6b, - 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0x78, 0x1e, - 0x00, 0x00, 0x88, 0x42, 0x01, 0xd9, 0x45, 0x1a, - 0x01, 0x3d, 0x70, 0x19, 0xb0, 0x30, 0x03, 0xe0, - 0xb5, 0x6d, 0x01, 0x3d, 0x70, 0x19, 0x50, 0x30, - 0x00, 0x7b, 0x0f, 0xe0, 0x02, 0x9a, 0x10, 0x6a, - 0x00, 0x28, 0x07, 0xd0, 0x88, 0x42, 0x01, 0xd9, - 0x45, 0x1a, 0x01, 0x3d, 0x70, 0x19, 0xa0, 0x30, - 0x00, 0x79, 0x03, 0xe0, 0xbd, 0x69, 0x01, 0x3d, - 0x78, 0x19, 0x00, 0x7f, 0xa0, 0x72, 0x3c, 0x00, - 0xb4, 0x1e, 0x00, 0x00, 0x0e, 0xf0, 0x0c, 0xf8, - 0x0e, 0x28, 0x11, 0xd1, 0xa0, 0x7a, 0x08, 0xf0, - 0x67, 0xff, 0x00, 0x28, 0x0c, 0xd0, 0x78, 0x68, - 0x00, 0x28, 0x05, 0xd1, 0x1b, 0x48, 0x00, 0x25, - 0x00, 0x78, 0x08, 0xf0, 0x4b, 0xff, 0x02, 0xe0, - 0x45, 0x1e, 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72, - 0x02, 0x9a, 0x50, 0x69, 0x00, 0x28, 0x17, 0xd0, - 0x08, 0x98, 0x01, 0x28, 0x14, 0xd0, 0xa0, 0x7a, - 0x3c, 0x00, 0xf0, 0x1e, 0x00, 0x00, 0x08, 0xf0, - 0x4e, 0xff, 0x00, 0x28, 0x0f, 0xd0, 0x01, 0x98, - 0x00, 0x28, 0x07, 0xd0, 0x02, 0x20, 0x20, 0x72, - 0x70, 0x6c, 0x80, 0x19, 0x40, 0x30, 0xc0, 0x79, - 0x60, 0x72, 0x04, 0xe0, 0x7d, 0x68, 0x01, 0x3d, - 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72, 0x02, 0x9a, - 0xa0, 0x7a, 0x91, 0x69, 0x08, 0xf0, 0x51, 0xff, - 0x20, 0x60, 0x02, 0x9a, 0x60, 0x7a, 0x91, 0x69, - 0x08, 0xf0, 0x3c, 0x00, 0x2c, 0x1f, 0x00, 0x00, - 0x4b, 0xff, 0x60, 0x60, 0xa0, 0x7a, 0xe0, 0x72, - 0x25, 0x73, 0xfe, 0xbd, 0xd4, 0x7e, 0x01, 0x00, - 0x90, 0x57, 0x01, 0x00, 0x00, 0x06, 0x00, 0x0e, - 0x00, 0x2a, 0x8c, 0xb5, 0x01, 0xd0, 0x8a, 0x22, - 0x00, 0xe0, 0x88, 0x22, 0x00, 0xab, 0x1a, 0x80, - 0x0c, 0xf0, 0xc2, 0xf8, 0x01, 0x90, 0x68, 0x46, - 0x0b, 0xf0, 0xbc, 0xfa, 0x8c, 0xbd, 0x00, 0x00, - 0x01, 0x1c, 0x08, 0x48, 0x3c, 0x00, 0x68, 0x1f, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28, - 0x09, 0xd0, 0x49, 0x68, 0x02, 0x20, 0x00, 0x29, - 0x00, 0xd1, 0x01, 0x20, 0x01, 0x06, 0x09, 0x0e, - 0x00, 0x20, 0x06, 0xf0, 0xd8, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0xb5, - 0x01, 0x90, 0x04, 0x1c, 0x44, 0x30, 0x01, 0xaa, - 0x69, 0x46, 0x11, 0xf0, 0xb8, 0xfd, 0x00, 0x28, - 0x0b, 0xd0, 0xa0, 0x69, 0x00, 0x21, 0x3c, 0x00, - 0xa4, 0x1f, 0x00, 0x00, 0xc2, 0x07, 0xd2, 0x0f, - 0x02, 0x20, 0xff, 0xf7, 0xc9, 0xff, 0x00, 0x21, - 0x20, 0x1c, 0x0f, 0xf0, 0xd9, 0xfe, 0x1c, 0xbd, - 0x04, 0x21, 0x98, 0x20, 0xff, 0xf7, 0x72, 0xf9, - 0xf9, 0xe7, 0x00, 0x00, 0x8c, 0xb5, 0x00, 0xab, - 0x84, 0x21, 0x19, 0x80, 0x05, 0x4b, 0x02, 0x1c, - 0x18, 0x1c, 0x99, 0x8a, 0x0c, 0xf0, 0x8e, 0xf8, - 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0, 0x7c, 0xfa, - 0x3c, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x8c, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x06, 0x49, 0x80, 0xb5, 0xc9, 0x68, - 0x14, 0x23, 0x40, 0x31, 0x89, 0x7a, 0x04, 0x4a, - 0x59, 0x43, 0x89, 0x18, 0x80, 0x00, 0x08, 0x58, - 0xfe, 0xf7, 0xe9, 0xf9, 0x80, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0x54, 0x47, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x20, 0xff, 0xf7, 0xd6, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x20, 0x00, 0x00, - 0x80, 0xb5, 0x12, 0x48, 0x11, 0x49, 0x80, 0x8a, - 0x0a, 0x8b, 0x00, 0x21, 0x00, 0x28, 0xc2, 0xb0, - 0x0c, 0xd1, 0x01, 0x2a, 0x05, 0xd0, 0x02, 0x2a, - 0x15, 0xd0, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x22, - 0x07, 0xe0, 0x02, 0x22, 0x00, 0xab, 0x5a, 0x80, - 0x99, 0x80, 0x04, 0xe0, 0x00, 0xab, 0x5a, 0x80, - 0x0d, 0x22, 0x00, 0xab, 0x9a, 0x80, 0x00, 0xab, - 0x18, 0x80, 0xff, 0x20, 0x3c, 0x00, 0x58, 0x20, - 0x00, 0x00, 0x98, 0x71, 0xd9, 0x71, 0x68, 0x46, - 0x00, 0xf0, 0xd1, 0xf9, 0x42, 0xb0, 0x80, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x09, 0xf0, 0x5f, 0xfc, 0x00, 0x20, 0x05, 0xf0, - 0x2a, 0xf9, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x36, 0xf9, 0x20, 0x1c, 0x0f, 0xf0, 0xb3, 0xfe, - 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x1c, 0xb5, - 0x09, 0xf0, 0x4f, 0xfc, 0x07, 0x20, 0x3c, 0x00, - 0x94, 0x20, 0x00, 0x00, 0x00, 0xab, 0x07, 0x4c, - 0x18, 0x80, 0xe1, 0x8a, 0x20, 0x1c, 0x0c, 0xf0, - 0x0b, 0xf8, 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0, - 0x17, 0xfa, 0x20, 0x1c, 0x0f, 0xf0, 0x9e, 0xfe, - 0x1c, 0xbd, 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20, 0xff, 0xf7, - 0xf1, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0x15, 0x4c, - 0xc2, 0xb0, 0xa0, 0x8a, 0x00, 0x28, 0x03, 0xd0, - 0x3c, 0x00, 0xd0, 0x20, 0x00, 0x00, 0x01, 0x28, - 0x1e, 0xd1, 0x02, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0xe1, 0x68, 0x40, 0x31, 0x88, 0x72, 0x20, 0x69, - 0x08, 0xf0, 0x23, 0xfd, 0x02, 0x1c, 0x0c, 0x48, - 0x18, 0x38, 0x80, 0x88, 0xe1, 0x68, 0x0f, 0xf0, - 0xa4, 0xfe, 0xa0, 0x8a, 0x00, 0xab, 0x18, 0x80, - 0x01, 0x20, 0x58, 0x80, 0x00, 0x20, 0x98, 0x80, - 0xff, 0x21, 0x99, 0x71, 0xd8, 0x71, 0x68, 0x46, - 0x00, 0xf0, 0x3c, 0x00, 0x0c, 0x21, 0x00, 0x00, - 0x7b, 0xf9, 0x42, 0xb0, 0x10, 0xbd, 0x03, 0x21, - 0x98, 0x20, 0xff, 0xf7, 0xc5, 0xf8, 0xf8, 0xe7, - 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x03, 0x48, 0x0f, 0xf0, 0x60, 0xfe, - 0x00, 0x20, 0x05, 0xf0, 0xcd, 0xf8, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x48, - 0x0f, 0xf0, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x48, 0x21, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20, - 0xff, 0xf7, 0xa9, 0xf8, 0x80, 0xbd, 0x80, 0xb5, - 0x03, 0x20, 0xff, 0xf7, 0x34, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xf0, 0xb5, 0x21, 0x4e, 0x00, 0x27, - 0xb1, 0x8a, 0x30, 0x1c, 0x00, 0x25, 0x04, 0x24, - 0x00, 0x29, 0x00, 0x8b, 0xc3, 0xb0, 0x1e, 0xd1, - 0x01, 0x28, 0x07, 0xd0, 0x31, 0x1c, 0x49, 0x8b, - 0x02, 0x28, 0x12, 0xd1, 0x00, 0x29, 0x3c, 0x00, - 0x84, 0x21, 0x00, 0x00, 0x07, 0xd1, 0x00, 0x24, - 0x05, 0xe0, 0x00, 0x24, 0x01, 0x25, 0x02, 0x20, - 0x00, 0xab, 0xd8, 0x80, 0x1f, 0x81, 0x0f, 0xf0, - 0x7f, 0xff, 0x00, 0x2c, 0x10, 0xd1, 0xf1, 0x68, - 0x05, 0x20, 0x40, 0x31, 0x88, 0x72, 0x0e, 0xe0, - 0x00, 0x29, 0x1a, 0xd1, 0x00, 0xab, 0xd8, 0x80, - 0x0e, 0x20, 0x02, 0xe0, 0x00, 0xab, 0xd8, 0x80, - 0x0d, 0x20, 0x00, 0xab, 0x18, 0x81, 0x07, 0xe0, - 0x3c, 0x00, 0xc0, 0x21, 0x00, 0x00, 0x30, 0x1c, - 0x0f, 0xf0, 0x13, 0xfe, 0x20, 0x1c, 0xff, 0xf7, - 0xfc, 0xfe, 0x00, 0x2d, 0x08, 0xd0, 0xb0, 0x8a, - 0x00, 0xab, 0x98, 0x80, 0xff, 0x20, 0x98, 0x72, - 0xdf, 0x72, 0x01, 0xa8, 0x00, 0xf0, 0x11, 0xf9, - 0x43, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0, - 0x6c, 0xf8, 0x04, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x78, 0xf8, 0x3c, 0x00, 0xfc, 0x21, 0x00, 0x00, - 0x0f, 0xf0, 0x4c, 0xff, 0x20, 0x1c, 0x0f, 0xf0, - 0xf3, 0xfd, 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7, 0xd8, 0xfe, - 0x01, 0x48, 0x0f, 0xf0, 0xe9, 0xfd, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x20, - 0xff, 0xf7, 0xce, 0xfe, 0x01, 0x20, 0x05, 0xf0, - 0x5f, 0xf8, 0x02, 0x48, 0x0f, 0xf0, 0xdc, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x22, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x03, 0x20, 0xff, 0xf7, 0xc0, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x1d, 0x4d, 0xc2, 0xb0, - 0x28, 0x8b, 0x00, 0xab, 0xff, 0x21, 0x58, 0x80, - 0x99, 0x71, 0x00, 0x21, 0xd9, 0x71, 0xaa, 0x8a, - 0x00, 0x24, 0x01, 0x2a, 0x18, 0xd1, 0x2a, 0x1c, - 0x52, 0x8b, 0x02, 0x28, 0x0f, 0xd1, 0x00, 0x2a, - 0x16, 0xd1, 0x03, 0x20, 0x58, 0x80, 0x3c, 0x00, - 0x74, 0x22, 0x00, 0x00, 0x99, 0x80, 0x2c, 0x1c, - 0xff, 0x22, 0x98, 0x1d, 0xe9, 0x69, 0xfe, 0xf7, - 0x3b, 0xf9, 0xe1, 0x68, 0x04, 0x20, 0x40, 0x31, - 0x88, 0x72, 0x10, 0xe0, 0x00, 0x2a, 0x06, 0xd1, - 0x01, 0x24, 0x0e, 0x20, 0x01, 0xe0, 0x01, 0x24, - 0x0d, 0x20, 0x00, 0xab, 0x98, 0x80, 0x28, 0x1c, - 0x0f, 0xf0, 0xa4, 0xfd, 0x04, 0x20, 0xff, 0xf7, - 0x8d, 0xfe, 0x00, 0x2c, 0x05, 0xd0, 0xa8, 0x8a, - 0x3c, 0x00, 0xb0, 0x22, 0x00, 0x00, 0x00, 0xab, - 0x18, 0x80, 0x68, 0x46, 0x00, 0xf0, 0xa5, 0xf8, - 0x42, 0xb0, 0xb0, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0, - 0x00, 0xf8, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x0c, 0xf8, 0x20, 0x1c, 0x0f, 0xf0, 0x89, 0xfd, - 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x04, 0x20, 0xff, 0xf7, 0x6e, 0xfe, 0x01, 0x48, - 0x0f, 0xf0, 0x3c, 0x00, 0xec, 0x22, 0x00, 0x00, - 0x7f, 0xfd, 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x20, 0xff, 0xf7, 0x64, 0xfe, - 0x01, 0x20, 0x04, 0xf0, 0xf5, 0xff, 0x02, 0x48, - 0x0f, 0xf0, 0x72, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x20, - 0xff, 0xf7, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x19, 0x4d, 0x04, 0x24, 0xa9, 0x8a, - 0x28, 0x1c, 0x02, 0x8b, 0x3c, 0x00, 0x28, 0x23, - 0x00, 0x00, 0xc2, 0xb0, 0x01, 0x29, 0x14, 0xd1, - 0x40, 0x8b, 0x04, 0x2a, 0x0b, 0xd1, 0x00, 0x28, - 0x00, 0xd1, 0x00, 0x24, 0x0f, 0xf0, 0xad, 0xfe, - 0x00, 0x2c, 0x19, 0xd1, 0xe9, 0x68, 0x05, 0x20, - 0x40, 0x31, 0x88, 0x72, 0x17, 0xe0, 0x00, 0x28, - 0x10, 0xd1, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x20, - 0x02, 0xe0, 0x00, 0xab, 0x5a, 0x80, 0x0d, 0x20, - 0x00, 0xab, 0x98, 0x80, 0x19, 0x80, 0x3c, 0x00, - 0x64, 0x23, 0x00, 0x00, 0xff, 0x20, 0x98, 0x71, - 0x00, 0x20, 0xd8, 0x71, 0x68, 0x46, 0x00, 0xf0, - 0x49, 0xf8, 0x42, 0xb0, 0xb0, 0xbd, 0x28, 0x1c, - 0x0f, 0xf0, 0x38, 0xfd, 0x20, 0x1c, 0xff, 0xf7, - 0x21, 0xfe, 0xf6, 0xe7, 0x70, 0x7c, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x20, 0x04, 0xf0, 0x9e, 0xff, - 0x03, 0x4c, 0xe0, 0x8a, 0x04, 0xf0, 0xaa, 0xff, - 0x20, 0x1c, 0x0f, 0xf0, 0x27, 0xfd, 0x10, 0xbd, - 0x3c, 0x00, 0xa0, 0x23, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7, - 0x0c, 0xfe, 0x01, 0x48, 0x0f, 0xf0, 0x1d, 0xfd, - 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x20, 0xff, 0xf7, 0x02, 0xfe, 0x01, 0x20, - 0x04, 0xf0, 0x93, 0xff, 0x02, 0x48, 0x0f, 0xf0, - 0x10, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x01, 0x1c, - 0x44, 0x31, 0x3c, 0x00, 0xdc, 0x23, 0x00, 0x00, - 0x04, 0x1c, 0x06, 0x22, 0x28, 0x1c, 0xfe, 0xf7, - 0x89, 0xf8, 0xec, 0x60, 0x20, 0x69, 0x03, 0xf0, - 0x97, 0xf8, 0x01, 0x1c, 0x06, 0x22, 0xa8, 0x18, - 0xfe, 0xf7, 0x80, 0xf8, 0x04, 0x20, 0xff, 0xf7, - 0xf7, 0xfd, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x90, 0xb5, 0x04, 0x1c, 0x80, 0x88, 0x93, 0xb0, - 0x00, 0x28, 0x06, 0xd0, 0x15, 0x49, 0x06, 0x22, - 0x48, 0x80, 0x18, 0x31, 0x3c, 0x00, 0x18, 0x24, - 0x00, 0x00, 0x88, 0x1f, 0xfe, 0xf7, 0x6d, 0xf8, - 0x68, 0x46, 0x0c, 0xf0, 0x14, 0xf8, 0x20, 0x88, - 0x01, 0x28, 0x08, 0xd1, 0x60, 0x88, 0x03, 0x28, - 0x05, 0xd1, 0xa0, 0x88, 0x00, 0x28, 0x02, 0xd1, - 0x06, 0x20, 0x0c, 0xa9, 0x08, 0x70, 0xa0, 0x79, - 0x06, 0x21, 0xff, 0x28, 0x04, 0xd0, 0xe0, 0x79, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x1c, 0x08, 0x31, - 0x0b, 0x20, 0x08, 0xaa, 0x50, 0x72, 0x3c, 0x00, - 0x54, 0x24, 0x00, 0x00, 0x20, 0x1c, 0x08, 0xf0, - 0x3b, 0xff, 0x03, 0x90, 0x68, 0x46, 0x0b, 0xf0, - 0x31, 0xf8, 0x13, 0xb0, 0x90, 0xbd, 0x00, 0x00, - 0x58, 0x7c, 0x01, 0x00, 0x07, 0x4b, 0x1a, 0x78, - 0x82, 0x42, 0x01, 0xd0, 0x00, 0x29, 0x07, 0xd0, - 0xff, 0x20, 0x18, 0x70, 0x04, 0x48, 0x01, 0x88, - 0x01, 0x22, 0x52, 0x03, 0x91, 0x43, 0x01, 0x80, - 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00, - 0x3c, 0x00, 0x90, 0x24, 0x00, 0x00, 0x32, 0x80, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x23, - 0x07, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x79, - 0x0a, 0xf0, 0x4f, 0xf9, 0x01, 0x20, 0x03, 0x49, - 0xa0, 0x40, 0x08, 0x39, 0x0a, 0x78, 0x10, 0x43, - 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x74, 0x7a, - 0x01, 0x00, 0x03, 0x4a, 0x00, 0x21, 0x11, 0x54, - 0x80, 0x00, 0x30, 0x32, 0x10, 0x58, 0x01, 0x70, - 0x70, 0x47, 0x3c, 0x00, 0xcc, 0x24, 0x00, 0x00, - 0xe0, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xfe, 0xf7, 0x12, 0xff, - 0x20, 0x1c, 0xff, 0xf7, 0xed, 0xff, 0x00, 0x21, - 0x20, 0x1c, 0x0e, 0xf0, 0x89, 0xfb, 0x10, 0xbd, - 0x05, 0x49, 0x80, 0xb5, 0x88, 0x60, 0x08, 0x7f, - 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x08, 0x58, - 0xfd, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x25, - 0x00, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x91, 0x20, 0xfe, 0xf7, 0xc7, 0xfe, - 0x80, 0xbd, 0x02, 0x4a, 0x11, 0x68, 0x81, 0x43, - 0x11, 0x60, 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e, - 0x01, 0x00, 0x80, 0xb5, 0xfe, 0xf7, 0xe9, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0xfe, 0xf7, 0xe5, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0x31, 0xfa, - 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x3c, 0x00, - 0x44, 0x25, 0x00, 0x00, 0x04, 0x20, 0x88, 0x60, - 0x00, 0xf0, 0xd0, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x99, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, - 0x99, 0xfb, 0x80, 0xbd, 0x38, 0xb5, 0x20, 0x28, - 0x15, 0xd2, 0x0d, 0x4c, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79, - 0x5a, 0x70, 0x0a, 0x4b, 0x82, 0x00, 0x99, 0x50, - 0x3c, 0x00, 0x80, 0x25, 0x00, 0x00, 0x01, 0x21, - 0x81, 0x40, 0x08, 0x48, 0x01, 0x60, 0x42, 0x68, - 0x11, 0x43, 0x41, 0x60, 0x00, 0xab, 0x18, 0x88, - 0xe0, 0x84, 0x38, 0xbd, 0x01, 0x21, 0xff, 0x20, - 0xfe, 0xf7, 0x83, 0xfe, 0xf9, 0xe7, 0x00, 0x10, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x20, 0x28, 0x09, 0xd2, 0x05, 0x49, - 0x06, 0x4b, 0x82, 0x00, 0x99, 0x50, 0x05, 0x4a, - 0x51, 0x68, 0x3c, 0x00, 0xbc, 0x25, 0x00, 0x00, - 0x01, 0x23, 0x83, 0x40, 0x99, 0x43, 0x51, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xa9, 0x75, 0x00, 0x00, - 0x30, 0x74, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00, - 0x02, 0x4a, 0x11, 0x68, 0x08, 0x43, 0x10, 0x60, - 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e, 0x01, 0x00, - 0x0b, 0x48, 0x01, 0x68, 0x03, 0x22, 0x12, 0x04, - 0x11, 0x43, 0x01, 0x60, 0x01, 0x68, 0x07, 0x22, - 0x12, 0x06, 0x91, 0x43, 0x3c, 0x00, 0xf8, 0x25, - 0x00, 0x00, 0x01, 0x22, 0x52, 0x06, 0x89, 0x18, - 0x01, 0x60, 0x01, 0x68, 0x12, 0x0c, 0x11, 0x43, - 0x01, 0x60, 0x01, 0x68, 0x52, 0x08, 0x11, 0x43, - 0x01, 0x60, 0x70, 0x47, 0x00, 0x00, 0x80, 0x00, - 0x07, 0x00, 0xfe, 0xb5, 0x1c, 0x4e, 0x05, 0x1c, - 0xb0, 0x8a, 0xf2, 0x68, 0x12, 0xd0, 0x01, 0x24, - 0x00, 0x29, 0x09, 0xd1, 0x11, 0x6d, 0x02, 0xaa, - 0x01, 0xab, 0xfe, 0xf7, 0xf8, 0xfe, 0x3c, 0x00, - 0x34, 0x26, 0x00, 0x00, 0x02, 0x98, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x24, 0x0b, 0xe0, 0x01, 0xaa, - 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x70, 0xff, - 0x05, 0xe0, 0x11, 0x6d, 0x02, 0xaa, 0x00, 0x24, - 0x01, 0xab, 0xfe, 0xf7, 0x01, 0xff, 0x0e, 0x49, - 0x08, 0x1c, 0x20, 0x30, 0x82, 0x79, 0x00, 0xab, - 0x1a, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x30, 0x68, - 0x00, 0x28, 0x02, 0xd1, 0x02, 0x98, 0x30, 0x60, - 0x3c, 0x00, 0x70, 0x26, 0x00, 0x00, 0x02, 0xe0, - 0x02, 0x98, 0x72, 0x68, 0xd0, 0x60, 0x01, 0x98, - 0x00, 0xab, 0x70, 0x60, 0x18, 0x88, 0xc8, 0x84, - 0xf0, 0x68, 0xc0, 0x6c, 0xf0, 0x60, 0x20, 0x1c, - 0xfe, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x54, 0x27, - 0x1d, 0x4e, 0x00, 0x20, 0x30, 0x60, 0x70, 0x60, - 0x67, 0x43, 0x38, 0x04, 0x15, 0x1c, 0x00, 0x0c, - 0xb1, 0x82, 0x3c, 0x00, 0xac, 0x26, 0x00, 0x00, - 0xff, 0xf7, 0x96, 0xf8, 0x08, 0x21, 0x30, 0x61, - 0x00, 0x26, 0x17, 0x4a, 0x14, 0xe0, 0x03, 0x1c, - 0x24, 0x33, 0x42, 0x61, 0x03, 0x61, 0xc6, 0x61, - 0x01, 0x83, 0x08, 0x33, 0x03, 0x60, 0xb1, 0x23, - 0x43, 0x60, 0x03, 0x1c, 0x64, 0x33, 0xc3, 0x60, - 0x0c, 0x23, 0x03, 0x81, 0x03, 0x1c, 0x54, 0x33, - 0x4c, 0x30, 0x28, 0xc0, 0x01, 0x3c, 0x18, 0x1c, - 0x00, 0x2c, 0xe8, 0xd1, 0x3c, 0x00, 0xe8, 0x26, - 0x00, 0x00, 0x09, 0x4e, 0x07, 0x22, 0x30, 0x69, - 0xd2, 0x43, 0xc1, 0x19, 0x50, 0x50, 0x02, 0x1c, - 0x10, 0x32, 0x80, 0x39, 0x8a, 0x63, 0xf0, 0x60, - 0xb0, 0x60, 0x00, 0x21, 0x00, 0x20, 0xff, 0xf7, - 0x88, 0xff, 0x30, 0x69, 0xf0, 0x60, 0xb0, 0x60, - 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x91, 0x00, - 0x05, 0x00, 0x01, 0x48, 0x40, 0x6a, 0x70, 0x47, - 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x3c, 0x00, - 0x24, 0x27, 0x00, 0x00, 0x01, 0x48, 0x00, 0x88, - 0x70, 0x47, 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00, - 0x06, 0x49, 0x80, 0xb5, 0x08, 0x88, 0x01, 0x30, - 0x08, 0x80, 0x05, 0x49, 0x08, 0x20, 0x08, 0x60, - 0x04, 0x49, 0x88, 0x69, 0x88, 0x61, 0x00, 0xf0, - 0x21, 0xf8, 0x80, 0xbd, 0xfc, 0x6b, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x03, 0x4a, 0x01, 0x20, 0x12, 0x1d, 0x06, 0xca, - 0x3c, 0x00, 0x60, 0x27, 0x00, 0x00, 0x91, 0x42, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0xe8, 0x7d, - 0x01, 0x00, 0x06, 0x48, 0x00, 0xb5, 0xc0, 0x7c, - 0x00, 0x28, 0x03, 0xd1, 0xff, 0xf7, 0xef, 0xff, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x00, 0xbd, - 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00, 0xa0, 0x80, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x80, 0x07, - 0x02, 0xd5, 0x06, 0xf0, 0x3e, 0xfd, 0x03, 0xe0, - 0xe0, 0x07, 0x3c, 0x00, 0x9c, 0x27, 0x00, 0x00, - 0x01, 0xd5, 0x06, 0xf0, 0xe3, 0xfd, 0x60, 0x07, - 0x01, 0xd5, 0xfe, 0xf7, 0xab, 0xfd, 0x10, 0xbd, - 0x02, 0x4a, 0x01, 0x1c, 0x10, 0x68, 0x11, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x38, 0xb5, 0x20, 0x4d, 0x2c, 0x1c, 0x20, 0x34, - 0xa0, 0x79, 0x00, 0xab, 0x18, 0x70, 0xe0, 0x79, - 0x58, 0x70, 0xfe, 0xf7, 0x27, 0xfa, 0x00, 0xab, - 0x18, 0x88, 0xe8, 0x84, 0x3c, 0x00, 0xd8, 0x27, - 0x00, 0x00, 0x1a, 0x48, 0x81, 0x78, 0x08, 0x22, - 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43, - 0x81, 0x70, 0x17, 0x48, 0x41, 0x68, 0x80, 0x22, - 0x91, 0x43, 0x41, 0x60, 0x01, 0x68, 0x11, 0x43, - 0x01, 0x60, 0x00, 0x20, 0x01, 0x30, 0x64, 0x28, - 0xfc, 0xd3, 0xa0, 0x79, 0x0f, 0x4d, 0x00, 0xab, - 0x18, 0x70, 0xe0, 0x79, 0x10, 0x4c, 0x58, 0x70, - 0x20, 0x1c, 0x10, 0x30, 0x00, 0xf0, 0x3c, 0x00, - 0x14, 0x28, 0x00, 0x00, 0xdf, 0xfb, 0x00, 0x20, - 0xc0, 0x43, 0xa0, 0x61, 0xff, 0xf7, 0x9c, 0xff, - 0x00, 0x28, 0x09, 0xd0, 0x0a, 0x49, 0x08, 0x69, - 0x01, 0x30, 0x08, 0x61, 0x00, 0x20, 0x3c, 0x31, - 0x89, 0x68, 0x48, 0x63, 0x06, 0xf0, 0xee, 0xfc, - 0x00, 0xab, 0x18, 0x88, 0xe8, 0x84, 0x38, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf4, 0x00, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x3c, 0x00, 0x50, 0x28, 0x00, 0x00, 0xe8, 0x7d, - 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5, 0x00, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0xfe, 0xf7, 0xc1, 0xf9, - 0x07, 0x48, 0x07, 0x49, 0x3c, 0x30, 0x80, 0x68, - 0x10, 0x30, 0x48, 0x61, 0x01, 0x20, 0x08, 0x61, - 0x05, 0x49, 0x08, 0x68, 0x80, 0x22, 0x90, 0x43, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xe8, 0x7d, - 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xf4, 0x00, - 0x07, 0x00, 0x3c, 0x00, 0x8c, 0x28, 0x00, 0x00, - 0x80, 0xb5, 0x0c, 0xf0, 0xcb, 0xfe, 0x06, 0xf0, - 0xbf, 0xfc, 0x80, 0xbd, 0x01, 0x49, 0xc8, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x02, 0x4a, 0x91, 0x6a, 0x08, 0x43, 0x90, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x18, 0x23, 0x06, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x00, 0x21, 0x02, 0x79, 0x03, 0x68, 0x1a, 0x70, - 0x01, 0x31, 0x08, 0x30, 0x3c, 0x00, 0xc8, 0x28, - 0x00, 0x00, 0x03, 0x29, 0xf8, 0xd3, 0x70, 0x47, - 0x00, 0x00, 0x28, 0x52, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, - 0x81, 0x62, 0x70, 0x47, 0x00, 0x00, 0x85, 0x75, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0xf8, 0xb5, - 0xff, 0xf7, 0x33, 0xff, 0x28, 0x4f, 0x00, 0x28, - 0x04, 0xd0, 0xff, 0xf7, 0xc8, 0xff, 0x38, 0x6a, - 0x01, 0x30, 0x38, 0x62, 0xf8, 0x6a, 0x3c, 0x00, - 0x04, 0x29, 0x00, 0x00, 0x00, 0x28, 0x02, 0xd0, - 0x01, 0x89, 0x04, 0x39, 0x01, 0x81, 0x38, 0x6b, - 0x00, 0x25, 0x00, 0x28, 0x08, 0xd0, 0x0b, 0x20, - 0x3d, 0x63, 0x10, 0xf0, 0xe5, 0xfa, 0x1e, 0x49, - 0x08, 0x68, 0x21, 0x22, 0x90, 0x43, 0x08, 0x60, - 0x38, 0x78, 0x3c, 0x21, 0x1b, 0x4a, 0x41, 0x43, - 0x8c, 0x18, 0xff, 0x22, 0x79, 0x6a, 0x3a, 0x70, - 0x00, 0x29, 0x0c, 0xd0, 0xb9, 0x69, 0x01, 0x31, - 0x3c, 0x00, 0x40, 0x29, 0x00, 0x00, 0xb9, 0x61, - 0x7d, 0x62, 0xbd, 0x68, 0x00, 0x2d, 0x04, 0xd0, - 0x63, 0x6b, 0x7a, 0x6b, 0x00, 0x21, 0xfd, 0xf7, - 0x47, 0xfd, 0xf8, 0xbd, 0x04, 0x28, 0x03, 0xd3, - 0x01, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0xa1, 0xfc, - 0x38, 0x69, 0x26, 0x1c, 0x01, 0x30, 0x38, 0x61, - 0x20, 0x36, 0x30, 0x78, 0x02, 0x28, 0x03, 0xd0, - 0x0c, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x95, 0xfc, - 0x35, 0x70, 0x3c, 0x00, 0x7c, 0x29, 0x00, 0x00, - 0xa1, 0x69, 0x00, 0x29, 0xe8, 0xd0, 0x63, 0x6b, - 0x30, 0x34, 0x20, 0x78, 0x0c, 0x1c, 0x00, 0x21, - 0x7a, 0x6b, 0xfd, 0xf7, 0x27, 0xfd, 0xdf, 0xe7, - 0x04, 0x6c, 0x01, 0x00, 0xf4, 0x00, 0x07, 0x00, - 0x18, 0xdb, 0x01, 0x00, 0x10, 0xb5, 0x0b, 0x4c, - 0x60, 0x6a, 0x00, 0x28, 0x0e, 0xd0, 0x0a, 0x48, - 0x00, 0xf0, 0x12, 0xfb, 0x00, 0x20, 0x60, 0x62, - 0xa4, 0x68, 0x00, 0x2c, 0x3c, 0x00, 0xb8, 0x29, - 0x00, 0x00, 0x05, 0xd0, 0x7e, 0x23, 0xdb, 0x43, - 0x00, 0x22, 0x01, 0x21, 0xfd, 0xf7, 0x0d, 0xfd, - 0x10, 0xbd, 0xe0, 0x69, 0x01, 0x30, 0xe0, 0x61, - 0x10, 0xbd, 0x04, 0x6c, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x09, 0x48, 0x41, 0x68, 0x3f, 0x22, - 0x12, 0x04, 0x91, 0x43, 0x0d, 0x22, 0x12, 0x04, - 0x89, 0x18, 0x41, 0x60, 0x41, 0x68, 0x01, 0x22, - 0x52, 0x02, 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00, - 0xf4, 0x29, 0x00, 0x00, 0x03, 0x48, 0x81, 0x78, - 0x81, 0x70, 0x81, 0x78, 0x81, 0x70, 0x70, 0x47, - 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf0, 0xb5, 0x01, 0x25, 0x08, 0x24, 0x00, 0x20, - 0x0e, 0x4a, 0x0f, 0x49, 0x00, 0x26, 0x3c, 0x23, - 0x43, 0x43, 0xd1, 0x52, 0x9b, 0x18, 0x5d, 0x71, - 0x9b, 0x60, 0x5e, 0x61, 0x1c, 0x82, 0xc0, 0x27, - 0xdf, 0x60, 0x20, 0x27, 0xfe, 0x54, 0x9e, 0x61, - 0x3c, 0x00, 0x30, 0x2a, 0x00, 0x00, 0x30, 0x27, - 0xfe, 0x54, 0x07, 0x4f, 0x3f, 0x18, 0x20, 0x37, - 0x01, 0x30, 0x05, 0x28, 0x9f, 0x63, 0xe9, 0xd3, - 0x05, 0x48, 0xff, 0x32, 0x01, 0x32, 0x90, 0x62, - 0xf0, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xbe, 0xba, - 0x00, 0x00, 0x30, 0x80, 0x07, 0x00, 0x06, 0x6c, - 0x01, 0x00, 0x01, 0x49, 0x48, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x05, 0x49, - 0x08, 0x5c, 0x3c, 0x00, 0x6c, 0x2a, 0x00, 0x00, - 0x05, 0x49, 0x49, 0x68, 0x40, 0x18, 0xc0, 0x06, - 0xc0, 0x0e, 0x04, 0x49, 0x20, 0x30, 0x48, 0x72, - 0x70, 0x47, 0x00, 0x00, 0xa0, 0x57, 0x01, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x80, 0xb5, 0x15, 0x21, 0x84, 0x20, 0xfe, 0xf7, - 0x07, 0xfc, 0x80, 0xbd, 0xf8, 0xb5, 0x43, 0x48, - 0x84, 0x68, 0x03, 0x34, 0x42, 0x4d, 0x04, 0xe0, - 0x20, 0x1c, 0x10, 0xf0, 0x3c, 0x00, 0xa8, 0x2a, - 0x00, 0x00, 0xb9, 0xf8, 0x00, 0x28, 0x71, 0xd1, - 0x28, 0x69, 0xc0, 0x07, 0xf7, 0xd5, 0x3e, 0x48, - 0x28, 0x60, 0x3e, 0x4a, 0x14, 0x1c, 0x20, 0x34, - 0x20, 0x79, 0x00, 0x90, 0x3c, 0x23, 0x3c, 0x49, - 0x58, 0x43, 0x45, 0x18, 0x28, 0x79, 0xff, 0xf7, - 0xcc, 0xff, 0x28, 0x1c, 0x3a, 0x49, 0x08, 0x30, - 0x48, 0x60, 0x01, 0x26, 0x08, 0x1c, 0x06, 0x60, - 0x68, 0x6a, 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00, - 0xe4, 0x2a, 0x00, 0x00, 0xa9, 0x6a, 0x92, 0x6a, - 0x35, 0x4b, 0x9f, 0x68, 0xd7, 0x1b, 0x1a, 0x68, - 0x51, 0x18, 0x79, 0x18, 0x8a, 0x42, 0x5a, 0x68, - 0x00, 0xd8, 0x00, 0xe0, 0x01, 0x32, 0x06, 0xc0, - 0xe8, 0x6a, 0xfe, 0xf7, 0x87, 0xff, 0x2d, 0x49, - 0xe8, 0x6a, 0x48, 0x60, 0x30, 0x1c, 0x0e, 0x60, - 0x66, 0x79, 0x1f, 0xe0, 0x2b, 0x48, 0x46, 0x61, - 0x04, 0x7f, 0x29, 0x49, 0x20, 0x1c, 0x50, 0x39, - 0x3c, 0x00, 0x20, 0x2b, 0x00, 0x00, 0x89, 0x6a, - 0xfd, 0xf7, 0x5a, 0xfc, 0x00, 0x98, 0x84, 0x42, - 0x10, 0xd0, 0x3c, 0x20, 0x22, 0x49, 0x60, 0x43, - 0x40, 0x18, 0x87, 0x69, 0x00, 0x2f, 0x09, 0xd0, - 0x00, 0x21, 0x20, 0x30, 0x01, 0x70, 0x7e, 0x23, - 0xdb, 0x43, 0x02, 0x21, 0x00, 0x22, 0x20, 0x1c, - 0xfd, 0xf7, 0x4c, 0xfc, 0x01, 0x20, 0xa0, 0x40, - 0x86, 0x43, 0x00, 0x2e, 0xdd, 0xd1, 0xe9, 0x69, - 0x00, 0x29, 0x3c, 0x00, 0x5c, 0x2b, 0x00, 0x00, - 0x03, 0xd0, 0x30, 0x20, 0x40, 0x5d, 0xfd, 0xf7, - 0x3a, 0xfc, 0x16, 0x4c, 0x50, 0x3c, 0x60, 0x6a, - 0x00, 0x28, 0x03, 0xd0, 0x0a, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x96, 0xfb, 0x20, 0x35, 0x28, 0x78, - 0x01, 0x28, 0x03, 0xd0, 0x0b, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x8e, 0xfb, 0x02, 0x20, 0x28, 0x70, - 0xe0, 0x68, 0x01, 0x30, 0x00, 0xe0, 0x07, 0xe0, - 0xe0, 0x60, 0x00, 0x98, 0x3c, 0x00, 0x98, 0x2b, - 0x00, 0x00, 0x20, 0x70, 0x00, 0x98, 0x60, 0x70, - 0x0a, 0x48, 0x00, 0x68, 0x60, 0x63, 0xf8, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x01, 0x00, 0x00, 0x01, 0x30, 0x80, - 0x07, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x54, 0x6c, 0x01, 0x00, 0x00, 0xa0, - 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0x3c, 0x22, - 0x3c, 0x23, 0x4a, 0x43, 0x09, 0x49, 0x3c, 0x00, - 0xd4, 0x2b, 0x00, 0x00, 0xb0, 0xb5, 0x54, 0x18, - 0x58, 0x43, 0x45, 0x18, 0x21, 0x1c, 0x38, 0x22, - 0x28, 0x1c, 0xfd, 0xf7, 0xe5, 0xfc, 0xa0, 0x6b, - 0x00, 0x78, 0xa9, 0x6b, 0x08, 0x70, 0x00, 0x20, - 0x20, 0x34, 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00, - 0x18, 0xdb, 0x01, 0x00, 0x3c, 0x23, 0x07, 0x49, - 0x58, 0x43, 0x10, 0xb5, 0x44, 0x18, 0x20, 0x34, - 0x20, 0x78, 0x02, 0x28, 0x03, 0xd1, 0x0d, 0x21, - 0x3c, 0x00, 0x10, 0x2c, 0x00, 0x00, 0x84, 0x20, - 0xfe, 0xf7, 0x47, 0xfb, 0x00, 0x20, 0x20, 0x70, - 0x10, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xff, 0xb5, - 0x3c, 0x20, 0x48, 0x43, 0x1a, 0x49, 0x81, 0xb0, - 0x44, 0x18, 0x26, 0x1c, 0x20, 0x36, 0x30, 0x78, - 0x15, 0x1c, 0x0f, 0x9f, 0x02, 0x28, 0x03, 0xd1, - 0x04, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x31, 0xfb, - 0x01, 0x20, 0x30, 0x70, 0x25, 0x71, 0x0b, 0x99, - 0x30, 0x22, 0x3c, 0x00, 0x4c, 0x2c, 0x00, 0x00, - 0x61, 0x80, 0x0a, 0x99, 0xe1, 0x62, 0x0d, 0x99, - 0xa1, 0x61, 0x0c, 0x99, 0xe1, 0x61, 0x0e, 0x99, - 0x61, 0x62, 0xa7, 0x62, 0x01, 0x99, 0x11, 0x55, - 0x7e, 0x21, 0xc9, 0x43, 0x61, 0x63, 0x04, 0x99, - 0x00, 0x29, 0x00, 0xd1, 0x00, 0x20, 0x06, 0x1c, - 0x28, 0x1c, 0x08, 0xf0, 0x8b, 0xf8, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0xa1, 0x6b, 0x30, 0x43, 0x3c, 0x00, 0x88, 0x2c, - 0x00, 0x00, 0x08, 0x70, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x80, 0xb5, - 0x14, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x03, 0xfb, - 0x80, 0xbd, 0x01, 0x48, 0x40, 0x78, 0x70, 0x47, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x02, 0x48, - 0x00, 0x69, 0xc0, 0x07, 0xc0, 0x0f, 0x70, 0x47, - 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x01, 0x1c, - 0x3c, 0x23, 0x04, 0x4a, 0x59, 0x43, 0x3c, 0x00, - 0xc4, 0x2c, 0x00, 0x00, 0x89, 0x18, 0x20, 0x31, - 0x09, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x18, 0xdb, 0x01, 0x00, - 0x08, 0x48, 0x40, 0x6a, 0x00, 0x28, 0x0a, 0xd1, - 0x07, 0x4a, 0x00, 0x21, 0x20, 0x23, 0x9b, 0x5c, - 0x02, 0x2b, 0x04, 0xd0, 0x01, 0x31, 0x3c, 0x32, - 0x05, 0x29, 0xf7, 0xd3, 0x70, 0x47, 0x01, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, - 0x3c, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x18, 0xdb, - 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, 0x04, 0x1c, - 0x17, 0x1c, 0xfe, 0xf7, 0x82, 0xfe, 0x20, 0x1c, - 0x11, 0x4c, 0x60, 0x60, 0x01, 0x20, 0x20, 0x60, - 0x10, 0x4d, 0x68, 0x69, 0x01, 0x30, 0x68, 0x61, - 0x68, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21, - 0x84, 0x20, 0xfe, 0xf7, 0xba, 0xfa, 0xa0, 0x68, - 0x40, 0x07, 0x03, 0xd5, 0x06, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x3c, 0x00, 0x3c, 0x2d, 0x00, 0x00, - 0xb3, 0xfa, 0x08, 0x48, 0x00, 0x69, 0x00, 0x28, - 0x03, 0xda, 0xaa, 0x21, 0x84, 0x20, 0xfe, 0xf7, - 0xab, 0xfa, 0x02, 0x20, 0x68, 0x62, 0xae, 0x60, - 0x2f, 0x70, 0xf8, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00, - 0x04, 0x4a, 0x51, 0x80, 0x10, 0x71, 0x03, 0x48, - 0x03, 0x49, 0x08, 0x30, 0x48, 0x60, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x78, 0x2d, - 0x00, 0x00, 0x3c, 0x6c, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x00, 0x21, 0x00, 0x23, 0x05, 0xe0, - 0x02, 0x89, 0x43, 0x60, 0xc0, 0x68, 0x51, 0x18, - 0x09, 0x04, 0x09, 0x0c, 0x00, 0x28, 0xf7, 0xd1, - 0x04, 0x31, 0x08, 0x04, 0x00, 0x0c, 0x70, 0x47, - 0x00, 0x00, 0x02, 0x4a, 0x51, 0x6b, 0x08, 0x43, - 0x50, 0x63, 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c, - 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c, 0x3c, 0x00, - 0xb4, 0x2d, 0x00, 0x00, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79, - 0x5a, 0x70, 0x03, 0x68, 0x40, 0x68, 0x06, 0x4a, - 0x50, 0x65, 0x05, 0x48, 0x13, 0x65, 0x50, 0x30, - 0x81, 0x60, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84, - 0x38, 0xbd, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x98, 0xb5, 0x0d, 0x4c, - 0x20, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab, - 0x3c, 0x00, 0xf0, 0x2d, 0x00, 0x00, 0x19, 0x70, - 0xc0, 0x79, 0x58, 0x70, 0x0a, 0x48, 0x00, 0xf0, - 0xec, 0xf8, 0x09, 0x49, 0x00, 0x20, 0x48, 0x62, - 0xff, 0xf7, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0, - 0x12, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x49, 0xfa, - 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84, 0x98, 0xbd, - 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x03, 0x48, - 0x01, 0x7a, 0x3c, 0x00, 0x2c, 0x2e, 0x00, 0x00, - 0xfe, 0x22, 0x91, 0x43, 0x0a, 0x31, 0x01, 0x72, - 0x70, 0x47, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x90, 0xb5, 0x0e, 0x4c, 0x85, 0xb0, 0xa0, 0x78, - 0x02, 0x28, 0x14, 0xd1, 0x03, 0x20, 0xa0, 0x70, - 0x0b, 0x49, 0x00, 0x20, 0x00, 0x22, 0x04, 0x92, - 0x02, 0x90, 0x03, 0x91, 0xe1, 0x88, 0x01, 0x22, - 0x01, 0x92, 0x00, 0x91, 0x61, 0x78, 0x20, 0x78, - 0x22, 0x69, 0xe3, 0x68, 0x3c, 0x00, 0x68, 0x2e, - 0x00, 0x00, 0x08, 0xf0, 0x94, 0xfd, 0x04, 0x48, - 0x09, 0xf0, 0x7f, 0xf9, 0x05, 0xb0, 0x90, 0xbd, - 0x00, 0x00, 0xb4, 0x79, 0x01, 0x00, 0xad, 0xb6, - 0x00, 0x00, 0x71, 0xb6, 0x00, 0x00, 0xb0, 0xb5, - 0x0c, 0x4d, 0xac, 0x79, 0x0c, 0x49, 0x09, 0x78, - 0x00, 0x29, 0x03, 0xd0, 0x01, 0x29, 0x0e, 0xd0, - 0x02, 0x29, 0x08, 0xd1, 0xc2, 0x88, 0x00, 0x2a, - 0x09, 0xd0, 0x01, 0x23, 0x81, 0x68, 0x3c, 0x00, - 0xa4, 0x2e, 0x00, 0x00, 0x02, 0x20, 0x0f, 0xf0, - 0xc1, 0xf8, 0x03, 0xe0, 0x02, 0x21, 0x86, 0x20, - 0xfe, 0xf7, 0xf8, 0xf9, 0xac, 0x71, 0xb0, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x68, 0x07, 0x49, 0x4a, 0x60, - 0x03, 0x79, 0xca, 0x78, 0xcb, 0x70, 0x00, 0x79, - 0x90, 0x42, 0x06, 0xd0, 0x03, 0x48, 0x14, 0x30, - 0x00, 0x89, 0x07, 0xf0, 0x27, 0xfe, 0x06, 0xf0, - 0x3c, 0x00, 0xe0, 0x2e, 0x00, 0x00, 0xab, 0xfa, - 0x80, 0xbd, 0x84, 0x66, 0x01, 0x00, 0x70, 0xb5, - 0x16, 0x4c, 0x15, 0x4d, 0xa0, 0x78, 0x00, 0x26, - 0x98, 0x3d, 0x01, 0x28, 0x03, 0xd1, 0x28, 0x69, - 0x08, 0xf0, 0xfb, 0xfc, 0xa6, 0x70, 0x60, 0x68, - 0x01, 0x28, 0x03, 0xd0, 0x00, 0x21, 0x28, 0x69, - 0x00, 0xf0, 0xff, 0xfb, 0x0e, 0x48, 0x29, 0x69, - 0x0c, 0xf0, 0x31, 0xfa, 0x01, 0x20, 0x0c, 0xf0, - 0xe4, 0xf8, 0x3c, 0x00, 0x1c, 0x2f, 0x00, 0x00, - 0xe0, 0x78, 0x01, 0x28, 0x02, 0xd0, 0x01, 0x20, - 0x60, 0x70, 0x00, 0xe0, 0x66, 0x70, 0x06, 0x48, - 0x14, 0x30, 0x41, 0x68, 0x01, 0x29, 0x06, 0xd1, - 0x06, 0x60, 0x41, 0x6f, 0x00, 0x29, 0x02, 0xd0, - 0x00, 0x20, 0xfd, 0xf7, 0x4c, 0xfa, 0x70, 0xbd, - 0x84, 0x66, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x30, 0xb5, 0x00, 0x22, 0x00, 0x23, 0x01, 0x25, - 0x2c, 0x1c, 0x94, 0x40, 0x3c, 0x00, 0x58, 0x2f, - 0x00, 0x00, 0x04, 0x40, 0x01, 0xd0, 0xca, 0x54, - 0x01, 0x33, 0x01, 0x32, 0x0e, 0x2a, 0xf6, 0xdb, - 0x18, 0x1c, 0x30, 0xbd, 0x00, 0x00, 0xff, 0xb5, - 0x01, 0x27, 0x00, 0x26, 0x05, 0x1c, 0x02, 0x20, - 0x81, 0xb0, 0x00, 0x90, 0x00, 0x2d, 0x18, 0xd0, - 0x28, 0x78, 0xff, 0x28, 0x15, 0xd0, 0x00, 0x24, - 0x10, 0xe0, 0x28, 0x19, 0x80, 0x78, 0x0a, 0x99, - 0x00, 0x29, 0x01, 0xd0, 0x01, 0x06, 0x3c, 0x00, - 0x94, 0x2f, 0x00, 0x00, 0x08, 0xd5, 0x07, 0xf0, - 0xe9, 0xfe, 0x0e, 0x28, 0x03, 0xd0, 0x01, 0x21, - 0x81, 0x40, 0x0e, 0x43, 0x00, 0xe0, 0x00, 0x27, - 0x01, 0x34, 0x68, 0x78, 0xa0, 0x42, 0xeb, 0xdc, - 0x00, 0x98, 0x02, 0x9d, 0x01, 0x38, 0x00, 0x90, - 0xdf, 0xd1, 0x03, 0x98, 0x31, 0x1c, 0x81, 0x43, - 0x02, 0xd0, 0x03, 0x98, 0x06, 0x40, 0x00, 0x27, - 0x04, 0x98, 0x06, 0x60, 0x05, 0xb0, 0x38, 0x1c, - 0x3c, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0xf0, 0xbd, - 0x00, 0x00, 0x02, 0x21, 0x01, 0x60, 0x64, 0x21, - 0x01, 0xe0, 0x01, 0x39, 0x02, 0xd0, 0x02, 0x68, - 0x92, 0x07, 0xfa, 0xd4, 0x01, 0x20, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x10, 0xb5, - 0x00, 0x20, 0xc4, 0x43, 0x05, 0x4b, 0x02, 0x22, - 0x01, 0x01, 0x5a, 0x50, 0xc9, 0x18, 0x8c, 0x60, - 0x01, 0x30, 0x08, 0x28, 0xf8, 0xdb, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x30, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0xf0, 0xb5, 0x05, 0x1c, - 0x60, 0x35, 0xc7, 0x6a, 0x04, 0x1c, 0x28, 0x7b, - 0x00, 0x2f, 0x8b, 0xb0, 0x15, 0xd0, 0x08, 0x28, - 0x15, 0xd2, 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07, - 0x09, 0x09, 0x0c, 0x0c, 0x01, 0x26, 0x00, 0x21, - 0x09, 0xe0, 0x00, 0x26, 0x06, 0xe0, 0x02, 0x26, - 0x02, 0x21, 0x04, 0xe0, 0x3c, 0x00, 0x48, 0x30, - 0x00, 0x00, 0x03, 0x26, 0x03, 0x21, 0x01, 0xe0, - 0x04, 0x26, 0x01, 0x21, 0x8c, 0x22, 0x12, 0x59, - 0x07, 0x91, 0x26, 0x49, 0x06, 0x90, 0x04, 0x91, - 0x00, 0x20, 0x03, 0x90, 0x05, 0x97, 0x08, 0x92, - 0xe0, 0x69, 0x22, 0x69, 0x21, 0x1c, 0x70, 0x31, - 0x01, 0x91, 0x21, 0x49, 0x00, 0x90, 0x70, 0x00, - 0x40, 0x18, 0x60, 0x30, 0x02, 0x92, 0x03, 0x88, - 0x59, 0x1c, 0x01, 0x80, 0x1e, 0x48, 0x3c, 0x00, - 0x84, 0x30, 0x00, 0x00, 0x02, 0x88, 0xa1, 0x68, - 0x0a, 0xa8, 0x09, 0xf0, 0xe1, 0xff, 0x60, 0x60, - 0xe8, 0x7a, 0xa1, 0x6a, 0xc9, 0x07, 0x00, 0x07, - 0x00, 0x0e, 0xc9, 0x0d, 0x08, 0x43, 0x61, 0x6a, - 0x22, 0x69, 0xc9, 0x07, 0x89, 0x0d, 0x01, 0x43, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x80, 0x03, 0x08, 0x43, 0x21, 0x6a, 0xc9, 0x03, - 0x08, 0x43, 0x08, 0x21, 0x08, 0x43, 0x0a, 0x99, - 0x3c, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x08, 0x80, - 0x20, 0x1c, 0xfe, 0xf7, 0x98, 0xfe, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0, - 0x82, 0xf9, 0x0b, 0xb0, 0xf0, 0xbd, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0x0f, 0xf9, - 0x20, 0x69, 0x06, 0x49, 0x80, 0x79, 0x80, 0x00, - 0x09, 0x58, 0x20, 0x1c, 0xfd, 0xf7, 0x74, 0xf9, - 0xef, 0xe7, 0x79, 0x2f, 0x01, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x30, 0x00, 0x00, - 0x08, 0x61, 0x01, 0x00, 0x74, 0x57, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x58, 0x30, 0x8a, 0xb0, - 0x0e, 0xf0, 0x7c, 0xfe, 0x22, 0x1c, 0x80, 0x32, - 0x51, 0x68, 0x00, 0x29, 0x01, 0xd0, 0x11, 0x7a, - 0x07, 0xe0, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x69, - 0x80, 0x07, 0x01, 0xd5, 0x03, 0x21, 0x00, 0xe0, - 0x01, 0x21, 0xd2, 0x68, 0x07, 0x91, 0x22, 0x49, - 0x00, 0x20, 0x08, 0x92, 0x3c, 0x00, 0x38, 0x31, - 0x00, 0x00, 0x04, 0x91, 0x00, 0x22, 0x05, 0x92, - 0x06, 0x90, 0x03, 0x90, 0xe0, 0x69, 0x22, 0x69, - 0x00, 0x90, 0x21, 0x1c, 0x70, 0x31, 0x1c, 0x48, - 0x01, 0x91, 0x02, 0x92, 0x03, 0x89, 0x59, 0x1c, - 0x01, 0x81, 0x1a, 0x48, 0x02, 0x88, 0xa1, 0x68, - 0x09, 0xa8, 0x09, 0xf0, 0x76, 0xff, 0x60, 0x60, - 0x6b, 0x20, 0x00, 0x5d, 0xa1, 0x6a, 0x22, 0x69, - 0xc9, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x3c, 0x00, - 0x74, 0x31, 0x00, 0x00, 0xc9, 0x0d, 0x01, 0x43, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x80, 0x03, 0x08, 0x43, 0x09, 0x99, 0x08, 0x80, - 0x20, 0x1c, 0xfe, 0xf7, 0x35, 0xfe, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0, - 0x1f, 0xf9, 0x0a, 0xb0, 0x10, 0xbd, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0xac, 0xf8, - 0x20, 0x69, 0x07, 0x49, 0x80, 0x79, 0x80, 0x00, - 0x3c, 0x00, 0xb0, 0x31, 0x00, 0x00, 0x09, 0x58, - 0x20, 0x1c, 0xfd, 0xf7, 0x11, 0xf9, 0xef, 0xe7, - 0x00, 0x00, 0xbd, 0x2f, 0x01, 0x00, 0x24, 0x6a, - 0x01, 0x00, 0x08, 0x61, 0x01, 0x00, 0x74, 0x57, - 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x1c, 0x00, 0x69, - 0x04, 0x21, 0x07, 0xf0, 0xd2, 0xfa, 0x00, 0x28, - 0x09, 0xd0, 0x42, 0x78, 0x02, 0x32, 0x01, 0x1c, - 0x68, 0x46, 0xfd, 0xf7, 0x88, 0xf9, 0xe8, 0x6a, - 0x6c, 0x46, 0x3c, 0x00, 0xec, 0x31, 0x00, 0x00, - 0x02, 0x90, 0x00, 0xe0, 0x00, 0x24, 0x28, 0x1c, - 0x14, 0x30, 0x02, 0xf0, 0x03, 0xfb, 0x00, 0x28, - 0x04, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0x05, 0xf0, - 0xa5, 0xfe, 0x3e, 0xbd, 0x00, 0x2c, 0xfc, 0xd0, - 0x02, 0x49, 0x20, 0x1c, 0x49, 0x69, 0xfd, 0xf7, - 0xe2, 0xf8, 0xf6, 0xe7, 0x44, 0x7d, 0x01, 0x00, - 0x70, 0xb5, 0x1e, 0x1c, 0x18, 0x23, 0x58, 0x43, - 0x06, 0x4b, 0x04, 0x9d, 0x3c, 0x00, 0x28, 0x32, - 0x00, 0x00, 0x19, 0x50, 0xc4, 0x18, 0x00, 0x20, - 0x60, 0x61, 0x62, 0x60, 0xa6, 0x60, 0xe5, 0x60, - 0x0f, 0xf0, 0xb9, 0xfd, 0x20, 0x61, 0x70, 0xbd, - 0x00, 0x00, 0xb8, 0x7d, 0x01, 0x00, 0x02, 0x4a, - 0x01, 0x1c, 0x90, 0x69, 0x91, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x6b, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x04, 0x49, 0x04, 0x4b, 0x3c, 0x00, - 0x64, 0x32, 0x00, 0x00, 0xca, 0x68, 0x09, 0x69, - 0x5c, 0x3b, 0x5b, 0x68, 0xc9, 0x1a, 0x41, 0x43, - 0x50, 0x18, 0x70, 0x47, 0xa0, 0x7d, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x78, 0x70, 0x47, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0x01, 0x49, 0xfd, 0xf7, 0x35, 0xf9, 0x80, 0xbd, - 0xfe, 0x67, 0x01, 0x00, 0xf0, 0xb5, 0x89, 0xb0, - 0x00, 0x93, 0x16, 0x4f, 0x13, 0x1c, 0x0e, 0x1c, - 0x3c, 0x00, 0xa0, 0x32, 0x00, 0x00, 0x04, 0x1c, - 0x3a, 0x1c, 0x01, 0xf0, 0x62, 0xff, 0x01, 0xa9, - 0x06, 0xa8, 0xa2, 0x68, 0x02, 0xf0, 0x0b, 0xf9, - 0x01, 0xaa, 0x06, 0xa9, 0x38, 0x1c, 0x63, 0x6a, - 0x02, 0xf0, 0x81, 0xfc, 0x05, 0x1c, 0x01, 0x28, - 0x14, 0xd1, 0x0c, 0x48, 0xfc, 0x21, 0xc8, 0x51, - 0x38, 0x1c, 0x02, 0xf0, 0x0c, 0xf8, 0x03, 0x21, - 0x30, 0x1c, 0x07, 0xf0, 0x52, 0xfa, 0x00, 0x28, - 0x07, 0xd0, 0x3c, 0x00, 0xdc, 0x32, 0x00, 0x00, - 0x80, 0x78, 0x00, 0xf0, 0x33, 0xfc, 0x20, 0x1c, - 0x10, 0x30, 0x0e, 0xf0, 0x47, 0xfd, 0x00, 0xe0, - 0x00, 0x25, 0x28, 0x1c, 0x09, 0xb0, 0xf0, 0xbd, - 0xf4, 0x67, 0x01, 0x00, 0xc1, 0x38, 0x00, 0x00, - 0x10, 0xb5, 0x07, 0x4c, 0x06, 0x48, 0x06, 0x22, - 0x21, 0x1d, 0x08, 0x38, 0xfd, 0xf7, 0xf6, 0xf8, - 0x01, 0xf0, 0xfc, 0xff, 0x00, 0xf0, 0x42, 0xfc, - 0x20, 0x1c, 0x02, 0xf0, 0x3c, 0x00, 0x18, 0x33, - 0x00, 0x00, 0x27, 0xfc, 0x10, 0xbd, 0xf4, 0x67, - 0x01, 0x00, 0x08, 0x49, 0xc9, 0x68, 0x00, 0x29, - 0x0a, 0xd0, 0x06, 0x4a, 0x01, 0x32, 0x51, 0x78, - 0x12, 0x78, 0x48, 0x43, 0x00, 0x2a, 0x01, 0xd1, - 0x08, 0x18, 0x70, 0x47, 0x10, 0x18, 0x70, 0x47, - 0x01, 0x30, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28, - 0x5a, 0x69, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0x54, 0x33, 0x00, 0x00, 0x10, 0x1c, 0x59, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0xb9, 0x75, 0x00, 0x00, 0x07, 0x49, 0x00, 0x20, - 0x0a, 0x78, 0x02, 0x2a, 0x09, 0xd1, 0x0a, 0x7c, - 0x00, 0x2a, 0x05, 0xd1, 0xca, 0x68, 0x00, 0x2a, - 0x03, 0xd0, 0x49, 0x69, 0x00, 0x29, 0x00, 0xd0, - 0x01, 0x20, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00, - 0x0c, 0x4a, 0x80, 0xb5, 0x01, 0x21, 0x51, 0x60, - 0x3c, 0x00, 0x90, 0x33, 0x00, 0x00, 0x09, 0xf0, - 0x6a, 0xf8, 0x09, 0x48, 0x1c, 0x30, 0x81, 0x69, - 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23, 0x83, 0x61, - 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0xf0, - 0xd2, 0xf8, 0x80, 0xbd, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x48, 0x00, 0xf0, 0x5c, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35, - 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28, - 0x16, 0xd1, 0x3c, 0x00, 0xcc, 0x33, 0x00, 0x00, - 0x0e, 0x4d, 0x02, 0x2c, 0x09, 0xd1, 0x00, 0xf0, - 0x2b, 0xfa, 0x00, 0x28, 0x0e, 0xd0, 0x68, 0x69, - 0x00, 0x28, 0x0b, 0xd1, 0x21, 0x1c, 0x13, 0x20, - 0x0c, 0xe0, 0x03, 0x2c, 0xfa, 0xd1, 0x00, 0xf0, - 0xf9, 0xf9, 0x00, 0x28, 0x02, 0xd0, 0x28, 0x7c, - 0x00, 0x28, 0xf3, 0xd0, 0xb0, 0xbd, 0x21, 0x1c, - 0x00, 0x06, 0x00, 0x0e, 0x04, 0xf0, 0x62, 0xfc, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x34, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x0c, 0x4c, 0x00, 0x25, 0x25, 0x74, 0x65, 0x61, - 0xe5, 0x60, 0x00, 0xf0, 0x3c, 0xfa, 0x00, 0xf0, - 0x34, 0xfa, 0x07, 0x48, 0x1c, 0x38, 0x05, 0x61, - 0x09, 0xf0, 0x33, 0xff, 0x20, 0x78, 0x00, 0x28, - 0x02, 0xd1, 0x04, 0xf0, 0x6e, 0xfa, 0xb0, 0xbd, - 0x02, 0x28, 0xfc, 0xd1, 0x04, 0xf0, 0xa5, 0xfb, - 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x34, 0x00, 0x00, 0x0c, 0x48, 0x80, 0xb5, - 0x01, 0x78, 0x00, 0x29, 0x12, 0xd0, 0xc0, 0x68, - 0x00, 0x28, 0x0f, 0xd1, 0x08, 0x48, 0x1c, 0x38, - 0x40, 0x69, 0x00, 0x28, 0x0a, 0xd1, 0x07, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x00, 0x22, - 0x07, 0x21, 0x10, 0x20, 0x10, 0xf0, 0xa0, 0xf9, - 0x02, 0xf0, 0x2c, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0xd4, 0x67, 0x01, 0x00, - 0x3c, 0x00, 0x80, 0x34, 0x00, 0x00, 0xf8, 0xb5, - 0x1d, 0x4e, 0x1c, 0x4d, 0x04, 0x1c, 0xf0, 0x68, - 0x02, 0x27, 0x1c, 0x3d, 0x00, 0x28, 0x07, 0xd0, - 0xe8, 0x68, 0x00, 0x28, 0x04, 0xd0, 0xfd, 0xf7, - 0xc2, 0xfe, 0x00, 0x28, 0x00, 0xd0, 0xbc, 0x43, - 0x00, 0x2c, 0x14, 0xd0, 0x37, 0x70, 0xf0, 0x68, - 0x14, 0x4f, 0x00, 0x28, 0x10, 0xd0, 0xe0, 0x07, - 0x17, 0xd4, 0xfd, 0xf7, 0xb4, 0xfe, 0x00, 0x28, - 0x13, 0xd0, 0x3c, 0x00, 0xbc, 0x34, 0x00, 0x00, - 0x70, 0x69, 0x00, 0x28, 0x06, 0xd1, 0xe8, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7, 0x1a, 0xff, - 0x0d, 0xf0, 0x0a, 0xfa, 0xf8, 0xbd, 0x68, 0x69, - 0x00, 0x28, 0x05, 0xd1, 0x09, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x2c, 0x04, 0xd1, - 0x39, 0x1c, 0x20, 0x1c, 0x0e, 0xf0, 0x52, 0xfd, - 0xf0, 0xe7, 0x04, 0xf0, 0x1d, 0xfb, 0x02, 0xf0, - 0xeb, 0xfb, 0xeb, 0xe7, 0x3c, 0x00, 0xf8, 0x34, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x50, 0xc3, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x05, 0x48, - 0x41, 0x69, 0x00, 0x29, 0x04, 0xd0, 0x40, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x49, - 0x00, 0x20, 0x48, 0x60, 0x08, 0x60, 0x88, 0x60, - 0x08, 0xf0, 0x9b, 0xff, 0x07, 0x21, 0x3c, 0x00, - 0x34, 0x35, 0x00, 0x00, 0x12, 0x20, 0x22, 0x79, - 0x10, 0xf0, 0x3a, 0xf9, 0x10, 0xbd, 0x00, 0x00, - 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0xe8, 0x67, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x1c, 0x0e, 0x1c, 0x08, 0xf0, - 0xa3, 0xfa, 0x13, 0x4d, 0x04, 0x1c, 0x68, 0x68, - 0x00, 0x28, 0x17, 0xd0, 0x00, 0x2f, 0x02, 0xd0, - 0xa8, 0x68, 0x03, 0x28, 0x13, 0xd3, 0x00, 0x20, - 0x3c, 0x00, 0x70, 0x35, 0x00, 0x00, 0xa8, 0x60, - 0x68, 0x60, 0x21, 0x1c, 0x0f, 0x20, 0x0e, 0xf0, - 0xf0, 0xfe, 0x28, 0x68, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x2c, 0x06, 0xd1, 0x01, 0x20, 0x02, 0xe0, - 0x01, 0x2c, 0x02, 0xd1, 0x00, 0x20, 0xff, 0xf7, - 0xfa, 0xfe, 0xf8, 0xbd, 0x72, 0x1c, 0x00, 0x21, - 0x04, 0x48, 0x00, 0xf0, 0x68, 0xf8, 0xa8, 0x68, - 0x01, 0x30, 0xa8, 0x60, 0xf5, 0xe7, 0x5c, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xac, 0x35, 0x00, 0x00, - 0x51, 0x35, 0x00, 0x00, 0x0a, 0x49, 0x80, 0xb5, - 0xca, 0x68, 0x00, 0x2a, 0x0b, 0xd0, 0x42, 0x68, - 0x00, 0x2a, 0x09, 0xd0, 0x00, 0x22, 0x4a, 0x62, - 0x02, 0x68, 0x0a, 0x62, 0x02, 0x68, 0x07, 0x21, - 0x17, 0x20, 0x10, 0xf0, 0xef, 0xf8, 0x80, 0xbd, - 0x01, 0x20, 0x48, 0x62, 0x80, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x70, 0xb5, 0x14, 0x4d, - 0x84, 0x6c, 0xe9, 0x68, 0x3c, 0x00, 0xe8, 0x35, - 0x00, 0x00, 0x00, 0x29, 0x17, 0xd0, 0x40, 0x30, - 0xec, 0x61, 0x40, 0x78, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x68, 0x62, 0x28, 0x6a, 0x0e, 0x4e, - 0x00, 0x1b, 0xb0, 0x42, 0x0c, 0xd2, 0x08, 0xf0, - 0x3a, 0xfe, 0x29, 0x6a, 0x40, 0x1a, 0xb0, 0x42, - 0x03, 0xd2, 0x02, 0x22, 0x07, 0x21, 0x13, 0x20, - 0x09, 0xe0, 0x04, 0xf0, 0xb6, 0xfa, 0x70, 0xbd, - 0x07, 0x48, 0xa9, 0x68, 0x0b, 0xf0, 0x3c, 0x00, - 0x24, 0x36, 0x00, 0x00, 0xbd, 0xfe, 0x22, 0x1c, - 0x07, 0x21, 0x16, 0x20, 0x10, 0xf0, 0xc0, 0xf8, - 0x70, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x0a, 0x49, 0x80, 0xb5, 0x00, 0x20, 0x88, 0x61, - 0x08, 0x69, 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48, - 0x1c, 0x30, 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0, - 0x01, 0xf0, 0xd2, 0xff, 0x02, 0x28, 0x03, 0xd1, - 0x3c, 0x00, 0x60, 0x36, 0x00, 0x00, 0x00, 0xf0, - 0x12, 0xf9, 0x00, 0xf0, 0xbc, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0xf0, 0xb5, - 0x06, 0x1c, 0x0c, 0x1c, 0x15, 0x1c, 0x91, 0xb0, - 0x01, 0xa8, 0x40, 0x21, 0xfc, 0xf7, 0x0d, 0xff, - 0x00, 0x21, 0x68, 0x46, 0xfd, 0xf7, 0xa7, 0xff, - 0x04, 0x90, 0x01, 0xa8, 0x06, 0x22, 0x08, 0x49, - 0xfc, 0xf7, 0x31, 0xff, 0x06, 0x22, 0x02, 0xa8, - 0x02, 0x30, 0x3c, 0x00, 0x9c, 0x36, 0x00, 0x00, - 0x06, 0x49, 0xfc, 0xf7, 0x2b, 0xff, 0x00, 0xab, - 0xdc, 0x76, 0x0c, 0x95, 0x31, 0x1c, 0x01, 0xa8, - 0x07, 0xf0, 0x4e, 0xf8, 0x11, 0xb0, 0xf0, 0xbd, - 0x12, 0x61, 0x01, 0x00, 0xf8, 0x67, 0x01, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b, - 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, - 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0x12, 0xff, - 0x16, 0xe0, 0x04, 0x22, 0x3c, 0x00, 0xd8, 0x36, - 0x00, 0x00, 0x01, 0x1c, 0x18, 0x1c, 0xfc, 0xf7, - 0x0c, 0xff, 0x09, 0x48, 0x10, 0x38, 0x00, 0x69, - 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48, 0x0c, 0x30, - 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0, 0x01, 0xf0, - 0x84, 0xff, 0x02, 0x28, 0x03, 0xd1, 0x00, 0xf0, - 0xc4, 0xf8, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20, - 0x80, 0xbd, 0x6c, 0x69, 0x01, 0x00, 0xf8, 0xb5, - 0x04, 0x1c, 0x0f, 0x1c, 0x00, 0x25, 0x3c, 0x00, - 0x14, 0x37, 0x00, 0x00, 0x00, 0x26, 0x01, 0xf0, - 0x73, 0xff, 0x02, 0x28, 0x2f, 0xd1, 0x19, 0x49, - 0x01, 0x2f, 0x08, 0x68, 0x07, 0xd1, 0x02, 0x1c, - 0x22, 0x40, 0x0a, 0xd1, 0x20, 0x43, 0x08, 0x60, - 0xa0, 0x42, 0x06, 0xd1, 0x04, 0xe0, 0x00, 0x28, - 0x03, 0xd0, 0xa0, 0x43, 0x08, 0x60, 0x00, 0xd1, - 0x01, 0x25, 0x48, 0x68, 0x00, 0x28, 0x1a, 0xd1, - 0x00, 0x2d, 0x17, 0xd0, 0x01, 0x20, 0x48, 0x60, - 0x3c, 0x00, 0x50, 0x37, 0x00, 0x00, 0x38, 0x1c, - 0x08, 0xf0, 0x89, 0xfe, 0x0b, 0x48, 0x1c, 0x30, - 0x81, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23, - 0x83, 0x61, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, - 0xff, 0xf7, 0xf1, 0xfe, 0x06, 0xe0, 0x00, 0x22, - 0x00, 0x21, 0x04, 0x48, 0xff, 0xf7, 0x7b, 0xff, - 0x00, 0xe0, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x37, 0x00, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x12, 0x4b, - 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, - 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0xaa, 0xfe, - 0x18, 0xe0, 0x04, 0x22, 0x01, 0x1c, 0x18, 0x1c, - 0xfc, 0xf7, 0xa4, 0xfe, 0x0a, 0x48, 0x10, 0x30, - 0xc1, 0x68, 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x78, - 0x00, 0x28, 0x0b, 0xd0, 0x01, 0xf0, 0x1e, 0xff, - 0x02, 0x28, 0x07, 0xd1, 0x3c, 0x00, 0xc8, 0x37, - 0x00, 0x00, 0x00, 0xf0, 0x64, 0xf8, 0x00, 0xf0, - 0x2e, 0xf8, 0x00, 0x28, 0x01, 0xd1, 0x09, 0xf0, - 0x7a, 0xfd, 0x01, 0x20, 0x80, 0xbd, 0x68, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x20, 0x69, - 0x00, 0x28, 0x09, 0xd0, 0xa1, 0x69, 0x00, 0x29, - 0x06, 0xd1, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43, - 0x03, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xe1, 0xfe, - 0x21, 0x69, 0x01, 0x20, 0x00, 0x29, 0x3c, 0x00, - 0x04, 0x38, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x28, 0x03, 0xd0, - 0xfd, 0xf7, 0x9a, 0xfc, 0xe0, 0x60, 0x10, 0xbd, - 0x01, 0x20, 0x00, 0x21, 0xe1, 0x60, 0x10, 0xbd, - 0x78, 0x69, 0x01, 0x00, 0x0a, 0x48, 0x0a, 0x49, - 0x10, 0xb5, 0xc0, 0x68, 0x1c, 0x39, 0xc9, 0x68, - 0x00, 0x28, 0x03, 0xd0, 0x00, 0x29, 0x01, 0xd0, - 0x3c, 0x00, 0x40, 0x38, 0x00, 0x00, 0x01, 0x24, - 0x00, 0xe0, 0x00, 0x24, 0x00, 0x2c, 0x03, 0xd0, - 0x02, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xb7, 0xfe, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x00, 0x20, - 0x21, 0x69, 0x00, 0x29, 0x0c, 0xd0, 0x06, 0x49, - 0x1c, 0x31, 0x09, 0x78, 0x00, 0x29, 0x07, 0xd0, - 0x00, 0xf0, 0x09, 0xf8, 0x01, 0x20, 0xa0, 0x61, - 0x20, 0x69, 0x3c, 0x00, 0x7c, 0x38, 0x00, 0x00, - 0x7d, 0x23, 0xdb, 0x00, 0x58, 0x43, 0x10, 0xbd, - 0x5c, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x21, - 0x07, 0x20, 0x0f, 0xf0, 0xd1, 0xfe, 0x80, 0xbd, - 0x80, 0xb5, 0x02, 0x21, 0x07, 0x20, 0x0f, 0xf0, - 0xcb, 0xfe, 0x80, 0xbd, 0x06, 0x48, 0x80, 0xb5, - 0x00, 0x78, 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7, - 0x29, 0xfd, 0x00, 0x22, 0x07, 0x21, 0x11, 0x20, - 0x0f, 0xf0, 0x7c, 0xff, 0x3c, 0x00, 0xb8, 0x38, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x10, 0x1c, - 0x06, 0x4a, 0x51, 0x61, 0x00, 0xf0, 0xa3, 0xf8, - 0x10, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x11, 0x20, - 0x00, 0x22, 0x07, 0x21, 0x0f, 0xf0, 0x69, 0xff, - 0x10, 0xbd, 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49, - 0x48, 0x62, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x3c, 0x00, - 0xf4, 0x38, 0x00, 0x00, 0xe0, 0x69, 0x00, 0x28, - 0x0c, 0xd1, 0xe0, 0x62, 0x01, 0x20, 0xe0, 0x61, - 0x0b, 0xf0, 0x08, 0xfd, 0x0b, 0xf0, 0x74, 0xfe, - 0x01, 0x20, 0x00, 0xf0, 0xb5, 0xf8, 0x0f, 0xf0, - 0x4d, 0xfa, 0x60, 0x63, 0x10, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0xc8, 0x61, 0x88, 0x63, 0x00, 0xf0, - 0x89, 0xf8, 0x00, 0xf0, 0x01, 0xf9, 0x02, 0xf0, - 0x3c, 0x00, 0x30, 0x39, 0x00, 0x00, 0x91, 0xfb, - 0x80, 0xbd, 0x44, 0x7d, 0x01, 0x00, 0x10, 0xb5, - 0x01, 0x28, 0x38, 0xd1, 0x08, 0x06, 0x00, 0x0e, - 0x05, 0x28, 0x32, 0xd1, 0x1d, 0x4c, 0x20, 0x78, - 0x01, 0x28, 0x09, 0xd0, 0x02, 0x28, 0x1b, 0xd0, - 0x03, 0x28, 0x2a, 0xd1, 0x02, 0xf0, 0x7d, 0xfb, - 0x00, 0xf0, 0x6f, 0xf8, 0x01, 0x20, 0x10, 0xe0, - 0x17, 0x48, 0x21, 0x6b, 0x0b, 0xf0, 0x1b, 0xfd, - 0x0b, 0xf0, 0x3c, 0x00, 0x6c, 0x39, 0x00, 0x00, - 0x41, 0xfe, 0x15, 0x48, 0x00, 0x69, 0x03, 0x28, - 0x01, 0xd3, 0xc0, 0x07, 0x03, 0xd5, 0x01, 0x21, - 0x20, 0x6b, 0x07, 0xf0, 0x19, 0xff, 0x02, 0x20, - 0x00, 0xf0, 0x78, 0xf8, 0x10, 0xbd, 0x0f, 0x48, - 0x00, 0x68, 0x20, 0x64, 0x0a, 0x48, 0x5c, 0x30, - 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60, - 0x03, 0xf0, 0xcc, 0xfc, 0x03, 0x20, 0x00, 0xf0, - 0x69, 0xf8, 0x01, 0x20, 0x3c, 0x00, 0xa8, 0x39, - 0x00, 0x00, 0xe0, 0x62, 0x10, 0xbd, 0x09, 0x21, - 0x00, 0xe0, 0x08, 0x21, 0x09, 0x20, 0xfd, 0xf7, - 0x76, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0xf4, 0x68, - 0x01, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5, - 0x0f, 0x4c, 0x20, 0x78, 0x65, 0x1e, 0x01, 0x28, - 0x0f, 0xd1, 0x00, 0x20, 0xff, 0xf7, 0xa1, 0xfc, - 0x0c, 0x49, 0x09, 0x88, 0x49, 0x08, 0x3c, 0x00, - 0xe4, 0x39, 0x00, 0x00, 0x40, 0x1a, 0x0f, 0xf0, - 0x19, 0xf9, 0x00, 0x28, 0x04, 0xd0, 0x28, 0x78, - 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x05, 0xd0, - 0x20, 0x78, 0x00, 0x28, 0x04, 0xd1, 0x28, 0x78, - 0x03, 0x28, 0x01, 0xd1, 0x01, 0x20, 0xb0, 0xbd, - 0x00, 0x20, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x01, 0x49, 0xc8, 0x64, - 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x3c, 0x00, 0x20, 0x3a, 0x00, 0x00, 0x04, 0x49, - 0x05, 0x4a, 0x89, 0x68, 0x12, 0x6d, 0x01, 0x20, - 0x91, 0x42, 0x00, 0xd3, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x6b, - 0x07, 0xf0, 0xf9, 0xfe, 0xa0, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0x03, 0x48, 0x21, 0x6b, 0x0b, 0xf0, - 0x92, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x3a, 0x00, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x04, 0x48, 0x00, 0x78, - 0x02, 0x28, 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x44, 0x7d, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, - 0xff, 0xf7, 0xd0, 0xff, 0x06, 0x1c, 0x01, 0x2f, - 0x26, 0x4d, 0x1f, 0xd0, 0x02, 0x2f, 0x45, 0xd0, - 0x03, 0x2f, 0x12, 0xd1, 0x24, 0x48, 0x25, 0x4b, - 0x00, 0x69, 0x6a, 0x69, 0x3c, 0x00, 0x98, 0x3a, - 0x00, 0x00, 0x41, 0x08, 0x5a, 0x43, 0x23, 0x4b, - 0xd4, 0x18, 0x8c, 0x42, 0x00, 0xd9, 0x0c, 0x1c, - 0x00, 0x2e, 0x05, 0xd0, 0x1e, 0x49, 0x5b, 0x39, - 0x09, 0x78, 0x00, 0x29, 0x00, 0xd1, 0x04, 0x1c, - 0x05, 0x22, 0x21, 0x1c, 0x09, 0x20, 0x0f, 0xf0, - 0x80, 0xfd, 0x18, 0x4a, 0x5c, 0x3a, 0x17, 0x70, - 0xf8, 0xbd, 0xff, 0xf7, 0xd6, 0xfb, 0x00, 0x28, - 0x02, 0xd0, 0x28, 0x69, 0x00, 0x28, 0x3c, 0x00, - 0xd4, 0x3a, 0x00, 0x00, 0x0e, 0xd0, 0x04, 0xf0, - 0xcf, 0xfb, 0x13, 0x4b, 0x69, 0x69, 0x11, 0x4a, - 0x59, 0x43, 0x5c, 0x3a, 0xd2, 0x6b, 0x89, 0x18, - 0x88, 0x42, 0x01, 0xd9, 0x44, 0x1a, 0x04, 0xe0, - 0x00, 0x24, 0x02, 0xe0, 0x04, 0xf0, 0xae, 0xfd, - 0x04, 0x1c, 0x00, 0x2e, 0xdb, 0xd0, 0x09, 0x48, - 0x5b, 0x38, 0x00, 0x78, 0x01, 0x28, 0xd6, 0xd1, - 0x08, 0x4b, 0x9c, 0x42, 0x02, 0xd9, 0x58, 0x42, - 0x3c, 0x00, 0x10, 0x3b, 0x00, 0x00, 0x24, 0x18, - 0xd0, 0xe7, 0x00, 0x24, 0xce, 0xe7, 0x04, 0xf0, - 0xae, 0xfb, 0xca, 0xe7, 0x00, 0x00, 0xf4, 0x68, - 0x01, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0x98, 0x3a, - 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, 0x80, 0xb5, - 0x05, 0x21, 0x09, 0x20, 0x0f, 0xf0, 0x7d, 0xfd, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x70, 0x80, 0xbd, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x70, 0xb5, - 0x06, 0x1c, 0x3c, 0x00, 0x4c, 0x3b, 0x00, 0x00, - 0x0d, 0xf0, 0xbc, 0xfa, 0xff, 0xf7, 0xce, 0xfe, - 0x09, 0x4c, 0x0a, 0x48, 0x21, 0x6b, 0x0b, 0xf0, - 0x21, 0xfc, 0x01, 0x25, 0x01, 0x21, 0x30, 0x06, - 0x00, 0x0e, 0xa5, 0x63, 0x07, 0xf0, 0x3a, 0xfe, - 0x05, 0x48, 0x29, 0x02, 0x09, 0x58, 0x00, 0x29, - 0x00, 0xd1, 0x05, 0x61, 0x70, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3b, - 0x00, 0x00, 0x02, 0x4a, 0x11, 0x6c, 0x08, 0x43, - 0x10, 0x64, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xbf, 0xfe, - 0x0b, 0xf0, 0xa1, 0xfb, 0x80, 0xbd, 0x02, 0x4a, - 0x01, 0x1c, 0x10, 0x69, 0x11, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0xf3, 0xb5, - 0x06, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0xf8, 0x4c, - 0x08, 0x90, 0xe2, 0x69, 0x08, 0x25, 0x3c, 0x00, - 0xc4, 0x3b, 0x00, 0x00, 0x00, 0x2a, 0x03, 0xd0, - 0x06, 0xa9, 0x07, 0xa8, 0xfc, 0xf7, 0x06, 0xfc, - 0x30, 0x1c, 0xf3, 0x4e, 0x00, 0x27, 0x20, 0x36, - 0x82, 0x28, 0x6f, 0xd0, 0x15, 0xdc, 0x01, 0x28, - 0x18, 0xd0, 0x80, 0x28, 0x6b, 0xd1, 0xee, 0x4d, - 0x80, 0x3d, 0xa8, 0x68, 0x01, 0x28, 0x67, 0xd1, - 0x68, 0x68, 0x0f, 0xf0, 0x1b, 0xf8, 0x00, 0x28, - 0x63, 0xd1, 0x01, 0x21, 0x01, 0x20, 0x0d, 0xf0, - 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x9d, 0xf8, - 0x08, 0xf0, 0xdb, 0xfd, 0x0b, 0xb0, 0xf0, 0xbd, - 0x83, 0x28, 0x6d, 0xd0, 0x84, 0x28, 0x55, 0xd1, - 0xe7, 0xe0, 0x0a, 0x98, 0x0a, 0x28, 0x04, 0xd2, - 0x03, 0xa3, 0x1b, 0x18, 0x1b, 0x5a, 0x5b, 0x00, - 0x9f, 0x44, 0xf6, 0xe0, 0x00, 0x00, 0xee, 0x00, - 0x0b, 0x00, 0xf7, 0x00, 0xf7, 0x00, 0xf7, 0x00, - 0xf7, 0x00, 0x2f, 0x00, 0x88, 0x00, 0x8b, 0x00, - 0xad, 0x00, 0x3c, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x00, 0xf0, 0x56, 0xfe, 0x00, 0x28, 0x17, 0xd0, - 0xd6, 0x4a, 0x80, 0x3a, 0xd1, 0x6a, 0x06, 0x98, - 0x81, 0x42, 0x16, 0xd0, 0x06, 0x21, 0x00, 0x28, - 0x00, 0xd1, 0x07, 0x21, 0x0d, 0x06, 0x2d, 0x0e, - 0x00, 0x28, 0x0e, 0xd0, 0xcf, 0x4a, 0x01, 0x20, - 0x80, 0x3a, 0x50, 0x65, 0x0f, 0xf0, 0xa0, 0xf8, - 0xcc, 0x4a, 0x80, 0x3a, 0x50, 0x66, 0x04, 0xe0, - 0x00, 0x21, 0x16, 0x20, 0x3c, 0x00, 0x78, 0x3c, - 0x00, 0x00, 0x0f, 0xf0, 0xdc, 0xfc, 0x01, 0x25, - 0x02, 0x20, 0x05, 0x90, 0x2e, 0xe2, 0xc6, 0x48, - 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x2e, 0xd0, - 0xc6, 0x49, 0x20, 0x69, 0xc4, 0x4d, 0x40, 0x18, - 0x0e, 0xf0, 0xc1, 0xff, 0x00, 0x28, 0x12, 0xd0, - 0x0f, 0xf0, 0x85, 0xf8, 0xc1, 0x49, 0x49, 0x42, - 0x40, 0x18, 0xbd, 0x49, 0x20, 0x61, 0x80, 0x39, - 0x48, 0x6e, 0x40, 0x19, 0x0e, 0xf0, 0x3c, 0x00, - 0xb4, 0x3c, 0x00, 0x00, 0xbb, 0xff, 0x00, 0x28, - 0x11, 0xd0, 0x0a, 0xe0, 0xf7, 0xe0, 0x17, 0xe2, - 0xb2, 0xe0, 0xb0, 0xe0, 0xb6, 0x49, 0x20, 0x69, - 0x80, 0x39, 0x49, 0x6e, 0x40, 0x1a, 0xa8, 0x42, - 0x05, 0xdb, 0xb3, 0x49, 0xb5, 0x4d, 0x80, 0x39, - 0x4f, 0x65, 0x03, 0xf0, 0x27, 0xfb, 0x06, 0x22, - 0x29, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x72, 0xfc, - 0x47, 0xe0, 0x95, 0xe0, 0x00, 0xf0, 0xfe, 0xfd, - 0x3c, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0x28, - 0x42, 0xd1, 0xaa, 0x4d, 0xc4, 0x3d, 0xef, 0x60, - 0x08, 0xf0, 0x19, 0xfd, 0x03, 0xf0, 0x15, 0xfb, - 0xa8, 0x6a, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, - 0x4c, 0xff, 0xaf, 0x62, 0xa4, 0x48, 0x80, 0x38, - 0x00, 0x68, 0x00, 0x21, 0xff, 0xf7, 0xf9, 0xfc, - 0x08, 0xf0, 0x3f, 0xf9, 0x09, 0x21, 0x16, 0x20, - 0x0f, 0xf0, 0x87, 0xfc, 0x00, 0x22, 0x16, 0x21, - 0x83, 0x20, 0x3c, 0x00, 0x2c, 0x3d, 0x00, 0x00, - 0x0f, 0xf0, 0x40, 0xfd, 0xff, 0xf7, 0x86, 0xfc, - 0x21, 0xe0, 0x00, 0xf0, 0x1b, 0xfe, 0x1e, 0xe0, - 0x06, 0xf0, 0x54, 0xfa, 0x97, 0x4d, 0x80, 0x3d, - 0xa9, 0x6f, 0x40, 0x1a, 0x04, 0x90, 0x06, 0x98, - 0x00, 0x28, 0x01, 0xd0, 0xaf, 0x65, 0x02, 0xe0, - 0xa8, 0x6d, 0x00, 0x28, 0x08, 0xd1, 0x91, 0x48, - 0xc4, 0x38, 0x00, 0x78, 0x80, 0x07, 0x03, 0xd5, - 0x92, 0x48, 0x47, 0x60, 0x3c, 0x00, 0x68, 0x3d, - 0x00, 0x00, 0x00, 0xf0, 0x02, 0xfe, 0x04, 0x98, - 0xff, 0x38, 0x23, 0x38, 0x14, 0x28, 0x02, 0xd2, - 0x01, 0x20, 0xe8, 0x63, 0x53, 0xe0, 0xef, 0x63, - 0x51, 0xe0, 0x87, 0x4a, 0xb5, 0x7a, 0x80, 0x3a, - 0x00, 0x2d, 0x4c, 0xd0, 0x0d, 0xf0, 0x71, 0xff, - 0x00, 0xf0, 0xad, 0xfd, 0x07, 0x1c, 0x82, 0x48, - 0x80, 0x38, 0x40, 0x6f, 0xff, 0x30, 0x5f, 0x30, - 0x0e, 0xf0, 0x3d, 0xff, 0x02, 0x1c, 0x3c, 0x00, - 0xa4, 0x3d, 0x00, 0x00, 0x7e, 0x48, 0x80, 0x38, - 0x40, 0x6d, 0x00, 0x28, 0x1a, 0xd1, 0x00, 0xf0, - 0xf1, 0xfd, 0x00, 0x28, 0x16, 0xd1, 0x04, 0x2d, - 0x02, 0xd1, 0x00, 0x2f, 0x12, 0xd1, 0x1b, 0xe0, - 0x00, 0x2f, 0x06, 0xd0, 0x02, 0x2d, 0x14, 0xd0, - 0x79, 0x48, 0x40, 0x68, 0x00, 0x28, 0x09, 0xd0, - 0x12, 0xe0, 0x00, 0x2a, 0x10, 0xd1, 0x4b, 0x21, - 0xc9, 0x00, 0x01, 0x23, 0x09, 0x22, 0x16, 0x20, - 0x3c, 0x00, 0xe0, 0x3d, 0x00, 0x00, 0x0f, 0xf0, - 0xd6, 0xfc, 0x6e, 0x4a, 0x73, 0x48, 0x80, 0x3a, - 0x11, 0x68, 0x0b, 0xf0, 0xd8, 0xfa, 0x18, 0xe0, - 0x01, 0x21, 0x00, 0x20, 0x01, 0xe0, 0x01, 0x21, - 0x01, 0x20, 0x00, 0xf0, 0x2a, 0xfe, 0x10, 0xe0, - 0x67, 0x4a, 0x6c, 0x49, 0x80, 0x3a, 0x90, 0x6e, - 0x40, 0x18, 0x90, 0x66, 0x01, 0x25, 0x08, 0x95, - 0x8b, 0xe1, 0x04, 0x21, 0x6c, 0xe1, 0x61, 0x4a, - 0x66, 0x48, 0x3c, 0x00, 0x1c, 0x3e, 0x00, 0x00, - 0x80, 0x3a, 0x11, 0x68, 0x0b, 0xf0, 0xaa, 0xfa, - 0x88, 0xe1, 0xaf, 0x60, 0xa8, 0x6f, 0xe8, 0x67, - 0x63, 0x48, 0x01, 0x6d, 0xa9, 0x67, 0x07, 0x9a, - 0x14, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x08, 0x18, 0x12, 0x30, 0xa8, 0x66, 0x70, 0x78, - 0xb0, 0x70, 0x30, 0x78, 0x70, 0x70, 0x02, 0x20, - 0x30, 0x70, 0xa0, 0x69, 0xfc, 0xf7, 0xc2, 0xfa, - 0xef, 0x64, 0xa8, 0x6f, 0x3c, 0x00, 0x58, 0x3e, - 0x00, 0x00, 0xe9, 0x6f, 0x59, 0x4b, 0x40, 0x1a, - 0x98, 0x42, 0x12, 0xd2, 0x68, 0x6d, 0x06, 0x99, - 0x88, 0x42, 0x0e, 0xd0, 0x30, 0x78, 0x02, 0x28, - 0x0b, 0xd8, 0x0e, 0xf0, 0x9c, 0xff, 0xa9, 0x6f, - 0x08, 0x22, 0x40, 0x1a, 0x52, 0x49, 0x09, 0x1a, - 0x3b, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x85, 0xfc, - 0x00, 0xe0, 0xaf, 0x65, 0x01, 0x20, 0x05, 0x90, - 0x08, 0x90, 0x43, 0x48, 0x02, 0x25, 0x3c, 0x00, - 0x94, 0x3e, 0x00, 0x00, 0xc4, 0x38, 0xc1, 0x68, - 0x00, 0x29, 0x72, 0xd1, 0x01, 0x21, 0xc1, 0x60, - 0x49, 0x48, 0x00, 0x6b, 0x00, 0x28, 0x6c, 0xd0, - 0x08, 0xf0, 0x66, 0xfc, 0x69, 0xe0, 0x3c, 0x48, - 0x00, 0x22, 0x01, 0x92, 0x80, 0x38, 0x80, 0x68, - 0x01, 0x28, 0x04, 0xd1, 0x38, 0x48, 0x80, 0x38, - 0x87, 0x60, 0x01, 0x20, 0x48, 0xe1, 0x3a, 0x48, - 0x01, 0x23, 0x43, 0x60, 0x34, 0x48, 0xc4, 0x38, - 0x3c, 0x00, 0xd0, 0x3e, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x28, 0x0a, 0xd1, 0x00, 0xf0, 0x25, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0xff, 0x21, 0x91, 0x31, - 0x01, 0x23, 0x09, 0x22, 0x16, 0x20, 0x0f, 0xf0, - 0x52, 0xfc, 0x2c, 0x49, 0x80, 0x39, 0x48, 0x6f, - 0x89, 0x6f, 0x42, 0x1a, 0x03, 0x92, 0x06, 0xf0, - 0x76, 0xf9, 0x28, 0x49, 0x80, 0x39, 0x89, 0x6f, - 0x03, 0x9a, 0x40, 0x1a, 0x02, 0x90, 0x37, 0x20, - 0x00, 0x01, 0x3c, 0x00, 0x0c, 0x3f, 0x00, 0x00, - 0x10, 0x1a, 0x50, 0x28, 0x0d, 0xd2, 0x23, 0x48, - 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x04, 0xd1, - 0x02, 0x98, 0xff, 0x38, 0x55, 0x38, 0x14, 0x28, - 0x01, 0xd2, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22, - 0x01, 0x92, 0x03, 0x9a, 0x01, 0x20, 0xff, 0x3a, - 0x0b, 0x3a, 0x50, 0x2a, 0x00, 0xd3, 0x00, 0x20, - 0x04, 0x90, 0x00, 0x28, 0x0a, 0xd0, 0x17, 0x48, - 0x80, 0x38, 0xc0, 0x6f, 0x3c, 0x00, 0x48, 0x3f, - 0x00, 0x00, 0x08, 0x1a, 0x9b, 0x21, 0xc9, 0x00, - 0x40, 0x1a, 0x14, 0x28, 0x01, 0xd2, 0x01, 0x22, - 0x00, 0xe0, 0x00, 0x22, 0x00, 0x92, 0x00, 0x2a, - 0x11, 0xd0, 0x0f, 0x4d, 0x01, 0x20, 0x80, 0x3d, - 0x68, 0x65, 0x0e, 0xf0, 0x20, 0xff, 0x68, 0x66, - 0x01, 0x25, 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0, - 0x5e, 0xfb, 0x00, 0x21, 0x16, 0x20, 0x0f, 0xf0, - 0x5a, 0xfb, 0x00, 0xe0, 0xba, 0xe0, 0x3c, 0x00, - 0x84, 0x3f, 0x00, 0x00, 0xf0, 0x79, 0x02, 0x28, - 0x3c, 0xd8, 0x05, 0x4a, 0x80, 0x3a, 0x51, 0x6c, - 0x00, 0x29, 0x37, 0xd1, 0x13, 0x6c, 0x11, 0x1c, - 0x00, 0x2b, 0x33, 0xd1, 0x16, 0xe0, 0x00, 0x00, - 0x24, 0x6d, 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, - 0xc0, 0x5c, 0x15, 0x00, 0x70, 0x99, 0x14, 0x00, - 0xb0, 0x57, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xe2, 0x04, 0x00, 0x00, 0x00, 0x90, 0x07, 0x00, - 0x3c, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x53, 0x07, - 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0xc8, 0x57, - 0x01, 0x00, 0x4a, 0x6d, 0x00, 0x2a, 0x02, 0xd0, - 0xb2, 0x7a, 0x02, 0x2a, 0x15, 0xd1, 0x00, 0x9a, - 0x00, 0x2a, 0x03, 0xd0, 0xca, 0x6d, 0x01, 0x32, - 0xca, 0x65, 0x00, 0xe0, 0xcf, 0x65, 0x01, 0x9a, - 0x00, 0x2a, 0x0b, 0xd0, 0x8a, 0x6f, 0xcb, 0x6f, - 0xd2, 0x1a, 0x5a, 0x4b, 0x9a, 0x42, 0x02, 0xd2, - 0x8a, 0x6d, 0x3c, 0x00, 0xfc, 0x3f, 0x00, 0x00, - 0x01, 0x32, 0x00, 0xe0, 0x01, 0x22, 0x8a, 0x65, - 0x00, 0xe0, 0x8f, 0x65, 0x04, 0x99, 0x00, 0x29, - 0x01, 0xd1, 0x02, 0x28, 0x0b, 0xd9, 0x54, 0x4a, - 0x02, 0x28, 0x1e, 0xd9, 0xd0, 0x6f, 0x61, 0x68, - 0x88, 0x42, 0x1a, 0xd1, 0x91, 0x6f, 0x08, 0x1a, - 0x50, 0x49, 0x88, 0x42, 0x15, 0xdd, 0x4e, 0x4b, - 0x98, 0x6f, 0xe1, 0x68, 0x40, 0x1a, 0x7d, 0x21, - 0xc9, 0x00, 0x88, 0x42, 0x3c, 0x00, 0x38, 0x40, - 0x00, 0x00, 0x0b, 0xdd, 0x61, 0x69, 0x40, 0x1a, - 0x00, 0x28, 0x04, 0xdd, 0x02, 0x11, 0x40, 0x11, - 0x10, 0x18, 0x40, 0x18, 0x01, 0xe0, 0x80, 0x10, - 0x08, 0x18, 0x60, 0x61, 0x58, 0x6f, 0xe0, 0x60, - 0x03, 0x98, 0xff, 0x38, 0x23, 0x38, 0x14, 0x28, - 0x09, 0xd2, 0x02, 0x98, 0xff, 0x38, 0x23, 0x38, - 0x14, 0x28, 0x04, 0xd2, 0x3e, 0x4a, 0x90, 0x6f, - 0x50, 0x64, 0x90, 0x6a, 0x90, 0x64, 0x3c, 0x00, - 0x74, 0x40, 0x00, 0x00, 0x0e, 0xf0, 0x9a, 0xfe, - 0x3a, 0x49, 0x49, 0x6c, 0x40, 0x1a, 0x3b, 0x49, - 0x88, 0x42, 0x01, 0xd9, 0x37, 0x49, 0x4f, 0x64, - 0x39, 0x49, 0x03, 0x98, 0x40, 0x18, 0x14, 0x28, - 0x07, 0xd2, 0x34, 0x49, 0xc8, 0x6b, 0x00, 0x28, - 0x03, 0xd0, 0x88, 0x6f, 0x08, 0x64, 0x88, 0x6a, - 0x88, 0x64, 0x0e, 0xf0, 0x83, 0xfe, 0x2f, 0x49, - 0x09, 0x6c, 0x40, 0x1a, 0x31, 0x49, 0x88, 0x42, - 0x3c, 0x00, 0xb0, 0x40, 0x00, 0x00, 0x01, 0xd9, - 0x2c, 0x48, 0x07, 0x64, 0x04, 0x20, 0x05, 0x90, - 0x08, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0xb9, 0xfa, - 0x28, 0x48, 0x40, 0x6d, 0x00, 0x28, 0x02, 0xd0, - 0x04, 0x99, 0x00, 0x29, 0x08, 0xd0, 0x29, 0x49, - 0x00, 0x28, 0x00, 0xd1, 0x29, 0x49, 0x3b, 0x1c, - 0x06, 0x22, 0x16, 0x20, 0x0f, 0xf0, 0x57, 0xfb, - 0x02, 0x2d, 0x09, 0xd0, 0x06, 0x2d, 0x0a, 0xd0, - 0x07, 0x2d, 0x3c, 0x00, 0xec, 0x40, 0x00, 0x00, - 0x13, 0xd1, 0x07, 0xe0, 0x01, 0x21, 0x16, 0x20, - 0xfd, 0xf7, 0xd6, 0xf8, 0x1e, 0xe0, 0x1a, 0x4a, - 0x57, 0x63, 0x97, 0x63, 0x18, 0x4a, 0x06, 0x98, - 0xd0, 0x62, 0x07, 0x99, 0x11, 0x63, 0x53, 0x6b, - 0x18, 0x43, 0x50, 0x63, 0x90, 0x6b, 0x08, 0x43, - 0x90, 0x63, 0x05, 0x98, 0x00, 0x28, 0x05, 0xd0, - 0x05, 0x98, 0x0c, 0xf0, 0x5f, 0xfa, 0x05, 0x98, - 0x0c, 0xf0, 0xd2, 0xf9, 0x3c, 0x00, 0x28, 0x41, - 0x00, 0x00, 0x08, 0x2d, 0x05, 0xd0, 0x0d, 0x48, - 0x44, 0x38, 0x85, 0x70, 0x28, 0x1c, 0x03, 0xf0, - 0xdc, 0xfd, 0x11, 0x49, 0xe0, 0x69, 0x88, 0x42, - 0x00, 0xd1, 0x61, 0xe5, 0x08, 0x98, 0x00, 0x28, - 0xfb, 0xd0, 0xb0, 0x7a, 0x02, 0x28, 0xf8, 0xd1, - 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0x6f, 0xfa, - 0x02, 0x20, 0x0d, 0xf0, 0xe8, 0xfe, 0x53, 0xe5, - 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x41, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x20, 0xa1, 0x07, 0x00, 0x20, 0x4e, 0x00, 0x00, - 0x3f, 0xfb, 0xff, 0xff, 0xa0, 0x86, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0xc0, 0x5c, 0x15, 0x00, - 0xf1, 0x1d, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x21, 0x48, - 0x00, 0x68, 0x21, 0x4d, 0x69, 0x69, 0x08, 0x40, - 0x01, 0xd1, 0x01, 0x27, 0x00, 0xe0, 0x00, 0x27, - 0x3c, 0x00, 0xa0, 0x41, 0x00, 0x00, 0x1d, 0x4d, - 0x01, 0x26, 0x69, 0x6a, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x26, 0x1b, 0x4d, 0x1a, 0x48, 0x2c, 0x1c, - 0xa0, 0x30, 0x02, 0x7a, 0x28, 0x1c, 0x40, 0x30, - 0x80, 0x34, 0x10, 0x23, 0xb7, 0x42, 0x10, 0xd1, - 0x01, 0x25, 0xc5, 0x80, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x23, 0x1a, 0x43, 0x11, 0x1c, 0x01, 0x73, - 0x01, 0x20, 0x0e, 0xf0, 0x88, 0xfe, 0x08, 0x20, - 0x20, 0x70, 0x3c, 0x00, 0xdc, 0x41, 0x00, 0x00, - 0x00, 0x22, 0x16, 0x21, 0x80, 0x20, 0x13, 0xe0, - 0x11, 0x27, 0xc7, 0x80, 0x2e, 0x1c, 0x0b, 0x4d, - 0x00, 0x29, 0x00, 0xd1, 0x00, 0x23, 0x1a, 0x43, - 0x11, 0x1c, 0x01, 0x73, 0x01, 0x20, 0x0e, 0xf0, - 0x75, 0xfe, 0x08, 0x20, 0x20, 0x70, 0x30, 0x6d, - 0x00, 0x22, 0x16, 0x21, 0x68, 0x67, 0x82, 0x20, - 0x0f, 0xf0, 0xd0, 0xfa, 0xf8, 0xbd, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x18, 0x42, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x00, 0x90, - 0x07, 0x00, 0xb0, 0xb5, 0x0f, 0x4d, 0x04, 0x1c, - 0xaa, 0x7a, 0x01, 0x21, 0x08, 0x1c, 0x00, 0x2a, - 0x00, 0xd0, 0x00, 0x20, 0x00, 0x2c, 0x00, 0xd0, - 0x00, 0x21, 0x88, 0x42, 0x0a, 0xd0, 0x00, 0x2c, - 0x04, 0xd1, 0x00, 0xf0, 0x42, 0xfb, 0x00, 0xf0, - 0xd6, 0xfa, 0x03, 0xe0, 0x00, 0xf0, 0xd9, 0xfa, - 0x00, 0xf0, 0x09, 0xf8, 0xa8, 0x7a, 0x3c, 0x00, - 0x54, 0x42, 0x00, 0x00, 0x02, 0x49, 0xe4, 0x39, - 0x48, 0x71, 0xac, 0x72, 0xb0, 0xbd, 0x00, 0x00, - 0x44, 0x6d, 0x01, 0x00, 0x80, 0xb5, 0x3e, 0xf0, - 0x55, 0xf8, 0x02, 0x49, 0x01, 0x20, 0x08, 0x70, - 0x80, 0xbd, 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00, - 0xf3, 0xb5, 0x01, 0x20, 0x8d, 0xb0, 0x0f, 0x1c, - 0x01, 0x24, 0x08, 0x90, 0x0e, 0xf0, 0x92, 0xfd, - 0x06, 0x1c, 0x00, 0xf0, 0xb5, 0xfa, 0x09, 0x90, - 0x3c, 0x00, 0x90, 0x42, 0x00, 0x00, 0x00, 0xf0, - 0x80, 0xfb, 0x07, 0x90, 0xfe, 0xf7, 0x3f, 0xfa, - 0x05, 0x1c, 0x00, 0x21, 0x0c, 0x91, 0x08, 0xf0, - 0xf0, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x0a, 0x90, 0xfe, 0xf7, - 0x12, 0xfd, 0x05, 0xf0, 0xe0, 0xfe, 0x0b, 0x90, - 0x00, 0x2d, 0x23, 0xd0, 0x28, 0x88, 0x41, 0x07, - 0x20, 0xd4, 0x29, 0x1d, 0x04, 0x91, 0x0a, 0x35, - 0x00, 0x06, 0x3c, 0x00, 0xcc, 0x42, 0x00, 0x00, - 0x80, 0x0e, 0x01, 0x21, 0x20, 0x28, 0x03, 0x95, - 0x00, 0xd0, 0x00, 0x21, 0x0d, 0x1c, 0x04, 0x98, - 0x06, 0xf0, 0x38, 0xfd, 0x0c, 0x90, 0x04, 0x98, - 0x06, 0xf0, 0x10, 0xfd, 0x00, 0x28, 0x08, 0xd0, - 0x03, 0x98, 0x01, 0xf0, 0x87, 0xfa, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x2d, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x0c, 0x99, 0x01, 0x43, - 0x0c, 0x91, 0xfc, 0xf7, 0x3c, 0x00, 0x08, 0x43, - 0x00, 0x00, 0x23, 0xff, 0x00, 0x28, 0x2f, 0xd0, - 0x07, 0xf0, 0x99, 0xff, 0x05, 0x1c, 0x07, 0xf0, - 0xb2, 0xff, 0x04, 0x90, 0xff, 0xf7, 0xf3, 0xf8, - 0x0c, 0x99, 0x01, 0x43, 0x00, 0x2d, 0x06, 0xd0, - 0x04, 0x98, 0xf0, 0x4a, 0x30, 0x1a, 0x90, 0x42, - 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x08, 0x43, 0x0c, 0x90, 0x0b, 0x98, 0x0a, 0x9b, - 0x18, 0x43, 0x01, 0x1c, 0x0b, 0x91, 0x3c, 0x00, - 0x44, 0x43, 0x00, 0x00, 0x05, 0xf0, 0xce, 0xfe, - 0x00, 0x28, 0x1a, 0xd1, 0x00, 0x2d, 0x06, 0xd0, - 0x04, 0x98, 0xe7, 0x49, 0x30, 0x1a, 0x88, 0x42, - 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x0c, 0x99, 0x08, 0x43, 0x05, 0x1c, 0x00, 0xf0, - 0x1f, 0xfb, 0x28, 0x43, 0x03, 0xe0, 0x00, 0xf0, - 0x1b, 0xfb, 0x0c, 0x99, 0x08, 0x43, 0x0c, 0x90, - 0x00, 0xf0, 0xd4, 0xfb, 0x0b, 0x99, 0x01, 0x43, - 0x3c, 0x00, 0x80, 0x43, 0x00, 0x00, 0x0b, 0x91, - 0xdc, 0x49, 0xc8, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x38, 0xc8, 0x60, 0x08, 0xf0, 0xe7, 0xfb, - 0x06, 0x90, 0x08, 0xf0, 0x90, 0xfd, 0x31, 0x1a, - 0x05, 0x91, 0x06, 0x99, 0xd6, 0x48, 0x81, 0x42, - 0x08, 0xd8, 0x00, 0x2f, 0x08, 0xd1, 0x05, 0x99, - 0x40, 0x08, 0x81, 0x42, 0x04, 0xd9, 0x06, 0x99, - 0x81, 0x42, 0x01, 0xd9, 0x00, 0x24, 0x8b, 0xe0, - 0xd0, 0x48, 0x3c, 0x00, 0xbc, 0x43, 0x00, 0x00, - 0x05, 0x99, 0xd0, 0x4d, 0x81, 0x42, 0x26, 0xd2, - 0xe8, 0x79, 0x10, 0x28, 0x06, 0xd2, 0x00, 0x2f, - 0x21, 0xd1, 0xcc, 0x48, 0xa0, 0x38, 0x80, 0x6a, - 0x00, 0x28, 0x1c, 0xd1, 0x09, 0xf0, 0x62, 0xff, - 0x04, 0x90, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x20, - 0xc3, 0x49, 0x13, 0xe0, 0x09, 0xf0, 0x10, 0xfe, - 0x00, 0x28, 0x03, 0xd0, 0xc4, 0x48, 0xc0, 0x69, - 0x00, 0x28, 0xf4, 0xd0, 0x3c, 0x00, 0xf8, 0x43, - 0x00, 0x00, 0x04, 0x98, 0x05, 0x28, 0x03, 0xd0, - 0xc1, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x65, 0xd1, - 0xbb, 0x49, 0x48, 0x6a, 0x00, 0x28, 0x23, 0xd0, - 0x01, 0x38, 0x48, 0x62, 0x00, 0xf0, 0x87, 0xff, - 0x00, 0x28, 0x11, 0xd0, 0xbb, 0x48, 0x05, 0x99, - 0x81, 0x42, 0x0d, 0xd2, 0x01, 0xf0, 0x9b, 0xf8, - 0x04, 0x30, 0x0d, 0xf0, 0xee, 0xfc, 0x40, 0x30, - 0xc1, 0x7a, 0x01, 0x29, 0x4e, 0xd0, 0x3c, 0x00, - 0x34, 0x44, 0x00, 0x00, 0x80, 0x7a, 0x00, 0x28, - 0x01, 0xd0, 0x05, 0x28, 0x49, 0xd3, 0x01, 0xf0, - 0xdf, 0xf8, 0x02, 0x28, 0x10, 0xd0, 0x00, 0x2f, - 0x02, 0xd1, 0x06, 0x98, 0x00, 0x28, 0x40, 0xd1, - 0x00, 0x20, 0x08, 0x90, 0x82, 0xe1, 0xaa, 0x48, - 0xa0, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x38, 0xd0, - 0xa8, 0x48, 0x80, 0x69, 0x48, 0x62, 0x34, 0xe0, - 0x0a, 0xa9, 0x03, 0xc9, 0x08, 0x43, 0x45, 0xd0, - 0x3c, 0x00, 0x70, 0x44, 0x00, 0x00, 0xa3, 0x48, - 0x29, 0x78, 0xa0, 0x38, 0x02, 0x29, 0x40, 0xd8, - 0x40, 0x6d, 0x00, 0x28, 0x0a, 0xd0, 0x9f, 0x48, - 0xa2, 0x49, 0x20, 0x38, 0xc0, 0x68, 0x40, 0x18, - 0x0e, 0xf0, 0xc7, 0xfb, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x96, 0x4a, - 0x90, 0x6a, 0x00, 0x28, 0x02, 0xda, 0x64, 0x08, - 0x64, 0x00, 0x2a, 0xe0, 0x00, 0x29, 0x09, 0xd1, - 0x95, 0x4b, 0x3c, 0x00, 0xac, 0x44, 0x00, 0x00, - 0xa0, 0x3b, 0x5b, 0x6d, 0x00, 0x2b, 0x02, 0xd0, - 0x05, 0x28, 0x0d, 0xdb, 0x01, 0xe0, 0x07, 0x28, - 0x0a, 0xdb, 0x01, 0x20, 0xc0, 0x43, 0x90, 0x62, - 0x64, 0x08, 0x8e, 0x49, 0x64, 0x00, 0x00, 0x20, - 0xa0, 0x39, 0x88, 0x65, 0x14, 0xe0, 0xd1, 0xe0, - 0x39, 0x43, 0x11, 0xd1, 0x89, 0x49, 0xa0, 0x39, - 0xcb, 0x6d, 0x00, 0x2b, 0x02, 0xd1, 0x89, 0x6d, - 0x01, 0x29, 0x09, 0xd9, 0x3c, 0x00, 0xe8, 0x44, - 0x00, 0x00, 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1, - 0x07, 0x28, 0x01, 0xdb, 0x64, 0x08, 0x64, 0x00, - 0x01, 0x30, 0x90, 0x62, 0xbd, 0xe0, 0x7d, 0x49, - 0x88, 0x69, 0x04, 0x90, 0x00, 0x20, 0x88, 0x61, - 0x0c, 0x98, 0x00, 0x28, 0x2c, 0xd0, 0x07, 0xf0, - 0x66, 0xfc, 0x00, 0x28, 0x02, 0xd0, 0x02, 0x20, - 0x04, 0x43, 0x25, 0xe0, 0x7a, 0x48, 0xc0, 0x6a, - 0x00, 0x28, 0x04, 0xd1, 0x77, 0x48, 0x3c, 0x00, - 0x24, 0x45, 0x00, 0x00, 0xa0, 0x38, 0xc0, 0x68, - 0x00, 0x28, 0x1c, 0xd1, 0x04, 0x98, 0x00, 0x28, - 0x0d, 0xd1, 0x28, 0x78, 0x10, 0x28, 0x02, 0xd3, - 0xe8, 0x78, 0x02, 0x28, 0x02, 0xd9, 0x28, 0x79, - 0x10, 0x28, 0x04, 0xd3, 0x04, 0x24, 0x6b, 0x49, - 0x01, 0x22, 0x8a, 0x61, 0x94, 0xe0, 0x6c, 0x48, - 0xa0, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x71, 0xd0, - 0x05, 0xf0, 0xa2, 0xfd, 0x00, 0x28, 0x6d, 0xd0, - 0x3c, 0x00, 0x60, 0x45, 0x00, 0x00, 0x64, 0x08, - 0x64, 0x00, 0x88, 0xe0, 0xff, 0xf7, 0x5b, 0xfa, - 0x00, 0x28, 0x1a, 0xd0, 0x68, 0x48, 0x00, 0x78, - 0x02, 0x28, 0x01, 0xd1, 0x00, 0x2f, 0x14, 0xd1, - 0x00, 0x20, 0xfe, 0xf7, 0x70, 0xfe, 0x30, 0x1a, - 0x04, 0x90, 0xff, 0xf7, 0x6c, 0xfa, 0x00, 0x28, - 0x07, 0xd0, 0xff, 0xf7, 0x1e, 0xfa, 0x00, 0x28, - 0x03, 0xd0, 0x5d, 0x49, 0x04, 0x98, 0x88, 0x42, - 0x4f, 0xd3, 0x3c, 0x00, 0x9c, 0x45, 0x00, 0x00, - 0x05, 0xf0, 0x6c, 0xfd, 0x00, 0x28, 0x4b, 0xd1, - 0x53, 0x49, 0x08, 0x78, 0x03, 0x28, 0x08, 0xd1, - 0x88, 0x68, 0x01, 0x22, 0xd2, 0x07, 0x30, 0x1a, - 0x90, 0x42, 0x41, 0xd2, 0x01, 0x22, 0x0a, 0x70, - 0x57, 0xe0, 0x54, 0x48, 0x00, 0x78, 0x02, 0x28, - 0x01, 0xd1, 0x00, 0x2f, 0x51, 0xd1, 0x4a, 0x49, - 0x88, 0x68, 0x51, 0x49, 0x80, 0x1b, 0x88, 0x42, - 0x07, 0xd9, 0x01, 0x20, 0x3c, 0x00, 0xd8, 0x45, - 0x00, 0x00, 0xfe, 0xf7, 0x42, 0xfe, 0x7d, 0x21, - 0x09, 0x01, 0x40, 0x18, 0x44, 0x49, 0x88, 0x60, - 0x4a, 0x48, 0x00, 0x78, 0x02, 0x28, 0x04, 0xd1, - 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x47, 0x4b, 0x47, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x3c, 0x49, 0x89, 0x68, - 0x89, 0x1b, 0x88, 0x42, 0x30, 0xd9, 0x07, 0x9b, - 0x00, 0x20, 0x03, 0x93, 0x00, 0xf0, 0x3c, 0x00, - 0x14, 0x46, 0x00, 0x00, 0x79, 0xff, 0x02, 0x90, - 0xff, 0xf7, 0xd8, 0xf9, 0x04, 0x90, 0x01, 0xf0, - 0x57, 0xf8, 0x04, 0x99, 0x02, 0x9a, 0x51, 0x43, - 0x48, 0x43, 0x01, 0x90, 0x00, 0xf0, 0xdc, 0xff, - 0x41, 0x1c, 0x01, 0x98, 0x01, 0x22, 0x48, 0x43, - 0x11, 0x1c, 0x00, 0xe0, 0x1b, 0xe0, 0x31, 0x4b, - 0x5b, 0x6a, 0x83, 0x42, 0x00, 0xd3, 0x00, 0x21, - 0x03, 0x9b, 0x01, 0x22, 0x00, 0x2b, 0x00, 0xd0, - 0x3c, 0x00, 0x50, 0x46, 0x00, 0x00, 0x00, 0x22, - 0x2c, 0x4b, 0x51, 0x43, 0x9b, 0x6a, 0x01, 0x22, - 0x83, 0x42, 0x00, 0xd3, 0x00, 0x22, 0x50, 0x00, - 0x08, 0x18, 0x03, 0xd0, 0x23, 0x49, 0x03, 0x20, - 0x08, 0x70, 0x03, 0xe0, 0x09, 0x98, 0xc0, 0x68, - 0x06, 0x28, 0x08, 0xd9, 0x02, 0x24, 0x08, 0x98, - 0x00, 0x28, 0x6e, 0xd0, 0x1d, 0x49, 0x00, 0x20, - 0xc8, 0x61, 0x48, 0x61, 0xa5, 0xe0, 0x1a, 0x49, - 0x48, 0x69, 0x3c, 0x00, 0x8c, 0x46, 0x00, 0x00, - 0x00, 0x28, 0x0a, 0xd1, 0x00, 0x2f, 0x05, 0xd0, - 0x01, 0x22, 0x4a, 0x61, 0xc8, 0x69, 0x80, 0x18, - 0xc8, 0x61, 0x0a, 0xe0, 0x00, 0x20, 0xc8, 0x61, - 0x03, 0xe0, 0x00, 0x2f, 0x05, 0xd1, 0x00, 0x20, - 0x48, 0x61, 0x0d, 0x98, 0x00, 0x28, 0x00, 0xd1, - 0xc8, 0x68, 0x00, 0x20, 0x08, 0x90, 0x08, 0x78, - 0x01, 0x28, 0x2f, 0xd0, 0x02, 0x28, 0x4b, 0xd1, - 0x00, 0x2f, 0x08, 0xd1, 0x3c, 0x00, 0xc8, 0x46, - 0x00, 0x00, 0xe8, 0x78, 0x00, 0x28, 0x02, 0xd1, - 0x28, 0x78, 0x10, 0x28, 0x43, 0xd2, 0x28, 0x79, - 0x10, 0x28, 0x40, 0xd2, 0x48, 0x68, 0x0a, 0x69, - 0x30, 0x1a, 0x90, 0x42, 0x67, 0xd3, 0x01, 0x22, - 0x0a, 0x70, 0x38, 0xe0, 0x00, 0x00, 0xe2, 0x04, - 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x68, 0x7e, - 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x88, 0x13, - 0x00, 0x00, 0x44, 0x6d, 0x01, 0x00, 0x3c, 0x00, - 0x04, 0x47, 0x00, 0x00, 0xc8, 0x57, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0x98, 0x3a, 0x00, 0x00, - 0xc0, 0x57, 0x01, 0x00, 0x40, 0x0d, 0x03, 0x00, - 0xc4, 0x09, 0x00, 0x00, 0xb2, 0x0c, 0x00, 0x00, - 0x00, 0x20, 0x0b, 0x9a, 0x0a, 0x9b, 0xc0, 0x43, - 0x1a, 0x43, 0x37, 0xd0, 0x00, 0x2f, 0x35, 0xd1, - 0x07, 0x9b, 0x00, 0x2b, 0x08, 0xd0, 0x6a, 0x78, - 0x02, 0x2a, 0x2f, 0xd9, 0x2a, 0x78, 0x10, 0x2a, - 0x3c, 0x00, 0x40, 0x47, 0x00, 0x00, 0x2c, 0xd2, - 0x2a, 0x79, 0x10, 0x2a, 0x29, 0xd2, 0x25, 0x4b, - 0x1a, 0x6c, 0x00, 0x2a, 0x06, 0xd0, 0x9a, 0x6a, - 0x9f, 0x6c, 0xba, 0x42, 0x02, 0xd1, 0x1f, 0x20, - 0x1f, 0xe0, 0x2e, 0xe0, 0x20, 0x4b, 0x5a, 0x6c, - 0x00, 0x2a, 0x03, 0xd0, 0x1f, 0x4f, 0xb3, 0x1a, - 0xbb, 0x42, 0x16, 0xd3, 0x1c, 0x4b, 0x00, 0x2a, - 0x05, 0xd0, 0x9a, 0x6a, 0x9f, 0x6c, 0xba, 0x42, - 0x01, 0xd1, 0x3c, 0x00, 0x7c, 0x47, 0x00, 0x00, - 0x0f, 0x20, 0x0d, 0xe0, 0x07, 0x9a, 0x00, 0x2a, - 0x04, 0xd0, 0xea, 0x79, 0x20, 0x2a, 0x01, 0xd1, - 0x00, 0x20, 0x05, 0xe0, 0xea, 0x79, 0x10, 0x2a, - 0x01, 0xd3, 0x03, 0x20, 0x00, 0xe0, 0x9a, 0x6a, - 0x12, 0x4a, 0x12, 0x68, 0x02, 0x40, 0x0b, 0xd1, - 0x01, 0x20, 0x08, 0x90, 0x02, 0x20, 0x08, 0x70, - 0x0f, 0x48, 0x08, 0x61, 0x4e, 0x60, 0x64, 0xe7, - 0xff, 0xe7, 0x01, 0x20, 0x3c, 0x00, 0xb8, 0x47, - 0x00, 0x00, 0x08, 0x90, 0x60, 0xe7, 0x0c, 0x49, - 0x88, 0x6a, 0x00, 0x28, 0x01, 0xda, 0x01, 0x30, - 0x02, 0xe0, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, - 0x88, 0x62, 0x00, 0x20, 0x08, 0x62, 0x08, 0x99, - 0x20, 0x04, 0x08, 0x43, 0x0f, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x71, 0x02, - 0x00, 0x00, 0x08, 0x20, 0x07, 0x00, 0x53, 0x07, - 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x48, 0x70, 0x47, 0x50, 0x7e, 0x01, 0x00, - 0x80, 0xb5, 0x3d, 0xf0, 0x7f, 0xfd, 0x02, 0x49, - 0x01, 0x20, 0x08, 0x70, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, - 0x0e, 0xf0, 0xc8, 0xfa, 0x26, 0x49, 0x04, 0x1c, - 0x88, 0x6a, 0x26, 0x4e, 0x00, 0x28, 0x01, 0xd0, - 0x04, 0x20, 0x03, 0xe0, 0x70, 0x6a, 0x00, 0x28, - 0x3c, 0x00, 0x30, 0x48, 0x00, 0x00, 0x01, 0xd0, - 0x01, 0x38, 0x70, 0x62, 0x00, 0x27, 0x00, 0x2d, - 0x02, 0xd0, 0xb7, 0x61, 0xf7, 0x61, 0x0a, 0xe0, - 0xb0, 0x69, 0x1c, 0x49, 0x01, 0x30, 0xb0, 0x61, - 0x49, 0x6d, 0x00, 0x29, 0x03, 0xd0, 0x03, 0x28, - 0x01, 0xd9, 0x01, 0x20, 0xf0, 0x61, 0xb4, 0x60, - 0xf1, 0x68, 0x00, 0x91, 0x08, 0xf0, 0xf7, 0xfc, - 0xf0, 0x60, 0x00, 0x99, 0x88, 0x42, 0x02, 0xd0, - 0x30, 0x62, 0x3c, 0x00, 0x6c, 0x48, 0x00, 0x00, - 0x34, 0x61, 0x0b, 0xe0, 0x00, 0xf0, 0x90, 0xf8, - 0x00, 0x28, 0x01, 0xd0, 0x11, 0x48, 0x00, 0xe0, - 0x11, 0x48, 0x31, 0x69, 0x61, 0x1a, 0x81, 0x42, - 0x00, 0xd9, 0x37, 0x62, 0x0b, 0x4a, 0x0c, 0x48, - 0xd1, 0x6c, 0x20, 0x30, 0x00, 0x29, 0x01, 0xd0, - 0x0a, 0x21, 0x03, 0xe0, 0x01, 0x7a, 0x00, 0x29, - 0x01, 0xd0, 0xff, 0x31, 0x01, 0x72, 0x00, 0x2d, - 0x03, 0xd1, 0x01, 0x7a, 0x3c, 0x00, 0xa8, 0x48, - 0x00, 0x00, 0x00, 0x29, 0x00, 0xd0, 0x91, 0x6a, - 0x00, 0x7a, 0x00, 0x28, 0x00, 0xd1, 0x17, 0x65, - 0xf8, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x3c, 0x7e, - 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00, 0xa8, 0x61, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x49, - 0x80, 0xb5, 0x89, 0x68, 0x00, 0x29, 0x07, 0xd0, - 0x05, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x04, 0x21, - 0x08, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x3c, 0x00, - 0xe4, 0x48, 0x00, 0x00, 0x05, 0xfa, 0x80, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x07, 0x48, 0x00, 0x68, - 0x07, 0x49, 0x4a, 0x69, 0x10, 0x40, 0x01, 0xd0, - 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x49, 0x6a, - 0x88, 0x42, 0x01, 0xd1, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x00, 0x07, 0x00, - 0xa4, 0x6c, 0x01, 0x00, 0x70, 0xb5, 0x0e, 0xf0, - 0x49, 0xfa, 0x02, 0x1c, 0x00, 0xf0, 0x3a, 0xf8, - 0x3c, 0x00, 0x20, 0x49, 0x00, 0x00, 0x10, 0x49, - 0x00, 0x28, 0x0e, 0xd0, 0x08, 0x1c, 0xa0, 0x31, - 0x0e, 0x78, 0x0e, 0x4b, 0x10, 0x2e, 0x01, 0xd3, - 0x80, 0x6f, 0x03, 0xe0, 0x49, 0x78, 0x10, 0x29, - 0x0e, 0xd3, 0xc0, 0x6f, 0xc0, 0x18, 0x84, 0x1a, - 0x0a, 0xe0, 0x08, 0x1c, 0x80, 0x30, 0x45, 0x69, - 0x08, 0x49, 0x8d, 0x42, 0x01, 0xd9, 0x0c, 0x1c, - 0x05, 0xe0, 0xc0, 0x68, 0x10, 0x1a, 0x2c, 0x1a, - 0x00, 0x2c, 0x3c, 0x00, 0x5c, 0x49, 0x00, 0x00, - 0x00, 0xda, 0x64, 0x19, 0x20, 0x1c, 0x70, 0xbd, - 0xa4, 0x6c, 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0x80, 0xb5, 0x05, 0xf0, - 0xb7, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x07, 0xf0, - 0x1f, 0xff, 0x80, 0xbd, 0x03, 0x48, 0x00, 0x78, - 0x00, 0x28, 0xfa, 0xd0, 0x07, 0xf0, 0x70, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0x03, 0x49, 0x01, 0x20, 0x3c, 0x00, 0x98, 0x49, - 0x00, 0x00, 0x49, 0x69, 0x03, 0x29, 0x00, 0xd8, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x60, 0x6c, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x00, 0x24, - 0x28, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x05, 0xf0, - 0x6a, 0xfb, 0x04, 0x06, 0x24, 0x0e, 0xfe, 0xf7, - 0xd2, 0xfc, 0x00, 0x02, 0x20, 0x43, 0x02, 0xd1, - 0x68, 0x6a, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, 0x3c, 0x00, - 0xd4, 0x49, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0x01, 0x21, 0x01, 0x28, 0x00, 0xd0, 0x00, 0x21, - 0x01, 0x48, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0x15, 0x48, 0x10, 0xb5, - 0x04, 0x68, 0x15, 0x48, 0x00, 0x6a, 0x00, 0x28, - 0x14, 0xd0, 0xff, 0xf7, 0xcb, 0xff, 0x00, 0x28, - 0x0e, 0xd1, 0x11, 0x48, 0x11, 0x49, 0xc4, 0x30, - 0x40, 0x69, 0x88, 0x42, 0x08, 0xd2, 0xcc, 0x08, - 0x3c, 0x00, 0x10, 0x4a, 0x00, 0x00, 0xa0, 0x42, - 0x05, 0xd3, 0xff, 0xf7, 0x7e, 0xff, 0xa0, 0x42, - 0x01, 0xda, 0x0c, 0x4c, 0x01, 0xe0, 0xff, 0x24, - 0x91, 0x34, 0x7d, 0x20, 0x00, 0x01, 0x84, 0x42, - 0x04, 0xd9, 0x00, 0x22, 0x16, 0x21, 0x83, 0x20, - 0x0e, 0xf0, 0xbd, 0xfe, 0x01, 0x23, 0x09, 0x22, - 0x21, 0x1c, 0x16, 0x20, 0x0e, 0xf0, 0xa7, 0xfe, - 0x10, 0xbd, 0xb0, 0x57, 0x01, 0x00, 0x60, 0x6c, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x4a, 0x00, 0x00, - 0xc0, 0x5d, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c, 0x00, 0xf0, - 0x43, 0xf8, 0x00, 0x28, 0x0f, 0xd0, 0x08, 0x4c, - 0x20, 0x78, 0xc0, 0x07, 0x03, 0xd4, 0x05, 0xf0, - 0xab, 0xf9, 0x09, 0xf0, 0x31, 0xfe, 0x00, 0x2d, - 0x05, 0xd0, 0x20, 0x78, 0x80, 0x07, 0x02, 0xd4, - 0x30, 0x1c, 0x02, 0xf0, 0xfd, 0xfe, 0x70, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x4a, - 0x00, 0x00, 0xb0, 0xb5, 0x00, 0x28, 0x18, 0xd0, - 0x11, 0x48, 0x81, 0x42, 0x15, 0xd2, 0x10, 0x48, - 0x0c, 0x1c, 0x0d, 0x18, 0x07, 0xf0, 0xdf, 0xfa, - 0x81, 0x00, 0x09, 0x18, 0xa1, 0x42, 0x01, 0xd2, - 0x40, 0x00, 0x03, 0xe0, 0x41, 0x00, 0x09, 0x18, - 0xa1, 0x42, 0x01, 0xd2, 0x24, 0x1a, 0x06, 0xe0, - 0x41, 0x00, 0xa1, 0x42, 0x03, 0xd2, 0x40, 0x08, - 0xf8, 0xe7, 0x06, 0x4d, 0x07, 0x4c, 0x3c, 0x00, - 0xc4, 0x4a, 0x00, 0x00, 0x0e, 0xf0, 0x72, 0xf9, - 0x00, 0x19, 0x29, 0x1c, 0x07, 0xf0, 0xdc, 0xfa, - 0xb0, 0xbd, 0x00, 0x00, 0x80, 0xb9, 0x2a, 0x00, - 0x53, 0x07, 0x00, 0x00, 0x4c, 0x1d, 0x00, 0x00, - 0x88, 0x13, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0xf0, - 0xfd, 0xfa, 0x00, 0x28, 0x13, 0xd1, 0xfe, 0xf7, - 0xb5, 0xfe, 0x0a, 0x4c, 0x0a, 0x4d, 0x00, 0x28, - 0x60, 0x63, 0x00, 0xd0, 0x28, 0x60, 0x0e, 0xf0, - 0x3c, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x55, 0xf9, - 0x21, 0x6a, 0x00, 0x29, 0x04, 0xd1, 0xe1, 0x69, - 0x40, 0x1a, 0x29, 0x68, 0x88, 0x42, 0x01, 0xd9, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xdd, 0xff, - 0x00, 0x28, 0x05, 0xd0, 0x05, 0xf0, 0xb7, 0xfa, - 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd, - 0x00, 0x20, 0x3c, 0x00, 0x3c, 0x4b, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c, - 0x00, 0x21, 0xa2, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0xa1, 0x60, 0x02, 0xf0, 0x83, 0xf9, 0x10, 0xbd, - 0x61, 0x60, 0x01, 0x1c, 0x00, 0x22, 0x04, 0x20, - 0x0e, 0xf0, 0x36, 0xfd, 0x03, 0x48, 0x21, 0x68, - 0x0a, 0xf0, 0x08, 0xfc, 0x10, 0xbd, 0x00, 0x00, - 0xbc, 0x74, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x78, 0x4b, - 0x00, 0x00, 0x01, 0xd1, 0xfc, 0xf7, 0xc1, 0xfb, - 0x20, 0x4c, 0xe0, 0x6a, 0x00, 0x28, 0x15, 0xd0, - 0x1f, 0x4b, 0xa0, 0x69, 0x58, 0x43, 0xc6, 0x0b, - 0x20, 0x88, 0x46, 0x43, 0xf0, 0x00, 0x80, 0x19, - 0xe6, 0x60, 0xfb, 0xf7, 0x1c, 0xfe, 0xa8, 0x42, - 0x05, 0xd8, 0x30, 0x1c, 0xfb, 0xf7, 0x17, 0xfe, - 0x80, 0x19, 0xa8, 0x42, 0x02, 0xd2, 0x00, 0x20, - 0xe0, 0x60, 0x20, 0xe0, 0xe5, 0x60, 0x3c, 0x00, - 0xb4, 0x4b, 0x00, 0x00, 0x00, 0x2d, 0x1d, 0xd0, - 0x26, 0x88, 0xa0, 0x69, 0x70, 0x43, 0xc1, 0x03, - 0x28, 0x1c, 0xfb, 0xf7, 0xa5, 0xfd, 0x60, 0x61, - 0x0d, 0x48, 0x32, 0x1c, 0x29, 0x1c, 0x30, 0x30, - 0xfb, 0xf7, 0x0a, 0xfc, 0x0c, 0x4b, 0x60, 0x69, - 0x58, 0x43, 0xc0, 0x0b, 0x60, 0x62, 0x01, 0xf0, - 0xb7, 0xfd, 0xa0, 0x62, 0xe0, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0x20, 0x69, 0xa1, 0x68, 0xfb, 0xf7, - 0x3c, 0x00, 0xf0, 0x4b, 0x00, 0x00, 0xf4, 0xfb, - 0x70, 0xbd, 0x05, 0x48, 0xa1, 0x68, 0xfb, 0xf7, - 0xef, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x74, - 0x01, 0x00, 0x40, 0x42, 0x0f, 0x00, 0xc0, 0xc6, - 0x2d, 0x00, 0x88, 0x13, 0x00, 0x00, 0xf1, 0xb5, - 0x3e, 0x48, 0x00, 0xab, 0x81, 0x78, 0xc0, 0x78, - 0x3e, 0x4f, 0x0a, 0x07, 0x04, 0x07, 0x58, 0x78, - 0x3b, 0x49, 0x12, 0x0f, 0x08, 0x5c, 0x14, 0x39, - 0x24, 0x0f, 0x3c, 0x00, 0x2c, 0x4c, 0x00, 0x00, - 0x80, 0x18, 0x78, 0x60, 0x01, 0x30, 0xb8, 0x60, - 0x18, 0x78, 0x35, 0x4d, 0x08, 0x5c, 0x00, 0x19, - 0xb8, 0x61, 0x01, 0x30, 0xf8, 0x61, 0xeb, 0x78, - 0x33, 0x48, 0x1e, 0x09, 0x33, 0x4b, 0x18, 0x38, - 0x81, 0x78, 0x5e, 0x43, 0xab, 0x78, 0x1d, 0x09, - 0xc8, 0x23, 0x6b, 0x43, 0x00, 0x29, 0x08, 0xd1, - 0x2b, 0x4d, 0x2d, 0x78, 0x3d, 0x60, 0xc5, 0x60, - 0x7d, 0x25, 0xed, 0x00, 0x3c, 0x00, 0x68, 0x4c, - 0x00, 0x00, 0x5d, 0x1b, 0x2c, 0x4b, 0x07, 0xe0, - 0x27, 0x4d, 0x6d, 0x78, 0x3d, 0x60, 0xc5, 0x60, - 0x4b, 0x25, 0x2d, 0x01, 0x5d, 0x1b, 0x28, 0x4b, - 0xf6, 0x18, 0x02, 0x20, 0x00, 0xf0, 0x57, 0xf8, - 0x28, 0x1a, 0xf8, 0x60, 0x22, 0x48, 0x22, 0x1c, - 0x18, 0x38, 0x81, 0x78, 0x03, 0x20, 0x00, 0xf0, - 0x4e, 0xf8, 0x30, 0x1a, 0x38, 0x62, 0x39, 0x68, - 0x00, 0xab, 0x79, 0x61, 0x5a, 0x78, 0x3c, 0x00, - 0xa4, 0x4c, 0x00, 0x00, 0x56, 0x23, 0xf9, 0x68, - 0x5a, 0x43, 0x89, 0x1a, 0xf9, 0x60, 0xc8, 0x31, - 0x39, 0x61, 0x18, 0x49, 0x18, 0x39, 0x89, 0x78, - 0x00, 0x29, 0xb9, 0x69, 0x11, 0xd1, 0x00, 0xab, - 0x1a, 0x78, 0x13, 0x4b, 0x14, 0x3b, 0x9a, 0x5c, - 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23, 0x59, 0x43, - 0x14, 0x4b, 0x59, 0x1a, 0x51, 0x43, 0x0a, 0x23, - 0x59, 0x43, 0x40, 0x1a, 0x38, 0x62, 0x12, 0x49, - 0x3c, 0x00, 0xe0, 0x4c, 0x00, 0x00, 0x10, 0xe0, - 0x00, 0xab, 0x1a, 0x78, 0x0a, 0x4b, 0x14, 0x3b, - 0x9a, 0x5c, 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23, - 0x59, 0x43, 0x0d, 0x4b, 0x59, 0x1a, 0x51, 0x43, - 0x0a, 0x23, 0x59, 0x43, 0x40, 0x1a, 0x0b, 0x49, - 0x38, 0x62, 0x40, 0x18, 0x78, 0x62, 0xf8, 0xbd, - 0x00, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x66, 0x5a, - 0x01, 0x00, 0x94, 0x78, 0x01, 0x00, 0xa0, 0x86, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4d, 0x00, 0x00, - 0x00, 0x48, 0x71, 0x00, 0xb0, 0xd6, 0x8c, 0x00, - 0x88, 0x10, 0x00, 0x00, 0x80, 0x38, 0x01, 0x00, - 0x58, 0x12, 0x00, 0x00, 0x70, 0x11, 0x01, 0x00, - 0x30, 0xb5, 0x19, 0x4b, 0x02, 0x28, 0xdd, 0x68, - 0x06, 0xd1, 0x00, 0x29, 0x04, 0xd1, 0x2b, 0x1c, - 0x0c, 0x33, 0x9c, 0x1a, 0x64, 0x23, 0x5c, 0x43, - 0x02, 0x28, 0x09, 0xd1, 0x01, 0x29, 0x07, 0xd1, - 0x64, 0x23, 0x7d, 0x24, 0x3c, 0x00, 0x58, 0x4d, - 0x00, 0x00, 0xe4, 0x00, 0x6b, 0x43, 0x1c, 0x19, - 0xa0, 0x23, 0x53, 0x43, 0xe4, 0x1a, 0x0a, 0x23, - 0x5a, 0x43, 0x03, 0x28, 0x09, 0xd1, 0x00, 0x29, - 0x07, 0xd1, 0x13, 0x23, 0xff, 0x24, 0xe4, 0x00, - 0x6b, 0x43, 0x1b, 0x19, 0x9b, 0x1a, 0x1c, 0x1c, - 0x5c, 0x43, 0x03, 0x28, 0x08, 0xd1, 0x01, 0x29, - 0x06, 0xd1, 0x0e, 0x20, 0x05, 0x49, 0x68, 0x43, - 0x40, 0x18, 0x80, 0x1a, 0x04, 0x1c, 0x3c, 0x00, - 0x94, 0x4d, 0x00, 0x00, 0x44, 0x43, 0x20, 0x1c, - 0x30, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0x84, 0x08, 0x00, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x0c, 0x23, 0x60, 0x78, 0x05, 0x49, 0x14, 0x31, - 0x58, 0x43, 0x40, 0x18, 0x40, 0x68, 0x01, 0xf0, - 0x4f, 0xfc, 0x00, 0x21, 0x60, 0x78, 0x02, 0xf0, - 0x4b, 0xff, 0x10, 0xbd, 0x4c, 0x7b, 0x01, 0x00, - 0x0c, 0x48, 0xf8, 0xb5, 0x40, 0x78, 0x0c, 0x23, - 0x3c, 0x00, 0xd0, 0x4d, 0x00, 0x00, 0x0a, 0x49, - 0x58, 0x43, 0x14, 0x31, 0x44, 0x18, 0x26, 0x1d, - 0x60, 0xce, 0x30, 0x1c, 0x0b, 0xf0, 0x0b, 0xfd, - 0x00, 0x27, 0x41, 0x20, 0x47, 0x55, 0x05, 0x48, - 0x29, 0x1c, 0x02, 0xf0, 0xf0, 0xfe, 0x28, 0x1c, - 0x01, 0xf0, 0x31, 0xfc, 0x04, 0x34, 0xc0, 0xc4, - 0xf8, 0xbd, 0x4c, 0x7b, 0x01, 0x00, 0x55, 0x80, - 0x00, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x4c, 0x21, - 0x28, 0x78, 0x3c, 0x00, 0x0c, 0x4e, 0x00, 0x00, - 0x09, 0x4a, 0x41, 0x43, 0x8c, 0x18, 0x22, 0x68, - 0x01, 0x21, 0xfb, 0xf7, 0xe1, 0xfa, 0x28, 0x78, - 0x01, 0xf0, 0xfa, 0xfb, 0x3c, 0x23, 0xe0, 0x56, - 0x41, 0x1e, 0x01, 0x20, 0x07, 0xf0, 0x34, 0xfb, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x7c, 0x01, 0x00, - 0x58, 0xe3, 0x01, 0x00, 0x0c, 0x23, 0x07, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x80, 0xb5, 0x40, 0x68, - 0x41, 0x6b, 0x00, 0x29, 0x3c, 0x00, 0x48, 0x4e, - 0x00, 0x00, 0x02, 0xd0, 0x0b, 0xf0, 0xfb, 0xfd, - 0x80, 0xbd, 0x0b, 0xf0, 0x2c, 0xfd, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x38, 0x22, - 0x0a, 0x4b, 0x42, 0x43, 0xd2, 0x18, 0x00, 0x29, - 0x80, 0xb5, 0x04, 0xd0, 0x02, 0x29, 0x07, 0xd1, - 0x0b, 0xf0, 0xfb, 0xfc, 0x80, 0xbd, 0xd2, 0x6a, - 0x01, 0x21, 0xfb, 0xf7, 0xb0, 0xfa, 0x80, 0xbd, - 0x03, 0x21, 0x86, 0x20, 0xfc, 0xf7, 0x3c, 0x00, - 0x84, 0x4e, 0x00, 0x00, 0x0f, 0xfa, 0x80, 0xbd, - 0xd4, 0xe4, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x06, - 0x24, 0x0e, 0x0c, 0x20, 0x0e, 0x49, 0x60, 0x43, - 0x40, 0x18, 0x45, 0x68, 0xa8, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0x00, 0x21, 0x20, 0x1c, 0xfd, 0xf7, - 0xe1, 0xfa, 0x20, 0x1c, 0x07, 0xf0, 0xf2, 0xff, - 0x00, 0x28, 0x08, 0xd0, 0x28, 0x1c, 0x60, 0x30, - 0xc1, 0x79, 0x01, 0x29, 0x03, 0xd9, 0xff, 0x31, - 0x3c, 0x00, 0xc0, 0x4e, 0x00, 0x00, 0xc1, 0x71, - 0xff, 0x31, 0x81, 0x71, 0x01, 0x21, 0x20, 0x1c, - 0x02, 0xf0, 0xc5, 0xfe, 0xb0, 0xbd, 0x60, 0x7b, - 0x01, 0x00, 0x70, 0xb5, 0x00, 0x06, 0x00, 0x0e, - 0x05, 0x1c, 0x4c, 0x23, 0x0a, 0x49, 0x58, 0x43, - 0x44, 0x18, 0x3c, 0x20, 0x00, 0x5d, 0xff, 0x30, - 0x06, 0x06, 0x36, 0x16, 0x28, 0x1c, 0x01, 0xf0, - 0x90, 0xfb, 0x00, 0x21, 0x28, 0x1c, 0x22, 0x68, - 0xfb, 0xf7, 0x3c, 0x00, 0xfc, 0x4e, 0x00, 0x00, - 0x6f, 0xfa, 0x31, 0x1c, 0x00, 0x20, 0x07, 0xf0, - 0xc7, 0xfa, 0x70, 0xbd, 0x58, 0xe3, 0x01, 0x00, - 0x0c, 0x22, 0x0f, 0x4b, 0x42, 0x43, 0xd2, 0x18, - 0x10, 0xb5, 0x54, 0x68, 0x00, 0x29, 0x0d, 0xd0, - 0x02, 0x29, 0x0f, 0xd1, 0x2c, 0x20, 0x00, 0x5d, - 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21, 0x0c, 0x20, - 0xfc, 0xf7, 0xba, 0xf9, 0x20, 0x1c, 0x0b, 0xf0, - 0xbb, 0xfc, 0x10, 0xbd, 0x3c, 0x00, 0x38, 0x4f, - 0x00, 0x00, 0x00, 0x21, 0x02, 0xf0, 0x8d, 0xfe, - 0x10, 0xbd, 0x04, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0xae, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x29, 0x07, 0xd0, - 0x0c, 0x23, 0x05, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x40, 0x68, 0x0b, 0xf0, 0x4a, 0xfc, 0x80, 0xbd, - 0x01, 0x21, 0x02, 0xf0, 0x76, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x3c, 0x00, - 0x74, 0x4f, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x00, 0x29, 0x05, 0xd0, 0x02, 0x29, 0x1a, 0xd1, - 0x20, 0x1c, 0x0b, 0xf0, 0xeb, 0xfc, 0x10, 0xbd, - 0x0d, 0x48, 0x04, 0x70, 0x0d, 0x48, 0x07, 0xf0, - 0x07, 0xf9, 0x0d, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x12, 0x03, 0x11, 0x43, 0x01, 0x80, 0x4c, 0x20, - 0x0a, 0x49, 0x60, 0x43, 0x40, 0x18, 0x40, 0x30, - 0x00, 0x78, 0xfd, 0xf7, 0x5d, 0xfd, 0x20, 0x1c, - 0x3c, 0x00, 0xb0, 0x4f, 0x00, 0x00, 0x0a, 0xf0, - 0xd4, 0xf8, 0x10, 0xbd, 0x03, 0x21, 0x86, 0x20, - 0xfc, 0xf7, 0x73, 0xf9, 0x10, 0xbd, 0x3c, 0x7c, - 0x01, 0x00, 0x05, 0x4e, 0x00, 0x00, 0x32, 0x80, - 0x07, 0x00, 0x58, 0xe3, 0x01, 0x00, 0xff, 0xb5, - 0x05, 0x1c, 0x01, 0x20, 0x83, 0xb0, 0x01, 0x90, - 0x0c, 0x20, 0x5d, 0x4a, 0x68, 0x43, 0x86, 0x18, - 0x01, 0x27, 0x00, 0x29, 0x74, 0x68, 0x0e, 0xd0, - 0x02, 0x29, 0x3c, 0x00, 0xec, 0x4f, 0x00, 0x00, - 0x6a, 0xd1, 0x2c, 0x20, 0x00, 0x5d, 0x00, 0x28, - 0x03, 0xd0, 0x06, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0x53, 0xf9, 0x20, 0x1c, 0x0b, 0xf0, 0x20, 0xfd, - 0x07, 0xb0, 0xf0, 0xbd, 0x52, 0x48, 0x14, 0x38, - 0x45, 0x70, 0xa0, 0x6b, 0x00, 0x28, 0x07, 0xd0, - 0x50, 0x48, 0x07, 0xf0, 0x7f, 0xf8, 0x01, 0x21, - 0x28, 0x1c, 0xfd, 0xf7, 0x25, 0xfa, 0x1c, 0xe0, - 0x4d, 0x48, 0x07, 0xf0, 0x3c, 0x00, 0x28, 0x50, - 0x00, 0x00, 0x77, 0xf8, 0x4a, 0x48, 0x14, 0x38, - 0x05, 0x70, 0x4b, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x52, 0x03, 0x11, 0x43, 0x01, 0x80, 0x40, 0x20, - 0x00, 0x5d, 0xfd, 0xf7, 0x12, 0xfd, 0xb0, 0x68, - 0x00, 0x28, 0x09, 0xd1, 0x28, 0x1c, 0x07, 0xf0, - 0x64, 0xff, 0xb0, 0x60, 0x00, 0x28, 0x03, 0xd1, - 0x09, 0x21, 0x0c, 0x20, 0xfc, 0xf7, 0x23, 0xf9, - 0x05, 0x98, 0x00, 0x28, 0x03, 0xd0, 0x3c, 0x00, - 0x64, 0x50, 0x00, 0x00, 0xe0, 0x6c, 0x01, 0x30, - 0xe0, 0x64, 0x0e, 0xe0, 0x67, 0x20, 0x00, 0x5d, - 0x00, 0x28, 0x07, 0xd1, 0xe0, 0x6c, 0x00, 0x28, - 0x04, 0xd1, 0x39, 0x48, 0x02, 0x38, 0xc0, 0x6a, - 0xa0, 0x64, 0x09, 0xe0, 0x20, 0x6d, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x27, 0x04, 0xe0, 0x28, 0x1c, - 0x07, 0xf0, 0x00, 0xff, 0x00, 0x28, 0xe5, 0xd1, - 0x05, 0x98, 0x20, 0x65, 0x20, 0x1c, 0x20, 0x30, - 0x3c, 0x00, 0xa0, 0x50, 0x00, 0x00, 0x62, 0x6a, - 0x02, 0x90, 0x81, 0x7b, 0x28, 0x1c, 0x07, 0xf0, - 0x78, 0xff, 0x00, 0x2f, 0x19, 0xd0, 0x20, 0x1c, - 0x60, 0x30, 0xc1, 0x79, 0x4a, 0x1c, 0xc2, 0x71, - 0x80, 0x79, 0x81, 0x42, 0x02, 0xd2, 0x01, 0x20, - 0x01, 0xe0, 0x40, 0xe0, 0x00, 0x20, 0x01, 0x90, - 0x00, 0x28, 0x0a, 0xd0, 0x25, 0x48, 0x00, 0x78, - 0x80, 0x07, 0x06, 0xd5, 0x00, 0xf0, 0x0d, 0xfb, - 0x01, 0x1c, 0x3c, 0x00, 0xdc, 0x50, 0x00, 0x00, - 0x20, 0x1c, 0x0b, 0xf0, 0x15, 0xfd, 0x01, 0x90, - 0x01, 0x98, 0x00, 0x28, 0x0f, 0xd0, 0x02, 0x98, - 0x00, 0x7b, 0x02, 0x28, 0x03, 0xd1, 0x20, 0x1c, - 0x04, 0xf0, 0xd0, 0xfe, 0x84, 0xe7, 0x01, 0x28, - 0x00, 0xd0, 0x7e, 0xe7, 0x21, 0x1c, 0x30, 0x1c, - 0x04, 0xf0, 0xe2, 0xfe, 0x7c, 0xe7, 0x25, 0x1c, - 0x60, 0x35, 0xe8, 0x79, 0xff, 0x30, 0xa8, 0x71, - 0x68, 0x7a, 0x06, 0xf0, 0x3c, 0x00, 0x18, 0x51, - 0x00, 0x00, 0x9d, 0xfc, 0x0d, 0xf0, 0x47, 0xfe, - 0x07, 0x1c, 0x05, 0xf0, 0x12, 0xff, 0x3f, 0x18, - 0x02, 0x98, 0x81, 0x7b, 0x20, 0x69, 0x04, 0x30, - 0x00, 0xf0, 0x35, 0xfa, 0x61, 0x6a, 0x05, 0xf0, - 0xea, 0xfe, 0x39, 0x18, 0x6b, 0x7a, 0x30, 0x88, - 0x80, 0x31, 0x09, 0x4a, 0x0d, 0xf0, 0x91, 0xfe, - 0x5d, 0xe7, 0x03, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0xaa, 0xf8, 0x58, 0xe7, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x51, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0xa5, 0x4d, 0x00, 0x00, 0xc9, 0x4d, 0x00, 0x00, - 0x32, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0x8d, 0x4e, 0x00, 0x00, 0xff, 0xb5, 0x81, 0xb0, - 0x1f, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x10, 0x1c, - 0x0a, 0x9e, 0x00, 0xf0, 0xf5, 0xfc, 0x29, 0x1c, - 0x10, 0x31, 0x20, 0x1d, 0x06, 0x22, 0xfb, 0xf7, - 0xb7, 0xf9, 0xa8, 0x8e, 0x20, 0x80, 0xe8, 0x8e, - 0x3c, 0x00, 0x90, 0x51, 0x00, 0x00, 0x60, 0x80, - 0x02, 0x99, 0x20, 0x1c, 0x00, 0xf0, 0x07, 0xf9, - 0xff, 0x34, 0x01, 0x34, 0x66, 0x60, 0x27, 0x60, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x0f, 0x1c, 0x1e, 0x1c, 0x05, 0x1c, 0x14, 0x1c, - 0x10, 0x1c, 0x00, 0xf0, 0xd8, 0xfc, 0xa8, 0x88, - 0x39, 0x1c, 0x20, 0x80, 0x28, 0x89, 0x60, 0x80, - 0x20, 0x1c, 0x00, 0xf0, 0xf0, 0xf8, 0xff, 0x34, - 0x01, 0x34, 0x3c, 0x00, 0xcc, 0x51, 0x00, 0x00, - 0x66, 0x60, 0xf8, 0xbd, 0x70, 0xb5, 0x04, 0x1c, - 0xc0, 0x68, 0x05, 0x68, 0x20, 0x1c, 0x14, 0x30, - 0x06, 0x1c, 0x00, 0xf0, 0x0f, 0xfb, 0x00, 0x28, - 0x16, 0xd0, 0x01, 0x22, 0x02, 0x21, 0x20, 0x69, - 0x05, 0xf0, 0xf8, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0xfb, 0xf7, 0x24, 0xff, 0x00, 0x22, 0x02, 0x21, - 0x20, 0x69, 0x05, 0xf0, 0xef, 0xfa, 0x00, 0x28, - 0x06, 0xd0, 0xfb, 0xf7, 0x3c, 0x00, 0x08, 0x52, - 0x00, 0x00, 0x01, 0xff, 0x00, 0x28, 0x02, 0xd0, - 0x30, 0x1c, 0x0b, 0xf0, 0x7c, 0xfb, 0x68, 0x89, - 0x80, 0x07, 0xc0, 0x0f, 0x03, 0xf0, 0xa7, 0xf8, - 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0xc1, 0x68, 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, - 0xfb, 0xf7, 0xd4, 0xf8, 0x70, 0xbd, 0x94, 0x67, - 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x10, 0x1c, - 0x0d, 0x1c, 0x19, 0x1c, 0xff, 0x22, 0x3c, 0x00, - 0x44, 0x52, 0x00, 0x00, 0x00, 0x27, 0xff, 0x2d, - 0x25, 0xd0, 0x00, 0x29, 0x05, 0xd0, 0x4b, 0x88, - 0x00, 0x2b, 0x02, 0xd0, 0x00, 0xf0, 0x50, 0xfc, - 0x15, 0xe0, 0x00, 0x21, 0x10, 0x4e, 0x4b, 0x00, - 0x9e, 0x19, 0x02, 0x23, 0xf6, 0x5e, 0x86, 0x42, - 0x01, 0xdd, 0x0a, 0x1c, 0x04, 0xe0, 0x01, 0x31, - 0x09, 0x06, 0x09, 0x0e, 0x26, 0x29, 0xf1, 0xd3, - 0x09, 0x4e, 0x50, 0x00, 0x80, 0x19, 0x4e, 0x23, - 0x3c, 0x00, 0x80, 0x52, 0x00, 0x00, 0xc0, 0x5e, - 0x27, 0x2a, 0x07, 0xd2, 0x06, 0x49, 0x20, 0x39, - 0x49, 0x57, 0x47, 0x31, 0x40, 0x1a, 0x20, 0x60, - 0x01, 0x27, 0x02, 0xe0, 0x7e, 0x20, 0xc0, 0x43, - 0x20, 0x60, 0x38, 0x1c, 0xf8, 0xbd, 0xfa, 0x47, - 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x7e, 0x21, - 0x05, 0x1c, 0x00, 0x20, 0xc9, 0x43, 0x00, 0x2c, - 0x0f, 0xd0, 0x10, 0x1c, 0x05, 0xf0, 0x6b, 0xfd, - 0x00, 0x28, 0x3c, 0x00, 0xbc, 0x52, 0x00, 0x00, - 0x02, 0xd0, 0x21, 0x1c, 0xc9, 0x39, 0x01, 0xe0, - 0x21, 0x1c, 0x86, 0x39, 0x02, 0x20, 0xc0, 0x43, - 0xfb, 0xf7, 0xb4, 0xf9, 0x01, 0x1c, 0x01, 0x20, - 0x29, 0x60, 0xb0, 0xbd, 0x98, 0xb5, 0x14, 0x1c, - 0x00, 0x22, 0x00, 0x92, 0x22, 0x1c, 0xfd, 0xf7, - 0x43, 0xfe, 0x98, 0xbd, 0x05, 0x49, 0x80, 0xb5, - 0x08, 0x60, 0x05, 0x49, 0x01, 0x20, 0xc8, 0x61, - 0x01, 0x21, 0x00, 0x20, 0x3c, 0x00, 0xf8, 0x52, - 0x00, 0x00, 0x03, 0xf0, 0x1c, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20, - 0x03, 0xf0, 0x11, 0xfe, 0x06, 0xf0, 0x0d, 0xfb, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x09, 0x69, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x53, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, - 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c, - 0x0d, 0x1c, 0x04, 0x1c, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x2c, 0x07, 0xd1, 0x00, 0xf0, 0x36, 0xfa, - 0x00, 0x28, 0x05, 0xd0, 0x13, 0xf0, 0xca, 0xf9, - 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, - 0x3c, 0x00, 0x70, 0x53, 0x00, 0x00, 0x01, 0x20, - 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20, 0x0a, 0x4c, - 0x04, 0x34, 0x61, 0xc4, 0x10, 0x3c, 0x00, 0xf0, - 0x24, 0xfa, 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0, - 0xc6, 0xf9, 0x01, 0xe0, 0x00, 0xf0, 0xe5, 0xf8, - 0xc0, 0x30, 0xc3, 0x6b, 0x22, 0x1d, 0x07, 0xca, - 0xfb, 0xf7, 0x20, 0xf8, 0x00, 0x20, 0x70, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0d, 0x1c, 0x3c, 0x00, 0xac, 0x53, 0x00, 0x00, - 0x00, 0x21, 0x04, 0x1c, 0x28, 0x1c, 0x05, 0xf0, - 0xe3, 0xf9, 0x23, 0x1c, 0xff, 0x33, 0x21, 0x33, - 0xff, 0x27, 0x00, 0x28, 0x05, 0xd0, 0x22, 0x22, - 0x01, 0x1c, 0x18, 0x1c, 0xfb, 0xf7, 0x96, 0xf8, - 0x00, 0xe0, 0x1f, 0x70, 0x03, 0x21, 0x28, 0x1c, - 0x05, 0xf0, 0xd2, 0xf9, 0x26, 0x1c, 0xff, 0x36, - 0x41, 0x36, 0x00, 0x28, 0x05, 0xd0, 0x03, 0x22, - 0x01, 0x1c, 0xb0, 0x1c, 0x3c, 0x00, 0xe8, 0x53, - 0x00, 0x00, 0xfb, 0xf7, 0x86, 0xf8, 0x00, 0xe0, - 0xb7, 0x70, 0x01, 0x21, 0x28, 0x1c, 0x05, 0xf0, - 0xc2, 0xf9, 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c, - 0x20, 0x1c, 0xff, 0x30, 0x0a, 0x22, 0x46, 0x30, - 0xfb, 0xf7, 0x77, 0xf8, 0x00, 0xe0, 0x77, 0x71, - 0x32, 0x21, 0x28, 0x1c, 0x05, 0xf0, 0xb3, 0xf9, - 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c, 0x20, 0x1c, - 0xff, 0x30, 0x12, 0x22, 0x50, 0x30, 0x3c, 0x00, - 0x24, 0x54, 0x00, 0x00, 0xfb, 0xf7, 0x68, 0xf8, - 0x00, 0xe0, 0xf7, 0x73, 0x06, 0x21, 0x28, 0x1c, - 0x05, 0xf0, 0xa4, 0xf9, 0x00, 0x28, 0x07, 0xd0, - 0x01, 0x1c, 0x20, 0x1c, 0xff, 0x30, 0x04, 0x22, - 0x63, 0x30, 0xfb, 0xf7, 0x59, 0xf8, 0xf8, 0xbd, - 0xff, 0x34, 0x61, 0x34, 0xa7, 0x70, 0xfa, 0xe7, - 0x08, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0x07, 0x48, 0x01, 0x68, 0x08, 0x1c, - 0x3c, 0x00, 0x60, 0x54, 0x00, 0x00, 0x05, 0xd1, - 0x03, 0x21, 0x90, 0x20, 0xfb, 0xf7, 0x1d, 0xff, - 0x00, 0x20, 0x80, 0xbd, 0x01, 0xf0, 0xd7, 0xfb, - 0x80, 0xbd, 0x1c, 0x67, 0x01, 0x00, 0x20, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xe7, 0xff, - 0x80, 0xbd, 0xf0, 0xb5, 0x00, 0x24, 0x84, 0x46, - 0x00, 0x20, 0x0b, 0xe0, 0x87, 0x40, 0x17, 0x40, - 0x07, 0xd0, 0x14, 0x23, 0x0b, 0x4d, 0x43, 0x43, - 0x5b, 0x19, 0x3c, 0x00, 0x9c, 0x54, 0x00, 0x00, - 0x1b, 0x7c, 0x65, 0x46, 0x2b, 0x55, 0x01, 0x34, - 0x01, 0x30, 0x01, 0x27, 0x3b, 0x1c, 0x0e, 0x28, - 0x00, 0xd3, 0x00, 0x23, 0x0e, 0x88, 0x3d, 0x1c, - 0xa6, 0x42, 0x00, 0xdc, 0x00, 0x25, 0x2b, 0x40, - 0xe7, 0xd1, 0x0c, 0x80, 0xf0, 0xbd, 0x00, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x78, 0xb5, 0x04, 0x1c, - 0x01, 0x20, 0x20, 0x70, 0x08, 0x20, 0x00, 0xab, - 0x0d, 0x1c, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0x54, - 0x00, 0x00, 0x16, 0x1c, 0xa0, 0x1c, 0x69, 0x46, - 0xff, 0xf7, 0xd1, 0xff, 0x00, 0xab, 0x00, 0x22, - 0xd2, 0x43, 0x19, 0x88, 0x82, 0x40, 0x61, 0x70, - 0x32, 0x20, 0x28, 0x70, 0x10, 0x20, 0x18, 0x80, - 0x32, 0x40, 0xa8, 0x1c, 0x69, 0x46, 0xff, 0xf7, - 0xc2, 0xff, 0x00, 0xab, 0x18, 0x88, 0x68, 0x70, - 0x78, 0xbd, 0x80, 0xb5, 0x02, 0xf0, 0x35, 0xff, - 0x00, 0x21, 0x00, 0x28, 0x00, 0xd0, 0x3c, 0x00, - 0x14, 0x55, 0x00, 0x00, 0x01, 0x69, 0x08, 0x1c, - 0x80, 0xbd, 0x00, 0x00, 0x05, 0x49, 0x00, 0x28, - 0x01, 0xd0, 0xc8, 0x68, 0x00, 0xe0, 0x08, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00, - 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0, - 0x04, 0x30, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x02, 0x48, 0x00, 0x69, - 0x3c, 0x00, 0x50, 0x55, 0x00, 0x00, 0x00, 0x28, - 0xff, 0xd1, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x69, - 0x00, 0x28, 0x03, 0xd1, 0x04, 0x21, 0x90, 0x20, - 0xfb, 0xf7, 0x9b, 0xfe, 0x20, 0x69, 0x10, 0xbd, - 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x00, 0xf0, 0x40, 0xf9, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x20, 0x10, 0xbd, 0x20, 0x1c, - 0x00, 0xf0, 0x3c, 0x00, 0x8c, 0x55, 0x00, 0x00, - 0x57, 0xf9, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, - 0x10, 0xbd, 0x02, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x0f, 0x4e, 0x04, 0x1c, 0x30, 0x68, - 0x0d, 0x1c, 0x00, 0x28, 0x07, 0xd0, 0x21, 0x1c, - 0x04, 0x30, 0x05, 0xf0, 0xc1, 0xfb, 0x00, 0x28, - 0x01, 0xd0, 0x30, 0x68, 0x0b, 0xe0, 0x09, 0x4a, - 0x10, 0x68, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c, - 0x14, 0x1c, 0x04, 0x30, 0x3c, 0x00, 0xc8, 0x55, - 0x00, 0x00, 0x05, 0xf0, 0xb4, 0xfb, 0x00, 0x28, - 0x02, 0xd0, 0x20, 0x68, 0x9c, 0x30, 0x00, 0xe0, - 0x03, 0x48, 0x40, 0x5d, 0x70, 0xbd, 0x20, 0x67, - 0x01, 0x00, 0x1c, 0x67, 0x01, 0x00, 0xcc, 0x47, - 0x01, 0x00, 0x04, 0x49, 0x00, 0x20, 0x09, 0x69, - 0x00, 0x29, 0x02, 0xd0, 0xff, 0x31, 0x01, 0x31, - 0x88, 0x69, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x01, 0x48, 0x00, 0x7a, 0x3c, 0x00, - 0x04, 0x56, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c, - 0x00, 0x20, 0x1f, 0x1c, 0x14, 0x1c, 0x00, 0x29, - 0x02, 0x90, 0x19, 0xd0, 0x01, 0x29, 0x26, 0xd0, - 0x02, 0x29, 0x47, 0xd1, 0x26, 0x48, 0x00, 0x78, - 0x05, 0xf0, 0xa0, 0xfb, 0xa0, 0x72, 0x0a, 0xf0, - 0x4f, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0xa0, 0x7a, - 0x05, 0xf0, 0xaa, 0xfb, 0x00, 0x28, 0x04, 0xd0, - 0x3c, 0x00, 0x40, 0x56, 0x00, 0x00, 0x20, 0x48, - 0x00, 0x78, 0x05, 0xf0, 0x92, 0xfb, 0xa0, 0x72, - 0x00, 0x20, 0x20, 0x72, 0x2f, 0xe0, 0x1d, 0x4d, - 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfb, 0xf7, - 0x52, 0xfe, 0x00, 0x97, 0x2a, 0x68, 0x23, 0x1c, - 0x18, 0x32, 0x11, 0x1c, 0x30, 0x1c, 0xfc, 0xf7, - 0xde, 0xfb, 0x26, 0xe0, 0x30, 0x1c, 0x0c, 0xf0, - 0xca, 0xfb, 0x05, 0x1c, 0x02, 0xd0, 0xa8, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x7c, 0x56, 0x00, 0x00, - 0x08, 0xd1, 0x13, 0x48, 0x00, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0xfb, 0xf7, 0x3b, 0xfe, 0x10, 0x48, - 0x00, 0x68, 0x18, 0x30, 0x02, 0x1c, 0x0e, 0x48, - 0x00, 0x97, 0x01, 0x68, 0x23, 0x1c, 0x18, 0x31, - 0x30, 0x1c, 0xfc, 0xf7, 0xc3, 0xfb, 0x00, 0x2d, - 0x0a, 0xd0, 0x40, 0x35, 0x28, 0x88, 0x80, 0x06, - 0x06, 0xd4, 0x00, 0x20, 0x20, 0x60, 0x03, 0xe0, - 0x01, 0x21, 0x90, 0x20, 0x3c, 0x00, 0xb8, 0x56, - 0x00, 0x00, 0xfb, 0xf7, 0xf4, 0xfd, 0x02, 0x98, - 0xfe, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x90, 0x57, - 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x20, 0x02, 0xf0, - 0x4a, 0xfe, 0x18, 0x23, 0x05, 0x4a, 0x58, 0x43, - 0x80, 0x18, 0x40, 0x69, 0x01, 0x21, 0x00, 0x28, - 0x00, 0xd0, 0x41, 0x78, 0x08, 0x1c, 0x80, 0xbd, - 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0x56, 0x00, 0x00, 0x02, 0x49, 0x08, 0x69, - 0x00, 0x28, 0x00, 0xd1, 0xc8, 0x68, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x03, 0xd1, 0x05, 0x21, 0x90, 0x20, 0xfb, 0xf7, - 0xbd, 0xfd, 0xe0, 0x68, 0x10, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x57, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x00, 0x2a, - 0x03, 0xd0, 0x11, 0x49, 0x12, 0x4f, 0x0e, 0x78, - 0x01, 0xe0, 0x11, 0x4f, 0x0c, 0x26, 0x08, 0x2e, - 0x01, 0xd2, 0x34, 0x1c, 0x00, 0xe0, 0x08, 0x24, - 0x01, 0x21, 0x01, 0x70, 0x44, 0x70, 0x39, 0x1c, - 0x22, 0x1c, 0x02, 0x30, 0xfa, 0xf7, 0xcb, 0xfe, - 0x32, 0x1b, 0x00, 0x2a, 0x07, 0xdd, 0x32, 0x20, - 0x28, 0x70, 0x3c, 0x00, 0x6c, 0x57, 0x00, 0x00, - 0x39, 0x19, 0xa8, 0x1c, 0x6a, 0x70, 0xfa, 0xf7, - 0xc1, 0xfe, 0xf8, 0xbd, 0xff, 0x20, 0x28, 0x70, - 0x00, 0x20, 0x68, 0x70, 0xf9, 0xe7, 0x00, 0x00, - 0xa4, 0x69, 0x01, 0x00, 0xb0, 0x69, 0x01, 0x00, - 0x90, 0x57, 0x01, 0x00, 0x01, 0x49, 0x48, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, - 0x03, 0x49, 0x80, 0xb5, 0x08, 0x60, 0x01, 0x21, - 0x01, 0x20, 0x03, 0xf0, 0x3c, 0x00, 0xa8, 0x57, - 0x00, 0x00, 0xc5, 0xfb, 0x80, 0xbd, 0x1c, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x01, 0x20, - 0x03, 0xf0, 0xbd, 0xfb, 0x06, 0xf0, 0xb9, 0xf8, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x00, 0x00, 0x1c, 0x67, 0x01, 0x00, 0x03, 0x49, - 0x01, 0x20, 0xc9, 0x68, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68, 0x3c, 0x00, - 0xe4, 0x57, 0x00, 0x00, 0x00, 0x28, 0x01, 0xd0, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x01, 0x20, 0x03, 0xf0, 0x9b, 0xfb, 0x80, 0xbd, - 0x05, 0x4a, 0x80, 0xb5, 0x12, 0x69, 0x00, 0x21, - 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d, 0x05, 0xf0, - 0x91, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, - 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a, 0x80, 0xb5, - 0x3c, 0x00, 0x20, 0x58, 0x00, 0x00, 0x12, 0x69, - 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0, 0x11, 0x1c, - 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0, 0x8b, 0xfa, - 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, 0x10, 0x67, - 0x01, 0x00, 0x05, 0x4a, 0x80, 0xb5, 0xd2, 0x68, - 0x00, 0x21, 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d, - 0x05, 0xf0, 0x73, 0xfa, 0x01, 0x1c, 0x08, 0x1c, - 0x80, 0xbd, 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a, - 0x80, 0xb5, 0x3c, 0x00, 0x5c, 0x58, 0x00, 0x00, - 0xd2, 0x68, 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0, - 0x11, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0, - 0x6d, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, - 0x10, 0x67, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c, - 0x1f, 0x1c, 0x87, 0xb0, 0x10, 0x9e, 0x00, 0x24, - 0x02, 0xf0, 0x72, 0xfd, 0x18, 0x23, 0x13, 0x49, - 0x58, 0x43, 0x08, 0x58, 0x00, 0x28, 0x19, 0xd0, - 0x04, 0x1c, 0x33, 0x1c, 0x3c, 0x00, 0x98, 0x58, - 0x00, 0x00, 0x3a, 0x1c, 0x28, 0x1c, 0x09, 0x99, - 0xfa, 0xf7, 0x9f, 0xfd, 0x04, 0x1c, 0x14, 0xd0, - 0x18, 0x20, 0x00, 0xab, 0x18, 0x80, 0xaa, 0x68, - 0x01, 0xa8, 0x69, 0x46, 0xff, 0xf7, 0xe7, 0xfd, - 0x6a, 0x46, 0x01, 0xa9, 0x00, 0x20, 0x07, 0xf0, - 0x44, 0xfe, 0x00, 0x28, 0x05, 0xd1, 0x0a, 0x21, - 0x00, 0xe0, 0x0f, 0x21, 0x90, 0x20, 0xfb, 0xf7, - 0xea, 0xfc, 0x20, 0x1c, 0x0b, 0xb0, 0x3c, 0x00, - 0xd4, 0x58, 0x00, 0x00, 0xf0, 0xbd, 0x00, 0x00, - 0x94, 0x67, 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24, - 0x02, 0xf0, 0x44, 0xfd, 0x18, 0x23, 0x05, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x80, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0xfa, 0xf7, 0x71, 0xfd, 0x01, 0x24, - 0x20, 0x1c, 0x10, 0xbd, 0x94, 0x67, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x4b, 0x00, 0xf0, 0x4e, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, - 0x3c, 0x00, 0x10, 0x59, 0x00, 0x00, 0x80, 0xb5, - 0x02, 0x4b, 0x00, 0xf0, 0x46, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0e, 0x1c, 0x15, 0x1c, 0x00, 0x28, 0x1c, 0x49, - 0x10, 0xd0, 0x48, 0x68, 0x1c, 0x4a, 0x28, 0x80, - 0x00, 0x20, 0x07, 0xe0, 0x0b, 0x18, 0x1c, 0x7a, - 0x14, 0x23, 0x63, 0x43, 0x9b, 0x18, 0x1b, 0x7c, - 0x33, 0x54, 0x01, 0x30, 0x2b, 0x88, 0x83, 0x42, - 0xf4, 0xdc, 0x3c, 0x00, 0x4c, 0x59, 0x00, 0x00, - 0x24, 0xe0, 0x00, 0x20, 0x0f, 0x1c, 0x00, 0x24, - 0x08, 0x60, 0x0f, 0xe0, 0x30, 0x5d, 0x05, 0xf0, - 0x07, 0xfa, 0x0e, 0x28, 0x01, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x39, 0x19, 0x08, 0x72, 0x01, 0x22, - 0x39, 0x68, 0x82, 0x40, 0x11, 0x43, 0x08, 0x1c, - 0x38, 0x60, 0x01, 0x34, 0x28, 0x88, 0xa0, 0x42, - 0xec, 0xdc, 0x28, 0x88, 0x78, 0x60, 0xff, 0xf7, - 0xb7, 0xfe, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x59, - 0x00, 0x00, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29, - 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0, - 0x52, 0xfb, 0x01, 0x20, 0xe3, 0xe7, 0x2c, 0x7d, - 0x01, 0x00, 0x74, 0x40, 0x01, 0x00, 0x10, 0xb5, - 0x1c, 0x1c, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x78, - 0x0e, 0x28, 0x05, 0xd2, 0x14, 0x23, 0x0c, 0x4a, - 0x58, 0x43, 0x80, 0x18, 0x00, 0x7c, 0x00, 0xe0, - 0x00, 0x20, 0x08, 0x70, 0x0e, 0xe0, 0x3c, 0x00, - 0xc4, 0x59, 0x00, 0x00, 0x08, 0x78, 0x05, 0xf0, - 0xd1, 0xf9, 0x20, 0x70, 0xff, 0xf7, 0x92, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29, - 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0, - 0x2d, 0xfb, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x80, 0xb5, 0x27, 0x20, - 0xc0, 0x43, 0x09, 0xf0, 0x31, 0xfc, 0x80, 0xbd, - 0x80, 0xb5, 0x27, 0x20, 0xc0, 0x43, 0x09, 0xf0, - 0x3c, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x39, 0xfc, - 0x80, 0xbd, 0x80, 0xb5, 0x28, 0x20, 0x09, 0xf0, - 0x42, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x28, 0x20, 0x09, 0xf0, 0x4a, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x01, 0x28, 0x28, 0xd1, - 0x01, 0x29, 0x01, 0xd0, 0xfb, 0xf7, 0x6b, 0xfc, - 0xff, 0xf7, 0xe9, 0xfd, 0x02, 0x28, 0x1a, 0xd1, - 0x07, 0xf0, 0x13, 0xfc, 0x12, 0x4c, 0x21, 0x69, - 0x88, 0x42, 0x3c, 0x00, 0x3c, 0x5a, 0x00, 0x00, - 0x15, 0xd0, 0x07, 0xf0, 0x0d, 0xfc, 0x20, 0x61, - 0x20, 0x68, 0x7d, 0x24, 0xe4, 0x00, 0x44, 0x43, - 0x0d, 0xf0, 0xae, 0xf9, 0x05, 0x1c, 0x07, 0xf0, - 0x0b, 0xfc, 0x28, 0x1a, 0x84, 0x42, 0x00, 0xd9, - 0x24, 0x1a, 0x01, 0x22, 0x21, 0x1c, 0x0a, 0x20, - 0x0d, 0xf0, 0xb2, 0xfd, 0xb0, 0xbd, 0x00, 0x21, - 0x09, 0x20, 0x0c, 0xf0, 0x75, 0xfc, 0xb0, 0xbd, - 0x07, 0x21, 0x0a, 0x20, 0x3c, 0x00, 0x78, 0x5a, - 0x00, 0x00, 0xfb, 0xf7, 0x14, 0xfc, 0xb0, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x7d, 0x20, - 0x02, 0x49, 0x00, 0x01, 0x08, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x10, 0xb5, - 0x81, 0x6d, 0x04, 0x1c, 0xff, 0x30, 0x46, 0x30, - 0x0c, 0xf0, 0xd1, 0xfc, 0x20, 0x1c, 0xff, 0x30, - 0x50, 0x30, 0xa1, 0x6d, 0x0c, 0xf0, 0xcb, 0xfc, - 0x10, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00, - 0xb4, 0x5a, 0x00, 0x00, 0x0d, 0x1c, 0x02, 0xf0, - 0x59, 0xfc, 0x20, 0x1c, 0x02, 0xf0, 0x56, 0xfc, - 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x18, 0x22, 0x29, 0x1c, 0xfa, 0xf7, 0x70, 0xfd, - 0xb0, 0xbd, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xbc, 0xfb, - 0x20, 0x1c, 0x09, 0xf0, 0xc7, 0xfb, 0x10, 0xbd, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xd0, 0xfb, - 0x3c, 0x00, 0xf0, 0x5a, 0x00, 0x00, 0x20, 0x1c, - 0x09, 0xf0, 0xdb, 0xfb, 0x10, 0xbd, 0x70, 0xb5, - 0x0c, 0x78, 0x06, 0x1c, 0x48, 0x88, 0x4d, 0x78, - 0xe2, 0x00, 0x80, 0x1a, 0xe9, 0x00, 0x40, 0x1a, - 0x01, 0x1c, 0x41, 0x43, 0x12, 0x31, 0x24, 0x20, - 0xfa, 0xf7, 0x91, 0xfd, 0x21, 0x1c, 0x61, 0x43, - 0xc9, 0x00, 0x40, 0x18, 0x29, 0x1c, 0x69, 0x43, - 0xc9, 0x00, 0x42, 0x18, 0x0c, 0x49, 0x88, 0x79, - 0x0c, 0x4b, 0x3c, 0x00, 0x2c, 0x5b, 0x00, 0x00, - 0x53, 0x43, 0x0c, 0x4a, 0x13, 0x60, 0x53, 0x7b, - 0x34, 0x02, 0x14, 0x60, 0x52, 0x7b, 0x88, 0x71, - 0x01, 0x33, 0x58, 0x10, 0x08, 0x4b, 0x80, 0x1a, - 0x01, 0x21, 0x49, 0x02, 0x58, 0x43, 0x00, 0x28, - 0x00, 0xda, 0x49, 0x42, 0x08, 0x18, 0x80, 0x12, - 0x21, 0x38, 0x70, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0xec, 0x04, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, - 0x03, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x5b, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x21, - 0x04, 0x30, 0xfa, 0xf7, 0x70, 0xfc, 0xff, 0x20, - 0x21, 0x30, 0xff, 0x21, 0x01, 0x55, 0x20, 0x1c, - 0xff, 0x30, 0x41, 0x30, 0x81, 0x70, 0x41, 0x71, - 0xc1, 0x73, 0xff, 0x20, 0x63, 0x30, 0x01, 0x55, - 0x00, 0x20, 0x20, 0x61, 0x60, 0x61, 0xff, 0x34, - 0x01, 0x34, 0xa0, 0x60, 0xe0, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00, - 0xa4, 0x5b, 0x00, 0x00, 0x08, 0x1c, 0x58, 0x60, - 0x9a, 0x60, 0x1c, 0x1c, 0x1e, 0x60, 0x15, 0x1c, - 0x9b, 0x8a, 0xe2, 0x8a, 0x31, 0x1c, 0x02, 0xf0, - 0xa1, 0xfc, 0x28, 0x1a, 0xe0, 0x60, 0x70, 0xbd, - 0x70, 0xb5, 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c, - 0x1e, 0x1c, 0x00, 0x25, 0xeb, 0x43, 0x22, 0x1c, - 0x18, 0x32, 0x0b, 0xf0, 0xf7, 0xfb, 0x22, 0x1c, - 0xff, 0x32, 0x50, 0x32, 0x11, 0x1c, 0x0a, 0x39, - 0x3c, 0x00, 0xe0, 0x5b, 0x00, 0x00, 0x01, 0x23, - 0x20, 0x1c, 0x00, 0xf0, 0xc6, 0xf8, 0x0c, 0x28, - 0x10, 0xd0, 0x01, 0x25, 0x20, 0x1c, 0x0b, 0xf0, - 0xac, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0x19, 0xf8, - 0x20, 0x1c, 0x00, 0xf0, 0x0a, 0xf8, 0x20, 0x1c, - 0x00, 0xf0, 0x29, 0xf8, 0x31, 0x1c, 0x20, 0x1c, - 0x0b, 0xf0, 0x17, 0xfa, 0x28, 0x1c, 0x70, 0xbd, - 0x00, 0x00, 0xff, 0x21, 0x1d, 0x31, 0x09, 0x58, - 0x80, 0x30, 0x3c, 0x00, 0x1c, 0x5c, 0x00, 0x00, - 0x89, 0x07, 0x00, 0x29, 0x01, 0xda, 0x01, 0x21, - 0x00, 0xe0, 0x00, 0x21, 0xc1, 0x62, 0x70, 0x47, - 0x01, 0x1c, 0x80, 0x31, 0x00, 0x22, 0x0a, 0x63, - 0x07, 0x4a, 0x12, 0x68, 0x00, 0x2a, 0x09, 0xd0, - 0x42, 0x88, 0x92, 0x06, 0x06, 0xd5, 0xff, 0x30, - 0x01, 0x30, 0xc0, 0x69, 0x40, 0x07, 0x01, 0xd4, - 0x01, 0x20, 0x08, 0x63, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x5c, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x4a, 0x88, - 0x00, 0x20, 0x52, 0x05, 0x05, 0xd5, 0xff, 0x31, - 0x01, 0x31, 0xc9, 0x69, 0x49, 0x07, 0x00, 0xd4, - 0x01, 0x20, 0x06, 0xf0, 0xec, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x98, 0x68, - 0x17, 0x1c, 0x0e, 0x1c, 0x1c, 0x1c, 0x00, 0x28, - 0x02, 0xd1, 0x20, 0x1c, 0x0c, 0xf0, 0x31, 0xf8, - 0xab, 0x69, 0x39, 0x1c, 0x30, 0x1c, 0x3c, 0x00, - 0x94, 0x5c, 0x00, 0x00, 0xa2, 0x68, 0x0b, 0xf0, - 0x95, 0xfb, 0xf8, 0xbd, 0xf8, 0xb5, 0x16, 0x1c, - 0x0d, 0x1c, 0x1f, 0x1c, 0x00, 0x24, 0x02, 0xf0, - 0x61, 0xfb, 0x18, 0x23, 0x06, 0x49, 0x58, 0x43, - 0x40, 0x18, 0x43, 0x68, 0x00, 0x2b, 0x05, 0xd0, - 0x3a, 0x1c, 0x31, 0x1c, 0x28, 0x1c, 0xfa, 0xf7, - 0x8e, 0xfb, 0x01, 0x24, 0x20, 0x1c, 0xf8, 0xbd, - 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x07, 0xf0, - 0x3c, 0x00, 0xd0, 0x5c, 0x00, 0x00, 0xc5, 0xfa, - 0x09, 0x49, 0x08, 0x61, 0x08, 0x68, 0x00, 0x28, - 0x02, 0xd1, 0x7d, 0x20, 0x00, 0x01, 0x08, 0x60, - 0x08, 0x68, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43, - 0x00, 0x23, 0x01, 0x22, 0x0a, 0x20, 0x0d, 0xf0, - 0x4e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x0a, 0x20, - 0x0d, 0xf0, 0x97, 0xfc, 0x80, 0xbd, 0xf8, 0xb5, - 0x0e, 0x1c, 0x3c, 0x00, 0x0c, 0x5d, 0x00, 0x00, - 0x51, 0x68, 0x14, 0x1c, 0x12, 0x68, 0xa5, 0x68, - 0x0b, 0x1c, 0x75, 0x1b, 0x57, 0x19, 0x97, 0x42, - 0x00, 0xd2, 0x01, 0x31, 0x42, 0x68, 0x00, 0x25, - 0x8a, 0x42, 0x02, 0xdd, 0x01, 0x25, 0x62, 0x60, - 0x05, 0xe0, 0x9a, 0x42, 0x03, 0xd1, 0x01, 0x68, - 0xb9, 0x42, 0x00, 0xd9, 0x01, 0x25, 0x00, 0x2d, - 0x09, 0xd0, 0x01, 0x68, 0x21, 0x60, 0xa6, 0x60, - 0xa3, 0x8a, 0xe2, 0x8a, 0x3c, 0x00, 0x48, 0x5d, - 0x00, 0x00, 0x60, 0x68, 0x02, 0xf0, 0xd7, 0xfb, - 0x30, 0x1a, 0xe0, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0x07, 0xfb, - 0x18, 0x23, 0x03, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x18, 0x21, 0xfa, 0xf7, 0x98, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0xfe, 0xb5, - 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c, 0x1e, 0x1c, - 0x0c, 0x25, 0x01, 0x22, 0x00, 0x92, 0x3c, 0x00, - 0x84, 0x5d, 0x00, 0x00, 0xa2, 0x69, 0x02, 0xab, - 0xfd, 0xf7, 0xf0, 0xf8, 0x00, 0x28, 0x45, 0xd0, - 0x02, 0x98, 0x27, 0x21, 0x02, 0x1c, 0x0a, 0x40, - 0x01, 0xd1, 0x08, 0x43, 0x02, 0x90, 0x21, 0x49, - 0xa0, 0x69, 0x08, 0x40, 0x06, 0xd0, 0x02, 0x98, - 0x01, 0x40, 0x03, 0xd1, 0x49, 0x21, 0xc9, 0x00, - 0x08, 0x43, 0x02, 0x90, 0xa0, 0x6d, 0x02, 0x99, - 0x88, 0x42, 0x30, 0xd0, 0x00, 0x2e, 0x2d, 0xd0, - 0x3c, 0x00, 0xc0, 0x5d, 0x00, 0x00, 0x40, 0x21, - 0x20, 0x1c, 0x58, 0x30, 0xfa, 0xf7, 0x69, 0xfb, - 0x02, 0x98, 0x00, 0x25, 0x00, 0x26, 0x37, 0x1c, - 0xa0, 0x65, 0x19, 0xe0, 0xc0, 0x07, 0x11, 0xd5, - 0xf0, 0x19, 0x00, 0x19, 0x70, 0x30, 0x05, 0x71, - 0x28, 0x1c, 0x04, 0xf0, 0xd4, 0xff, 0x00, 0x28, - 0x04, 0xd0, 0xa0, 0x19, 0x80, 0x30, 0x05, 0x72, - 0x01, 0x36, 0x03, 0xe0, 0xe0, 0x19, 0x60, 0x30, - 0x05, 0x70, 0x3c, 0x00, 0xfc, 0x5d, 0x00, 0x00, - 0x01, 0x37, 0x01, 0x35, 0x2d, 0x06, 0x02, 0x98, - 0x2d, 0x0e, 0x40, 0x08, 0x02, 0x90, 0x02, 0x98, - 0x00, 0x28, 0xe2, 0xd1, 0x84, 0x20, 0x06, 0x51, - 0xf0, 0x19, 0x20, 0x67, 0xe7, 0x65, 0x00, 0x25, - 0x00, 0xe0, 0x0b, 0x25, 0x28, 0x1c, 0xfe, 0xbd, - 0xd8, 0x3a, 0x00, 0x00, 0x38, 0xb5, 0x05, 0x1c, - 0x08, 0x1c, 0x11, 0x1c, 0x00, 0x24, 0xe2, 0x43, - 0x6b, 0x46, 0xff, 0xf7, 0x3c, 0x00, 0x38, 0x5e, - 0x00, 0x00, 0x4f, 0xfa, 0x00, 0x28, 0x05, 0xd0, - 0xa8, 0x69, 0x00, 0x99, 0x01, 0x40, 0x81, 0x42, - 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0x00, 0x00, 0x7c, 0xb5, 0x05, 0x6a, 0x86, 0x69, - 0x04, 0x1c, 0xc0, 0x68, 0xfb, 0xf7, 0xb7, 0xfb, - 0xe1, 0x69, 0xfb, 0xf7, 0xda, 0xfa, 0x20, 0x1c, - 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89, - 0x89, 0x18, 0xc1, 0x83, 0x06, 0x49, 0x3c, 0x00, - 0x74, 0x5e, 0x00, 0x00, 0x01, 0x94, 0x00, 0x91, - 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88, 0x01, 0x68, - 0xe0, 0x68, 0xc0, 0x68, 0x00, 0xf0, 0xf2, 0xf9, - 0x7c, 0xbd, 0x00, 0x00, 0x91, 0x5e, 0x00, 0x00, - 0xb0, 0xb5, 0xd1, 0x68, 0x55, 0x69, 0xc8, 0x68, - 0x14, 0x1c, 0x14, 0x4b, 0x0c, 0xe0, 0x02, 0x68, - 0x9a, 0x42, 0x07, 0xd1, 0xc2, 0x68, 0xca, 0x60, - 0x00, 0x21, 0xc1, 0x60, 0x01, 0x60, 0xfb, 0xf7, - 0x3c, 0x00, 0xb0, 0x5e, 0x00, 0x00, 0x73, 0xfb, - 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68, 0x00, 0x28, - 0xf0, 0xd1, 0xe0, 0x68, 0xc0, 0x68, 0xe8, 0x60, - 0xe0, 0x68, 0xc5, 0x60, 0x20, 0x1c, 0x40, 0x30, - 0xc1, 0x8b, 0x2a, 0x89, 0x89, 0x18, 0xc1, 0x83, - 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, - 0xba, 0xff, 0xb0, 0xbd, 0x04, 0x48, 0x04, 0xf0, - 0x4e, 0xf9, 0x00, 0x6a, 0x07, 0xf0, 0x77, 0xfa, - 0xb0, 0xbd, 0x3c, 0x00, 0xec, 0x5e, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xa0, 0x6a, 0x01, 0x00, - 0xf1, 0xb5, 0x82, 0xb0, 0x02, 0x98, 0x06, 0x69, - 0x01, 0x1c, 0x08, 0x36, 0x60, 0x31, 0x45, 0x68, - 0x01, 0x91, 0x82, 0xe0, 0x10, 0x21, 0x00, 0x20, - 0x2f, 0x69, 0xfb, 0xf7, 0x63, 0xfb, 0x68, 0x61, - 0x01, 0x89, 0x08, 0x39, 0x09, 0x04, 0x09, 0x0c, - 0x01, 0x81, 0x68, 0x69, 0x00, 0x68, 0x40, 0x18, - 0x08, 0x21, 0xfb, 0xf7, 0x3c, 0x00, 0x28, 0x5f, - 0x00, 0x00, 0x57, 0xfb, 0xe8, 0x61, 0x68, 0x69, - 0x71, 0x88, 0x00, 0x68, 0x20, 0x22, 0x01, 0x80, - 0x71, 0x68, 0x41, 0x60, 0x01, 0x99, 0x49, 0x7b, - 0x89, 0x01, 0x11, 0x43, 0xc1, 0x70, 0x00, 0x21, - 0x81, 0x70, 0x28, 0x20, 0xfb, 0xf7, 0x75, 0xfc, - 0x39, 0x88, 0x04, 0x1c, 0xc1, 0x81, 0xa8, 0x6b, - 0x00, 0x28, 0x03, 0xd1, 0x01, 0x20, 0x80, 0x02, - 0x08, 0x43, 0xe0, 0x81, 0x06, 0x22, 0x3c, 0x00, - 0x64, 0x5f, 0x00, 0x00, 0x39, 0x1d, 0x20, 0x1c, - 0x10, 0x30, 0xfa, 0xf7, 0xc5, 0xfa, 0x39, 0x1c, - 0x0a, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x16, 0x30, - 0x00, 0x90, 0xfa, 0xf7, 0xbd, 0xfa, 0x39, 0x1c, - 0x10, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x1c, 0x30, - 0xfa, 0xf7, 0xb6, 0xfa, 0xe1, 0x89, 0x25, 0x4a, - 0x5c, 0x20, 0x11, 0x40, 0x01, 0x22, 0x92, 0x03, - 0x11, 0x43, 0x40, 0x5b, 0xe1, 0x81, 0x0f, 0x21, - 0x3c, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x08, 0x40, - 0x60, 0x84, 0x20, 0x1c, 0x20, 0x30, 0x16, 0x21, - 0x81, 0x71, 0x00, 0x21, 0x21, 0x70, 0xe9, 0x6b, - 0x00, 0x29, 0x07, 0xd0, 0x29, 0x69, 0x09, 0x8b, - 0x09, 0x07, 0x09, 0x0f, 0x21, 0x70, 0xa1, 0x84, - 0x18, 0x21, 0x81, 0x71, 0x06, 0x22, 0x60, 0x1c, - 0x00, 0x99, 0xfa, 0xf7, 0x94, 0xfa, 0x70, 0x68, - 0x00, 0x0e, 0xe0, 0x71, 0x70, 0x68, 0x00, 0x02, - 0x00, 0x0e, 0x3c, 0x00, 0xdc, 0x5f, 0x00, 0x00, - 0x20, 0x72, 0x70, 0x68, 0x00, 0x04, 0x00, 0x0e, - 0x60, 0x72, 0x70, 0x68, 0xa0, 0x72, 0x70, 0x88, - 0x00, 0x0a, 0xe0, 0x72, 0x70, 0x88, 0x20, 0x73, - 0x70, 0x88, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c, - 0x70, 0x80, 0x02, 0xd1, 0x70, 0x68, 0x01, 0x30, - 0x70, 0x60, 0xac, 0x61, 0x02, 0x98, 0x28, 0x62, - 0x2d, 0x68, 0x00, 0x2d, 0x00, 0xd0, 0x79, 0xe7, - 0x02, 0x98, 0x04, 0x49, 0x3c, 0x00, 0x18, 0x60, - 0x00, 0x00, 0x42, 0x68, 0x04, 0x48, 0x04, 0xf0, - 0x74, 0xf8, 0xfe, 0xbd, 0x00, 0x00, 0x8f, 0xc7, - 0xff, 0xff, 0x3d, 0xda, 0x00, 0x00, 0xa0, 0x6a, - 0x01, 0x00, 0xb0, 0xb5, 0x07, 0x4d, 0x28, 0x78, - 0x03, 0x28, 0x08, 0xd0, 0x00, 0x24, 0x2c, 0x70, - 0x69, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x01, 0x20, - 0xfa, 0xf7, 0xc8, 0xf9, 0x6c, 0x60, 0xb0, 0xbd, - 0x00, 0x00, 0x9c, 0x73, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0x60, 0x00, 0x00, 0xf8, 0xb5, 0x2b, 0x4b, - 0xd8, 0x6a, 0x00, 0x28, 0x50, 0xd0, 0x2a, 0x48, - 0x01, 0x1c, 0xff, 0x31, 0x01, 0x31, 0xca, 0x68, - 0x01, 0x32, 0xca, 0x60, 0x1a, 0x6c, 0x00, 0x2a, - 0x02, 0xd1, 0x4a, 0x69, 0x01, 0x32, 0x4a, 0x61, - 0x0a, 0x69, 0x01, 0x32, 0x0a, 0x61, 0xda, 0x68, - 0x00, 0x2a, 0x04, 0xd0, 0x1f, 0x4a, 0x01, 0x32, - 0x12, 0x78, 0x00, 0x2a, 0x02, 0xd1, 0x8a, 0x69, - 0x3c, 0x00, 0x90, 0x60, 0x00, 0x00, 0x01, 0x32, - 0x8a, 0x61, 0x00, 0x25, 0x07, 0x1d, 0x18, 0x26, - 0x1a, 0x4a, 0x6e, 0x43, 0x74, 0x32, 0x90, 0x59, - 0x00, 0x28, 0x29, 0xd0, 0xb4, 0x18, 0x60, 0x69, - 0x00, 0x28, 0x25, 0xd1, 0x60, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0x01, 0x68, 0x00, 0x29, 0x05, 0xd1, - 0xa1, 0x68, 0x00, 0x29, 0x1c, 0xd0, 0x09, 0x68, - 0x00, 0x29, 0x19, 0xd0, 0x00, 0x28, 0x05, 0xd0, - 0xe1, 0x68, 0x3c, 0x00, 0xcc, 0x60, 0x00, 0x00, - 0x01, 0x31, 0xe1, 0x60, 0x00, 0x68, 0x81, 0x42, - 0x11, 0xd3, 0xa0, 0x68, 0x00, 0x28, 0x06, 0xd0, - 0x21, 0x69, 0x00, 0x68, 0x08, 0x18, 0x0c, 0xf0, - 0xa3, 0xfd, 0x00, 0x28, 0x07, 0xd0, 0x06, 0x4a, - 0x01, 0x20, 0x60, 0x61, 0x74, 0x32, 0x91, 0x59, - 0x38, 0x1c, 0xfa, 0xf7, 0x70, 0xf9, 0x01, 0x35, - 0x02, 0x2d, 0xcb, 0xdb, 0xf8, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x61, - 0x00, 0x00, 0xf4, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0f, 0x1c, 0x00, 0x25, 0x04, 0x1c, 0x00, 0x28, - 0x25, 0xd0, 0x20, 0x1c, 0x04, 0xf0, 0x03, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0xff, 0xf7, 0xff, 0xf8, - 0x04, 0x1c, 0xff, 0xf7, 0x50, 0xfb, 0x06, 0x1c, - 0x07, 0xe0, 0x20, 0x1c, 0xff, 0xf7, 0x91, 0xfb, - 0x06, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0x6f, 0xfb, - 0x04, 0x1c, 0x00, 0x2e, 0x06, 0xd0, 0x3c, 0x00, - 0x44, 0x61, 0x00, 0x00, 0xff, 0xf7, 0x4c, 0xfb, - 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25, 0x01, 0x20, - 0x07, 0xe0, 0x00, 0x2c, 0x06, 0xd0, 0xff, 0xf7, - 0xef, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25, - 0x00, 0x20, 0x38, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0xb0, 0xb5, 0xc5, 0x68, 0x04, 0x1c, 0x0d, 0xf0, - 0x8f, 0xfc, 0x20, 0x7e, 0xc1, 0x07, 0x08, 0xd5, - 0xe1, 0x68, 0xa9, 0x42, 0x05, 0xd9, 0x22, 0x69, - 0x3c, 0x00, 0x80, 0x61, 0x00, 0x00, 0x91, 0x42, - 0x02, 0xd3, 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82, - 0x81, 0x07, 0x08, 0xd5, 0xe1, 0x68, 0xa9, 0x42, - 0x05, 0xd2, 0x22, 0x69, 0x91, 0x42, 0x02, 0xd8, - 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82, 0x40, 0x07, - 0x06, 0xd5, 0xe0, 0x68, 0x21, 0x69, 0x88, 0x42, - 0x02, 0xd1, 0xe0, 0x8a, 0x01, 0x30, 0xe0, 0x82, - 0xe0, 0x8a, 0xa1, 0x8a, 0x88, 0x42, 0x0d, 0xd3, - 0x60, 0x7e, 0x3c, 0x00, 0xbc, 0x61, 0x00, 0x00, - 0x02, 0x28, 0x0b, 0xd0, 0x20, 0x68, 0xe1, 0x68, - 0x04, 0x22, 0x07, 0xf0, 0x65, 0xfb, 0x60, 0x7e, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x68, 0x08, 0xf0, - 0xab, 0xff, 0xb0, 0xbd, 0x00, 0x20, 0xe0, 0x82, - 0xb0, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, - 0x0c, 0x23, 0x20, 0x49, 0x58, 0x43, 0x45, 0x18, - 0x00, 0x20, 0xa8, 0x60, 0x30, 0x1c, 0x06, 0xf0, - 0x91, 0xfe, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x61, - 0x00, 0x00, 0x68, 0x60, 0x33, 0xd0, 0x01, 0x20, - 0xa8, 0x70, 0x2c, 0x20, 0x00, 0x5d, 0x02, 0x28, - 0x03, 0xd1, 0x20, 0x1c, 0x03, 0xf0, 0x45, 0xfe, - 0x10, 0xe0, 0x61, 0x6b, 0x00, 0x29, 0x0a, 0xd0, - 0x01, 0x28, 0x04, 0xd1, 0x21, 0x1c, 0x28, 0x1c, - 0x03, 0xf0, 0x55, 0xfe, 0x06, 0xe0, 0x20, 0x1c, - 0x0a, 0xf0, 0x0d, 0xfc, 0x02, 0xe0, 0x20, 0x1c, - 0x0a, 0xf0, 0x3d, 0xfb, 0x0d, 0x48, 0x3c, 0x00, - 0x34, 0x62, 0x00, 0x00, 0x14, 0x38, 0x41, 0x68, - 0x00, 0x29, 0x10, 0xd0, 0x20, 0x1c, 0x40, 0x30, - 0x02, 0x8b, 0x12, 0x07, 0x92, 0x0f, 0x01, 0x2a, - 0x09, 0xd0, 0x80, 0x8b, 0x32, 0x02, 0x00, 0x09, - 0x00, 0x04, 0x10, 0x43, 0x81, 0x22, 0x02, 0x43, - 0x0c, 0x20, 0x0d, 0xf0, 0xb7, 0xf9, 0x0c, 0xf0, - 0xa5, 0xfd, 0x60, 0x64, 0x70, 0xbd, 0x00, 0x00, - 0x60, 0x7b, 0x01, 0x00, 0xff, 0xb5, 0x08, 0x1c, - 0x3c, 0x00, 0x70, 0x62, 0x00, 0x00, 0x11, 0x1c, - 0x0c, 0x32, 0x20, 0x24, 0x14, 0x43, 0x0c, 0x4a, - 0x83, 0xb0, 0x0c, 0xae, 0x52, 0x68, 0x60, 0xce, - 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63, - 0x0d, 0x23, 0x40, 0x27, 0xbb, 0x52, 0x94, 0x61, - 0x14, 0x84, 0x01, 0x22, 0x02, 0x92, 0x32, 0x1c, - 0x00, 0x90, 0x01, 0x91, 0x23, 0x1c, 0x29, 0x1c, - 0x03, 0x98, 0x00, 0xf0, 0x66, 0xf9, 0x07, 0xb0, - 0xf0, 0xbd, 0x3c, 0x00, 0xac, 0x62, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x00, 0x27, 0x11, 0x4e, 0x1d, 0xe0, 0xe0, 0x68, - 0x00, 0x28, 0x70, 0x68, 0x0c, 0xd1, 0x80, 0x88, - 0x00, 0x07, 0x0d, 0xd1, 0x01, 0x21, 0x0c, 0x48, - 0xfb, 0xf7, 0x84, 0xf9, 0xc4, 0x60, 0xe8, 0x60, - 0x70, 0x68, 0x81, 0x88, 0x01, 0x31, 0x02, 0xe0, - 0x81, 0x88, 0x22, 0x89, 0x89, 0x18, 0x81, 0x80, - 0xe0, 0x68, 0x39, 0x1c, 0x3c, 0x00, 0xe8, 0x62, - 0x00, 0x00, 0x00, 0x28, 0x01, 0xd1, 0x71, 0x68, - 0xc9, 0x6d, 0x25, 0x1c, 0x61, 0x60, 0x04, 0x1c, - 0x00, 0x2c, 0xdf, 0xd1, 0xf8, 0xbd, 0xa0, 0x7e, - 0x01, 0x00, 0x06, 0x49, 0x10, 0xb5, 0x49, 0x68, - 0x00, 0x23, 0x05, 0xe0, 0x8a, 0x88, 0x04, 0x89, - 0x12, 0x19, 0x8a, 0x80, 0x43, 0x60, 0xc0, 0x68, - 0x00, 0x28, 0xf7, 0xd1, 0x10, 0xbd, 0xa0, 0x7e, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x49, 0x3c, 0x00, - 0x24, 0x63, 0x00, 0x00, 0x00, 0x24, 0x49, 0x68, - 0x0a, 0xe0, 0x8a, 0x88, 0x03, 0x89, 0xd2, 0x18, - 0x8a, 0x80, 0xc3, 0x68, 0x22, 0x1c, 0x00, 0x2b, - 0x00, 0xd1, 0xca, 0x6d, 0x42, 0x60, 0x18, 0x1c, - 0x00, 0x28, 0xf2, 0xd1, 0x10, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x01, 0x1c, 0x13, 0x48, - 0x10, 0xb5, 0x40, 0x68, 0x00, 0x23, 0x09, 0xe0, - 0x82, 0x88, 0x0c, 0x89, 0x12, 0x19, 0x82, 0x80, - 0x3c, 0x00, 0x60, 0x63, 0x00, 0x00, 0x4b, 0x60, - 0xca, 0x68, 0x00, 0x2a, 0x00, 0xd1, 0x41, 0x66, - 0xc9, 0x68, 0x00, 0x29, 0xf3, 0xd1, 0x01, 0x1c, - 0x68, 0x31, 0x81, 0x64, 0xc3, 0x64, 0x43, 0x65, - 0x82, 0x88, 0x08, 0x23, 0x11, 0x1c, 0x08, 0x31, - 0x89, 0x07, 0x89, 0x0f, 0x59, 0x1a, 0x50, 0x23, - 0x19, 0x52, 0x51, 0x18, 0x81, 0x80, 0x01, 0x1c, - 0x40, 0x6e, 0x48, 0x31, 0xc1, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x63, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x49, - 0x00, 0x24, 0x4b, 0x68, 0x06, 0xe0, 0xc2, 0x68, - 0x21, 0x1c, 0x00, 0x2a, 0x00, 0xd1, 0xd9, 0x6d, - 0x41, 0x60, 0x10, 0x1c, 0x00, 0x28, 0xf6, 0xd1, - 0x10, 0xbd, 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xfe, 0xb5, 0x06, 0x1c, - 0x0c, 0x48, 0x0c, 0x1c, 0x40, 0x68, 0x80, 0x21, - 0x81, 0x70, 0x00, 0x21, 0x3c, 0x00, 0xd8, 0x63, - 0x00, 0x00, 0xc1, 0x70, 0x15, 0x1c, 0x40, 0x22, - 0x81, 0x63, 0x11, 0x52, 0x81, 0x61, 0x01, 0x84, - 0x00, 0x20, 0x04, 0x22, 0x02, 0x92, 0x00, 0x90, - 0x01, 0x91, 0x29, 0x1c, 0x20, 0x1c, 0x1a, 0x1c, - 0x33, 0x1c, 0x00, 0xf0, 0xbc, 0xf8, 0xfe, 0xbd, - 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00, 0x70, 0xb5, - 0x06, 0x1c, 0x17, 0x48, 0x80, 0x78, 0x02, 0x21, - 0x16, 0x4a, 0x88, 0x43, 0x90, 0x70, 0x3c, 0x00, - 0x14, 0x64, 0x00, 0x00, 0x10, 0x1c, 0x80, 0x78, - 0x08, 0x43, 0x11, 0x1c, 0x88, 0x70, 0x13, 0x48, - 0x00, 0x24, 0xc4, 0x70, 0x70, 0x20, 0xfb, 0xf7, - 0xd9, 0xf9, 0x11, 0x4d, 0x70, 0x21, 0x68, 0x60, - 0xfa, 0xf7, 0x34, 0xf8, 0x30, 0x07, 0x00, 0x0f, - 0x69, 0x68, 0x90, 0x30, 0xc8, 0x65, 0x0d, 0x48, - 0x68, 0x22, 0x08, 0x80, 0x08, 0x1c, 0x28, 0x30, - 0x89, 0x60, 0x48, 0x61, 0x08, 0x20, 0x08, 0x82, - 0x3c, 0x00, 0x50, 0x64, 0x00, 0x00, 0x08, 0x1c, - 0x38, 0x30, 0x48, 0x63, 0x20, 0x38, 0x48, 0x64, - 0x5a, 0x20, 0x50, 0x54, 0x06, 0x48, 0x08, 0x31, - 0x41, 0x64, 0x44, 0x65, 0x70, 0xbd, 0x00, 0x00, - 0x07, 0x00, 0x58, 0x00, 0x07, 0x00, 0xa0, 0x7e, - 0x01, 0x00, 0xde, 0xc0, 0x00, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x0a, 0x4b, 0x10, 0xb5, 0x58, 0x6d, - 0x0a, 0x49, 0x00, 0x22, 0x49, 0x68, 0x00, 0x24, - 0x4a, 0x62, 0x3c, 0x00, 0x8c, 0x64, 0x00, 0x00, - 0x5c, 0x65, 0x4b, 0x6e, 0x00, 0x2b, 0x01, 0xd0, - 0xda, 0x60, 0x4a, 0x66, 0x8b, 0x6d, 0x00, 0x2b, - 0x03, 0xd0, 0x0a, 0x6e, 0x00, 0x21, 0xf9, 0xf7, - 0x9c, 0xff, 0x10, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5, - 0x08, 0x88, 0x01, 0x30, 0x08, 0x80, 0x01, 0x20, - 0x07, 0x49, 0x80, 0x02, 0x08, 0x60, 0x07, 0x4c, - 0xa2, 0x6d, 0x00, 0x2a, 0x3c, 0x00, 0xc8, 0x64, - 0x00, 0x00, 0x05, 0xd0, 0x05, 0x21, 0xd1, 0x20, - 0x0d, 0xf0, 0x6f, 0xf9, 0x01, 0x20, 0xa0, 0x65, - 0x10, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5, - 0x83, 0xb0, 0x0c, 0xae, 0x86, 0x46, 0x8c, 0x46, - 0x0e, 0x4a, 0x43, 0xce, 0x0f, 0xad, 0x0f, 0x1c, - 0x52, 0x68, 0x0c, 0x37, 0x30, 0xcd, 0x97, 0x70, - 0xd3, 0x70, 0x96, 0x63, 0x0d, 0x26, 0x3c, 0x00, - 0x04, 0x65, 0x00, 0x00, 0x40, 0x27, 0xbe, 0x52, - 0x05, 0x9e, 0x96, 0x61, 0x13, 0x84, 0x00, 0x22, - 0x02, 0x92, 0x2a, 0x1c, 0x00, 0x90, 0x01, 0x91, - 0x21, 0x1c, 0x60, 0x46, 0x73, 0x46, 0x00, 0xf0, - 0x29, 0xf8, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xff, 0xb5, 0x10, 0x1c, - 0x1a, 0x1c, 0x0c, 0x1c, 0x19, 0x1c, 0x60, 0x23, - 0xff, 0x32, 0x13, 0x43, 0x0c, 0x4a, 0x83, 0xb0, - 0x3c, 0x00, 0x40, 0x65, 0x00, 0x00, 0x0c, 0xae, - 0x52, 0x68, 0x60, 0xce, 0x93, 0x70, 0x00, 0x23, - 0xd3, 0x70, 0x93, 0x63, 0x40, 0x27, 0xbb, 0x52, - 0x93, 0x61, 0x13, 0x84, 0x03, 0x22, 0x02, 0x92, - 0x01, 0x91, 0x29, 0x1c, 0x32, 0x1c, 0x00, 0x90, - 0x20, 0x1c, 0x03, 0x9b, 0x00, 0xf0, 0x05, 0xf8, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xa0, 0x7e, - 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x11, 0x48, - 0x1c, 0x1c, 0x3c, 0x00, 0x7c, 0x65, 0x00, 0x00, - 0x08, 0x9b, 0x07, 0x9f, 0x40, 0x68, 0xde, 0x00, - 0x81, 0x65, 0x02, 0x66, 0x00, 0x21, 0x81, 0x80, - 0x0d, 0x48, 0x81, 0x59, 0x20, 0x1c, 0xf9, 0xf7, - 0x22, 0xff, 0x0b, 0x48, 0x30, 0x18, 0x41, 0x68, - 0x28, 0x1c, 0xf9, 0xf7, 0x1c, 0xff, 0x07, 0x49, - 0x06, 0x98, 0x49, 0x68, 0x00, 0x2c, 0x88, 0x62, - 0x0f, 0x86, 0x00, 0xd1, 0x2c, 0x1c, 0x05, 0x48, - 0x4c, 0x62, 0x45, 0x65, 0x3c, 0x00, 0xb8, 0x65, - 0x00, 0x00, 0x01, 0x21, 0x01, 0x65, 0x01, 0x64, - 0xf8, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0x90, 0x52, - 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5, - 0x83, 0xb0, 0x0d, 0xae, 0x60, 0xce, 0x0c, 0x9f, - 0x08, 0x1c, 0x11, 0x1c, 0xd2, 0x19, 0xff, 0x32, - 0x40, 0x24, 0x14, 0x43, 0x0b, 0x4a, 0x52, 0x68, - 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63, - 0x40, 0x23, 0x9f, 0x52, 0x94, 0x61, 0x3c, 0x00, - 0xf4, 0x65, 0x00, 0x00, 0x14, 0x84, 0x02, 0x22, - 0x02, 0x92, 0x32, 0x1c, 0x00, 0x90, 0x01, 0x91, - 0x23, 0x1c, 0x29, 0x1c, 0x03, 0x98, 0xff, 0xf7, - 0xb5, 0xff, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x4c, 0x21, 0x0d, 0x4a, - 0x41, 0x43, 0x10, 0xb5, 0x8c, 0x18, 0x0c, 0x49, - 0x09, 0x78, 0x88, 0x42, 0x07, 0xd1, 0x05, 0xf0, - 0xc7, 0xfd, 0x0a, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x3c, 0x00, 0x30, 0x66, 0x00, 0x00, 0x12, 0x03, - 0x91, 0x43, 0x01, 0x80, 0x20, 0x1c, 0x30, 0x30, - 0x0c, 0x23, 0xc1, 0x56, 0x40, 0x7b, 0x81, 0x42, - 0x02, 0xdd, 0x20, 0x8d, 0x0c, 0xf0, 0xe5, 0xfb, - 0x10, 0xbd, 0x58, 0xe3, 0x01, 0x00, 0x3c, 0x7c, - 0x01, 0x00, 0x32, 0x80, 0x07, 0x00, 0x01, 0x1c, - 0x60, 0x31, 0x80, 0xb5, 0xca, 0x79, 0x8b, 0x79, - 0x9a, 0x42, 0x07, 0xd9, 0x48, 0x7a, 0x0c, 0x23, - 0x07, 0x49, 0x3c, 0x00, 0x6c, 0x66, 0x00, 0x00, - 0x58, 0x43, 0x08, 0x5a, 0x0c, 0xf0, 0xd0, 0xfb, - 0x80, 0xbd, 0x20, 0x30, 0x00, 0x7b, 0x01, 0x28, - 0xfa, 0xd1, 0x48, 0x7a, 0x05, 0xf0, 0x40, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x1c, 0x21, 0xf9, 0xf7, - 0x03, 0xff, 0x03, 0x48, 0xa0, 0x80, 0xe0, 0x80, - 0x20, 0x81, 0x60, 0x81, 0xa0, 0x81, 0x10, 0xbd, - 0xff, 0xff, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x66, - 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c, 0x00, 0x20, - 0x83, 0xb0, 0x0d, 0x1c, 0x06, 0x2c, 0x02, 0x90, - 0x38, 0xd2, 0x1f, 0x4a, 0xff, 0x26, 0xc1, 0x00, - 0x89, 0x18, 0x89, 0x78, 0xa1, 0x42, 0x03, 0xd1, - 0xc0, 0x00, 0x80, 0x18, 0x46, 0x78, 0x04, 0xe0, - 0x01, 0x30, 0x00, 0x06, 0x00, 0x16, 0x06, 0x28, - 0xf1, 0xdb, 0xff, 0x2e, 0x24, 0xd0, 0x01, 0x93, - 0x20, 0x1c, 0x0d, 0xf0, 0xe8, 0xf9, 0x3c, 0x00, - 0xe4, 0x66, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd0, - 0x24, 0x21, 0x28, 0x1c, 0x01, 0xab, 0x02, 0xaa, - 0xfa, 0xf7, 0x30, 0xfe, 0x10, 0x49, 0xf0, 0x00, - 0x30, 0x39, 0x0f, 0x58, 0x31, 0x06, 0x09, 0x16, - 0x28, 0x1c, 0x05, 0x9a, 0x01, 0x9b, 0xf9, 0xf7, - 0x6e, 0xfe, 0x06, 0x1c, 0x10, 0xd1, 0x20, 0x1c, - 0x0d, 0xf0, 0xd0, 0xf9, 0x00, 0x28, 0x0b, 0xd0, - 0x28, 0x1c, 0x69, 0x69, 0xfa, 0xf7, 0x12, 0xfe, - 0x3c, 0x00, 0x20, 0x67, 0x00, 0x00, 0x02, 0x98, - 0x68, 0x61, 0x04, 0xe0, 0x06, 0x2c, 0x01, 0xd3, - 0x07, 0x26, 0x00, 0xe0, 0x08, 0x26, 0x30, 0x1c, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xcc, 0x5a, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x09, 0xf0, - 0x86, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, - 0x09, 0xf0, 0xb5, 0xf8, 0x10, 0xbd, 0xfe, 0xb5, - 0x13, 0x4d, 0x04, 0x1c, 0xae, 0x69, 0x00, 0x2e, - 0x1c, 0xd0, 0x3c, 0x00, 0x5c, 0x67, 0x00, 0x00, - 0x10, 0x4f, 0x30, 0x37, 0x78, 0x68, 0x60, 0x43, - 0x01, 0x1c, 0x28, 0x88, 0xf9, 0xf7, 0xd2, 0xff, - 0x39, 0x68, 0x61, 0x43, 0x41, 0x18, 0x01, 0xa8, - 0x32, 0x1c, 0xf9, 0xf7, 0x37, 0xfe, 0x02, 0x98, - 0x29, 0x6a, 0x40, 0x18, 0x28, 0x62, 0x0b, 0xd4, - 0xe9, 0x69, 0x88, 0x42, 0x08, 0xd9, 0xa9, 0x69, - 0x40, 0x1a, 0x28, 0x62, 0x01, 0x98, 0x01, 0x30, - 0x01, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x67, - 0x00, 0x00, 0x02, 0x90, 0x01, 0x90, 0x01, 0x98, - 0xfe, 0xbd, 0xc8, 0x74, 0x01, 0x00, 0xf8, 0xb5, - 0x00, 0x28, 0x28, 0xd0, 0x00, 0x24, 0x14, 0x4d, - 0x00, 0xe0, 0x01, 0x34, 0x61, 0x00, 0x09, 0x19, - 0x49, 0x19, 0x49, 0x78, 0x00, 0x29, 0xf8, 0xd1, - 0x63, 0x00, 0x1b, 0x19, 0x03, 0x33, 0x07, 0x22, - 0x69, 0x46, 0x03, 0xf0, 0xd4, 0xfb, 0x00, 0x2c, - 0x0f, 0xd0, 0x00, 0x20, 0x00, 0x99, 0x3c, 0x00, - 0xd4, 0x67, 0x00, 0x00, 0x0a, 0xe0, 0x42, 0x00, - 0x12, 0x18, 0xae, 0x5c, 0x53, 0x18, 0x52, 0x19, - 0x5e, 0x71, 0x56, 0x78, 0x01, 0x30, 0x9e, 0x71, - 0x92, 0x78, 0xda, 0x71, 0xa0, 0x42, 0xf2, 0xdb, - 0x00, 0x98, 0x03, 0x22, 0x02, 0x30, 0x03, 0x49, - 0xf9, 0xf7, 0x7e, 0xfe, 0xf8, 0xbd, 0x00, 0x00, - 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x08, 0x1c, 0xfa, 0xf7, - 0x3c, 0x00, 0x10, 0x68, 0x00, 0x00, 0x9d, 0xff, - 0x04, 0x1c, 0x28, 0x1c, 0xfa, 0xf7, 0xd9, 0xfe, - 0x21, 0x1c, 0xfa, 0xf7, 0xfc, 0xfd, 0x20, 0x1c, - 0xb0, 0xbd, 0xf3, 0xb5, 0x44, 0x48, 0x0c, 0x1c, - 0x00, 0x78, 0x81, 0xb0, 0x01, 0x28, 0x72, 0xd1, - 0xfa, 0xf7, 0x82, 0xf8, 0x41, 0x4d, 0xe8, 0x6a, - 0x41, 0x49, 0x08, 0x60, 0xe8, 0x6b, 0x48, 0x60, - 0x40, 0x48, 0xfa, 0xf7, 0xa6, 0xf9, 0xe8, 0x6a, - 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x68, 0x00, 0x00, - 0xfc, 0xda, 0x22, 0x1c, 0x0f, 0x20, 0x01, 0x99, - 0x0a, 0xf0, 0xa4, 0xf8, 0x38, 0x4d, 0x02, 0x27, - 0x2f, 0x63, 0x38, 0x4a, 0x64, 0x26, 0x00, 0x20, - 0xaa, 0x21, 0x08, 0x32, 0x13, 0x18, 0x01, 0x30, - 0x00, 0x04, 0x00, 0x0c, 0x64, 0x28, 0x19, 0x74, - 0xf8, 0xd3, 0x16, 0x81, 0x00, 0x20, 0x50, 0x60, - 0x10, 0x1c, 0x10, 0x30, 0x10, 0x60, 0x00, 0x25, - 0x17, 0x1c, 0xd2, 0x60, 0x3c, 0x00, 0x88, 0x68, - 0x00, 0x00, 0x08, 0xe0, 0x28, 0x1c, 0xf9, 0xf7, - 0xa2, 0xff, 0x41, 0x31, 0x78, 0x19, 0x01, 0x35, - 0x2d, 0x04, 0x2d, 0x0c, 0x01, 0x74, 0xb5, 0x42, - 0xf4, 0xd3, 0x26, 0x4d, 0x6f, 0x63, 0x01, 0x20, - 0x28, 0x63, 0x24, 0x4d, 0xe8, 0x6a, 0x00, 0x28, - 0xfb, 0xda, 0x0b, 0x22, 0x3b, 0x1c, 0x24, 0x4e, - 0x03, 0xe0, 0x01, 0x32, 0x64, 0x2a, 0x00, 0xd1, - 0x00, 0x22, 0x10, 0x1c, 0x0c, 0x21, 0x3c, 0x00, - 0xc4, 0x68, 0x00, 0x00, 0x01, 0x39, 0x75, 0x5c, - 0x1f, 0x18, 0x3f, 0x7c, 0xbd, 0x42, 0xf3, 0xd1, - 0x01, 0x38, 0x00, 0xd5, 0x63, 0x20, 0x00, 0x29, - 0xf4, 0xd1, 0x18, 0x4e, 0x50, 0x1c, 0xf1, 0x6b, - 0x1a, 0x4a, 0x10, 0x1c, 0x01, 0x38, 0xfd, 0xd1, - 0xf0, 0x6b, 0x88, 0x42, 0x01, 0xd0, 0x01, 0x1c, - 0xf7, 0xe7, 0x02, 0x27, 0x37, 0x63, 0x16, 0x4d, - 0x90, 0x21, 0x28, 0x1c, 0xf9, 0xf7, 0xce, 0xfd, - 0x3c, 0x00, 0x00, 0x69, 0x00, 0x00, 0x28, 0x1c, - 0x28, 0x30, 0x28, 0x60, 0x28, 0x1c, 0x10, 0x30, - 0x2f, 0x81, 0xe8, 0x60, 0x28, 0x1c, 0x20, 0x30, - 0x28, 0x61, 0x04, 0x21, 0x00, 0xe0, 0x0c, 0xe0, - 0x29, 0x83, 0xe8, 0x61, 0xed, 0x62, 0x75, 0x63, - 0x01, 0x20, 0x30, 0x63, 0x22, 0x1c, 0x89, 0x20, - 0x01, 0x99, 0x0a, 0xf0, 0x38, 0xf8, 0x00, 0x20, - 0x28, 0x63, 0xfe, 0xbd, 0x00, 0x00, 0x08, 0x57, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x69, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x10, 0x8e, 0x01, 0x00, - 0x74, 0xff, 0x01, 0x00, 0x09, 0x57, 0x01, 0x00, - 0x20, 0x4e, 0x00, 0x00, 0xe4, 0xfe, 0x01, 0x00, - 0x80, 0xb5, 0x13, 0x28, 0x1e, 0xd0, 0xf0, 0x28, - 0x16, 0xd1, 0x09, 0xf0, 0xb5, 0xf9, 0x00, 0x28, - 0x13, 0xd1, 0x0d, 0xf0, 0xbf, 0xfa, 0x11, 0xf0, - 0x0d, 0xfc, 0x00, 0x22, 0x04, 0x21, 0xc4, 0x20, - 0x0c, 0xf0, 0x1c, 0xff, 0x3c, 0x00, 0x78, 0x69, - 0x00, 0x00, 0x09, 0x48, 0x00, 0x21, 0x00, 0x78, - 0x05, 0xf0, 0x3f, 0xfd, 0x05, 0xf0, 0x93, 0xf8, - 0x07, 0x49, 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x01, 0x1c, 0x01, 0x20, 0xfa, 0xf7, 0x87, 0xfc, - 0x80, 0xbd, 0x00, 0xf0, 0x32, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x6a, 0x57, 0x01, 0x00, 0x3c, 0xd9, - 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0xf0, 0xff, 0xf9, - 0x0b, 0x49, 0x02, 0x24, 0x48, 0x60, 0x3c, 0x00, - 0xb4, 0x69, 0x00, 0x00, 0x0a, 0x48, 0x04, 0x61, - 0x01, 0x20, 0x77, 0x21, 0x09, 0x03, 0x08, 0x61, - 0x08, 0x4d, 0x68, 0x68, 0x80, 0x07, 0x02, 0xd4, - 0x68, 0x68, 0x20, 0x43, 0x68, 0x60, 0x09, 0xf0, - 0xc7, 0xf9, 0x68, 0x68, 0xa0, 0x43, 0x68, 0x60, - 0x00, 0x20, 0xb0, 0xbd, 0xe0, 0x60, 0x01, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x00, 0x01, 0x07, 0x00, - 0x80, 0xb5, 0x01, 0x23, 0x03, 0x22, 0x00, 0x21, - 0x3c, 0x00, 0xf0, 0x69, 0x00, 0x00, 0x02, 0x20, - 0x3c, 0xf0, 0xf1, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0xfa, 0xf7, 0x81, 0xfc, 0x80, 0xbd, 0x1c, 0xb5, - 0xfc, 0xf7, 0xf5, 0xfa, 0xfa, 0xf7, 0x19, 0xfe, - 0x01, 0xf0, 0x03, 0xf9, 0x00, 0x24, 0x21, 0x1c, - 0x68, 0x46, 0x01, 0xf0, 0xe2, 0xfb, 0x00, 0xab, - 0x18, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x02, 0x28, - 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1, 0x0c, 0xf0, - 0xb2, 0xfc, 0x3c, 0x00, 0x2c, 0x6a, 0x00, 0x00, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x16, 0x06, 0x2c, - 0xec, 0xdb, 0xfa, 0xf7, 0x09, 0xf9, 0xfa, 0xf7, - 0xe7, 0xfc, 0xfa, 0xf7, 0x33, 0xfa, 0xfa, 0xf7, - 0x6d, 0xfa, 0xfb, 0xf7, 0xdf, 0xff, 0x05, 0xf0, - 0x4d, 0xfb, 0x06, 0xf0, 0x81, 0xfc, 0x0b, 0xf0, - 0x7d, 0xf9, 0x07, 0xf0, 0x29, 0xfc, 0x11, 0x48, - 0x10, 0x21, 0x01, 0x60, 0x09, 0x01, 0x01, 0x60, - 0xc9, 0x02, 0x01, 0x60, 0x3c, 0x00, 0x68, 0x6a, - 0x00, 0x00, 0x89, 0x00, 0x01, 0x60, 0x20, 0x21, - 0x01, 0x60, 0x04, 0x21, 0x01, 0x60, 0x08, 0x21, - 0x01, 0x60, 0x40, 0x21, 0x01, 0x60, 0x80, 0x21, - 0x01, 0x60, 0x89, 0x00, 0x01, 0x60, 0x49, 0x00, - 0x01, 0x60, 0x49, 0x00, 0x01, 0x60, 0x49, 0x00, - 0x01, 0x60, 0xc9, 0x03, 0x01, 0x60, 0x89, 0x0b, - 0x01, 0x60, 0xf9, 0xf7, 0x41, 0xff, 0x1c, 0xbd, - 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0xa4, 0x6a, 0x00, 0x00, 0x80, 0xb5, 0x3b, 0xf0, - 0x4f, 0xf8, 0x3b, 0xf0, 0x7d, 0xf9, 0xfa, 0xf7, - 0x4b, 0xf9, 0x80, 0xbd, 0xf8, 0xb5, 0x00, 0x25, - 0x00, 0x24, 0x00, 0x22, 0x00, 0x28, 0x71, 0xd0, - 0x43, 0x4f, 0xb9, 0x68, 0x0b, 0x1a, 0xbb, 0x60, - 0xf8, 0x68, 0x39, 0x1c, 0x01, 0x30, 0xf8, 0x60, - 0x89, 0x6a, 0x00, 0x2b, 0x1e, 0xdc, 0x02, 0x24, - 0x00, 0x29, 0x06, 0xda, 0xfb, 0x69, 0x98, 0x42, - 0x3c, 0x00, 0xe0, 0x6a, 0x00, 0x00, 0x06, 0xdd, - 0x3b, 0x69, 0x98, 0x42, 0x09, 0xdd, 0x07, 0xe0, - 0xbb, 0x69, 0x98, 0x42, 0x01, 0xdc, 0x01, 0x24, - 0x03, 0xe0, 0x7b, 0x69, 0x98, 0x42, 0x00, 0xdd, - 0x03, 0x24, 0x78, 0x6a, 0x00, 0x28, 0x08, 0xd0, - 0x00, 0x20, 0x78, 0x62, 0x03, 0x2c, 0x01, 0xd1, - 0x02, 0x24, 0x02, 0xe0, 0x02, 0x2c, 0x00, 0xd1, - 0x01, 0x24, 0x2e, 0x48, 0x01, 0x2c, 0x00, 0x79, - 0x18, 0xd1, 0x3c, 0x00, 0x1c, 0x6b, 0x00, 0x00, - 0xbb, 0x78, 0x99, 0x42, 0x15, 0xda, 0x3b, 0x78, - 0x7b, 0x70, 0x39, 0x70, 0x01, 0x31, 0xb9, 0x62, - 0x01, 0xd5, 0x01, 0x31, 0xb9, 0x62, 0xb9, 0x6a, - 0x01, 0x25, 0x99, 0x42, 0x03, 0xd1, 0x04, 0x28, - 0x04, 0xd2, 0x01, 0x30, 0x00, 0xe0, 0x00, 0x20, - 0x38, 0x71, 0x01, 0x22, 0x00, 0x29, 0x33, 0xda, - 0x27, 0xe0, 0x03, 0x2c, 0x35, 0xd1, 0x00, 0x26, - 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00, 0x58, 0x6b, - 0x00, 0x00, 0x1e, 0x49, 0x81, 0x40, 0x38, 0x6a, - 0x08, 0x18, 0x0c, 0xf0, 0x5c, 0xf8, 0x00, 0x28, - 0x2c, 0xd0, 0x1b, 0x48, 0x00, 0x78, 0x40, 0x07, - 0x05, 0xd5, 0xf8, 0x68, 0x39, 0x69, 0x88, 0x42, - 0x01, 0xdb, 0x03, 0x23, 0xfe, 0x56, 0xb8, 0x6a, - 0xb0, 0x42, 0x12, 0xdd, 0x01, 0x21, 0x79, 0x62, - 0x39, 0x78, 0x01, 0x25, 0x79, 0x70, 0x38, 0x70, - 0x01, 0x38, 0xb8, 0x62, 0x88, 0x42, 0x3c, 0x00, - 0x94, 0x6b, 0x00, 0x00, 0x01, 0xd0, 0x00, 0x21, - 0x39, 0x71, 0x00, 0x28, 0x0c, 0xda, 0x07, 0x20, - 0x38, 0x71, 0x00, 0xe0, 0x12, 0xe0, 0x07, 0xe0, - 0x38, 0x79, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30, - 0x38, 0x71, 0x06, 0xe0, 0x00, 0x2a, 0x02, 0xd0, - 0x0c, 0xf0, 0xf8, 0xf8, 0x38, 0x62, 0x00, 0x2c, - 0x04, 0xd0, 0xfe, 0xf7, 0x97, 0xfd, 0x29, 0x1c, - 0x08, 0xf0, 0xfc, 0xfb, 0xf8, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x6b, 0x00, 0x00, 0xac, 0x7e, - 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x1d, 0x75, - 0x01, 0x00, 0x80, 0xb5, 0x10, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0x00, 0xf0, 0x0a, 0xf8, 0x80, 0xbd, - 0x03, 0x48, 0xc0, 0x69, 0x80, 0x68, 0x08, 0xf0, - 0xb2, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x84, 0x6a, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7, - 0x7a, 0xfb, 0x3c, 0x00, 0x0c, 0x6c, 0x00, 0x00, - 0xe0, 0x68, 0xe1, 0x69, 0xc0, 0x68, 0x23, 0x1c, - 0x01, 0x4a, 0xff, 0xf7, 0xd7, 0xfb, 0x10, 0xbd, - 0xdd, 0x6b, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0x0c, 0x21, 0x00, 0x20, 0xfa, 0xf7, 0xd6, 0xfc, - 0x04, 0x1c, 0x00, 0x68, 0x00, 0x21, 0x41, 0x60, - 0x01, 0x60, 0x29, 0x88, 0x01, 0x81, 0x69, 0x88, - 0x41, 0x81, 0x29, 0x1c, 0xff, 0x31, 0x21, 0x31, - 0x20, 0x1c, 0x03, 0xf0, 0x3c, 0x00, 0x48, 0x6c, - 0x00, 0x00, 0x77, 0xf9, 0x29, 0x1c, 0xff, 0x31, - 0x46, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x71, 0xf9, - 0x29, 0x1c, 0xff, 0x31, 0x50, 0x31, 0x20, 0x1c, - 0x03, 0xf0, 0x6b, 0xf9, 0x29, 0x1c, 0xff, 0x31, - 0x43, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x65, 0xf9, - 0x29, 0x1c, 0xff, 0x31, 0x63, 0x31, 0x20, 0x1c, - 0x03, 0xf0, 0x5f, 0xf9, 0x04, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, 0x3c, 0x00, - 0x84, 0x6c, 0x00, 0x00, 0xff, 0xf7, 0x8e, 0xfd, - 0x20, 0x1c, 0xb0, 0xbd, 0xe4, 0x62, 0x01, 0x00, - 0xf8, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, 0x04, 0xd1, - 0x05, 0x21, 0x18, 0x20, 0xfa, 0xf7, 0x02, 0xfb, - 0x4d, 0xe0, 0x29, 0x1c, 0x12, 0x31, 0x06, 0x22, - 0x60, 0x1c, 0xf9, 0xf7, 0x25, 0xfc, 0x22, 0x1c, - 0x30, 0x32, 0x00, 0x26, 0x00, 0x21, 0x00, 0x20, - 0x16, 0x70, 0x34, 0x4b, 0x1b, 0x5c, 0x2f, 0x8a, - 0x3c, 0x00, 0xc0, 0x6c, 0x00, 0x00, 0xdf, 0x40, - 0xff, 0x07, 0x07, 0xd5, 0x17, 0x78, 0x01, 0x33, - 0x01, 0x37, 0x17, 0x70, 0x67, 0x18, 0x30, 0x37, - 0x7b, 0x70, 0x01, 0x31, 0x01, 0x30, 0x0e, 0x28, - 0xee, 0xdb, 0xa8, 0x7b, 0x60, 0x72, 0x10, 0x78, - 0x00, 0x28, 0x2b, 0xd0, 0x2a, 0x48, 0x1e, 0x21, - 0x09, 0x5c, 0x27, 0x1c, 0x10, 0x37, 0x21, 0x72, - 0x01, 0x68, 0x61, 0x81, 0xc1, 0x89, 0x21, 0x77, - 0x81, 0x89, 0x3c, 0x00, 0xfc, 0x6c, 0x00, 0x00, - 0x79, 0x73, 0xc1, 0x8a, 0xa1, 0x81, 0x01, 0x8b, - 0xe1, 0x81, 0x42, 0x8a, 0x21, 0x1c, 0x60, 0x31, - 0x4a, 0x80, 0x82, 0x8a, 0x8a, 0x80, 0x1f, 0x49, - 0x2c, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x09, 0xd0, - 0x02, 0x29, 0x0a, 0xd1, 0x01, 0x22, 0x62, 0x62, - 0x62, 0x72, 0x42, 0x8b, 0xa2, 0x81, 0x80, 0x8b, - 0xe0, 0x81, 0x03, 0xe0, 0x01, 0x21, 0x66, 0x62, - 0x00, 0xe0, 0x00, 0x21, 0x3c, 0x00, 0x38, 0x6d, - 0x00, 0x00, 0xe8, 0x7b, 0x08, 0x40, 0x01, 0xd1, - 0x00, 0x20, 0xf8, 0xbd, 0xa8, 0x68, 0x43, 0x1c, - 0x09, 0xd0, 0x22, 0x1c, 0x12, 0x32, 0x00, 0x92, - 0x93, 0x1d, 0x02, 0x32, 0x21, 0x1c, 0x01, 0xf0, - 0x9c, 0xfa, 0xa0, 0x62, 0x00, 0xe0, 0xa6, 0x62, - 0x68, 0x7b, 0x29, 0x1c, 0x1d, 0x31, 0x20, 0x74, - 0x0b, 0x48, 0x20, 0x22, 0x20, 0x62, 0x20, 0x1c, - 0x42, 0x30, 0xbe, 0x73, 0xf9, 0xf7, 0x3c, 0x00, - 0x74, 0x6d, 0x00, 0x00, 0xc1, 0xfb, 0x40, 0x34, - 0x26, 0x70, 0x68, 0x7e, 0x04, 0x49, 0x60, 0x70, - 0x68, 0x68, 0x2c, 0x31, 0x48, 0x60, 0x01, 0x20, - 0xda, 0xe7, 0x00, 0x00, 0x90, 0x58, 0x01, 0x00, - 0xc8, 0x6e, 0x01, 0x00, 0x91, 0x02, 0x01, 0x00, - 0x70, 0xb5, 0x16, 0x1c, 0x0d, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x06, 0xd0, 0x0c, 0x20, 0xfa, 0xf7, - 0x47, 0xfd, 0x30, 0xc0, 0x08, 0x38, 0x06, 0x72, - 0x3c, 0x00, 0xb0, 0x6d, 0x00, 0x00, 0x70, 0xbd, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x01, 0x1c, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0xd0, - 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0xfc, 0xf7, - 0xa0, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x0c, 0x79, - 0x01, 0x00, 0x70, 0xb5, 0x0e, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7, 0x8f, 0xfa, - 0x06, 0x4d, 0x28, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0xfa, 0xf7, 0x3c, 0x00, 0xec, 0x6d, 0x00, 0x00, - 0x89, 0xfa, 0x04, 0x48, 0x2e, 0x60, 0xc4, 0x60, - 0x01, 0x21, 0x01, 0x70, 0x70, 0xbd, 0x00, 0x00, - 0xa8, 0x7e, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x07, 0x4c, 0x20, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0xfa, 0xf7, 0x77, 0xfa, 0x05, 0x48, - 0x00, 0x69, 0x21, 0x68, 0xf9, 0xf7, 0xdf, 0xfa, - 0x00, 0x20, 0x20, 0x60, 0x10, 0xbd, 0x00, 0x00, - 0xa8, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0x28, 0x6e, - 0x00, 0x00, 0x30, 0x00, 0x07, 0x00, 0x01, 0x20, - 0x05, 0x49, 0xc0, 0x06, 0x80, 0xb5, 0x08, 0x60, - 0x00, 0x22, 0x03, 0x21, 0x54, 0x20, 0x0c, 0xf0, - 0xb8, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x04, 0x21, - 0xc4, 0x20, 0x0c, 0xf0, 0xae, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x00, 0x88, - 0x02, 0x49, 0xff, 0xf7, 0xb8, 0xff, 0x3c, 0x00, - 0x64, 0x6e, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x75, 0x4b, 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x31, 0x48, 0x00, 0x25, - 0xc0, 0x68, 0x0c, 0x1c, 0x00, 0x28, 0x30, 0xd0, - 0x2e, 0x48, 0x2f, 0x4f, 0x04, 0x30, 0x00, 0x78, - 0x38, 0x76, 0x2c, 0x48, 0x04, 0x30, 0x40, 0x78, - 0x38, 0x81, 0x00, 0x2a, 0x0b, 0xd0, 0xf9, 0xf7, - 0xa5, 0xfa, 0x1f, 0x20, 0xb8, 0x76, 0x20, 0x1c, - 0x3c, 0x00, 0xa0, 0x6e, 0x00, 0x00, 0xf9, 0xf7, - 0xf6, 0xf9, 0x25, 0x48, 0x04, 0x30, 0x80, 0x78, - 0xb8, 0x76, 0x43, 0xe0, 0x25, 0x48, 0x22, 0x49, - 0x84, 0x42, 0x4d, 0x69, 0x02, 0xd2, 0x6c, 0x43, - 0xe4, 0x0b, 0x0f, 0xe0, 0x1f, 0x48, 0x21, 0x1c, - 0x80, 0x6a, 0x00, 0x90, 0xf9, 0xf7, 0x23, 0xfc, - 0x00, 0x99, 0x02, 0x1c, 0x4a, 0x43, 0xa1, 0x1a, - 0x1a, 0x4a, 0x69, 0x43, 0x52, 0x6a, 0xc9, 0x0b, - 0x50, 0x43, 0x3c, 0x00, 0xdc, 0x6e, 0x00, 0x00, - 0x44, 0x18, 0x02, 0x2c, 0x01, 0xd8, 0x00, 0x20, - 0xf8, 0xbd, 0xf9, 0xf7, 0x7d, 0xfa, 0x1f, 0x20, - 0xb8, 0x76, 0x20, 0x1c, 0xf9, 0xf7, 0xae, 0xf9, - 0x04, 0x1c, 0x11, 0x48, 0x04, 0x30, 0x80, 0x78, - 0xb8, 0x76, 0x0f, 0x4f, 0x7d, 0x6a, 0xac, 0x42, - 0x04, 0xd2, 0x20, 0x1c, 0xff, 0xf7, 0x22, 0xfc, - 0x05, 0x1c, 0x12, 0xe0, 0x21, 0x1c, 0x28, 0x1c, - 0xf9, 0xf7, 0xfc, 0xfb, 0x3c, 0x00, 0x18, 0x6f, - 0x00, 0x00, 0x06, 0x1c, 0x68, 0x43, 0x20, 0x1a, - 0xff, 0xf7, 0x17, 0xfc, 0x05, 0x1c, 0x00, 0x24, - 0x04, 0xe0, 0x78, 0x6a, 0xff, 0xf7, 0x11, 0xfc, - 0x45, 0x19, 0x01, 0x34, 0xb4, 0x42, 0xf8, 0xd3, - 0x28, 0x1c, 0xd4, 0xe7, 0x00, 0x00, 0xc8, 0x74, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0xc0, 0xc6, - 0x2d, 0x00, 0x01, 0x1c, 0x7d, 0x20, 0x80, 0xb5, - 0xc0, 0x00, 0xf9, 0xf7, 0x72, 0xfb, 0x3c, 0x00, - 0x54, 0x6f, 0x00, 0x00, 0x02, 0x49, 0x88, 0x61, - 0x40, 0x08, 0xc8, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0xc8, 0x74, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x42, 0xfa, - 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x0a, 0xfa, - 0x00, 0xf0, 0x68, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x85, 0x6f, 0x00, 0x00, 0x30, 0xb5, 0x0f, 0x4d, - 0x2a, 0x78, 0x04, 0x2a, 0x19, 0xd8, 0x00, 0x2a, - 0x3c, 0x00, 0x90, 0x6f, 0x00, 0x00, 0x17, 0xd0, - 0x00, 0x21, 0x07, 0xe0, 0x4b, 0x00, 0x5b, 0x18, - 0x5c, 0x19, 0x01, 0x23, 0xe4, 0x56, 0x84, 0x42, - 0x02, 0xda, 0x01, 0x31, 0x8a, 0x42, 0xf5, 0xdc, - 0x8a, 0x42, 0x00, 0xd1, 0x01, 0x39, 0x48, 0x00, - 0x40, 0x18, 0x40, 0x19, 0x81, 0x78, 0x02, 0x4a, - 0x34, 0x3a, 0x11, 0x70, 0xc0, 0x78, 0x50, 0x70, - 0x30, 0xbd, 0x00, 0x75, 0x01, 0x00, 0x30, 0xb5, - 0x11, 0x1c, 0x3c, 0x00, 0xcc, 0x6f, 0x00, 0x00, - 0x38, 0x31, 0x85, 0xb0, 0x91, 0x62, 0x08, 0x21, - 0x11, 0x86, 0x00, 0x23, 0x14, 0x1c, 0x01, 0x1c, - 0x53, 0x63, 0xc0, 0x68, 0x15, 0x4d, 0x0b, 0xe0, - 0x02, 0x68, 0xaa, 0x42, 0x06, 0xd1, 0xc2, 0x68, - 0xca, 0x60, 0xc3, 0x60, 0x03, 0x60, 0xfa, 0xf7, - 0xd1, 0xfa, 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x22, 0x1c, 0x40, 0x32, - 0x08, 0x21, 0x20, 0x68, 0x3c, 0x00, 0x08, 0x70, - 0x00, 0x00, 0xfa, 0xf7, 0x64, 0xfb, 0x0b, 0x49, - 0x20, 0x1c, 0x48, 0x30, 0x02, 0x90, 0x04, 0x94, - 0x03, 0x91, 0xe0, 0x69, 0x82, 0x88, 0x01, 0x68, - 0x6e, 0x20, 0x01, 0x92, 0x00, 0x91, 0x22, 0x1c, - 0x56, 0x32, 0x03, 0x5d, 0x21, 0x1c, 0x28, 0x31, - 0x20, 0x68, 0xff, 0xf7, 0x58, 0xfa, 0x05, 0xb0, - 0x30, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0xd5, 0x70, - 0x00, 0x00, 0x1c, 0xb5, 0x07, 0x49, 0x3c, 0x00, - 0x44, 0x70, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x90, - 0x00, 0x91, 0xc0, 0x69, 0x13, 0x1c, 0x84, 0x88, - 0x01, 0x68, 0x10, 0x68, 0x48, 0x33, 0x22, 0x1c, - 0xff, 0xf7, 0x08, 0xf9, 0x1c, 0xbd, 0x00, 0x00, - 0xc9, 0x6f, 0x00, 0x00, 0x10, 0xb5, 0x14, 0x1c, - 0x18, 0x48, 0x03, 0xf0, 0x89, 0xf8, 0xa0, 0x42, - 0x01, 0xd0, 0xfa, 0xf7, 0x45, 0xf9, 0x04, 0x22, - 0x20, 0x1c, 0x40, 0x30, 0xa1, 0x6a, 0xf9, 0xf7, - 0x3c, 0x00, 0x80, 0x70, 0x00, 0x00, 0xbd, 0xf9, - 0x00, 0x28, 0x02, 0xd1, 0x01, 0x20, 0x20, 0x62, - 0x05, 0xe0, 0x00, 0x20, 0x20, 0x62, 0x84, 0x20, - 0x00, 0x5d, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, - 0x09, 0xf0, 0x23, 0xfb, 0x05, 0xe0, 0x20, 0x68, - 0xfa, 0xf7, 0x79, 0xfa, 0x20, 0x1c, 0xfa, 0xf7, - 0xa4, 0xfb, 0xe0, 0x69, 0x80, 0x79, 0x06, 0x28, - 0x06, 0xd1, 0x20, 0x6a, 0x06, 0x49, 0x00, 0x28, - 0x03, 0xd0, 0x3c, 0x00, 0xbc, 0x70, 0x00, 0x00, - 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x10, 0xbd, - 0x48, 0x69, 0x01, 0x30, 0x48, 0x61, 0x10, 0xbd, - 0xa0, 0x6a, 0x01, 0x00, 0x28, 0x61, 0x01, 0x00, - 0x1c, 0xb5, 0x14, 0x1c, 0x15, 0x48, 0x03, 0xf0, - 0x51, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7, - 0x0d, 0xf9, 0x20, 0x1c, 0x4f, 0x30, 0x02, 0x79, - 0x41, 0x79, 0x00, 0xab, 0x12, 0x02, 0x11, 0x43, - 0xc2, 0x78, 0x12, 0x04, 0x3c, 0x00, 0xf8, 0x70, - 0x00, 0x00, 0x11, 0x43, 0x82, 0x78, 0x12, 0x06, - 0x11, 0x43, 0x00, 0x91, 0x01, 0x78, 0x40, 0x78, - 0x09, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c, - 0x69, 0x46, 0x06, 0xf0, 0x3c, 0xf9, 0x00, 0x28, - 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0, 0xe3, 0xfa, - 0x1c, 0xbd, 0x20, 0x68, 0xfa, 0xf7, 0x39, 0xfa, - 0x20, 0x1c, 0xfa, 0xf7, 0x64, 0xfb, 0xf7, 0xe7, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x71, 0x00, 0x00, 0xbc, 0xb5, 0x1f, 0x4d, - 0x14, 0x1c, 0x28, 0x1c, 0xdc, 0x30, 0x03, 0xf0, - 0x1f, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7, - 0xdb, 0xf8, 0xa0, 0x6c, 0x00, 0xab, 0x02, 0x78, - 0x81, 0x78, 0x12, 0x02, 0x11, 0x43, 0x02, 0x79, - 0x12, 0x04, 0x11, 0x43, 0x42, 0x79, 0x12, 0x06, - 0x11, 0x43, 0x00, 0x91, 0x81, 0x79, 0xc0, 0x79, - 0x00, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c, - 0x3c, 0x00, 0x70, 0x71, 0x00, 0x00, 0x69, 0x46, - 0x06, 0xf0, 0x0b, 0xf9, 0x00, 0x28, 0x17, 0xd0, - 0x01, 0x28, 0x0e, 0xd1, 0xed, 0x6c, 0x00, 0x2d, - 0x0b, 0xd0, 0x80, 0x20, 0x02, 0x5d, 0xe0, 0x6c, - 0x01, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x00, 0x21, - 0x60, 0x68, 0x6b, 0x46, 0x0a, 0x30, 0xf9, 0xf7, - 0x23, 0xf9, 0x20, 0x68, 0xfa, 0xf7, 0xfb, 0xf9, - 0x20, 0x1c, 0xfa, 0xf7, 0x26, 0xfb, 0xbc, 0xbd, - 0x20, 0x1c, 0x3c, 0x00, 0xac, 0x71, 0x00, 0x00, - 0x00, 0xf0, 0x8e, 0xfe, 0xfa, 0xe7, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0xbc, 0xb5, 0x04, 0x1c, - 0x40, 0x6a, 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0, - 0x60, 0x68, 0x00, 0x8b, 0x05, 0x07, 0x2d, 0x0f, - 0x22, 0x1c, 0x40, 0x32, 0x08, 0x21, 0x20, 0x68, - 0xfa, 0xf7, 0x7e, 0xfa, 0xa1, 0x68, 0x01, 0x95, - 0x00, 0x91, 0x21, 0x1c, 0x22, 0x1c, 0x60, 0x32, - 0x20, 0x68, 0x50, 0x31, 0x3c, 0x00, 0xe8, 0x71, - 0x00, 0x00, 0x0d, 0x1c, 0xe3, 0x68, 0x09, 0xf0, - 0xe2, 0xff, 0xe0, 0x69, 0x80, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0xfe, 0xf7, 0xe8, 0xfa, 0x00, 0x28, - 0x01, 0xd0, 0x18, 0x20, 0x00, 0xe0, 0x10, 0x20, - 0x06, 0x49, 0x01, 0x94, 0x00, 0x91, 0xe1, 0x69, - 0x08, 0x23, 0x09, 0x68, 0x0a, 0x18, 0x21, 0x1c, - 0x28, 0x31, 0x28, 0x1c, 0xff, 0xf7, 0x87, 0xf9, - 0xbc, 0xbd, 0x35, 0x71, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x72, 0x00, 0x00, 0x10, 0xb5, 0x10, 0x1c, - 0x38, 0x30, 0x90, 0x62, 0x04, 0x20, 0x10, 0x86, - 0x00, 0x20, 0x50, 0x63, 0x10, 0x68, 0x14, 0x1c, - 0x40, 0x32, 0x04, 0x21, 0xfa, 0xf7, 0x4a, 0xfa, - 0x23, 0x1c, 0x21, 0x1c, 0x28, 0x31, 0x02, 0x4a, - 0x20, 0x68, 0xff, 0xf7, 0xbd, 0xf8, 0x10, 0xbd, - 0x65, 0x70, 0x00, 0x00, 0x0e, 0xb5, 0xc3, 0x69, - 0x02, 0x1c, 0x98, 0x88, 0x05, 0x49, 0x02, 0x92, - 0x3c, 0x00, 0x60, 0x72, 0x00, 0x00, 0x01, 0x91, - 0x00, 0x90, 0x1b, 0x68, 0x10, 0x68, 0x91, 0x69, - 0x03, 0x22, 0xff, 0xf7, 0xae, 0xf9, 0x0e, 0xbd, - 0x00, 0x00, 0x25, 0x72, 0x00, 0x00, 0x0e, 0xb5, - 0x02, 0x1c, 0x06, 0x49, 0x10, 0x20, 0x00, 0x90, - 0x02, 0x92, 0x13, 0x1c, 0x01, 0x91, 0x10, 0x68, - 0x00, 0x22, 0x70, 0x33, 0x00, 0x21, 0xff, 0xf7, - 0x9c, 0xf9, 0x0e, 0xbd, 0x00, 0x00, 0x25, 0x72, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x72, 0x00, 0x00, - 0x10, 0xb5, 0x03, 0x1c, 0x00, 0x21, 0x00, 0x20, - 0x08, 0x4c, 0x00, 0xe0, 0x01, 0x31, 0xca, 0x00, - 0xa2, 0x58, 0x9a, 0x42, 0x02, 0xd0, 0x0b, 0x29, - 0xf8, 0xd3, 0x10, 0xbd, 0x0b, 0x29, 0xfc, 0xd2, - 0xc9, 0x00, 0x09, 0x19, 0x00, 0x20, 0x08, 0x71, - 0x01, 0x20, 0x10, 0xbd, 0x38, 0x58, 0x01, 0x00, - 0x8c, 0xb5, 0x00, 0xab, 0x86, 0x21, 0x19, 0x80, - 0x01, 0x1c, 0x04, 0x48, 0x3c, 0x00, 0xd8, 0x72, - 0x00, 0x00, 0x06, 0xf0, 0xee, 0xfe, 0x01, 0x90, - 0x68, 0x46, 0x06, 0xf0, 0xfa, 0xf8, 0x8c, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x0d, 0x48, 0x0d, 0x49, 0x94, 0xb0, - 0x04, 0x80, 0x06, 0x22, 0x18, 0x31, 0x0c, 0x30, - 0xf9, 0xf7, 0xfb, 0xf8, 0x01, 0xa8, 0x07, 0xf0, - 0xa2, 0xf8, 0x0c, 0x20, 0x09, 0xa9, 0x48, 0x72, - 0x00, 0xab, 0x1c, 0x80, 0x02, 0x21, 0x3c, 0x00, - 0x14, 0x73, 0x00, 0x00, 0x68, 0x46, 0x03, 0xf0, - 0xdb, 0xff, 0x04, 0x90, 0x01, 0xa8, 0x06, 0xf0, - 0xd1, 0xf8, 0x14, 0xb0, 0x10, 0xbd, 0x00, 0x00, - 0x58, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0, - 0x45, 0xfe, 0x05, 0xf0, 0x53, 0xfa, 0x80, 0xbd, - 0x10, 0xb5, 0x19, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x06, 0xd0, 0x61, 0x1c, 0x08, 0x78, 0x00, 0x28, - 0x03, 0xd1, 0x48, 0x78, 0xff, 0x30, 0x08, 0x70, - 0x3c, 0x00, 0x50, 0x73, 0x00, 0x00, 0x10, 0xbd, - 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x08, 0x70, - 0xa1, 0x68, 0x00, 0x29, 0xf7, 0xd0, 0x00, 0x28, - 0xf5, 0xd1, 0x0e, 0x48, 0x54, 0x30, 0x81, 0x78, - 0x00, 0x29, 0x03, 0xd1, 0xc1, 0x78, 0xff, 0x31, - 0x81, 0x70, 0x10, 0xbd, 0xff, 0x31, 0x09, 0x06, - 0x09, 0x0e, 0x81, 0x70, 0xf9, 0xd1, 0xa1, 0x69, - 0x00, 0x29, 0xf6, 0xd0, 0x80, 0x88, 0x03, 0xf0, - 0xd0, 0xfb, 0x3c, 0x00, 0x8c, 0x73, 0x00, 0x00, - 0x04, 0x4a, 0x01, 0x1c, 0x5c, 0x32, 0x0c, 0x32, - 0x05, 0xca, 0x80, 0x1a, 0xa2, 0x69, 0xf9, 0xf7, - 0x1f, 0xf8, 0x10, 0xbd, 0x44, 0x7d, 0x01, 0x00, - 0xf0, 0xb5, 0x04, 0x1c, 0x40, 0x68, 0x00, 0x25, - 0x01, 0x79, 0x00, 0x22, 0x85, 0xb0, 0xc9, 0x07, - 0xcb, 0x17, 0x69, 0x49, 0x01, 0x33, 0x89, 0x6a, - 0x10, 0x29, 0x05, 0xd3, 0x66, 0x49, 0xc0, 0x39, - 0x08, 0x6b, 0x01, 0x30, 0x3c, 0x00, 0xc8, 0x73, - 0x00, 0x00, 0x08, 0x63, 0x8e, 0xe0, 0x21, 0x68, - 0x0e, 0x68, 0xf6, 0x78, 0xb7, 0x06, 0xff, 0x0f, - 0xb6, 0x09, 0x00, 0x2b, 0x04, 0x97, 0x06, 0xd0, - 0x63, 0x69, 0x1f, 0x1c, 0x1b, 0x6a, 0x50, 0x37, - 0x9f, 0x42, 0x00, 0xd1, 0x01, 0x25, 0x00, 0x2d, - 0x02, 0xd0, 0x63, 0x69, 0x1b, 0x6a, 0x04, 0xe0, - 0x3c, 0x23, 0x59, 0x4f, 0x73, 0x43, 0xdb, 0x19, - 0x04, 0x33, 0xe3, 0x61, 0x9f, 0x88, 0x3c, 0x00, - 0x04, 0x74, 0x00, 0x00, 0x00, 0x2f, 0x70, 0xd0, - 0x9b, 0x79, 0x02, 0x2b, 0x6e, 0xd0, 0x04, 0x2b, - 0x17, 0xd0, 0x06, 0x2b, 0x69, 0xd1, 0x08, 0x68, - 0xa0, 0x61, 0x08, 0x89, 0x04, 0x38, 0x08, 0x81, - 0x20, 0x68, 0x01, 0x68, 0x04, 0x31, 0x01, 0x60, - 0x4e, 0x49, 0x00, 0x29, 0x5d, 0xd0, 0x04, 0x9f, - 0xba, 0x42, 0x5a, 0xd1, 0x49, 0x48, 0x22, 0x1c, - 0x1c, 0x30, 0x02, 0xf0, 0x65, 0xfe, 0x05, 0xb0, - 0x3c, 0x00, 0x40, 0x74, 0x00, 0x00, 0xf0, 0xbd, - 0x09, 0x68, 0x25, 0x1c, 0xca, 0x79, 0x40, 0x35, - 0x26, 0x1c, 0xea, 0x73, 0x8b, 0x79, 0x22, 0x1c, - 0x50, 0x32, 0x13, 0x70, 0x4b, 0x79, 0x60, 0x36, - 0x53, 0x70, 0x0b, 0x79, 0x93, 0x70, 0x4b, 0x78, - 0xd3, 0x70, 0x09, 0x78, 0x11, 0x71, 0x00, 0x21, - 0x29, 0x72, 0x16, 0x21, 0xb1, 0x73, 0x61, 0x6a, - 0x00, 0x29, 0x06, 0xd0, 0x01, 0x8b, 0x09, 0x07, - 0x09, 0x0f, 0x3c, 0x00, 0x7c, 0x74, 0x00, 0x00, - 0x29, 0x72, 0xb1, 0x81, 0x18, 0x21, 0xb1, 0x73, - 0x01, 0x1c, 0x0a, 0x31, 0x20, 0x1c, 0x06, 0x22, - 0x49, 0x30, 0xf9, 0xf7, 0x33, 0xf8, 0x60, 0x68, - 0x14, 0x22, 0x01, 0x88, 0xe9, 0x82, 0x01, 0x1d, - 0x20, 0x1c, 0x58, 0x30, 0xf9, 0xf7, 0x2a, 0xf8, - 0xe8, 0x8a, 0x30, 0x49, 0x08, 0x40, 0x01, 0x21, - 0x89, 0x03, 0x08, 0x43, 0xe8, 0x82, 0x70, 0x89, - 0x0f, 0x21, 0x08, 0x40, 0x3c, 0x00, 0xb8, 0x74, - 0x00, 0x00, 0x70, 0x81, 0x20, 0x68, 0x01, 0x89, - 0x08, 0x39, 0x01, 0x81, 0x20, 0x68, 0x01, 0x68, - 0x08, 0x31, 0x01, 0x60, 0x08, 0x21, 0x00, 0x20, - 0xfa, 0xf7, 0x83, 0xf8, 0x05, 0x1c, 0x02, 0x68, - 0x20, 0x68, 0x08, 0x21, 0xfa, 0xf7, 0xfb, 0xf8, - 0x20, 0x68, 0xfa, 0xf7, 0x74, 0xf8, 0x21, 0x49, - 0xc5, 0x60, 0x2f, 0xe0, 0x30, 0xe0, 0xff, 0xe7, - 0x21, 0x68, 0x60, 0x68, 0x0a, 0x68, 0x3c, 0x00, - 0xf4, 0x74, 0x00, 0x00, 0x80, 0x23, 0xa2, 0x64, - 0x1e, 0x55, 0xe5, 0x64, 0x55, 0x79, 0x13, 0x79, - 0x2d, 0x02, 0x5b, 0x19, 0x95, 0x79, 0x2d, 0x04, - 0x5b, 0x19, 0xd5, 0x79, 0x2d, 0x06, 0x5b, 0x19, - 0x95, 0x78, 0x12, 0x78, 0x12, 0x02, 0xaa, 0x18, - 0x15, 0x04, 0x0a, 0x89, 0x2d, 0x0c, 0x08, 0x3a, - 0x0a, 0x81, 0x21, 0x68, 0x0a, 0x68, 0x08, 0x32, - 0x0a, 0x60, 0xe1, 0x69, 0x02, 0x1c, 0x0a, 0x32, - 0x3c, 0x00, 0x30, 0x75, 0x00, 0x00, 0x01, 0xa8, - 0x09, 0x68, 0x0b, 0xf0, 0x3e, 0xf9, 0xe0, 0x69, - 0x2b, 0x1c, 0x01, 0x68, 0x20, 0x1c, 0x70, 0x30, - 0x01, 0xaa, 0x0b, 0xf0, 0x86, 0xf9, 0x09, 0x49, - 0x01, 0x22, 0x6d, 0xe7, 0x20, 0x68, 0xfa, 0xf7, - 0x22, 0xf8, 0x20, 0x1c, 0xfa, 0xf7, 0x4d, 0xf9, - 0x70, 0xe7, 0x84, 0x6a, 0x01, 0x00, 0x68, 0x61, - 0x01, 0x00, 0x55, 0x72, 0x00, 0x00, 0x8f, 0xc7, - 0xff, 0xff, 0x3c, 0x00, 0x6c, 0x75, 0x00, 0x00, - 0x41, 0x70, 0x00, 0x00, 0x79, 0x72, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x82, 0x20, 0xf9, 0xf7, - 0x93, 0xfe, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0xc0, 0x68, 0xf9, 0xf7, 0xfa, 0xff, - 0x01, 0x20, 0x80, 0xbd, 0x3c, 0x00, 0xa8, 0x75, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0xff, 0x20, - 0xf9, 0xf7, 0x79, 0xfe, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x20, - 0x70, 0x47, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x21, 0x99, 0x20, - 0xf9, 0xf7, 0x65, 0xfe, 0x80, 0xbd, 0xb0, 0xb5, - 0x00, 0x25, 0x01, 0x29, 0x12, 0x4c, 0x3c, 0x00, - 0xe4, 0x75, 0x00, 0x00, 0x0f, 0xd1, 0x0a, 0xf0, - 0x0f, 0xfc, 0x00, 0x28, 0x1d, 0xd0, 0x61, 0x78, - 0x3c, 0x23, 0x59, 0x43, 0x09, 0x19, 0x04, 0x31, - 0x01, 0x62, 0x61, 0x1c, 0x41, 0x62, 0x84, 0x62, - 0x04, 0x1c, 0x50, 0x34, 0x06, 0xe0, 0x00, 0x29, - 0x0f, 0xd1, 0x3c, 0x20, 0x50, 0x43, 0x25, 0x70, - 0x04, 0x19, 0x04, 0x34, 0x00, 0x2c, 0x08, 0xd0, - 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x21, - 0x3c, 0x00, 0x20, 0x76, 0x00, 0x00, 0xf8, 0xf7, - 0x18, 0xff, 0xa5, 0x80, 0x07, 0x20, 0xa0, 0x71, - 0xb0, 0xbd, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x00, 0x21, 0x01, 0xf0, 0x41, 0xfc, - 0x60, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x21, 0x68, - 0x01, 0x60, 0x20, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x61, 0x68, 0x41, 0x60, 0x12, 0x4e, 0x70, 0x68, - 0xa0, 0x42, 0x01, 0xd1, 0x60, 0x68, 0x70, 0x60, - 0xe0, 0x68, 0x3c, 0x00, 0x5c, 0x76, 0x00, 0x00, - 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x25, 0x06, 0xe0, - 0xe0, 0x68, 0xe9, 0x00, 0x41, 0x18, 0x14, 0x20, - 0x0b, 0xf0, 0xe2, 0xff, 0x01, 0x35, 0x30, 0x88, - 0x85, 0x42, 0xf5, 0xdb, 0x06, 0x21, 0x20, 0x1c, - 0x44, 0x30, 0xf8, 0xf7, 0xe9, 0xfe, 0x20, 0x6b, - 0x00, 0x28, 0x01, 0xd0, 0xf9, 0xf7, 0x86, 0xff, - 0xe0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xfa, 0xf7, - 0xaf, 0xf8, 0x70, 0xbd, 0x3c, 0x00, 0x98, 0x76, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0xf0, 0xb5, - 0x1d, 0x4f, 0x05, 0x9d, 0x3f, 0x68, 0x01, 0x26, - 0x1c, 0x1c, 0x33, 0x1c, 0x00, 0x2f, 0x00, 0xd0, - 0x2b, 0x1c, 0x1d, 0x06, 0x2d, 0x0e, 0x00, 0x29, - 0x06, 0xd0, 0x11, 0x78, 0x0e, 0x23, 0x16, 0x4f, - 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43, 0x10, 0xe0, - 0x21, 0x78, 0x00, 0x29, 0x13, 0xd0, 0xff, 0x31, - 0x0d, 0xe0, 0x01, 0x29, 0x01, 0xd9, 0x3c, 0x00, - 0xd4, 0x76, 0x00, 0x00, 0x01, 0x31, 0x11, 0x70, - 0x11, 0x78, 0x0e, 0x23, 0x0f, 0x4f, 0x49, 0x08, - 0x11, 0x70, 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43, - 0xdb, 0x19, 0x59, 0x5c, 0x21, 0x70, 0x21, 0x78, - 0x00, 0x29, 0x02, 0xd1, 0x11, 0x78, 0x00, 0x29, - 0xea, 0xd1, 0x09, 0x48, 0xc0, 0x68, 0x00, 0x28, - 0x05, 0xd0, 0x21, 0x78, 0x30, 0x1c, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0xf0, 0xbd, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0x77, 0x00, 0x00, 0xf0, 0xbd, - 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x24, 0x67, - 0x01, 0x00, 0x5c, 0x67, 0x01, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x84, 0x46, 0x00, 0x20, 0xf0, 0xb5, - 0x00, 0x29, 0x09, 0xd0, 0x11, 0x78, 0x1a, 0x4e, - 0xb1, 0x70, 0x19, 0x4e, 0xb1, 0x78, 0x71, 0x70, - 0x31, 0x70, 0x01, 0x21, 0x31, 0x61, 0x27, 0xe0, - 0x16, 0x4e, 0x01, 0x23, 0xf1, 0x56, 0x63, 0x46, - 0x5f, 0x68, 0x3c, 0x00, 0x4c, 0x77, 0x00, 0x00, - 0x00, 0x23, 0xf6, 0x56, 0x01, 0x25, 0xcc, 0x0f, - 0xb7, 0x42, 0x00, 0xd9, 0x00, 0x25, 0x00, 0x2c, - 0x01, 0xd0, 0x00, 0x2d, 0xe8, 0xd1, 0x0e, 0x4f, - 0x3b, 0x69, 0x00, 0x2b, 0x03, 0xd0, 0x00, 0x2d, - 0x01, 0xd1, 0x16, 0x70, 0x02, 0xe0, 0x1c, 0x43, - 0x01, 0xd1, 0x11, 0x70, 0x01, 0x20, 0x01, 0x24, - 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x24, 0x3c, 0x61, - 0x00, 0x2c, 0x02, 0xd0, 0x3c, 0x00, 0x88, 0x77, - 0x00, 0x00, 0x71, 0x1c, 0x39, 0x70, 0x01, 0xe0, - 0xff, 0x31, 0x79, 0x70, 0x00, 0x28, 0xd5, 0xd0, - 0x01, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x90, 0xb5, 0x0a, 0x4c, 0x00, 0x20, - 0x93, 0xb0, 0x20, 0x61, 0x03, 0x90, 0x68, 0x46, - 0x00, 0x21, 0x08, 0xf0, 0x84, 0xfd, 0x20, 0x7a, - 0x02, 0x28, 0x01, 0xd1, 0xe0, 0x6b, 0x00, 0xe0, - 0x20, 0x6c, 0xe0, 0x61, 0x01, 0x20, 0x3c, 0x00, - 0xc4, 0x77, 0x00, 0x00, 0x08, 0xf0, 0x8a, 0xfd, - 0x13, 0xb0, 0x90, 0xbd, 0xf4, 0x6e, 0x01, 0x00, - 0xf7, 0xb5, 0x05, 0x1c, 0x88, 0x88, 0x0c, 0x1c, - 0x82, 0xb0, 0x1f, 0x4f, 0x00, 0x28, 0x00, 0xd1, - 0x00, 0x27, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1, - 0xf9, 0xf7, 0x8a, 0xfd, 0x1b, 0x48, 0x3b, 0x1c, - 0x00, 0x68, 0x21, 0x1c, 0x02, 0x68, 0x28, 0x1c, - 0x00, 0x92, 0x04, 0x9a, 0xfe, 0xf7, 0x3c, 0xf8, - 0x3c, 0x00, 0x00, 0x78, 0x00, 0x00, 0x06, 0x1c, - 0x22, 0xd0, 0x03, 0x21, 0x04, 0x98, 0x02, 0xf0, - 0xb8, 0xff, 0x00, 0x28, 0x1b, 0xd0, 0x80, 0x78, - 0x01, 0x21, 0x03, 0xf0, 0xe4, 0xff, 0xa0, 0x88, - 0xa1, 0x8e, 0x48, 0x43, 0x00, 0x04, 0x0f, 0x49, - 0x00, 0x0c, 0x08, 0x80, 0x03, 0xf0, 0x81, 0xf9, - 0x01, 0x22, 0x00, 0x2d, 0x00, 0xd1, 0x00, 0x22, - 0x01, 0x1c, 0x0e, 0x20, 0x0b, 0xf0, 0xc9, 0xfe, - 0x00, 0x2f, 0x3c, 0x00, 0x3c, 0x78, 0x00, 0x00, - 0x08, 0xd1, 0x00, 0x21, 0x28, 0x1c, 0x02, 0xf0, - 0xbd, 0xfc, 0x03, 0xe0, 0x00, 0x26, 0x28, 0x1c, - 0x00, 0xf0, 0x0a, 0xf8, 0x30, 0x1c, 0x05, 0xb0, - 0xf0, 0xbd, 0x00, 0x00, 0xc1, 0xa1, 0x00, 0x00, - 0xe4, 0x65, 0x01, 0x00, 0xa8, 0x7c, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xfe, 0xf7, 0x38, 0xf8, - 0x01, 0x21, 0x00, 0x2c, 0x00, 0xd1, 0x00, 0x21, - 0x0e, 0x20, 0x0b, 0xf0, 0x3c, 0x00, 0x78, 0x78, - 0x00, 0x00, 0xdd, 0xfe, 0x10, 0xbd, 0xf8, 0xb5, - 0x07, 0x1c, 0x0b, 0xf0, 0x94, 0xfa, 0xfd, 0xf7, - 0xbc, 0xfe, 0x00, 0x26, 0x02, 0x28, 0x1e, 0x4d, - 0x01, 0xd0, 0x2e, 0x70, 0xf8, 0xbd, 0xfd, 0xf7, - 0x3e, 0xf8, 0x04, 0x1c, 0xf9, 0xf7, 0x59, 0xfc, - 0x00, 0x28, 0x14, 0xd0, 0xfd, 0xf7, 0x77, 0xf8, - 0x00, 0x28, 0x10, 0xd0, 0x02, 0xf0, 0xf9, 0xfb, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24, 0x3c, 0x00, - 0xb4, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x15, 0x4c, - 0x33, 0x1c, 0x21, 0x1c, 0x07, 0x22, 0x16, 0x20, - 0x0b, 0xf0, 0x66, 0xff, 0x68, 0x78, 0x80, 0x21, - 0x08, 0x43, 0x68, 0x70, 0x02, 0xf0, 0x0a, 0xfc, - 0x00, 0x28, 0xde, 0xd1, 0x28, 0x78, 0x80, 0x07, - 0xdb, 0xd4, 0xfd, 0xf7, 0x23, 0xf9, 0x00, 0x28, - 0x05, 0xd1, 0x28, 0x78, 0xc0, 0x07, 0x02, 0xd5, - 0xfd, 0xf7, 0x42, 0xf8, 0xd1, 0xe7, 0x02, 0xf0, - 0x3c, 0x00, 0xf0, 0x78, 0x00, 0x00, 0xcd, 0xfb, - 0x00, 0x28, 0xcd, 0xd0, 0x28, 0x78, 0x02, 0x21, - 0x08, 0x43, 0x28, 0x70, 0x21, 0x1c, 0x38, 0x1c, - 0xfd, 0xf7, 0xc1, 0xf8, 0xc4, 0xe7, 0x60, 0x6c, - 0x01, 0x00, 0x71, 0x02, 0x00, 0x00, 0x10, 0xb5, - 0x12, 0x4c, 0x01, 0x20, 0x20, 0x70, 0xfe, 0xf7, - 0xf0, 0xf9, 0x01, 0x21, 0xa0, 0x68, 0xfb, 0xf7, - 0xf4, 0xfe, 0xa0, 0x68, 0x03, 0xf0, 0x87, 0xff, - 0x0d, 0x48, 0x3c, 0x00, 0x2c, 0x79, 0x00, 0x00, - 0xa1, 0x68, 0x07, 0xf0, 0x23, 0xfd, 0xfb, 0xf7, - 0x55, 0xff, 0xe0, 0x68, 0x00, 0x28, 0x0d, 0xd0, - 0x09, 0x49, 0x06, 0x20, 0x0a, 0xf0, 0x24, 0xfd, - 0x08, 0x49, 0x05, 0x20, 0x0a, 0xf0, 0x20, 0xfd, - 0xfb, 0xf7, 0x6e, 0xff, 0x00, 0x28, 0x01, 0xd0, - 0x05, 0xf0, 0xf8, 0xfc, 0x10, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x79, - 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00, 0xf0, 0xb5, - 0x24, 0x4d, 0x23, 0x4c, 0x68, 0x7c, 0x20, 0x3c, - 0x9b, 0xb0, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x28, - 0x03, 0xd8, 0x20, 0x89, 0x01, 0x38, 0x20, 0x81, - 0x37, 0xe0, 0x00, 0x27, 0x6f, 0x74, 0x34, 0xe0, - 0x1c, 0x4e, 0x68, 0x22, 0x14, 0x36, 0x31, 0x1c, - 0x0c, 0x31, 0x01, 0xa8, 0xf8, 0xf7, 0x09, 0xfe, - 0x18, 0x48, 0x33, 0x89, 0x01, 0x21, 0x3c, 0x00, - 0xa4, 0x79, 0x00, 0x00, 0x44, 0x30, 0x0a, 0x1c, - 0x00, 0x2b, 0x00, 0x7b, 0x00, 0xd1, 0x02, 0x1c, - 0x12, 0x06, 0x12, 0x0e, 0x0d, 0xaf, 0x3a, 0x70, - 0x94, 0x46, 0xaa, 0x7b, 0x93, 0x19, 0x30, 0x33, - 0x5b, 0x7b, 0x7b, 0x70, 0xea, 0x73, 0x01, 0x32, - 0x12, 0x06, 0x12, 0x0e, 0x00, 0x27, 0x82, 0x42, - 0xaa, 0x73, 0x01, 0xd3, 0xaf, 0x73, 0x04, 0xe0, - 0x62, 0x46, 0x01, 0x2a, 0x01, 0xd1, 0x77, 0x60, - 0x3c, 0x00, 0xe0, 0x79, 0x00, 0x00, 0x00, 0xe0, - 0x71, 0x60, 0x06, 0x48, 0x07, 0x4a, 0x80, 0x38, - 0x81, 0x67, 0x42, 0x67, 0x68, 0x22, 0x01, 0xa9, - 0xf8, 0xf7, 0xdd, 0xfd, 0x27, 0x81, 0x08, 0xf0, - 0x12, 0xfd, 0x1b, 0xb0, 0xf0, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0xe9, 0x2e, 0x00, 0x00, 0xf1, 0xb5, - 0x86, 0xb0, 0x06, 0x99, 0x00, 0x20, 0x88, 0x61, - 0x06, 0x98, 0x84, 0x68, 0x80, 0x8d, 0x65, 0x68, - 0x01, 0x28, 0x3c, 0x00, 0x1c, 0x7a, 0x00, 0x00, - 0x4c, 0xd9, 0x35, 0x49, 0x49, 0x68, 0x05, 0x91, - 0x00, 0x29, 0x47, 0xd0, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x23, 0x03, 0x90, 0x28, 0x1c, 0x96, 0x46, - 0x94, 0x46, 0x06, 0x68, 0x04, 0x96, 0xf2, 0x78, - 0x80, 0x26, 0xb2, 0x43, 0x3f, 0x2a, 0x2e, 0xd8, - 0xd7, 0x06, 0xff, 0x0e, 0x01, 0x26, 0xbe, 0x40, - 0x37, 0x1c, 0x04, 0x9e, 0x52, 0x09, 0xb6, 0x78, - 0x76, 0x00, 0xb2, 0x18, 0x3c, 0x00, 0x58, 0x7a, - 0x00, 0x00, 0x26, 0x4e, 0x92, 0x00, 0x1c, 0x36, - 0xb2, 0x58, 0x3a, 0x40, 0x1e, 0xd0, 0x03, 0xe0, - 0x02, 0x90, 0x02, 0x89, 0xc0, 0x68, 0x51, 0x18, - 0x00, 0x28, 0xf9, 0xd1, 0x05, 0x98, 0x81, 0x42, - 0x14, 0xd8, 0x70, 0x46, 0x01, 0x30, 0x86, 0x46, - 0x00, 0x2b, 0x04, 0xd0, 0x60, 0x46, 0xd8, 0x60, - 0x01, 0x98, 0x62, 0x46, 0xd0, 0x60, 0x03, 0x98, - 0x01, 0x38, 0x03, 0x90, 0x06, 0xd0, 0x3c, 0x00, - 0x94, 0x7a, 0x00, 0x00, 0x23, 0x1c, 0x24, 0x68, - 0x60, 0x68, 0x02, 0x9a, 0x01, 0x90, 0x94, 0x46, - 0xc9, 0xe7, 0x70, 0x46, 0x01, 0x28, 0x07, 0xd9, - 0x2a, 0x1c, 0x00, 0x21, 0x3f, 0x20, 0x01, 0xf0, - 0x51, 0xff, 0x05, 0x1c, 0x06, 0x98, 0x85, 0x61, - 0x28, 0x1c, 0x01, 0xf0, 0xb3, 0xff, 0x0e, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x07, 0xd0, 0x28, 0x68, - 0x01, 0x88, 0x40, 0x79, 0x02, 0x31, 0x09, 0x1a, - 0x3c, 0x00, 0xd0, 0x7a, 0x00, 0x00, 0x28, 0x1c, - 0x01, 0xf0, 0xe5, 0xfc, 0xa2, 0x68, 0x06, 0x98, - 0xc0, 0x68, 0x06, 0x99, 0x0b, 0x69, 0x29, 0x1c, - 0xf8, 0xf7, 0x7c, 0xfc, 0x03, 0x49, 0x08, 0x69, - 0x01, 0x30, 0x08, 0x61, 0x07, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4a, 0x80, 0x00, - 0x12, 0x58, 0xd0, 0x06, 0xc0, 0x0e, 0x01, 0x30, - 0x07, 0x4b, 0x3c, 0x00, 0x0c, 0x7b, 0x00, 0x00, - 0x1c, 0x68, 0x00, 0x2c, 0xfc, 0xdb, 0x5a, 0x60, - 0x20, 0x22, 0x12, 0x1a, 0x91, 0x40, 0x19, 0x60, - 0x19, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x10, 0xbd, - 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20, 0x07, 0x00, - 0xb0, 0xb5, 0x12, 0x4c, 0x00, 0x25, 0x25, 0x70, - 0xa1, 0x68, 0x11, 0x48, 0x07, 0xf0, 0x32, 0xfc, - 0x65, 0x61, 0xfb, 0xf7, 0xa3, 0xfe, 0xe0, 0x68, - 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00, 0x48, 0x7b, - 0x00, 0x00, 0xfb, 0xf7, 0xa4, 0xfe, 0x01, 0x21, - 0x07, 0x20, 0x0b, 0xf0, 0x70, 0xfd, 0x0a, 0x49, - 0x06, 0x20, 0x0a, 0xf0, 0x4c, 0xfc, 0x09, 0x49, - 0x05, 0x20, 0x0a, 0xf0, 0x48, 0xfc, 0xa0, 0x68, - 0x03, 0xf0, 0x67, 0xfe, 0x00, 0x21, 0xa0, 0x68, - 0xfb, 0xf7, 0xcd, 0xfd, 0x05, 0xf0, 0xab, 0xfb, - 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x7b, 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00, - 0x10, 0xb5, 0x0f, 0x4c, 0x20, 0x7c, 0x00, 0x28, - 0x19, 0xd1, 0x60, 0x69, 0x00, 0x28, 0x16, 0xd1, - 0xe0, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x0a, 0x48, - 0x1c, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x05, 0xf0, 0xce, 0xfb, 0x01, 0x21, 0x07, 0x20, - 0x0b, 0xf0, 0x40, 0xfd, 0xa0, 0x68, 0x03, 0xf0, - 0x3f, 0xfe, 0x04, 0x48, 0xa1, 0x68, 0x07, 0xf0, - 0x3c, 0x00, 0xc0, 0x7b, 0x00, 0x00, 0xdb, 0xfb, - 0x01, 0x20, 0x20, 0x70, 0x10, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x4c, 0x01, 0x22, 0xa3, 0x68, 0xe5, 0x68, - 0x26, 0x8a, 0x5d, 0x1b, 0xb5, 0x42, 0x01, 0xd1, - 0x00, 0x22, 0x06, 0xe0, 0x25, 0x68, 0x01, 0x33, - 0x2e, 0x68, 0xa3, 0x60, 0x26, 0x60, 0x04, 0x35, - 0x03, 0xc5, 0x00, 0x2a, 0x04, 0xd1, 0x01, 0x21, - 0x9d, 0x20, 0x3c, 0x00, 0xfc, 0x7b, 0x00, 0x00, - 0xf9, 0xf7, 0x52, 0xfb, 0x70, 0xbd, 0x03, 0x49, - 0x02, 0x20, 0x08, 0x60, 0x70, 0xbd, 0x00, 0x00, - 0x44, 0xe3, 0x01, 0x00, 0x40, 0x20, 0x07, 0x00, - 0x80, 0xb5, 0x02, 0xf0, 0xb9, 0xf8, 0x80, 0xbd, - 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0xf9, 0xf7, - 0x3f, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20, 0xf9, 0xf7, - 0x37, 0xfb, 0x00, 0x20, 0x3c, 0x00, 0x38, 0x7c, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x2b, 0x20, 0xf9, 0xf7, 0x2f, 0xfb, - 0x02, 0x20, 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49, - 0x01, 0x20, 0x08, 0x61, 0x70, 0x47, 0x7c, 0x78, - 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x23, - 0x0f, 0x1c, 0x17, 0x49, 0x58, 0x43, 0x45, 0x18, - 0x6c, 0x68, 0x30, 0x1c, 0x0b, 0xf0, 0x3f, 0xfe, - 0x00, 0x2f, 0x09, 0xd1, 0x30, 0x1c, 0x3c, 0x00, - 0x74, 0x7c, 0x00, 0x00, 0x03, 0xf0, 0xee, 0xfe, - 0x41, 0x20, 0x07, 0x55, 0x11, 0x48, 0x21, 0x1c, - 0xff, 0xf7, 0xa6, 0xff, 0xf8, 0xbd, 0x41, 0x20, - 0x07, 0x55, 0xa0, 0x6b, 0x00, 0x28, 0x03, 0xd0, - 0x20, 0x1c, 0x00, 0xf0, 0xdf, 0xf9, 0xf5, 0xe7, - 0x20, 0x1c, 0x00, 0xf0, 0xdb, 0xf9, 0xac, 0x68, - 0x00, 0x2c, 0x02, 0xd0, 0x00, 0x20, 0xa8, 0x60, - 0xed, 0xe7, 0x30, 0x1c, 0x05, 0xf0, 0x34, 0xf9, - 0x3c, 0x00, 0xb0, 0x7c, 0x00, 0x00, 0x04, 0x1c, - 0xe8, 0xd1, 0x08, 0x21, 0x0c, 0x20, 0xf9, 0xf7, - 0xf4, 0xfa, 0xe3, 0xe7, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x55, 0x80, 0x00, 0x00, 0x07, 0x4a, - 0x80, 0xb5, 0x50, 0x70, 0x51, 0x60, 0x12, 0x78, - 0x06, 0x4b, 0x80, 0x00, 0x52, 0x01, 0xd2, 0x18, - 0x10, 0x18, 0x40, 0x38, 0x02, 0x68, 0x08, 0x1c, - 0xf8, 0xf7, 0x7b, 0xfb, 0x80, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x7c, 0x00, 0x00, - 0xfc, 0x42, 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x49, - 0x04, 0x1c, 0xc8, 0x70, 0x08, 0x4d, 0xe4, 0x35, - 0xa8, 0x7a, 0x08, 0x71, 0x08, 0x2c, 0x01, 0xd3, - 0xf9, 0xf7, 0xfc, 0xfa, 0xa8, 0x7a, 0x05, 0x49, - 0x40, 0x01, 0x40, 0x18, 0xa1, 0x00, 0x40, 0x58, - 0xf8, 0xf7, 0x60, 0xfb, 0xb0, 0xbd, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0x80, 0x43, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x3c, 0x00, 0x28, 0x7d, - 0x00, 0x00, 0x01, 0xd0, 0x09, 0xf0, 0x1d, 0xf9, - 0x80, 0xbd, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x00, 0x20, 0x08, 0x60, 0x68, 0x68, 0x09, 0xf0, - 0x36, 0xfb, 0x6c, 0x60, 0xb0, 0xbd, 0x10, 0xb5, - 0x04, 0x1c, 0x09, 0xf0, 0x34, 0xfb, 0x21, 0x68, - 0x00, 0x29, 0x00, 0xd1, 0x64, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x00, 0x21, 0x01, 0x60, 0x40, 0x60, - 0x70, 0x47, 0xf8, 0xb5, 0x46, 0x68, 0x3c, 0x00, - 0x64, 0x7d, 0x00, 0x00, 0x04, 0x1c, 0x40, 0x6a, - 0x35, 0x1c, 0x0a, 0x35, 0x00, 0x28, 0x04, 0xd0, - 0x20, 0x1c, 0xf9, 0xf7, 0x89, 0xfd, 0x07, 0x1c, - 0x00, 0xe0, 0x04, 0x27, 0x29, 0x1c, 0x60, 0x69, - 0x00, 0xf0, 0xf6, 0xfc, 0x79, 0x00, 0x0f, 0x18, - 0xba, 0x88, 0xf1, 0x8a, 0x05, 0x1c, 0x8a, 0x42, - 0x05, 0xd1, 0x30, 0x88, 0x00, 0x05, 0x02, 0xd5, - 0x04, 0xf0, 0xbe, 0xfb, 0x3c, 0xe0, 0x28, 0x68, - 0x3c, 0x00, 0xa0, 0x7d, 0x00, 0x00, 0x00, 0x28, - 0x0f, 0xd0, 0x01, 0x32, 0x8a, 0x42, 0x04, 0xd1, - 0xf9, 0xf7, 0x0f, 0xfc, 0x21, 0x68, 0xc1, 0x60, - 0x0b, 0xe0, 0xf9, 0xf7, 0xf0, 0xfb, 0xf0, 0x8a, - 0x00, 0x07, 0x04, 0xd0, 0x00, 0x21, 0x29, 0x60, - 0x29, 0xe0, 0x08, 0x07, 0x27, 0xd1, 0x20, 0x68, - 0x28, 0x60, 0xf0, 0x8a, 0xb8, 0x80, 0x13, 0x48, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x31, 0x88, - 0x49, 0x05, 0x3c, 0x00, 0xdc, 0x7d, 0x00, 0x00, - 0x18, 0xd4, 0x29, 0x68, 0x21, 0x60, 0x00, 0x21, - 0x29, 0x60, 0xe1, 0x69, 0x00, 0x29, 0x0d, 0xd0, - 0x89, 0x79, 0x02, 0x29, 0x0a, 0xd1, 0x08, 0x21, - 0x21, 0x86, 0x21, 0x1c, 0x38, 0x31, 0xa1, 0x62, - 0x22, 0x1c, 0xdc, 0x30, 0x08, 0x49, 0x02, 0xf0, - 0x81, 0xf9, 0xf8, 0xbd, 0x20, 0x1c, 0x00, 0xf0, - 0x5f, 0xf8, 0xfa, 0xe7, 0x20, 0x1c, 0xf9, 0xf7, - 0xef, 0xfc, 0xf6, 0xe7, 0x3c, 0x00, 0x18, 0x7e, - 0x00, 0x00, 0x20, 0x68, 0xf9, 0xf7, 0xbd, 0xfb, - 0xf7, 0xe7, 0xc4, 0x69, 0x01, 0x00, 0xb9, 0x71, - 0x00, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, 0x09, 0x78, - 0x01, 0x24, 0xc9, 0x07, 0x21, 0xd5, 0x02, 0xf0, - 0x8c, 0xff, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24, - 0x1b, 0xe0, 0x0e, 0x4e, 0x75, 0x6e, 0x00, 0x2d, - 0x17, 0xd0, 0x34, 0x6e, 0x06, 0x22, 0x31, 0x1c, - 0x38, 0x1c, 0xf8, 0xf7, 0xd4, 0xfa, 0x3c, 0x00, - 0x54, 0x7e, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd1, - 0x01, 0x20, 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20, - 0x04, 0x1c, 0x03, 0xe0, 0x01, 0x3d, 0x06, 0x36, - 0x00, 0x2d, 0xee, 0xd1, 0x00, 0x2c, 0x03, 0xd1, - 0x02, 0x4e, 0xb0, 0x6e, 0x01, 0x30, 0xb0, 0x66, - 0x20, 0x1c, 0xf8, 0xbd, 0x10, 0x79, 0x01, 0x00, - 0x30, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x06, 0x49, - 0x00, 0x22, 0x1c, 0x23, 0xcc, 0x56, 0xac, 0x42, - 0x3c, 0x00, 0x90, 0x7e, 0x00, 0x00, 0x01, 0xd1, - 0x08, 0x1c, 0x30, 0xbd, 0x01, 0x32, 0x48, 0x31, - 0x01, 0x2a, 0xf5, 0xd3, 0x30, 0xbd, 0xcc, 0x6d, - 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x00, 0x22, - 0x1c, 0x23, 0x53, 0x43, 0xe3, 0x58, 0x83, 0x42, - 0x04, 0xd1, 0x1c, 0x20, 0x50, 0x43, 0x00, 0x19, - 0x0a, 0x60, 0x10, 0xbd, 0x01, 0x32, 0x0e, 0x2a, - 0xf2, 0xd3, 0x00, 0x20, 0x10, 0xbd, 0xdc, 0x71, - 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x7e, 0x00, 0x00, - 0xf0, 0xb5, 0x41, 0x68, 0x95, 0xb0, 0x07, 0x1c, - 0x90, 0x37, 0x13, 0x91, 0x04, 0x1c, 0xf8, 0x78, - 0x25, 0x1c, 0x80, 0x35, 0xc6, 0x07, 0x28, 0x79, - 0xf6, 0x0f, 0x4a, 0x49, 0x02, 0x28, 0x4d, 0xd1, - 0x0a, 0x6d, 0x00, 0x2a, 0x4a, 0xd0, 0x48, 0x68, - 0x01, 0x30, 0x48, 0x60, 0x0a, 0xf0, 0x58, 0xff, - 0x44, 0x49, 0x08, 0x61, 0x48, 0x61, 0x13, 0x99, - 0x09, 0x79, 0xc9, 0x07, 0x3c, 0x00, 0x08, 0x7f, - 0x00, 0x00, 0x01, 0xd4, 0x41, 0x49, 0x88, 0x61, - 0x20, 0x68, 0x06, 0x22, 0x06, 0x90, 0xa1, 0x68, - 0x03, 0xa8, 0xf8, 0xf7, 0xee, 0xfa, 0x06, 0x22, - 0x04, 0xa8, 0x02, 0x30, 0xe1, 0x68, 0xf8, 0xf7, - 0xe8, 0xfa, 0x07, 0xa8, 0x06, 0x22, 0x21, 0x69, - 0xf8, 0xf7, 0xe3, 0xfa, 0xb8, 0x78, 0x08, 0xab, - 0x00, 0x21, 0x98, 0x70, 0x0c, 0x96, 0x63, 0x6a, - 0x20, 0x1c, 0xa0, 0x30, 0x0a, 0x1c, 0x3c, 0x00, - 0x44, 0x7f, 0x00, 0x00, 0x00, 0x2b, 0x02, 0xd0, - 0x02, 0x8a, 0x52, 0x07, 0x52, 0x0f, 0x08, 0xab, - 0xda, 0x70, 0x00, 0xab, 0x99, 0x84, 0x13, 0x99, - 0x09, 0x88, 0xc9, 0x0b, 0xd9, 0x84, 0x69, 0x6b, - 0x10, 0xab, 0x10, 0x91, 0xa9, 0x6b, 0x11, 0x91, - 0x80, 0x8b, 0x29, 0x49, 0x18, 0x81, 0x09, 0x6d, - 0x03, 0xa8, 0xf8, 0xf7, 0x32, 0xfa, 0x29, 0x79, - 0x68, 0x6b, 0x0b, 0xf0, 0x4d, 0xfd, 0x29, 0x79, - 0x3c, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xa8, 0x6b, - 0x0b, 0xf0, 0x67, 0xfd, 0x3d, 0xe0, 0x00, 0x28, - 0x38, 0xd1, 0x48, 0x6d, 0x14, 0x90, 0x00, 0x28, - 0x34, 0xd0, 0x20, 0x68, 0x06, 0x22, 0x03, 0x90, - 0xa1, 0x68, 0x68, 0x46, 0xf8, 0xf7, 0xab, 0xfa, - 0x06, 0x22, 0x68, 0x46, 0x80, 0x18, 0xe1, 0x68, - 0xf8, 0xf7, 0xa5, 0xfa, 0x05, 0xa8, 0x06, 0x22, - 0x21, 0x69, 0xf8, 0xf7, 0xa0, 0xfa, 0x00, 0x21, - 0x04, 0x91, 0x3c, 0x00, 0xbc, 0x7f, 0x00, 0x00, - 0xb9, 0x78, 0x08, 0xa8, 0x10, 0xab, 0x01, 0x72, - 0x08, 0x96, 0xe9, 0x68, 0x0b, 0x91, 0x69, 0x79, - 0x41, 0x72, 0x68, 0x6b, 0x0e, 0x90, 0xa8, 0x6b, - 0x10, 0x90, 0x28, 0x8d, 0xd8, 0x80, 0x68, 0x8d, - 0x18, 0x81, 0xe1, 0x69, 0x0c, 0xa8, 0x00, 0x29, - 0x04, 0xd0, 0x89, 0x79, 0x01, 0x70, 0x20, 0x6a, - 0x0d, 0x90, 0x01, 0xe0, 0x07, 0x21, 0x01, 0x70, - 0x68, 0x46, 0x14, 0x99, 0x3c, 0x00, 0xf8, 0x7f, - 0x00, 0x00, 0xf8, 0xf7, 0xef, 0xf9, 0x02, 0xe0, - 0x20, 0x68, 0xf9, 0xf7, 0xca, 0xfa, 0x20, 0x1c, - 0xf9, 0xf7, 0xf5, 0xfb, 0x15, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x22, 0x01, 0x89, - 0x0c, 0x31, 0x01, 0x81, 0x05, 0x68, 0x21, 0x1c, - 0x0c, 0x3d, 0x05, 0x60, 0xa8, 0x18, 0xf8, 0xf7, - 0x64, 0xfa, 0x06, 0x22, 0xa1, 0x18, 0x3c, 0x00, - 0x34, 0x80, 0x00, 0x00, 0x28, 0x1c, 0xf8, 0xf7, - 0x5f, 0xfa, 0xa0, 0x8f, 0x00, 0x09, 0xe0, 0x62, - 0x20, 0x63, 0x03, 0x48, 0x01, 0x69, 0x20, 0x1c, - 0xf8, 0xf7, 0xc7, 0xf9, 0xb0, 0xbd, 0x00, 0x00, - 0x7c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x60, 0x36, 0x05, 0x1c, 0x70, 0x7a, 0x0c, 0x23, - 0x25, 0x49, 0x58, 0x43, 0x44, 0x18, 0xa8, 0x6b, - 0x00, 0x27, 0x00, 0x28, 0x06, 0xd0, 0xa0, 0x78, - 0x3c, 0x00, 0x70, 0x80, 0x00, 0x00, 0x01, 0x28, - 0x03, 0xd1, 0xa7, 0x70, 0x70, 0x7a, 0x0a, 0xf0, - 0xb6, 0xfd, 0x2a, 0x1c, 0x0c, 0x21, 0x80, 0x20, - 0x0b, 0xf0, 0x95, 0xfb, 0xa8, 0x6b, 0x00, 0x28, - 0x33, 0xd0, 0xa0, 0x78, 0x02, 0x28, 0x0b, 0xd0, - 0x04, 0x28, 0x22, 0xd1, 0xa7, 0x70, 0x2f, 0x1c, - 0x40, 0x37, 0x78, 0x78, 0x02, 0x28, 0x0c, 0xd1, - 0x70, 0x7a, 0x0a, 0xf0, 0xa0, 0xfd, 0x18, 0xe0, - 0x03, 0x20, 0x3c, 0x00, 0xac, 0x80, 0x00, 0x00, - 0xa0, 0x70, 0x12, 0x49, 0x00, 0x20, 0x14, 0x39, - 0x09, 0x69, 0xf8, 0xf7, 0x90, 0xf9, 0x0f, 0xe0, - 0x2c, 0x1c, 0x07, 0xe0, 0x78, 0x78, 0x41, 0x21, - 0x22, 0x1c, 0x08, 0x55, 0x0c, 0x21, 0x80, 0x20, - 0x0b, 0xf0, 0x70, 0xfb, 0x60, 0x34, 0x60, 0x7a, - 0x04, 0xf0, 0x20, 0xff, 0x04, 0x1c, 0xf1, 0xd1, - 0x70, 0x7a, 0x40, 0x35, 0xa9, 0x8b, 0x00, 0x02, - 0x09, 0x09, 0x09, 0x04, 0x3c, 0x00, 0xe8, 0x80, - 0x00, 0x00, 0x08, 0x43, 0x81, 0x21, 0x01, 0x43, - 0x0c, 0x20, 0x0b, 0xf0, 0xa0, 0xfa, 0xf8, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0xf8, 0xb5, - 0x1c, 0x49, 0x05, 0x1c, 0x88, 0x6a, 0x01, 0x30, - 0x88, 0x62, 0x28, 0x1c, 0x0b, 0xf0, 0x7d, 0xfd, - 0x04, 0x1c, 0x11, 0xd0, 0x2b, 0x1c, 0x20, 0x33, - 0x1e, 0x1c, 0x5a, 0x79, 0x20, 0x1c, 0xb4, 0x30, - 0x19, 0x79, 0x14, 0x4f, 0xfd, 0xf7, 0x3c, 0x00, - 0x24, 0x81, 0x00, 0x00, 0x89, 0xf8, 0xaa, 0x7a, - 0x20, 0x1c, 0xb8, 0x30, 0xb1, 0x79, 0xfd, 0xf7, - 0xb9, 0xf8, 0x00, 0x2f, 0x04, 0xd1, 0x01, 0x21, - 0x28, 0x68, 0xfa, 0xf7, 0x6d, 0xfa, 0xf8, 0xbd, - 0x60, 0x68, 0xbc, 0x21, 0xc0, 0x8a, 0x08, 0x53, - 0x28, 0x68, 0x00, 0x21, 0xfa, 0xf7, 0x64, 0xfa, - 0x00, 0x28, 0x09, 0xd0, 0x06, 0x49, 0xc8, 0x6a, - 0x01, 0x30, 0xc8, 0x62, 0x00, 0x2c, 0xee, 0xd0, - 0x3c, 0x00, 0x60, 0x81, 0x00, 0x00, 0x20, 0x1c, - 0xf9, 0xf7, 0x47, 0xfb, 0xea, 0xe7, 0x20, 0x1c, - 0xf8, 0xf7, 0x3c, 0xf9, 0xe6, 0xe7, 0xc4, 0x69, - 0x01, 0x00, 0xa1, 0xff, 0x00, 0x00, 0xf8, 0xb5, - 0x16, 0x4c, 0x05, 0x1f, 0x00, 0x22, 0x21, 0x1c, - 0xa0, 0x31, 0x03, 0xe0, 0x28, 0x68, 0xa0, 0x42, - 0x09, 0xd0, 0x20, 0x34, 0xa1, 0x42, 0xf9, 0xd1, - 0x00, 0x2a, 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20, - 0xf9, 0xf7, 0x3c, 0x00, 0x9c, 0x81, 0x00, 0x00, - 0x83, 0xf8, 0xf8, 0xbd, 0x0d, 0x4f, 0xbe, 0x79, - 0x60, 0x69, 0x01, 0x30, 0x60, 0x61, 0xf8, 0xf7, - 0x97, 0xfd, 0xa8, 0x42, 0x07, 0xd1, 0xa0, 0x88, - 0x04, 0x30, 0xf8, 0xf7, 0x97, 0xfd, 0xe0, 0x69, - 0x01, 0x30, 0xe0, 0x61, 0x05, 0xe0, 0x20, 0x68, - 0x28, 0x60, 0x25, 0x60, 0xa0, 0x69, 0x01, 0x30, - 0xa0, 0x61, 0xbe, 0x71, 0xe5, 0xe7, 0x00, 0x00, - 0xd0, 0x5c, 0x01, 0x00, 0x3c, 0x00, 0xd8, 0x81, - 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x00, 0x29, - 0x01, 0xdb, 0x06, 0x29, 0x01, 0xdb, 0x02, 0x20, - 0x70, 0x47, 0x06, 0x4b, 0xc9, 0x00, 0x5a, 0x5c, - 0xc9, 0x18, 0x02, 0x70, 0x4a, 0x78, 0x42, 0x70, - 0x8a, 0x78, 0x82, 0x70, 0x49, 0x68, 0x41, 0x60, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0xcc, 0x5a, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf9, 0xf7, 0x3c, 0x00, - 0x14, 0x82, 0x00, 0x00, 0x75, 0xf8, 0x10, 0x48, - 0x40, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24, - 0x10, 0x2d, 0x00, 0xd3, 0x0f, 0x25, 0x06, 0x20, - 0x0b, 0x49, 0x60, 0x43, 0x12, 0x31, 0x40, 0x18, - 0x41, 0x78, 0x80, 0x78, 0x49, 0x19, 0x09, 0x06, - 0x09, 0x0e, 0x88, 0x42, 0x00, 0xd2, 0x01, 0x1c, - 0x01, 0x20, 0x88, 0x40, 0x05, 0x49, 0x01, 0x38, - 0x09, 0x68, 0x08, 0x40, 0x00, 0x04, 0x00, 0x0c, - 0x3c, 0x00, 0x50, 0x82, 0x00, 0x00, 0x02, 0xf0, - 0x44, 0xfe, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x7a, - 0x01, 0x00, 0x08, 0x20, 0x07, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x09, 0xf0, 0xcf, 0xfd, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0, - 0x82, 0xfd, 0x05, 0x61, 0xb0, 0xbd, 0x80, 0xb5, - 0x0a, 0xf0, 0x97, 0xfd, 0x03, 0x4a, 0x0c, 0x32, - 0x06, 0xca, 0x89, 0x18, 0x08, 0x1a, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x82, 0x00, 0x00, - 0xa0, 0x7d, 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4c, - 0x04, 0x9e, 0x64, 0x68, 0x0d, 0xe0, 0x65, 0x68, - 0x85, 0x42, 0x09, 0xd1, 0x20, 0x7a, 0x08, 0x70, - 0xe0, 0x68, 0x10, 0x60, 0x20, 0x69, 0x18, 0x60, - 0x20, 0x7d, 0x30, 0x80, 0x01, 0x20, 0x70, 0xbd, - 0x24, 0x68, 0x00, 0x2c, 0xef, 0xd1, 0x00, 0x20, - 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0x82, - 0x00, 0x00, 0x20, 0x30, 0x81, 0x7b, 0x20, 0x69, - 0x04, 0x30, 0xfd, 0xf7, 0x64, 0xf9, 0x01, 0x1c, - 0x62, 0x20, 0x02, 0x5b, 0x63, 0x6a, 0x40, 0x34, - 0x20, 0x78, 0x02, 0xf0, 0xce, 0xfd, 0x10, 0xbd, - 0x00, 0x00, 0x0b, 0x49, 0x10, 0xb5, 0x08, 0x88, - 0x8a, 0x69, 0x0a, 0x23, 0x50, 0x43, 0x58, 0x43, - 0x0e, 0xd0, 0x08, 0x4a, 0x53, 0x89, 0x94, 0x88, - 0xd2, 0x88, 0x1b, 0x19, 0x52, 0x04, 0x3c, 0x00, - 0x04, 0x83, 0x00, 0x00, 0x52, 0x0c, 0x9a, 0x18, - 0xc9, 0x68, 0x06, 0x32, 0x4a, 0x43, 0x0a, 0x21, - 0x51, 0x43, 0xf8, 0xf7, 0xfd, 0xf9, 0x10, 0xbd, - 0xc8, 0x74, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x43, 0x1c, 0x01, 0xd1, 0x10, 0x48, - 0x10, 0xbd, 0x0f, 0x4a, 0x0e, 0x4b, 0x94, 0x3a, - 0x12, 0x68, 0x44, 0x3b, 0x1b, 0x7a, 0x10, 0xe0, - 0x54, 0x68, 0x84, 0x42, 0x0c, 0xd1, 0x00, 0x29, - 0x3c, 0x00, 0x40, 0x83, 0x00, 0x00, 0x0f, 0xd1, - 0x02, 0x2b, 0x03, 0xd1, 0xd4, 0x7b, 0x02, 0x2c, - 0x0a, 0xd2, 0x04, 0xe0, 0x00, 0x2b, 0x05, 0xd1, - 0xd4, 0x7b, 0xe4, 0x07, 0x04, 0xd4, 0x12, 0x68, - 0x00, 0x2a, 0xec, 0xd1, 0x00, 0x20, 0x10, 0xbd, - 0x10, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x38, 0x6f, - 0x01, 0x00, 0x01, 0x1c, 0x01, 0x20, 0x01, 0x29, - 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, 0x00, 0xb5, - 0x02, 0x1c, 0x3c, 0x00, 0x7c, 0x83, 0x00, 0x00, - 0xfd, 0xf7, 0xce, 0xf8, 0x00, 0x28, 0x08, 0xd0, - 0x10, 0x1c, 0xff, 0xf7, 0xf1, 0xff, 0x18, 0x23, - 0x03, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x69, - 0x00, 0xbd, 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00, - 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x28, - 0x00, 0xd1, 0x08, 0x48, 0x07, 0x49, 0x00, 0x68, - 0x50, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x02, 0xd0, - 0x02, 0x29, 0x04, 0xd1, 0x3c, 0x00, 0xb8, 0x83, - 0x00, 0x00, 0x00, 0xe0, 0x01, 0x21, 0x00, 0xf0, - 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x12, 0x4a, - 0x12, 0x4b, 0x12, 0x7a, 0x2c, 0x3b, 0x00, 0x2a, - 0x03, 0xd1, 0x5a, 0x68, 0x00, 0x2a, 0x18, 0xd1, - 0x04, 0xe0, 0x02, 0x2a, 0x02, 0xd1, 0x9a, 0x68, - 0x00, 0x2a, 0x12, 0xd1, 0x00, 0x20, 0x70, 0x47, - 0xc2, 0x7b, 0x8a, 0x42, 0x01, 0xd0, 0x3c, 0x00, - 0xf4, 0x83, 0x00, 0x00, 0x03, 0x2a, 0x0a, 0xd1, - 0x82, 0x7e, 0x01, 0x2a, 0x07, 0xd1, 0x02, 0x7f, - 0x01, 0x32, 0x12, 0x06, 0x12, 0x0e, 0x02, 0x77, - 0xc3, 0x7e, 0x9a, 0x42, 0xee, 0xd2, 0x00, 0x68, - 0x00, 0x28, 0xec, 0xd1, 0x70, 0x47, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0xf7, 0xb5, 0x84, 0x46, - 0x00, 0x20, 0x01, 0x27, 0x00, 0x24, 0x00, 0x25, - 0x88, 0xb0, 0x07, 0xe0, 0x62, 0x46, 0x52, 0x5d, - 0x3c, 0x00, 0x30, 0x84, 0x00, 0x00, 0x00, 0x2a, - 0x05, 0xd0, 0xab, 0x00, 0x6e, 0x46, 0xf2, 0x50, - 0x01, 0x35, 0x8d, 0x42, 0xf5, 0xd3, 0x00, 0x2d, - 0x00, 0xd0, 0x01, 0x20, 0x00, 0x28, 0x28, 0xd0, - 0x00, 0x27, 0x16, 0x4c, 0x6e, 0x46, 0x22, 0xe0, - 0x20, 0x1c, 0x00, 0xf0, 0x30, 0xf8, 0x01, 0x28, - 0x01, 0xd0, 0x07, 0x28, 0x06, 0xd1, 0x00, 0x21, - 0x20, 0x1c, 0x00, 0xf0, 0x34, 0xf8, 0x31, 0x68, - 0x88, 0x42, 0x3c, 0x00, 0x6c, 0x84, 0x00, 0x00, - 0x01, 0xd2, 0x02, 0x27, 0x14, 0xe0, 0x20, 0x68, - 0xc9, 0x00, 0x0c, 0x18, 0x08, 0x3c, 0x20, 0x1c, - 0x00, 0xf0, 0x1c, 0xf8, 0x07, 0x28, 0x07, 0xd1, - 0x01, 0x20, 0x01, 0x2d, 0x00, 0xd0, 0x00, 0x20, - 0x24, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x08, 0x34, - 0x01, 0x3d, 0x04, 0x36, 0x00, 0x2d, 0xda, 0xd1, - 0x0a, 0x98, 0x04, 0x60, 0x0b, 0xb0, 0x38, 0x1c, - 0xf0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x84, - 0x00, 0x00, 0x20, 0x52, 0x01, 0x00, 0x00, 0x68, - 0x00, 0x29, 0x01, 0xd0, 0x80, 0x02, 0x80, 0x0a, - 0x70, 0x47, 0x10, 0xb5, 0x40, 0x68, 0x80, 0x00, - 0x44, 0x0f, 0x08, 0x2c, 0x03, 0xd3, 0x02, 0x21, - 0x87, 0x20, 0xf8, 0xf7, 0xec, 0xfe, 0x20, 0x1c, - 0x10, 0xbd, 0x00, 0x29, 0x02, 0xd0, 0x00, 0x68, - 0x80, 0x0d, 0x70, 0x47, 0x40, 0x68, 0x80, 0x05, - 0x80, 0x0d, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x84, 0x00, 0x00, 0x10, 0xb5, 0x40, 0x68, - 0x40, 0x01, 0x44, 0x0f, 0x05, 0x2c, 0x03, 0xd3, - 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7, 0xd6, 0xfe, - 0x20, 0x1c, 0x10, 0xbd, 0xf8, 0xb5, 0x05, 0x1c, - 0x88, 0x0a, 0x00, 0x90, 0x1c, 0x48, 0x8e, 0x05, - 0xc0, 0x69, 0xb6, 0x0d, 0x17, 0x1c, 0x1c, 0x1c, - 0x00, 0x28, 0x05, 0xd1, 0x18, 0x48, 0x81, 0x69, - 0x8d, 0x42, 0x1d, 0xd0, 0x85, 0x61, 0x11, 0xe0, - 0x3c, 0x00, 0x20, 0x85, 0x00, 0x00, 0xfd, 0xf7, - 0xe8, 0xf8, 0x15, 0x49, 0x09, 0x78, 0x0e, 0x29, - 0x07, 0xd1, 0x00, 0x28, 0x05, 0xd0, 0x11, 0x49, - 0x50, 0x31, 0x06, 0x23, 0xc9, 0x56, 0xf9, 0xf7, - 0x06, 0xfa, 0x0e, 0x49, 0x00, 0x20, 0xc8, 0x61, - 0x8d, 0x61, 0x29, 0x1c, 0x20, 0x1c, 0xf8, 0xf7, - 0xe2, 0xf8, 0x79, 0x43, 0x20, 0x1c, 0xf8, 0xf7, - 0xde, 0xf8, 0x08, 0x48, 0x41, 0x61, 0x20, 0x1c, - 0x00, 0x99, 0x3c, 0x00, 0x5c, 0x85, 0x00, 0x00, - 0xf8, 0xf7, 0xd8, 0xf8, 0x05, 0x48, 0x40, 0x69, - 0x0a, 0x18, 0xa2, 0x42, 0x01, 0xd2, 0x40, 0x18, - 0x01, 0xe0, 0x40, 0x18, 0x00, 0x1b, 0x80, 0x02, - 0x80, 0x19, 0xf8, 0xbd, 0xac, 0x7c, 0x01, 0x00, - 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, - 0x06, 0x1c, 0x14, 0x1c, 0x1d, 0x1c, 0x07, 0xf0, - 0xa1, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0x20, 0x1c, - 0x02, 0xf0, 0xfc, 0xfb, 0x3c, 0x00, 0x98, 0x85, - 0x00, 0x00, 0x00, 0x28, 0x04, 0xd0, 0x08, 0x48, - 0x00, 0x78, 0x02, 0xf0, 0xe4, 0xfb, 0x04, 0x1c, - 0x01, 0x21, 0x00, 0x2e, 0xac, 0x72, 0x00, 0xd0, - 0x39, 0x1c, 0x20, 0x1c, 0x02, 0xf0, 0x07, 0xfc, - 0x28, 0x60, 0x00, 0x20, 0x28, 0x72, 0x6c, 0x72, - 0xf8, 0xbd, 0x90, 0x57, 0x01, 0x00, 0x03, 0x1c, - 0x0a, 0x48, 0x10, 0xb5, 0x00, 0x24, 0x02, 0x1c, - 0xa0, 0x32, 0x03, 0xe0, 0x81, 0x88, 0x3c, 0x00, - 0xd4, 0x85, 0x00, 0x00, 0x99, 0x42, 0x09, 0xd2, - 0x20, 0x30, 0x82, 0x42, 0xf9, 0xd1, 0x00, 0x2c, - 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20, 0xf8, 0xf7, - 0x5d, 0xfe, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xd0, 0x5c, 0x01, 0x00, 0xff, 0xb5, 0x06, 0x1c, - 0x00, 0x20, 0x81, 0xb0, 0x10, 0x60, 0x1f, 0x1c, - 0x01, 0x25, 0x14, 0x1c, 0x30, 0x1c, 0xff, 0xf7, - 0x6d, 0xff, 0x05, 0x28, 0x12, 0xd2, 0x02, 0xa3, - 0x3c, 0x00, 0x10, 0x86, 0x00, 0x00, 0x1b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03, - 0x03, 0x03, 0x08, 0x00, 0x39, 0x1c, 0x30, 0x1c, - 0xff, 0xf7, 0x55, 0xff, 0x03, 0xe0, 0x02, 0x98, - 0xf8, 0xf7, 0xeb, 0xf8, 0x01, 0x30, 0x20, 0x60, - 0x04, 0xe0, 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7, - 0x34, 0xfe, 0x00, 0x25, 0x20, 0x68, 0x80, 0x28, - 0x04, 0xd9, 0x06, 0x21, 0x87, 0x20, 0xf8, 0xf7, - 0x2c, 0xfe, 0x3c, 0x00, 0x4c, 0x86, 0x00, 0x00, - 0x00, 0x25, 0x28, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, - 0x70, 0xb5, 0x17, 0x4c, 0x60, 0x6c, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x1d, 0xe0, 0x16, 0x4e, - 0x14, 0x4d, 0x31, 0x88, 0xa0, 0x6c, 0x00, 0x28, - 0x08, 0xd0, 0x28, 0x78, 0x81, 0x42, 0x05, 0xd9, - 0xf8, 0xf7, 0x4c, 0xf8, 0x01, 0x38, 0xfa, 0xf7, - 0x51, 0xfe, 0x0e, 0xe0, 0xe0, 0x6c, 0x00, 0x28, - 0x0a, 0xd0, 0x00, 0x20, 0x3c, 0x00, 0x88, 0x86, - 0x00, 0x00, 0xfa, 0xf7, 0x4a, 0xfe, 0x29, 0x78, - 0x32, 0x88, 0x91, 0x42, 0x04, 0xd9, 0x90, 0x42, - 0x02, 0xd9, 0x10, 0x1c, 0x00, 0xe0, 0x08, 0x1c, - 0xfa, 0xf7, 0xdf, 0xfd, 0xe1, 0x6b, 0x44, 0x1a, - 0x0a, 0xf0, 0x81, 0xfb, 0x20, 0x1a, 0x00, 0xd5, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0xf8, 0x60, 0x01, 0x00, 0xfc, 0x60, - 0x01, 0x00, 0xff, 0xb5, 0x27, 0x4e, 0x3c, 0x00, - 0xc4, 0x86, 0x00, 0x00, 0x04, 0x1c, 0xb0, 0x79, - 0x0f, 0x1c, 0x15, 0x1c, 0x81, 0xb0, 0x00, 0x90, - 0x0a, 0xf0, 0x6c, 0xfb, 0xc1, 0x19, 0x23, 0x48, - 0x07, 0x68, 0x00, 0x2f, 0x05, 0xd1, 0x0a, 0x21, - 0x80, 0x20, 0xf8, 0xf7, 0xdf, 0xfd, 0x05, 0xb0, - 0xf0, 0xbd, 0x1e, 0x48, 0x40, 0x68, 0x84, 0x46, - 0x00, 0x28, 0x01, 0xd1, 0x00, 0x22, 0x0e, 0xe0, - 0x82, 0x68, 0x03, 0x68, 0xab, 0x42, 0x07, 0xd1, - 0x3c, 0x00, 0x00, 0x87, 0x00, 0x00, 0x03, 0x79, - 0xa3, 0x42, 0x04, 0xd1, 0x0b, 0x21, 0x80, 0x20, - 0xf8, 0xf7, 0xcb, 0xfd, 0x23, 0xe0, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x13, 0x4b, 0xf8, 0x68, - 0x18, 0x60, 0x3d, 0x60, 0x3c, 0x71, 0xb9, 0x60, - 0x04, 0x98, 0x8d, 0x1a, 0x38, 0x61, 0x60, 0x46, - 0x00, 0x23, 0x05, 0xe0, 0x84, 0x68, 0xa4, 0x1a, - 0xac, 0x42, 0x03, 0xda, 0x03, 0x1c, 0xc0, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x3c, 0x87, 0x00, 0x00, - 0xf7, 0xd1, 0xf8, 0x60, 0x00, 0x2b, 0x08, 0xd1, - 0x07, 0x48, 0x3b, 0x1c, 0x47, 0x60, 0x08, 0x48, - 0x06, 0x4a, 0x00, 0x88, 0x0a, 0xf0, 0x8a, 0xfb, - 0x00, 0xe0, 0xdf, 0x60, 0x00, 0x98, 0xb0, 0x71, - 0xc3, 0xe7, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, - 0x7c, 0x5d, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0xf3, 0xb5, 0x83, 0xb0, - 0x04, 0x1c, 0x09, 0xd0, 0x3c, 0x00, 0x78, 0x87, - 0x00, 0x00, 0x20, 0x1c, 0x04, 0x99, 0x09, 0xf0, - 0x8e, 0xfb, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x1c, - 0x30, 0x30, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0xf0, - 0x0e, 0xfb, 0x1e, 0x4a, 0x00, 0x26, 0x04, 0x9f, - 0x01, 0x96, 0x00, 0x90, 0x02, 0x92, 0x02, 0x9c, - 0x00, 0x25, 0x39, 0x1c, 0x20, 0x1c, 0x14, 0x30, - 0x02, 0xf0, 0xc5, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0x26, 0x1c, 0x03, 0xe0, 0x01, 0x35, 0x3c, 0x00, - 0xb4, 0x87, 0x00, 0x00, 0x1c, 0x34, 0x04, 0x2d, - 0xf2, 0xd3, 0x00, 0x2e, 0x22, 0xd1, 0x01, 0x98, - 0x13, 0x4f, 0x01, 0x30, 0x01, 0x90, 0x02, 0x28, - 0xe8, 0xd3, 0x01, 0x21, 0xc9, 0x06, 0x02, 0x9a, - 0x00, 0x20, 0x13, 0x69, 0x00, 0x9c, 0xe3, 0x1a, - 0x8b, 0x42, 0x01, 0xdd, 0x19, 0x1c, 0x16, 0x1c, - 0x01, 0x30, 0x1c, 0x32, 0x04, 0x28, 0xf4, 0xd3, - 0x30, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf8, 0xf7, - 0x3c, 0x00, 0xf0, 0x87, 0x00, 0x00, 0xd3, 0xfe, - 0x30, 0x1c, 0xfd, 0xf7, 0x4a, 0xff, 0x30, 0x1c, - 0x14, 0x30, 0x06, 0x22, 0x04, 0x99, 0xf7, 0xf7, - 0x7a, 0xfe, 0x00, 0x9c, 0x30, 0x1c, 0x34, 0x61, - 0xbd, 0xe7, 0x30, 0x6a, 0x01, 0x00, 0x34, 0x42, - 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5, 0x4c, 0x69, - 0x03, 0xe0, 0xe1, 0x68, 0x81, 0x42, 0x03, 0xd0, - 0x24, 0x68, 0x00, 0x2c, 0xf9, 0xd1, 0x01, 0xe0, - 0x00, 0x2c, 0x3c, 0x00, 0x2c, 0x88, 0x00, 0x00, - 0x03, 0xd1, 0x02, 0x21, 0x02, 0x20, 0xf8, 0xf7, - 0x37, 0xfd, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0x10, 0xb5, 0xc3, 0x07, - 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69, 0x0c, 0x43, - 0x5c, 0x61, 0x1c, 0x7e, 0x14, 0x43, 0x1c, 0x76, - 0x80, 0x07, 0x06, 0xd5, 0x04, 0x48, 0x43, 0x69, - 0x19, 0x43, 0x41, 0x61, 0x01, 0x7e, 0x11, 0x43, - 0x01, 0x76, 0x10, 0xbd, 0x3c, 0x00, 0x68, 0x88, - 0x00, 0x00, 0xfc, 0x57, 0x01, 0x00, 0x18, 0x58, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x16, 0x1c, 0x00, 0xf0, 0x08, 0xf8, 0xa0, 0x07, - 0xc0, 0x17, 0x01, 0x30, 0x32, 0x1c, 0x29, 0x1c, - 0x00, 0xf0, 0x21, 0xf8, 0x70, 0xbd, 0x10, 0xb5, - 0xc3, 0x07, 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69, - 0x8c, 0x43, 0x5c, 0x61, 0x1c, 0x7e, 0x94, 0x43, - 0x1c, 0x76, 0x80, 0x07, 0x06, 0xd5, 0x3c, 0x00, - 0xa4, 0x88, 0x00, 0x00, 0x04, 0x48, 0x43, 0x69, - 0x8b, 0x43, 0x43, 0x61, 0x01, 0x7e, 0x91, 0x43, - 0x01, 0x76, 0x10, 0xbd, 0xfc, 0x57, 0x01, 0x00, - 0x18, 0x58, 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f, - 0x80, 0xb5, 0x01, 0x20, 0x00, 0xf0, 0x02, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x30, 0xb5, 0x15, 0x1c, - 0x0c, 0x1c, 0x00, 0x28, 0x87, 0xb0, 0x02, 0xd0, - 0x1c, 0x22, 0x22, 0x49, 0x01, 0xe0, 0x22, 0x49, - 0x3c, 0x00, 0xe0, 0x88, 0x00, 0x00, 0x1c, 0x22, - 0x68, 0x46, 0xf7, 0xf7, 0x64, 0xfe, 0x05, 0x99, - 0x00, 0xab, 0x1a, 0x7e, 0x8c, 0x43, 0x20, 0x1c, - 0x95, 0x43, 0x02, 0x9a, 0x29, 0x1c, 0x02, 0x40, - 0x02, 0x92, 0x01, 0x9a, 0x02, 0x40, 0x01, 0x92, - 0x00, 0x9a, 0x02, 0x40, 0x00, 0x92, 0x03, 0x9a, - 0x02, 0x40, 0x03, 0x92, 0x98, 0x7c, 0x08, 0x40, - 0x98, 0x74, 0x58, 0x7c, 0x08, 0x40, 0x58, 0x74, - 0x18, 0x7c, 0x3c, 0x00, 0x1c, 0x89, 0x00, 0x00, - 0x08, 0x40, 0x18, 0x74, 0xd8, 0x7c, 0x08, 0x40, - 0xd8, 0x74, 0x02, 0x99, 0x10, 0x48, 0x41, 0x61, - 0x01, 0xaa, 0x06, 0xca, 0x91, 0x43, 0x81, 0x61, - 0x81, 0x68, 0x01, 0x9a, 0x11, 0x43, 0x81, 0x60, - 0x81, 0x68, 0x00, 0x9a, 0x91, 0x43, 0x81, 0x60, - 0x00, 0xaa, 0x06, 0xca, 0x11, 0x43, 0x42, 0x68, - 0x11, 0x43, 0x41, 0x60, 0x41, 0x68, 0x03, 0x9a, - 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00, 0x58, 0x89, - 0x00, 0x00, 0x04, 0xa8, 0x0b, 0xf0, 0x01, 0xf8, - 0x07, 0xb0, 0x30, 0xbd, 0x00, 0x00, 0xfc, 0x57, - 0x01, 0x00, 0x18, 0x58, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x01, 0x1c, - 0x01, 0x20, 0x08, 0xf0, 0xe0, 0xf9, 0x00, 0x2c, - 0x02, 0xd0, 0x03, 0xf0, 0x1c, 0xff, 0x10, 0xbd, - 0xfe, 0xf7, 0xd1, 0xfc, 0x10, 0xbd, 0xf0, 0xb5, - 0x0c, 0x1c, 0x01, 0x0e, 0x01, 0x23, 0x3c, 0x00, - 0x94, 0x89, 0x00, 0x00, 0x1b, 0x06, 0x09, 0x06, - 0x99, 0x42, 0x9f, 0xb0, 0x28, 0xd1, 0x17, 0x49, - 0x08, 0x40, 0x00, 0x21, 0x1a, 0x28, 0x00, 0xd3, - 0x02, 0x21, 0x00, 0x29, 0x19, 0xd1, 0xc5, 0x00, - 0x13, 0x4f, 0x10, 0xa8, 0xee, 0x19, 0xb2, 0x88, - 0x21, 0x68, 0xf7, 0xf7, 0x9d, 0xfd, 0x20, 0x1c, - 0xf8, 0xf7, 0xea, 0xfd, 0x7a, 0x59, 0x01, 0xa9, - 0x10, 0xa8, 0xf7, 0xf7, 0x07, 0xfd, 0x00, 0x28, - 0x3c, 0x00, 0xd0, 0x89, 0x00, 0x00, 0x05, 0xd0, - 0x10, 0x98, 0x01, 0xa9, 0x01, 0x90, 0xb0, 0x79, - 0x00, 0xf0, 0x9d, 0xf8, 0x1f, 0xb0, 0xf0, 0xbd, - 0x2a, 0x20, 0xf8, 0xf7, 0x5e, 0xfc, 0x20, 0x1c, - 0xf8, 0xf7, 0xd5, 0xfd, 0xf6, 0xe7, 0x03, 0x21, - 0x2a, 0x20, 0xf8, 0xf7, 0x56, 0xfc, 0xf1, 0xe7, - 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, 0x24, 0x45, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x80, 0x28, - 0x02, 0xd0, 0x3c, 0x00, 0x0c, 0x8a, 0x00, 0x00, - 0x81, 0x28, 0x08, 0xd1, 0x03, 0xe0, 0x20, 0x1c, - 0x00, 0xf0, 0x06, 0xf9, 0x10, 0xbd, 0x20, 0x1c, - 0xf8, 0xf7, 0xbc, 0xfd, 0x10, 0xbd, 0x03, 0x21, - 0x2c, 0x20, 0xf8, 0xf7, 0x3d, 0xfc, 0xf6, 0xe7, - 0xf0, 0xb5, 0x0c, 0x1c, 0x00, 0x21, 0x8b, 0xb0, - 0x0a, 0x91, 0x01, 0x0e, 0x01, 0x23, 0x1b, 0x06, - 0x09, 0x06, 0x99, 0x42, 0x2a, 0xd1, 0x18, 0x49, - 0x08, 0x40, 0x06, 0x1c, 0x3c, 0x00, 0x48, 0x8a, - 0x00, 0x00, 0x06, 0x2e, 0x01, 0xd3, 0x07, 0x21, - 0x24, 0xe0, 0x20, 0x89, 0xf8, 0xf7, 0xf1, 0xfe, - 0x22, 0x89, 0x21, 0x68, 0x05, 0x1c, 0xf7, 0xf7, - 0x4c, 0xfd, 0x20, 0x1c, 0xf8, 0xf7, 0x99, 0xfd, - 0xf4, 0x00, 0x0f, 0x4e, 0x28, 0x1c, 0x0a, 0xaa, - 0x69, 0x46, 0x33, 0x59, 0xf7, 0xf7, 0xb4, 0xfc, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, 0x07, 0xd1, - 0x28, 0x68, 0x69, 0x46, 0x00, 0x90, 0x3c, 0x00, - 0x84, 0x8a, 0x00, 0x00, 0xa0, 0x19, 0x00, 0x79, - 0x0a, 0x9a, 0x00, 0xf0, 0x09, 0xf9, 0x28, 0x1c, - 0xf8, 0xf7, 0xb0, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd, - 0x01, 0x21, 0x2b, 0x20, 0xf8, 0xf7, 0x02, 0xfc, - 0xf8, 0xe7, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, - 0x28, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x0e, - 0x01, 0x23, 0x1b, 0x06, 0x09, 0x06, 0x99, 0x42, - 0x80, 0xb5, 0x08, 0xd0, 0x5b, 0x00, 0x99, 0x42, - 0x3c, 0x00, 0xc0, 0x8a, 0x00, 0x00, 0x0b, 0xd1, - 0x00, 0x06, 0x00, 0x0e, 0x11, 0x1c, 0x00, 0xf0, - 0x0e, 0xf9, 0x80, 0xbd, 0x05, 0x49, 0x01, 0x40, - 0x10, 0x1c, 0x05, 0xf0, 0xa2, 0xf9, 0x80, 0xbd, - 0x01, 0x21, 0x2d, 0x20, 0xf8, 0xf7, 0xe1, 0xfb, - 0x80, 0xbd, 0x7f, 0xff, 0xff, 0x00, 0x80, 0xb5, - 0x01, 0x1c, 0x0f, 0x20, 0x00, 0xf0, 0x13, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c, 0x04, 0x20, - 0x00, 0xf0, 0x3c, 0x00, 0xfc, 0x8a, 0x00, 0x00, - 0x0d, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c, - 0x17, 0x20, 0x00, 0xf0, 0x07, 0xf8, 0x80, 0xbd, - 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20, 0x00, 0xf0, - 0x01, 0xf8, 0x80, 0xbd, 0xf8, 0xb5, 0x04, 0x1c, - 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43, 0x0f, 0x1c, - 0x19, 0x2c, 0x01, 0xd3, 0xf8, 0xf7, 0xea, 0xfb, - 0x08, 0x48, 0x04, 0x5d, 0x21, 0x1c, 0x00, 0x20, - 0xf8, 0xf7, 0x50, 0xfd, 0x3c, 0x00, 0x38, 0x8b, - 0x00, 0x00, 0x05, 0x1c, 0x22, 0x1c, 0x39, 0x1c, - 0x00, 0x68, 0xf7, 0xf7, 0xda, 0xfc, 0x2a, 0x1c, - 0x31, 0x1c, 0x07, 0x20, 0xf8, 0xf7, 0x11, 0xf9, - 0xf8, 0xbd, 0xf4, 0x45, 0x01, 0x00, 0xf8, 0xb5, - 0x0d, 0x1c, 0x16, 0x1c, 0x04, 0x1c, 0x1f, 0x1c, - 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x39, 0xfd, - 0x14, 0x22, 0x01, 0x68, 0x0e, 0x4b, 0x72, 0x43, - 0xd2, 0x18, 0x0c, 0x71, 0x12, 0x7c, 0x3c, 0x00, - 0x74, 0x8b, 0x00, 0x00, 0x4a, 0x71, 0x0d, 0x60, - 0x0b, 0x4a, 0x8f, 0x71, 0x12, 0x68, 0x7f, 0x2a, - 0x03, 0xd9, 0x52, 0x05, 0x52, 0x0e, 0x80, 0x23, - 0x1a, 0x43, 0xca, 0x71, 0x07, 0x4a, 0x00, 0x23, - 0x51, 0x68, 0x01, 0x31, 0x51, 0x60, 0x02, 0x1c, - 0x81, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x08, 0xf9, - 0xf8, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x3c, 0x00, 0xb0, 0x8b, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7, - 0x0e, 0xfd, 0x21, 0x8b, 0xe2, 0x7d, 0x05, 0x1c, - 0x09, 0x05, 0x52, 0x07, 0x52, 0x0f, 0x49, 0x0c, - 0x00, 0x68, 0x11, 0x43, 0x81, 0x80, 0xa1, 0x7d, - 0x14, 0x23, 0x0e, 0x4a, 0x59, 0x43, 0x89, 0x18, - 0x09, 0x7c, 0xc1, 0x71, 0xe1, 0x6a, 0x01, 0x60, - 0xe1, 0x68, 0x28, 0x1c, 0xf8, 0xf7, 0x17, 0xfc, - 0x0a, 0x48, 0x3c, 0x00, 0xec, 0x8b, 0x00, 0x00, - 0x00, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf7, 0xf7, - 0xf1, 0xfb, 0x07, 0x49, 0x04, 0x31, 0x88, 0x68, - 0x01, 0x30, 0x88, 0x60, 0x00, 0x21, 0x2a, 0x1c, - 0x00, 0x20, 0x23, 0x6b, 0xf8, 0xf7, 0xd2, 0xf8, - 0x01, 0x20, 0xb0, 0xbd, 0x74, 0x40, 0x01, 0x00, - 0x7c, 0x6e, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0x28, 0x8c, - 0x00, 0x00, 0x92, 0xb0, 0x01, 0x68, 0x68, 0x46, - 0x08, 0x22, 0xf7, 0xf7, 0x62, 0xfc, 0x00, 0xab, - 0x98, 0x88, 0x40, 0x07, 0x40, 0x0f, 0xd8, 0x77, - 0x98, 0x88, 0x40, 0x04, 0x00, 0x0d, 0x18, 0x84, - 0xd8, 0x88, 0x58, 0x84, 0x00, 0x98, 0x0d, 0x90, - 0x05, 0x94, 0x20, 0x89, 0x08, 0x38, 0x20, 0x81, - 0x05, 0x98, 0x01, 0x68, 0x08, 0x31, 0x01, 0x60, - 0x00, 0x20, 0x0a, 0x90, 0x0c, 0x90, 0x3c, 0x00, - 0x64, 0x8c, 0x00, 0x00, 0x00, 0x21, 0x11, 0x20, - 0x09, 0xf0, 0x78, 0xfb, 0x05, 0x49, 0x06, 0x4a, - 0x08, 0x68, 0x01, 0x30, 0x08, 0x60, 0x02, 0x21, - 0x02, 0xa8, 0x01, 0xf0, 0xcd, 0xfc, 0x12, 0xb0, - 0x10, 0xbd, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x55, 0x8b, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x20, - 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5, 0x2b, 0x21, - 0x0a, 0xf0, 0x8a, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x8c, 0x00, 0x00, 0xf7, 0xb5, - 0x04, 0x1c, 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43, - 0x17, 0x1c, 0x06, 0x2c, 0x01, 0xd3, 0xf8, 0xf7, - 0x26, 0xfb, 0x0b, 0x48, 0x05, 0x5d, 0x29, 0x1c, - 0x00, 0x20, 0xf8, 0xf7, 0x8c, 0xfc, 0x04, 0x1c, - 0x00, 0x68, 0x01, 0x99, 0x2a, 0x1c, 0xf7, 0xf7, - 0x16, 0xfc, 0x39, 0x1c, 0x20, 0x1c, 0xf8, 0xf7, - 0xa2, 0xfb, 0x22, 0x1c, 0x31, 0x1c, 0x00, 0x23, - 0x02, 0x20, 0x3c, 0x00, 0xdc, 0x8c, 0x00, 0x00, - 0xf8, 0xf7, 0x68, 0xf8, 0xfe, 0xbd, 0x00, 0x00, - 0x20, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x1c, - 0x80, 0xb5, 0x00, 0x23, 0x01, 0x20, 0xf8, 0xf7, - 0x5d, 0xf8, 0x80, 0xbd, 0xff, 0xb5, 0x9f, 0xb0, - 0x1f, 0x1c, 0x05, 0x1c, 0x0a, 0x30, 0x1e, 0x90, - 0x1c, 0xaa, 0x1d, 0xa9, 0x0a, 0xf0, 0x00, 0xff, - 0x00, 0x28, 0x71, 0xd0, 0x00, 0x2f, 0x09, 0xd0, - 0x0a, 0x21, 0x00, 0x20, 0x3c, 0x00, 0x18, 0x8d, - 0x00, 0x00, 0xf8, 0xf7, 0x5e, 0xfc, 0x06, 0x68, - 0x04, 0x1c, 0x30, 0x1d, 0xfa, 0xf7, 0xaf, 0xfa, - 0x05, 0xe0, 0x04, 0x21, 0x00, 0x20, 0xf8, 0xf7, - 0x54, 0xfc, 0x06, 0x68, 0x04, 0x1c, 0x28, 0x89, - 0x36, 0x49, 0x01, 0x22, 0x08, 0x80, 0x70, 0x80, - 0xe8, 0x88, 0x14, 0xa9, 0x30, 0x80, 0x19, 0xa8, - 0xfc, 0xf7, 0xf5, 0xfc, 0xfc, 0xf7, 0xff, 0xfb, - 0x01, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x3c, 0x00, - 0x54, 0x8d, 0x00, 0x00, 0x20, 0x1c, 0x01, 0xf0, - 0xef, 0xf8, 0x19, 0xa9, 0x20, 0x1c, 0x01, 0xf0, - 0xeb, 0xf8, 0x14, 0xa9, 0x20, 0x1c, 0x01, 0xf0, - 0xe7, 0xf8, 0x20, 0x1c, 0x20, 0x99, 0xfd, 0xf7, - 0x4b, 0xfd, 0x00, 0x22, 0x02, 0x21, 0x01, 0xf0, - 0x33, 0xfd, 0x06, 0x1c, 0x1c, 0x99, 0x00, 0x20, - 0x88, 0x61, 0x30, 0x1c, 0xf8, 0xf7, 0x1c, 0xfa, - 0x00, 0x2e, 0x0b, 0xd0, 0x30, 0x7a, 0x00, 0x28, - 0x3c, 0x00, 0x90, 0x8d, 0x00, 0x00, 0x02, 0xd0, - 0x40, 0x21, 0x08, 0x43, 0x30, 0x72, 0x1c, 0x98, - 0x02, 0x22, 0x81, 0x69, 0x11, 0x43, 0x81, 0x61, - 0x04, 0xe0, 0x1c, 0x99, 0x02, 0x22, 0x88, 0x69, - 0x90, 0x43, 0x88, 0x61, 0x1d, 0xaa, 0x06, 0xca, - 0x01, 0xa8, 0x05, 0xf0, 0x58, 0xfb, 0x09, 0xa8, - 0x00, 0x2f, 0x02, 0xd0, 0x02, 0x22, 0x42, 0x72, - 0x01, 0xe0, 0x00, 0x21, 0x41, 0x72, 0x04, 0x94, - 0x01, 0xa8, 0x3c, 0x00, 0xcc, 0x8d, 0x00, 0x00, - 0x04, 0xf0, 0x7a, 0xfb, 0x01, 0x21, 0x1c, 0x98, - 0x08, 0xf0, 0xc8, 0xff, 0x00, 0x2f, 0x04, 0xd0, - 0x1c, 0x98, 0x01, 0x22, 0x81, 0x69, 0x11, 0x43, - 0x81, 0x61, 0xa8, 0x88, 0x1c, 0x9c, 0x01, 0xf0, - 0x9f, 0xfe, 0x02, 0x1c, 0x21, 0x1c, 0x00, 0xe0, - 0x04, 0xe0, 0x07, 0x48, 0x40, 0x88, 0x09, 0xf0, - 0x1f, 0xf8, 0x04, 0xe0, 0x3a, 0x1c, 0x00, 0x21, - 0x05, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0x08, 0x8e, - 0x00, 0x00, 0x9b, 0xf8, 0x00, 0x20, 0x23, 0xb0, - 0xf0, 0xbd, 0xfc, 0x60, 0x01, 0x00, 0x98, 0x7c, - 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0x05, 0x68, 0xa0, 0x1d, 0x01, 0xf0, 0x95, 0xff, - 0x00, 0x28, 0x45, 0xd0, 0x21, 0x1c, 0x14, 0x31, - 0x20, 0x1c, 0x6a, 0x46, 0x0a, 0xf0, 0x55, 0xfe, - 0x00, 0x28, 0x3d, 0xd0, 0xfc, 0xf7, 0x7d, 0xfa, - 0x00, 0x28, 0x39, 0xd1, 0x00, 0x98, 0x3c, 0x00, - 0x44, 0x8e, 0x00, 0x00, 0x4b, 0x21, 0x09, 0x5c, - 0x01, 0x29, 0x34, 0xd1, 0x04, 0x26, 0x09, 0xf0, - 0x19, 0xf9, 0x68, 0x88, 0x00, 0x28, 0x1b, 0xd1, - 0xa8, 0x88, 0x03, 0x21, 0x89, 0x03, 0x88, 0x43, - 0x15, 0x49, 0x00, 0x26, 0x08, 0x80, 0x01, 0x22, - 0x02, 0x21, 0x20, 0x69, 0x01, 0xf0, 0xb8, 0xfc, - 0x04, 0x1c, 0x14, 0xd0, 0x00, 0x98, 0x80, 0x69, - 0x80, 0x07, 0x10, 0xd5, 0xf8, 0xf7, 0x9a, 0xf9, - 0x3c, 0x00, 0x80, 0x8e, 0x00, 0x00, 0x20, 0x1c, - 0xf8, 0xf7, 0xdd, 0xf8, 0x00, 0x28, 0x09, 0xd1, - 0xf8, 0xf7, 0x7f, 0xf9, 0x01, 0x26, 0x00, 0x98, - 0x02, 0x22, 0x81, 0x69, 0x91, 0x43, 0x81, 0x61, - 0x00, 0x21, 0x01, 0xe0, 0x00, 0x98, 0x02, 0x21, - 0x08, 0xf0, 0x61, 0xff, 0x00, 0x98, 0x80, 0x69, - 0xa9, 0x88, 0xc2, 0x07, 0xd2, 0x0f, 0x30, 0x1c, - 0xf9, 0xf7, 0x45, 0xf8, 0xf8, 0xbd, 0xfa, 0x60, - 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x8e, 0x00, 0x00, - 0x1c, 0xb5, 0x04, 0x69, 0x00, 0x23, 0x00, 0x22, - 0x00, 0x2c, 0x13, 0xd1, 0x4b, 0x24, 0x24, 0x5c, - 0x02, 0x2c, 0x03, 0xd1, 0x02, 0x29, 0x05, 0xd0, - 0x01, 0x22, 0x03, 0xe0, 0x02, 0x29, 0x01, 0xd1, - 0x01, 0x22, 0x01, 0x23, 0x00, 0x2a, 0x05, 0xd0, - 0x00, 0x90, 0x04, 0x20, 0x01, 0x93, 0x69, 0x46, - 0x09, 0xf0, 0x36, 0xfa, 0x1c, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x8e, - 0x00, 0x00, 0xf2, 0x21, 0x0f, 0x20, 0x0c, 0x4d, - 0x0a, 0xf0, 0x99, 0xfb, 0x28, 0x78, 0x08, 0x28, - 0x0b, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x07, 0x03, 0x03, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x00, 0x2c, 0x01, 0xd1, 0x05, 0xf0, - 0xbc, 0xfb, 0xb0, 0xbd, 0x01, 0x2c, 0xfc, 0xd1, - 0xff, 0x20, 0x07, 0xf0, 0x38, 0xfa, 0xb0, 0xbd, - 0x00, 0x00, 0x74, 0x66, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x8f, 0x00, 0x00, 0x8c, 0xb5, 0x05, 0x4a, - 0x00, 0xab, 0x11, 0x72, 0x00, 0x90, 0x19, 0x71, - 0x69, 0x46, 0x08, 0x20, 0x09, 0xf0, 0x0a, 0xfa, - 0x8c, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, - 0xf3, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x27, - 0x85, 0xb0, 0x06, 0x68, 0x09, 0xf0, 0x26, 0xff, - 0x98, 0x49, 0x48, 0x63, 0x20, 0x69, 0x03, 0x21, - 0x01, 0xf0, 0x08, 0xfc, 0x96, 0x4d, 0x00, 0x28, - 0x3c, 0x00, 0x70, 0x8f, 0x00, 0x00, 0x4d, 0xd0, - 0x95, 0x49, 0x40, 0x31, 0x09, 0x79, 0x80, 0x78, - 0x81, 0x42, 0x47, 0xd1, 0x01, 0x21, 0x20, 0x69, - 0x01, 0xf0, 0xfb, 0xfb, 0x02, 0x90, 0x20, 0x69, - 0x32, 0x21, 0x01, 0xf0, 0xf6, 0xfb, 0x01, 0x90, - 0x02, 0x1c, 0x8d, 0x48, 0x02, 0x99, 0xfc, 0xf7, - 0x46, 0xff, 0x00, 0x28, 0x36, 0xd0, 0x00, 0x23, - 0x8a, 0x48, 0x02, 0x99, 0x01, 0x9a, 0xfc, 0xf7, - 0xe4, 0xfe, 0x3c, 0x00, 0xac, 0x8f, 0x00, 0x00, - 0x0b, 0x28, 0x2e, 0xd1, 0x86, 0x4a, 0x51, 0x88, - 0x70, 0x89, 0x41, 0x40, 0x03, 0x91, 0x0b, 0x1c, - 0x84, 0x49, 0x0b, 0x40, 0x25, 0xd1, 0x50, 0x80, - 0x03, 0x99, 0x17, 0x1c, 0x00, 0x29, 0x0b, 0xd0, - 0x03, 0x99, 0x48, 0x05, 0x02, 0xd5, 0x38, 0x1c, - 0xfc, 0xf7, 0x40, 0xfe, 0x03, 0x99, 0x88, 0x06, - 0x02, 0xd5, 0x38, 0x1c, 0xfc, 0xf7, 0x24, 0xfe, - 0x2a, 0x21, 0x20, 0x69, 0x3c, 0x00, 0xe8, 0x8f, - 0x00, 0x00, 0x01, 0xf0, 0xc8, 0xfb, 0x00, 0x28, - 0x0d, 0xd0, 0x80, 0x78, 0xe9, 0x69, 0x81, 0x42, - 0x09, 0xd0, 0xe8, 0x61, 0x38, 0x1c, 0xfc, 0xf7, - 0x16, 0xfe, 0x38, 0x1c, 0xfc, 0xf7, 0x07, 0xfe, - 0x38, 0x1c, 0xfc, 0xf7, 0x26, 0xfe, 0x00, 0x27, - 0x20, 0x1c, 0x20, 0x30, 0x04, 0x90, 0x40, 0x7a, - 0x08, 0x28, 0x71, 0xd1, 0x0a, 0xf0, 0xd1, 0xfc, - 0x00, 0x20, 0x68, 0x61, 0x00, 0x23, 0x3c, 0x00, - 0x24, 0x90, 0x00, 0x00, 0x2b, 0x61, 0xa8, 0x68, - 0x66, 0x49, 0x01, 0x30, 0xa8, 0x60, 0x30, 0x89, - 0x5c, 0x31, 0x88, 0x82, 0x01, 0xf0, 0x7a, 0xfd, - 0x62, 0x49, 0x5c, 0x31, 0x08, 0x61, 0x22, 0x6a, - 0x04, 0x98, 0x18, 0x21, 0x00, 0x7a, 0x01, 0xf0, - 0x33, 0xfe, 0xe1, 0x6a, 0x40, 0x18, 0x03, 0x90, - 0x5c, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x0d, 0xd0, - 0x00, 0x2f, 0x0b, 0xd1, 0x59, 0x48, 0x01, 0x23, - 0x3c, 0x00, 0x60, 0x90, 0x00, 0x00, 0x5c, 0x30, - 0x01, 0x68, 0x1b, 0x07, 0x00, 0x22, 0x30, 0x68, - 0x09, 0xf0, 0x49, 0xff, 0x00, 0x28, 0x00, 0xd1, - 0x05, 0x27, 0x00, 0x21, 0xa0, 0x6b, 0x0a, 0xf0, - 0xce, 0xfc, 0x00, 0x21, 0x20, 0x6c, 0x0a, 0xf0, - 0xe8, 0xfc, 0x4f, 0x4b, 0x03, 0xce, 0x03, 0x9a, - 0x5c, 0x33, 0xfc, 0xf7, 0x88, 0xfd, 0x00, 0x20, - 0x4c, 0x4e, 0x05, 0x21, 0xb0, 0x63, 0x20, 0x69, - 0x01, 0xf0, 0x3c, 0x00, 0x9c, 0x90, 0x00, 0x00, - 0x6f, 0xfb, 0x01, 0x1c, 0x01, 0xd1, 0xf0, 0x60, - 0x1c, 0xe0, 0x01, 0x20, 0xf0, 0x60, 0x88, 0x78, - 0x45, 0x4a, 0x01, 0x32, 0x10, 0x70, 0xc8, 0x78, - 0x50, 0x70, 0x47, 0x4a, 0x10, 0x70, 0x30, 0x69, - 0x00, 0x28, 0x0a, 0xd0, 0x4a, 0x78, 0x08, 0x79, - 0x05, 0x31, 0x09, 0xf0, 0xdd, 0xfa, 0x31, 0x69, - 0xf7, 0xf7, 0x85, 0xf9, 0xf0, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0x3b, 0x4a, 0x3c, 0x00, 0xd8, 0x90, - 0x00, 0x00, 0x01, 0x32, 0x10, 0x78, 0x00, 0x28, - 0x08, 0xd1, 0x00, 0x20, 0xa8, 0x61, 0x71, 0x6a, - 0x00, 0x29, 0x03, 0xd0, 0x20, 0x1c, 0x14, 0x30, - 0xf7, 0xf7, 0x74, 0xf9, 0x34, 0x4a, 0x5c, 0x32, - 0x10, 0x69, 0x31, 0x6a, 0x41, 0x18, 0x00, 0xe0, - 0x20, 0xe0, 0x0a, 0x23, 0xd0, 0x68, 0x0a, 0x22, - 0x09, 0xf0, 0xfb, 0xfe, 0x00, 0x28, 0x07, 0xd0, - 0x2d, 0x4a, 0x31, 0x6a, 0x5c, 0x32, 0x3c, 0x00, - 0x14, 0x91, 0x00, 0x00, 0xd0, 0x68, 0x40, 0x1a, - 0x11, 0x69, 0x40, 0x1a, 0x70, 0x60, 0x29, 0x4a, - 0x5c, 0x32, 0xd0, 0x68, 0x30, 0x62, 0xf0, 0x69, - 0x00, 0x28, 0x04, 0xd0, 0xfa, 0xf7, 0x00, 0xfd, - 0x01, 0x20, 0xfa, 0xf7, 0xa1, 0xfc, 0xfa, 0xf7, - 0x81, 0xfc, 0x27, 0x48, 0x00, 0x68, 0x03, 0xf0, - 0x07, 0xf9, 0x06, 0x98, 0x00, 0x28, 0x03, 0xd1, - 0x1e, 0x4e, 0x00, 0x23, 0xb3, 0x60, 0x16, 0xe0, - 0x3c, 0x00, 0x50, 0x91, 0x00, 0x00, 0x1c, 0x4e, - 0x01, 0x20, 0xb0, 0x60, 0x06, 0x98, 0x01, 0x68, - 0x40, 0x68, 0xb0, 0x65, 0x19, 0x48, 0x71, 0x65, - 0x54, 0x30, 0xc0, 0x88, 0x00, 0x28, 0x09, 0xd0, - 0xb1, 0x69, 0x00, 0x29, 0x06, 0xd0, 0x01, 0xf0, - 0xdc, 0xfc, 0x01, 0x1c, 0xe0, 0x6a, 0xb2, 0x69, - 0xf7, 0xf7, 0x2f, 0xf9, 0x00, 0x2f, 0x15, 0xd1, - 0x12, 0x48, 0x01, 0x69, 0x00, 0x29, 0x08, 0xd1, - 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x91, 0x00, 0x00, - 0x01, 0x61, 0x2a, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x00, 0x20, 0xf7, 0xf7, 0x20, 0xf9, - 0x09, 0x49, 0x00, 0x23, 0xcb, 0x62, 0x2b, 0x61, - 0x6b, 0x61, 0x06, 0xf0, 0xb5, 0xf8, 0x07, 0xb0, - 0xf0, 0xbd, 0x6b, 0x68, 0x06, 0x48, 0x00, 0x2b, - 0xf9, 0xd0, 0x02, 0x1d, 0x11, 0x1c, 0x38, 0x1c, - 0xf7, 0xf7, 0x0f, 0xf9, 0xf3, 0xe7, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x91, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xf4, 0x67, - 0x01, 0x00, 0x03, 0x08, 0x00, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x08, 0xb5, - 0xf8, 0xf7, 0x2f, 0xfd, 0x00, 0x90, 0x00, 0xab, - 0x18, 0x88, 0x00, 0x28, 0x0c, 0xd0, 0x05, 0xf0, - 0x50, 0xff, 0x00, 0xab, 0x59, 0x88, 0x18, 0x88, - 0x05, 0xf0, 0x6d, 0xf9, 0xfe, 0xf7, 0x97, 0xf8, - 0x03, 0x20, 0xfb, 0xf7, 0x0e, 0xf8, 0x3c, 0x00, - 0x04, 0x92, 0x00, 0x00, 0x08, 0xbd, 0x01, 0x20, - 0xff, 0xf7, 0xb2, 0xfb, 0x00, 0x20, 0x08, 0xf0, - 0x8d, 0xfe, 0xf7, 0xe7, 0xf8, 0xb5, 0x4f, 0x49, - 0x8c, 0x68, 0x20, 0x6a, 0x00, 0x68, 0x05, 0x78, - 0xfc, 0xf7, 0x68, 0xfa, 0x00, 0x28, 0x12, 0xd0, - 0x2a, 0x07, 0x92, 0x0f, 0x01, 0x21, 0x01, 0x2a, - 0x00, 0xd0, 0x00, 0x21, 0x00, 0x29, 0x03, 0xd0, - 0x29, 0x06, 0x09, 0x0f, 0x0b, 0x29, 0x06, 0xd1, - 0x3c, 0x00, 0x40, 0x92, 0x00, 0x00, 0x2a, 0x21, - 0x09, 0x5d, 0x08, 0x18, 0x90, 0x30, 0x00, 0x7b, - 0xf9, 0xf7, 0x0d, 0xfc, 0x41, 0x4f, 0x3c, 0x3f, - 0xb8, 0x6b, 0x79, 0x6b, 0xf7, 0xf7, 0xc0, 0xf8, - 0xa0, 0x6c, 0x00, 0x26, 0xc6, 0x60, 0x60, 0x6b, - 0x80, 0x08, 0x04, 0xd0, 0xb8, 0x69, 0x01, 0x30, - 0xb8, 0x61, 0x06, 0xf0, 0xdc, 0xf9, 0x39, 0x4d, - 0x28, 0x69, 0x80, 0x05, 0x80, 0x0f, 0x08, 0xd1, - 0x78, 0x69, 0x3c, 0x00, 0x7c, 0x92, 0x00, 0x00, - 0x04, 0x21, 0x01, 0x30, 0x78, 0x61, 0x60, 0x6b, - 0x40, 0x08, 0x40, 0x00, 0x08, 0x43, 0x60, 0x63, - 0xb8, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x60, 0x6b, - 0x08, 0x21, 0x08, 0x43, 0x60, 0x63, 0x20, 0x1c, - 0x20, 0x30, 0x00, 0x90, 0x39, 0x68, 0xf7, 0xf7, - 0x9a, 0xf8, 0x03, 0x20, 0x00, 0x02, 0x28, 0x60, - 0x2b, 0x49, 0x88, 0x68, 0xa0, 0x63, 0xc8, 0x68, - 0xe0, 0x63, 0x08, 0x79, 0x3c, 0x00, 0xb8, 0x92, - 0x00, 0x00, 0xc0, 0x06, 0xc0, 0x0e, 0x25, 0x1c, - 0x40, 0x35, 0x28, 0x71, 0x48, 0x79, 0x68, 0x71, - 0x23, 0x48, 0x3c, 0x38, 0x46, 0x62, 0x00, 0x98, - 0x80, 0x7a, 0x01, 0xf0, 0x5e, 0xfd, 0x00, 0x21, - 0x00, 0x28, 0x21, 0x4a, 0x01, 0xd0, 0x11, 0x78, - 0x03, 0xe0, 0x93, 0x78, 0xdb, 0x07, 0x00, 0xd5, - 0x51, 0x78, 0xa9, 0x71, 0x00, 0x28, 0x04, 0xd0, - 0x1b, 0x49, 0x14, 0x31, 0x08, 0x68, 0x3c, 0x00, - 0xf4, 0x92, 0x00, 0x00, 0x20, 0x64, 0x00, 0xe0, - 0x6e, 0x80, 0xb8, 0x6a, 0xc0, 0x07, 0x02, 0xd5, - 0xff, 0x20, 0x28, 0x71, 0xae, 0x71, 0xe6, 0x61, - 0xb8, 0x68, 0x01, 0x30, 0xb8, 0x60, 0x79, 0x68, - 0x88, 0x42, 0x03, 0xd0, 0x0b, 0x21, 0x85, 0x20, - 0xf7, 0xf7, 0xc4, 0xff, 0x0d, 0x49, 0x88, 0x68, - 0xc0, 0x6c, 0x88, 0x60, 0xfb, 0x6a, 0x00, 0x2b, - 0x0c, 0xd0, 0x0e, 0x4a, 0xd4, 0x7b, 0x00, 0x2b, - 0x3c, 0x00, 0x30, 0x93, 0x00, 0x00, 0x02, 0xdd, - 0x7f, 0x2c, 0x05, 0xd2, 0x01, 0xe0, 0x00, 0x2c, - 0x02, 0xd0, 0xd4, 0x7b, 0xe3, 0x18, 0xd3, 0x73, - 0xfe, 0x62, 0xc9, 0x68, 0x88, 0x42, 0x03, 0xd1, - 0x05, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0xa9, 0xff, - 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x40, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xe8, 0x80, - 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0xfe, 0xb5, - 0x30, 0x4c, 0x3c, 0x00, 0x6c, 0x93, 0x00, 0x00, - 0xa0, 0x6b, 0x21, 0x6b, 0xf7, 0xf7, 0x33, 0xf8, - 0x2d, 0x49, 0x3c, 0x31, 0x8e, 0x68, 0x70, 0x8b, - 0x06, 0x28, 0x04, 0xd2, 0xe0, 0x69, 0x01, 0x30, - 0xe0, 0x61, 0x0e, 0x20, 0x30, 0x85, 0x28, 0x49, - 0x3c, 0x31, 0x0d, 0x68, 0x00, 0x2d, 0x03, 0xd1, - 0x03, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0x84, 0xff, - 0x24, 0x48, 0x45, 0x61, 0x35, 0x62, 0x31, 0x8d, - 0xef, 0x68, 0x04, 0x39, 0x3c, 0x00, 0xa8, 0x93, - 0x00, 0x00, 0x0c, 0x04, 0x01, 0x21, 0x02, 0x91, - 0x24, 0x0c, 0x00, 0x21, 0x01, 0x91, 0x1d, 0x48, - 0x3c, 0x30, 0x80, 0x8a, 0xa0, 0x42, 0x03, 0xd3, - 0x2c, 0x81, 0xee, 0x60, 0x00, 0x24, 0x0b, 0xe0, - 0x00, 0x2f, 0x04, 0xd1, 0x03, 0x21, 0x85, 0x20, - 0xf7, 0xf7, 0x69, 0xff, 0x04, 0xe0, 0x3d, 0x1c, - 0x20, 0x1a, 0x04, 0x04, 0xff, 0x68, 0x24, 0x0c, - 0x02, 0x98, 0x00, 0x28, 0x04, 0xd0, 0x3c, 0x00, - 0xe4, 0x93, 0x00, 0x00, 0x12, 0x49, 0x01, 0x20, - 0x08, 0x61, 0x00, 0x20, 0x02, 0x90, 0x01, 0x98, - 0x01, 0x30, 0x01, 0x90, 0x00, 0x2c, 0xdd, 0xd1, - 0x0c, 0x48, 0x0c, 0x4c, 0x3c, 0x30, 0x07, 0x60, - 0x01, 0x98, 0x30, 0x65, 0xb5, 0x64, 0x30, 0x6a, - 0x00, 0x68, 0x60, 0x62, 0x60, 0x68, 0x01, 0x30, - 0x60, 0x60, 0xa1, 0x68, 0x01, 0x31, 0x88, 0x42, - 0x03, 0xd0, 0x0a, 0x21, 0x85, 0x20, 0xf7, 0xf7, - 0x3c, 0x00, 0x20, 0x94, 0x00, 0x00, 0x41, 0xff, - 0x04, 0x48, 0x00, 0x68, 0xa0, 0x62, 0xfe, 0xbd, - 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5, - 0x05, 0x1c, 0x01, 0x21, 0x0f, 0x20, 0x0a, 0xf0, - 0xf8, 0xf8, 0xf2, 0x21, 0x0f, 0x20, 0x0a, 0xf0, - 0xf4, 0xf8, 0x0c, 0x48, 0x0c, 0x4c, 0x00, 0x68, - 0x14, 0x3c, 0x00, 0x28, 0x0c, 0xd0, 0xe0, 0x78, - 0x01, 0x28, 0x3c, 0x00, 0x5c, 0x94, 0x00, 0x00, - 0x09, 0xd0, 0x01, 0x22, 0x29, 0x1c, 0x0f, 0x20, - 0x0a, 0xf0, 0xac, 0xf8, 0x60, 0x78, 0x02, 0x28, - 0x06, 0xd0, 0x01, 0x20, 0x03, 0xe0, 0x60, 0x78, - 0x02, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x60, 0x70, - 0xb0, 0xbd, 0x00, 0x00, 0x98, 0x66, 0x01, 0x00, - 0x02, 0x22, 0x00, 0x28, 0x80, 0xb5, 0x00, 0xd1, - 0x03, 0x22, 0x03, 0x49, 0x0e, 0x20, 0x0a, 0xf0, - 0x9b, 0xf8, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x94, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x50, 0xc3, - 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x23, 0x00, 0x22, - 0x00, 0x28, 0x2e, 0xd0, 0x06, 0x89, 0x04, 0x68, - 0x75, 0x1e, 0x2d, 0x04, 0xb6, 0x1a, 0xf6, 0x07, - 0x2d, 0x0c, 0xf6, 0x0f, 0xb4, 0x46, 0x0e, 0xe0, - 0xa7, 0x5c, 0xa6, 0x18, 0x02, 0x33, 0x00, 0x97, - 0x77, 0x78, 0xa7, 0x54, 0x02, 0x32, 0x12, 0x04, - 0x00, 0x9f, 0x12, 0x0c, 0x00, 0x29, 0x3c, 0x00, - 0xd4, 0x94, 0x00, 0x00, 0x77, 0x70, 0x01, 0xdd, - 0x8b, 0x42, 0x15, 0xda, 0xaa, 0x42, 0xee, 0xd3, - 0xc0, 0x68, 0x00, 0x28, 0x10, 0xd0, 0x02, 0x89, - 0x00, 0x2a, 0xf9, 0xd0, 0x62, 0x46, 0x00, 0x2a, - 0x0b, 0xd0, 0x02, 0x68, 0x66, 0x5d, 0x17, 0x78, - 0x02, 0x33, 0x67, 0x55, 0x16, 0x70, 0x01, 0x22, - 0x00, 0x29, 0xd2, 0xdd, 0x8b, 0x42, 0xd0, 0xdb, - 0xf8, 0xbd, 0x00, 0x22, 0xcd, 0xe7, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x95, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x01, 0x20, 0xf8, 0xf7, - 0x5e, 0xfb, 0x0d, 0x49, 0x00, 0x28, 0xc8, 0x61, - 0x14, 0xd0, 0x62, 0x68, 0x42, 0x60, 0xa2, 0x7c, - 0x02, 0x72, 0xa2, 0x68, 0xc2, 0x60, 0xe2, 0x68, - 0x02, 0x61, 0x22, 0x8a, 0x02, 0x75, 0x0a, 0x1d, - 0x0a, 0x62, 0x12, 0x68, 0x00, 0x2a, 0xff, 0xd1, - 0x02, 0x60, 0x48, 0x60, 0x00, 0x20, 0xa8, 0x60, - 0x01, 0x20, 0x3c, 0x00, 0x4c, 0x95, 0x00, 0x00, - 0xb0, 0xbd, 0x01, 0x20, 0xfa, 0xe7, 0x00, 0x00, - 0xa4, 0x6e, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x40, 0x68, 0x0d, 0x1c, 0x43, 0x1c, 0x02, 0xd1, - 0x21, 0x1c, 0x09, 0x48, 0x08, 0xe0, 0x00, 0x20, - 0xf8, 0xf7, 0x34, 0xfb, 0x06, 0x49, 0x94, 0x39, - 0x08, 0x61, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c, - 0x00, 0xf0, 0x48, 0xfe, 0x00, 0xe0, 0x01, 0x20, - 0xa8, 0x60, 0x01, 0x20, 0x3c, 0x00, 0x88, 0x95, - 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0x38, 0x6f, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x97, 0x20, - 0xf7, 0xf7, 0x85, 0xfe, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0x0a, 0x1c, 0x14, 0x32, - 0x00, 0x92, 0x13, 0x1f, 0x05, 0x1c, 0x08, 0x3a, - 0x0c, 0x1c, 0x16, 0x31, 0x40, 0x68, 0xfe, 0xf7, - 0x6c, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0x69, 0x68, 0x3c, 0x00, - 0xc4, 0x95, 0x00, 0x00, 0xa0, 0x60, 0x61, 0x60, - 0x01, 0x20, 0x38, 0xbd, 0x10, 0xb5, 0x0c, 0x1c, - 0x01, 0x7a, 0x00, 0x29, 0x0f, 0xd0, 0x01, 0x29, - 0x09, 0xd0, 0x02, 0x29, 0x03, 0xd1, 0x00, 0x21, - 0x00, 0x20, 0x0a, 0xf0, 0x73, 0xfc, 0x00, 0x20, - 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd, 0x41, 0x68, - 0x01, 0x20, 0x0a, 0xf0, 0x6b, 0xfc, 0x00, 0xf0, - 0x0d, 0xf9, 0xf4, 0xe7, 0x80, 0xb5, 0x04, 0x49, - 0x3c, 0x00, 0x00, 0x96, 0x00, 0x00, 0x48, 0x68, - 0x01, 0x38, 0x48, 0x60, 0x01, 0xd1, 0x07, 0xf0, - 0x6e, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0xac, 0x79, - 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x00, 0xf0, 0x4f, 0xfe, 0xa0, 0x60, 0x68, 0x68, - 0x60, 0x60, 0x01, 0x20, 0xb0, 0xbd, 0xb0, 0xb5, - 0x05, 0x1c, 0x0c, 0x1c, 0x00, 0xf0, 0x6f, 0xfe, - 0xa0, 0x60, 0x68, 0x68, 0x60, 0x60, 0x01, 0x20, - 0xb0, 0xbd, 0x3c, 0x00, 0x3c, 0x96, 0x00, 0x00, - 0x08, 0x1c, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x01, 0x20, 0x70, 0x47, - 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x20, 0x79, - 0x20, 0x28, 0x01, 0xd2, 0x20, 0x20, 0x20, 0x71, - 0x66, 0x79, 0x00, 0x2e, 0x02, 0xd1, 0x25, 0x79, - 0x00, 0x22, 0x0d, 0xe0, 0x25, 0x79, 0x29, 0x1c, - 0x30, 0x1c, 0xf7, 0xf7, 0x4f, 0xf8, 0x00, 0x29, - 0x01, 0xd1, 0x32, 0x1c, 0x3c, 0x00, 0x78, 0x96, - 0x00, 0x00, 0x04, 0xe0, 0x70, 0x43, 0x80, 0x19, - 0x05, 0x06, 0x2d, 0x0e, 0x32, 0x1c, 0xe0, 0x79, - 0x29, 0x1c, 0x00, 0xf0, 0xf2, 0xf9, 0x20, 0x7a, - 0x2f, 0x49, 0xc0, 0x07, 0xc0, 0x0f, 0x08, 0x60, - 0x2e, 0x48, 0x00, 0x78, 0xc0, 0x07, 0x43, 0xd5, - 0xa1, 0x79, 0x2c, 0x4a, 0xc8, 0x07, 0x48, 0xd4, - 0x2c, 0x4e, 0x16, 0x60, 0x8b, 0x07, 0x2b, 0x48, - 0x08, 0xd5, 0xcc, 0x08, 0x01, 0x23, 0x3c, 0x00, - 0xb4, 0x96, 0x00, 0x00, 0xa3, 0x40, 0x03, 0x60, - 0x49, 0x07, 0x04, 0xd5, 0x28, 0x49, 0x11, 0x60, - 0x01, 0xe0, 0x40, 0x21, 0x01, 0x60, 0x13, 0x68, - 0x26, 0x4a, 0xb3, 0x42, 0x10, 0xd1, 0x54, 0x68, - 0x01, 0x68, 0x0c, 0x43, 0x54, 0x60, 0x14, 0x68, - 0x0c, 0x40, 0x01, 0xd0, 0x51, 0x61, 0x00, 0xe0, - 0x91, 0x61, 0x54, 0x68, 0x0c, 0x43, 0x54, 0x60, - 0x94, 0x68, 0x21, 0x43, 0x91, 0x60, 0x13, 0xe0, - 0x3c, 0x00, 0xf0, 0x96, 0x00, 0x00, 0x54, 0x7c, - 0x01, 0x68, 0x0c, 0x43, 0x54, 0x74, 0x14, 0x7c, - 0x0c, 0x40, 0x03, 0xd0, 0x14, 0x7c, 0x0c, 0x43, - 0x14, 0x74, 0x02, 0xe0, 0x14, 0x7c, 0x8c, 0x43, - 0x14, 0x74, 0x54, 0x7c, 0x0c, 0x43, 0x54, 0x74, - 0x94, 0x7c, 0x21, 0x43, 0x91, 0x74, 0xb3, 0x42, - 0x05, 0xd1, 0x00, 0x22, 0x01, 0x68, 0x03, 0x20, - 0xff, 0xf7, 0x8d, 0xf8, 0x09, 0xe0, 0x00, 0x68, - 0x00, 0x21, 0x3c, 0x00, 0x2c, 0x97, 0x00, 0x00, - 0x02, 0x06, 0x12, 0x0e, 0x03, 0x20, 0xff, 0xf7, - 0x85, 0xf8, 0x01, 0xe0, 0x0b, 0x48, 0x10, 0x60, - 0x00, 0x20, 0x38, 0x71, 0x7d, 0x71, 0xf7, 0xf7, - 0xe9, 0xfd, 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x00, - 0xcc, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00, - 0x5c, 0x5b, 0x01, 0x00, 0xb9, 0x9b, 0x00, 0x00, - 0x58, 0x5b, 0x01, 0x00, 0x95, 0x9b, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x97, - 0x00, 0x00, 0x55, 0x9b, 0x00, 0x00, 0xb0, 0xb5, - 0x0d, 0x1c, 0x04, 0x30, 0x00, 0x24, 0xfe, 0xf7, - 0xd6, 0xfa, 0x01, 0x20, 0x6c, 0x60, 0xb0, 0xbd, - 0x00, 0x00, 0xf0, 0xb5, 0x07, 0x7a, 0x43, 0x68, - 0x04, 0x1c, 0x0e, 0x48, 0x0e, 0x1c, 0x00, 0x68, - 0x01, 0x25, 0x01, 0x1c, 0x9b, 0xb0, 0x06, 0xe0, - 0x4a, 0x68, 0x9a, 0x42, 0x02, 0xd1, 0x8f, 0x76, - 0x00, 0x25, 0x02, 0xe0, 0x09, 0x68, 0x3c, 0x00, - 0xa4, 0x97, 0x00, 0x00, 0x00, 0x29, 0xf6, 0xd1, - 0x00, 0x2d, 0x05, 0xd1, 0x21, 0x7a, 0x01, 0x29, - 0x02, 0xd1, 0x01, 0xa9, 0xf8, 0xf7, 0xa8, 0xf8, - 0x60, 0x68, 0x04, 0x36, 0x21, 0xc6, 0x1b, 0xb0, - 0x01, 0x20, 0xf0, 0xbd, 0xa4, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x08, 0xf0, 0xae, 0xfc, - 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x07, 0xf0, 0x84, 0xfa, - 0x3c, 0x00, 0xe0, 0x97, 0x00, 0x00, 0x04, 0xf0, - 0x54, 0xff, 0x00, 0x20, 0x60, 0x60, 0x01, 0x20, - 0x10, 0xbd, 0x00, 0x20, 0xc0, 0x43, 0x48, 0x60, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x0c, 0x1c, 0x00, 0x79, 0xfa, 0xf7, 0x07, 0xf8, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x00, 0xe0, - 0x02, 0x20, 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x1c, 0xb5, 0x06, 0x4c, 0x20, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x1c, 0x98, 0x00, 0x00, - 0x07, 0xd0, 0x09, 0xf0, 0xc5, 0xfa, 0x01, 0x90, - 0x20, 0x68, 0x41, 0x68, 0x68, 0x46, 0xf6, 0xf7, - 0xd6, 0xfd, 0x1c, 0xbd, 0xac, 0x79, 0x01, 0x00, - 0x01, 0x49, 0x08, 0x60, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x79, 0x01, 0x00, 0x0e, 0xb5, 0x06, 0x4b, - 0x1b, 0x68, 0x00, 0x2b, 0x06, 0xd0, 0x02, 0x90, - 0x00, 0x91, 0x01, 0x92, 0x68, 0x46, 0xd9, 0x68, - 0xf6, 0xf7, 0xc1, 0xfd, 0x3c, 0x00, 0x58, 0x98, - 0x00, 0x00, 0x0e, 0xbd, 0x00, 0x00, 0xac, 0x79, - 0x01, 0x00, 0x1c, 0xb5, 0x04, 0x1c, 0x07, 0xf0, - 0x4c, 0xfa, 0x06, 0x48, 0x41, 0x68, 0x01, 0x31, - 0x41, 0x60, 0x00, 0x94, 0x00, 0x21, 0x01, 0x91, - 0x00, 0x68, 0x01, 0x68, 0x68, 0x46, 0xf6, 0xf7, - 0xad, 0xfd, 0x1c, 0xbd, 0x00, 0x00, 0xac, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7, 0xa3, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x1c, 0x3c, 0x00, - 0x94, 0x98, 0x00, 0x00, 0x80, 0x21, 0x03, 0x20, - 0x00, 0xf0, 0x5c, 0xf8, 0x01, 0x1c, 0x03, 0x48, - 0x00, 0x22, 0x43, 0x69, 0xf6, 0xf7, 0x9b, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00, - 0xf8, 0xb5, 0x0c, 0x1c, 0x13, 0x49, 0x05, 0x1c, - 0x08, 0x68, 0x16, 0x1c, 0x01, 0x30, 0x08, 0x60, - 0x00, 0x20, 0x20, 0x61, 0x22, 0x1c, 0x10, 0x32, - 0x28, 0x1d, 0x00, 0x21, 0x07, 0x1c, 0x00, 0x92, - 0x3c, 0x00, 0xd0, 0x98, 0x00, 0x00, 0x03, 0xf0, - 0xde, 0xfe, 0x20, 0x71, 0x20, 0x69, 0x00, 0x28, - 0x10, 0xd0, 0x01, 0x04, 0x09, 0x0c, 0x00, 0x20, - 0xf7, 0xf7, 0x79, 0xfe, 0x30, 0x60, 0x29, 0x1d, - 0x03, 0xc9, 0xa0, 0x60, 0xe1, 0x60, 0x30, 0x68, - 0x01, 0x68, 0x00, 0x9a, 0x38, 0x1c, 0x03, 0xf0, - 0xca, 0xfe, 0x20, 0x71, 0x01, 0x20, 0xf8, 0xbd, - 0x00, 0x00, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x1c, 0x3c, 0x00, 0x0c, 0x99, 0x00, 0x00, - 0x08, 0x21, 0x04, 0x20, 0x09, 0xf0, 0x4e, 0xff, - 0x03, 0x20, 0x80, 0xbd, 0x10, 0xb5, 0x07, 0x4a, - 0x0c, 0x1c, 0x51, 0x68, 0x01, 0x31, 0x51, 0x60, - 0x01, 0x1c, 0x10, 0x31, 0xc2, 0x68, 0x04, 0x30, - 0x03, 0xf0, 0xf0, 0xfe, 0x20, 0x71, 0x00, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x10, 0x75, 0x01, 0x00, - 0x04, 0x49, 0x80, 0xb5, 0x81, 0x61, 0x08, 0x21, - 0x02, 0x1c, 0x03, 0x20, 0x3c, 0x00, 0x48, 0x99, - 0x00, 0x00, 0x09, 0xf0, 0x32, 0xff, 0x03, 0x20, - 0x80, 0xbd, 0x95, 0xd8, 0x00, 0x00, 0xf7, 0xb5, - 0x07, 0x1c, 0x16, 0x1c, 0x06, 0x21, 0x00, 0x20, - 0x82, 0xb0, 0xf7, 0xf7, 0x3a, 0xfe, 0x05, 0x1c, - 0x20, 0x48, 0x00, 0x78, 0x06, 0x28, 0x00, 0xd9, - 0x28, 0x81, 0x2c, 0x68, 0x00, 0x20, 0xa7, 0x70, - 0x03, 0x99, 0xe1, 0x70, 0x31, 0x1c, 0x03, 0xe0, - 0x0a, 0x89, 0x10, 0x18, 0x0f, 0x1c, 0x3c, 0x00, - 0x84, 0x99, 0x00, 0x00, 0xc9, 0x68, 0x00, 0x29, - 0xf9, 0xd1, 0x6b, 0x46, 0x01, 0xaa, 0x21, 0x1d, - 0x00, 0xf0, 0x34, 0xf8, 0x00, 0xab, 0x18, 0x78, - 0x60, 0x71, 0x18, 0x78, 0x00, 0x28, 0x17, 0xd0, - 0x11, 0x48, 0x40, 0x68, 0x00, 0x28, 0x08, 0xd0, - 0x19, 0x78, 0x00, 0x20, 0xf7, 0xf7, 0x14, 0xfe, - 0x01, 0x1c, 0x38, 0x1c, 0xf7, 0xf7, 0x30, 0xfd, - 0x0a, 0xe0, 0x38, 0x68, 0x00, 0x28, 0x02, 0xd1, - 0x3c, 0x00, 0xc0, 0x99, 0x00, 0x00, 0x3f, 0x60, - 0x01, 0x20, 0xb8, 0x61, 0x00, 0xab, 0x19, 0x78, - 0x38, 0x89, 0x40, 0x18, 0x38, 0x81, 0x00, 0xab, - 0x98, 0x88, 0x31, 0x1c, 0x02, 0x38, 0x20, 0x80, - 0x28, 0x1c, 0xf7, 0xf7, 0x1c, 0xfd, 0x28, 0x1c, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc8, 0x5c, - 0x01, 0x00, 0x01, 0x79, 0x42, 0x79, 0x00, 0x88, - 0x89, 0x18, 0x02, 0x39, 0x40, 0x1a, 0x70, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x99, 0x00, 0x00, - 0x70, 0xb5, 0x08, 0x4d, 0x2c, 0x78, 0xad, 0x78, - 0x20, 0x18, 0x06, 0x1c, 0x00, 0x2d, 0x03, 0xd0, - 0x70, 0x19, 0x01, 0x38, 0x01, 0x3d, 0xa8, 0x43, - 0x10, 0x80, 0x80, 0x1b, 0x18, 0x70, 0x0c, 0x70, - 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x5c, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x68, 0x0c, 0x4a, 0x21, 0x88, - 0x52, 0x78, 0x02, 0x31, 0x91, 0x42, 0x11, 0xd2, - 0x55, 0x1a, 0xf7, 0xf7, 0x3c, 0x00, 0x38, 0x9a, - 0x00, 0x00, 0xc9, 0xfd, 0x01, 0x68, 0x00, 0x29, - 0x02, 0xd1, 0x00, 0x60, 0x01, 0x21, 0x81, 0x61, - 0x01, 0x89, 0x49, 0x19, 0x01, 0x81, 0x20, 0x88, - 0x40, 0x19, 0x20, 0x80, 0x60, 0x79, 0x40, 0x19, - 0x60, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0xc8, 0x5c, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x06, 0x21, - 0xf1, 0x20, 0x09, 0xf0, 0xa2, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x1c, 0x02, 0x48, 0x3c, 0x00, - 0x74, 0x9a, 0x00, 0x00, 0x03, 0x70, 0x41, 0x70, - 0x82, 0x70, 0x70, 0x47, 0xc8, 0x5c, 0x01, 0x00, - 0xb0, 0xb5, 0x08, 0x1c, 0x09, 0x68, 0x15, 0x1c, - 0x8c, 0x78, 0xf7, 0xf7, 0x85, 0xfd, 0x04, 0x49, - 0xa0, 0x00, 0x09, 0x58, 0x00, 0x29, 0x02, 0xd0, - 0x28, 0x1c, 0xf6, 0xf7, 0x9e, 0xfc, 0xb0, 0xbd, - 0x84, 0x6d, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0xc0, 0x7a, 0xa1, 0x7a, 0xc6, 0x07, 0xf6, 0x0f, - 0x3c, 0x00, 0xb0, 0x9a, 0x00, 0x00, 0x32, 0x1c, - 0x20, 0x1d, 0x01, 0xf0, 0x3c, 0xf8, 0x60, 0x69, - 0x25, 0x4f, 0xc1, 0x07, 0x37, 0xd5, 0xb8, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0xf6, 0xf7, 0x87, 0xfc, - 0x20, 0x68, 0x05, 0x68, 0x28, 0x88, 0x80, 0x07, - 0x34, 0xd1, 0x01, 0xaa, 0x02, 0xa9, 0x28, 0x1c, - 0x01, 0xf0, 0x0b, 0xfc, 0x28, 0x1c, 0x01, 0xf0, - 0x12, 0xfc, 0x00, 0x78, 0xc0, 0x07, 0x0a, 0xd4, - 0x60, 0x69, 0x3c, 0x00, 0xec, 0x9a, 0x00, 0x00, - 0x80, 0x07, 0x26, 0xd4, 0x33, 0x1c, 0x29, 0x1c, - 0xa2, 0x7a, 0x20, 0x69, 0x7d, 0x69, 0xf6, 0xf7, - 0x72, 0xfc, 0x1e, 0xe0, 0x00, 0xab, 0x18, 0x7a, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x28, 0x06, 0xd0, - 0x02, 0x28, 0x16, 0xd1, 0x28, 0x1c, 0x79, 0x6a, - 0xf6, 0xf7, 0x61, 0xfc, 0x11, 0xe0, 0x00, 0xab, - 0x18, 0x79, 0x0e, 0x28, 0x01, 0xd0, 0x0f, 0x28, - 0x0b, 0xd1, 0x28, 0x1c, 0x3c, 0x00, 0x28, 0x9b, - 0x00, 0x00, 0x39, 0x6a, 0xf6, 0xf7, 0x56, 0xfc, - 0x06, 0xe0, 0x00, 0x07, 0x80, 0x0f, 0x03, 0xd1, - 0x20, 0x69, 0xf9, 0x69, 0xf6, 0xf7, 0x4e, 0xfc, - 0x78, 0x6b, 0x21, 0x21, 0x01, 0x30, 0x78, 0x63, - 0x22, 0x1c, 0x80, 0x20, 0x09, 0xf0, 0x31, 0xfe, - 0xfe, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x0b, 0x49, - 0x18, 0xb5, 0x08, 0x78, 0xc0, 0x07, 0x11, 0xd5, - 0x0a, 0x4a, 0x10, 0x1c, 0x20, 0x30, 0x3c, 0x00, - 0x64, 0x9b, 0x00, 0x00, 0x84, 0x79, 0x00, 0xab, - 0x1c, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x08, 0x78, - 0x40, 0x23, 0x18, 0x43, 0x08, 0x70, 0x05, 0x48, - 0x00, 0x78, 0x08, 0x70, 0x00, 0xab, 0x18, 0x88, - 0xd0, 0x84, 0x18, 0xbd, 0x04, 0x00, 0x07, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xe0, 0x60, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x05, 0x49, 0x10, 0xb5, - 0x88, 0x79, 0x05, 0x4b, 0x1a, 0x7c, 0x05, 0x4c, - 0x3c, 0x00, 0xa0, 0x9b, 0x00, 0x00, 0x24, 0x68, - 0x62, 0x40, 0x1a, 0x74, 0x88, 0x71, 0x10, 0xbd, - 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x58, 0x5b, 0x01, 0x00, 0x04, 0x49, - 0x0a, 0x68, 0x04, 0x48, 0x00, 0x68, 0x02, 0x40, - 0x01, 0xd0, 0x88, 0x61, 0x70, 0x47, 0x48, 0x61, - 0x70, 0x47, 0x10, 0x00, 0x07, 0x00, 0x58, 0x5b, - 0x01, 0x00, 0x02, 0x1c, 0x01, 0x20, 0x00, 0x06, - 0x08, 0x43, 0x3c, 0x00, 0xdc, 0x9b, 0x00, 0x00, - 0x80, 0xb5, 0x2a, 0x21, 0x09, 0xf0, 0xe6, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x00, 0x29, 0x03, 0xd0, 0x81, 0x29, 0x07, 0xd1, - 0x81, 0x20, 0x00, 0xe0, 0x80, 0x20, 0x22, 0x1c, - 0x2c, 0x21, 0x09, 0xf0, 0xd7, 0xfd, 0x10, 0xbd, - 0x02, 0x21, 0x2c, 0x20, 0xf7, 0xf7, 0x4c, 0xfb, - 0x20, 0x1c, 0xf7, 0xf7, 0xc3, 0xfc, 0x10, 0xbd, - 0x80, 0xb5, 0xb4, 0xb0, 0x3c, 0x00, 0x18, 0x9c, - 0x00, 0x00, 0x01, 0x28, 0x06, 0xd0, 0x82, 0x28, - 0x1c, 0xd1, 0x1a, 0xa8, 0x07, 0xf0, 0x35, 0xfc, - 0x34, 0xb0, 0x80, 0xbd, 0x81, 0x29, 0x13, 0xd1, - 0x0d, 0x48, 0x0c, 0x4a, 0x81, 0x69, 0x00, 0x68, - 0x50, 0x32, 0x81, 0x42, 0x02, 0xd0, 0xd1, 0x6a, - 0x01, 0x29, 0x02, 0xd0, 0x11, 0x78, 0x02, 0x29, - 0x02, 0xd1, 0x07, 0xf0, 0x0a, 0xf9, 0xeb, 0xe7, - 0x69, 0x46, 0xf7, 0xf7, 0x5a, 0xfe, 0x3c, 0x00, - 0x54, 0x9c, 0x00, 0x00, 0xe7, 0xe7, 0x01, 0x21, - 0x00, 0xe0, 0x02, 0x21, 0x18, 0x20, 0xf7, 0xf7, - 0x21, 0xfb, 0xe0, 0xe7, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x68, 0x17, 0x4d, - 0x9a, 0xb0, 0x68, 0x63, 0x08, 0xf0, 0x3e, 0xfa, - 0x20, 0x79, 0x14, 0x49, 0x13, 0x4a, 0x50, 0x39, - 0x2c, 0x3a, 0x02, 0x28, 0x0a, 0xd1, 0x90, 0x68, - 0x80, 0x02, 0xa8, 0x61, 0xc8, 0x68, 0xe8, 0x61, - 0x3c, 0x00, 0x90, 0x9c, 0x00, 0x00, 0x02, 0x20, - 0x28, 0x72, 0x07, 0xf0, 0xe4, 0xf8, 0x1a, 0xb0, - 0xb0, 0xbd, 0x03, 0x1c, 0x00, 0x20, 0x00, 0x2b, - 0x0b, 0xd1, 0x52, 0x68, 0x92, 0x02, 0xaa, 0x61, - 0x0a, 0x1c, 0x89, 0x68, 0xe9, 0x61, 0x28, 0x72, - 0x10, 0x68, 0x69, 0x46, 0xf7, 0xf7, 0x27, 0xfe, - 0xed, 0xe7, 0xa8, 0x61, 0x01, 0x20, 0x28, 0x72, - 0x28, 0x70, 0x00, 0x20, 0x06, 0xf0, 0x7d, 0xfa, - 0xe5, 0xe7, 0x3c, 0x00, 0xcc, 0x9c, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x07, 0x20, 0xf7, 0xf7, 0xe1, 0xfa, 0x80, 0xbd, - 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x24, - 0x19, 0x4a, 0x00, 0x26, 0xd5, 0x68, 0x11, 0x68, - 0x04, 0x35, 0x08, 0x1c, 0x91, 0x60, 0x02, 0xe0, - 0x01, 0x1c, 0x40, 0x19, 0x08, 0x60, 0x53, 0x68, - 0x83, 0x42, 0xf9, 0xd8, 0x3c, 0x00, 0x08, 0x9d, - 0x00, 0x00, 0x01, 0x34, 0x10, 0x32, 0x03, 0x2c, - 0x0e, 0x60, 0xee, 0xd3, 0xf6, 0xf7, 0xf1, 0xff, - 0x10, 0x48, 0x10, 0x49, 0x12, 0x4c, 0x08, 0x60, - 0x10, 0x49, 0x00, 0x20, 0x01, 0x22, 0x19, 0x23, - 0x5b, 0x01, 0x0c, 0x25, 0x43, 0x43, 0x1b, 0x19, - 0x45, 0x43, 0x4a, 0x51, 0x1f, 0x1c, 0x6d, 0x18, - 0xab, 0x60, 0x6b, 0x60, 0x00, 0x25, 0x1e, 0x1c, - 0x14, 0x36, 0x9e, 0x60, 0x33, 0x1c, 0x3c, 0x00, - 0x44, 0x9d, 0x00, 0x00, 0x01, 0x35, 0x27, 0x2d, - 0xf8, 0xdb, 0x01, 0x30, 0x03, 0x28, 0x9f, 0x60, - 0xe8, 0xdb, 0xf8, 0xbd, 0x20, 0x57, 0x01, 0x00, - 0x14, 0xc8, 0x01, 0x00, 0xb4, 0xcf, 0x01, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xb8, 0xcf, 0x01, 0x00, - 0xb0, 0xb5, 0x07, 0x4c, 0x25, 0x1c, 0xc0, 0x35, - 0x28, 0x6b, 0x1e, 0x21, 0x00, 0xf0, 0xf2, 0xf9, - 0xa2, 0x6b, 0x20, 0x1c, 0xdc, 0x30, 0x29, 0x6b, - 0x3c, 0x00, 0x80, 0x9d, 0x00, 0x00, 0x00, 0xf0, - 0xb6, 0xf9, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x00, 0x20, 0x10, 0x22, 0x10, 0xb5, - 0x0a, 0x49, 0x05, 0xe0, 0x0c, 0x23, 0x43, 0x43, - 0x5c, 0x18, 0x0c, 0x34, 0xcc, 0x50, 0x01, 0x30, - 0x0f, 0x28, 0xf7, 0xd3, 0x0c, 0x23, 0x58, 0x43, - 0x09, 0x50, 0x04, 0x48, 0x41, 0x60, 0x01, 0x60, - 0x02, 0x82, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60, - 0x10, 0xbd, 0x3c, 0x00, 0xbc, 0x9d, 0x00, 0x00, - 0x84, 0xe2, 0x01, 0x00, 0x44, 0xe3, 0x01, 0x00, - 0x10, 0xb5, 0x08, 0x4c, 0xa0, 0x6a, 0x00, 0x28, - 0x03, 0xd1, 0x07, 0x48, 0xf9, 0xf7, 0xe8, 0xfe, - 0xa0, 0x62, 0x04, 0x48, 0x44, 0x30, 0x00, 0x68, - 0x01, 0x21, 0xf9, 0xf7, 0x95, 0xfc, 0x60, 0x62, - 0x10, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0xcd, 0x26, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x1e, 0x1c, 0x3c, 0x00, 0xf8, 0x9d, - 0x00, 0x00, 0x81, 0xb0, 0x0a, 0x9f, 0x1c, 0x21, - 0xf6, 0xf7, 0x4d, 0xfb, 0x03, 0x98, 0xa0, 0x61, - 0x25, 0x60, 0x25, 0x61, 0x26, 0x81, 0xa6, 0x82, - 0xe7, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0x70, 0xb5, - 0x0d, 0x1c, 0xa4, 0x21, 0x04, 0x1c, 0x08, 0x30, - 0xf6, 0xf7, 0x3d, 0xfb, 0x20, 0x1c, 0x44, 0x30, - 0x06, 0x22, 0x29, 0x1c, 0xf6, 0xf7, 0x65, 0xfb, - 0x18, 0x48, 0x3c, 0x23, 0x41, 0x1c, 0x3c, 0x00, - 0x34, 0x9e, 0x00, 0x00, 0x61, 0x62, 0x41, 0x78, - 0x59, 0x43, 0x09, 0x18, 0x89, 0x7a, 0x06, 0x29, - 0x01, 0xd1, 0xa0, 0x62, 0x02, 0xe0, 0x21, 0x1c, - 0x4d, 0x31, 0xa1, 0x62, 0x41, 0x78, 0x3c, 0x23, - 0x59, 0x43, 0x08, 0x18, 0x04, 0x30, 0x0f, 0x49, - 0x20, 0x62, 0x0b, 0x88, 0x00, 0x2b, 0x15, 0xd0, - 0xac, 0x20, 0x00, 0x5d, 0x0b, 0x4a, 0x18, 0x32, - 0x00, 0x02, 0x80, 0x18, 0xb0, 0x30, 0xe0, 0x60, - 0x3c, 0x00, 0x70, 0x9e, 0x00, 0x00, 0x8d, 0x68, - 0x00, 0x20, 0x08, 0xe0, 0xe2, 0x68, 0xc1, 0x00, - 0x54, 0x50, 0xe6, 0x68, 0x82, 0x00, 0x52, 0x19, - 0x71, 0x18, 0x4a, 0x60, 0x01, 0x30, 0x98, 0x42, - 0xf4, 0xdb, 0x70, 0xbd, 0x00, 0x00, 0x68, 0x61, - 0x01, 0x00, 0x58, 0x75, 0x01, 0x00, 0x1f, 0xb5, - 0x04, 0x1c, 0x60, 0x34, 0x61, 0x7a, 0x03, 0x1c, - 0x80, 0x6a, 0x08, 0x4a, 0x02, 0x91, 0x01, 0x90, - 0x03, 0x92, 0x3c, 0x00, 0xac, 0x9e, 0x00, 0x00, - 0xe2, 0x79, 0x18, 0x1c, 0x20, 0x30, 0x00, 0x92, - 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a, - 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0, - 0x7f, 0xfe, 0x1f, 0xbd, 0x39, 0x4e, 0x00, 0x00, - 0xb0, 0xb5, 0x0b, 0x1c, 0x01, 0x88, 0x69, 0x20, - 0xc0, 0x5c, 0x86, 0xb0, 0x0e, 0x4a, 0x04, 0x91, - 0x03, 0x90, 0x05, 0x92, 0x0d, 0x4d, 0x59, 0x6a, - 0x9a, 0x6a, 0x2d, 0x68, 0x3c, 0x00, 0xe8, 0x9e, - 0x00, 0x00, 0x01, 0x24, 0x00, 0x2d, 0x00, 0xd0, - 0x04, 0x1c, 0x0a, 0x48, 0x00, 0x5d, 0x01, 0x91, - 0x02, 0x92, 0x00, 0x90, 0x18, 0x1c, 0x20, 0x30, - 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a, - 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0, - 0xa4, 0xfe, 0x06, 0xb0, 0xb0, 0xbd, 0x51, 0x4f, - 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x0a, 0x61, - 0x01, 0x00, 0x01, 0x89, 0x8a, 0x1c, 0x3c, 0x00, - 0x24, 0x9f, 0x00, 0x00, 0x02, 0x81, 0x02, 0x68, - 0x02, 0x3a, 0x02, 0x60, 0x08, 0x0a, 0x09, 0x02, - 0x08, 0x43, 0x10, 0x80, 0x70, 0x47, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x08, 0x78, 0x0e, 0x1c, - 0xff, 0x28, 0x14, 0xd0, 0x71, 0x78, 0x02, 0x31, - 0x00, 0x20, 0xf7, 0xf7, 0x45, 0xfb, 0x04, 0x1c, - 0x02, 0x89, 0x00, 0x68, 0x31, 0x1c, 0xf6, 0xf7, - 0xcf, 0xfa, 0x00, 0x2d, 0x06, 0xd0, 0x28, 0x1c, - 0x3c, 0x00, 0x60, 0x9f, 0x00, 0x00, 0xf7, 0xf7, - 0x34, 0xfb, 0x21, 0x1c, 0xf7, 0xf7, 0x57, 0xfa, - 0x00, 0xe0, 0x25, 0x1c, 0x28, 0x1c, 0x70, 0xbd, - 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c, 0x1e, 0x1c, - 0x04, 0x1c, 0x98, 0x1c, 0x01, 0x04, 0x09, 0x0c, - 0x00, 0x20, 0x81, 0xb0, 0xf7, 0xf7, 0x27, 0xfb, - 0x05, 0x1c, 0x00, 0x68, 0x00, 0x2c, 0x38, 0x60, - 0x03, 0x99, 0x01, 0x70, 0x38, 0x68, 0x46, 0x70, - 0x06, 0xd0, 0x3c, 0x00, 0x9c, 0x9f, 0x00, 0x00, - 0x20, 0x1c, 0xf7, 0xf7, 0x15, 0xfb, 0x29, 0x1c, - 0xf7, 0xf7, 0x38, 0xfa, 0x00, 0xe0, 0x2c, 0x1c, - 0x20, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x10, 0x48, 0x04, 0x68, 0x04, 0x60, - 0x0f, 0x49, 0x20, 0x20, 0x08, 0x60, 0xa0, 0x05, - 0x0e, 0x4e, 0x02, 0xd5, 0x70, 0x6a, 0xf6, 0xf7, - 0x05, 0xfa, 0xe0, 0x01, 0x02, 0xd5, 0x30, 0x6e, - 0xf6, 0xf7, 0x00, 0xfa, 0x3c, 0x00, 0xd8, 0x9f, - 0x00, 0x00, 0x0a, 0x48, 0x04, 0x40, 0x00, 0x25, - 0x07, 0xe0, 0xe0, 0x07, 0x03, 0xd5, 0xa8, 0x00, - 0x30, 0x58, 0xf6, 0xf7, 0xf6, 0xf9, 0x01, 0x35, - 0x64, 0x08, 0x00, 0x2c, 0xf5, 0xd1, 0x70, 0xbd, - 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xff, 0xfd, - 0xff, 0xfe, 0x80, 0xb5, 0x07, 0x21, 0x80, 0x20, - 0xf7, 0xf7, 0x49, 0xf9, 0x80, 0xbd, 0x3c, 0x00, - 0x14, 0xa0, 0x00, 0x00, 0xf8, 0xb5, 0x14, 0x4b, - 0x82, 0x00, 0x9c, 0x58, 0xca, 0x06, 0x01, 0x27, - 0x39, 0x1c, 0xd2, 0x0e, 0x91, 0x40, 0x11, 0x4a, - 0x11, 0x60, 0x11, 0x4e, 0x40, 0x00, 0x85, 0x19, - 0x15, 0xe0, 0x60, 0x60, 0x20, 0x7b, 0xc1, 0x00, - 0x89, 0x19, 0x10, 0x31, 0x0a, 0x78, 0x0d, 0x23, - 0x9a, 0x43, 0x0a, 0x70, 0x39, 0x1c, 0x81, 0x40, - 0x31, 0x73, 0x07, 0x49, 0x00, 0x01, 0x08, 0x31, - 0x3c, 0x00, 0x50, 0xa0, 0x00, 0x00, 0x40, 0x18, - 0x08, 0x4a, 0x41, 0x68, 0x42, 0x60, 0x80, 0x68, - 0xf6, 0xf7, 0xbe, 0xf9, 0x28, 0x7b, 0x00, 0x28, - 0xe6, 0xd1, 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x73, - 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x09, 0x7a, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x04, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xa0, 0x00, 0x00, - 0x03, 0x49, 0x01, 0x20, 0x89, 0x7a, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x00, 0x24, - 0xfa, 0xf7, 0x76, 0xfc, 0x00, 0x28, 0x14, 0xd0, - 0x01, 0x24, 0x08, 0xf0, 0x7d, 0xfe, 0x0a, 0x4d, - 0x0a, 0x4b, 0x00, 0x21, 0x5a, 0x18, 0xa0, 0x32, - 0x12, 0x78, 0x10, 0x2a, 0x06, 0xd3, 0x8a, 0x00, - 0xd2, 0x18, 0x92, 0x6f, 0x3c, 0x00, 0xc8, 0xa0, - 0x00, 0x00, 0x82, 0x1a, 0xaa, 0x42, 0x00, 0xd2, - 0x00, 0x24, 0x01, 0x31, 0x03, 0x29, 0xf0, 0xd3, - 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x8b, 0x08, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x01, 0x48, - 0xc0, 0x68, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x16, 0x1c, 0xfd, 0xf7, 0x2e, 0xfe, 0x00, 0x20, - 0xe0, 0x60, 0x26, 0x61, 0xa5, 0x60, 0x3c, 0x00, - 0x04, 0xa1, 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x17, 0x1c, 0x0e, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x2e, 0x01, 0xd1, - 0xf7, 0xf7, 0xf2, 0xf8, 0xa0, 0x68, 0x07, 0xf0, - 0x49, 0xf9, 0x05, 0x1c, 0x01, 0xd1, 0xf7, 0xf7, - 0xeb, 0xf8, 0x29, 0x1c, 0x6e, 0x60, 0xaf, 0x60, - 0x20, 0x1c, 0xfd, 0xf7, 0xfd, 0xfd, 0xe0, 0x68, - 0x41, 0x1c, 0xe1, 0x60, 0x00, 0x28, 0x03, 0xd1, - 0x3c, 0x00, 0x40, 0xa1, 0x00, 0x00, 0x05, 0x48, - 0x21, 0x69, 0x05, 0xf0, 0x2c, 0xf9, 0x20, 0x68, - 0xa8, 0x42, 0x02, 0xd1, 0x38, 0x1c, 0xf6, 0xf7, - 0x48, 0xf9, 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x60, - 0x01, 0x00, 0x00, 0x22, 0x01, 0x39, 0x10, 0xb5, - 0x05, 0xe0, 0x0c, 0x23, 0x53, 0x43, 0x1c, 0x18, - 0x0c, 0x34, 0xc4, 0x50, 0x01, 0x32, 0x8a, 0x42, - 0xf7, 0xd3, 0x00, 0x21, 0x0c, 0x23, 0x5a, 0x43, - 0x81, 0x50, 0x3c, 0x00, 0x7c, 0xa1, 0x00, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x01, 0xd1, 0xf7, 0xf7, 0xbb, 0xf8, 0x20, 0x1c, - 0xfd, 0xf7, 0xda, 0xfd, 0x01, 0x1c, 0x85, 0x68, - 0xa0, 0x68, 0x07, 0xf0, 0x09, 0xf9, 0xe0, 0x68, - 0x01, 0x38, 0xe0, 0x60, 0x03, 0xd1, 0x06, 0x48, - 0x21, 0x69, 0x05, 0xf0, 0xe7, 0xf8, 0x21, 0x68, - 0x00, 0x29, 0x03, 0xd0, 0x88, 0x68, 0x49, 0x68, - 0xf6, 0xf7, 0x11, 0xf9, 0x3c, 0x00, 0xb8, 0xa1, - 0x00, 0x00, 0x28, 0x1c, 0xb0, 0xbd, 0xc4, 0x60, - 0x01, 0x00, 0x01, 0x21, 0x00, 0x28, 0x8c, 0xb5, - 0x00, 0xd1, 0x00, 0x21, 0x0e, 0x20, 0x09, 0xf0, - 0x32, 0xfa, 0x83, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x00, 0x20, 0x04, 0xf0, 0x0c, 0xf8, 0x01, 0x90, - 0x68, 0x46, 0x03, 0xf0, 0x7a, 0xf9, 0x8c, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x08, 0xf0, 0xdf, 0xfd, - 0x06, 0x49, 0x0a, 0x89, 0x06, 0x49, 0x3c, 0x00, - 0xf4, 0xa1, 0x00, 0x00, 0x09, 0x6e, 0x41, 0x1a, - 0x0b, 0x0c, 0x59, 0x18, 0x89, 0x1a, 0x09, 0x04, - 0x09, 0x0c, 0x40, 0x1a, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x90, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x70, 0xb5, 0x04, 0x1c, 0x88, 0x7e, 0x0d, 0x1c, - 0x20, 0x28, 0x03, 0xd9, 0x03, 0x21, 0x18, 0x20, - 0xf7, 0xf7, 0x40, 0xf8, 0x00, 0x26, 0x26, 0x76, - 0xa8, 0x7e, 0x29, 0x1c, 0x1b, 0x31, 0x60, 0x76, - 0x3c, 0x00, 0x30, 0xa2, 0x00, 0x00, 0x20, 0x1c, - 0x1d, 0x30, 0xaa, 0x7e, 0xf6, 0xf7, 0x5f, 0xf9, - 0x68, 0x68, 0x29, 0x1c, 0x60, 0x60, 0xa8, 0x68, - 0x13, 0x31, 0xa0, 0x60, 0xa8, 0x7b, 0x06, 0x22, - 0x20, 0x73, 0xe8, 0x7b, 0x60, 0x73, 0x28, 0x7c, - 0xa0, 0x73, 0x68, 0x7c, 0xe0, 0x73, 0xa8, 0x89, - 0x20, 0x82, 0xa8, 0x7c, 0xe0, 0x76, 0x26, 0x77, - 0x20, 0x1c, 0x12, 0x30, 0xa6, 0x76, 0xf6, 0xf7, - 0x46, 0xf9, 0x3c, 0x00, 0x6c, 0xa2, 0x00, 0x00, - 0x60, 0x68, 0x43, 0x1c, 0x1d, 0xd0, 0x11, 0x4d, - 0x6d, 0x61, 0x28, 0x68, 0x00, 0x28, 0x1a, 0xd0, - 0x22, 0x7b, 0x01, 0x1c, 0x0b, 0x7b, 0x9a, 0x42, - 0x01, 0xd3, 0x20, 0x60, 0x14, 0xe0, 0x0b, 0x1c, - 0x09, 0x68, 0x00, 0x29, 0x0b, 0xd0, 0x0e, 0x7b, - 0xb2, 0x42, 0x08, 0xd2, 0x0b, 0x68, 0x00, 0x2b, - 0xf0, 0xd0, 0x1e, 0x7b, 0xb2, 0x42, 0xed, 0xd3, - 0x23, 0x60, 0x0c, 0x60, 0x3c, 0x00, 0xa8, 0xa2, - 0x00, 0x00, 0x01, 0xe0, 0x21, 0x60, 0x1c, 0x60, - 0x00, 0x20, 0x70, 0xbd, 0x26, 0x60, 0x2c, 0x60, - 0xfa, 0xe7, 0xa4, 0x6e, 0x01, 0x00, 0x13, 0x4a, - 0xb0, 0xb5, 0x51, 0x68, 0x01, 0x24, 0x00, 0x29, - 0x1e, 0xd0, 0x13, 0x1d, 0xd1, 0x61, 0x13, 0x62, - 0x43, 0x68, 0x04, 0xe0, 0x10, 0x62, 0x00, 0x68, - 0xd0, 0x61, 0x00, 0x28, 0x14, 0xd0, 0xd0, 0x69, - 0x45, 0x68, 0x9d, 0x42, 0xf6, 0xd1, 0x3c, 0x00, - 0xe4, 0xa2, 0x00, 0x00, 0x10, 0x6a, 0x81, 0x42, - 0x04, 0xd1, 0x51, 0x60, 0xd0, 0x69, 0x00, 0x68, - 0x08, 0x60, 0x02, 0xe0, 0xd1, 0x69, 0x09, 0x68, - 0x01, 0x60, 0xd0, 0x69, 0xfc, 0xf7, 0xce, 0xff, - 0x00, 0x28, 0x00, 0xd0, 0x00, 0x24, 0x20, 0x1c, - 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x17, 0x4d, 0x01, 0x24, 0x29, 0x68, - 0x00, 0x29, 0x27, 0xd0, 0x6d, 0x61, 0x29, 0x61, - 0x3c, 0x00, 0x20, 0xa3, 0x00, 0x00, 0x43, 0x68, - 0x04, 0xe0, 0x68, 0x61, 0x00, 0x68, 0x28, 0x61, - 0x00, 0x28, 0x1d, 0xd0, 0x28, 0x69, 0x42, 0x68, - 0x9a, 0x42, 0xf6, 0xd1, 0xaa, 0x69, 0x2b, 0x69, - 0x9a, 0x42, 0x00, 0xd1, 0xa9, 0x61, 0x6a, 0x69, - 0x91, 0x42, 0x03, 0xd1, 0x29, 0x60, 0x00, 0x68, - 0x08, 0x60, 0x06, 0xe0, 0x00, 0x68, 0x10, 0x60, - 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x07, 0xf0, - 0xcc, 0xfe, 0x3c, 0x00, 0x5c, 0xa3, 0x00, 0x00, - 0x28, 0x69, 0xfc, 0xf7, 0x9d, 0xff, 0x00, 0x28, - 0x02, 0xd0, 0x00, 0x24, 0x00, 0xe0, 0x01, 0x24, - 0x20, 0x1c, 0xb0, 0xbd, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x44, 0x68, - 0x07, 0xe0, 0x21, 0x1c, 0x44, 0x31, 0x28, 0x1c, - 0x00, 0xf0, 0xd6, 0xfc, 0x00, 0x28, 0x02, 0xd1, - 0x64, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x20, 0x1c, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xa3, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x0d, 0x1c, 0x14, 0x1c, 0x00, 0x28, 0x0b, 0x4e, - 0x08, 0xd0, 0x70, 0x6e, 0x06, 0x23, 0x58, 0x43, - 0x02, 0x04, 0x12, 0x0c, 0x31, 0x1c, 0x28, 0x1c, - 0x22, 0x80, 0x07, 0xe0, 0x21, 0x88, 0x06, 0x20, - 0xf6, 0xf7, 0xa7, 0xf9, 0x70, 0x66, 0x22, 0x88, - 0x29, 0x1c, 0x30, 0x1c, 0xf6, 0xf7, 0x95, 0xf8, - 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xa3, 0x00, 0x00, 0x10, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x03, 0x28, 0x03, 0xd8, 0x04, 0x4a, - 0xc0, 0x00, 0x11, 0x50, 0x80, 0xbd, 0x01, 0x21, - 0x26, 0x20, 0xf6, 0xf7, 0x5b, 0xff, 0x80, 0xbd, - 0x7c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0xc0, 0x68, 0x01, 0x89, 0x39, 0x29, 0x39, 0xd3, - 0x04, 0x68, 0xa0, 0x79, 0x88, 0x28, 0x35, 0xd1, - 0xe0, 0x79, 0x8e, 0x28, 0x32, 0xd1, 0x20, 0x7a, - 0x3c, 0x00, 0x10, 0xa4, 0x00, 0x00, 0x01, 0x28, - 0x2f, 0xd1, 0x60, 0x7a, 0x03, 0x28, 0x2c, 0xd1, - 0x20, 0x7b, 0x02, 0x28, 0x01, 0xd0, 0xfe, 0x28, - 0x27, 0xd1, 0x60, 0x7b, 0x1d, 0x21, 0x08, 0x40, - 0x01, 0x28, 0x22, 0xd1, 0xa0, 0x7b, 0xc8, 0x21, - 0x08, 0x40, 0x08, 0x28, 0x1d, 0xd1, 0xa8, 0x1d, - 0xfb, 0xf7, 0xe1, 0xf9, 0x00, 0x28, 0x18, 0xd0, - 0x19, 0x20, 0x21, 0x5c, 0x00, 0x29, 0x14, 0xd1, - 0x01, 0x30, 0x3c, 0x00, 0x4c, 0xa4, 0x00, 0x00, - 0x39, 0x28, 0xf9, 0xdb, 0x68, 0x8b, 0x04, 0x21, - 0x08, 0x43, 0x68, 0x83, 0x03, 0xf0, 0xd6, 0xfe, - 0x00, 0x28, 0x09, 0xd1, 0x00, 0x23, 0x00, 0x22, - 0x26, 0x20, 0x04, 0x49, 0x09, 0xf0, 0x92, 0xf9, - 0x03, 0x48, 0x00, 0x68, 0x01, 0xf0, 0x84, 0xf9, - 0xb0, 0xbd, 0x00, 0x00, 0x50, 0xc3, 0x00, 0x00, - 0x0c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c, - 0xa3, 0x68, 0x01, 0x33, 0x3c, 0x00, 0x88, 0xa4, - 0x00, 0x00, 0xa3, 0x60, 0x0c, 0x1c, 0x09, 0xd0, - 0x25, 0x68, 0x00, 0x2d, 0x03, 0xd0, 0x23, 0x7a, - 0x61, 0x68, 0xf5, 0xf7, 0xa3, 0xff, 0x20, 0x1c, - 0xf7, 0xf7, 0xa9, 0xf9, 0xb0, 0xbd, 0x94, 0x79, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0x01, 0x89, 0x05, 0x68, 0x08, 0x29, 0x53, 0xd3, - 0x06, 0x22, 0x28, 0x1c, 0x55, 0x49, 0xf5, 0xf7, - 0x9e, 0xff, 0x00, 0x28, 0x37, 0xd1, 0x3c, 0x00, - 0xc4, 0xa4, 0x00, 0x00, 0xe9, 0x88, 0x52, 0x4e, - 0x04, 0x3e, 0x81, 0x29, 0x24, 0xd1, 0xe5, 0x68, - 0x29, 0x68, 0x08, 0x7a, 0x4a, 0x7a, 0x00, 0x02, - 0x80, 0x18, 0x00, 0x04, 0x00, 0x0c, 0x42, 0x0b, - 0x00, 0x05, 0x00, 0x0d, 0xe2, 0x75, 0x20, 0x83, - 0x4b, 0x89, 0x00, 0x20, 0x42, 0x00, 0xb2, 0x5a, - 0x9a, 0x42, 0x06, 0xd1, 0x28, 0x89, 0x0c, 0x38, - 0x02, 0x0a, 0x00, 0x02, 0x10, 0x43, 0x48, 0x81, - 0x3c, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x02, 0xe0, - 0x01, 0x30, 0x02, 0x28, 0xf1, 0xd3, 0xe0, 0x68, - 0x01, 0x89, 0x0a, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x0a, 0x31, 0x1c, 0xe0, 0x00, 0x22, - 0x00, 0x20, 0x43, 0x00, 0xf3, 0x5a, 0x8b, 0x42, - 0x01, 0xd1, 0x01, 0x22, 0x02, 0xe0, 0x01, 0x30, - 0x02, 0x28, 0xf6, 0xd3, 0x00, 0x2a, 0x11, 0xd1, - 0x07, 0xe0, 0x36, 0x49, 0x06, 0x22, 0x06, 0x31, - 0x28, 0x1c, 0x3c, 0x00, 0x3c, 0xa5, 0x00, 0x00, - 0xf5, 0xf7, 0x5e, 0xff, 0x00, 0x28, 0x08, 0xd1, - 0xe0, 0x68, 0x01, 0x89, 0x06, 0x39, 0x01, 0x81, - 0xe0, 0x68, 0x01, 0x68, 0x06, 0x31, 0x01, 0x60, - 0x10, 0xe0, 0xe0, 0x68, 0xff, 0xf7, 0xe2, 0xfc, - 0x0c, 0xe0, 0x02, 0x31, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x02, 0x39, 0x01, 0x60, 0xe0, 0x68, - 0x00, 0x89, 0x02, 0x38, 0x02, 0x0a, 0x00, 0x02, - 0x10, 0x43, 0x08, 0x80, 0x3c, 0x00, 0x78, 0xa5, - 0x00, 0x00, 0xe0, 0x68, 0x03, 0x25, 0x02, 0x89, - 0x01, 0x68, 0x24, 0x4e, 0x02, 0x2a, 0x10, 0xd9, - 0x09, 0x88, 0x08, 0x29, 0x05, 0xd0, 0xc1, 0x23, - 0xdb, 0x00, 0x99, 0x42, 0x03, 0xd1, 0x01, 0x25, - 0x02, 0xe0, 0x00, 0x25, 0x00, 0xe0, 0x02, 0x25, - 0xe9, 0x00, 0x71, 0x58, 0x00, 0x29, 0x00, 0xd1, - 0x02, 0x25, 0xf7, 0xf7, 0x04, 0xf8, 0xe9, 0x00, - 0x89, 0x19, 0x89, 0x88, 0x88, 0x42, 0x3c, 0x00, - 0xb4, 0xa5, 0x00, 0x00, 0x00, 0xd9, 0x03, 0x25, - 0xa1, 0x1d, 0x20, 0x1c, 0xfd, 0xf7, 0x34, 0xfc, - 0x00, 0x28, 0x00, 0xd1, 0x03, 0x25, 0x02, 0x2d, - 0x05, 0xd0, 0x03, 0x2d, 0x07, 0xd1, 0xe0, 0x68, - 0xf6, 0xf7, 0xe2, 0xff, 0x70, 0xbd, 0x20, 0x1c, - 0xfd, 0xf7, 0x1c, 0xfd, 0x70, 0xbd, 0xe0, 0x68, - 0x01, 0x89, 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x02, 0x31, 0x01, 0x60, 0xe8, 0x00, - 0x3c, 0x00, 0xf0, 0xa5, 0x00, 0x00, 0x31, 0x58, - 0x20, 0x1c, 0xf5, 0xf7, 0xf1, 0xfe, 0x00, 0x28, - 0xef, 0xd1, 0xe0, 0x68, 0x01, 0x89, 0x02, 0x31, - 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, 0x02, 0x39, - 0x01, 0x60, 0xe3, 0xe7, 0x00, 0x00, 0x6a, 0x46, - 0x01, 0x00, 0x7c, 0x79, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x1c, 0x04, 0x1c, 0x15, 0x1c, 0xf7, 0xf7, - 0x8c, 0xfb, 0x00, 0x28, 0x2a, 0xd0, 0x1b, 0x49, - 0x08, 0x68, 0x3c, 0x00, 0x2c, 0xa6, 0x00, 0x00, - 0x01, 0x30, 0x08, 0x60, 0x00, 0x2e, 0x0a, 0xd0, - 0x01, 0x2e, 0x0b, 0xd0, 0x02, 0x2e, 0x0f, 0xd1, - 0x20, 0x1c, 0x04, 0xf0, 0xcd, 0xf8, 0x20, 0x1c, - 0xff, 0xf7, 0xd6, 0xfe, 0x0c, 0xe0, 0x08, 0x21, - 0xe0, 0x68, 0x02, 0xe0, 0xc1, 0x21, 0xe0, 0x68, - 0xc9, 0x00, 0x04, 0xf0, 0x35, 0xf9, 0x03, 0xe0, - 0x02, 0x21, 0x26, 0x20, 0xf6, 0xf7, 0x20, 0xfe, - 0xe2, 0x7d, 0xe1, 0x6a, 0x3c, 0x00, 0x68, 0xa6, - 0x00, 0x00, 0x28, 0x1c, 0xfc, 0xf7, 0x95, 0xfb, - 0x20, 0x63, 0x00, 0x20, 0x20, 0x62, 0xa0, 0x62, - 0x20, 0x1c, 0x00, 0xf0, 0x6c, 0xfe, 0x70, 0xbd, - 0xe0, 0x68, 0xf6, 0xf7, 0x8a, 0xff, 0x00, 0x2d, - 0xf9, 0xd0, 0xe3, 0x7d, 0x00, 0x22, 0x01, 0x20, - 0xe1, 0x6a, 0xf5, 0xf7, 0xa7, 0xfe, 0x70, 0xbd, - 0x00, 0x00, 0x94, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x04, 0xd1, 0x05, 0x48, 0x3c, 0x00, - 0xa4, 0xa6, 0x00, 0x00, 0x00, 0x68, 0x01, 0xf0, - 0x09, 0xf9, 0x80, 0xbd, 0x03, 0x21, 0x26, 0x20, - 0xf6, 0xf7, 0xf8, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x0c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x80, 0x79, 0x00, 0x24, 0xc0, 0x07, 0x2d, 0xd5, - 0xf0, 0x68, 0x00, 0x68, 0x41, 0x7a, 0x11, 0x29, - 0x28, 0xd1, 0xc1, 0x88, 0x0a, 0x0a, 0x09, 0x02, - 0x11, 0x43, 0xc9, 0x04, 0x22, 0xd1, 0x01, 0x78, - 0x3c, 0x00, 0xe0, 0xa6, 0x00, 0x00, 0x11, 0x4f, - 0x09, 0x07, 0x89, 0x0e, 0x08, 0x18, 0x41, 0x88, - 0x0a, 0x0a, 0x09, 0x02, 0x11, 0x43, 0x0d, 0x04, - 0x2d, 0x0c, 0x43, 0x2d, 0x39, 0x68, 0x01, 0xd1, - 0xca, 0x07, 0x0e, 0xd4, 0x44, 0x2d, 0x06, 0xd1, - 0xc9, 0x07, 0x04, 0xd5, 0x24, 0x30, 0x00, 0xf0, - 0x22, 0xfb, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48, - 0x85, 0x42, 0x06, 0xd1, 0x38, 0x68, 0x80, 0x07, - 0x03, 0xd5, 0x3c, 0x00, 0x1c, 0xa7, 0x00, 0x00, - 0x01, 0x24, 0xf0, 0x68, 0xf6, 0xf7, 0x3a, 0xff, - 0x20, 0x1c, 0xf8, 0xbd, 0x7c, 0x5a, 0x01, 0x00, - 0x6c, 0x07, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x28, - 0x07, 0xd0, 0x00, 0x21, 0x26, 0x20, 0x08, 0xf0, - 0x7b, 0xff, 0x02, 0x48, 0x00, 0x68, 0x01, 0xf0, - 0xbb, 0xf8, 0x80, 0xbd, 0x0c, 0x79, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0x4a, 0x08, 0x1c, - 0x51, 0x68, 0x01, 0x31, 0x3c, 0x00, 0x58, 0xa7, - 0x00, 0x00, 0x51, 0x60, 0x00, 0x21, 0x21, 0x62, - 0xa1, 0x62, 0xe2, 0x7d, 0xe1, 0x6a, 0xfc, 0xf7, - 0x18, 0xfb, 0x20, 0x63, 0x20, 0x1c, 0xf7, 0xf7, - 0xe6, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0xef, 0xfd, - 0x10, 0xbd, 0x94, 0x79, 0x01, 0x00, 0x0c, 0xb5, - 0x02, 0x1c, 0x08, 0x1c, 0x00, 0x21, 0x01, 0x91, - 0x00, 0x92, 0x6a, 0x46, 0x01, 0xa9, 0x00, 0xf0, - 0x02, 0xf8, 0x0c, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xa7, 0x00, 0x00, 0x70, 0xb5, 0x13, 0x68, - 0x00, 0x2b, 0x1e, 0xd0, 0x00, 0x26, 0x0b, 0x68, - 0x00, 0x2b, 0x02, 0xd1, 0x13, 0x68, 0x1b, 0x68, - 0x0b, 0x60, 0x13, 0x68, 0x1c, 0x68, 0x1b, 0x89, - 0xe5, 0x18, 0x08, 0xe0, 0x5c, 0x78, 0x1c, 0x19, - 0x02, 0x34, 0x0c, 0x60, 0x1c, 0x78, 0x84, 0x42, - 0x01, 0xd1, 0x18, 0x1c, 0x70, 0xbd, 0x0b, 0x68, - 0xab, 0x42, 0xf3, 0xd3, 0x13, 0x68, 0xdb, 0x68, - 0x3c, 0x00, 0xd0, 0xa7, 0x00, 0x00, 0x13, 0x60, - 0x0e, 0x60, 0x13, 0x68, 0x00, 0x2b, 0xe1, 0xd1, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x70, 0xb5, - 0x03, 0x1c, 0x20, 0xd0, 0x18, 0x68, 0x1e, 0x89, - 0x05, 0x1c, 0x16, 0xe0, 0x04, 0x78, 0xdd, 0x2c, - 0x10, 0xd1, 0x84, 0x78, 0x00, 0x2c, 0x0d, 0xd1, - 0xc4, 0x78, 0x50, 0x2c, 0x0a, 0xd1, 0x04, 0x79, - 0xf2, 0x2c, 0x07, 0xd1, 0x44, 0x79, 0x8c, 0x42, - 0x04, 0xd1, 0x3c, 0x00, 0x0c, 0xa8, 0x00, 0x00, - 0x02, 0x29, 0x0c, 0xd1, 0x84, 0x79, 0x94, 0x42, - 0x09, 0xd0, 0x44, 0x78, 0x20, 0x18, 0x02, 0x30, - 0x44, 0x1b, 0xb4, 0x42, 0xe5, 0xdb, 0xdb, 0x68, - 0x00, 0x2b, 0xde, 0xd1, 0x00, 0x20, 0x70, 0xbd, - 0x04, 0x49, 0x80, 0xb5, 0x0a, 0x78, 0x0a, 0x20, - 0x00, 0x2a, 0x00, 0xd0, 0x48, 0x6a, 0x00, 0xf0, - 0xd1, 0xf8, 0x80, 0xbd, 0x1c, 0x75, 0x01, 0x00, - 0xb0, 0xb5, 0x17, 0x4c, 0x3c, 0x00, 0x48, 0xa8, - 0x00, 0x00, 0x20, 0x68, 0x00, 0x28, 0x29, 0xd0, - 0x16, 0x4d, 0xe8, 0x69, 0x00, 0x28, 0x25, 0xd1, - 0x01, 0xf0, 0x3f, 0xfa, 0x00, 0x28, 0x21, 0xd1, - 0xff, 0xf7, 0x41, 0xfc, 0x00, 0x28, 0x1d, 0xd1, - 0x20, 0x68, 0xa9, 0x69, 0x40, 0x18, 0x08, 0xf0, - 0xd6, 0xf9, 0x00, 0x28, 0x16, 0xd0, 0x02, 0xf0, - 0x06, 0xfd, 0x21, 0x68, 0x40, 0x18, 0x08, 0xf0, - 0xce, 0xf9, 0x00, 0x28, 0x0e, 0xd0, 0x3c, 0x00, - 0x84, 0xa8, 0x00, 0x00, 0x01, 0x20, 0xe8, 0x61, - 0x00, 0x22, 0x25, 0x21, 0x80, 0x20, 0x08, 0xf0, - 0x8f, 0xff, 0x06, 0x48, 0x29, 0x6a, 0x04, 0xf0, - 0x83, 0xfd, 0x01, 0x21, 0x28, 0x6a, 0x00, 0xf0, - 0x89, 0xff, 0xb0, 0xbd, 0xe8, 0x59, 0x01, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24, 0xfa, 0xf7, - 0x0b, 0xff, 0x18, 0x4e, 0x71, 0x6a, 0x40, 0x18, - 0x3c, 0x00, 0xc0, 0xa8, 0x00, 0x00, 0x00, 0xf0, - 0x8e, 0xf8, 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0, - 0xfe, 0xfb, 0x00, 0x21, 0x25, 0x20, 0x08, 0xf0, - 0xb0, 0xfe, 0x03, 0x22, 0x29, 0x1c, 0x28, 0x1c, - 0x00, 0xf0, 0xaf, 0xf8, 0x18, 0xe0, 0x70, 0x6a, - 0x44, 0x1e, 0x00, 0xf0, 0x7c, 0xf8, 0x00, 0x28, - 0x12, 0xd1, 0x0c, 0x48, 0x31, 0x6a, 0x04, 0xf0, - 0x56, 0xfd, 0x01, 0x21, 0x30, 0x6a, 0x00, 0xf0, - 0x5c, 0xff, 0x3c, 0x00, 0xfc, 0xa8, 0x00, 0x00, - 0x00, 0x20, 0xfa, 0xf7, 0x0d, 0xfe, 0x06, 0xf0, - 0x03, 0xf8, 0x00, 0x23, 0x00, 0x22, 0x25, 0x20, - 0x05, 0x49, 0x08, 0xf0, 0x3f, 0xff, 0x20, 0x1c, - 0x07, 0xf0, 0xfc, 0xfa, 0x70, 0xbd, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0x27, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x28, - 0x07, 0xd0, 0x80, 0x28, 0x0d, 0xd1, 0x00, 0x22, - 0x00, 0x21, 0x08, 0x48, 0x3c, 0x00, 0x38, 0xa9, - 0x00, 0x00, 0xf8, 0xf7, 0x9a, 0xfe, 0x80, 0xbd, - 0x01, 0x29, 0x02, 0xd1, 0x06, 0x49, 0x00, 0x20, - 0xc8, 0x61, 0x04, 0xf0, 0xbe, 0xfb, 0x80, 0xbd, - 0x05, 0x21, 0x25, 0x20, 0xf6, 0xf7, 0xa7, 0xfc, - 0x80, 0xbd, 0x61, 0xa9, 0x00, 0x00, 0x1c, 0x75, - 0x01, 0x00, 0x00, 0x21, 0x00, 0x28, 0x80, 0xb5, - 0x01, 0xd1, 0x03, 0x48, 0x41, 0x68, 0x01, 0x22, - 0x25, 0x20, 0x08, 0xf0, 0x2c, 0xfe, 0x3c, 0x00, - 0x74, 0xa9, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0xe8, 0x59, 0x01, 0x00, 0x02, 0x49, 0xc8, 0x68, - 0x01, 0x38, 0x48, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, - 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b, 0x06, 0xd0, - 0x01, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x19, 0x1c, - 0xf5, 0xf7, 0xaa, 0xfd, 0x17, 0xe0, 0x0d, 0x4d, - 0x01, 0x1c, 0x2c, 0x78, 0x12, 0x88, 0x18, 0x1c, - 0x3c, 0x00, 0xb0, 0xa9, 0x00, 0x00, 0xf5, 0xf7, - 0xa2, 0xfd, 0x28, 0x78, 0x84, 0x42, 0x0d, 0xd0, - 0x00, 0x23, 0x6b, 0x61, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x20, 0x07, 0xf0, 0xa4, 0xfa, 0x05, 0xe0, - 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0x92, - 0xf8, 0xf7, 0x23, 0xfc, 0x01, 0x20, 0x38, 0xbd, - 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x01, 0x26, 0x08, 0xf0, 0xe1, 0xf9, - 0x05, 0x1c, 0x3c, 0x00, 0xec, 0xa9, 0x00, 0x00, - 0x00, 0x20, 0xfa, 0xf7, 0x8b, 0xfd, 0x44, 0x43, - 0x02, 0xf0, 0x40, 0xfc, 0x02, 0xf0, 0x3e, 0xfc, - 0x01, 0x1c, 0x23, 0x1c, 0x00, 0x22, 0x28, 0x1c, - 0x08, 0xf0, 0x7c, 0xfa, 0x00, 0x28, 0x13, 0xd1, - 0x0a, 0x48, 0x23, 0x1c, 0x00, 0x22, 0x81, 0x69, - 0x28, 0x1c, 0x08, 0xf0, 0x73, 0xfa, 0x00, 0x28, - 0x0a, 0xd1, 0xf8, 0xf7, 0x19, 0xfc, 0x01, 0x1c, - 0x23, 0x1c, 0x00, 0x22, 0x3c, 0x00, 0x28, 0xaa, - 0x00, 0x00, 0x28, 0x1c, 0x08, 0xf0, 0x69, 0xfa, - 0x00, 0x28, 0x00, 0xd1, 0x00, 0x26, 0x30, 0x1c, - 0x70, 0xbd, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x0d, 0x1c, 0x04, 0x1c, 0x16, 0x1c, 0x07, 0xf0, - 0x76, 0xf9, 0x00, 0x28, 0x0d, 0xd0, 0xfa, 0xf7, - 0x52, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30, - 0x01, 0x30, 0x43, 0x68, 0x00, 0x2b, 0x04, 0xd0, - 0x22, 0x1c, 0x29, 0x1c, 0x30, 0x1c, 0x3c, 0x00, - 0x64, 0xaa, 0x00, 0x00, 0xf5, 0xf7, 0xbb, 0xfc, - 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x1d, 0x20, 0x08, 0xf0, 0xdf, 0xfd, 0x07, 0x4a, - 0x07, 0x48, 0x11, 0x69, 0x01, 0x60, 0x51, 0x69, - 0x41, 0x60, 0x06, 0x49, 0x49, 0x68, 0x81, 0x60, - 0x00, 0x21, 0xc1, 0x60, 0x03, 0xf0, 0x74, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x28, 0x61, 0x01, 0x00, - 0x48, 0x75, 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, - 0x3c, 0x00, 0xa0, 0xaa, 0x00, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x40, 0x6b, 0x00, 0x28, 0x35, 0xd0, - 0x1d, 0x4d, 0x00, 0x26, 0x28, 0x78, 0x00, 0x28, - 0x24, 0xd0, 0x41, 0x20, 0x00, 0x5d, 0x00, 0x28, - 0x03, 0xd1, 0x08, 0xf0, 0x76, 0xf9, 0xa8, 0x61, - 0x1b, 0xe0, 0x69, 0x69, 0x01, 0x31, 0x69, 0x61, - 0xa8, 0x68, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x42, - 0x06, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31, - 0x04, 0x30, 0x3c, 0x00, 0xdc, 0xaa, 0x00, 0x00, - 0x82, 0x22, 0xff, 0xf7, 0xad, 0xff, 0x68, 0x68, - 0x00, 0x28, 0x0a, 0xd0, 0x69, 0x69, 0x81, 0x42, - 0x07, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31, - 0x04, 0x30, 0x02, 0x22, 0xff, 0xf7, 0xa0, 0xff, - 0x6e, 0x61, 0x68, 0x78, 0x05, 0x21, 0x08, 0x40, - 0x08, 0xd0, 0x07, 0x48, 0x00, 0x78, 0x0e, 0x28, - 0x03, 0xd3, 0x60, 0x34, 0xe0, 0x79, 0xfb, 0xf7, - 0xcf, 0xff, 0x70, 0xbd, 0x3c, 0x00, 0x18, 0xab, - 0x00, 0x00, 0x03, 0x48, 0x06, 0x60, 0x70, 0xbd, - 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x10, 0x67, - 0x01, 0x00, 0xd4, 0x7e, 0x01, 0x00, 0x80, 0x02, - 0x70, 0x47, 0x14, 0x23, 0x30, 0xb5, 0x09, 0x4d, - 0x4b, 0x43, 0x5b, 0x19, 0x5b, 0x68, 0x08, 0x24, - 0x00, 0x2b, 0x00, 0xd1, 0x02, 0x24, 0x38, 0x23, - 0x5a, 0x43, 0x05, 0x4b, 0x89, 0x00, 0xd2, 0x18, - 0x51, 0x5a, 0x02, 0x68, 0x09, 0x19, 0x3c, 0x00, - 0x54, 0xab, 0x00, 0x00, 0x51, 0x1a, 0x01, 0x60, - 0x30, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00, - 0x8c, 0x41, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, - 0x2c, 0x48, 0x14, 0x1c, 0x2c, 0x4a, 0x48, 0x43, - 0x86, 0x46, 0x80, 0x18, 0x80, 0x0d, 0x84, 0x46, - 0x2b, 0x48, 0x2a, 0x4a, 0x06, 0x26, 0x1d, 0x1c, - 0x48, 0x43, 0x4a, 0x43, 0x0e, 0x2f, 0x40, 0xd2, - 0x01, 0xa3, 0xdb, 0x5d, 0x5b, 0x00, 0x9f, 0x44, - 0x3c, 0x00, 0x90, 0xab, 0x00, 0x00, 0x06, 0x08, - 0x0a, 0x0f, 0x14, 0x18, 0x1d, 0x20, 0x27, 0x24, - 0x27, 0x2b, 0x2f, 0x31, 0xc8, 0x00, 0x1f, 0xe0, - 0x88, 0x00, 0x1d, 0xe0, 0x21, 0x49, 0x70, 0x46, - 0x40, 0x18, 0x00, 0x0d, 0x18, 0xe0, 0x1f, 0x4a, - 0x80, 0x18, 0x80, 0x0d, 0x40, 0x18, 0x21, 0xe0, - 0x1e, 0x48, 0x10, 0x18, 0x00, 0x0d, 0x1d, 0xe0, - 0x1d, 0x49, 0x70, 0x46, 0x40, 0x18, 0x40, 0x0d, - 0x0a, 0xe0, 0x3c, 0x00, 0xcc, 0xab, 0x00, 0x00, - 0x1b, 0x49, 0x40, 0x18, 0x01, 0xe0, 0x1b, 0x48, - 0x10, 0x18, 0x40, 0x0d, 0x11, 0xe0, 0x1a, 0x49, - 0x40, 0x18, 0x05, 0xe0, 0x60, 0x46, 0x20, 0x80, - 0x00, 0x20, 0x16, 0xe0, 0x17, 0x48, 0x10, 0x18, - 0x80, 0x0d, 0x06, 0xe0, 0x16, 0x49, 0x02, 0xe0, - 0x16, 0x48, 0x48, 0x43, 0x16, 0x49, 0x40, 0x18, - 0xc0, 0x0d, 0x03, 0x30, 0x80, 0x08, 0x80, 0x00, - 0x20, 0x80, 0x2e, 0x80, 0x3c, 0x00, 0x08, 0xac, - 0x00, 0x00, 0xf8, 0xbd, 0xff, 0x21, 0xff, 0x20, - 0xf6, 0xf7, 0x49, 0xfb, 0x00, 0x20, 0x20, 0x80, - 0x28, 0x80, 0xf6, 0xe7, 0x00, 0x00, 0xd1, 0x45, - 0x17, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xe3, 0x38, - 0x0e, 0x00, 0x55, 0x55, 0x15, 0x00, 0xff, 0xff, - 0x0f, 0x00, 0xa9, 0xaa, 0x2a, 0x01, 0x70, 0x1c, - 0x37, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xcb, 0xcc, - 0x4c, 0x00, 0x70, 0x1c, 0x47, 0x00, 0x3c, 0x00, - 0x44, 0xac, 0x00, 0x00, 0xa9, 0xaa, 0x7a, 0x00, - 0x70, 0x1c, 0x67, 0x00, 0xa9, 0xaa, 0xba, 0x00, - 0x84, 0xf6, 0x12, 0x00, 0xec, 0x25, 0xb4, 0x00, - 0x04, 0x49, 0x00, 0x28, 0x01, 0xd0, 0x09, 0x22, - 0x00, 0xe0, 0x14, 0x22, 0x4a, 0x80, 0x48, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xa4, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x06, 0x22, 0xf5, 0xf7, 0x40, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0xbc, 0xb5, 0x15, 0x1c, - 0x3c, 0x00, 0x80, 0xac, 0x00, 0x00, 0x04, 0x1c, - 0x04, 0x31, 0x09, 0x04, 0x09, 0x0c, 0x01, 0xaa, - 0x6b, 0x46, 0xff, 0xf7, 0x6a, 0xff, 0x38, 0x20, - 0x06, 0x49, 0x68, 0x43, 0x40, 0x18, 0xa1, 0x00, - 0x40, 0x5a, 0x00, 0xab, 0x99, 0x88, 0x40, 0x18, - 0x19, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xbc, 0xbd, 0x8c, 0x41, 0x01, 0x00, 0xbc, 0xb5, - 0x04, 0x1c, 0x15, 0x1c, 0x01, 0xaa, 0x6b, 0x46, - 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0xac, 0x00, 0x00, - 0x53, 0xff, 0x38, 0x20, 0x05, 0x49, 0x68, 0x43, - 0x40, 0x18, 0xa1, 0x00, 0x40, 0x5a, 0x00, 0xab, - 0x99, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xbc, 0xbd, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x0f, 0xd0, 0x00, 0x29, - 0x0d, 0xd0, 0x02, 0x78, 0x0b, 0x78, 0x9a, 0x42, - 0x09, 0xd1, 0xff, 0x2a, 0x05, 0xd0, 0x42, 0x78, - 0x02, 0x32, 0xf5, 0xf7, 0x3c, 0x00, 0xf8, 0xac, - 0x00, 0x00, 0x81, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49, - 0xf5, 0xf7, 0x75, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x5e, 0x40, 0x01, 0x00, 0x01, 0x1c, - 0x49, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xad, 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0xf5, 0xf7, 0x60, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x80, 0xb5, 0xff, 0xf7, 0xc7, 0xff, 0x80, 0xbd, - 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49, 0xf5, 0xf7, - 0x51, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x01, 0x1c, 0x80, 0x20, - 0x3c, 0x00, 0x70, 0xad, 0x00, 0x00, 0x81, 0x43, - 0x8a, 0x08, 0x0e, 0x20, 0x1c, 0x2a, 0x10, 0xb5, - 0x06, 0xd2, 0x03, 0x4c, 0x52, 0x00, 0xa3, 0x5c, - 0x8b, 0x42, 0x01, 0xd1, 0x10, 0x19, 0x40, 0x78, - 0x10, 0xbd, 0xfc, 0x41, 0x01, 0x00, 0x14, 0x23, - 0x02, 0x49, 0x58, 0x43, 0x40, 0x18, 0x40, 0x68, - 0x70, 0x47, 0x74, 0x40, 0x01, 0x00, 0x20, 0x22, - 0x01, 0x1c, 0x80, 0xb5, 0x02, 0x48, 0xf5, 0xf7, - 0x52, 0xfd, 0x3c, 0x00, 0xac, 0xad, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x48, 0x61, 0x01, 0x00, - 0x08, 0x06, 0x00, 0x0e, 0x02, 0x28, 0x01, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x29, 0x0c, 0xd0, 0x07, 0x49, 0x09, 0x68, - 0x00, 0x29, 0x08, 0xd0, 0x14, 0x23, 0x06, 0x49, - 0x58, 0x43, 0x40, 0x18, 0xc0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xad, - 0x00, 0x00, 0xac, 0x69, 0x01, 0x00, 0x74, 0x40, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x22, - 0x01, 0x1c, 0x04, 0x48, 0xf5, 0xf7, 0x7d, 0xfb, - 0x06, 0x22, 0x21, 0x1c, 0x03, 0x48, 0xf5, 0xf7, - 0x78, 0xfb, 0x10, 0xbd, 0x00, 0x00, 0x12, 0x61, - 0x01, 0x00, 0x40, 0x80, 0x07, 0x00, 0x00, 0x29, - 0x01, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x38, 0x23, - 0x5a, 0x43, 0x07, 0x4b, 0xd2, 0x18, 0x3c, 0x00, - 0x24, 0xae, 0x00, 0x00, 0x83, 0x00, 0xd2, 0x5a, - 0x14, 0x23, 0x58, 0x43, 0x05, 0x4b, 0xc0, 0x18, - 0x40, 0x88, 0x10, 0x18, 0x08, 0x1a, 0x0a, 0x38, - 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00, - 0x8c, 0x41, 0x01, 0x00, 0x74, 0x40, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c, - 0x1c, 0x1c, 0x19, 0x1c, 0x00, 0xf0, 0x5a, 0xf8, - 0x05, 0x1c, 0x14, 0x35, 0x22, 0x1c, 0x31, 0x1c, - 0x3c, 0x00, 0x60, 0xae, 0x00, 0x00, 0x38, 0x1c, - 0xff, 0xf7, 0x0b, 0xff, 0x28, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0xf8, 0xbd, 0x00, 0x00, 0x00, 0xb5, - 0x00, 0xf0, 0x4b, 0xf8, 0x0a, 0x30, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c, 0x1c, 0x1c, - 0x19, 0x1c, 0x00, 0xf0, 0x3e, 0xf8, 0x45, 0x00, - 0x1e, 0x35, 0x22, 0x1c, 0x31, 0x1c, 0x38, 0x1c, - 0xff, 0xf7, 0x3c, 0x00, 0x9c, 0xae, 0x00, 0x00, - 0xef, 0xfe, 0x28, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xf8, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c, - 0x81, 0xb0, 0x0a, 0xa9, 0x14, 0x1c, 0x1e, 0x1c, - 0x03, 0xc9, 0x00, 0xf0, 0x29, 0xf8, 0x05, 0x1c, - 0x1e, 0x35, 0x21, 0x1c, 0x30, 0x1c, 0x00, 0xf0, - 0x23, 0xf8, 0x2d, 0x18, 0x22, 0x1c, 0x39, 0x1c, - 0x01, 0x98, 0xff, 0xf7, 0xd5, 0xfe, 0x28, 0x18, - 0x00, 0x04, 0x00, 0x0c, 0x3c, 0x00, 0xd8, 0xae, - 0x00, 0x00, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0x49, - 0x80, 0xb5, 0x09, 0x88, 0x09, 0x29, 0x04, 0xd0, - 0x14, 0x29, 0x07, 0xd1, 0x01, 0x01, 0x80, 0x00, - 0x00, 0xe0, 0xc1, 0x00, 0x08, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0x80, 0xbd, 0xff, 0x21, 0xff, 0x20, - 0xf6, 0xf7, 0xd1, 0xf9, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x38, 0x23, - 0x59, 0x43, 0x06, 0x4a, 0x14, 0x23, 0x3c, 0x00, - 0x14, 0xaf, 0x00, 0x00, 0x89, 0x18, 0x82, 0x00, - 0x89, 0x5a, 0x05, 0x4a, 0x58, 0x43, 0x80, 0x18, - 0x40, 0x88, 0x08, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0x70, 0x47, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x02, 0x48, 0x03, 0x49, - 0x00, 0x68, 0x40, 0x00, 0x08, 0x5a, 0x70, 0x47, - 0xa8, 0x69, 0x01, 0x00, 0x54, 0x40, 0x01, 0x00, - 0x0a, 0x20, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x1c, - 0x3c, 0x00, 0x50, 0xaf, 0x00, 0x00, 0xfd, 0xf7, - 0x62, 0xff, 0x20, 0x1c, 0x10, 0xbd, 0xb0, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d, - 0xff, 0xf7, 0xf5, 0xfe, 0x00, 0x28, 0x18, 0xd0, - 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x08, 0xf0, - 0xe2, 0xfd, 0x00, 0x28, 0x11, 0xd0, 0x29, 0x88, - 0x09, 0x48, 0x20, 0x22, 0x81, 0x82, 0x69, 0x88, - 0x01, 0x83, 0xa9, 0x88, 0x06, 0x35, 0x41, 0x83, - 0xc5, 0x61, 0x3c, 0x00, 0x8c, 0xaf, 0x00, 0x00, - 0x30, 0x21, 0x09, 0x5d, 0x11, 0x54, 0x61, 0x6b, - 0x41, 0x62, 0x01, 0x20, 0xf7, 0xf7, 0x28, 0xf8, - 0x20, 0x1c, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x21, 0x1c, - 0x14, 0x31, 0x05, 0x68, 0x20, 0x1c, 0x08, 0xf0, - 0xc1, 0xfd, 0x00, 0x28, 0x08, 0xd0, 0x05, 0x4e, - 0xf0, 0x68, 0x02, 0xf0, 0xcf, 0xfd, 0x28, 0x88, - 0xf0, 0x82, 0x03, 0x20, 0x3c, 0x00, 0xc8, 0xaf, - 0x00, 0x00, 0xf7, 0xf7, 0x10, 0xf8, 0x20, 0x1c, - 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x3e, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d, - 0xff, 0xf7, 0xb7, 0xfe, 0x00, 0x28, 0x21, 0xd0, - 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x02, 0xaa, - 0x08, 0xf0, 0x77, 0xfd, 0x00, 0x28, 0x19, 0xd0, - 0x02, 0x98, 0x4b, 0x21, 0x09, 0x5c, 0x00, 0x29, - 0x10, 0xd0, 0x01, 0x29, 0x14, 0xd0, 0x3c, 0x00, - 0x04, 0xb0, 0x00, 0x00, 0x02, 0x29, 0x0c, 0xd1, - 0x29, 0x88, 0x0d, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x20, 0x1c, 0x03, 0xf0, 0x51, 0xf8, 0x01, 0x90, - 0x68, 0x46, 0x02, 0xf0, 0x5d, 0xfa, 0xf6, 0xf7, - 0xb5, 0xf8, 0x00, 0x21, 0x02, 0x98, 0x06, 0xf0, - 0x9f, 0xfe, 0x20, 0x1c, 0x3e, 0xbd, 0x07, 0xf0, - 0x29, 0xf8, 0x02, 0x98, 0x00, 0x21, 0x80, 0x69, - 0xc2, 0x07, 0xd2, 0x0f, 0x04, 0x20, 0xf6, 0xf7, - 0x3c, 0x00, 0x40, 0xb0, 0x00, 0x00, 0x7f, 0xff, - 0xee, 0xe7, 0x10, 0xb5, 0x04, 0x1c, 0xfd, 0xf7, - 0xe6, 0xfe, 0x20, 0x1c, 0x10, 0xbd, 0x3e, 0xb5, - 0x05, 0x1c, 0x00, 0xf0, 0x40, 0xfe, 0x00, 0x28, - 0x15, 0xd1, 0x28, 0x1c, 0x14, 0x30, 0xfa, 0xf7, - 0xce, 0xfb, 0x00, 0x28, 0x0f, 0xd0, 0x05, 0x21, - 0x28, 0x69, 0xff, 0xf7, 0x86, 0xfb, 0x04, 0x1c, - 0x09, 0xd0, 0x05, 0x22, 0x21, 0x1c, 0x68, 0x46, - 0xf5, 0xf7, 0x3c, 0x00, 0x7c, 0xb0, 0x00, 0x00, - 0x3d, 0xfa, 0x05, 0x34, 0x02, 0x94, 0x68, 0x46, - 0x03, 0xf0, 0x1a, 0xfb, 0x2a, 0x1c, 0x0d, 0x21, - 0x8f, 0x20, 0x08, 0xf0, 0x8f, 0xfb, 0x00, 0x20, - 0x3e, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0xfa, 0xf7, 0x98, 0xf8, 0x20, 0x1c, 0x05, 0xf0, - 0xe5, 0xf8, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x69, 0x00, 0x21, - 0x94, 0xb0, 0xff, 0xf7, 0x3c, 0x00, 0xb8, 0xb0, - 0x00, 0x00, 0x61, 0xfb, 0x69, 0x46, 0xfb, 0xf7, - 0x26, 0xf8, 0x00, 0x28, 0x1e, 0xd0, 0x00, 0x98, - 0xfa, 0xf7, 0x29, 0xfa, 0x01, 0x1c, 0x01, 0xa8, - 0x02, 0xf0, 0xd7, 0xf9, 0x00, 0x98, 0xfa, 0xf7, - 0xd2, 0xf9, 0x04, 0x90, 0x05, 0x20, 0x09, 0xad, - 0x68, 0x72, 0x02, 0xa8, 0x21, 0x1c, 0x06, 0x22, - 0x02, 0x30, 0xf5, 0xf7, 0x06, 0xfa, 0x01, 0x20, - 0x08, 0x90, 0x21, 0x6a, 0x0a, 0x90, 0x3c, 0x00, - 0xf4, 0xb0, 0x00, 0x00, 0x28, 0x20, 0x09, 0x91, - 0x00, 0x5d, 0x28, 0x72, 0x01, 0xa8, 0x00, 0xf0, - 0x69, 0xf8, 0x20, 0x1c, 0x14, 0xb0, 0xb0, 0xbd, - 0xff, 0xb5, 0x16, 0x1c, 0x1f, 0x1c, 0x81, 0xb0, - 0x0a, 0x9d, 0x4c, 0x20, 0xf6, 0xf7, 0x90, 0xfb, - 0x04, 0x1c, 0x14, 0x30, 0x06, 0x22, 0x02, 0x99, - 0xf5, 0xf7, 0xea, 0xf9, 0x20, 0x1c, 0x06, 0x22, - 0x01, 0x99, 0xf5, 0xf7, 0xe5, 0xf9, 0x28, 0x20, - 0x3c, 0x00, 0x30, 0xb1, 0x00, 0x00, 0x00, 0x21, - 0x06, 0x55, 0xe1, 0x60, 0x27, 0x62, 0x00, 0x2d, - 0x01, 0xd0, 0x8e, 0x20, 0x00, 0xe0, 0x8d, 0x20, - 0x22, 0x1c, 0x0d, 0x21, 0x08, 0xf0, 0x33, 0xfb, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x05, 0x1c, 0x4c, 0x20, 0xf6, 0xf7, 0x6f, 0xfb, - 0x04, 0x1c, 0x4c, 0x22, 0x29, 0x1c, 0xf5, 0xf7, - 0x26, 0xfa, 0x29, 0x20, 0x40, 0x5d, 0x0d, 0x28, - 0x2c, 0xd2, 0x3c, 0x00, 0x6c, 0xb1, 0x00, 0x00, - 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, - 0x28, 0x1a, 0x28, 0x1e, 0x06, 0x0a, 0x28, 0x28, - 0x0e, 0x28, 0x22, 0x12, 0x16, 0x00, 0x22, 0x1c, - 0x0d, 0x21, 0x8c, 0x20, 0x1a, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x83, 0x20, 0x16, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x84, 0x20, 0x12, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x85, 0x20, 0x0e, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x86, 0x20, 0x3c, 0x00, 0xa8, 0xb1, - 0x00, 0x00, 0x0a, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x87, 0x20, 0x06, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x89, 0x20, 0x02, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x8b, 0x20, 0x08, 0xf0, 0xf6, 0xfa, 0xb0, 0xbd, - 0xe8, 0x68, 0xf6, 0xf7, 0xe6, 0xf9, 0x20, 0x1c, - 0xf6, 0xf7, 0x11, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5, - 0x05, 0x1c, 0x90, 0x20, 0xf6, 0xf7, 0x2d, 0xfb, - 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x3c, 0x00, - 0xe4, 0xb1, 0x00, 0x00, 0x5b, 0xf9, 0x37, 0x4e, - 0x01, 0x27, 0xf0, 0x69, 0x04, 0x28, 0x03, 0xd9, - 0x70, 0x6b, 0x01, 0x30, 0x70, 0x63, 0x4d, 0xe0, - 0x33, 0x48, 0xb1, 0x6b, 0x04, 0xf0, 0xd0, 0xf8, - 0x01, 0x20, 0x20, 0x62, 0xa8, 0x7e, 0x21, 0x1c, - 0x80, 0x31, 0x02, 0x91, 0x08, 0x70, 0x22, 0x1c, - 0x60, 0x32, 0x01, 0x92, 0x00, 0x20, 0x2f, 0x1c, - 0x20, 0x37, 0x90, 0x72, 0x78, 0x7a, 0x2b, 0x1c, - 0x3c, 0x00, 0x20, 0xb2, 0x00, 0x00, 0x14, 0x33, - 0xd0, 0x72, 0xe8, 0x68, 0xaa, 0x1d, 0xa0, 0x60, - 0xe8, 0x6b, 0x48, 0x60, 0x44, 0x20, 0x40, 0x5d, - 0x08, 0x72, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0, - 0xaa, 0xfc, 0x68, 0x6a, 0x00, 0x28, 0x0a, 0xd1, - 0x01, 0x9a, 0x20, 0x1c, 0x93, 0x7a, 0x02, 0x99, - 0x22, 0x1c, 0x70, 0x32, 0x58, 0x30, 0x09, 0x78, - 0xfa, 0xf7, 0xdb, 0xf9, 0x06, 0xe0, 0x3a, 0x7a, - 0x23, 0x1c, 0x3c, 0x00, 0x5c, 0xb2, 0x00, 0x00, - 0xe8, 0x69, 0x29, 0x6a, 0x70, 0x33, 0xfd, 0xf7, - 0x8d, 0xf9, 0x30, 0x20, 0x40, 0x5d, 0x18, 0x49, - 0x07, 0x28, 0x0b, 0xd1, 0x58, 0x20, 0x00, 0x5d, - 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0xe0, 0x61, - 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c, 0xf7, 0xf7, - 0x3f, 0xff, 0x18, 0xe0, 0x01, 0x22, 0x20, 0x1c, - 0x05, 0xf0, 0xac, 0xff, 0x07, 0x1c, 0x12, 0xd0, - 0x03, 0xf0, 0x06, 0xff, 0x3c, 0x00, 0x98, 0xb2, - 0x00, 0x00, 0xf3, 0x6d, 0x00, 0x2b, 0x06, 0xd0, - 0x60, 0x68, 0x20, 0x30, 0x82, 0x7b, 0x61, 0x6b, - 0x38, 0x1c, 0xf5, 0xf7, 0x99, 0xf8, 0xe8, 0x68, - 0xf6, 0xf7, 0x73, 0xf9, 0x20, 0x1c, 0xf6, 0xf7, - 0x9e, 0xfa, 0xfe, 0xbd, 0xf0, 0x69, 0x01, 0x30, - 0xf0, 0x61, 0xfa, 0xe7, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x05, 0x31, - 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00, - 0xd4, 0xb2, 0x00, 0x00, 0x0d, 0x1c, 0x09, 0x04, - 0x09, 0x0c, 0x00, 0x20, 0xf6, 0xf7, 0x7c, 0xf9, - 0x04, 0x1c, 0x2a, 0x1c, 0x31, 0x1c, 0x00, 0x68, - 0xf5, 0xf7, 0x06, 0xf9, 0x20, 0x1c, 0x70, 0xbd, - 0x40, 0x88, 0x70, 0x47, 0x03, 0x78, 0x1b, 0x07, - 0x9b, 0x0f, 0x0b, 0x70, 0x00, 0x78, 0x00, 0x09, - 0x10, 0x70, 0x70, 0x47, 0x04, 0x30, 0x70, 0x47, - 0x04, 0x30, 0x70, 0x47, 0xd4, 0x21, 0x01, 0x70, - 0x3c, 0x00, 0x10, 0xb3, 0x00, 0x00, 0x00, 0x21, - 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x21, - 0x01, 0x70, 0x00, 0x21, 0x41, 0x70, 0x70, 0x47, - 0x00, 0x00, 0xb4, 0x21, 0x01, 0x70, 0x00, 0x21, - 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, - 0x48, 0x65, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x01, 0x49, 0x08, 0x65, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49, - 0x88, 0x65, 0x3c, 0x00, 0x4c, 0xb3, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0xf8, 0xb5, 0x5f, 0x4f, 0x05, 0x1c, 0xb8, 0x68, - 0x01, 0x30, 0xb8, 0x60, 0x07, 0xf0, 0x24, 0xfd, - 0x38, 0x61, 0x90, 0x20, 0xf6, 0xf7, 0x66, 0xfa, - 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x94, 0xf8, - 0x28, 0x6b, 0x27, 0x1c, 0x60, 0x63, 0x68, 0x8b, - 0x80, 0x37, 0x26, 0x1c, 0xc0, 0x07, 0xc0, 0x0f, - 0x20, 0x62, 0x68, 0x8b, 0x3c, 0x00, 0x88, 0xb3, - 0x00, 0x00, 0x60, 0x36, 0x02, 0x21, 0x40, 0x07, - 0xc0, 0x0f, 0x20, 0x63, 0x68, 0x8b, 0x80, 0x07, - 0xc0, 0x0f, 0xf8, 0x60, 0x28, 0x7f, 0x38, 0x70, - 0xb1, 0x72, 0x00, 0x28, 0x08, 0xd1, 0xf9, 0xf7, - 0xc8, 0xff, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x20, - 0x60, 0x62, 0x01, 0xe0, 0x01, 0x20, 0xa0, 0x62, - 0xf8, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x21, - 0x02, 0x20, 0x06, 0xf0, 0xcc, 0xff, 0x3c, 0x00, - 0xc4, 0xb3, 0x00, 0x00, 0x2b, 0x1c, 0x10, 0x33, - 0xaa, 0x1d, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0, - 0xdf, 0xfb, 0xa8, 0x6a, 0x00, 0x28, 0x0c, 0xd1, - 0x39, 0x78, 0x02, 0x29, 0x07, 0xd0, 0x22, 0x1c, - 0x70, 0x32, 0x20, 0x1c, 0x58, 0x30, 0xb3, 0x7a, - 0xfa, 0xf7, 0x10, 0xf9, 0x08, 0xe0, 0x01, 0x26, - 0x5e, 0xe0, 0xaa, 0x7d, 0x23, 0x1c, 0x28, 0x6a, - 0x69, 0x6a, 0x70, 0x33, 0xfd, 0xf7, 0xc0, 0xf8, - 0x3c, 0x00, 0x00, 0xb4, 0x00, 0x00, 0xe9, 0x68, - 0x00, 0x20, 0x09, 0x89, 0x00, 0x29, 0x00, 0xd1, - 0x04, 0x20, 0xf0, 0x72, 0x38, 0x78, 0x01, 0x28, - 0x14, 0xd1, 0x00, 0x27, 0x00, 0x90, 0x00, 0x20, - 0x06, 0xe0, 0x29, 0x69, 0x01, 0x29, 0x03, 0xd1, - 0xa9, 0x69, 0x01, 0x27, 0x89, 0x07, 0x1a, 0xd5, - 0x06, 0xf0, 0x79, 0xfc, 0x00, 0x28, 0xf4, 0xd1, - 0x01, 0x2f, 0x14, 0xd1, 0x00, 0x98, 0x01, 0x28, - 0x11, 0xd1, 0x3c, 0x00, 0x3c, 0xb4, 0x00, 0x00, - 0x08, 0xe0, 0x20, 0x1c, 0x58, 0x30, 0x06, 0xf0, - 0xe1, 0xfc, 0x00, 0x28, 0x0a, 0xd0, 0x80, 0x69, - 0x80, 0x07, 0x07, 0xd5, 0xf0, 0x7a, 0x08, 0x21, - 0x08, 0x43, 0xf0, 0x72, 0x01, 0x20, 0xe0, 0x62, - 0xe8, 0x7d, 0x30, 0x73, 0xe8, 0x68, 0xa0, 0x60, - 0xe0, 0x6a, 0x00, 0x28, 0x12, 0xd0, 0x1a, 0x4f, - 0xf8, 0x6b, 0x00, 0x28, 0x0e, 0xd0, 0x30, 0x7b, - 0xf5, 0xf7, 0xde, 0xfe, 0x3c, 0x00, 0x78, 0xb4, - 0x00, 0x00, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c, - 0x38, 0x1c, 0x40, 0x30, 0xfc, 0xf7, 0x55, 0xfc, - 0x14, 0x48, 0xb9, 0x6b, 0x03, 0xf0, 0x89, 0xff, - 0xf8, 0xbd, 0x10, 0x4f, 0x12, 0x48, 0xb9, 0x6b, - 0x03, 0xf0, 0x83, 0xff, 0x00, 0x22, 0x20, 0x1c, - 0x10, 0x49, 0x05, 0xf0, 0xa2, 0xfe, 0x06, 0x1c, - 0x03, 0xd1, 0x38, 0x6a, 0x01, 0x30, 0x38, 0x62, - 0xee, 0xe7, 0x20, 0x1c, 0xf6, 0xf7, 0x3c, 0x00, - 0xb4, 0xb4, 0x00, 0x00, 0x9f, 0xf9, 0xe8, 0x68, - 0xf6, 0xf7, 0x6e, 0xf8, 0x03, 0xf0, 0xf2, 0xfd, - 0x04, 0x48, 0x83, 0x6d, 0x00, 0x2b, 0xe2, 0xd0, - 0x00, 0x22, 0x30, 0x1c, 0x29, 0x6b, 0xf4, 0xf7, - 0x86, 0xff, 0xdc, 0xe7, 0xc4, 0x69, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x11, 0x30, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x20, - 0x07, 0xf0, 0xfe, 0xfc, 0x07, 0xf0, 0x5e, 0xfc, - 0x3c, 0x00, 0xf0, 0xb4, 0x00, 0x00, 0x0b, 0x49, - 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c, 0x07, 0xf0, - 0x90, 0xfb, 0x00, 0x28, 0x07, 0xd0, 0xf7, 0xf7, - 0x34, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x12, 0x21, - 0x86, 0x20, 0xf5, 0xf7, 0xca, 0xfe, 0xf7, 0xf7, - 0x2c, 0xf9, 0x00, 0x28, 0xee, 0xd1, 0x01, 0xf0, - 0x80, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x40, 0x9c, - 0x00, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x01, 0x1c, - 0x17, 0x4a, 0x3c, 0x00, 0x2c, 0xb5, 0x00, 0x00, - 0x01, 0x29, 0x50, 0x69, 0x04, 0xd0, 0x80, 0x29, - 0x1d, 0xd0, 0x81, 0x29, 0x21, 0xd1, 0x1c, 0xe0, - 0x91, 0x78, 0x01, 0x29, 0x15, 0xd1, 0x02, 0x21, - 0x91, 0x70, 0x14, 0x1c, 0x01, 0x1c, 0x10, 0x48, - 0x03, 0xf0, 0x28, 0xff, 0x01, 0x21, 0x60, 0x69, - 0x00, 0xf0, 0x2e, 0xf9, 0x60, 0x69, 0x01, 0xf0, - 0x5f, 0xfc, 0x20, 0x70, 0xa0, 0x88, 0xa1, 0x69, - 0x00, 0x23, 0x0a, 0x4a, 0x3c, 0x00, 0x68, 0xb5, - 0x00, 0x00, 0x07, 0xf0, 0x7e, 0xfc, 0x10, 0xbd, - 0x22, 0x21, 0x06, 0xe0, 0x01, 0xf0, 0x1d, 0xfc, - 0x20, 0x1c, 0x00, 0xf0, 0x4a, 0xf8, 0x10, 0xbd, - 0x1c, 0x21, 0x20, 0x20, 0xf5, 0xf7, 0x8f, 0xfe, - 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x3d, 0x2e, 0x00, 0x00, 0x70, 0xb5, - 0x1c, 0x4c, 0xa0, 0x78, 0x00, 0x28, 0x32, 0xd0, - 0x05, 0x28, 0x30, 0xd0, 0x60, 0x69, 0x3c, 0x00, - 0xa4, 0xb5, 0x00, 0x00, 0x00, 0xf0, 0xea, 0xf8, - 0x18, 0x4e, 0xb5, 0x79, 0xa0, 0x78, 0x01, 0x28, - 0x0b, 0xd0, 0x02, 0x28, 0x0e, 0xd0, 0x03, 0x28, - 0x10, 0xd0, 0x04, 0x28, 0x17, 0xd1, 0x42, 0x1f, - 0x80, 0x21, 0x20, 0x20, 0x08, 0xf0, 0x08, 0xf8, - 0x0e, 0xe0, 0x00, 0x21, 0x20, 0x20, 0x08, 0xf0, - 0x31, 0xf8, 0x0c, 0xe0, 0xa0, 0x88, 0x07, 0xf0, - 0x1d, 0xfc, 0x05, 0xe0, 0x20, 0x78, 0x00, 0xf0, - 0x3c, 0x00, 0xe0, 0xb5, 0x00, 0x00, 0x39, 0xfa, - 0x00, 0x20, 0x00, 0xf0, 0xc4, 0xfd, 0x60, 0x69, - 0x01, 0xf0, 0xe1, 0xfb, 0x05, 0x20, 0xa0, 0x70, - 0xb5, 0x71, 0x60, 0x69, 0x00, 0xf0, 0x61, 0xf9, - 0x00, 0x22, 0x20, 0x21, 0x81, 0x20, 0x08, 0xf0, - 0xd6, 0xf8, 0x70, 0xbd, 0x00, 0x00, 0xb4, 0x79, - 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xb0, 0xb5, - 0x0d, 0x4d, 0x04, 0x1c, 0xa8, 0x78, 0x00, 0x28, - 0x14, 0xd0, 0x3c, 0x00, 0x1c, 0xb6, 0x00, 0x00, - 0x68, 0x69, 0x00, 0xf0, 0x0b, 0xf9, 0x0a, 0x48, - 0x69, 0x69, 0x03, 0xf0, 0xa7, 0xfe, 0xa8, 0x88, - 0x07, 0xf0, 0x9e, 0xfb, 0x00, 0x2c, 0x02, 0xd0, - 0x68, 0x78, 0x00, 0xf0, 0x79, 0xff, 0x00, 0x20, - 0xa8, 0x70, 0xa9, 0x68, 0x20, 0x1c, 0xf4, 0xf7, - 0xca, 0xfe, 0xb0, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x06, 0x4b, 0x80, 0xb5, - 0x99, 0x78, 0x03, 0x29, 0x3c, 0x00, 0x58, 0xb6, - 0x00, 0x00, 0x06, 0xd1, 0x04, 0x21, 0x99, 0x70, - 0x20, 0x21, 0x02, 0x1c, 0x80, 0x20, 0x08, 0xf0, - 0xa4, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xb4, 0x79, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0xa1, 0x78, - 0x03, 0x29, 0x0f, 0xd1, 0x10, 0x30, 0xfa, 0xf7, - 0xde, 0xf8, 0x00, 0x28, 0x09, 0xd0, 0x20, 0x78, - 0x00, 0xf0, 0xe5, 0xf9, 0x00, 0x20, 0x00, 0xf0, - 0x70, 0xfd, 0x00, 0x21, 0x05, 0x48, 0x3c, 0x00, - 0x94, 0xb6, 0x00, 0x00, 0xfc, 0xf7, 0x9c, 0xfa, - 0x10, 0xbd, 0x1b, 0x21, 0x20, 0x20, 0xf5, 0xf7, - 0x01, 0xfe, 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x51, 0xb6, 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5, - 0x89, 0x78, 0x03, 0x29, 0x09, 0xd1, 0x00, 0xf0, - 0xcd, 0xf9, 0x00, 0x20, 0x00, 0xf0, 0x58, 0xfd, - 0x01, 0x21, 0x05, 0x48, 0xfc, 0xf7, 0x84, 0xfa, - 0x80, 0xbd, 0x17, 0x21, 0x20, 0x20, 0xf5, 0xf7, - 0x3c, 0x00, 0xd0, 0xb6, 0x00, 0x00, 0xe9, 0xfd, - 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x51, 0xb6, - 0x00, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x1d, 0x1c, - 0xa3, 0x78, 0x06, 0x1c, 0x04, 0x98, 0x00, 0x2b, - 0x18, 0xd1, 0x01, 0x23, 0xa3, 0x70, 0x22, 0x61, - 0xe6, 0x60, 0x61, 0x70, 0xa0, 0x60, 0xa5, 0x61, - 0x00, 0x20, 0x07, 0xf0, 0xac, 0xfa, 0xa0, 0x80, - 0x30, 0x1c, 0xf7, 0xf7, 0x3c, 0xfb, 0xe0, 0x80, - 0x07, 0xf0, 0x3c, 0x00, 0x0c, 0xb7, 0x00, 0x00, - 0x4f, 0xfb, 0xc7, 0x21, 0xc9, 0x00, 0x28, 0x1a, - 0x41, 0x1a, 0x00, 0x22, 0x20, 0x20, 0x07, 0xf0, - 0x57, 0xff, 0x70, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, 0x00, 0xf0, - 0x09, 0xf8, 0x20, 0x1c, 0x00, 0xf0, 0x24, 0xf8, - 0x00, 0x2d, 0x01, 0xd0, 0xff, 0xf7, 0xd4, 0xfe, - 0xb0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x4c, - 0x05, 0x1c, 0xa0, 0x68, 0x3c, 0x00, 0x48, 0xb7, - 0x00, 0x00, 0x00, 0x28, 0x0f, 0xd1, 0x0a, 0x48, - 0x01, 0x7e, 0x02, 0x22, 0x11, 0x40, 0x61, 0x60, - 0x01, 0x7e, 0x11, 0x43, 0x01, 0x76, 0x07, 0x20, - 0x03, 0xf0, 0x49, 0xfc, 0x20, 0x60, 0x03, 0xf0, - 0x98, 0xff, 0x03, 0xf0, 0xee, 0xff, 0xa0, 0x68, - 0x28, 0x43, 0xa0, 0x60, 0xb0, 0xbd, 0x40, 0x7c, - 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x0a, 0x49, - 0x38, 0xb5, 0x0a, 0x1c, 0x20, 0x32, 0x3c, 0x00, - 0x84, 0xb7, 0x00, 0x00, 0x94, 0x79, 0x00, 0xab, - 0x1c, 0x70, 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70, - 0xe2, 0x68, 0x00, 0x2a, 0x02, 0xd1, 0x06, 0x4d, - 0x01, 0x23, 0x6b, 0x70, 0x10, 0x43, 0xe0, 0x60, - 0x00, 0xab, 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x00, 0x50, 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0x00, 0x29, 0x01, 0xd0, 0x00, 0xf0, 0x28, 0xf8, - 0x3c, 0x00, 0xc0, 0xb7, 0x00, 0x00, 0x06, 0x4c, - 0x60, 0x78, 0x21, 0x69, 0x08, 0x43, 0x03, 0xd1, - 0x01, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0xc5, 0xfd, - 0x20, 0x69, 0x28, 0x43, 0x20, 0x61, 0xb0, 0xbd, - 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5, - 0x0a, 0x4c, 0x05, 0x1c, 0x22, 0x69, 0x00, 0x20, - 0x00, 0x2a, 0x0c, 0xd1, 0x00, 0x29, 0x00, 0xd0, - 0x04, 0xe0, 0x60, 0x78, 0x00, 0x28, 0x02, 0xd1, - 0x04, 0xf0, 0x3c, 0x00, 0xfc, 0xb7, 0x00, 0x00, - 0x69, 0xfb, 0x60, 0x70, 0x28, 0x1c, 0x06, 0xf0, - 0xef, 0xfc, 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, - 0x60, 0x78, 0x00, 0x28, 0x0a, 0xd0, 0x06, 0xf0, - 0xe3, 0xfc, 0x00, 0x20, 0x60, 0x70, 0x20, 0x69, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x21, 0x0e, 0x20, - 0x06, 0xf0, 0x96, 0xfd, 0x10, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xb8, - 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x0b, 0x69, - 0x83, 0x42, 0x04, 0xd1, 0x4a, 0x78, 0x00, 0x2a, - 0x01, 0xd1, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22, - 0x83, 0x43, 0x0b, 0x61, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0x7f, 0xfd, - 0x80, 0xbd, 0x18, 0x63, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x20, 0xf6, 0xf7, 0x56, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, - 0x74, 0xb8, 0x00, 0x00, 0x00, 0xf0, 0x04, 0xf8, - 0x20, 0x1c, 0x00, 0xf0, 0x1f, 0xf8, 0x10, 0xbd, - 0xb0, 0xb5, 0x0c, 0x4d, 0x04, 0x1c, 0xa8, 0x68, - 0xa0, 0x42, 0x0f, 0xd1, 0x07, 0x20, 0x29, 0x68, - 0x08, 0xf0, 0x8c, 0xfb, 0x68, 0x68, 0x02, 0x22, - 0x07, 0x49, 0x00, 0x28, 0x08, 0x7e, 0x01, 0xd0, - 0x10, 0x43, 0x00, 0xe0, 0x90, 0x43, 0x08, 0x76, - 0x04, 0xf0, 0xc4, 0xf8, 0xa8, 0x68, 0xa0, 0x43, - 0x3c, 0x00, 0xb0, 0xb8, 0x00, 0x00, 0xa8, 0x60, - 0xb0, 0xbd, 0x40, 0x7c, 0x01, 0x00, 0x0c, 0x80, - 0x07, 0x00, 0x0a, 0x49, 0x38, 0xb5, 0x0a, 0x1c, - 0x20, 0x32, 0x94, 0x79, 0x00, 0xab, 0x1c, 0x70, - 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70, 0xe2, 0x68, - 0x82, 0x42, 0x02, 0xd1, 0x06, 0x4d, 0x00, 0x23, - 0x6b, 0x70, 0x82, 0x43, 0xe2, 0x60, 0x00, 0xab, - 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0x3c, 0x00, 0xec, 0xb8, 0x00, 0x00, - 0x40, 0x7c, 0x01, 0x00, 0x00, 0x50, 0x07, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x0a, 0x4c, 0x00, 0x21, - 0x60, 0x69, 0xff, 0xf7, 0x11, 0xff, 0x04, 0x20, - 0x01, 0xf0, 0x46, 0xf9, 0x01, 0xf0, 0x88, 0xfb, - 0x00, 0x22, 0x04, 0x21, 0x04, 0x20, 0x01, 0xf0, - 0x8b, 0xf8, 0x28, 0x1c, 0x01, 0xf0, 0x4a, 0xfa, - 0x60, 0x69, 0xff, 0xf7, 0xa7, 0xff, 0xb0, 0xbd, - 0x40, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x28, 0xb9, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0xf0, 0x77, 0xfa, - 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x4d, 0x01, 0x21, - 0x28, 0x69, 0xff, 0xf7, 0xf4, 0xfe, 0xff, 0xf7, - 0x2a, 0xfe, 0x00, 0xf0, 0x2c, 0xfb, 0x00, 0xf0, - 0x84, 0xfa, 0x00, 0x24, 0x00, 0x22, 0x04, 0x21, - 0x20, 0x1c, 0x01, 0xf0, 0x6c, 0xf8, 0x01, 0x34, - 0x24, 0x06, 0x24, 0x0e, 0x04, 0x2c, 0xf5, 0xd3, - 0x28, 0x69, 0xff, 0xf7, 0x86, 0xff, 0x3c, 0x00, - 0x64, 0xb9, 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, - 0x40, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x0e, 0x1c, 0x07, 0x4c, 0x17, 0x1c, 0x01, 0x21, - 0x20, 0x69, 0xff, 0xf7, 0xd3, 0xfe, 0x3a, 0x1c, - 0x31, 0x1c, 0x28, 0x1c, 0x01, 0xf0, 0x52, 0xf8, - 0x20, 0x69, 0xff, 0xf7, 0x71, 0xff, 0xf8, 0xbd, - 0x40, 0x7c, 0x01, 0x00, 0xff, 0xb5, 0x89, 0xb0, - 0x06, 0x1c, 0x16, 0x98, 0x1d, 0x1c, 0x00, 0x28, - 0x3c, 0x00, 0xa0, 0xb9, 0x00, 0x00, 0x01, 0xd0, - 0x29, 0x48, 0x14, 0x90, 0x28, 0x68, 0x00, 0x88, - 0x00, 0x06, 0x80, 0x0e, 0x20, 0x28, 0x01, 0xd0, - 0x14, 0x28, 0x17, 0xd1, 0x0a, 0xaa, 0x18, 0x24, - 0x18, 0x21, 0x05, 0xca, 0xff, 0xf7, 0x77, 0xf9, - 0x07, 0x1c, 0x28, 0x1c, 0x01, 0x89, 0xa1, 0x42, - 0x02, 0xdd, 0x00, 0x68, 0x01, 0x19, 0x0b, 0xe0, - 0xc0, 0x68, 0x64, 0x1a, 0x00, 0x28, 0xf5, 0xd1, - 0x0f, 0x21, 0x3c, 0x00, 0xdc, 0xb9, 0x00, 0x00, - 0x86, 0x20, 0xf5, 0xf7, 0x61, 0xfc, 0x00, 0x21, - 0x01, 0xe0, 0x00, 0x21, 0x00, 0x27, 0x18, 0x48, - 0x08, 0x90, 0x80, 0x79, 0x07, 0x90, 0x0c, 0x20, - 0x16, 0x4a, 0x70, 0x43, 0x80, 0x18, 0x04, 0x79, - 0x04, 0x91, 0x12, 0x99, 0x15, 0x98, 0x14, 0x9a, - 0x01, 0x91, 0x03, 0x90, 0x05, 0x97, 0x00, 0x95, - 0x0a, 0xab, 0x02, 0x92, 0x21, 0x1c, 0x30, 0x1c, - 0x0c, 0xcb, 0xf7, 0xf7, 0x3c, 0x00, 0x18, 0xba, - 0x00, 0x00, 0x03, 0xf9, 0x01, 0x25, 0xb5, 0x40, - 0x0c, 0x4e, 0x08, 0x3e, 0x30, 0x78, 0x28, 0x40, - 0x06, 0xd0, 0x20, 0x1c, 0x00, 0xf0, 0xc9, 0xfd, - 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x03, 0xe0, - 0x20, 0x1c, 0x13, 0x99, 0x00, 0xf0, 0x43, 0xff, - 0x07, 0xa9, 0x03, 0xc9, 0x88, 0x71, 0x0d, 0xb0, - 0xf0, 0xbd, 0x95, 0x24, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0xba, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0c, 0x23, 0x09, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x00, 0x79, 0x05, 0x1c, 0x00, 0xf0, 0x92, 0xfe, - 0x28, 0x1c, 0xf7, 0xf7, 0xc7, 0xf8, 0x01, 0x20, - 0x03, 0x4a, 0xa0, 0x40, 0x08, 0x3a, 0x11, 0x78, - 0x81, 0x43, 0x11, 0x70, 0xb0, 0xbd, 0x00, 0x00, - 0x74, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, - 0x20, 0x78, 0x00, 0x28, 0x03, 0xd1, 0x1a, 0x21, - 0x3c, 0x00, 0x90, 0xba, 0x00, 0x00, 0x86, 0x20, - 0xf5, 0xf7, 0x07, 0xfc, 0x20, 0x78, 0x10, 0xbd, - 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x78, 0x70, 0x47, 0x00, 0x00, 0x2c, 0x63, - 0x01, 0x00, 0x80, 0xb5, 0xf6, 0xf7, 0xd1, 0xfe, - 0x00, 0xf0, 0x1b, 0xf9, 0x80, 0xbd, 0xfe, 0xb5, - 0x01, 0x68, 0x05, 0x1c, 0x0c, 0x68, 0x0e, 0x1c, - 0x21, 0x78, 0x88, 0x07, 0x71, 0xd1, 0x68, 0x69, - 0xc2, 0x07, 0x3c, 0x00, 0xcc, 0xba, 0x00, 0x00, - 0x6e, 0xd5, 0x80, 0x07, 0x6d, 0xd5, 0xe8, 0x7a, - 0xc2, 0x07, 0x08, 0x07, 0x09, 0x09, 0x02, 0x91, - 0x45, 0x49, 0x80, 0x0f, 0xd2, 0x0f, 0x00, 0x28, - 0x4f, 0x68, 0x05, 0xd0, 0x01, 0x28, 0x09, 0xd0, - 0x02, 0x28, 0x21, 0xd0, 0x03, 0x28, 0x5b, 0xd1, - 0xff, 0x23, 0x20, 0x1c, 0xa9, 0x7a, 0xf4, 0xf7, - 0x74, 0xfc, 0x55, 0xe0, 0x02, 0x98, 0x0b, 0x28, - 0x0a, 0xd0, 0x0c, 0x28, 0x3c, 0x00, 0x08, 0xbb, - 0x00, 0x00, 0x0f, 0xd0, 0x0d, 0x28, 0x4e, 0xd1, - 0x39, 0x4f, 0xf8, 0x68, 0xf4, 0xf7, 0x61, 0xfc, - 0x00, 0x20, 0xc0, 0x43, 0x5a, 0xe0, 0x35, 0x4f, - 0xa9, 0x7a, 0xbb, 0x68, 0x20, 0x1c, 0xf4, 0xf7, - 0x5b, 0xfc, 0x40, 0xe0, 0x32, 0x4f, 0x38, 0x69, - 0xf4, 0xf7, 0x53, 0xfc, 0x3b, 0xe0, 0x00, 0x21, - 0x01, 0x91, 0x02, 0x99, 0x00, 0x20, 0xff, 0x23, - 0x09, 0x07, 0x01, 0xd4, 0x01, 0x20, 0x3c, 0x00, - 0x44, 0xbb, 0x00, 0x00, 0x13, 0xe0, 0x31, 0x89, - 0x19, 0x29, 0x01, 0xd3, 0x26, 0x7e, 0x07, 0xe0, - 0x15, 0x29, 0x04, 0xd3, 0x18, 0x26, 0x71, 0x1a, - 0x49, 0x19, 0x0e, 0x7b, 0x00, 0xe0, 0x00, 0x26, - 0xb1, 0x06, 0x02, 0xd4, 0x01, 0x20, 0x73, 0x07, - 0x5b, 0x0f, 0x01, 0x21, 0x01, 0x91, 0x00, 0x28, - 0x03, 0xd0, 0xa9, 0x7a, 0x20, 0x1c, 0xf4, 0xf7, - 0x36, 0xfc, 0x01, 0x99, 0x01, 0x29, 0x15, 0xd1, - 0x3c, 0x00, 0x80, 0xbb, 0x00, 0x00, 0xf0, 0x06, - 0xc6, 0x0f, 0x20, 0x88, 0x1b, 0x4f, 0xe4, 0x8a, - 0xf9, 0x6b, 0x00, 0x05, 0xc0, 0x0f, 0x00, 0x29, - 0x1a, 0xd0, 0x4b, 0x1c, 0x18, 0xd0, 0x00, 0x2e, - 0x0a, 0xd0, 0x00, 0x28, 0x08, 0xd0, 0x38, 0x88, - 0x84, 0x42, 0x13, 0xd0, 0x02, 0x98, 0x0c, 0x28, - 0x01, 0xe0, 0x1d, 0xe0, 0x12, 0xe0, 0x0d, 0xd0, - 0x08, 0x1c, 0x01, 0xf0, 0x76, 0xf9, 0x00, 0x28, - 0x03, 0xd1, 0x3c, 0x00, 0xbc, 0xbb, 0x00, 0x00, - 0x00, 0xf0, 0xa6, 0xfa, 0xf4, 0xf7, 0x0a, 0xfc, - 0x00, 0x20, 0xc0, 0x43, 0xf8, 0x63, 0x00, 0x2e, - 0x0d, 0xd0, 0x3c, 0x80, 0x00, 0x20, 0xf8, 0x63, - 0x09, 0xe0, 0x20, 0x88, 0x00, 0x06, 0x80, 0x0e, - 0x20, 0x28, 0x04, 0xd1, 0x04, 0x4f, 0x20, 0x1c, - 0xb9, 0x6a, 0xf4, 0xf7, 0xf8, 0xfb, 0x29, 0x1c, - 0x02, 0x48, 0xfb, 0xf7, 0xef, 0xff, 0xfe, 0xbd, - 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0xf8, 0xbb, - 0x00, 0x00, 0xa5, 0x9a, 0x00, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x00, 0x78, 0x00, 0x21, 0x00, 0xf0, - 0xfc, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x18, 0x63, - 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28, - 0x1a, 0x68, 0x00, 0xd0, 0x01, 0x1c, 0x10, 0x1c, - 0x19, 0x60, 0x70, 0x47, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23, 0x3c, 0x00, - 0x34, 0xbc, 0x00, 0x00, 0x04, 0x49, 0x58, 0x43, - 0x40, 0x18, 0xc0, 0x69, 0xf4, 0xf7, 0xcc, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, - 0x94, 0x46, 0x01, 0x00, 0x02, 0x1c, 0x06, 0x48, - 0x80, 0xb5, 0x81, 0x62, 0x82, 0x60, 0x00, 0x7f, - 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x69, 0xf4, 0xf7, 0xb9, 0xfb, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, 0x01, 0x00, - 0x3c, 0x00, 0x70, 0xbc, 0x00, 0x00, 0x80, 0xb5, - 0x00, 0x20, 0x00, 0xf0, 0x3c, 0xfb, 0x00, 0x20, - 0x00, 0xf0, 0x6d, 0xfa, 0x00, 0xf0, 0x65, 0xfa, - 0x04, 0x49, 0xc8, 0x6a, 0x01, 0x30, 0xc8, 0x62, - 0x08, 0x1f, 0x00, 0x88, 0x07, 0xf0, 0xc1, 0xf8, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0x00, 0x21, 0x01, 0x77, 0xc1, 0x6a, - 0x01, 0x31, 0xc1, 0x62, 0x04, 0x38, 0x00, 0x88, - 0x07, 0xf0, 0x3c, 0x00, 0xac, 0xbc, 0x00, 0x00, - 0xb3, 0xf8, 0x03, 0xf0, 0xd1, 0xf9, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x05, 0xf0, - 0xe9, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x28, - 0x03, 0xd1, 0x01, 0x20, 0x04, 0xf0, 0x22, 0xfa, - 0x80, 0xbd, 0x01, 0x20, 0x03, 0xf0, 0xe6, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x03, 0x49, 0x01, 0x20, - 0x49, 0x78, 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xbc, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x70, 0xb5, - 0x13, 0x4d, 0x28, 0x78, 0x00, 0x28, 0x20, 0xd1, - 0x01, 0x21, 0x2e, 0x1c, 0x70, 0x68, 0xff, 0xf7, - 0x12, 0xfd, 0x00, 0x21, 0x07, 0x20, 0x06, 0xf0, - 0x2a, 0xfb, 0x0d, 0x48, 0x00, 0x24, 0x04, 0x71, - 0x04, 0xf0, 0xed, 0xf8, 0x06, 0xf0, 0xd5, 0xf9, - 0x01, 0x20, 0x28, 0x70, 0x0a, 0x48, 0x04, 0x60, - 0x44, 0x60, 0xf6, 0xf7, 0x4c, 0xfd, 0x3c, 0x00, - 0x24, 0xbd, 0x00, 0x00, 0xf7, 0xf7, 0x5e, 0xf8, - 0xff, 0xf7, 0xa2, 0xff, 0x00, 0xf0, 0xa8, 0xfd, - 0x05, 0x48, 0x71, 0x68, 0x03, 0xf0, 0x20, 0xfb, - 0x01, 0x20, 0x70, 0xbd, 0x2c, 0x63, 0x01, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x80, 0x00, 0x07, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xb0, 0xb5, 0x1e, 0x4c, - 0x20, 0x78, 0x01, 0x28, 0x35, 0xd1, 0x25, 0x1c, - 0x69, 0x68, 0x1c, 0x48, 0x03, 0xf0, 0x20, 0xfb, - 0x3c, 0x00, 0x60, 0xbd, 0x00, 0x00, 0x04, 0xf0, - 0xf0, 0xf8, 0x1a, 0x48, 0x01, 0x68, 0x49, 0x08, - 0x49, 0x00, 0x01, 0x60, 0x01, 0x68, 0x01, 0x22, - 0x11, 0x43, 0x01, 0x60, 0x00, 0xf0, 0x2b, 0xfe, - 0x00, 0xf0, 0x1b, 0xfc, 0x06, 0xf0, 0x99, 0xf8, - 0xf6, 0xf7, 0x29, 0xfe, 0xf6, 0xf7, 0x2d, 0xfc, - 0x00, 0x20, 0x20, 0x70, 0xff, 0xf7, 0x83, 0xff, - 0x00, 0xf0, 0x8b, 0xfd, 0x0f, 0x48, 0x81, 0x78, - 0x08, 0x22, 0x3c, 0x00, 0x9c, 0xbd, 0x00, 0x00, - 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43, - 0x81, 0x70, 0x0c, 0x49, 0x10, 0x20, 0x08, 0x71, - 0x68, 0x68, 0xff, 0xf7, 0x5f, 0xfd, 0xf7, 0xf7, - 0x39, 0xf8, 0xf6, 0xf7, 0x4d, 0xfd, 0x01, 0x21, - 0x07, 0x20, 0x06, 0xf0, 0xcd, 0xfa, 0x01, 0x20, - 0xb0, 0xbd, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xf0, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x3c, 0x00, 0xd8, 0xbd, - 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x89, 0x7a, 0x01, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0xb0, 0xb5, 0x15, 0x4d, 0x04, 0x1c, - 0x28, 0x7a, 0x00, 0x28, 0x20, 0xd1, 0xf9, 0xf7, - 0x00, 0xfc, 0x02, 0x28, 0x1c, 0xd1, 0x01, 0x20, - 0x28, 0x72, 0xe8, 0x68, 0x00, 0x28, 0x10, 0xd0, - 0x20, 0x68, 0x29, 0x68, 0x08, 0x60, 0x3c, 0x00, - 0x14, 0xbe, 0x00, 0x00, 0x69, 0x68, 0x0d, 0x48, - 0x03, 0xf0, 0xc2, 0xfa, 0x01, 0x21, 0x68, 0x68, - 0xff, 0xf7, 0xc8, 0xfc, 0x00, 0x22, 0x24, 0x20, - 0x61, 0x68, 0x07, 0xf0, 0xcf, 0xfb, 0xb0, 0xbd, - 0x00, 0x20, 0x28, 0x72, 0x21, 0x68, 0x01, 0x20, - 0xf4, 0xf7, 0xcf, 0xfa, 0xb0, 0xbd, 0x00, 0x20, - 0x21, 0x68, 0xf4, 0xf7, 0xca, 0xfa, 0xb0, 0xbd, - 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x3c, 0x00, 0x50, 0xbe, 0x00, 0x00, 0x04, 0x48, - 0x80, 0xb5, 0x00, 0x7a, 0x01, 0x28, 0x02, 0xd1, - 0x00, 0x20, 0x02, 0xf0, 0xf0, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x07, 0xd0, 0x80, 0x28, 0x09, 0xd1, - 0x07, 0x48, 0x00, 0x7a, 0x00, 0x28, 0x04, 0xd0, - 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x02, 0xf0, - 0xde, 0xfe, 0x80, 0xbd, 0x0e, 0x21, 0x24, 0x20, - 0xf5, 0xf7, 0x3c, 0x00, 0x8c, 0xbe, 0x00, 0x00, - 0x0b, 0xfa, 0x80, 0xbd, 0x04, 0x7a, 0x01, 0x00, - 0xf8, 0xb5, 0x3a, 0x4e, 0x05, 0x1c, 0xb0, 0x7a, - 0x00, 0x28, 0x69, 0xd1, 0xf9, 0xf7, 0xae, 0xfb, - 0x02, 0x28, 0x65, 0xd1, 0x36, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x61, 0xd0, 0x35, 0x48, 0x71, 0x68, - 0x03, 0xf0, 0x74, 0xfa, 0x01, 0x21, 0x70, 0x68, - 0xff, 0xf7, 0x7a, 0xfc, 0x6c, 0x20, 0xf5, 0xf7, - 0xb9, 0xfc, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0xbe, - 0x00, 0x00, 0x6c, 0x21, 0xf4, 0xf7, 0xe7, 0xfa, - 0x30, 0x68, 0x2c, 0x22, 0x04, 0x60, 0x29, 0x68, - 0x81, 0x60, 0x69, 0x68, 0xc1, 0x60, 0x00, 0x21, - 0x11, 0x54, 0x81, 0x62, 0xa9, 0x68, 0x00, 0x29, - 0x02, 0xd0, 0xe9, 0x68, 0x01, 0x61, 0x05, 0xe0, - 0x06, 0xf0, 0x5d, 0xff, 0x69, 0x68, 0x40, 0x18, - 0x31, 0x68, 0x08, 0x61, 0x70, 0x68, 0xff, 0xf7, - 0x14, 0xfd, 0x69, 0x21, 0x08, 0x55, 0x3c, 0x00, - 0x04, 0xbf, 0x00, 0x00, 0x00, 0x20, 0xf9, 0xf7, - 0x09, 0xfb, 0x01, 0x27, 0x3b, 0x1c, 0x06, 0x1c, - 0x22, 0x1c, 0x24, 0x32, 0x00, 0x21, 0xf9, 0xf7, - 0x79, 0xfb, 0x1c, 0x48, 0x03, 0x21, 0x00, 0x88, - 0x89, 0x03, 0x08, 0x43, 0x21, 0x1c, 0x40, 0x31, - 0x00, 0x91, 0x48, 0x83, 0x18, 0x48, 0x10, 0x21, - 0x60, 0x60, 0x18, 0x48, 0xa0, 0x60, 0xa7, 0x63, - 0x67, 0x63, 0x00, 0x20, 0xf5, 0xf7, 0x4c, 0xfb, - 0x3c, 0x00, 0x40, 0xbf, 0x00, 0x00, 0xe0, 0x60, - 0x02, 0x89, 0x00, 0x99, 0xca, 0x83, 0x07, 0x68, - 0x31, 0x1c, 0x38, 0x1d, 0x27, 0x61, 0xfe, 0xf7, - 0x8e, 0xfe, 0x38, 0x1c, 0x0a, 0x30, 0x0f, 0x49, - 0xfe, 0xf7, 0x89, 0xfe, 0xa4, 0x20, 0x38, 0x80, - 0x00, 0x20, 0x04, 0xf0, 0xde, 0xfb, 0x00, 0x22, - 0x1f, 0x20, 0x69, 0x68, 0x07, 0xf0, 0x2d, 0xfb, - 0xf8, 0xbd, 0xff, 0xe7, 0x00, 0x20, 0x29, 0x68, - 0xf4, 0xf7, 0x3c, 0x00, 0x7c, 0xbf, 0x00, 0x00, - 0x2e, 0xfa, 0xf8, 0xe7, 0x14, 0x7a, 0x01, 0x00, - 0x80, 0x5a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xfa, 0x60, 0x01, 0x00, 0x99, 0xec, 0x00, 0x00, - 0x15, 0xed, 0x00, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x06, 0x48, 0x80, 0xb5, 0x81, 0x7a, 0x00, 0x29, - 0x07, 0xd0, 0x00, 0x68, 0x04, 0x22, 0x20, 0x30, - 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0, - 0x6b, 0xfd, 0x80, 0xbd, 0x3c, 0x00, 0xb8, 0xbf, - 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x4c, 0xa0, 0x7a, 0x01, 0x28, 0x03, 0xd1, - 0x06, 0xf0, 0xf1, 0xfe, 0x21, 0x68, 0x88, 0x61, - 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0x03, 0x1c, - 0x08, 0x1c, 0x1f, 0x49, 0x70, 0xb5, 0x0a, 0x68, - 0x01, 0x2b, 0x1c, 0xd0, 0x80, 0x2b, 0x05, 0xd0, - 0x83, 0x2b, 0x30, 0xd1, 0x88, 0x7a, 0x00, 0x28, - 0x14, 0xd0, 0x29, 0xe0, 0x53, 0x69, 0x3c, 0x00, - 0xf4, 0xbf, 0x00, 0x00, 0x00, 0x2b, 0x0e, 0xd0, - 0x94, 0x69, 0xd5, 0x69, 0x2e, 0x1b, 0x0c, 0x69, - 0x5d, 0x1b, 0x36, 0x1b, 0xb6, 0x10, 0xa4, 0x19, - 0x0c, 0x61, 0xcc, 0x68, 0x2d, 0x1b, 0xad, 0x10, - 0x64, 0x19, 0xcc, 0x60, 0x93, 0x61, 0x02, 0xf0, - 0x81, 0xfd, 0x70, 0xbd, 0x02, 0x28, 0x12, 0xd1, - 0x90, 0x6a, 0x0c, 0x1c, 0x00, 0x28, 0xf8, 0xd0, - 0x07, 0xf0, 0x0e, 0xfa, 0xa0, 0x7a, 0x01, 0x28, - 0x3c, 0x00, 0x30, 0xc0, 0x00, 0x00, 0xf3, 0xd1, - 0x20, 0x68, 0x81, 0x6a, 0x00, 0x29, 0xef, 0xd1, - 0x20, 0x30, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x70, 0xbd, 0x02, 0xf0, 0x21, 0xfd, - 0x70, 0xbd, 0x0e, 0x21, 0x1f, 0x20, 0xf5, 0xf7, - 0x28, 0xf9, 0x70, 0xbd, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x02, 0x49, 0x0c, 0x31, 0x03, 0xc9, - 0x40, 0x18, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x6c, 0xc0, 0x00, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x04, 0x22, - 0x20, 0x30, 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, - 0x07, 0xf0, 0xe4, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x4c, - 0x0e, 0x1c, 0xa1, 0x7a, 0x00, 0x29, 0x1c, 0xd0, - 0x21, 0x68, 0x08, 0x61, 0x07, 0xf0, 0x32, 0xfa, - 0x00, 0x28, 0x17, 0xd0, 0x20, 0x68, 0x00, 0x25, - 0x05, 0x62, 0x00, 0x22, 0x3c, 0x00, 0xa8, 0xc0, - 0x00, 0x00, 0x83, 0x21, 0x1f, 0x20, 0x07, 0xf0, - 0x94, 0xfa, 0x60, 0x68, 0xff, 0xf7, 0x03, 0xfc, - 0x21, 0x68, 0x04, 0x22, 0x20, 0x31, 0x08, 0x7b, - 0x2b, 0x1c, 0x90, 0x43, 0x08, 0x73, 0x31, 0x1c, - 0x00, 0x22, 0x1f, 0x20, 0x07, 0xf0, 0x61, 0xfb, - 0x70, 0xbd, 0x20, 0x68, 0x08, 0x22, 0x20, 0x30, - 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0, - 0xd6, 0xfc, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xc0, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0x77, 0xfc, 0x00, 0xf0, - 0x6f, 0xfc, 0x00, 0xf0, 0x29, 0xff, 0x00, 0xf0, - 0x5d, 0xfa, 0x00, 0xf0, 0xc5, 0xf8, 0x00, 0xf0, - 0x85, 0xff, 0x80, 0xbd, 0x80, 0xb5, 0xfa, 0xf7, - 0x85, 0xfa, 0x80, 0xbd, 0x01, 0x48, 0xc0, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, - 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, - 0x3c, 0x00, 0x20, 0xc1, 0x00, 0x00, 0x02, 0x48, - 0xc1, 0x60, 0x70, 0x47, 0x00, 0x00, 0x81, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x48, - 0x02, 0x49, 0xc8, 0x60, 0x70, 0x47, 0x81, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x49, - 0x88, 0x61, 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x88, 0x61, - 0x70, 0x47, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x3c, 0x00, 0x5c, 0xc1, 0x00, 0x00, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0xc1, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x89, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x81, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x8d, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x01, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xc1, - 0x00, 0x00, 0x91, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, - 0x01, 0x1c, 0x02, 0x48, 0x01, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x01, 0x48, 0x02, 0x49, 0x08, 0x61, - 0x70, 0x47, 0x81, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0x80, 0x2a, - 0x80, 0xb5, 0x02, 0xd1, 0x00, 0xf0, 0x3c, 0x00, - 0xd4, 0xc1, 0x00, 0x00, 0x07, 0xf8, 0x80, 0xbd, - 0x1e, 0x21, 0x21, 0x20, 0xf5, 0xf7, 0x62, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x10, 0x4d, - 0x04, 0x1c, 0xa8, 0x6b, 0x01, 0x30, 0xa8, 0x63, - 0x69, 0x6b, 0x09, 0x1a, 0x28, 0x1c, 0x00, 0x6b, - 0x0c, 0x29, 0x03, 0xd9, 0x00, 0x21, 0xff, 0xf7, - 0x91, 0xfa, 0x03, 0xe0, 0x08, 0x29, 0x01, 0xd1, - 0xff, 0xf7, 0x32, 0xfb, 0x20, 0x1c, 0x00, 0xf0, - 0x3c, 0x00, 0x10, 0xc2, 0x00, 0x00, 0x4d, 0xf9, - 0x60, 0x69, 0x40, 0x07, 0x01, 0xd5, 0x03, 0xf0, - 0x0c, 0xfc, 0x20, 0x1c, 0xe9, 0x6a, 0xf4, 0xf7, - 0xdb, 0xf8, 0xb0, 0xbd, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, - 0x01, 0x1c, 0x02, 0x48, 0x41, 0x62, 0x70, 0x47, - 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x6c, - 0x00, 0x29, 0x3c, 0x00, 0x4c, 0xc2, 0x00, 0x00, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0xe1, 0x6b, 0x00, 0x29, 0x01, 0xd1, 0xe0, 0x63, - 0x04, 0xe0, 0x81, 0x42, 0x02, 0xd0, 0x00, 0x20, - 0xc0, 0x43, 0xf8, 0xe7, 0x06, 0xf0, 0x9c, 0xfd, - 0x20, 0x64, 0x10, 0xbd, 0x28, 0x7a, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x6c, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x88, 0xc2, - 0x00, 0x00, 0x05, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x48, 0x63, 0x88, 0x63, 0xff, 0x21, 0x09, 0x31, - 0x15, 0x22, 0x10, 0x20, 0xf6, 0xf7, 0xfb, 0xf9, - 0x80, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, - 0x81, 0x60, 0x70, 0x47, 0x00, 0x00, 0xc1, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0xc4, 0xc2, 0x00, 0x00, 0x02, 0x48, 0xc1, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, - 0x00, 0x28, 0x5a, 0x68, 0x00, 0xd0, 0x01, 0x1c, - 0x10, 0x1c, 0x59, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0xc9, 0x75, 0x00, 0x00, - 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, - 0x02, 0x48, 0x41, 0x61, 0x70, 0x47, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xc3, 0x00, 0x00, 0xcd, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x0f, 0x4b, - 0x10, 0xb5, 0xd9, 0x68, 0x00, 0x29, 0x19, 0xd0, - 0x0e, 0x4c, 0x00, 0x21, 0xca, 0x00, 0x12, 0x19, - 0x40, 0x3a, 0xd2, 0x6b, 0x82, 0x42, 0x02, 0xda, - 0x01, 0x31, 0x03, 0x29, 0xf6, 0xd3, 0x48, 0x1c, - 0x1a, 0x78, 0x00, 0x06, 0x00, 0x0e, 0x90, 0x42, - 0x08, 0xd0, 0x18, 0x70, 0x08, 0x06, 0x00, 0x0e, - 0x04, 0x1c, 0x3c, 0x00, 0x3c, 0xc3, 0x00, 0x00, - 0xf6, 0xf7, 0xba, 0xfa, 0x20, 0x1c, 0x03, 0xf0, - 0x1b, 0xfd, 0x10, 0xbd, 0x18, 0x63, 0x01, 0x00, - 0x3c, 0x42, 0x01, 0x00, 0x10, 0xb5, 0x14, 0x4c, - 0xe1, 0x68, 0x00, 0x29, 0x22, 0xd0, 0x21, 0x78, - 0x12, 0x4b, 0xca, 0x00, 0xd2, 0x18, 0x40, 0x3a, - 0xd3, 0x6b, 0x83, 0x42, 0x02, 0xda, 0x48, 0x1c, - 0x20, 0x70, 0x0b, 0xe0, 0x92, 0x6b, 0x82, 0x42, - 0x14, 0xdd, 0xff, 0x31, 0x3c, 0x00, 0x78, 0xc3, - 0x00, 0x00, 0x08, 0x06, 0x00, 0x0e, 0x20, 0x70, - 0x03, 0xd1, 0x19, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x8e, 0xff, 0x20, 0x78, 0xff, 0x30, 0x00, 0x06, - 0x00, 0x0e, 0xf6, 0xf7, 0x90, 0xfa, 0x20, 0x78, - 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0, - 0xee, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63, - 0x01, 0x00, 0x3c, 0x42, 0x01, 0x00, 0x09, 0x48, - 0x00, 0x21, 0x01, 0x81, 0x41, 0x81, 0x3c, 0x00, - 0xb4, 0xc3, 0x00, 0x00, 0x81, 0x81, 0xc1, 0x81, - 0x07, 0x4a, 0x02, 0x80, 0x01, 0x23, 0xdb, 0x02, - 0x43, 0x80, 0x82, 0x80, 0xc2, 0x80, 0x41, 0x76, - 0x31, 0x21, 0x81, 0x76, 0x01, 0x21, 0x01, 0x76, - 0x70, 0x47, 0x00, 0x00, 0x30, 0x80, 0x07, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, - 0xf6, 0xf7, 0xf8, 0xf8, 0x01, 0x20, 0xf6, 0xf7, - 0xdb, 0xfc, 0x01, 0x20, 0xf6, 0xf7, 0x5a, 0xfa, - 0x3c, 0x00, 0xf0, 0xc3, 0x00, 0x00, 0x01, 0x20, - 0x00, 0xf0, 0xf1, 0xfd, 0x01, 0x20, 0xf7, 0xf7, - 0xc6, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x11, 0x4c, 0x00, 0x29, 0x07, 0xd1, 0x00, 0x28, - 0x02, 0xd1, 0x01, 0x20, 0xe0, 0x60, 0x06, 0xe0, - 0x00, 0x21, 0xe1, 0x60, 0x03, 0xe0, 0x01, 0x29, - 0x07, 0xd1, 0x00, 0x28, 0x01, 0xd0, 0x20, 0x70, - 0x03, 0xe0, 0x18, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x3c, 0xff, 0x3c, 0x00, 0x2c, 0xc4, 0x00, 0x00, - 0x20, 0x78, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0xf6, 0xf7, 0x3e, 0xfa, 0x20, 0x78, 0xff, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x9c, 0xfc, - 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x88, 0x42, - 0x05, 0xd0, 0xfe, 0xf7, 0xff, 0xfb, 0x00, 0xf0, - 0x87, 0xfa, 0xff, 0xf7, 0x2b, 0xfc, 0x80, 0xbd, - 0xa8, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x68, 0xc4, - 0x00, 0x00, 0x01, 0x49, 0x48, 0x70, 0x70, 0x47, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x01, 0x49, - 0xc8, 0x60, 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b, - 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x78, - 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x04, 0x4a, - 0x00, 0x28, 0x02, 0xd0, 0x90, 0x69, 0x01, 0x30, - 0x90, 0x61, 0xd0, 0x69, 0x40, 0x18, 0x3c, 0x00, - 0xa4, 0xc4, 0x00, 0x00, 0xd0, 0x61, 0x70, 0x47, - 0x90, 0x5c, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x00, 0x68, 0x05, 0x68, 0x28, 0x1c, 0xfe, 0xf7, - 0x27, 0xff, 0x07, 0x1c, 0x60, 0x69, 0x15, 0x4e, - 0xc0, 0x07, 0xc0, 0x0f, 0x21, 0xd0, 0x01, 0xaa, - 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x12, 0xff, - 0x38, 0x78, 0xc0, 0x07, 0x0c, 0xd4, 0x60, 0x69, - 0x80, 0x07, 0x08, 0xd5, 0x00, 0xab, 0x18, 0x7a, - 0x3c, 0x00, 0xe0, 0xc4, 0x00, 0x00, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x28, 0x02, 0xd1, 0x70, 0x6a, - 0x01, 0x30, 0x70, 0x62, 0xfe, 0xbd, 0x00, 0xab, - 0x18, 0x7a, 0x00, 0x28, 0x01, 0xd0, 0x02, 0x28, - 0xf8, 0xd1, 0x70, 0x6a, 0x01, 0x30, 0x70, 0x62, - 0xb0, 0x6a, 0x01, 0x30, 0xb0, 0x62, 0xf1, 0xe7, - 0xf0, 0x6a, 0x01, 0x30, 0xf0, 0x62, 0xed, 0xe7, - 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x02, 0x49, - 0x48, 0x69, 0x3c, 0x00, 0x1c, 0xc5, 0x00, 0x00, - 0x01, 0x30, 0x48, 0x61, 0x70, 0x47, 0x00, 0x00, - 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x01, 0x1c, 0x40, 0x31, - 0x10, 0xb5, 0x0a, 0x8b, 0x12, 0x07, 0x92, 0x0f, - 0x01, 0x2a, 0x33, 0xd0, 0x4a, 0x78, 0x1a, 0x49, - 0x04, 0x1c, 0x60, 0x34, 0x00, 0x2a, 0x0b, 0x6a, - 0x22, 0xd1, 0xe2, 0x79, 0x01, 0x2a, 0x02, 0xd9, - 0xcc, 0x68, 0x01, 0x34, 0x3c, 0x00, 0x58, 0xc5, - 0x00, 0x00, 0xcc, 0x60, 0x02, 0x2a, 0x02, 0xd9, - 0x0c, 0x69, 0x01, 0x34, 0x0c, 0x61, 0x0c, 0x68, - 0x01, 0x34, 0x0c, 0x60, 0x44, 0x6b, 0x00, 0x2c, - 0x03, 0xd0, 0x04, 0x69, 0x24, 0x7c, 0xe4, 0x07, - 0x02, 0xd5, 0x4c, 0x68, 0x01, 0x34, 0x4c, 0x60, - 0x80, 0x6b, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x6b, - 0x01, 0x30, 0x08, 0x63, 0x00, 0x2a, 0x0c, 0xd0, - 0x98, 0x18, 0x01, 0x38, 0x08, 0xe0, 0x3c, 0x00, - 0x94, 0xc5, 0x00, 0x00, 0x01, 0x2a, 0x01, 0xd0, - 0x02, 0x2a, 0x02, 0xd1, 0x88, 0x68, 0x01, 0x30, - 0x88, 0x60, 0xe0, 0x79, 0x18, 0x18, 0x08, 0x62, - 0x10, 0xbd, 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, 0x0a, 0x20, - 0x08, 0x81, 0x70, 0x47, 0xc4, 0x7a, 0x01, 0x00, - 0xf0, 0xb5, 0x32, 0x4f, 0x04, 0x1c, 0x78, 0x78, - 0x85, 0xb0, 0xc0, 0x07, 0xc0, 0x0f, 0x03, 0x90, - 0x3c, 0x00, 0xd0, 0xc5, 0x00, 0x00, 0xb8, 0x78, - 0x02, 0x90, 0x01, 0x20, 0xa0, 0x40, 0x04, 0x90, - 0x39, 0x1c, 0x88, 0x70, 0x2c, 0x48, 0x00, 0x88, - 0x06, 0xf0, 0x0b, 0xfc, 0x01, 0x90, 0xfe, 0xf7, - 0xae, 0xfc, 0x04, 0x30, 0x29, 0x4e, 0xa5, 0x00, - 0x71, 0x59, 0x09, 0x79, 0x88, 0x42, 0x06, 0xd0, - 0xfe, 0xf7, 0xa5, 0xfc, 0x71, 0x59, 0x04, 0x30, - 0x08, 0x71, 0x01, 0x20, 0x78, 0x70, 0x00, 0x20, - 0x78, 0x70, 0x3c, 0x00, 0x0c, 0xc6, 0x00, 0x00, - 0x21, 0x48, 0x01, 0x21, 0x20, 0x4e, 0x30, 0x38, - 0x01, 0x55, 0x71, 0x59, 0x03, 0x20, 0x08, 0x70, - 0x06, 0xf0, 0xc6, 0xfb, 0x06, 0x1c, 0xfe, 0xf7, - 0x91, 0xfc, 0x36, 0x18, 0x0e, 0x36, 0x09, 0xe0, - 0x30, 0x1c, 0x06, 0xf0, 0xf5, 0xfa, 0x00, 0x28, - 0x04, 0xd0, 0x23, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x33, 0xfe, 0x03, 0xe0, 0xf6, 0xf7, 0x34, 0xfb, - 0x00, 0x28, 0xf1, 0xd0, 0x3c, 0x00, 0x48, 0xc6, - 0x00, 0x00, 0x12, 0x48, 0x13, 0x49, 0x3c, 0x38, - 0x00, 0x78, 0x08, 0x72, 0x20, 0x1c, 0xf4, 0xf7, - 0xa2, 0xfa, 0x0e, 0x4e, 0x71, 0x59, 0x08, 0x71, - 0x03, 0x98, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x21, - 0x79, 0x70, 0x09, 0x48, 0x00, 0x88, 0x01, 0x99, - 0x06, 0xf0, 0xbd, 0xfb, 0x02, 0x98, 0xb8, 0x70, - 0x09, 0x49, 0x49, 0x79, 0x04, 0x98, 0x88, 0x42, - 0x03, 0xd0, 0x24, 0x21, 0x86, 0x20, 0x3c, 0x00, - 0x84, 0xc6, 0x00, 0x00, 0xf4, 0xf7, 0x0e, 0xfe, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x50, 0x07, 0x00, - 0xd0, 0x79, 0x01, 0x00, 0x10, 0x7b, 0x01, 0x00, - 0x80, 0x80, 0x07, 0x00, 0x50, 0x80, 0x07, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x05, 0x28, - 0x01, 0xd3, 0xf4, 0xf7, 0x29, 0xfe, 0x05, 0x2d, - 0x01, 0xd3, 0xf4, 0xf7, 0x25, 0xfe, 0x0b, 0x4a, - 0xa8, 0x00, 0x11, 0x58, 0xa0, 0x00, 0x10, 0x58, - 0x3c, 0x00, 0xc0, 0xc6, 0x00, 0x00, 0x0e, 0xc9, - 0x0e, 0xc0, 0x06, 0x21, 0x06, 0x22, 0x06, 0x48, - 0x69, 0x43, 0x2a, 0x38, 0x09, 0x18, 0x62, 0x43, - 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7, 0x0f, 0xff, - 0x02, 0x48, 0x30, 0x38, 0x41, 0x5d, 0x01, 0x55, - 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0e, 0x48, 0x0d, 0x1c, 0x80, 0x78, - 0x01, 0x21, 0xa1, 0x40, 0x08, 0x40, 0x03, 0xd0, - 0x01, 0x21, 0x3c, 0x00, 0xfc, 0xc6, 0x00, 0x00, - 0x86, 0x20, 0xf4, 0xf7, 0xd1, 0xfd, 0x06, 0x21, - 0x06, 0x22, 0x09, 0x48, 0x69, 0x43, 0x09, 0x18, - 0x62, 0x43, 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7, - 0xf1, 0xfe, 0x20, 0x1c, 0xf4, 0xf7, 0x40, 0xfa, - 0x03, 0x4a, 0xa1, 0x00, 0x2a, 0x32, 0x51, 0x58, - 0x08, 0x71, 0xb0, 0xbd, 0x00, 0x50, 0x07, 0x00, - 0xe6, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x48, 0x60, 0x3c, 0x00, 0x38, 0xc7, - 0x00, 0x00, 0x07, 0xf0, 0x32, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, - 0xd8, 0xfd, 0x07, 0x49, 0x08, 0x7a, 0x07, 0x4a, - 0x10, 0x70, 0x01, 0x20, 0x08, 0x72, 0xfe, 0xf7, - 0xf4, 0xfb, 0x04, 0x4a, 0x04, 0x30, 0xa1, 0x00, - 0x3c, 0x32, 0x51, 0x58, 0x08, 0x71, 0x10, 0xbd, - 0x00, 0x00, 0x80, 0x80, 0x07, 0x00, 0x3c, 0x00, - 0x74, 0xc7, 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00, - 0x03, 0x49, 0x80, 0xb5, 0x01, 0x20, 0x48, 0x60, - 0x07, 0xf0, 0x0e, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0xb4, 0xfd, - 0x20, 0x1c, 0xf5, 0xf7, 0x8f, 0xfe, 0x00, 0x21, - 0x20, 0x1c, 0xfb, 0xf7, 0x31, 0xfd, 0x01, 0x21, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x09, 0x04, - 0x3c, 0x00, 0xb0, 0xc7, 0x00, 0x00, 0x09, 0x0c, - 0x20, 0x1c, 0x04, 0xf0, 0x22, 0xfa, 0x10, 0xbd, - 0x00, 0x00, 0x06, 0x49, 0x01, 0x20, 0x05, 0x4b, - 0x88, 0x60, 0x00, 0x20, 0x3c, 0x33, 0x00, 0x21, - 0x82, 0x00, 0x9a, 0x58, 0x11, 0x70, 0x01, 0x30, - 0x05, 0x28, 0xf9, 0xdb, 0x70, 0x47, 0xd4, 0x7a, - 0x01, 0x00, 0x0f, 0x49, 0x38, 0xb5, 0x00, 0x20, - 0x88, 0x60, 0x0e, 0x48, 0x01, 0x1c, 0x20, 0x31, - 0x8a, 0x79, 0x3c, 0x00, 0xec, 0xc7, 0x00, 0x00, - 0x00, 0xab, 0x1a, 0x70, 0xc9, 0x79, 0x0a, 0x4c, - 0x09, 0x4d, 0x59, 0x70, 0x0c, 0x34, 0x3c, 0x35, - 0x00, 0x21, 0x03, 0x22, 0x63, 0x5c, 0x00, 0x2b, - 0x02, 0xd0, 0x8b, 0x00, 0xeb, 0x58, 0x1a, 0x70, - 0x01, 0x31, 0x05, 0x29, 0xf6, 0xdb, 0x00, 0xab, - 0x19, 0x88, 0xc1, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0xd4, 0x7a, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0xff, 0xb5, 0x14, 0x4f, 0x3c, 0x00, 0x28, 0xc8, - 0x00, 0x00, 0x04, 0x1c, 0xbe, 0x79, 0x0d, 0x1c, - 0x81, 0xb0, 0x0f, 0x20, 0x00, 0xf0, 0xb9, 0xf8, - 0x2a, 0x1c, 0x10, 0x4d, 0x00, 0x90, 0x21, 0x1c, - 0x28, 0x1c, 0xf4, 0xf7, 0xde, 0xfc, 0x21, 0x1c, - 0xa8, 0x1d, 0x03, 0x9a, 0xf4, 0xf7, 0xd9, 0xfc, - 0x21, 0x1c, 0x28, 0x1c, 0x0c, 0x30, 0x04, 0x9a, - 0xf4, 0xf7, 0xd3, 0xfc, 0x21, 0x1c, 0x28, 0x1c, - 0x12, 0x30, 0x0a, 0x9a, 0xf4, 0xf7, 0x3c, 0x00, - 0x64, 0xc8, 0x00, 0x00, 0xcd, 0xfc, 0x07, 0xf0, - 0x9b, 0xf8, 0x00, 0x98, 0x00, 0xf0, 0x76, 0xf8, - 0xbe, 0x71, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xe6, 0x7a, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x20, 0xf6, 0xf7, 0x26, 0xf8, - 0x07, 0x49, 0x88, 0x78, 0x00, 0x09, 0x00, 0x01, - 0x88, 0x70, 0x00, 0x24, 0x20, 0x1c, 0xf5, 0xf7, - 0x11, 0xfe, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x3c, 0x00, 0xa0, 0xc8, 0x00, 0x00, 0x04, 0x2c, - 0xf7, 0xd3, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x50, - 0x07, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0xe3, 0xfb, - 0x03, 0x48, 0x81, 0x78, 0x0f, 0x22, 0x11, 0x43, - 0x81, 0x70, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x50, - 0x07, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0x17, 0xfd, - 0xa6, 0x00, 0x00, 0x2d, 0x11, 0x4f, 0x07, 0xd1, - 0xb8, 0x59, 0x3c, 0x00, 0xdc, 0xc8, 0x00, 0x00, - 0x81, 0x68, 0x00, 0x29, 0x0e, 0xd1, 0x40, 0x78, - 0x00, 0x28, 0x0b, 0xd0, 0x02, 0xe0, 0xff, 0x35, - 0x2d, 0x06, 0x2d, 0x0e, 0x29, 0x1c, 0x20, 0x1c, - 0xfb, 0xf7, 0x88, 0xfc, 0x01, 0x1c, 0x20, 0x1c, - 0x04, 0xf0, 0x7e, 0xf9, 0x06, 0x49, 0x01, 0x20, - 0x30, 0x39, 0x08, 0x55, 0x04, 0x48, 0x3c, 0x38, - 0x80, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xb9, 0x59, - 0x03, 0x20, 0x08, 0x70, 0x3c, 0x00, 0x18, 0xc9, - 0x00, 0x00, 0xf8, 0xbd, 0x00, 0x00, 0x10, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0, 0xcd, 0xf9, - 0x80, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x05, 0x28, - 0x01, 0xd3, 0xf4, 0xf7, 0xe6, 0xfc, 0x20, 0x1c, - 0xf5, 0xf7, 0xc1, 0xfd, 0x00, 0x20, 0x05, 0x4a, - 0xa1, 0x00, 0x51, 0x58, 0x88, 0x60, 0x04, 0x49, - 0x88, 0x78, 0x01, 0x22, 0xa2, 0x40, 0x10, 0x43, - 0x88, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xc9, 0x00, 0x00, 0x10, 0x7b, 0x01, 0x00, - 0x00, 0x50, 0x07, 0x00, 0x02, 0x4a, 0x91, 0x78, - 0x08, 0x43, 0x90, 0x70, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x50, 0x07, 0x00, 0xf8, 0xb5, 0x0c, 0x4f, - 0xbe, 0x79, 0x0f, 0x20, 0x00, 0xf0, 0x18, 0xf8, - 0x05, 0x1c, 0x00, 0x24, 0x20, 0x1c, 0xf4, 0xf7, - 0x0d, 0xf9, 0x08, 0x4a, 0xa1, 0x00, 0x51, 0x58, - 0x08, 0x71, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x3c, 0x00, 0x90, 0xc9, 0x00, 0x00, 0x04, 0x2c, - 0xf3, 0xd3, 0x28, 0x1c, 0xff, 0xf7, 0xe1, 0xff, - 0xbe, 0x71, 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5, - 0x08, 0x49, 0x8d, 0x78, 0x8a, 0x78, 0x05, 0x40, - 0x82, 0x43, 0x8a, 0x70, 0x06, 0xf0, 0xf9, 0xf9, - 0x04, 0x1c, 0x0a, 0x34, 0x20, 0x1c, 0x06, 0xf0, - 0x34, 0xf9, 0x00, 0x28, 0xfa, 0xd0, 0x28, 0x1c, - 0xb0, 0xbd, 0x3c, 0x00, 0xcc, 0xc9, 0x00, 0x00, - 0x00, 0x50, 0x07, 0x00, 0x01, 0x49, 0x0a, 0x20, - 0x08, 0x81, 0x70, 0x47, 0x38, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0x10, 0x48, 0x04, 0x26, 0x04, 0x1c, - 0xe0, 0x34, 0x05, 0x1c, 0x38, 0x3d, 0x00, 0x27, - 0x20, 0x1c, 0x1c, 0x30, 0xe4, 0x60, 0xa0, 0x61, - 0x27, 0x61, 0x0b, 0x48, 0xa6, 0x82, 0xe0, 0x61, - 0x27, 0x62, 0xa7, 0x62, 0x06, 0x20, 0xa0, 0x84, - 0x20, 0x1c, 0xfe, 0xf7, 0x3c, 0x00, 0x08, 0xca, - 0x00, 0x00, 0x87, 0xfc, 0x20, 0x1c, 0x0c, 0x30, - 0xf6, 0xf7, 0xb7, 0xf9, 0x05, 0x49, 0x38, 0x3c, - 0xac, 0x42, 0x08, 0x80, 0xe7, 0xd1, 0xf8, 0xbd, - 0x00, 0x00, 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61, - 0x01, 0x00, 0x48, 0x7b, 0x01, 0x00, 0xf7, 0xb5, - 0x05, 0x1c, 0x0c, 0x23, 0x0f, 0x1c, 0x12, 0x49, - 0x58, 0x43, 0x44, 0x18, 0x20, 0x88, 0x06, 0xf0, - 0xea, 0xf9, 0xa0, 0x78, 0x01, 0x28, 0x3c, 0x00, - 0x44, 0xca, 0x00, 0x00, 0x1a, 0xd1, 0x66, 0x68, - 0x02, 0x2f, 0x05, 0xd1, 0x5c, 0x20, 0x80, 0x5b, - 0x02, 0x99, 0x00, 0x09, 0x88, 0x42, 0x11, 0xd1, - 0x28, 0x1c, 0xfe, 0xf7, 0xfb, 0xff, 0x30, 0x1c, - 0xf9, 0xf7, 0xfa, 0xfd, 0x04, 0x20, 0xa0, 0x70, - 0x39, 0x1c, 0x28, 0x1c, 0xfb, 0xf7, 0xf4, 0xf8, - 0x03, 0x4a, 0xe8, 0x00, 0x3c, 0x32, 0x11, 0x58, - 0x01, 0x31, 0x11, 0x50, 0xfe, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xca, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x01, 0x20, 0x06, 0x4a, 0x00, 0x21, - 0x0c, 0x23, 0x4b, 0x43, 0x9b, 0x18, 0x9b, 0x78, - 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x20, 0x01, 0x31, - 0x04, 0x29, 0xf5, 0xdb, 0x70, 0x47, 0x60, 0x7b, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xff, 0xf7, - 0xea, 0xfc, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x21, - 0x0c, 0x20, 0xf4, 0xf7, 0xf6, 0xfb, 0x26, 0x1c, - 0x60, 0x36, 0x3c, 0x00, 0xbc, 0xca, 0x00, 0x00, - 0x00, 0x21, 0xf1, 0x71, 0xe1, 0x64, 0x60, 0x6b, - 0x25, 0x1c, 0x40, 0x35, 0x00, 0x28, 0x31, 0xd0, - 0xff, 0xf7, 0x04, 0xf9, 0x01, 0x22, 0x12, 0x03, - 0x00, 0x28, 0x20, 0x69, 0x01, 0x88, 0x01, 0xd0, - 0x91, 0x43, 0x00, 0xe0, 0x11, 0x43, 0x01, 0x80, - 0x20, 0x69, 0x01, 0x22, 0x00, 0x88, 0xd2, 0x02, - 0x28, 0x83, 0x20, 0x1c, 0x58, 0x30, 0x01, 0x88, - 0x91, 0x43, 0x01, 0x80, 0x3c, 0x00, 0xf8, 0xca, - 0x00, 0x00, 0xa3, 0x6b, 0x52, 0x08, 0x00, 0x2b, - 0x10, 0xd0, 0x91, 0x43, 0x01, 0x80, 0x28, 0x8b, - 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x15, 0xd0, - 0x2e, 0x20, 0x01, 0x5d, 0x20, 0x69, 0x04, 0x30, - 0xf8, 0xf7, 0x41, 0xfd, 0x61, 0x6a, 0xfe, 0xf7, - 0xa8, 0xf9, 0x04, 0xe0, 0x11, 0x43, 0x01, 0x80, - 0x20, 0x1c, 0xfb, 0xf7, 0xcc, 0xfb, 0x68, 0x83, - 0x04, 0xe0, 0x20, 0x69, 0x41, 0x80, 0x3c, 0x00, - 0x34, 0xcb, 0x00, 0x00, 0xa8, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0xe0, 0x68, 0xf6, 0xf7, 0x20, 0xf9, - 0x30, 0x80, 0x60, 0x6d, 0x00, 0x28, 0x04, 0xd0, - 0x00, 0x22, 0x03, 0x21, 0x70, 0x7a, 0xfe, 0xf7, - 0x0d, 0xff, 0x20, 0x1c, 0x00, 0xf0, 0xb6, 0xf9, - 0x70, 0x7a, 0x06, 0xf0, 0x45, 0xf8, 0x70, 0xbd, - 0xb0, 0xb5, 0x00, 0x24, 0x06, 0xf0, 0x22, 0xf9, - 0x09, 0x4a, 0x00, 0x21, 0x0c, 0x23, 0x4b, 0x43, - 0x3c, 0x00, 0x70, 0xcb, 0x00, 0x00, 0x9d, 0x18, - 0x6b, 0x68, 0x5b, 0x6c, 0xad, 0x78, 0xc3, 0x1a, - 0x01, 0x2d, 0x02, 0xd1, 0xa3, 0x42, 0x00, 0xdd, - 0x1c, 0x1c, 0x01, 0x31, 0x05, 0x29, 0xf0, 0xd3, - 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x06, 0xf0, - 0xa8, 0xfe, 0x0c, 0x20, 0x08, 0x49, 0x60, 0x43, - 0x45, 0x18, 0x28, 0x88, 0x06, 0xf0, 0x35, 0xf9, - 0x68, 0x68, 0x3c, 0x00, 0xac, 0xcb, 0x00, 0x00, - 0x00, 0x28, 0x06, 0xd0, 0x20, 0x30, 0x00, 0x7b, - 0x01, 0x28, 0x02, 0xd1, 0x20, 0x1c, 0xff, 0xf7, - 0xa3, 0xfa, 0xb0, 0xbd, 0x60, 0x7b, 0x01, 0x00, - 0xff, 0xb5, 0x85, 0xb0, 0x0f, 0xae, 0x60, 0xce, - 0x38, 0x20, 0x1e, 0x49, 0x70, 0x43, 0x17, 0x1c, - 0x44, 0x18, 0xff, 0xf7, 0x7f, 0xf8, 0x01, 0x22, - 0x12, 0x03, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x88, - 0x90, 0x43, 0x20, 0x80, 0x3c, 0x00, 0xe8, 0xcb, - 0x00, 0x00, 0x02, 0xe0, 0x21, 0x88, 0x11, 0x43, - 0x21, 0x80, 0x11, 0x98, 0x39, 0x1c, 0xe0, 0x62, - 0x05, 0x98, 0xf8, 0xf7, 0xd0, 0xfc, 0x01, 0x1c, - 0x2b, 0x1c, 0x38, 0x1c, 0x06, 0x9a, 0xfe, 0xf7, - 0x20, 0xf9, 0x60, 0x80, 0x06, 0x22, 0x20, 0x1d, - 0x0f, 0x49, 0xf3, 0xf7, 0x72, 0xfc, 0x23, 0x1c, - 0x08, 0x98, 0x30, 0x33, 0x18, 0x70, 0x0e, 0x98, - 0x0c, 0x49, 0x58, 0x70, 0x65, 0x63, 0x3c, 0x00, - 0x24, 0xcc, 0x00, 0x00, 0x00, 0x20, 0x02, 0x90, - 0x01, 0x22, 0x04, 0x92, 0x09, 0x48, 0x03, 0x91, - 0x5a, 0x78, 0x01, 0x88, 0x01, 0x92, 0x00, 0x91, - 0x19, 0x78, 0x24, 0x3b, 0x30, 0x1c, 0x62, 0x6b, - 0xfe, 0xf7, 0xa8, 0xfe, 0x09, 0xb0, 0xf0, 0xbd, - 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00, - 0xff, 0xb5, 0x87, 0xb0, 0x10, 0x98, 0x12, 0xaf, - 0x3c, 0x00, 0x60, 0xcc, 0x00, 0x00, 0x8c, 0x46, - 0xa2, 0xcf, 0x4c, 0x23, 0x30, 0x4c, 0x6b, 0x43, - 0x1c, 0x19, 0x16, 0x1c, 0x15, 0x9a, 0x27, 0x85, - 0x27, 0x1c, 0x30, 0x37, 0x06, 0x97, 0x05, 0x97, - 0x00, 0x23, 0x3b, 0x73, 0x05, 0x9f, 0x78, 0x73, - 0x11, 0x98, 0x27, 0x1c, 0x60, 0x64, 0x61, 0x60, - 0x22, 0x60, 0x40, 0x37, 0x3e, 0x70, 0x61, 0x46, - 0x61, 0x87, 0x07, 0x98, 0x31, 0x1c, 0xf8, 0xf7, - 0x80, 0xfc, 0x3c, 0x00, 0x9c, 0xcc, 0x00, 0x00, - 0x05, 0x99, 0xc8, 0x73, 0x0a, 0x98, 0x78, 0x70, - 0x30, 0x1c, 0xfe, 0xf7, 0x73, 0xf8, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x41, 0x00, 0x02, 0x20, 0x01, 0x40, 0x11, 0x9a, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x08, 0x43, 0x38, 0x72, 0x20, 0x1c, 0x2e, 0x30, - 0x07, 0x99, 0xfd, 0xf7, 0xcf, 0xff, 0x28, 0x1c, - 0x04, 0xf0, 0xae, 0xf8, 0x3c, 0x00, 0xd8, 0xcc, - 0x00, 0x00, 0xfe, 0xf7, 0xfe, 0xff, 0x4c, 0x22, - 0x12, 0x4b, 0x6a, 0x43, 0xd2, 0x18, 0x01, 0x21, - 0x09, 0x03, 0x2a, 0x32, 0x00, 0x28, 0x04, 0xd0, - 0x10, 0x1c, 0x12, 0x88, 0x8a, 0x43, 0x02, 0x80, - 0x02, 0xe0, 0x10, 0x88, 0x08, 0x43, 0x10, 0x80, - 0x0b, 0x49, 0x00, 0x20, 0x03, 0x91, 0x06, 0x99, - 0x02, 0x90, 0x00, 0x22, 0x04, 0x92, 0x08, 0x48, - 0x0a, 0x7b, 0x41, 0x88, 0x23, 0x1c, 0x3c, 0x00, - 0x14, 0xcd, 0x00, 0x00, 0x01, 0x92, 0x00, 0x91, - 0x79, 0x78, 0x08, 0x33, 0x28, 0x1c, 0x62, 0x68, - 0xfe, 0xf7, 0x38, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, - 0x01, 0x28, 0x27, 0xd0, 0x80, 0x28, 0x30, 0xd1, - 0xe0, 0x6c, 0x00, 0x28, 0x08, 0xd0, 0x69, 0x20, - 0x00, 0x5d, 0x18, 0x49, 0xc0, 0x00, 0x40, 0x18, - 0x3c, 0x00, 0x50, 0xcd, 0x00, 0x00, 0x04, 0x30, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x20, 0x1c, - 0xff, 0xf7, 0xe9, 0xfb, 0x13, 0x4d, 0x50, 0x3d, - 0xe8, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x2e, 0x20, - 0x00, 0x5d, 0xfe, 0xf7, 0x10, 0xf8, 0x02, 0xf0, - 0x42, 0xfe, 0x20, 0x1c, 0x61, 0x68, 0xf3, 0xf7, - 0x2f, 0xfb, 0x40, 0x34, 0x60, 0x78, 0x00, 0x28, - 0x02, 0xd1, 0x06, 0xf0, 0x12, 0xf8, 0xa8, 0x60, - 0xb0, 0xbd, 0x3c, 0x00, 0x8c, 0xcd, 0x00, 0x00, - 0x20, 0x06, 0x00, 0x0e, 0x81, 0x28, 0xfa, 0xd1, - 0x22, 0x0c, 0x20, 0x04, 0x00, 0x0e, 0x02, 0x21, - 0xfe, 0xf7, 0xe6, 0xfd, 0xb0, 0xbd, 0x0a, 0x21, - 0x0c, 0x20, 0xf4, 0xf7, 0x7d, 0xfa, 0xb0, 0xbd, - 0x9c, 0x7b, 0x01, 0x00, 0xf8, 0xb5, 0x18, 0x4e, - 0x18, 0x4f, 0x05, 0x1c, 0x34, 0x79, 0xb8, 0x79, - 0x00, 0x90, 0x20, 0x1c, 0xf5, 0xf7, 0x7c, 0xff, - 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0xc8, 0xcd, - 0x00, 0x00, 0x12, 0x48, 0x38, 0x38, 0x40, 0x68, - 0x85, 0x42, 0x01, 0xd1, 0x00, 0x2d, 0x03, 0xd1, - 0x10, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x63, 0xfa, - 0x0d, 0x49, 0x00, 0x20, 0x38, 0x39, 0x48, 0x60, - 0x04, 0x21, 0x20, 0x1c, 0xff, 0xf7, 0x59, 0xfc, - 0x04, 0x21, 0x20, 0x1c, 0xf5, 0xf7, 0xeb, 0xfe, - 0x0c, 0x21, 0x06, 0x4a, 0x61, 0x43, 0x30, 0x3a, - 0x89, 0x18, 0x0c, 0x71, 0x04, 0x20, 0x3c, 0x00, - 0x04, 0xce, 0x00, 0x00, 0x30, 0x71, 0x00, 0x98, - 0xb8, 0x71, 0x0f, 0x20, 0xff, 0xf7, 0xa6, 0xfd, - 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x7a, 0x01, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x0f, 0x20, 0xff, 0xf7, 0xc1, 0xfd, 0xf5, 0xf7, - 0x3b, 0xff, 0x01, 0x25, 0x00, 0x28, 0x00, 0xd0, - 0x00, 0x25, 0x16, 0x4e, 0xb0, 0x79, 0x16, 0x4f, - 0x00, 0x90, 0x38, 0x79, 0x04, 0x28, 0x01, 0xd1, - 0x3c, 0x00, 0x40, 0xce, 0x00, 0x00, 0x00, 0x2c, - 0x03, 0xd1, 0x11, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x2c, 0xfa, 0x10, 0x48, 0x29, 0x06, 0x38, 0x38, - 0x44, 0x60, 0x09, 0x0e, 0x0c, 0x1c, 0x04, 0x20, - 0xff, 0xf7, 0x21, 0xfc, 0x03, 0x21, 0x20, 0x1c, - 0xff, 0xf7, 0x41, 0xfc, 0x21, 0x1c, 0x04, 0x20, - 0xf5, 0xf7, 0xaf, 0xfe, 0x0c, 0x21, 0x07, 0x4a, - 0x69, 0x43, 0x04, 0x20, 0x30, 0x3a, 0x89, 0x18, - 0x08, 0x71, 0x3c, 0x00, 0x7c, 0xce, 0x00, 0x00, - 0x3c, 0x71, 0x00, 0x98, 0xb0, 0x71, 0x20, 0x1c, - 0xff, 0xf7, 0x50, 0xfd, 0x04, 0x20, 0xf8, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0xa4, 0x7a, 0x01, 0x00, - 0x0c, 0x23, 0x02, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x68, 0x70, 0x47, 0x74, 0x7a, 0x01, 0x00, - 0x60, 0x30, 0xc1, 0x79, 0x80, 0x79, 0x81, 0x42, - 0x01, 0xd9, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xce, - 0x00, 0x00, 0x01, 0x48, 0x80, 0x68, 0x70, 0x47, - 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00, 0x38, 0xb5, - 0x69, 0x21, 0x09, 0x5c, 0x18, 0x23, 0x10, 0x4a, - 0x59, 0x43, 0x89, 0x18, 0x8a, 0x68, 0x01, 0x32, - 0x8a, 0x60, 0x4b, 0x69, 0xd2, 0x1a, 0xcb, 0x68, - 0x93, 0x42, 0x00, 0xd2, 0xca, 0x60, 0x00, 0x22, - 0x0b, 0x4c, 0x02, 0x60, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0x3c, 0x00, - 0xf4, 0xce, 0x00, 0x00, 0xd2, 0x79, 0x5a, 0x70, - 0x0a, 0x68, 0x00, 0x2a, 0x01, 0xd1, 0x48, 0x60, - 0x00, 0xe0, 0x10, 0x60, 0x00, 0xab, 0x08, 0x60, - 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0xc4, 0x7b, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x18, 0x23, 0x0a, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x48, 0x68, - 0x00, 0x28, 0x09, 0xd0, 0x48, 0x69, 0x01, 0x30, - 0x3c, 0x00, 0x30, 0xcf, 0x00, 0x00, 0x48, 0x61, - 0x48, 0x68, 0x02, 0x68, 0x4a, 0x60, 0x00, 0x2a, - 0x00, 0xd1, 0x0a, 0x60, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0xc4, 0x7b, 0x01, 0x00, 0xf8, 0xb5, - 0x12, 0x4e, 0x10, 0x4d, 0x0f, 0x4c, 0x0a, 0x27, - 0x21, 0x1c, 0x00, 0x20, 0xe0, 0x60, 0x2a, 0x31, - 0x22, 0x1c, 0x18, 0x32, 0xa1, 0x60, 0x62, 0x61, - 0x27, 0x82, 0x0c, 0x4a, 0xe0, 0x61, 0xa2, 0x61, - 0x60, 0x62, 0x3c, 0x00, 0x6c, 0xcf, 0x00, 0x00, - 0x06, 0x20, 0x20, 0x84, 0x08, 0x1c, 0xfe, 0xf7, - 0xd7, 0xf9, 0x20, 0x1c, 0x08, 0x30, 0xf5, 0xf7, - 0x01, 0xff, 0x4c, 0x3c, 0xac, 0x42, 0x70, 0x80, - 0xe5, 0xd1, 0xff, 0x20, 0x30, 0x70, 0xf8, 0xbd, - 0x88, 0xe4, 0x01, 0x00, 0x0c, 0xe3, 0x01, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0x0b, 0x48, 0x0e, 0x1c, - 0x17, 0x1c, 0x44, 0x70, 0x3c, 0x00, 0xa8, 0xcf, - 0x00, 0x00, 0x05, 0xf0, 0x00, 0xff, 0x05, 0x1c, - 0x39, 0x1c, 0x30, 0x1c, 0xfd, 0xf7, 0xab, 0xff, - 0x0c, 0x21, 0x05, 0x4a, 0x28, 0x18, 0x0a, 0x30, - 0x61, 0x43, 0x08, 0x32, 0x50, 0x50, 0x03, 0x48, - 0x89, 0x18, 0x00, 0x68, 0x88, 0x60, 0xf8, 0xbd, - 0x00, 0x00, 0x6c, 0x7a, 0x01, 0x00, 0x78, 0x6e, - 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4e, 0x05, 0x1c, - 0x70, 0x78, 0xff, 0x28, 0x0f, 0xd0, 0x3c, 0x00, - 0xe4, 0xcf, 0x00, 0x00, 0x0c, 0x23, 0x08, 0x4c, - 0x58, 0x43, 0x08, 0x34, 0x20, 0x58, 0x05, 0xf0, - 0x1d, 0xfe, 0x00, 0x28, 0x06, 0xd1, 0x70, 0x78, - 0x0c, 0x23, 0x58, 0x43, 0x00, 0x19, 0x81, 0x68, - 0x29, 0x43, 0x81, 0x60, 0x70, 0xbd, 0x00, 0x00, - 0x6c, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x30, 0x21, - 0x01, 0x48, 0xf3, 0xf7, 0x43, 0xfa, 0x80, 0xbd, - 0xec, 0xe5, 0x01, 0x00, 0x10, 0xb5, 0x05, 0xf0, - 0x3c, 0x00, 0x20, 0xd0, 0x00, 0x00, 0xc5, 0xfe, - 0x0a, 0x49, 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c, - 0x05, 0xf0, 0xf7, 0xfd, 0x00, 0x28, 0x07, 0xd0, - 0xf5, 0xf7, 0x51, 0xfe, 0x00, 0x28, 0x03, 0xd0, - 0x13, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x31, 0xf9, - 0xf5, 0xf7, 0x49, 0xfe, 0x00, 0x28, 0xee, 0xd1, - 0x10, 0xbd, 0xb0, 0x36, 0x00, 0x00, 0xff, 0xb5, - 0x8b, 0xb0, 0x19, 0x9b, 0x0d, 0x1c, 0x04, 0x1c, - 0x1a, 0x20, 0x3c, 0x00, 0x5c, 0xd0, 0x00, 0x00, - 0x00, 0x2b, 0x16, 0x99, 0x00, 0xd1, 0x18, 0x20, - 0x01, 0x90, 0x14, 0x98, 0x00, 0x28, 0x27, 0xd0, - 0xff, 0x20, 0x19, 0x9b, 0x01, 0x30, 0x00, 0x2b, - 0x01, 0xd1, 0x18, 0x23, 0x00, 0xe0, 0x1a, 0x23, - 0x04, 0x33, 0x82, 0x42, 0x04, 0xd3, 0xd0, 0x1a, - 0x40, 0x08, 0x40, 0x00, 0x00, 0x04, 0x00, 0x0c, - 0x0d, 0x90, 0x6a, 0x48, 0x00, 0x88, 0xc2, 0x1a, - 0x12, 0x04, 0x12, 0x0c, 0x3c, 0x00, 0x98, 0xd0, - 0x00, 0x00, 0x04, 0x92, 0x00, 0x29, 0x08, 0xd0, - 0x89, 0x79, 0x66, 0x4a, 0x49, 0x00, 0x51, 0x5a, - 0x04, 0x9a, 0x51, 0x1a, 0x0a, 0x04, 0x12, 0x0c, - 0x04, 0x92, 0x04, 0x9a, 0x82, 0x42, 0x05, 0xd9, - 0x00, 0x20, 0x04, 0x90, 0x02, 0xe0, 0x60, 0x48, - 0x04, 0x90, 0x0d, 0x90, 0x01, 0x98, 0x01, 0x04, - 0x09, 0x0c, 0x0a, 0x91, 0x00, 0x20, 0xf4, 0xf7, - 0x84, 0xfa, 0x00, 0x90, 0x00, 0x68, 0x3c, 0x00, - 0xd4, 0xd0, 0x00, 0x00, 0x00, 0x26, 0x06, 0x90, - 0x20, 0x60, 0x00, 0x20, 0x05, 0x90, 0x0e, 0x98, - 0x00, 0x24, 0x00, 0x05, 0x00, 0x0c, 0x09, 0x90, - 0x1a, 0x98, 0x0d, 0x9f, 0x40, 0x07, 0x40, 0x0f, - 0x08, 0x90, 0x07, 0x94, 0x03, 0x95, 0x00, 0x2d, - 0x0d, 0xd0, 0x28, 0x89, 0xb8, 0x42, 0x04, 0xd8, - 0x36, 0x18, 0x3f, 0x1a, 0x07, 0xd0, 0xed, 0x68, - 0xf5, 0xe7, 0x39, 0x04, 0x09, 0x0c, 0x28, 0x1c, - 0x3c, 0x00, 0x10, 0xd1, 0x00, 0x00, 0xf4, 0xf7, - 0x38, 0xfb, 0xef, 0xe7, 0x00, 0x2e, 0x02, 0xd1, - 0x07, 0x99, 0x00, 0x29, 0x71, 0xd1, 0x27, 0x1c, - 0x6c, 0x20, 0xf4, 0xf7, 0x88, 0xfb, 0x07, 0x99, - 0x04, 0x1c, 0x00, 0x29, 0x20, 0xd1, 0x07, 0x94, - 0x00, 0x20, 0xa0, 0x61, 0x18, 0x98, 0x27, 0x1c, - 0x60, 0x60, 0x17, 0x98, 0x24, 0x37, 0xa0, 0x60, - 0x06, 0x98, 0x20, 0x61, 0x15, 0x98, 0x0f, 0xc8, - 0x0f, 0xc7, 0x3c, 0x00, 0x4c, 0xd1, 0x00, 0x00, - 0x14, 0x98, 0x5c, 0x21, 0x60, 0x63, 0x09, 0x98, - 0x08, 0x53, 0x19, 0x98, 0x69, 0x21, 0xe0, 0x63, - 0x1b, 0x98, 0x08, 0x55, 0x1c, 0x98, 0x60, 0x65, - 0x19, 0x98, 0x00, 0x28, 0x23, 0xd0, 0x08, 0x98, - 0x06, 0x99, 0x08, 0x83, 0x1f, 0xe0, 0x6c, 0x22, - 0x20, 0x1c, 0x07, 0x99, 0xf3, 0xf7, 0x1a, 0xfa, - 0x3c, 0x60, 0x01, 0x98, 0x62, 0x21, 0x30, 0x18, - 0xc8, 0x53, 0x15, 0x98, 0x3c, 0x00, 0x88, 0xd1, - 0x00, 0x00, 0x40, 0x21, 0x80, 0x7a, 0xc8, 0x55, - 0x00, 0x20, 0xb8, 0x63, 0x06, 0x98, 0x0a, 0x99, - 0xf4, 0xf7, 0x1f, 0xfa, 0xf8, 0x60, 0x02, 0x99, - 0xf4, 0xf7, 0x3b, 0xf9, 0x20, 0x1c, 0x40, 0x30, - 0x81, 0x8b, 0x05, 0x9a, 0x12, 0x07, 0x12, 0x0f, - 0x11, 0x43, 0x81, 0x83, 0x03, 0x98, 0x5e, 0x21, - 0x02, 0x90, 0x01, 0x98, 0x22, 0x4a, 0x30, 0x18, - 0x08, 0x53, 0x12, 0x68, 0x01, 0x21, 0x3c, 0x00, - 0xc4, 0xd1, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x2a, - 0x00, 0xd0, 0x1b, 0x98, 0x00, 0x06, 0x04, 0x9a, - 0x00, 0x0e, 0x96, 0x42, 0x03, 0xd9, 0x2c, 0x22, - 0x11, 0x55, 0x1b, 0x49, 0x04, 0xe0, 0x15, 0x99, - 0x2c, 0x22, 0x09, 0x7a, 0x11, 0x55, 0x19, 0x49, - 0x08, 0x5c, 0x66, 0x21, 0x08, 0x55, 0x1c, 0x98, - 0x00, 0x28, 0x01, 0xd0, 0x1f, 0x20, 0x08, 0x55, - 0x00, 0x2d, 0x03, 0xd0, 0xe8, 0x68, 0x03, 0x90, - 0x3c, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x20, - 0x00, 0xe0, 0x09, 0xe0, 0xe8, 0x60, 0x05, 0x98, - 0x00, 0x26, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c, - 0x0d, 0x9f, 0x05, 0x90, 0x03, 0x9d, 0x6d, 0xe7, - 0x00, 0x98, 0xe0, 0x60, 0x02, 0x99, 0xf4, 0xf7, - 0xfa, 0xf8, 0x00, 0x20, 0x20, 0x60, 0x01, 0x21, - 0xa1, 0x63, 0x60, 0x34, 0x60, 0x80, 0x07, 0x98, - 0x0f, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x06, 0x61, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0xd2, 0x00, 0x00, - 0x5c, 0x43, 0x01, 0x00, 0x38, 0x09, 0x00, 0x00, - 0x18, 0x67, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00, - 0x0a, 0x61, 0x01, 0x00, 0x01, 0x48, 0x00, 0x68, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x6a, 0x01, 0x00, - 0x02, 0x49, 0x09, 0x1d, 0x03, 0xc9, 0x40, 0x18, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x69, 0x70, 0x47, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x78, 0xd2, - 0x00, 0x00, 0x01, 0x48, 0x40, 0x69, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x48, - 0x80, 0x69, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x4e, 0x00, 0x20, - 0x35, 0x1c, 0x40, 0x35, 0xf0, 0x63, 0x0d, 0xe0, - 0xa0, 0x68, 0xf4, 0xf7, 0x7a, 0xf9, 0xb3, 0x6d, - 0x00, 0x2b, 0x04, 0xd0, 0x00, 0x22, 0x01, 0x20, - 0x61, 0x6b, 0xf3, 0xf7, 0x95, 0xf8, 0x3c, 0x00, - 0xb4, 0xd2, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7, - 0x9d, 0xfa, 0x28, 0x1c, 0xfa, 0xf7, 0x42, 0xfd, - 0x04, 0x1c, 0xec, 0xd1, 0x70, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4f, - 0x00, 0x26, 0xf8, 0x6b, 0x00, 0x28, 0x2c, 0xd0, - 0x38, 0x1c, 0x40, 0x30, 0x00, 0x90, 0x1d, 0xe0, - 0x16, 0x48, 0xb9, 0x6b, 0x02, 0xf0, 0x5c, 0xf8, - 0x00, 0x22, 0x20, 0x1c, 0x14, 0x49, 0x03, 0xf0, - 0x3c, 0x00, 0xf0, 0xd2, 0x00, 0x00, 0x7b, 0xff, - 0x05, 0x1c, 0x04, 0xd1, 0x38, 0x6a, 0x01, 0x30, - 0x38, 0x62, 0x01, 0x36, 0x0d, 0xe0, 0xa0, 0x68, - 0xf4, 0xf7, 0x49, 0xf9, 0xbb, 0x6d, 0x00, 0x2b, - 0x04, 0xd0, 0x00, 0x22, 0x28, 0x1c, 0x61, 0x6b, - 0xf3, 0xf7, 0x64, 0xf8, 0x20, 0x1c, 0xf4, 0xf7, - 0x6c, 0xfa, 0x00, 0x98, 0xfa, 0xf7, 0x11, 0xfd, - 0x04, 0x1c, 0xdc, 0xd1, 0x07, 0x48, 0xb9, 0x6b, - 0x02, 0xf0, 0x3c, 0x00, 0x2c, 0xd3, 0x00, 0x00, - 0x25, 0xf8, 0x00, 0x20, 0xf8, 0x63, 0x30, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x11, 0x30, 0x00, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0xc8, 0x63, 0x70, 0x47, 0xc4, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0x05, 0x4a, 0x00, 0x21, - 0x1c, 0x23, 0x43, 0x43, 0x9b, 0x18, 0x01, 0x30, - 0x04, 0x28, 0xd9, 0x66, 0x3c, 0x00, 0x68, 0xd3, - 0x00, 0x00, 0xf8, 0xdb, 0xfc, 0xf7, 0xfd, 0xfc, - 0x80, 0xbd, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49, - 0xc8, 0x64, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x01, 0x49, 0x88, 0x64, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x21, 0x1c, 0x02, 0x8e, - 0x80, 0x6a, 0x40, 0x31, 0xf3, 0xf7, 0x2f, 0xf8, - 0x00, 0x28, 0x16, 0xd1, 0x02, 0x21, 0x3c, 0x00, - 0xa4, 0xd3, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7, - 0x6f, 0xfa, 0xe2, 0x69, 0xc0, 0x00, 0x10, 0x18, - 0x82, 0x8b, 0xab, 0x88, 0x9a, 0x42, 0x04, 0xd1, - 0x82, 0x69, 0x2b, 0x68, 0x9a, 0x42, 0x08, 0xd2, - 0x01, 0xe0, 0x9a, 0x42, 0x05, 0xd2, 0x00, 0x21, - 0x18, 0x30, 0x0c, 0xcd, 0x0c, 0xc0, 0x00, 0xe0, - 0x01, 0x21, 0x08, 0x1c, 0xb0, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x00, 0x27, 0x44, 0x68, - 0x3c, 0x00, 0xe0, 0xd3, 0x00, 0x00, 0x0f, 0xe0, - 0x09, 0x49, 0x48, 0x6a, 0x01, 0x30, 0x48, 0x62, - 0xa0, 0x69, 0x00, 0x28, 0x02, 0xd0, 0xf4, 0xf7, - 0x00, 0xfa, 0xa7, 0x61, 0x26, 0x62, 0x25, 0x68, - 0x20, 0x1c, 0xff, 0xf7, 0x52, 0xfb, 0x2c, 0x1c, - 0x00, 0x2c, 0xed, 0xd1, 0xf8, 0xbd, 0xc4, 0x69, - 0x01, 0x00, 0x03, 0x30, 0x07, 0x4a, 0x81, 0x08, - 0x13, 0x68, 0x50, 0x68, 0x1b, 0x68, 0x89, 0x00, - 0x09, 0x18, 0x3c, 0x00, 0x1c, 0xd4, 0x00, 0x00, - 0x8b, 0x42, 0x01, 0xd3, 0x51, 0x60, 0x00, 0xe0, - 0x00, 0x20, 0x90, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x8c, 0x6e, 0x01, 0x00, 0x70, 0xb5, 0x12, 0x4e, - 0x80, 0x38, 0xc5, 0x00, 0x70, 0x59, 0x0c, 0x1c, - 0x00, 0x28, 0x04, 0xd1, 0x01, 0x21, 0x0d, 0x20, - 0xf3, 0xf7, 0x2e, 0xff, 0x0d, 0xe0, 0x20, 0x69, - 0x00, 0x28, 0x05, 0xd1, 0xa8, 0x19, 0x81, 0x88, - 0xe0, 0x68, 0x01, 0xf0, 0x3c, 0x00, 0x58, 0xd4, - 0x00, 0x00, 0x47, 0xfa, 0x20, 0x61, 0x71, 0x59, - 0x20, 0x1c, 0xf2, 0xf7, 0xbb, 0xff, 0x04, 0x1c, - 0x00, 0x2c, 0x07, 0xd0, 0xe0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0xf4, 0xf7, 0x92, 0xf8, 0x20, 0x1c, - 0xf4, 0xf7, 0xbd, 0xf9, 0x70, 0xbd, 0x54, 0x42, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x0e, 0x49, 0x06, 0x22, 0xf3, 0xf7, 0x35, 0xf8, - 0x00, 0x26, 0xe6, 0x61, 0x66, 0x62, 0x3c, 0x00, - 0x94, 0xd4, 0x00, 0x00, 0x07, 0x20, 0x30, 0x21, - 0x08, 0x55, 0xe6, 0x63, 0x28, 0x1c, 0xf8, 0xf7, - 0x6b, 0xf8, 0xa0, 0x76, 0x20, 0x1c, 0x14, 0x30, - 0x06, 0x22, 0x29, 0x1c, 0xf3, 0xf7, 0x24, 0xf8, - 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18, 0xf3, 0xf7, - 0x1f, 0xf8, 0x26, 0x61, 0x70, 0xbd, 0x00, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x80, 0xb5, 0xfd, 0xf7, - 0x85, 0xfe, 0x80, 0xbd, 0x01, 0x49, 0x48, 0x60, - 0x3c, 0x00, 0xd0, 0xd4, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x49, - 0x80, 0xb5, 0x49, 0x68, 0xf2, 0xf7, 0x7c, 0xff, - 0x80, 0xbd, 0xe4, 0x65, 0x01, 0x00, 0x80, 0xb5, - 0xf4, 0xf7, 0xe5, 0xf9, 0x07, 0x49, 0x07, 0x48, - 0x0e, 0xc9, 0x0e, 0xc0, 0x18, 0x38, 0x00, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x02, 0xf0, 0xb7, 0xfa, - 0x80, 0xbd, 0x02, 0xf0, 0x9e, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xd5, 0x00, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x90, 0x73, 0x01, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x89, 0x68, 0x00, 0x20, - 0x00, 0x29, 0x00, 0xd1, 0x03, 0x20, 0x00, 0x06, - 0x00, 0x0e, 0xfa, 0xf7, 0xe3, 0xfb, 0x80, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48, - 0x06, 0x22, 0x03, 0x49, 0xf2, 0xf7, 0xde, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x40, 0x80, 0x07, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x3c, 0x00, 0x48, 0xd5, - 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0c, 0x4d, - 0x0b, 0x1c, 0x21, 0x1c, 0x00, 0x20, 0x0c, 0x3d, - 0x00, 0x29, 0x09, 0x4c, 0x05, 0xd0, 0x28, 0x78, - 0x21, 0x1c, 0x10, 0x80, 0x02, 0x1c, 0x18, 0x1c, - 0x07, 0xe0, 0x11, 0x88, 0x0e, 0x29, 0x07, 0xd8, - 0x0a, 0x06, 0x12, 0x0e, 0x19, 0x1c, 0x20, 0x1c, - 0x2a, 0x70, 0xf2, 0xf7, 0xbe, 0xff, 0x01, 0x20, - 0xb0, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x3c, 0x00, - 0x84, 0xd5, 0x00, 0x00, 0x10, 0xb5, 0x00, 0x20, - 0x0a, 0x4a, 0x01, 0x21, 0x11, 0x60, 0x0a, 0x4c, - 0x0a, 0xe0, 0x02, 0x1c, 0x01, 0x6a, 0x50, 0x32, - 0x91, 0x42, 0x05, 0xd0, 0x61, 0x78, 0x3c, 0x23, - 0x59, 0x43, 0x09, 0x19, 0x04, 0x31, 0x01, 0x62, - 0x04, 0xf0, 0xba, 0xfb, 0x00, 0x28, 0xf0, 0xd1, - 0x10, 0xbd, 0x00, 0x00, 0xdc, 0x62, 0x01, 0x00, - 0x68, 0x61, 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0xc0, 0xd5, 0x00, 0x00, 0x00, 0x68, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c, 0x10, 0x20, - 0x04, 0xf0, 0xc7, 0xfe, 0x80, 0xbd, 0x28, 0x61, - 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f, 0x80, 0xb5, - 0x00, 0x20, 0xfb, 0xf7, 0x76, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x0b, 0xf0, 0xb9, 0xfa, - 0x80, 0xbd, 0xff, 0xb5, 0x83, 0xb0, 0x16, 0x1c, - 0x00, 0x21, 0x01, 0x91, 0x1f, 0x1c, 0x08, 0x21, - 0x02, 0xaa, 0x3c, 0x00, 0xfc, 0xd5, 0x00, 0x00, - 0xfa, 0xf7, 0x0e, 0xff, 0x04, 0x1c, 0x2a, 0xd1, - 0x02, 0x98, 0x41, 0x68, 0x49, 0x00, 0x01, 0xd4, - 0x09, 0x24, 0x24, 0xe0, 0xfa, 0xf7, 0x52, 0xff, - 0x38, 0x60, 0x02, 0x98, 0x41, 0x68, 0x49, 0x02, - 0xcd, 0x0f, 0x29, 0x1c, 0xfa, 0xf7, 0x44, 0xff, - 0x01, 0x1c, 0x30, 0x60, 0x38, 0x68, 0x00, 0x06, - 0x00, 0x0e, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0x28, - 0x01, 0xd1, 0x0a, 0x24, 0x3c, 0x00, 0x38, 0xd6, - 0x00, 0x00, 0x0f, 0xe0, 0x31, 0x68, 0x02, 0x98, - 0x2b, 0x1c, 0x01, 0xaa, 0xfa, 0xf7, 0xd7, 0xff, - 0x00, 0x28, 0x06, 0xd0, 0x01, 0x98, 0x00, 0x28, - 0x04, 0xd0, 0x04, 0x99, 0x09, 0x68, 0x81, 0x42, - 0x00, 0xd2, 0x03, 0x24, 0x01, 0x98, 0x04, 0x99, - 0x08, 0x60, 0x07, 0xb0, 0x20, 0x1c, 0xf0, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c, - 0x01, 0x24, 0x00, 0xf0, 0x84, 0xff, 0x3c, 0x00, - 0x74, 0xd6, 0x00, 0x00, 0x00, 0x28, 0x08, 0xd0, - 0x03, 0x2d, 0x01, 0xd0, 0x04, 0x2d, 0x04, 0xd1, - 0x03, 0x20, 0xc0, 0x03, 0x86, 0x42, 0x00, 0xd3, - 0x00, 0x24, 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00, - 0x7c, 0xb5, 0x15, 0x1c, 0x06, 0x1c, 0x0c, 0x1c, - 0x29, 0x1c, 0x6a, 0x46, 0x01, 0xab, 0xff, 0xf7, - 0xa5, 0xff, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x2c, - 0x01, 0xd1, 0x03, 0x20, 0x7c, 0xbd, 0x17, 0x48, - 0x3c, 0x00, 0xb0, 0xd6, 0x00, 0x00, 0x00, 0xab, - 0x06, 0x60, 0x18, 0x79, 0x07, 0x28, 0x21, 0xd2, - 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, - 0x00, 0x00, 0x1d, 0x04, 0x04, 0x06, 0x10, 0x17, - 0x13, 0x00, 0x04, 0x20, 0xed, 0xe7, 0x2a, 0x1c, - 0x21, 0x1c, 0x01, 0x20, 0x00, 0x9b, 0xf2, 0xf7, - 0x81, 0xfe, 0x00, 0x28, 0x12, 0xd1, 0x06, 0x20, - 0xe3, 0xe7, 0x2a, 0x68, 0x00, 0x99, 0x05, 0xe0, - 0x00, 0x98, 0x3c, 0x00, 0xec, 0xd6, 0x00, 0x00, - 0x42, 0x78, 0x81, 0x1c, 0x01, 0xe0, 0x2a, 0x68, - 0x69, 0x46, 0x20, 0x1c, 0xf2, 0xf7, 0xfe, 0xfe, - 0x03, 0xe0, 0x04, 0x21, 0x87, 0x20, 0xf3, 0xf7, - 0xcf, 0xfd, 0x00, 0x20, 0xd0, 0xe7, 0x00, 0x00, - 0xf8, 0x6b, 0x01, 0x00, 0xf7, 0xb5, 0x86, 0xb0, - 0x0e, 0x1c, 0x08, 0x21, 0x05, 0xaa, 0x06, 0x98, - 0xfa, 0xf7, 0x7e, 0xfe, 0x04, 0x1c, 0x45, 0xd1, - 0x05, 0x98, 0x41, 0x68, 0x3c, 0x00, 0x28, 0xd7, - 0x00, 0x00, 0x02, 0x90, 0x49, 0x02, 0xc9, 0x0f, - 0x00, 0x25, 0x04, 0x95, 0x03, 0x91, 0x08, 0x9f, - 0xfa, 0xf7, 0xd5, 0xfe, 0x01, 0x90, 0x02, 0xa9, - 0x03, 0xc9, 0xfa, 0xf7, 0xc6, 0xfe, 0x01, 0x99, - 0x05, 0x29, 0x14, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x0e, 0x03, - 0x06, 0x0c, 0x03, 0x00, 0x87, 0x42, 0x0e, 0xd8, - 0x07, 0xe0, 0x87, 0x42, 0x0b, 0xd8, 0x3c, 0x00, - 0x64, 0xd7, 0x00, 0x00, 0x01, 0x25, 0xc0, 0x1b, - 0x04, 0x90, 0x07, 0xe0, 0x87, 0x42, 0x05, 0xd1, - 0x01, 0x25, 0x03, 0xe0, 0x05, 0x21, 0x87, 0x20, - 0xf3, 0xf7, 0x94, 0xfd, 0x00, 0x2d, 0x01, 0xd1, - 0x03, 0x24, 0x15, 0xe0, 0x05, 0x98, 0x41, 0x68, - 0x00, 0x29, 0x69, 0xda, 0x3a, 0x4a, 0x06, 0x99, - 0x11, 0x60, 0xfa, 0xf7, 0x91, 0xfe, 0x07, 0x1c, - 0x05, 0x98, 0x03, 0x99, 0xfa, 0xf7, 0x86, 0xfe, - 0x3c, 0x00, 0xa0, 0xd7, 0x00, 0x00, 0x05, 0x1c, - 0x01, 0x1c, 0x38, 0x1c, 0xff, 0xf7, 0x5f, 0xff, - 0x00, 0x28, 0x01, 0xd1, 0x0a, 0x24, 0x5e, 0xe0, - 0x07, 0x2f, 0x57, 0xd2, 0x02, 0xa3, 0xdb, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x53, 0x04, - 0x04, 0x06, 0x2e, 0x50, 0x48, 0x00, 0x04, 0x24, - 0x51, 0xe0, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1, - 0x00, 0x27, 0x14, 0xe0, 0x08, 0x99, 0x08, 0x18, - 0x00, 0x04, 0x3c, 0x00, 0xdc, 0xd7, 0x00, 0x00, - 0x00, 0x0c, 0xf4, 0xf7, 0x2b, 0xf8, 0x07, 0x1c, - 0x31, 0x1c, 0x08, 0x9a, 0xf2, 0xf7, 0x86, 0xfe, - 0x08, 0x98, 0x04, 0x99, 0x38, 0x18, 0xf2, 0xf7, - 0x2f, 0xfe, 0x08, 0x98, 0x04, 0x99, 0x3e, 0x1c, - 0x40, 0x18, 0x08, 0x90, 0x31, 0x1c, 0x00, 0x20, - 0x08, 0xaa, 0xf2, 0xf7, 0xec, 0xfd, 0x00, 0x28, - 0x00, 0xd1, 0x05, 0x24, 0x00, 0x2f, 0x2d, 0xd0, - 0x38, 0x1c, 0xf3, 0xf7, 0x3c, 0x00, 0x18, 0xd8, - 0x00, 0x00, 0xed, 0xff, 0x29, 0xe0, 0x03, 0x99, - 0x00, 0x29, 0x04, 0xd0, 0x05, 0x98, 0x40, 0x68, - 0x87, 0x02, 0xbf, 0x0a, 0x00, 0xe0, 0x00, 0x27, - 0x31, 0x1c, 0x28, 0x1c, 0x08, 0x9a, 0xf2, 0xf7, - 0x60, 0xfe, 0x04, 0x99, 0x00, 0x29, 0x03, 0xd0, - 0x08, 0x98, 0x28, 0x18, 0xf2, 0xf7, 0x07, 0xfe, - 0x00, 0x2f, 0x12, 0xd0, 0xf2, 0xf7, 0xcc, 0xfd, - 0x0f, 0xe0, 0x31, 0x1c, 0xa8, 0x1c, 0x3c, 0x00, - 0x54, 0xd8, 0x00, 0x00, 0x08, 0x9a, 0xf2, 0xf7, - 0x4f, 0xfe, 0x08, 0x98, 0x68, 0x70, 0x07, 0xe0, - 0xff, 0xe7, 0x07, 0x24, 0x04, 0xe0, 0x08, 0x24, - 0x03, 0x21, 0x87, 0x20, 0xf3, 0xf7, 0x1a, 0xfd, - 0x20, 0x1c, 0x09, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xf8, 0x6b, 0x01, 0x00, 0x9e, 0xb5, 0x1c, 0x1c, - 0x00, 0xab, 0x19, 0x72, 0x00, 0x92, 0x00, 0x22, - 0x01, 0x94, 0x69, 0x46, 0xfb, 0xf7, 0x08, 0xfa, - 0x3c, 0x00, 0x90, 0xd8, 0x00, 0x00, 0x9e, 0xbd, - 0x00, 0x00, 0x8f, 0xb5, 0x02, 0x92, 0x00, 0x22, - 0x00, 0x90, 0x01, 0x90, 0x03, 0x91, 0x69, 0x46, - 0x04, 0x20, 0xfb, 0xf7, 0xfc, 0xf9, 0x8f, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28, - 0x0a, 0xd0, 0x03, 0x28, 0x19, 0xd0, 0x04, 0x28, - 0x2c, 0xd1, 0x60, 0x68, 0x01, 0xf0, 0x35, 0xfc, - 0x01, 0x1c, 0x83, 0x20, 0x0c, 0xcc, 0x22, 0xe0, - 0x1c, 0x20, 0x3c, 0x00, 0xcc, 0xd8, 0x00, 0x00, - 0x14, 0x49, 0x60, 0x43, 0x40, 0x18, 0x14, 0x49, - 0x45, 0x18, 0x28, 0x1c, 0xf8, 0xf7, 0x46, 0xfc, - 0xa9, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x22, 0x1c, - 0x08, 0x20, 0x05, 0xf0, 0x71, 0xfe, 0xb0, 0xbd, - 0x20, 0x8c, 0xc8, 0x28, 0x01, 0xd3, 0x04, 0x20, - 0x04, 0xe0, 0x65, 0x28, 0x01, 0xd3, 0x02, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0x20, 0x84, 0x20, 0x1c, - 0x03, 0xf0, 0xdc, 0xfa, 0x3c, 0x00, 0x08, 0xd9, - 0x00, 0x00, 0x22, 0x68, 0xe3, 0x68, 0x01, 0x1c, - 0x82, 0x20, 0xff, 0xf7, 0xb4, 0xff, 0xb0, 0xbd, - 0xa0, 0x21, 0x08, 0x20, 0xf3, 0xf7, 0xc3, 0xfc, - 0xb0, 0xbd, 0xdc, 0x71, 0x01, 0x00, 0x64, 0xee, - 0xff, 0xff, 0x03, 0x48, 0x04, 0x4a, 0x81, 0x68, - 0x51, 0x61, 0xc0, 0x68, 0x90, 0x61, 0x70, 0x47, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71, - 0x01, 0x00, 0x03, 0x49, 0x04, 0x4a, 0x3c, 0x00, - 0x44, 0xd9, 0x00, 0x00, 0x08, 0x6b, 0x90, 0x60, - 0x88, 0x68, 0xd0, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x90, 0x5c, 0x01, 0x00, 0xc0, 0x71, 0x01, 0x00, - 0x00, 0xb5, 0xff, 0xf7, 0xf1, 0xff, 0xff, 0xf7, - 0xe3, 0xff, 0x00, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c, - 0x00, 0x28, 0x14, 0xd0, 0x0b, 0x49, 0x0c, 0x4c, - 0x88, 0x68, 0x62, 0x69, 0xc9, 0x68, 0x80, 0x1a, - 0xa2, 0x69, 0x89, 0x1a, 0x40, 0x18, 0x04, 0xd0, - 0x3c, 0x00, 0x80, 0xd9, 0x00, 0x00, 0x64, 0x23, - 0x59, 0x43, 0xf2, 0xf7, 0xc4, 0xfe, 0x20, 0x61, - 0xff, 0xf7, 0xcd, 0xff, 0x20, 0x69, 0x28, 0x60, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28, - 0x17, 0xd0, 0x0c, 0x49, 0x0d, 0x4c, 0x08, 0x6b, - 0xa2, 0x68, 0x89, 0x68, 0x80, 0x1a, 0xe2, 0x68, - 0x89, 0x1a, 0x3c, 0x00, 0xbc, 0xd9, 0x00, 0x00, - 0x40, 0x18, 0x07, 0xd0, 0x22, 0x88, 0x90, 0x42, - 0x04, 0xd9, 0x64, 0x23, 0x59, 0x43, 0xf2, 0xf7, - 0xa1, 0xfe, 0x60, 0x60, 0xff, 0xf7, 0xb6, 0xff, - 0x60, 0x68, 0x28, 0x60, 0x01, 0x20, 0xb0, 0xbd, - 0x00, 0x20, 0xb0, 0xbd, 0x90, 0x5c, 0x01, 0x00, - 0xc0, 0x71, 0x01, 0x00, 0x7c, 0xb5, 0x10, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0, 0x24, 0xf8, - 0x7c, 0xbd, 0x0f, 0x48, 0x3c, 0x00, 0xf8, 0xd9, - 0x00, 0x00, 0xc0, 0x69, 0x84, 0x68, 0xe0, 0x68, - 0x25, 0x6a, 0xa6, 0x69, 0xf3, 0xf7, 0xe3, 0xfd, - 0xe1, 0x69, 0xf3, 0xf7, 0x06, 0xfd, 0x20, 0x1c, - 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89, - 0x89, 0x18, 0xc1, 0x83, 0x07, 0x49, 0x01, 0x94, - 0x00, 0x91, 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88, - 0x01, 0x68, 0xe0, 0x68, 0xc0, 0x68, 0xf8, 0xf7, - 0x1e, 0xfc, 0xe0, 0xe7, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xda, 0x00, 0x00, 0x84, 0x6a, 0x01, 0x00, - 0x91, 0x5e, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0x69, - 0x06, 0x6a, 0x04, 0x1c, 0xc0, 0x68, 0x85, 0xb0, - 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xf3, 0xf7, - 0x57, 0xfc, 0x0a, 0x49, 0x02, 0x95, 0x04, 0x94, - 0x03, 0x91, 0x30, 0x69, 0x82, 0x88, 0x01, 0x68, - 0x26, 0x20, 0x01, 0x92, 0x00, 0x91, 0x43, 0x5d, - 0xe0, 0x68, 0xe1, 0x69, 0x2a, 0x1c, 0x0e, 0x32, - 0x3c, 0x00, 0x70, 0xda, 0x00, 0x00, 0xc0, 0x68, - 0xf8, 0xf7, 0x37, 0xfd, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xe9, 0xd9, 0x00, 0x00, 0x10, 0xb5, - 0x14, 0x1c, 0x05, 0x48, 0xfc, 0xf7, 0x7b, 0xfb, - 0xa0, 0x68, 0xf3, 0xf7, 0x9e, 0xfd, 0xe1, 0x68, - 0xc1, 0x60, 0x20, 0x1c, 0xf5, 0xf7, 0xbb, 0xfa, - 0x10, 0xbd, 0xa0, 0x6a, 0x01, 0x00, 0x7c, 0xb5, - 0x04, 0x1c, 0x60, 0x30, 0x02, 0x7b, 0xa1, 0x69, - 0x00, 0x91, 0x3c, 0x00, 0xac, 0xda, 0x00, 0x00, - 0x01, 0x92, 0x22, 0x1c, 0x21, 0x1c, 0x38, 0x31, - 0xa0, 0x68, 0x48, 0x32, 0x0d, 0x1c, 0x63, 0x69, - 0x03, 0xf0, 0x7a, 0xfb, 0x08, 0x21, 0x00, 0x20, - 0xf3, 0xf7, 0x88, 0xfd, 0xe0, 0x60, 0x26, 0x69, - 0xb1, 0x6b, 0x00, 0x29, 0x01, 0xd0, 0x10, 0x23, - 0x00, 0xe0, 0x18, 0x23, 0x05, 0x49, 0x01, 0x94, - 0x00, 0x91, 0x31, 0x68, 0xca, 0x18, 0x08, 0x23, - 0x01, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0xe8, 0xda, - 0x00, 0x00, 0xf8, 0xf7, 0x20, 0xfd, 0x7c, 0xbd, - 0x00, 0x00, 0x81, 0xda, 0x00, 0x00, 0xf0, 0xb5, - 0x46, 0x68, 0x17, 0x1c, 0x04, 0x1c, 0x01, 0x21, - 0x30, 0x1c, 0x9b, 0xb0, 0xfa, 0xf7, 0x0d, 0xfc, - 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0, 0x13, 0x49, - 0x0a, 0x7a, 0x01, 0x2a, 0x01, 0xd1, 0x01, 0x25, - 0x1c, 0xe0, 0x88, 0x62, 0x4e, 0x61, 0x20, 0x89, - 0xc8, 0x61, 0x60, 0x89, 0x00, 0x28, 0x3c, 0x00, - 0x24, 0xdb, 0x00, 0x00, 0x03, 0xd0, 0x00, 0x20, - 0x08, 0x84, 0x48, 0x84, 0x04, 0xe0, 0xe0, 0x68, - 0x08, 0x84, 0x20, 0x8a, 0x48, 0x84, 0x60, 0x8a, - 0x88, 0x84, 0x08, 0x6b, 0x00, 0x28, 0x03, 0xd1, - 0x01, 0xa8, 0x03, 0xf0, 0x77, 0xfc, 0x04, 0xe0, - 0x01, 0x20, 0x08, 0x61, 0x00, 0x20, 0x02, 0xf0, - 0x39, 0xfb, 0x3d, 0x71, 0x1b, 0xb0, 0x01, 0x20, - 0xf0, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00, - 0x3c, 0x00, 0x60, 0xdb, 0x00, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0xf7, 0xf7, 0xe8, 0xfb, 0x00, 0x28, - 0x11, 0xd1, 0x4b, 0x20, 0x00, 0x5d, 0x01, 0x28, - 0x0d, 0xd1, 0x20, 0x1c, 0x04, 0xf0, 0x85, 0xfa, - 0x00, 0x21, 0x20, 0x1c, 0x04, 0xf0, 0xf3, 0xf8, - 0xa0, 0x69, 0x00, 0x21, 0xc2, 0x07, 0xd2, 0x0f, - 0x04, 0x20, 0xf4, 0xf7, 0xd8, 0xf9, 0x10, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x04, 0xf0, - 0x36, 0xf9, 0x3c, 0x00, 0x9c, 0xdb, 0x00, 0x00, - 0x00, 0x28, 0x03, 0xd0, 0x40, 0x30, 0x80, 0x7a, - 0x00, 0x28, 0x25, 0xd1, 0x0c, 0x20, 0x29, 0x21, - 0x08, 0x55, 0x21, 0x1c, 0x06, 0x22, 0xa0, 0x18, - 0xf2, 0xf7, 0xa0, 0xfc, 0x20, 0x1c, 0x06, 0x22, - 0x0e, 0x49, 0xf2, 0xf7, 0x9b, 0xfc, 0x01, 0x20, - 0xe0, 0x61, 0x60, 0x62, 0x07, 0x20, 0x30, 0x21, - 0x08, 0x55, 0x00, 0x25, 0xe5, 0x63, 0x06, 0x20, - 0x00, 0xab, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0xdb, - 0x00, 0x00, 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0xf3, 0xf7, 0xdb, 0xfc, 0x02, 0x21, 0x68, 0x46, - 0xfd, 0xf7, 0x73, 0xfb, 0xe0, 0x60, 0x20, 0x1c, - 0xff, 0xf7, 0x69, 0xfc, 0xe5, 0x60, 0x20, 0x1c, - 0x38, 0xbd, 0x12, 0x61, 0x01, 0x00, 0xfe, 0xb5, - 0x05, 0x1c, 0x0e, 0x1c, 0x15, 0x20, 0x00, 0xab, - 0x98, 0x80, 0x14, 0x21, 0x17, 0x1c, 0x00, 0x20, - 0xf3, 0xf7, 0xe3, 0xfc, 0x02, 0x90, 0x3c, 0x00, - 0x14, 0xdc, 0x00, 0x00, 0x04, 0x68, 0x06, 0x22, - 0x31, 0x1c, 0x60, 0x1d, 0x25, 0x71, 0xf2, 0xf7, - 0x6b, 0xfc, 0x06, 0x22, 0x39, 0x1c, 0x20, 0x1c, - 0x0b, 0x30, 0xf2, 0xf7, 0x65, 0xfc, 0x01, 0xa8, - 0xff, 0xf7, 0x52, 0xfc, 0xfe, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0xfb, 0xf7, 0x5c, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, - 0x08, 0x35, 0x0f, 0x4e, 0x29, 0x1c, 0x04, 0x1c, - 0x3c, 0x00, 0x50, 0xdc, 0x00, 0x00, 0x06, 0x22, - 0x30, 0x1c, 0xf2, 0xf7, 0x50, 0xfc, 0xa0, 0x88, - 0xb0, 0x82, 0x28, 0x1c, 0x05, 0xf0, 0xa1, 0xff, - 0x00, 0x28, 0x0b, 0xd0, 0xe0, 0x88, 0x30, 0x61, - 0x28, 0x1c, 0x04, 0xf0, 0xcc, 0xf8, 0xa1, 0x88, - 0x40, 0x30, 0x41, 0x80, 0x00, 0x20, 0xf4, 0xf7, - 0xb8, 0xf9, 0x02, 0xe0, 0x04, 0x20, 0xf4, 0xf7, - 0xa0, 0xf9, 0x00, 0x20, 0x70, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xdc, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xfb, 0xf7, 0xf8, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x04, 0x1c, - 0x04, 0x30, 0x05, 0x1c, 0xfd, 0xf7, 0x32, 0xf8, - 0x00, 0x28, 0x09, 0xd0, 0x00, 0x20, 0xf7, 0xf7, - 0x37, 0xfc, 0x00, 0x28, 0x04, 0xd0, 0x06, 0x22, - 0x01, 0x1c, 0x28, 0x1c, 0xf2, 0xf7, 0x1e, 0xfc, - 0x0a, 0x4e, 0x06, 0x22, 0x29, 0x1c, 0x30, 0x1c, - 0xf2, 0xf7, 0x18, 0xfc, 0x3c, 0x00, 0xc8, 0xdc, - 0x00, 0x00, 0x60, 0x89, 0xf0, 0x82, 0x28, 0x1c, - 0x05, 0xf0, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0, - 0x02, 0x20, 0xf4, 0xf7, 0x88, 0xf9, 0x02, 0xe0, - 0x05, 0x20, 0xf9, 0xf7, 0xf4, 0xfa, 0x00, 0x20, - 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x00, 0x79, 0x04, 0x28, 0x1c, 0xd2, - 0x60, 0x79, 0x01, 0x28, 0x01, 0xd0, 0x03, 0x28, - 0x04, 0xd1, 0x00, 0x22, 0x01, 0x21, 0x3c, 0x00, - 0x04, 0xdd, 0x00, 0x00, 0xa0, 0x1d, 0xf9, 0xf7, - 0x69, 0xfc, 0x60, 0x79, 0x00, 0x28, 0x04, 0xd1, - 0x22, 0x79, 0x00, 0x21, 0xf9, 0xf7, 0x62, 0xfc, - 0x0a, 0xe0, 0x03, 0x28, 0x08, 0xd1, 0x00, 0x24, - 0x22, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7, - 0x59, 0xfc, 0x01, 0x34, 0x04, 0x2c, 0xf7, 0xdb, - 0x01, 0x20, 0x10, 0xbd, 0xf0, 0xb5, 0x97, 0xb0, - 0x17, 0x1c, 0x05, 0x1c, 0x04, 0x30, 0x04, 0x1c, - 0x3c, 0x00, 0x40, 0xdd, 0x00, 0x00, 0x15, 0xaa, - 0x16, 0xa9, 0x05, 0xf0, 0xe2, 0xfe, 0x00, 0x28, - 0x2e, 0xd0, 0x15, 0x98, 0x4b, 0x21, 0x09, 0x5c, - 0x00, 0x29, 0x23, 0xd0, 0x01, 0x29, 0x02, 0xd0, - 0x02, 0x29, 0x1f, 0xd1, 0x01, 0xe0, 0x04, 0xf0, - 0x90, 0xf9, 0xad, 0x7a, 0x13, 0x48, 0x16, 0x9e, - 0x05, 0x80, 0x06, 0x22, 0x21, 0x1c, 0x08, 0x30, - 0xf2, 0xf7, 0xc1, 0xfb, 0x22, 0x1c, 0x31, 0x1c, - 0x02, 0xa8, 0x3c, 0x00, 0x7c, 0xdd, 0x00, 0x00, - 0x00, 0xf0, 0x74, 0xfb, 0x0a, 0x20, 0x0a, 0xa9, - 0x48, 0x72, 0x00, 0xab, 0x9d, 0x80, 0x02, 0x21, - 0x01, 0xa8, 0xfd, 0xf7, 0x9f, 0xfa, 0x05, 0x90, - 0x02, 0xa8, 0xff, 0xf7, 0x95, 0xfb, 0xf3, 0xf7, - 0xf7, 0xf9, 0x00, 0x21, 0x15, 0x98, 0x03, 0xf0, - 0xe1, 0xff, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0x38, 0x71, 0x17, 0xb0, 0x01, 0x20, 0xf0, 0xbd, - 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0xb8, 0xdd, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xfb, 0xf7, - 0x62, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x80, 0x7d, 0x15, 0x1c, 0x0a, 0x1c, - 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0x21, 0x1c, - 0xf9, 0xf7, 0xfb, 0xfc, 0x00, 0x28, 0x03, 0xd1, - 0x04, 0x20, 0x28, 0x71, 0x01, 0x20, 0xb0, 0xbd, - 0x20, 0x6a, 0xf7, 0xf7, 0x76, 0xfe, 0x60, 0x6a, - 0xf7, 0xf7, 0x7b, 0xfe, 0x20, 0x6a, 0x3c, 0x00, - 0xf4, 0xdd, 0x00, 0x00, 0xfe, 0xf7, 0x88, 0xfa, - 0x00, 0x20, 0xb0, 0xbd, 0x10, 0xb5, 0x14, 0x1c, - 0xc2, 0x79, 0x81, 0x79, 0x80, 0x88, 0xf7, 0xf7, - 0xa1, 0xfa, 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd, - 0x80, 0xb5, 0x01, 0x23, 0xfa, 0xf7, 0x70, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0xf0, 0xb5, 0x04, 0x1c, - 0x08, 0x1c, 0x00, 0x21, 0x0f, 0x28, 0x91, 0xb0, - 0x00, 0xd3, 0x02, 0x21, 0x00, 0x29, 0x41, 0xd1, - 0x3c, 0x00, 0x30, 0xde, 0x00, 0x00, 0xc0, 0x00, - 0x24, 0x4f, 0x10, 0x90, 0xc6, 0x19, 0xb2, 0x88, - 0x21, 0x68, 0x02, 0xa8, 0xf2, 0xf7, 0x5b, 0xfb, - 0x21, 0x89, 0xb0, 0x88, 0x09, 0x1a, 0x00, 0x29, - 0x07, 0xdd, 0x09, 0x04, 0x22, 0x68, 0x09, 0x0c, - 0x10, 0x18, 0xf3, 0xf7, 0xc0, 0xfb, 0x05, 0x1c, - 0x00, 0xe0, 0x00, 0x25, 0xb0, 0x79, 0x80, 0x21, - 0x88, 0x43, 0x17, 0x49, 0x78, 0x31, 0x09, 0x5c, - 0x00, 0x20, 0x3c, 0x00, 0x6c, 0xde, 0x00, 0x00, - 0xf3, 0xf7, 0xb4, 0xfb, 0x07, 0x1c, 0x00, 0x68, - 0x13, 0x49, 0x01, 0x90, 0x10, 0x98, 0x0b, 0x58, - 0x01, 0x9a, 0x29, 0x1c, 0x02, 0xa8, 0xf2, 0xf7, - 0xac, 0xfa, 0x00, 0x90, 0x28, 0x1c, 0xf3, 0xf7, - 0x73, 0xfb, 0x20, 0x1c, 0xf3, 0xf7, 0x82, 0xfb, - 0x00, 0x98, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x98, - 0x01, 0x99, 0x08, 0x60, 0xb0, 0x79, 0x39, 0x1c, - 0xfa, 0xf7, 0x20, 0xff, 0x3c, 0x00, 0xa8, 0xde, - 0x00, 0x00, 0x11, 0xb0, 0xf0, 0xbd, 0x38, 0x1c, - 0xf3, 0xf7, 0x61, 0xfb, 0xf9, 0xe7, 0x2d, 0x20, - 0xf3, 0xf7, 0xf5, 0xf9, 0x20, 0x1c, 0xf3, 0xf7, - 0x6c, 0xfb, 0xf2, 0xe7, 0x00, 0x00, 0x24, 0x44, - 0x01, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x20, 0x35, - 0x06, 0x1c, 0xa8, 0x79, 0x04, 0x28, 0x48, 0xd2, - 0xe9, 0x79, 0x01, 0x29, 0x13, 0xd1, 0x30, 0x1c, - 0x28, 0x30, 0x03, 0xf0, 0x92, 0xff, 0x3c, 0x00, - 0xe4, 0xde, 0x00, 0x00, 0x00, 0x28, 0x3f, 0xd0, - 0x01, 0x1c, 0x8c, 0x31, 0x01, 0x65, 0xa9, 0x79, - 0x4c, 0x22, 0x04, 0x1c, 0x11, 0x54, 0x81, 0x18, - 0x41, 0x62, 0x50, 0x34, 0x04, 0x62, 0xe1, 0x1e, - 0x81, 0x62, 0x0b, 0xe0, 0x00, 0x29, 0x2f, 0xd1, - 0x3c, 0x22, 0x18, 0x49, 0x42, 0x43, 0x54, 0x18, - 0x17, 0x4a, 0x04, 0x34, 0x12, 0x68, 0x00, 0x2a, - 0x00, 0xd1, 0x48, 0x70, 0x00, 0x2c, 0x23, 0xd0, - 0x3c, 0x00, 0x20, 0xdf, 0x00, 0x00, 0x35, 0x1c, - 0x30, 0x35, 0xe8, 0x79, 0x01, 0x28, 0x01, 0xd0, - 0x05, 0x28, 0x01, 0xd1, 0x06, 0x20, 0xe8, 0x71, - 0x20, 0x22, 0x31, 0x1d, 0x20, 0x68, 0xf2, 0xf7, - 0xde, 0xfa, 0xb0, 0x8c, 0xa0, 0x80, 0xe8, 0x79, - 0xa0, 0x71, 0xa8, 0x79, 0x00, 0x25, 0xa0, 0x63, - 0x01, 0x20, 0x60, 0x81, 0x00, 0x20, 0xe0, 0x60, - 0x2e, 0x36, 0xe8, 0x00, 0x00, 0x19, 0x18, 0x30, - 0x08, 0x22, 0x3c, 0x00, 0x5c, 0xdf, 0x00, 0x00, - 0x31, 0x1c, 0xf2, 0xf7, 0xcb, 0xfa, 0x01, 0x35, - 0x04, 0x2d, 0xf5, 0xd3, 0x01, 0x20, 0x70, 0xbd, - 0x68, 0x61, 0x01, 0x00, 0xdc, 0x62, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x7a, 0x01, 0x28, - 0x01, 0xd0, 0x03, 0x28, 0x07, 0xd1, 0x20, 0x1d, - 0x03, 0xf0, 0x40, 0xff, 0x00, 0x28, 0x02, 0xd0, - 0xa1, 0x7a, 0x40, 0x30, 0x41, 0x73, 0xe0, 0x7a, - 0x00, 0x28, 0x01, 0xd0, 0x3c, 0x00, 0x98, 0xdf, - 0x00, 0x00, 0x03, 0x28, 0x02, 0xd1, 0xa0, 0x7a, - 0x02, 0x49, 0x08, 0x70, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x1c, 0x03, 0x21, 0x04, 0x1c, 0x30, 0x1c, - 0xfc, 0xf7, 0xe1, 0xfb, 0x00, 0x28, 0x01, 0xd0, - 0x85, 0x78, 0x00, 0xe0, 0x00, 0x25, 0x0b, 0x48, - 0x32, 0x1c, 0x00, 0x68, 0x03, 0x68, 0x20, 0x7c, - 0x80, 0x07, 0xc0, 0x0f, 0x21, 0x1c, 0x3c, 0x00, - 0xd4, 0xdf, 0x00, 0x00, 0xf7, 0xf7, 0x62, 0xfe, - 0x00, 0x28, 0x05, 0xd0, 0x01, 0x21, 0x28, 0x1c, - 0xfd, 0xf7, 0xfe, 0xfb, 0x00, 0x20, 0x00, 0xe0, - 0x08, 0x20, 0x03, 0xf0, 0xc5, 0xff, 0x00, 0x20, - 0x70, 0xbd, 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, - 0x80, 0xb5, 0x42, 0x68, 0x00, 0x88, 0x01, 0x21, - 0x49, 0x06, 0x08, 0x43, 0x2d, 0x21, 0x05, 0xf0, - 0xd3, 0xfb, 0x80, 0xbd, 0x03, 0x49, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x49, 0x78, - 0x02, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x8c, 0xb5, - 0x01, 0x28, 0x1f, 0xd1, 0x00, 0x29, 0x0d, 0xd0, - 0x01, 0x29, 0x0b, 0xd0, 0x02, 0x29, 0x01, 0xd0, - 0x03, 0x29, 0x16, 0xd1, 0x00, 0x20, 0xf9, 0xf7, - 0x14, 0xfc, 0x93, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x00, 0x20, 0x08, 0xe0, 0x01, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x3c, 0x00, 0x4c, 0xe0, 0x00, 0x00, - 0xf9, 0xf7, 0x0a, 0xfc, 0x83, 0x20, 0x00, 0xab, - 0x18, 0x80, 0x02, 0x20, 0x00, 0xf0, 0xcc, 0xf8, - 0x01, 0x90, 0x68, 0x46, 0xff, 0xf7, 0x3a, 0xfa, - 0x8c, 0xbd, 0x01, 0x21, 0x0e, 0x20, 0xf3, 0xf7, - 0x1b, 0xf9, 0xf9, 0xe7, 0xff, 0xb5, 0x17, 0x1c, - 0x1e, 0x1c, 0x14, 0x21, 0x00, 0x20, 0x83, 0xb0, - 0xf3, 0xf7, 0xac, 0xfa, 0x05, 0x1c, 0x04, 0x68, - 0x12, 0x20, 0x00, 0xab, 0x3c, 0x00, 0x88, 0xe0, - 0x00, 0x00, 0x98, 0x80, 0x06, 0x22, 0x60, 0x1d, - 0x03, 0x99, 0xf2, 0xf7, 0x32, 0xfa, 0x00, 0x20, - 0x20, 0x71, 0x27, 0x73, 0x04, 0x99, 0x20, 0x1c, - 0xe1, 0x72, 0x31, 0x1c, 0x06, 0x22, 0x0d, 0x30, - 0xf2, 0xf7, 0x27, 0xfa, 0x02, 0x95, 0x01, 0xa8, - 0xff, 0xf7, 0x13, 0xfa, 0x07, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0f, 0x1c, - 0x0c, 0x21, 0x00, 0x20, 0xf3, 0xf7, 0x3c, 0x00, - 0xc4, 0xe0, 0x00, 0x00, 0x89, 0xfa, 0x05, 0x68, - 0x04, 0x1c, 0x28, 0x1d, 0x06, 0x22, 0x31, 0x1c, - 0xf2, 0xf7, 0x12, 0xfa, 0x6f, 0x81, 0x20, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf3, 0xf7, - 0x77, 0xfa, 0x01, 0x68, 0x8c, 0x71, 0x8d, 0x80, - 0xb0, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x0e, 0x1c, - 0x10, 0x21, 0x17, 0x1c, 0x00, 0x20, 0xf3, 0xf7, - 0x3c, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x6b, 0xfa, - 0x04, 0x68, 0x05, 0x1c, 0x20, 0x1d, 0x06, 0x22, - 0x00, 0x99, 0xf2, 0xf7, 0xf4, 0xf9, 0x66, 0x81, - 0xa7, 0x81, 0x28, 0x1c, 0xfe, 0xbd, 0xf3, 0xb5, - 0x0c, 0x1c, 0x08, 0x21, 0x00, 0x20, 0x85, 0xb0, - 0xf3, 0xf7, 0x59, 0xfa, 0x06, 0x1c, 0x07, 0x68, - 0xe0, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x05, 0x99, - 0x01, 0x29, 0x04, 0xd1, 0x05, 0x98, 0x38, 0x71, - 0x00, 0x20, 0x3c, 0x00, 0x3c, 0xe1, 0x00, 0x00, - 0x78, 0x71, 0x56, 0xe0, 0x03, 0x68, 0x01, 0x21, - 0x03, 0x93, 0x20, 0x69, 0x02, 0x90, 0xfc, 0xf7, - 0x17, 0xfb, 0x05, 0x1c, 0x02, 0x98, 0x32, 0x21, - 0xfc, 0xf7, 0x12, 0xfb, 0x00, 0x22, 0xd2, 0x43, - 0x01, 0x1c, 0x28, 0x1c, 0x04, 0xab, 0xf7, 0xf7, - 0xb9, 0xf8, 0x00, 0x28, 0x04, 0xd1, 0x30, 0x1c, - 0xf3, 0xf7, 0x02, 0xfa, 0x00, 0x26, 0x3c, 0xe0, - 0x00, 0x2d, 0x05, 0xd0, 0x3c, 0x00, 0x78, 0xe1, - 0x00, 0x00, 0x68, 0x78, 0x09, 0x38, 0x07, 0x28, - 0x01, 0xd8, 0x32, 0x20, 0x28, 0x70, 0x1c, 0x21, - 0x00, 0x20, 0xf3, 0xf7, 0x26, 0xfa, 0x01, 0x90, - 0x05, 0x68, 0x01, 0x1c, 0x30, 0x1c, 0xf3, 0xf7, - 0x40, 0xf9, 0xe0, 0x68, 0xf3, 0xf7, 0x0b, 0xfa, - 0xa8, 0x61, 0xe1, 0x68, 0x01, 0x98, 0xf3, 0xf7, - 0x38, 0xf9, 0x00, 0x20, 0xe0, 0x60, 0x05, 0x98, - 0x80, 0x21, 0x08, 0x43, 0x38, 0x71, 0x3c, 0x00, - 0xb4, 0xe1, 0x00, 0x00, 0x01, 0x20, 0x21, 0x1c, - 0x14, 0x31, 0x78, 0x71, 0x28, 0x1c, 0x06, 0x22, - 0xf2, 0xf7, 0x9a, 0xf9, 0x02, 0x9a, 0x29, 0x20, - 0x00, 0x92, 0x00, 0x5d, 0x01, 0x21, 0xe2, 0x6a, - 0x08, 0x28, 0x00, 0xd0, 0x00, 0x21, 0x28, 0x1c, - 0x03, 0x9b, 0x02, 0xf0, 0x9d, 0xff, 0xa0, 0x6b, - 0x28, 0x61, 0x20, 0x6c, 0x68, 0x61, 0x7f, 0x30, - 0x01, 0xd1, 0x0f, 0x20, 0x68, 0x61, 0x30, 0x1c, - 0x3c, 0x00, 0xf0, 0xe1, 0x00, 0x00, 0x07, 0xb0, - 0xf0, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x08, 0x21, - 0x00, 0x20, 0xf3, 0xf7, 0xec, 0xf9, 0x01, 0x68, - 0x0c, 0x71, 0x10, 0xbd, 0x00, 0x00, 0x01, 0x48, - 0x00, 0x68, 0x70, 0x47, 0x00, 0x00, 0x28, 0x61, - 0x01, 0x00, 0x01, 0x49, 0x08, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x1c, - 0x01, 0x20, 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5, - 0x2d, 0x21, 0x3c, 0x00, 0x2c, 0xe2, 0x00, 0x00, - 0x05, 0xf0, 0xc0, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x01, 0x28, 0x07, 0xd0, 0xf1, 0x28, - 0x25, 0xd0, 0xf3, 0x28, 0x27, 0xd1, 0x02, 0x20, - 0x02, 0xf0, 0xbc, 0xf9, 0x80, 0xbd, 0x00, 0x29, - 0x1a, 0xd0, 0x01, 0x29, 0x03, 0xd0, 0xf2, 0x29, - 0xf8, 0xd1, 0x88, 0x21, 0x1c, 0xe0, 0x10, 0x48, - 0x01, 0x78, 0x00, 0x29, 0x05, 0xd1, 0x40, 0x78, - 0x01, 0x28, 0xef, 0xd1, 0x3c, 0x00, 0x68, 0xe2, - 0x00, 0x00, 0x00, 0xf0, 0x16, 0xfa, 0x80, 0xbd, - 0x0b, 0x48, 0x14, 0x30, 0x00, 0x89, 0xfc, 0xf7, - 0x5a, 0xfc, 0x01, 0x1c, 0x01, 0x22, 0x0f, 0x20, - 0x05, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x04, 0xf0, - 0x52, 0xfa, 0x80, 0xbd, 0x00, 0x20, 0xfa, 0xf7, - 0x32, 0xfe, 0x80, 0xbd, 0x02, 0x21, 0x0f, 0x20, - 0xf3, 0xf7, 0x05, 0xf8, 0x80, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0x01, 0x48, 0x00, 0x78, 0x3c, 0x00, - 0xa4, 0xe2, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x74, 0x66, 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, - 0x48, 0x60, 0x70, 0x47, 0xec, 0x65, 0x01, 0x00, - 0xf8, 0xb5, 0x0e, 0x1c, 0x13, 0x4d, 0x01, 0x1c, - 0x14, 0x1c, 0x68, 0x22, 0x28, 0x1c, 0x1f, 0x1c, - 0x0c, 0x30, 0xf2, 0xf7, 0x71, 0xf9, 0x0f, 0x49, - 0x00, 0x20, 0xac, 0x39, 0x48, 0x60, 0x01, 0x21, - 0x29, 0x60, 0x19, 0x21, 0x19, 0x2c, 0x6e, 0x67, - 0x3c, 0x00, 0xe0, 0xe2, 0x00, 0x00, 0x00, 0xd3, - 0x21, 0x1c, 0x29, 0x81, 0x09, 0x49, 0x14, 0x39, - 0x88, 0x73, 0x8f, 0x74, 0xc8, 0x78, 0x01, 0x28, - 0x08, 0xd0, 0x01, 0x21, 0x0f, 0x20, 0x05, 0xf0, - 0x9c, 0xf9, 0x19, 0x20, 0xfc, 0xf7, 0x15, 0xfc, - 0xfb, 0xf7, 0x99, 0xf8, 0x01, 0x20, 0xf8, 0xbd, - 0x00, 0x00, 0x98, 0x66, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x02, 0xd1, 0x00, 0xf0, 0x2f, 0xf8, - 0x80, 0xbd, 0x3c, 0x00, 0x1c, 0xe3, 0x00, 0x00, - 0x01, 0x21, 0x1d, 0x20, 0xf2, 0xf7, 0xc0, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x01, 0x20, 0x07, 0x49, 0x00, 0x05, 0x80, 0xb5, - 0x88, 0x60, 0x00, 0x22, 0x80, 0x21, 0x16, 0x20, - 0x05, 0xf0, 0x4c, 0xf9, 0x04, 0xf0, 0x34, 0xfd, - 0x02, 0x49, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x24, 0x6d, 0x01, 0x00, - 0x06, 0x4a, 0x80, 0xb5, 0x3c, 0x00, 0x58, 0xe3, - 0x00, 0x00, 0xd1, 0x6a, 0x81, 0x42, 0x07, 0xd1, - 0x10, 0x7f, 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, - 0x40, 0x18, 0xc0, 0x68, 0xf2, 0xf7, 0x35, 0xf8, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, - 0x01, 0x00, 0x1d, 0x48, 0x1c, 0xb5, 0x00, 0x78, - 0x00, 0x28, 0x2d, 0xd0, 0x1c, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x29, 0xd0, 0x1a, 0x4a, 0x1a, 0x4b, - 0x04, 0x32, 0x11, 0x68, 0x1c, 0x69, 0x3c, 0x00, - 0x94, 0xe3, 0x00, 0x00, 0xa1, 0x42, 0x22, 0xd1, - 0x51, 0x68, 0x5b, 0x69, 0x99, 0x42, 0x1f, 0xd1, - 0x16, 0x49, 0x49, 0x68, 0x93, 0x68, 0xc9, 0x1a, - 0x81, 0x42, 0x19, 0xd2, 0xd0, 0x68, 0x14, 0x49, - 0x01, 0x30, 0xd0, 0x60, 0x09, 0x68, 0x88, 0x42, - 0x0c, 0xd9, 0x06, 0x22, 0xff, 0x21, 0x68, 0x46, - 0xf2, 0xf7, 0x2e, 0xf9, 0xf3, 0xf7, 0xac, 0xfc, - 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22, 0x68, 0x46, - 0x3c, 0x00, 0xd0, 0xe3, 0x00, 0x00, 0x02, 0xf0, - 0xce, 0xf9, 0x01, 0x22, 0x1d, 0x20, 0x0a, 0x49, - 0x05, 0xf0, 0xf7, 0xf8, 0x1c, 0xbd, 0xf7, 0xf7, - 0x88, 0xf9, 0x04, 0x22, 0x81, 0x18, 0x08, 0x1c, - 0xfc, 0xf7, 0x27, 0xfb, 0xf6, 0xe7, 0x1c, 0x75, - 0x01, 0x00, 0x44, 0x75, 0x01, 0x00, 0x28, 0x61, - 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0xf0, 0x59, - 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x68, 0x3c, 0x00, 0x0c, 0xe4, 0x00, 0x00, - 0x00, 0x29, 0x15, 0xd1, 0x00, 0x79, 0x02, 0x28, - 0x12, 0xd1, 0x08, 0x1c, 0xf7, 0xf7, 0x80, 0xf8, - 0x00, 0x28, 0x0d, 0xd0, 0x03, 0xf0, 0xf2, 0xfc, - 0x08, 0x30, 0x41, 0x8f, 0x00, 0x29, 0x07, 0xd1, - 0x80, 0x69, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd1, 0xfc, 0xf7, 0x18, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49, 0x00, 0x20, - 0x88, 0x62, 0x70, 0x47, 0x3c, 0x00, 0x48, 0xe4, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x05, 0x4d, 0x04, 0x1c, 0xa9, 0x1d, 0xff, 0xf7, - 0x14, 0xf8, 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18, - 0xf2, 0xf7, 0x4b, 0xf8, 0xb0, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x15, 0x1c, - 0xff, 0xf7, 0x07, 0xf8, 0x06, 0x22, 0x29, 0x1c, - 0xa0, 0x18, 0xf2, 0xf7, 0x3e, 0xf8, 0xb0, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x0a, 0x30, 0x3c, 0x00, - 0x84, 0xe4, 0x00, 0x00, 0xf7, 0xf7, 0xbc, 0xf9, - 0x01, 0x23, 0x00, 0x28, 0x03, 0xd0, 0x05, 0x48, - 0x00, 0x78, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x22, - 0x00, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xc6, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x03, 0xf0, 0xbb, 0xfd, 0x80, 0xbd, - 0xb0, 0xb5, 0x05, 0x4d, 0xac, 0x79, 0x0a, 0x1c, - 0x3c, 0x00, 0xc0, 0xe4, 0x00, 0x00, 0x01, 0x1c, - 0x01, 0x23, 0x01, 0x20, 0x03, 0xf0, 0xb1, 0xfd, - 0xac, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x1c, - 0x88, 0x07, 0x02, 0xd5, 0xf6, 0xf7, 0x47, 0xfa, - 0x10, 0xe0, 0x60, 0x07, 0x0e, 0xd5, 0x17, 0x4f, - 0xa3, 0x20, 0xc0, 0x5d, 0x15, 0x4d, 0x10, 0x28, - 0x00, 0xd3, 0x15, 0x4d, 0x04, 0xf0, 0x59, 0xfc, - 0xb9, 0x6f, 0x3c, 0x00, 0xfc, 0xe4, 0x00, 0x00, - 0x40, 0x1a, 0x29, 0x1a, 0x01, 0x20, 0xf6, 0xf7, - 0xc1, 0xfa, 0xe0, 0x07, 0x11, 0x49, 0xc0, 0x0f, - 0x48, 0x60, 0x0c, 0xd0, 0x0d, 0x4c, 0x44, 0x3c, - 0x20, 0x78, 0x03, 0x28, 0x0f, 0xd1, 0x00, 0x2e, - 0x06, 0xd0, 0xf6, 0xf7, 0xf9, 0xf9, 0x01, 0x1c, - 0x01, 0x20, 0xf6, 0xf7, 0xaf, 0xfa, 0xf8, 0xbd, - 0x09, 0x49, 0x01, 0x20, 0xf6, 0xf7, 0xaa, 0xfa, - 0x01, 0x20, 0x20, 0x70, 0x3c, 0x00, 0x38, 0xe5, - 0x00, 0x00, 0xf7, 0xe7, 0x01, 0x21, 0x30, 0x1c, - 0xf6, 0xf7, 0x89, 0xfa, 0xf2, 0xe7, 0xa6, 0x0e, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0xc4, 0x09, - 0x00, 0x00, 0xb0, 0x57, 0x01, 0x00, 0x40, 0x42, - 0x0f, 0x00, 0x80, 0xb5, 0x06, 0x28, 0x04, 0xdb, - 0x05, 0x21, 0xff, 0x20, 0xf2, 0xf7, 0x9f, 0xfe, - 0x80, 0xbd, 0x03, 0x4a, 0xc0, 0x00, 0x11, 0x50, - 0x01, 0x21, 0x80, 0x18, 0x01, 0x71, 0x3c, 0x00, - 0x74, 0xe5, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x9c, 0x5a, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00, - 0xb0, 0xb5, 0x08, 0x4c, 0x25, 0x1d, 0x28, 0x1c, - 0x21, 0x68, 0x00, 0xf0, 0xf1, 0xfe, 0x00, 0x28, - 0x03, 0xd1, 0x01, 0x21, 0x04, 0x48, 0xf2, 0xf7, - 0xcf, 0xfa, 0x28, 0x1c, 0x21, 0x68, 0x00, 0xf0, - 0xfb, 0xfe, 0xb0, 0xbd, 0xc0, 0x60, 0x01, 0x00, - 0x3c, 0x00, 0xb0, 0xe5, 0x00, 0x00, 0x2c, 0x10, - 0x07, 0x00, 0xb0, 0xb5, 0x10, 0x4d, 0x0c, 0x1c, - 0xa8, 0x68, 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0, - 0xf4, 0xfb, 0x28, 0x60, 0x20, 0x1c, 0x04, 0xf0, - 0x38, 0xfb, 0x01, 0x21, 0x03, 0x20, 0x03, 0xf0, - 0xc4, 0xfe, 0x04, 0xf0, 0xf0, 0xfb, 0xa8, 0x68, - 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0, 0xe5, 0xfb, - 0x29, 0x68, 0x00, 0x1b, 0x40, 0x1a, 0x69, 0x68, - 0x40, 0x18, 0x3c, 0x00, 0xec, 0xe5, 0x00, 0x00, - 0x41, 0x08, 0x40, 0x18, 0x28, 0x60, 0x01, 0x20, - 0xa8, 0x60, 0xb0, 0xbd, 0xd0, 0x60, 0x01, 0x00, - 0xf8, 0xb5, 0x1f, 0x4e, 0x00, 0x24, 0xb0, 0x68, - 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0, 0xd0, 0xfb, - 0x70, 0x60, 0x05, 0xf0, 0x61, 0xf8, 0x04, 0xf0, - 0x8f, 0xfb, 0x05, 0x1c, 0xf9, 0xf7, 0x66, 0xfe, - 0x31, 0x68, 0x18, 0x4a, 0x41, 0x18, 0x12, 0x68, - 0xe8, 0x0b, 0x00, 0x2a, 0x3c, 0x00, 0x28, 0xe6, - 0x00, 0x00, 0x00, 0xd1, 0xa8, 0x0a, 0x40, 0x18, - 0x85, 0x42, 0x1f, 0xd9, 0x14, 0x4f, 0x2d, 0x1a, - 0x38, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab, - 0x19, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x05, 0xf0, - 0x6e, 0xf8, 0x00, 0x28, 0x03, 0xd1, 0x02, 0x21, - 0x8f, 0x20, 0xf2, 0xf7, 0x28, 0xfe, 0x29, 0x1c, - 0x0c, 0x48, 0xf2, 0x68, 0xf8, 0xf7, 0x09, 0xfc, - 0x00, 0x28, 0x04, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0x64, 0xe6, 0x00, 0x00, 0x28, 0x1c, 0xff, 0xf7, - 0xa5, 0xff, 0x01, 0x24, 0x00, 0xab, 0x18, 0x88, - 0xf8, 0x84, 0x05, 0xf0, 0x47, 0xf8, 0x20, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00, - 0xf4, 0x74, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x89, 0x13, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0xc8, 0x60, 0x70, 0x47, 0xd0, 0x60, 0x01, 0x00, - 0x06, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0x28, - 0x3c, 0x00, 0xa0, 0xe6, 0x00, 0x00, 0x07, 0xd1, - 0x04, 0x48, 0xac, 0x38, 0x01, 0x69, 0x03, 0x48, - 0x00, 0xf0, 0x79, 0xfe, 0xf3, 0xf7, 0x2b, 0xfa, - 0x80, 0xbd, 0x98, 0x66, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x80, 0xb5, 0x42, 0x78, 0x81, 0x68, - 0x00, 0x79, 0x03, 0xf0, 0xde, 0xff, 0x00, 0x28, - 0x01, 0xd1, 0xf5, 0xf7, 0xb6, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x1f, 0xb5, 0x04, 0xf0, 0x69, 0xfb, - 0xf6, 0xf7, 0x3c, 0x00, 0xdc, 0xe6, 0x00, 0x00, - 0x91, 0xff, 0x16, 0x4c, 0x02, 0x28, 0x03, 0xd1, - 0xff, 0xf7, 0xdc, 0xfd, 0x04, 0x28, 0x02, 0xd3, - 0x00, 0x20, 0x20, 0x70, 0x1f, 0xbd, 0xfb, 0xf7, - 0xf7, 0xfc, 0x00, 0x28, 0xfa, 0xd1, 0x60, 0x6a, - 0x00, 0x28, 0xf7, 0xd0, 0x20, 0x78, 0x80, 0x07, - 0xf4, 0xd4, 0x09, 0x21, 0x16, 0x20, 0x04, 0xf0, - 0x93, 0xff, 0x01, 0x20, 0x20, 0x70, 0x0b, 0x4c, - 0x09, 0x49, 0x02, 0x90, 0x3c, 0x00, 0x18, 0xe7, - 0x00, 0x00, 0x01, 0x94, 0x00, 0x91, 0x04, 0xf0, - 0x46, 0xfb, 0x00, 0x19, 0x03, 0x90, 0x68, 0x46, - 0xfd, 0xf7, 0xb5, 0xfb, 0x00, 0x22, 0x16, 0x21, - 0x84, 0x20, 0x05, 0xf0, 0x3e, 0xf8, 0xdc, 0xe7, - 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0x61, 0xed, - 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x23, 0x48, - 0x70, 0xb5, 0x80, 0x78, 0x9c, 0xb0, 0x01, 0x28, - 0x3e, 0xd1, 0x20, 0x4c, 0x09, 0xa8, 0x3c, 0x00, - 0x54, 0xe7, 0x00, 0x00, 0x80, 0x3c, 0x61, 0x1c, - 0xfe, 0xf7, 0x92, 0xfe, 0x04, 0x20, 0x11, 0xad, - 0x68, 0x72, 0xa0, 0x6f, 0x19, 0xa9, 0x18, 0x90, - 0x7c, 0x20, 0x00, 0x5d, 0x01, 0x26, 0x08, 0x71, - 0x1d, 0x20, 0x00, 0x5d, 0x00, 0x28, 0x06, 0xd0, - 0x10, 0x96, 0x12, 0x96, 0xfc, 0xf7, 0xf6, 0xfa, - 0x28, 0x72, 0x20, 0x7a, 0x11, 0x90, 0xf3, 0xf7, - 0xcd, 0xff, 0x6a, 0x21, 0x08, 0x53, 0x40, 0x34, - 0x3c, 0x00, 0x90, 0xe7, 0x00, 0x00, 0x00, 0x22, - 0x01, 0xa9, 0x06, 0xa8, 0xf6, 0xf7, 0xcd, 0xff, - 0x21, 0x1c, 0x00, 0x20, 0xfb, 0xf7, 0xcb, 0xfb, - 0x06, 0xa9, 0xfb, 0xf7, 0xc8, 0xfb, 0x01, 0xa9, - 0xfb, 0xf7, 0xc5, 0xfb, 0x0a, 0x49, 0x09, 0x68, - 0x00, 0x29, 0x07, 0xd0, 0x33, 0x1c, 0x0a, 0x22, - 0x69, 0x46, 0xfb, 0xf7, 0xda, 0xfb, 0x00, 0x9a, - 0x07, 0x21, 0x91, 0x70, 0x0c, 0x90, 0x09, 0xa8, - 0xfe, 0xf7, 0x3c, 0x00, 0xcc, 0xe7, 0x00, 0x00, - 0x7b, 0xfe, 0x1c, 0xb0, 0x70, 0xbd, 0x00, 0x00, - 0x84, 0x66, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xff, 0x22, - 0x01, 0x68, 0x12, 0x02, 0x0e, 0x1c, 0x08, 0x7b, - 0x49, 0x7b, 0x09, 0x02, 0x11, 0x40, 0x08, 0x43, - 0x05, 0x1c, 0x31, 0x1c, 0x06, 0x22, 0xa0, 0x18, - 0xf1, 0xf7, 0x7c, 0xfe, 0x06, 0x22, 0xb1, 0x18, - 0x20, 0x1c, 0xf1, 0xf7, 0x3c, 0x00, 0x08, 0xe8, - 0x00, 0x00, 0x77, 0xfe, 0x28, 0x0a, 0x29, 0x02, - 0x08, 0x43, 0x00, 0x04, 0x03, 0x21, 0x49, 0x02, - 0x00, 0x0c, 0x88, 0x42, 0x08, 0xd2, 0xe0, 0x68, - 0x01, 0x89, 0x0e, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x0e, 0x31, 0x01, 0x60, 0xf8, 0xbd, - 0x00, 0x26, 0x20, 0x1c, 0x10, 0x30, 0x03, 0xf0, - 0xe8, 0xfa, 0x21, 0x8b, 0x00, 0x29, 0x05, 0xd1, - 0xe1, 0x7d, 0x00, 0x29, 0x0b, 0xd0, 0x3c, 0x00, - 0x44, 0xe8, 0x00, 0x00, 0x80, 0x69, 0x80, 0x07, - 0x08, 0xd4, 0xe0, 0x68, 0x01, 0x26, 0x01, 0x89, - 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, - 0x02, 0x31, 0x06, 0xe0, 0xe0, 0x68, 0x01, 0x89, - 0x06, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, - 0x06, 0x31, 0x01, 0x60, 0x14, 0x49, 0x00, 0x20, - 0x0b, 0x1f, 0x42, 0x00, 0x9a, 0x5a, 0xaa, 0x42, - 0x02, 0xd1, 0x11, 0x49, 0x06, 0x31, 0x02, 0xe0, - 0x3c, 0x00, 0x80, 0xe8, 0x00, 0x00, 0x01, 0x30, - 0x02, 0x28, 0xf5, 0xd3, 0xe0, 0x68, 0x06, 0x22, - 0x00, 0x68, 0xf1, 0xf7, 0x34, 0xfe, 0x01, 0x2e, - 0xcb, 0xd1, 0x81, 0x20, 0x00, 0xab, 0x18, 0x80, - 0xe1, 0x7d, 0x20, 0x8b, 0x49, 0x03, 0x08, 0x43, - 0x31, 0x03, 0x08, 0x43, 0x00, 0x04, 0x00, 0x0c, - 0x01, 0x0a, 0x00, 0x02, 0x08, 0x43, 0x58, 0x80, - 0xe0, 0x68, 0x19, 0x88, 0x00, 0x68, 0xc1, 0x80, - 0x59, 0x88, 0x3c, 0x00, 0xbc, 0xe8, 0x00, 0x00, - 0x01, 0x81, 0xb5, 0xe7, 0x6a, 0x46, 0x01, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x89, 0x06, 0x22, - 0x08, 0x31, 0x01, 0x81, 0x04, 0x68, 0x04, 0x49, - 0x08, 0x3c, 0x04, 0x60, 0x20, 0x1c, 0xf1, 0xf7, - 0x0d, 0xfe, 0xe5, 0x80, 0xb0, 0xbd, 0x00, 0x00, - 0x6a, 0x46, 0x01, 0x00, 0xf8, 0xb5, 0x00, 0x29, - 0x01, 0xd0, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x09, 0x04, 0x3c, 0x00, 0xf8, 0xe8, - 0x00, 0x00, 0x09, 0x0c, 0xf2, 0xf7, 0x43, 0xff, - 0x06, 0x1c, 0x05, 0x1c, 0x00, 0x27, 0x20, 0xe0, - 0x2c, 0x89, 0x29, 0x68, 0x02, 0x2c, 0x01, 0xd2, - 0x02, 0x20, 0x01, 0xe0, 0x48, 0x78, 0x02, 0x30, - 0x84, 0x42, 0x02, 0xdd, 0x24, 0x1a, 0x09, 0x18, - 0xf4, 0xe7, 0x84, 0x42, 0x10, 0xd0, 0x01, 0x1b, - 0x0a, 0x04, 0x01, 0x04, 0x09, 0x0c, 0x12, 0x0c, - 0x28, 0x1c, 0xf2, 0xf7, 0x9e, 0xfe, 0x3c, 0x00, - 0x34, 0xe9, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1, - 0xe8, 0x68, 0xf2, 0xf7, 0x2d, 0xfe, 0xef, 0x60, - 0x28, 0x89, 0x00, 0x1b, 0x28, 0x81, 0xed, 0x68, - 0x00, 0x2d, 0xdc, 0xd1, 0x30, 0x1c, 0xd1, 0xe7, - 0xf8, 0xb5, 0x85, 0x68, 0x04, 0x1c, 0x80, 0x69, - 0x2e, 0x1c, 0x00, 0x28, 0x0d, 0xd0, 0x71, 0x68, - 0xf2, 0xf7, 0xf6, 0xfd, 0xa0, 0x69, 0xf2, 0xf7, - 0x17, 0xfe, 0x06, 0xe0, 0x00, 0x21, 0xc1, 0x60, - 0x3c, 0x00, 0x70, 0xe9, 0x00, 0x00, 0xf1, 0x60, - 0xa0, 0x8d, 0x36, 0x68, 0x01, 0x38, 0xa0, 0x85, - 0xf0, 0x68, 0x00, 0x28, 0xf5, 0xd1, 0x30, 0x68, - 0xa0, 0x60, 0xa0, 0x8d, 0x01, 0x38, 0x00, 0x04, - 0x00, 0x0c, 0xa0, 0x85, 0x02, 0xd0, 0x20, 0x1c, - 0xf9, 0xf7, 0x39, 0xf8, 0x2a, 0x4f, 0x2a, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x06, 0x21, - 0x68, 0x68, 0xfa, 0xf7, 0x7c, 0xfd, 0x68, 0x68, - 0x00, 0x68, 0x3c, 0x00, 0xac, 0xe9, 0x00, 0x00, - 0x81, 0x78, 0x00, 0x29, 0x2b, 0xd1, 0xc1, 0x78, - 0x00, 0x29, 0x30, 0xd1, 0x21, 0x8e, 0x01, 0x39, - 0x21, 0x86, 0xfb, 0xf7, 0x15, 0xf8, 0xa1, 0x6a, - 0x08, 0x1a, 0xa0, 0x62, 0xe1, 0x69, 0x88, 0x42, - 0x03, 0xd9, 0x04, 0x21, 0x02, 0x20, 0xf2, 0xf7, - 0x67, 0xfc, 0xb8, 0x68, 0x00, 0x28, 0x1e, 0xd0, - 0x1a, 0x49, 0x20, 0x8e, 0x49, 0x68, 0x0c, 0x22, - 0x52, 0x1a, 0x90, 0x42, 0x3c, 0x00, 0xe8, 0xe9, - 0x00, 0x00, 0x08, 0xd3, 0x19, 0x23, 0x9b, 0x01, - 0xaf, 0x22, 0x92, 0x01, 0x59, 0x43, 0xa0, 0x6a, - 0x51, 0x1a, 0x88, 0x42, 0x0e, 0xd2, 0x00, 0x21, - 0x0c, 0x20, 0x03, 0xf0, 0xac, 0xfc, 0x00, 0x20, - 0xb8, 0x60, 0x07, 0xe0, 0x01, 0x29, 0x05, 0xd1, - 0xc0, 0x78, 0x17, 0x28, 0x02, 0xd1, 0xa0, 0x8e, - 0x01, 0x38, 0xa0, 0x86, 0x2a, 0x1d, 0x06, 0xca, - 0xe0, 0x68, 0x63, 0x69, 0xf1, 0xf7, 0x3c, 0x00, - 0x24, 0xea, 0x00, 0x00, 0xdc, 0xfc, 0xb5, 0x42, - 0x01, 0xd0, 0x2d, 0x68, 0xb4, 0xe7, 0xa0, 0x8d, - 0x00, 0x28, 0x03, 0xd1, 0x05, 0x48, 0xb9, 0x69, - 0x00, 0xf0, 0x9e, 0xfc, 0xf8, 0xbd, 0x00, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c, 0x01, 0x00, - 0x18, 0x57, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x89, 0x07, 0x07, 0x4b, 0xca, 0x0f, 0x80, 0xb5, - 0x19, 0x7c, 0x00, 0x29, 0x06, 0xd0, 0x81, 0x43, - 0x3c, 0x00, 0x60, 0xea, 0x00, 0x00, 0x19, 0x74, - 0x03, 0xd1, 0x07, 0x21, 0x15, 0x20, 0x04, 0xf0, - 0xa2, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20, - 0xff, 0xf7, 0xe9, 0xff, 0x80, 0xbd, 0x80, 0xb5, - 0x01, 0x1c, 0x02, 0x20, 0xff, 0xf7, 0xe3, 0xff, - 0x80, 0xbd, 0xb0, 0xb5, 0x1b, 0x4c, 0x60, 0x68, - 0xfc, 0xf7, 0x2f, 0xff, 0x20, 0x68, 0x00, 0x25, - 0x40, 0x68, 0x3c, 0x00, 0x9c, 0xea, 0x00, 0x00, - 0x00, 0x28, 0x03, 0xd0, 0xfd, 0xf7, 0x18, 0xfc, - 0x20, 0x68, 0x45, 0x60, 0x60, 0x68, 0xfc, 0xf7, - 0xc5, 0xfe, 0x14, 0x48, 0x61, 0x68, 0x00, 0xf0, - 0x61, 0xfc, 0xa0, 0x7a, 0x01, 0x28, 0x05, 0xd0, - 0x02, 0x28, 0x03, 0xd0, 0x20, 0x68, 0x00, 0x68, - 0x00, 0xf0, 0xde, 0xf8, 0x01, 0x21, 0x1f, 0x20, - 0x04, 0xf0, 0xb2, 0xfd, 0x00, 0x21, 0x1f, 0x20, - 0x04, 0xf0, 0xae, 0xfd, 0x3c, 0x00, 0xd8, 0xea, - 0x00, 0x00, 0x02, 0x21, 0x1f, 0x20, 0x04, 0xf0, - 0xaa, 0xfd, 0xa5, 0x72, 0x21, 0x68, 0x2c, 0x20, - 0x40, 0x5c, 0x89, 0x68, 0xf1, 0xf7, 0x76, 0xfc, - 0x60, 0x68, 0xfc, 0xf7, 0xe4, 0xfe, 0x20, 0x68, - 0x05, 0x62, 0xb0, 0xbd, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x04, 0x49, - 0x0a, 0x68, 0xc8, 0x68, 0x92, 0x6a, 0x00, 0x2a, - 0x01, 0xd0, 0x09, 0x69, 0x08, 0x18, 0x3c, 0x00, - 0x14, 0xeb, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x13, 0x4c, - 0x05, 0x1c, 0xa0, 0x7a, 0x01, 0x38, 0x02, 0x28, - 0x19, 0xd8, 0x01, 0x21, 0x1f, 0x20, 0x04, 0xf0, - 0x81, 0xfd, 0x20, 0x68, 0xfc, 0x23, 0x01, 0x1c, - 0x20, 0x30, 0x02, 0x7b, 0x1a, 0x40, 0x02, 0x73, - 0x00, 0x2d, 0x0f, 0xd0, 0x01, 0x23, 0x1a, 0x43, - 0x02, 0x73, 0xa0, 0x7a, 0x03, 0x28, 0x07, 0xd1, - 0x3c, 0x00, 0x50, 0xeb, 0x00, 0x00, 0x01, 0x20, - 0x01, 0xf0, 0xe7, 0xfd, 0x00, 0x28, 0x01, 0xd1, - 0xff, 0xf7, 0x97, 0xff, 0xb0, 0xbd, 0x4b, 0x62, - 0xb0, 0xbd, 0x02, 0x21, 0x11, 0x43, 0x01, 0x73, - 0xf6, 0xe7, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x0a, 0x30, 0xf6, 0xf7, 0x43, 0xfe, - 0x00, 0x28, 0x0c, 0xd0, 0x22, 0x88, 0x0a, 0x49, - 0x0b, 0x7a, 0x90, 0x04, 0xc0, 0x0f, 0x00, 0x2b, - 0x06, 0xd1, 0x3c, 0x00, 0x8c, 0xeb, 0x00, 0x00, - 0x12, 0x06, 0x92, 0x0e, 0x20, 0x2a, 0x00, 0xd1, - 0x01, 0x20, 0xc8, 0x60, 0x10, 0xbd, 0x00, 0x28, - 0xfc, 0xd1, 0x00, 0x22, 0x24, 0x21, 0x80, 0x20, - 0x04, 0xf0, 0x04, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x1c, - 0x1f, 0x21, 0x80, 0x20, 0x04, 0xf0, 0xfa, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x1d, 0x4e, - 0x04, 0x1c, 0x30, 0x68, 0x3c, 0x00, 0xc8, 0xeb, - 0x00, 0x00, 0x1d, 0x1c, 0x47, 0x68, 0x20, 0x1c, - 0xf1, 0xf7, 0x0a, 0xfc, 0xfb, 0xf7, 0x87, 0xfa, - 0x00, 0x28, 0x04, 0xd0, 0x28, 0x1c, 0xf2, 0xf7, - 0x2a, 0xfb, 0x00, 0x28, 0x28, 0xd1, 0x20, 0x88, - 0x40, 0x05, 0x25, 0xd4, 0x30, 0x68, 0x00, 0x68, - 0xfe, 0xf7, 0x59, 0xf9, 0x00, 0x28, 0x03, 0xd1, - 0xfd, 0xf7, 0x89, 0xfa, 0xf1, 0xf7, 0xed, 0xfb, - 0x30, 0x68, 0x00, 0x25, 0x40, 0x68, 0x3c, 0x00, - 0x04, 0xec, 0x00, 0x00, 0x00, 0x28, 0x03, 0xd0, - 0xfd, 0xf7, 0x64, 0xfb, 0x30, 0x68, 0x45, 0x60, - 0x20, 0x88, 0x00, 0x09, 0x00, 0x07, 0x03, 0xd1, - 0x04, 0xf0, 0xc8, 0xf8, 0x61, 0x88, 0x45, 0x18, - 0x30, 0x68, 0x45, 0x61, 0x81, 0x6a, 0x01, 0x31, - 0x81, 0x62, 0x20, 0x88, 0x80, 0x04, 0xc1, 0x0f, - 0x02, 0x48, 0xf8, 0xf7, 0xcd, 0xff, 0xf8, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0xb1, 0xeb, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xec, 0x00, 0x00, 0xb0, 0xb5, - 0x0e, 0x4c, 0x05, 0x1c, 0x60, 0x68, 0xfc, 0xf7, - 0xf6, 0xfd, 0x0c, 0x48, 0x61, 0x68, 0x00, 0xf0, - 0x92, 0xfb, 0x00, 0x21, 0x24, 0x20, 0x04, 0xf0, - 0xec, 0xfc, 0x00, 0x22, 0xd2, 0x43, 0x80, 0x21, - 0x24, 0x20, 0x04, 0xf0, 0xb8, 0xfc, 0x00, 0x20, - 0xe0, 0x60, 0x20, 0x72, 0x20, 0x68, 0x01, 0x68, - 0x28, 0x06, 0x00, 0x0e, 0xf1, 0xf7, 0xb0, 0xfb, - 0xb0, 0xbd, 0x3c, 0x00, 0x7c, 0xec, 0x00, 0x00, - 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7, - 0x85, 0xfc, 0x20, 0x1c, 0xf2, 0xf7, 0xb0, 0xfd, - 0x10, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x1c, 0x4e, - 0x05, 0x1c, 0xb0, 0x7a, 0x2c, 0x1c, 0x40, 0x34, - 0x02, 0x28, 0x26, 0xd1, 0xa0, 0x8b, 0x31, 0x89, - 0x88, 0x42, 0x22, 0xd1, 0x30, 0x68, 0x41, 0x6a, - 0x00, 0x29, 0x08, 0xd0, 0x3c, 0x00, 0xb8, 0xec, - 0x00, 0x00, 0x20, 0x30, 0x00, 0x7b, 0xc0, 0x07, - 0x04, 0xd5, 0x01, 0x20, 0x01, 0xf0, 0x2f, 0xfd, - 0x00, 0x28, 0x18, 0xd1, 0x60, 0x78, 0x00, 0x28, - 0x09, 0xd1, 0x30, 0x68, 0x02, 0x23, 0x20, 0x30, - 0x02, 0x7b, 0x0d, 0x49, 0x52, 0x08, 0x52, 0x00, - 0x1a, 0x43, 0x02, 0x73, 0x01, 0xe0, 0xff, 0x21, - 0xf5, 0x31, 0x01, 0x22, 0x1f, 0x20, 0x04, 0xf0, - 0x6e, 0xfc, 0x03, 0x20, 0xb0, 0x72, 0x3c, 0x00, - 0xf4, 0xec, 0x00, 0x00, 0x02, 0xe0, 0x28, 0x1c, - 0xff, 0xf7, 0xc4, 0xff, 0x60, 0x78, 0x00, 0x28, - 0x03, 0xd1, 0x29, 0x1c, 0x01, 0x20, 0x03, 0xf0, - 0x29, 0xfb, 0x70, 0xbd, 0x14, 0x7a, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x60, 0x34, 0xe0, 0x79, 0x0e, 0x4d, 0x00, 0x28, - 0x0a, 0xd1, 0x02, 0x20, 0xa8, 0x72, 0x28, 0x68, - 0x40, 0x68, 0x00, 0x28, 0x04, 0xd1, 0x0b, 0x48, - 0x3c, 0x00, 0x30, 0xed, 0x00, 0x00, 0xfd, 0xf7, - 0xd0, 0xfa, 0x29, 0x68, 0x48, 0x60, 0x04, 0xf0, - 0x38, 0xf8, 0x29, 0x68, 0xc8, 0x61, 0xff, 0xf7, - 0xe0, 0xfe, 0x29, 0x68, 0x09, 0x69, 0x08, 0x1a, - 0x03, 0xf0, 0x6f, 0xff, 0x00, 0x28, 0x01, 0xd0, - 0xe0, 0x79, 0xa0, 0x71, 0xb0, 0xbd, 0x14, 0x7a, - 0x01, 0x00, 0xc1, 0xeb, 0x00, 0x00, 0xf8, 0xb5, - 0x04, 0x1c, 0x00, 0x26, 0x04, 0xf0, 0x21, 0xf8, - 0x05, 0x1c, 0x3c, 0x00, 0x6c, 0xed, 0x00, 0x00, - 0x22, 0x48, 0x00, 0x27, 0x07, 0x70, 0xa1, 0x07, - 0x04, 0xd0, 0xe1, 0x07, 0xc9, 0x0f, 0x01, 0x62, - 0xc5, 0x61, 0x01, 0x26, 0x41, 0x6b, 0x00, 0x29, - 0x34, 0xd1, 0x00, 0x2e, 0x32, 0xd0, 0x06, 0x1c, - 0xf9, 0xf7, 0x44, 0xff, 0x31, 0x6b, 0x1a, 0x4b, - 0x41, 0x1a, 0xa2, 0x07, 0x12, 0xd5, 0xda, 0x68, - 0x00, 0x2a, 0x08, 0xdd, 0x91, 0x42, 0x1a, 0x68, - 0x02, 0xda, 0x14, 0x09, 0x3c, 0x00, 0xa8, 0xed, - 0x00, 0x00, 0xa2, 0x18, 0x06, 0xe0, 0x14, 0x09, - 0x12, 0x1b, 0x03, 0xe0, 0x0a, 0x43, 0x02, 0xd1, - 0x1a, 0x68, 0x52, 0x00, 0x1a, 0x60, 0xb7, 0x63, - 0x0a, 0xe0, 0xb2, 0x6b, 0x01, 0x32, 0xb2, 0x63, - 0x02, 0x2a, 0x1a, 0x68, 0x01, 0xdd, 0x94, 0x08, - 0x00, 0xe0, 0x14, 0x09, 0x12, 0x1b, 0x1a, 0x60, - 0xd9, 0x60, 0x30, 0x63, 0xf5, 0x62, 0x18, 0x68, - 0x08, 0x49, 0x88, 0x42, 0x01, 0xd9, 0x3c, 0x00, - 0xe4, 0xed, 0x00, 0x00, 0x19, 0x60, 0x03, 0xe0, - 0x64, 0x28, 0x01, 0xd2, 0x64, 0x20, 0x18, 0x60, - 0xf5, 0xf7, 0xfc, 0xfd, 0xf8, 0xbd, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57, 0x01, 0x00, - 0x20, 0xa1, 0x07, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x00, 0x20, 0x50, 0x4d, 0x00, 0x21, 0x68, 0x61, - 0x20, 0x69, 0xfb, 0xf7, 0xb3, 0xfc, 0x07, 0x1c, - 0x20, 0x69, 0x03, 0x21, 0xfb, 0xf7, 0xae, 0xfc, - 0x3c, 0x00, 0x20, 0xee, 0x00, 0x00, 0x00, 0x28, - 0x03, 0xd0, 0x80, 0x78, 0x29, 0x78, 0x88, 0x42, - 0x63, 0xd1, 0x47, 0x4d, 0x20, 0x1c, 0x14, 0x30, - 0x39, 0x1c, 0x06, 0x1c, 0x2a, 0x78, 0x02, 0xf0, - 0x5a, 0xfa, 0x00, 0x28, 0x59, 0xd1, 0xe0, 0x68, - 0x05, 0x68, 0x41, 0x48, 0x01, 0x95, 0x58, 0x30, - 0x02, 0x90, 0xfb, 0xf7, 0x6a, 0xff, 0x3e, 0x4d, - 0x19, 0x35, 0x00, 0x28, 0x0b, 0xd0, 0x28, 0x1c, - 0xfb, 0xf7, 0x3c, 0x00, 0x5c, 0xee, 0x00, 0x00, - 0x55, 0xff, 0x00, 0x28, 0x1e, 0xd1, 0x31, 0x1c, - 0x28, 0x1c, 0xfb, 0xf7, 0x65, 0xff, 0x00, 0x28, - 0x42, 0xd0, 0x17, 0xe0, 0x28, 0x1c, 0xfb, 0xf7, - 0x49, 0xff, 0x00, 0x28, 0x06, 0xd0, 0x39, 0x1c, - 0x02, 0x98, 0xfb, 0xf7, 0x63, 0xff, 0x00, 0x28, - 0x36, 0xd0, 0x0b, 0xe0, 0x39, 0x1c, 0x02, 0x98, - 0xfb, 0xf7, 0x5c, 0xff, 0x00, 0x28, 0x2f, 0xd0, - 0x31, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x98, 0xee, - 0x00, 0x00, 0xfb, 0xf7, 0x4c, 0xff, 0x00, 0x28, - 0x29, 0xd0, 0x30, 0x1c, 0xf6, 0xf7, 0xad, 0xfc, - 0x29, 0x4a, 0x18, 0x32, 0x11, 0x7c, 0x00, 0x29, - 0x04, 0xd0, 0x51, 0x6a, 0x00, 0x29, 0x01, 0xd0, - 0x00, 0x28, 0x1c, 0xd1, 0x90, 0x6a, 0x00, 0x28, - 0x3b, 0xd0, 0x13, 0x78, 0x01, 0x9d, 0x01, 0x21, - 0x6d, 0x89, 0x01, 0x20, 0x2b, 0x40, 0x9b, 0x07, - 0x11, 0xd0, 0xa3, 0x6b, 0x1e, 0x4e, 0x3c, 0x00, - 0xd4, 0xee, 0x00, 0x00, 0x1d, 0x1c, 0x7f, 0x35, - 0x98, 0x36, 0x00, 0x2d, 0x14, 0xd0, 0x55, 0x8a, - 0x00, 0x2d, 0x08, 0xd1, 0x55, 0x69, 0xab, 0x42, - 0x0f, 0xda, 0x00, 0x20, 0x17, 0x4d, 0x01, 0x23, - 0x6b, 0x61, 0x0a, 0xe0, 0x29, 0xe0, 0xf5, 0x78, - 0x02, 0x2d, 0x06, 0xd1, 0x14, 0x4f, 0x55, 0x69, - 0x3f, 0x68, 0xed, 0x19, 0xab, 0x42, 0x00, 0xda, - 0x00, 0x20, 0x23, 0x6c, 0x1d, 0x1c, 0x7f, 0x35, - 0x3c, 0x00, 0x10, 0xef, 0x00, 0x00, 0x10, 0xd0, - 0x55, 0x8a, 0x00, 0x2d, 0x03, 0xd1, 0x95, 0x69, - 0xab, 0x42, 0x0a, 0xd2, 0x08, 0xe0, 0xf5, 0x78, - 0x02, 0x2d, 0x06, 0xd1, 0x0b, 0x4e, 0x95, 0x69, - 0x36, 0x68, 0xad, 0x19, 0xab, 0x42, 0x00, 0xd2, - 0x00, 0x21, 0x08, 0x43, 0x08, 0xd0, 0x10, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0xf1, 0xf7, 0x4b, 0xfa, - 0x00, 0x21, 0x20, 0x1c, 0x01, 0xf0, 0xb9, 0xf9, - 0xfe, 0xbd, 0x3c, 0x00, 0x4c, 0xef, 0x00, 0x00, - 0xec, 0x65, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, - 0xcc, 0x67, 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x6a, - 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7, 0x34, 0xfb, - 0xe1, 0x69, 0xf2, 0xf7, 0x57, 0xfa, 0x20, 0x1c, - 0x40, 0x30, 0xc1, 0x8b, 0x04, 0x31, 0xc1, 0x83, - 0x2b, 0x69, 0x10, 0x49, 0x98, 0x79, 0x06, 0x28, - 0x0a, 0xd1, 0x98, 0x88, 0x01, 0x91, 0x02, 0x94, - 0x00, 0x90, 0x60, 0x69, 0x3c, 0x00, 0x88, 0xef, - 0x00, 0x00, 0x1b, 0x68, 0x01, 0x68, 0xe0, 0x68, - 0x03, 0x22, 0xc0, 0x68, 0x0a, 0xe0, 0x02, 0x28, - 0x0b, 0xd1, 0x10, 0x20, 0x00, 0x90, 0x01, 0x91, - 0x02, 0x94, 0xe0, 0x68, 0xa3, 0x69, 0xc0, 0x68, - 0x00, 0x22, 0x00, 0x21, 0xf7, 0xf7, 0x0f, 0xfb, - 0x3e, 0xbd, 0xf2, 0xf7, 0xa6, 0xf9, 0xfb, 0xe7, - 0x00, 0x00, 0xbd, 0xef, 0x00, 0x00, 0x80, 0xb5, - 0xd1, 0x68, 0x50, 0x69, 0xc9, 0x68, 0x3c, 0x00, - 0xc4, 0xef, 0x00, 0x00, 0xc1, 0x60, 0xd1, 0x68, - 0xc8, 0x60, 0x11, 0x1c, 0x40, 0x31, 0xcb, 0x8b, - 0x00, 0x89, 0x18, 0x18, 0xc8, 0x83, 0x10, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, 0xbc, 0xff, - 0x80, 0xbd, 0x03, 0x48, 0xfb, 0xf7, 0xcc, 0xf8, - 0x00, 0x6a, 0xfe, 0xf7, 0xf5, 0xf9, 0x80, 0xbd, - 0xa0, 0x6a, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x0a, 0x24, 0x30, 0x07, 0x01, 0x09, 0xa0, 0x07, - 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x01, 0x43, - 0x0f, 0x1c, 0x0a, 0x4d, 0x2f, 0x60, 0x04, 0xf0, - 0xfa, 0xfe, 0xad, 0x68, 0x28, 0x01, 0x00, 0x0f, - 0xb0, 0x42, 0x05, 0xd0, 0x01, 0x3c, 0xf4, 0xd2, - 0x01, 0x21, 0x9b, 0x20, 0xf2, 0xf7, 0x41, 0xf9, - 0x28, 0x02, 0x00, 0x0a, 0x08, 0x2e, 0x01, 0xd1, - 0x31, 0x05, 0x08, 0x43, 0xf8, 0xbd, 0x60, 0x00, - 0x07, 0x00, 0x01, 0x22, 0xd2, 0x05, 0x80, 0xb5, - 0x00, 0x21, 0x3c, 0x00, 0x3c, 0xf0, 0x00, 0x00, - 0x04, 0x20, 0x04, 0xf0, 0xdd, 0xfc, 0x0f, 0x20, - 0xff, 0xf7, 0xd6, 0xff, 0x0f, 0x21, 0x09, 0x04, - 0x08, 0x40, 0x00, 0x0c, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x05, 0x48, 0xfd, 0xf7, 0x4a, 0xf9, - 0x04, 0x48, 0xfd, 0xf7, 0x7b, 0xf8, 0x04, 0x48, - 0xfd, 0xf7, 0x6c, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x89, 0x34, 0x01, 0x00, 0xed, 0x24, 0x00, 0x00, - 0x11, 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xf0, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x48, 0xf3, 0xf7, - 0x2a, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xd1, 0x24, - 0x00, 0x00, 0x80, 0xb5, 0xf2, 0xf7, 0x53, 0xf9, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20, - 0x01, 0xf0, 0x51, 0xfe, 0x03, 0x20, 0x02, 0xf0, - 0x46, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0xc1, 0x69, 0x00, 0x29, 0x06, 0xd1, - 0x01, 0x6a, 0x00, 0x29, 0x03, 0xd1, 0x3c, 0x00, - 0xb4, 0xf0, 0x00, 0x00, 0x81, 0x6b, 0x03, 0x48, - 0x00, 0xf0, 0x5e, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x4c, 0x20, 0x6a, 0xfc, 0xf7, - 0xb3, 0xfb, 0x03, 0x48, 0x21, 0x6a, 0x00, 0xf0, - 0x4f, 0xf9, 0x10, 0xbd, 0x1c, 0x75, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x4c, - 0x20, 0x7c, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x21, - 0x3c, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xfd, 0xf7, - 0x86, 0xf9, 0x00, 0x25, 0x25, 0x70, 0xa0, 0x68, - 0x01, 0x28, 0x03, 0xd1, 0x00, 0x20, 0xa5, 0x60, - 0x01, 0xf0, 0x8f, 0xf8, 0xa0, 0x78, 0x01, 0x28, - 0x05, 0xd1, 0x03, 0x48, 0x98, 0x38, 0x00, 0x69, - 0xfc, 0xf7, 0xef, 0xfb, 0xa5, 0x70, 0xb0, 0xbd, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x21, 0x01, 0x20, 0x01, 0xf0, 0x09, 0xfe, - 0x80, 0xbd, 0x3c, 0x00, 0x2c, 0xf1, 0x00, 0x00, - 0x38, 0xb5, 0x69, 0x46, 0x00, 0x25, 0xf8, 0xf7, - 0xb7, 0xfe, 0x04, 0x1c, 0x01, 0xd1, 0x01, 0x20, - 0x38, 0xbd, 0xa0, 0x68, 0x00, 0x28, 0x04, 0xd0, - 0x00, 0x99, 0xa1, 0x31, 0x08, 0x20, 0x04, 0xf0, - 0x73, 0xfa, 0x1c, 0x21, 0x20, 0x1c, 0xf1, 0xf7, - 0xa3, 0xf9, 0x28, 0x1c, 0xf0, 0xe7, 0x00, 0x00, - 0xfe, 0xb5, 0x07, 0x1c, 0x4c, 0x23, 0x39, 0x49, - 0x58, 0x43, 0x44, 0x18, 0x3c, 0x00, 0x68, 0xf1, - 0x00, 0x00, 0x25, 0x1c, 0x40, 0x35, 0x28, 0x7a, - 0x37, 0x49, 0x48, 0x76, 0x21, 0x1c, 0x30, 0x31, - 0x02, 0x91, 0x0c, 0x23, 0xc8, 0x56, 0x42, 0x1c, - 0x0a, 0x73, 0x49, 0x7b, 0x88, 0x42, 0x46, 0xda, - 0x32, 0x48, 0x00, 0x78, 0x80, 0x07, 0x3e, 0xd5, - 0x00, 0x20, 0x01, 0x90, 0xf6, 0xf7, 0xaf, 0xfa, - 0x00, 0x28, 0x2e, 0xd0, 0xac, 0x21, 0x09, 0x58, - 0x00, 0x29, 0x01, 0xd0, 0xe4, 0x30, 0x3c, 0x00, - 0xa4, 0xf1, 0x00, 0x00, 0x00, 0xe0, 0xcc, 0x30, - 0x06, 0x1c, 0x40, 0x68, 0x00, 0x28, 0x25, 0xd0, - 0x02, 0x99, 0x08, 0x7b, 0x01, 0x28, 0x11, 0xd1, - 0x20, 0x1c, 0x2e, 0x30, 0x29, 0x78, 0xf6, 0xf7, - 0xed, 0xf9, 0x71, 0x68, 0x03, 0xe0, 0x72, 0x18, - 0x12, 0x7a, 0x82, 0x42, 0x03, 0xd9, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x0e, 0xf7, 0xd1, 0xa9, 0x70, - 0x01, 0x20, 0x01, 0x90, 0x23, 0x1c, 0x3e, 0x33, - 0x3c, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x1a, 0x1d, - 0x30, 0x1c, 0x00, 0x97, 0x01, 0x99, 0xf8, 0xf7, - 0x58, 0xfa, 0x00, 0x28, 0x11, 0xd0, 0xa8, 0x78, - 0x80, 0x19, 0x00, 0x7a, 0x00, 0xe0, 0x00, 0x20, - 0x68, 0x70, 0x68, 0x78, 0x01, 0x21, 0xfb, 0xf7, - 0xe0, 0xfd, 0x60, 0x60, 0x38, 0x1c, 0x01, 0xf0, - 0x14, 0xfe, 0x38, 0x1c, 0x01, 0xf0, 0xa5, 0xfb, - 0xfe, 0xbd, 0x02, 0x99, 0x08, 0x7b, 0xff, 0x30, - 0x48, 0x73, 0x3c, 0x00, 0x1c, 0xf2, 0x00, 0x00, - 0x38, 0x1c, 0xfc, 0xf7, 0x19, 0xfc, 0x03, 0xf0, - 0xc3, 0xfd, 0x06, 0x1c, 0xfb, 0xf7, 0x8e, 0xfe, - 0x41, 0x00, 0x76, 0x18, 0x68, 0x78, 0x61, 0x68, - 0xfb, 0xf7, 0x6a, 0xfe, 0x31, 0x18, 0x20, 0x8d, - 0x3b, 0x1c, 0x05, 0x4a, 0x03, 0xf0, 0x12, 0xfe, - 0xe5, 0xe7, 0x00, 0x00, 0x58, 0xe3, 0x01, 0x00, - 0x30, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0xd5, 0x4e, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xf2, - 0x00, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x80, 0xb5, - 0x02, 0x79, 0x20, 0x30, 0x03, 0x49, 0x00, 0xf0, - 0x30, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x03, 0x1c, - 0x04, 0x48, 0x80, 0xb5, 0xc2, 0x78, 0x38, 0x30, - 0x03, 0x49, 0x00, 0xf0, 0x22, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, 0xc8, 0x67, - 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x3c, 0x00, - 0x94, 0xf2, 0x00, 0x00, 0x80, 0xb5, 0x82, 0x79, - 0x50, 0x30, 0x03, 0x49, 0x00, 0xf0, 0x14, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, - 0xcc, 0x67, 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48, - 0x80, 0xb5, 0x42, 0x79, 0x68, 0x30, 0x03, 0x49, - 0x00, 0xf0, 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x24, 0x84, 0x80, 0x0b, 0x60, - 0x3c, 0x00, 0xd0, 0xf2, 0x00, 0x00, 0x19, 0x1c, - 0x51, 0x43, 0x01, 0x60, 0x19, 0x06, 0x09, 0x16, - 0x10, 0x22, 0x06, 0x30, 0xf1, 0xf7, 0x9f, 0xf9, - 0x10, 0xbd, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24, - 0xac, 0x60, 0xec, 0x60, 0xec, 0x61, 0x2c, 0x62, - 0x02, 0xf0, 0xf1, 0xfc, 0x00, 0xf0, 0x0d, 0xf8, - 0xec, 0x62, 0x2c, 0x70, 0xb0, 0xbd, 0x44, 0x7d, - 0x01, 0x00, 0x80, 0xb5, 0x80, 0x21, 0x01, 0x48, - 0xf1, 0xf7, 0x3c, 0x00, 0x0c, 0xf3, 0x00, 0x00, - 0xc7, 0xf8, 0x80, 0xbd, 0x04, 0x66, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x4f, 0x00, 0x24, 0x00, 0x26, - 0x18, 0x20, 0x60, 0x43, 0xc5, 0x19, 0xee, 0x60, - 0x03, 0xf0, 0x42, 0xfd, 0x10, 0x35, 0x01, 0x34, - 0x02, 0x2c, 0x41, 0xc5, 0xf4, 0xdb, 0xf8, 0xbd, - 0xb8, 0x7d, 0x01, 0x00, 0x00, 0x23, 0x03, 0x60, - 0x04, 0x4b, 0x00, 0x29, 0x00, 0xd1, 0x19, 0x1c, - 0x41, 0x60, 0x00, 0x2a, 0x3c, 0x00, 0x48, 0xf3, - 0x00, 0x00, 0x00, 0xd1, 0x1a, 0x1c, 0x82, 0x60, - 0x70, 0x47, 0xbd, 0x75, 0x00, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x20, 0x68, 0x01, 0x30, 0x20, 0x60, - 0x20, 0x28, 0x03, 0xd9, 0x58, 0x21, 0x58, 0x20, - 0xf1, 0xf7, 0x9d, 0xff, 0x21, 0x68, 0x01, 0x20, - 0x01, 0x39, 0x88, 0x40, 0x10, 0xbd, 0x60, 0x5b, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x21, 0x68, 0x00, 0x20, 0x00, 0x29, 0x3c, 0x00, - 0x84, 0xf3, 0x00, 0x00, 0x0a, 0xd0, 0xa9, 0x43, - 0x21, 0x60, 0x07, 0xd1, 0xa0, 0x68, 0xf1, 0xf7, - 0x23, 0xf8, 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68, - 0x29, 0x43, 0x21, 0x60, 0xb0, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x21, 0x68, - 0x00, 0x20, 0x29, 0x43, 0x21, 0x60, 0xa9, 0x42, - 0x07, 0xd1, 0x60, 0x68, 0xf1, 0xf7, 0x10, 0xf8, - 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68, 0xa9, 0x43, - 0x3c, 0x00, 0xc0, 0xf3, 0x00, 0x00, 0x21, 0x60, - 0xb0, 0xbd, 0x1a, 0x4b, 0xb0, 0xb5, 0x9a, 0x6a, - 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x2a, 0x07, 0xdb, - 0xb8, 0x24, 0x24, 0x58, 0x01, 0x3c, 0xa4, 0x1a, - 0x00, 0x19, 0xb0, 0x30, 0x00, 0x7b, 0x02, 0xe0, - 0x0e, 0x20, 0x00, 0xe0, 0x0d, 0x20, 0x5d, 0x6a, - 0x12, 0x4c, 0x00, 0x2d, 0x01, 0xd0, 0x20, 0x78, - 0x00, 0xe0, 0x20, 0x5c, 0xff, 0x24, 0xa8, 0x34, - 0xc4, 0x40, 0x3c, 0x00, 0xfc, 0xf3, 0x00, 0x00, - 0x9c, 0x60, 0xf5, 0x24, 0xc4, 0x40, 0x9c, 0x61, - 0xfd, 0x24, 0xc4, 0x40, 0xdc, 0x61, 0xff, 0x24, - 0x29, 0x34, 0xc4, 0x40, 0x5c, 0x61, 0xff, 0x24, - 0x53, 0x34, 0xc4, 0x40, 0x00, 0x20, 0x0c, 0x33, - 0x11, 0xc3, 0x00, 0x29, 0x05, 0xd0, 0x00, 0x2a, - 0x03, 0xdc, 0x02, 0x21, 0x50, 0x42, 0x00, 0xf0, - 0x65, 0xfb, 0xb0, 0xbd, 0xac, 0x7e, 0x01, 0x00, - 0xb8, 0x52, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xf4, - 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c, 0x13, 0x48, - 0x21, 0x1c, 0xff, 0x31, 0x69, 0x31, 0x0e, 0xc9, - 0x0e, 0xc0, 0x21, 0x1c, 0xff, 0x31, 0x24, 0x22, - 0x75, 0x31, 0x0f, 0x48, 0xf1, 0xf7, 0x51, 0xf8, - 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x22, 0x99, 0x31, - 0x0d, 0x48, 0xf1, 0xf7, 0xa6, 0xf8, 0xfc, 0xf7, - 0xa2, 0xff, 0x21, 0x1c, 0xff, 0x31, 0x10, 0x22, - 0xd5, 0x31, 0x09, 0x48, 0xf1, 0xf7, 0x3c, 0x00, - 0x74, 0xf4, 0x00, 0x00, 0x41, 0xf8, 0x21, 0x1c, - 0xff, 0x31, 0x28, 0x22, 0xe5, 0x31, 0x07, 0x48, - 0xf1, 0xf7, 0x96, 0xf8, 0x10, 0xbd, 0x00, 0x00, - 0x40, 0x63, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x0c, 0x80, 0x07, 0x00, 0x30, 0x80, 0x07, 0x00, - 0x80, 0x80, 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, - 0xf8, 0xb5, 0x00, 0x28, 0x59, 0xd0, 0x04, 0xf0, - 0x4b, 0xf9, 0xf8, 0xf7, 0xb3, 0xfb, 0x00, 0x22, - 0x3c, 0x00, 0xb0, 0xf4, 0x00, 0x00, 0x01, 0x21, - 0x13, 0x20, 0x04, 0xf0, 0x7c, 0xf9, 0x2a, 0x49, - 0x29, 0x48, 0x49, 0x6c, 0x01, 0x60, 0x00, 0x21, - 0x29, 0x48, 0xc9, 0x43, 0x41, 0x60, 0x26, 0x4c, - 0x14, 0x34, 0x61, 0x6c, 0x81, 0x60, 0xa1, 0x6c, - 0xc1, 0x60, 0x00, 0x20, 0x25, 0x4d, 0x02, 0x26, - 0x01, 0x01, 0x6e, 0x50, 0x0a, 0x19, 0x4f, 0x19, - 0x50, 0x32, 0x04, 0x37, 0x0e, 0xca, 0x01, 0x30, - 0x08, 0x28, 0x3c, 0x00, 0xec, 0xf4, 0x00, 0x00, - 0x0e, 0xc7, 0xf4, 0xdb, 0x14, 0x22, 0x21, 0x1c, - 0xcc, 0x31, 0x1e, 0x48, 0xf1, 0xf7, 0x5a, 0xf8, - 0x1d, 0x48, 0x81, 0x78, 0x09, 0x09, 0x09, 0x01, - 0x81, 0x70, 0x00, 0x21, 0xc1, 0x70, 0x41, 0x70, - 0x21, 0x1c, 0xe0, 0x31, 0x0a, 0x78, 0x02, 0x70, - 0x49, 0x78, 0x41, 0x70, 0x21, 0x1c, 0xe8, 0x31, - 0x30, 0x22, 0x08, 0x30, 0xf1, 0xf7, 0x46, 0xf8, - 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x00, 0x28, 0xf5, - 0x00, 0x00, 0x50, 0x22, 0x19, 0x31, 0x12, 0x48, - 0xf1, 0xf7, 0x3f, 0xf8, 0x83, 0x20, 0x80, 0x00, - 0x14, 0x22, 0x21, 0x18, 0x10, 0x48, 0xf1, 0xf7, - 0x38, 0xf8, 0x11, 0x20, 0x40, 0x01, 0x84, 0x22, - 0x21, 0x18, 0x0d, 0x48, 0xf1, 0xf7, 0x31, 0xf8, - 0xff, 0xf7, 0x73, 0xff, 0x20, 0x1c, 0xf1, 0xf7, - 0x28, 0xfd, 0xf8, 0xbd, 0xff, 0xf7, 0x6d, 0xff, - 0xfb, 0xe7, 0x08, 0x20, 0x07, 0x00, 0x3c, 0x00, - 0x64, 0xf5, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00, - 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x00, 0x90, 0x07, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x18, 0x48, 0xc0, 0x68, 0x00, 0x28, 0x25, 0xd0, - 0x16, 0x4e, 0x01, 0x36, 0x74, 0x78, 0x30, 0x78, - 0x27, 0x1a, 0x79, 0x19, 0x20, 0x1c, 0xf1, 0xf7, - 0x3c, 0x00, 0xa0, 0xf5, 0x00, 0x00, 0x4b, 0xf8, - 0x00, 0x90, 0x29, 0x1c, 0x20, 0x1c, 0xf1, 0xf7, - 0xb2, 0xf8, 0xc1, 0x19, 0x20, 0x1c, 0xf1, 0xf7, - 0x42, 0xf8, 0x60, 0x1a, 0x30, 0x70, 0x70, 0x1e, - 0x80, 0x68, 0x00, 0x28, 0x0d, 0xd0, 0x53, 0x36, - 0xf4, 0x78, 0x00, 0x99, 0x20, 0x1c, 0xf1, 0xf7, - 0xa2, 0xf8, 0xb1, 0x78, 0x61, 0x1a, 0x41, 0x18, - 0x20, 0x1c, 0xf1, 0xf7, 0x9c, 0xf8, 0x60, 0x1a, - 0xb0, 0x70, 0x3c, 0x00, 0xdc, 0xf5, 0x00, 0x00, - 0x03, 0x48, 0x5c, 0x30, 0x01, 0x69, 0xc2, 0x68, - 0x69, 0x43, 0x51, 0x18, 0xc1, 0x60, 0xf8, 0xbd, - 0x44, 0x7d, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x4d, - 0xe8, 0x68, 0x29, 0x69, 0x40, 0x18, 0x7d, 0x21, - 0x09, 0x01, 0x44, 0x18, 0x20, 0x1c, 0x03, 0xf0, - 0x0b, 0xfb, 0x00, 0x28, 0x0a, 0xd0, 0x03, 0xf0, - 0xcf, 0xfb, 0x01, 0x1b, 0x28, 0x69, 0xf1, 0xf7, - 0x7d, 0xf8, 0x01, 0x30, 0x3c, 0x00, 0x18, 0xf6, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7, - 0xb2, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xa0, 0x7d, - 0x01, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x60, 0x68, - 0x80, 0x25, 0xa8, 0x43, 0x60, 0x60, 0x20, 0x68, - 0x28, 0x43, 0x20, 0x60, 0x0d, 0x4e, 0x30, 0x1c, - 0x10, 0x30, 0xf3, 0xf7, 0xc8, 0xfc, 0x00, 0x28, - 0x03, 0xd1, 0x07, 0x21, 0x85, 0x20, 0xf1, 0xf7, - 0x2a, 0xfe, 0x08, 0x48, 0x00, 0x21, 0x3c, 0x00, - 0x54, 0xf6, 0x00, 0x00, 0x80, 0x68, 0x41, 0x63, - 0xc0, 0x6c, 0x10, 0x30, 0x70, 0x61, 0x01, 0x20, - 0x30, 0x61, 0x20, 0x68, 0xa8, 0x43, 0x20, 0x60, - 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x00, 0x07, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x24, 0x7e, 0x01, 0x00, - 0x01, 0x1c, 0x00, 0x20, 0x05, 0x29, 0x80, 0xb5, - 0x09, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, - 0x3c, 0x00, 0x90, 0xf6, 0x00, 0x00, 0x03, 0x00, - 0xff, 0xf7, 0xcf, 0xfc, 0x80, 0xbd, 0x01, 0x22, - 0x92, 0x02, 0x80, 0xb5, 0x00, 0x21, 0x07, 0x20, - 0x04, 0xf0, 0xab, 0xf9, 0x80, 0xbd, 0x80, 0xb5, - 0x40, 0x22, 0x00, 0x21, 0x00, 0x20, 0x04, 0xf0, - 0xa4, 0xf9, 0x03, 0x22, 0x00, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x70, 0xb5, - 0x0e, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x08, 0x28, - 0x0e, 0xd1, 0x3c, 0x00, 0xcc, 0xf6, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0xfc, 0x0e, 0x28, 0x01, 0xd1, - 0x14, 0x20, 0x00, 0xe0, 0x10, 0x20, 0xe1, 0x03, - 0x00, 0xd5, 0x01, 0x38, 0xc0, 0x06, 0x0a, 0x49, - 0xc0, 0x0e, 0x88, 0x71, 0x08, 0xe0, 0x09, 0x2d, - 0x06, 0xd1, 0xa0, 0x04, 0x01, 0xd5, 0x00, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0xf3, 0xf7, 0xb0, 0xf9, - 0x34, 0x40, 0x21, 0x1c, 0x32, 0x1c, 0x28, 0x1c, - 0x04, 0xf0, 0x7a, 0xf9, 0x3c, 0x00, 0x08, 0xf7, - 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x80, - 0x07, 0x00, 0x70, 0xb5, 0x00, 0x24, 0x13, 0x29, - 0x11, 0xd8, 0x00, 0x28, 0x01, 0xd1, 0x08, 0x4e, - 0x08, 0x25, 0x01, 0x28, 0x01, 0xd1, 0x07, 0x4e, - 0x09, 0x25, 0x00, 0xf0, 0x78, 0xfa, 0x00, 0x28, - 0x05, 0xd0, 0x02, 0x1c, 0x31, 0x1c, 0x28, 0x1c, - 0xff, 0xf7, 0xc3, 0xff, 0x01, 0x24, 0x20, 0x1c, - 0x70, 0xbd, 0xf8, 0xff, 0x07, 0x00, 0x3c, 0x00, - 0x44, 0xf7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x01, 0x22, 0xd2, 0x02, 0x80, 0xb5, 0x00, 0x21, - 0x07, 0x20, 0x04, 0xf0, 0x53, 0xf9, 0x80, 0xbd, - 0x0f, 0x22, 0x12, 0x04, 0x07, 0x21, 0x49, 0x04, - 0x80, 0xb5, 0x09, 0x20, 0x04, 0xf0, 0x4a, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, - 0x04, 0x20, 0x04, 0xf0, 0x1b, 0xfc, 0x40, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x17, 0xfc, 0x04, 0x49, - 0x3c, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x20, - 0x88, 0x60, 0x02, 0x48, 0x09, 0x69, 0x20, 0x30, - 0xff, 0xf7, 0x09, 0xfe, 0x80, 0xbd, 0x64, 0x73, - 0x01, 0x00, 0xb0, 0xb5, 0x60, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0x07, 0xfc, 0x11, 0x4d, 0x00, 0x24, - 0x00, 0x22, 0x04, 0x20, 0x29, 0x5d, 0x04, 0xf0, - 0x28, 0xf9, 0x0c, 0x20, 0x03, 0xf0, 0x9b, 0xfb, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x05, 0x2c, - 0xf2, 0xd3, 0x3c, 0x00, 0xbc, 0xf7, 0x00, 0x00, - 0x0f, 0x22, 0x00, 0x21, 0x0a, 0x20, 0x04, 0xf0, - 0x1b, 0xf9, 0x61, 0x21, 0x00, 0x20, 0x04, 0xf0, - 0xef, 0xfb, 0x06, 0x49, 0x01, 0x20, 0x88, 0x60, - 0x04, 0x48, 0x09, 0x69, 0x20, 0x30, 0xff, 0xf7, - 0xcd, 0xfd, 0xff, 0x20, 0x2d, 0x30, 0xb0, 0xbd, - 0xa8, 0x58, 0x01, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x12, 0x48, 0xc6, 0x70, - 0x01, 0x20, 0xff, 0xf7, 0x3c, 0x00, 0xf8, 0xf7, - 0x00, 0x00, 0xfd, 0xfb, 0x01, 0x27, 0xbf, 0x02, - 0x04, 0x1c, 0xb8, 0x43, 0x01, 0x1c, 0x01, 0x20, - 0x04, 0xf0, 0xd1, 0xfb, 0x03, 0x20, 0xff, 0xf7, - 0xf2, 0xfb, 0x05, 0x1c, 0xb8, 0x43, 0x01, 0x1c, - 0x03, 0x20, 0x04, 0xf0, 0xc8, 0xfb, 0x30, 0x1c, - 0x00, 0xf0, 0x9f, 0xf9, 0x00, 0xf0, 0x57, 0xf8, - 0x21, 0x1c, 0x01, 0x20, 0x04, 0xf0, 0xbf, 0xfb, - 0x29, 0x1c, 0x03, 0x20, 0x04, 0xf0, 0x3c, 0x00, - 0x34, 0xf8, 0x00, 0x00, 0xbb, 0xfb, 0x00, 0x20, - 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x22, 0x40, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0xd8, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x01, 0x24, 0x09, 0x20, - 0xff, 0xf7, 0xcc, 0xfb, 0x0f, 0x21, 0x09, 0x04, - 0x88, 0x43, 0x03, 0x21, 0x89, 0x04, 0xe2, 0x04, - 0x05, 0x2d, 0x12, 0x4e, 0x20, 0xd2, 0x02, 0xa3, - 0x3c, 0x00, 0x70, 0xf8, 0x00, 0x00, 0x5b, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x09, - 0x0c, 0x10, 0x03, 0x00, 0x03, 0x21, 0x09, 0x04, - 0x0c, 0xe0, 0x01, 0x21, 0x09, 0x04, 0x09, 0xe0, - 0x01, 0x21, 0x49, 0x04, 0x06, 0xe0, 0xf3, 0x68, - 0x04, 0x2b, 0x05, 0xd9, 0x02, 0xe0, 0xf3, 0x68, - 0x04, 0x2b, 0x01, 0xd8, 0x01, 0x43, 0x01, 0xe0, - 0x10, 0x43, 0x01, 0x1c, 0x09, 0x20, 0x04, 0xf0, - 0x80, 0xfb, 0x3c, 0x00, 0xac, 0xf8, 0x00, 0x00, - 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x24, 0xfb, 0xe7, - 0x64, 0x73, 0x01, 0x00, 0x01, 0x21, 0xc9, 0x05, - 0x00, 0x28, 0x80, 0xb5, 0x02, 0xd0, 0x0a, 0x1c, - 0x00, 0x21, 0x00, 0xe0, 0x00, 0x22, 0x04, 0x20, - 0x04, 0xf0, 0x96, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0xf0, 0xb5, 0x91, 0xb0, 0x00, 0x26, 0x40, 0x21, - 0x01, 0xa8, 0xf0, 0xf7, 0xdd, 0xfd, 0x2a, 0x4f, - 0xb8, 0x79, 0x01, 0x22, 0x3c, 0x00, 0xe8, 0xf8, - 0x00, 0x00, 0x52, 0x03, 0x00, 0x90, 0x00, 0x21, - 0x06, 0x20, 0x04, 0xf0, 0x84, 0xf8, 0x60, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x58, 0xfb, 0x61, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x54, 0xfb, 0x08, 0x20, - 0x03, 0xf0, 0xef, 0xfa, 0x00, 0x24, 0x0f, 0x20, - 0xff, 0xf7, 0x71, 0xfb, 0x40, 0x05, 0x05, 0x0f, - 0xa8, 0x00, 0x01, 0xa9, 0x09, 0x58, 0x01, 0xaa, - 0x01, 0x31, 0x01, 0x34, 0x0c, 0x2c, 0x3c, 0x00, - 0x24, 0xf9, 0x00, 0x00, 0x11, 0x50, 0xf1, 0xd3, - 0x00, 0x20, 0x81, 0x00, 0x01, 0xaa, 0x51, 0x58, - 0xb1, 0x42, 0x01, 0xd9, 0x0e, 0x1c, 0x05, 0x1c, - 0x01, 0x30, 0x10, 0x28, 0xf5, 0xd3, 0x06, 0x20, - 0xff, 0xf7, 0x58, 0xfb, 0x0f, 0x21, 0x49, 0x02, - 0x88, 0x43, 0x69, 0x02, 0x08, 0x43, 0x01, 0x21, - 0x49, 0x03, 0x01, 0x43, 0x06, 0x20, 0x04, 0xf0, - 0x29, 0xfb, 0x0d, 0x48, 0x84, 0x68, 0x64, 0x34, - 0x3c, 0x00, 0x60, 0xf9, 0x00, 0x00, 0x08, 0xe0, - 0x20, 0x1c, 0x03, 0xf0, 0x5a, 0xf9, 0x00, 0x28, - 0x03, 0xd0, 0x01, 0x21, 0x95, 0x20, 0xf1, 0xf7, - 0x98, 0xfc, 0x0f, 0x20, 0xff, 0xf7, 0x3d, 0xfb, - 0x00, 0x04, 0xf1, 0xd5, 0x87, 0x20, 0x03, 0xf0, - 0xb2, 0xfa, 0x00, 0x98, 0xb8, 0x71, 0x11, 0xb0, - 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x10, 0xb5, 0x17, 0x4c, 0x61, 0x69, - 0x00, 0x29, 0x3c, 0x00, 0x9c, 0xf9, 0x00, 0x00, - 0x04, 0xd0, 0x0a, 0x21, 0x13, 0x20, 0x03, 0xf0, - 0x47, 0xfe, 0x10, 0xbd, 0x01, 0x1c, 0x12, 0x48, - 0x01, 0x29, 0x00, 0x78, 0x0c, 0xd0, 0x11, 0x29, - 0xf7, 0xd1, 0x05, 0x28, 0x03, 0xd1, 0x01, 0x21, - 0x13, 0x20, 0xf1, 0xf7, 0x71, 0xfc, 0x20, 0x78, - 0x07, 0x28, 0xee, 0xd1, 0x02, 0x21, 0x0a, 0xe0, - 0x05, 0x28, 0x07, 0xd0, 0x06, 0x28, 0x0a, 0xd0, - 0x07, 0x28, 0xf7, 0xd0, 0x3c, 0x00, 0xd8, 0xf9, - 0x00, 0x00, 0x08, 0x28, 0xe4, 0xd1, 0x00, 0x20, - 0x05, 0xe0, 0x01, 0x21, 0x13, 0x20, 0xf1, 0xf7, - 0x5e, 0xfc, 0x10, 0xbd, 0x01, 0x20, 0x02, 0xf0, - 0x6c, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78, - 0x01, 0x00, 0x0d, 0x49, 0x80, 0xb5, 0x09, 0x78, - 0x03, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x0b, 0xd0, - 0x07, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x07, 0xd0, - 0x02, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x3c, 0x00, - 0x14, 0xfa, 0x00, 0x00, 0x03, 0xd1, 0x05, 0x29, - 0x09, 0xd1, 0x00, 0x28, 0x07, 0xd0, 0x00, 0x20, - 0xfc, 0xf7, 0x28, 0xfd, 0x00, 0x22, 0x13, 0x21, - 0x11, 0x20, 0x03, 0xf0, 0xc1, 0xfe, 0x80, 0xbd, - 0x7c, 0x78, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0x08, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xde, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1, 0xf1, 0xf7, - 0x3c, 0x00, 0x50, 0xfa, 0x00, 0x00, 0x33, 0xff, - 0x05, 0x49, 0x05, 0x4a, 0x08, 0x68, 0x50, 0x61, - 0x48, 0x68, 0x90, 0x61, 0x01, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xb0, 0x58, - 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x48, - 0x80, 0xb5, 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1, - 0xf1, 0xf7, 0x1d, 0xff, 0x05, 0x49, 0x05, 0x4a, - 0x08, 0x68, 0x90, 0x61, 0x48, 0x68, 0x50, 0x61, - 0x01, 0x20, 0x3c, 0x00, 0x8c, 0xfa, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x11, 0xb5, 0x00, 0xab, 0x59, 0x78, 0x14, 0x48, - 0x01, 0x23, 0xc0, 0x56, 0x00, 0x22, 0x09, 0x18, - 0x0b, 0x06, 0x1b, 0x16, 0x13, 0x21, 0x13, 0x2b, - 0x02, 0xdd, 0x00, 0xab, 0x59, 0x70, 0x07, 0xe0, - 0x00, 0x2b, 0x02, 0xda, 0x00, 0xab, 0x5a, 0x70, - 0x02, 0xe0, 0x1c, 0x1c, 0x3c, 0x00, 0xc8, 0xfa, - 0x00, 0x00, 0x00, 0xab, 0x5c, 0x70, 0x00, 0xab, - 0x1b, 0x78, 0x18, 0x18, 0x00, 0x06, 0x00, 0x16, - 0x13, 0x28, 0x02, 0xdd, 0x00, 0xab, 0x19, 0x70, - 0x06, 0xe0, 0x00, 0x28, 0x02, 0xda, 0x00, 0xab, - 0x1a, 0x70, 0x01, 0xe0, 0x00, 0xab, 0x18, 0x70, - 0x00, 0x98, 0x18, 0xbd, 0x00, 0x00, 0x64, 0x73, - 0x01, 0x00, 0x38, 0xb5, 0x0c, 0x1c, 0x15, 0x49, - 0x00, 0xab, 0x49, 0x68, 0x13, 0x25, 0x3c, 0x00, - 0x04, 0xfb, 0x00, 0x00, 0x00, 0x91, 0x59, 0x78, - 0x09, 0x18, 0x59, 0x70, 0x19, 0x78, 0x08, 0x18, - 0x18, 0x70, 0x19, 0x88, 0x10, 0x48, 0x02, 0x2c, - 0xc1, 0x80, 0x01, 0xd0, 0x00, 0x2c, 0x0b, 0xd1, - 0x00, 0xab, 0x18, 0x78, 0x13, 0x28, 0x00, 0xd9, - 0x1d, 0x70, 0x00, 0xab, 0x19, 0x78, 0x00, 0x20, - 0xff, 0xf7, 0xee, 0xfd, 0x02, 0x2c, 0x01, 0xd0, - 0x01, 0x2c, 0x09, 0xd1, 0x00, 0xab, 0x58, 0x78, - 0x3c, 0x00, 0x40, 0xfb, 0x00, 0x00, 0x13, 0x28, - 0x00, 0xd9, 0x5d, 0x70, 0x00, 0xab, 0x59, 0x78, - 0x01, 0x20, 0xff, 0xf7, 0xe0, 0xfd, 0x38, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xa0, 0x58, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0e, 0x28, 0x13, 0x4d, 0x04, 0xd0, - 0x12, 0x49, 0xa0, 0x00, 0x00, 0x19, 0x4d, 0x39, - 0x45, 0x18, 0x06, 0x20, 0xff, 0xf7, 0x3d, 0xfa, - 0x0f, 0x49, 0x3c, 0x00, 0x7c, 0xfb, 0x00, 0x00, - 0xe0, 0x22, 0x09, 0x19, 0x10, 0x39, 0xc9, 0x7b, - 0x90, 0x43, 0x49, 0x01, 0x11, 0x40, 0x01, 0x43, - 0x06, 0x20, 0x04, 0xf0, 0x0d, 0xfa, 0x29, 0x1c, - 0x05, 0x20, 0x09, 0x4a, 0x03, 0xf0, 0x30, 0xff, - 0x08, 0x48, 0x1f, 0x22, 0x00, 0x19, 0x10, 0x38, - 0xc0, 0x7b, 0xc1, 0x04, 0xd2, 0x04, 0x08, 0x20, - 0x03, 0xf0, 0x26, 0xff, 0xb0, 0xbd, 0x00, 0x00, - 0xb4, 0x09, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xfb, - 0x00, 0x00, 0x14, 0x45, 0x01, 0x00, 0xff, 0x0f, - 0x00, 0x00, 0xc0, 0x58, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x49, 0x00, 0x28, - 0x01, 0xd1, 0x08, 0x68, 0x80, 0xbd, 0x01, 0x28, - 0x01, 0xd1, 0x48, 0x68, 0x80, 0xbd, 0xf1, 0xf7, - 0x90, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x7c, 0x73, - 0x01, 0x00, 0x01, 0x48, 0x40, 0x68, 0x70, 0x47, - 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0xfb, 0x00, 0x00, 0x04, 0x48, 0x01, 0x23, - 0x04, 0x49, 0xc0, 0x56, 0xc9, 0x56, 0x40, 0x18, - 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00, - 0xa0, 0x58, 0x01, 0x00, 0xa2, 0x58, 0x01, 0x00, - 0x01, 0x48, 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, - 0x64, 0x73, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x0e, 0x1c, 0x00, 0xf0, 0x55, 0xf9, 0x04, 0x1c, - 0x00, 0xf0, 0x58, 0xf9, 0x00, 0x28, 0x2c, 0xd0, - 0x3c, 0x00, 0x30, 0xfc, 0x00, 0x00, 0xb3, 0x00, - 0x60, 0x1e, 0x00, 0x2d, 0x1c, 0x4e, 0x19, 0x49, - 0x1a, 0x4a, 0x06, 0xd1, 0x0b, 0x25, 0x0e, 0x2c, - 0x00, 0xd1, 0x19, 0x4a, 0xd2, 0x58, 0x08, 0x56, - 0x08, 0xe0, 0x01, 0x2d, 0x1c, 0xd1, 0x9a, 0x18, - 0x04, 0x36, 0x08, 0x18, 0x08, 0x25, 0x0e, 0x23, - 0x12, 0x6d, 0xc0, 0x56, 0x07, 0x1c, 0x47, 0x43, - 0xfb, 0x00, 0xdf, 0x19, 0x12, 0x4b, 0x3f, 0x21, - 0x58, 0x43, 0x3c, 0x00, 0x6c, 0xfc, 0x00, 0x00, - 0x11, 0x4b, 0xa9, 0x40, 0x0c, 0x1c, 0x38, 0x18, - 0xc0, 0x18, 0x14, 0x40, 0xec, 0x40, 0xc0, 0x11, - 0x60, 0x43, 0x1b, 0x0a, 0xc0, 0x18, 0x80, 0x12, - 0x03, 0xd1, 0x01, 0x20, 0x04, 0xe0, 0x00, 0x20, - 0xf8, 0xbd, 0x3f, 0x28, 0x00, 0xdd, 0x3f, 0x20, - 0x30, 0x60, 0xa8, 0x40, 0x08, 0x40, 0x8a, 0x43, - 0x10, 0x43, 0xf5, 0xe7, 0xcc, 0x59, 0x01, 0x00, - 0xdc, 0x58, 0x01, 0x00, 0x3c, 0x00, 0xa8, 0xfc, - 0x00, 0x00, 0x7c, 0x73, 0x01, 0x00, 0x7c, 0x59, - 0x01, 0x00, 0x06, 0x06, 0x00, 0x00, 0x26, 0x00, - 0x02, 0x00, 0x03, 0x48, 0x08, 0xb5, 0xc0, 0x88, - 0x00, 0xab, 0x18, 0x80, 0x00, 0x98, 0x08, 0xbd, - 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0xb0, 0xb5, - 0x0b, 0x4d, 0x09, 0x4c, 0x0e, 0x20, 0x6c, 0x60, - 0xff, 0xf7, 0x8d, 0xf9, 0x09, 0x49, 0x02, 0x1c, - 0xc8, 0x60, 0x01, 0x06, 0x09, 0x0e, 0x3c, 0x00, - 0xe4, 0xfc, 0x00, 0x00, 0x13, 0x3a, 0x02, 0x2a, - 0x02, 0xd9, 0x17, 0x38, 0x04, 0x28, 0x00, 0xd8, - 0x00, 0x21, 0x08, 0x1c, 0x6c, 0x60, 0xb0, 0xbd, - 0x04, 0x18, 0x02, 0x00, 0x60, 0x00, 0x07, 0x00, - 0x64, 0x73, 0x01, 0x00, 0x0a, 0x48, 0x98, 0xb5, - 0x02, 0x78, 0x13, 0x21, 0x14, 0x2a, 0x00, 0xd3, - 0x01, 0x70, 0x42, 0x78, 0x14, 0x2a, 0x00, 0xd3, - 0x41, 0x70, 0x06, 0x4c, 0x60, 0x68, 0xff, 0xf7, - 0x3c, 0x00, 0x20, 0xfd, 0x00, 0x00, 0xbd, 0xfe, - 0x00, 0x90, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80, - 0x00, 0xf0, 0x75, 0xff, 0x98, 0xbd, 0xa4, 0x58, - 0x01, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x41, 0x78, 0x01, 0x20, 0xff, 0xf7, - 0xe6, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xa6, 0x58, - 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x01, 0x78, - 0x00, 0x20, 0xff, 0xf7, 0xdc, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xfd, 0x00, 0x00, - 0xa6, 0x58, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x4d, - 0x00, 0x24, 0x20, 0x1c, 0xff, 0xf7, 0x44, 0xf9, - 0x01, 0x34, 0x10, 0x2c, 0x01, 0xc5, 0xf8, 0xd3, - 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x44, 0x01, 0x00, - 0x04, 0x49, 0x80, 0xb5, 0x88, 0x70, 0x04, 0x49, - 0x80, 0x00, 0x09, 0x58, 0x07, 0x20, 0x04, 0xf0, - 0x0f, 0xf9, 0x80, 0xbd, 0x64, 0x73, 0x01, 0x00, - 0xd0, 0x58, 0x01, 0x00, 0x3c, 0x00, 0x98, 0xfd, - 0x00, 0x00, 0xb0, 0xb5, 0x3f, 0x24, 0x02, 0x1c, - 0x00, 0x2a, 0x01, 0xd1, 0x08, 0x20, 0x0b, 0x23, - 0x01, 0x2a, 0x01, 0xd1, 0x09, 0x20, 0x08, 0x23, - 0x25, 0x1c, 0x9d, 0x40, 0x00, 0x29, 0x00, 0xd1, - 0x01, 0x21, 0x3f, 0x29, 0x00, 0xd9, 0x21, 0x1c, - 0x99, 0x40, 0x0a, 0x1c, 0x29, 0x1c, 0xff, 0xf7, - 0x7c, 0xfc, 0xb0, 0xbd, 0x00, 0x00, 0x91, 0xb5, - 0x12, 0x49, 0x00, 0xab, 0x1a, 0x78, 0x3c, 0x00, - 0xd4, 0xfd, 0x00, 0x00, 0x08, 0x78, 0x11, 0x4c, - 0x80, 0x18, 0x00, 0x06, 0x00, 0x0e, 0x20, 0x70, - 0x49, 0x78, 0x5a, 0x78, 0x89, 0x18, 0x09, 0x06, - 0x09, 0x0e, 0x13, 0x22, 0x13, 0x28, 0x61, 0x70, - 0x00, 0xd9, 0x22, 0x70, 0x13, 0x29, 0x00, 0xd9, - 0x62, 0x70, 0x08, 0x49, 0x08, 0x48, 0x06, 0x39, - 0xc9, 0x88, 0x81, 0x80, 0x21, 0x78, 0x00, 0x20, - 0xff, 0xf7, 0x82, 0xfc, 0x61, 0x78, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0xfe, 0x00, 0x00, 0xff, 0xf7, - 0x7e, 0xfc, 0x98, 0xbd, 0x00, 0x00, 0xa4, 0x58, - 0x01, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x64, 0x73, - 0x01, 0x00, 0x70, 0xb5, 0x1d, 0x4d, 0x04, 0x1c, - 0x28, 0x78, 0x0e, 0x1c, 0x03, 0x28, 0x03, 0xd1, - 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7, 0x35, 0xfa, - 0x20, 0x1c, 0x00, 0xf0, 0x4e, 0xf8, 0x00, 0x28, - 0x25, 0xd0, 0x28, 0x78, 0x01, 0x28, 0x0a, 0xd1, - 0x68, 0x68, 0x3c, 0x00, 0x4c, 0xfe, 0x00, 0x00, - 0x00, 0x28, 0x07, 0xd0, 0x01, 0x21, 0x11, 0x20, - 0x03, 0xf0, 0xee, 0xfb, 0x01, 0x20, 0x69, 0x68, - 0xf0, 0xf7, 0xbd, 0xfa, 0x6c, 0x70, 0x6e, 0x60, - 0x20, 0x1c, 0xff, 0xf7, 0xc1, 0xfc, 0x04, 0x1c, - 0x00, 0xf0, 0xd4, 0xfe, 0x00, 0x2c, 0x02, 0xd0, - 0x68, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xf6, 0xf7, - 0xd9, 0xf8, 0x70, 0xbd, 0x01, 0x20, 0x28, 0x70, - 0x01, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x88, 0xfe, - 0x00, 0x00, 0x11, 0x20, 0x03, 0xf0, 0x9f, 0xfb, - 0x70, 0xbd, 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7, - 0x06, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x9c, 0x73, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x05, 0xd1, - 0x00, 0x29, 0x04, 0xd0, 0x01, 0x29, 0x01, 0xd1, - 0xf6, 0xf7, 0xbf, 0xf8, 0x80, 0xbd, 0x05, 0x49, - 0x08, 0x78, 0x03, 0x28, 0x02, 0xd0, 0x00, 0x20, - 0x08, 0x70, 0x80, 0xbd, 0x03, 0x21, 0x3c, 0x00, - 0xc4, 0xfe, 0x00, 0x00, 0x11, 0x20, 0xf1, 0xf7, - 0xed, 0xf9, 0x80, 0xbd, 0x9c, 0x73, 0x01, 0x00, - 0x01, 0x48, 0x40, 0x78, 0x70, 0x47, 0x00, 0x00, - 0x9c, 0x73, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x39, - 0x01, 0x20, 0x0e, 0x29, 0x00, 0xd3, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x20, 0x78, 0x01, 0x28, 0x0e, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x0d, 0xd0, 0x01, 0x21, 0x11, 0x20, - 0x3c, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0xf0, - 0x98, 0xfb, 0x01, 0x20, 0x61, 0x68, 0xf0, 0xf7, - 0x67, 0xfa, 0x00, 0x20, 0x60, 0x60, 0x20, 0x70, - 0x01, 0xe0, 0x03, 0x28, 0x0e, 0xd0, 0x00, 0x21, - 0x11, 0x20, 0x03, 0xf0, 0x8a, 0xfb, 0xff, 0xf7, - 0x24, 0xfc, 0xff, 0xf7, 0xc0, 0xfb, 0x05, 0x49, - 0x08, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x08, 0x73, - 0x03, 0x20, 0x20, 0x70, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xff, 0x00, 0x00, - 0x9c, 0x73, 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x0d, 0x4c, 0x20, 0x78, 0x03, 0x28, - 0x13, 0xd1, 0x00, 0x20, 0x20, 0x70, 0x0b, 0x48, - 0x01, 0x7b, 0x01, 0x22, 0x11, 0x43, 0x01, 0x73, - 0xff, 0xf7, 0x70, 0xfc, 0xff, 0xf7, 0x18, 0xfc, - 0x00, 0x28, 0x06, 0xd0, 0x02, 0x21, 0x21, 0x70, - 0x01, 0x1c, 0x00, 0x22, 0x11, 0x20, 0x03, 0xf0, - 0x2b, 0xfb, 0x01, 0x20, 0x3c, 0x00, 0x78, 0xff, - 0x00, 0x00, 0x10, 0xbd, 0x00, 0x00, 0x9c, 0x73, - 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x80, 0xb5, - 0x05, 0x49, 0x00, 0x28, 0x04, 0xd0, 0x00, 0x20, - 0x08, 0x60, 0x03, 0xf0, 0x5a, 0xfa, 0x80, 0xbd, - 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd, 0x80, 0x5a, - 0x01, 0x00, 0xfe, 0xb5, 0x05, 0x1c, 0x80, 0x35, - 0x04, 0x1c, 0xa8, 0x68, 0x29, 0x79, 0x06, 0x68, - 0x20, 0x1c, 0xa0, 0x30, 0x02, 0x29, 0x3c, 0x00, - 0xb4, 0xff, 0x00, 0x00, 0x1c, 0xd1, 0x69, 0x79, - 0x08, 0x29, 0x01, 0xd0, 0x0c, 0x29, 0x17, 0xd1, - 0x01, 0x21, 0x61, 0x62, 0xa9, 0x68, 0x09, 0x68, - 0x09, 0x8b, 0x01, 0x82, 0xa9, 0x69, 0x01, 0x91, - 0x00, 0x8a, 0xc0, 0x06, 0x05, 0xd5, 0x60, 0x68, - 0x00, 0x88, 0x40, 0x05, 0x01, 0xd4, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x02, 0x90, 0x05, 0x20, - 0x01, 0xa9, 0x02, 0xf0, 0xb7, 0xf9, 0x02, 0xe0, - 0x3c, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x21, - 0x61, 0x62, 0x01, 0x82, 0xa9, 0x68, 0x1a, 0x23, - 0x0a, 0x89, 0x67, 0x6a, 0x18, 0x1c, 0x00, 0x2f, - 0x00, 0xd1, 0x18, 0x20, 0x10, 0x1a, 0x08, 0x81, - 0xa8, 0x68, 0x01, 0x68, 0x62, 0x6a, 0x00, 0x2a, - 0x00, 0xd1, 0x18, 0x23, 0xc9, 0x18, 0x01, 0x60, - 0xa8, 0x68, 0x41, 0xc4, 0x30, 0x88, 0x08, 0x3c, - 0x40, 0x04, 0x03, 0xd5, 0x20, 0x1c, 0xf7, 0xf7, - 0xbc, 0xf9, 0x3c, 0x00, 0x2c, 0x00, 0x01, 0x00, - 0xfe, 0xbd, 0x00, 0x21, 0xe1, 0x61, 0x30, 0x79, - 0xc0, 0x07, 0x03, 0xd4, 0x20, 0x1c, 0xf7, 0xf7, - 0x91, 0xfe, 0xf5, 0xe7, 0x20, 0x1c, 0xf7, 0xf7, - 0x43, 0xff, 0xf1, 0xe7, 0xf7, 0xb5, 0x05, 0x1c, - 0x0a, 0x30, 0x06, 0x1c, 0xf5, 0xf7, 0xa4, 0xfa, - 0x14, 0x4f, 0x04, 0x1c, 0x39, 0x88, 0xf2, 0xf7, - 0x83, 0xfe, 0x32, 0x88, 0x78, 0x68, 0x02, 0x80, - 0x72, 0x88, 0x02, 0x30, 0x3c, 0x00, 0x68, 0x00, - 0x01, 0x00, 0x02, 0x80, 0xb1, 0x88, 0x41, 0x80, - 0x69, 0x88, 0x02, 0x9a, 0x20, 0x1c, 0xfa, 0xf7, - 0xce, 0xfe, 0x0b, 0x4d, 0x08, 0x35, 0x68, 0x80, - 0xfb, 0xf7, 0x2b, 0xfe, 0x01, 0x21, 0x09, 0x03, - 0x00, 0x28, 0x28, 0x88, 0x01, 0xd0, 0x88, 0x43, - 0x00, 0xe0, 0x08, 0x43, 0x28, 0x80, 0x04, 0x48, - 0x00, 0x22, 0x00, 0x21, 0x14, 0x30, 0xf2, 0xf7, - 0x32, 0xfe, 0x20, 0x1c, 0xfc, 0xf7, 0x3c, 0x00, - 0xa4, 0x00, 0x01, 0x00, 0x85, 0xfa, 0xfe, 0xbd, - 0x24, 0x7b, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x11, 0x49, 0x20, 0x1c, 0xff, 0x30, 0x69, 0x30, - 0x0e, 0xc9, 0x0e, 0xc0, 0x20, 0x1c, 0xff, 0x30, - 0x24, 0x22, 0x75, 0x30, 0x0e, 0x49, 0xf0, 0xf7, - 0x17, 0xfa, 0x20, 0x1c, 0xff, 0x30, 0x3c, 0x22, - 0x99, 0x30, 0x0c, 0x49, 0xf0, 0xf7, 0x6c, 0xfa, - 0x20, 0x1c, 0xff, 0x30, 0x10, 0x22, 0xd5, 0x30, - 0x3c, 0x00, 0xe0, 0x00, 0x01, 0x00, 0x09, 0x49, - 0xf0, 0xf7, 0x09, 0xfa, 0x20, 0x1c, 0xff, 0x30, - 0x28, 0x22, 0xe5, 0x30, 0x07, 0x49, 0xf0, 0xf7, - 0x5e, 0xfa, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x80, - 0x07, 0x00, 0x40, 0x63, 0x01, 0x00, 0x0c, 0x80, - 0x07, 0x00, 0x30, 0x80, 0x07, 0x00, 0x80, 0x80, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xb0, 0xb5, - 0x00, 0x28, 0x3f, 0xd0, 0x21, 0x48, 0x41, 0x68, - 0x21, 0x4c, 0x3c, 0x00, 0x1c, 0x01, 0x01, 0x00, - 0x61, 0x60, 0xc1, 0x68, 0xe1, 0x60, 0x01, 0x69, - 0x21, 0x61, 0x80, 0x6a, 0xa0, 0x62, 0x1e, 0x49, - 0x1c, 0x48, 0x09, 0x68, 0x14, 0x38, 0x41, 0x64, - 0x1c, 0x48, 0x25, 0x1c, 0x3c, 0x35, 0x0f, 0xc8, - 0x0f, 0xc5, 0x20, 0x1c, 0x80, 0x22, 0x4c, 0x30, - 0x19, 0x49, 0xf0, 0xf7, 0x33, 0xfa, 0x14, 0x22, - 0x20, 0x1c, 0xcc, 0x30, 0x17, 0x49, 0xf0, 0xf7, - 0x2d, 0xfa, 0x38, 0x22, 0x3c, 0x00, 0x58, 0x01, - 0x01, 0x00, 0x20, 0x1c, 0xe0, 0x30, 0x15, 0x49, - 0xf0, 0xf7, 0x27, 0xfa, 0x20, 0x1c, 0xff, 0x30, - 0x50, 0x22, 0x19, 0x30, 0x13, 0x49, 0xf0, 0xf7, - 0x20, 0xfa, 0x83, 0x20, 0x80, 0x00, 0x14, 0x22, - 0x20, 0x18, 0x10, 0x49, 0xf0, 0xf7, 0x19, 0xfa, - 0x11, 0x20, 0x40, 0x01, 0x84, 0x22, 0x20, 0x18, - 0x0e, 0x49, 0xf0, 0xf7, 0x12, 0xfa, 0xff, 0xf7, - 0x8e, 0xff, 0xf8, 0xf7, 0x94, 0xfb, 0x3c, 0x00, - 0x94, 0x01, 0x01, 0x00, 0xb0, 0xbd, 0xff, 0xf7, - 0x89, 0xff, 0xb0, 0xbd, 0x00, 0x10, 0x07, 0x00, - 0x40, 0x63, 0x01, 0x00, 0x08, 0x20, 0x07, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00, - 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x00, 0x90, 0x07, 0x00, 0x0c, 0x49, 0x80, 0xb5, - 0x01, 0x20, 0x48, 0x60, 0x0a, 0x48, 0x14, 0x38, - 0x3c, 0x00, 0xd0, 0x01, 0x01, 0x00, 0x00, 0x78, - 0x01, 0x28, 0x04, 0xd0, 0x08, 0x48, 0x94, 0x38, - 0x40, 0x6f, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x20, - 0x00, 0xf0, 0x1f, 0xf8, 0x80, 0xbd, 0x08, 0x68, - 0x00, 0x28, 0xfb, 0xd0, 0x03, 0x48, 0xf2, 0xf7, - 0x7a, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x98, 0x66, - 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5, - 0x00, 0x28, 0x09, 0xd1, 0xf2, 0x21, 0x0f, 0x20, - 0x03, 0xf0, 0x3c, 0x00, 0x0c, 0x02, 0x01, 0x00, - 0x13, 0xfa, 0x00, 0x22, 0x0f, 0x21, 0xf1, 0x20, - 0x03, 0xf0, 0xcc, 0xfa, 0x80, 0xbd, 0x01, 0x20, - 0xf8, 0xf7, 0x6a, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x20, 0x00, 0xf0, - 0xc9, 0xf9, 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0, - 0xff, 0xf9, 0xff, 0xf7, 0x65, 0xf8, 0x0b, 0x49, - 0x00, 0x20, 0x48, 0x74, 0xfb, 0xf7, 0xe6, 0xfa, - 0x09, 0x48, 0x00, 0x68, 0x3c, 0x00, 0x48, 0x02, - 0x01, 0x00, 0x00, 0x28, 0x03, 0xdc, 0x02, 0x21, - 0x40, 0x42, 0xff, 0xf7, 0x52, 0xfc, 0x04, 0x48, - 0x14, 0x30, 0x00, 0x68, 0x00, 0x28, 0x02, 0xd0, - 0x20, 0x1c, 0xf2, 0xf7, 0x42, 0xfe, 0x10, 0xbd, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0xd4, 0x7e, - 0x01, 0x00, 0x06, 0x49, 0x80, 0xb5, 0x09, 0x78, - 0x04, 0x29, 0x05, 0xd0, 0x05, 0x29, 0x03, 0xd0, - 0x06, 0x29, 0x01, 0xd0, 0x07, 0x29, 0x3c, 0x00, - 0x84, 0x02, 0x01, 0x00, 0x01, 0xd1, 0xfe, 0xf7, - 0xbd, 0xfd, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00, - 0x10, 0xb5, 0x09, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x0b, 0xd1, 0x07, 0x48, 0x2c, 0x38, 0x00, 0x8a, - 0xc0, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x01, 0x20, - 0x62, 0x68, 0xf9, 0xf7, 0xc9, 0xfa, 0x01, 0x20, - 0xe0, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0x8c, 0xb5, 0x02, 0x1c, - 0x3c, 0x00, 0xc0, 0x02, 0x01, 0x00, 0x08, 0x1c, - 0x11, 0x1c, 0xfd, 0xf7, 0x28, 0xff, 0x01, 0x90, - 0x00, 0x28, 0x05, 0xd0, 0x17, 0x20, 0x00, 0xab, - 0x18, 0x80, 0x68, 0x46, 0xfd, 0xf7, 0xff, 0xf8, - 0x8c, 0xbd, 0xf1, 0xb5, 0x2e, 0x4c, 0xae, 0xb0, - 0x00, 0x25, 0x25, 0x63, 0x20, 0x69, 0x01, 0x28, - 0x03, 0xd1, 0x01, 0xa8, 0x01, 0xf0, 0xa1, 0xf8, - 0x4e, 0xe0, 0x01, 0x26, 0x28, 0x4f, 0x26, 0x70, - 0x50, 0x3f, 0x3c, 0x00, 0xfc, 0x02, 0x01, 0x00, - 0xb8, 0x69, 0xf8, 0xf7, 0x4f, 0xf8, 0x25, 0x49, - 0x2c, 0x39, 0x00, 0x28, 0x1d, 0xd0, 0xe0, 0x6a, - 0x01, 0x28, 0x1a, 0xd1, 0x08, 0x8a, 0x0f, 0x1c, - 0x80, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x02, 0x20, - 0x62, 0x68, 0xf9, 0xf7, 0x8f, 0xfa, 0x38, 0x8a, - 0x00, 0x07, 0x07, 0xd5, 0xe0, 0x68, 0x01, 0x28, - 0x04, 0xd1, 0x00, 0x21, 0x08, 0x20, 0x62, 0x68, - 0xf9, 0xf7, 0x84, 0xfa, 0x3c, 0x00, 0x38, 0x03, - 0x01, 0x00, 0x00, 0x22, 0x18, 0x21, 0x82, 0x20, - 0x26, 0x63, 0x03, 0xf0, 0x36, 0xfa, 0x25, 0xe0, - 0x08, 0x8a, 0x0e, 0x1c, 0x80, 0x07, 0x04, 0xd5, - 0x00, 0x21, 0x02, 0x20, 0x62, 0x68, 0xf9, 0xf7, - 0x74, 0xfa, 0x30, 0x8a, 0x00, 0x07, 0x07, 0xd5, - 0xe0, 0x68, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x21, - 0x08, 0x20, 0x62, 0x68, 0xf9, 0xf7, 0x69, 0xfa, - 0x30, 0x8a, 0x40, 0x07, 0x04, 0xd5, 0x3c, 0x00, - 0x74, 0x03, 0x01, 0x00, 0x00, 0x22, 0x00, 0x21, - 0x04, 0x20, 0xf9, 0xf7, 0x61, 0xfa, 0x2e, 0x98, - 0x01, 0x28, 0x04, 0xd0, 0x1e, 0x95, 0x09, 0x21, - 0x1b, 0xa8, 0xff, 0xf7, 0x97, 0xff, 0xe5, 0x62, - 0xbd, 0x61, 0xe5, 0x60, 0x2f, 0xb0, 0xf0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x07, 0x20, - 0xfe, 0xf7, 0xa0, 0xfe, 0x00, 0x21, 0x0f, 0x20, - 0x03, 0xf0, 0x44, 0xf9, 0x0c, 0x48, 0x01, 0x78, - 0x3c, 0x00, 0xb0, 0x03, 0x01, 0x00, 0x00, 0x29, - 0x0f, 0xd0, 0x02, 0x21, 0x01, 0x70, 0x88, 0x38, - 0x00, 0x78, 0x00, 0x28, 0x04, 0xd0, 0x07, 0x49, - 0x10, 0x31, 0x48, 0x7c, 0x01, 0x30, 0x48, 0x74, - 0xf2, 0x22, 0x0f, 0x20, 0x05, 0x49, 0x03, 0xf0, - 0xfc, 0xf8, 0x00, 0x22, 0x0f, 0x21, 0xf3, 0x20, - 0x03, 0xf0, 0xe9, 0xf9, 0x80, 0xbd, 0x74, 0x66, - 0x01, 0x00, 0x80, 0x84, 0x1e, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x3c, 0x00, 0xec, 0x03, 0x01, 0x00, - 0xf2, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0x20, 0xf9, - 0x01, 0x2c, 0x0a, 0xd1, 0x08, 0x48, 0x08, 0x49, - 0x00, 0x68, 0x14, 0x39, 0x00, 0x28, 0x05, 0xd0, - 0xc8, 0x78, 0x02, 0x28, 0x02, 0xd1, 0xf7, 0xf7, - 0xaf, 0xfa, 0x10, 0xbd, 0x00, 0x20, 0x48, 0x70, - 0x05, 0x20, 0xfe, 0xf7, 0x65, 0xfe, 0x10, 0xbd, - 0x98, 0x66, 0x01, 0x00, 0xf8, 0xb5, 0x28, 0x4e, - 0x30, 0x21, 0x35, 0x1c, 0x3c, 0x00, 0x28, 0x04, - 0x01, 0x00, 0x60, 0x35, 0x28, 0x89, 0x89, 0x5d, - 0x88, 0x42, 0x03, 0xd1, 0x00, 0x20, 0xff, 0xf7, - 0xf6, 0xfe, 0xf8, 0xbd, 0x34, 0x1c, 0x70, 0x34, - 0x01, 0x21, 0x21, 0x70, 0x41, 0x18, 0x80, 0x19, - 0x30, 0x30, 0x29, 0x81, 0x40, 0x78, 0x1d, 0x4f, - 0x18, 0x3f, 0x38, 0x70, 0x00, 0x28, 0x08, 0xd0, - 0x00, 0x21, 0xfb, 0xf7, 0xc2, 0xf9, 0x00, 0x28, - 0x07, 0xd1, 0x20, 0x78, 0xff, 0xf7, 0x3c, 0x00, - 0x64, 0x04, 0x01, 0x00, 0x9b, 0xff, 0xe7, 0xe7, - 0x01, 0x21, 0x0f, 0x20, 0xf0, 0xf7, 0x1a, 0xff, - 0x14, 0x48, 0x01, 0x21, 0x80, 0x30, 0x81, 0x70, - 0x38, 0x69, 0xfb, 0xf7, 0x55, 0xfa, 0x20, 0x73, - 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0xd6, 0xf8, - 0x70, 0x7a, 0x01, 0x28, 0x0e, 0xd1, 0x0e, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x04, 0xd0, 0x38, 0x78, - 0x02, 0xf0, 0xda, 0xfa, 0x00, 0x28, 0x05, 0xd0, - 0x3c, 0x00, 0xa0, 0x04, 0x01, 0x00, 0x30, 0x7f, - 0x60, 0x73, 0x03, 0x20, 0x20, 0x70, 0x71, 0x89, - 0x05, 0xe0, 0x05, 0x20, 0x20, 0x70, 0xa8, 0x88, - 0xfa, 0xf7, 0x3b, 0xfb, 0x01, 0x1c, 0x00, 0x22, - 0x0f, 0x20, 0x03, 0xf0, 0x86, 0xf8, 0xba, 0xe7, - 0x00, 0x00, 0x04, 0x66, 0x01, 0x00, 0xe4, 0x62, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x02, 0xf0, - 0x6c, 0xfc, 0x36, 0x4b, 0x19, 0x1c, 0xa0, 0x31, - 0x0a, 0x78, 0x3c, 0x00, 0xdc, 0x04, 0x01, 0x00, - 0x10, 0x2a, 0x02, 0xd2, 0x0a, 0x79, 0x10, 0x2a, - 0x01, 0xd3, 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25, - 0x30, 0x4e, 0xca, 0x79, 0x80, 0x36, 0x01, 0x2c, - 0x12, 0xd0, 0x00, 0x25, 0x02, 0x2c, 0x2e, 0xd0, - 0x04, 0x2c, 0x3c, 0xd1, 0x5c, 0x6b, 0x00, 0x2c, - 0x39, 0xd1, 0x9c, 0x6f, 0x00, 0x1b, 0x2a, 0x4c, - 0xa0, 0x42, 0x34, 0xd9, 0xb2, 0x68, 0x98, 0x6a, - 0x82, 0x42, 0x31, 0xd0, 0x3c, 0x00, 0x18, 0x05, - 0x01, 0x00, 0x4d, 0x72, 0x34, 0xe0, 0xb0, 0x68, - 0x9c, 0x6a, 0x02, 0x22, 0xa0, 0x42, 0x21, 0xd1, - 0x58, 0x6b, 0x00, 0x28, 0x1e, 0xd1, 0x00, 0x2d, - 0x1c, 0xd1, 0x48, 0x7a, 0x19, 0x28, 0x20, 0xd0, - 0x34, 0x68, 0x98, 0x6f, 0x64, 0x00, 0x00, 0x1b, - 0x74, 0x68, 0x00, 0x19, 0xff, 0x30, 0x1c, 0x4c, - 0x39, 0x30, 0xa0, 0x42, 0x16, 0xd2, 0x48, 0x79, - 0x8c, 0x79, 0x00, 0x19, 0x30, 0x28, 0x3c, 0x00, - 0x54, 0x05, 0x01, 0x00, 0x11, 0xd3, 0x10, 0x22, - 0x0f, 0xe0, 0x5c, 0x6b, 0x01, 0x2c, 0x06, 0xd1, - 0xb0, 0x68, 0x9a, 0x6a, 0x90, 0x42, 0x00, 0xd1, - 0x4d, 0x72, 0x00, 0x22, 0x05, 0xe0, 0x9c, 0x6f, - 0x00, 0x1b, 0x12, 0x4c, 0xa0, 0x42, 0x00, 0xd3, - 0x20, 0x22, 0x06, 0xe0, 0x4a, 0x7a, 0x19, 0x2a, - 0x01, 0xd2, 0x01, 0x32, 0x4a, 0x72, 0x20, 0x22, - 0xb0, 0x60, 0x30, 0x68, 0x9b, 0x6f, 0x98, 0x42, - 0x3c, 0x00, 0x90, 0x05, 0x01, 0x00, 0x04, 0xd1, - 0x00, 0x2a, 0x00, 0xd1, 0x48, 0x79, 0x4a, 0x71, - 0x06, 0xe0, 0x10, 0x2a, 0x04, 0xd3, 0x70, 0x60, - 0x33, 0x60, 0x48, 0x79, 0x88, 0x71, 0xf6, 0xe7, - 0xca, 0x71, 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0xa3, 0x04, 0x00, 0x00, 0x71, 0x02, - 0x00, 0x00, 0x35, 0x0c, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x81, 0x7b, 0x00, 0x29, 0x05, 0xd0, - 0x00, 0x21, 0x3c, 0x00, 0xcc, 0x05, 0x01, 0x00, - 0x81, 0x73, 0x03, 0x49, 0x0f, 0x20, 0x01, 0xf0, - 0x0f, 0xff, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00, - 0xe9, 0x03, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x02, 0xf0, 0xe2, 0xfb, 0x05, 0x1c, 0x38, 0x4e, - 0x20, 0x1c, 0x37, 0x49, 0x34, 0x1c, 0xa0, 0x34, - 0x10, 0x22, 0x44, 0x39, 0x01, 0x28, 0x2c, 0xd0, - 0x04, 0x28, 0x4e, 0xd1, 0x37, 0x1c, 0x74, 0x36, - 0x09, 0xce, 0x26, 0x78, 0x3c, 0x00, 0x08, 0x06, - 0x01, 0x00, 0xc0, 0x1a, 0x20, 0x2e, 0x04, 0xd1, - 0x30, 0x4e, 0xb0, 0x42, 0x01, 0xd9, 0x00, 0x26, - 0x4e, 0x61, 0x3e, 0x1c, 0x3f, 0x6c, 0x00, 0x2f, - 0x48, 0xd1, 0x77, 0x6c, 0x00, 0x2f, 0x45, 0xd1, - 0xb7, 0x6a, 0x00, 0x2f, 0x3d, 0xd0, 0x77, 0x6b, - 0x00, 0x2f, 0x3a, 0xd0, 0x27, 0x4f, 0xb8, 0x42, - 0x37, 0xd2, 0x60, 0x78, 0x10, 0x28, 0x06, 0xd3, - 0xf0, 0x6f, 0x18, 0x1a, 0x24, 0x4b, 0x3c, 0x00, - 0x44, 0x06, 0x01, 0x00, 0x98, 0x42, 0x01, 0xd2, - 0xe2, 0x70, 0xf5, 0x66, 0x48, 0x69, 0x06, 0x28, - 0x2f, 0xd2, 0x01, 0x30, 0x2c, 0xe0, 0x20, 0x78, - 0x20, 0x28, 0x01, 0xd1, 0x06, 0x23, 0x4b, 0x61, - 0x02, 0x23, 0x23, 0x71, 0xb3, 0x6a, 0x00, 0x2b, - 0x19, 0xd0, 0x49, 0x69, 0x03, 0x29, 0x16, 0xd9, - 0x71, 0x6b, 0x73, 0x6d, 0x59, 0x40, 0x12, 0xd0, - 0xe1, 0x78, 0x10, 0x29, 0x10, 0xd3, 0x61, 0x78, - 0x3c, 0x00, 0x80, 0x06, 0x01, 0x00, 0x33, 0x1c, - 0x10, 0x29, 0x0c, 0xd3, 0xd9, 0x6f, 0x69, 0x1a, - 0x13, 0x4d, 0xa9, 0x42, 0x07, 0xd2, 0x58, 0x6c, - 0x00, 0x28, 0x02, 0xd0, 0x98, 0x6c, 0x00, 0x28, - 0x00, 0xd1, 0x22, 0x71, 0xf8, 0xbd, 0x02, 0x28, - 0xfc, 0xd1, 0x22, 0x70, 0xfa, 0xe7, 0x48, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x38, 0x48, 0x61, - 0x0a, 0x49, 0xf0, 0x6e, 0x40, 0x18, 0x02, 0xf0, - 0xb0, 0xfa, 0x3c, 0x00, 0xbc, 0x06, 0x01, 0x00, - 0x00, 0x28, 0xee, 0xd0, 0x01, 0x20, 0xe0, 0x70, - 0x06, 0x48, 0x28, 0x18, 0xf0, 0x66, 0xe8, 0xe7, - 0xa4, 0x6c, 0x01, 0x00, 0xe2, 0x04, 0x00, 0x00, - 0x1a, 0x06, 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, - 0x00, 0x2d, 0x31, 0x01, 0x00, 0x5a, 0x62, 0x02, - 0x80, 0xb5, 0x41, 0x68, 0x09, 0x79, 0xc9, 0x07, - 0x13, 0xd5, 0xc1, 0x69, 0x00, 0x29, 0x0d, 0xd0, - 0x89, 0x79, 0x02, 0x29, 0x3c, 0x00, 0xf8, 0x06, - 0x01, 0x00, 0x0a, 0xd1, 0x08, 0x21, 0x01, 0x86, - 0x01, 0x1c, 0x38, 0x31, 0x81, 0x62, 0x02, 0x1c, - 0x06, 0x48, 0x04, 0x49, 0xf9, 0xf7, 0xfd, 0xfc, - 0x80, 0xbd, 0xf7, 0xf7, 0xdc, 0xfb, 0x80, 0xbd, - 0xf7, 0xf7, 0x23, 0xfb, 0x80, 0xbd, 0xb9, 0x71, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x10, 0xb5, - 0x00, 0x24, 0x00, 0x28, 0x03, 0xd0, 0x02, 0xf0, - 0xe8, 0xfe, 0x00, 0x28, 0x17, 0xd0, 0x3c, 0x00, - 0x34, 0x07, 0x01, 0x00, 0x0c, 0x4c, 0x01, 0x20, - 0xa0, 0x72, 0x20, 0x68, 0x00, 0x21, 0x41, 0x62, - 0x0a, 0x49, 0x02, 0x68, 0xc9, 0x78, 0x60, 0x32, - 0x91, 0x71, 0x21, 0x89, 0x01, 0x31, 0x21, 0x81, - 0x00, 0x68, 0x40, 0x30, 0x81, 0x83, 0xfb, 0xf7, - 0x31, 0xfc, 0x20, 0x68, 0x00, 0x68, 0xfc, 0xf7, - 0xa1, 0xf9, 0x01, 0x24, 0x20, 0x1c, 0x10, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00, - 0x3c, 0x00, 0x70, 0x07, 0x01, 0x00, 0x7f, 0xb5, - 0x06, 0x1c, 0x1e, 0x48, 0x1d, 0x1c, 0x43, 0x88, - 0x02, 0x88, 0x1c, 0x21, 0x00, 0x20, 0x90, 0xb0, - 0xf0, 0xf7, 0x45, 0xff, 0x03, 0x90, 0x04, 0x68, - 0xff, 0x21, 0x01, 0x31, 0x21, 0x80, 0x08, 0x20, - 0x60, 0x80, 0x06, 0x20, 0x20, 0x71, 0x04, 0x20, - 0x60, 0x71, 0xc0, 0x01, 0x00, 0x2d, 0x00, 0xd1, - 0x08, 0x1c, 0xe0, 0x80, 0x01, 0xa8, 0x02, 0x30, - 0x31, 0x1c, 0x3c, 0x00, 0xac, 0x07, 0x01, 0x00, - 0x05, 0x1c, 0xfa, 0xf7, 0x5f, 0xfa, 0x10, 0x49, - 0x68, 0x46, 0xfa, 0xf7, 0x5b, 0xfa, 0x20, 0x1c, - 0x08, 0x30, 0x69, 0x46, 0xfa, 0xf7, 0x56, 0xfa, - 0x29, 0x1c, 0x20, 0x1c, 0x12, 0x30, 0xfa, 0xf7, - 0x51, 0xfa, 0x10, 0xab, 0x98, 0x88, 0x00, 0x22, - 0x01, 0x21, 0x20, 0x83, 0xd8, 0x88, 0x60, 0x83, - 0x18, 0x89, 0xe0, 0x81, 0x58, 0x89, 0x20, 0x82, - 0x68, 0x46, 0xf9, 0xf7, 0x3c, 0x00, 0xe8, 0x07, - 0x01, 0x00, 0x17, 0xff, 0x14, 0xb0, 0x70, 0xbd, - 0x00, 0x00, 0x14, 0x6e, 0x01, 0x00, 0x12, 0x61, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x18, 0x48, - 0x25, 0x1c, 0x00, 0x78, 0x60, 0x35, 0x80, 0x07, - 0x00, 0x28, 0x08, 0xda, 0xe8, 0x79, 0x00, 0x28, - 0x05, 0xd0, 0xf4, 0xf7, 0x70, 0xff, 0x01, 0x1c, - 0x20, 0x1c, 0x00, 0xf0, 0x78, 0xf9, 0x29, 0x88, - 0x2e, 0x20, 0x00, 0x5d, 0xf2, 0xf7, 0x3c, 0x00, - 0x24, 0x08, 0x01, 0x00, 0x9f, 0xfa, 0xe8, 0x79, - 0x00, 0x28, 0x0b, 0xd1, 0x20, 0x1c, 0x40, 0x30, - 0x01, 0x8b, 0x22, 0x69, 0x11, 0x80, 0x41, 0x8b, - 0x22, 0x69, 0x51, 0x80, 0x80, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02, - 0x11, 0x43, 0x01, 0x80, 0x6a, 0x7a, 0xe0, 0x68, - 0x02, 0x49, 0xf2, 0xf7, 0x53, 0xfa, 0xb0, 0xbd, - 0x3c, 0x00, 0x60, 0x08, 0x01, 0x00, 0x1d, 0x75, - 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00, 0x90, 0xb5, - 0x04, 0x1c, 0x38, 0x23, 0x0c, 0x49, 0x58, 0x43, - 0x43, 0x18, 0x85, 0xb0, 0x00, 0x20, 0x0a, 0x49, - 0x02, 0x90, 0x18, 0x1c, 0x01, 0x22, 0x03, 0x91, - 0x09, 0x49, 0x04, 0x92, 0x30, 0x30, 0x42, 0x78, - 0x09, 0x88, 0x01, 0x92, 0x00, 0x91, 0x01, 0x78, - 0x5a, 0x6b, 0x0c, 0x33, 0x20, 0x1c, 0xfb, 0xf7, - 0x7c, 0xf8, 0x3c, 0x00, 0x9c, 0x08, 0x01, 0x00, - 0x05, 0xb0, 0x90, 0xbd, 0xd4, 0xe4, 0x01, 0x00, - 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00, - 0x90, 0xb5, 0x85, 0xb0, 0x03, 0x1c, 0x00, 0x20, - 0x02, 0x90, 0x0a, 0x49, 0x18, 0x1c, 0x00, 0x22, - 0x04, 0x92, 0x60, 0x30, 0x03, 0x91, 0xc2, 0x79, - 0x01, 0x88, 0x01, 0x92, 0x00, 0x91, 0x5a, 0x6a, - 0xdc, 0x68, 0x20, 0x33, 0x99, 0x7b, 0x40, 0x7a, - 0x23, 0x1c, 0xfb, 0xf7, 0x3c, 0x00, 0xd8, 0x08, - 0x01, 0x00, 0x5d, 0xf8, 0x05, 0xb0, 0x90, 0xbd, - 0x00, 0x00, 0x0d, 0x4f, 0x00, 0x00, 0x07, 0x49, - 0x80, 0xb5, 0x88, 0x6a, 0x00, 0x28, 0x08, 0xd1, - 0x01, 0x20, 0x88, 0x62, 0xf0, 0xf7, 0xaf, 0xfc, - 0x01, 0x1c, 0x03, 0x48, 0x00, 0x22, 0xf2, 0xf7, - 0xb8, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x41, 0xe4, 0x00, 0x00, 0xf0, 0xb5, - 0x9b, 0xb0, 0x00, 0x28, 0x20, 0xd0, 0x3c, 0x00, - 0x14, 0x09, 0x01, 0x00, 0x01, 0x1c, 0x08, 0xa8, - 0xfc, 0xf7, 0xb2, 0xfd, 0x01, 0x20, 0x11, 0x90, - 0x03, 0x20, 0x10, 0xad, 0x28, 0x72, 0x04, 0x20, - 0x68, 0x72, 0x05, 0xa8, 0x00, 0x22, 0x69, 0x46, - 0xf4, 0xf7, 0x00, 0xff, 0x00, 0x24, 0x00, 0x26, - 0x05, 0xa9, 0x00, 0x20, 0xf9, 0xf7, 0xfc, 0xfa, - 0x69, 0x46, 0xf9, 0xf7, 0xf9, 0xfa, 0x0b, 0x90, - 0x08, 0xa8, 0xfc, 0xf7, 0xbb, 0xfd, 0x01, 0x34, - 0x3c, 0x00, 0x50, 0x09, 0x01, 0x00, 0x02, 0x2c, - 0x2e, 0x72, 0xf0, 0xdb, 0x1b, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0x90, 0xb5, 0x04, 0x1c, 0x4c, 0x23, - 0x0c, 0x49, 0x58, 0x43, 0x43, 0x18, 0x85, 0xb0, - 0x00, 0x20, 0x0a, 0x49, 0x02, 0x90, 0x00, 0x22, - 0x04, 0x92, 0x3c, 0x20, 0x03, 0x91, 0xc2, 0x5c, - 0x08, 0x48, 0x41, 0x88, 0x01, 0x92, 0x41, 0x20, - 0x00, 0x91, 0xc1, 0x5c, 0x5a, 0x68, 0x08, 0x33, - 0x20, 0x1c, 0x3c, 0x00, 0x8c, 0x09, 0x01, 0x00, - 0xfb, 0xf7, 0x02, 0xf8, 0x05, 0xb0, 0x90, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, - 0x22, 0x4c, 0x38, 0x21, 0x17, 0x1c, 0x05, 0x1c, - 0x20, 0x1c, 0xef, 0xf7, 0x75, 0xfd, 0x23, 0x1c, - 0x25, 0x33, 0x21, 0x1c, 0x24, 0x31, 0x10, 0x20, - 0x6a, 0x46, 0xf9, 0xf7, 0x1d, 0xf8, 0x00, 0xab, - 0x18, 0x88, 0x07, 0x21, 0x3c, 0x00, 0xc8, 0x09, - 0x01, 0x00, 0x1a, 0x4a, 0x02, 0x38, 0x20, 0x84, - 0x20, 0x1c, 0x20, 0x30, 0x81, 0x70, 0xc5, 0x70, - 0x11, 0x1c, 0x06, 0x73, 0x47, 0x73, 0x34, 0x31, - 0x21, 0x63, 0x30, 0x32, 0x62, 0x63, 0x01, 0x79, - 0x25, 0x1c, 0x10, 0x35, 0x21, 0x81, 0x20, 0x60, - 0xe5, 0x60, 0x18, 0x88, 0x40, 0x1a, 0x20, 0x83, - 0x20, 0x1c, 0x28, 0x30, 0x20, 0x61, 0x20, 0x1c, - 0xf9, 0xf7, 0x11, 0xf8, 0x0d, 0x48, 0x3c, 0x00, - 0x04, 0x0a, 0x01, 0x00, 0x00, 0x68, 0x00, 0x28, - 0x07, 0xd0, 0x06, 0x21, 0x20, 0x1c, 0xf8, 0xf7, - 0x47, 0xfd, 0x10, 0x21, 0x28, 0x1c, 0xf8, 0xf7, - 0x43, 0xfd, 0x08, 0x48, 0x02, 0x21, 0x01, 0x62, - 0x44, 0x62, 0x01, 0x21, 0x01, 0x62, 0x06, 0x48, - 0x00, 0x68, 0xef, 0xf7, 0xd5, 0xfc, 0xf8, 0xbd, - 0x8c, 0x8e, 0x01, 0x00, 0xe4, 0xfe, 0x01, 0x00, - 0xcc, 0x5c, 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x3c, 0x00, 0x40, 0x0a, 0x01, 0x00, 0x5c, 0x5b, - 0x01, 0x00, 0xf0, 0xb5, 0x06, 0x1c, 0x40, 0x36, - 0x31, 0x8b, 0x04, 0x1c, 0x25, 0x1c, 0x08, 0x07, - 0x80, 0x0f, 0x60, 0x35, 0x01, 0x28, 0x85, 0xb0, - 0x3b, 0xd0, 0xe8, 0x79, 0x00, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x80, 0xb0, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02, - 0x11, 0x43, 0x3c, 0x00, 0x7c, 0x0a, 0x01, 0x00, - 0x01, 0x80, 0x20, 0x48, 0x00, 0x78, 0x80, 0x07, - 0x26, 0xd5, 0xe8, 0x79, 0x00, 0x28, 0x23, 0xd0, - 0xa0, 0x6b, 0x00, 0x28, 0x1c, 0xd0, 0xf4, 0xf7, - 0x2f, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xb8, 0x21, - 0x09, 0x58, 0x00, 0x29, 0x05, 0xd0, 0x30, 0x21, - 0x09, 0x5d, 0xb4, 0x30, 0x08, 0x18, 0x07, 0x7a, - 0x00, 0xe0, 0x00, 0x27, 0x01, 0x21, 0x38, 0x1c, - 0xfa, 0xf7, 0x86, 0xf9, 0x3c, 0x00, 0xb8, 0x0a, - 0x01, 0x00, 0x04, 0x90, 0x20, 0x69, 0x04, 0x30, - 0x39, 0x1c, 0xf4, 0xf7, 0x6c, 0xfd, 0x04, 0x99, - 0xfa, 0xf7, 0xd3, 0xf9, 0x02, 0xe0, 0x20, 0x1c, - 0xf7, 0xf7, 0xf9, 0xfb, 0x70, 0x83, 0x70, 0x8b, - 0x21, 0x69, 0x00, 0x22, 0x48, 0x80, 0x09, 0x49, - 0x0a, 0x48, 0x04, 0x92, 0x03, 0x91, 0x02, 0x90, - 0xea, 0x79, 0x29, 0x88, 0x01, 0x92, 0x00, 0x91, - 0x62, 0x6a, 0xe3, 0x68, 0x20, 0x34, 0x3c, 0x00, - 0xf4, 0x0a, 0x01, 0x00, 0xa1, 0x7b, 0x68, 0x7a, - 0xfa, 0xf7, 0x4c, 0xff, 0x05, 0xb0, 0xf0, 0xbd, - 0x1d, 0x75, 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00, - 0xdd, 0x2f, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x26, 0x1c, 0x01, 0x20, 0x20, 0x36, 0x00, 0x29, - 0x02, 0x90, 0x2e, 0xd0, 0x58, 0x20, 0x00, 0x5b, - 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x01, 0xd1, - 0xcc, 0x31, 0x00, 0xe0, 0xb4, 0x31, 0x48, 0x68, - 0x3c, 0x00, 0x30, 0x0b, 0x01, 0x00, 0x0d, 0x1c, - 0x00, 0x28, 0x24, 0xd0, 0x20, 0x1c, 0x60, 0x30, - 0xc2, 0x79, 0x01, 0x21, 0x01, 0x2a, 0x00, 0xd0, - 0x00, 0x21, 0x27, 0x1c, 0x62, 0x6d, 0x30, 0x37, - 0x00, 0x2a, 0x04, 0xd0, 0x3a, 0x1c, 0x28, 0x1c, - 0xf6, 0xf7, 0xe7, 0xfd, 0x07, 0xe0, 0x42, 0x7a, - 0x23, 0x1c, 0x68, 0x33, 0x00, 0x92, 0x3a, 0x1c, - 0x28, 0x1c, 0xf6, 0xf7, 0x9a, 0xfd, 0x02, 0x90, - 0x38, 0x78, 0x3c, 0x00, 0x6c, 0x0b, 0x01, 0x00, - 0x40, 0x19, 0x00, 0x7a, 0x01, 0x21, 0xb0, 0x73, - 0xfa, 0xf7, 0x26, 0xf9, 0x01, 0xe0, 0x00, 0x20, - 0xb0, 0x73, 0x60, 0x62, 0xb0, 0x7b, 0x0d, 0x28, - 0x01, 0xd9, 0xf0, 0xf7, 0xbb, 0xfb, 0x02, 0x98, - 0xfe, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c, - 0x80, 0x30, 0x25, 0x1c, 0x5e, 0x35, 0x00, 0x78, - 0xae, 0x1d, 0xaf, 0x1f, 0x00, 0x28, 0x83, 0xb0, - 0x12, 0xd1, 0xf4, 0xf7, 0x3c, 0x00, 0xa8, 0x0b, - 0x01, 0x00, 0xc7, 0xfb, 0x00, 0x28, 0x07, 0xd0, - 0x06, 0x98, 0x05, 0x99, 0x02, 0x90, 0x04, 0x98, - 0x01, 0x90, 0xa6, 0x61, 0x67, 0x61, 0x0d, 0xe0, - 0x04, 0x98, 0x06, 0x99, 0x02, 0x90, 0x05, 0x98, - 0x01, 0x90, 0x66, 0x61, 0x05, 0xe0, 0x04, 0xa9, - 0x03, 0xc9, 0x02, 0x90, 0x06, 0x98, 0x01, 0x90, - 0x67, 0x61, 0xa5, 0x61, 0x06, 0x22, 0x38, 0x1c, - 0xef, 0xf7, 0x8b, 0xfc, 0x06, 0x22, 0x3c, 0x00, - 0xe4, 0x0b, 0x01, 0x00, 0x28, 0x1c, 0x02, 0x99, - 0xef, 0xf7, 0x86, 0xfc, 0x06, 0x22, 0x30, 0x1c, - 0x01, 0x99, 0xef, 0xf7, 0x81, 0xfc, 0x07, 0xb0, - 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf0, 0xf7, - 0x7b, 0xfb, 0x02, 0x49, 0xa0, 0x00, 0x08, 0x58, - 0x85, 0x60, 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0xff, 0xf7, 0x59, 0xf9, 0x05, 0x1c, - 0x3c, 0x00, 0x20, 0x0c, 0x01, 0x00, 0xfe, 0xf7, - 0xe8, 0xff, 0x04, 0x1c, 0x28, 0x1c, 0xff, 0xf7, - 0x58, 0xf9, 0x00, 0x28, 0x42, 0xd0, 0x69, 0x1e, - 0x21, 0x4d, 0x4a, 0x00, 0x20, 0x4b, 0x1c, 0x3d, - 0xae, 0x5c, 0x98, 0x5c, 0x30, 0x40, 0xd6, 0x18, - 0x01, 0x23, 0xf6, 0x56, 0x52, 0x19, 0xd2, 0x56, - 0x96, 0x42, 0x01, 0xdd, 0x15, 0x1c, 0x00, 0xe0, - 0x35, 0x1c, 0x18, 0x4b, 0x2a, 0x3b, 0x59, 0x56, - 0x51, 0x18, 0x3c, 0x00, 0x5c, 0x0c, 0x01, 0x00, - 0xb1, 0x42, 0x00, 0xdb, 0x31, 0x1c, 0x0e, 0x1c, - 0x00, 0x28, 0x26, 0xd0, 0xfe, 0xf7, 0xbe, 0xff, - 0x00, 0x90, 0x00, 0xab, 0x18, 0x78, 0x12, 0x49, - 0x00, 0x23, 0xc9, 0x56, 0x00, 0xab, 0x15, 0x22, - 0x10, 0x1a, 0x5b, 0x78, 0x00, 0x1b, 0x40, 0x18, - 0xd2, 0x1a, 0x12, 0x1b, 0x51, 0x18, 0x00, 0x22, - 0x85, 0x42, 0x02, 0xdb, 0x00, 0xab, 0x1a, 0x70, - 0x02, 0xe0, 0x40, 0x1b, 0x3c, 0x00, 0x98, 0x0c, - 0x01, 0x00, 0x00, 0xab, 0x18, 0x70, 0x8e, 0x42, - 0x02, 0xdb, 0x00, 0xab, 0x5a, 0x70, 0x02, 0xe0, - 0x88, 0x1b, 0x00, 0xab, 0x58, 0x70, 0x00, 0x98, - 0xff, 0xf7, 0x8d, 0xf8, 0x01, 0xf0, 0xff, 0xf8, - 0xf8, 0xbd, 0xe6, 0x78, 0x01, 0x00, 0x65, 0x73, - 0x01, 0x00, 0x70, 0xb5, 0x08, 0x4e, 0x06, 0x4d, - 0x00, 0x24, 0x06, 0x20, 0x60, 0x43, 0x80, 0x19, - 0x06, 0x22, 0x29, 0x1c, 0xef, 0xf7, 0x3c, 0x00, - 0xd4, 0x0c, 0x01, 0x00, 0x11, 0xfc, 0x01, 0x34, - 0x05, 0x2c, 0xf5, 0xdb, 0x70, 0xbd, 0x00, 0x00, - 0x4e, 0x47, 0x01, 0x00, 0xe6, 0x7a, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48, - 0xfe, 0xf7, 0x42, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xa8, 0x79, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48, - 0xfe, 0xf7, 0x4a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x0d, 0x01, 0x00, 0xa8, 0x79, - 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x10, 0xb5, - 0x00, 0x28, 0x0a, 0xd0, 0x06, 0x4c, 0xa1, 0x69, - 0x00, 0x29, 0x01, 0xd1, 0x00, 0x20, 0x00, 0xe0, - 0x09, 0x68, 0xf7, 0xf7, 0x38, 0xfb, 0xa0, 0x61, - 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd, 0xa4, 0x6e, - 0x01, 0x00, 0xf3, 0xb5, 0x37, 0x48, 0x83, 0xb0, - 0x02, 0x90, 0x80, 0x79, 0x0e, 0x1c, 0x00, 0x27, - 0x01, 0x90, 0x3c, 0x00, 0x4c, 0x0d, 0x01, 0x00, - 0x34, 0x48, 0x35, 0x4a, 0x01, 0x6a, 0x03, 0x9c, - 0x03, 0x1c, 0x1b, 0x69, 0xa1, 0x42, 0x01, 0xd0, - 0x93, 0x61, 0x00, 0xe0, 0x53, 0x61, 0x31, 0x49, - 0x8a, 0x68, 0x96, 0x42, 0x3f, 0xd0, 0x2d, 0x48, - 0x8e, 0x60, 0xc1, 0x68, 0x00, 0x24, 0x25, 0x1c, - 0x00, 0x29, 0x2d, 0x48, 0x09, 0xd0, 0x00, 0x2e, - 0x0b, 0xd0, 0x28, 0x48, 0x01, 0x24, 0xc0, 0x6a, - 0x24, 0x03, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x0d, - 0x01, 0x00, 0x06, 0xd0, 0x01, 0x27, 0x04, 0xe0, - 0x00, 0x2e, 0x01, 0xd0, 0x05, 0x1c, 0xf9, 0xe7, - 0x04, 0x1c, 0x00, 0x2f, 0x06, 0xd0, 0xfb, 0xf7, - 0x1e, 0xfb, 0x1f, 0x48, 0x01, 0x68, 0x22, 0x48, - 0xfe, 0xf7, 0xfb, 0xfa, 0x20, 0x1c, 0x28, 0x43, - 0x0e, 0xd0, 0x2a, 0x1c, 0x21, 0x1c, 0x01, 0x20, - 0x02, 0xf0, 0x21, 0xfe, 0x2a, 0x1c, 0x21, 0x1c, - 0x02, 0x20, 0x02, 0xf0, 0x1c, 0xfe, 0x3c, 0x00, - 0xc4, 0x0d, 0x01, 0x00, 0x2a, 0x1c, 0x21, 0x1c, - 0x03, 0x20, 0x02, 0xf0, 0x17, 0xfe, 0x00, 0x2f, - 0x06, 0xd1, 0x13, 0x48, 0x01, 0x68, 0x16, 0x48, - 0xfe, 0xf7, 0xce, 0xfa, 0xfa, 0xf7, 0x42, 0xfd, - 0x03, 0x9c, 0x00, 0x2c, 0x01, 0xd1, 0x01, 0xf0, - 0xe1, 0xff, 0x01, 0xa9, 0x03, 0xc9, 0x88, 0x71, - 0x01, 0xf0, 0xdc, 0xff, 0x0a, 0x4c, 0x0a, 0x4b, - 0x44, 0x3c, 0xa1, 0x69, 0x22, 0x69, 0x08, 0x3b, - 0x3c, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x41, 0x1a, - 0x00, 0x2a, 0x03, 0xd0, 0x1a, 0x68, 0x51, 0x18, - 0x19, 0x60, 0x02, 0xe0, 0x5a, 0x68, 0x51, 0x18, - 0x59, 0x60, 0xa0, 0x61, 0x26, 0x61, 0x05, 0xb0, - 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0xb0, 0x57, - 0x01, 0x00, 0x00, 0x10, 0x60, 0x00, 0x84, 0x73, - 0x01, 0x00, 0x1c, 0xb5, 0x4c, 0x23, 0x08, 0x49, - 0x58, 0x43, 0x3c, 0x00, 0x3c, 0x0e, 0x01, 0x00, - 0x44, 0x18, 0x20, 0x1c, 0x40, 0x30, 0x41, 0x78, - 0x62, 0x68, 0x00, 0x91, 0x01, 0x92, 0x3f, 0x21, - 0x0b, 0x5d, 0x61, 0x8f, 0x00, 0x78, 0x62, 0x6c, - 0xfa, 0xf7, 0x28, 0xf8, 0xa0, 0x85, 0x1c, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0xb0, 0xb5, 0x16, 0x4d, - 0xa9, 0x69, 0x00, 0x29, 0x25, 0xd0, 0x2c, 0x1c, - 0x30, 0x34, 0x20, 0x7a, 0x00, 0x28, 0x20, 0xd0, - 0x00, 0x23, 0x81, 0x22, 0x3c, 0x00, 0x78, 0x0e, - 0x01, 0x00, 0x18, 0x20, 0x02, 0xf0, 0x89, 0xfc, - 0x20, 0x7a, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0x20, 0x72, 0x12, 0xd1, 0x0c, 0x48, 0x28, 0x21, - 0x2c, 0x38, 0x09, 0x5c, 0x21, 0x72, 0x29, 0x7a, - 0x00, 0x29, 0x01, 0xd1, 0x00, 0x6a, 0x00, 0xe0, - 0x40, 0x6a, 0xa9, 0x69, 0x80, 0x02, 0x81, 0x42, - 0x03, 0xd2, 0x49, 0x00, 0x81, 0x42, 0x01, 0xd2, - 0xa9, 0x61, 0xb0, 0xbd, 0xa8, 0x61, 0x3c, 0x00, - 0xb4, 0x0e, 0x01, 0x00, 0xb0, 0xbd, 0x01, 0xf0, - 0x1d, 0xf9, 0xb0, 0xbd, 0xf4, 0x6e, 0x01, 0x00, - 0x7f, 0xb5, 0x05, 0x1c, 0x04, 0x20, 0x6b, 0x46, - 0x1b, 0x18, 0x02, 0x90, 0x00, 0x26, 0x28, 0x18, - 0x6a, 0x46, 0x02, 0xa9, 0xfc, 0xf7, 0x8a, 0xfb, - 0x00, 0x28, 0x06, 0xd1, 0x00, 0xab, 0x18, 0x79, - 0x04, 0x28, 0x08, 0xd0, 0x18, 0x79, 0x03, 0x28, - 0x05, 0xd0, 0x00, 0xab, 0x18, 0x79, 0x10, 0x21, - 0x3c, 0x00, 0xf0, 0x0e, 0x01, 0x00, 0x08, 0x43, - 0x04, 0xb0, 0x70, 0xbd, 0x03, 0xa9, 0xe8, 0x68, - 0xf6, 0xf7, 0xd3, 0xff, 0x00, 0x28, 0x05, 0xd0, - 0x03, 0x98, 0x20, 0x21, 0x08, 0x43, 0x00, 0x06, - 0x00, 0x0e, 0xf1, 0xe7, 0x03, 0xa9, 0x00, 0x20, - 0xf6, 0xf7, 0xc7, 0xff, 0x04, 0x1c, 0x01, 0xd1, - 0x02, 0x20, 0xe9, 0xe7, 0xe8, 0x68, 0x00, 0xab, - 0x20, 0x60, 0x00, 0x98, 0x60, 0x60, 0x18, 0x79, - 0xa0, 0x76, 0x3c, 0x00, 0x2c, 0x0f, 0x01, 0x00, - 0xa8, 0x8c, 0x60, 0x76, 0xe8, 0x69, 0x20, 0x61, - 0x68, 0x8c, 0xa0, 0x82, 0x28, 0x8c, 0x20, 0x76, - 0x69, 0x69, 0x09, 0x48, 0x81, 0x42, 0x00, 0xd9, - 0x08, 0x1c, 0xa0, 0x60, 0x20, 0x1c, 0x02, 0xf0, - 0xa1, 0xfd, 0xa1, 0x68, 0x00, 0x29, 0x04, 0xd0, - 0x03, 0x9a, 0xa1, 0x32, 0x08, 0x20, 0x02, 0xf0, - 0x37, 0xfb, 0x30, 0x1c, 0xc7, 0xe7, 0x00, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x0f, - 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c, 0x40, 0x78, - 0x01, 0x24, 0x06, 0x28, 0x50, 0xd3, 0xc1, 0x1e, - 0x03, 0x20, 0xef, 0xf7, 0x5e, 0xfb, 0x00, 0x90, - 0x0e, 0x28, 0x49, 0xd8, 0x00, 0x20, 0x0a, 0xe0, - 0x41, 0x00, 0x09, 0x18, 0x89, 0x19, 0x4a, 0x79, - 0x89, 0x79, 0x51, 0x18, 0x01, 0x39, 0x0e, 0x29, - 0x00, 0xd9, 0x00, 0x24, 0x01, 0x30, 0x00, 0x99, - 0x88, 0x42, 0xf1, 0xdb, 0x00, 0x2c, 0x3c, 0x00, - 0xa4, 0x0f, 0x01, 0x00, 0x37, 0xd0, 0x03, 0x22, - 0xb1, 0x1c, 0x1b, 0x48, 0xef, 0xf7, 0xa4, 0xfa, - 0x1a, 0x4c, 0x1c, 0x21, 0x20, 0x1c, 0xef, 0xf7, - 0x4d, 0xfa, 0x00, 0x25, 0x28, 0xe0, 0x69, 0x00, - 0x49, 0x19, 0x02, 0x91, 0x8a, 0x19, 0x53, 0x79, - 0x15, 0x48, 0x43, 0x54, 0x93, 0x79, 0x0f, 0x18, - 0x7b, 0x70, 0xd3, 0x79, 0xbb, 0x70, 0x07, 0x23, - 0xd2, 0x56, 0x01, 0x92, 0x44, 0x5c, 0x0f, 0xe0, - 0x3c, 0x00, 0xe0, 0x0f, 0x01, 0x00, 0x20, 0x1c, - 0xfe, 0xf7, 0x7b, 0xff, 0x00, 0x28, 0x07, 0xd0, - 0x0c, 0x4a, 0x60, 0x00, 0x80, 0x18, 0x01, 0x21, - 0x10, 0x38, 0x81, 0x73, 0x01, 0x99, 0xc1, 0x73, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x07, 0x48, - 0x02, 0x99, 0x40, 0x5c, 0x79, 0x78, 0x40, 0x18, - 0xa0, 0x42, 0xe8, 0xd8, 0x01, 0x35, 0x00, 0x98, - 0x85, 0x42, 0xd3, 0xdb, 0xfe, 0xbd, 0xe8, 0x62, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x10, 0x01, 0x00, - 0xe6, 0x78, 0x01, 0x00, 0xeb, 0x62, 0x01, 0x00, - 0x01, 0x68, 0x0f, 0x29, 0x01, 0xdd, 0x0f, 0x21, - 0x01, 0x60, 0x01, 0x68, 0x00, 0x29, 0x01, 0xda, - 0x00, 0x21, 0x01, 0x60, 0x70, 0x47, 0x00, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0x1e, 0x48, 0x22, 0x1d, - 0x05, 0x68, 0x00, 0x92, 0x16, 0x1c, 0x23, 0x1c, - 0x0f, 0x1c, 0xcc, 0x33, 0x2a, 0x1c, 0x20, 0x1c, - 0x70, 0x30, 0xa1, 0x6d, 0x3c, 0x00, 0x58, 0x10, - 0x01, 0x00, 0x00, 0xf0, 0x3e, 0xf9, 0x00, 0x96, - 0xa1, 0x6d, 0x27, 0x20, 0x01, 0x40, 0x23, 0x1c, - 0xe4, 0x33, 0x20, 0x1c, 0x2a, 0x1c, 0x5c, 0x30, - 0x00, 0xf0, 0x33, 0xf9, 0x13, 0x48, 0x00, 0x78, - 0x0e, 0x28, 0x01, 0xd2, 0x01, 0x25, 0x85, 0x40, - 0x11, 0x48, 0xa1, 0x69, 0x00, 0x78, 0x29, 0x40, - 0x00, 0x07, 0x0b, 0xd4, 0x48, 0x07, 0x03, 0xd5, - 0x08, 0x07, 0x01, 0xd5, 0x04, 0x20, 0x3c, 0x00, - 0x94, 0x10, 0x01, 0x00, 0x81, 0x43, 0x88, 0x06, - 0x03, 0xd5, 0x48, 0x06, 0x01, 0xd5, 0x20, 0x20, - 0x81, 0x43, 0x23, 0x1c, 0xb4, 0x33, 0x2a, 0x1c, - 0x20, 0x1c, 0x30, 0x30, 0x00, 0x96, 0x00, 0xf0, - 0x13, 0xf9, 0x39, 0x1c, 0x20, 0x1c, 0xf0, 0xf7, - 0x47, 0xfc, 0xf8, 0xbd, 0x2c, 0x7d, 0x01, 0x00, - 0x10, 0x67, 0x01, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0xb0, 0xb5, 0xf2, 0xf7, 0x27, 0xfc, 0xfe, 0xf7, - 0x3c, 0x00, 0xd0, 0x10, 0x01, 0x00, 0x09, 0xf9, - 0x0f, 0x48, 0x00, 0x25, 0x45, 0x70, 0x0e, 0x48, - 0x0d, 0x4c, 0x00, 0x88, 0x5b, 0x34, 0xa0, 0x82, - 0xf9, 0xf7, 0x23, 0xfd, 0x20, 0x61, 0xa0, 0x8a, - 0x00, 0x28, 0x04, 0xd0, 0x01, 0x21, 0x89, 0x05, - 0xef, 0xf7, 0x0d, 0xfb, 0xe1, 0x82, 0x05, 0x48, - 0x01, 0x38, 0x45, 0x60, 0x01, 0xf0, 0x55, 0xfe, - 0x02, 0x1c, 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20, - 0xf4, 0xf7, 0x3c, 0x00, 0x0c, 0x11, 0x01, 0x00, - 0x49, 0xfd, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c, - 0x5a, 0x89, 0x04, 0x1c, 0x04, 0x98, 0x92, 0x07, - 0x92, 0x0f, 0x00, 0x25, 0x00, 0x29, 0xa2, 0x71, - 0x09, 0xd0, 0x05, 0x21, 0xf9, 0xf7, 0x24, 0xfb, - 0x00, 0x28, 0x01, 0xd0, 0xc0, 0x78, 0x00, 0xe0, - 0x01, 0x20, 0xe0, 0x71, 0x00, 0xe0, 0xe5, 0x71, - 0xe5, 0x60, 0xa6, 0x60, 0x3c, 0x00, 0x48, 0x11, - 0x01, 0x00, 0x70, 0xbd, 0x00, 0x00, 0xfe, 0xb5, - 0x05, 0x1c, 0x0e, 0x22, 0x9c, 0x30, 0x16, 0x49, - 0xef, 0xf7, 0xcf, 0xf9, 0x29, 0x1c, 0x28, 0x1c, - 0x80, 0x30, 0x88, 0x31, 0x00, 0x24, 0x2f, 0x1c, - 0x60, 0x37, 0x02, 0x91, 0x01, 0x90, 0x20, 0x06, - 0x00, 0x0e, 0x06, 0x1c, 0xf9, 0xf7, 0x0d, 0xfe, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x98, 0x42, 0x68, - 0x02, 0x99, 0x01, 0xe0, 0xea, 0x6d, 0x3c, 0x00, - 0x84, 0x11, 0x01, 0x00, 0x39, 0x1c, 0x00, 0x2a, - 0x0d, 0xd0, 0x00, 0x20, 0x03, 0xe0, 0x0b, 0x5c, - 0xb3, 0x42, 0x02, 0xd8, 0x01, 0x30, 0x90, 0x42, - 0xf9, 0xdb, 0x08, 0x18, 0x10, 0x38, 0xc0, 0x7b, - 0x29, 0x19, 0x90, 0x31, 0x08, 0x73, 0x01, 0x34, - 0x0e, 0x2c, 0xdf, 0xd3, 0xfe, 0xbd, 0x00, 0x00, - 0xcc, 0x47, 0x01, 0x00, 0xff, 0xb5, 0x81, 0xb0, - 0x14, 0x1c, 0x10, 0x1c, 0x06, 0x22, 0x0d, 0x1c, - 0x3c, 0x00, 0xc0, 0x11, 0x01, 0x00, 0x19, 0x1c, - 0x0b, 0x9e, 0x0a, 0x9f, 0xef, 0xf7, 0x97, 0xf9, - 0x06, 0x22, 0x39, 0x1c, 0xa0, 0x18, 0xef, 0xf7, - 0x92, 0xf9, 0xe6, 0x60, 0x2c, 0x60, 0x10, 0x20, - 0x28, 0x81, 0x6e, 0x60, 0x01, 0x98, 0xe8, 0x60, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x00, 0x20, 0x20, 0x61, 0x58, 0x20, - 0x00, 0x5d, 0x0e, 0x1c, 0x15, 0x1c, 0xc0, 0x07, - 0xc0, 0x17, 0x3c, 0x00, 0xfc, 0x11, 0x01, 0x00, - 0x01, 0x30, 0xe0, 0x61, 0x21, 0x6b, 0x00, 0x29, - 0x36, 0xd1, 0x1e, 0x49, 0x09, 0x68, 0x29, 0x43, - 0x32, 0xd0, 0xa1, 0x68, 0x89, 0x8a, 0x00, 0x29, - 0x2e, 0xd0, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x1c, - 0x58, 0x30, 0x00, 0xf0, 0xf3, 0xfd, 0x00, 0x28, - 0x1b, 0xd0, 0x81, 0x6a, 0x02, 0x6a, 0x40, 0x6a, - 0x09, 0x78, 0x00, 0x78, 0x06, 0xe0, 0x14, 0x4a, - 0x3c, 0x23, 0x11, 0x78, 0x3c, 0x00, 0x38, 0x12, - 0x01, 0x00, 0x50, 0x78, 0x43, 0x43, 0x9a, 0x18, - 0x04, 0x32, 0x00, 0x2d, 0x03, 0xd1, 0x02, 0x29, - 0x01, 0xd0, 0x03, 0x29, 0x02, 0xd1, 0x6d, 0x21, - 0x22, 0x61, 0x08, 0x55, 0x20, 0x69, 0x00, 0x28, - 0x0d, 0xd0, 0x81, 0x88, 0x00, 0x29, 0x01, 0xd1, - 0x01, 0x20, 0x70, 0xbd, 0x80, 0x79, 0x02, 0x28, - 0x05, 0xd1, 0x22, 0x1c, 0x07, 0x49, 0x07, 0x48, - 0xf8, 0xf7, 0x4b, 0xff, 0x02, 0xe0, 0x3c, 0x00, - 0x74, 0x12, 0x01, 0x00, 0x20, 0x1c, 0xef, 0xf7, - 0xb5, 0xf8, 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, - 0x28, 0x61, 0x01, 0x00, 0x68, 0x61, 0x01, 0x00, - 0xa1, 0xda, 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7, - 0x39, 0xfe, 0xc4, 0x00, 0xf9, 0xf7, 0x54, 0xfe, - 0x24, 0x18, 0xf9, 0xf7, 0x47, 0xfe, 0x08, 0x49, - 0x20, 0x18, 0x09, 0x88, 0x08, 0x4c, 0x40, 0x18, - 0x3c, 0x00, 0xb0, 0x12, 0x01, 0x00, 0x06, 0x49, - 0x09, 0x88, 0x40, 0x18, 0x60, 0x61, 0xf9, 0xf7, - 0x46, 0xfe, 0x05, 0x49, 0x09, 0x88, 0x40, 0x18, - 0x40, 0x00, 0xa0, 0x61, 0x10, 0xbd, 0x02, 0x61, - 0x01, 0x00, 0x04, 0x61, 0x01, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x11, 0x40, - 0x08, 0x1c, 0x10, 0xb5, 0x1c, 0x1c, 0x19, 0x1c, - 0x08, 0x31, 0x18, 0x60, 0xf1, 0xf7, 0x31, 0xfe, - 0x60, 0x60, 0x3c, 0x00, 0xec, 0x12, 0x01, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x22, 0x48, 0x0f, 0x1c, 0x41, 0x68, 0x91, 0x42, - 0x03, 0xd0, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60, - 0x42, 0x60, 0xc4, 0x68, 0x15, 0xe0, 0x28, 0x20, - 0x1d, 0x49, 0x60, 0x43, 0x40, 0x18, 0x05, 0x1c, - 0x06, 0x22, 0x31, 0x1c, 0xef, 0xf7, 0x70, 0xf8, - 0x00, 0x28, 0x07, 0xd1, 0xa8, 0x1d, 0x39, 0x1c, - 0xf9, 0xf7, 0x10, 0xfd, 0x3c, 0x00, 0x28, 0x13, - 0x01, 0x00, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, - 0xf8, 0xbd, 0x01, 0x34, 0x24, 0x07, 0x24, 0x0f, - 0x12, 0x48, 0x80, 0x68, 0x84, 0x42, 0xe5, 0xd1, - 0x10, 0x4c, 0x28, 0x23, 0xa0, 0x68, 0x0f, 0x4d, - 0x58, 0x43, 0x40, 0x19, 0x06, 0x22, 0x31, 0x1c, - 0xef, 0xf7, 0xd3, 0xf8, 0xa0, 0x68, 0x28, 0x23, - 0x58, 0x43, 0x40, 0x19, 0x06, 0x30, 0x22, 0x22, - 0x39, 0x1c, 0xef, 0xf7, 0xca, 0xf8, 0x3c, 0x00, - 0x64, 0x13, 0x01, 0x00, 0xa0, 0x68, 0x01, 0x30, - 0x00, 0x07, 0x00, 0x0f, 0xa0, 0x60, 0xe1, 0x68, - 0x81, 0x42, 0x03, 0xd1, 0x01, 0x31, 0x08, 0x07, - 0x00, 0x0f, 0xe0, 0x60, 0x00, 0x20, 0xd6, 0xe7, - 0xec, 0x65, 0x01, 0x00, 0xa0, 0xf4, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, - 0xe5, 0xff, 0x05, 0x4c, 0xa0, 0x68, 0x00, 0x28, - 0x04, 0xd1, 0x01, 0xf0, 0x07, 0xfd, 0x61, 0x68, - 0x3c, 0x00, 0xa0, 0x13, 0x01, 0x00, 0x40, 0x1a, - 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00, 0xd0, 0x60, - 0x01, 0x00, 0x02, 0x68, 0x0a, 0x60, 0x01, 0x60, - 0x70, 0x47, 0x01, 0x1c, 0x00, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x68, 0x0a, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xfe, 0xb5, 0x14, 0x1c, 0x1d, 0x1c, - 0x00, 0x22, 0xd2, 0x43, 0x01, 0xab, 0xf3, 0xf7, - 0x82, 0xff, 0x01, 0x98, 0x00, 0x26, 0x28, 0x40, - 0x01, 0x90, 0x3c, 0x00, 0xdc, 0x13, 0x01, 0x00, - 0x00, 0x25, 0x00, 0x27, 0x20, 0x60, 0x1e, 0xe0, - 0x01, 0x21, 0xb9, 0x40, 0x0a, 0x1c, 0x02, 0x40, - 0x18, 0xd0, 0x88, 0x43, 0x01, 0x90, 0x39, 0x06, - 0x09, 0x0e, 0x70, 0x19, 0x00, 0x19, 0x02, 0x91, - 0x01, 0x77, 0x08, 0x1c, 0xf9, 0xf7, 0xc6, 0xfc, - 0x00, 0x28, 0x06, 0xd0, 0x30, 0x1c, 0x00, 0x19, - 0x01, 0x36, 0x02, 0x99, 0x30, 0x30, 0x01, 0x70, - 0x04, 0xe0, 0x28, 0x1c, 0x3c, 0x00, 0x18, 0x14, - 0x01, 0x00, 0x01, 0x35, 0x02, 0x99, 0x00, 0x19, - 0x01, 0x72, 0x01, 0x37, 0x01, 0x98, 0x00, 0x28, - 0xdd, 0xd1, 0x70, 0x19, 0xa0, 0x61, 0x65, 0x60, - 0xe6, 0x62, 0xfe, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x14, 0x4d, 0x04, 0x1c, 0x28, 0x7a, 0x01, 0x28, - 0x02, 0xd1, 0x04, 0x20, 0xf6, 0xf7, 0xad, 0xf9, - 0x21, 0x1c, 0xa8, 0x6a, 0xf5, 0xf7, 0x21, 0xfc, - 0x00, 0x28, 0x03, 0xd1, 0x04, 0x20, 0x3c, 0x00, - 0x54, 0x14, 0x01, 0x00, 0xf6, 0xf7, 0xa4, 0xf9, - 0xb0, 0xbd, 0x02, 0x20, 0x28, 0x70, 0x28, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0x60, 0x81, 0x68, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0xa0, 0x81, 0xa8, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0xe0, 0x81, 0xe8, 0x69, - 0x01, 0x23, 0x02, 0x04, 0x12, 0x0c, 0x20, 0x1c, - 0x02, 0x49, 0xfc, 0xf7, 0x19, 0xff, 0xb0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0xa1, 0x77, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x14, 0x01, 0x00, 0xf8, 0xb5, - 0x19, 0x4e, 0x05, 0x1c, 0xb0, 0x69, 0x00, 0x28, - 0x00, 0xd1, 0x30, 0x68, 0xff, 0xf7, 0x3b, 0xfc, - 0x15, 0x4f, 0x04, 0x1c, 0x50, 0x37, 0x00, 0x28, - 0x0b, 0xd0, 0x60, 0x68, 0x29, 0x1c, 0x78, 0x60, - 0x01, 0x20, 0x38, 0x63, 0x20, 0x1c, 0xf5, 0xf7, - 0xea, 0xfb, 0x00, 0x28, 0x04, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x00, 0x23, 0xfb, 0x62, 0xfa, 0xe7, - 0x00, 0x23, 0x3c, 0x00, 0xcc, 0x14, 0x01, 0x00, - 0x23, 0x77, 0xf8, 0x6a, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0xf8, 0x62, 0x38, 0x7a, 0x01, 0x28, - 0x07, 0xd0, 0xf8, 0x69, 0x06, 0x49, 0x02, 0x04, - 0x12, 0x0c, 0x28, 0x1c, 0xfc, 0xf7, 0xe6, 0xfe, - 0x01, 0xe0, 0xfb, 0x62, 0xb3, 0x61, 0x01, 0x20, - 0xe5, 0xe7, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0xdd, 0x02, 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x16, 0x1c, 0x3c, 0x00, 0x08, 0x15, - 0x01, 0x00, 0x04, 0x2c, 0x1b, 0xd2, 0x10, 0x48, - 0x83, 0x42, 0x07, 0xd2, 0x58, 0x00, 0x0f, 0x49, - 0xef, 0xf7, 0xfb, 0xf8, 0xff, 0x30, 0x00, 0x0a, - 0x01, 0x38, 0x00, 0xe0, 0x00, 0x20, 0x1f, 0x35, - 0xea, 0x06, 0x61, 0x07, 0x09, 0x0e, 0xd2, 0x0e, - 0x11, 0x43, 0x72, 0x07, 0x52, 0x0d, 0x11, 0x43, - 0x00, 0x06, 0x00, 0x0a, 0x08, 0x43, 0x06, 0x4a, - 0xa1, 0x00, 0x50, 0x50, 0x70, 0xbd, 0x3c, 0x00, - 0x44, 0x15, 0x01, 0x00, 0x01, 0x21, 0x8d, 0x20, - 0xef, 0xf7, 0xac, 0xfe, 0x70, 0xbd, 0x00, 0x00, - 0x40, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x38, 0x01, - 0xe8, 0x60, 0x01, 0x00, 0x09, 0x4a, 0x80, 0x00, - 0x10, 0x58, 0x40, 0x09, 0x40, 0x01, 0x07, 0x22, - 0x02, 0x43, 0x07, 0x48, 0x03, 0x68, 0x00, 0x2b, - 0xfc, 0xdb, 0x42, 0x60, 0x09, 0x06, 0x01, 0x60, - 0x01, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x08, 0x20, - 0x3c, 0x00, 0x80, 0x15, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20, - 0x07, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x07, 0x49, 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28, - 0x03, 0xd1, 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7, - 0x80, 0xfe, 0x29, 0x1c, 0x20, 0x1c, 0xf6, 0xf7, - 0xa8, 0xfa, 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x07, 0x49, 0x3c, 0x00, 0xbc, 0x15, 0x01, 0x00, - 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28, 0x03, 0xd1, - 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7, 0x6c, 0xfe, - 0x29, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0xc4, 0xff, - 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00, - 0xf8, 0xb5, 0x0d, 0x1c, 0x16, 0x1c, 0xf7, 0xf7, - 0x17, 0xf9, 0x04, 0x1c, 0x28, 0x68, 0x40, 0x4f, - 0x81, 0x78, 0x00, 0x29, 0x3b, 0xd1, 0xc1, 0x78, - 0x00, 0x29, 0x58, 0xd1, 0x3c, 0x00, 0xf8, 0x15, - 0x01, 0x00, 0xf8, 0xf7, 0xf8, 0xf9, 0x22, 0x8e, - 0x61, 0x8e, 0x8a, 0x42, 0x04, 0xd0, 0xa1, 0x6a, - 0x09, 0x18, 0xe0, 0x69, 0x81, 0x42, 0x10, 0xd9, - 0x38, 0x49, 0x32, 0x1c, 0x48, 0x6b, 0x01, 0x30, - 0x48, 0x63, 0x20, 0x6a, 0x01, 0x30, 0x20, 0x62, - 0x38, 0x68, 0x01, 0x30, 0x38, 0x60, 0xe0, 0x68, - 0x63, 0x69, 0x29, 0x1c, 0xee, 0xf7, 0xd8, 0xfe, - 0xf8, 0xbd, 0x01, 0x32, 0x12, 0x04, 0x3c, 0x00, - 0x34, 0x16, 0x01, 0x00, 0x12, 0x0c, 0x22, 0x86, - 0xa1, 0x62, 0xb8, 0x68, 0x00, 0x28, 0x34, 0xd1, - 0x2c, 0x48, 0x0c, 0x23, 0x00, 0x68, 0x1b, 0x1a, - 0x9a, 0x42, 0x07, 0xd2, 0x19, 0x23, 0x9b, 0x01, - 0xaf, 0x22, 0x92, 0x01, 0x58, 0x43, 0x10, 0x1a, - 0x81, 0x42, 0x26, 0xd3, 0x01, 0x20, 0xb8, 0x60, - 0x01, 0x21, 0x0c, 0x20, 0x00, 0xf0, 0x7a, 0xfe, - 0x1f, 0xe0, 0x01, 0x29, 0x1d, 0xd1, 0xc0, 0x78, - 0x3c, 0x00, 0x70, 0x16, 0x01, 0x00, 0x17, 0x28, - 0x1a, 0xd1, 0xa0, 0x8e, 0xe1, 0x8e, 0x88, 0x42, - 0x14, 0xd3, 0xe9, 0x68, 0x09, 0x68, 0x09, 0x79, - 0x09, 0x06, 0x0f, 0xd5, 0x60, 0x6a, 0x32, 0x1c, - 0x01, 0x30, 0x60, 0x62, 0xe0, 0x68, 0x63, 0x69, - 0x29, 0x1c, 0xee, 0xf7, 0xa3, 0xfe, 0xe8, 0x68, - 0x01, 0x68, 0x08, 0x31, 0x0b, 0x20, 0x00, 0xf0, - 0x5c, 0xfe, 0xc3, 0xe7, 0x01, 0x30, 0xa0, 0x86, - 0xa0, 0x8d, 0x3c, 0x00, 0xac, 0x16, 0x01, 0x00, - 0xe1, 0x8d, 0x88, 0x42, 0x04, 0xd1, 0x03, 0x21, - 0x02, 0x20, 0xef, 0xf7, 0xf5, 0xfd, 0xb8, 0xe7, - 0x60, 0x68, 0x45, 0x60, 0x86, 0x60, 0x00, 0x68, - 0x60, 0x60, 0xf8, 0x68, 0x01, 0x30, 0xf8, 0x60, - 0xa0, 0x8d, 0x41, 0x1c, 0xa1, 0x85, 0x00, 0x28, - 0xab, 0xd1, 0x08, 0x48, 0xb9, 0x69, 0xfd, 0xf7, - 0x61, 0xfe, 0x22, 0x1c, 0x02, 0x21, 0xf1, 0x20, - 0x02, 0xf0, 0x64, 0xf8, 0x3c, 0x00, 0xe8, 0x16, - 0x01, 0x00, 0xa1, 0xe7, 0x00, 0x00, 0xfc, 0x5a, - 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x18, 0x57, - 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x1c, 0x02, 0x21, 0xf0, 0x20, 0x02, 0xf0, - 0x54, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28, - 0x03, 0xd1, 0x02, 0x48, 0x41, 0x78, 0xc9, 0x07, - 0xfc, 0xd5, 0x70, 0x47, 0x00, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x3c, 0x00, - 0x24, 0x17, 0x01, 0x00, 0x01, 0xd1, 0xf1, 0xf7, - 0x71, 0xfe, 0x80, 0xbd, 0x80, 0xb5, 0xf4, 0xf7, - 0xe5, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0xf6, 0xf7, - 0xeb, 0xf8, 0x80, 0xbd, 0x01, 0x49, 0x00, 0x20, - 0x08, 0x74, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0xc0, 0x07, 0x03, 0xd5, 0x02, 0x49, - 0x01, 0x20, 0x00, 0xf0, 0x1d, 0xfc, 0x80, 0xbd, - 0x50, 0xc3, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0e, - 0x3c, 0x00, 0x60, 0x17, 0x01, 0x00, 0x01, 0x28, - 0x80, 0xb5, 0x02, 0xd1, 0xf6, 0xf7, 0xe1, 0xf9, - 0x80, 0xbd, 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7, - 0x4c, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0xf6, 0xf7, 0xd7, 0xf9, 0x80, 0xbd, 0x03, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x74, 0xf6, 0xf7, - 0xfe, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x00, 0x0e, - 0xf1, 0xf7, 0x3c, 0x00, 0x9c, 0x17, 0x01, 0x00, - 0x71, 0xfe, 0x80, 0xbd, 0x10, 0xb5, 0x01, 0x28, - 0x08, 0xd0, 0x02, 0x28, 0x03, 0xd0, 0x03, 0x28, - 0x01, 0xd0, 0xef, 0xf7, 0xa7, 0xfd, 0xf6, 0xf7, - 0xe9, 0xf9, 0x10, 0xbd, 0x01, 0xf0, 0xf8, 0xfa, - 0x04, 0x1c, 0xfa, 0xf7, 0x5d, 0xfd, 0x24, 0x1a, - 0xfa, 0xf7, 0x3e, 0xfd, 0x08, 0x49, 0x00, 0x28, - 0x0b, 0xd0, 0x48, 0x6a, 0x00, 0x28, 0x08, 0xd0, - 0x06, 0x48, 0x84, 0x42, 0x3c, 0x00, 0xd8, 0x17, - 0x01, 0x00, 0x05, 0xd2, 0x01, 0x1b, 0x01, 0x22, - 0x07, 0x20, 0x01, 0xf0, 0xf4, 0xfe, 0xe5, 0xe7, - 0x00, 0x20, 0x48, 0x61, 0xe2, 0xe7, 0x78, 0x69, - 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x09, 0x49, - 0x80, 0xb5, 0x48, 0x69, 0x00, 0x28, 0x0c, 0xd0, - 0x08, 0x6a, 0xca, 0x69, 0x80, 0x1a, 0x00, 0x28, - 0x07, 0xdd, 0x00, 0x20, 0x48, 0x61, 0x01, 0x21, - 0x07, 0x20, 0x01, 0xf0, 0x10, 0xff, 0x3c, 0x00, - 0x14, 0x18, 0x01, 0x00, 0xf6, 0xf7, 0xb8, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfb, 0x80, 0xbd, - 0x80, 0xb5, 0x00, 0xf0, 0x3f, 0xfc, 0x00, 0x20, - 0xf7, 0xf7, 0xd4, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0x37, 0xfc, 0xfd, 0xf7, - 0x6f, 0xfc, 0xf5, 0xf7, 0x73, 0xfd, 0x30, 0xf0, - 0x47, 0xfb, 0x80, 0xbd, 0x04, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0x50, 0x18, 0x01, 0x00, 0xc1, 0x6a, - 0x00, 0x6b, 0xf2, 0xf7, 0xde, 0xff, 0x01, 0x20, - 0xf7, 0xf7, 0x89, 0xf8, 0x80, 0xbd, 0xa4, 0x6c, - 0x01, 0x00, 0x10, 0xb5, 0xf3, 0xf7, 0x41, 0xf8, - 0x0d, 0x4c, 0x00, 0x28, 0x04, 0xd0, 0x01, 0x20, - 0xe0, 0x64, 0xf7, 0xf7, 0xb2, 0xfc, 0x10, 0xbd, - 0x01, 0x21, 0x01, 0x20, 0xf3, 0xf7, 0xe9, 0xf8, - 0xfd, 0xf7, 0x4d, 0xfc, 0x60, 0x6d, 0x00, 0x28, - 0x03, 0xd0, 0x3c, 0x00, 0x8c, 0x18, 0x01, 0x00, - 0xf3, 0xf7, 0x82, 0xf8, 0x00, 0x28, 0x01, 0xd0, - 0xf5, 0xf7, 0x4a, 0xfd, 0x01, 0x20, 0xf2, 0xf7, - 0xc1, 0xfc, 0x10, 0xbd, 0xa4, 0x6c, 0x01, 0x00, - 0x04, 0x48, 0x80, 0xb5, 0xc1, 0x6a, 0x00, 0x6b, - 0xf2, 0xf7, 0xb2, 0xff, 0x01, 0x20, 0xf7, 0xf7, - 0x5d, 0xf8, 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xf5, 0xfb, 0xf5, 0xf7, - 0x33, 0xfd, 0xfc, 0xf7, 0x3c, 0x00, 0xc8, 0x18, - 0x01, 0x00, 0x31, 0xfd, 0xf9, 0xf7, 0xcb, 0xff, - 0x04, 0x20, 0xf2, 0xf7, 0xa6, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x6a, - 0x00, 0x6b, 0xf2, 0xf7, 0x98, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0xf0, 0xdd, 0xfb, 0x00, 0x20, 0xf7, 0xf7, - 0x3c, 0xf8, 0x30, 0xf0, 0xee, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x3c, 0x00, - 0x04, 0x19, 0x01, 0x00, 0x01, 0x20, 0xff, 0xf7, - 0x19, 0xfa, 0x01, 0x20, 0xf2, 0xf7, 0x88, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0xc9, 0xfb, 0xfc, 0xf7, 0x07, 0xfd, 0x01, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x0b, 0xfa, 0x04, 0x20, - 0xf2, 0xf7, 0x7a, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, - 0x00, 0xf0, 0x8a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x19, 0x01, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20, - 0x00, 0xf0, 0x81, 0xfb, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x20, 0x00, 0xf0, 0x78, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a, - 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x6f, 0xfb, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x22, 0x3c, 0x00, 0x7c, 0x19, 0x01, 0x00, - 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, 0x66, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x81, 0x68, 0x42, 0x69, 0x00, 0x69, 0x51, 0x18, - 0x81, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x01, 0x20, - 0x00, 0xf0, 0x58, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x82, 0x88, 0x81, 0x68, 0x00, 0x69, 0x51, 0x18, - 0x81, 0x42, 0x03, 0xd9, 0x3c, 0x00, 0xb8, 0x19, - 0x01, 0x00, 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0, - 0x48, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x20, 0x7b, - 0x21, 0x6a, 0xf9, 0xf7, 0x9c, 0xfa, 0xa1, 0x69, - 0x42, 0x18, 0xa0, 0x68, 0x21, 0x69, 0x80, 0x18, - 0x88, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x02, 0x20, - 0x00, 0xf0, 0x33, 0xfb, 0x10, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x3c, 0x00, - 0xf4, 0x19, 0x01, 0x00, 0x00, 0x21, 0x00, 0x20, - 0x00, 0xf0, 0x2a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x0e, 0x01, 0x28, 0x80, 0xb5, - 0x02, 0xd1, 0xf6, 0xf7, 0x8f, 0xf8, 0x80, 0xbd, - 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7, 0xfa, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0xf6, 0xf7, - 0x85, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x06, - 0x00, 0x0e, 0xf1, 0xf7, 0x29, 0xfd, 0x80, 0xbd, - 0x3c, 0x00, 0x30, 0x1a, 0x01, 0x00, 0xb0, 0xb5, - 0x02, 0x25, 0x02, 0x28, 0x10, 0x4c, 0x0b, 0xd1, - 0xfb, 0xf7, 0x47, 0xfc, 0x00, 0x28, 0x01, 0xd1, - 0xfe, 0xf7, 0x4f, 0xff, 0x25, 0x70, 0xa1, 0x68, - 0x0c, 0x48, 0xfd, 0xf7, 0xa8, 0xfc, 0xb0, 0xbd, - 0x03, 0x28, 0x0d, 0xd1, 0x08, 0x48, 0x7d, 0x23, - 0x1c, 0x38, 0x00, 0x69, 0xdb, 0x00, 0x58, 0x43, - 0x19, 0x1c, 0x40, 0x18, 0x41, 0x08, 0x02, 0x20, - 0x00, 0xf0, 0x3c, 0x00, 0x6c, 0x1a, 0x01, 0x00, - 0x91, 0xfa, 0x25, 0x70, 0xb0, 0xbd, 0xf8, 0xf7, - 0x31, 0xf9, 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, - 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xef, 0xf7, - 0x39, 0xfc, 0x02, 0x20, 0x20, 0x70, 0x00, 0xf0, - 0xaf, 0xfa, 0x10, 0xbd, 0x78, 0x69, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21, - 0x04, 0x20, 0x00, 0xf0, 0x3c, 0x00, 0xa8, 0x1a, - 0x01, 0x00, 0xd3, 0xfa, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x20, 0x00, 0xf0, 0xca, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0xc2, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69, - 0x01, 0x21, 0x01, 0x20, 0x00, 0xf0, 0xb9, 0xfa, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00, - 0xe4, 0x1a, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x82, 0x88, 0x00, 0x2a, 0x02, 0xd0, 0x01, 0x21, - 0x02, 0x20, 0x02, 0xe0, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0xa9, 0xfa, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x20, 0x7b, 0x21, 0x6a, 0xf9, 0xf7, 0xfe, 0xf9, - 0xa1, 0x69, 0x42, 0x18, 0x01, 0x21, 0x02, 0x20, - 0x00, 0xf0, 0x9a, 0xfa, 0x10, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x1b, 0x01, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0x90, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0xfa, 0xf7, 0x41, 0xfe, - 0x00, 0x20, 0xf0, 0xf7, 0x80, 0xf8, 0x00, 0x90, - 0x00, 0xab, 0x1c, 0x88, 0x5d, 0x88, 0xf8, 0xf7, - 0x3c, 0xf9, 0x00, 0x2c, 0x02, 0xd0, 0xfd, 0xf7, - 0x9e, 0xfa, 0x02, 0xe0, 0x01, 0x20, 0xf6, 0xf7, - 0x0a, 0xff, 0x3c, 0x00, 0x5c, 0x1b, 0x01, 0x00, - 0x29, 0x1c, 0x20, 0x1c, 0xfc, 0xf7, 0xb8, 0xfc, - 0x00, 0x2c, 0x02, 0xd0, 0xf5, 0xf7, 0xe0, 0xfb, - 0x02, 0xe0, 0x00, 0x20, 0x00, 0xf0, 0xdc, 0xf9, - 0x03, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x02, 0x20, - 0x00, 0x06, 0x00, 0x0e, 0xf2, 0xf7, 0x4e, 0xfb, - 0x38, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, - 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0, - 0x5d, 0xfa, 0x80, 0xbd, 0x3c, 0x00, 0x98, 0x1b, - 0x01, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x30, 0xf0, 0x9b, 0xf9, 0x80, 0xbd, 0x80, 0xb5, - 0x00, 0x22, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, - 0x50, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21, 0x01, 0x20, - 0x00, 0xf0, 0x47, 0xfa, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x82, 0x88, - 0x00, 0x2a, 0x03, 0xd0, 0x01, 0x21, 0x3c, 0x00, - 0xd4, 0x1b, 0x01, 0x00, 0x02, 0x20, 0x00, 0xf0, - 0x3b, 0xfa, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x7b, 0x21, 0x6a, - 0xf9, 0xf7, 0x90, 0xf9, 0xa1, 0x69, 0x42, 0x18, - 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0, 0x2c, 0xfa, - 0x10, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0xfc, 0xf7, 0x93, 0xfb, 0x01, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x97, 0xf8, 0x04, 0x20, - 0x3c, 0x00, 0x10, 0x1c, 0x01, 0x00, 0xf2, 0xf7, - 0x06, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x2f, 0xf0, 0x6b, 0xfb, 0x00, 0x28, 0x0a, 0xd0, - 0x01, 0x20, 0xf2, 0xf7, 0xfc, 0xfa, 0xfa, 0xf7, - 0x2a, 0xfc, 0x00, 0x28, 0x02, 0xd1, 0x04, 0x20, - 0xf6, 0xf7, 0x5d, 0xf8, 0x80, 0xbd, 0x03, 0x21, - 0x16, 0x20, 0xef, 0xf7, 0x32, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x02, 0x48, 0x80, 0xb5, 0x00, 0x68, - 0xee, 0xf7, 0x3c, 0x00, 0x4c, 0x1c, 0x01, 0x00, - 0xc5, 0xfb, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21, - 0x01, 0x20, 0x00, 0xf0, 0xf7, 0xf9, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x30, 0xf0, - 0x35, 0xf9, 0x80, 0xbd, 0xb0, 0xb5, 0x18, 0x4c, - 0xaa, 0x20, 0x00, 0x5d, 0x04, 0x28, 0x19, 0xd1, - 0x01, 0x25, 0xe5, 0x62, 0x25, 0x63, 0x01, 0xf0, - 0x93, 0xf8, 0xa0, 0x66, 0x3c, 0x00, 0x88, 0x1c, - 0x01, 0x00, 0x01, 0xf0, 0xfc, 0xfd, 0xf2, 0xf7, - 0x2e, 0xfe, 0x00, 0x28, 0x0e, 0xd0, 0x02, 0x20, - 0xf2, 0xf7, 0xc3, 0xfa, 0xa5, 0x60, 0x01, 0xf0, - 0x86, 0xf8, 0x64, 0x30, 0x60, 0x60, 0xfa, 0xf7, - 0x8a, 0xfd, 0x01, 0x21, 0x01, 0x20, 0xff, 0xf7, - 0x46, 0xf8, 0xb0, 0xbd, 0x01, 0x20, 0xf2, 0xf7, - 0xb4, 0xfa, 0x00, 0x20, 0xa0, 0x60, 0x00, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x3c, 0xf8, 0x3c, 0x00, - 0xc4, 0x1c, 0x01, 0x00, 0xf2, 0xf7, 0x66, 0xfe, - 0x00, 0x28, 0xf1, 0xd0, 0xfa, 0xf7, 0x76, 0xfd, - 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xef, 0xf7, 0xd6, 0xfe, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, - 0xef, 0xf7, 0xd0, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x21, 0x09, 0x5c, 0x02, 0x4a, 0x09, 0x02, - 0x89, 0x18, 0xc0, 0x31, 0x81, 0x60, 0x70, 0x47, - 0x3c, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x70, 0x75, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x04, 0xd1, - 0x03, 0xc9, 0x09, 0x68, 0xee, 0xf7, 0x64, 0xfb, - 0x80, 0xbd, 0x01, 0x21, 0x14, 0x20, 0xef, 0xf7, - 0xc4, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28, - 0x02, 0xd1, 0x02, 0x48, 0x40, 0x68, 0x70, 0x47, - 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24, 0xf8, 0xf7, - 0x1c, 0xfb, 0x3c, 0x00, 0x3c, 0x1d, 0x01, 0x00, - 0x00, 0x28, 0x04, 0xd0, 0x40, 0x30, 0x80, 0x7a, - 0x05, 0x28, 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c, - 0x10, 0xbd, 0x00, 0x00, 0x04, 0x48, 0x00, 0x21, - 0x40, 0x68, 0x01, 0xe0, 0x01, 0x63, 0x40, 0x68, - 0x00, 0x28, 0xfb, 0xd1, 0x70, 0x47, 0x00, 0x00, - 0x58, 0x75, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0xf7, 0xf7, 0xa5, 0xf8, 0x40, 0x34, - 0xe5, 0x72, 0xb0, 0xbd, 0x3c, 0x00, 0x78, 0x1d, - 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, 0xf8, 0xf7, - 0xfa, 0xfa, 0x04, 0x1c, 0x04, 0xd0, 0x05, 0x21, - 0x14, 0x20, 0xef, 0xf7, 0x8c, 0xfa, 0x28, 0xe0, - 0x00, 0x25, 0x14, 0x49, 0x28, 0x02, 0x46, 0x18, - 0x30, 0x1c, 0x44, 0x30, 0x06, 0x22, 0x12, 0x49, - 0xee, 0xf7, 0x2d, 0xfb, 0x00, 0x28, 0x02, 0xd1, - 0xac, 0x20, 0x85, 0x55, 0x34, 0x1c, 0x01, 0x35, - 0x03, 0x2d, 0xee, 0xd3, 0x00, 0x2c, 0x3c, 0x00, - 0xb4, 0x1d, 0x01, 0x00, 0x14, 0xd0, 0x39, 0x1c, - 0x20, 0x1c, 0xf8, 0xf7, 0x2b, 0xf8, 0x09, 0x49, - 0x00, 0x20, 0x20, 0x60, 0x18, 0x39, 0x48, 0x68, - 0x60, 0x60, 0x00, 0x28, 0x00, 0xd0, 0x04, 0x60, - 0x4c, 0x60, 0xca, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x01, 0x21, 0x20, 0x1c, 0xee, 0xf7, 0xfe, 0xfa, - 0x20, 0x1c, 0xf8, 0xbd, 0x70, 0x75, 0x01, 0x00, - 0x58, 0x46, 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7, - 0x3c, 0x00, 0xf0, 0x1d, 0x01, 0x00, 0xc1, 0xfa, - 0x00, 0x28, 0x04, 0xd1, 0x06, 0x21, 0x14, 0x20, - 0xef, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0xf5, 0xf7, - 0x16, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0xf8, 0xf7, 0xb3, 0xfa, 0x80, 0xbd, 0x10, 0xb5, - 0x09, 0x4c, 0x21, 0x88, 0x02, 0x29, 0x03, 0xd1, - 0x14, 0x20, 0xef, 0xf7, 0x42, 0xfa, 0x04, 0xe0, - 0xa3, 0x68, 0x8a, 0x00, 0x98, 0x50, 0x48, 0x1c, - 0x20, 0x80, 0x3c, 0x00, 0x2c, 0x1e, 0x01, 0x00, - 0x20, 0x88, 0x01, 0x38, 0x00, 0x04, 0x00, 0x0c, - 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, - 0x0b, 0x1c, 0x11, 0x1c, 0x08, 0x4a, 0x80, 0xb5, - 0x12, 0x88, 0x90, 0x42, 0x06, 0xd2, 0xda, 0x68, - 0xc0, 0x00, 0x12, 0x18, 0x14, 0x20, 0x01, 0xf0, - 0xbb, 0xfb, 0x80, 0xbd, 0x03, 0x21, 0x14, 0x20, - 0xef, 0xf7, 0x22, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x58, 0x75, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x1e, - 0x01, 0x00, 0x08, 0x4a, 0x80, 0xb5, 0x12, 0x88, - 0x90, 0x42, 0x06, 0xd2, 0xc9, 0x68, 0xc0, 0x00, - 0x09, 0x18, 0x14, 0x20, 0x01, 0xf0, 0xdb, 0xfb, - 0x80, 0xbd, 0x04, 0x21, 0x14, 0x20, 0xef, 0xf7, - 0x0e, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x01, 0x49, 0xc8, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x06, 0x22, 0x44, 0x30, 0xee, 0xf7, 0x3c, 0x00, - 0xa4, 0x1e, 0x01, 0x00, 0xab, 0xfa, 0x00, 0x28, - 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, - 0x80, 0xbd, 0x00, 0x00, 0x1c, 0xb5, 0x14, 0x4c, - 0x20, 0x69, 0x00, 0x28, 0x23, 0xd0, 0x20, 0x78, - 0x0a, 0x28, 0x01, 0xd0, 0x00, 0xf0, 0xfc, 0xf8, - 0x00, 0x20, 0x60, 0x61, 0x0f, 0x48, 0x40, 0x79, - 0xa0, 0x70, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, - 0x15, 0xd1, 0xfd, 0xf7, 0xed, 0xfe, 0x01, 0x90, - 0x3c, 0x00, 0xe0, 0x1e, 0x01, 0x00, 0xfd, 0xf7, - 0x82, 0xfe, 0x00, 0x90, 0x00, 0xab, 0x18, 0x79, - 0x19, 0x78, 0x40, 0x1a, 0x18, 0x71, 0x58, 0x79, - 0x59, 0x78, 0x40, 0x1a, 0x58, 0x71, 0x01, 0x98, - 0xf2, 0xf7, 0x89, 0xfe, 0x05, 0x20, 0x20, 0x70, - 0x00, 0xf0, 0xbf, 0xf9, 0x1c, 0xbd, 0x7c, 0x78, - 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x08, 0xb5, - 0x04, 0x4a, 0x00, 0x90, 0x14, 0x32, 0x00, 0x20, - 0x02, 0x4b, 0x3c, 0x00, 0x1c, 0x1f, 0x01, 0x00, - 0x02, 0x49, 0xf1, 0xf7, 0x7d, 0xf9, 0x08, 0xbd, - 0x2c, 0x75, 0x01, 0x00, 0xb1, 0xa8, 0x00, 0x00, - 0xb0, 0xb5, 0x00, 0x28, 0x06, 0xd0, 0x01, 0x28, - 0x06, 0xd0, 0x02, 0x28, 0x07, 0xd1, 0x0c, 0x4c, - 0x01, 0x25, 0x07, 0xe0, 0x0b, 0x4c, 0x04, 0xe0, - 0x0a, 0x4c, 0x2a, 0x3c, 0x01, 0xe0, 0x08, 0x4c, - 0xb6, 0x34, 0x00, 0x25, 0x00, 0xf0, 0x2c, 0xff, - 0x07, 0x49, 0x89, 0x6e, 0x3c, 0x00, 0x58, 0x1f, - 0x01, 0x00, 0x09, 0x19, 0x09, 0x1a, 0xa1, 0x42, - 0x00, 0xd9, 0x00, 0x21, 0x2a, 0x1c, 0x16, 0x20, - 0x01, 0xf0, 0x31, 0xfb, 0xb0, 0xbd, 0x71, 0x02, - 0x00, 0x00, 0x0c, 0x05, 0x00, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x8c, 0xb5, 0x00, 0xab, 0x8e, 0x21, - 0x19, 0x80, 0xfc, 0xf7, 0x38, 0xf9, 0x01, 0x90, - 0x68, 0x46, 0xfb, 0xf7, 0xa6, 0xfa, 0x8c, 0xbd, - 0x00, 0x00, 0xbf, 0xb5, 0x13, 0x4a, 0x3c, 0x00, - 0x94, 0x1f, 0x01, 0x00, 0x01, 0x91, 0x0d, 0x1c, - 0x11, 0x7c, 0x88, 0x43, 0x04, 0x1c, 0x21, 0x43, - 0x08, 0x1c, 0x10, 0x74, 0xa0, 0x07, 0x0b, 0xd5, - 0x0e, 0x48, 0x00, 0x90, 0x01, 0x20, 0x02, 0x90, - 0x00, 0xf0, 0xfc, 0xfe, 0x0c, 0x49, 0x40, 0x18, - 0x03, 0x90, 0x68, 0x46, 0xf9, 0xf7, 0x6a, 0xff, - 0xe0, 0x07, 0x0c, 0xd5, 0xf1, 0xf7, 0x2c, 0xfd, - 0x00, 0x28, 0x03, 0xd0, 0x07, 0x48, 0x85, 0x42, - 0x3c, 0x00, 0xd0, 0x1f, 0x01, 0x00, 0x00, 0xd2, - 0x01, 0x90, 0x06, 0x48, 0x00, 0x90, 0x68, 0x46, - 0xf9, 0xf7, 0x09, 0xff, 0xbf, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x81, 0xea, 0x00, 0x00, 0x10, 0x27, - 0x00, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x75, 0xea, - 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x60, 0x69, - 0x00, 0x28, 0x0e, 0xd1, 0x01, 0x20, 0x60, 0x61, - 0xa1, 0x68, 0x07, 0x48, 0xfd, 0xf7, 0xcb, 0xf9, - 0x00, 0x21, 0x3c, 0x00, 0x0c, 0x20, 0x01, 0x00, - 0xa0, 0x68, 0xf9, 0xf7, 0xd1, 0xfb, 0x01, 0x22, - 0x07, 0x20, 0x04, 0x49, 0x01, 0xf0, 0xd8, 0xfa, - 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x98, 0x3a, 0x00, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x11, 0x1c, 0x06, 0x4a, - 0x00, 0x2b, 0x10, 0x70, 0x03, 0xd0, 0x00, 0x28, - 0x02, 0xd1, 0xf9, 0xf7, 0xf5, 0xfd, 0x10, 0xbd, - 0x20, 0x1c, 0xf9, 0xf7, 0x3c, 0x00, 0x48, 0x20, - 0x01, 0x00, 0x01, 0xfe, 0x10, 0xbd, 0xa0, 0x79, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4c, 0x05, 0x1c, - 0xe3, 0x6a, 0x20, 0x1f, 0x01, 0x33, 0xe3, 0x62, - 0x00, 0x88, 0x00, 0x29, 0x06, 0xd0, 0xa1, 0x68, - 0x89, 0x18, 0x21, 0x61, 0x05, 0x4a, 0x00, 0xf0, - 0xfc, 0xfe, 0x01, 0xe0, 0x00, 0xf0, 0xcf, 0xfe, - 0x25, 0x77, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x55, 0xe3, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x20, 0x01, 0x00, 0x01, 0x1c, 0x03, 0x48, - 0x80, 0xb5, 0x40, 0x88, 0xff, 0xf7, 0xec, 0xfe, - 0x80, 0xbd, 0x00, 0x00, 0x98, 0x7c, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x68, 0x18, 0x38, - 0x80, 0x88, 0xff, 0xf7, 0xe1, 0xfe, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, - 0x16, 0x20, 0x01, 0xf0, 0xbf, 0xfa, 0x01, 0x21, - 0x16, 0x20, 0x01, 0xf0, 0xbb, 0xfa, 0x80, 0xbd, - 0x3c, 0x00, 0xc0, 0x20, 0x01, 0x00, 0x10, 0xb5, - 0x0b, 0x4c, 0x20, 0x78, 0x0a, 0x28, 0x10, 0xd0, - 0x01, 0x20, 0x60, 0x61, 0x0a, 0x21, 0x13, 0x20, - 0x01, 0xf0, 0xaf, 0xfa, 0x0a, 0x20, 0x60, 0x70, - 0x20, 0x70, 0xfd, 0xf7, 0x3c, 0xfb, 0x01, 0x20, - 0xfd, 0xf7, 0xe9, 0xfb, 0x00, 0x20, 0xfa, 0xf7, - 0xc4, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0x00, 0x20, - 0x0b, 0x49, 0x3c, 0x00, 0xfc, 0x20, 0x01, 0x00, - 0x20, 0x63, 0xe0, 0x62, 0x50, 0x39, 0x88, 0x61, - 0x20, 0x70, 0x08, 0x48, 0x38, 0x21, 0x0c, 0x38, - 0x00, 0x7a, 0x08, 0x55, 0x81, 0x21, 0x18, 0x20, - 0x01, 0xf0, 0x8e, 0xfa, 0x20, 0x69, 0x01, 0x28, - 0x02, 0xd1, 0x00, 0x20, 0xf5, 0xf7, 0x3e, 0xfb, - 0x10, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x1c, 0x4c, 0x00, 0x25, 0x2c, 0x22, - 0x01, 0x1d, 0x20, 0x1c, 0x3c, 0x00, 0x38, 0x21, - 0x01, 0x00, 0x9a, 0xb0, 0xee, 0xf7, 0x39, 0xfa, - 0x18, 0x49, 0x2c, 0x31, 0x08, 0x1c, 0x00, 0x7a, - 0x8a, 0x69, 0x00, 0x2a, 0x13, 0xd1, 0x02, 0x28, - 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x20, 0xd0, - 0x04, 0xe0, 0x00, 0x28, 0x1d, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x1a, 0xd0, 0x80, 0x02, 0x88, 0x61, - 0x0e, 0x48, 0x69, 0x46, 0x24, 0x38, 0x00, 0x68, - 0xef, 0xf7, 0xcb, 0xfb, 0x11, 0xe0, 0x3c, 0x00, - 0x74, 0x21, 0x01, 0x00, 0x00, 0x22, 0x02, 0x28, - 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x09, 0xd1, - 0x04, 0xe0, 0x00, 0x28, 0x08, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x03, 0xd1, 0x8a, 0x61, 0xff, 0xf7, - 0xb1, 0xff, 0x01, 0xe0, 0x80, 0x02, 0x88, 0x61, - 0x28, 0x1c, 0x1a, 0xb0, 0xb0, 0xbd, 0x00, 0x00, - 0xc8, 0x6e, 0x01, 0x00, 0xf8, 0xb5, 0x0c, 0x49, - 0x02, 0x20, 0x48, 0x60, 0x0b, 0x49, 0x00, 0x05, - 0x3c, 0x00, 0xb0, 0x21, 0x01, 0x00, 0x08, 0x60, - 0x0b, 0x4f, 0xb8, 0x68, 0xf9, 0x68, 0x7c, 0x68, - 0x45, 0x1a, 0x2e, 0x1c, 0x04, 0xe0, 0xa0, 0x68, - 0x61, 0x68, 0xee, 0xf7, 0x09, 0xf9, 0x24, 0x68, - 0x01, 0x3d, 0xf8, 0xd2, 0x7c, 0x60, 0xf8, 0x68, - 0x80, 0x19, 0xf8, 0x60, 0xf8, 0xbd, 0x40, 0x20, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x44, 0xe3, - 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x04, 0x1c, - 0x30, 0x69, 0x3c, 0x00, 0xec, 0x21, 0x01, 0x00, - 0x01, 0x21, 0xf9, 0xf7, 0x99, 0xfa, 0x1d, 0x49, - 0x60, 0x00, 0x40, 0x18, 0x10, 0x38, 0x81, 0x7b, - 0x1b, 0x4a, 0x51, 0x72, 0xc0, 0x7b, 0x10, 0x74, - 0x1a, 0x4f, 0x1b, 0x4d, 0x0e, 0x2c, 0x0a, 0xd1, - 0x01, 0x22, 0x02, 0x21, 0x08, 0x20, 0x01, 0xf0, - 0xf3, 0xfb, 0x03, 0x20, 0xff, 0x21, 0x41, 0x31, - 0x39, 0x86, 0x14, 0x21, 0x08, 0xe0, 0x02, 0x22, - 0x01, 0x21, 0x08, 0x20, 0x3c, 0x00, 0x28, 0x22, - 0x01, 0x00, 0x01, 0xf0, 0xe8, 0xfb, 0x12, 0x49, - 0x02, 0x20, 0x39, 0x86, 0x10, 0x21, 0xa9, 0x71, - 0xe8, 0x71, 0x10, 0x48, 0x11, 0x4a, 0x00, 0x19, - 0x10, 0x38, 0xc0, 0x7b, 0x00, 0x28, 0x03, 0xd0, - 0x01, 0x21, 0x51, 0x73, 0x10, 0x73, 0x01, 0xe0, - 0x00, 0x20, 0x50, 0x73, 0x00, 0x21, 0x20, 0x1c, - 0xfd, 0xf7, 0xe5, 0xfd, 0x30, 0x69, 0xf9, 0xf7, - 0x08, 0xfb, 0xf8, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x22, 0x01, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x76, 0x46, 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, - 0x30, 0x80, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, - 0xff, 0x01, 0x00, 0x00, 0x5c, 0x57, 0x01, 0x00, - 0xd0, 0x80, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4c, - 0x14, 0x4a, 0x21, 0x78, 0x00, 0x20, 0x18, 0x32, - 0x05, 0x29, 0x1d, 0xd0, 0x06, 0x29, 0x1b, 0xd0, - 0x07, 0x29, 0x01, 0xd0, 0x08, 0x29, 0x06, 0xd1, - 0x3c, 0x00, 0xa0, 0x22, 0x01, 0x00, 0x91, 0x68, - 0x05, 0x20, 0x10, 0x29, 0x00, 0xdb, 0x06, 0x20, - 0x20, 0x70, 0x01, 0x20, 0xa1, 0x78, 0x00, 0x28, - 0x61, 0x70, 0x0b, 0xd0, 0x00, 0x20, 0xfa, 0xf7, - 0xdc, 0xf8, 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7, - 0x3c, 0xfa, 0x0a, 0x22, 0x1e, 0x21, 0x13, 0x20, - 0x01, 0xf0, 0x7f, 0xf9, 0x10, 0xbd, 0xd1, 0x69, - 0x07, 0x20, 0x10, 0x29, 0xe8, 0xdb, 0x08, 0x20, - 0xe6, 0xe7, 0x3c, 0x00, 0xdc, 0x22, 0x01, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, - 0x01, 0x1c, 0x04, 0x1c, 0x44, 0x31, 0x00, 0x20, - 0xf6, 0xf7, 0x40, 0xfa, 0x30, 0x34, 0x00, 0x2d, - 0x07, 0xd0, 0x0e, 0xc8, 0x0e, 0xc4, 0x08, 0xc8, - 0x10, 0x38, 0x08, 0xc4, 0xf4, 0xf7, 0xc4, 0xf9, - 0xb0, 0xbd, 0x1e, 0xcc, 0x1e, 0xc0, 0xb0, 0xbd, - 0xf8, 0xb5, 0x08, 0x1c, 0x11, 0x1c, 0xf4, 0xf7, - 0x87, 0xfa, 0x08, 0x4c, 0x3c, 0x00, 0x18, 0x23, - 0x01, 0x00, 0x00, 0x25, 0x08, 0x4e, 0x08, 0x4f, - 0x06, 0xe0, 0x30, 0x6b, 0x00, 0x28, 0x03, 0xd0, - 0x35, 0x63, 0x20, 0x68, 0xee, 0xf7, 0x55, 0xf8, - 0x38, 0x68, 0x00, 0x28, 0xf5, 0xd0, 0xf8, 0xbd, - 0x00, 0x00, 0x5c, 0x5b, 0x01, 0x00, 0xe4, 0xfe, - 0x01, 0x00, 0x84, 0x5a, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x06, 0x00, 0x0e, 0x00, 0xf0, 0x07, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x1c, 0x3c, 0x00, - 0x54, 0x23, 0x01, 0x00, 0x23, 0x21, 0x01, 0xf0, - 0x2b, 0xfa, 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, - 0x23, 0x20, 0xee, 0xf7, 0x9b, 0xff, 0x06, 0x49, - 0xa0, 0x00, 0x08, 0x58, 0x04, 0xe0, 0x12, 0xc8, - 0x28, 0x1c, 0xee, 0xf7, 0x2e, 0xf8, 0x20, 0x1c, - 0x00, 0x28, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00, - 0x68, 0x5b, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, - 0x3c, 0x00, 0x90, 0x23, 0x01, 0x00, 0x00, 0x25, - 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, - 0x23, 0x20, 0xee, 0xf7, 0x82, 0xff, 0x13, 0x48, - 0xa7, 0x00, 0xc4, 0x59, 0x08, 0xe0, 0x20, 0x68, - 0xb0, 0x42, 0x03, 0xd1, 0x03, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x77, 0xff, 0x25, 0x1c, 0x64, 0x68, - 0x00, 0x2c, 0xf4, 0xd1, 0x0c, 0x4a, 0x04, 0x3a, - 0x10, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x41, 0x68, - 0x11, 0x60, 0x3c, 0x00, 0xcc, 0x23, 0x01, 0x00, - 0x00, 0x28, 0x04, 0xd1, 0x02, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x66, 0xff, 0xf8, 0xbd, 0x00, 0x21, - 0x41, 0x60, 0x06, 0x60, 0x00, 0x2d, 0x01, 0xd0, - 0x68, 0x60, 0xf7, 0xe7, 0x01, 0x49, 0xc8, 0x51, - 0xf4, 0xe7, 0x00, 0x00, 0x68, 0x5b, 0x01, 0x00, - 0x70, 0xb5, 0x0e, 0x1c, 0x05, 0x1c, 0x00, 0x24, - 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x4e, 0xff, 0x3c, 0x00, 0x08, 0x24, - 0x01, 0x00, 0x0d, 0x4b, 0xaa, 0x00, 0x98, 0x58, - 0x04, 0xe0, 0x01, 0x68, 0xb1, 0x42, 0x04, 0xd0, - 0x04, 0x1c, 0x40, 0x68, 0x00, 0x28, 0xf8, 0xd1, - 0x70, 0xbd, 0x00, 0x28, 0xfc, 0xd0, 0x00, 0x2c, - 0x41, 0x68, 0x01, 0xd1, 0x99, 0x50, 0x00, 0xe0, - 0x61, 0x60, 0x00, 0x21, 0x03, 0x4a, 0x01, 0x60, - 0x04, 0x3a, 0x11, 0x68, 0x41, 0x60, 0x10, 0x60, - 0x70, 0xbd, 0x68, 0x5b, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x24, 0x01, 0x00, 0xf3, 0xb5, 0x81, 0xb0, - 0x00, 0x28, 0x17, 0xd0, 0x01, 0x78, 0xff, 0x29, - 0x14, 0xd0, 0x45, 0x78, 0x44, 0x19, 0x02, 0x34, - 0x80, 0x27, 0x01, 0x3c, 0x26, 0x78, 0x01, 0x3d, - 0xbe, 0x43, 0x30, 0x1c, 0xf8, 0xf7, 0x82, 0xfc, - 0x01, 0x21, 0x81, 0x40, 0x02, 0x98, 0x01, 0x40, - 0x02, 0xd0, 0x3e, 0x43, 0x30, 0x1c, 0x20, 0x70, - 0x00, 0x2d, 0xee, 0xd1, 0xfe, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x24, 0x01, 0x00, 0x10, 0x4b, - 0x10, 0xb5, 0x59, 0x68, 0x41, 0x1a, 0x0f, 0x29, - 0x0d, 0xdc, 0x0e, 0x22, 0xd2, 0x43, 0x91, 0x42, - 0x09, 0xdb, 0x1a, 0x1c, 0x92, 0x68, 0x00, 0x29, - 0x01, 0xdd, 0x00, 0x2a, 0x03, 0xda, 0x00, 0x29, - 0x0d, 0xda, 0x00, 0x2a, 0x0b, 0xdc, 0x04, 0x33, - 0x03, 0xc3, 0xfd, 0xf7, 0x10, 0xfd, 0x04, 0x1c, - 0xfd, 0xf7, 0x13, 0xfd, 0x00, 0x28, 0x02, 0xd0, - 0x20, 0x1c, 0x3c, 0x00, 0xbc, 0x24, 0x01, 0x00, - 0xff, 0xf7, 0x92, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0xf8, 0xb5, 0x64, 0x4c, - 0x07, 0x1c, 0x60, 0x78, 0xa1, 0x78, 0x88, 0x42, - 0x0f, 0xd1, 0x08, 0x1c, 0xfd, 0xf7, 0xce, 0xf8, - 0xe0, 0x60, 0x04, 0x20, 0x60, 0x70, 0x0a, 0x22, - 0x1e, 0x21, 0x13, 0x20, 0x01, 0xf0, 0x70, 0xf8, - 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7, 0x24, 0xf9, - 0xf8, 0xbd, 0x04, 0x28, 0x3c, 0x00, 0xf8, 0x24, - 0x01, 0x00, 0x6e, 0xd1, 0x58, 0x4e, 0xfd, 0xf7, - 0xbc, 0xf8, 0x00, 0x90, 0x71, 0x78, 0x04, 0x1c, - 0x00, 0x20, 0x05, 0x29, 0x21, 0xd2, 0x01, 0xa3, - 0x5b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x0b, 0x0f, - 0x14, 0x1a, 0x02, 0x00, 0x51, 0x48, 0x51, 0x49, - 0x60, 0x43, 0x41, 0x18, 0x7d, 0x20, 0xc0, 0x00, - 0xee, 0xf7, 0x87, 0xf8, 0x11, 0xe0, 0x87, 0x20, - 0x60, 0x43, 0x4d, 0x49, 0x02, 0xe0, 0x3c, 0x00, - 0x34, 0x25, 0x01, 0x00, 0x45, 0x20, 0x4d, 0x49, - 0x60, 0x43, 0x40, 0x18, 0x08, 0xe0, 0x4c, 0x48, - 0xcd, 0x21, 0x09, 0x01, 0x60, 0x43, 0x40, 0x1a, - 0x02, 0xe0, 0x46, 0x20, 0x60, 0x43, 0x82, 0x38, - 0x06, 0x06, 0x48, 0x48, 0x07, 0x21, 0x00, 0x79, - 0x36, 0x16, 0x08, 0x1a, 0x00, 0x19, 0x00, 0x90, - 0x68, 0x46, 0xfe, 0xf7, 0x5f, 0xfd, 0x38, 0x1c, - 0xfd, 0xf7, 0x2e, 0xfb, 0x00, 0x99, 0x42, 0x4a, - 0x3c, 0x00, 0x70, 0x25, 0x01, 0x00, 0x49, 0x00, - 0x51, 0x5a, 0x48, 0x43, 0x39, 0x49, 0x04, 0x1c, - 0x88, 0x78, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, - 0x1e, 0xd1, 0x35, 0x49, 0x00, 0x28, 0x03, 0xd1, - 0x3a, 0x48, 0x05, 0x78, 0x04, 0x20, 0x02, 0xe0, - 0x38, 0x48, 0x45, 0x78, 0x0c, 0x20, 0x30, 0x49, - 0xc9, 0x68, 0x49, 0x1b, 0x08, 0x18, 0x00, 0x90, - 0x68, 0x46, 0xfe, 0xf7, 0x3e, 0xfd, 0x00, 0x98, - 0x33, 0x49, 0x3c, 0x00, 0xac, 0x25, 0x01, 0x00, - 0x40, 0x00, 0x20, 0x31, 0x08, 0x5a, 0x2a, 0x49, - 0x44, 0x43, 0xc8, 0x68, 0xa8, 0x42, 0x01, 0xd9, - 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25, 0x2e, 0x48, - 0x21, 0x18, 0x40, 0x00, 0xee, 0xf7, 0xa2, 0xf8, - 0x04, 0x1c, 0x00, 0x2d, 0x03, 0xd0, 0xfd, 0xf7, - 0xc3, 0xfa, 0x02, 0xe0, 0x3d, 0xe0, 0xfd, 0xf7, - 0xf3, 0xfa, 0x00, 0x2f, 0x02, 0xd1, 0x25, 0x48, - 0x0e, 0x38, 0x01, 0xe0, 0x3c, 0x00, 0xe8, 0x25, - 0x01, 0x00, 0x23, 0x48, 0x0a, 0x38, 0x01, 0x68, - 0x61, 0x1a, 0xcb, 0x1c, 0x01, 0xdb, 0x03, 0x29, - 0x00, 0xdd, 0x04, 0x60, 0x01, 0x68, 0xa1, 0x42, - 0x01, 0xd2, 0x01, 0x31, 0x04, 0xe0, 0xa1, 0x42, - 0x03, 0xd9, 0x00, 0x29, 0x01, 0xd0, 0x01, 0x39, - 0x01, 0x60, 0x01, 0x68, 0x38, 0x1c, 0xfd, 0xf7, - 0xc0, 0xfb, 0x10, 0x4c, 0x0a, 0x20, 0x60, 0x70, - 0x0a, 0x22, 0x13, 0x20, 0xa1, 0x68, 0x3c, 0x00, - 0x24, 0x26, 0x01, 0x00, 0x00, 0xf0, 0xd2, 0xff, - 0x60, 0x68, 0x00, 0xf0, 0xf7, 0xfa, 0x00, 0x28, - 0x00, 0xd1, 0x5f, 0xe7, 0x00, 0xf0, 0xba, 0xfb, - 0x11, 0x49, 0x00, 0x23, 0x40, 0x18, 0x0e, 0x49, - 0x60, 0x60, 0x1e, 0x39, 0xc8, 0x56, 0xb0, 0x42, - 0xf3, 0xd0, 0x0e, 0x70, 0x31, 0x1c, 0x00, 0x20, - 0xff, 0xf7, 0x84, 0xfe, 0x4e, 0xe7, 0xff, 0xf7, - 0x15, 0xfe, 0x4b, 0xe7, 0x7c, 0x78, 0x01, 0x00, - 0x3c, 0x00, 0x60, 0x26, 0x01, 0x00, 0x60, 0xd7, - 0xff, 0xff, 0x60, 0x8f, 0x01, 0x00, 0x54, 0x0b, - 0x00, 0x00, 0xc9, 0x09, 0x00, 0x00, 0x8e, 0xfe, - 0xff, 0xff, 0x0c, 0x5a, 0x01, 0x00, 0x12, 0x5a, - 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x40, 0x42, - 0x0f, 0x00, 0x30, 0xb5, 0x0c, 0x4b, 0xfe, 0x24, - 0x1b, 0x88, 0x04, 0x40, 0xc0, 0x07, 0x5d, 0x07, - 0x6d, 0x0f, 0xdb, 0x08, 0xc0, 0x0f, 0x9c, 0x42, - 0x0b, 0xd8, 0x3c, 0x00, 0x9c, 0x26, 0x01, 0x00, - 0xa2, 0x18, 0x04, 0x3a, 0x9a, 0x42, 0x07, 0xd3, - 0x1a, 0x1b, 0x89, 0x5c, 0x01, 0x22, 0xaa, 0x40, - 0x11, 0x40, 0x01, 0xd0, 0x02, 0x21, 0x08, 0x43, - 0x30, 0xbd, 0x00, 0x00, 0xfa, 0x60, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c, - 0x14, 0x20, 0xf5, 0xf7, 0xff, 0xfa, 0x80, 0xbd, - 0xb0, 0xb5, 0x04, 0x1c, 0xf7, 0xf7, 0x08, 0xfd, - 0x13, 0x4d, 0x00, 0x28, 0x3c, 0x00, 0xd8, 0x26, - 0x01, 0x00, 0x1d, 0xd1, 0xa0, 0x07, 0x16, 0xd5, - 0x02, 0x20, 0x84, 0x43, 0x11, 0x48, 0x01, 0x22, - 0x2a, 0x62, 0x40, 0x68, 0x00, 0x28, 0x13, 0xd0, - 0xf2, 0xf7, 0x51, 0xf9, 0x00, 0x28, 0x0f, 0xd1, - 0x0b, 0x48, 0xe4, 0x30, 0x80, 0x7a, 0x01, 0x28, - 0x00, 0xd0, 0x00, 0x22, 0x11, 0x1c, 0x01, 0x20, - 0xf2, 0xf7, 0xa5, 0xf9, 0x04, 0xe0, 0x00, 0xf0, - 0x4e, 0xfb, 0xe8, 0x61, 0xf2, 0xf7, 0x3c, 0x00, - 0x14, 0x27, 0x01, 0x00, 0x6b, 0xf9, 0xa9, 0x6a, - 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7, - 0x5c, 0xfe, 0xb0, 0xbd, 0x60, 0x6c, 0x01, 0x00, - 0xb0, 0x57, 0x01, 0x00, 0x20, 0x48, 0xb0, 0xb5, - 0x81, 0x68, 0x01, 0x29, 0x04, 0xd1, 0x00, 0x78, - 0x00, 0x28, 0x01, 0xd1, 0xfd, 0xf7, 0x72, 0xfd, - 0x1b, 0x4d, 0x80, 0x3d, 0x2c, 0x1c, 0x70, 0x34, - 0x20, 0x78, 0x03, 0x38, 0x05, 0x28, 0x18, 0xd2, - 0x3c, 0x00, 0x50, 0x27, 0x01, 0x00, 0x01, 0xa3, - 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x04, 0x15, - 0x27, 0x27, 0x27, 0x00, 0xfb, 0xf7, 0xf1, 0xff, - 0x60, 0x7b, 0x01, 0x1c, 0xff, 0x31, 0x61, 0x73, - 0x00, 0x28, 0xf7, 0xd1, 0x04, 0x20, 0x20, 0x70, - 0xa8, 0x89, 0xf8, 0xf7, 0xda, 0xf9, 0x01, 0x1c, - 0x00, 0x22, 0x0f, 0x20, 0x00, 0xf0, 0x25, 0xff, - 0xb0, 0xbd, 0xef, 0xf7, 0xce, 0xff, 0x6a, 0x21, - 0x49, 0x5b, 0x3c, 0x00, 0x8c, 0x27, 0x01, 0x00, - 0x88, 0x42, 0x0b, 0xd0, 0xe8, 0x89, 0xf8, 0xf7, - 0xcb, 0xf9, 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22, - 0x0f, 0x20, 0x00, 0xf0, 0xf7, 0xff, 0x07, 0x20, - 0x20, 0x70, 0xb0, 0xbd, 0xfd, 0xf7, 0x3a, 0xfe, - 0xb0, 0xbd, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, - 0xf0, 0xb5, 0x85, 0xb0, 0x04, 0x1c, 0x03, 0x80, - 0x18, 0x0c, 0x60, 0x80, 0x0d, 0x1c, 0x51, 0x78, - 0x10, 0x78, 0x09, 0x02, 0x3c, 0x00, 0xc8, 0x27, - 0x01, 0x00, 0x48, 0x40, 0xa0, 0x80, 0xd1, 0x78, - 0x90, 0x78, 0x09, 0x02, 0x48, 0x40, 0xe0, 0x80, - 0x51, 0x79, 0x10, 0x79, 0x09, 0x02, 0x48, 0x40, - 0x20, 0x81, 0x68, 0x46, 0x1a, 0x49, 0x14, 0x22, - 0xed, 0xf7, 0xe3, 0xfe, 0x00, 0x23, 0x00, 0x20, - 0xd9, 0x07, 0xc9, 0x0f, 0x8c, 0x46, 0x42, 0x00, - 0x56, 0x07, 0x76, 0x0f, 0x61, 0x46, 0x89, 0x19, - 0x49, 0x00, 0x6e, 0x5c, 0x49, 0x19, 0x3c, 0x00, - 0x04, 0x28, 0x01, 0x00, 0x49, 0x78, 0x6f, 0x46, - 0x09, 0x02, 0x4e, 0x40, 0x81, 0x00, 0x79, 0x58, - 0x0f, 0x4f, 0x49, 0x00, 0x61, 0x5a, 0x01, 0x30, - 0x4e, 0x40, 0x31, 0x06, 0x36, 0x0a, 0x76, 0x00, - 0xc9, 0x0d, 0x79, 0x5a, 0xf6, 0x19, 0x01, 0x27, - 0x7f, 0x02, 0xf6, 0x19, 0x36, 0x88, 0x71, 0x40, - 0xa6, 0x5a, 0x89, 0x19, 0xa1, 0x52, 0x05, 0x28, - 0xdc, 0xdb, 0x20, 0x89, 0xc0, 0x18, 0x01, 0x33, - 0x3c, 0x00, 0x40, 0x28, 0x01, 0x00, 0x08, 0x2b, - 0x20, 0x81, 0xd2, 0xdb, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xd8, 0x56, 0x01, 0x00, 0xd8, 0x52, - 0x01, 0x00, 0xf0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x1e, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0x41, 0x00, - 0x53, 0x5a, 0x01, 0x30, 0x06, 0xaf, 0x7b, 0x52, - 0x05, 0x28, 0xf8, 0xdb, 0x10, 0x89, 0x00, 0xab, - 0x3a, 0x49, 0x80, 0x19, 0x58, 0x84, 0x68, 0x46, - 0x18, 0x22, 0x3c, 0x00, 0x7c, 0x28, 0x01, 0x00, - 0xed, 0xf7, 0x98, 0xfe, 0x00, 0x20, 0x41, 0x00, - 0x0a, 0x19, 0x52, 0x78, 0x63, 0x5c, 0x6f, 0x46, - 0x12, 0x02, 0x53, 0x40, 0x82, 0x00, 0xba, 0x58, - 0x06, 0xaf, 0x52, 0x00, 0xba, 0x5a, 0x31, 0x4f, - 0x01, 0x30, 0x53, 0x40, 0x1a, 0x06, 0x1b, 0x0a, - 0x5b, 0x00, 0xd2, 0x0d, 0xba, 0x5a, 0xdb, 0x19, - 0x01, 0x27, 0x7f, 0x02, 0xdb, 0x19, 0x1b, 0x88, - 0x5a, 0x40, 0x06, 0xab, 0x3c, 0x00, 0xb8, 0x28, - 0x01, 0x00, 0x5b, 0x5a, 0xd2, 0x18, 0x06, 0xab, - 0x5a, 0x52, 0x06, 0x28, 0xde, 0xdb, 0x61, 0x7b, - 0x20, 0x7b, 0x00, 0xab, 0x09, 0x02, 0x48, 0x40, - 0x59, 0x8c, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03, - 0x48, 0x40, 0x19, 0x8b, 0x40, 0x18, 0x18, 0x83, - 0xe1, 0x7b, 0xa0, 0x7b, 0x09, 0x02, 0x48, 0x40, - 0x19, 0x8b, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03, - 0x48, 0x40, 0x59, 0x8b, 0x40, 0x18, 0x3c, 0x00, - 0xf4, 0x28, 0x01, 0x00, 0x58, 0x83, 0x02, 0x20, - 0x41, 0x00, 0x06, 0xaa, 0x8a, 0x18, 0x20, 0x3a, - 0xd2, 0x8b, 0x01, 0x30, 0x53, 0x08, 0xd2, 0x03, - 0x5a, 0x40, 0x06, 0xab, 0x5b, 0x5a, 0xd2, 0x18, - 0x06, 0xab, 0x5a, 0x52, 0x06, 0x28, 0xef, 0xdb, - 0x30, 0x0a, 0x28, 0x70, 0x70, 0x04, 0x40, 0x0e, - 0x20, 0x21, 0x08, 0x43, 0x68, 0x70, 0xae, 0x70, - 0x61, 0x78, 0x20, 0x78, 0x00, 0xab, 0x09, 0x02, - 0x3c, 0x00, 0x30, 0x29, 0x01, 0x00, 0x48, 0x40, - 0x59, 0x8c, 0x48, 0x40, 0xc0, 0x05, 0x00, 0x0e, - 0xe8, 0x70, 0x00, 0x20, 0x41, 0x00, 0x06, 0xaa, - 0x53, 0x5a, 0x4a, 0x19, 0x01, 0x30, 0x13, 0x71, - 0x06, 0xab, 0x59, 0x5a, 0x09, 0x0a, 0x51, 0x71, - 0x06, 0x28, 0xf3, 0xdb, 0x09, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xec, 0x56, 0x01, 0x00, 0xd8, 0x52, - 0x01, 0x00, 0xf0, 0xb5, 0x46, 0x68, 0x05, 0x1c, - 0x60, 0x30, 0x3c, 0x00, 0x6c, 0x29, 0x01, 0x00, - 0x85, 0xb0, 0x04, 0x90, 0x60, 0xe0, 0x68, 0x68, - 0x0c, 0x21, 0x07, 0x69, 0x00, 0x20, 0xee, 0xf7, - 0x2d, 0xfe, 0x70, 0x61, 0x01, 0x89, 0x04, 0x39, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x70, 0x69, - 0x00, 0x68, 0x40, 0x18, 0x04, 0x21, 0xee, 0xf7, - 0x21, 0xfe, 0xf0, 0x61, 0x70, 0x69, 0x20, 0x21, - 0x04, 0x68, 0x04, 0x98, 0x04, 0x22, 0x40, 0x7b, - 0x80, 0x01, 0x08, 0x43, 0x3c, 0x00, 0xa8, 0x29, - 0x01, 0x00, 0xe0, 0x70, 0x28, 0x69, 0x40, 0x89, - 0xa0, 0x70, 0x28, 0x69, 0x40, 0x89, 0x00, 0x0a, - 0x20, 0x70, 0x29, 0x69, 0x0c, 0x31, 0xa0, 0x18, - 0xed, 0xf7, 0x9b, 0xfd, 0x20, 0x78, 0x20, 0x21, - 0x40, 0x06, 0x40, 0x0e, 0x08, 0x43, 0x60, 0x70, - 0x28, 0x69, 0x0a, 0x30, 0x01, 0x88, 0x01, 0x31, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x80, 0x04, 0xd1, - 0x28, 0x69, 0x0c, 0x30, 0x01, 0x68, 0x3c, 0x00, - 0xe4, 0x29, 0x01, 0x00, 0x01, 0x31, 0x01, 0x60, - 0x35, 0x62, 0x61, 0x79, 0x20, 0x79, 0x09, 0x02, - 0x40, 0x18, 0xa1, 0x79, 0x09, 0x04, 0x40, 0x18, - 0xe1, 0x79, 0x09, 0x06, 0x43, 0x18, 0x00, 0x93, - 0xa0, 0x78, 0x21, 0x78, 0x09, 0x02, 0x40, 0x18, - 0x04, 0x04, 0x24, 0x0c, 0x10, 0x20, 0xee, 0xf7, - 0x13, 0xff, 0xb0, 0x61, 0x28, 0x69, 0x3a, 0x1c, - 0x01, 0x68, 0x00, 0x9b, 0x01, 0xa8, 0x0a, 0x32, - 0x3c, 0x00, 0x20, 0x2a, 0x01, 0x00, 0xff, 0xf7, - 0xc8, 0xfe, 0x28, 0x69, 0x23, 0x1c, 0x01, 0x68, - 0xb0, 0x69, 0x01, 0xaa, 0xff, 0xf7, 0x11, 0xff, - 0x36, 0x68, 0x00, 0x2e, 0x9c, 0xd1, 0x03, 0x49, - 0x04, 0x48, 0x6a, 0x68, 0xf7, 0xf7, 0x63, 0xfb, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xfd, 0x6b, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x01, 0x38, - 0x07, 0x49, 0x40, 0x00, 0x09, 0x5c, 0x00, 0x29, - 0x06, 0xd0, 0x3c, 0x00, 0x5c, 0x2a, 0x01, 0x00, - 0x04, 0x49, 0x1c, 0x39, 0x08, 0x5c, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0xe6, 0x78, 0x01, 0x00, - 0xfe, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x02, 0x90, - 0x13, 0x48, 0x17, 0x1c, 0x00, 0x68, 0x0c, 0x1c, - 0x86, 0x78, 0x30, 0x1c, 0xfd, 0xf7, 0x28, 0xfa, - 0x00, 0x28, 0x01, 0xd1, 0x02, 0x98, 0xfe, 0xbd, - 0x00, 0x2d, 0x08, 0xd1, 0x3c, 0x00, 0x98, 0x2a, - 0x01, 0x00, 0x20, 0x68, 0x00, 0xab, 0x18, 0x71, - 0x60, 0x68, 0x58, 0x71, 0xa0, 0x68, 0x98, 0x71, - 0x03, 0x20, 0x38, 0x80, 0x29, 0x1c, 0x30, 0x1c, - 0x01, 0xaa, 0x00, 0xf0, 0x0e, 0xf8, 0x00, 0x2d, - 0xec, 0xd0, 0x00, 0xab, 0x19, 0x79, 0x21, 0x60, - 0x59, 0x79, 0x61, 0x60, 0x99, 0x79, 0xa1, 0x60, - 0x0c, 0x21, 0x39, 0x80, 0xe2, 0xe7, 0xf8, 0x6b, - 0x01, 0x00, 0xf8, 0xb5, 0x15, 0x1c, 0x3c, 0x00, - 0xd4, 0x2a, 0x01, 0x00, 0x42, 0x1e, 0x01, 0x38, - 0x47, 0x00, 0x3f, 0x18, 0x1f, 0x48, 0x3e, 0x18, - 0x00, 0x29, 0x06, 0xd0, 0x01, 0x24, 0x03, 0x22, - 0x31, 0x1c, 0x28, 0x1c, 0xed, 0xf7, 0x04, 0xfd, - 0x32, 0xe0, 0x68, 0x78, 0x01, 0x24, 0x00, 0x28, - 0x05, 0xd0, 0x29, 0x78, 0x08, 0x18, 0x01, 0x38, - 0x0e, 0x28, 0x00, 0xd9, 0x00, 0x24, 0x00, 0x2c, - 0x26, 0xd0, 0x00, 0x2a, 0x07, 0xd1, 0x2a, 0x21, - 0x3c, 0x00, 0x10, 0x2b, 0x01, 0x00, 0x12, 0x48, - 0xed, 0xf7, 0x9f, 0xfc, 0x1c, 0x21, 0x11, 0x48, - 0xed, 0xf7, 0x9b, 0xfc, 0x0f, 0x48, 0x03, 0x22, - 0x29, 0x1c, 0x30, 0x1c, 0xed, 0xf7, 0xe7, 0xfc, - 0x0c, 0x48, 0x71, 0x78, 0xc0, 0x5d, 0xb2, 0x78, - 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x2a, 0x0c, 0xd0, - 0x01, 0x22, 0x43, 0x18, 0x08, 0x4d, 0x06, 0xe0, - 0x41, 0x00, 0x49, 0x19, 0x10, 0x39, 0x8a, 0x73, - 0xb7, 0x78, 0x3c, 0x00, 0x4c, 0x2b, 0x01, 0x00, - 0x01, 0x30, 0xcf, 0x73, 0x83, 0x42, 0xf6, 0xd8, - 0xfe, 0xf7, 0x60, 0xf8, 0x20, 0x1c, 0xf8, 0xbd, - 0xeb, 0x62, 0x01, 0x00, 0xca, 0x78, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x1c, 0x48, 0x00, 0x23, - 0xc0, 0x56, 0x43, 0x1c, 0x32, 0xd1, 0xa8, 0x7a, - 0xf8, 0xf7, 0x0c, 0xf9, 0x00, 0x26, 0x00, 0x28, - 0x18, 0x4c, 0x08, 0xd0, 0xe8, 0x69, 0xe1, 0x6b, - 0x00, 0x29, 0x0b, 0xd1, 0x3c, 0x00, 0x88, 0x2b, - 0x01, 0x00, 0x66, 0x63, 0x01, 0x21, 0xe1, 0x63, - 0xa6, 0x63, 0x06, 0xe0, 0xa8, 0x69, 0xe1, 0x6b, - 0x00, 0x29, 0x02, 0xd0, 0x66, 0x63, 0xa6, 0x63, - 0xe6, 0x63, 0xa1, 0x6b, 0x01, 0x31, 0xa1, 0x63, - 0x82, 0x03, 0x01, 0xd5, 0x0e, 0x4a, 0x10, 0x43, - 0xe2, 0x6b, 0x00, 0x2a, 0x00, 0xd0, 0x40, 0x42, - 0x62, 0x6b, 0x10, 0x18, 0x60, 0x63, 0x08, 0x29, - 0x0b, 0xd1, 0x00, 0x28, 0x01, 0xdd, 0x3c, 0x00, - 0xc4, 0x2b, 0x01, 0x00, 0x01, 0x20, 0x03, 0xe0, - 0x00, 0x28, 0x03, 0xda, 0x00, 0x20, 0xc0, 0x43, - 0xef, 0xf7, 0x62, 0xfe, 0x66, 0x63, 0xa6, 0x63, - 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x6b, 0x01, 0x00, - 0x84, 0x6a, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, - 0x0c, 0x21, 0x05, 0x4a, 0x41, 0x43, 0x89, 0x18, - 0x80, 0xb5, 0x89, 0x78, 0x00, 0x29, 0x01, 0xd1, - 0xf3, 0xf7, 0xf2, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x00, 0x20, - 0xf7, 0xf7, 0x03, 0xfa, 0x80, 0xbd, 0x80, 0xb5, - 0x01, 0x1c, 0x01, 0x20, 0xf7, 0xf7, 0xfd, 0xf9, - 0x80, 0xbd, 0x02, 0x49, 0x89, 0x68, 0x40, 0x1a, - 0xc0, 0x0f, 0x70, 0x47, 0x00, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x02, 0x49, 0x89, 0x68, 0x08, 0x1a, - 0xc0, 0x17, 0x01, 0x30, 0x70, 0x47, 0x00, 0x01, - 0x07, 0x00, 0x3c, 0x00, 0x3c, 0x2c, 0x01, 0x00, - 0x05, 0x49, 0x4a, 0x68, 0x01, 0x23, 0x1a, 0x43, - 0x4a, 0x60, 0x8a, 0x68, 0x10, 0x18, 0x88, 0x60, - 0x48, 0x68, 0x98, 0x43, 0x48, 0x60, 0x70, 0x47, - 0x00, 0x01, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4b, - 0x00, 0x21, 0x0a, 0x01, 0x9a, 0x58, 0x00, 0x2a, - 0x17, 0xd1, 0x01, 0x24, 0x0a, 0x01, 0x9c, 0x50, - 0xd2, 0x18, 0x10, 0x73, 0x00, 0x23, 0x53, 0x73, - 0x02, 0x23, 0x01, 0x28, 0x3c, 0x00, 0x78, 0x2c, - 0x01, 0x00, 0x0e, 0x4a, 0x05, 0xd1, 0xc8, 0x00, - 0x80, 0x18, 0x10, 0x30, 0x02, 0x78, 0x9a, 0x43, - 0x04, 0xe0, 0xc8, 0x00, 0x80, 0x18, 0x10, 0x30, - 0x02, 0x78, 0x1a, 0x43, 0x02, 0x70, 0x02, 0xe0, - 0x01, 0x31, 0x08, 0x29, 0xe0, 0xdb, 0x08, 0x29, - 0x04, 0xd1, 0x01, 0x21, 0x99, 0x20, 0xee, 0xf7, - 0xfe, 0xfa, 0x03, 0x49, 0x08, 0x04, 0x00, 0x0c, - 0x10, 0xbd, 0xac, 0x73, 0x01, 0x00, 0x3c, 0x00, - 0xb4, 0x2c, 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, - 0xff, 0xff, 0x00, 0x00, 0xf7, 0xb5, 0x19, 0x4f, - 0x19, 0x4e, 0x0c, 0x1c, 0xc1, 0x00, 0xc9, 0x19, - 0xb2, 0x68, 0x10, 0x31, 0x81, 0xb0, 0x01, 0x3a, - 0x4a, 0x60, 0x0b, 0x78, 0x1d, 0x1c, 0x0d, 0x22, - 0x93, 0x43, 0x0b, 0x70, 0x01, 0x22, 0x82, 0x40, - 0x3a, 0x73, 0x12, 0x4b, 0x00, 0x01, 0x03, 0x9a, - 0xc0, 0x18, 0x82, 0x60, 0x10, 0x4a, 0x10, 0x1c, - 0x3c, 0x00, 0xf0, 0x2c, 0x01, 0x00, 0x20, 0x30, - 0x87, 0x79, 0x00, 0xab, 0x1f, 0x70, 0xc0, 0x79, - 0x58, 0x70, 0xb0, 0x68, 0x03, 0x30, 0x00, 0x23, - 0x26, 0x1a, 0x01, 0xd5, 0x04, 0x1c, 0x01, 0x23, - 0x4c, 0x60, 0x0d, 0x70, 0x00, 0x2b, 0x04, 0xd0, - 0x20, 0x1c, 0xff, 0xf7, 0x8a, 0xff, 0x00, 0x28, - 0xfa, 0xd0, 0x00, 0xab, 0x18, 0x88, 0xd0, 0x84, - 0xff, 0xbd, 0x00, 0x60, 0x07, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x3c, 0x00, 0x2c, 0x2d, 0x01, 0x00, - 0xac, 0x73, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x30, 0xb5, 0x00, 0x20, 0xc0, 0x43, 0x0b, 0x4c, - 0x09, 0x4b, 0x00, 0x22, 0xd1, 0x00, 0x09, 0x19, - 0x0d, 0x7c, 0xed, 0x07, 0x07, 0xd5, 0x49, 0x69, - 0x9d, 0x68, 0x49, 0x1b, 0x00, 0xd5, 0x00, 0x21, - 0x81, 0x42, 0x00, 0xd2, 0x08, 0x1c, 0x01, 0x32, - 0x08, 0x2a, 0xef, 0xdb, 0x30, 0xbd, 0x00, 0x00, - 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x2d, - 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0xb0, 0xb5, - 0x08, 0x28, 0x0b, 0xd2, 0x08, 0x4d, 0x04, 0x01, - 0x29, 0x59, 0x00, 0x29, 0x04, 0xd0, 0x00, 0xf0, - 0x4a, 0xf8, 0x00, 0x20, 0x28, 0x51, 0xb0, 0xbd, - 0x02, 0x21, 0x00, 0xe0, 0x03, 0x21, 0x99, 0x20, - 0xee, 0xf7, 0x89, 0xfa, 0xb0, 0xbd, 0xac, 0x73, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x01, 0x40, 0x18, - 0x41, 0x7b, 0x08, 0x22, 0x11, 0x43, 0x3c, 0x00, - 0xa4, 0x2d, 0x01, 0x00, 0x41, 0x73, 0x70, 0x47, - 0xac, 0x73, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, - 0x70, 0xb5, 0x0b, 0x4e, 0x09, 0x4d, 0x00, 0x22, - 0xd0, 0x00, 0x84, 0x19, 0x20, 0x7c, 0xc0, 0x07, - 0x07, 0xd5, 0x60, 0x69, 0xff, 0xf7, 0x26, 0xff, - 0x00, 0x28, 0x02, 0xd0, 0xa8, 0x68, 0x32, 0x30, - 0x60, 0x61, 0x01, 0x32, 0x08, 0x2a, 0xef, 0xdb, - 0x3c, 0x00, 0xe0, 0x2d, 0x01, 0x00, 0x70, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x02, 0x4a, 0xc0, 0x00, 0x80, 0x18, - 0x01, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x04, 0x49, 0xc0, 0x00, 0x41, 0x18, - 0x08, 0x7c, 0x08, 0x23, 0x02, 0x1c, 0x9a, 0x43, - 0x0a, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x70, 0xb5, 0x08, 0x28, 0x17, 0xd2, - 0x0e, 0x49, 0x3c, 0x00, 0x1c, 0x2e, 0x01, 0x00, - 0x8a, 0x68, 0x0e, 0x4d, 0x01, 0x3a, 0xc1, 0x00, - 0x49, 0x19, 0x4a, 0x61, 0x0c, 0x4b, 0x9a, 0x79, - 0x10, 0x31, 0x0c, 0x78, 0x0d, 0x26, 0xb4, 0x43, - 0x0c, 0x70, 0x01, 0x21, 0x81, 0x40, 0x29, 0x73, - 0x9a, 0x71, 0x09, 0x4a, 0x07, 0x49, 0x00, 0x01, - 0x80, 0x18, 0x41, 0x60, 0x70, 0xbd, 0x05, 0x21, - 0x99, 0x20, 0xee, 0xf7, 0x29, 0xfa, 0x70, 0xbd, - 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x58, 0x2e, - 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0xac, 0x73, - 0x01, 0x00, 0xf8, 0xb5, 0x9e, 0x46, 0x1a, 0x4b, - 0x94, 0x46, 0x9b, 0x68, 0x1a, 0x4c, 0xc2, 0x00, - 0x12, 0x19, 0x01, 0x3b, 0x53, 0x61, 0x15, 0x1c, - 0x18, 0x4c, 0xa6, 0x79, 0x2a, 0x1c, 0x10, 0x32, - 0x13, 0x78, 0x0d, 0x27, 0xbb, 0x43, 0x13, 0x70, - 0x01, 0x27, 0x12, 0x4b, 0x87, 0x40, 0x3c, 0x00, - 0x94, 0x2e, 0x01, 0x00, 0x1f, 0x73, 0xa6, 0x71, - 0x12, 0x4e, 0x00, 0x01, 0x80, 0x19, 0x63, 0x46, - 0x43, 0x60, 0x73, 0x46, 0x83, 0x60, 0x13, 0x78, - 0x40, 0x7b, 0xa6, 0x79, 0x01, 0x27, 0x18, 0x43, - 0x38, 0x43, 0x14, 0x35, 0x00, 0xab, 0x1e, 0x70, - 0xe4, 0x79, 0x5c, 0x70, 0x06, 0x4b, 0x9b, 0x68, - 0x03, 0x33, 0xcc, 0x1a, 0x00, 0xd5, 0x19, 0x1c, - 0x29, 0x60, 0x10, 0x70, 0x00, 0xab, 0x18, 0x88, - 0x3c, 0x00, 0xd0, 0x2e, 0x01, 0x00, 0x03, 0x4c, - 0x20, 0x3c, 0xe0, 0x84, 0xf8, 0xbd, 0x00, 0x01, - 0x07, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xac, 0x73, 0x01, 0x00, 0x00, 0xb5, - 0x01, 0x1c, 0xff, 0xf7, 0x5e, 0xff, 0x42, 0x18, - 0x10, 0x1c, 0xff, 0xf7, 0x92, 0xfe, 0x00, 0x28, - 0xfa, 0xd0, 0x00, 0xbd, 0x00, 0x00, 0x89, 0x1a, - 0x40, 0x1a, 0x99, 0x18, 0x88, 0x42, 0x01, 0xd8, - 0x01, 0x20, 0x3c, 0x00, 0x0c, 0x2f, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x00, 0x28, - 0x01, 0xd1, 0xee, 0xf7, 0xef, 0xf9, 0x21, 0x1c, - 0x01, 0x20, 0xff, 0xf7, 0x19, 0xfa, 0x41, 0x20, - 0x00, 0x5d, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x25, - 0x04, 0xe0, 0x02, 0x28, 0x01, 0xd1, 0x05, 0x25, - 0x00, 0xe0, 0x01, 0x25, 0xe0, 0x68, 0xee, 0xf7, - 0x29, 0xfb, 0xa6, 0x6b, 0x3c, 0x00, 0x48, 0x2f, - 0x01, 0x00, 0x00, 0x2e, 0x10, 0xd0, 0x00, 0x2f, - 0x06, 0xd0, 0x2f, 0x20, 0x02, 0x5d, 0x20, 0x6a, - 0x41, 0x6b, 0x28, 0x1c, 0xed, 0xf7, 0x44, 0xfa, - 0xa0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xee, 0xf7, - 0x46, 0xfc, 0x20, 0x6a, 0xee, 0xf7, 0x43, 0xfc, - 0x20, 0x1c, 0xee, 0xf7, 0x40, 0xfc, 0x30, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0xc0, 0x6b, - 0x00, 0x28, 0x09, 0xd0, 0x20, 0x69, 0x3c, 0x00, - 0x84, 0x2f, 0x01, 0x00, 0x00, 0x8b, 0xee, 0xf7, - 0x55, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c, - 0x06, 0x20, 0xff, 0xf7, 0xe3, 0xf9, 0x08, 0x4d, - 0x20, 0x1c, 0xa9, 0x6d, 0xff, 0xf7, 0xba, 0xff, - 0x00, 0x28, 0x07, 0xd0, 0xe8, 0x68, 0x01, 0x30, - 0xe8, 0x60, 0x28, 0x6a, 0x01, 0x38, 0x28, 0x62, - 0xfc, 0xf7, 0x78, 0xf8, 0xb0, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x3c, 0x00, 0xc0, 0x2f, 0x01, 0x00, 0xe1, 0x6d, - 0xff, 0xf7, 0xa7, 0xff, 0x00, 0x28, 0x04, 0xd0, - 0xe0, 0x69, 0x01, 0x38, 0xe0, 0x61, 0xfc, 0xf7, - 0x68, 0xf8, 0x10, 0xbd, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x0c, 0x23, 0x0c, 0x49, 0x58, 0x43, - 0x40, 0x18, 0x10, 0xb5, 0x44, 0x68, 0xa1, 0x68, - 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7, - 0xf3, 0xf9, 0xe0, 0x6b, 0x00, 0x28, 0x08, 0xd0, - 0x20, 0x69, 0x3c, 0x00, 0xfc, 0x2f, 0x01, 0x00, - 0x00, 0x8b, 0xee, 0xf7, 0x19, 0xf9, 0x00, 0x28, - 0x02, 0xd0, 0x20, 0x1c, 0xf9, 0xf7, 0x26, 0xf9, - 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0x22, 0x49, 0x48, 0x68, 0x80, 0x00, - 0x06, 0xd4, 0x01, 0x20, 0x40, 0x07, 0x08, 0x60, - 0x4a, 0x69, 0x92, 0x00, 0x00, 0xd4, 0x48, 0x60, - 0x1d, 0x4f, 0x78, 0x7e, 0xc3, 0x06, 0x01, 0x20, - 0x02, 0x1c, 0xdb, 0x0e, 0x3c, 0x00, 0x38, 0x30, - 0x01, 0x00, 0x9a, 0x40, 0x0a, 0x60, 0x79, 0x69, - 0x8c, 0x68, 0x8c, 0x60, 0x21, 0x07, 0x89, 0x0f, - 0x09, 0xd0, 0x21, 0x07, 0x04, 0xd5, 0x0b, 0x21, - 0x9e, 0x20, 0xee, 0xf7, 0x28, 0xf9, 0x00, 0xe0, - 0x78, 0x64, 0x0c, 0x20, 0x84, 0x43, 0x12, 0x48, - 0x3d, 0x68, 0x06, 0x5d, 0x6c, 0x68, 0x2c, 0x34, - 0x06, 0xe0, 0xa0, 0x68, 0x00, 0x68, 0xa0, 0x60, - 0xe9, 0x68, 0x28, 0x1c, 0xed, 0xf7, 0x3c, 0x00, - 0x74, 0x30, 0x01, 0x00, 0xb2, 0xf9, 0x01, 0x3e, - 0xf6, 0xd2, 0xa0, 0x68, 0x80, 0x68, 0x00, 0x28, - 0x0d, 0xd0, 0x40, 0x89, 0x00, 0x28, 0x0a, 0xd0, - 0x78, 0x6c, 0x00, 0x28, 0x07, 0xd1, 0x78, 0x69, - 0x80, 0x68, 0x80, 0x07, 0x03, 0xd1, 0x0c, 0x21, - 0x9e, 0x20, 0xee, 0xf7, 0x03, 0xf9, 0xf8, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0xcc, 0x6d, 0x01, 0x00, - 0xb4, 0x44, 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5, - 0x3c, 0x00, 0xb0, 0x30, 0x01, 0x00, 0x08, 0x7e, - 0xc2, 0x06, 0xd2, 0x0e, 0x01, 0x20, 0x90, 0x40, - 0x07, 0x4a, 0x10, 0x60, 0x00, 0x20, 0x0a, 0x69, - 0xc0, 0x43, 0x90, 0x60, 0x08, 0x68, 0x24, 0x31, - 0x06, 0xc9, 0x03, 0x69, 0xed, 0xf7, 0x86, 0xf9, - 0x80, 0xbd, 0xcc, 0x6d, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x44, 0x68, 0x06, 0x1c, - 0x2c, 0x34, 0x20, 0x68, 0x0d, 0x1c, 0x80, 0x68, - 0x00, 0x90, 0x3c, 0x00, 0xec, 0x30, 0x01, 0x00, - 0x00, 0x28, 0x00, 0xd0, 0xc5, 0x60, 0x20, 0x68, - 0x00, 0x68, 0x20, 0x60, 0x40, 0x68, 0x00, 0x28, - 0x03, 0xd0, 0x0a, 0x21, 0x9e, 0x20, 0xee, 0xf7, - 0xcf, 0xf8, 0x20, 0x68, 0x45, 0x60, 0x28, 0x1c, - 0x02, 0xe0, 0x00, 0x22, 0x42, 0x60, 0x08, 0x1c, - 0xc1, 0x68, 0x00, 0x29, 0xf9, 0xd1, 0x71, 0x68, - 0x60, 0x27, 0x0b, 0x1c, 0x40, 0x33, 0x9c, 0x46, - 0x9b, 0x78, 0xca, 0x7e, 0x3c, 0x00, 0x28, 0x31, - 0x01, 0x00, 0x5b, 0x01, 0x12, 0x07, 0x12, 0x0f, - 0x3b, 0x40, 0x1a, 0x43, 0x8b, 0x8f, 0xff, 0x27, - 0x3f, 0x04, 0x1b, 0x04, 0x3b, 0x40, 0x1a, 0x43, - 0x90, 0x23, 0x1a, 0x43, 0x42, 0x60, 0x63, 0x46, - 0x9a, 0x78, 0x01, 0x32, 0xd2, 0x07, 0xd2, 0x0f, - 0x9a, 0x70, 0x89, 0x6b, 0xc1, 0x60, 0x21, 0x68, - 0x88, 0x60, 0x00, 0x98, 0x00, 0x28, 0x01, 0xd0, - 0x00, 0x98, 0xc5, 0x60, 0x0a, 0x4f, 0x3c, 0x00, - 0x64, 0x31, 0x01, 0x00, 0xbd, 0x79, 0xa0, 0x69, - 0x00, 0x28, 0x0c, 0xd0, 0x00, 0x22, 0xa2, 0x61, - 0x74, 0x68, 0x60, 0x69, 0xef, 0xf7, 0x2e, 0xff, - 0xe0, 0x6a, 0x61, 0x69, 0x40, 0x68, 0x48, 0x60, - 0x61, 0x69, 0x01, 0x20, 0x08, 0x60, 0xbd, 0x71, - 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, - 0xfe, 0xb5, 0x44, 0x68, 0x0f, 0x1c, 0x01, 0x94, - 0x2c, 0x34, 0x20, 0x1c, 0x12, 0x30, 0x02, 0x90, - 0x3c, 0x00, 0xa0, 0x31, 0x01, 0x00, 0x2c, 0xe0, - 0x0c, 0x20, 0xee, 0xf7, 0x00, 0xfb, 0x05, 0x1c, - 0x60, 0x68, 0x00, 0x28, 0x1d, 0xd1, 0x02, 0x98, - 0x00, 0x21, 0x00, 0x90, 0x00, 0x20, 0xee, 0xf7, - 0x0e, 0xfa, 0x06, 0x1c, 0x00, 0x98, 0x04, 0x21, - 0xee, 0xf7, 0x09, 0xfa, 0x01, 0x1c, 0x01, 0x98, - 0xc0, 0x7e, 0x00, 0x07, 0x00, 0x0f, 0xd0, 0x30, - 0x70, 0x60, 0x01, 0x98, 0xc0, 0x7e, 0x00, 0x07, - 0x00, 0x0f, 0x3c, 0x00, 0xdc, 0x31, 0x01, 0x00, - 0xf0, 0x30, 0x48, 0x60, 0x30, 0x1c, 0xee, 0xf7, - 0x19, 0xf9, 0x65, 0x60, 0xe6, 0x60, 0x01, 0xe0, - 0x20, 0x68, 0x05, 0x60, 0x60, 0x68, 0x28, 0x60, - 0x25, 0x60, 0x00, 0x20, 0x68, 0x60, 0xa8, 0x60, - 0x38, 0x1c, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0x39, 0x1c, 0x07, 0x1c, 0x00, 0x29, 0xca, 0xd1, - 0x60, 0x68, 0xa0, 0x60, 0xfe, 0xbd, 0x00, 0x00, - 0xff, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x18, 0x32, - 0x01, 0x00, 0x08, 0x1c, 0x00, 0x26, 0x81, 0xb0, - 0xf4, 0xf7, 0x2f, 0xfe, 0x04, 0x1c, 0x02, 0xd0, - 0x60, 0x68, 0xff, 0x28, 0x01, 0xd1, 0x06, 0x26, - 0x28, 0xe0, 0x21, 0x1c, 0x20, 0x31, 0x0a, 0x78, - 0x01, 0x2a, 0x01, 0xd1, 0x03, 0x26, 0x21, 0xe0, - 0x01, 0x27, 0x25, 0x60, 0x0f, 0x70, 0x11, 0xc5, - 0x1d, 0x48, 0x08, 0x3d, 0x68, 0x61, 0x03, 0x98, - 0x6a, 0x46, 0xe8, 0x60, 0x04, 0x98, 0x3c, 0x00, - 0x54, 0x32, 0x01, 0x00, 0x28, 0x61, 0x1a, 0x48, - 0xa8, 0x61, 0x1a, 0x48, 0xe8, 0x61, 0x1a, 0x48, - 0x28, 0x62, 0x1a, 0x48, 0x68, 0x62, 0x20, 0x7e, - 0xa1, 0x68, 0xed, 0xf7, 0xb3, 0xfe, 0x00, 0x28, - 0x06, 0xd1, 0x60, 0x7e, 0xe1, 0x68, 0x6a, 0x46, - 0xed, 0xf7, 0xac, 0xfe, 0x00, 0x28, 0x07, 0xd0, - 0x04, 0x26, 0x31, 0x1c, 0x9e, 0x20, 0xee, 0xf7, - 0x0d, 0xf8, 0x30, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, - 0x3c, 0x00, 0x90, 0x32, 0x01, 0x00, 0x6a, 0x46, - 0x0f, 0x49, 0x1d, 0x20, 0xed, 0xf7, 0x9d, 0xfe, - 0x01, 0x21, 0x0d, 0x48, 0x49, 0x07, 0x01, 0x60, - 0x22, 0x7e, 0x3b, 0x1c, 0xd2, 0x06, 0xd2, 0x0e, - 0x93, 0x40, 0x43, 0x60, 0x62, 0x7e, 0xd2, 0x06, - 0xd2, 0x0e, 0x97, 0x40, 0x47, 0x60, 0x41, 0x60, - 0xe6, 0xe7, 0x31, 0x33, 0x01, 0x00, 0xd9, 0x32, - 0x01, 0x00, 0x91, 0x31, 0x01, 0x00, 0xdd, 0x30, - 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x32, 0x01, 0x00, - 0xfd, 0x32, 0x01, 0x00, 0x71, 0x33, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x42, 0x68, 0x2c, 0x32, - 0x50, 0x68, 0x43, 0x68, 0x0b, 0x60, 0x81, 0x68, - 0x4b, 0x89, 0x0b, 0x81, 0x83, 0x68, 0x00, 0x21, - 0xd9, 0x60, 0x41, 0x60, 0x81, 0x60, 0x00, 0x68, - 0x50, 0x60, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x70, 0xb5, 0x42, 0x68, 0xff, 0x26, 0x91, 0x87, - 0x10, 0x6b, 0x0c, 0x04, 0x3c, 0x00, 0x08, 0x33, - 0x01, 0x00, 0x05, 0x1c, 0x36, 0x04, 0x34, 0x40, - 0x43, 0x68, 0x59, 0x68, 0xb1, 0x43, 0x21, 0x43, - 0x59, 0x60, 0x00, 0x68, 0xa8, 0x42, 0xf7, 0xd1, - 0x10, 0x6b, 0x51, 0x69, 0x40, 0x68, 0x48, 0x60, - 0x51, 0x69, 0x01, 0x20, 0x08, 0x60, 0x70, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x43, 0x68, 0x08, 0x1c, - 0x59, 0x62, 0x9a, 0x62, 0x00, 0x25, 0x0a, 0xe0, - 0x45, 0x81, 0xc4, 0x68, 0x2a, 0x1c, 0x3c, 0x00, - 0x44, 0x33, 0x01, 0x00, 0x00, 0x2c, 0x03, 0xd1, - 0x9a, 0x7e, 0x12, 0x07, 0x12, 0x0f, 0x10, 0x32, - 0x42, 0x60, 0x20, 0x1c, 0x00, 0x28, 0xf2, 0xd1, - 0x18, 0x69, 0x41, 0x60, 0x19, 0x69, 0x01, 0x20, - 0x08, 0x60, 0x02, 0x48, 0x00, 0x68, 0xed, 0xf7, - 0x37, 0xf8, 0xb0, 0xbd, 0x5c, 0x5b, 0x01, 0x00, - 0x01, 0x20, 0x05, 0x49, 0x40, 0x07, 0x80, 0xb5, - 0x88, 0x60, 0x04, 0x48, 0x01, 0x68, 0x0d, 0x20, - 0x3c, 0x00, 0x80, 0x33, 0x01, 0x00, 0xfe, 0xf7, - 0xe6, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xc4, 0x60, 0x01, 0x00, 0xf8, 0xb5, - 0x0e, 0x4f, 0x0c, 0x4e, 0x00, 0x24, 0x48, 0x20, - 0x60, 0x43, 0xc5, 0x19, 0x48, 0x21, 0x28, 0x1c, - 0xed, 0xf7, 0x7b, 0xf8, 0x1c, 0x20, 0x60, 0x43, - 0x81, 0x19, 0x28, 0x1d, 0x1c, 0x22, 0xed, 0xf7, - 0xfe, 0xf8, 0x1c, 0x23, 0xe8, 0x56, 0x05, 0x49, - 0xfb, 0xf7, 0x3c, 0x00, 0xbc, 0x33, 0x01, 0x00, - 0xcd, 0xf8, 0x01, 0x34, 0x01, 0x2c, 0xe9, 0xd3, - 0xf8, 0xbd, 0x00, 0x00, 0xb8, 0x44, 0x01, 0x00, - 0xcc, 0x6d, 0x01, 0x00, 0x15, 0x32, 0x01, 0x00, - 0xff, 0xb5, 0x05, 0x1c, 0x0a, 0x30, 0x06, 0x1c, - 0x81, 0xb0, 0xf2, 0xf7, 0xdd, 0xf8, 0x18, 0x4f, - 0x04, 0x1c, 0x39, 0x88, 0xef, 0xf7, 0xbc, 0xfc, - 0x32, 0x88, 0x78, 0x68, 0x02, 0x80, 0x72, 0x88, - 0x02, 0x30, 0x02, 0x80, 0x3c, 0x00, 0xf8, 0x33, - 0x01, 0x00, 0xb1, 0x88, 0x12, 0x4e, 0x41, 0x80, - 0x28, 0x88, 0x08, 0x36, 0x40, 0x05, 0x00, 0x28, - 0x05, 0xda, 0x69, 0x88, 0x03, 0x9a, 0x20, 0x1c, - 0xf7, 0xf7, 0x01, 0xfd, 0x00, 0xe0, 0x00, 0x20, - 0x70, 0x80, 0xf8, 0xf7, 0x5e, 0xfc, 0x01, 0x21, - 0x09, 0x03, 0x00, 0x28, 0x30, 0x88, 0x01, 0xd0, - 0x88, 0x43, 0x00, 0xe0, 0x08, 0x43, 0x30, 0x80, - 0x05, 0x48, 0x00, 0x22, 0x00, 0x21, 0x3c, 0x00, - 0x34, 0x34, 0x01, 0x00, 0x14, 0x30, 0xef, 0xf7, - 0x65, 0xfc, 0x20, 0x1c, 0xf9, 0xf7, 0x74, 0xf8, - 0x05, 0xb0, 0xf0, 0xbd, 0xb0, 0x7a, 0x01, 0x00, - 0x10, 0xb5, 0x0e, 0x4c, 0x60, 0x68, 0xf8, 0xf7, - 0x95, 0xf9, 0x20, 0x68, 0x00, 0x6a, 0x00, 0x28, - 0x13, 0xd1, 0xf8, 0xf7, 0xbf, 0xfc, 0x00, 0x28, - 0x08, 0xd0, 0x21, 0x68, 0x01, 0x20, 0x08, 0x62, - 0x1f, 0x21, 0x00, 0x22, 0x83, 0x20, 0x00, 0xf0, - 0x3c, 0x00, 0x70, 0x34, 0x01, 0x00, 0x9f, 0xf9, - 0x02, 0xe0, 0x60, 0x68, 0xf8, 0xf7, 0x21, 0xfa, - 0xff, 0xf7, 0x97, 0xfc, 0x21, 0x68, 0x08, 0x61, - 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0xfe, 0xb5, - 0x1b, 0x4e, 0x0f, 0x1c, 0x1d, 0x1c, 0x14, 0x1c, - 0xb0, 0x60, 0x08, 0x1c, 0xf7, 0xf7, 0x2b, 0xff, - 0xb0, 0x80, 0x34, 0x73, 0x35, 0x62, 0x38, 0x1c, - 0x01, 0xaa, 0x02, 0xa9, 0xf7, 0xf7, 0x25, 0xff, - 0x00, 0xab, 0x3c, 0x00, 0xac, 0x34, 0x01, 0x00, - 0x18, 0x7a, 0x01, 0x28, 0x18, 0xd1, 0x18, 0x79, - 0x0b, 0x28, 0x08, 0xd1, 0x30, 0x7f, 0x24, 0x23, - 0x0f, 0x49, 0x58, 0x43, 0x40, 0x18, 0x80, 0x68, - 0xec, 0xf7, 0x88, 0xff, 0xfe, 0xbd, 0x00, 0xab, - 0x18, 0x79, 0x0a, 0x28, 0x08, 0xd1, 0xf7, 0xf7, - 0x39, 0xfd, 0x07, 0x1c, 0x29, 0x1c, 0x20, 0x1c, - 0xf7, 0xf7, 0x16, 0xfd, 0x38, 0x18, 0xb0, 0x80, - 0x30, 0x7f, 0x24, 0x23, 0x3c, 0x00, 0xe8, 0x34, - 0x01, 0x00, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x40, 0x68, 0xec, 0xf7, 0x72, 0xff, 0xe8, 0xe7, - 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, - 0x01, 0x00, 0xb0, 0xb5, 0xff, 0xf7, 0x53, 0xfc, - 0x04, 0x1c, 0xfb, 0xf7, 0xfc, 0xfa, 0x0c, 0x4d, - 0x29, 0x68, 0x09, 0x69, 0x09, 0x1b, 0x0c, 0x1a, - 0x02, 0x21, 0x1f, 0x20, 0x00, 0xf0, 0x8b, 0xf8, - 0x14, 0x2c, 0x06, 0xdd, 0x02, 0x22, 0x3c, 0x00, - 0x24, 0x35, 0x01, 0x00, 0x21, 0x1c, 0x1f, 0x20, - 0x00, 0xf0, 0x50, 0xf8, 0x01, 0x20, 0xb0, 0xbd, - 0x29, 0x68, 0x01, 0x20, 0x89, 0x6a, 0x00, 0x29, - 0xf9, 0xd0, 0x00, 0x20, 0xb0, 0xbd, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d, - 0x07, 0x1c, 0xae, 0x79, 0x01, 0x21, 0x19, 0x4c, - 0x00, 0x20, 0x22, 0x68, 0x00, 0x2a, 0x14, 0xd1, - 0xae, 0x71, 0xa2, 0x68, 0xd0, 0x68, 0x06, 0xca, - 0x3c, 0x00, 0x60, 0x35, 0x01, 0x00, 0xec, 0xf7, - 0x3c, 0xff, 0xae, 0x79, 0x00, 0x21, 0x13, 0x4a, - 0x50, 0x69, 0x01, 0x30, 0x50, 0x61, 0xa0, 0x68, - 0x80, 0x68, 0xa0, 0x60, 0x62, 0x68, 0x90, 0x42, - 0x06, 0xd1, 0x01, 0x20, 0x20, 0x60, 0x03, 0xe0, - 0x01, 0x30, 0x0c, 0x34, 0x03, 0x28, 0xe3, 0xdb, - 0x00, 0x2f, 0x08, 0xd1, 0x00, 0x29, 0x0a, 0xd0, - 0x0a, 0x48, 0x40, 0x68, 0x00, 0x28, 0x06, 0xd0, - 0xfa, 0xf7, 0x3c, 0x00, 0x9c, 0x35, 0x01, 0x00, - 0xf5, 0xff, 0x03, 0xe0, 0x01, 0x2f, 0x03, 0xd0, - 0x00, 0x29, 0x01, 0xd1, 0xae, 0x71, 0xce, 0xe7, - 0xae, 0x71, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0x70, 0x5d, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x23, - 0xf5, 0xf7, 0x7c, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0xf5, 0xf7, 0x76, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x35, - 0x01, 0x00, 0xf8, 0xb5, 0x13, 0x4b, 0x00, 0x24, - 0x1b, 0x88, 0x98, 0x42, 0x1b, 0xd2, 0x11, 0x4b, - 0xc0, 0x00, 0xc0, 0x18, 0x45, 0x68, 0x06, 0x68, - 0x28, 0x68, 0x00, 0x28, 0x17, 0xd1, 0x0e, 0x4f, - 0xa8, 0x68, 0x43, 0x68, 0xb3, 0x42, 0x09, 0xd1, - 0xc3, 0x68, 0x8b, 0x42, 0x06, 0xd1, 0x03, 0x68, - 0x93, 0x42, 0x01, 0xd0, 0x53, 0x1c, 0x01, 0xd1, - 0x01, 0x24, 0x47, 0x60, 0x80, 0x68, 0x3c, 0x00, - 0x14, 0x36, 0x01, 0x00, 0x6b, 0x68, 0x83, 0x42, - 0xee, 0xd1, 0x03, 0xe0, 0x01, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x40, 0xfe, 0x20, 0x1c, 0xf8, 0xbd, - 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00, - 0x29, 0xe3, 0x00, 0x00, 0xf8, 0xb5, 0x17, 0x4f, - 0x0a, 0x1c, 0xbe, 0x79, 0x16, 0x4d, 0x00, 0x23, - 0x6c, 0x68, 0x07, 0xe0, 0x21, 0x68, 0x91, 0x42, - 0x02, 0xd1, 0x21, 0x79, 0x81, 0x42, 0x04, 0xd0, - 0x3c, 0x00, 0x50, 0x36, 0x01, 0x00, 0x23, 0x1c, - 0xe4, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x17, 0xe0, - 0x00, 0x2c, 0x15, 0xd0, 0x00, 0x2b, 0x0d, 0xd1, - 0xe3, 0x68, 0x0d, 0x48, 0x6b, 0x60, 0x00, 0x88, - 0x00, 0x2b, 0x02, 0xd1, 0xff, 0xf7, 0xd1, 0xfb, - 0x06, 0xe0, 0x0a, 0x4a, 0x99, 0x68, 0xff, 0xf7, - 0xf6, 0xfb, 0x01, 0xe0, 0xe0, 0x68, 0xd8, 0x60, - 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0x02, 0xe0, - 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x36, 0x01, 0x00, - 0xff, 0xf7, 0xa4, 0xff, 0xbe, 0x71, 0xf8, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0x7c, 0x5d, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00, - 0x70, 0xb5, 0x09, 0x4e, 0xb5, 0x79, 0xf9, 0xf7, - 0xaf, 0xfe, 0x04, 0x1c, 0x09, 0xd0, 0x20, 0x1c, - 0xed, 0xf7, 0x0c, 0xfb, 0x05, 0x49, 0x8a, 0x68, - 0x80, 0x18, 0x88, 0x60, 0x08, 0x68, 0x01, 0x30, - 0x08, 0x60, 0xb5, 0x71, 0x3c, 0x00, 0xc8, 0x36, - 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd, 0x20, 0x10, - 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00, 0x09, 0x48, - 0x80, 0xb5, 0x40, 0x68, 0x02, 0x1c, 0x0b, 0xe0, - 0x01, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x82, 0x42, - 0x04, 0xd0, 0x81, 0x68, 0x05, 0x48, 0x00, 0x88, - 0xff, 0xf7, 0xe5, 0xfa, 0x80, 0xbd, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x80, 0xbd, 0x7c, 0x5d, - 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00, 0x3c, 0x00, - 0x04, 0x37, 0x01, 0x00, 0x05, 0x48, 0x80, 0xb5, - 0x42, 0x68, 0x00, 0x2a, 0x04, 0xd0, 0x04, 0x48, - 0x00, 0x88, 0x91, 0x68, 0xff, 0xf7, 0xd2, 0xfa, - 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x5d, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0x05, 0x48, 0x01, 0x68, - 0x00, 0x29, 0x04, 0xd0, 0xc0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x18, 0xd9, 0x01, 0x00, - 0x3c, 0x00, 0x40, 0x37, 0x01, 0x00, 0x80, 0xb5, - 0xf6, 0xf7, 0xd1, 0xfa, 0x80, 0xbd, 0x13, 0x1c, - 0x0d, 0x4a, 0xb0, 0xb5, 0x12, 0x88, 0x90, 0x42, - 0x0f, 0xd2, 0x03, 0x29, 0x0d, 0xd2, 0x0a, 0x4a, - 0xc0, 0x00, 0x14, 0x58, 0x0a, 0x4d, 0xac, 0x42, - 0x07, 0xd1, 0x13, 0x50, 0x0c, 0x23, 0x59, 0x43, - 0x08, 0x4b, 0xc9, 0x18, 0x80, 0x18, 0x41, 0x60, - 0xb0, 0xbd, 0x02, 0x21, 0x80, 0x20, 0xed, 0xf7, - 0x94, 0xfd, 0x3c, 0x00, 0x7c, 0x37, 0x01, 0x00, - 0xb0, 0xbd, 0x00, 0x00, 0x56, 0x57, 0x01, 0x00, - 0x84, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, - 0x1e, 0x1c, 0x15, 0x1c, 0x04, 0x1c, 0x11, 0x1c, - 0xff, 0xf7, 0x4a, 0xff, 0x33, 0x1c, 0x2a, 0x1c, - 0x39, 0x1c, 0x20, 0x1c, 0xf4, 0xf7, 0x8a, 0xff, - 0xf8, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x94, 0x46, - 0xff, 0x29, 0x21, 0xd0, 0x3c, 0x00, 0xb8, 0x37, - 0x01, 0x00, 0x15, 0x48, 0x00, 0x88, 0x81, 0x42, - 0x21, 0xd2, 0x14, 0x4a, 0x15, 0x4e, 0xc8, 0x00, - 0x85, 0x18, 0xb4, 0x79, 0x68, 0x68, 0x02, 0x68, - 0x00, 0x2a, 0x03, 0xd1, 0x03, 0x1d, 0x0c, 0xcb, - 0x9a, 0x42, 0x11, 0xd0, 0x43, 0x68, 0x9a, 0x68, - 0x42, 0x60, 0x0e, 0x4a, 0x17, 0x69, 0x01, 0x37, - 0x17, 0x61, 0xb4, 0x71, 0x00, 0x22, 0x02, 0x60, - 0x00, 0x98, 0xd8, 0x60, 0x60, 0x46, 0x3c, 0x00, - 0xf4, 0x37, 0x01, 0x00, 0x18, 0x60, 0x19, 0x74, - 0x28, 0x68, 0x58, 0x60, 0xfe, 0xbd, 0xb4, 0x71, - 0x06, 0x21, 0x00, 0xe0, 0x07, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x4c, 0xfd, 0xf6, 0xe7, 0x00, 0x00, - 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0xb0, 0xb5, 0x14, 0x4d, 0x6c, 0x68, 0x00, 0x2c, - 0x01, 0xd0, 0x84, 0x42, 0x04, 0xd0, 0x0c, 0x21, - 0x3c, 0x00, 0x30, 0x38, 0x01, 0x00, 0x80, 0x20, - 0xed, 0xf7, 0x37, 0xfd, 0xb0, 0xbd, 0xff, 0xf7, - 0xb8, 0xfa, 0xa1, 0x68, 0x40, 0x1a, 0x0d, 0x49, - 0x88, 0x42, 0x03, 0xda, 0x10, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x2b, 0xfd, 0x21, 0x79, 0x22, 0x68, - 0x01, 0x20, 0xff, 0xf7, 0xac, 0xff, 0xe3, 0x68, - 0x6b, 0x60, 0x00, 0x2b, 0x05, 0xd0, 0x07, 0x48, - 0x06, 0x4a, 0x00, 0x88, 0x99, 0x68, 0xff, 0xf7, - 0xfe, 0xfa, 0x3c, 0x00, 0x6c, 0x38, 0x01, 0x00, - 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0xb0, 0xbd, - 0x7c, 0x5d, 0x01, 0x00, 0x18, 0xfc, 0xff, 0xff, - 0x21, 0x38, 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00, - 0xb0, 0xb5, 0x15, 0x4c, 0x08, 0x20, 0x21, 0x1c, - 0x80, 0x31, 0x08, 0x70, 0x13, 0x4a, 0x41, 0x04, - 0x11, 0x60, 0x13, 0x48, 0x00, 0x68, 0x13, 0x4d, - 0x6b, 0x69, 0x18, 0x40, 0x01, 0xd1, 0x10, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0xa8, 0x38, - 0x01, 0x00, 0xa8, 0x23, 0x5b, 0x5d, 0x18, 0x43, - 0x23, 0x1c, 0x40, 0x33, 0x18, 0x73, 0x51, 0x60, - 0x20, 0x78, 0x80, 0x08, 0x80, 0x00, 0x20, 0x70, - 0x00, 0x20, 0xff, 0xf7, 0x12, 0xfb, 0xff, 0xf7, - 0x72, 0xfa, 0x64, 0x30, 0x28, 0x66, 0x01, 0x38, - 0xa0, 0x61, 0x20, 0x78, 0x03, 0x21, 0x08, 0x43, - 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00, 0x00, 0x90, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0xe4, 0x38, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0xa4, 0x6c, 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c, - 0x21, 0x1c, 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab, - 0x1a, 0x70, 0xc9, 0x79, 0x07, 0x4d, 0x59, 0x70, - 0x69, 0x78, 0x88, 0x42, 0x03, 0xd1, 0xf8, 0xf7, - 0x13, 0xfc, 0xff, 0x20, 0x68, 0x70, 0x00, 0xab, - 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x4c, 0x7b, 0x01, 0x00, - 0x3c, 0x00, 0x20, 0x39, 0x01, 0x00, 0xf8, 0xb5, - 0x0b, 0x1c, 0x06, 0x1c, 0x04, 0x1d, 0x7f, 0x33, - 0x14, 0xd0, 0x33, 0x68, 0x5d, 0x18, 0x35, 0x60, - 0x23, 0x88, 0x1f, 0x18, 0x06, 0x23, 0xff, 0x56, - 0xeb, 0x1b, 0x33, 0x60, 0x23, 0x88, 0x18, 0x18, - 0x81, 0x71, 0x20, 0x88, 0x01, 0x30, 0x00, 0x04, - 0x00, 0x0c, 0x20, 0x80, 0x90, 0x42, 0x01, 0xd3, - 0x00, 0x20, 0x20, 0x80, 0x10, 0x1c, 0x31, 0x68, - 0xec, 0xf7, 0x3c, 0x00, 0x5c, 0x39, 0x01, 0x00, - 0x6d, 0xfe, 0xf8, 0xbd, 0x0e, 0x49, 0x0a, 0x7c, - 0x83, 0x78, 0x1a, 0x43, 0x0a, 0x74, 0x42, 0x78, - 0x83, 0x78, 0x9a, 0x43, 0x0b, 0x7c, 0x93, 0x43, - 0x0b, 0x74, 0x8a, 0x7c, 0x43, 0x78, 0x1a, 0x43, - 0x8a, 0x74, 0x8a, 0x7c, 0x03, 0x78, 0x9a, 0x43, - 0x8a, 0x74, 0x02, 0x78, 0x43, 0x78, 0x1a, 0x43, - 0x4b, 0x7c, 0x1a, 0x43, 0x4a, 0x74, 0x4a, 0x7c, - 0xc0, 0x78, 0x82, 0x43, 0x3c, 0x00, 0x98, 0x39, - 0x01, 0x00, 0x4a, 0x74, 0x70, 0x47, 0x10, 0x00, - 0x07, 0x00, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24, - 0x20, 0x06, 0x00, 0x0e, 0xed, 0xf7, 0xf7, 0xf8, - 0xa1, 0x00, 0x69, 0x58, 0x08, 0x71, 0x01, 0x34, - 0x04, 0x2c, 0xf5, 0xdb, 0xb0, 0xbd, 0x10, 0x7b, - 0x01, 0x00, 0x0b, 0x48, 0x0c, 0x49, 0x7d, 0x23, - 0x42, 0x69, 0xdb, 0x00, 0x00, 0x2a, 0xc8, 0x6b, - 0x07, 0xd0, 0xc0, 0x18, 0x1a, 0x01, 0x3c, 0x00, - 0xd4, 0x39, 0x01, 0x00, 0x90, 0x42, 0xc8, 0x63, - 0x01, 0xd9, 0x07, 0x48, 0xc8, 0x63, 0x70, 0x47, - 0xff, 0x38, 0xf5, 0x38, 0xc8, 0x63, 0x98, 0x42, - 0xf9, 0xd2, 0xcb, 0x63, 0x70, 0x47, 0x00, 0x00, - 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x70, 0x17, 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x16, 0x1c, 0xfb, 0xf7, 0xf6, 0xfa, - 0xb0, 0x43, 0x28, 0x43, 0x01, 0x1c, 0x20, 0x1c, - 0x3c, 0x00, 0x10, 0x3a, 0x01, 0x00, 0x00, 0xf0, - 0xcc, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0, 0x02, 0x29, - 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48, 0xd2, 0x78, - 0x38, 0x30, 0xff, 0xf7, 0x78, 0xff, 0x06, 0x49, - 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48, 0x12, 0x79, - 0x20, 0x30, 0xff, 0xf7, 0x70, 0xff, 0x03, 0x49, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x3a, 0x01, 0x00, - 0xc8, 0x67, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, - 0x80, 0xb5, 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0, - 0x02, 0x29, 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48, - 0x52, 0x79, 0x68, 0x30, 0xff, 0xf7, 0x5a, 0xff, - 0x06, 0x49, 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48, - 0x92, 0x79, 0x50, 0x30, 0xff, 0xf7, 0x52, 0xff, - 0x03, 0x49, 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3a, - 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00, 0xcc, 0x67, - 0x01, 0x00, 0x08, 0xb5, 0x04, 0x21, 0x00, 0x91, - 0x81, 0x7e, 0x43, 0x68, 0x03, 0x29, 0x06, 0xd1, - 0x01, 0x1c, 0x0c, 0x31, 0x01, 0x20, 0x6a, 0x46, - 0xec, 0xf7, 0x9a, 0xfc, 0x08, 0xbd, 0x19, 0x68, - 0xc1, 0x60, 0xfb, 0xe7, 0x00, 0x00, 0x10, 0xb5, - 0x03, 0x1c, 0x00, 0x20, 0x08, 0x4c, 0x00, 0x21, - 0xca, 0x00, 0x12, 0x19, 0x92, 0x78, 0x3c, 0x00, - 0xc4, 0x3a, 0x01, 0x00, 0x9a, 0x42, 0x03, 0xd1, - 0xc8, 0x00, 0x00, 0x19, 0x40, 0x68, 0x10, 0xbd, - 0x01, 0x31, 0x09, 0x06, 0x09, 0x16, 0x06, 0x29, - 0xf1, 0xdb, 0x10, 0xbd, 0xcc, 0x5a, 0x01, 0x00, - 0xf8, 0xb5, 0x0f, 0x1c, 0x16, 0x1c, 0x00, 0x25, - 0xfe, 0xf7, 0x8e, 0xf9, 0x04, 0x1c, 0x0a, 0xd0, - 0x4a, 0x20, 0x00, 0x5d, 0x05, 0x28, 0x06, 0xd1, - 0x38, 0x1c, 0xf1, 0xf7, 0x81, 0xfe, 0x00, 0x28, - 0x3c, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x01, 0xd0, - 0x01, 0x25, 0x34, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x16, 0x1c, - 0x00, 0x24, 0xfe, 0xf7, 0x78, 0xf9, 0x00, 0x28, - 0x0b, 0xd0, 0x4a, 0x21, 0x09, 0x5c, 0x05, 0x29, - 0x07, 0xd1, 0x01, 0x69, 0x00, 0x29, 0x04, 0xd1, - 0x30, 0x60, 0xf1, 0xf7, 0x04, 0xfd, 0x01, 0x24, - 0x28, 0x60, 0x20, 0x1c, 0x70, 0xbd, 0xf8, 0xb5, - 0x06, 0x1c, 0x3c, 0x00, 0x3c, 0x3b, 0x01, 0x00, - 0x00, 0x25, 0x0c, 0x1c, 0x08, 0x1c, 0xf1, 0xf7, - 0x5d, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x21, - 0x05, 0xe0, 0x20, 0x1c, 0xf1, 0xf7, 0x74, 0xfe, - 0x00, 0x28, 0x14, 0xd0, 0x01, 0x21, 0x30, 0x1c, - 0xf4, 0xf7, 0x80, 0xfb, 0x00, 0x90, 0x00, 0x28, - 0x0d, 0xd0, 0x08, 0x4f, 0x01, 0x25, 0x06, 0x22, - 0x31, 0x1c, 0x38, 0x1c, 0xec, 0xf7, 0xc2, 0xfc, - 0x06, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x78, 0x3b, - 0x01, 0x00, 0xb8, 0x18, 0xec, 0xf7, 0xbd, 0xfc, - 0x00, 0x98, 0xf8, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x00, 0x21, - 0x00, 0x28, 0x06, 0xd0, 0x42, 0x78, 0x07, 0x2a, - 0x03, 0xd1, 0xc0, 0x79, 0x01, 0x28, 0x00, 0xd1, - 0x01, 0x21, 0x08, 0x1c, 0x70, 0x47, 0xf8, 0xb5, - 0x05, 0x1c, 0x00, 0x27, 0x16, 0x4e, 0xf1, 0xf7, - 0x28, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00, - 0xb4, 0x3b, 0x01, 0x00, 0xf1, 0xf7, 0xc0, 0xfb, - 0x00, 0x28, 0x10, 0xd1, 0x00, 0x24, 0xf1, 0xf7, - 0xbb, 0xfc, 0x06, 0xe0, 0xf1, 0xf7, 0x02, 0xfe, - 0x00, 0x28, 0x08, 0xd0, 0x01, 0x24, 0xf1, 0xf7, - 0x99, 0xfd, 0x01, 0x1c, 0x06, 0x22, 0x30, 0x1c, - 0xec, 0xf7, 0x8e, 0xfc, 0x01, 0x27, 0x00, 0x2f, - 0x0d, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0xf4, 0xf7, - 0x3b, 0xfb, 0x01, 0x1c, 0x05, 0x48, 0x06, 0x22, - 0x3c, 0x00, 0xf0, 0x3b, 0x01, 0x00, 0x06, 0x38, - 0xc1, 0x60, 0x29, 0x1c, 0xec, 0xf7, 0x7f, 0xfc, - 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x20, 0xfc, 0xe7, - 0x00, 0x00, 0x76, 0x7c, 0x01, 0x00, 0xf0, 0xb5, - 0x07, 0x1c, 0x00, 0x68, 0x02, 0x21, 0x04, 0x68, - 0x78, 0x69, 0x87, 0xb0, 0x01, 0x40, 0x00, 0x25, - 0x00, 0x29, 0x05, 0x91, 0x74, 0x4e, 0x12, 0xd0, - 0x22, 0x88, 0x01, 0x21, 0x13, 0x05, 0x02, 0xd4, - 0xc0, 0x07, 0x3c, 0x00, 0x2c, 0x3c, 0x01, 0x00, - 0xc1, 0x17, 0x01, 0x31, 0x6f, 0x48, 0x00, 0x29, - 0x00, 0x68, 0x01, 0xd0, 0x01, 0x30, 0x04, 0xe0, - 0x11, 0x06, 0x89, 0x0e, 0x2d, 0x29, 0x01, 0xd1, - 0x03, 0x30, 0x30, 0x60, 0x20, 0x88, 0x80, 0x07, - 0x67, 0xd1, 0x78, 0x69, 0xc0, 0x07, 0x64, 0xd5, - 0x03, 0xaa, 0x04, 0xa9, 0x20, 0x1c, 0xf7, 0xf7, - 0x4b, 0xfb, 0x00, 0xab, 0x18, 0x7c, 0x00, 0x28, - 0x07, 0xd0, 0x18, 0x7c, 0x3c, 0x00, 0x68, 0x3c, - 0x01, 0x00, 0x02, 0x28, 0x58, 0xd1, 0x18, 0x7b, - 0x40, 0x07, 0x40, 0x0f, 0x04, 0x28, 0x53, 0xd8, - 0x20, 0x79, 0x05, 0x99, 0xc0, 0x07, 0xc0, 0x17, - 0x01, 0x30, 0x02, 0x90, 0x00, 0x29, 0x02, 0xd1, - 0x02, 0x98, 0x00, 0x28, 0x48, 0xd1, 0x05, 0x99, - 0x00, 0x29, 0x04, 0xd0, 0x20, 0x88, 0x00, 0x05, - 0x01, 0xd4, 0x00, 0x20, 0x30, 0x60, 0xc0, 0x20, - 0xed, 0xf7, 0xcb, 0xfd, 0x05, 0x1c, 0x3c, 0x00, - 0xa4, 0x3c, 0x01, 0x00, 0x20, 0x1c, 0x0a, 0x30, - 0x06, 0x90, 0xfe, 0xf7, 0xad, 0xf8, 0x06, 0x1c, - 0x28, 0x1c, 0x08, 0x30, 0x23, 0x88, 0x02, 0x1d, - 0x11, 0x1d, 0xdb, 0x05, 0x06, 0xd5, 0x06, 0x9b, - 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30, 0x10, 0x60, - 0x20, 0x1d, 0x0e, 0xe0, 0x23, 0x1d, 0x13, 0x60, - 0x22, 0x88, 0x92, 0x05, 0x05, 0xd5, 0x22, 0x1c, - 0x10, 0x32, 0x02, 0x60, 0x06, 0x9b, 0x0b, 0x60, - 0x3c, 0x00, 0xe0, 0x3c, 0x01, 0x00, 0x04, 0xe0, - 0x06, 0x9b, 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30, - 0x08, 0x60, 0x28, 0x69, 0xf1, 0xf7, 0x43, 0xfc, - 0x00, 0x28, 0x08, 0xd0, 0x01, 0x28, 0x12, 0xd0, - 0x02, 0x28, 0x58, 0xd1, 0x00, 0xab, 0x18, 0x7c, - 0x00, 0x28, 0x54, 0xd1, 0x12, 0xe0, 0x00, 0xab, - 0x18, 0x7c, 0x02, 0x28, 0x0b, 0xd1, 0x00, 0x2e, - 0x4d, 0xd0, 0x4b, 0x20, 0x80, 0x5d, 0x02, 0x28, - 0x49, 0xd1, 0x3c, 0x00, 0x1c, 0x3d, 0x01, 0x00, - 0x07, 0xe0, 0x63, 0xe0, 0x00, 0xab, 0x18, 0x7c, - 0x00, 0x28, 0x02, 0xd1, 0x38, 0x1c, 0xfe, 0xf7, - 0x1b, 0xff, 0x20, 0x88, 0x41, 0x04, 0x30, 0x48, - 0x11, 0xd5, 0x00, 0x2e, 0x52, 0xd0, 0x00, 0xab, - 0x19, 0x7c, 0x00, 0x29, 0x26, 0xd0, 0x02, 0x99, - 0x00, 0x29, 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78, - 0x00, 0xe0, 0x00, 0x78, 0x01, 0x28, 0x1d, 0xd0, - 0x03, 0x28, 0x43, 0xd1, 0x3c, 0x00, 0x58, 0x3d, - 0x01, 0x00, 0x1a, 0xe0, 0x00, 0xab, 0x19, 0x7c, - 0x02, 0x29, 0x16, 0xd1, 0x19, 0x7b, 0x04, 0x29, - 0x13, 0xd0, 0x19, 0x7b, 0x0c, 0x29, 0x10, 0xd0, - 0x22, 0x49, 0x09, 0x68, 0x00, 0x29, 0x0c, 0xd0, - 0x00, 0x2e, 0x0a, 0xd0, 0x02, 0x99, 0x00, 0x29, - 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78, 0x00, 0xe0, - 0x00, 0x78, 0x01, 0x28, 0x29, 0xd0, 0x03, 0x28, - 0x27, 0xd0, 0x28, 0x22, 0x39, 0x1c, 0x3c, 0x00, - 0x94, 0x3d, 0x01, 0x00, 0x28, 0x1c, 0x88, 0x30, - 0xec, 0xf7, 0x0a, 0xfc, 0x00, 0xab, 0x19, 0x7c, - 0x28, 0x1c, 0x80, 0x30, 0x01, 0x71, 0x19, 0x7b, - 0x41, 0x71, 0x6c, 0x60, 0x6e, 0x61, 0x1b, 0xe0, - 0x05, 0x99, 0x00, 0x29, 0x14, 0xd0, 0x11, 0x48, - 0x84, 0x6c, 0x00, 0x2c, 0x10, 0xd0, 0x00, 0x22, - 0x00, 0x2e, 0x04, 0xd0, 0x40, 0x36, 0xb0, 0x7a, - 0x05, 0x28, 0x00, 0xd1, 0x01, 0x22, 0x00, 0x92, - 0x3c, 0x00, 0xd0, 0x3d, 0x01, 0x00, 0xf8, 0x7a, - 0xba, 0x7a, 0x29, 0x69, 0xc3, 0x07, 0xdb, 0x0f, - 0x06, 0x98, 0xec, 0xf7, 0x00, 0xfb, 0x28, 0x1c, - 0xed, 0xf7, 0x07, 0xfd, 0x00, 0x25, 0x28, 0x1c, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc4, 0x6a, - 0x01, 0x00, 0x68, 0x61, 0x01, 0x00, 0x28, 0x61, - 0x01, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x20, 0xff, 0xf7, 0x70, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x3e, 0x01, 0x00, - 0xb0, 0xb5, 0x1d, 0x4d, 0x01, 0x28, 0x17, 0xd0, - 0xa2, 0x28, 0x06, 0xd0, 0xa3, 0x28, 0x03, 0xd1, - 0x01, 0x21, 0x15, 0x20, 0xff, 0xf7, 0x08, 0xfc, - 0xb0, 0xbd, 0x00, 0x29, 0x01, 0xd1, 0x17, 0x48, - 0x02, 0xe0, 0x7d, 0x20, 0xc0, 0x00, 0x48, 0x43, - 0x00, 0x23, 0x01, 0x22, 0x01, 0x1c, 0x28, 0x60, - 0x15, 0x20, 0xff, 0xf7, 0xa7, 0xfc, 0xb0, 0xbd, - 0x01, 0x29, 0x04, 0xd0, 0x3c, 0x00, 0x48, 0x3e, - 0x01, 0x00, 0x02, 0x29, 0xfa, 0xd1, 0x00, 0xf0, - 0x2a, 0xf8, 0xb0, 0xbd, 0x6c, 0x68, 0xf5, 0xf7, - 0xde, 0xfc, 0xfe, 0xf7, 0xa8, 0xff, 0x68, 0x60, - 0x00, 0x2c, 0x09, 0xd0, 0x29, 0x68, 0x0a, 0x23, - 0x59, 0x43, 0x00, 0x1b, 0x88, 0x42, 0x03, 0xd9, - 0x01, 0x21, 0x15, 0x20, 0xed, 0xf7, 0x17, 0xfa, - 0x01, 0x22, 0x15, 0x20, 0x29, 0x68, 0xff, 0xf7, - 0xa6, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x3e, 0x01, 0x00, 0x04, 0x79, 0x01, 0x00, - 0x00, 0x87, 0x93, 0x03, 0x01, 0x20, 0x04, 0x49, - 0x40, 0x03, 0x80, 0xb5, 0x08, 0x60, 0x03, 0x21, - 0x15, 0x20, 0xed, 0xf7, 0x03, 0xfa, 0x80, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x10, 0x22, - 0x11, 0x43, 0x01, 0x72, 0x00, 0x23, 0x02, 0x22, - 0x15, 0x20, 0x03, 0x49, 0xff, 0xf7, 0x68, 0xfc, - 0x3c, 0x00, 0xc0, 0x3e, 0x01, 0x00, 0x80, 0xbd, - 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x80, 0x9f, - 0xd5, 0x00, 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0, - 0x0a, 0x1c, 0x15, 0x21, 0xa2, 0x20, 0x02, 0xe0, - 0x00, 0x22, 0x15, 0x21, 0xa3, 0x20, 0xff, 0xf7, - 0x66, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x00, 0xf0, 0x19, 0xf8, 0x0a, 0x48, 0xbe, 0x21, - 0x01, 0x73, 0x03, 0x7a, 0x10, 0x22, 0x93, 0x43, - 0x01, 0x24, 0x3c, 0x00, 0xfc, 0x3e, 0x01, 0x00, - 0x23, 0x43, 0x03, 0x72, 0x01, 0x73, 0x01, 0x7a, - 0x91, 0x43, 0x20, 0x22, 0x11, 0x43, 0x01, 0x72, - 0x02, 0x22, 0x15, 0x20, 0x02, 0x49, 0xff, 0xf7, - 0x5b, 0xfb, 0x10, 0xbd, 0x00, 0x03, 0x07, 0x00, - 0x80, 0x9f, 0xd5, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x15, 0x20, 0xff, 0xf7, 0x85, 0xfb, 0x04, 0x48, - 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x11, 0x22, - 0x91, 0x43, 0x01, 0x72, 0x3c, 0x00, 0x38, 0x3f, - 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x05, 0x1c, - 0x60, 0x36, 0x00, 0x27, 0x44, 0x68, 0x22, 0xe0, - 0x08, 0x21, 0x00, 0x20, 0xed, 0xf7, 0x41, 0xfb, - 0x60, 0x61, 0x01, 0x89, 0x04, 0x39, 0x09, 0x04, - 0x09, 0x0c, 0x01, 0x81, 0x60, 0x69, 0x00, 0x68, - 0x40, 0x18, 0x04, 0x21, 0xed, 0xf7, 0x35, 0xfb, - 0xe0, 0x61, 0x60, 0x69, 0x71, 0x7b, 0x3c, 0x00, - 0x74, 0x3f, 0x01, 0x00, 0x00, 0x68, 0x89, 0x01, - 0xc1, 0x70, 0x29, 0x69, 0x0c, 0x31, 0x03, 0x22, - 0xec, 0xf7, 0xba, 0xfa, 0x28, 0x69, 0x0c, 0x30, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x25, 0x62, - 0xa7, 0x61, 0x24, 0x68, 0x00, 0x2c, 0xda, 0xd1, - 0x02, 0x49, 0x03, 0x48, 0x6a, 0x68, 0xf6, 0xf7, - 0xb3, 0xf8, 0xf8, 0xbd, 0xfd, 0x6b, 0x00, 0x00, - 0xa0, 0x6a, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x07, - 0x3c, 0x00, 0xb0, 0x3f, 0x01, 0x00, 0x00, 0x09, - 0x09, 0x02, 0x09, 0x0a, 0x08, 0x43, 0x02, 0x49, - 0x08, 0x60, 0xff, 0xf7, 0x20, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x08, 0x00, - 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03, - 0x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0xc8, 0x00, - 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x1c, 0x00, - 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x3f, 0x01, 0x00, - 0x24, 0x01, 0x07, 0x00, 0x32, 0x00, 0x00, 0x00, - 0xe8, 0x03, 0x00, 0x00, 0x40, 0x06, 0x01, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x41, 0x6e, 0x62, 0x69, 0x7e, 0x64, 0x61, 0x6f, - 0x6f, 0x00, 0x00, 0x00, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x20, 0x36, 0x5f, 0x37, 0x5f, - 0x31, 0x35, 0x20, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x20, 0x32, 0x3a, 0x35, 0x3c, 0x00, 0x28, 0x40, - 0x01, 0x00, 0x32, 0x39, 0x38, 0x20, 0x53, 0x65, - 0x70, 0x20, 0x30, 0x34, 0x20, 0x32, 0x30, 0x30, - 0x39, 0x20, 0x31, 0x37, 0x3a, 0x31, 0x33, 0x3a, - 0x32, 0x30, 0x20, 0x28, 0x48, 0x57, 0x3d, 0x34, - 0x3a, 0x33, 0x2c, 0x42, 0x54, 0x43, 0x4f, 0x45, - 0x58, 0x29, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, - 0x1c, 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3c, 0x00, - 0x64, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x70, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xd0, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x7c, 0x15, 0x15, 0x00, - 0x3c, 0x00, 0xa0, 0x40, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x70, 0x17, - 0x1e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x28, 0x23, 0x16, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0x2a, - 0x0b, 0x00, 0x3c, 0x00, 0xdc, 0x40, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xe0, 0x2e, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x50, 0x46, 0x0e, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0xf0, 0x55, 0x08, 0x00, 0x3c, 0x00, 0x18, 0x41, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x00, 0x00, 0xc0, 0x5d, 0x0e, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xe8, 0x80, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, - 0x00, 0x00, 0xa0, 0x8c, 0x0a, 0x00, 0x3c, 0x00, - 0x54, 0x41, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x80, 0xbb, 0x0a, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0xf0, 0xd2, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x90, 0x00, - 0x3c, 0x00, 0x90, 0x41, 0x01, 0x00, 0xc0, 0x00, - 0x90, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0xc0, 0x00, - 0x90, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x60, 0x00, - 0x48, 0x00, 0x3c, 0x00, 0xcc, 0x41, 0x01, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x60, 0x00, 0x48, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x04, 0x01, 0x0b, 0x02, 0x0c, 0x03, - 0x12, 0x04, 0x16, 0x05, 0x3c, 0x00, 0x08, 0x42, - 0x01, 0x00, 0x18, 0x06, 0x00, 0x0e, 0x00, 0x0e, - 0x24, 0x07, 0x00, 0x0e, 0x2c, 0x08, 0x30, 0x09, - 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x42, 0x0a, - 0x00, 0x0e, 0x48, 0x0b, 0x00, 0x0e, 0x00, 0x0e, - 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x60, 0x0c, - 0x00, 0x0e, 0x00, 0x0e, 0x6c, 0x0d, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xc0, 0xff, 0xff, 0xff, 0x3c, 0x00, - 0x44, 0x42, 0x01, 0x00, 0xb6, 0xff, 0xff, 0xff, - 0xd3, 0xff, 0xff, 0xff, 0xc9, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x51, 0xb0, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x51, 0xb0, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x59, 0xaf, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x42, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa5, 0xaf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4d, 0xaf, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x45, 0xb0, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xd5, 0xaf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xad, 0xb0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x42, 0x01, 0x00, - 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x99, 0xb0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x42, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x17, - 0x01, 0x00, 0x35, 0x17, 0x01, 0x00, 0x21, 0x17, - 0x01, 0x00, 0xd9, 0x9c, 0x00, 0x00, 0x49, 0x17, - 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0xd1, 0x9c, - 0x00, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x1d, 0x1a, - 0x01, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x01, 0x1a, - 0x01, 0x00, 0x31, 0x1a, 0x01, 0x00, 0x25, 0x1a, - 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x43, 0x01, 0x00, 0x81, 0x1a, 0x01, 0x00, - 0xd1, 0x9c, 0x00, 0x00, 0x79, 0x17, 0x01, 0x00, - 0xd9, 0x9c, 0x00, 0x00, 0x5d, 0x17, 0x01, 0x00, - 0xa1, 0x17, 0x01, 0x00, 0x95, 0x17, 0x01, 0x00, - 0x81, 0x17, 0x01, 0x00, 0x21, 0x18, 0x01, 0x00, - 0xf5, 0x17, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x43, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x19, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x35, 0x1b, - 0x01, 0x00, 0x3c, 0x00, 0xac, 0x43, 0x01, 0x00, - 0x9d, 0x1b, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, - 0x65, 0x18, 0x01, 0x00, 0x29, 0x18, 0x01, 0x00, - 0x39, 0x18, 0x01, 0x00, 0xbd, 0x18, 0x01, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x4d, 0x18, 0x01, 0x00, - 0xa5, 0x18, 0x01, 0x00, 0x85, 0x41, 0x00, 0x00, - 0x01, 0x19, 0x01, 0x00, 0x3c, 0x00, 0xe8, 0x43, - 0x01, 0x00, 0xd9, 0x18, 0x01, 0x00, 0xed, 0x18, - 0x01, 0x00, 0x15, 0x19, 0x01, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x69, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x71, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0xfd, 0xdb, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x44, 0x01, 0x00, 0x1d, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0xf5, 0xda, 0x00, 0x00, - 0x14, 0x00, 0x81, 0x00, 0xfd, 0xdd, 0x00, 0x00, - 0x08, 0x00, 0x82, 0x00, 0xc5, 0xdd, 0x00, 0x00, - 0x38, 0x00, 0x83, 0x00, 0x45, 0xdc, 0x00, 0x00, - 0x10, 0x00, 0x84, 0x00, 0x99, 0xdc, 0x00, 0x00, - 0x0c, 0x00, 0x86, 0x00, 0x39, 0xdc, 0x00, 0x00, - 0x10, 0x00, 0x88, 0x00, 0x11, 0xde, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x44, 0x01, 0x00, 0x10, 0x00, - 0x8a, 0x00, 0x35, 0xdd, 0x00, 0x00, 0x0c, 0x00, - 0x8c, 0x00, 0xad, 0xdf, 0x00, 0x00, 0x1c, 0x00, - 0x8e, 0x00, 0xc9, 0xde, 0x00, 0x00, 0x38, 0x00, - 0x8f, 0x00, 0xed, 0xdc, 0x00, 0x00, 0x38, 0x00, - 0x90, 0x00, 0x75, 0xdf, 0x00, 0x00, 0x0c, 0x00, - 0x91, 0x00, 0x8d, 0xdc, 0x00, 0x00, 0x0c, 0x00, - 0x93, 0x00, 0xb9, 0xdd, 0x00, 0x00, 0x0c, 0x00, - 0x94, 0x00, 0x3c, 0x00, 0x9c, 0x44, 0x01, 0x00, - 0x00, 0x08, 0x08, 0x08, 0x10, 0x0c, 0x0c, 0x0c, - 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x08, - 0x08, 0x08, 0x14, 0x08, 0x08, 0x14, 0x00, 0x30, - 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, - 0xad, 0x30, 0x01, 0x00, 0x15, 0x30, 0x01, 0x00, - 0x20, 0x30, 0x07, 0x00, 0x30, 0x30, 0x07, 0x00, - 0x06, 0x07, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x44, - 0x01, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xc9, 0x02, 0x00, 0x94, 0x3f, - 0x03, 0x00, 0xe0, 0x8b, 0x5a, 0x00, 0x05, 0x3a, - 0x85, 0x00, 0xc8, 0xf2, 0x06, 0x00, 0xf8, 0x4c, - 0x56, 0x00, 0x20, 0xa7, 0x3d, 0x00, 0xb7, 0x4a, - 0x00, 0x00, 0xb7, 0x4a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x45, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, - 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, - 0x05, 0x06, 0x00, 0x00, 0x2d, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0xfd, 0x95, 0x00, 0x00, - 0x08, 0x00, 0xff, 0x00, 0xed, 0x97, 0x00, 0x00, - 0x08, 0x00, 0x82, 0x00, 0xcd, 0x95, 0x00, 0x00, - 0x0c, 0x00, 0x83, 0x00, 0x4d, 0x96, 0x00, 0x00, - 0x0c, 0x00, 0x85, 0x00, 0x2d, 0x7c, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x45, 0x01, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x3d, 0x96, 0x00, 0x00, 0x0c, 0x00, - 0x89, 0x00, 0xd9, 0x97, 0x00, 0x00, 0x08, 0x00, - 0x8a, 0x00, 0x91, 0x95, 0x00, 0x00, 0x08, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x3c, 0x00, 0x8c, 0x45, 0x01, 0x00, - 0xf9, 0x97, 0x00, 0x00, 0x08, 0x00, 0x8d, 0x00, - 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0xc9, 0x97, 0x00, 0x00, 0x30, 0x00, 0x90, 0x00, - 0x11, 0x95, 0x00, 0x00, 0x18, 0x00, 0x91, 0x00, - 0x15, 0x96, 0x00, 0x00, 0x08, 0x00, 0x92, 0x00, - 0x59, 0x95, 0x00, 0x00, 0x3c, 0x00, 0x93, 0x00, - 0x29, 0x96, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x45, - 0x01, 0x00, 0x08, 0x00, 0x94, 0x00, 0xa1, 0x95, - 0x00, 0x00, 0x08, 0x00, 0x95, 0x00, 0x81, 0x97, - 0x00, 0x00, 0x0c, 0x00, 0x96, 0x00, 0x6d, 0x97, - 0x00, 0x00, 0x10, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x10, - 0x08, 0x00, 0x00, 0x08, 0x00, 0x10, 0x3c, 0x00, - 0x04, 0x46, 0x01, 0x00, 0x08, 0x0c, 0x0c, 0x0c, - 0x0c, 0x1c, 0x0c, 0x0c, 0x08, 0x00, 0x00, 0x00, - 0x0d, 0x8b, 0x00, 0x00, 0xf5, 0x8a, 0x00, 0x00, - 0xe9, 0x8a, 0x00, 0x00, 0x01, 0x8b, 0x00, 0x00, - 0x14, 0x08, 0x0c, 0x0c, 0x10, 0x0c, 0x00, 0x00, - 0xb1, 0x98, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x19, 0x99, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x3d, 0x7c, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x46, 0x01, 0x00, 0x3d, 0x99, - 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x09, 0x99, - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x3d, 0x7c, - 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01, - 0x04, 0x04, 0x08, 0x08, 0x81, 0x37, 0x80, 0xf3, - 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0xaa, 0xaa, - 0x03, 0x00, 0x00, 0xf8, 0x6d, 0xa9, 0x6d, 0xa9, - 0x6e, 0xa9, 0x3c, 0x00, 0x7c, 0x46, 0x01, 0x00, - 0x6e, 0xa8, 0x6e, 0xa8, 0x6e, 0xa8, 0x6f, 0xa7, - 0x6f, 0xa7, 0x6f, 0xa7, 0x6f, 0xa6, 0x6f, 0xa6, - 0x70, 0xa6, 0x70, 0xa5, 0x70, 0xa4, 0x00, 0x00, - 0xb5, 0x1b, 0x01, 0x00, 0xc9, 0x1b, 0x01, 0x00, - 0xe1, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, - 0xa5, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, - 0x89, 0x1b, 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x46, - 0x01, 0x00, 0xd1, 0x1a, 0x01, 0x00, 0xe5, 0x1a, - 0x01, 0x00, 0x05, 0x1b, 0x01, 0x00, 0x25, 0x1b, - 0x01, 0x00, 0xb1, 0x1a, 0x01, 0x00, 0xe5, 0x9c, - 0x00, 0x00, 0x9d, 0x1a, 0x01, 0x00, 0xd5, 0x9c, - 0x00, 0x00, 0xc1, 0x1a, 0x01, 0x00, 0x89, 0x19, - 0x01, 0x00, 0xa9, 0x19, 0x01, 0x00, 0xc9, 0x19, - 0x01, 0x00, 0xf1, 0x19, 0x01, 0x00, 0x79, 0x19, - 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x46, 0x01, 0x00, 0x65, 0x19, 0x01, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0x55, 0x1c, 0x01, 0x00, - 0x45, 0x1c, 0x01, 0x00, 0x45, 0x1c, 0x01, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x47, 0x01, 0x00, 0xd5, 0x9c, - 0x00, 0x00, 0x55, 0x19, 0x01, 0x00, 0xe5, 0x9c, - 0x00, 0x00, 0x41, 0x19, 0x01, 0x00, 0x31, 0x19, - 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00, 0x02, 0x05, - 0x0a, 0x00, 0x00, 0x00, 0x02, 0x04, 0x0a, 0x00, - 0x00, 0x00, 0xc5, 0x20, 0x00, 0x00, 0x21, 0x21, - 0x00, 0x00, 0x25, 0x21, 0x00, 0x00, 0x39, 0x21, - 0x00, 0x00, 0x49, 0x21, 0x00, 0x00, 0x55, 0x21, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x47, 0x01, 0x00, - 0x61, 0x21, 0x00, 0x00, 0xed, 0x21, 0x00, 0x00, - 0x0d, 0x22, 0x00, 0x00, 0x21, 0x22, 0x00, 0x00, - 0x3d, 0x22, 0x00, 0x00, 0x49, 0x22, 0x00, 0x00, - 0xc5, 0x22, 0x00, 0x00, 0xe1, 0x22, 0x00, 0x00, - 0xf5, 0x22, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0x11, 0x23, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x47, - 0x01, 0x00, 0x1d, 0x23, 0x00, 0x00, 0x89, 0x23, - 0x00, 0x00, 0xa5, 0x23, 0x00, 0x00, 0xb9, 0x23, - 0x00, 0x00, 0x11, 0x20, 0x00, 0x00, 0x1d, 0x20, - 0x00, 0x00, 0x6d, 0x20, 0x00, 0x00, 0x8d, 0x20, - 0x00, 0x00, 0xb9, 0x20, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x03, 0x03, 0x05, 0x06, 0x06, 0x08, 0x09, - 0x08, 0x09, 0x09, 0x09, 0xc4, 0x80, 0xca, 0x80, - 0x80, 0x80, 0x80, 0x80, 0xd0, 0x80, 0x3c, 0x00, - 0xe4, 0x47, 0x01, 0x00, 0xd6, 0xd9, 0xdc, 0xdf, - 0xe2, 0x80, 0x80, 0x80, 0xe5, 0xe8, 0x80, 0x80, - 0x80, 0x80, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa, - 0xfd, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, - 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, - 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, - 0x0c, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, - 0x13, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1b, 0x00, - 0x3c, 0x00, 0x20, 0x48, 0x01, 0x00, 0x1e, 0x00, - 0x22, 0x00, 0x26, 0x00, 0x2b, 0x00, 0x30, 0x00, - 0x36, 0x00, 0x3c, 0x00, 0x44, 0x00, 0x4c, 0x00, - 0x55, 0x00, 0x5f, 0x00, 0x6b, 0x00, 0x78, 0x00, - 0x86, 0x00, 0x97, 0x00, 0xa9, 0x00, 0xbe, 0x00, - 0xd5, 0x00, 0xef, 0x00, 0xff, 0x7f, 0x0c, 0x00, - 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, - 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, - 0xf8, 0xff, 0x3c, 0x00, 0x5c, 0x48, 0x01, 0x00, - 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, - 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff, - 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, - 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe8, 0xff, - 0xe7, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, - 0xe3, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff, - 0xdf, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdc, 0xff, - 0xdc, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x48, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xb1, 0x7c, 0x41, 0x00, 0x11, 0x5a, - 0x40, 0xe2, 0xb2, 0x7c, 0x41, 0x00, 0x05, 0x5a, - 0x40, 0xe2, 0xaf, 0x7c, 0x41, 0x00, 0xf9, 0x59, - 0x40, 0xe2, 0xb0, 0x7c, 0x41, 0x00, 0xed, 0x59, - 0x40, 0xe2, 0x24, 0x67, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x5c, 0x67, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x0a, 0x61, 0x01, 0x00, 0x3c, 0x00, - 0xd4, 0x48, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x0e, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x32, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x6a, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x0b, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x0f, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x40, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x78, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x3c, 0x00, 0x10, 0x49, 0x01, 0x00, 0x0c, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x10, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x4e, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x86, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x0d, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x11, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0xc0, 0x48, - 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a, 0xe0, 0x48, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x00, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x20, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x18, 0x67, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x28, 0x75, 0x01, 0x01, - 0x7d, 0xa9, 0x40, 0xe2, 0x2c, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x20, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x44, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x88, 0x49, - 0x01, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x75, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0xb8, 0x7c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x8d, 0xa9, 0x00, 0x00, 0x01, 0x00, - 0x00, 0xda, 0x1d, 0x75, 0x01, 0x00, 0x01, 0x00, - 0x00, 0xe2, 0xc4, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0xc4, 0x49, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x59, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xd9, - 0xc8, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xcc, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xd0, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x65, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda, - 0xa5, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda, - 0x3c, 0x00, 0x00, 0x4a, 0x01, 0x00, 0x01, 0x59, - 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x32, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x6a, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x11, 0x59, - 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x48, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xa0, 0x48, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x49, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x4a, 0x01, 0x00, - 0x05, 0x00, 0x00, 0x0a, 0x68, 0x49, 0x01, 0x00, - 0x09, 0x00, 0x00, 0x0a, 0x6c, 0x57, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x38, 0x61, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xac, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0xb0, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x70, 0x57, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x78, 0x4a, - 0x01, 0x00, 0xe8, 0x59, 0x01, 0x00, 0x08, 0x00, - 0x00, 0xe3, 0xdc, 0x58, 0x01, 0x14, 0x4d, 0xfd, - 0x40, 0xe3, 0x2c, 0x59, 0x01, 0x14, 0x39, 0xfd, - 0x40, 0xe3, 0xc0, 0x58, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x64, 0x73, 0x41, 0x00, 0x3d, 0x2e, - 0x44, 0xe2, 0x7c, 0x59, 0x01, 0x14, 0x3c, 0x00, - 0xb4, 0x4a, 0x01, 0x00, 0x9d, 0x2f, 0x44, 0xe3, - 0x5c, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe2, - 0x79, 0x2e, 0x04, 0x00, 0x01, 0x00, 0x00, 0xdb, - 0xa0, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3, - 0xa2, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3, - 0xa0, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0xd1, 0x88, 0x01, 0x00, 0x01, 0x00, 0x00, 0xda, - 0x1d, 0x89, 0x01, 0x00, 0x04, 0x00, 0x00, 0xda, - 0x3c, 0x00, 0xf0, 0x4a, 0x01, 0x00, 0x95, 0x88, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb, 0x31, 0x2f, - 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0xc5, 0x2e, - 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0x68, 0x6c, - 0x01, 0x01, 0x15, 0xd5, 0x40, 0xe2, 0xc0, 0x57, - 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xc8, 0x57, - 0x01, 0x00, 0x34, 0x00, 0x00, 0xe3, 0x9c, 0x6c, - 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xb0, 0x58, - 0x01, 0x03, 0x3c, 0x00, 0x2c, 0x4b, 0x01, 0x00, - 0xe9, 0xd4, 0x40, 0xe2, 0xbc, 0x58, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x9d, 0xa3, 0x00, 0x00, - 0x60, 0x00, 0x00, 0xd9, 0x70, 0x79, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x78, 0x79, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x7c, 0x5a, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x5d, 0x1c, 0x00, 0x00, - 0x11, 0x00, 0x00, 0xd9, 0x24, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x68, 0x4b, - 0x01, 0x00, 0x18, 0x58, 0x01, 0x05, 0xd5, 0xd5, - 0x40, 0xe3, 0xfc, 0x57, 0x01, 0x00, 0x14, 0x00, - 0x00, 0xe3, 0x04, 0x8e, 0x01, 0x03, 0xe5, 0xd5, - 0x40, 0xe3, 0x00, 0x5b, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x18, 0x5b, 0x01, 0x00, 0x40, 0x00, - 0x00, 0xe2, 0xd4, 0x67, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x8d, 0x37, 0x00, 0x00, 0x04, 0x00, - 0x00, 0xdb, 0xbd, 0x36, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x4b, 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb, - 0xfc, 0x60, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, - 0x90, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x70, 0x69, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x49, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x0a, - 0x90, 0x4b, 0x01, 0x00, 0x06, 0x00, 0x00, 0x0a, - 0xa4, 0x58, 0x81, 0x00, 0x05, 0xfd, 0x40, 0xe3, - 0x3c, 0x00, 0xe0, 0x4b, 0x01, 0x00, 0x80, 0x4a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0a, 0x0c, 0x5a, - 0x81, 0x01, 0x25, 0x2d, 0x44, 0xe3, 0xe0, 0x4a, - 0x01, 0x00, 0x03, 0x00, 0x00, 0x0a, 0x18, 0x63, - 0x41, 0x00, 0xfd, 0xbb, 0x40, 0xe2, 0x08, 0x57, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x9c, 0x48, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x4a, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4c, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0xcc, 0x74, 0x01, 0x00, - 0x03, 0x00, 0x00, 0xe3, 0x65, 0x73, 0x41, 0x00, - 0xa9, 0x2e, 0x44, 0xe2, 0xf6, 0x59, 0x01, 0x01, - 0xd1, 0x2c, 0x44, 0xe3, 0x08, 0x4b, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x07, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x6a, 0x28, 0x4b, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0x88, 0x7d, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x58, 0x4c, - 0x01, 0x00, 0x00, 0x75, 0x01, 0x04, 0x65, 0x6f, - 0x40, 0xe3, 0xbc, 0x78, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x38, 0x4b, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0x04, 0x57, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x62, 0x58, 0x4b, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x80, 0x4b, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x68, 0x4b, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x8c, 0x7d, 0x01, 0x00, 0x3c, 0x00, - 0x94, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x39, 0x2d, 0x04, 0x00, 0x04, 0x00, 0x00, 0xdb, - 0x94, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x64, - 0xa8, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a, - 0x3c, 0x00, 0xd0, 0x4c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x4c, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xd0, 0x4c, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x7a, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0xe8, 0x7a, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x0c, 0x4d, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xee, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf3, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xf4, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf9, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xfa, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x48, 0x4d, - 0x01, 0x00, 0xe8, 0x4c, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x00, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x18, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x30, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x90, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x94, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x98, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x9c, 0x5c, 0x01, 0x00, 0x3c, 0x00, - 0x84, 0x4d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xac, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x00, 0xc0, 0x4d, 0x01, 0x00, 0xbc, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc0, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc4, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x90, 0x5c, - 0x01, 0x00, 0x38, 0x00, 0x00, 0xe3, 0x68, 0x4d, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0xd8, 0x4d, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xfa, 0x12, 0x61, - 0x81, 0x01, 0x31, 0xd5, 0x40, 0xe3, 0x06, 0x61, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x4d, 0x01, 0x00, - 0x02, 0x00, 0x00, 0xe2, 0x0b, 0x61, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe3, 0x0f, 0x61, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe3, 0x08, 0x61, 0x01, 0x00, - 0x02, 0x00, 0x00, 0xe2, 0x50, 0x7b, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0x01, 0x00, - 0x0e, 0x00, 0x00, 0x64, 0x9c, 0x57, 0x01, 0x01, - 0x91, 0x88, 0x41, 0xe3, 0x3c, 0x00, 0x38, 0x4e, - 0x01, 0x00, 0x6e, 0x41, 0x67, 0x6f, 0xe2, 0x65, - 0x60, 0x69, 0x6f, 0x20, 0x41, 0x42, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0x4d, 0x01, 0x00, 0x09, 0x00, - 0x00, 0x0a, 0x48, 0x4e, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0xe8, 0x4d, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x48, 0x4d, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0x28, 0x61, 0x01, 0x01, 0x3c, 0x00, - 0x74, 0x4e, 0x01, 0x00, 0xbd, 0xd5, 0x40, 0xe2, - 0x69, 0x61, 0x41, 0x00, 0x85, 0xd5, 0x40, 0xe2, - 0x30, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x44, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x3c, 0x00, 0xb0, 0x4e, 0x01, 0x00, 0x70, 0x4e, - 0x01, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x18, 0x61, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x1c, 0x61, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x20, 0x61, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x24, 0x61, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xb8, 0x4e, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xc8, 0x4e, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xd8, 0x4e, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x4e, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0x96, 0x48, 0x01, 0x00, - 0x06, 0x00, 0x00, 0xe3, 0xe0, 0x62, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x9b, 0x7d, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x62, 0x9c, 0x7d, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x62, 0x60, 0x7c, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x01, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x28, 0x4f, - 0x01, 0x00, 0x2d, 0x63, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x49, 0xd5, 0x00, 0x00, 0x0e, 0x00, - 0x00, 0xd9, 0xf4, 0x67, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x62, 0x46, 0x7d, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x62, 0x9c, 0x7c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00, - 0x64, 0x4f, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0xa0, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x58, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0x64, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x5a, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0x6a, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0xe4, 0x62, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x00, 0xa0, 0x4f, 0x01, 0x00, 0xe8, 0x62, - 0x01, 0x00, 0x03, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x01, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x4f, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x18, 0x50, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0xf0, 0x4e, 0x01, 0x00, 0x2a, 0x00, - 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0x50, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x3c, 0x00, 0x90, 0x50, 0x01, 0x00, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x06, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x07, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x08, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x09, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x50, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0a, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0b, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0c, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x3c, 0x00, 0x08, 0x51, - 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0xdb, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0xdb, 0x48, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x58, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x68, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x78, 0x50, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x51, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x88, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x98, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xa8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xb8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xc8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xd8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xe8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x3c, 0x00, 0x80, 0x51, 0x01, 0x00, 0xf8, 0x50, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x08, 0x51, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x18, 0x51, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x50, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xe8, 0x4e, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x4e, - 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x51, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x28, 0x51, 0x01, 0x00, - 0x0e, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x51, - 0x01, 0x00, 0x98, 0x51, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0x0a, 0x50, 0x4e, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0xe0, 0x4c, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x4b, 0x01, 0x00, 0x1d, 0x00, - 0x00, 0x0a, 0xf8, 0x51, 0x01, 0x00, 0x05, 0x00, - 0x00, 0x0a, 0x24, 0x80, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1d, 0x80, 0x07, 0x00, 0x3c, 0x00, - 0x34, 0x52, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x01, - 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, - 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x01, 0x63, - 0x00, 0x00, 0xa1, 0x63, 0x00, 0x00, 0xc5, 0x63, - 0x00, 0x00, 0xb1, 0x62, 0x00, 0x00, 0xc5, 0x63, - 0x00, 0x00, 0x21, 0x63, 0x00, 0x00, 0x4d, 0x63, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x52, 0x01, 0x00, - 0xa1, 0x63, 0x00, 0x00, 0x01, 0x63, 0x00, 0x00, - 0xa1, 0x63, 0x00, 0x00, 0x06, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x03, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x10, - 0x11, 0x00, 0x00, 0x00, 0xa5, 0xc6, 0x84, 0xf8, - 0x99, 0xee, 0x8d, 0xf6, 0x0d, 0xff, 0xbd, 0xd6, - 0xb1, 0xde, 0x54, 0x91, 0x3c, 0x00, 0xe8, 0x52, - 0x01, 0x00, 0x50, 0x60, 0x03, 0x02, 0xa9, 0xce, - 0x7d, 0x56, 0x19, 0xe7, 0x62, 0xb5, 0xe6, 0x4d, - 0x9a, 0xec, 0x45, 0x8f, 0x9d, 0x1f, 0x40, 0x89, - 0x87, 0xfa, 0x15, 0xef, 0xeb, 0xb2, 0xc9, 0x8e, - 0x0b, 0xfb, 0xec, 0x41, 0x67, 0xb3, 0xfd, 0x5f, - 0xea, 0x45, 0xbf, 0x23, 0xf7, 0x53, 0x96, 0xe4, - 0x5b, 0x9b, 0xc2, 0x75, 0x1c, 0xe1, 0xae, 0x3d, - 0x6a, 0x4c, 0x5a, 0x6c, 0x41, 0x7e, 0x3c, 0x00, - 0x24, 0x53, 0x01, 0x00, 0x02, 0xf5, 0x4f, 0x83, - 0x5c, 0x68, 0xf4, 0x51, 0x34, 0xd1, 0x08, 0xf9, - 0x93, 0xe2, 0x73, 0xab, 0x53, 0x62, 0x3f, 0x2a, - 0x0c, 0x08, 0x52, 0x95, 0x65, 0x46, 0x5e, 0x9d, - 0x28, 0x30, 0xa1, 0x37, 0x0f, 0x0a, 0xb5, 0x2f, - 0x09, 0x0e, 0x36, 0x24, 0x9b, 0x1b, 0x3d, 0xdf, - 0x26, 0xcd, 0x69, 0x4e, 0xcd, 0x7f, 0x9f, 0xea, - 0x1b, 0x12, 0x9e, 0x1d, 0x74, 0x58, 0x2e, 0x34, - 0x3c, 0x00, 0x60, 0x53, 0x01, 0x00, 0x2d, 0x36, - 0xb2, 0xdc, 0xee, 0xb4, 0xfb, 0x5b, 0xf6, 0xa4, - 0x4d, 0x76, 0x61, 0xb7, 0xce, 0x7d, 0x7b, 0x52, - 0x3e, 0xdd, 0x71, 0x5e, 0x97, 0x13, 0xf5, 0xa6, - 0x68, 0xb9, 0x00, 0x00, 0x2c, 0xc1, 0x60, 0x40, - 0x1f, 0xe3, 0xc8, 0x79, 0xed, 0xb6, 0xbe, 0xd4, - 0x46, 0x8d, 0xd9, 0x67, 0x4b, 0x72, 0xde, 0x94, - 0xd4, 0x98, 0xe8, 0xb0, 0x4a, 0x85, 0x6b, 0xbb, - 0x2a, 0xc5, 0x3c, 0x00, 0x9c, 0x53, 0x01, 0x00, - 0xe5, 0x4f, 0x16, 0xed, 0xc5, 0x86, 0xd7, 0x9a, - 0x55, 0x66, 0x94, 0x11, 0xcf, 0x8a, 0x10, 0xe9, - 0x06, 0x04, 0x81, 0xfe, 0xf0, 0xa0, 0x44, 0x78, - 0xba, 0x25, 0xe3, 0x4b, 0xf3, 0xa2, 0xfe, 0x5d, - 0xc0, 0x80, 0x8a, 0x05, 0xad, 0x3f, 0xbc, 0x21, - 0x48, 0x70, 0x04, 0xf1, 0xdf, 0x63, 0xc1, 0x77, - 0x75, 0xaf, 0x63, 0x42, 0x30, 0x20, 0x1a, 0xe5, - 0x0e, 0xfd, 0x6d, 0xbf, 0x3c, 0x00, 0xd8, 0x53, - 0x01, 0x00, 0x4c, 0x81, 0x14, 0x18, 0x35, 0x26, - 0x2f, 0xc3, 0xe1, 0xbe, 0xa2, 0x35, 0xcc, 0x88, - 0x39, 0x2e, 0x57, 0x93, 0xf2, 0x55, 0x82, 0xfc, - 0x47, 0x7a, 0xac, 0xc8, 0xe7, 0xba, 0x2b, 0x32, - 0x95, 0xe6, 0xa0, 0xc0, 0x98, 0x19, 0xd1, 0x9e, - 0x7f, 0xa3, 0x66, 0x44, 0x7e, 0x54, 0xab, 0x3b, - 0x83, 0x0b, 0xca, 0x8c, 0x29, 0xc7, 0xd3, 0x6b, - 0x3c, 0x28, 0x79, 0xa7, 0xe2, 0xbc, 0x3c, 0x00, - 0x14, 0x54, 0x01, 0x00, 0x1d, 0x16, 0x76, 0xad, - 0x3b, 0xdb, 0x56, 0x64, 0x4e, 0x74, 0x1e, 0x14, - 0xdb, 0x92, 0x0a, 0x0c, 0x6c, 0x48, 0xe4, 0xb8, - 0x5d, 0x9f, 0x6e, 0xbd, 0xef, 0x43, 0xa6, 0xc4, - 0xa8, 0x39, 0xa4, 0x31, 0x37, 0xd3, 0x8b, 0xf2, - 0x32, 0xd5, 0x43, 0x8b, 0x59, 0x6e, 0xb7, 0xda, - 0x8c, 0x01, 0x64, 0xb1, 0xd2, 0x9c, 0xe0, 0x49, - 0xb4, 0xd8, 0xfa, 0xac, 0x07, 0xf3, 0x25, 0xcf, - 0x3c, 0x00, 0x50, 0x54, 0x01, 0x00, 0xaf, 0xca, - 0x8e, 0xf4, 0xe9, 0x47, 0x18, 0x10, 0xd5, 0x6f, - 0x88, 0xf0, 0x6f, 0x4a, 0x72, 0x5c, 0x24, 0x38, - 0xf1, 0x57, 0xc7, 0x73, 0x51, 0x97, 0x23, 0xcb, - 0x7c, 0xa1, 0x9c, 0xe8, 0x21, 0x3e, 0xdd, 0x96, - 0xdc, 0x61, 0x86, 0x0d, 0x85, 0x0f, 0x90, 0xe0, - 0x42, 0x7c, 0xc4, 0x71, 0xaa, 0xcc, 0xd8, 0x90, - 0x05, 0x06, 0x01, 0xf7, 0x12, 0x1c, 0xa3, 0xc2, - 0x5f, 0x6a, 0x3c, 0x00, 0x8c, 0x54, 0x01, 0x00, - 0xf9, 0xae, 0xd0, 0x69, 0x91, 0x17, 0x58, 0x99, - 0x27, 0x3a, 0xb9, 0x27, 0x38, 0xd9, 0x13, 0xeb, - 0xb3, 0x2b, 0x33, 0x22, 0xbb, 0xd2, 0x70, 0xa9, - 0x89, 0x07, 0xa7, 0x33, 0xb6, 0x2d, 0x22, 0x3c, - 0x92, 0x15, 0x20, 0xc9, 0x49, 0x87, 0xff, 0xaa, - 0x78, 0x50, 0x7a, 0xa5, 0x8f, 0x03, 0xf8, 0x59, - 0x80, 0x09, 0x17, 0x1a, 0xda, 0x65, 0x31, 0xd7, - 0xc6, 0x84, 0xb8, 0xd0, 0x3c, 0x00, 0xc8, 0x54, - 0x01, 0x00, 0xc3, 0x82, 0xb0, 0x29, 0x77, 0x5a, - 0x11, 0x1e, 0xcb, 0x7b, 0xfc, 0xa8, 0xd6, 0x6d, - 0x3a, 0x2c, 0xc6, 0xa5, 0xf8, 0x84, 0xee, 0x99, - 0xf6, 0x8d, 0xff, 0x0d, 0xd6, 0xbd, 0xde, 0xb1, - 0x91, 0x54, 0x60, 0x50, 0x02, 0x03, 0xce, 0xa9, - 0x56, 0x7d, 0xe7, 0x19, 0xb5, 0x62, 0x4d, 0xe6, - 0xec, 0x9a, 0x8f, 0x45, 0x1f, 0x9d, 0x89, 0x40, - 0xfa, 0x87, 0xef, 0x15, 0xb2, 0xeb, 0x3c, 0x00, - 0x04, 0x55, 0x01, 0x00, 0x8e, 0xc9, 0xfb, 0x0b, - 0x41, 0xec, 0xb3, 0x67, 0x5f, 0xfd, 0x45, 0xea, - 0x23, 0xbf, 0x53, 0xf7, 0xe4, 0x96, 0x9b, 0x5b, - 0x75, 0xc2, 0xe1, 0x1c, 0x3d, 0xae, 0x4c, 0x6a, - 0x6c, 0x5a, 0x7e, 0x41, 0xf5, 0x02, 0x83, 0x4f, - 0x68, 0x5c, 0x51, 0xf4, 0xd1, 0x34, 0xf9, 0x08, - 0xe2, 0x93, 0xab, 0x73, 0x62, 0x53, 0x2a, 0x3f, - 0x08, 0x0c, 0x95, 0x52, 0x46, 0x65, 0x9d, 0x5e, - 0x3c, 0x00, 0x40, 0x55, 0x01, 0x00, 0x30, 0x28, - 0x37, 0xa1, 0x0a, 0x0f, 0x2f, 0xb5, 0x0e, 0x09, - 0x24, 0x36, 0x1b, 0x9b, 0xdf, 0x3d, 0xcd, 0x26, - 0x4e, 0x69, 0x7f, 0xcd, 0xea, 0x9f, 0x12, 0x1b, - 0x1d, 0x9e, 0x58, 0x74, 0x34, 0x2e, 0x36, 0x2d, - 0xdc, 0xb2, 0xb4, 0xee, 0x5b, 0xfb, 0xa4, 0xf6, - 0x76, 0x4d, 0xb7, 0x61, 0x7d, 0xce, 0x52, 0x7b, - 0xdd, 0x3e, 0x5e, 0x71, 0x13, 0x97, 0xa6, 0xf5, - 0xb9, 0x68, 0x3c, 0x00, 0x7c, 0x55, 0x01, 0x00, - 0x00, 0x00, 0xc1, 0x2c, 0x40, 0x60, 0xe3, 0x1f, - 0x79, 0xc8, 0xb6, 0xed, 0xd4, 0xbe, 0x8d, 0x46, - 0x67, 0xd9, 0x72, 0x4b, 0x94, 0xde, 0x98, 0xd4, - 0xb0, 0xe8, 0x85, 0x4a, 0xbb, 0x6b, 0xc5, 0x2a, - 0x4f, 0xe5, 0xed, 0x16, 0x86, 0xc5, 0x9a, 0xd7, - 0x66, 0x55, 0x11, 0x94, 0x8a, 0xcf, 0xe9, 0x10, - 0x04, 0x06, 0xfe, 0x81, 0xa0, 0xf0, 0x78, 0x44, - 0x25, 0xba, 0x4b, 0xe3, 0x3c, 0x00, 0xb8, 0x55, - 0x01, 0x00, 0xa2, 0xf3, 0x5d, 0xfe, 0x80, 0xc0, - 0x05, 0x8a, 0x3f, 0xad, 0x21, 0xbc, 0x70, 0x48, - 0xf1, 0x04, 0x63, 0xdf, 0x77, 0xc1, 0xaf, 0x75, - 0x42, 0x63, 0x20, 0x30, 0xe5, 0x1a, 0xfd, 0x0e, - 0xbf, 0x6d, 0x81, 0x4c, 0x18, 0x14, 0x26, 0x35, - 0xc3, 0x2f, 0xbe, 0xe1, 0x35, 0xa2, 0x88, 0xcc, - 0x2e, 0x39, 0x93, 0x57, 0x55, 0xf2, 0xfc, 0x82, - 0x7a, 0x47, 0xc8, 0xac, 0xba, 0xe7, 0x3c, 0x00, - 0xf4, 0x55, 0x01, 0x00, 0x32, 0x2b, 0xe6, 0x95, - 0xc0, 0xa0, 0x19, 0x98, 0x9e, 0xd1, 0xa3, 0x7f, - 0x44, 0x66, 0x54, 0x7e, 0x3b, 0xab, 0x0b, 0x83, - 0x8c, 0xca, 0xc7, 0x29, 0x6b, 0xd3, 0x28, 0x3c, - 0xa7, 0x79, 0xbc, 0xe2, 0x16, 0x1d, 0xad, 0x76, - 0xdb, 0x3b, 0x64, 0x56, 0x74, 0x4e, 0x14, 0x1e, - 0x92, 0xdb, 0x0c, 0x0a, 0x48, 0x6c, 0xb8, 0xe4, - 0x9f, 0x5d, 0xbd, 0x6e, 0x43, 0xef, 0xc4, 0xa6, - 0x3c, 0x00, 0x30, 0x56, 0x01, 0x00, 0x39, 0xa8, - 0x31, 0xa4, 0xd3, 0x37, 0xf2, 0x8b, 0xd5, 0x32, - 0x8b, 0x43, 0x6e, 0x59, 0xda, 0xb7, 0x01, 0x8c, - 0xb1, 0x64, 0x9c, 0xd2, 0x49, 0xe0, 0xd8, 0xb4, - 0xac, 0xfa, 0xf3, 0x07, 0xcf, 0x25, 0xca, 0xaf, - 0xf4, 0x8e, 0x47, 0xe9, 0x10, 0x18, 0x6f, 0xd5, - 0xf0, 0x88, 0x4a, 0x6f, 0x5c, 0x72, 0x38, 0x24, - 0x57, 0xf1, 0x73, 0xc7, 0x97, 0x51, 0xcb, 0x23, - 0xa1, 0x7c, 0x3c, 0x00, 0x6c, 0x56, 0x01, 0x00, - 0xe8, 0x9c, 0x3e, 0x21, 0x96, 0xdd, 0x61, 0xdc, - 0x0d, 0x86, 0x0f, 0x85, 0xe0, 0x90, 0x7c, 0x42, - 0x71, 0xc4, 0xcc, 0xaa, 0x90, 0xd8, 0x06, 0x05, - 0xf7, 0x01, 0x1c, 0x12, 0xc2, 0xa3, 0x6a, 0x5f, - 0xae, 0xf9, 0x69, 0xd0, 0x17, 0x91, 0x99, 0x58, - 0x3a, 0x27, 0x27, 0xb9, 0xd9, 0x38, 0xeb, 0x13, - 0x2b, 0xb3, 0x22, 0x33, 0xd2, 0xbb, 0xa9, 0x70, - 0x07, 0x89, 0x33, 0xa7, 0x3c, 0x00, 0xa8, 0x56, - 0x01, 0x00, 0x2d, 0xb6, 0x3c, 0x22, 0x15, 0x92, - 0xc9, 0x20, 0x87, 0x49, 0xaa, 0xff, 0x50, 0x78, - 0xa5, 0x7a, 0x03, 0x8f, 0x59, 0xf8, 0x09, 0x80, - 0x1a, 0x17, 0x65, 0xda, 0xd7, 0x31, 0x84, 0xc6, - 0xd0, 0xb8, 0x82, 0xc3, 0x29, 0xb0, 0x5a, 0x77, - 0x1e, 0x11, 0x7b, 0xcb, 0xa8, 0xfc, 0x6d, 0xd6, - 0x2c, 0x3a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x56, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x72, 0x65, 0x71, 0x45, 0x72, 0x72, 0x52, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x57, 0x01, 0x00, 0xc4, 0x8e, - 0x01, 0x00, 0x24, 0x9a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x24, 0x9a, - 0x01, 0x00, 0xa4, 0xb2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xa4, 0xb2, - 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x10, 0x20, - 0x30, 0x40, 0x50, 0xbb, 0x30, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x57, 0x01, 0x00, - 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, - 0x24, 0x26, 0x28, 0x2a, 0x2b, 0x2c, 0x01, 0x00, - 0x70, 0x17, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0d, 0x25, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00, - 0x65, 0x29, 0x01, 0x00, 0x0d, 0x25, 0x00, 0x00, - 0xf5, 0x5e, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00, - 0x41, 0x3f, 0x01, 0x00, 0x02, 0x04, 0x0b, 0x0c, - 0x12, 0x16, 0x18, 0x24, 0x3c, 0x00, 0x98, 0x57, - 0x01, 0x00, 0x30, 0x48, 0x60, 0x6c, 0x01, 0x00, - 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x10, 0x12, 0x11, 0x00, - 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x57, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x93, 0x04, 0x00, - 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0xdf, 0x40, 0xcf, 0xfd, 0x00, 0x40, 0x83, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x58, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x80, 0x81, 0x00, 0x00, - 0x80, 0x00, 0xbf, 0xff, 0x7f, 0x7e, 0x01, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6f, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x58, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xb8, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x71, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x90, 0x71, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x58, - 0x01, 0x00, 0xa8, 0x71, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x05, 0x0a, 0x01, 0x06, 0x0b, - 0x02, 0x07, 0x0c, 0x03, 0x08, 0x0d, 0x04, 0x09, - 0x00, 0x00, 0x03, 0x03, 0x01, 0x01, 0x00, 0x04, - 0x00, 0x04, 0x04, 0x06, 0x16, 0x1e, 0x1f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, - 0xc4, 0x58, 0x01, 0x00, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x61, 0x8b, 0x4a, 0x00, 0x61, 0x8f, 0x4a, 0x00, - 0x61, 0x8b, 0x4a, 0x00, 0x05, 0xe3, 0xc0, 0x00, - 0x05, 0xcb, 0xc0, 0x00, 0x05, 0xbb, 0xc0, 0x00, - 0x85, 0xba, 0xc0, 0x00, 0x85, 0xa2, 0xc0, 0x00, - 0x85, 0x92, 0xc0, 0x00, 0x85, 0x8a, 0xc0, 0x00, - 0x85, 0x7a, 0xc0, 0x00, 0x45, 0x89, 0xc0, 0x00, - 0x3c, 0x00, 0x00, 0x59, 0x01, 0x00, 0x45, 0x71, - 0xc0, 0x00, 0x45, 0x69, 0xc0, 0x00, 0x45, 0x61, - 0xc0, 0x00, 0x45, 0x59, 0xc0, 0x00, 0x45, 0x51, - 0xc0, 0x00, 0x45, 0x49, 0xc0, 0x00, 0x45, 0x41, - 0xc0, 0x00, 0x45, 0x39, 0xc0, 0x00, 0x45, 0x31, - 0xc0, 0x00, 0x45, 0x29, 0xc0, 0x00, 0x45, 0x21, - 0xc0, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d, - 0x06, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d, - 0x06, 0x00, 0x3c, 0x00, 0x3c, 0x59, 0x01, 0x00, - 0x60, 0x2d, 0x06, 0x00, 0x60, 0x28, 0x06, 0x00, - 0x50, 0x26, 0x06, 0x00, 0x50, 0x21, 0x06, 0x00, - 0x50, 0x1f, 0x06, 0x00, 0x50, 0x1c, 0x06, 0x00, - 0x50, 0x1a, 0x06, 0x00, 0x50, 0x18, 0x06, 0x00, - 0x50, 0x16, 0x06, 0x00, 0x50, 0x14, 0x06, 0x00, - 0x50, 0x12, 0x06, 0x00, 0x50, 0x10, 0x06, 0x00, - 0x50, 0x0e, 0x06, 0x00, 0x50, 0x0c, 0x06, 0x00, - 0x50, 0x0a, 0x06, 0x00, 0x3c, 0x00, 0x78, 0x59, - 0x01, 0x00, 0x2b, 0x0b, 0x06, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x6d, - 0xc0, 0x00, 0xdd, 0x5b, 0xc0, 0x00, 0xdd, 0x4b, - 0xc0, 0x00, 0xdd, 0x43, 0xc0, 0x00, 0xdd, 0x3b, - 0xc0, 0x00, 0xdd, 0x33, 0xc0, 0x00, 0xdd, 0x2b, - 0xc0, 0x00, 0xdd, 0x23, 0xc0, 0x00, 0x3c, 0x00, - 0xb4, 0x59, 0x01, 0x00, 0xdd, 0x1b, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0x05, 0x05, 0x05, 0x04, - 0x04, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, - 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x5b, 0x00, 0x40, 0x02, - 0xe0, 0xfd, 0xf2, 0x00, 0xb8, 0xfc, 0xa4, 0x01, - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x03, 0x0b, 0x9f, 0x5f, 0x07, 0x01, - 0x2a, 0x04, 0x21, 0x04, 0x17, 0x04, 0x0e, 0x04, - 0x04, 0x04, 0xfb, 0x03, 0xf1, 0x03, 0xe8, 0x03, - 0xc9, 0x03, 0xaa, 0x03, 0x8a, 0x03, 0x6b, 0x03, - 0x4c, 0x03, 0x3c, 0x00, 0x2c, 0x5a, 0x01, 0x00, - 0x2d, 0x03, 0x0e, 0x03, 0xee, 0x02, 0xec, 0x02, - 0x01, 0x03, 0x16, 0x03, 0x2b, 0x03, 0x40, 0x03, - 0x55, 0x03, 0x6a, 0x03, 0x7f, 0x03, 0x94, 0x03, - 0xa9, 0x03, 0xbe, 0x03, 0xd3, 0x03, 0xe8, 0x03, - 0xbe, 0x03, 0x94, 0x03, 0x6a, 0x03, 0x00, 0x02, - 0x04, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x00, 0x03, 0x3c, 0x00, 0x68, 0x5a, - 0x01, 0x00, 0x05, 0x08, 0x0b, 0x0e, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x5a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x5a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x5b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x5b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x5b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x5b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x5c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x5c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x5c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x5c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x5c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x5d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x5d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x5d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x5d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x5e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x5e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x5e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x5e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x5f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x5f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x5f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x5f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x60, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x60, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x61, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x61, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x61, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x62, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x62, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x62, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x62, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x63, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x63, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x63, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x63, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x64, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x64, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x64, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x65, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x65, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x65, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x65, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x66, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x66, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x66, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x67, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x67, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x67, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x68, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x68, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x68, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x69, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x69, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x69, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x69, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x6a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x6a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x6a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x6a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x6b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x6b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x6b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x6b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x6c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x6c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x6c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x6d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x6d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x6d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x6e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x6e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x6e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x6e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x6f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x6f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x6f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x70, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x70, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x71, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x71, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x71, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x71, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x72, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x72, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x72, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x72, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x73, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x73, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x73, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x74, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x74, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x74, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x75, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x75, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x75, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x76, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x76, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x76, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x76, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x77, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x77, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x77, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x77, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x78, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x78, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x78, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x79, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x79, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x79, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x79, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x7a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x7a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x7a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x7a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x7a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x7b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x7b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x7b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x7b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x7c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x7c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x7c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x7c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x7d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x7d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x7d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x7e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x7e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x7e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x7e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x7e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x7f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x7f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x7f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x7f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x70, 0xb5, 0x01, 0x25, 0x07, 0x4e, - 0xad, 0x03, 0x75, 0x61, 0x0a, 0x20, 0xfa, 0xf7, - 0x6c, 0xff, 0x30, 0x68, 0x80, 0x03, 0xc4, 0x0f, - 0xb5, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x65, 0xff, - 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x80, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x70, 0xb5, 0x01, 0x25, 0x6d, 0x04, 0x00, 0x28, - 0x10, 0x4c, 0x01, 0xd0, 0x65, 0x61, 0x00, 0xe0, - 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0xa0, 0x68, 0x28, 0x43, 0xa0, 0x60, 0x0a, 0x20, - 0xfa, 0xf7, 0x4e, 0xff, 0x01, 0x26, 0xb6, 0x03, - 0x66, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x48, 0xff, - 0xa6, 0x61, 0x01, 0x20, 0xfa, 0xf7, 0x44, 0xff, - 0x3c, 0x00, 0x60, 0x80, 0x01, 0x00, 0xa0, 0x68, - 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, - 0x60, 0x60, 0x0a, 0x20, 0xfa, 0xf7, 0x3b, 0xff, - 0x70, 0xbd, 0x10, 0x00, 0x07, 0x00, 0x70, 0xb5, - 0x01, 0x25, 0x10, 0x4c, 0x6d, 0x04, 0x65, 0x61, - 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, 0xa0, 0x68, - 0x28, 0x43, 0xa0, 0x60, 0xee, 0x08, 0xa6, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0x28, 0xff, 0x66, 0x61, - 0x0a, 0x20, 0x3c, 0x00, 0x9c, 0x80, 0x01, 0x00, - 0xfa, 0xf7, 0x24, 0xff, 0xa5, 0x61, 0x0a, 0x20, - 0xfa, 0xf7, 0x20, 0xff, 0xa6, 0x61, 0x0a, 0x20, - 0xfa, 0xf7, 0x1c, 0xff, 0xa0, 0x68, 0xa8, 0x43, - 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x70, 0xb5, 0x01, 0x25, 0x0e, 0x4c, 0x6d, 0x04, - 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0xa0, 0x68, 0x28, 0x43, 0x3c, 0x00, 0xd8, 0x80, - 0x01, 0x00, 0xa0, 0x60, 0xee, 0x08, 0x66, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0x02, 0xff, 0x65, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0xfe, 0xfe, 0xa6, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0xfa, 0xfe, 0xa0, 0x68, - 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, - 0x60, 0x60, 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24, - 0x80, 0x26, 0x28, 0x1c, 0x30, 0x40, 0x3c, 0x00, - 0x14, 0x81, 0x01, 0x00, 0xff, 0xf7, 0x88, 0xff, - 0x68, 0x06, 0x05, 0x0e, 0x01, 0x34, 0x08, 0x2c, - 0xf6, 0xdb, 0xff, 0xf7, 0x6d, 0xff, 0x70, 0xbd, - 0x80, 0xb5, 0x02, 0x1c, 0x0b, 0x21, 0x80, 0x20, - 0xfb, 0xf7, 0x3e, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x12, 0x48, 0x00, 0x25, 0x07, 0x1c, - 0xff, 0x37, 0x06, 0x1d, 0x01, 0x37, 0x28, 0x1c, - 0xf9, 0xf7, 0xea, 0xfd, 0x04, 0x1c, 0x17, 0xd0, - 0x3c, 0x00, 0x50, 0x81, 0x01, 0x00, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd0, 0xe0, 0x6a, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x20, 0xe0, 0x62, 0x25, 0x1c, - 0xf0, 0xe7, 0x7b, 0x68, 0x00, 0x2b, 0x05, 0xd0, - 0x32, 0x1c, 0x21, 0x1c, 0x44, 0x31, 0x01, 0x20, - 0xe8, 0xf7, 0x34, 0xf9, 0x20, 0x1c, 0x44, 0x30, - 0xf9, 0xf7, 0x37, 0xfe, 0xe2, 0xe7, 0xf8, 0xbd, - 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x48, - 0x70, 0xb5, 0x3c, 0x00, 0x8c, 0x81, 0x01, 0x00, - 0x00, 0x68, 0xff, 0x28, 0x1d, 0xd1, 0xff, 0x20, - 0x32, 0x30, 0xfa, 0xf7, 0xa7, 0xfe, 0x0e, 0x4d, - 0x6c, 0x68, 0x0e, 0x48, 0xfa, 0xf7, 0xa2, 0xfe, - 0x68, 0x68, 0x24, 0x1a, 0x01, 0x20, 0x00, 0xf0, - 0x95, 0xfd, 0x6e, 0x68, 0x09, 0x48, 0xfa, 0xf7, - 0x99, 0xfe, 0x68, 0x68, 0x21, 0x1c, 0x0a, 0x39, - 0x30, 0x1a, 0x88, 0x42, 0x02, 0xd3, 0x0a, 0x34, - 0xa0, 0x42, 0x02, 0xd9, 0x3c, 0x00, 0xc8, 0x81, - 0x01, 0x00, 0x00, 0x20, 0x00, 0xf0, 0x85, 0xfd, - 0x70, 0xbd, 0xf4, 0x74, 0x01, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x93, 0x03, 0x00, 0x00, 0x70, 0xb5, - 0x00, 0xf0, 0x4d, 0xf8, 0x01, 0x20, 0xed, 0xf7, - 0x34, 0xf9, 0x11, 0x4d, 0x18, 0x21, 0x68, 0x60, - 0x00, 0x20, 0xe9, 0xf7, 0xf2, 0xf9, 0x28, 0x60, - 0x04, 0x68, 0x80, 0x20, 0x20, 0x80, 0x00, 0x26, - 0x06, 0x22, 0xff, 0x21, 0x20, 0x1d, 0x3c, 0x00, - 0x04, 0x82, 0x01, 0x00, 0x66, 0x80, 0xe8, 0xf7, - 0x0b, 0xfa, 0x20, 0x1c, 0x0a, 0x30, 0x09, 0x49, - 0xf2, 0xf7, 0x2e, 0xfd, 0x20, 0x1c, 0x10, 0x30, - 0x07, 0x49, 0xf2, 0xf7, 0x29, 0xfd, 0xe6, 0x82, - 0x03, 0xcd, 0xe9, 0xf7, 0xf9, 0xf8, 0x02, 0x49, - 0x01, 0x20, 0x14, 0x39, 0x88, 0x60, 0x70, 0xbd, - 0x90, 0xd9, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x24, 0xf7, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x82, 0x01, 0x00, 0x10, 0xb5, - 0x06, 0x4c, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68, - 0xf0, 0xf7, 0x11, 0xfb, 0x60, 0x78, 0x02, 0x28, - 0x01, 0xd1, 0x00, 0xf0, 0x1a, 0xf9, 0x10, 0xbd, - 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x80, 0xb5, - 0xa1, 0x20, 0xff, 0xf7, 0x50, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x40, 0x00, 0x0e, 0x21, 0x08, 0x40, - 0x80, 0xb5, 0xa0, 0x30, 0xff, 0xf7, 0x47, 0xff, - 0x80, 0xbd, 0x3c, 0x00, 0x7c, 0x82, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0xe9, 0xf7, 0x87, 0xf9, 0x00, 0x20, - 0x20, 0x60, 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00, - 0x90, 0xd9, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x01, 0x21, 0x07, 0x4a, 0x21, 0x61, 0x02, 0x20, - 0x10, 0x70, 0x61, 0x61, 0x00, 0xf0, 0xd6, 0xfc, - 0x00, 0xf0, 0xc8, 0xfb, 0x20, 0x1c, 0xed, 0xf7, - 0x9f, 0xfa, 0x10, 0xbd, 0x3c, 0x00, 0xb8, 0x82, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x7c, 0xd9, - 0x01, 0x00, 0x70, 0xb5, 0x02, 0x1c, 0x08, 0x1c, - 0x02, 0x25, 0x00, 0x2a, 0x13, 0x4e, 0x14, 0xd0, - 0x00, 0xf0, 0x11, 0xfc, 0x30, 0x78, 0x01, 0x21, - 0x08, 0x43, 0x30, 0x70, 0x30, 0x78, 0x28, 0x43, - 0x30, 0x70, 0x00, 0x20, 0x7d, 0x21, 0x49, 0x01, - 0xb2, 0x79, 0x92, 0x07, 0x00, 0xd5, 0x01, 0x34, - 0x01, 0x30, 0x88, 0x42, 0xf8, 0xdb, 0x3c, 0x00, - 0xf4, 0x82, 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd, - 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x30, 0x78, - 0x40, 0x08, 0x40, 0x00, 0x30, 0x70, 0x05, 0x49, - 0x48, 0x68, 0x01, 0x22, 0x12, 0x04, 0x90, 0x43, - 0x48, 0x60, 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00, - 0x88, 0x00, 0x07, 0x00, 0x6c, 0x00, 0x07, 0x00, - 0xff, 0xb5, 0x09, 0xae, 0x00, 0x20, 0x60, 0xce, - 0x28, 0x60, 0x00, 0x23, 0x9c, 0x46, 0x30, 0x60, - 0x3c, 0x00, 0x30, 0x83, 0x01, 0x00, 0x69, 0x46, - 0x01, 0xaa, 0x17, 0xe0, 0xdb, 0x07, 0x0e, 0xd5, - 0x12, 0x4b, 0x1c, 0x56, 0x63, 0x1c, 0x0a, 0xd0, - 0x01, 0x27, 0x2b, 0x68, 0xa7, 0x40, 0x3b, 0x43, - 0x2b, 0x60, 0x13, 0x68, 0xdb, 0x07, 0x02, 0xd5, - 0x33, 0x68, 0x3b, 0x43, 0x33, 0x60, 0x0b, 0x68, - 0x5b, 0x08, 0x0b, 0x60, 0x13, 0x68, 0x5b, 0x08, - 0x13, 0x60, 0x01, 0x30, 0x0b, 0x68, 0x00, 0x2b, - 0x01, 0xd0, 0x3c, 0x00, 0x6c, 0x83, 0x01, 0x00, - 0x22, 0x28, 0xe2, 0xd3, 0x63, 0x46, 0x01, 0x33, - 0x20, 0x20, 0x02, 0x2b, 0x9c, 0x46, 0x02, 0xa9, - 0x03, 0xaa, 0xf2, 0xdb, 0xff, 0xbd, 0x00, 0x00, - 0xb4, 0x8d, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0x1e, 0x21, 0x00, 0x22, 0x03, 0x20, - 0x05, 0x4b, 0xf9, 0xf7, 0xb3, 0xf8, 0x21, 0x1c, - 0x03, 0x20, 0xf9, 0xf7, 0xf5, 0xf8, 0x29, 0x1c, - 0x03, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0xa8, 0x83, - 0x01, 0x00, 0xf1, 0xf8, 0xb0, 0xbd, 0x80, 0x38, - 0x01, 0x00, 0xb0, 0xb5, 0x1c, 0x4c, 0x1c, 0x4d, - 0x21, 0x78, 0x02, 0x29, 0x09, 0xd0, 0x03, 0x29, - 0x19, 0xd0, 0x04, 0x29, 0x1f, 0xd0, 0x05, 0x29, - 0x23, 0xd1, 0x00, 0x20, 0x00, 0xf0, 0x17, 0xfb, - 0x23, 0xe0, 0x68, 0x61, 0x14, 0x48, 0x1c, 0x30, - 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60, - 0x00, 0xf0, 0x2f, 0xfb, 0xe0, 0x68, 0x3c, 0x00, - 0xe4, 0x83, 0x01, 0x00, 0x01, 0x38, 0xe0, 0x60, - 0x16, 0xd1, 0x32, 0x20, 0xe0, 0x60, 0xff, 0xf7, - 0xa3, 0xfe, 0x11, 0xe0, 0x00, 0x20, 0x00, 0xf0, - 0x01, 0xfb, 0x00, 0xf0, 0x2d, 0xfc, 0x01, 0x20, - 0x20, 0x70, 0x09, 0xe0, 0x00, 0x20, 0x00, 0xf0, - 0xf9, 0xfa, 0xff, 0xf7, 0x45, 0xff, 0x03, 0xe0, - 0x05, 0x21, 0x0b, 0x20, 0xe8, 0xf7, 0x46, 0xff, - 0x68, 0x69, 0x61, 0x68, 0xe7, 0xf7, 0xdd, 0xff, - 0x3c, 0x00, 0x20, 0x84, 0x01, 0x00, 0xb0, 0xbd, - 0x00, 0x00, 0x7c, 0xd9, 0x01, 0x00, 0x20, 0xf7, - 0x01, 0x00, 0xf7, 0xb5, 0x04, 0x1c, 0x17, 0x1c, - 0xff, 0xf7, 0x21, 0xfe, 0x20, 0x0a, 0xff, 0xf7, - 0x18, 0xff, 0x20, 0x06, 0x00, 0x0e, 0xff, 0xf7, - 0x62, 0xfe, 0xff, 0xf7, 0x18, 0xfe, 0xa1, 0x20, - 0xff, 0xf7, 0x5d, 0xfe, 0x00, 0x25, 0x16, 0xe0, - 0x00, 0x20, 0x00, 0x24, 0x40, 0x06, 0x06, 0x0e, - 0xff, 0xf7, 0x3c, 0x00, 0x5c, 0x84, 0x01, 0x00, - 0xd1, 0xfd, 0x00, 0x06, 0x00, 0x0e, 0x30, 0x43, - 0x01, 0x34, 0x08, 0x2c, 0xf5, 0xdb, 0x29, 0x1c, - 0x01, 0x9a, 0x01, 0x35, 0xbd, 0x42, 0x50, 0x54, - 0x01, 0xda, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0xff, 0xf7, 0xd4, 0xfd, 0xbd, 0x42, 0xe6, 0xdb, - 0xff, 0xf7, 0x1e, 0xfe, 0xfe, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0xff, 0xf7, 0x19, 0xfe, 0x09, 0x21, - 0x89, 0x03, 0x00, 0x22, 0x3c, 0x00, 0x98, 0x84, - 0x01, 0x00, 0x02, 0x20, 0xf0, 0xf7, 0xe9, 0xf9, - 0x80, 0xbd, 0x09, 0x21, 0x89, 0x03, 0x80, 0xb5, - 0x00, 0x22, 0x02, 0x20, 0xf0, 0xf7, 0xc9, 0xf9, - 0x01, 0x21, 0x09, 0x48, 0x89, 0x03, 0x81, 0x61, - 0x42, 0x68, 0x0a, 0x43, 0x42, 0x60, 0x82, 0x68, - 0x11, 0x43, 0x81, 0x60, 0x01, 0x21, 0x49, 0x04, - 0x81, 0x61, 0x82, 0x68, 0x8a, 0x43, 0x82, 0x60, - 0x42, 0x68, 0x11, 0x43, 0x41, 0x60, 0x3c, 0x00, - 0xd4, 0x84, 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0xf0, 0xb5, 0x04, 0x1c, - 0xc0, 0x68, 0x7b, 0x4e, 0x05, 0x68, 0x30, 0x78, - 0x85, 0xb0, 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, - 0x72, 0xd1, 0x00, 0x21, 0x20, 0x69, 0xf2, 0xf7, - 0x41, 0xf9, 0x76, 0x49, 0xf2, 0xf7, 0x24, 0xfc, - 0x00, 0x28, 0x69, 0xd0, 0x20, 0x1c, 0x20, 0x30, - 0x41, 0x7a, 0x08, 0x29, 0x02, 0xd1, 0x72, 0x4a, - 0x3c, 0x00, 0x10, 0x85, 0x01, 0x00, 0x00, 0x21, - 0x51, 0x61, 0x00, 0x7a, 0x22, 0x6a, 0x18, 0x21, - 0xf2, 0xf7, 0xc9, 0xfb, 0xe1, 0x6a, 0x37, 0x1c, - 0x40, 0x18, 0x6c, 0x49, 0x02, 0x90, 0x30, 0x78, - 0x0e, 0x1c, 0xff, 0x36, 0x0a, 0x1d, 0x01, 0x36, - 0x01, 0x28, 0x04, 0x92, 0x07, 0xd0, 0x65, 0x4a, - 0x02, 0x99, 0x1c, 0x32, 0x28, 0x1c, 0xed, 0xf7, - 0xe2, 0xfb, 0x00, 0x28, 0x6b, 0xd0, 0x32, 0x21, - 0x20, 0x69, 0x3c, 0x00, 0x4c, 0x85, 0x01, 0x00, - 0xf2, 0xf7, 0x16, 0xf9, 0x01, 0x90, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x11, 0xf9, 0x01, 0x1c, - 0x5e, 0x48, 0x01, 0x23, 0x01, 0x9a, 0xed, 0xf7, - 0x07, 0xfc, 0x00, 0x28, 0x04, 0xd1, 0x5b, 0x48, - 0xed, 0xf7, 0x92, 0xfa, 0x00, 0x21, 0xb9, 0x60, - 0x56, 0x48, 0x1c, 0x30, 0x81, 0x68, 0xea, 0xf7, - 0x19, 0xfc, 0x20, 0x1c, 0x14, 0x30, 0x03, 0x90, - 0x04, 0x99, 0xf2, 0xf7, 0x3c, 0x00, 0x88, 0x85, - 0x01, 0x00, 0xd5, 0xfb, 0x00, 0x28, 0x05, 0xd1, - 0x00, 0x22, 0xba, 0x60, 0x04, 0x98, 0x03, 0x99, - 0xf2, 0xf7, 0x6b, 0xfb, 0x4f, 0x49, 0x28, 0x89, - 0x09, 0x88, 0x88, 0x42, 0x03, 0xd0, 0x00, 0x22, - 0x4c, 0x49, 0xba, 0x60, 0x08, 0x80, 0x03, 0x21, - 0x20, 0x69, 0xf2, 0xf7, 0xe4, 0xf8, 0x00, 0x28, - 0x10, 0xd0, 0x46, 0x49, 0x82, 0x78, 0x20, 0x31, - 0x0b, 0x79, 0x94, 0x46, 0x9a, 0x42, 0x3c, 0x00, - 0xc4, 0x85, 0x01, 0x00, 0x09, 0xd0, 0x00, 0x22, - 0xba, 0x60, 0x62, 0x46, 0x0a, 0x71, 0x80, 0x78, - 0x01, 0x21, 0xf3, 0xf7, 0x05, 0xf9, 0x00, 0xe0, - 0x77, 0xe0, 0x06, 0x21, 0x20, 0x69, 0xf2, 0xf7, - 0xcd, 0xf8, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x78, - 0x3a, 0x48, 0x40, 0x30, 0x82, 0x88, 0x91, 0x42, - 0x02, 0xd0, 0x00, 0x22, 0xba, 0x60, 0x81, 0x80, - 0x2a, 0x21, 0x20, 0x69, 0xf2, 0xf7, 0xbe, 0xf8, - 0x3c, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x28, - 0x0d, 0xd0, 0x80, 0x78, 0xf1, 0x69, 0x33, 0x4a, - 0x81, 0x42, 0x08, 0xd0, 0x00, 0x21, 0xb9, 0x60, - 0xf0, 0x61, 0x10, 0x1c, 0xed, 0xf7, 0x09, 0xfb, - 0x2f, 0x48, 0xed, 0xf7, 0xfa, 0xfa, 0x38, 0x78, - 0x3b, 0x1c, 0x01, 0x28, 0x17, 0xd1, 0x02, 0x20, - 0x18, 0x70, 0x2a, 0x4f, 0x01, 0x23, 0x3b, 0x61, - 0x27, 0x4b, 0x03, 0xcd, 0x1c, 0x33, 0x08, 0x3d, - 0x02, 0x9a, 0x3c, 0x00, 0x3c, 0x86, 0x01, 0x00, - 0xed, 0xf7, 0xb0, 0xfa, 0x38, 0x1c, 0xed, 0xf7, - 0xd7, 0xf8, 0x32, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x01, 0x20, 0xe7, 0xf7, 0xc4, 0xfe, - 0x00, 0xf0, 0xf4, 0xf9, 0x20, 0x1c, 0xf9, 0xf7, - 0xd5, 0xfb, 0x07, 0x1c, 0x11, 0xd1, 0x20, 0x1c, - 0xf9, 0xf7, 0x88, 0xfb, 0x07, 0x1c, 0x2e, 0xd0, - 0x01, 0x23, 0x3b, 0x61, 0x68, 0x89, 0x40, 0x21, - 0xc8, 0x53, 0x73, 0x68, 0x3c, 0x00, 0x78, 0x86, - 0x01, 0x00, 0x00, 0x2b, 0x04, 0xd0, 0x21, 0x1c, - 0x00, 0x20, 0x04, 0x9a, 0xe7, 0xf7, 0xac, 0xfe, - 0x01, 0x23, 0xfb, 0x62, 0x20, 0x69, 0x32, 0x21, - 0xf2, 0xf7, 0x75, 0xf8, 0x05, 0x1c, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x70, 0xf8, 0x0e, 0x4e, - 0x01, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7, - 0xc0, 0xfb, 0x00, 0x28, 0x0e, 0xd1, 0x32, 0x21, - 0x20, 0x69, 0xf2, 0xf7, 0x64, 0xf8, 0x3c, 0x00, - 0xb4, 0x86, 0x01, 0x00, 0x05, 0x1c, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x5f, 0xf8, 0x01, 0x1c, - 0x3b, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7, - 0xd7, 0xfa, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x40, 0xf8, 0x01, 0x00, - 0x20, 0xf7, 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, - 0x80, 0x2a, 0x80, 0xb5, 0x06, 0xd0, 0x81, 0x2a, - 0x03, 0xd0, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7, - 0x3c, 0x00, 0xf0, 0x86, 0x01, 0x00, 0xd9, 0xfd, - 0x80, 0xbd, 0xff, 0xf7, 0x5c, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x81, 0x78, 0xff, 0x29, - 0x01, 0xd0, 0x00, 0x79, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x80, 0xf8, 0x01, 0x00, 0x30, 0xb5, - 0x89, 0xb0, 0x00, 0x93, 0x0e, 0x4d, 0x13, 0x1c, - 0x04, 0x1c, 0x2a, 0x1c, 0xec, 0xf7, 0x25, 0xfd, - 0x01, 0xa9, 0x06, 0xa8, 0xa2, 0x68, 0xec, 0xf7, - 0xce, 0xfe, 0x3c, 0x00, 0x2c, 0x87, 0x01, 0x00, - 0x01, 0xaa, 0x06, 0xa9, 0x28, 0x1c, 0x63, 0x6a, - 0xed, 0xf7, 0x44, 0xfa, 0x04, 0x1c, 0x01, 0x28, - 0x04, 0xd1, 0x28, 0x1c, 0xed, 0xf7, 0x2c, 0xf8, - 0x00, 0xf0, 0x4a, 0xf8, 0x20, 0x1c, 0x09, 0xb0, - 0x30, 0xbd, 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00, - 0x80, 0xb5, 0xed, 0xf7, 0x2b, 0xf8, 0x00, 0xf0, - 0x7d, 0xf8, 0x02, 0x48, 0xed, 0xf7, 0x02, 0xfa, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x87, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x28, 0x0b, 0xd1, 0x06, 0x48, 0xed, 0xf7, - 0xf8, 0xf9, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20, - 0xed, 0xf7, 0xeb, 0xfa, 0x03, 0x49, 0x03, 0x20, - 0xf9, 0xf7, 0x35, 0xfe, 0x80, 0xbd, 0x20, 0xf7, - 0x01, 0x00, 0x6d, 0x87, 0x01, 0x00, 0xb0, 0xb5, - 0x10, 0x4d, 0x04, 0x1c, 0x13, 0x1c, 0x2a, 0x1c, - 0x88, 0xb0, 0xec, 0xf7, 0x02, 0xfd, 0x3c, 0x00, - 0xa4, 0x87, 0x01, 0x00, 0x21, 0x1c, 0x0a, 0x31, - 0x06, 0x22, 0x28, 0x1d, 0xe7, 0xf7, 0xa4, 0xfe, - 0x69, 0x46, 0x05, 0xa8, 0x62, 0x69, 0xec, 0xf7, - 0x87, 0xfe, 0x28, 0x1c, 0xec, 0xf7, 0xee, 0xff, - 0x7f, 0x23, 0xdb, 0x43, 0x28, 0x1c, 0x6a, 0x46, - 0x05, 0xa9, 0xed, 0xf7, 0xf9, 0xf9, 0x00, 0xf0, - 0x1d, 0xf8, 0x08, 0xb0, 0xb0, 0xbd, 0x00, 0x00, - 0x20, 0xf7, 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0xe0, 0x87, 0x01, 0x00, 0x01, 0x78, - 0x00, 0x29, 0x06, 0xd0, 0x02, 0x29, 0x01, 0xd0, - 0x05, 0x29, 0x07, 0xd1, 0x03, 0x21, 0x01, 0x70, - 0x80, 0xbd, 0x01, 0x21, 0x01, 0x70, 0x00, 0xf0, - 0x2e, 0xfa, 0x80, 0xbd, 0x03, 0x21, 0x0b, 0x20, - 0xe8, 0xf7, 0x4f, 0xfd, 0x80, 0xbd, 0x7c, 0xd9, - 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x08, 0x78, - 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28, 0x01, 0xd0, - 0x05, 0x28, 0x3c, 0x00, 0x1c, 0x88, 0x01, 0x00, - 0x05, 0xd1, 0x04, 0x20, 0x08, 0x70, 0x80, 0xbd, - 0xff, 0xf7, 0x38, 0xfd, 0x80, 0xbd, 0x02, 0x21, - 0x0b, 0x20, 0xe8, 0xf7, 0x39, 0xfd, 0x80, 0xbd, - 0x7c, 0xd9, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x0b, 0x20, 0x04, 0x4a, 0xfa, 0xf7, 0x82, 0xff, - 0xf6, 0xf7, 0x86, 0xfd, 0x02, 0x49, 0x08, 0x61, - 0x80, 0xbd, 0x00, 0x00, 0xdd, 0x86, 0x01, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x88, - 0x01, 0x00, 0x0c, 0x48, 0x80, 0xb5, 0x01, 0x78, - 0x06, 0x29, 0x0e, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x03, - 0x07, 0x07, 0x07, 0x06, 0x00, 0x20, 0x00, 0xf0, - 0xc2, 0xf8, 0x80, 0xbd, 0x05, 0x21, 0x01, 0x70, - 0x80, 0xbd, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7, - 0x0e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x7c, 0xd9, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x88, 0x01, 0x00, 0x10, 0xb5, 0x0d, 0x4b, - 0x04, 0x1c, 0x18, 0x1c, 0x10, 0x30, 0x00, 0x2c, - 0x08, 0xd0, 0xdb, 0x88, 0x5b, 0x04, 0x5b, 0x0c, - 0x0b, 0x80, 0x80, 0x7b, 0x48, 0x80, 0x04, 0x20, - 0x10, 0x80, 0x08, 0xe0, 0xda, 0x88, 0x01, 0x24, - 0xe4, 0x03, 0x22, 0x40, 0x0c, 0x88, 0x22, 0x43, - 0xda, 0x80, 0x49, 0x88, 0x81, 0x73, 0x01, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x3c, 0x00, 0xd0, 0x88, 0x01, 0x00, 0x70, 0xb5, - 0x10, 0x4e, 0x02, 0x1c, 0x00, 0x23, 0xf0, 0x56, - 0x00, 0x2a, 0x02, 0xd0, 0x08, 0x70, 0x01, 0x24, - 0x15, 0xe0, 0x00, 0x23, 0xcd, 0x56, 0x85, 0x42, - 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0x28, 0x1c, - 0x00, 0xf0, 0x5f, 0xf9, 0x04, 0x1c, 0x0a, 0xd0, - 0x07, 0x48, 0x35, 0x70, 0x00, 0x68, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x21, 0x0a, 0x20, 0xf9, 0xf7, - 0x28, 0xfd, 0x3c, 0x00, 0x0c, 0x89, 0x01, 0x00, - 0x00, 0xf0, 0x16, 0xfa, 0x20, 0x1c, 0x70, 0xbd, - 0xf4, 0x6b, 0x01, 0x00, 0x3c, 0xd9, 0x01, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x00, 0x2b, 0x80, 0xb5, - 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x04, 0x22, - 0x04, 0x49, 0xe7, 0xf7, 0xe3, 0xfd, 0x02, 0xe0, - 0x00, 0x68, 0x00, 0xf0, 0xcf, 0xf9, 0x01, 0x20, - 0x80, 0xbd, 0x00, 0x00, 0xf4, 0x74, 0x01, 0x00, - 0x10, 0xb5, 0xff, 0xf7, 0x3c, 0x00, 0x48, 0x89, - 0x01, 0x00, 0x97, 0xfb, 0xff, 0xf7, 0x89, 0xfc, - 0x04, 0x1c, 0xff, 0xf7, 0xb8, 0xfb, 0xff, 0xf7, - 0x84, 0xfc, 0x00, 0x2c, 0x02, 0xd1, 0x01, 0x28, - 0x00, 0xd1, 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x20, 0x4f, 0x04, 0x1c, - 0x78, 0x78, 0x0e, 0x1c, 0x02, 0x28, 0x2e, 0xd0, - 0x1e, 0x4a, 0xf9, 0x68, 0x91, 0x61, 0x14, 0x23, - 0x1d, 0x49, 0x58, 0x43, 0x40, 0x18, 0x3c, 0x00, - 0x84, 0x89, 0x01, 0x00, 0x41, 0x7b, 0xb8, 0x78, - 0xf8, 0xf7, 0x14, 0xfe, 0x00, 0xf0, 0x8a, 0xf9, - 0x00, 0x25, 0x04, 0xe0, 0x00, 0x21, 0xb8, 0x78, - 0xf8, 0xf7, 0x0c, 0xfe, 0x01, 0x35, 0x78, 0x78, - 0x14, 0x23, 0x14, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x7a, 0xa8, 0x42, 0xf2, 0xdc, 0x00, 0x25, - 0x08, 0xe0, 0x00, 0x21, 0xb8, 0x78, 0xf8, 0xf7, - 0xfd, 0xfd, 0x0f, 0x48, 0x00, 0x68, 0x20, 0x70, - 0x3c, 0x00, 0xc0, 0x89, 0x01, 0x00, 0x01, 0x34, - 0x01, 0x35, 0xb5, 0x42, 0xf4, 0xdb, 0x09, 0x4a, - 0xf8, 0x68, 0x50, 0x61, 0x78, 0x78, 0x02, 0x28, - 0x06, 0xd1, 0xb8, 0x68, 0x32, 0x1c, 0x21, 0x1c, - 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7, 0x25, 0xfd, - 0xb8, 0x68, 0x80, 0x19, 0xb8, 0x60, 0xf8, 0xbd, - 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x64, 0x8d, 0x01, 0x00, 0x30, 0x20, - 0x07, 0x00, 0x3c, 0x00, 0xfc, 0x89, 0x01, 0x00, - 0x70, 0xb5, 0x06, 0x1c, 0x0c, 0x4d, 0x00, 0x24, - 0x2c, 0x70, 0xff, 0xf7, 0x39, 0xfc, 0x0a, 0x48, - 0x18, 0x21, 0x1c, 0x30, 0xac, 0x60, 0xe7, 0xf7, - 0x43, 0xfd, 0x08, 0x48, 0x44, 0x61, 0xf9, 0xf7, - 0x63, 0xf9, 0x00, 0x2e, 0x06, 0xd1, 0x06, 0x48, - 0x29, 0x69, 0xf6, 0xf7, 0xa7, 0xfc, 0x00, 0x20, - 0xec, 0xf7, 0xb0, 0xfe, 0x70, 0xbd, 0x00, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x38, 0x8a, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x30, 0xb5, 0x12, 0x4c, 0x85, 0xb0, - 0x20, 0x68, 0x00, 0x28, 0x1c, 0xd0, 0x0f, 0x48, - 0x14, 0x38, 0x80, 0x68, 0x00, 0x28, 0x01, 0xd1, - 0xff, 0xf7, 0xc1, 0xfb, 0x20, 0x68, 0x00, 0x23, - 0x00, 0x68, 0x01, 0xaa, 0x04, 0x30, 0x01, 0x21, - 0xec, 0xf7, 0xd1, 0xfd, 0x08, 0x49, 0x08, 0x4a, - 0x08, 0x31, 0x0c, 0x31, 0x00, 0x92, 0x3c, 0x00, - 0x74, 0x8a, 0x01, 0x00, 0x03, 0xc9, 0x00, 0xab, - 0x45, 0x18, 0x99, 0x7b, 0x01, 0x9a, 0x20, 0x68, - 0x2b, 0x1c, 0xf2, 0xf7, 0x2b, 0xfe, 0x05, 0xb0, - 0x30, 0xbd, 0x00, 0x00, 0x90, 0xd9, 0x01, 0x00, - 0x29, 0x81, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x14, 0x23, 0x60, 0x70, 0x58, 0x43, 0x12, 0x4b, - 0xc1, 0x18, 0x8a, 0x88, 0xe2, 0x80, 0x18, 0x58, - 0xe0, 0x60, 0x08, 0x7a, 0xa0, 0x70, 0xff, 0x28, - 0x3c, 0x00, 0xb0, 0x8a, 0x01, 0x00, 0x12, 0xd0, - 0x00, 0x22, 0x08, 0x21, 0x0d, 0x4b, 0xf8, 0xf7, - 0x22, 0xfd, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68, - 0xef, 0xf7, 0xbd, 0xfe, 0x0a, 0x49, 0xe0, 0x68, - 0x48, 0x61, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60, - 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x60, 0x78, - 0x02, 0x28, 0x01, 0xd1, 0xff, 0xf7, 0xdf, 0xfc, - 0x10, 0xbd, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x8a, 0x01, 0x00, - 0xb8, 0x0b, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, - 0xfe, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x06, 0x21, - 0x15, 0x4b, 0x41, 0x43, 0x58, 0x5c, 0x82, 0x06, - 0x14, 0x48, 0x92, 0x0e, 0x42, 0x71, 0xc9, 0x18, - 0x4a, 0x78, 0xd2, 0x06, 0xd2, 0x0e, 0x02, 0x71, - 0x42, 0x78, 0x0c, 0x23, 0x1a, 0x43, 0x42, 0x70, - 0x42, 0x78, 0x8b, 0x78, 0x92, 0x08, 0x92, 0x00, - 0x9b, 0x07, 0x9b, 0x0f, 0x3c, 0x00, 0x28, 0x8b, - 0x01, 0x00, 0x1a, 0x43, 0x42, 0x70, 0x02, 0x78, - 0xc0, 0x23, 0x9a, 0x43, 0x40, 0x32, 0x02, 0x70, - 0x02, 0x78, 0x38, 0x23, 0x1a, 0x43, 0x02, 0x70, - 0x02, 0x78, 0xc9, 0x78, 0x04, 0x23, 0x9a, 0x43, - 0x89, 0x00, 0x19, 0x40, 0x11, 0x43, 0x01, 0x70, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0xd8, 0x8d, - 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x8f, 0xb5, - 0x00, 0x20, 0x02, 0x90, 0x03, 0x90, 0x3c, 0x00, - 0x64, 0x8b, 0x01, 0x00, 0x07, 0x48, 0x02, 0xaa, - 0x03, 0xa9, 0x00, 0x91, 0x01, 0x92, 0x43, 0x89, - 0x02, 0x89, 0x03, 0xc8, 0xff, 0xf7, 0xd4, 0xfb, - 0x03, 0x98, 0x02, 0x99, 0xff, 0xf7, 0x04, 0xfc, - 0x8f, 0xbd, 0x00, 0x00, 0x04, 0x8e, 0x01, 0x00, - 0x08, 0x49, 0x4a, 0x78, 0x00, 0x2a, 0x03, 0xd1, - 0x88, 0x80, 0x00, 0x20, 0x88, 0x60, 0x70, 0x47, - 0x14, 0x23, 0x5a, 0x43, 0x04, 0x4b, 0xd2, 0x18, - 0x3c, 0x00, 0xa0, 0x8b, 0x01, 0x00, 0xd2, 0x88, - 0x42, 0x43, 0xc8, 0x88, 0x42, 0x43, 0x8a, 0x60, - 0x70, 0x47, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d, - 0x01, 0x00, 0xf8, 0xb5, 0x25, 0x4e, 0x04, 0x1c, - 0x30, 0x7a, 0x40, 0x08, 0x40, 0x00, 0x30, 0x72, - 0xb0, 0x7a, 0x00, 0x20, 0xb0, 0x72, 0x01, 0x27, - 0x01, 0x2c, 0x20, 0x4d, 0x01, 0xd0, 0xfc, 0x42, - 0x13, 0xd1, 0x30, 0x7b, 0x38, 0x43, 0x30, 0x73, - 0x00, 0x22, 0x3c, 0x00, 0xdc, 0x8b, 0x01, 0x00, - 0x21, 0x1c, 0x00, 0x20, 0xff, 0xf7, 0x6e, 0xfb, - 0x63, 0x1c, 0x01, 0xd1, 0x3f, 0x21, 0xe9, 0x73, - 0xb1, 0x7a, 0xa0, 0x22, 0x11, 0x43, 0xb1, 0x72, - 0x31, 0x7a, 0x39, 0x43, 0x31, 0x72, 0xf8, 0xbd, - 0x30, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x30, 0x73, - 0x01, 0x22, 0x21, 0x1c, 0x01, 0x20, 0xff, 0xf7, - 0x59, 0xfb, 0x01, 0x20, 0x00, 0x21, 0xe9, 0x73, - 0xb1, 0x7a, 0x02, 0x22, 0x3c, 0x00, 0x18, 0x8c, - 0x01, 0x00, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a, - 0x04, 0x22, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a, - 0x30, 0x22, 0x11, 0x43, 0xb1, 0x72, 0x31, 0x7a, - 0x39, 0x43, 0x31, 0x72, 0x08, 0x49, 0x4a, 0x68, - 0x80, 0x23, 0x9a, 0x43, 0x4a, 0x60, 0x0a, 0x68, - 0x1a, 0x43, 0x0a, 0x60, 0x31, 0x7b, 0x39, 0x43, - 0x31, 0x73, 0xd7, 0xe7, 0x00, 0x00, 0x88, 0x00, - 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0x3c, 0x00, - 0x54, 0x8c, 0x01, 0x00, 0x6c, 0x00, 0x07, 0x00, - 0xb0, 0xb5, 0x0e, 0x4d, 0x0e, 0x48, 0x29, 0x69, - 0xf6, 0xf7, 0x9e, 0xfb, 0x0d, 0x48, 0xec, 0xf7, - 0x93, 0xfd, 0x0d, 0x48, 0x09, 0x4c, 0x00, 0x88, - 0x1c, 0x34, 0xa0, 0x82, 0xf1, 0xf7, 0x5a, 0xff, - 0x20, 0x61, 0xfa, 0xf7, 0x97, 0xf8, 0x02, 0x1c, - 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xec, 0xf7, - 0x8b, 0xff, 0x32, 0x20, 0xe8, 0x60, 0xff, 0xf7, - 0x3c, 0x00, 0x90, 0x8c, 0x01, 0x00, 0xa5, 0xfa, - 0xb0, 0xbd, 0x7c, 0xd9, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0xdd, 0x84, 0x01, 0x00, 0x20, 0xf7, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x68, 0x78, - 0x00, 0x28, 0x0e, 0xd0, 0x14, 0x23, 0x08, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x44, 0x7a, 0x06, 0xe0, - 0xa8, 0x68, 0xe0, 0x40, 0x01, 0x06, 0x09, 0x0e, - 0xa8, 0x78, 0xf8, 0xf7, 0x76, 0xfc, 0x08, 0x3c, - 0xf6, 0xd5, 0x3c, 0x00, 0xcc, 0x8c, 0x01, 0x00, - 0xb0, 0xbd, 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, - 0x64, 0x8d, 0x01, 0x00, 0x01, 0x1c, 0x14, 0x48, - 0xb0, 0xb5, 0x01, 0x60, 0x13, 0x48, 0x02, 0x7f, - 0x02, 0x23, 0x9a, 0x43, 0x02, 0x77, 0x02, 0x7f, - 0x01, 0x24, 0x22, 0x43, 0x02, 0x77, 0x10, 0x4d, - 0x00, 0x29, 0x0c, 0xd0, 0x01, 0x22, 0x00, 0x21, - 0x03, 0x20, 0xef, 0xf7, 0x9f, 0xfd, 0x0d, 0x49, - 0x48, 0x7c, 0xa0, 0x43, 0x3c, 0x00, 0x08, 0x8d, - 0x01, 0x00, 0x48, 0x74, 0x68, 0x7a, 0x20, 0x43, - 0x68, 0x72, 0xb0, 0xbd, 0x01, 0x7f, 0x21, 0x43, - 0x01, 0x77, 0x68, 0x7a, 0x40, 0x08, 0x40, 0x00, - 0x68, 0x72, 0x01, 0x22, 0x00, 0x21, 0x03, 0x20, - 0xef, 0xf7, 0xb1, 0xfd, 0xb0, 0xbd, 0xf4, 0x74, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x88, 0x00, - 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x21, 0x1c, 0x00, 0x20, 0x3c, 0x00, - 0x44, 0x8d, 0x01, 0x00, 0xf9, 0xf7, 0x56, 0xfb, - 0x05, 0x48, 0x00, 0x23, 0xc0, 0x56, 0x01, 0x28, - 0x03, 0xdd, 0x21, 0x1c, 0x00, 0x20, 0xf9, 0xf7, - 0x19, 0xfb, 0x10, 0xbd, 0x65, 0x1a, 0x00, 0x00, - 0xf4, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x08, 0x01, 0x01, 0x00, 0x02, 0x18, 0x04, 0xff, - 0x82, 0xe8, 0xd7, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, - 0x3c, 0x00, 0x80, 0x8d, 0x01, 0x00, 0x00, 0x18, - 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x01, 0x00, 0xff, 0x10, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x20, 0x00, 0x01, 0x00, 0x02, 0x10, - 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0c, - 0x0d, 0x0e, 0x3c, 0x00, 0xbc, 0x8d, 0x01, 0x00, - 0xff, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1b, - 0x1c, 0x1d, 0xff, 0x1a, 0x11, 0x13, 0x12, 0x0f, - 0x10, 0xff, 0x02, 0x00, 0xff, 0x01, 0x03, 0x09, - 0x0a, 0x0b, 0x00, 0x00, 0x30, 0x0d, 0x02, 0x00, - 0x00, 0x00, 0x28, 0x0e, 0x03, 0x00, 0x00, 0x00, - 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0d, - 0x02, 0x01, 0x00, 0x00, 0x1e, 0x0c, 0x00, 0x01, - 0x00, 0x00, 0x23, 0x0d, 0x3c, 0x00, 0xf8, 0x8d, - 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x1d, 0x0d, - 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, - 0xfb, 0x6d, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x8e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x8e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x8e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x8e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x8f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x8f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x8f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x8f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x90, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x90, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x90, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x91, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x91, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x91, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x92, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x92, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x92, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x92, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x93, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x93, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x93, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x94, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x94, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x94, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x95, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x95, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x95, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x95, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x96, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x96, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x96, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x97, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x97, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x97, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x98, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x98, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x98, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x98, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x99, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x99, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x99, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x9a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x9a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x9a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x9a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x9b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x9b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x9b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x9c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x9c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x9c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x9c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x9c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x9d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x9d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x9d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x9d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x9e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x9e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x9e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x9e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x9f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x9f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x9f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x9f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xa0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xa0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xa0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xa1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xa1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xa1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xa2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xa2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xa2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xa2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xa3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xa3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xa3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xa3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xa4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xa4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xa4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xa5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xa5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xa5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xa5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xa6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xa6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xa6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xa6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xa7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xa7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xa7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xa7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xa7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xa8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xa8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xa8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xa9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xa9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xa9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xa9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xaa, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xaa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xaa, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xaa, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xab, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xab, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xab, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xab, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xab, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xac, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xac, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xac, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xac, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xad, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xad, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xad, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xad, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xae, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xae, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xae, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xae, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xaf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xaf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xaf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xaf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xaf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xb0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xb0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xb0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xb1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xb1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xb1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xb2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xb2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xb2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xb3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xb3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xb3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xb4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xb4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xb4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xb4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xb5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xb5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xb5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xb5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xb6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xb6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xb6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xb6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xb6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xb7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xb7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xb7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xb7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xb8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xb8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xb8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xb9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xb9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xb9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xba, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xba, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xba, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xba, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xba, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xbb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xbb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xbb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xbb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xbc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xbc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xbc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xbc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xbd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xbd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xbd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xbd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xbe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xbe, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xbe, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xbf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xbf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xbf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xc0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xc0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xc0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xc1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xc1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xc1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xc2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xc2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xc2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xc3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xc3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xc3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xc4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xc4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xc4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xc5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xc5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xc5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xc5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xc6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xc6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xc6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xc7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xc7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xc7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xc8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xc8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xc8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xc9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xc9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xc9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xc9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xca, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xca, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xca, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xca, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xcb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xcb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xcb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xcc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xcc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xcc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xcc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xcd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xcd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xcd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xce, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xce, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xce, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xce, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xcf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xcf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xcf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xcf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xd0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xd0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xd0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xd1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xd1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xd1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xd2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xd2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xd2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xd2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xd3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xd3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xd3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xd3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xd4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xd4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xd4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xd4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xd5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xd5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xd5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xd5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xd6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xd6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xd6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xd6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xd7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xd7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xd7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xd7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xd8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xd8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xd8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xd8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xd9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xd9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xd9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xd9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xda, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xda, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xda, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xda, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xdb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xdb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xdb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xdb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xdc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xdc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xdc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xdd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xdd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xdd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xdd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xde, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xde, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xde, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xde, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xdf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xdf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xdf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xdf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xe0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xe0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xe0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xe1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xe1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xe1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xe1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xe2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xe2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xe2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xe2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xe3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xe3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xe3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xe3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xe4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xe4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xe4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xe5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xe5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xe5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xe5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xe6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xe6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xe6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xe7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xe7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xe7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xe7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xe8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xe8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xe8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xe9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xe9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xe9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xe9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xea, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xea, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xea, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xea, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xeb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xeb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xeb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xec, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xec, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xec, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xed, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xed, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xed, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xed, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xee, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xee, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xee, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xee, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xef, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xef, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xef, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xef, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xf0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xf0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xf0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xf1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xf1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xf1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xf1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xf2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xf2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xf2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xf2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xf3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xf3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xf3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xf4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xf4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xf4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xf5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xf5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xf5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xf6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xf6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xf6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xf6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xf7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xf7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xf7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xf8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xf8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xf8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xf9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xf9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xf9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xfa, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xfa, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xfa, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xfb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xfb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xfb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xfb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xfc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xfc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xfc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xfd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xfd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xfd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xfd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xfe, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xfe, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xfe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x68, 0xff, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x10, 0x04, 0x00, 0x70, 0xb5, 0x2b, 0x48, - 0x06, 0x21, 0x81, 0x75, 0xc1, 0x75, 0x01, 0x7e, - 0x49, 0x08, 0x49, 0x00, 0x01, 0x76, 0x01, 0x7e, - 0x02, 0x22, 0x91, 0x43, 0x01, 0x76, 0x26, 0x49, - 0x0b, 0x78, 0x5b, 0x08, 0x5b, 0x00, 0x0b, 0x70, - 0x04, 0x23, 0x8b, 0x70, 0x0c, 0x23, 0x43, 0x76, - 0x20, 0x23, 0x03, 0x75, 0x1a, 0x24, 0x44, 0x75, - 0x24, 0x24, 0x84, 0x76, 0x10, 0x24, 0xc4, 0x76, - 0x3c, 0x00, 0x3c, 0x10, 0x04, 0x00, 0x2a, 0x25, - 0x4d, 0x70, 0x05, 0x7a, 0x30, 0x26, 0xb5, 0x43, - 0x20, 0x35, 0x05, 0x72, 0x85, 0x7a, 0x6d, 0x08, - 0x6d, 0x00, 0x85, 0x72, 0x85, 0x7a, 0x95, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0x04, 0x26, 0x35, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0x08, 0x26, 0x35, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0xa5, 0x43, 0x85, 0x72, - 0x05, 0x7b, 0x2c, 0x43, 0x04, 0x73, 0x04, 0x7b, - 0x1c, 0x43, 0x3c, 0x00, 0x78, 0x10, 0x04, 0x00, - 0x04, 0x73, 0x04, 0x7b, 0x40, 0x25, 0x2c, 0x43, - 0x04, 0x73, 0x84, 0x7a, 0x23, 0x43, 0x83, 0x72, - 0x83, 0x7a, 0xab, 0x43, 0x83, 0x72, 0x03, 0x7b, - 0x80, 0x24, 0x23, 0x43, 0x03, 0x73, 0x08, 0x78, - 0x90, 0x43, 0x08, 0x70, 0x08, 0x78, 0x01, 0x22, - 0x10, 0x43, 0x08, 0x70, 0x08, 0x78, 0x04, 0x22, - 0x90, 0x43, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x00, - 0x0c, 0x80, 0x07, 0x00, 0x3c, 0x00, 0xb4, 0x10, - 0x04, 0x00, 0x80, 0x80, 0x07, 0x00, 0x01, 0x49, - 0x04, 0x20, 0x48, 0x73, 0x70, 0x47, 0x40, 0x80, - 0x07, 0x00, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x08, 0x80, 0x00, 0xf0, 0x0a, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x67, 0xfb, - 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x49, 0x18, 0x20, - 0xc1, 0xf7, 0x3b, 0xfa, 0x09, 0x49, 0x3c, 0x00, - 0xf0, 0x10, 0x04, 0x00, 0x02, 0x20, 0xc1, 0xf7, - 0x37, 0xfa, 0x08, 0x49, 0x1f, 0x20, 0xc1, 0xf7, - 0x33, 0xfa, 0x07, 0x49, 0x1c, 0x20, 0xc1, 0xf7, - 0x2f, 0xfa, 0x06, 0x49, 0x03, 0x20, 0xc1, 0xf7, - 0x2b, 0xfa, 0x80, 0xbd, 0x99, 0x2a, 0x00, 0x00, - 0x41, 0x25, 0x00, 0x00, 0x55, 0x25, 0x00, 0x00, - 0x5d, 0x25, 0x00, 0x00, 0x39, 0x25, 0x00, 0x00, - 0x80, 0xb5, 0xbf, 0xf7, 0x91, 0xfd, 0x80, 0xbd, - 0x3c, 0x00, 0x2c, 0x11, 0x04, 0x00, 0x80, 0xb5, - 0x05, 0x4a, 0x05, 0x49, 0x0a, 0x20, 0xbf, 0xf7, - 0x4e, 0xff, 0x01, 0x20, 0x04, 0x49, 0x80, 0x02, - 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd, 0xb4, 0x74, - 0x01, 0x00, 0xb1, 0x64, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x91, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0x05, 0x4a, 0x05, 0x49, - 0x1b, 0x20, 0xbf, 0xf7, 0x38, 0xff, 0x01, 0x20, - 0x04, 0x49, 0x3c, 0x00, 0x68, 0x11, 0x04, 0x00, - 0xc0, 0x06, 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd, - 0xb8, 0x74, 0x01, 0x00, 0x2d, 0x6e, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x04, 0x48, - 0x00, 0xf0, 0x80, 0xfe, 0x03, 0x49, 0x00, 0x20, - 0x48, 0x60, 0x88, 0x60, 0x80, 0xbd, 0x00, 0x00, - 0x41, 0x4b, 0x00, 0x00, 0xbc, 0x74, 0x01, 0x00, - 0x80, 0xb5, 0xc5, 0xf7, 0xd5, 0xfe, 0xce, 0xf7, - 0xd9, 0xf8, 0x03, 0x49, 0x3c, 0x00, 0xa4, 0x11, - 0x04, 0x00, 0x08, 0x60, 0x03, 0x49, 0x0a, 0x20, - 0xd1, 0xf7, 0xef, 0xf8, 0x80, 0xbd, 0xbc, 0x74, - 0x01, 0x00, 0x49, 0x6e, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x22, 0x20, 0x21, 0x06, 0x20, 0xc8, 0xf7, - 0x56, 0xfc, 0xbf, 0xf7, 0x70, 0xfe, 0x03, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x20, 0x21, 0x02, 0x48, - 0xbf, 0xf7, 0x63, 0xf9, 0x80, 0xbd, 0xcc, 0x5c, - 0x01, 0x00, 0x64, 0x6d, 0x01, 0x00, 0x3c, 0x00, - 0xe0, 0x11, 0x04, 0x00, 0x08, 0x48, 0x80, 0xb5, - 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48, - 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21, 0xbf, 0xf7, - 0xf3, 0xf8, 0x04, 0x4a, 0x04, 0x49, 0x03, 0x20, - 0xbf, 0xf7, 0xac, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x50, 0x6d, 0x01, 0x00, 0x89, 0x98, 0x00, 0x00, - 0x91, 0x98, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x03, 0xf8, 0x00, 0xf0, 0x19, 0xf8, 0x80, 0xbd, - 0x3c, 0x00, 0x1c, 0x12, 0x04, 0x00, 0x10, 0xb5, - 0x09, 0x4c, 0x60, 0x21, 0x20, 0x1c, 0xbf, 0xf7, - 0x3a, 0xf9, 0x00, 0x20, 0xc0, 0x43, 0xa0, 0x60, - 0x20, 0x60, 0xff, 0x20, 0x02, 0x30, 0xe0, 0x84, - 0x20, 0x22, 0x20, 0x1c, 0x40, 0x30, 0x02, 0x49, - 0xbf, 0xf7, 0x5b, 0xf9, 0x10, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x20, - 0x0a, 0x49, 0xc0, 0x43, 0x88, 0x60, 0x09, 0x4b, - 0x0a, 0x49, 0x3c, 0x00, 0x58, 0x12, 0x04, 0x00, - 0x00, 0x20, 0x82, 0x00, 0x01, 0x30, 0x00, 0x06, - 0x00, 0x0e, 0x20, 0x28, 0x99, 0x50, 0xf8, 0xd3, - 0x06, 0x49, 0x04, 0x4a, 0x08, 0x1c, 0x10, 0x30, - 0x08, 0x3a, 0x03, 0xc2, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00, - 0x75, 0x75, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, - 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x0c, 0x38, 0x3c, 0x00, 0x94, 0x12, - 0x04, 0x00, 0x01, 0x21, 0x41, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x03, 0x48, 0x00, 0x21, 0x00, 0x22, - 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0, 0x70, 0x47, - 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x04, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x48, 0x61, 0x02, 0x48, - 0x40, 0x21, 0x1c, 0x30, 0xbf, 0xf7, 0xe9, 0xf8, - 0x80, 0xbd, 0xfc, 0x5a, 0x01, 0x00, 0x3c, 0x00, - 0xd0, 0x12, 0x04, 0x00, 0x80, 0xb5, 0xce, 0xf7, - 0x3f, 0xf8, 0x03, 0x49, 0x88, 0x61, 0x03, 0x49, - 0x03, 0x20, 0xd1, 0xf7, 0x55, 0xf8, 0x80, 0xbd, - 0xfc, 0x5a, 0x01, 0x00, 0x0d, 0x17, 0x01, 0x00, - 0x80, 0xb5, 0xc0, 0xf7, 0xa5, 0xf9, 0x80, 0xbd, - 0xfe, 0xb5, 0x6c, 0x49, 0x00, 0x20, 0x00, 0x90, - 0xc8, 0x78, 0x6b, 0x4c, 0x6b, 0x4f, 0x43, 0x07, - 0xc0, 0x06, 0xc0, 0x17, 0xdb, 0x0e, 0xe3, 0x58, - 0x3c, 0x00, 0x0c, 0x13, 0x04, 0x00, 0x01, 0x30, - 0x38, 0x62, 0x3b, 0x61, 0x08, 0x1c, 0x80, 0x78, - 0x66, 0x4e, 0x03, 0x22, 0x41, 0x07, 0xa0, 0x36, - 0x02, 0x96, 0x49, 0x0f, 0x31, 0x72, 0x89, 0x00, - 0x61, 0x58, 0x3c, 0x1c, 0x61, 0x61, 0x01, 0x91, - 0xc0, 0x06, 0xc0, 0x0f, 0x78, 0x62, 0x20, 0x1c, - 0x00, 0x27, 0x87, 0x61, 0x00, 0x20, 0x21, 0x1c, - 0xc8, 0x61, 0x59, 0x48, 0x59, 0x49, 0x00, 0x78, - 0x09, 0x79, 0x3c, 0x00, 0x48, 0x13, 0x04, 0x00, - 0x5a, 0x4c, 0x4e, 0x07, 0x76, 0x0f, 0x71, 0x1c, - 0x8c, 0x46, 0xb1, 0x00, 0x8e, 0x46, 0x56, 0x49, - 0x80, 0x31, 0x00, 0x28, 0x24, 0xd0, 0x52, 0x4f, - 0x01, 0x28, 0x7f, 0x78, 0x1a, 0xd0, 0x02, 0x28, - 0x71, 0xd1, 0x4f, 0x48, 0x00, 0x2f, 0x0c, 0xd0, - 0x01, 0x2f, 0x6c, 0xd1, 0x40, 0x79, 0x4d, 0x4d, - 0x40, 0x07, 0x40, 0x0f, 0x82, 0x00, 0xaa, 0x58, - 0x4b, 0x4d, 0x01, 0x30, 0x3c, 0x00, 0x84, 0x13, - 0x04, 0x00, 0xea, 0x61, 0xa0, 0x73, 0x04, 0x22, - 0x4b, 0x48, 0x48, 0x4d, 0xc8, 0x61, 0x4a, 0x48, - 0x00, 0x2f, 0x00, 0xd0, 0x4a, 0x48, 0x2f, 0x1c, - 0x11, 0xe0, 0x42, 0x48, 0x00, 0x2f, 0x55, 0xd1, - 0x07, 0x70, 0x02, 0x27, 0x47, 0x70, 0x3f, 0x48, - 0x40, 0x78, 0x00, 0x28, 0x10, 0xd0, 0x01, 0x28, - 0x01, 0xd0, 0x02, 0x28, 0x4a, 0xd1, 0x3f, 0x48, - 0x3d, 0x4f, 0xc8, 0x61, 0x3f, 0x48, 0x3c, 0x00, - 0xc0, 0x13, 0x04, 0x00, 0x88, 0x61, 0x3a, 0x49, - 0x70, 0x46, 0x08, 0x58, 0x35, 0x1c, 0xb8, 0x61, - 0x60, 0x46, 0x60, 0x73, 0x04, 0xe0, 0x3c, 0x48, - 0x02, 0x22, 0x88, 0x61, 0x3b, 0x48, 0xc8, 0x61, - 0x00, 0x20, 0x32, 0x49, 0x06, 0xe0, 0x0e, 0x18, - 0xb6, 0x78, 0x76, 0x07, 0x76, 0x0f, 0x04, 0x2e, - 0x2f, 0xd8, 0x01, 0x30, 0x90, 0x42, 0xf6, 0xd3, - 0xc8, 0x79, 0x2e, 0x4f, 0xc0, 0x07, 0xc0, 0x0f, - 0x3c, 0x00, 0xfc, 0x13, 0x04, 0x00, 0xf8, 0x60, - 0x33, 0x48, 0x41, 0x68, 0x19, 0x43, 0x41, 0x60, - 0x81, 0x68, 0x19, 0x43, 0x81, 0x60, 0x01, 0x9a, - 0xb9, 0x69, 0x8c, 0x46, 0x11, 0x43, 0xfa, 0x69, - 0x86, 0x68, 0x11, 0x43, 0x8e, 0x43, 0x86, 0x60, - 0x46, 0x68, 0x31, 0x43, 0x41, 0x60, 0x01, 0x99, - 0x0b, 0x43, 0x18, 0x1c, 0x61, 0x46, 0x08, 0x43, - 0x10, 0x43, 0x01, 0x1c, 0x00, 0x22, 0x02, 0x20, - 0xc7, 0xf7, 0x3c, 0x00, 0x38, 0x14, 0x04, 0x00, - 0x03, 0xfa, 0x1e, 0x4e, 0x40, 0x3e, 0x70, 0x78, - 0xc0, 0x08, 0xc0, 0x00, 0x28, 0x43, 0x70, 0x70, - 0x70, 0x1c, 0x01, 0x78, 0x00, 0xe0, 0x29, 0xe0, - 0x08, 0x25, 0xa9, 0x43, 0x01, 0x70, 0x01, 0x20, - 0xc0, 0x43, 0xb0, 0x80, 0x00, 0x21, 0x01, 0x20, - 0xcf, 0xf7, 0x6c, 0xfc, 0x30, 0x1c, 0x80, 0x30, - 0x81, 0x78, 0x09, 0x09, 0x09, 0x01, 0x81, 0x70, - 0x0f, 0x21, 0x01, 0x70, 0x3c, 0x00, 0x74, 0x14, - 0x04, 0x00, 0x16, 0x4a, 0x69, 0x04, 0x11, 0x60, - 0x51, 0x60, 0x02, 0x9e, 0x10, 0x21, 0x32, 0x7a, - 0x7b, 0x6a, 0x00, 0x2b, 0x00, 0xd1, 0x00, 0x21, - 0x11, 0x43, 0x21, 0x73, 0x81, 0x78, 0x29, 0x43, - 0x81, 0x70, 0xe0, 0x78, 0x01, 0x21, 0x08, 0x43, - 0xe0, 0x70, 0xd2, 0xf7, 0xf2, 0xf9, 0x01, 0x20, - 0x00, 0x90, 0x00, 0x98, 0xfe, 0xbd, 0xc0, 0x57, - 0x01, 0x00, 0x6c, 0x43, 0x01, 0x00, 0x3c, 0x00, - 0xb0, 0x14, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x40, 0x90, 0x07, 0x00, 0xc9, 0x1d, 0x00, 0x00, - 0x81, 0x1d, 0x00, 0x00, 0xa5, 0x1d, 0x00, 0x00, - 0x99, 0x1d, 0x00, 0x00, 0xf1, 0x1d, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x03, 0x49, 0x00, 0x20, 0x88, 0x62, 0x08, 0x70, - 0x48, 0x70, 0x08, 0x71, 0x08, 0x62, 0x70, 0x47, - 0xac, 0x7e, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x3c, 0x00, 0xec, 0x14, 0x04, 0x00, 0x00, 0x20, - 0xcd, 0xf7, 0x69, 0xff, 0x80, 0xbd, 0xb0, 0xb5, - 0x0f, 0x48, 0xc0, 0xf7, 0x18, 0xfc, 0x0e, 0x4d, - 0x03, 0x20, 0x28, 0x70, 0x0d, 0x49, 0x0d, 0x48, - 0x0c, 0x39, 0x48, 0x60, 0x0d, 0x48, 0x0a, 0x4c, - 0x88, 0x60, 0x40, 0x21, 0x18, 0x34, 0x20, 0x1c, - 0xbe, 0xf7, 0xc1, 0xff, 0xff, 0x21, 0x68, 0x68, - 0x09, 0x06, 0x08, 0x43, 0x20, 0x60, 0xff, 0x21, - 0x06, 0x22, 0x3c, 0x00, 0x28, 0x15, 0x04, 0x00, - 0x20, 0x1d, 0xbf, 0xf7, 0x79, 0xf8, 0x01, 0x20, - 0xe0, 0x60, 0xb0, 0xbd, 0xc0, 0xa8, 0x13, 0x0a, - 0x20, 0x6e, 0x01, 0x00, 0xc0, 0xa8, 0x13, 0x01, - 0xff, 0xff, 0xff, 0x00, 0x80, 0xb5, 0x02, 0x49, - 0x01, 0x20, 0xc8, 0xf7, 0x45, 0xff, 0x80, 0xbd, - 0x9d, 0x1c, 0x00, 0x00, 0x98, 0xb5, 0x0c, 0x4c, - 0x00, 0x20, 0x60, 0x60, 0xe0, 0x60, 0x0b, 0x4b, - 0x0b, 0x49, 0x82, 0x00, 0x3c, 0x00, 0x64, 0x15, - 0x04, 0x00, 0x01, 0x30, 0x20, 0x28, 0x99, 0x50, - 0xfa, 0xdb, 0x6a, 0x46, 0x09, 0x49, 0x05, 0x20, - 0xbf, 0xf7, 0x2f, 0xfd, 0x00, 0x20, 0xc0, 0x43, - 0x20, 0x60, 0x06, 0x49, 0x20, 0x20, 0x08, 0x60, - 0x48, 0x60, 0x98, 0xbd, 0x00, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xa9, 0x75, - 0x00, 0x00, 0xb5, 0x9f, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x05, 0x49, 0x00, 0x20, 0x3c, 0x00, - 0xa0, 0x15, 0x04, 0x00, 0x08, 0x60, 0x05, 0x48, - 0x81, 0x78, 0x28, 0x22, 0x91, 0x43, 0x81, 0x70, - 0x81, 0x78, 0x11, 0x43, 0x81, 0x70, 0x70, 0x47, - 0x78, 0x6e, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x41, 0x48, 0x10, 0xb5, - 0x00, 0x68, 0x02, 0x21, 0x88, 0x43, 0x3f, 0x49, - 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x02, 0x21, - 0x08, 0x43, 0x3c, 0x49, 0x08, 0x60, 0x3c, 0x48, - 0x3c, 0x00, 0xdc, 0x15, 0x04, 0x00, 0x40, 0x68, - 0x80, 0x21, 0x88, 0x43, 0x3a, 0x49, 0x48, 0x60, - 0x08, 0x1c, 0x00, 0x68, 0x80, 0x21, 0x08, 0x43, - 0x37, 0x49, 0x08, 0x60, 0x37, 0x48, 0x01, 0x7a, - 0x01, 0x24, 0x21, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x02, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x04, 0x22, 0x91, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x08, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7b, - 0x21, 0x43, 0x3c, 0x00, 0x18, 0x16, 0x04, 0x00, - 0x01, 0x73, 0x01, 0x7b, 0x02, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x01, 0x7b, 0x04, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x2e, 0x21, 0x41, 0x73, 0x81, 0x7b, - 0x38, 0x22, 0x91, 0x43, 0x28, 0x31, 0x81, 0x73, - 0x20, 0x21, 0x41, 0x74, 0x81, 0x7b, 0xc9, 0x08, - 0xc9, 0x00, 0x03, 0x31, 0x81, 0x73, 0x22, 0x21, - 0xc1, 0x73, 0x20, 0x49, 0x3c, 0x00, 0x54, 0x16, - 0x04, 0x00, 0x09, 0x7a, 0x41, 0x72, 0x1e, 0x49, - 0x49, 0x7a, 0x01, 0x74, 0x3c, 0x22, 0x02, 0x77, - 0x01, 0x1c, 0x10, 0x31, 0x4a, 0x73, 0x50, 0x23, - 0x8b, 0x73, 0x5a, 0x23, 0xcb, 0x73, 0x0d, 0x23, - 0x01, 0x1c, 0x20, 0x31, 0x0b, 0x70, 0x17, 0x4b, - 0x43, 0x84, 0x0e, 0x23, 0x4b, 0x70, 0x00, 0x21, - 0x41, 0x82, 0x30, 0x21, 0x01, 0x70, 0x05, 0x21, - 0x41, 0x70, 0x04, 0x21, 0x41, 0x71, 0x3c, 0x00, - 0x90, 0x16, 0x04, 0x00, 0x84, 0x71, 0xc4, 0x71, - 0x0c, 0x21, 0x01, 0x71, 0xf8, 0x21, 0x41, 0x80, - 0x0f, 0x49, 0xca, 0x72, 0x8a, 0x72, 0x03, 0x22, - 0x0a, 0x72, 0x09, 0x22, 0x4a, 0x72, 0x08, 0x22, - 0x0a, 0x73, 0x02, 0x7a, 0x40, 0x23, 0x1a, 0x43, - 0x02, 0x72, 0x4c, 0x73, 0xff, 0xf7, 0xa2, 0xfc, - 0x08, 0x48, 0x01, 0x78, 0x21, 0x43, 0x01, 0x70, - 0x10, 0xbd, 0x00, 0x00, 0xf0, 0x00, 0x07, 0x00, - 0x3c, 0x00, 0xcc, 0x16, 0x04, 0x00, 0xf4, 0x00, - 0x07, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x76, 0x46, - 0x01, 0x00, 0x24, 0x09, 0x00, 0x00, 0x80, 0x80, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0x80, 0xb5, - 0x18, 0x21, 0x09, 0x48, 0xbe, 0xf7, 0xd7, 0xfe, - 0x08, 0x48, 0x00, 0x21, 0x3c, 0x38, 0x41, 0x60, - 0x81, 0x60, 0xc1, 0x60, 0x01, 0x61, 0x41, 0x61, - 0x81, 0x61, 0x01, 0x21, 0x01, 0x62, 0xff, 0xf7, - 0x5c, 0xff, 0x3c, 0x00, 0x08, 0x17, 0x04, 0x00, - 0xc0, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0x24, 0x7e, 0x01, 0x00, 0xb0, 0xb5, 0x21, 0x48, - 0x00, 0x68, 0x40, 0x08, 0x1f, 0x49, 0x40, 0x00, - 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x01, 0x21, - 0x08, 0x43, 0x1c, 0x49, 0x08, 0x60, 0x1c, 0x4a, - 0x10, 0x79, 0x01, 0x21, 0x08, 0x43, 0x10, 0x71, - 0x10, 0x79, 0x02, 0x21, 0x88, 0x43, 0x10, 0x71, - 0x00, 0xf0, 0x6c, 0xf8, 0x3c, 0x00, 0x44, 0x17, - 0x04, 0x00, 0x10, 0x7a, 0x01, 0x21, 0x08, 0x43, - 0x10, 0x72, 0x10, 0x7a, 0xfe, 0x21, 0x88, 0x43, - 0x0a, 0x30, 0x10, 0x72, 0x28, 0x20, 0x90, 0x72, - 0x5a, 0x20, 0xd0, 0x72, 0x11, 0x4d, 0x14, 0x20, - 0x28, 0x77, 0x2c, 0x1c, 0x10, 0x34, 0xa0, 0x73, - 0x16, 0x20, 0xa8, 0x75, 0x18, 0x20, 0xe8, 0x75, - 0xff, 0xf7, 0xa1, 0xfc, 0x0c, 0x48, 0x68, 0x86, - 0xe0, 0x7b, 0x40, 0x06, 0x40, 0x0e, 0x3c, 0x00, - 0x80, 0x17, 0x04, 0x00, 0x0e, 0x21, 0x08, 0x43, - 0xe0, 0x73, 0xe0, 0x7b, 0x80, 0x21, 0x08, 0x43, - 0xe0, 0x73, 0x07, 0x48, 0x41, 0x79, 0x04, 0x22, - 0x11, 0x43, 0x41, 0x71, 0xb0, 0xbd, 0x00, 0x00, - 0xf0, 0x00, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x30, 0x80, 0x07, 0x00, 0xff, 0x01, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x80, 0xb5, 0xff, 0xf7, - 0xaf, 0xff, 0x00, 0x20, 0x14, 0x49, 0xc0, 0x43, - 0x3c, 0x00, 0xbc, 0x17, 0x04, 0x00, 0x88, 0x60, - 0xc1, 0xf7, 0x0b, 0xf9, 0x13, 0x49, 0x00, 0x20, - 0x48, 0x62, 0xc8, 0x60, 0x48, 0x61, 0x08, 0x61, - 0x88, 0x61, 0xc8, 0x61, 0x0f, 0x4b, 0x08, 0x62, - 0x0f, 0x4a, 0x08, 0x63, 0x38, 0x33, 0x1a, 0x80, - 0x01, 0x22, 0x5a, 0x71, 0x0b, 0x4a, 0x40, 0x32, - 0xd0, 0x60, 0x13, 0x60, 0x08, 0x23, 0x13, 0x81, - 0x50, 0x60, 0x09, 0x4a, 0x8a, 0x62, 0xff, 0x22, - 0x0a, 0x70, 0x3c, 0x00, 0xf8, 0x17, 0x04, 0x00, - 0x48, 0x70, 0x05, 0x48, 0x00, 0x21, 0x00, 0x22, - 0x50, 0x30, 0x00, 0x23, 0x0e, 0xc0, 0xc1, 0xf7, - 0xff, 0xf8, 0x80, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0xbe, 0xba, 0x00, 0x00, - 0x85, 0x75, 0x00, 0x00, 0x03, 0x48, 0x10, 0x21, - 0x81, 0x71, 0x02, 0x21, 0xc1, 0x71, 0x30, 0x21, - 0x41, 0x72, 0x70, 0x47, 0x00, 0x80, 0x07, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x34, 0x18, - 0x04, 0x00, 0x00, 0xb5, 0xc1, 0xf7, 0xdb, 0xfb, - 0x00, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, - 0xcd, 0xf7, 0x87, 0xfd, 0x01, 0x49, 0x88, 0x60, - 0x80, 0xbd, 0x50, 0xd9, 0x01, 0x00, 0x80, 0xb5, - 0x06, 0x21, 0x05, 0x48, 0xbe, 0xf7, 0xfd, 0xfd, - 0x04, 0x49, 0x00, 0x20, 0x04, 0x39, 0x08, 0x60, - 0x00, 0xf0, 0x67, 0xf8, 0x00, 0xf0, 0x03, 0xf8, - 0x80, 0xbd, 0xec, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0x70, 0x18, 0x04, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x2c, 0x21, 0x20, 0x1c, 0xbe, 0xf7, 0x10, 0xfe, - 0x01, 0x20, 0x20, 0x70, 0x03, 0x49, 0x00, 0x20, - 0x1c, 0x39, 0xc8, 0x60, 0x08, 0x61, 0x88, 0x61, - 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0xcd, 0xf7, 0x5d, 0xfd, 0x09, 0x49, - 0x88, 0x60, 0x09, 0x49, 0x08, 0x20, 0xd0, 0xf7, - 0x73, 0xfd, 0x08, 0x49, 0x09, 0x20, 0xd0, 0xf7, - 0x3c, 0x00, 0xac, 0x18, 0x04, 0x00, 0x6f, 0xfd, - 0x07, 0x49, 0x11, 0x20, 0xd0, 0xf7, 0x6b, 0xfd, - 0x06, 0x48, 0xc2, 0xf7, 0x74, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x21, 0x35, - 0x00, 0x00, 0xa1, 0x38, 0x00, 0x00, 0x45, 0x34, - 0x00, 0x00, 0xbd, 0x26, 0x01, 0x00, 0x80, 0xb5, - 0x86, 0xb0, 0x0f, 0x48, 0xc4, 0xf7, 0x45, 0xf9, - 0x00, 0xf0, 0x45, 0xf8, 0xff, 0xf7, 0xd7, 0xff, - 0xff, 0xf7, 0x3c, 0x00, 0xe8, 0x18, 0x04, 0x00, - 0xab, 0xff, 0x0c, 0x49, 0x03, 0x20, 0xd0, 0xf7, - 0x4d, 0xfd, 0x0b, 0x48, 0x69, 0x46, 0x00, 0x90, - 0x00, 0x20, 0x01, 0x90, 0x09, 0x48, 0x04, 0x90, - 0x09, 0x48, 0x02, 0x90, 0x09, 0x48, 0x03, 0x90, - 0x09, 0x48, 0x05, 0x90, 0x00, 0x20, 0xc4, 0xf7, - 0xcf, 0xf8, 0x06, 0xb0, 0x80, 0xbd, 0x00, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x45, 0x35, 0x00, 0x00, - 0x95, 0x32, 0x00, 0x00, 0x3c, 0x00, 0x24, 0x19, - 0x04, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0xfd, 0x32, - 0x00, 0x00, 0xcd, 0x31, 0x00, 0x00, 0x45, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0xcd, 0xf7, 0xd5, 0xfc, - 0x09, 0x48, 0x09, 0x4c, 0x30, 0x21, 0x60, 0x61, - 0x08, 0x48, 0x74, 0x30, 0xbe, 0xf7, 0xa9, 0xfd, - 0x00, 0x20, 0xa0, 0x62, 0x06, 0x49, 0x20, 0x61, - 0xe1, 0x63, 0x60, 0x64, 0xa0, 0x64, 0x14, 0x21, - 0x21, 0x65, 0x60, 0x62, 0x10, 0xbd, 0x3c, 0x00, - 0x60, 0x19, 0x04, 0x00, 0xb9, 0x75, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x70, 0x17, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x09, 0x20, 0x04, 0x4a, - 0xd1, 0xf7, 0xe8, 0xfe, 0xcd, 0xf7, 0xec, 0xfc, - 0x02, 0x49, 0x08, 0x63, 0x80, 0xbd, 0x00, 0x00, - 0x39, 0x39, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x80, 0xb5, 0xac, 0x21, 0x03, 0x48, 0xbe, 0xf7, - 0x83, 0xfd, 0x00, 0xf0, 0x51, 0xf8, 0x00, 0xf0, - 0x3c, 0x00, 0x9c, 0x19, 0x04, 0x00, 0x49, 0xf8, - 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x08, 0xb5, - 0x00, 0xf0, 0x4d, 0xf8, 0x00, 0xf0, 0x45, 0xf8, - 0x00, 0x21, 0x16, 0x20, 0x18, 0x4a, 0xd1, 0xf7, - 0xc8, 0xfe, 0x17, 0x4a, 0x04, 0x21, 0x10, 0x1c, - 0x40, 0x30, 0x01, 0x70, 0x00, 0x21, 0x81, 0x70, - 0x11, 0x21, 0xc1, 0x80, 0x14, 0x49, 0x01, 0x81, - 0x10, 0x1c, 0x80, 0x30, 0xc1, 0x78, 0x08, 0x22, - 0x91, 0x43, 0x3c, 0x00, 0xd8, 0x19, 0x04, 0x00, - 0xc1, 0x70, 0xc1, 0x78, 0x11, 0x43, 0xc1, 0x70, - 0x6a, 0x46, 0x0f, 0x49, 0x14, 0x20, 0xbf, 0xf7, - 0xf5, 0xfa, 0x0e, 0x49, 0x07, 0x20, 0xd0, 0xf7, - 0xcd, 0xfc, 0x0d, 0x49, 0x0f, 0x20, 0xd0, 0xf7, - 0xc9, 0xfc, 0xcd, 0xf7, 0xab, 0xfc, 0x0b, 0x49, - 0x08, 0x60, 0x0a, 0x48, 0x44, 0x38, 0x80, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x00, 0x20, 0xc6, 0xf7, - 0x6f, 0xf9, 0x08, 0xbd, 0x3c, 0x00, 0x14, 0x1a, - 0x04, 0x00, 0xb5, 0x3b, 0x00, 0x00, 0x00, 0x90, - 0x07, 0x00, 0xe7, 0xfd, 0x00, 0x00, 0x8d, 0x41, - 0x00, 0x00, 0xcd, 0x48, 0x00, 0x00, 0xd9, 0x49, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0xf0, 0x6f, 0xfc, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x61, 0xfc, - 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5, - 0x30, 0x21, 0x0c, 0x48, 0xbe, 0xf7, 0x3c, 0x00, - 0x50, 0x1a, 0x04, 0x00, 0x25, 0xfd, 0x0b, 0x4c, - 0x00, 0x25, 0x0a, 0x48, 0x84, 0x3c, 0x38, 0x22, - 0x03, 0x21, 0x70, 0x38, 0x65, 0x60, 0xbe, 0xf7, - 0xdd, 0xfd, 0x06, 0x48, 0x38, 0x22, 0x01, 0x21, - 0x38, 0x38, 0xbe, 0xf7, 0xd7, 0xfd, 0x0e, 0x20, - 0xa5, 0x60, 0x60, 0x70, 0x20, 0x70, 0x00, 0xf0, - 0x1d, 0xf8, 0xb0, 0xbd, 0x94, 0x67, 0x01, 0x00, - 0x04, 0x49, 0x00, 0xb5, 0x01, 0x20, 0x48, 0x60, - 0x3c, 0x00, 0x8c, 0x1a, 0x04, 0x00, 0x88, 0x60, - 0xc8, 0x60, 0xc3, 0xf7, 0xf8, 0xff, 0x00, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x0a, 0x20, 0x02, 0x4a, 0xd1, 0xf7, - 0x50, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x1d, 0x5a, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x05, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0xfd, 0xfb, - 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x49, 0x04, 0x20, - 0xd0, 0xf7, 0x3c, 0x00, 0xc8, 0x1a, 0x04, 0x00, - 0x61, 0xfc, 0x80, 0xbd, 0x65, 0x1f, 0x00, 0x00, - 0x00, 0x21, 0x17, 0x48, 0xc9, 0x43, 0x80, 0xb5, - 0x16, 0x4b, 0x01, 0x70, 0x18, 0x1c, 0x10, 0x22, - 0x20, 0x30, 0x02, 0x71, 0x00, 0x22, 0x10, 0x33, - 0x9a, 0x73, 0x42, 0x79, 0x04, 0x23, 0x1a, 0x43, - 0x42, 0x71, 0x42, 0x79, 0x18, 0x23, 0x9a, 0x43, - 0x08, 0x32, 0x42, 0x71, 0x08, 0x1c, 0xd7, 0xf7, - 0x59, 0xf8, 0x00, 0x28, 0x3c, 0x00, 0x04, 0x1b, - 0x04, 0x00, 0x03, 0xd1, 0x01, 0x21, 0x9a, 0x20, - 0xbf, 0xf7, 0xcb, 0xfb, 0x50, 0x20, 0x09, 0x49, - 0x50, 0x22, 0x0a, 0x60, 0xc8, 0x60, 0x88, 0x60, - 0x48, 0x60, 0x08, 0x61, 0x01, 0x20, 0x48, 0x61, - 0x00, 0x20, 0xd7, 0xf7, 0xd8, 0xf8, 0x04, 0x49, - 0xff, 0x20, 0x08, 0x60, 0x80, 0xbd, 0xf4, 0x6b, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x04, 0x02, - 0x07, 0x00, 0xf4, 0x74, 0x01, 0x00, 0x3c, 0x00, - 0x40, 0x1b, 0x04, 0x00, 0x80, 0xb5, 0xd7, 0xf7, - 0xfb, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0xff, 0xf7, - 0xab, 0xfb, 0xbf, 0xf7, 0xdd, 0xfb, 0x81, 0x48, - 0xcd, 0xf7, 0x98, 0xfa, 0x00, 0x24, 0x23, 0x1c, - 0x04, 0x22, 0x04, 0x21, 0x00, 0x20, 0x01, 0xf0, - 0x39, 0xfa, 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7, - 0xc9, 0xfb, 0x23, 0x1c, 0x00, 0x22, 0xff, 0x21, - 0x00, 0x20, 0x01, 0xf0, 0x2f, 0xfa, 0x00, 0x28, - 0x3c, 0x00, 0x7c, 0x1b, 0x04, 0x00, 0x01, 0xd0, - 0xbf, 0xf7, 0xbf, 0xfb, 0x23, 0x1c, 0x00, 0x22, - 0xff, 0x21, 0x00, 0x20, 0x01, 0xf0, 0x25, 0xfa, - 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7, 0xb5, 0xfb, - 0xc4, 0xf7, 0x27, 0xff, 0x70, 0x48, 0x84, 0x70, - 0x6f, 0x49, 0x7f, 0x20, 0x88, 0x70, 0x6e, 0x49, - 0x0c, 0x60, 0x03, 0x20, 0x08, 0x60, 0x6b, 0x48, - 0x44, 0x70, 0x6c, 0x48, 0x04, 0x80, 0x69, 0x48, - 0xc0, 0x78, 0x3c, 0x00, 0xb8, 0x1b, 0x04, 0x00, - 0x08, 0x21, 0x08, 0x43, 0x67, 0x49, 0xc8, 0x70, - 0x08, 0x1c, 0xc0, 0x78, 0x04, 0x21, 0x08, 0x43, - 0x64, 0x49, 0xc8, 0x70, 0x01, 0xf0, 0x7e, 0xfa, - 0xff, 0xf7, 0x7e, 0xff, 0xff, 0xf7, 0x2c, 0xfe, - 0x01, 0xf0, 0x46, 0xfb, 0xff, 0xf7, 0x18, 0xfb, - 0x01, 0xf0, 0x52, 0xfa, 0xff, 0xf7, 0x82, 0xfb, - 0x5f, 0x48, 0xc1, 0x68, 0x10, 0x22, 0x91, 0x43, - 0xc1, 0x60, 0x01, 0x69, 0x3c, 0x00, 0xf4, 0x1b, - 0x04, 0x00, 0x5d, 0x4a, 0x11, 0x43, 0x01, 0x61, - 0x01, 0x69, 0xd2, 0x0a, 0x91, 0x43, 0x01, 0x61, - 0xc1, 0x68, 0x5a, 0x4a, 0x11, 0x43, 0xc1, 0x60, - 0x81, 0x6a, 0x59, 0x4a, 0x11, 0x43, 0x81, 0x62, - 0x00, 0xf0, 0x77, 0xf9, 0x01, 0xf0, 0x1f, 0xf8, - 0x00, 0xf0, 0x93, 0xfa, 0x01, 0xf0, 0x99, 0xfb, - 0x00, 0xf0, 0xf1, 0xff, 0x00, 0xf0, 0x99, 0xfc, - 0x00, 0xf0, 0xdd, 0xfc, 0x00, 0xf0, 0x3c, 0x00, - 0x30, 0x1c, 0x04, 0x00, 0x83, 0xfc, 0xff, 0xf7, - 0xb3, 0xfc, 0x01, 0xf0, 0x31, 0xfa, 0x01, 0xf0, - 0x71, 0xfa, 0xff, 0xf7, 0x87, 0xfa, 0xff, 0xf7, - 0x9b, 0xfa, 0x01, 0x21, 0x01, 0x20, 0x4b, 0x4a, - 0xd1, 0xf7, 0x7c, 0xfd, 0x01, 0x21, 0x02, 0x20, - 0x49, 0x4a, 0xd1, 0xf7, 0x77, 0xfd, 0x02, 0x21, - 0x03, 0x20, 0x48, 0x4a, 0xd1, 0xf7, 0x72, 0xfd, - 0x02, 0x21, 0x04, 0x20, 0x46, 0x4a, 0xd1, 0xf7, - 0x3c, 0x00, 0x6c, 0x1c, 0x04, 0x00, 0x6d, 0xfd, - 0x02, 0x21, 0x05, 0x20, 0x45, 0x4a, 0xd1, 0xf7, - 0x68, 0xfd, 0x02, 0x21, 0x06, 0x20, 0x43, 0x4a, - 0xd1, 0xf7, 0x63, 0xfd, 0x01, 0x21, 0x07, 0x20, - 0x42, 0x4a, 0xd1, 0xf7, 0x5e, 0xfd, 0x02, 0x21, - 0x17, 0x20, 0x40, 0x4a, 0xd1, 0xf7, 0x59, 0xfd, - 0x02, 0x21, 0x08, 0x20, 0x3f, 0x4a, 0xd1, 0xf7, - 0x54, 0xfd, 0xff, 0xf7, 0xc8, 0xfd, 0x3d, 0x48, - 0x04, 0x60, 0x3c, 0x00, 0xa8, 0x1c, 0x04, 0x00, - 0x44, 0x60, 0xff, 0xf7, 0x17, 0xfa, 0xff, 0xf7, - 0x09, 0xfa, 0xff, 0xf7, 0x4f, 0xfc, 0x00, 0xf0, - 0x43, 0xf9, 0xff, 0xf7, 0x33, 0xfa, 0xff, 0xf7, - 0xfb, 0xfa, 0x01, 0xf0, 0x85, 0xf8, 0x01, 0xf0, - 0xeb, 0xf9, 0x01, 0xf0, 0x23, 0xfa, 0x01, 0xf0, - 0x71, 0xf9, 0x00, 0xf0, 0xe3, 0xff, 0xff, 0xf7, - 0x6f, 0xfa, 0x00, 0xf0, 0xaf, 0xf9, 0x00, 0xf0, - 0xbd, 0xf9, 0x00, 0xf0, 0x3c, 0x00, 0xe4, 0x1c, - 0x04, 0x00, 0xad, 0xfc, 0x00, 0xf0, 0x9b, 0xfe, - 0xff, 0xf7, 0xcd, 0xfa, 0xff, 0xf7, 0xab, 0xfe, - 0x00, 0xf0, 0xc3, 0xf9, 0xff, 0xf7, 0xab, 0xfd, - 0x00, 0xf0, 0x8d, 0xff, 0x00, 0xf0, 0x21, 0xff, - 0x00, 0xf0, 0x65, 0xf9, 0x00, 0xf0, 0x97, 0xf9, - 0x00, 0xf0, 0xfd, 0xfe, 0x00, 0xf0, 0xe5, 0xfe, - 0x00, 0xf0, 0x3f, 0xf9, 0x00, 0xf0, 0x73, 0xf9, - 0xff, 0xf7, 0x37, 0xfe, 0x00, 0xf0, 0x3c, 0x00, - 0x20, 0x1d, 0x04, 0x00, 0x21, 0xf9, 0x00, 0xf0, - 0x73, 0xfb, 0xff, 0xf7, 0xe5, 0xfb, 0x00, 0xf0, - 0xd3, 0xfb, 0xff, 0xf7, 0xa9, 0xfe, 0x00, 0xf0, - 0xbb, 0xfb, 0x00, 0xf0, 0x09, 0xff, 0x00, 0xf0, - 0xdb, 0xf9, 0x18, 0x48, 0xc9, 0xf7, 0x56, 0xf8, - 0x17, 0x48, 0xc9, 0xf7, 0x2b, 0xf8, 0x00, 0x22, - 0x01, 0x21, 0xf0, 0x20, 0xd1, 0xf7, 0x2e, 0xfd, - 0x00, 0x20, 0x10, 0xbd, 0xa9, 0x69, 0x00, 0x00, - 0x3c, 0x00, 0x5c, 0x1d, 0x04, 0x00, 0x00, 0x00, - 0x07, 0x00, 0xf0, 0x00, 0x07, 0x00, 0x2c, 0x00, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0x08, 0x00, 0xc0, 0x3f, 0x74, 0x38, 0xfc, 0xdf, - 0x7f, 0x38, 0x55, 0x69, 0x00, 0x00, 0xe5, 0x13, - 0x00, 0x00, 0x61, 0x0c, 0x00, 0x00, 0x6d, 0x0c, - 0x00, 0x00, 0x3d, 0x0c, 0x00, 0x00, 0xf1, 0x0d, - 0x00, 0x00, 0xc5, 0x33, 0x00, 0x00, 0x3d, 0x0f, - 0x00, 0x00, 0x3c, 0x00, 0x98, 0x1d, 0x04, 0x00, - 0xad, 0xd8, 0x00, 0x00, 0x80, 0x00, 0x07, 0x00, - 0x50, 0x57, 0x01, 0x00, 0x04, 0x40, 0x01, 0x00, - 0x80, 0xb5, 0x01, 0xf0, 0xa9, 0xf9, 0x00, 0xf0, - 0xc9, 0xf8, 0xff, 0xf7, 0xc5, 0xfe, 0x01, 0xf0, - 0x03, 0xfb, 0x01, 0xf0, 0x93, 0xfa, 0xff, 0xf7, - 0xcb, 0xf9, 0x2c, 0x48, 0xff, 0xf7, 0xe8, 0xf9, - 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0, 0x58, 0xff, - 0xff, 0xf7, 0x34, 0xfd, 0x3c, 0x00, 0xd4, 0x1d, - 0x04, 0x00, 0xff, 0xf7, 0xf2, 0xfb, 0xff, 0xf7, - 0x7a, 0xfa, 0xff, 0xf7, 0x00, 0xfa, 0x00, 0xf0, - 0x34, 0xf9, 0x00, 0xf0, 0x3c, 0xf9, 0x01, 0xf0, - 0xe2, 0xf8, 0xff, 0xf7, 0x7a, 0xf9, 0xff, 0xf7, - 0x72, 0xf9, 0xff, 0xf7, 0x9a, 0xf9, 0x01, 0xf0, - 0x66, 0xf9, 0x01, 0xf0, 0x8e, 0xf9, 0x01, 0xf0, - 0xe0, 0xf8, 0x00, 0xf0, 0x06, 0xff, 0x00, 0xf0, - 0xf0, 0xfb, 0x00, 0xf0, 0x46, 0xfb, 0x3c, 0x00, - 0x10, 0x1e, 0x04, 0x00, 0x00, 0xf0, 0xbc, 0xff, - 0x00, 0xf0, 0xe4, 0xfc, 0x00, 0xf0, 0x20, 0xfe, - 0xff, 0xf7, 0x40, 0xfa, 0xff, 0xf7, 0x46, 0xfe, - 0xff, 0xf7, 0x56, 0xfd, 0x00, 0xf0, 0x2c, 0xf9, - 0x00, 0xf0, 0xfa, 0xfe, 0x00, 0xf0, 0x8a, 0xfe, - 0x00, 0xf0, 0xd4, 0xf8, 0x00, 0xf0, 0xb4, 0xf8, - 0x00, 0xf0, 0x78, 0xfe, 0x00, 0xf0, 0x4e, 0xfe, - 0x00, 0xf0, 0xde, 0xf8, 0xff, 0xf7, 0xac, 0xfd, - 0x3c, 0x00, 0x4c, 0x1e, 0x04, 0x00, 0x00, 0xf0, - 0x8c, 0xf8, 0x00, 0xf0, 0xf8, 0xfa, 0xff, 0xf7, - 0x76, 0xfb, 0xff, 0xf7, 0x20, 0xfe, 0x01, 0xf0, - 0xa6, 0xfa, 0x00, 0xf0, 0x48, 0xfb, 0x00, 0xf0, - 0x7c, 0xfe, 0x00, 0xf0, 0x5c, 0xf9, 0xbe, 0xf7, - 0x57, 0xfd, 0x00, 0x20, 0x80, 0xbd, 0x80, 0x38, - 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x08, 0x60, - 0x70, 0x47, 0xa8, 0x7e, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x3c, 0x00, 0x88, 0x1e, 0x04, 0x00, - 0x01, 0xd1, 0xbf, 0xf7, 0x39, 0xfa, 0x0f, 0x48, - 0x7d, 0x21, 0xc9, 0x00, 0x84, 0x60, 0x01, 0x80, - 0x0d, 0x49, 0x01, 0x61, 0x80, 0x21, 0x41, 0x80, - 0x00, 0x21, 0xc1, 0x60, 0x01, 0x62, 0x0b, 0x48, - 0x41, 0x80, 0x14, 0x21, 0x81, 0x80, 0x07, 0x21, - 0x41, 0x81, 0x06, 0x4a, 0x46, 0x23, 0x04, 0x32, - 0x05, 0x24, 0x13, 0x70, 0x54, 0x70, 0x0a, 0x21, - 0x91, 0x70, 0x81, 0x76, 0x3c, 0x00, 0xc4, 0x1e, - 0x04, 0x00, 0x03, 0x76, 0x04, 0x81, 0x10, 0xbd, - 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00, 0x00, 0x87, - 0x93, 0x03, 0x30, 0x00, 0x07, 0x00, 0x09, 0x48, - 0x80, 0xb5, 0x01, 0x69, 0x42, 0x69, 0x11, 0x43, - 0x82, 0x69, 0xc0, 0x69, 0x11, 0x43, 0x01, 0x43, - 0x00, 0x22, 0x03, 0x20, 0xc6, 0xf7, 0xbf, 0xfc, - 0xcc, 0xf7, 0x1b, 0xfa, 0x00, 0x20, 0xc2, 0xf7, - 0x92, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x1f, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x21, 0x81, 0x60, - 0x02, 0x21, 0xc1, 0x60, 0x03, 0x39, 0x41, 0x60, - 0xc7, 0xf7, 0x3a, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x08, 0xb5, 0x6a, 0x46, - 0x04, 0x49, 0x15, 0x20, 0xbf, 0xf7, 0x54, 0xf8, - 0x01, 0x20, 0x03, 0x49, 0x40, 0x05, 0x08, 0x60, - 0x48, 0x60, 0x08, 0xbd, 0xa5, 0x21, 0x01, 0x00, - 0x3c, 0x00, 0x3c, 0x1f, 0x04, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0x80, 0x68, 0xc0, 0x01, 0x80, 0x0f, - 0x05, 0xd1, 0x03, 0x22, 0xc1, 0x43, 0xc6, 0xf7, - 0xba, 0xfc, 0xd6, 0xf7, 0x00, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20, - 0x06, 0x4a, 0xd1, 0xf7, 0xea, 0xfb, 0x00, 0x22, - 0x07, 0x20, 0x3c, 0x00, 0x78, 0x1f, 0x04, 0x00, - 0x04, 0x49, 0xbe, 0xf7, 0xed, 0xfe, 0x04, 0x48, - 0xc7, 0xf7, 0x58, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x8d, 0x89, 0x00, 0x00, 0xd5, 0x9b, 0x00, 0x00, - 0x10, 0x46, 0x01, 0x00, 0x02, 0x48, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x70, 0x47, - 0x80, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x2c, 0x20, 0x06, 0x4a, 0xd1, 0xf7, 0xcc, 0xfb, - 0x00, 0x22, 0x00, 0x20, 0x3c, 0x00, 0xb4, 0x1f, - 0x04, 0x00, 0x04, 0x49, 0xbe, 0xf7, 0xcf, 0xfe, - 0x04, 0x49, 0x02, 0x20, 0xc8, 0xf7, 0x0b, 0xfa, - 0x80, 0xbd, 0x05, 0x8a, 0x00, 0x00, 0xe9, 0x9b, - 0x00, 0x00, 0xb1, 0x8b, 0x00, 0x00, 0x02, 0x48, - 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, - 0x70, 0x47, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x2b, 0x20, 0x04, 0x4a, 0xd1, 0xf7, - 0xae, 0xfb, 0x00, 0x22, 0x02, 0x20, 0x3c, 0x00, - 0xf0, 0x1f, 0x04, 0x00, 0x02, 0x49, 0xbe, 0xf7, - 0xb1, 0xfe, 0x80, 0xbd, 0x2d, 0x8a, 0x00, 0x00, - 0x8d, 0x8c, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0x07, 0x4a, - 0xd1, 0xf7, 0x9c, 0xfb, 0x00, 0x22, 0x01, 0x20, - 0x05, 0x49, 0xbe, 0xf7, 0x9f, 0xfe, 0x05, 0x48, - 0xcb, 0xf7, 0x56, 0xfa, 0x04, 0x48, 0xcc, 0xf7, - 0xf7, 0xf8, 0x80, 0xbd, 0xad, 0x8a, 0x00, 0x00, - 0x3c, 0x00, 0x2c, 0x20, 0x04, 0x00, 0x21, 0xe2, - 0x00, 0x00, 0xf9, 0xdf, 0x00, 0x00, 0x20, 0x44, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x02, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x01, 0x20, 0x48, 0x60, - 0x70, 0x47, 0xac, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x49, 0x0d, 0x20, 0xd0, 0xf7, 0x9b, 0xf9, - 0x80, 0xbd, 0x61, 0x98, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0xcd, 0xf7, 0x77, 0xf9, - 0x03, 0x49, 0x3c, 0x00, 0x68, 0x20, 0x04, 0x00, - 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48, 0xcd, 0xf7, - 0x97, 0xf9, 0x80, 0xbd, 0xa8, 0x79, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x29, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x86, 0xb0, - 0x0c, 0x48, 0xc3, 0xf7, 0x6d, 0xfd, 0xd6, 0xf7, - 0xd3, 0xfb, 0x0b, 0x48, 0x0d, 0x49, 0x00, 0x90, - 0x0a, 0x48, 0x04, 0x91, 0x01, 0x90, 0x0a, 0x48, - 0x69, 0x46, 0x02, 0x90, 0x3c, 0x00, 0xa4, 0x20, - 0x04, 0x00, 0x00, 0x20, 0x03, 0x90, 0x05, 0x90, - 0x01, 0x20, 0xc3, 0xf7, 0x00, 0xfd, 0x07, 0x49, - 0x03, 0x20, 0xd0, 0xf7, 0x6a, 0xf9, 0x06, 0xb0, - 0x80, 0xbd, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x87, - 0x01, 0x00, 0x95, 0x87, 0x01, 0x00, 0x55, 0x87, - 0x01, 0x00, 0x98, 0xd9, 0x01, 0x00, 0x6d, 0x87, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xd6, 0xf7, - 0x90, 0xfc, 0x03, 0x49, 0x00, 0x20, 0x3c, 0x00, - 0xe0, 0x20, 0x04, 0x00, 0x08, 0x60, 0x48, 0x60, - 0x02, 0x48, 0x14, 0x39, 0x48, 0x60, 0x80, 0xbd, - 0x90, 0xd9, 0x01, 0x00, 0x3d, 0x82, 0x01, 0x00, - 0x70, 0xb5, 0x00, 0x26, 0x09, 0x4c, 0x09, 0x4d, - 0x26, 0x60, 0x66, 0x60, 0x44, 0x21, 0x50, 0x35, - 0x28, 0x1c, 0xa6, 0x61, 0xbe, 0xf7, 0xc8, 0xf9, - 0x14, 0x20, 0xe0, 0x60, 0xe8, 0x63, 0x28, 0x20, - 0xe8, 0x61, 0xa0, 0x60, 0x28, 0x64, 0x2e, 0x70, - 0x3c, 0x00, 0x1c, 0x21, 0x04, 0x00, 0x70, 0xbd, - 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x18, 0x20, 0x04, 0x4a, 0xd1, 0xf7, - 0x0c, 0xfb, 0x03, 0x49, 0x08, 0x20, 0xd0, 0xf7, - 0x2a, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x15, 0x9c, - 0x00, 0x00, 0x69, 0x9c, 0x00, 0x00, 0xfe, 0xb5, - 0x26, 0x4d, 0x28, 0x78, 0xc0, 0x07, 0x0c, 0xd4, - 0x25, 0x49, 0x00, 0x20, 0x08, 0x70, 0x28, 0x70, - 0x24, 0x48, 0x3c, 0x00, 0x58, 0x21, 0x04, 0x00, - 0x81, 0x78, 0x49, 0x08, 0x49, 0x00, 0x81, 0x70, - 0x81, 0x78, 0x01, 0x22, 0x11, 0x43, 0x81, 0x70, - 0x00, 0x24, 0xff, 0x26, 0x1f, 0x4f, 0x01, 0x36, - 0x21, 0x1c, 0x01, 0xa8, 0xc6, 0xf7, 0x32, 0xf8, - 0x00, 0xab, 0x18, 0x79, 0x01, 0x28, 0x1f, 0xd0, - 0x02, 0x28, 0x19, 0xd0, 0x03, 0x28, 0x1e, 0xd1, - 0xb8, 0x68, 0x00, 0x21, 0xb0, 0x43, 0xb8, 0x60, - 0x78, 0x68, 0x30, 0x43, 0x3c, 0x00, 0x94, 0x21, - 0x04, 0x00, 0x78, 0x60, 0x3a, 0x68, 0x32, 0x40, - 0xa0, 0x20, 0x05, 0xe0, 0x3b, 0x68, 0x33, 0x40, - 0x93, 0x42, 0x01, 0xd0, 0x01, 0x21, 0x01, 0xe0, - 0x01, 0x38, 0xf7, 0xd2, 0x78, 0x68, 0xb0, 0x43, - 0x78, 0x60, 0x00, 0x29, 0x03, 0xd0, 0x01, 0xa8, - 0x00, 0xf0, 0x27, 0xff, 0x02, 0xe0, 0x01, 0xa8, - 0x00, 0xf0, 0x45, 0xff, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x16, 0x06, 0x2c, 0xcf, 0xdb, 0x3c, 0x00, - 0xd0, 0x21, 0x04, 0x00, 0x04, 0x49, 0x02, 0x22, - 0x08, 0x78, 0x10, 0x43, 0x08, 0x70, 0x28, 0x70, - 0xfe, 0xbd, 0x00, 0x00, 0x04, 0x00, 0x07, 0x00, - 0xe0, 0x60, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x10, 0x00, 0x07, 0x00, 0xb0, 0xb5, 0x00, 0x20, - 0x15, 0x23, 0x14, 0x49, 0x01, 0x25, 0x42, 0x00, - 0x8d, 0x54, 0x52, 0x18, 0x01, 0x30, 0x0e, 0x28, - 0x53, 0x70, 0xf8, 0xd3, 0x0f, 0x48, 0x1c, 0x22, - 0x3c, 0x00, 0x0c, 0x22, 0x04, 0x00, 0x1c, 0x38, - 0xbe, 0xf7, 0x73, 0xf9, 0x0d, 0x48, 0x0e, 0x21, - 0x2a, 0x38, 0xbe, 0xf7, 0x1c, 0xf9, 0x0b, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x0b, 0x4c, 0x2a, 0x21, - 0x20, 0x1c, 0xbe, 0xf7, 0x14, 0xf9, 0x25, 0x70, - 0x0e, 0x20, 0x60, 0x70, 0x17, 0x20, 0xa0, 0x70, - 0x07, 0x48, 0x53, 0x21, 0x01, 0x70, 0x45, 0x21, - 0x41, 0x70, 0x20, 0x21, 0x81, 0x70, 0xb0, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x48, 0x22, 0x04, 0x00, - 0xe6, 0x78, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00, - 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00, - 0x0c, 0x49, 0x0d, 0x48, 0x00, 0x22, 0x41, 0x60, - 0x0c, 0x49, 0x81, 0x60, 0x0c, 0x49, 0xc1, 0x60, - 0x0c, 0x49, 0x01, 0x61, 0x0c, 0x49, 0x41, 0x61, - 0x0c, 0x49, 0x82, 0x61, 0xc1, 0x61, 0x0c, 0x49, - 0x01, 0x62, 0x0c, 0x49, 0x41, 0x62, 0x0c, 0x49, - 0x81, 0x62, 0x0c, 0x49, 0x3c, 0x00, 0x84, 0x22, - 0x04, 0x00, 0xc1, 0x62, 0xc2, 0x63, 0x70, 0x47, - 0x00, 0x00, 0xc9, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0xc1, 0x75, 0x00, 0x00, 0x81, 0x75, - 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0xcd, 0x75, - 0x00, 0x00, 0x89, 0x75, 0x00, 0x00, 0x91, 0x75, - 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x8d, 0x75, - 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00, 0xb0, 0xb5, - 0x0e, 0x48, 0x0e, 0x49, 0x08, 0x60, 0x3c, 0x00, - 0xc0, 0x22, 0x04, 0x00, 0x08, 0x31, 0xc0, 0xf7, - 0x43, 0xfe, 0x0c, 0x49, 0x00, 0x25, 0x48, 0x60, - 0x0b, 0x48, 0x0a, 0x4c, 0x05, 0x60, 0x0b, 0x48, - 0x80, 0x3c, 0x05, 0x60, 0x10, 0x20, 0x20, 0x71, - 0xe0, 0x70, 0xa0, 0x71, 0x60, 0x71, 0x27, 0x20, - 0xc0, 0x43, 0xc3, 0xf7, 0xf7, 0xfb, 0x28, 0x20, - 0xc3, 0xf7, 0xfc, 0xfb, 0x25, 0x72, 0xb0, 0xbd, - 0xff, 0x3f, 0x00, 0x00, 0x2c, 0x7d, 0x01, 0x00, - 0x3c, 0x00, 0xfc, 0x22, 0x04, 0x00, 0x1c, 0x67, - 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x80, 0xb5, - 0x2c, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xc7, 0xf8, - 0x80, 0xbd, 0x3c, 0x7e, 0x01, 0x00, 0x80, 0xb5, - 0x38, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xbf, 0xf8, - 0x80, 0xbd, 0x68, 0x7e, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x0e, 0x20, 0x02, 0x4a, 0xd1, 0xf7, - 0x0c, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x21, 0xe0, - 0x00, 0x00, 0x3c, 0x00, 0x38, 0x23, 0x04, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0xb0, - 0x00, 0x27, 0x00, 0xab, 0x2f, 0x4e, 0x1f, 0x81, - 0x00, 0x25, 0x00, 0x24, 0x28, 0x1c, 0xd6, 0xf7, - 0xa1, 0xfb, 0x02, 0x2d, 0x03, 0xd1, 0xd6, 0xf7, - 0xf5, 0xfa, 0x00, 0x28, 0x0c, 0xd0, 0x01, 0x24, - 0x01, 0x2d, 0x03, 0xd1, 0x07, 0x20, 0x00, 0xab, - 0x18, 0x71, 0x01, 0xe0, 0x00, 0xab, 0x1f, 0x71, - 0x00, 0xab, 0x18, 0x79, 0x3c, 0x00, 0x74, 0x23, - 0x04, 0x00, 0xd6, 0xf7, 0x08, 0xfc, 0x00, 0x2c, - 0x39, 0xd0, 0x08, 0x21, 0x03, 0xa8, 0xd6, 0xf7, - 0xf2, 0xfa, 0x00, 0xab, 0x18, 0x7b, 0xfe, 0x28, - 0x31, 0xd1, 0x58, 0x7b, 0x01, 0x28, 0x2a, 0xd1, - 0x02, 0x21, 0x02, 0xa8, 0xd6, 0xf7, 0xe7, 0xfa, - 0x00, 0xab, 0x18, 0x89, 0x00, 0x28, 0x26, 0xd0, - 0x18, 0x89, 0x18, 0x49, 0x88, 0x42, 0x22, 0xd0, - 0x19, 0x89, 0x00, 0x20, 0xbf, 0xf7, 0x3c, 0x00, - 0xb0, 0x23, 0x04, 0x00, 0x13, 0xf9, 0x04, 0x1c, - 0x00, 0x69, 0x00, 0xab, 0x19, 0x89, 0xd6, 0xf7, - 0xd5, 0xfa, 0x20, 0x68, 0x00, 0xab, 0x1a, 0x89, - 0x01, 0x1c, 0x08, 0x31, 0x08, 0x3a, 0xcb, 0xf7, - 0xa1, 0xf9, 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28, - 0x04, 0xd0, 0x02, 0x21, 0x94, 0x20, 0x37, 0x60, - 0xbe, 0xf7, 0x62, 0xff, 0x20, 0x1c, 0xbf, 0xf7, - 0xc7, 0xf8, 0xd4, 0xe7, 0x01, 0x21, 0x94, 0x20, - 0x3c, 0x00, 0xec, 0x23, 0x04, 0x00, 0xbe, 0xf7, - 0x5a, 0xff, 0xd5, 0xf7, 0x26, 0xff, 0x01, 0x35, - 0x2d, 0x06, 0x2d, 0x0e, 0x04, 0x2d, 0xa5, 0xd3, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x58, 0x57, - 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0a, 0x48, - 0x00, 0x21, 0x02, 0x1c, 0x18, 0x32, 0x80, 0xb5, - 0x09, 0x4b, 0x02, 0xe0, 0x01, 0x60, 0x83, 0x80, - 0x08, 0x30, 0x82, 0x42, 0xfa, 0xd1, 0x04, 0x48, - 0x6c, 0x21, 0x3c, 0x00, 0x28, 0x24, 0x04, 0x00, - 0x6c, 0x38, 0xbe, 0xf7, 0x37, 0xf8, 0x04, 0x49, - 0x02, 0x20, 0xc7, 0xf7, 0xd1, 0xff, 0x80, 0xbd, - 0x7c, 0x79, 0x01, 0x00, 0xfc, 0x05, 0x00, 0x00, - 0x9d, 0x75, 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x26, 0x20, 0x0d, 0x4a, 0xd1, 0xf7, 0x7c, 0xf9, - 0x0c, 0x48, 0xc8, 0xf7, 0x73, 0xff, 0x0c, 0x48, - 0xc8, 0xf7, 0x76, 0xff, 0x0b, 0x49, 0x10, 0x20, - 0xcf, 0xf7, 0x94, 0xff, 0x3c, 0x00, 0x64, 0x24, - 0x04, 0x00, 0x0a, 0x49, 0x0c, 0x20, 0xcf, 0xf7, - 0x90, 0xff, 0x09, 0x49, 0x00, 0x20, 0xc7, 0xf7, - 0xb2, 0xff, 0xcc, 0xf7, 0x6e, 0xff, 0x07, 0x49, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0x9d, 0xa6, - 0x00, 0x00, 0xa9, 0xa4, 0x00, 0x00, 0x81, 0xa4, - 0x00, 0x00, 0x31, 0xa7, 0x00, 0x00, 0xb9, 0x6d, - 0x00, 0x00, 0xbd, 0xa6, 0x00, 0x00, 0x0c, 0x79, - 0x01, 0x00, 0x02, 0x49, 0x08, 0x78, 0x3c, 0x00, - 0xa0, 0x24, 0x04, 0x00, 0x40, 0x08, 0x40, 0x00, - 0x08, 0x70, 0x70, 0x47, 0x58, 0x00, 0x07, 0x00, - 0x00, 0x21, 0x08, 0x48, 0x80, 0xb5, 0x41, 0x61, - 0x81, 0x61, 0x01, 0x70, 0x41, 0x70, 0x41, 0x60, - 0x81, 0x60, 0x14, 0x22, 0xc2, 0x60, 0x01, 0x61, - 0x42, 0x62, 0xc1, 0x61, 0xff, 0xf7, 0x04, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x1d, 0x20, 0x04, 0x4a, - 0x3c, 0x00, 0xdc, 0x24, 0x04, 0x00, 0xd1, 0xf7, - 0x34, 0xf9, 0x03, 0x49, 0x08, 0x20, 0xcf, 0xf7, - 0x52, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x11, 0xe3, - 0x00, 0x00, 0x09, 0xe4, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x25, 0x20, 0x0a, 0x4a, 0xd1, 0xf7, - 0x24, 0xf9, 0xcc, 0xf7, 0x28, 0xff, 0x08, 0x49, - 0x08, 0x62, 0x08, 0x49, 0x01, 0x20, 0xcf, 0xf7, - 0x3e, 0xff, 0x07, 0x49, 0x02, 0x20, 0xcf, 0xf7, - 0x3a, 0xff, 0x3c, 0x00, 0x18, 0x25, 0x04, 0x00, - 0xfe, 0xf7, 0xe6, 0xff, 0x05, 0x48, 0xc1, 0xf7, - 0xe1, 0xf9, 0x80, 0xbd, 0x29, 0xa9, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0xa1, 0xaa, 0x00, 0x00, - 0x2d, 0x19, 0x00, 0x00, 0x45, 0xa8, 0x00, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x0c, 0x22, 0x22, 0x70, - 0xa0, 0x18, 0x05, 0x49, 0xbd, 0xf7, 0xd8, 0xff, - 0x00, 0x20, 0xc8, 0xf7, 0x85, 0xfb, 0x01, 0x20, - 0xa0, 0x60, 0x10, 0xbd, 0x3c, 0x00, 0x54, 0x25, - 0x04, 0x00, 0xa4, 0x69, 0x01, 0x00, 0x90, 0x57, - 0x01, 0x00, 0xb0, 0xb5, 0x1f, 0x4c, 0x00, 0x25, - 0x65, 0x80, 0x01, 0x20, 0x20, 0x70, 0x0a, 0x20, - 0xa0, 0x80, 0x90, 0x20, 0xe0, 0x80, 0x30, 0x20, - 0x20, 0x81, 0x90, 0x20, 0x60, 0x81, 0x30, 0x20, - 0xa0, 0x81, 0x17, 0x48, 0x04, 0x22, 0x07, 0x21, - 0x12, 0x30, 0xbe, 0xf7, 0x4c, 0xf8, 0x14, 0x48, - 0x04, 0x22, 0x05, 0x21, 0x16, 0x30, 0x3c, 0x00, - 0x90, 0x25, 0x04, 0x00, 0xbe, 0xf7, 0x46, 0xf8, - 0x12, 0x48, 0x11, 0x4a, 0xe0, 0x81, 0x20, 0x82, - 0x70, 0x32, 0x15, 0x70, 0x55, 0x70, 0x00, 0x20, - 0x3c, 0x23, 0x41, 0x01, 0x43, 0x43, 0x89, 0x18, - 0xf4, 0x31, 0x9b, 0x18, 0x01, 0x30, 0x04, 0x28, - 0x59, 0x60, 0xf5, 0xdb, 0x08, 0x48, 0x06, 0x22, - 0x1a, 0x30, 0x09, 0x49, 0xbd, 0xf7, 0x9a, 0xff, - 0x07, 0x48, 0x05, 0x4c, 0x0c, 0x30, 0x0f, 0xc8, - 0x3c, 0x00, 0xcc, 0x25, 0x04, 0x00, 0x20, 0x34, - 0x0f, 0xc4, 0x20, 0x21, 0x20, 0x1c, 0xbd, 0xf7, - 0x62, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0x2c, 0x09, 0x00, 0x00, 0x58, 0x40, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x07, 0x48, - 0x10, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x08, 0xd0, - 0x06, 0x48, 0xbe, 0xf7, 0x9c, 0xfe, 0x04, 0x1c, - 0xff, 0xf7, 0x9d, 0xfe, 0x20, 0x1c, 0xbe, 0xf7, - 0x96, 0xfe, 0x3c, 0x00, 0x08, 0x26, 0x04, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0x58, 0x57, 0x01, 0x00, - 0xb5, 0xad, 0x00, 0x00, 0x04, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x88, 0x70, 0x02, 0x21, 0x20, 0x20, - 0x02, 0x4a, 0xd1, 0xf7, 0x91, 0xf8, 0x80, 0xbd, - 0xb4, 0x79, 0x01, 0x00, 0x25, 0xb5, 0x00, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x8f, 0xfe, 0x01, 0x49, - 0x48, 0x61, 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x18, 0x21, 0x3c, 0x00, 0x44, 0x26, - 0x04, 0x00, 0x14, 0x48, 0xbd, 0xf7, 0x29, 0xff, - 0x14, 0x48, 0x01, 0x21, 0x01, 0x70, 0x00, 0x21, - 0xc1, 0x60, 0x41, 0x70, 0x01, 0x61, 0x00, 0xf0, - 0x02, 0xf9, 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0, - 0x1e, 0xf8, 0x00, 0xf0, 0xba, 0xf9, 0x00, 0xf0, - 0xcc, 0xf9, 0x00, 0xf0, 0x20, 0xf9, 0x00, 0xf0, - 0x64, 0xf9, 0x00, 0xf0, 0xce, 0xf9, 0x00, 0xf0, - 0xfc, 0xf8, 0x00, 0xf0, 0x82, 0xf9, 0x3c, 0x00, - 0x80, 0x26, 0x04, 0x00, 0x00, 0xf0, 0x28, 0xf8, - 0x00, 0xf0, 0x6e, 0xf8, 0x00, 0xf0, 0x4a, 0xf8, - 0xff, 0xf7, 0xc2, 0xff, 0x00, 0xf0, 0x72, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c, - 0x00, 0x25, 0x08, 0x48, 0x25, 0x77, 0x20, 0x60, - 0xce, 0xf7, 0xf0, 0xfd, 0x00, 0x20, 0xe5, 0x62, - 0xd0, 0xf7, 0xd0, 0xfa, 0x21, 0x1f, 0x08, 0x80, - 0x3c, 0x00, 0xbc, 0x26, 0x04, 0x00, 0xd0, 0xf7, - 0x6c, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x80, 0xb5, - 0xcc, 0xf7, 0xc1, 0xfc, 0x80, 0xbd, 0x05, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x70, 0x48, 0x70, - 0x03, 0x48, 0x04, 0x49, 0x03, 0x4a, 0x08, 0x30, - 0xcc, 0xf7, 0x27, 0xfe, 0x80, 0xbd, 0x2c, 0x63, - 0x01, 0x00, 0xed, 0xbc, 0x00, 0x00, 0x4d, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x26, 0x04, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x2b, 0xfe, 0x05, 0x49, - 0x48, 0x60, 0x01, 0x1c, 0x04, 0x48, 0xcc, 0xf7, - 0x4b, 0xfe, 0x04, 0x49, 0x03, 0x20, 0xcf, 0xf7, - 0x3d, 0xfe, 0x80, 0xbd, 0x2c, 0x63, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xc1, 0xbc, 0x00, 0x00, - 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x02, 0x49, 0x10, 0x38, - 0x01, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x34, 0x27, - 0x04, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x1c, 0xe6, - 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x09, 0xfe, - 0x05, 0x49, 0x05, 0x4a, 0x48, 0x60, 0x02, 0x21, - 0x24, 0x20, 0xd0, 0xf7, 0xfc, 0xff, 0x03, 0x48, - 0xc9, 0xf7, 0x6b, 0xfd, 0x80, 0xbd, 0x04, 0x7a, - 0x01, 0x00, 0x69, 0xbe, 0x00, 0x00, 0x71, 0xeb, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x4c, 0x14, 0x21, - 0x20, 0x1c, 0xbd, 0xf7, 0x96, 0xfe, 0x3c, 0x00, - 0x70, 0x27, 0x04, 0x00, 0x02, 0x48, 0x20, 0x60, - 0x10, 0xbd, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, - 0xec, 0xe5, 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, - 0xe7, 0xfd, 0x07, 0x49, 0x07, 0x4a, 0x48, 0x60, - 0x02, 0x21, 0x1f, 0x20, 0xd0, 0xf7, 0xda, 0xff, - 0x05, 0x49, 0x01, 0x20, 0x08, 0x60, 0x05, 0x49, - 0x0c, 0x20, 0xcf, 0xf7, 0xf5, 0xfd, 0x80, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0xd5, 0xbf, 0x00, 0x00, - 0x3c, 0x00, 0xac, 0x27, 0x04, 0x00, 0x80, 0x5a, - 0x01, 0x00, 0x85, 0xff, 0x00, 0x00, 0x80, 0xb5, - 0xff, 0xf7, 0x4f, 0xfd, 0x01, 0x21, 0x21, 0x20, - 0x02, 0x4a, 0xd0, 0xf7, 0xc2, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xc9, 0xc1, 0x00, 0x00, 0x80, 0xb5, - 0xcc, 0xf7, 0xc1, 0xfd, 0x02, 0x49, 0x08, 0x63, - 0xc9, 0xf7, 0x57, 0xfd, 0x80, 0xbd, 0x28, 0x7a, - 0x01, 0x00, 0x10, 0xb5, 0xcc, 0xf7, 0xb7, 0xfd, - 0x16, 0x4c, 0x3c, 0x00, 0xe8, 0x27, 0x04, 0x00, - 0x20, 0x61, 0xcc, 0xf7, 0xb3, 0xfd, 0x60, 0x61, - 0x14, 0x48, 0x15, 0x49, 0x08, 0x60, 0x16, 0x49, - 0x14, 0x48, 0x08, 0x60, 0xcc, 0xf7, 0xaa, 0xfd, - 0x14, 0x49, 0x08, 0x60, 0x00, 0xf0, 0x34, 0xf8, - 0xff, 0xf7, 0xe0, 0xff, 0xff, 0xf7, 0x5e, 0xff, - 0x00, 0xf0, 0x04, 0xf9, 0x00, 0xf0, 0x8e, 0xf8, - 0xff, 0xf7, 0x6e, 0xff, 0xff, 0xf7, 0xb0, 0xff, - 0xff, 0xf7, 0x8c, 0xff, 0x3c, 0x00, 0x24, 0x28, - 0x04, 0x00, 0xff, 0xf7, 0x04, 0xff, 0x00, 0xf0, - 0xaa, 0xf8, 0x0a, 0x48, 0xbf, 0xf7, 0xbd, 0xff, - 0xc9, 0xf7, 0xbb, 0xfd, 0x09, 0x49, 0x00, 0x20, - 0xcf, 0xf7, 0xa7, 0xfd, 0x10, 0xbd, 0x40, 0x7c, - 0x01, 0x00, 0x7d, 0xb7, 0x00, 0x00, 0x18, 0x7e, - 0x01, 0x00, 0xbd, 0xb8, 0x00, 0x00, 0x1c, 0x7e, - 0x01, 0x00, 0x20, 0x7e, 0x01, 0x00, 0xb9, 0xba, - 0x00, 0x00, 0x81, 0x24, 0x01, 0x00, 0x3c, 0x00, - 0x60, 0x28, 0x04, 0x00, 0x80, 0xb5, 0x38, 0x21, - 0x01, 0x48, 0xbd, 0xf7, 0x19, 0xfe, 0x80, 0xbd, - 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d, 0x00, 0x20, - 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60, 0xe0, 0x60, - 0x0a, 0x20, 0x20, 0x81, 0x28, 0x1c, 0xc8, 0xf7, - 0x3f, 0xfd, 0x28, 0x1c, 0xc8, 0xf7, 0x3a, 0xfd, - 0x08, 0x3d, 0x68, 0x60, 0x04, 0x48, 0xc9, 0xf7, - 0x3c, 0x00, 0x9c, 0x28, 0x04, 0x00, 0x1b, 0xfd, - 0x20, 0x1c, 0xc0, 0xf7, 0x6e, 0xfa, 0x28, 0x80, - 0xb0, 0xbd, 0xb8, 0x7a, 0x01, 0x00, 0xd5, 0x33, - 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x1d, 0x4c, - 0x00, 0x20, 0x0c, 0x21, 0x41, 0x43, 0x82, 0x00, - 0x01, 0x30, 0x09, 0x19, 0x08, 0x31, 0x00, 0x06, - 0x00, 0x0e, 0x04, 0x28, 0xb1, 0x50, 0xf4, 0xd3, - 0x18, 0x48, 0x0c, 0x38, 0x30, 0x61, 0xce, 0xf7, - 0xf4, 0xf9, 0x3c, 0x00, 0xd8, 0x28, 0x04, 0x00, - 0x14, 0x4c, 0xa0, 0x78, 0x00, 0x09, 0x00, 0x01, - 0xa0, 0x70, 0x00, 0x27, 0xe7, 0x70, 0x67, 0x70, - 0x00, 0x24, 0xa5, 0x00, 0x70, 0x59, 0x07, 0x70, - 0x20, 0x1c, 0xbe, 0xf7, 0x53, 0xf9, 0x71, 0x59, - 0x08, 0x71, 0x00, 0x21, 0x20, 0x1c, 0xce, 0xf7, - 0x7d, 0xf9, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x04, 0x2c, 0xee, 0xd3, 0x07, 0x4c, 0x20, 0x78, - 0x00, 0x09, 0x00, 0x01, 0x3c, 0x00, 0x14, 0x29, - 0x04, 0x00, 0x0a, 0x30, 0x20, 0x70, 0x20, 0x78, - 0xf0, 0x21, 0x88, 0x43, 0x30, 0x30, 0x20, 0x70, - 0xa0, 0x78, 0x0f, 0x21, 0x08, 0x43, 0xa0, 0x70, - 0xf8, 0xbd, 0x00, 0x50, 0x07, 0x00, 0x10, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x9f, 0xfb, - 0x80, 0xbd, 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d, - 0x00, 0x20, 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60, - 0xe0, 0x60, 0x0a, 0x20, 0x20, 0x81, 0x3c, 0x00, - 0x50, 0x29, 0x04, 0x00, 0x28, 0x1c, 0xc8, 0xf7, - 0xe1, 0xfc, 0x28, 0x1c, 0xc8, 0xf7, 0xd4, 0xfc, - 0x08, 0x3d, 0x68, 0x60, 0x20, 0x1c, 0xc0, 0xf7, - 0x0d, 0xfa, 0x28, 0x80, 0x02, 0x48, 0xc9, 0xf7, - 0x9b, 0xfc, 0xb0, 0xbd, 0x2c, 0x7b, 0x01, 0x00, - 0x49, 0x00, 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7, - 0x2f, 0xf8, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, - 0xb0, 0xb5, 0x12, 0x4d, 0x3c, 0x21, 0x28, 0x1c, - 0x3c, 0x00, 0x8c, 0x29, 0x04, 0x00, 0xbd, 0xf7, - 0x86, 0xfd, 0x0f, 0x48, 0x28, 0x21, 0x3c, 0x30, - 0xbd, 0xf7, 0x81, 0xfd, 0x0d, 0x48, 0x00, 0x21, - 0x14, 0x38, 0x01, 0x61, 0xc1, 0x60, 0xff, 0x21, - 0x01, 0x70, 0x41, 0x70, 0x0a, 0x49, 0x0a, 0x4a, - 0x41, 0x60, 0x01, 0x21, 0x0c, 0x20, 0xd0, 0xf7, - 0xc8, 0xfe, 0x2c, 0x1c, 0x30, 0x34, 0x0c, 0x3d, - 0x00, 0x20, 0xd0, 0xf7, 0x4a, 0xf9, 0x20, 0x80, - 0x0c, 0x3c, 0x3c, 0x00, 0xc8, 0x29, 0x04, 0x00, - 0xac, 0x42, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00, - 0x60, 0x7b, 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00, - 0x35, 0xcd, 0x00, 0x00, 0x08, 0x49, 0x00, 0x20, - 0x0c, 0x22, 0x42, 0x43, 0x52, 0x18, 0x10, 0x71, - 0x01, 0x30, 0x05, 0x28, 0xf8, 0xdb, 0x04, 0x48, - 0x00, 0x21, 0x08, 0x38, 0x01, 0x70, 0x41, 0x60, - 0xff, 0x21, 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, - 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x04, 0x2a, - 0x04, 0x00, 0x80, 0xb5, 0x78, 0x21, 0x01, 0x48, - 0xbd, 0xf7, 0x47, 0xfd, 0x80, 0xbd, 0xc4, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7, 0x97, 0xfa, - 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x0b, 0x4c, 0xff, 0x21, 0x05, 0x31, 0x20, 0x1c, - 0xbd, 0xf7, 0x37, 0xfd, 0x09, 0x48, 0xf0, 0x21, - 0x08, 0x51, 0x20, 0x1c, 0x40, 0x30, 0xc5, 0xf7, - 0x8e, 0xf9, 0x6c, 0x21, 0x06, 0x48, 0x3c, 0x00, - 0x40, 0x2a, 0x04, 0x00, 0xbd, 0xf7, 0x2c, 0xfd, - 0x04, 0x48, 0xc0, 0x21, 0x6c, 0x30, 0xbd, 0xf7, - 0x27, 0xfd, 0x10, 0xbd, 0xc4, 0x69, 0x01, 0x00, - 0xb0, 0xd9, 0x01, 0x00, 0xc8, 0x6a, 0x01, 0x00, - 0xb0, 0xb5, 0x0b, 0x4d, 0x00, 0x24, 0x1c, 0x20, - 0x60, 0x43, 0x40, 0x19, 0x6c, 0x30, 0xc3, 0xf7, - 0x0f, 0xfe, 0x01, 0x34, 0x04, 0x2c, 0xf6, 0xdb, - 0xcc, 0xf7, 0x6e, 0xfc, 0xa8, 0x63, 0xc7, 0xf7, - 0x3c, 0x00, 0x7c, 0x2a, 0x04, 0x00, 0x75, 0xf9, - 0x04, 0x48, 0xc9, 0xf7, 0x1c, 0xfc, 0x03, 0x48, - 0xcf, 0xf7, 0x03, 0xfa, 0xb0, 0xbd, 0xc4, 0x69, - 0x01, 0x00, 0xfd, 0x80, 0x00, 0x00, 0xe1, 0x22, - 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x20, - 0x20, 0x80, 0x03, 0x48, 0x06, 0x21, 0x08, 0x30, - 0xbd, 0xf7, 0xd5, 0xfc, 0x14, 0x20, 0x60, 0x60, - 0x10, 0xbd, 0x98, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x08, 0x4c, 0x3c, 0x00, 0xb8, 0x2a, 0x04, 0x00, - 0x00, 0x20, 0x20, 0x80, 0x60, 0x80, 0x06, 0x48, - 0x06, 0x21, 0x0c, 0x30, 0xbd, 0xf7, 0xc6, 0xfc, - 0x03, 0x48, 0x06, 0x21, 0x12, 0x30, 0xbd, 0xf7, - 0xc1, 0xfc, 0x14, 0x20, 0xa0, 0x60, 0x10, 0xbd, - 0x58, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x0d, 0x20, 0x05, 0x4a, - 0xd0, 0xf7, 0x2e, 0xfe, 0x04, 0x48, 0xc8, 0xf7, - 0x1f, 0xfc, 0x04, 0x48, 0x3c, 0x00, 0xf4, 0x2a, - 0x04, 0x00, 0xca, 0xf7, 0x44, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x51, 0xb1, - 0x00, 0x00, 0x09, 0xb1, 0x00, 0x00, 0x08, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x60, 0xff, 0xf7, - 0xd0, 0xff, 0xff, 0xf7, 0xc0, 0xff, 0xff, 0xf7, - 0x04, 0xfc, 0x00, 0xf0, 0x4a, 0xf8, 0xff, 0xf7, - 0x0a, 0xfc, 0x00, 0xf0, 0x3c, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x3c, 0x00, - 0x30, 0x2b, 0x04, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x29, 0xf8, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0xf0, - 0x51, 0xf8, 0x00, 0xf0, 0x31, 0xf8, 0x80, 0xbd, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0xff, 0x21, 0x89, 0x31, 0x02, 0x48, - 0xbd, 0xf7, 0xa2, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0xdc, 0x71, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x49, - 0x08, 0x20, 0xcf, 0xf7, 0x11, 0xfc, 0x80, 0xbd, - 0x3c, 0x00, 0x6c, 0x2b, 0x04, 0x00, 0x59, 0xd9, - 0x00, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7, - 0x4c, 0xf9, 0x02, 0x49, 0x48, 0x80, 0x80, 0xbd, - 0x00, 0x00, 0x8d, 0x1f, 0x00, 0x00, 0x98, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7, - 0x40, 0xf9, 0x02, 0x49, 0x88, 0x80, 0x80, 0xbd, - 0x00, 0x00, 0xd5, 0x23, 0x00, 0x00, 0x58, 0x7c, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, - 0x02, 0x48, 0x3c, 0x00, 0xa8, 0x2b, 0x04, 0x00, - 0xca, 0xf7, 0xe4, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x71, 0xe0, 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7, - 0xa5, 0xfb, 0x02, 0x21, 0x0f, 0x20, 0x06, 0x4a, - 0xd0, 0xf7, 0xc2, 0xfd, 0x14, 0x21, 0x05, 0x48, - 0xbd, 0xf7, 0x68, 0xfc, 0x03, 0x48, 0x78, 0x21, - 0x14, 0x30, 0xbd, 0xf7, 0x63, 0xfc, 0x80, 0xbd, - 0x35, 0xe2, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x3c, 0x00, 0xe4, 0x2b, - 0x04, 0x00, 0xb7, 0xfb, 0x05, 0x49, 0x08, 0x61, - 0x05, 0x49, 0x0e, 0x20, 0xcf, 0xf7, 0xcd, 0xfb, - 0x04, 0x49, 0x08, 0x20, 0xcf, 0xf7, 0xc9, 0xfb, - 0x80, 0xbd, 0xec, 0x65, 0x01, 0x00, 0x01, 0x02, - 0x01, 0x00, 0xc1, 0x2e, 0x00, 0x00, 0x01, 0x49, - 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x40, 0xd9, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, - 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x3c, 0x00, - 0x20, 0x2c, 0x04, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x07, 0x48, 0xc8, 0xf7, 0xf2, 0xff, - 0x06, 0x49, 0x48, 0x60, 0x06, 0x48, 0xc0, 0xf7, - 0x07, 0xfb, 0x06, 0x48, 0xc0, 0xf7, 0x86, 0xfb, - 0x05, 0x48, 0xc9, 0xf7, 0xa3, 0xfa, 0x80, 0xbd, - 0xa9, 0xe4, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0xb9, 0xe4, 0x00, 0x00, 0x85, 0x2e, 0x00, 0x00, - 0x81, 0xe4, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0x5c, 0x2c, 0x04, 0x00, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0, - 0x10, 0x38, 0xc8, 0x21, 0x01, 0x60, 0x00, 0x21, - 0x0c, 0x38, 0x02, 0x4a, 0xcc, 0xf7, 0x61, 0xfb, - 0x80, 0xbd, 0xd0, 0x60, 0x01, 0x00, 0xfd, 0xe5, - 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x67, 0xfb, - 0x04, 0x49, 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48, - 0x04, 0x30, 0xcc, 0xf7, 0x86, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x98, 0x2c, 0x04, 0x00, - 0xc0, 0x60, 0x01, 0x00, 0x09, 0x48, 0x80, 0xb5, - 0x0a, 0x21, 0x01, 0x70, 0x41, 0x70, 0x08, 0x49, - 0x08, 0x4a, 0x81, 0x60, 0x00, 0x21, 0xc1, 0x60, - 0x52, 0x79, 0x82, 0x70, 0x01, 0x61, 0x41, 0x61, - 0x28, 0x21, 0x18, 0x30, 0xbd, 0xf7, 0xee, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00, - 0xf8, 0xb5, 0x0f, 0x49, 0x3c, 0x00, 0xd4, 0x2c, - 0x04, 0x00, 0x0f, 0x48, 0x0d, 0x88, 0x4f, 0x88, - 0x06, 0x79, 0x00, 0x24, 0x30, 0x1b, 0x68, 0x43, - 0x68, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0x0f, 0xfd, - 0x61, 0x00, 0x09, 0x4a, 0xa6, 0x42, 0x50, 0x52, - 0x00, 0xd1, 0x3d, 0x1c, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x0e, 0x10, 0x2c, 0xea, 0xd3, 0x05, 0x49, - 0x01, 0x20, 0x08, 0x61, 0xf8, 0xbd, 0x3c, 0x00, - 0x10, 0x2d, 0x04, 0x00, 0xf6, 0x59, 0x01, 0x00, - 0x0c, 0x5a, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00, - 0x12, 0x5a, 0x01, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfa, 0x02, 0x49, - 0x01, 0x20, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x08, 0x1c, 0x0f, 0x49, 0x49, 0x79, 0x00, 0x29, - 0x01, 0xd1, 0x0e, 0x4b, 0x00, 0xe0, 0x0e, 0x4b, - 0x3c, 0x00, 0x4c, 0x2d, 0x04, 0x00, 0x00, 0x2c, - 0x07, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x0a, 0x1c, - 0x01, 0x24, 0x19, 0x1c, 0xbd, 0xf7, 0xcd, 0xfb, - 0x0a, 0xe0, 0x01, 0x24, 0x01, 0x1c, 0x18, 0x1c, - 0x12, 0x88, 0xbd, 0xf7, 0xc6, 0xfb, 0x00, 0xf0, - 0xc4, 0xfa, 0x05, 0x49, 0x01, 0x20, 0x08, 0x61, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x0c, 0x5a, - 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00, 0xfa, 0x59, - 0x01, 0x00, 0x3c, 0x00, 0x88, 0x2d, 0x04, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0x0d, 0x48, 0x8c, 0xb5, - 0xc1, 0x88, 0x00, 0xab, 0x0c, 0x4a, 0x99, 0x80, - 0x01, 0x89, 0x04, 0x20, 0xd9, 0x80, 0x18, 0x80, - 0x02, 0x21, 0x13, 0x20, 0xd0, 0xf7, 0xd0, 0xfc, - 0x00, 0xf0, 0xa6, 0xfa, 0x07, 0x49, 0x01, 0x20, - 0x08, 0x61, 0xff, 0xf7, 0x8d, 0xff, 0x6a, 0x46, - 0x01, 0xa9, 0x00, 0x20, 0xff, 0xf7, 0xbc, 0xff, - 0x8c, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xc4, 0x2d, - 0x04, 0x00, 0xf4, 0x59, 0x01, 0x00, 0x95, 0xf9, - 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, 0xf8, 0xb5, - 0x13, 0x4e, 0x01, 0x25, 0xb5, 0x70, 0x05, 0x20, - 0xf0, 0x70, 0x11, 0x49, 0x10, 0x48, 0x0e, 0xc9, - 0x2c, 0x30, 0x0e, 0xc0, 0x00, 0x20, 0x70, 0x61, - 0x0f, 0x48, 0x0f, 0x49, 0x10, 0x4f, 0x00, 0x24, - 0x48, 0x60, 0xa0, 0x00, 0x39, 0x58, 0x20, 0x1c, - 0xd1, 0xf7, 0xd7, 0xf8, 0x01, 0x34, 0x3c, 0x00, - 0x00, 0x2e, 0x04, 0x00, 0x10, 0x2c, 0xf7, 0xd3, - 0x06, 0x4c, 0x0b, 0x4a, 0x20, 0x34, 0x20, 0x1c, - 0x0a, 0x49, 0xb5, 0x60, 0xcc, 0xf7, 0x92, 0xfa, - 0xcc, 0xf7, 0x9e, 0xfa, 0x30, 0x61, 0x20, 0x60, - 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x04, 0x18, 0x02, 0x00, - 0x60, 0x00, 0x07, 0x00, 0xd4, 0x44, 0x01, 0x00, - 0x45, 0xfa, 0x00, 0x00, 0x71, 0xfa, 0x00, 0x00, - 0x3c, 0x00, 0x3c, 0x2e, 0x04, 0x00, 0x0c, 0x49, - 0x30, 0xb5, 0x00, 0x23, 0xcc, 0x56, 0x0b, 0x4b, - 0x00, 0x20, 0xf0, 0x25, 0x1a, 0x5c, 0x11, 0x07, - 0x09, 0x0f, 0x09, 0x19, 0x0f, 0x29, 0x01, 0xdd, - 0x0f, 0x21, 0x02, 0xe0, 0x00, 0x29, 0x00, 0xda, - 0x00, 0x21, 0x2a, 0x40, 0x51, 0x18, 0x19, 0x54, - 0x01, 0x30, 0x0e, 0x28, 0xee, 0xdb, 0x30, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xc0, 0x58, - 0x01, 0x00, 0x3c, 0x00, 0x78, 0x2e, 0x04, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28, 0x08, 0xd0, - 0x01, 0x24, 0x14, 0x80, 0x05, 0x20, 0xcc, 0xf7, - 0xb5, 0xf8, 0x80, 0x03, 0xc0, 0x0f, 0x28, 0x70, - 0x07, 0xe0, 0x28, 0x78, 0x01, 0x22, 0x41, 0x04, - 0x52, 0x04, 0x05, 0x20, 0xd0, 0xf7, 0xae, 0xfd, - 0x01, 0x24, 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, - 0x98, 0xb5, 0x05, 0x4c, 0x60, 0x68, 0xcc, 0xf7, - 0xf5, 0xfd, 0x00, 0x90, 0x3c, 0x00, 0xb4, 0x2e, - 0x04, 0x00, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80, - 0xce, 0xf7, 0xfb, 0xff, 0x98, 0xbd, 0xa0, 0x58, - 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c, - 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0, - 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24, - 0x29, 0x1c, 0xbd, 0xf7, 0x0c, 0xfb, 0x22, 0xe0, - 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c, - 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0x3c, 0x00, - 0xf0, 0x2e, 0x04, 0x00, 0x03, 0xfb, 0x00, 0x98, - 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30, 0x00, 0xe0, - 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20, - 0xbd, 0xf7, 0x98, 0xfb, 0x01, 0x06, 0x09, 0x16, - 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7, - 0x85, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1, - 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7, - 0xe9, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0x3c, 0x00, 0x2c, 0x2f, 0x04, 0x00, 0xda, 0x59, - 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c, - 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0, - 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24, - 0x29, 0x1c, 0xbd, 0xf7, 0xd6, 0xfa, 0x22, 0xe0, - 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c, - 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0xcd, 0xfa, - 0x00, 0x98, 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30, - 0x00, 0xe0, 0x3c, 0x00, 0x68, 0x2f, 0x04, 0x00, - 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20, - 0xbd, 0xf7, 0x62, 0xfb, 0x01, 0x06, 0x09, 0x16, - 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7, - 0x4f, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1, - 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7, - 0xb3, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0xcc, 0x59, 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5, - 0x01, 0x78, 0x00, 0x20, 0x3c, 0x00, 0xa4, 0x2f, - 0x04, 0x00, 0xcc, 0xf7, 0xb4, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x02, 0x49, 0x03, 0x20, 0x08, 0x70, - 0x00, 0x20, 0x48, 0x70, 0x70, 0x47, 0x9c, 0x73, - 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x11, 0x20, - 0x02, 0x4a, 0xd0, 0xf7, 0xbc, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xa1, 0xfe, 0x00, 0x00, 0xf0, 0xb5, - 0x0b, 0x4f, 0x1c, 0x1c, 0x00, 0x23, 0x3c, 0x00, - 0xe0, 0x2f, 0x04, 0x00, 0xfd, 0x56, 0x2b, 0x1c, - 0x06, 0x2d, 0x01, 0xd1, 0x01, 0x20, 0xf0, 0xbd, - 0x06, 0x4e, 0x05, 0x1c, 0xd8, 0x00, 0x34, 0x36, - 0x35, 0x54, 0x80, 0x19, 0x41, 0x70, 0x82, 0x70, - 0x44, 0x60, 0x58, 0x1c, 0x38, 0x70, 0x00, 0x20, - 0xf0, 0xbd, 0x00, 0x00, 0x98, 0x5a, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x48, 0x00, 0xf0, - 0x21, 0xf9, 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0, - 0x3c, 0x00, 0x1c, 0x30, 0x04, 0x00, 0x01, 0x23, - 0xe0, 0x56, 0x06, 0x21, 0x00, 0xf0, 0xcd, 0xf8, - 0x08, 0x4a, 0x01, 0x21, 0x10, 0x78, 0x08, 0x43, - 0x07, 0x49, 0x08, 0x70, 0x20, 0x23, 0x18, 0x43, - 0x08, 0x70, 0x80, 0x23, 0x18, 0x43, 0x10, 0x70, - 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x91, 0x9b, - 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x10, 0xb5, 0x0a, 0x49, 0x04, 0x1c, - 0x08, 0x78, 0x3c, 0x00, 0x58, 0x30, 0x04, 0x00, - 0x40, 0x08, 0x40, 0x00, 0x08, 0x70, 0x08, 0x49, - 0x08, 0x70, 0x08, 0x48, 0x00, 0xf0, 0xf8, 0xf8, - 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0, 0x01, 0x23, - 0xe0, 0x56, 0x05, 0x21, 0x00, 0xf0, 0xa4, 0xf8, - 0x10, 0xbd, 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00, - 0x04, 0x00, 0x07, 0x00, 0x91, 0x9b, 0x00, 0x00, - 0x03, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x3c, 0x00, 0x94, 0x30, - 0x04, 0x00, 0x70, 0x47, 0x00, 0x00, 0xe8, 0x60, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x00, 0x20, 0x60, 0x60, 0x20, 0x80, - 0xe0, 0x60, 0x02, 0x21, 0x14, 0x20, 0x04, 0x4a, - 0xd0, 0xf7, 0x49, 0xfb, 0x02, 0x48, 0x10, 0x30, - 0xa0, 0x60, 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x05, 0x1d, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x10, 0xb5, 0x48, 0x21, 0x3c, 0x00, - 0xd0, 0x30, 0x04, 0x00, 0x0a, 0x48, 0xbd, 0xf7, - 0xe3, 0xf9, 0x09, 0x4c, 0xe0, 0x21, 0x48, 0x34, - 0x20, 0x1c, 0xbd, 0xf7, 0xdd, 0xf9, 0x00, 0x20, - 0xc1, 0x00, 0x09, 0x19, 0x0a, 0x1c, 0x08, 0x32, - 0x01, 0x30, 0x1b, 0x28, 0x4a, 0x60, 0xf7, 0xd3, - 0x01, 0x48, 0x04, 0x38, 0x04, 0x60, 0x10, 0xbd, - 0x68, 0x5b, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x23, 0x20, 0x02, 0x4a, 0xd0, 0xf7, 0x1e, 0xfb, - 0x3c, 0x00, 0x0c, 0x31, 0x04, 0x00, 0x80, 0xbd, - 0x00, 0x00, 0x45, 0x23, 0x01, 0x00, 0x80, 0xb5, - 0xff, 0xf7, 0x6b, 0xf8, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0xf8, 0xb5, 0x01, 0x20, 0x1d, 0x49, - 0xc0, 0x07, 0x48, 0x60, 0x1d, 0x49, 0xff, 0x20, - 0x08, 0x73, 0x1c, 0x4e, 0x10, 0x20, 0x30, 0x60, - 0x05, 0x01, 0x35, 0x60, 0x1b, 0x4c, 0x80, 0x21, - 0x20, 0x1c, 0xbd, 0xf7, 0xac, 0xf9, 0x00, 0x21, - 0x19, 0x4a, 0x3c, 0x00, 0x48, 0x31, 0x04, 0x00, - 0x15, 0x4f, 0x00, 0x20, 0x0b, 0x01, 0x1b, 0x19, - 0x5a, 0x60, 0xcb, 0x00, 0xdb, 0x19, 0x18, 0x74, - 0x01, 0x31, 0x08, 0x29, 0xf6, 0xdb, 0x0f, 0x4c, - 0xfa, 0x21, 0x21, 0x80, 0x12, 0x49, 0x61, 0x80, - 0xa0, 0x60, 0x6a, 0x46, 0x11, 0x49, 0x04, 0x20, - 0xbd, 0xf7, 0x30, 0xff, 0x6a, 0x46, 0x10, 0x49, - 0x08, 0x20, 0xbd, 0xf7, 0x2b, 0xff, 0x10, 0x20, - 0x70, 0x60, 0x75, 0x60, 0x3c, 0x00, 0x84, 0x31, - 0x04, 0x00, 0x60, 0x68, 0x02, 0x21, 0x08, 0x43, - 0x60, 0x60, 0x0b, 0x49, 0x06, 0x4a, 0x08, 0x1c, - 0x10, 0x30, 0x08, 0x3a, 0x03, 0xc2, 0xf8, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0xac, 0x73, - 0x01, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x20, 0x4e, - 0x00, 0x00, 0x05, 0x2c, 0x01, 0x00, 0x11, 0x2c, - 0x01, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x3c, 0x00, - 0xc0, 0x31, 0x04, 0x00, 0x70, 0xb5, 0x0e, 0x1c, - 0x00, 0x24, 0xc4, 0xf7, 0x5b, 0xfe, 0x00, 0x28, - 0x3b, 0xd0, 0x45, 0x68, 0xff, 0x2d, 0x38, 0xd0, - 0x0c, 0x2e, 0x28, 0xd2, 0x01, 0xa3, 0x9b, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x05, 0x07, 0x09, 0x0b, - 0x0d, 0x10, 0x13, 0x16, 0x18, 0x1b, 0x1e, 0x21, - 0x18, 0x24, 0x20, 0xe0, 0x30, 0x24, 0x1e, 0xe0, - 0x60, 0x24, 0x1c, 0xe0, 0xc0, 0x24, 0x1a, 0xe0, - 0x3c, 0x00, 0xfc, 0x31, 0x04, 0x00, 0xff, 0x24, - 0x81, 0x34, 0x17, 0xe0, 0x09, 0x24, 0xa4, 0x01, - 0x14, 0xe0, 0x09, 0x24, 0xe4, 0x01, 0x11, 0xe0, - 0x0f, 0x4c, 0x0f, 0xe0, 0x09, 0x24, 0x24, 0x02, - 0x0c, 0xe0, 0x09, 0x24, 0x64, 0x02, 0x09, 0xe0, - 0x03, 0x24, 0xe4, 0x02, 0x06, 0xe0, 0x09, 0x24, - 0xa4, 0x02, 0x03, 0xe0, 0x09, 0x21, 0x9e, 0x20, - 0xbe, 0xf7, 0x39, 0xf8, 0x60, 0x00, 0x00, 0x19, - 0x40, 0x08, 0x3c, 0x00, 0x38, 0x32, 0x04, 0x00, - 0x05, 0x49, 0x80, 0x04, 0x40, 0x18, 0x05, 0x4a, - 0xa9, 0x00, 0x89, 0x18, 0x48, 0x60, 0x64, 0x20, - 0x60, 0x43, 0x70, 0xbd, 0xdc, 0x07, 0x00, 0x00, - 0x80, 0x38, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00, - 0x02, 0x49, 0x80, 0xb5, 0x08, 0x60, 0xd0, 0xf7, - 0x97, 0xf8, 0x80, 0xbd, 0x5c, 0x5b, 0x01, 0x00, - 0xf8, 0xb5, 0x00, 0x26, 0x17, 0x4c, 0x17, 0x4b, - 0x19, 0x49, 0x26, 0x70, 0x3c, 0x00, 0x74, 0x32, - 0x04, 0x00, 0x00, 0x20, 0x14, 0x33, 0x0d, 0x88, - 0x15, 0x4e, 0x15, 0x4a, 0x04, 0xe0, 0xc1, 0x00, - 0xcf, 0x18, 0x7a, 0x60, 0x5e, 0x50, 0x01, 0x30, - 0xa8, 0x42, 0xf8, 0xdb, 0xc6, 0xf7, 0x2b, 0xfd, - 0xff, 0x21, 0x11, 0x4d, 0xa5, 0x31, 0x28, 0x1c, - 0xbd, 0xf7, 0xff, 0xf8, 0x00, 0x21, 0x28, 0x1c, - 0x02, 0x1c, 0x14, 0x32, 0xc2, 0x60, 0x10, 0x1c, - 0x01, 0x31, 0x14, 0x29, 0xf8, 0xdb, 0x3c, 0x00, - 0xb0, 0x32, 0x04, 0x00, 0x00, 0x26, 0xc6, 0x60, - 0x05, 0x48, 0x0c, 0x30, 0x60, 0xc0, 0x09, 0x48, - 0x18, 0x21, 0xbd, 0xf7, 0xed, 0xf8, 0x01, 0x20, - 0x04, 0x34, 0x41, 0xc4, 0x00, 0x20, 0xf8, 0xbd, - 0x70, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00, - 0x30, 0xd9, 0x01, 0x00, 0x56, 0x57, 0x01, 0x00, - 0x04, 0x5f, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xcf, 0xf7, 0xb6, 0xfc, - 0x3c, 0x00, 0xec, 0x32, 0x04, 0x00, 0x01, 0x49, - 0x08, 0x80, 0x80, 0xbd, 0x00, 0x00, 0x2c, 0x74, - 0x01, 0x00, 0x11, 0x48, 0xf8, 0xb5, 0x41, 0x79, - 0x00, 0x29, 0x02, 0xd1, 0x05, 0x78, 0x0f, 0x4e, - 0x01, 0xe0, 0x45, 0x78, 0x0f, 0x4e, 0x02, 0x23, - 0xf7, 0x5e, 0x00, 0x24, 0x60, 0x1b, 0x78, 0x43, - 0x64, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0xf5, 0xf9, - 0x61, 0x00, 0x3c, 0x00, 0x28, 0x33, 0x04, 0x00, - 0x09, 0x4a, 0xac, 0x42, 0x50, 0x52, 0x01, 0xd1, - 0x00, 0x23, 0xf7, 0x5e, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x0e, 0x10, 0x2c, 0xe9, 0xd3, 0xf8, 0xbd, - 0x0c, 0x5a, 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00, - 0xfa, 0x59, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00, - 0x32, 0x5a, 0x01, 0x00, 0x38, 0xb5, 0x10, 0x4c, - 0xbe, 0x25, 0x25, 0x73, 0x20, 0x7a, 0x18, 0x21, - 0x88, 0x43, 0x20, 0x72, 0x3c, 0x00, 0x64, 0x33, - 0x04, 0x00, 0x6a, 0x46, 0x0d, 0x49, 0x0d, 0x20, - 0xbd, 0xf7, 0x33, 0xfe, 0x01, 0x20, 0x0b, 0x49, - 0x40, 0x03, 0x08, 0x60, 0x48, 0x60, 0x25, 0x73, - 0x2d, 0x20, 0xc0, 0x03, 0x20, 0x60, 0x25, 0x73, - 0x20, 0x7a, 0x10, 0x21, 0x08, 0x43, 0x20, 0x72, - 0x06, 0x48, 0x06, 0x49, 0x08, 0x60, 0x00, 0x20, - 0x48, 0x60, 0x38, 0xbd, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x8d, 0x3e, 0x01, 0x00, 0x24, 0x00, - 0xa0, 0x33, 0x04, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x00, 0x87, 0x93, 0x03, 0x04, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x15, 0x20, 0x02, 0x4a, - 0xd0, 0xf7, 0xc8, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x0d, 0x3e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x60, 0x04, 0x00, 0x44, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x40, 0x20, 0x07, 0x00, - 0xff, 0xff, 0xff, 0xff, -}; -const uint32_t fw_len = sizeof(fw_buf) / sizeof(fw_buf[0]); diff --git a/firmwares/wifishield/wifi_dnld/wifi_dnld.cproj b/firmwares/wifishield/wifi_dnld/wifi_dnld.cproj deleted file mode 100644 index 790db3c..0000000 --- a/firmwares/wifishield/wifi_dnld/wifi_dnld.cproj +++ /dev/null @@ -1,495 +0,0 @@ - - - - 2.0 - 6.0 - com.Atmel.AVRGCC32 - eb9606bc-de32-4edd-9cda-ae3bf36977a2 - wifi_dnld - AT32uc3a1256 - none - Importer - Executable - C - wifi_dnld - .elf - $(MSBuildProjectDirectory)\$(Configuration) - Native - - true - false - - 0 - 3.5.0 - - - - - True - True - True - True - false - false - - - BOARD=ARDUINO - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - - - -fdata-sections - true - false - false - false - false - true - false - false - false - false - - false - false - true - false - false - false - false - -c -fmessage-length=0 - false - true - false - false - false - false - - - newlib_addons-at32ucr2-speed_opt - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - true - false - false - false - false - true - true - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - false - - - - - - - True - True - True - True - false - false - - - BOARD=ARDUINO - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - - - -fdata-sections - true - false - false - false - false - true - false - false - false - false - Maximum (-g3) - - false - false - true - false - false - false - false - -c -fmessage-length=0 - false - true - false - false - false - false - - - newlib_addons-at32ucr2-speed_opt - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - true - false - false - false - false - true - true - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - Default (-g) - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - false - Default (-Wa,-g) - - - - - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - - - - - compile - - - - - compile - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - \ No newline at end of file diff --git a/firmwares/wifishield/wifishield.atsln b/firmwares/wifishield/wifishield.atsln deleted file mode 100644 index e9a149b..0000000 --- a/firmwares/wifishield/wifishield.atsln +++ /dev/null @@ -1,36 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Atmel Studio Solution File, Format Version 11.00 -Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "wifi_dnld", "wifi_dnld\wifi_dnld.cproj", "{EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}" -EndProject -Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "wifiHD", "wifiHD\wifiHD.cproj", "{417E15DB-488A-4B56-8D4E-FBE832B2B649}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug_512|AVR = Debug_512|AVR - Debug|AVR = Debug|AVR - Release_512|AVR = Release_512|AVR - Release|AVR = Release|AVR - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Debug_512|AVR.ActiveCfg = Debug|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Debug_512|AVR.Build.0 = Debug|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Debug|AVR.ActiveCfg = Debug|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Debug|AVR.Build.0 = Debug|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Release_512|AVR.ActiveCfg = Release|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Release_512|AVR.Build.0 = Release|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Release|AVR.ActiveCfg = Release|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Release|AVR.Build.0 = Release|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Debug_512|AVR.ActiveCfg = Debug_512|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Debug_512|AVR.Build.0 = Debug_512|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Debug|AVR.ActiveCfg = Debug|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Debug|AVR.Build.0 = Debug|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Release_512|AVR.ActiveCfg = Release_512|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Release_512|AVR.Build.0 = Release_512|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Release|AVR.ActiveCfg = Release|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Release|AVR.Build.0 = Release|AVR - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal -- cgit v1.2.3-18-g5258 From 91e267bcc42442d4e9da09aab30065ad5d44025a Mon Sep 17 00:00:00 2001 From: David Madison Date: Fri, 15 Feb 2019 12:37:45 -0500 Subject: Remove non-USB boards Removes boards from boards.txt, bootloaders for those boards, and variants for those boards. As none of these boards support USB there's no reason to keep them around. --- boards.txt | 597 - bootloaders/atmega/ATmegaBOOT_168.c | 1057 -- bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex | 245 - bootloaders/atmega/ATmegaBOOT_168_atmega328.hex | 125 - .../atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex | 124 - bootloaders/atmega/ATmegaBOOT_168_diecimila.hex | 126 - bootloaders/atmega/ATmegaBOOT_168_ng.hex | 110 - bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex | 126 - bootloaders/atmega/Makefile | 238 - .../ATmegaBOOT-prod-firmware-2009-11-07.hex | 66 - bootloaders/atmega8/ATmegaBOOT.c | 507 - bootloaders/atmega8/ATmegaBOOT.hex | 62 - bootloaders/atmega8/ATmegaBOOT.txt | 4 - bootloaders/atmega8/Makefile | 88 - bootloaders/bt/ATmegaBOOT_168.c | 1043 -- bootloaders/bt/ATmegaBOOT_168.hex | 121 - bootloaders/bt/ATmegaBOOT_168_atmega328_bt.hex | 162 - bootloaders/bt/Makefile | 108 - bootloaders/gemma/README.md | 14 - bootloaders/gemma/avrdude.conf | 14389 ------------------- bootloaders/gemma/gemma_v1.hex | 182 - bootloaders/gemma/usbconfig.h | 351 - bootloaders/gemma/usbconfig.patch | 24 - bootloaders/lilypad/LilyPadBOOT_168.hex | 117 - bootloaders/lilypad/src/ATmegaBOOT.c | 977 -- bootloaders/lilypad/src/Makefile | 83 - bootloaders/optiboot/Makefile | 450 - bootloaders/optiboot/README.TXT | 81 - bootloaders/optiboot/boot.h | 846 -- bootloaders/optiboot/makeall | 20 - bootloaders/optiboot/omake | 2 - bootloaders/optiboot/omake.bat | 1 - bootloaders/optiboot/optiboot.c | 672 - bootloaders/optiboot/optiboot_atmega168.hex | 35 - bootloaders/optiboot/optiboot_atmega168.lst | 598 - bootloaders/optiboot/optiboot_atmega328-Mini.hex | 33 - bootloaders/optiboot/optiboot_atmega328.hex | 35 - bootloaders/optiboot/optiboot_atmega328.lst | 598 - bootloaders/optiboot/optiboot_atmega8.hex | 33 - bootloaders/optiboot/optiboot_atmega8.lst | 604 - bootloaders/optiboot/pin_defs.h | 80 - bootloaders/optiboot/stk500.h | 39 - bootloaders/stk500v2/License.txt | 280 - bootloaders/stk500v2/Makefile | 587 - .../stk500v2/Mega2560-prod-firmware-2011-06-29.hex | 513 - bootloaders/stk500v2/STK500V2.pnproj | 1 - bootloaders/stk500v2/STK500V2.pnps | 1 - bootloaders/stk500v2/avr_cpunames.h | 189 - bootloaders/stk500v2/avrinterruptnames.h | 1040 -- bootloaders/stk500v2/command.h | 114 - bootloaders/stk500v2/stk500boot.c | 2122 --- bootloaders/stk500v2/stk500boot.ppg | 1 - bootloaders/stk500v2/stk500boot_v2_mega2560.hex | 469 - variants/eightanaloginputs/pins_arduino.h | 25 - variants/ethernet/pins_arduino.h | 254 - variants/gemma/pins_arduino.h | 140 - variants/mega/pins_arduino.h | 413 - variants/standard/pins_arduino.h | 254 - 58 files changed, 31576 deletions(-) delete mode 100644 bootloaders/atmega/ATmegaBOOT_168.c delete mode 100644 bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex delete mode 100644 bootloaders/atmega/ATmegaBOOT_168_atmega328.hex delete mode 100644 bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex delete mode 100644 bootloaders/atmega/ATmegaBOOT_168_diecimila.hex delete mode 100644 bootloaders/atmega/ATmegaBOOT_168_ng.hex delete mode 100644 bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex delete mode 100755 bootloaders/atmega/Makefile delete mode 100644 bootloaders/atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex delete mode 100644 bootloaders/atmega8/ATmegaBOOT.c delete mode 100644 bootloaders/atmega8/ATmegaBOOT.hex delete mode 100644 bootloaders/atmega8/ATmegaBOOT.txt delete mode 100644 bootloaders/atmega8/Makefile delete mode 100644 bootloaders/bt/ATmegaBOOT_168.c delete mode 100644 bootloaders/bt/ATmegaBOOT_168.hex delete mode 100644 bootloaders/bt/ATmegaBOOT_168_atmega328_bt.hex delete mode 100644 bootloaders/bt/Makefile delete mode 100644 bootloaders/gemma/README.md delete mode 100644 bootloaders/gemma/avrdude.conf delete mode 100644 bootloaders/gemma/gemma_v1.hex delete mode 100644 bootloaders/gemma/usbconfig.h delete mode 100644 bootloaders/gemma/usbconfig.patch delete mode 100644 bootloaders/lilypad/LilyPadBOOT_168.hex delete mode 100644 bootloaders/lilypad/src/ATmegaBOOT.c delete mode 100644 bootloaders/lilypad/src/Makefile delete mode 100644 bootloaders/optiboot/Makefile delete mode 100644 bootloaders/optiboot/README.TXT delete mode 100644 bootloaders/optiboot/boot.h delete mode 100755 bootloaders/optiboot/makeall delete mode 100644 bootloaders/optiboot/omake delete mode 100644 bootloaders/optiboot/omake.bat delete mode 100644 bootloaders/optiboot/optiboot.c delete mode 100644 bootloaders/optiboot/optiboot_atmega168.hex delete mode 100644 bootloaders/optiboot/optiboot_atmega168.lst delete mode 100644 bootloaders/optiboot/optiboot_atmega328-Mini.hex delete mode 100644 bootloaders/optiboot/optiboot_atmega328.hex delete mode 100644 bootloaders/optiboot/optiboot_atmega328.lst delete mode 100644 bootloaders/optiboot/optiboot_atmega8.hex delete mode 100644 bootloaders/optiboot/optiboot_atmega8.lst delete mode 100644 bootloaders/optiboot/pin_defs.h delete mode 100644 bootloaders/optiboot/stk500.h delete mode 100644 bootloaders/stk500v2/License.txt delete mode 100644 bootloaders/stk500v2/Makefile delete mode 100644 bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex delete mode 100644 bootloaders/stk500v2/STK500V2.pnproj delete mode 100644 bootloaders/stk500v2/STK500V2.pnps delete mode 100644 bootloaders/stk500v2/avr_cpunames.h delete mode 100644 bootloaders/stk500v2/avrinterruptnames.h delete mode 100644 bootloaders/stk500v2/command.h delete mode 100644 bootloaders/stk500v2/stk500boot.c delete mode 100644 bootloaders/stk500v2/stk500boot.ppg delete mode 100644 bootloaders/stk500v2/stk500boot_v2_mega2560.hex delete mode 100644 variants/eightanaloginputs/pins_arduino.h delete mode 100644 variants/ethernet/pins_arduino.h delete mode 100644 variants/gemma/pins_arduino.h delete mode 100644 variants/mega/pins_arduino.h delete mode 100644 variants/standard/pins_arduino.h diff --git a/boards.txt b/boards.txt index e2f3707..7fa74a5 100644 --- a/boards.txt +++ b/boards.txt @@ -46,239 +46,6 @@ yun.build.extra_flags={build.usb_flags} ############################################################## -uno.name=Arduino/Genuino Uno - -uno.vid.0=0x2341 -uno.pid.0=0x0043 -uno.vid.1=0x2341 -uno.pid.1=0x0001 -uno.vid.2=0x2A03 -uno.pid.2=0x0043 -uno.vid.3=0x2341 -uno.pid.3=0x0243 - -uno.upload.tool=avrdude -uno.upload.protocol=arduino -uno.upload.maximum_size=32256 -uno.upload.maximum_data_size=2048 -uno.upload.speed=115200 - -uno.bootloader.tool=avrdude -uno.bootloader.low_fuses=0xFF -uno.bootloader.high_fuses=0xDE -uno.bootloader.extended_fuses=0xFD -uno.bootloader.unlock_bits=0x3F -uno.bootloader.lock_bits=0x0F -uno.bootloader.file=optiboot/optiboot_atmega328.hex - -uno.build.mcu=atmega328p -uno.build.f_cpu=16000000L -uno.build.board=AVR_UNO -uno.build.core=arduino -uno.build.variant=standard - -############################################################## - -diecimila.name=Arduino Duemilanove or Diecimila - -diecimila.upload.tool=avrdude -diecimila.upload.protocol=arduino - -diecimila.bootloader.tool=avrdude -diecimila.bootloader.low_fuses=0xFF -diecimila.bootloader.unlock_bits=0x3F -diecimila.bootloader.lock_bits=0x0F - -diecimila.build.f_cpu=16000000L -diecimila.build.board=AVR_DUEMILANOVE -diecimila.build.core=arduino -diecimila.build.variant=standard - -## Arduino Duemilanove or Diecimila w/ ATmega328P -## ---------------------------------------------- -diecimila.menu.cpu.atmega328=ATmega328P - -diecimila.menu.cpu.atmega328.upload.maximum_size=30720 -diecimila.menu.cpu.atmega328.upload.maximum_data_size=2048 -diecimila.menu.cpu.atmega328.upload.speed=57600 - -diecimila.menu.cpu.atmega328.bootloader.high_fuses=0xDA -diecimila.menu.cpu.atmega328.bootloader.extended_fuses=0xFD -diecimila.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex - -diecimila.menu.cpu.atmega328.build.mcu=atmega328p - -## Arduino Duemilanove or Diecimila w/ ATmega168 -## --------------------------------------------- -diecimila.menu.cpu.atmega168=ATmega168 - -diecimila.menu.cpu.atmega168.upload.maximum_size=14336 -diecimila.menu.cpu.atmega168.upload.maximum_data_size=1024 -diecimila.menu.cpu.atmega168.upload.speed=19200 - -diecimila.menu.cpu.atmega168.bootloader.high_fuses=0xdd -diecimila.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 -diecimila.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex - -diecimila.menu.cpu.atmega168.build.mcu=atmega168 - -############################################################## - -nano.name=Arduino Nano - -nano.upload.tool=avrdude -nano.upload.protocol=arduino - -nano.bootloader.tool=avrdude -nano.bootloader.unlock_bits=0x3F -nano.bootloader.lock_bits=0x0F - -nano.build.f_cpu=16000000L -nano.build.board=AVR_NANO -nano.build.core=arduino -nano.build.variant=eightanaloginputs - -## Arduino Nano w/ ATmega328P -## -------------------------- -nano.menu.cpu.atmega328=ATmega328P - -nano.menu.cpu.atmega328.upload.maximum_size=30720 -nano.menu.cpu.atmega328.upload.maximum_data_size=2048 -nano.menu.cpu.atmega328.upload.speed=115200 - -nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF -nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA -nano.menu.cpu.atmega328.bootloader.extended_fuses=0xFD -nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex - -nano.menu.cpu.atmega328.build.mcu=atmega328p - -## Arduino Nano w/ ATmega328P (old bootloader) -## -------------------------- -nano.menu.cpu.atmega328old=ATmega328P (Old Bootloader) - -nano.menu.cpu.atmega328old.upload.maximum_size=30720 -nano.menu.cpu.atmega328old.upload.maximum_data_size=2048 -nano.menu.cpu.atmega328old.upload.speed=57600 - -nano.menu.cpu.atmega328old.bootloader.low_fuses=0xFF -nano.menu.cpu.atmega328old.bootloader.high_fuses=0xDA -nano.menu.cpu.atmega328old.bootloader.extended_fuses=0xFD -nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex - -nano.menu.cpu.atmega328old.build.mcu=atmega328p - -## Arduino Nano w/ ATmega168 -## ------------------------- -nano.menu.cpu.atmega168=ATmega168 - -nano.menu.cpu.atmega168.upload.maximum_size=14336 -nano.menu.cpu.atmega168.upload.maximum_data_size=1024 -nano.menu.cpu.atmega168.upload.speed=19200 - -nano.menu.cpu.atmega168.bootloader.low_fuses=0xff -nano.menu.cpu.atmega168.bootloader.high_fuses=0xdd -nano.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 -nano.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex - -nano.menu.cpu.atmega168.build.mcu=atmega168 - -############################################################## - -mega.name=Arduino/Genuino Mega or Mega 2560 - -mega.vid.0=0x2341 -mega.pid.0=0x0010 -mega.vid.1=0x2341 -mega.pid.1=0x0042 -mega.vid.2=0x2A03 -mega.pid.2=0x0010 -mega.vid.3=0x2A03 -mega.pid.3=0x0042 -mega.vid.4=0x2341 -mega.pid.4=0x0210 -mega.vid.5=0x2341 -mega.pid.5=0x0242 - -mega.upload.tool=avrdude -mega.upload.maximum_data_size=8192 - -mega.bootloader.tool=avrdude -mega.bootloader.low_fuses=0xFF -mega.bootloader.unlock_bits=0x3F -mega.bootloader.lock_bits=0x0F - -mega.build.f_cpu=16000000L -mega.build.core=arduino -mega.build.variant=mega -# default board may be overridden by the cpu menu -mega.build.board=AVR_MEGA2560 - -## Arduino/Genuino Mega w/ ATmega2560 -## ------------------------- -mega.menu.cpu.atmega2560=ATmega2560 (Mega 2560) - -mega.menu.cpu.atmega2560.upload.protocol=wiring -mega.menu.cpu.atmega2560.upload.maximum_size=253952 -mega.menu.cpu.atmega2560.upload.speed=115200 - -mega.menu.cpu.atmega2560.bootloader.high_fuses=0xD8 -mega.menu.cpu.atmega2560.bootloader.extended_fuses=0xFD -mega.menu.cpu.atmega2560.bootloader.file=stk500v2/stk500boot_v2_mega2560.hex - -mega.menu.cpu.atmega2560.build.mcu=atmega2560 -mega.menu.cpu.atmega2560.build.board=AVR_MEGA2560 - -## Arduino Mega w/ ATmega1280 -## ------------------------- -mega.menu.cpu.atmega1280=ATmega1280 - -mega.menu.cpu.atmega1280.upload.protocol=arduino -mega.menu.cpu.atmega1280.upload.maximum_size=126976 -mega.menu.cpu.atmega1280.upload.speed=57600 - -mega.menu.cpu.atmega1280.bootloader.high_fuses=0xDA -mega.menu.cpu.atmega1280.bootloader.extended_fuses=0xF5 -mega.menu.cpu.atmega1280.bootloader.file=atmega/ATmegaBOOT_168_atmega1280.hex - -mega.menu.cpu.atmega1280.build.mcu=atmega1280 -mega.menu.cpu.atmega1280.build.board=AVR_MEGA - -############################################################## - -megaADK.name=Arduino Mega ADK - -megaADK.vid.0=0x2341 -megaADK.pid.0=0x003f -megaADK.vid.1=0x2341 -megaADK.pid.1=0x0044 -megaADK.vid.2=0x2A03 -megaADK.pid.2=0x003f -megaADK.vid.3=0x2A03 -megaADK.pid.3=0x0044 - -megaADK.upload.tool=avrdude -megaADK.upload.protocol=wiring -megaADK.upload.maximum_size=253952 -megaADK.upload.maximum_data_size=8192 -megaADK.upload.speed=115200 - -megaADK.bootloader.tool=avrdude -megaADK.bootloader.low_fuses=0xFF -megaADK.bootloader.high_fuses=0xD8 -megaADK.bootloader.extended_fuses=0xFD -megaADK.bootloader.file=stk500v2/stk500boot_v2_mega2560.hex -megaADK.bootloader.unlock_bits=0x3F -megaADK.bootloader.lock_bits=0x0F - -megaADK.build.mcu=atmega2560 -megaADK.build.f_cpu=16000000L -megaADK.build.board=AVR_ADK -megaADK.build.core=arduino -megaADK.build.variant=mega - -############################################################## - leonardo.name=Arduino Leonardo leonardo.vid.0=0x2341 leonardo.pid.0=0x0036 @@ -450,142 +217,6 @@ esplora.build.extra_flags={build.usb_flags} ############################################################## -mini.name=Arduino Mini - -mini.upload.tool=avrdude -mini.upload.protocol=arduino - -mini.bootloader.tool=avrdude -mini.bootloader.low_fuses=0xff -mini.bootloader.unlock_bits=0x3F -mini.bootloader.lock_bits=0x0F - -mini.build.f_cpu=16000000L -mini.build.board=AVR_MINI -mini.build.core=arduino -mini.build.variant=eightanaloginputs - -## Arduino Mini w/ ATmega328P -## -------------------------- -mini.menu.cpu.atmega328=ATmega328P - -mini.menu.cpu.atmega328.upload.maximum_size=28672 -mini.menu.cpu.atmega328.upload.maximum_data_size=2048 -mini.menu.cpu.atmega328.upload.speed=115200 - -mini.menu.cpu.atmega328.bootloader.high_fuses=0xd8 -mini.menu.cpu.atmega328.bootloader.extended_fuses=0xFD -mini.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328-Mini.hex - -mini.menu.cpu.atmega328.build.mcu=atmega328p - -## Arduino Mini w/ ATmega168 -## ------------------------- -mini.menu.cpu.atmega168=ATmega168 - -mini.menu.cpu.atmega168.upload.maximum_size=14336 -mini.menu.cpu.atmega168.upload.maximum_data_size=1024 -mini.menu.cpu.atmega168.upload.speed=19200 - -mini.menu.cpu.atmega168.bootloader.high_fuses=0xdd -mini.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 -mini.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_ng.hex - -mini.menu.cpu.atmega168.build.mcu=atmega168 - -############################################################## - -ethernet.name=Arduino Ethernet - -ethernet.upload.tool=avrdude -ethernet.upload.protocol=arduino -ethernet.upload.maximum_size=32256 -ethernet.upload.maximum_data_size=2048 -ethernet.upload.speed=115200 - -ethernet.bootloader.tool=avrdude -ethernet.bootloader.low_fuses=0xff -ethernet.bootloader.high_fuses=0xde -ethernet.bootloader.extended_fuses=0xFD -ethernet.bootloader.file=optiboot/optiboot_atmega328.hex -ethernet.bootloader.unlock_bits=0x3F -ethernet.bootloader.lock_bits=0x0F - -ethernet.build.variant=ethernet -ethernet.build.mcu=atmega328p -ethernet.build.f_cpu=16000000L -ethernet.build.board=AVR_ETHERNET -ethernet.build.core=arduino - -############################################################## - -fio.name=Arduino Fio - -fio.upload.tool=avrdude -fio.upload.protocol=arduino -fio.upload.maximum_size=30720 -fio.upload.maximum_data_size=2048 -fio.upload.speed=57600 - -fio.bootloader.tool=avrdude -fio.bootloader.low_fuses=0xFF -fio.bootloader.high_fuses=0xDA -fio.bootloader.extended_fuses=0xFD -fio.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex -fio.bootloader.unlock_bits=0x3F -fio.bootloader.lock_bits=0x0F - -fio.build.mcu=atmega328p -fio.build.f_cpu=8000000L -fio.build.board=AVR_FIO -fio.build.core=arduino -fio.build.variant=eightanaloginputs - -############################################################## - -bt.name=Arduino BT - -bt.upload.tool=avrdude -bt.upload.protocol=arduino -bt.upload.speed=19200 -bt.upload.disable_flushing=true - -bt.bootloader.tool=avrdude -bt.bootloader.low_fuses=0xff -bt.bootloader.unlock_bits=0x3F -bt.bootloader.lock_bits=0x0F - -bt.build.f_cpu=16000000L -bt.build.board=AVR_BT -bt.build.core=arduino -bt.build.variant=eightanaloginputs - -## Arduino BT w/ ATmega328P -## ------------------------ -bt.menu.cpu.atmega328=ATmega328P -bt.menu.cpu.atmega328.upload.maximum_size=28672 -bt.menu.cpu.atmega328.upload.maximum_data_size=2048 - -bt.menu.cpu.atmega328.bootloader.high_fuses=0xd8 -bt.menu.cpu.atmega328.bootloader.extended_fuses=0xFD -bt.menu.cpu.atmega328.bootloader.file=bt/ATmegaBOOT_168_atmega328_bt.hex - -bt.menu.cpu.atmega328.build.mcu=atmega328p - -## Arduino BT w/ ATmega168 -## ----------------------- -bt.menu.cpu.atmega168=ATmega168 -bt.menu.cpu.atmega168.upload.maximum_size=14336 -bt.menu.cpu.atmega168.upload.maximum_data_size=1024 - -bt.menu.cpu.atmega168.bootloader.high_fuses=0xdd -bt.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 -bt.menu.cpu.atmega168.bootloader.file=bt/ATmegaBOOT_168.hex - -bt.menu.cpu.atmega168.build.mcu=atmega168 - -############################################################## - LilyPadUSB.name=LilyPad Arduino USB LilyPadUSB.vid.0=0x1B4F LilyPadUSB.pid.0=0x9207 @@ -621,177 +252,6 @@ LilyPadUSB.build.extra_flags={build.usb_flags} ############################################################## -lilypad.name=LilyPad Arduino - -lilypad.upload.tool=avrdude -lilypad.upload.protocol=arduino - -lilypad.bootloader.tool=avrdude -lilypad.bootloader.unlock_bits=0x3F -lilypad.bootloader.lock_bits=0x0F - -lilypad.build.f_cpu=8000000L -lilypad.build.board=AVR_LILYPAD -lilypad.build.core=arduino -lilypad.build.variant=standard - -## LilyPad Arduino w/ ATmega328P -## ----------------------------- -lilypad.menu.cpu.atmega328=ATmega328P - -lilypad.menu.cpu.atmega328.upload.maximum_size=30720 -lilypad.menu.cpu.atmega328.upload.maximum_data_size=2048 -lilypad.menu.cpu.atmega328.upload.speed=57600 - -lilypad.menu.cpu.atmega328.bootloader.low_fuses=0xFF -lilypad.menu.cpu.atmega328.bootloader.high_fuses=0xDA -lilypad.menu.cpu.atmega328.bootloader.extended_fuses=0xFD -lilypad.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex - -lilypad.menu.cpu.atmega328.build.mcu=atmega328p - -## LilyPad Arduino w/ ATmega168 -## ---------------------------- -lilypad.menu.cpu.atmega168=ATmega168 - -lilypad.menu.cpu.atmega168.upload.maximum_size=14336 -lilypad.menu.cpu.atmega168.upload.maximum_data_size=1024 -lilypad.menu.cpu.atmega168.upload.speed=19200 - -lilypad.menu.cpu.atmega168.bootloader.low_fuses=0xe2 -lilypad.menu.cpu.atmega168.bootloader.high_fuses=0xdd -lilypad.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 -lilypad.menu.cpu.atmega168.bootloader.file=lilypad/LilyPadBOOT_168.hex - -lilypad.menu.cpu.atmega168.build.mcu=atmega168 - -############################################################## - -pro.name=Arduino Pro or Pro Mini - -pro.upload.tool=avrdude -pro.upload.protocol=arduino - -pro.bootloader.tool=avrdude -pro.bootloader.unlock_bits=0x3F -pro.bootloader.lock_bits=0x0F - -pro.build.board=AVR_PRO -pro.build.core=arduino -pro.build.variant=eightanaloginputs - -## Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328P -## -------------------------------------------------- -pro.menu.cpu.16MHzatmega328=ATmega328P (5V, 16 MHz) - -pro.menu.cpu.16MHzatmega328.upload.maximum_size=30720 -pro.menu.cpu.16MHzatmega328.upload.maximum_data_size=2048 -pro.menu.cpu.16MHzatmega328.upload.speed=57600 - -pro.menu.cpu.16MHzatmega328.bootloader.low_fuses=0xFF -pro.menu.cpu.16MHzatmega328.bootloader.high_fuses=0xDA -pro.menu.cpu.16MHzatmega328.bootloader.extended_fuses=0xFD -pro.menu.cpu.16MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex - -pro.menu.cpu.16MHzatmega328.build.mcu=atmega328p -pro.menu.cpu.16MHzatmega328.build.f_cpu=16000000L - -## Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328P -## --------------------------------------------------- -pro.menu.cpu.8MHzatmega328=ATmega328P (3.3V, 8 MHz) - -pro.menu.cpu.8MHzatmega328.upload.maximum_size=30720 -pro.menu.cpu.8MHzatmega328.upload.maximum_data_size=2048 -pro.menu.cpu.8MHzatmega328.upload.speed=57600 - -pro.menu.cpu.8MHzatmega328.bootloader.low_fuses=0xFF -pro.menu.cpu.8MHzatmega328.bootloader.high_fuses=0xDA -pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0xFD -pro.menu.cpu.8MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex - -pro.menu.cpu.8MHzatmega328.build.mcu=atmega328p -pro.menu.cpu.8MHzatmega328.build.f_cpu=8000000L - -## Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168 -## ------------------------------------------------- -pro.menu.cpu.16MHzatmega168=ATmega168 (5V, 16 MHz) - -pro.menu.cpu.16MHzatmega168.upload.maximum_size=14336 -pro.menu.cpu.16MHzatmega168.upload.maximum_data_size=1024 -pro.menu.cpu.16MHzatmega168.upload.speed=19200 - -pro.menu.cpu.16MHzatmega168.bootloader.low_fuses=0xff -pro.menu.cpu.16MHzatmega168.bootloader.high_fuses=0xdd -pro.menu.cpu.16MHzatmega168.bootloader.extended_fuses=0xF8 -pro.menu.cpu.16MHzatmega168.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex - -pro.menu.cpu.16MHzatmega168.build.mcu=atmega168 -pro.menu.cpu.16MHzatmega168.build.f_cpu=16000000L - -## Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168 -## -------------------------------------------------- -pro.menu.cpu.8MHzatmega168=ATmega168 (3.3V, 8 MHz) - -pro.menu.cpu.8MHzatmega168.upload.maximum_size=14336 -pro.menu.cpu.8MHzatmega168.upload.maximum_data_size=1024 -pro.menu.cpu.8MHzatmega168.upload.speed=19200 - -pro.menu.cpu.8MHzatmega168.bootloader.low_fuses=0xc6 -pro.menu.cpu.8MHzatmega168.bootloader.high_fuses=0xdd -pro.menu.cpu.8MHzatmega168.bootloader.extended_fuses=0xF8 -pro.menu.cpu.8MHzatmega168.bootloader.file=atmega/ATmegaBOOT_168_pro_8MHz.hex - -pro.menu.cpu.8MHzatmega168.build.mcu=atmega168 -pro.menu.cpu.8MHzatmega168.build.f_cpu=8000000L - -############################################################## - -atmegang.name=Arduino NG or older - -atmegang.upload.tool=avrdude -atmegang.upload.protocol=arduino -atmegang.upload.speed=19200 - -atmegang.bootloader.tool=avrdude -atmegang.bootloader.unlock_bits=0x3F -atmegang.bootloader.lock_bits=0x0F - -atmegang.build.mcu=atmegang -atmegang.build.f_cpu=16000000L -atmegang.build.board=AVR_NG -atmegang.build.core=arduino -atmegang.build.variant=standard - -## Arduino NG or older w/ ATmega168 -## -------------------------------- -atmegang.menu.cpu.atmega168=ATmega168 - -atmegang.menu.cpu.atmega168.upload.maximum_size=14336 -atmegang.menu.cpu.atmega168.upload.maximum_data_size=1024 - -atmegang.menu.cpu.atmega168.bootloader.low_fuses=0xff -atmegang.menu.cpu.atmega168.bootloader.high_fuses=0xdd -atmegang.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 -atmegang.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_ng.hex - -atmegang.menu.cpu.atmega168.build.mcu=atmega168 - -## Arduino NG or older w/ ATmega8 -## ------------------------------ -atmegang.menu.cpu.atmega8=ATmega8 - -atmegang.menu.cpu.atmega8.upload.maximum_size=7168 -atmegang.menu.cpu.atmega8.upload.maximum_data_size=1024 - -atmegang.menu.cpu.atmega8.bootloader.low_fuses=0xdf -atmegang.menu.cpu.atmega8.bootloader.high_fuses=0xca -atmegang.menu.cpu.atmega8.bootloader.extended_fuses= -atmegang.menu.cpu.atmega8.bootloader.file=atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex - -atmegang.menu.cpu.atmega8.build.mcu=atmega8 - -############################################################## - robotControl.name=Arduino Robot Control robotControl.vid.0=0x2341 robotControl.pid.0=0x0038 @@ -870,30 +330,6 @@ robotMotor.build.extra_flags={build.usb_flags} ############################################################## -gemma.vid.0=0x2341 -gemma.pid.0=0x0c9f - -gemma.name=Arduino Gemma - -gemma.bootloader.low_fuses=0xF1 -gemma.bootloader.high_fuses=0xD5 -gemma.bootloader.extended_fuses=0xFE -gemma.bootloader.tool=avrdude -gemma.bootloader.lock_bits= -gemma.bootloader.unlock_bits= -gemma.bootloader.file=gemma/gemma_v1.hex - -gemma.build.mcu=attiny85 -gemma.build.f_cpu=8000000L -gemma.build.core=arduino -gemma.build.variant=gemma -gemma.build.board=AVR_GEMMA - -gemma.upload.tool=avrdude -gemma.upload.maximum_size=5310 - -############################################################## - # Adafruit Circuit Playground 32u4 w/Caterina Configuration circuitplay32u4cat.name=Adafruit Circuit Playground circuitplay32u4cat.bootloader.low_fuses=0xff @@ -1033,36 +469,3 @@ one.build.board=AVR_LININO_ONE one.build.core=arduino one.build.variant=yun one.build.extra_flags={build.usb_flags} - -############################################################## - -unowifi.name=Arduino Uno WiFi -unowifi.vid.0=0x2A03 -unowifi.pid.0=0x0057 - -unowifi.upload.tool=avrdude -unowifi.upload.protocol=arduino -unowifi.upload.maximum_size=32256 -unowifi.upload.maximum_data_size=2048 -unowifi.upload.speed=115200 -unowifi.upload.network.endpoint_upload=/pgm/upload -unowifi.upload.network.endpoint_sync=/pgm/sync -unowifi.upload.network.sync_return=204:SYNC -unowifi.upload.network.endpoint_reset=/log/reset -unowifi.upload.network.port=80 - -unowifi.bootloader.tool=avrdude -unowifi.bootloader.low_fuses=0xFF -unowifi.bootloader.high_fuses=0xDE -unowifi.bootloader.extended_fuses=0x05 -unowifi.bootloader.unlock_bits=0x3F -unowifi.bootloader.lock_bits=0x0F -unowifi.bootloader.file=optiboot/optiboot_atmega328.hex - -unowifi.build.mcu=atmega328p -unowifi.build.f_cpu=16000000L -unowifi.build.board=AVR_UNO_WIFI_DEV_ED -unowifi.build.core=arduino -unowifi.build.variant=standard -unowifi.build.esp_ch_uart_br=19200 -unowifi.build.extra_flags=-DESP_CH_UART -DESP_CH_UART_BR={build.esp_ch_uart_br} diff --git a/bootloaders/atmega/ATmegaBOOT_168.c b/bootloaders/atmega/ATmegaBOOT_168.c deleted file mode 100644 index ff2c4e4..0000000 --- a/bootloaders/atmega/ATmegaBOOT_168.c +++ /dev/null @@ -1,1057 +0,0 @@ -/**********************************************************/ -/* Serial Bootloader for Atmel megaAVR Controllers */ -/* */ -/* tested with ATmega8, ATmega128 and ATmega168 */ -/* should work with other mega's, see code for details */ -/* */ -/* ATmegaBOOT.c */ -/* */ -/* */ -/* 20090308: integrated Mega changes into main bootloader */ -/* source by D. Mellis */ -/* 20080930: hacked for Arduino Mega (with the 1280 */ -/* processor, backwards compatible) */ -/* by D. Cuartielles */ -/* 20070626: hacked for Arduino Diecimila (which auto- */ -/* resets when a USB connection is made to it) */ -/* by D. Mellis */ -/* 20060802: hacked for Arduino by D. Cuartielles */ -/* based on a previous hack by D. Mellis */ -/* and D. Cuartielles */ -/* */ -/* Monitor and debug functions were added to the original */ -/* code by Dr. Erik Lins, chip45.com. (See below) */ -/* */ -/* Thanks to Karl Pitrich for fixing a bootloader pin */ -/* problem and more informative LED blinking! */ -/* */ -/* For the latest version see: */ -/* http://www.chip45.com/ */ -/* */ -/* ------------------------------------------------------ */ -/* */ -/* based on stk500boot.c */ -/* Copyright (c) 2003, Jason P. Kyle */ -/* All rights reserved. */ -/* see avr1.org for original file and information */ -/* */ -/* This program is free software; you can redistribute it */ -/* and/or modify it under the terms of the GNU General */ -/* Public License as published by the Free Software */ -/* Foundation; either version 2 of the License, or */ -/* (at your option) any later version. */ -/* */ -/* This program is distributed in the hope that it will */ -/* be useful, but WITHOUT ANY WARRANTY; without even the */ -/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ -/* PARTICULAR PURPOSE. See the GNU General Public */ -/* License for more details. */ -/* */ -/* You should have received a copy of the GNU General */ -/* Public License along with this program; if not, write */ -/* to the Free Software Foundation, Inc., */ -/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* */ -/* Licence can be viewed at */ -/* http://www.fsf.org/licenses/gpl.txt */ -/* */ -/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ -/* m8515,m8535. ATmega161 has a very small boot block so */ -/* isn't supported. */ -/* */ -/* Tested with m168 */ -/**********************************************************/ - - -/* some includes */ -#include -#include -#include -#include -#include -#include - -/* the current avr-libc eeprom functions do not support the ATmega168 */ -/* own eeprom write/read functions are used instead */ -#if !defined(__AVR_ATmega168__) || !defined(__AVR_ATmega328P__) || !defined(__AVR_ATmega328__) -#include -#endif - -/* Use the F_CPU defined in Makefile */ - -/* 20060803: hacked by DojoCorp */ -/* 20070626: hacked by David A. Mellis to decrease waiting time for auto-reset */ -/* set the waiting time for the bootloader */ -/* get this from the Makefile instead */ -/* #define MAX_TIME_COUNT (F_CPU>>4) */ - -/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ -#define MAX_ERROR_COUNT 5 - -/* set the UART baud rate */ -/* 20060803: hacked by DojoCorp */ -//#define BAUD_RATE 115200 -#ifndef BAUD_RATE -#define BAUD_RATE 19200 -#endif - - -/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ -/* never allow AVR Studio to do an update !!!! */ -#define HW_VER 0x02 -#define SW_MAJOR 0x01 -#define SW_MINOR 0x10 - - -/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ -/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ -/* ATmega1280 has four UARTS, but for Arduino Mega, we will only use RXD0 to get code */ -/* BL0... means UART0, BL1... means UART1 */ -#ifdef __AVR_ATmega128__ -#define BL_DDR DDRF -#define BL_PORT PORTF -#define BL_PIN PINF -#define BL0 PINF7 -#define BL1 PINF6 -#elif defined __AVR_ATmega1280__ -/* we just don't do anything for the MEGA and enter bootloader on reset anyway*/ -#else -/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ -#define BL_DDR DDRD -#define BL_PORT PORTD -#define BL_PIN PIND -#define BL PIND6 -#endif - - -/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ -/* if monitor functions are included, LED goes on after monitor was entered */ -#if defined __AVR_ATmega128__ || defined __AVR_ATmega1280__ -/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128, Arduino Mega) */ -#define LED_DDR DDRB -#define LED_PORT PORTB -#define LED_PIN PINB -#define LED PINB7 -#else -/* Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, and Duomilanuove */ -/* other boards like e.g. Crumb8, Crumb168 are using PB2 */ -#define LED_DDR DDRB -#define LED_PORT PORTB -#define LED_PIN PINB -#define LED PINB5 -#endif - - -/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ -#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) -#define MONITOR 1 -#endif - - -/* define various device id's */ -/* manufacturer byte is always the same */ -#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( - -#if defined __AVR_ATmega1280__ -#define SIG2 0x97 -#define SIG3 0x03 -#define PAGE_SIZE 0x80U //128 words - -#elif defined __AVR_ATmega1281__ -#define SIG2 0x97 -#define SIG3 0x04 -#define PAGE_SIZE 0x80U //128 words - -#elif defined __AVR_ATmega128__ -#define SIG2 0x97 -#define SIG3 0x02 -#define PAGE_SIZE 0x80U //128 words - -#elif defined __AVR_ATmega64__ -#define SIG2 0x96 -#define SIG3 0x02 -#define PAGE_SIZE 0x80U //128 words - -#elif defined __AVR_ATmega32__ -#define SIG2 0x95 -#define SIG3 0x02 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega16__ -#define SIG2 0x94 -#define SIG3 0x03 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega8__ -#define SIG2 0x93 -#define SIG3 0x07 -#define PAGE_SIZE 0x20U //32 words - -#elif defined __AVR_ATmega88__ -#define SIG2 0x93 -#define SIG3 0x0a -#define PAGE_SIZE 0x20U //32 words - -#elif defined __AVR_ATmega168__ -#define SIG2 0x94 -#define SIG3 0x06 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega328P__ -#define SIG2 0x95 -#define SIG3 0x0F -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega328__ -#define SIG2 0x95 -#define SIG3 0x14 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega162__ -#define SIG2 0x94 -#define SIG3 0x04 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega163__ -#define SIG2 0x94 -#define SIG3 0x02 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega169__ -#define SIG2 0x94 -#define SIG3 0x05 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega8515__ -#define SIG2 0x93 -#define SIG3 0x06 -#define PAGE_SIZE 0x20U //32 words - -#elif defined __AVR_ATmega8535__ -#define SIG2 0x93 -#define SIG3 0x08 -#define PAGE_SIZE 0x20U //32 words -#endif - - -/* function prototypes */ -void putch(char); -char getch(void); -void getNch(uint8_t); -void byte_response(uint8_t); -void nothing_response(void); -char gethex(void); -void puthex(char); -void flash_led(uint8_t); - -/* some variables */ -union address_union { - uint16_t word; - uint8_t byte[2]; -} address; - -union length_union { - uint16_t word; - uint8_t byte[2]; -} length; - -struct flags_struct { - unsigned eeprom : 1; - unsigned rampz : 1; -} flags; - -uint8_t buff[256]; -uint8_t address_high; - -uint8_t pagesz=0x80; - -uint8_t i; -uint8_t bootuart = 0; - -uint8_t error_count = 0; - -void (*app_start)(void) = 0x0000; - - -/* main program starts here */ -int main(void) -{ - uint8_t ch,ch2; - uint16_t w; - -#ifdef WATCHDOG_MODS - ch = MCUSR; - MCUSR = 0; - - WDTCSR |= _BV(WDCE) | _BV(WDE); - WDTCSR = 0; - - // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. - if (! (ch & _BV(EXTRF))) // if its a not an external reset... - app_start(); // skip bootloader -#else - asm volatile("nop\n\t"); -#endif - - /* set pin direction for bootloader pin and enable pullup */ - /* for ATmega128, two pins need to be initialized */ -#ifdef __AVR_ATmega128__ - BL_DDR &= ~_BV(BL0); - BL_DDR &= ~_BV(BL1); - BL_PORT |= _BV(BL0); - BL_PORT |= _BV(BL1); -#else - /* We run the bootloader regardless of the state of this pin. Thus, don't - put it in a different state than the other pins. --DAM, 070709 - This also applies to Arduino Mega -- DC, 080930 - BL_DDR &= ~_BV(BL); - BL_PORT |= _BV(BL); - */ -#endif - - -#ifdef __AVR_ATmega128__ - /* check which UART should be used for booting */ - if(bit_is_clear(BL_PIN, BL0)) { - bootuart = 1; - } - else if(bit_is_clear(BL_PIN, BL1)) { - bootuart = 2; - } -#endif - -#if defined __AVR_ATmega1280__ - /* the mega1280 chip has four serial ports ... we could eventually use any of them, or not? */ - /* however, we don't wanna confuse people, to avoid making a mess, we will stick to RXD0, TXD0 */ - bootuart = 1; -#endif - - /* check if flash is programmed already, if not start bootloader anyway */ - if(pgm_read_byte_near(0x0000) != 0xFF) { - -#ifdef __AVR_ATmega128__ - /* no UART was selected, start application */ - if(!bootuart) { - app_start(); - } -#else - /* check if bootloader pin is set low */ - /* we don't start this part neither for the m8, nor m168 */ - //if(bit_is_set(BL_PIN, BL)) { - // app_start(); - // } -#endif - } - -#ifdef __AVR_ATmega128__ - /* no bootuart was selected, default to uart 0 */ - if(!bootuart) { - bootuart = 1; - } -#endif - - - /* initialize UART(s) depending on CPU defined */ -#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) - if(bootuart == 1) { - UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSR0A = 0x00; - UCSR0C = 0x06; - UCSR0B = _BV(TXEN0)|_BV(RXEN0); - } - if(bootuart == 2) { - UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSR1A = 0x00; - UCSR1C = 0x06; - UCSR1B = _BV(TXEN1)|_BV(RXEN1); - } -#elif defined __AVR_ATmega163__ - UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSRA = 0x00; - UCSRB = _BV(TXEN)|_BV(RXEN); -#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__) - -#ifdef DOUBLE_SPEED - UCSR0A = (1<> 8; -#else - UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; -#endif - - UCSR0B = (1<>8; // set baud rate - UBRRL = (((F_CPU/BAUD_RATE)/16)-1); - UCSRB = (1<> 8; - UCSRA = 0x00; - UCSRC = 0x06; - UCSRB = _BV(TXEN)|_BV(RXEN); -#endif - -#if defined __AVR_ATmega1280__ - /* Enable internal pull-up resistor on pin D0 (RX), in order - to supress line noise that prevents the bootloader from - timing out (DAM: 20070509) */ - /* feature added to the Arduino Mega --DC: 080930 */ - DDRE &= ~_BV(PINE0); - PORTE |= _BV(PINE0); -#endif - - - /* set LED pin as output */ - LED_DDR |= _BV(LED); - - - /* flash onboard LED to signal entering of bootloader */ -#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) - // 4x for UART0, 5x for UART1 - flash_led(NUM_LED_FLASHES + bootuart); -#else - flash_led(NUM_LED_FLASHES); -#endif - - /* 20050803: by DojoCorp, this is one of the parts provoking the - system to stop listening, cancelled from the original */ - //putch('\0'); - - /* forever loop */ - for (;;) { - - /* get character from UART */ - ch = getch(); - - /* A bunch of if...else if... gives smaller code than switch...case ! */ - - /* Hello is anyone home ? */ - if(ch=='0') { - nothing_response(); - } - - - /* Request programmer ID */ - /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ - /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ - else if(ch=='1') { - if (getch() == ' ') { - putch(0x14); - putch('A'); - putch('V'); - putch('R'); - putch(' '); - putch('I'); - putch('S'); - putch('P'); - putch(0x10); - } else { - if (++error_count == MAX_ERROR_COUNT) - app_start(); - } - } - - - /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ - else if(ch=='@') { - ch2 = getch(); - if (ch2>0x85) getch(); - nothing_response(); - } - - - /* AVR ISP/STK500 board requests */ - else if(ch=='A') { - ch2 = getch(); - if(ch2==0x80) byte_response(HW_VER); // Hardware version - else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version - else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version - else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 - else byte_response(0x00); // Covers various unnecessary responses we don't care about - } - - - /* Device Parameters DON'T CARE, DEVICE IS FIXED */ - else if(ch=='B') { - getNch(20); - nothing_response(); - } - - - /* Parallel programming stuff DON'T CARE */ - else if(ch=='E') { - getNch(5); - nothing_response(); - } - - - /* P: Enter programming mode */ - /* R: Erase device, don't care as we will erase one page at a time anyway. */ - else if(ch=='P' || ch=='R') { - nothing_response(); - } - - - /* Leave programming mode */ - else if(ch=='Q') { - nothing_response(); -#ifdef WATCHDOG_MODS - // autoreset via watchdog (sneaky!) - WDTCSR = _BV(WDE); - while (1); // 16 ms -#endif - } - - - /* Set address, little endian. EEPROM in bytes, FLASH in words */ - /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ - /* This might explain why little endian was used here, big endian used everywhere else. */ - else if(ch=='U') { - address.byte[0] = getch(); - address.byte[1] = getch(); - nothing_response(); - } - - - /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ - else if(ch=='V') { - if (getch() == 0x30) { - getch(); - ch = getch(); - getch(); - if (ch == 0) { - byte_response(SIG1); - } else if (ch == 1) { - byte_response(SIG2); - } else { - byte_response(SIG3); - } - } else { - getNch(3); - byte_response(0x00); - } - } - - - /* Write memory, length is big endian and is in bytes */ - else if(ch=='d') { - length.byte[1] = getch(); - length.byte[0] = getch(); - flags.eeprom = 0; - if (getch() == 'E') flags.eeprom = 1; - for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME - else address_high = 0x00; -#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) - RAMPZ = address_high; -#endif - address.word = address.word << 1; //address * 2 -> byte location - /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ - if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes - cli(); //Disable interrupts, just to be sure -#if defined(EEPE) - while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete -#else - while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete -#endif - asm volatile( - "clr r17 \n\t" //page_word_count - "lds r30,address \n\t" //Address of FLASH location (in bytes) - "lds r31,address+1 \n\t" - "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM - "ldi r29,hi8(buff) \n\t" - "lds r24,length \n\t" //Length of data to be written (in bytes) - "lds r25,length+1 \n\t" - "length_loop: \n\t" //Main loop, repeat for number of words in block - "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page - "brne no_page_erase \n\t" - "wait_spm1: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm1 \n\t" - "ldi r16,0x03 \n\t" //Erase page pointed to by Z - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" -#endif - "wait_spm2: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm2 \n\t" - - "ldi r16,0x11 \n\t" //Re-enable RWW section - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" -#endif - "no_page_erase: \n\t" - "ld r0,Y+ \n\t" //Write 2 bytes into page buffer - "ld r1,Y+ \n\t" - - "wait_spm3: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm3 \n\t" - "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer - "sts %0,r16 \n\t" - "spm \n\t" - - "inc r17 \n\t" //page_word_count++ - "cpi r17,%1 \n\t" - "brlo same_page \n\t" //Still same page in FLASH - "write_page: \n\t" - "clr r17 \n\t" //New page, write current one first - "wait_spm4: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm4 \n\t" -#ifdef __AVR_ATmega163__ - "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write -#endif - "ldi r16,0x05 \n\t" //Write page pointed to by Z - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" - "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) -#endif - "wait_spm5: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm5 \n\t" - "ldi r16,0x11 \n\t" //Re-enable RWW section - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" -#endif - "same_page: \n\t" - "adiw r30,2 \n\t" //Next word in FLASH - "sbiw r24,2 \n\t" //length-2 - "breq final_write \n\t" //Finished - "rjmp length_loop \n\t" - "final_write: \n\t" - "cpi r17,0 \n\t" - "breq block_done \n\t" - "adiw r24,2 \n\t" //length+2, fool above check on length after short page write - "rjmp write_page \n\t" - "block_done: \n\t" - "clr __zero_reg__ \n\t" //restore zero register -#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) - : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" -#else - : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" -#endif - ); - /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ - /* exit the bootloader without a power cycle anyhow */ - } - putch(0x14); - putch(0x10); - } else { - if (++error_count == MAX_ERROR_COUNT) - app_start(); - } - } - - - /* Read memory block mode, length is big endian. */ - else if(ch=='t') { - length.byte[1] = getch(); - length.byte[0] = getch(); -#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) - if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME - else flags.rampz = 0; -#endif - address.word = address.word << 1; // address * 2 -> byte location - if (getch() == 'E') flags.eeprom = 1; - else flags.eeprom = 0; - if (getch() == ' ') { // Command terminator - putch(0x14); - for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay - if (flags.eeprom) { // Byte access EEPROM read -#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) - while(EECR & (1<= 'a') { - return (a - 'a' + 0x0a); - } else if(a >= '0') { - return(a - '0'); - } - return a; -} - - -char gethex(void) { - return (gethexnib() << 4) + gethexnib(); -} - - -void puthex(char ch) { - char ah; - - ah = ch >> 4; - if(ah >= 0x0a) { - ah = ah - 0x0a + 'a'; - } else { - ah += '0'; - } - - ch &= 0x0f; - if(ch >= 0x0a) { - ch = ch - 0x0a + 'a'; - } else { - ch += '0'; - } - - putch(ah); - putch(ch); -} - - -void putch(char ch) -{ -#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) - if(bootuart == 1) { - while (!(UCSR0A & _BV(UDRE0))); - UDR0 = ch; - } - else if (bootuart == 2) { - while (!(UCSR1A & _BV(UDRE1))); - UDR1 = ch; - } -#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__) - while (!(UCSR0A & _BV(UDRE0))); - UDR0 = ch; -#else - /* m8,16,32,169,8515,8535,163 */ - while (!(UCSRA & _BV(UDRE))); - UDR = ch; -#endif -} - - -char getch(void) -{ -#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) - uint32_t count = 0; - if(bootuart == 1) { - while(!(UCSR0A & _BV(RXC0))) { - /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ - /* HACKME:: here is a good place to count times*/ - count++; - if (count > MAX_TIME_COUNT) - app_start(); - } - - return UDR0; - } - else if(bootuart == 2) { - while(!(UCSR1A & _BV(RXC1))) { - /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ - /* HACKME:: here is a good place to count times*/ - count++; - if (count > MAX_TIME_COUNT) - app_start(); - } - - return UDR1; - } - return 0; -#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__) - uint32_t count = 0; - while(!(UCSR0A & _BV(RXC0))){ - /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ - /* HACKME:: here is a good place to count times*/ - count++; - if (count > MAX_TIME_COUNT) - app_start(); - } - return UDR0; -#else - /* m8,16,32,169,8515,8535,163 */ - uint32_t count = 0; - while(!(UCSRA & _BV(RXC))){ - /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ - /* HACKME:: here is a good place to count times*/ - count++; - if (count > MAX_TIME_COUNT) - app_start(); - } - return UDR; -#endif -} - - -void getNch(uint8_t count) -{ - while(count--) { -#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) - if(bootuart == 1) { - while(!(UCSR0A & _BV(RXC0))); - UDR0; - } - else if(bootuart == 2) { - while(!(UCSR1A & _BV(RXC1))); - UDR1; - } -#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__) - getch(); -#else - /* m8,16,32,169,8515,8535,163 */ - /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ - //while(!(UCSRA & _BV(RXC))); - //UDR; - getch(); // need to handle time out -#endif - } -} - - -void byte_response(uint8_t val) -{ - if (getch() == ' ') { - putch(0x14); - putch(val); - putch(0x10); - } else { - if (++error_count == MAX_ERROR_COUNT) - app_start(); - } -} - - -void nothing_response(void) -{ - if (getch() == ' ') { - putch(0x14); - putch(0x10); - } else { - if (++error_count == MAX_ERROR_COUNT) - app_start(); - } -} - -void flash_led(uint8_t count) -{ - while (count--) { - LED_PORT |= _BV(LED); - _delay_ms(100); - LED_PORT &= ~_BV(LED); - _delay_ms(100); - } -} - - -/* end of file ATmegaBOOT.c */ diff --git a/bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex b/bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex deleted file mode 100644 index f16e877..0000000 --- a/bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex +++ /dev/null @@ -1,245 +0,0 @@ -:020000021000EC -:10F000000C9472F80C9492F80C9492F80C9492F878 -:10F010000C9492F80C9492F80C9492F80C9492F848 -:10F020000C9492F80C9492F80C9492F80C9492F838 -:10F030000C9492F80C9492F80C9492F80C9492F828 -:10F040000C9492F80C9492F80C9492F80C9492F818 -:10F050000C9492F80C9492F80C9492F80C9492F808 -:10F060000C9492F80C9492F80C9492F80C9492F8F8 -:10F070000C9492F80C9492F80C9492F80C9492F8E8 -:10F080000C9492F80C9492F80C9492F80C9492F8D8 -:10F090000C9492F80C9492F80C9492F80C9492F8C8 -:10F0A0000C9492F80C9492F80C9492F80C9492F8B8 -:10F0B0000C9492F80C9492F80C9492F80C9492F8A8 -:10F0C0000C9492F80C9492F80C9492F80C9492F898 -:10F0D0000C9492F80C9492F80C9492F80C9492F888 -:10F0E0000C9492F811241FBECFEFD1E2DEBFCDBF4A -:10F0F00012E0A0E0B2E0EEEDFEEF01E00BBF02C0D7 -:10F1000007900D92A833B107D9F71BBE13E0A8E30F -:10F11000B2E001C01D92A334B107E1F70E9412FAD8 -:10F120000C946DFF0C9400F8982F959595959595F6 -:10F130009595905D8F708A301CF1282F295A809107 -:10F140003802813019F0823071F008958091C0004A -:10F1500085FFFCCF9093C6008091C00085FFFCCF57 -:10F160002093C60008958091C80085FFFCCF90933E -:10F17000CE008091C80085FFFCCF2093CE0008957B -:10F18000282F205DDCCF982F80913802813019F034 -:10F19000823041F008958091C00085FFFCCF9093AC -:10F1A000C60008958091C80085FFFCCF9093CE00E3 -:10F1B0000895EF92FF920F931F9380913802813050 -:10F1C00069F1823031F080E01F910F91FF90EF9054 -:10F1D0000895EE24FF2487018091C80087FD17C0A1 -:10F1E0000894E11CF11C011D111D81E4E81682E464 -:10F1F000F8068FE0080780E0180770F3E0913A0204 -:10F20000F0913B0209958091C80087FFE9CF80917A -:10F21000CE001F910F91FF90EF900895EE24FF24F0 -:10F2200087018091C00087FD17C00894E11CF11C84 -:10F23000011D111D81E4E81682E4F8068FE008073D -:10F2400080E0180770F3E0913A02F0913B020995D3 -:10F250008091C00087FFE9CF8091C6001F910F9178 -:10F26000FF90EF9008950E94D9F8982F809138026E -:10F27000813049F0823091F091366CF490330CF08B -:10F280009053892F08958091C00085FFFCCF909303 -:10F29000C60091369CF39755892F08958091C80038 -:10F2A00085FFFCCF9093CE00E7CF1F930E9433F9E8 -:10F2B000182F0E9433F91295107F810F1F91089526 -:10F2C000982F20913802992339F0213031F02230E3 -:10F2D00061F091509923C9F708958091C00087FF8C -:10F2E000FCCF8091C6009150F5CF8091C80087FF78 -:10F2F000FCCF8091CE009150EDCF1F93182F0E942C -:10F30000D9F8803249F0809139028F5F80933902B9 -:10F31000853091F11F910895809138028130B9F0C4 -:10F320008230C1F78091C80085FFFCCF84E18093D3 -:10F33000CE008091C80085FFFCCF1093CE00809155 -:10F34000C80085FFFCCF80E18093CE00E3CF8091A1 -:10F35000C00085FFFCCF84E18093C6008091C0008F -:10F3600085FFFCCF1093C6008091C00085FFFCCFC5 -:10F3700080E18093C600CECFE0913A02F0913B024B -:10F3800009951F9108950E94D9F8803241F080912B -:10F3900039028F5F80933902853029F10895809179 -:10F3A0003802813089F08230C9F78091C80085FF2A -:10F3B000FCCF84E18093CE008091C80085FFFCCF14 -:10F3C00080E18093CE0008958091C00085FFFCCF3E -:10F3D00084E18093C6008091C00085FFFCCF80E16E -:10F3E0008093C6000895E0913A02F0913B0209959E -:10F3F000089540E951E08823A1F02F9A28EE33E0E8 -:10F40000FA013197F1F721503040D1F72F9828EECB -:10F4100033E0FA013197F1F721503040D1F78150B4 -:10F4200061F708952F923F924F925F926F927F9271 -:10F430008F929F92AF92BF92CF92DF92EF92FF9204 -:10F440000F931F93CF93DF93000081E080933802E6 -:10F4500080E18093C4001092C5001092C00086E045 -:10F460008093C20088E18093C1006898709A279ABF -:10F4700081E00E94F9F9E4E1EE2E7EE1D72E67E902 -:10F48000C62E53E0B52E40E1A42E9924939431E486 -:10F49000832E26E5722E92E5692E80E2582E09E42D -:10F4A000402E13E5312EB0E52B2E0E94D9F8803383 -:10F4B000C9F1813309F452C0803409F4C8C08134E1 -:10F4C00009F4EAC0823489F1853409F4CAC0803570 -:10F4D00049F1823539F1813529F1853509F4ECC0DE -:10F4E000863509F409C1843609F428C1843709F442 -:10F4F000ABC1853709F473C2863709F4D9C08132AC -:10F5000009F4B7C2809139028F5F80933902853048 -:10F5100061F6E0913A02F0913B0209950E94D9F818 -:10F52000803339F60E94C3F9C0CF2091380293E1AD -:10F5300005C0223061F09923A9F391502130C9F719 -:10F540008091C00087FFFCCF8091C600F4CF8091EE -:10F55000C80087FFFCCF8091CE00EDCF0E94D9F884 -:10F56000803281F6809138028130D1F1823009F009 -:10F570009CCF8091C80085FFFCCFE092CE008091A7 -:10F58000C80085FFFCCF8092CE008091C80085FF27 -:10F59000FCCF7092CE008091C80085FFFCCF6092B6 -:10F5A000CE008091C80085FFFCCF5092CE008091A4 -:10F5B000C80085FFFCCF4092CE008091C80085FF37 -:10F5C000FCCF3092CE008091C80085FFFCCF209206 -:10F5D000CE008091C80085FFFCCFA092CE0065CF01 -:10F5E0008091C00085FFFCCFE092C6008091C000F2 -:10F5F00085FFFCCF8092C6008091C00085FFFCCFC4 -:10F600007092C6008091C00085FFFCCF6092C6005A -:10F610008091C00085FFFCCF5092C6008091C00051 -:10F6200085FFFCCF4092C6008091C00085FFFCCFD3 -:10F630003092C6008091C00085FFFCCF2092C600AA -:10F640008091C00085FFFCCFA092C6002ECF0E9403 -:10F65000D9F8863808F466CF0E94D9F80E94C3F919 -:10F6600024CF2091380294E0213041F0223069F01B -:10F67000992309F457CF91502130C1F78091C000F0 -:10F6800087FFFCCF8091C600F3CF8091C80087FF31 -:10F69000FCCF8091CE00ECCF0E94D9F8803841F1A8 -:10F6A000813809F447C0823809F4CAC08839E1F0CA -:10F6B00080E00E947DF9F9CE0E94D9F880933C0247 -:10F6C0000E94D9F880933D020E94C3F9EECE0E94B9 -:10F6D000D9F80E94D9F8182F0E94D9F8112309F4FB -:10F6E0007EC2113009F40AC283E00E947DF9DDCEAA -:10F6F00082E00E947DF9D9CE0E94D9F8803339F397 -:10F700002091380292E0213039F0223061F09923C3 -:10F7100079F291502130C9F78091C00087FFFCCF6A -:10F720008091C600F4CF8091C80087FFFCCF809104 -:10F73000CE00EDCF81E00E947DF9B7CE0E94D9F8CE -:10F7400080933F030E94D9F880933E038091420347 -:10F750008E7F809342030E94D9F8853409F4B3C1A7 -:10F7600080913E0390913F03892B89F000E010E0E7 -:10F770000E94D9F8F801E25CFD4F80830F5F1F4FB4 -:10F7800080913E0390913F030817190788F30E9468 -:10F79000D9F8803209F0B6CE8091420380FFB2C121 -:10F7A00040913C0250913D02440F551F50933D0241 -:10F7B00040933C0260913E0370913F0361157105D7 -:10F7C000F1F080E090E09A01280F391FFC01E25C23 -:10F7D000FD4FE081F999FECF1FBA32BD21BDE0BDDA -:10F7E0000FB6F894FA9AF99A0FBE01968617970702 -:10F7F00050F3460F571F50933D0240933C028091B7 -:10F800003802813081F0823009F04FCE8091C800FB -:10F8100085FFFCCFE092CE008091C80085FFFCCF31 -:10F82000A092CE0042CE8091C00085FFFCCFE09236 -:10F83000C6008091C00085FFFCCFA092C60035CEE7 -:10F8400080E10E947DF931CE0E94D9F880933F0378 -:10F850000E94D9F880933E0320913C0230913D02F2 -:10F8600037FD46C1809142038D7F80934203220F72 -:10F87000331F30933D0220933C020E94D9F8853417 -:10F8800009F430C1809142038E7F809342030E942D -:10F89000D9F8803209F009CE60913802613009F45C -:10F8A0006FC0623009F473C000913E0310913F03B2 -:10F8B0000115110509F440C080914203782F717041 -:10F8C000F82EF69481E0F82240913C0250913D02DE -:10F8D00020E030E013C0FF2009F060C0FA019491ED -:10F8E000613009F43BC0623009F441C0CA0101969D -:10F8F0002F5F3F4FAC0120173107D0F4772359F326 -:10F90000F999FECF52BD41BDF89A90B56130F9F03A -:10F91000623061F78091C80085FFFCCF9093CE00E4 -:10F92000CA0101962F5F3F4FAC012017310730F31A -:10F9300090933D0280933C02613009F4CAC062306A -:10F9400009F0B3CD8091C80085FFFCCF46CE8091F1 -:10F95000C00085FFFCCF9093C600C8CF8091C00047 -:10F9600085FDF9CF8091C00085FFF8CFF4CF80915D -:10F97000C80085FDD3CF8091C80085FFF8CFCECFDA -:10F980008091C00085FFFCCFE092C6008DCF8091B2 -:10F99000C80085FFFCCFE092CE0086CFCA01A0E070 -:10F9A000B0E080509040AF4FBF4FABBFFC0197918C -:10F9B000613061F0623009F099CF8091C80085FD17 -:10F9C000ADCF8091C80085FFF8CFA8CF8091C0004F -:10F9D00085FDC1CF8091C00085FFF8CFBCCF0E94CC -:10F9E000D9F8803209F08ECD80913802813011F142 -:10F9F000823009F05ACD8091C80085FFFCCFE0929B -:10FA0000CE008091C80085FFFCCFD092CE008091BF -:10FA1000C80085FFFCCFC092CE008091C80085FF52 -:10FA2000FCCFB092CE008091C80085FFFCCFA092A1 -:10FA3000CE003BCD8091C00085FFFCCFE092C60098 -:10FA40008091C00085FFFCCFD092C6008091C0009D -:10FA500085FFFCCFC092C6008091C00085FFFCCF1F -:10FA6000B092C6008091C00085FFFCCFA092C60076 -:10FA70001CCD0E94D9F8813209F017CD0E94D9F827 -:10FA8000813209F012CD279A2F98109240032091CD -:10FA90003802E1E491E00EC0223009F4A4C0909352 -:10FAA0004003E92FF0E0E050FE4FE0819F5FEE233E -:10FAB00009F4A0C0213081F78091C00085FFFCCF00 -:10FAC000E093C600ECCF80914203816080934203B3 -:10FAD00047CE8091C00085FDB7CD8091C00085FFE5 -:10FAE000F8CFB2CD80914203816080934203CFCEA4 -:10FAF00080914203826080934203B9CE87E90E94DD -:10FB00007DF9D3CC80913D028823880F880B892111 -:10FB1000809341038BBF80913C0290913D02880FFE -:10FB2000991F90933D0280933C0280913E0380FF99 -:10FB300009C080913E0390913F03019690933F034B -:10FB400080933E03F894F999FECF1127E0913C028F -:10FB5000F0913D02CEE3D2E080913E0390913F03CD -:10FB6000103091F40091570001700130D9F303E097 -:10FB700000935700E8950091570001700130D9F3C8 -:10FB800001E100935700E895099019900091570002 -:10FB900001700130D9F301E000935700E895139507 -:10FBA000103898F011270091570001700130D9F3F7 -:10FBB00005E000935700E89500915700017001306F -:10FBC000D9F301E100935700E8953296029709F0C6 -:10FBD000C7CF103011F00296E5CF112410CE8EE180 -:10FBE0000E947DF962CC8091C80085FFFCCFE09334 -:10FBF000CE0055CF7AE0B72E6DE0A62E5AE3952EB3 -:10FC000040E2842E3DE3732E90E3692E81E3582E6B -:10FC1000213009F442C0223009F45FC00E94D9F8B3 -:10FC2000982F20913802213089F1223009F44EC0FA -:10FC3000943709F46BC0923709F405C1973709F47A -:10FC40007BC0953799F0923609F4BDC09A3601F71A -:10FC5000E0913A02F0913B02099520913802D8CF09 -:10FC60008091C00085FFFCCF9093C6000E94D9F818 -:10FC7000982F80913802813099F38230B9F78091C2 -:10FC8000C80085FFFCCF9093CE00F0CF8091C000DC -:10FC900085FFFCCF9093C600CBCF8091C00085FF3D -:10FCA000FCCFB092C6008091C00085FFFCCFA0922F -:10FCB000C6008091C00085FFFCCF9092C600809165 -:10FCC000C00085FFFCCF8092C600A8CF8091C800FD -:10FCD00085FFFCCF9093CE00ABCF8091C80085FF0D -:10FCE000FCCFB092CE008091C80085FFFCCFA092DF -:10FCF000CE008091C80085FFFCCF9092CE0080910D -:10FD0000C80085FFFCCF8092CE0088CF1F9947C0E6 -:10FD10002F9A213051F0223009F07ACF8091C8001B -:10FD200085FFFCCF6092CE0073CF8091C00085FF2D -:10FD3000FCCF6092C6006CCF0E94D9F8982F8091BA -:10FD400038028130F1F0823009F4ABC00E9455F9DD -:10FD5000082F0E9455F9182F0E94D9F8982F8091EA -:10FD600038028130A9F0823009F4A2C00E9455F90E -:10FD7000D02ECC24F601E10FF11D808320913802B2 -:10FD800047CF8091C00085FFFCCF9093C600DECFA7 -:10FD90008091C00085FFFCCF9093C600E7CF2F98DD -:10FDA000213051F0223009F033CF8091C80085FF17 -:10FDB000FCCF5092CE002CCF8091C00085FFFCCFAD -:10FDC0005092C60025CF213041F1223081F080E8E9 -:10FDD00085BF109274001092750080E091E1FC01E3 -:10FDE000819180E091E13097D1F3CF01F8CF8091FC -:10FDF000C80085FFFCCF82E68093CE008091C800CA -:10FE000085FFFCCF85E78093CE008091C80085FFF9 -:10FE1000FCCF83E78093CE00DACF8091C00085FFCE -:10FE2000FCCF82E68093C6008091C00085FFFCCFA6 -:10FE300085E78093C6008091C00085FFFCCF83E7F3 -:10FE40008093C600C4CF0E94D9F8982F80913802C1 -:10FE50008130C9F08230D1F10E9455F9182F0E94EB -:10FE600055F9982F809138028130A1F0823039F114 -:10FE7000F12EEE24F701E90FF11D80810E9494F824 -:10FE800020913802C5CE8091C00085FFFCCF9093B1 -:10FE9000C600E2CF8091C00085FFFCCF7092C60003 -:10FEA000E7CF8091C80085FFFCCF9093CE004ECF66 -:10FEB0008091C80085FFFCCF9093CE0057CF8091F2 -:10FEC000C80085FFFCCF7092CE00D2CF8091C800D1 -:0EFED00085FFFCCF9093CE00BFCFF894FFCFFC -:10FEDE0041546D656761424F4F54202F204172642B -:10FEEE0075696E6F204D656761202D20284329208E -:10FEFE0041726475696E6F204C4C43202D20303951 -:08FF0E00303933300A0D008088 -:040000031000F000F9 -:00000001FF diff --git a/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex b/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex deleted file mode 100644 index 43a8b30..0000000 --- a/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex +++ /dev/null @@ -1,125 +0,0 @@ -:107800000C94343C0C94513C0C94513C0C94513CE1 -:107810000C94513C0C94513C0C94513C0C94513CB4 -:107820000C94513C0C94513C0C94513C0C94513CA4 -:107830000C94513C0C94513C0C94513C0C94513C94 -:107840000C94513C0C94513C0C94513C0C94513C84 -:107850000C94513C0C94513C0C94513C0C94513C74 -:107860000C94513C0C94513C11241FBECFEFD8E036 -:10787000DEBFCDBF11E0A0E0B1E0ECE9FFE702C060 -:1078800005900D92A230B107D9F712E0A2E0B1E065 -:1078900001C01D92AD30B107E1F70E942D3D0C945F -:1078A000CC3F0C94003C982F959595959595959582 -:1078B000905D8F708A307CF0282F295A8091C0000B -:1078C00085FFFCCF9093C6008091C00085FFFCCF60 -:1078D0002093C6000895282F205DF0CF982F809127 -:1078E000C00085FFFCCF9093C6000895EF92FF92F1 -:1078F0000F931F93EE24FF2487018091C00087FD22 -:1079000017C00894E11CF11C011D111D81E4E8164B -:1079100082E4F8068FE0080780E0180770F3E09132 -:107920000401F091050109958091C00087FFE9CF1E -:107930008091C6001F910F91FF90EF9008950E94D3 -:10794000763C982F8091C00085FFFCCF9093C600B5 -:1079500091362CF490330CF09053892F089597555D -:10796000892F08951F930E949F3C182F0E949F3CCF -:107970001295107F810F1F9108951F93182F882350 -:1079800021F00E94763C1150E1F71F9108951F935A -:10799000182F0E94763C803249F0809103018F5F5E -:1079A000809303018530C1F01F9108958091C0003C -:1079B00085FFFCCF84E18093C6008091C00085FFE5 -:1079C000FCCF1093C6008091C00085FFFCCF80E102 -:1079D0008093C6001F910895E0910401F091050184 -:1079E00009951F9108950E94763C803241F0809164 -:1079F00003018F5F80930301853081F008958091AA -:107A0000C00085FFFCCF84E18093C6008091C00058 -:107A100085FFFCCF80E18093C6000895E0910401CA -:107A2000F09105010995089540E951E08823A1F0FE -:107A30002D9A28EE33E0FA013197F1F721503040CA -:107A4000D1F72D9828EE33E0FA013197F1F7215064 -:107A50003040D1F7815061F708953F924F925F9285 -:107A60006F927F928F929F92AF92BF92CF92DF924E -:107A7000EF92FF920F931F93CF93DF93000080E16B -:107A80008093C4001092C50088E18093C10086E015 -:107A90008093C2005098589A259A81E00E94143D24 -:107AA00024E1F22E9EE1E92E85E9D82E0FE0C02ECA -:107AB00010E1B12EAA24A394B1E49B2EA6E58A2E50 -:107AC000F2E57F2EE0E26E2E79E4572E63E5462E36 -:107AD00050E5352E0E94763C8033B1F18133B9F107 -:107AE000803409F46FC0813409F476C0823409F41B -:107AF00085C0853409F488C0803531F1823521F1A3 -:107B0000813511F1853509F485C0863509F48DC0BC -:107B1000843609F496C0843709F403C1853709F423 -:107B200072C1863709F466C0809103018F5F80932C -:107B30000301853079F6E0910401F0910501099582 -:107B40000E94763C803351F60E94F33CC3CF0E94E2 -:107B5000763C803249F78091C00085FFFCCFF092DF -:107B6000C6008091C00085FFFCCF9092C600809136 -:107B7000C00085FFFCCF8092C6008091C00085FFC9 -:107B8000FCCF7092C6008091C00085FFFCCF609250 -:107B9000C6008091C00085FFFCCF5092C600809146 -:107BA000C00085FFFCCF4092C6008091C00085FFD9 -:107BB000FCCF3092C6008091C00085FFFCCFB09210 -:107BC000C60088CF0E94763C863808F4BDCF0E945C -:107BD000763C0E94F33C7ECF0E94763C803809F4CC -:107BE0009CC0813809F40BC1823809F43CC1883942 -:107BF00009F48FC080E00E94C73C6CCF84E10E94F2 -:107C0000BD3C0E94F33C66CF85E00E94BD3C0E94D3 -:107C1000F33C60CF0E94763C809306010E94763C44 -:107C2000809307010E94F33C55CF0E94763C80333D -:107C300009F41DC183E00E94BD3C80E00E94C73C66 -:107C400049CF0E94763C809309020E94763C809343 -:107C5000080280910C028E7F80930C020E94763C79 -:107C6000853409F415C18091080290910902892B8D -:107C700089F000E010E00E94763CF801E85FFE4FDA -:107C800080830F5F1F4F80910802909109020817AF -:107C9000190788F30E94763C803209F045CF809125 -:107CA0000C0280FF01C16091060170910701660F0F -:107CB000771F7093070160930601A0910802B091AD -:107CC00009021097C9F0E8E0F1E09B01AD014E0F09 -:107CD0005F1FF999FECF32BD21BD819180BDFA9A17 -:107CE000F99A2F5F3F4FE417F50799F76A0F7B1F4B -:107CF00070930701609306018091C00085FFFCCF5F -:107D0000F092C6008091C00085FFFCCFB092C60003 -:107D1000E1CE83E00E94C73CDDCE82E00E94C73CFA -:107D2000D9CE0E94763C809309020E94763C8093D3 -:107D300008028091060190910701880F991F909386 -:107D40000701809306010E94763C853409F4A6C0A1 -:107D500080910C028E7F80930C020E94763C8032D0 -:107D600009F0B8CE8091C00085FFFCCFF092C6002C -:107D7000609108027091090261157105B9F140E046 -:107D800050E080910C02A82FA170B82FB27011C0E2 -:107D9000BB2309F45CC0E0910601F0910701319624 -:107DA000F0930701E09306014F5F5F4F46175707B7 -:107DB000E8F4AA2369F3F999FECF209106013091E6 -:107DC000070132BD21BDF89A90B58091C00085FFB2 -:107DD000FCCF9093C6002F5F3F4F30930701209355 -:107DE00006014F5F5F4F4617570718F38091C00099 -:107DF00085FDE5CE8091C00085FFF8CFE0CE81E023 -:107E00000E94C73C67CE0E94763C803209F08CCE3F -:107E10008091C00085FFFCCFF092C6008091C00029 -:107E200085FFFCCFE092C6008091C00085FFFCCFAB -:107E3000D092C6008091C00085FFFCCFC092C600E2 -:107E40008091C00085FFFCCFB092C60043CEE09188 -:107E50000601F091070194918091C00085FFFCCF4D -:107E60009093C6009CCF80E10E94C73C33CE0E9415 -:107E7000763C0E94763C182F0E94763C112309F430 -:107E800083C0113009F484C08FE00E94C73C22CE29 -:107E900080910C02816080930C02E5CE80910C02EF -:107EA000816080930C0259CF809107018823880F4D -:107EB000880B8A2180930B02809106019091070123 -:107EC000880F991F90930701809306018091080203 -:107ED00080FF09C080910802909109020196909359 -:107EE000090280930802F894F999FECF1127E091D6 -:107EF0000601F0910701C8E0D1E08091080290915D -:107F00000902103091F40091570001700130D9F34B -:107F100003E000935700E89500915700017001308D -:107F2000D9F301E100935700E89509901990009169 -:107F3000570001700130D9F301E000935700E89534 -:107F40001395103498F011270091570001700130FB -:107F5000D9F305E000935700E895009157000170B0 -:107F60000130D9F301E100935700E895329602976A -:107F700009F0C7CF103011F00296E5CF112480919F -:107F8000C00085FFB9CEBCCE8EE10E94C73CA2CD19 -:0C7F900085E90E94C73C9ECDF894FFCF0D -:027F9C00800063 -:040000030000780081 -:00000001FF diff --git a/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex b/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex deleted file mode 100644 index 9753e2e..0000000 --- a/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex +++ /dev/null @@ -1,124 +0,0 @@ -:107800000C94343C0C94513C0C94513C0C94513CE1 -:107810000C94513C0C94513C0C94513C0C94513CB4 -:107820000C94513C0C94513C0C94513C0C94513CA4 -:107830000C94513C0C94513C0C94513C0C94513C94 -:107840000C94513C0C94513C0C94513C0C94513C84 -:107850000C94513C0C94513C0C94513C0C94513C74 -:107860000C94513C0C94513C11241FBECFEFD8E036 -:10787000DEBFCDBF11E0A0E0B1E0EAE8FFE702C063 -:1078800005900D92A230B107D9F712E0A2E0B1E065 -:1078900001C01D92AD30B107E1F70E942D3D0C945F -:1078A000C33F0C94003C982F95959595959595958B -:1078B000905D8F708A307CF0282F295A8091C0000B -:1078C00085FFFCCF9093C6008091C00085FFFCCF60 -:1078D0002093C6000895282F205DF0CF982F809127 -:1078E000C00085FFFCCF9093C6000895EF92FF92F1 -:1078F0000F931F93EE24FF2487018091C00087FD22 -:1079000017C00894E11CF11C011D111D81E2E8164D -:1079100081EAF80687E0080780E0180770F3E09135 -:107920000401F091050109958091C00087FFE9CF1E -:107930008091C6001F910F91FF90EF9008950E94D3 -:10794000763C982F8091C00085FFFCCF9093C600B5 -:1079500091362CF490330CF09053892F089597555D -:10796000892F08951F930E949F3C182F0E949F3CCF -:107970001295107F810F1F9108951F93182F882350 -:1079800021F00E94763C1150E1F71F9108951F935A -:10799000182F0E94763C803249F0809103018F5F5E -:1079A000809303018530C1F01F9108958091C0003C -:1079B00085FFFCCF84E18093C6008091C00085FFE5 -:1079C000FCCF1093C6008091C00085FFFCCF80E102 -:1079D0008093C6001F910895E0910401F091050184 -:1079E00009951F9108950E94763C803241F0809164 -:1079F00003018F5F80930301853081F008958091AA -:107A0000C00085FFFCCF84E18093C6008091C00058 -:107A100085FFFCCF80E18093C6000895E0910401CA -:107A2000F09105010995089548EC50E08823A1F0F4 -:107A30002D9A28EE33E0FA013197F1F721503040CA -:107A4000D1F72D9828EE33E0FA013197F1F7215064 -:107A50003040D1F7815061F708953F924F925F9285 -:107A60006F927F928F929F92AF92BF92CF92DF924E -:107A7000EF92FF920F931F93CF93DF93000082E06A -:107A80008093C00080E18093C4001092C50088E11B -:107A90008093C10086E08093C2005098589A259A3E -:107AA00081E00E94143D24E1F22E9EE1E92E85E959 -:107AB000D82E0FE0C02E10E1B12EAA24A394B1E479 -:107AC0009B2EA6E58A2EF2E57F2EE0E26E2E79E46B -:107AD000572E63E5462E50E5352E0E94763C8033C6 -:107AE000B1F18133B9F1803409F46FC0813409F404 -:107AF00076C0823409F485C0853409F488C08035A5 -:107B000031F1823521F1813511F1853509F485C0D6 -:107B1000863509F48DC0843609F496C0843709F49B -:107B200003C1853709F472C1863709F466C08091B4 -:107B300003018F5F80930301853079F6E0910401A2 -:107B4000F091050109950E94763C803351F60E9420 -:107B5000F33CC3CF0E94763C803249F78091C0004D -:107B600085FFFCCFF092C6008091C00085FFFCCF5E -:107B70009092C6008091C00085FFFCCF8092C60025 -:107B80008091C00085FFFCCF7092C6008091C0003C -:107B900085FFFCCF6092C6008091C00085FFFCCFBE -:107BA0005092C6008091C00085FFFCCF4092C60075 -:107BB0008091C00085FFFCCF3092C6008091C0004C -:107BC00085FFFCCFB092C60088CF0E94763C8638F5 -:107BD00008F4BDCF0E94763C0E94F33C7ECF0E9409 -:107BE000763C803809F49CC0813809F40BC1823896 -:107BF00009F430C1883909F48FC080E00E94C73C85 -:107C00006CCF84E10E94BD3C0E94F33C66CF85E0CE -:107C10000E94BD3C0E94F33C60CF0E94763C809362 -:107C200006010E94763C809307010E94F33C55CFE9 -:107C30000E94763C803309F411C183E00E94BD3C70 -:107C400080E00E94C73C49CF0E94763C80930902A5 -:107C50000E94763C8093080280910C028E7F809374 -:107C60000C020E94763C853409F409C18091080217 -:107C700090910902892B89F000E010E00E94763C87 -:107C8000F801E85FFE4F80830F5F1F4F809108026D -:107C9000909109020817190788F30E94763C8032F8 -:107CA00009F045CF80910C0280FFF5C0609106017C -:107CB00070910701660F771F7093070160930601AB -:107CC000A0910802B09109021097C9F0E8E0F1E034 -:107CD0009B01AD014E0F5F1FF999FECF32BD21BD53 -:107CE000819180BDFA9AF99A2F5F3F4FE417F5070B -:107CF00099F76A0F7B1F70930701609306018091CB -:107D0000C00085FFFCCFF092C6008091C00085FFC7 -:107D1000FCCFB092C600E1CE83E00E94C73CDDCE2E -:107D200082E00E94C73CD9CE0E94763C8093090233 -:107D30000E94763C80930802809106019091070191 -:107D4000880F991F90930701809306010E94763C4B -:107D5000853409F49AC080910C028E7F80930C02C6 -:107D60000E94763C803209F0B8CE8091C00085FF39 -:107D7000FCCFF092C600A0910802B09109021097C2 -:107D8000C1F180910C02082F0170182F1695117007 -:107D9000E0910601F0910701AF014F5F5F4FBA011B -:107DA00020E030E00023B1F4112339F49491809164 -:107DB000C00085FFFCCF9093C6002F5F3F4FCB01E3 -:107DC0000196FA012A173B0780F4BC014F5F5F4F11 -:107DD000002351F3F999FECFF2BDE1BDF89A90B5B9 -:107DE0008091C00085FFFCCFE6CF709307016093C0 -:107DF00006018091C00085FDE5CE8091C00085FF21 -:107E0000F8CFE0CE81E00E94C73C67CE0E94763C6E -:107E1000803209F08CCE8091C00085FFFCCFF092BB -:107E2000C6008091C00085FFFCCFE092C600809123 -:107E3000C00085FFFCCFD092C6008091C00085FFB6 -:107E4000FCCFC092C6008091C00085FFFCCFB092ED -:107E5000C60043CE80E10E94C73C3FCE0E94763CE4 -:107E60000E94763C182F0E94763C112309F483C0AF -:107E7000113009F484C08FE00E94C73C2ECE80915F -:107E80000C02816080930C02F1CE80910C02816023 -:107E900080930C0265CF809107018823880F880B9F -:107EA0008A2180930B028091060190910701880F2F -:107EB000991F90930701809306018091080280FF2B -:107EC00009C08091080290910902019690930902DD -:107ED00080930802F894F999FECF1127E0910601EA -:107EE000F0910701C8E0D1E0809108029091090269 -:107EF000103091F40091570001700130D9F303E084 -:107F000000935700E8950091570001700130D9F3B4 -:107F100001E100935700E8950990199000915700EE -:107F200001700130D9F301E000935700E8951395F3 -:107F3000103498F011270091570001700130D9F3E7 -:107F400005E000935700E89500915700017001305B -:107F5000D9F301E100935700E8953296029709F0B2 -:107F6000C7CF103011F00296E5CF11248091C000E8 -:107F700085FFC5CEC8CE8EE10E94C73CAECD85E957 -:0A7F80000E94C73CAACDF894FFCF81 -:027F8A00800075 -:040000030000780081 -:00000001FF diff --git a/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex b/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex deleted file mode 100644 index feac9d2..0000000 --- a/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex +++ /dev/null @@ -1,126 +0,0 @@ -:103800000C94341C0C94511C0C94511C0C94511CA1 -:103810000C94511C0C94511C0C94511C0C94511C74 -:103820000C94511C0C94511C0C94511C0C94511C64 -:103830000C94511C0C94511C0C94511C0C94511C54 -:103840000C94511C0C94511C0C94511C0C94511C44 -:103850000C94511C0C94511C0C94511C0C94511C34 -:103860000C94511C0C94511C11241FBECFEFD4E0BA -:10387000DEBFCDBF11E0A0E0B1E0E4EAFFE302C0AB -:1038800005900D92A230B107D9F712E0A2E0B1E0A5 -:1038900001C01D92AD30B107E1F70E94361D0C94B6 -:1038A000D01F0C94001C982F9595959595959595FE -:1038B000905D8F708A307CF0282F295A8091C0004B -:1038C00085FFFCCF9093C6008091C00085FFFCCFA0 -:1038D0002093C6000895282F205DF0CF982F809167 -:1038E000C00085FFFCCF9093C6000895EF92FF9231 -:1038F0000F931F93EE24FF2487018091C00087FD62 -:1039000017C00894E11CF11C011D111D81E4E8168B -:1039100082E4F8068FE0080780E0180770F3E09172 -:103920000401F091050109958091C00087FFE9CF5E -:103930008091C6001F910F91FF90EF9008950E9413 -:10394000761C982F8091C00085FFFCCF9093C60015 -:1039500091362CF490330CF09053892F089597559D -:10396000892F08951F930E949F1C182F0E949F1C4F -:103970001295107F810F1F910895882351F0982F81 -:1039800091508091C00087FFFCCF8091C6009923A1 -:10399000B9F708951F93182F0E94761C803249F0C2 -:1039A000809103018F5F809303018530C1F01F91E7 -:1039B00008958091C00085FFFCCF84E18093C6000C -:1039C0008091C00085FFFCCF1093C6008091C0009D -:1039D00085FFFCCF80E18093C6001F910895E091A0 -:1039E0000401F091050109951F9108950E94761C2C -:1039F000803241F0809103018F5F80930301853015 -:103A000081F008958091C00085FFFCCF84E1809310 -:103A1000C6008091C00085FFFCCF80E18093C60086 -:103A20000895E0910401F09105010995089510921F -:103A30000A028823D1F090E040E951E02D9A28EE67 -:103A400033E0FA013197F1F721503040D1F72D984A -:103A500028EE33E0FA013197F1F721503040D1F7E9 -:103A60009F5F981758F380930A0208953F924F92F0 -:103A70005F926F927F928F929F92AF92BF92CF92FE -:103A8000DF92EF92FF920F931F93CF93DF9300008B -:103A900083E38093C4001092C50088E18093C10045 -:103AA00086E08093C2005098589A259A81E00E943F -:103AB000171D44E1F42E3EE1E32E24E9D22E96E0D8 -:103AC000C92E80E1B82EAA24A39401E4902E16E515 -:103AD000812EB2E57B2EA0E26A2EF9E45F2EE3E5AB -:103AE0004E2E70E5372E0E94761C8033B1F1813363 -:103AF00009F441C0803409F479C0813409F48CC0E0 -:103B0000823471F1853409F47BC0803531F182351E -:103B100021F1813511F1853509F48DC0863509F41F -:103B20009DC0843609F4AEC0843709F41BC18537C3 -:103B300009F485C1863709F47AC0809103018F5F4B -:103B400080930301853079F6E0910401F09105013D -:103B500009950E94761C803351F60E94F61CC3CF53 -:103B600093E18091C00087FFFCCF8091C60099232C -:103B7000A1F39150F6CF0E94761C8032F1F680912D -:103B8000C00085FFFCCFF092C6008091C00085FF89 -:103B9000FCCF9092C6008091C00085FFFCCF809240 -:103BA000C6008091C00085FFFCCF7092C600809156 -:103BB000C00085FFFCCF6092C6008091C00085FFE9 -:103BC000FCCF5092C6008091C00085FFFCCF409290 -:103BD000C6008091C00085FFFCCF3092C600809166 -:103BE000C00085FFFCCFB092C6007DCF0E94761C3E -:103BF000863808F4B2CF0E94761C0E94F61C73CF60 -:103C000094E08091C00087FFFCCF8091C60099238B -:103C100009F4A3CF9150F5CF0E94761C8038D1F0E3 -:103C2000813861F1823809F499C0883979F080E0EF -:103C30000E94CA1C58CF0E94761C809306010E94E5 -:103C4000761C809307010E94F61C4DCF83E00E94F2 -:103C5000CA1C49CF82E00E94CA1C45CF0E94761C34 -:103C6000803309F486C192E08091C00087FFFCCFC9 -:103C70008091C6009923D9F29150F6CF81E00E943D -:103C8000CA1C31CF0E94761C809309020E94761CC8 -:103C90008093080280910C028E7F80930C020E9418 -:103CA000761C853429F480910C02816080930C028B -:103CB0008091080290910902892B89F000E010E0C0 -:103CC0000E94761CF801E85FFE4F80830F5F1F4F54 -:103CD00080910802909109020817190788F30E9441 -:103CE000761C803209F029CF80910C0280FFD1C070 -:103CF0004091060150910701440F551F5093070151 -:103D000040930601A0910802B09109021097C9F0F2 -:103D1000E8E0F1E09A01BD016E0F7F1FF999FECF37 -:103D200032BD21BD819180BDFA9AF99A2F5F3F4F34 -:103D3000E617F70799F74A0F5B1F50930701409367 -:103D400006018091C00085FFFCCFF092C6008091F3 -:103D5000C00085FFFCCFB092C600C5CE80E10E94B6 -:103D6000CA1CC1CE0E94761C809309020E94761C58 -:103D7000809308028091060190910701880F991F96 -:103D800090930701809306010E94761C853409F404 -:103D90007AC080910C028E7F80930C020E94761C68 -:103DA000803209F0A0CE8091C00085FFFCCFF09258 -:103DB000C600A0910802B09109021097B9F1809154 -:103DC0000C02182F1170082F0270E0910601F0917B -:103DD00007019F012F5F3F4FB90140E050E01123E1 -:103DE000B1F4002339F494918091C00085FFFCCF99 -:103DF0009093C6004F5F5F4FCB010196F9014A17C0 -:103E00005B0780F4BC012F5F3F4F112351F3F999F9 -:103E1000FECFF2BDE1BDF89A90B58091C00085FF5C -:103E2000FCCFE6CF70930701609306018091C0003C -:103E300085FDD9CE8091C00085FFF8CFD4CE0E94F9 -:103E4000761C803209F079CE8091C00085FFFCCFCE -:103E5000F092C6008091C00085FFFCCFE092C600C2 -:103E60008091C00085FFFCCFD092C6008091C00039 -:103E700085FFFCCFC092C6008091C00085FFFCCFBB -:103E8000B092C60030CE80910C02816080930C020B -:103E900085CF809107018823880F880B8A21809322 -:103EA0000B028091060190910701880F991F909352 -:103EB0000701809306018091080280FF09C080916C -:103EC00008029091090201969093090280930802DA -:103ED000F894F999FECF1127E0910601F0910701BE -:103EE000C8E0D1E08091080290910902103091F46D -:103EF0000091570001700130D9F303E0009357009F -:103F0000E8950091570001700130D9F301E1009369 -:103F10005700E89509901990009157000170013001 -:103F2000D9F301E000935700E8951395103498F009 -:103F300011270091570001700130D9F305E000937B -:103F40005700E8950091570001700130D9F301E165 -:103F500000935700E8953296029709F0C7CF1030CA -:103F600011F00296E5CF11248091C00085FFE9CEC3 -:103F7000ECCE0E94761C0E94761C182F0E94761CA4 -:103F8000112351F0113021F086E00E94CA1CABCD04 -:103F900084E90E94CA1CA7CD8EE10E94CA1CA3CD51 -:043FA000F894FFCFC3 -:023FA40080009B -:0400000300003800C1 -:00000001FF diff --git a/bootloaders/atmega/ATmegaBOOT_168_ng.hex b/bootloaders/atmega/ATmegaBOOT_168_ng.hex deleted file mode 100644 index 387091e..0000000 --- a/bootloaders/atmega/ATmegaBOOT_168_ng.hex +++ /dev/null @@ -1,110 +0,0 @@ -:103800000C94341C0C94511C0C94511C0C94511CA1 -:103810000C94511C0C94511C0C94511C0C94511C74 -:103820000C94511C0C94511C0C94511C0C94511C64 -:103830000C94511C0C94511C0C94511C0C94511C54 -:103840000C94511C0C94511C0C94511C0C94511C44 -:103850000C94511C0C94511C0C94511C0C94511C34 -:103860000C94511C0C94511C11241FBECFEFD4E0BA -:10387000DEBFCDBF11E0A0E0B1E0E4EAFEE302C0AC -:1038800005900D92A230B107D9F712E0A2E0B1E0A5 -:1038900001C01D92AD30B107E1F70E94ED1C0C9400 -:1038A000511F0C94001C482F10920A0280E08417CC -:1038B000E0F4582F2D9A28EE33E080E991E001974B -:1038C000F1F721503040C9F72D9828EE33E080E918 -:1038D00091E00197F1F721503040C9F7852F8F5FB4 -:1038E000582F841738F380930A020895EF92FF92BD -:1038F0000F931F93EE24FF2487018091C00087FD62 -:1039000017C00894E11CF11C011D111D81E0E8168F -:1039100082E1F8068AE7080780E0180770F3E09173 -:103920000201F091030109958091C00087FFE9CF62 -:103930008091C600992787FD90951F910F91FF9068 -:10394000EF900895982F8091C00085FFFCCF909351 -:10395000C60008950E94761C803271F080910401A7 -:103960008F5F80930401853009F00895E091020192 -:10397000F09103010995089584E10E94A21C80E161 -:103980000E94A21C0895CF93C82F0E94761C8032FB -:1039900041F0809104018F5F80930401853081F4B0 -:1039A0000AC084E10E94A21C8C2F0E94A21C80E10C -:1039B0000E94A21C05C0E0910201F091030109954B -:1039C000CF910895CF93C82FC150CF3F21F00E94CF -:1039D000761CC150E0F7CF910895CFEFD4E0DEBF61 -:1039E000CDBF000083E38093C4001092C50088E13E -:1039F0008093C10086E08093C2005098589A259A1F -:103A000083E00E94531C0E94761C8033B1F1813305 -:103A1000B9F1803409F455C0813409F45BC08234B3 -:103A200009F46DC0853409F470C0803531F18235F8 -:103A300021F1813511F1853509F46BC0863509F422 -:103A400073C0843609F47AC0843709F4CEC0853750 -:103A500009F429C1863709F44AC0809104018F5FB7 -:103A600080930401853079F6E0910201F091030121 -:103A700009950E94761C803351F60E94AA1CC3CF80 -:103A80000E94761CC82F803241F784E10E94A21C5C -:103A900081E40E94A21C86E50E94A21C82E50E948D -:103AA000A21C8C2F0E94A21C89E40E94A21C83E508 -:103AB0000E94A21C80E50E94A21C80E10E94A21C20 -:103AC000A2CF0E94761C8638C0F20E94761C0E940B -:103AD000AA1C99CF0E94761C803809F486C18138CF -:103AE00009F487C1823809F488C1883921F080E05F -:103AF0000E94C31C88CF83E00E94C31C84CF84E152 -:103B00000E94E21C0E94AA1C7ECF85E00E94E21C5B -:103B1000F9CF0E94761C809306010E94761C809348 -:103B200007010E94AA1C6FCF0E94761C803309F403 -:103B3000CAC083E00E94E21C80E0DACF0E94761CBB -:103B4000809309020E94761C8093080280910C02E7 -:103B50008E7F80930C020E94761C853409F4C4C0C9 -:103B600000E010E0809108029091090218161906F1 -:103B700070F4C8E0D1E00E94761C89930F5F1F4F5C -:103B8000809108029091090208171907A0F30E947A -:103B9000761C803209F061CF80910C0280FFAEC0AC -:103BA000E0910601F0910701EE0FFF1F00E010E029 -:103BB00020910802309109021216130680F4A8E041 -:103BC000B1E0F999FECFF2BDE1BD8D9180BDFA9AC9 -:103BD000F99A31960F5F1F4F0217130790F3F09376 -:103BE0000701E093060184E166CF0E94761C809372 -:103BF00009020E94761C8093080280910601909130 -:103C00000701880F991F90930701809306010E9476 -:103C1000761C853409F46EC080910C028E7F8093EF -:103C20000C020E94761C803209F0EDCE84E10E94E5 -:103C3000A21C00E010E02091080230910902121647 -:103C4000130608F03ACFE0910601F0910701809148 -:103C50000C0280FF1FC0F999FECFF2BDE1BDF89ABA -:103C600080B50E94A21CE0910601F09107013196F7 -:103C7000F0930701E09306012091080230910902B8 -:103C80000F5F1F4F0217130708F017CF80910C0228 -:103C900080FDE1CF869580FFB4C03196F093070197 -:103CA000E0930601EDCF0E94761C803209F0D5CE5C -:103CB00084E10E94A21C8EE10E94A21C84E90E9461 -:103CC000A21C86E0F8CE0E94761C0E94761CC82FAB -:103CD0000E94761CCC2309F47CC0C13009F47DC05D -:103CE00086E00E94C31C8FCE80910C02816080937D -:103CF0000C0236CF80910C02816091CF8091070138 -:103D000087FD6FC010920B02809106019091070110 -:103D1000880F991F909307018093060180910802F4 -:103D200080FF09C08091080290910902019690934A -:103D3000090280930802F894F999FECF1127E091C7 -:103D40000601F0910701C8E0D1E08091080290914E -:103D50000902103091F40091570001700130D9F33D -:103D600003E000935700E89500915700017001307F -:103D7000D9F301E100935700E8950990199000915B -:103D8000570001700130D9F301E000935700E89526 -:103D90001395103498F011270091570001700130ED -:103DA000D9F305E000935700E895009157000170A2 -:103DB0000130D9F301E100935700E895329602975C -:103DC00009F0C7CF103011F00296E5CF112484E13D -:103DD00072CE8EE10E94C31C16CE84E90E94C31CE1 -:103DE00012CE81E080930B028FCF82E00E94C31C31 -:103DF0000ACE81E00E94C31C06CE80E10E94C31C53 -:103E000002CE84910E94A21C2091080230910902E6 -:103E1000E0910601F091070140CFCF930E94761CFC -:103E2000C82F0E94A21CC13614F0C75503C0C0336E -:103E30000CF0C0538C2F992787FD9095CF91089552 -:103E40000F931F930E940D1F082F112707FD109538 -:103E500002951295107F1027007F10270E940D1FDA -:103E6000800F992787FD90951F910F910895CF930B -:103E7000C82F85958595859585958A3034F0895A22 -:103E8000CF70CA3034F0C95A05C0805DCF70CA30D7 -:103E9000D4F7C05D0E94A21C8C2F0E94A21CCF915F -:043EA0000895FFCFB3 -:023EA40080009C -:0400000300003800C1 -:00000001FF diff --git a/bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex b/bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex deleted file mode 100644 index 994e478..0000000 --- a/bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex +++ /dev/null @@ -1,126 +0,0 @@ -:103800000C94341C0C94511C0C94511C0C94511CA1 -:103810000C94511C0C94511C0C94511C0C94511C74 -:103820000C94511C0C94511C0C94511C0C94511C64 -:103830000C94511C0C94511C0C94511C0C94511C54 -:103840000C94511C0C94511C0C94511C0C94511C44 -:103850000C94511C0C94511C0C94511C0C94511C34 -:103860000C94511C0C94511C11241FBECFEFD4E0BA -:10387000DEBFCDBF11E0A0E0B1E0EEEAFFE302C0A1 -:1038800005900D92A230B107D9F712E0A2E0B1E0A5 -:1038900001C01D92AD30B107E1F70E94331D0C94B9 -:1038A000D51F0C94001C982F9595959595959595F9 -:1038B000905D8F708A307CF0282F295A8091C0004B -:1038C00085FFFCCF9093C6008091C00085FFFCCFA0 -:1038D0002093C6000895282F205DF0CF982F809167 -:1038E000C00085FFFCCF9093C6000895EF92FF9231 -:1038F0000F931F93EE24FF2487018091C00087FD62 -:1039000017C00894E11CF11C011D111D81E2E8168D -:1039100081EAF80687E0080780E0180770F3E09175 -:103920000401F091050109958091C00087FFE9CF5E -:103930008091C6001F910F91FF90EF9008950E9413 -:10394000761C982F8091C00085FFFCCF9093C60015 -:1039500091362CF490330CF09053892F089597559D -:10396000892F08951F930E949F1C182F0E949F1C4F -:103970001295107F810F1F9108951F93182F882390 -:1039800021F00E94761C1150E1F71F9108951F93BA -:10399000182F0E94761C803249F0809103018F5FBE -:1039A000809303018530C1F01F9108958091C0007C -:1039B00085FFFCCF84E18093C6008091C00085FF25 -:1039C000FCCF1093C6008091C00085FFFCCF80E142 -:1039D0008093C6001F910895E0910401F0910501C4 -:1039E00009951F9108950E94761C803241F08091C4 -:1039F00003018F5F80930301853081F008958091EA -:103A0000C00085FFFCCF84E18093C6008091C00098 -:103A100085FFFCCF80E18093C6000895E09104010A -:103A2000F09105010995089510920A028823D1F0BA -:103A300090E048EC50E02D9A28EE33E0FA013197FF -:103A4000F1F721503040D1F72D9828EE33E0FA01FC -:103A50003197F1F721503040D1F79F5F981758F315 -:103A600080930A0208953F924F925F926F927F92E5 -:103A70008F929F92AF92BF92CF92DF92EF92FF927E -:103A80000F931F93CF93DF9394B714BE8091600080 -:103A90008861809360001092600091FF0CC289E100 -:103AA0008093C4001092C50088E18093C10086E035 -:103AB0008093C2005098589A259A81E00E94141D64 -:103AC00044E1F42E3EE1E32E24E9D22E96E0C92E05 -:103AD00080E1B82EAA24A39401E4902E16E5812E4D -:103AE000B2E57B2EA0E26A2EF9E45F2EE3E54E2ECE -:103AF00070E5372E0E94761C8033B9F18133C1F115 -:103B0000803409F470C0813409F477C0823409F438 -:103B100086C0853409F489C0803539F1823529F1B0 -:103B2000813509F4AFC1853509F485C0863509F4BE -:103B30008DC0843609F435C1843709F4C1C0853796 -:103B400009F490C0863709F466C0809103018F5F45 -:103B500080930301853071F6E0910401F091050135 -:103B600009950E94761C803349F60E94F31CC2CF4F -:103B70000E94761C803249F78091C00085FFFCCFFF -:103B8000F092C6008091C00085FFFCCF9092C600E5 -:103B90008091C00085FFFCCF8092C6008091C0005C -:103BA00085FFFCCF7092C6008091C00085FFFCCFDE -:103BB0006092C6008091C00085FFFCCF5092C60085 -:103BC0008091C00085FFFCCF4092C6008091C0006C -:103BD00085FFFCCF3092C6008091C00085FFFCCFEE -:103BE000B092C60087CF0E94761C863808F4BDCFFD -:103BF0000E94761C0E94F31C7DCF0E94761C8038A8 -:103C000009F45AC0813809F453C0823809F440C11C -:103C1000883909F449C080E00E94C71C6BCF84E159 -:103C20000E94BD1C0E94F31C65CF85E00E94BD1C54 -:103C30000E94F31C5FCF0E94761C809306010E94B5 -:103C4000761C809307010E94F31C54CF0E94761CBF -:103C5000803309F421C183E00E94BD1C80E00E94F2 -:103C6000C71C48CF0E94761C803209F06ECF80912D -:103C7000C00085FFFCCFF092C6008091C00085FF98 -:103C8000FCCFE092C6008091C00085FFFCCFD092AF -:103C9000C6008091C00085FFFCCFC092C600809115 -:103CA000C00085FFFCCF9CCF83E00E94C71C22CFC1 -:103CB00081E00E94C71C1ECF82E00E94C71C1ACF61 -:103CC0000E94761C809309020E94761C8093080251 -:103CD0008091060190910701880F991F9093070129 -:103CE000809306010E94761C853409F4C5C080913A -:103CF0000C028E7F80930C020E94761C803209F0A9 -:103D0000F9CE8091C00085FFFCCFF092C600609193 -:103D10000802709109026115710591F140E050E0CF -:103D200080910C02A82FA170B82FB27010C0BB23D5 -:103D300061F1E0910601F09107013196F0930701DE -:103D4000E09306014F5F5F4F46175707C8F4AA2359 -:103D500071F3F999FECF209106013091070132BD30 -:103D600021BDF89A90B58091C00085FFFCCF90935B -:103D7000C6002F5F3F4F3093070120930601E2CF2B -:103D80008091C00085FFFCCF2BCFE0910601F09120 -:103D9000070194918091C00085FFFCCF9093C600ED -:103DA000CCCF0E94761C809309020E94761C8093DF -:103DB000080280910C028E7F80930C020E94761C78 -:103DC000853429F480910C02816080930C028091EB -:103DD000080290910902892B89F000E010E00E940E -:103DE000761CF801E85FFE4F80830F5F1F4F8091C4 -:103DF0000802909109020817190788F30E94761C9F -:103E0000803209F0A2CE80910C0280FF62C0409106 -:103E1000060150910701440F551F5093070140932D -:103E20000601609108027091090261157105C9F0DF -:103E3000E8E0F1E09A01DB01AE0FBF1FF999FECF78 -:103E400032BD21BD819180BDFA9AF99A2F5F3F4F13 -:103E5000EA17FB0799F7460F571F50930701409346 -:103E600006018091C00085FFFCCFF092C6008091D2 -:103E7000C00085FFFCCFB4CE80910C02816080939E -:103E80000C023ACF0E94F31C88E080936000FFCFC1 -:103E900080E10E94C71C2ECE0E94761C0E94761CD8 -:103EA000182F0E94761C112381F0113051F086E00A -:103EB0000E94C71C1FCEE0910401F09105010995F5 -:103EC000EECD84E90E94C71C15CE8EE10E94C71C6E -:103ED00011CE809107018823880F880B8A21809357 -:103EE0000B028091060190910701880F991F909312 -:103EF0000701809306018091080280FF09C080912C -:103F00000802909109020196909309028093080299 -:103F1000F894F999FECF1127E0910601F09107017D -:103F2000C8E0D1E08091080290910902103091F42C -:103F30000091570001700130D9F303E0009357005E -:103F4000E8950091570001700130D9F301E1009329 -:103F50005700E895099019900091570001700130C1 -:103F6000D9F301E000935700E8951395103498F0C9 -:103F700011270091570001700130D9F305E000933B -:103F80005700E8950091570001700130D9F301E125 -:103F900000935700E8953296029709F0C7CF10308A -:0E3FA00011F00296E5CF11245CCFF894FFCF0C -:023FAE00800091 -:0400000300003800C1 -:00000001FF diff --git a/bootloaders/atmega/Makefile b/bootloaders/atmega/Makefile deleted file mode 100755 index efe92e6..0000000 --- a/bootloaders/atmega/Makefile +++ /dev/null @@ -1,238 +0,0 @@ -# Makefile for ATmegaBOOT -# E.Lins, 18.7.2005 -# -# Instructions -# -# To make bootloader .hex file: -# make diecimila -# make lilypad -# make ng -# etc... -# -# To burn bootloader .hex file: -# make diecimila_isp -# make lilypad_isp -# make ng_isp -# etc... - -# program name should not be changed... -PROGRAM = ATmegaBOOT_168 - -# enter the parameters for the avrdude isp tool -ISPTOOL = stk500v2 -ISPPORT = usb -ISPSPEED = -b 115200 - -MCU_TARGET = atmega168 -LDSECTION = --section-start=.text=0x3800 - -# the efuse should really be 0xf8; since, however, only the lower -# three bits of that byte are used on the atmega168, avrdude gets -# confused if you specify 1's for the higher bits, see: -# http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/ -# -# similarly, the lock bits should be 0xff instead of 0x3f (to -# unlock the bootloader section) and 0xcf instead of 0x0f (to -# lock it), but since the high two bits of the lock byte are -# unused, avrdude would get confused. - -ISPFUSES = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ --e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m -ISPFLASH = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ --U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m - -STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" -STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \ --lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt -STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt - - -OBJ = $(PROGRAM).o -OPTIMIZE = -Os - -DEFS = -LIBS = - -CC = avr-gcc - -# Override is only needed by avr-lib build system. - -override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) -override LDFLAGS = -Wl,$(LDSECTION) -#override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION) - -OBJCOPY = avr-objcopy -OBJDUMP = avr-objdump - -all: - -lilypad: TARGET = lilypad -lilypad: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' -lilypad: AVR_FREQ = 8000000L -lilypad: $(PROGRAM)_lilypad.hex - -lilypad_isp: lilypad -lilypad_isp: TARGET = lilypad -lilypad_isp: HFUSE = DD -lilypad_isp: LFUSE = E2 -lilypad_isp: EFUSE = 00 -lilypad_isp: isp - -lilypad_resonator: TARGET = lilypad_resonator -lilypad_resonator: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=3' -lilypad_resonator: AVR_FREQ = 8000000L -lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex - -lilypad_resonator_isp: lilypad_resonator -lilypad_resonator_isp: TARGET = lilypad_resonator -lilypad_resonator_isp: HFUSE = DD -lilypad_resonator_isp: LFUSE = C6 -lilypad_resonator_isp: EFUSE = 00 -lilypad_resonator_isp: isp - -pro8: TARGET = pro_8MHz -pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' -pro8: AVR_FREQ = 8000000L -pro8: $(PROGRAM)_pro_8MHz.hex - -pro8_isp: pro8 -pro8_isp: TARGET = pro_8MHz -pro8_isp: HFUSE = DD -pro8_isp: LFUSE = C6 -pro8_isp: EFUSE = 00 -pro8_isp: isp - -pro16: TARGET = pro_16MHz -pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' -pro16: AVR_FREQ = 16000000L -pro16: $(PROGRAM)_pro_16MHz.hex - -pro16_isp: pro16 -pro16_isp: TARGET = pro_16MHz -pro16_isp: HFUSE = DD -pro16_isp: LFUSE = C6 -pro16_isp: EFUSE = 00 -pro16_isp: isp - -pro20: TARGET = pro_20mhz -pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' -pro20: AVR_FREQ = 20000000L -pro20: $(PROGRAM)_pro_20mhz.hex - -pro20_isp: pro20 -pro20_isp: TARGET = pro_20mhz -pro20_isp: HFUSE = DD -pro20_isp: LFUSE = C6 -pro20_isp: EFUSE = 00 -pro20_isp: isp - -diecimila: TARGET = diecimila -diecimila: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -diecimila: AVR_FREQ = 16000000L -diecimila: $(PROGRAM)_diecimila.hex - -diecimila_isp: diecimila -diecimila_isp: TARGET = diecimila -diecimila_isp: HFUSE = DD -diecimila_isp: LFUSE = FF -diecimila_isp: EFUSE = 00 -diecimila_isp: isp - -ng: TARGET = ng -ng: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' -ng: AVR_FREQ = 16000000L -ng: $(PROGRAM)_ng.hex - -ng_isp: ng -ng_isp: TARGET = ng -ng_isp: HFUSE = DD -ng_isp: LFUSE = FF -ng_isp: EFUSE = 00 -ng_isp: isp - -atmega328: TARGET = atmega328 -atmega328: MCU_TARGET = atmega328p -atmega328: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -atmega328: AVR_FREQ = 16000000L -atmega328: LDSECTION = --section-start=.text=0x7800 -atmega328: $(PROGRAM)_atmega328.hex - -atmega328_isp: atmega328 -atmega328_isp: TARGET = atmega328 -atmega328_isp: MCU_TARGET = atmega328p -atmega328_isp: HFUSE = DA -atmega328_isp: LFUSE = FF -atmega328_isp: EFUSE = 05 -atmega328_isp: isp - -atmega328_notp: TARGET = atmega328_notp -atmega328_notp: MCU_TARGET = atmega328 -atmega328_notp: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -atmega328_notp: AVR_FREQ = 16000000L -atmega328_notp: LDSECTION = --section-start=.text=0x7800 -atmega328_notp: $(PROGRAM)_atmega328_notp.hex - -atmega328_notp_isp: atmega328_notp -atmega328_notp_isp: TARGET = atmega328 -atmega328_notp_isp: MCU_TARGET = atmega328 -atmega328_notp_isp: HFUSE = DA -atmega328_notp_isp: LFUSE = FF -atmega328_notp_isp: EFUSE = 05 -atmega328_notp_isp: isp - -atmega328_pro8: TARGET = atmega328_pro_8MHz -atmega328_pro8: MCU_TARGET = atmega328p -atmega328_pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -DDOUBLE_SPEED -atmega328_pro8: AVR_FREQ = 8000000L -atmega328_pro8: LDSECTION = --section-start=.text=0x7800 -atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex - -atmega328_pro8_isp: atmega328_pro8 -atmega328_pro8_isp: TARGET = atmega328_pro_8MHz -atmega328_pro8_isp: MCU_TARGET = atmega328p -atmega328_pro8_isp: HFUSE = DA -atmega328_pro8_isp: LFUSE = FF -atmega328_pro8_isp: EFUSE = 05 -atmega328_pro8_isp: isp - -mega: TARGET = atmega1280 -mega: MCU_TARGET = atmega1280 -mega: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' -DBAUD_RATE=57600 -mega: AVR_FREQ = 16000000L -mega: LDSECTION = --section-start=.text=0x1F000 -mega: $(PROGRAM)_atmega1280.hex - -mega_isp: mega -mega_isp: TARGET = atmega1280 -mega_isp: MCU_TARGET = atmega1280 -mega_isp: HFUSE = DA -mega_isp: LFUSE = FF -mega_isp: EFUSE = F5 -mega_isp: isp - -isp: $(TARGET) - $(ISPFUSES) - $(ISPFLASH) - -isp-stk500: $(PROGRAM)_$(TARGET).hex - $(STK500-1) - $(STK500-2) - -%.elf: $(OBJ) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) - -clean: - rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex - -%.lst: %.elf - $(OBJDUMP) -h -S $< > $@ - -%.hex: %.elf - $(OBJCOPY) -j .text -j .data -O ihex $< $@ - -%.srec: %.elf - $(OBJCOPY) -j .text -j .data -O srec $< $@ - -%.bin: %.elf - $(OBJCOPY) -j .text -j .data -O binary $< $@ - diff --git a/bootloaders/atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex b/bootloaders/atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex deleted file mode 100644 index 6190d48..0000000 --- a/bootloaders/atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex +++ /dev/null @@ -1,66 +0,0 @@ -:101C000012C02BC02AC029C028C027C026C025C0AA -:101C100024C023C022C021C020C01FC01EC01DC0C0 -:101C20001CC01BC01AC011241FBECFE5D4E0DEBF0C -:101C3000CDBF10E0A0E6B0E0E8EEFFE102C0059005 -:101C40000D92A236B107D9F711E0A2E6B0E001C0CB -:101C50001D92AA36B107E1F74FC0D2CFEF92FF92A3 -:101C60000F931F93EE24FF24870113C00894E11CF7 -:101C7000F11C011D111D81E0E81682E1F8068AE7DA -:101C8000080780E0180728F0E0916200F0916300F7 -:101C900009955F9BEBCF8CB1992787FD90951F919C -:101CA0000F91FF90EF9008955D9BFECF8CB9089542 -:101CB000D5DF803221F484E1F7DF80E1F5DF08959C -:101CC0001F93182FCBDF803231F484E1EDDF812FB9 -:101CD000EBDF80E1E9DF1F9108951F93CF93DF933E -:101CE000182FC0E0D0E002C0B9DF2196C117E0F3A1 -:101CF000DF91CF911F910895CFE5D4E0DEBFCDBF36 -:101D0000000010BC83E389B988E18AB986E880BD08 -:101D1000BD9A1092680130E2E0E0F0E02FE088B375 -:101D2000832788BBCF010197F1F7215027FFF7CF19 -:101D300020E12093680192DF803381F1813399F4AF -:101D40008DDF8032C1F784E1AFDF81E4ADDF86E56E -:101D5000ABDF82E5A9DF80E2A7DF89E4A5DF83E5C9 -:101D6000A3DF80E5C7C0803429F478DF8638B0F07F -:101D700075DF14C0813471F471DF803811F482E0B2 -:101D80001DC1813811F481E019C1823809F015C1F3 -:101D900082E114C1823421F484E19FDF89DFCBCF5B -:101DA000853411F485E0F9CF8035C1F38135B1F385 -:101DB0008235A1F3853539F451DF809364004EDF1D -:101DC00080936500EBCF863519F484E086DFF5C09B -:101DD000843609F093C042DF809367013FDF809330 -:101DE0006601809169018E7F8093690137DF8534B8 -:101DF00029F480916901816080936901C0E0D0E09D -:101E000006E610E005C02ADFF80181938F012196D4 -:101E10008091660190916701C817D907A0F31EDF72 -:101E2000803209F088CF8091690180FF1FC020E0D7 -:101E300030E0E6E6F0E012C0A0916400B0916500E9 -:101E40008191082EC5D08091640090916500019623 -:101E500090936500809364002F5F3F4F80916601EF -:101E6000909167012817390738F343C0F894E19936 -:101E7000FECF1127E0916400F0916500EE0FFF1F87 -:101E8000C6E6D0E0809166019091670180FF01C0B5 -:101E90000196103051F422D003E000935700E895EA -:101EA0001DD001E100935700E8950990199016D0D4 -:101EB00001E000935700E8951395103258F0112770 -:101EC0000DD005E000935700E89508D001E100939C -:101ED0005700E8953296029739F0DBCF0091570012 -:101EE00001700130D9F30895103011F00296E7CF58 -:101EF000112484E1D9DE80E1D7DE1DCF843709F0DB -:101F00004BC0ACDE80936701A9DE80936601A6DE3C -:101F100090916901853421F49160909369010DC01D -:101F20009E7F909369018091640090916500880F75 -:101F3000991F909365008093640090DE803209F0D1 -:101F4000FACE84E1B1DEC0E0D0E01EC0809169012C -:101F500080FF07C0A0916400B091650031D0802D52 -:101F600008C081FD07C0E0916400F0916500E49134 -:101F70008E2F9ADE80916400909165000196909377 -:101F800065008093640021968091660190916701BD -:101F9000C817D907D8F2AFCF853761F45FDE80323A -:101FA00009F0C9CE84E180DE8EE17EDE83E97CDE4D -:101FB00087E0A0CF863709F0BECE80E081DEBBCEC1 -:101FC000E199FECFBFBBAEBBE09A11960DB208956A -:101FD000E199FECFBFBBAEBB0DBA11960FB6F89418 -:081FE000E29AE19A0FBE089598 -:021FE800800077 -:0400000300001C00DD -:00000001FF diff --git a/bootloaders/atmega8/ATmegaBOOT.c b/bootloaders/atmega8/ATmegaBOOT.c deleted file mode 100644 index 8c8d22a..0000000 --- a/bootloaders/atmega8/ATmegaBOOT.c +++ /dev/null @@ -1,507 +0,0 @@ -/**********************************************************/ -/* Serial Bootloader for Atmel mega8 AVR Controller */ -/* */ -/* ATmegaBOOT.c */ -/* */ -/* Copyright (c) 2003, Jason P. Kyle */ -/* */ -/* Hacked by DojoCorp - ZGZ - MMX - IVR */ -/* Hacked by David A. Mellis */ -/* */ -/* This program is free software; you can redistribute it */ -/* and/or modify it under the terms of the GNU General */ -/* Public License as published by the Free Software */ -/* Foundation; either version 2 of the License, or */ -/* (at your option) any later version. */ -/* */ -/* This program is distributed in the hope that it will */ -/* be useful, but WITHOUT ANY WARRANTY; without even the */ -/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ -/* PARTICULAR PURPOSE. See the GNU General Public */ -/* License for more details. */ -/* */ -/* You should have received a copy of the GNU General */ -/* Public License along with this program; if not, write */ -/* to the Free Software Foundation, Inc., */ -/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* */ -/* Licence can be viewed at */ -/* http://www.fsf.org/licenses/gpl.txt */ -/* */ -/* Target = Atmel AVR m8 */ -/**********************************************************/ - -#include -#include -#include -#include -#include -#include - -//#define F_CPU 16000000 - -/* We, Malmoitians, like slow interaction - * therefore the slow baud rate ;-) - */ -//#define BAUD_RATE 9600 - -/* 6.000.000 is more or less 8 seconds at the - * speed configured here - */ -//#define MAX_TIME_COUNT 6000000 -#define MAX_TIME_COUNT (F_CPU>>1) -///#define MAX_TIME_COUNT_MORATORY 1600000 - -/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ -#define HW_VER 0x02 -#define SW_MAJOR 0x01 -#define SW_MINOR 0x12 - -// AVR-GCC compiler compatibility -// avr-gcc compiler v3.1.x and older doesn't support outb() and inb() -// if necessary, convert outb and inb to outp and inp -#ifndef outb - #define outb(sfr,val) (_SFR_BYTE(sfr) = (val)) -#endif -#ifndef inb - #define inb(sfr) _SFR_BYTE(sfr) -#endif - -/* defines for future compatibility */ -#ifndef cbi - #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) -#endif -#ifndef sbi - #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) -#endif - -/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ -#define eeprom_rb(addr) eeprom_read_byte ((uint8_t *)(addr)) -#define eeprom_rw(addr) eeprom_read_word ((uint16_t *)(addr)) -#define eeprom_wb(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val)) - -/* Onboard LED is connected to pin PB5 */ -#define LED_DDR DDRB -#define LED_PORT PORTB -#define LED_PIN PINB -#define LED PINB5 - - -#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( -#define SIG2 0x93 -#define SIG3 0x07 -#define PAGE_SIZE 0x20U //32 words - - -void putch(char); -char getch(void); -void getNch(uint8_t); -void byte_response(uint8_t); -void nothing_response(void); - -union address_union { - uint16_t word; - uint8_t byte[2]; -} address; - -union length_union { - uint16_t word; - uint8_t byte[2]; -} length; - -struct flags_struct { - unsigned eeprom : 1; - unsigned rampz : 1; -} flags; - -uint8_t buff[256]; -//uint8_t address_high; - -uint8_t pagesz=0x80; - -uint8_t i; -//uint8_t bootuart0=0,bootuart1=0; - - -void (*app_start)(void) = 0x0000; - -int main(void) -{ - uint8_t ch,ch2; - uint16_t w; - - //cbi(BL_DDR,BL); - //sbi(BL_PORT,BL); - - asm volatile("nop\n\t"); - - /* check if flash is programmed already, if not start bootloader anyway */ - //if(pgm_read_byte_near(0x0000) != 0xFF) { - - /* check if bootloader pin is set low */ - //if(bit_is_set(BL_PIN,BL)) app_start(); - //} - - /* initialize UART(s) depending on CPU defined */ - /* m8 */ - UBRRH = (((F_CPU/BAUD_RATE)/16)-1)>>8; // set baud rate - UBRRL = (((F_CPU/BAUD_RATE)/16)-1); - UCSRB = (1<> 8; - //UCSRA = 0x00; - //UCSRC = 0x86; - //UCSRB = _BV(TXEN)|_BV(RXEN); - - - /* this was giving uisp problems, so I removed it; without it, the boot - works on with uisp and avrdude on the mac (at least). */ - //putch('\0'); - - //uint32_t l; - //uint32_t time_count; - //time_count=0; - - /* set LED pin as output */ - sbi(LED_DDR,LED); - for (i = 0; i < 16; i++) { - outb(LED_PORT, inb(LED_PORT) ^ _BV(LED)); - _delay_loop_2(0); - } - - //for (l=0; l<40000000; l++) - //outb(LED_PORT, inb(LED_PORT) ^= _BV(LED)); - - /* flash onboard LED three times to signal entering of bootloader */ - //for(i=0; i<3; ++i) { - //for(l=0; l<40000000; ++l); - //sbi(LED_PORT,LED); - //for(l=0; l<40000000; ++l); - //cbi(LED_PORT,LED); - //} - - /* see comment at previous call to putch() */ - //putch('\0'); // this line is needed for the synchronization of the programmer - - /* forever */ - for (;;) { - //if((inb(UCSRA) & _BV(RXC))){ - /* get character from UART */ - ch = getch(); - - /* A bunch of if...else if... gives smaller code than switch...case ! */ - - /* Hello is anyone home ? */ - if(ch=='0') { - nothing_response(); - } - - /* Request programmer ID */ - /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ - /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ - else if(ch=='1') { - if (getch() == ' ') { - putch(0x14); - putch('A'); - putch('V'); - putch('R'); - putch(' '); - putch('I'); - putch('S'); - putch('P'); - putch(0x10); - } - } - - /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ - else if(ch=='@') { - ch2 = getch(); - if (ch2>0x85) getch(); - nothing_response(); - } - - /* AVR ISP/STK500 board requests */ - else if(ch=='A') { - ch2 = getch(); - if(ch2==0x80) byte_response(HW_VER); // Hardware version - else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version - else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version - //else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 - else byte_response(0x00); // Covers various unnecessary responses we don't care about - } - - /* Device Parameters DON'T CARE, DEVICE IS FIXED */ - else if(ch=='B') { - getNch(20); - nothing_response(); - } - - /* Parallel programming stuff DON'T CARE */ - else if(ch=='E') { - getNch(5); - nothing_response(); - } - - /* Enter programming mode */ - else if(ch=='P') { - nothing_response(); - // FIXME: modified only here by DojoCorp, Mumbai, India, 20050626 - //time_count=0; // exted the delay once entered prog.mode - } - - /* Leave programming mode */ - else if(ch=='Q') { - nothing_response(); - //time_count=MAX_TIME_COUNT_MORATORY; // once the programming is done, - // we should start the application - // but uisp has problems with this, - // therefore we just change the times - // and give the programmer 1 sec to react - } - - /* Erase device, don't care as we will erase one page at a time anyway. */ - else if(ch=='R') { - nothing_response(); - } - - /* Set address, little endian. EEPROM in bytes, FLASH in words */ - /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ - /* This might explain why little endian was used here, big endian used everywhere else. */ - else if(ch=='U') { - address.byte[0] = getch(); - address.byte[1] = getch(); - nothing_response(); - } - - /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ - else if(ch=='V') { - getNch(4); - byte_response(0x00); - } - - /* Write memory, length is big endian and is in bytes */ - else if(ch=='d') { - length.byte[1] = getch(); - length.byte[0] = getch(); - flags.eeprom = 0; - if (getch() == 'E') flags.eeprom = 1; - for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME - //else address_high = 0x00; - - //address.word = address.word << 1; //address * 2 -> byte location - //if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes - cli(); //Disable interrupts, just to be sure - while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete - asm volatile( - "clr r17 \n\t" //page_word_count - "lds r30,address \n\t" //Address of FLASH location (in words) - "lds r31,address+1 \n\t" - "lsl r30 \n\t" //address * 2 -> byte location - "rol r31 \n\t" - "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM - "ldi r29,hi8(buff) \n\t" - "lds r24,length \n\t" //Length of data to be written (in bytes) - "lds r25,length+1 \n\t" - "sbrs r24,0 \n\t" //Even up an odd number of bytes - "rjmp length_loop \n\t" - "adiw r24,1 \n\t" - "length_loop: \n\t" //Main loop, repeat for number of words in block - "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page - "brne no_page_erase \n\t" - "rcall wait_spm \n\t" -// "wait_spm1: \n\t" -// "lds r16,%0 \n\t" //Wait for previous spm to complete -// "andi r16,1 \n\t" -// "cpi r16,1 \n\t" -// "breq wait_spm1 \n\t" - "ldi r16,0x03 \n\t" //Erase page pointed to by Z - "sts %0,r16 \n\t" - "spm \n\t" - "rcall wait_spm \n\t" -// "wait_spm2: \n\t" -// "lds r16,%0 \n\t" //Wait for previous spm to complete -// "andi r16,1 \n\t" -// "cpi r16,1 \n\t" -// "breq wait_spm2 \n\t" - "ldi r16,0x11 \n\t" //Re-enable RWW section - "sts %0,r16 \n\t" - "spm \n\t" - "no_page_erase: \n\t" - "ld r0,Y+ \n\t" //Write 2 bytes into page buffer - "ld r1,Y+ \n\t" - - "rcall wait_spm \n\t" -// "wait_spm3: \n\t" -// "lds r16,%0 \n\t" //Wait for previous spm to complete -// "andi r16,1 \n\t" -// "cpi r16,1 \n\t" -// "breq wait_spm3 \n\t" - "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer - "sts %0,r16 \n\t" - "spm \n\t" - - "inc r17 \n\t" //page_word_count++ - "cpi r17,%1 \n\t" - "brlo same_page \n\t" //Still same page in FLASH - "write_page: \n\t" - "clr r17 \n\t" //New page, write current one first - "rcall wait_spm \n\t" -// "wait_spm4: \n\t" -// "lds r16,%0 \n\t" //Wait for previous spm to complete -// "andi r16,1 \n\t" -// "cpi r16,1 \n\t" -// "breq wait_spm4 \n\t" - "ldi r16,0x05 \n\t" //Write page pointed to by Z - "sts %0,r16 \n\t" - "spm \n\t" - "rcall wait_spm \n\t" -// "wait_spm5: \n\t" -// "lds r16,%0 \n\t" //Wait for previous spm to complete -// "andi r16,1 \n\t" -// "cpi r16,1 \n\t" -// "breq wait_spm5 \n\t" - "ldi r16,0x11 \n\t" //Re-enable RWW section - "sts %0,r16 \n\t" - "spm \n\t" - "same_page: \n\t" - "adiw r30,2 \n\t" //Next word in FLASH - "sbiw r24,2 \n\t" //length-2 - "breq final_write \n\t" //Finished - "rjmp length_loop \n\t" - - "wait_spm: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm \n\t" - "ret \n\t" - - "final_write: \n\t" - "cpi r17,0 \n\t" - "breq block_done \n\t" - "adiw r24,2 \n\t" //length+2, fool above check on length after short page write - "rjmp write_page \n\t" - "block_done: \n\t" - "clr __zero_reg__ \n\t" //restore zero register - : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31"); - - /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ - /* exit the bootloader without a power cycle anyhow */ - } - putch(0x14); - putch(0x10); - } - } - - /* Read memory block mode, length is big endian. */ - else if(ch=='t') { - length.byte[1] = getch(); - length.byte[0] = getch(); - if (getch() == 'E') flags.eeprom = 1; - else { - flags.eeprom = 0; - address.word = address.word << 1; // address * 2 -> byte location - } - if (getch() == ' ') { // Command terminator - putch(0x14); - for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay - if (flags.eeprom) { // Byte access EEPROM read - putch(eeprom_rb(address.word)); - address.word++; - } else { - if (!flags.rampz) putch(pgm_read_byte_near(address.word)); - address.word++; - } - } - putch(0x10); - } - } - - /* Get device signature bytes */ - else if(ch=='u') { - if (getch() == ' ') { - putch(0x14); - putch(SIG1); - putch(SIG2); - putch(SIG3); - putch(0x10); - } - } - - /* Read oscillator calibration byte */ - else if(ch=='v') { - byte_response(0x00); - } -// } else { -// time_count++; -// if (time_count>=MAX_TIME_COUNT) { -// app_start(); -// } -// } - } /* end of forever loop */ -} - -void putch(char ch) -{ - /* m8 */ - while (!(inb(UCSRA) & _BV(UDRE))); - outb(UDR,ch); -} - -char getch(void) -{ - /* m8 */ - uint32_t count = 0; - while(!(inb(UCSRA) & _BV(RXC))) { - /* HACKME:: here is a good place to count times*/ - count++; - if (count > MAX_TIME_COUNT) - app_start(); - } - return (inb(UDR)); -} - -void getNch(uint8_t count) -{ - uint8_t i; - for(i=0;i $@ - -size: $(PROGRAM).hex - $(SIZE) $^ - -# Rules for building the .text rom images - -text: hex bin srec - -hex: $(PROGRAM).hex -bin: $(PROGRAM).bin -srec: $(PROGRAM).srec - -%.hex: %.elf - $(OBJCOPY) -j .text -j .data -O ihex $< $@ - -%.srec: %.elf - $(OBJCOPY) -j .text -j .data -O srec $< $@ - -%.bin: %.elf - $(OBJCOPY) -j .text -j .data -O binary $< $@ diff --git a/bootloaders/bt/ATmegaBOOT_168.c b/bootloaders/bt/ATmegaBOOT_168.c deleted file mode 100644 index d477e7a..0000000 --- a/bootloaders/bt/ATmegaBOOT_168.c +++ /dev/null @@ -1,1043 +0,0 @@ -/**********************************************************/ -/* Serial Bootloader for Atmel megaAVR Controllers */ -/* */ -/* tested with ATmega8, ATmega128 and ATmega168 */ -/* should work with other mega's, see code for details */ -/* */ -/* ATmegaBOOT.c */ -/* */ -/* build: 050815 */ -/* date : 15.08.2005 */ -/* */ -/* 20060802: hacked for Arduino by D. Cuartielles */ -/* based on a previous hack by D. Mellis */ -/* and D. Cuartielles */ -/* */ -/* Monitor and debug functions were added to the original */ -/* code by Dr. Erik Lins, chip45.com. (See below) */ -/* */ -/* Thanks to Karl Pitrich for fixing a bootloader pin */ -/* problem and more informative LED blinking! */ -/* */ -/* For the latest version see: */ -/* http://www.chip45.com/ */ -/* */ -/* ------------------------------------------------------ */ -/* */ -/* based on stk500boot.c */ -/* Copyright (c) 2003, Jason P. Kyle */ -/* All rights reserved. */ -/* see avr1.org for original file and information */ -/* */ -/* This program is free software; you can redistribute it */ -/* and/or modify it under the terms of the GNU General */ -/* Public License as published by the Free Software */ -/* Foundation; either version 2 of the License, or */ -/* (at your option) any later version. */ -/* */ -/* This program is distributed in the hope that it will */ -/* be useful, but WITHOUT ANY WARRANTY; without even the */ -/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ -/* PARTICULAR PURPOSE. See the GNU General Public */ -/* License for more details. */ -/* */ -/* You should have received a copy of the GNU General */ -/* Public License along with this program; if not, write */ -/* to the Free Software Foundation, Inc., */ -/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* */ -/* Licence can be viewed at */ -/* http://www.fsf.org/licenses/gpl.txt */ -/* */ -/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ -/* m8515,m8535. ATmega161 has a very small boot block so */ -/* isn't supported. */ -/* */ -/* Tested with m128,m8,m163 - feel free to let me know */ -/* how/if it works for you. */ -/* */ -/**********************************************************/ - - -/* some includes */ -#include -#include -#include -#include -#include - - -#define set_output(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) -#define set_input(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) - - -#define high(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) -#define low(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) - - - - -/* the current avr-libc eeprom functions do not support the ATmega168 */ -/* own eeprom write/read functions are used instead */ -#if !defined(__AVR_ATmega168__) || !defined(__AVR_ATmega328P__) || !defined(__AVR_ATmega328__) -#include -#endif - -/* define F_CPU according to AVR_FREQ set in Makefile */ -/* Is there a better way to pass such a parameter from Makefile to source code ? */ - -#define F_CPU 16000000L - -#include - - -/* 20060803: hacked by DojoCorp */ -/* set the waiting time for the bootloader */ -#define MAX_TIME_COUNT (F_CPU>>1) - -/* set the UART baud rate */ -/* 20060803: hacked by DojoCorp */ -#define BAUD_RATE 115200 - - -/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ -/* never allow AVR Studio to do an update !!!! */ -#define HW_VER 0x02 -#define SW_MAJOR 0x01 -#define SW_MINOR 0x0f - - -/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ -/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ -/* BL0... means UART0, BL1... means UART1 */ -#ifdef __AVR_ATmega128__ -#define BL_DDR DDRF -#define BL_PORT PORTF -#define BL_PIN PINF -#define BL0 PINF7 -#define BL1 PINF6 -#else -/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ -#define BL_DDR DDRD -#define BL_PORT PORTD -#define BL_PIN PIND -#define BL PIND6 -#endif - - -/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ -/* if monitor functions are included, LED goes on after monitor was entered */ -#ifdef __AVR_ATmega128__ -/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128) */ -#define LED_DDR DDRB -#define LED_PORT PORTB -#define LED_PIN PINB -#define LED PINB7 -#else -/* Onboard LED is connected to pin PB2 (e.g. Crumb8, Crumb168) */ -#define LED_DDR DDRB -#define LED_PORT PORTB -#define LED_PIN PINB -/* 20060803: hacked by DojoCorp, LED pin is B5 in Arduino */ -/* #define LED PINB2 */ -#define LED PINB5 -#endif - - -/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ -#ifdef __AVR_ATmega128__ -#define MONITOR -#endif - - -/* define various device id's */ -/* manufacturer byte is always the same */ -#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( - -#if defined __AVR_ATmega128__ -#define SIG2 0x97 -#define SIG3 0x02 -#define PAGE_SIZE 0x80U //128 words - -#elif defined __AVR_ATmega64__ -#define SIG2 0x96 -#define SIG3 0x02 -#define PAGE_SIZE 0x80U //128 words - -#elif defined __AVR_ATmega32__ -#define SIG2 0x95 -#define SIG3 0x02 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega16__ -#define SIG2 0x94 -#define SIG3 0x03 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega8__ -#define SIG2 0x93 -#define SIG3 0x07 -#define PAGE_SIZE 0x20U //32 words - -#elif defined __AVR_ATmega88__ -#define SIG2 0x93 -#define SIG3 0x0a -#define PAGE_SIZE 0x20U //32 words - -#elif defined __AVR_ATmega168__ -#define SIG2 0x94 -#define SIG3 0x06 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega328P__ -#define SIG2 0x95 -#define SIG3 0x0F -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega328__ -#define SIG2 0x95 -#define SIG3 0x14 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega162__ -#define SIG2 0x94 -#define SIG3 0x04 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega163__ -#define SIG2 0x94 -#define SIG3 0x02 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega169__ -#define SIG2 0x94 -#define SIG3 0x05 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega8515__ -#define SIG2 0x93 -#define SIG3 0x06 -#define PAGE_SIZE 0x20U //32 words - -#elif defined __AVR_ATmega8535__ -#define SIG2 0x93 -#define SIG3 0x08 -#define PAGE_SIZE 0x20U //32 words -#endif - - -/* function prototypes */ -void putch(char); -char getch(void); -void getNch(uint8_t); -void byte_response(uint8_t); -void nothing_response(void); -char gethex(void); -void puthex(char); -void flash_led(uint8_t); - -/* some variables */ -union address_union { - uint16_t word; - uint8_t byte[2]; -} address; - -union length_union { - uint16_t word; - uint8_t byte[2]; -} length; - -struct flags_struct { - unsigned eeprom : 1; - unsigned rampz : 1; -} flags; - -uint8_t buff[256]; -uint8_t address_high; - -uint8_t pagesz=0x80; - -uint8_t i; -uint8_t bootuart = 0; - -void (*app_start)(void) = 0x0000; - - -/* main program starts here */ -int main(void) -{ - uint8_t ch,ch2; - uint16_t w; - - asm volatile("nop\n\t"); - - /* set pin direction for bootloader pin and enable pullup */ - /* for ATmega128, two pins need to be initialized */ -#ifdef __AVR_ATmega128__ - BL_DDR &= ~_BV(BL0); - BL_DDR &= ~_BV(BL1); - BL_PORT |= _BV(BL0); - BL_PORT |= _BV(BL1); -#else - BL_DDR &= ~_BV(BL); - BL_PORT |= _BV(BL); -#endif - - -#ifdef __AVR_ATmega128__ - /* check which UART should be used for booting */ - if(bit_is_clear(BL_PIN, BL0)) { - bootuart = 1; - } - else if(bit_is_clear(BL_PIN, BL1)) { - bootuart = 2; - } -#endif - - /* check if flash is programmed already, if not start bootloader anyway */ - if(pgm_read_byte_near(0x0000) != 0xFF) { - -#ifdef __AVR_ATmega128__ - /* no UART was selected, start application */ - if(!bootuart) { - app_start(); - } -#else - /* check if bootloader pin is set low */ - /* we don't start this part neither for the m8, nor m168 */ - //if(bit_is_set(BL_PIN, BL)) { - // app_start(); - // } -#endif - } - -#ifdef __AVR_ATmega128__ - /* no bootuart was selected, default to uart 0 */ - if(!bootuart) { - bootuart = 1; - } -#endif - - - /* initialize UART(s) depending on CPU defined */ -#ifdef __AVR_ATmega128__ - if(bootuart == 1) { - UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSR0A = 0x00; - UCSR0C = 0x06; - UCSR0B = _BV(TXEN0)|_BV(RXEN0); - } - if(bootuart == 2) { - UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSR1A = 0x00; - UCSR1C = 0x06; - UCSR1B = _BV(TXEN1)|_BV(RXEN1); - } -#elif defined __AVR_ATmega163__ - UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSRA = 0x00; - UCSRB = _BV(TXEN)|_BV(RXEN); -#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) - - UBRR0H = ((F_CPU / 16 + BAUD_RATE / 2) / BAUD_RATE - 1) >> 8; - UBRR0L = ((F_CPU / 16 + BAUD_RATE / 2) / BAUD_RATE - 1); - - - //UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - //UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSR0B = (1<>8; // set baud rate - UBRRL = (((F_CPU/BAUD_RATE)/16)-1); - UCSRB = (1<> 8; - UCSRA = 0x00; - UCSRC = 0x06; - UCSRB = _BV(TXEN)|_BV(RXEN); -#endif - - /* set LED pin as output */ - LED_DDR |= _BV(LED); - - - - set_output(DDRD,PIND7); - high(PORTD,PD7); - for (i = 0; i < 16; i++) { - - _delay_loop_2(0); - } - - - low(PORTD,PD7); - - - /* flash onboard LED to signal entering of bootloader */ -#ifdef __AVR_ATmega128__ - // 4x for UART0, 5x for UART1 - flash_led(3 + bootuart); -#else - flash_led(3); -#endif - - /* 20050803: by DojoCorp, this is one of the parts provoking the - system to stop listening, cancelled from the original */ - //putch('\0'); - - - //message("SET BT PAGEMODE 3 2000 1"); -putch('S'); -putch('E'); -putch('T'); -putch(' '); -putch('B'); -putch('T'); -putch(' '); -putch('P'); -putch('A'); -putch('G'); -putch('E'); -putch('M'); -putch('O'); -putch('D'); -putch('E'); -putch(' '); -putch('3'); -putch(' '); -putch('2'); -putch('0'); -putch('0'); -putch('0'); -putch(' '); -putch('1'); -putch(0x0D); - - - //put_s("SET BT ROLE 0 f 7d00"); - putch('S'); - putch('E'); - putch('T'); - putch(' '); - putch('B'); - putch('T'); - putch(' '); - putch('R'); - putch('O'); - putch('L'); - putch('E'); - putch(' '); - putch('0'); - putch(' '); - putch('f'); - putch(' '); - putch('7'); - putch('d'); - putch('0'); - putch('0'); - putch(0x0D); - - - - - - - /* forever loop */ - for (;;) { - - /* get character from UART */ - ch = getch(); - - /* A bunch of if...else if... gives smaller code than switch...case ! */ - - /* Hello is anyone home ? */ - if(ch=='0') { - nothing_response(); - } - - - /* Request programmer ID */ - /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ - /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ - else if(ch=='1') { - if (getch() == ' ') { - putch(0x14); - putch('A'); - putch('V'); - putch('R'); - putch(' '); - putch('I'); - putch('S'); - putch('P'); - putch(0x10); - } - } - - - /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ - else if(ch=='@') { - ch2 = getch(); - if (ch2>0x85) getch(); - nothing_response(); - } - - - /* AVR ISP/STK500 board requests */ - else if(ch=='A') { - ch2 = getch(); - if(ch2==0x80) byte_response(HW_VER); // Hardware version - else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version - else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version - else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 - else byte_response(0x00); // Covers various unnecessary responses we don't care about - } - - - /* Device Parameters DON'T CARE, DEVICE IS FIXED */ - else if(ch=='B') { - getNch(20); - nothing_response(); - } - - - /* Parallel programming stuff DON'T CARE */ - else if(ch=='E') { - getNch(5); - nothing_response(); - } - - - /* Enter programming mode */ - else if(ch=='P') { - nothing_response(); - } - - - /* Leave programming mode */ - else if(ch=='Q') { - nothing_response(); - } - - - /* Erase device, don't care as we will erase one page at a time anyway. */ - else if(ch=='R') { - nothing_response(); - } - - - /* Set address, little endian. EEPROM in bytes, FLASH in words */ - /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ - /* This might explain why little endian was used here, big endian used everywhere else. */ - else if(ch=='U') { - address.byte[0] = getch(); - address.byte[1] = getch(); - nothing_response(); - } - - - /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ - else if(ch=='V') { - getNch(4); - byte_response(0x00); - } - - - /* Write memory, length is big endian and is in bytes */ - else if(ch=='d') { - length.byte[1] = getch(); - length.byte[0] = getch(); - flags.eeprom = 0; - if (getch() == 'E') flags.eeprom = 1; - for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME - else address_high = 0x00; -#ifdef __AVR_ATmega128__ - RAMPZ = address_high; -#endif - address.word = address.word << 1; //address * 2 -> byte location - /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ - if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes - cli(); //Disable interrupts, just to be sure - // HACKME: EEPE used to be EEWE - while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete - asm volatile( - "clr r17 \n\t" //page_word_count - "lds r30,address \n\t" //Address of FLASH location (in bytes) - "lds r31,address+1 \n\t" - "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM - "ldi r29,hi8(buff) \n\t" - "lds r24,length \n\t" //Length of data to be written (in bytes) - "lds r25,length+1 \n\t" - "length_loop: \n\t" //Main loop, repeat for number of words in block - "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page - "brne no_page_erase \n\t" - "wait_spm1: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm1 \n\t" - "ldi r16,0x03 \n\t" //Erase page pointed to by Z - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" -#endif - "wait_spm2: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm2 \n\t" - - "ldi r16,0x11 \n\t" //Re-enable RWW section - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" -#endif - "no_page_erase: \n\t" - "ld r0,Y+ \n\t" //Write 2 bytes into page buffer - "ld r1,Y+ \n\t" - - "wait_spm3: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm3 \n\t" - "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer - "sts %0,r16 \n\t" - "spm \n\t" - - "inc r17 \n\t" //page_word_count++ - "cpi r17,%1 \n\t" - "brlo same_page \n\t" //Still same page in FLASH - "write_page: \n\t" - "clr r17 \n\t" //New page, write current one first - "wait_spm4: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm4 \n\t" -#ifdef __AVR_ATmega163__ - "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write -#endif - "ldi r16,0x05 \n\t" //Write page pointed to by Z - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" - "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) -#endif - "wait_spm5: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm5 \n\t" - "ldi r16,0x11 \n\t" //Re-enable RWW section - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" -#endif - "same_page: \n\t" - "adiw r30,2 \n\t" //Next word in FLASH - "sbiw r24,2 \n\t" //length-2 - "breq final_write \n\t" //Finished - "rjmp length_loop \n\t" - "final_write: \n\t" - "cpi r17,0 \n\t" - "breq block_done \n\t" - "adiw r24,2 \n\t" //length+2, fool above check on length after short page write - "rjmp write_page \n\t" - "block_done: \n\t" - "clr __zero_reg__ \n\t" //restore zero register -#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega_328__) - : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" -#else - : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" -#endif - ); - /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ - /* exit the bootloader without a power cycle anyhow */ - } - putch(0x14); - putch(0x10); - } - } - - - /* Read memory block mode, length is big endian. */ - else if(ch=='t') { - length.byte[1] = getch(); - length.byte[0] = getch(); -#if defined __AVR_ATmega128__ - if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME - else flags.rampz = 0; -#endif - if (getch() == 'E') flags.eeprom = 1; - else { - flags.eeprom = 0; - address.word = address.word << 1; // address * 2 -> byte location - } - if (getch() == ' ') { // Command terminator - putch(0x14); - for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay - if (flags.eeprom) { // Byte access EEPROM read -#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) - while(EECR & (1<= 'a') { - ah = ah - 'a' + 0x0a; - } else if(ah >= '0') { - ah -= '0'; - } - if(al >= 'a') { - al = al - 'a' + 0x0a; - } else if(al >= '0') { - al -= '0'; - } - return (ah << 4) + al; -} - - -void puthex(char ch) { - char ah,al; - - ah = (ch & 0xf0) >> 4; - if(ah >= 0x0a) { - ah = ah - 0x0a + 'a'; - } else { - ah += '0'; - } - al = (ch & 0x0f); - if(al >= 0x0a) { - al = al - 0x0a + 'a'; - } else { - al += '0'; - } - putch(ah); - putch(al); -} - - -void putch(char ch) -{ -#ifdef __AVR_ATmega128__ - if(bootuart == 1) { - while (!(UCSR0A & _BV(UDRE0))); - UDR0 = ch; - } - else if (bootuart == 2) { - while (!(UCSR1A & _BV(UDRE1))); - UDR1 = ch; - } -#elif defined (__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) - while (!(UCSR0A & _BV(UDRE0))); - UDR0 = ch; -#else - /* m8,16,32,169,8515,8535,163 */ - while (!(UCSRA & _BV(UDRE))); - UDR = ch; -#endif -} - - -char getch(void) -{ -#ifdef __AVR_ATmega128__ - if(bootuart == 1) { - while(!(UCSR0A & _BV(RXC0))); - return UDR0; - } - else if(bootuart == 2) { - while(!(UCSR1A & _BV(RXC1))); - return UDR1; - } - return 0; -#elif defined (__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) - uint32_t count = 0; - while(!(UCSR0A & _BV(RXC0))){ - /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ - /* HACKME:: here is a good place to count times*/ - count++; - if (count > MAX_TIME_COUNT) - app_start(); - } - return UDR0; -#else - /* m8,16,32,169,8515,8535,163 */ - uint32_t count = 0; - while(!(UCSRA & _BV(RXC))){ - /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ - /* HACKME:: here is a good place to count times*/ - count++; - if (count > MAX_TIME_COUNT) - app_start(); - } - return UDR; -#endif -} - - -void getNch(uint8_t count) -{ - uint8_t i; - for(i=0;i $@ - -%.hex: %.elf - $(OBJCOPY) -j .text -j .data -O ihex $< $@ - -%.srec: %.elf - $(OBJCOPY) -j .text -j .data -O srec $< $@ - -%.bin: %.elf - $(OBJCOPY) -j .text -j .data -O binary $< $@ - diff --git a/bootloaders/gemma/README.md b/bootloaders/gemma/README.md deleted file mode 100644 index 2653e48..0000000 --- a/bootloaders/gemma/README.md +++ /dev/null @@ -1,14 +0,0 @@ -Arduino Gemma Bootloader -======================== - -The Arduino Gemma Bootloader is based on the Adafruit Trinket/Gemma Bootloader. In the Arduino Gemma bootloader the USB VID&PID, the Manufacturer name and the Device name parameters are changed. - -The source code of the bootloader of the version used at the compile time can be found at the following link: https://github.com/adafruit/Adafruit-Trinket-Gemma-Bootloader/tree/3bc1bb561273535d4d493518a233a3a1fccf6b76 - -The *'usbconfig.h'* and the *'usbconfig.patch'* files are provided if you want to recompile the bootloader. -You only need to replace the original *'usbconfig.h'* file with this one or patch it with the provided patch file. - -**Please note: you cannot use the Arduino USB VID/PID for your own non-Gemma products or projects. Purchase a USB VID for yourself at** http://www.usb.org/developers/vendor/ - - - diff --git a/bootloaders/gemma/avrdude.conf b/bootloaders/gemma/avrdude.conf deleted file mode 100644 index 2e1aebb..0000000 --- a/bootloaders/gemma/avrdude.conf +++ /dev/null @@ -1,14389 +0,0 @@ -# AVRDUDE Configuration File -# -# This file contains configuration data used by AVRDUDE which describes -# the programming hardware pinouts and also provides part definitions. -# AVRDUDE's "-C" command line option specifies the location of the -# configuration file. The "-c" option names the programmer configuration -# which must match one of the entry's "id" parameter. The "-p" option -# identifies which part AVRDUDE is going to be programming and must match -# one of the parts' "id" parameter. -# -# Possible entry formats are: -# -# programmer -# parent # optional parent -# id = [, [, ] ...] ; # are quoted strings -# desc = ; # quoted string -# type = ; # programmer type, quoted string -# # supported programmer types can be listed by "-c ?type" -# connection_type = parallel | serial | usb -# baudrate = ; # baudrate for avr910-programmer -# vcc = [, ... ] ; # pin number(s) -# buff = [, ... ] ; # pin number(s) -# reset = ; # pin number -# sck = ; # pin number -# mosi = ; # pin number -# miso = ; # pin number -# errled = ; # pin number -# rdyled = ; # pin number -# pgmled = ; # pin number -# vfyled = ; # pin number -# usbvid = ; # USB VID (Vendor ID) -# usbpid = ; # USB PID (Product ID) -# usbdev = ; # USB interface or other device info -# usbvendor = ; # USB Vendor Name -# usbproduct = ; # USB Product Name -# usbsn = ; # USB Serial Number -# -# To invert a bit, use = ~ , the spaces are important. -# For a pin list all pins must be inverted. -# A single pin can be specified as usual = ~ , for lists -# specify it as follows = ~ ( [, ... ] ) . -# ; -# -# part -# id = ; # quoted string -# desc = ; # quoted string -# has_jtag = ; # part has JTAG i/f -# has_debugwire = ; # part has debugWire i/f -# has_pdi = ; # part has PDI i/f -# has_tpi = ; # part has TPI i/f -# devicecode = ; # deprecated, use stk500_devcode -# stk500_devcode = ; # numeric -# avr910_devcode = ; # numeric -# signature = ; # signature bytes -# chip_erase_delay = ; # micro-seconds -# reset = dedicated | io; -# retry_pulse = reset | sck; -# pgm_enable = ; -# chip_erase = ; -# chip_erase_delay = ; # chip erase delay (us) -# # STK500 parameters (parallel programming IO lines) -# pagel = ; # pin name in hex, i.e., 0xD7 -# bs2 = ; # pin name in hex, i.e., 0xA0 -# serial = ; # can use serial downloading -# parallel = ; # can use par. programming -# # STK500v2 parameters, to be taken from Atmel's XML files -# timeout = ; -# stabdelay = ; -# cmdexedelay = ; -# synchloops = ; -# bytedelay = ; -# pollvalue = ; -# pollindex = ; -# predelay = ; -# postdelay = ; -# pollmethod = ; -# mode = ; -# delay = ; -# blocksize = ; -# readsize = ; -# hvspcmdexedelay = ; -# # STK500v2 HV programming parameters, from XML -# pp_controlstack = , , ...; # PP only -# hvsp_controlstack = , , ...; # HVSP only -# hventerstabdelay = ; -# progmodedelay = ; # PP only -# latchcycles = ; -# togglevtg = ; -# poweroffdelay = ; -# resetdelayms = ; -# resetdelayus = ; -# hvleavestabdelay = ; -# resetdelay = ; -# synchcycles = ; # HVSP only -# chiperasepulsewidth = ; # PP only -# chiperasepolltimeout = ; -# chiperasetime = ; # HVSP only -# programfusepulsewidth = ; # PP only -# programfusepolltimeout = ; -# programlockpulsewidth = ; # PP only -# programlockpolltimeout = ; -# # JTAG ICE mkII parameters, also from XML files -# allowfullpagebitstream = ; -# enablepageprogramming = ; -# idr = ; # IO addr of IDR (OCD) reg. -# rampz = ; # IO addr of RAMPZ reg. -# spmcr = ; # mem addr of SPMC[S]R reg. -# eecr = ; # mem addr of EECR reg. -# # (only when != 0x3c) -# is_at90s1200 = ; # AT90S1200 part -# is_avr32 = ; # AVR32 part -# -# memory -# paged = ; # yes / no -# size = ; # bytes -# page_size = ; # bytes -# num_pages = ; # numeric -# min_write_delay = ; # micro-seconds -# max_write_delay = ; # micro-seconds -# readback_p1 = ; # byte value -# readback_p2 = ; # byte value -# pwroff_after_write = ; # yes / no -# read = ; -# write = ; -# read_lo = ; -# read_hi = ; -# write_lo = ; -# write_hi = ; -# loadpage_lo = ; -# loadpage_hi = ; -# writepage = ; -# ; -# ; -# -# If any of the above parameters are not specified, the default value -# of 0 is used for numerics or the empty string ("") for string -# values. If a required parameter is left empty, AVRDUDE will -# complain. -# -# Parts can also inherit parameters from previously defined parts -# using the following syntax. In this case specified integer and -# string values override parameter values from the parent part. New -# memory definitions are added to the definitions inherited from the -# parent. -# -# part parent # quoted string -# id = ; # quoted string -# -# ; -# -# NOTES: -# * 'devicecode' is the device code used by the STK500 (see codes -# listed below) -# * Not all memory types will implement all instructions. -# * AVR Fuse bits and Lock bits are implemented as a type of memory. -# * Example memory types are: -# "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high -# fuse), "signature", "calibration", "lock" -# * The memory type specified on the avrdude command line must match -# one of the memory types defined for the specified chip. -# * The pwroff_after_write flag causes avrdude to attempt to -# power the device off and back on after an unsuccessful write to -# the affected memory area if VCC programmer pins are defined. If -# VCC pins are not defined for the programmer, a message -# indicating that the device needs a power-cycle is printed out. -# This flag was added to work around a problem with the -# at90s4433/2333's; see the at90s4433 errata at: -# -# http://www.atmel.com/dyn/resources/prod_documents/doc1280.pdf -# -# INSTRUCTION FORMATS -# -# Instruction formats are specified as a comma seperated list of -# string values containing information (bit specifiers) about each -# of the 32 bits of the instruction. Bit specifiers may be one of -# the following formats: -# -# '1' = the bit is always set on input as well as output -# -# '0' = the bit is always clear on input as well as output -# -# 'x' = the bit is ignored on input and output -# -# 'a' = the bit is an address bit, the bit-number matches this bit -# specifier's position within the current instruction byte -# -# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12 -# is address bit 12 on input, a0 is address bit 0. -# -# 'i' = the bit is an input data bit -# -# 'o' = the bit is an output data bit -# -# Each instruction must be composed of 32 bit specifiers. The -# instruction specification closely follows the instruction data -# provided in Atmel's data sheets for their parts. -# -# See below for some examples. -# -# -# The following are STK500 part device codes to use for the -# "devicecode" field of the part. These came from Atmel's software -# section avr061.zip which accompanies the application note -# AVR061 available from: -# -# http://www.atmel.com/dyn/resources/prod_documents/doc2525.pdf -# - -#define ATTINY10 0x10 /* the _old_ one that never existed! */ -#define ATTINY11 0x11 -#define ATTINY12 0x12 -#define ATTINY15 0x13 -#define ATTINY13 0x14 - -#define ATTINY22 0x20 -#define ATTINY26 0x21 -#define ATTINY28 0x22 -#define ATTINY2313 0x23 - -#define AT90S1200 0x33 - -#define AT90S2313 0x40 -#define AT90S2323 0x41 -#define AT90S2333 0x42 -#define AT90S2343 0x43 - -#define AT90S4414 0x50 -#define AT90S4433 0x51 -#define AT90S4434 0x52 -#define ATMEGA48 0x59 - -#define AT90S8515 0x60 -#define AT90S8535 0x61 -#define AT90C8534 0x62 -#define ATMEGA8515 0x63 -#define ATMEGA8535 0x64 - -#define ATMEGA8 0x70 -#define ATMEGA88 0x73 -#define ATMEGA168 0x86 - -#define ATMEGA161 0x80 -#define ATMEGA163 0x81 -#define ATMEGA16 0x82 -#define ATMEGA162 0x83 -#define ATMEGA169 0x84 - -#define ATMEGA323 0x90 -#define ATMEGA32 0x91 - -#define ATMEGA64 0xA0 - -#define ATMEGA103 0xB1 -#define ATMEGA128 0xB2 -#define AT90CAN128 0xB3 -#define AT90CAN64 0xB3 -#define AT90CAN32 0xB3 - -#define AT86RF401 0xD0 - -#define AT89START 0xE0 -#define AT89S51 0xE0 -#define AT89S52 0xE1 - -# The following table lists the devices in the original AVR910 -# appnote: -# |Device |Signature | Code | -# +-------+----------+------+ -# |tiny12 | 1E 90 05 | 0x55 | -# |tiny15 | 1E 90 06 | 0x56 | -# | | | | -# | S1200 | 1E 90 01 | 0x13 | -# | | | | -# | S2313 | 1E 91 01 | 0x20 | -# | S2323 | 1E 91 02 | 0x48 | -# | S2333 | 1E 91 05 | 0x34 | -# | S2343 | 1E 91 03 | 0x4C | -# | | | | -# | S4414 | 1E 92 01 | 0x28 | -# | S4433 | 1E 92 03 | 0x30 | -# | S4434 | 1E 92 02 | 0x6C | -# | | | | -# | S8515 | 1E 93 01 | 0x38 | -# | S8535 | 1E 93 03 | 0x68 | -# | | | | -# |mega32 | 1E 95 01 | 0x72 | -# |mega83 | 1E 93 05 | 0x65 | -# |mega103| 1E 97 01 | 0x41 | -# |mega161| 1E 94 01 | 0x60 | -# |mega163| 1E 94 02 | 0x64 | - -# Appnote AVR109 also has a table of AVR910 device codes, which -# lists: -# dev avr910 signature -# ATmega8 0x77 0x1E 0x93 0x07 -# ATmega8515 0x3B 0x1E 0x93 0x06 -# ATmega8535 0x6A 0x1E 0x93 0x08 -# ATmega16 0x75 0x1E 0x94 0x03 -# ATmega162 0x63 0x1E 0x94 0x04 -# ATmega163 0x66 0x1E 0x94 0x02 -# ATmega169 0x79 0x1E 0x94 0x05 -# ATmega32 0x7F 0x1E 0x95 0x02 -# ATmega323 0x73 0x1E 0x95 0x01 -# ATmega64 0x46 0x1E 0x96 0x02 -# ATmega128 0x44 0x1E 0x97 0x02 -# -# These codes refer to "BOOT" device codes which are apparently -# different than standard device codes, for whatever reasons -# (often one above the standard code). - -# There are several extended versions of AVR910 implementations around -# in the Internet. These add the following codes (only devices that -# actually exist are listed): - -# ATmega8515 0x3A -# ATmega128 0x43 -# ATmega64 0x45 -# ATtiny26 0x5E -# ATmega8535 0x69 -# ATmega32 0x72 -# ATmega16 0x74 -# ATmega8 0x76 -# ATmega169 0x78 - -# -# Overall avrdude defaults; suitable for ~/.avrduderc -# -default_parallel = "/dev/parport0"; -default_serial = "/dev/ttyS0"; -# default_bitclock = 2.5; - -# Turn off safemode by default -#default_safemode = no; - - -# -# PROGRAMMER DEFINITIONS -# - -# http://wiring.org.co/ -# Basically STK500v2 protocol, with some glue to trigger the -# bootloader. -programmer - id = "wiring"; - desc = "Wiring"; - type = "wiring"; - connection_type = serial; -; - -programmer - id = "arduino"; - desc = "Arduino"; - type = "arduino"; - connection_type = serial; -; -# this will interface with the chips on these programmers: -# -# http://real.kiev.ua/old/avreal/en/adapters -# http://www.amontec.com/jtagkey.shtml, jtagkey-tiny.shtml -# http://www.olimex.com/dev/arm-usb-ocd.html, arm-usb-tiny.html -# http://www.ethernut.de/en/hardware/turtelizer/index.html -# http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html -# http://dangerousprototypes.com/docs/FT2232_breakout_board -# http://www.ftdichip.com/Products/Modules/DLPModules.htm,DLP-2232*,DLP-USB1232H -# http://flashrom.org/FT2232SPI_Programmer -# -# The drivers will look for a specific device and use the first one found. -# If you have mulitple devices, then look for unique information (like SN) -# And fill that in here. -# -# Note that the pin numbers for the main ISP signals (reset, sck, -# mosi, miso) are fixed and cannot be changed, since they must match -# the way the Multi-Protocol Synchronous Serial Engine (MPSSE) of -# these FTDI ICs has been designed. - -programmer - id = "avrftdi"; - desc = "FT2232D based generic programmer"; - type = "avrftdi"; - connection_type = usb; - usbvid = 0x0403; - usbpid = 0x6010; - usbvendor = ""; - usbproduct = ""; - usbdev = "A"; - usbsn = ""; -#ISP-signals - lower ADBUS-Nibble (default) - reset = 3; - sck = 0; - mosi = 1; - miso = 2; -#LED SIGNALs - higher ADBUS-Nibble -# errled = 4; -# rdyled = 5; -# pgmled = 6; -# vfyled = 7; -#Buffer Signal - ACBUS - Nibble -# buff = 8; -; -# This is an implementation of the above with a buffer IC (74AC244) and -# 4 LEDs directly attached, all active low. -programmer - id = "2232HIO"; - desc = "FT2232H based generic programmer"; - type = "avrftdi"; - connection_type = usb; - usbvid = 0x0403; -# Note: This PID is reserved for generic H devices and -# should be programmed into the EEPROM -# usbpid = 0x8A48; - usbpid = 0x6010; - usbdev = "A"; - usbvendor = ""; - usbproduct = ""; - usbsn = ""; -#ISP-signals - reset = 3; - sck = 0; - mosi = 1; - miso = 2; - buff = ~4; -#LED SIGNALs - errled = ~ 11; - rdyled = ~ 14; - pgmled = ~ 13; - vfyled = ~ 12; -; - -#The FT4232H can be treated as FT2232H, but it has a different USB -#device ID of 0x6011. -programmer parent "avrftdi" - id = "4232h"; - desc = "FT4232H based generic programmer"; - usbpid = 0x6011; -; - -programmer - id = "jtagkey"; - desc = "Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2"; - type = "avrftdi"; - connection_type = usb; - usbvid = 0x0403; -# Note: This PID is used in all JTAGKey variants - usbpid = 0xCFF8; - usbdev = "A"; - usbvendor = ""; - usbproduct = ""; - usbsn = ""; -#ISP-signals => 20 - Pin connector on JTAGKey - reset = 3; # TMS 7 violet - sck = 0; # TCK 9 white - mosi = 1; # TDI 5 green - miso = 2; # TDO 13 orange - buff = ~4; -# VTG VREF 1 brown with red tip -# GND GND 20 black -# The colors are on the 20 pin breakout cable -# from Amontec -; - -# On the adapter you can read "O-Link". On the PCB is printed "OpenJTAG v3.1" -# You can find it as "OpenJTAG ARM JTAG USB" in the internet. -# (But there are also several projects called Open JTAG, eg. -# http://www.openjtag.org, which are completely different.) -# http://www.100ask.net/shop/english.html (website seems to be outdated) -# http://item.taobao.com/item.htm?id=1559277013 -# http://www.micro4you.com/store/openjtag-arm-jtag-usb.html (schematics!) -# some other sources which call it O-Link -# http://www.andahammer.com/olink/ -# http://www.developmentboard.net/31-o-link-debugger.html -# http://armwerks.com/catalog/o-link-debugger-copy/ -# or just have a look at ebay ... -# It is basically the same entry as jtagkey with different usb ids. -programmer parent "jtagkey" - id = "o-link"; - desc = "O-Link, OpenJTAG from www.100ask.net"; - usbvid = 0x1457; - usbpid = 0x5118; - usbvendor = "www.100ask.net"; - usbproduct = "USB<=>JTAG&RS232"; -; - -# http://wiki.openmoko.org/wiki/Debug_Board_v3 -programmer - id = "openmoko"; - desc = "Openmoko debug board (v3)"; - type = "avrftdi"; - usbvid = 0x1457; - usbpid = 0x5118; - usbdev = "A"; - usbvendor = ""; - usbproduct = ""; - usbsn = ""; - reset = 3; # TMS 7 - sck = 0; # TCK 9 - mosi = 1; # TDI 5 - miso = 2; # TDO 13 -; - -# Only Rev. A boards. -# Schematic and user manual: http://www.cs.put.poznan.pl/wswitala/download/pdf/811EVBK.pdf -programmer - id = "lm3s811"; - desc = "Luminary Micro LM3S811 Eval Board (Rev. A)"; - type = "avrftdi"; - connection_type = usb; - usbvid = 0x0403; - usbpid = 0xbcd9; - usbvendor = "LMI"; - usbproduct = "LM3S811 Evaluation Board"; - usbdev = "A"; - usbsn = ""; -#ISP-signals - lower ACBUS-Nibble (default) - reset = 3; - sck = 0; - mosi = 1; - miso = 2; -# Enable correct buffers - buff = 7; -; - -programmer - id = "avrisp"; - desc = "Atmel AVR ISP"; - type = "stk500"; - connection_type = serial; -; - -programmer - id = "avrispv2"; - desc = "Atmel AVR ISP V2"; - type = "stk500v2"; - connection_type = serial; -; - -programmer - id = "avrispmkII"; - desc = "Atmel AVR ISP mkII"; - type = "stk500v2"; - connection_type = usb; -; - -programmer parent "avrispmkII" - id = "avrisp2"; -; - -programmer - id = "buspirate"; - desc = "The Bus Pirate"; - type = "buspirate"; - connection_type = serial; -; - -programmer - id = "buspirate_bb"; - desc = "The Bus Pirate (bitbang interface, supports TPI)"; - type = "buspirate_bb"; - connection_type = serial; - # pins are bits in bitbang byte (numbers are 87654321) - # 1|POWER|PULLUP|AUX|MOSI|CLK|MISO|CS - reset = 1; - sck = 3; - mosi = 4; - miso = 2; - #vcc = 7; This is internally set independent of this setting. -; - -# This is supposed to be the "default" STK500 entry. -# Attempts to select the correct firmware version -# by probing for it. Better use one of the entries -# below instead. -programmer - id = "stk500"; - desc = "Atmel STK500"; - type = "stk500generic"; - connection_type = serial; -; - -programmer - id = "stk500v1"; - desc = "Atmel STK500 Version 1.x firmware"; - type = "stk500"; - connection_type = serial; -; - -programmer - id = "mib510"; - desc = "Crossbow MIB510 programming board"; - type = "stk500"; - connection_type = serial; -; - -programmer - id = "stk500v2"; - desc = "Atmel STK500 Version 2.x firmware"; - type = "stk500v2"; - connection_type = serial; -; - -programmer - id = "stk500pp"; - desc = "Atmel STK500 V2 in parallel programming mode"; - type = "stk500pp"; - connection_type = serial; -; - -programmer - id = "stk500hvsp"; - desc = "Atmel STK500 V2 in high-voltage serial programming mode"; - type = "stk500hvsp"; - connection_type = serial; -; - -programmer - id = "stk600"; - desc = "Atmel STK600"; - type = "stk600"; - connection_type = usb; -; - -programmer - id = "stk600pp"; - desc = "Atmel STK600 in parallel programming mode"; - type = "stk600pp"; - connection_type = usb; -; - -programmer - id = "stk600hvsp"; - desc = "Atmel STK600 in high-voltage serial programming mode"; - type = "stk600hvsp"; - connection_type = usb; -; - -programmer - id = "avr910"; - desc = "Atmel Low Cost Serial Programmer"; - type = "avr910"; - connection_type = serial; -; - -programmer - id = "ft245r"; - desc = "FT245R Synchronous BitBang"; - type = "ftdi_syncbb"; - connection_type = usb; - miso = 1; # D1 - sck = 0; # D0 - mosi = 2; # D2 - reset = 4; # D4 -; - -programmer - id = "ft232r"; - desc = "FT232R Synchronous BitBang"; - type = "ftdi_syncbb"; - connection_type = usb; - miso = 1; # RxD - sck = 0; # RTS - mosi = 2; # TxD - reset = 4; # DTR -; - -# see http://www.bitwizard.nl/wiki/index.php/FTDI_ATmega -programmer - id = "bwmega"; - desc = "BitWizard ftdi_atmega builtin programmer"; - type = "ftdi_syncbb"; - connection_type = usb; - miso = 5; # DSR - sck = 6; # DCD - mosi = 3; # CTS - reset = 7; # RI -; - -# see http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html -# Note: pins are numbered from 1! -programmer - id = "arduino-ft232r"; - desc = "Arduino: FT232R connected to ISP"; - type = "ftdi_syncbb"; - connection_type = usb; - miso = 3; # CTS X3(1) - sck = 5; # DSR X3(2) - mosi = 6; # DCD X3(3) - reset = 7; # RI X3(4) -; - -# website mentioned above uses this id -programmer parent "arduino-ft232r" - id = "diecimila"; - desc = "alias for arduino-ft232r"; -; - -programmer - id = "usbasp"; - desc = "USBasp, http://www.fischl.de/usbasp/"; - type = "usbasp"; - connection_type = usb; - usbvid = 0x16C0; # VOTI - usbpid = 0x05DC; # Obdev's free shared PID - usbvendor = "www.fischl.de"; - usbproduct = "USBasp"; - - # following variants are autodetected for id "usbasp" - - # original usbasp from fischl.de - # see above "usbasp" - - # old usbasp from fischl.de - #usbvid = 0x03EB; # ATMEL - #usbpid = 0xC7B4; # (unoffical) USBasp - #usbvendor = "www.fischl.de"; - #usbproduct = "USBasp"; - - # NIBObee (only if -P nibobee is given on command line) - # see below "nibobee" -; - -programmer - id = "nibobee"; - desc = "NIBObee"; - type = "usbasp"; - connection_type = usb; - usbvid = 0x16C0; # VOTI - usbpid = 0x092F; # NIBObee PID - usbvendor = "www.nicai-systems.com"; - usbproduct = "NIBObee"; -; - -programmer - id = "usbasp-clone"; - desc = "Any usbasp clone with correct VID/PID"; - type = "usbasp"; - connection_type = usb; - usbvid = 0x16C0; # VOTI - usbpid = 0x05DC; # Obdev's free shared PID - #usbvendor = ""; - #usbproduct = ""; -; - -programmer - id = "usbtiny"; - desc = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/"; - type = "usbtiny"; - connection_type = usb; - usbvid = 0x1781; - usbpid = 0x0c9f; -; - -programmer - id = "arduinogemma"; - desc = "Arduino Gemma. Based on USBtiny"; - type = "usbtiny"; - connection_type = usb; - usbvid = 0x2341; - usbpid = 0x0c9f; -; - -programmer - id = "arduinoisp"; - desc = " "; - type = "usbtiny"; - connection_type = usb; - usbvid = 0x2341; - usbpid = 0x0049; -; - -programmer - id = "butterfly"; - desc = "Atmel Butterfly Development Board"; - type = "butterfly"; - connection_type = serial; -; - -programmer - id = "avr109"; - desc = "Atmel AppNote AVR109 Boot Loader"; - type = "butterfly"; - connection_type = serial; -; - -programmer - id = "avr911"; - desc = "Atmel AppNote AVR911 AVROSP"; - type = "butterfly"; - connection_type = serial; -; - -# suggested in http://forum.mikrokopter.de/topic-post48317.html -programmer - id = "mkbutterfly"; - desc = "Mikrokopter.de Butterfly"; - type = "butterfly_mk"; - connection_type = serial; -; - -programmer parent "mkbutterfly" - id = "butterfly_mk"; -; - -programmer - id = "jtagmkI"; - desc = "Atmel JTAG ICE (mkI)"; - baudrate = 115200; # default is 115200 - type = "jtagmki"; - connection_type = serial; -; - -# easier to type -programmer parent "jtagmkI" - id = "jtag1"; -; - -# easier to type -programmer parent "jtag1" - id = "jtag1slow"; - baudrate = 19200; -; - -# The JTAG ICE mkII has both, serial and USB connectivity. As it is -# mostly used through USB these days (AVR Studio 5 only supporting it -# that way), we make connection_type = usb the default. Users are -# still free to use a serial port with the -P option. - -programmer - id = "jtagmkII"; - desc = "Atmel JTAG ICE mkII"; - baudrate = 19200; # default is 19200 - type = "jtagmkii"; - connection_type = usb; -; - -# easier to type -programmer parent "jtagmkII" - id = "jtag2slow"; -; - -# JTAG ICE mkII @ 115200 Bd -programmer parent "jtag2slow" - id = "jtag2fast"; - baudrate = 115200; -; - -# make the fast one the default, people will love that -programmer parent "jtag2fast" - id = "jtag2"; -; - -# JTAG ICE mkII in ISP mode -programmer - id = "jtag2isp"; - desc = "Atmel JTAG ICE mkII in ISP mode"; - baudrate = 115200; - type = "jtagmkii_isp"; - connection_type = usb; -; - -# JTAG ICE mkII in debugWire mode -programmer - id = "jtag2dw"; - desc = "Atmel JTAG ICE mkII in debugWire mode"; - baudrate = 115200; - type = "jtagmkii_dw"; - connection_type = usb; -; - -# JTAG ICE mkII in AVR32 mode -programmer - id = "jtagmkII_avr32"; - desc = "Atmel JTAG ICE mkII im AVR32 mode"; - baudrate = 115200; - type = "jtagmkii_avr32"; - connection_type = usb; -; - -# JTAG ICE mkII in AVR32 mode -programmer - id = "jtag2avr32"; - desc = "Atmel JTAG ICE mkII im AVR32 mode"; - baudrate = 115200; - type = "jtagmkii_avr32"; - connection_type = usb; -; - -# JTAG ICE mkII in PDI mode -programmer - id = "jtag2pdi"; - desc = "Atmel JTAG ICE mkII PDI mode"; - baudrate = 115200; - type = "jtagmkii_pdi"; - connection_type = usb; -; - -# AVR Dragon in JTAG mode -programmer - id = "dragon_jtag"; - desc = "Atmel AVR Dragon in JTAG mode"; - baudrate = 115200; - type = "dragon_jtag"; - connection_type = usb; -; - -# AVR Dragon in ISP mode -programmer - id = "dragon_isp"; - desc = "Atmel AVR Dragon in ISP mode"; - baudrate = 115200; - type = "dragon_isp"; - connection_type = usb; -; - -# AVR Dragon in PP mode -programmer - id = "dragon_pp"; - desc = "Atmel AVR Dragon in PP mode"; - baudrate = 115200; - type = "dragon_pp"; - connection_type = usb; -; - -# AVR Dragon in HVSP mode -programmer - id = "dragon_hvsp"; - desc = "Atmel AVR Dragon in HVSP mode"; - baudrate = 115200; - type = "dragon_hvsp"; - connection_type = usb; -; - -# AVR Dragon in debugWire mode -programmer - id = "dragon_dw"; - desc = "Atmel AVR Dragon in debugWire mode"; - baudrate = 115200; - type = "dragon_dw"; - connection_type = usb; -; - -# AVR Dragon in PDI mode -programmer - id = "dragon_pdi"; - desc = "Atmel AVR Dragon in PDI mode"; - baudrate = 115200; - type = "dragon_pdi"; - connection_type = usb; -; - -programmer - id = "jtag3"; - desc = "Atmel AVR JTAGICE3 in JTAG mode"; - type = "jtagice3"; - connection_type = usb; -; - -programmer - id = "jtag3pdi"; - desc = "Atmel AVR JTAGICE3 in PDI mode"; - type = "jtagice3_pdi"; - connection_type = usb; -; - -programmer - id = "jtag3dw"; - desc = "Atmel AVR JTAGICE3 in debugWIRE mode"; - type = "jtagice3_dw"; - connection_type = usb; -; - -programmer - id = "jtag3isp"; - desc = "Atmel AVR JTAGICE3 in ISP mode"; - type = "jtagice3_isp"; - connection_type = usb; -; - - -programmer - id = "pavr"; - desc = "Jason Kyle's pAVR Serial Programmer"; - type = "avr910"; - connection_type = serial; -; - -programmer - id = "pickit2"; - desc = "MicroChip's PICkit2 Programmer"; - type = "pickit2"; - connection_type = usb; -; - -# Parallel port programmers. - -programmer - id = "bsd"; - desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; - type = "par"; - connection_type = parallel; - vcc = 2, 3, 4, 5; - reset = 7; - sck = 8; - mosi = 9; - miso = 10; -; - -programmer - id = "stk200"; - desc = "STK200"; - type = "par"; - connection_type = parallel; - buff = 4, 5; - sck = 6; - mosi = 7; - reset = 9; - miso = 10; -; - -# The programming dongle used by the popular Ponyprog -# utility. It is almost similar to the STK200 one, -# except that there is a LED indicating that the -# programming is currently in progress. - -programmer parent "stk200" - id = "pony-stk200"; - desc = "Pony Prog STK200"; - pgmled = 8; -; - -programmer - id = "dt006"; - desc = "Dontronics DT006"; - type = "par"; - connection_type = parallel; - reset = 4; - sck = 5; - mosi = 2; - miso = 11; -; - -programmer parent "dt006" - id = "bascom"; - desc = "Bascom SAMPLE programming cable"; -; - -programmer - id = "alf"; - desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; - type = "par"; - connection_type = parallel; - vcc = 2, 3, 4, 5; - buff = 6; - reset = 7; - sck = 8; - mosi = 9; - miso = 10; - errled = 1; - rdyled = 14; - pgmled = 16; - vfyled = 17; -; - -programmer - id = "sp12"; - desc = "Steve Bolt's Programmer"; - type = "par"; - connection_type = parallel; - vcc = 4,5,6,7,8; - reset = 3; - sck = 2; - mosi = 9; - miso = 11; -; - -programmer - id = "picoweb"; - desc = "Picoweb Programming Cable, http://www.picoweb.net/"; - type = "par"; - connection_type = parallel; - reset = 2; - sck = 3; - mosi = 4; - miso = 13; -; - -programmer - id = "abcmini"; - desc = "ABCmini Board, aka Dick Smith HOTCHIP"; - type = "par"; - connection_type = parallel; - reset = 4; - sck = 3; - mosi = 2; - miso = 10; -; - -programmer - id = "futurlec"; - desc = "Futurlec.com programming cable."; - type = "par"; - connection_type = parallel; - reset = 3; - sck = 2; - mosi = 1; - miso = 10; -; - - -# From the contributor of the "xil" jtag cable: -# The "vcc" definition isn't really vcc (the cable gets its power from -# the programming circuit) but is necessary to switch one of the -# buffer lines (trying to add it to the "buff" lines doesn't work in -# avrdude versions before 5.5j). -# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK -# to SCK (plus vcc/gnd of course) -programmer - id = "xil"; - desc = "Xilinx JTAG cable"; - type = "par"; - connection_type = parallel; - mosi = 2; - sck = 3; - reset = 4; - buff = 5; - miso = 13; - vcc = 6; -; - - -programmer - id = "dapa"; - desc = "Direct AVR Parallel Access cable"; - type = "par"; - connection_type = parallel; - vcc = 3; - reset = 16; - sck = 1; - mosi = 2; - miso = 11; -; - -programmer - id = "atisp"; - desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; - type = "par"; - connection_type = parallel; - reset = ~6; - sck = ~8; - mosi = ~7; - miso = ~10; -; - -programmer - id = "ere-isp-avr"; - desc = "ERE ISP-AVR "; - type = "par"; - connection_type = parallel; - reset = ~4; - sck = 3; - mosi = 2; - miso = 10; -; - -programmer - id = "blaster"; - desc = "Altera ByteBlaster"; - type = "par"; - connection_type = parallel; - sck = 2; - miso = 11; - reset = 3; - mosi = 8; - buff = 14; -; - -# It is almost same as pony-stk200, except vcc on pin 5 to auto -# disconnect port (download on http://electropol.free.fr/spip/spip.php?article27) -programmer parent "pony-stk200" - id = "frank-stk200"; - desc = "Frank STK200"; - buff = ; # delete buff pin assignment - vcc = 5; -; - -# The AT98ISP Cable is a simple parallel dongle for AT89 family. -# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 -programmer - id = "89isp"; - desc = "Atmel at89isp cable"; - type = "par"; - connection_type = parallel; - reset = 17; - sck = 1; - mosi = 2; - miso = 10; -; - - -#This programmer bitbangs GPIO lines using the Linux sysfs GPIO interface -# -#To enable it set the configuration below to match the GPIO lines connected to the -#relevant ISP header pins and uncomment the entry definition. In case you don't -#have the required permissions to edit this system wide config file put the -#entry in a separate .conf file and use it with -C+.conf -#on the command line. -# -#To check if your avrdude build has support for the linuxgpio programmer compiled in, -#use -c?type on the command line and look for linuxgpio in the list. If it's not available -#you need pass the --enable-linuxgpio=yes option to configure and recompile avrdude. -# -#programmer -# id = "linuxgpio"; -# desc = "Use the Linux sysfs interface to bitbang GPIO lines"; -# type = "linuxgpio"; -# reset = ?; -# sck = ?; -# mosi = ?; -# miso = ?; -#; - -#This programmer bitbangs GPIO lines using the Linux sysfs GPIO interface and direct -#GPIO memory registers read/write. -# -#To enable it set the configuration below to match the GPIO lines connected to the -#relevant ISP header pins and uncomment the entry definition. In case you don't -#have the required permissions to edit this system wide config file put the -#entry in a separate .conf file and use it with -C+.conf -#on the command line. -# -#To check if your avrdude build has support for the arduinotre programmer compiled in, -#use -c?type on the command line and look for arduinotre in the list. If it's not available -#you need pass the --enable-arduinotre=yes option to configure and recompile avrdude. -# -#programmer -# id = "arduinotre"; -# desc = "Arduino TRE bitbanging using GPIO registers"; -# type = "arduinotre"; -# reset = ~65; -# sck = 49; -# mosi = 48; -# miso = 61; -#; - -# some ultra cheap programmers use bitbanging on the -# serialport. -# -# PC - DB9 - Pins for RS232: -# -# GND 5 -- |O -# | O| <- 9 RI -# DTR 4 <- |O | -# | O| <- 8 CTS -# TXD 3 <- |O | -# | O| -> 7 RTS -# RXD 2 -> |O | -# | O| <- 6 DSR -# DCD 1 -> |O -# -# Using RXD is currently not supported. -# Using RI is not supported under Win32 but is supported under Posix. - -# serial ponyprog design (dasa2 in uisp) -# reset=!txd sck=rts mosi=dtr miso=cts - -programmer - id = "ponyser"; - desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts"; - type = "serbb"; - connection_type = serial; - reset = ~3; - sck = 7; - mosi = 4; - miso = 8; -; - -# Same as above, different name -# reset=!txd sck=rts mosi=dtr miso=cts - -programmer parent "ponyser" - id = "siprog"; - desc = "Lancos SI-Prog "; -; - -# unknown (dasa in uisp) -# reset=rts sck=dtr mosi=txd miso=cts - -programmer - id = "dasa"; - desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; - type = "serbb"; - connection_type = serial; - reset = 7; - sck = 4; - mosi = 3; - miso = 8; -; - -# unknown (dasa3 in uisp) -# reset=!dtr sck=rts mosi=txd miso=cts - -programmer - id = "dasa3"; - desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts"; - type = "serbb"; - connection_type = serial; - reset = ~4; - sck = 7; - mosi = 3; - miso = 8; -; - -# C2N232i (jumper configuration "auto") -# reset=dtr sck=!rts mosi=!txd miso=!cts - -programmer - id = "c2n232i"; - desc = "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts"; - type = "serbb"; - connection_type = serial; - reset = 4; - sck = ~7; - mosi = ~3; - miso = ~8; -; - -# -# PART DEFINITIONS -# - -#------------------------------------------------------------ -# ATtiny11 -#------------------------------------------------------------ - -# This is an HVSP-only device. - -part - id = "t11"; - desc = "ATtiny11"; - stk500_devcode = 0x11; - signature = 0x1e 0x90 0x04; - chip_erase_delay = 20000; - - timeout = 200; - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - memory "eeprom" - size = 64; - blocksize = 64; - readsize = 256; - delay = 5; - ; - - memory "flash" - size = 1024; - blocksize = 128; - readsize = 256; - delay = 3; - ; - - memory "signature" - size = 3; - ; - - memory "lock" - size = 1; - ; - - memory "calibration" - size = 1; - ; - - memory "fuse" - size = 1; - ; -; - -#------------------------------------------------------------ -# ATtiny12 -#------------------------------------------------------------ - -part - id = "t12"; - desc = "ATtiny12"; - stk500_devcode = 0x12; - avr910_devcode = 0x55; - signature = 0x1e 0x90 0x05; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - memory "eeprom" - size = 64; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 8; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - size = 1024; - min_write_delay = 4500; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; -; - -#------------------------------------------------------------ -# ATtiny13 -#------------------------------------------------------------ - -part - id = "t13"; - desc = "ATtiny13"; - has_debugwire = yes; - flash_instr = 0xB4, 0x0E, 0x1E; - eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x14; - signature = 0x1e 0x90 0x07; - chip_erase_delay = 4000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 90; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 0; - - memory "eeprom" - size = 64; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 1024; - page_size = 32; - num_pages = 32; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 0 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; - -; - - -#------------------------------------------------------------ -# ATtiny15 -#------------------------------------------------------------ - -part - id = "t15"; - desc = "ATtiny15"; - stk500_devcode = 0x13; - avr910_devcode = 0x56; - signature = 0x1e 0x90 0x06; - chip_erase_delay = 8200; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 5; - synchcycles = 6; - latchcycles = 16; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - memory "eeprom" - size = 64; - min_write_delay = 8200; - max_write_delay = 8200; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - size = 1024; - min_write_delay = 4100; - max_write_delay = 4100; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x o o o o x x o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x i i i i 1 1 i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; -; - -#------------------------------------------------------------ -# AT90s1200 -#------------------------------------------------------------ - -part - id = "1200"; - desc = "AT90S1200"; - is_at90s1200 = yes; - stk500_devcode = 0x33; - avr910_devcode = 0x13; - signature = 0x1e 0x90 0x01; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 1; - bytedelay = 0; - pollindex = 0; - pollvalue = 0xFF; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 64; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 20; - blocksize = 32; - readsize = 256; - ; - memory "flash" - size = 1024; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x02; - delay = 15; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; - ; - -#------------------------------------------------------------ -# AT90s4414 -#------------------------------------------------------------ - -part - id = "4414"; - desc = "AT90S4414"; - stk500_devcode = 0x50; - avr910_devcode = 0x28; - signature = 0x1e 0x92 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - ; - -#------------------------------------------------------------ -# AT90s2313 -#------------------------------------------------------------ - -part - id = "2313"; - desc = "AT90S2313"; - stk500_devcode = 0x40; - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 128; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 2048; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - ; - -#------------------------------------------------------------ -# AT90s2333 -#------------------------------------------------------------ - -part - id = "2333"; -##### WARNING: No XML file for device 'AT90S2333'! ##### - desc = "AT90S2333"; - stk500_devcode = 0x42; - avr910_devcode = 0x34; - signature = 0x1e 0x91 0x05; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - size = 2048; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - pwroff_after_write = yes; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; - ; - - -#------------------------------------------------------------ -# AT90s2343 (also AT90s2323 and ATtiny22) -#------------------------------------------------------------ - -part - id = "2343"; - desc = "AT90S2343"; - stk500_devcode = 0x43; - avr910_devcode = 0x4c; - signature = 0x1e 0x91 0x03; - chip_erase_delay = 18000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, - 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, - 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 0; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 50; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - memory "flash" - size = 2048; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 128; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x o o o x x x x o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x o o o x x x x o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; - ; - - -#------------------------------------------------------------ -# AT90s4433 -#------------------------------------------------------------ - -part - id = "4433"; - desc = "AT90S4433"; - stk500_devcode = 0x51; - avr910_devcode = 0x30; - signature = 0x1e 0x92 0x03; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - pwroff_after_write = yes; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; - ; - -#------------------------------------------------------------ -# AT90s4434 -#------------------------------------------------------------ - -part - id = "4434"; -##### WARNING: No XML file for device 'AT90S4434'! ##### - desc = "AT90S4434"; - stk500_devcode = 0x52; - avr910_devcode = 0x6c; - signature = 0x1e 0x92 0x02; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - memory "eeprom" - size = 256; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - ; - memory "flash" - size = 4096; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", - "x x x x x x x x x x x x x x x x"; - ; - memory "lock" - size = 1; - min_write_delay = 9000; - max_write_delay = 20000; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - ; - ; - -#------------------------------------------------------------ -# AT90s8515 -#------------------------------------------------------------ - -part - id = "8515"; - desc = "AT90S8515"; - stk500_devcode = 0x60; - avr910_devcode = 0x38; - signature = 0x1e 0x93 0x01; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 512; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 8192; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x7f; - readback_p2 = 0x7f; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - ; - -#------------------------------------------------------------ -# AT90s8535 -#------------------------------------------------------------ - -part - id = "8535"; - desc = "AT90S8535"; - stk500_devcode = 0x61; - avr910_devcode = 0x68; - signature = 0x1e 0x93 0x03; - chip_erase_delay = 20000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 1; - - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0x00; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "flash" - size = 8192; - min_write_delay = 9000; - max_write_delay = 20000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write_lo = " 0 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - write_hi = " 0 1 0 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 128; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "fuse" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x x o"; - write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x o o x x x x x x"; - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - ; - -#------------------------------------------------------------ -# ATmega103 -#------------------------------------------------------------ - -part - id = "m103"; - desc = "ATmega103"; - stk500_devcode = 0xB1; - avr910_devcode = 0x41; - signature = 0x1e 0x97 0x01; - chip_erase_delay = 112000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, - 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, - 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, - 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 15; - chiperasepolltimeout = 0; - programfusepulsewidth = 2; - programfusepolltimeout = 0; - programlockpulsewidth = 0; - programlockpolltimeout = 10; - - memory "eeprom" - size = 4096; - min_write_delay = 4000; - max_write_delay = 9000; - readback_p1 = 0x80; - readback_p2 = 0x7f; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 22000; - max_write_delay = 56000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x11; - delay = 70; - blocksize = 256; - readsize = 256; - ; - - memory "fuse" - size = 1; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x x o x o 1 o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x o o x"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATmega64 -#------------------------------------------------------------ - -part - id = "m64"; - desc = "ATmega64"; - has_jtag = yes; - stk500_devcode = 0xA0; - avr910_devcode = 0x45; - signature = 0x1e 0x96 0x02; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x22; - spmcr = 0x68; - allowfullpagebitstream = yes; - - ocdrev = 2; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 20; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - - - -#------------------------------------------------------------ -# ATmega128 -#------------------------------------------------------------ - -part - id = "m128"; - desc = "ATmega128"; - has_jtag = yes; - stk500_devcode = 0xB2; - avr910_devcode = 0x43; - signature = 0x1e 0x97 0x02; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x22; - spmcr = 0x68; - rampz = 0x3b; - allowfullpagebitstream = yes; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 12; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90CAN128 -#------------------------------------------------------------ - -part - id = "c128"; - desc = "AT90CAN128"; - has_jtag = yes; - stk500_devcode = 0xB3; -# avr910_devcode = 0x43; - signature = 0x1e 0x97 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90CAN64 -#------------------------------------------------------------ - -part - id = "c64"; - desc = "AT90CAN64"; - has_jtag = yes; - stk500_devcode = 0xB3; -# avr910_devcode = 0x43; - signature = 0x1e 0x96 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90CAN32 -#------------------------------------------------------------ - -part - id = "c32"; - desc = "AT90CAN32"; - has_jtag = yes; - stk500_devcode = 0xB3; -# avr910_devcode = 0x43; - signature = 0x1e 0x95 0x81; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - eecr = 0x3f; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 256; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATmega16 -#------------------------------------------------------------ - -part - id = "m16"; - desc = "ATmega16"; - has_jtag = yes; - stk500_devcode = 0x82; - avr910_devcode = 0x74; - signature = 0x1e 0x94 0x03; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 100; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = yes; - - ocdrev = 2; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x04; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "calibration" - size = 4; - - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATmega164P -#------------------------------------------------------------ - -# close to ATmega16 - -part parent "m16" - id = "m164p"; - desc = "ATmega164P"; - signature = 0x1e 0x94 0x0a; - - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - allowfullpagebitstream = no; - chip_erase_delay = 55000; - - ocdrev = 3; - ; - - -#------------------------------------------------------------ -# ATmega324P -#------------------------------------------------------------ - -# similar to ATmega164P - -part - id = "m324p"; - desc = "ATmega324P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x95 0x08; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 55000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATmega324PA -#------------------------------------------------------------ - -# similar to ATmega324P - -part parent "m324p" - id = "m324pa"; - desc = "ATmega324PA"; - signature = 0x1e 0x95 0x11; - - ocdrev = 3; - ; - - -#------------------------------------------------------------ -# ATmega644 -#------------------------------------------------------------ - -# similar to ATmega164 - -part - id = "m644"; - desc = "ATmega644"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x96 0x09; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 55000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega644P -#------------------------------------------------------------ - -# similar to ATmega164p - -part parent "m644" - id = "m644p"; - desc = "ATmega644P"; - signature = 0x1e 0x96 0x0a; - - ocdrev = 3; - ; - - - -#------------------------------------------------------------ -# ATmega1284P -#------------------------------------------------------------ - -# similar to ATmega164p - -part - id = "m1284p"; - desc = "ATmega1284P"; - has_jtag = yes; - stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one - avr910_devcode = 0x74; - signature = 0x1e 0x97 0x05; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 55000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - - - -#------------------------------------------------------------ -# ATmega162 -#------------------------------------------------------------ - -part - id = "m162"; - desc = "ATmega162"; - has_jtag = yes; - stk500_devcode = 0x83; - avr910_devcode = 0x63; - signature = 0x1e 0x94 0x04; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - - idr = 0x04; - spmcr = 0x57; - allowfullpagebitstream = yes; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - ocdrev = 2; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - - ; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 16000; - max_write_delay = 16000; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; -; - - - -#------------------------------------------------------------ -# ATmega163 -#------------------------------------------------------------ - -part - id = "m163"; - desc = "ATmega163"; - stk500_devcode = 0x81; - avr910_devcode = 0x64; - signature = 0x1e 0x94 0x02; - chip_erase_delay = 32000; - pagel = 0xd7; - bs2 = 0xa0; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 30; - programfusepulsewidth = 0; - programfusepolltimeout = 2; - programlockpulsewidth = 0; - programlockpolltimeout = 2; - - - memory "eeprom" - size = 512; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 16000; - max_write_delay = 16000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x11; - delay = 20; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o x x o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i 1 1 i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x 1 o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x 1 1 1 1 1 i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x 0 x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega169 -#------------------------------------------------------------ - -part - id = "m169"; - desc = "ATmega169"; - has_jtag = yes; - stk500_devcode = 0x85; - avr910_devcode = 0x78; - signature = 0x1e 0x94 0x05; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - - ocdrev = 2; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega329 -#------------------------------------------------------------ - -part - id = "m329"; - desc = "ATmega329"; - has_jtag = yes; -# stk500_devcode = 0x85; # no STK500 support, only STK500v2 -# avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x95 0x03; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega329P -#------------------------------------------------------------ -# Identical to ATmega329 except of the signature - -part parent "m329" - id = "m329p"; - desc = "ATmega329P"; - signature = 0x1e 0x95 0x0b; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega3290 -#------------------------------------------------------------ - -# identical to ATmega329 - -part parent "m329" - id = "m3290"; - desc = "ATmega3290"; - signature = 0x1e 0x95 0x04; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega3290P -#------------------------------------------------------------ - -# identical to ATmega3290 except of the signature - -part parent "m3290" - id = "m3290p"; - desc = "ATmega3290P"; - signature = 0x1e 0x95 0x0c; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega649 -#------------------------------------------------------------ - -part - id = "m649"; - desc = "ATmega649"; - has_jtag = yes; -# stk500_devcode = 0x85; # no STK500 support, only STK500v2 -# avr910_devcode = 0x?; # try the ATmega169 one: - avr910_devcode = 0x75; - signature = 0x1e 0x96 0x03; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega6490 -#------------------------------------------------------------ - -# identical to ATmega649 - -part parent "m649" - id = "m6490"; - desc = "ATmega6490"; - signature = 0x1e 0x96 0x04; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega32 -#------------------------------------------------------------ - -part - id = "m32"; - desc = "ATmega32"; - has_jtag = yes; - stk500_devcode = 0x91; - avr910_devcode = 0x72; - signature = 0x1e 0x95 0x02; - chip_erase_delay = 9000; - pagel = 0xd7; - bs2 = 0xa0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = yes; - - ocdrev = 2; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega161 -#------------------------------------------------------------ - -part - id = "m161"; - desc = "ATmega161"; - stk500_devcode = 0x80; - avr910_devcode = 0x60; - signature = 0x1e 0x94 0x01; - chip_erase_delay = 28000; - pagel = 0xd7; - bs2 = 0xa0; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 30; - programfusepulsewidth = 0; - programfusepolltimeout = 2; - programlockpulsewidth = 0; - programlockpolltimeout = 2; - - memory "eeprom" - size = 512; - min_write_delay = 3400; - max_write_delay = 3400; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 5; - blocksize = 128; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 14000; - max_write_delay = 14000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 16; - blocksize = 128; - readsize = 256; - ; - - memory "fuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 x x x x x x x x", - "x x x x x x x x x o x o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", - "x x x x x x x x 1 i 1 i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATmega8 -#------------------------------------------------------------ - -part - id = "m8"; - desc = "ATmega8"; - stk500_devcode = 0x70; - avr910_devcode = 0x76; - signature = 0x1e 0x93 0x07; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 10000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - size = 512; - page_size = 4; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 10; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - - -#------------------------------------------------------------ -# ATmega8515 -#------------------------------------------------------------ - -part - id = "m8515"; - desc = "ATmega8515"; - stk500_devcode = 0x63; - avr910_devcode = 0x3A; - signature = 0x1e 0x93 0x06; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - - - -#------------------------------------------------------------ -# ATmega8535 -#------------------------------------------------------------ - -part - id = "m8535"; - desc = "ATmega8535"; - stk500_devcode = 0x64; - avr910_devcode = 0x69; - signature = 0x1e 0x93 0x08; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 6; - togglevtg = 0; - poweroffdelay = 0; - resetdelayms = 0; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - size = 512; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - mode = 0x04; - delay = 20; - blocksize = 128; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 2000; - max_write_delay = 2000; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - - -#------------------------------------------------------------ -# ATtiny26 -#------------------------------------------------------------ - -part - id = "t26"; - desc = "ATtiny26"; - stk500_devcode = 0x21; - avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x09; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - size = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - mode = 0x04; - delay = 10; - blocksize = 64; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 16; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x x x x i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 4; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - -; - - -#------------------------------------------------------------ -# ATtiny261 -#------------------------------------------------------------ -# Close to ATtiny26 - -part - id = "t261"; - desc = "ATtiny261"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -# stk500_devcode = 0x21; -# avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x0c; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - size = 128; - page_size = 4; - num_pages = 32; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read = "1 0 1 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 x x x x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x x a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - -; - - -#------------------------------------------------------------ -# ATtiny461 -#------------------------------------------------------------ -# Close to ATtiny261 - -part - id = "t461"; - desc = "ATtiny461"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -# stk500_devcode = 0x21; -# avr910_devcode = 0x5e; - signature = 0x1e 0x92 0x08; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - size = 256; - page_size = 4; - num_pages = 64; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read = " 1 0 1 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - -; - - -#------------------------------------------------------------ -# ATtiny861 -#------------------------------------------------------------ -# Close to ATtiny461 - -part - id = "t861"; - desc = "ATtiny861"; - has_debugwire = yes; - flash_instr = 0xB4, 0x00, 0x10; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -# stk500_devcode = 0x21; -# avr910_devcode = 0x5e; - signature = 0x1e 0x93 0x0d; - pagel = 0xb3; - bs2 = 0xb2; - chip_erase_delay = 4000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 0; - - pp_controlstack = - 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, - 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, - 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, - 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 2; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - size = 512; - num_pages = 128; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4000; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read_lo = " 0 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 x x x x x x x x", - "x x x x x x x x x x x x x x o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", - "x x x x x x x x x x x x x x x x"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - -; - - -#------------------------------------------------------------ -# ATmega48 -#------------------------------------------------------------ - -part - id = "m48"; - desc = "ATmega48"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x59; -# avr910_devcode = 0x; - signature = 0x1e 0x92 0x05; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 45000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - page_size = 4; - size = 256; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x x", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x x x o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega48P -#------------------------------------------------------------ - -part parent "m48" - id = "m48p"; - desc = "ATmega48P"; - signature = 0x1e 0x92 0x0a; - - ocdrev = 1; - ; - -#------------------------------------------------------------ -# ATmega88 -#------------------------------------------------------------ - -part - id = "m88"; - desc = "ATmega88"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x73; -# avr910_devcode = 0x; - signature = 0x1e 0x93 0x0a; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - page_size = 4; - size = 512; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega88P -#------------------------------------------------------------ - -part parent "m88" - id = "m88p"; - desc = "ATmega88P"; - signature = 0x1e 0x93 0x0f; - - ocdrev = 1; - ; - -#------------------------------------------------------------ -# ATmega168 -#------------------------------------------------------------ - -part - id = "m168"; - desc = "ATmega168"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x86; - # avr910_devcode = 0x; - signature = 0x1e 0x94 0x06; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - page_size = 4; - size = 512; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; -; - -#------------------------------------------------------------ -# ATmega168P -#------------------------------------------------------------ - -part parent "m168" - id = "m168p"; - desc = "ATmega168P"; - signature = 0x1e 0x94 0x0b; - - ocdrev = 1; -; - -#------------------------------------------------------------ -# ATtiny88 -#------------------------------------------------------------ - -part - id = "t88"; - desc = "ATtiny88"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x73; -# avr910_devcode = 0x; - signature = 0x1e 0x93 0x11; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - page_size = 4; - size = 64; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 64; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega328 -#------------------------------------------------------------ - -part - id = "m328"; - desc = "ATmega328"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x86; - # avr910_devcode = 0x; - signature = 0x1e 0x95 0x14; - pagel = 0xd7; - bs2 = 0xc2; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; - page_size = 4; - size = 1024; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x x x o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; -; - -part parent "m328" - id = "m328p"; - desc = "ATmega328P"; - signature = 0x1e 0x95 0x0F; - - ocdrev = 1; -; - -#------------------------------------------------------------ -# ATtiny2313 -#------------------------------------------------------------ - -part - id = "t2313"; - desc = "ATtiny2313"; - has_debugwire = yes; - flash_instr = 0xB2, 0x0F, 0x1F; - eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x23; -## Use the ATtiny26 devcode: - avr910_devcode = 0x5e; - signature = 0x1e 0x91 0x0a; - pagel = 0xD4; - bs2 = 0xD6; - reset = io; - chip_erase_delay = 9000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, - 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, - 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, - 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 0; - - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - -# The information in the data sheet of April/2004 is wrong, this works: - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - -# The information in the data sheet of April/2004 is wrong, this works: - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - -# The information in the data sheet of April/2004 is wrong, this works: - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; -# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. -# The information in the data sheet of April/2004 is wrong, this works: - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny4313 -#------------------------------------------------------------ - -part - id = "t4313"; - desc = "ATtiny4313"; - has_debugwire = yes; - flash_instr = 0xB2, 0x0F, 0x1F; - eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x23; -## Use the ATtiny26 devcode: - avr910_devcode = 0x5e; - signature = 0x1e 0x92 0x0d; - pagel = 0xD4; - bs2 = 0xD6; - reset = io; - chip_erase_delay = 9000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, - 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, - 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, - 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 0; - - memory "eeprom" - size = 256; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny4313 has Signature Bytes: 0x1E 0x92 0x0D. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90PWM2 -#------------------------------------------------------------ - -part - id = "pwm2"; - desc = "AT90PWM2"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x65; -## avr910_devcode = ?; - signature = 0x1e 0x93 0x81; - pagel = 0xD8; - bs2 = 0xE2; - reset = io; - chip_erase_delay = 9000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; -# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90PWM3 -#------------------------------------------------------------ - -# Completely identical to AT90PWM2 (including the signature!) - -part parent "pwm2" - id = "pwm3"; - desc = "AT90PWM3"; - ; - -#------------------------------------------------------------ -# AT90PWM2B -#------------------------------------------------------------ -# Same as AT90PWM2 but different signature. - -part parent "pwm2" - id = "pwm2b"; - desc = "AT90PWM2B"; - signature = 0x1e 0x93 0x83; - - ocdrev = 1; - ; - -#------------------------------------------------------------ -# AT90PWM3B -#------------------------------------------------------------ - -# Completely identical to AT90PWM2B (including the signature!) - -part parent "pwm2b" - id = "pwm3b"; - desc = "AT90PWM3B"; - - ocdrev = 1; - ; - -#------------------------------------------------------------ -# AT90PWM316 -#------------------------------------------------------------ - -# Similar to AT90PWM3B, but with 16 kiB flash, 512 B EEPROM, and 1024 B SRAM. - -part parent "pwm3b" - id = "pwm316"; - desc = "AT90PWM316"; - signature = 0x1e 0x94 0x83; - - ocdrev = 1; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x21; - delay = 6; - blocksize = 128; - readsize = 256; - ; - ; - -#------------------------------------------------------------ -# ATtiny25 -#------------------------------------------------------------ - -part - id = "t25"; - desc = "ATtiny25"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x08; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny45 -#------------------------------------------------------------ - -part - id = "t45"; - desc = "ATtiny45"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x92 0x06; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 256; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny85 -#------------------------------------------------------------ - -part - id = "t85"; - desc = "ATtiny85"; - has_debugwire = yes; - flash_instr = 0xB4, 0x02, 0x12; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x93 0x0b; - reset = io; - chip_erase_delay = 400000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 12; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 30000; - max_write_delay = 30000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega640 -#------------------------------------------------------------ -# Almost same as ATmega1280, except for different memory sizes - -part - id = "m640"; - desc = "ATmega640"; - signature = 0x1e 0x96 0x08; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega1280 -#------------------------------------------------------------ - -part - id = "m1280"; - desc = "ATmega1280"; - signature = 0x1e 0x97 0x03; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega1281 -#------------------------------------------------------------ -# Identical to ATmega1280 - -part parent "m1280" - id = "m1281"; - desc = "ATmega1281"; - signature = 0x1e 0x97 0x04; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega2560 -#------------------------------------------------------------ - -part - id = "m2560"; - desc = "ATmega2560"; - signature = 0x1e 0x98 0x01; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 4; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 262144; - page_size = 256; - num_pages = 1024; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - load_ext_addr = " 0 1 0 0 1 1 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 a16", - " 0 0 0 0 0 0 0 0"; - - mode = 0x41; - delay = 10; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega2561 -#------------------------------------------------------------ - -part parent "m2560" - id = "m2561"; - desc = "ATmega2561"; - signature = 0x1e 0x98 0x02; - - ocdrev = 4; - ; - -#------------------------------------------------------------ -# ATmega128RFA1 -#------------------------------------------------------------ -# Identical to ATmega2561 but half the ROM - -part parent "m2561" - id = "m128rfa1"; - desc = "ATmega128RFA1"; - signature = 0x1e 0xa7 0x01; - chip_erase_delay = 55000; - bs2 = 0xE2; - - ocdrev = 3; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 50000; - max_write_delay = 50000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 256; - readsize = 256; - ; - ; - -#------------------------------------------------------------ -# ATmega256RFR2 -#------------------------------------------------------------ - -part parent "m2561" - id = "m256rfr2"; - desc = "ATmega256RFR2"; - signature = 0x1e 0xa8 0x02; - chip_erase_delay = 55000; - bs2 = 0xE2; - - - ocdrev = 4; - ; - -#------------------------------------------------------------ -# ATmega128RFR2 -#------------------------------------------------------------ - -part parent "m128rfa1" - id = "m128rfr2"; - desc = "ATmega128RFR2"; - signature = 0x1e 0xa7 0x02; - - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega64RFR2 -#------------------------------------------------------------ - -part parent "m128rfa1" - id = "m64rfr2"; - desc = "ATmega64RFR2"; - signature = 0x1e 0xa6 0x02; - - - ocdrev = 3; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 50000; - max_write_delay = 50000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 256; - readsize = 256; - ; - ; - -#------------------------------------------------------------ -# ATmega2564RFR2 -#------------------------------------------------------------ - -part parent "m256rfr2" - id = "m2564rfr2"; - desc = "ATmega2564RFR2"; - signature = 0x1e 0xa8 0x03; - ; - -#------------------------------------------------------------ -# ATmega1284RFR2 -#------------------------------------------------------------ - -part parent "m128rfr2" - id = "m1284rfr2"; - desc = "ATmega1284RFR2"; - signature = 0x1e 0xa7 0x03; - ; - -#------------------------------------------------------------ -# ATmega644RFR2 -#------------------------------------------------------------ - -part parent "m64rfr2" - id = "m644rfr2"; - desc = "ATmega644RFR2"; - signature = 0x1e 0xa6 0x03; - ; - -#------------------------------------------------------------ -# ATtiny24 -#------------------------------------------------------------ - -part - id = "t24"; - desc = "ATtiny24"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x91 0x0b; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 128; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 2048; - page_size = 32; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x x a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny44 -#------------------------------------------------------------ - -part - id = "t44"; - desc = "ATtiny44"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x92 0x07; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 256; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny84 -#------------------------------------------------------------ - -part - id = "t84"; - desc = "ATtiny84"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; -## no STK500 devcode in XML file, use the ATtiny45 one - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x93 0x0c; - reset = io; - chip_erase_delay = 4500; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - hvsp_controlstack = - 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, - 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, - 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, - 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; - hventerstabdelay = 100; - hvspcmdexedelay = 0; - synchcycles = 6; - latchcycles = 1; - togglevtg = 1; - poweroffdelay = 25; - resetdelayms = 0; - resetdelayus = 70; - hvleavestabdelay = 100; - resetdelay = 25; - chiperasepolltimeout = 40; - chiperasetime = 0; - programfusepolltimeout = 25; - programlockpolltimeout = 25; - - ocdrev = 1; - - memory "eeprom" - size = 512; - paged = no; - page_size = 4; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", - "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " x a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 32; - readsize = 256; - ; -# ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x x x x x x x i i"; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATtiny43U -#------------------------------------------------------------ - -part - id = "t43u"; - desc = "ATtiny43u"; - has_debugwire = yes; - flash_instr = 0xB4, 0x07, 0x17; - eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, - 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, - 0x99, 0xE1, 0xBB, 0xAC; - stk500_devcode = 0x14; -## avr910_devcode = ?; -## Try the AT90S2313 devcode: - avr910_devcode = 0x20; - signature = 0x1e 0x92 0x0C; - reset = io; - chip_erase_delay = 1000; - - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, 0x4E, 0x5E, - 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, 0x06, 0x16, 0x46, 0x56, - 0x0A, 0x1A, 0x4A, 0x5A, 0x1E, 0x7C, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - hvspcmdexedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 20; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - memory "eeprom" - size = 64; - paged = yes; - page_size = 4; - num_pages = 16; - min_write_delay = 4000; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", - "0 0 a4 a3 a2 a1 a0 o o o o o o o o"; - - write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", - "0 0 a5 a4 a3 a2 a1 a0 i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x x", - " 0 0 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; - memory "flash" - paged = yes; - size = 4096; - page_size = 64; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x x a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 64; - readsize = 256; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - memory "lock" - size = 1; - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x x x x i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 4500; - max_write_delay = 4500; - ; - - memory "calibration" - size = 2; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 a0 o o o o o o o o"; - ; -; - -#------------------------------------------------------------ -# ATmega32u4 -#------------------------------------------------------------ - -part - id = "m32u4"; - desc = "ATmega32U4"; - signature = 0x1e 0x95 0x87; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90USB646 -#------------------------------------------------------------ - -part - id = "usb646"; - desc = "AT90USB646"; - signature = 0x1e 0x96 0x82; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x x a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90USB647 -#------------------------------------------------------------ -# identical to AT90USB646 - -part parent "usb646" - id = "usb647"; - desc = "AT90USB647"; - signature = 0x1e 0x96 0x82; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# AT90USB1286 -#------------------------------------------------------------ - -part - id = "usb1286"; - desc = "AT90USB1286"; - signature = 0x1e 0x97 0x82; - has_jtag = yes; -# stk500_devcode = 0xB2; -# avr910_devcode = 0x43; - chip_erase_delay = 9000; - pagel = 0xD7; - bs2 = 0xA0; - reset = dedicated; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - rampz = 0x3b; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 4096; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " x x x x a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 131072; - page_size = 256; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 x x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 256; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x x i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 x x x x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 x x x x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90USB1287 -#------------------------------------------------------------ -# identical to AT90USB1286 - -part parent "usb1286" - id = "usb1287"; - desc = "AT90USB1287"; - signature = 0x1e 0x97 0x82; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# AT90USB162 -#------------------------------------------------------------ - -part - id = "usb162"; - desc = "AT90USB162"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x94 0x82; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# AT90USB82 -#------------------------------------------------------------ -# Changes against AT90USB162 (beside IDs) -# memory "flash" -# size = 8192; -# num_pages = 64; - -part - id = "usb82"; - desc = "AT90USB82"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x93 0x82; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 8192; - page_size = 128; - num_pages = 64; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega32U2 -#------------------------------------------------------------ -# Changes against AT90USB162 (beside IDs) -# memory "flash" -# size = 32768; -# num_pages = 256; -# memory "eeprom" -# size = 1024; -# num_pages = 256; -part - id = "m32u2"; - desc = "ATmega32U2"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x95 0x8a; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - num_pages = 256; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; -#------------------------------------------------------------ -# ATmega16U2 -#------------------------------------------------------------ -# Changes against ATmega32U2 (beside IDs) -# memory "flash" -# size = 16384; -# num_pages = 128; -# memory "eeprom" -# size = 512; -# num_pages = 128; -part - id = "m16u2"; - desc = "ATmega16U2"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x94 0x89; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 128; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega8U2 -#------------------------------------------------------------ -# Changes against ATmega16U2 (beside IDs) -# memory "flash" -# size = 8192; -# page_size = 64; -# blocksize = 64; - -part - id = "m8u2"; - desc = "ATmega8U2"; - has_jtag = no; - has_debugwire = yes; - signature = 0x1e 0x93 0x89; - chip_erase_delay = 9000; - reset = io; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - pagel = 0xD7; - bs2 = 0xC6; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - ocdrev = 1; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 512; - num_pages = 128; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0x00; - readback_p2 = 0x00; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 20; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 8192; - page_size = 64; - num_pages = 128; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0x00; - readback_p2 = 0x00; - read_lo = " 0 0 1 0 0 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " x x x x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - "a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 64; - readsize = 256; - ; - - memory "lfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x i i i i i i i i"; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; - ; -#------------------------------------------------------------ -# ATmega325 -#------------------------------------------------------------ - -part - id = "m325"; - desc = "ATmega325"; - signature = 0x1e 0x95 0x05; - has_jtag = yes; -# stk500_devcode = 0x??; # No STK500v1 support? -# avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 4; /* for parallel programming */ - size = 1024; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 0 a9 a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 32768; - page_size = 128; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega645 -#------------------------------------------------------------ - -part - id = "m645"; - desc = "ATmega645"; - signature = 0x1E 0x96 0x05; - has_jtag = yes; -# stk500_devcode = 0x??; # No STK500v1 support? -# avr910_devcode = 0x??; # Try the ATmega16 one - avr910_devcode = 0x74; - pagel = 0xd7; - bs2 = 0xa0; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, - 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, - 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, - 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 5; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - idr = 0x31; - spmcr = 0x57; - allowfullpagebitstream = no; - - ocdrev = 3; - - memory "eeprom" - paged = no; /* leave this "no" */ - page_size = 8; /* for parallel programming */ - size = 2048; - min_write_delay = 9000; - max_write_delay = 9000; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 0 0 0 a10 a9 a8", - " a7 a6 a5 a4 a3 0 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 10; - blocksize = 8; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 65536; - page_size = 256; - num_pages = 256; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 0 0 0 0 0", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " a15 a14 a13 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " 0 0 0 0 0 0 0 0"; - - mode = 0x41; - delay = 10; - blocksize = 128; - readsize = 256; - ; - - memory "lock" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 1 1 i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "lfuse" - size = 1; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "hfuse" - size = 1; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "0 0 0 0 0 0 0 0 i i i i i i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "efuse" - size = 1; - - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; - min_write_delay = 9000; - max_write_delay = 9000; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 a1 a0 o o o o o o o o"; - ; - - memory "calibration" - size = 1; - - read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - ; - -#------------------------------------------------------------ -# ATmega3250 -#------------------------------------------------------------ - -part parent "m325" - id = "m3250"; - desc = "ATmega3250"; - signature = 0x1E 0x95 0x06; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# ATmega6450 -#------------------------------------------------------------ - -part parent "m645" - id = "m6450"; - desc = "ATmega6450"; - signature = 0x1E 0x96 0x06; - - ocdrev = 3; - ; - -#------------------------------------------------------------ -# AVR XMEGA family common values -#------------------------------------------------------------ - -part - id = ".xmega"; - desc = "AVR XMEGA family common values"; - has_pdi = yes; - nvm_base = 0x01c0; - mcu_base = 0x0090; - - memory "signature" - size = 3; - offset = 0x1000090; - ; - - memory "prodsig" - size = 0x32; - offset = 0x8e0200; - page_size = 0x32; - readsize = 0x32; - ; - - memory "fuse1" - size = 1; - offset = 0x8f0021; - ; - - memory "fuse2" - size = 1; - offset = 0x8f0022; - ; - - memory "fuse4" - size = 1; - offset = 0x8f0024; - ; - - memory "fuse5" - size = 1; - offset = 0x8f0025; - ; - - memory "lock" - size = 1; - offset = 0x8f0027; - ; - - memory "data" - # SRAM, only used to supply the offset - offset = 0x1000000; - ; -; - -#------------------------------------------------------------ -# ATxmega16A4U -#------------------------------------------------------------ - -part parent ".xmega" - id = "x16a4u"; - desc = "ATxmega16A4U"; - signature = 0x1e 0x94 0x41; - - memory "eeprom" - size = 0x400; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x4000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x803000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "boot" - size = 0x1000; - offset = 0x804000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "flash" - size = 0x5000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "usersig" - size = 0x100; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega16C4 -#------------------------------------------------------------ - -part parent "x16a4u" - id = "x16c4"; - desc = "ATxmega16C4"; - signature = 0x1e 0x95 0x44; -; - -#------------------------------------------------------------ -# ATxmega16D4 -#------------------------------------------------------------ - -part parent "x16a4u" - id = "x16d4"; - desc = "ATxmega16D4"; - signature = 0x1e 0x94 0x42; -; - -#------------------------------------------------------------ -# ATxmega16A4 -#------------------------------------------------------------ - -part parent "x16a4u" - id = "x16a4"; - desc = "ATxmega16A4"; - signature = 0x1e 0x94 0x41; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega32A4U -#------------------------------------------------------------ - -part parent ".xmega" - id = "x32a4u"; - desc = "ATxmega32A4U"; - signature = 0x1e 0x95 0x41; - - memory "eeprom" - size = 0x400; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x8000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x807000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "boot" - size = 0x1000; - offset = 0x808000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "flash" - size = 0x9000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "usersig" - size = 0x100; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega32C4 -#------------------------------------------------------------ - -part parent "x32a4u" - id = "x32c4"; - desc = "ATxmega32C4"; - signature = 0x1e 0x94 0x43; -; - -#------------------------------------------------------------ -# ATxmega32D4 -#------------------------------------------------------------ - -part parent "x32a4u" - id = "x32d4"; - desc = "ATxmega32D4"; - signature = 0x1e 0x95 0x42; -; - -#------------------------------------------------------------ -# ATxmega32A4 -#------------------------------------------------------------ - -part parent "x32a4u" - id = "x32a4"; - desc = "ATxmega32A4"; - signature = 0x1e 0x95 0x41; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega64A4U -#------------------------------------------------------------ - -part parent ".xmega" - id = "x64a4u"; - desc = "ATxmega64A4U"; - signature = 0x1e 0x96 0x46; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x10000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x80f000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "boot" - size = 0x1000; - offset = 0x810000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "flash" - size = 0x11000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "usersig" - size = 0x100; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega64C3 -#------------------------------------------------------------ - -part parent "x64a4u" - id = "x64c3"; - desc = "ATxmega64C3"; - signature = 0x1e 0x96 0x49; -; - -#------------------------------------------------------------ -# ATxmega64D3 -#------------------------------------------------------------ - -part parent "x64a4u" - id = "x64d3"; - desc = "ATxmega64D3"; - signature = 0x1e 0x96 0x4a; -; - -#------------------------------------------------------------ -# ATxmega64D4 -#------------------------------------------------------------ - -part parent "x64a4u" - id = "x64d4"; - desc = "ATxmega64D4"; - signature = 0x1e 0x96 0x47; -; - -#------------------------------------------------------------ -# ATxmega64A1 -#------------------------------------------------------------ - -part parent "x64a4u" - id = "x64a1"; - desc = "ATxmega64A1"; - signature = 0x1e 0x96 0x4e; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega64A1U -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64a1u"; - desc = "ATxmega64A1U"; - signature = 0x1e 0x96 0x4e; -; - -#------------------------------------------------------------ -# ATxmega64A3 -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64a3"; - desc = "ATxmega64A3"; - signature = 0x1e 0x96 0x42; -; - -#------------------------------------------------------------ -# ATxmega64A3U -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64a3u"; - desc = "ATxmega64A3U"; - signature = 0x1e 0x96 0x42; -; - -#------------------------------------------------------------ -# ATxmega64A4 -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64a4"; - desc = "ATxmega64A4"; - signature = 0x1e 0x96 0x46; -; - -#------------------------------------------------------------ -# ATxmega64B1 -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64b1"; - desc = "ATxmega64B1"; - signature = 0x1e 0x96 0x52; -; - -#------------------------------------------------------------ -# ATxmega64B3 -#------------------------------------------------------------ - -part parent "x64a1" - id = "x64b3"; - desc = "ATxmega64B3"; - signature = 0x1e 0x96 0x51; -; - -#------------------------------------------------------------ -# ATxmega128C3 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x128c3"; - desc = "ATxmega128C3"; - signature = 0x1e 0x97 0x52; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x20000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "apptable" - size = 0x2000; - offset = 0x81e000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x820000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "flash" - size = 0x22000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x200; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega128D3 -#------------------------------------------------------------ - -part parent "x128c3" - id = "x128d3"; - desc = "ATxmega128D3"; - signature = 0x1e 0x97 0x48; -; - -#------------------------------------------------------------ -# ATxmega128D4 -#------------------------------------------------------------ - -part parent "x128c3" - id = "x128d4"; - desc = "ATxmega128D4"; - signature = 0x1e 0x97 0x47; -; - -#------------------------------------------------------------ -# ATxmega128A1 -#------------------------------------------------------------ - -part parent "x128c3" - id = "x128a1"; - desc = "ATxmega128A1"; - signature = 0x1e 0x97 0x4c; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega128A1 revision D -#------------------------------------------------------------ - -part parent "x128a1" - id = "x128a1d"; - desc = "ATxmega128A1revD"; - signature = 0x1e 0x97 0x41; -; - -#------------------------------------------------------------ -# ATxmega128A1U -#------------------------------------------------------------ - -part parent "x128a1" - id = "x128a1u"; - desc = "ATxmega128A1U"; - signature = 0x1e 0x97 0x4c; -; - -#------------------------------------------------------------ -# ATxmega128A3 -#------------------------------------------------------------ - -part parent "x128a1" - id = "x128a3"; - desc = "ATxmega128A3"; - signature = 0x1e 0x97 0x42; -; - -#------------------------------------------------------------ -# ATxmega128A3U -#------------------------------------------------------------ - -part parent "x128a1" - id = "x128a3u"; - desc = "ATxmega128A3U"; - signature = 0x1e 0x97 0x42; -; - -#------------------------------------------------------------ -# ATxmega128A4 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x128a4"; - desc = "ATxmega128A4"; - signature = 0x1e 0x97 0x46; - has_jtag = yes; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x20000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x81f000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x820000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "flash" - size = 0x22000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x200; - readsize = 0x100; - ; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega128A4U -#------------------------------------------------------------ - -part parent ".xmega" - id = "x128a4u"; - desc = "ATxmega128A4U"; - signature = 0x1e 0x97 0x46; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x20000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x81f000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x820000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "flash" - size = 0x22000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "usersig" - size = 0x100; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega128B1 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x128b1"; - desc = "ATxmega128B1"; - signature = 0x1e 0x97 0x4d; - has_jtag = yes; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x20000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "apptable" - size = 0x2000; - offset = 0x81e000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x820000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "flash" - size = 0x22000; - offset = 0x800000; - page_size = 0x100; - readsize = 0x100; - ; - - memory "usersig" - size = 0x100; - offset = 0x8e0400; - page_size = 0x100; - readsize = 0x100; - ; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega128B3 -#------------------------------------------------------------ - -part parent "x128b1" - id = "x128b3"; - desc = "ATxmega128B3"; - signature = 0x1e 0x97 0x4b; -; - -#------------------------------------------------------------ -# ATxmega192C3 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x192c3"; - desc = "ATxmega192C3"; - signature = 0x1e 0x97 0x51; - - memory "eeprom" - size = 0x800; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x30000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "apptable" - size = 0x2000; - offset = 0x82e000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x830000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "flash" - size = 0x32000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x200; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega192D3 -#------------------------------------------------------------ - -part parent "x192c3" - id = "x192d3"; - desc = "ATxmega192D3"; - signature = 0x1e 0x97 0x49; -; - -#------------------------------------------------------------ -# ATxmega192A1 -#------------------------------------------------------------ - -part parent "x192c3" - id = "x192a1"; - desc = "ATxmega192A1"; - signature = 0x1e 0x97 0x4e; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega192A3 -#------------------------------------------------------------ - -part parent "x192a1" - id = "x192a3"; - desc = "ATxmega192A3"; - signature = 0x1e 0x97 0x44; -; - -#------------------------------------------------------------ -# ATxmega192A3U -#------------------------------------------------------------ - -part parent "x192a1" - id = "x192a3u"; - desc = "ATxmega192A3U"; - signature = 0x1e 0x97 0x44; -; - -#------------------------------------------------------------ -# ATxmega256C3 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x256c3"; - desc = "ATxmega256C3"; - signature = 0x1e 0x98 0x46; - - memory "eeprom" - size = 0x1000; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x40000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "apptable" - size = 0x2000; - offset = 0x83e000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x840000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "flash" - size = 0x42000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x200; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega256D3 -#------------------------------------------------------------ - -part parent "x256c3" - id = "x256d3"; - desc = "ATxmega256D3"; - signature = 0x1e 0x98 0x44; -; - -#------------------------------------------------------------ -# ATxmega256A1 -#------------------------------------------------------------ - -part parent "x256c3" - id = "x256a1"; - desc = "ATxmega256A1"; - signature = 0x1e 0x98 0x46; - has_jtag = yes; - - memory "fuse0" - size = 1; - offset = 0x8f0020; - ; -; - -#------------------------------------------------------------ -# ATxmega256A3 -#------------------------------------------------------------ - -part parent "x256a1" - id = "x256a3"; - desc = "ATxmega256A3"; - signature = 0x1e 0x98 0x42; -; - -#------------------------------------------------------------ -# ATxmega256A3U -#------------------------------------------------------------ - -part parent "x256a1" - id = "x256a3u"; - desc = "ATxmega256A3U"; - signature = 0x1e 0x98 0x42; -; - -#------------------------------------------------------------ -# ATxmega256A3B -#------------------------------------------------------------ - -part parent "x256a1" - id = "x256a3b"; - desc = "ATxmega256A3B"; - signature = 0x1e 0x98 0x43; -; - -#------------------------------------------------------------ -# ATxmega256A3BU -#------------------------------------------------------------ - -part parent "x256a1" - id = "x256a3bu"; - desc = "ATxmega256A3BU"; - signature = 0x1e 0x98 0x43; -; - -#------------------------------------------------------------ -# ATxmega384C3 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x384c3"; - desc = "ATxmega384C3"; - signature = 0x1e 0x98 0x45; - - memory "eeprom" - size = 0x1000; - offset = 0x8c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x60000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "apptable" - size = 0x2000; - offset = 0x85e000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "boot" - size = 0x2000; - offset = 0x860000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "flash" - size = 0x62000; - offset = 0x800000; - page_size = 0x200; - readsize = 0x100; - ; - - memory "usersig" - size = 0x200; - offset = 0x8e0400; - page_size = 0x200; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega384D3 -#------------------------------------------------------------ - -part parent "x384c3" - id = "x384d3"; - desc = "ATxmega384D3"; - signature = 0x1e 0x98 0x47; -; - -#------------------------------------------------------------ -# ATxmega8E5 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x8e5"; - desc = "ATxmega8E5"; - signature = 0x1e 0x93 0x41; - - memory "eeprom" - size = 0x0200; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x2000; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "apptable" - size = 0x800; - offset = 0x00801800; - page_size = 0x80; - readsize = 0x100; - ; - - memory "boot" - size = 0x800; - offset = 0x00804000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "flash" - size = 0x2800; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "usersig" - size = 0x80; - offset = 0x8e0400; - page_size = 0x80; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega16E5 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x16e5"; - desc = "ATxmega16E5"; - signature = 0x1e 0x94 0x45; - - memory "eeprom" - size = 0x0200; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x4000; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x00803000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "boot" - size = 0x1000; - offset = 0x00804000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "flash" - size = 0x5000; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "usersig" - size = 0x80; - offset = 0x8e0400; - page_size = 0x80; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# ATxmega32E5 -#------------------------------------------------------------ - -part parent ".xmega" - id = "x32e5"; - desc = "ATxmega32E5"; - signature = 0x1e 0x95 0x4c; - - memory "eeprom" - size = 0x0400; - offset = 0x08c0000; - page_size = 0x20; - readsize = 0x100; - ; - - memory "application" - size = 0x8000; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "apptable" - size = 0x1000; - offset = 0x00807000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "boot" - size = 0x1000; - offset = 0x00804000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "flash" - size = 0x9000; - offset = 0x0800000; - page_size = 0x80; - readsize = 0x100; - ; - - memory "usersig" - size = 0x80; - offset = 0x8e0400; - page_size = 0x80; - readsize = 0x100; - ; -; - -#------------------------------------------------------------ -# AVR32UC3A0512 -#------------------------------------------------------------ - -part - id = "uc3a0512"; - desc = "AT32UC3A0512"; - signature = 0xED 0xC0 0x3F; - has_jtag = yes; - is_avr32 = yes; - - memory "flash" - paged = yes; - page_size = 512; # bytes - readsize = 512; # bytes - num_pages = 1024; # could be set dynamicly - size = 0x00080000; # could be set dynamicly - offset = 0x80000000; - ; -; - -part parent "uc3a0512" - id = "ucr2"; - desc = "deprecated, use 'uc3a0512'"; -; - -#------------------------------------------------------------ -# ATtiny1634. -#------------------------------------------------------------ - -part - id = "t1634"; - desc = "ATtiny1634"; - has_debugwire = yes; - flash_instr = 0xB6, 0x01, 0x11; - eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, - 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, - 0x99, 0xF9, 0xBB, 0xAF; - stk500_devcode = 0x86; - # avr910_devcode = 0x; - signature = 0x1e 0x94 0x12; - pagel = 0xB3; - bs2 = 0xB1; - reset = io; - chip_erase_delay = 9000; - pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", - "x x x x x x x x x x x x x x x x"; - - chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", - "x x x x x x x x x x x x x x x x"; - - timeout = 200; - stabdelay = 100; - cmdexedelay = 25; - synchloops = 32; - bytedelay = 0; - pollindex = 3; - pollvalue = 0x53; - predelay = 1; - postdelay = 1; - pollmethod = 1; - - pp_controlstack = - 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, - 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, - 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, - 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - hventerstabdelay = 100; - progmodedelay = 0; - latchcycles = 0; - togglevtg = 1; - poweroffdelay = 15; - resetdelayms = 1; - resetdelayus = 0; - hvleavestabdelay = 15; - resetdelay = 15; - chiperasepulsewidth = 0; - chiperasepolltimeout = 10; - programfusepulsewidth = 0; - programfusepolltimeout = 5; - programlockpulsewidth = 0; - programlockpolltimeout = 5; - - memory "eeprom" - paged = no; - page_size = 4; - size = 256; - min_write_delay = 3600; - max_write_delay = 3600; - readback_p1 = 0xff; - readback_p2 = 0xff; - read = " 1 0 1 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - write = " 1 1 0 0 0 0 0 0", - " 0 0 0 x x x x a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_lo = " 1 1 0 0 0 0 0 1", - " 0 0 0 0 0 0 0 0", - " 0 0 0 0 0 0 a1 a0", - " i i i i i i i i"; - - writepage = " 1 1 0 0 0 0 1 0", - " 0 0 x x x x x a8", - " a7 a6 a5 a4 a3 a2 0 0", - " x x x x x x x x"; - - mode = 0x41; - delay = 5; - blocksize = 4; - readsize = 256; - ; - - memory "flash" - paged = yes; - size = 16384; - page_size = 32; - num_pages = 512; - min_write_delay = 4500; - max_write_delay = 4500; - readback_p1 = 0xff; - readback_p2 = 0xff; - read_lo = " 0 0 1 0 0 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - read_hi = " 0 0 1 0 1 0 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 a5 a4 a3 a2 a1 a0", - " o o o o o o o o"; - - loadpage_lo = " 0 1 0 0 0 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - loadpage_hi = " 0 1 0 0 1 0 0 0", - " 0 0 0 x x x x x", - " x x a5 a4 a3 a2 a1 a0", - " i i i i i i i i"; - - writepage = " 0 1 0 0 1 1 0 0", - " 0 0 0 a12 a11 a10 a9 a8", - " a7 a6 x x x x x x", - " x x x x x x x x"; - - mode = 0x41; - delay = 6; - blocksize = 128; - readsize = 256; - - ; - - memory "lfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "hfuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x o o o o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", - "x x x x x x x x i i i i i i i i"; - ; - - memory "efuse" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", - "x x x x x x x x x x x o o o o o"; - - write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", - "x x x x x x x x x x x i i i i i"; - ; - - memory "lock" - size = 1; - min_write_delay = 4500; - max_write_delay = 4500; - read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", - "x x x x x x x x x x x x x x o o"; - - write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", - "x x x x x x x x 1 1 1 1 1 1 i i"; - ; - - memory "calibration" - size = 1; - read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", - "0 0 0 0 0 0 0 0 o o o o o o o o"; - ; - - memory "signature" - size = 3; - read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", - "x x x x x x a1 a0 o o o o o o o o"; - ; -; - -#------------------------------------------------------------ -# Common values for reduced core tinys (4/5/9/10/20/40) -#------------------------------------------------------------ - -part - id = ".reduced_core_tiny"; - desc = "Common values for reduced core tinys"; - has_tpi = yes; - - memory "signature" - size = 3; - offset = 0x3fc0; - page_size = 16; - ; - - memory "fuse" - size = 1; - offset = 0x3f40; - page_size = 16; - blocksize = 4; - ; - - memory "calibration" - size = 1; - offset = 0x3f80; - page_size = 16; - ; - - memory "lockbits" - size = 1; - offset = 0x3f00; - page_size = 16; - ; -; - -#------------------------------------------------------------ -# ATtiny4 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - id = "t4"; - desc = "ATtiny4"; - signature = 0x1e 0x8f 0x0a; - - memory "flash" - size = 512; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; -; - -#------------------------------------------------------------ -# ATtiny5 -#------------------------------------------------------------ - -part parent "t4" - id = "t5"; - desc = "ATtiny5"; - signature = 0x1e 0x8f 0x09; -; - -#------------------------------------------------------------ -# ATtiny9 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - id = "t9"; - desc = "ATtiny9"; - signature = 0x1e 0x90 0x08; - - memory "flash" - size = 1024; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; -; - -#------------------------------------------------------------ -# ATtiny10 -#------------------------------------------------------------ - -part parent "t9" - id = "t10"; - desc = "ATtiny10"; - signature = 0x1e 0x90 0x03; -; - -#------------------------------------------------------------ -# ATtiny20 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - id = "t20"; - desc = "ATtiny20"; - signature = 0x1e 0x91 0x0F; - - memory "flash" - size = 2048; - offset = 0x4000; - page_size = 16; - blocksize = 128; - ; -; - -#------------------------------------------------------------ -# ATtiny40 -#------------------------------------------------------------ - -part parent ".reduced_core_tiny" - id = "t40"; - desc = "ATtiny40"; - signature = 0x1e 0x92 0x0E; - - memory "flash" - size = 4096; - offset = 0x4000; - page_size = 64; - blocksize = 128; - ; -; - -#------------------------------------------------------------ -# ATmega406 -#------------------------------------------------------------ - -part - id = "m406"; - desc = "ATMEGA406"; - has_jtag = yes; - signature = 0x1e 0x95 0x07; - - # STK500 parameters (parallel programming IO lines) - pagel = 0xa7; - bs2 = 0xa0; - serial = no; - parallel = yes; - - # STK500v2 HV programming parameters, from XML - pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, - 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, - 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, - 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; - - # JTAG ICE mkII parameters, also from XML files - allowfullpagebitstream = no; - enablepageprogramming = yes; - idr = 0x51; - rampz = 0x00; - spmcr = 0x57; - eecr = 0x3f; - - memory "eeprom" - paged = no; - size = 512; - page_size = 4; - blocksize = 4; - readsize = 4; - num_pages = 128; - ; - - memory "flash" - paged = yes; - size = 40960; - page_size = 128; - blocksize = 128; - readsize = 128; - num_pages = 320; - ; - - memory "hfuse" - size = 1; - ; - - memory "lfuse" - size = 1; - ; - - memory "lockbits" - size = 1; - ; - - memory "signature" - size = 3; - ; -; - - diff --git a/bootloaders/gemma/gemma_v1.hex b/bootloaders/gemma/gemma_v1.hex deleted file mode 100644 index 4b68876..0000000 --- a/bootloaders/gemma/gemma_v1.hex +++ /dev/null @@ -1,182 +0,0 @@ -:100000005FCA5FCA5FCA5FCA5FCA5FCA5FCA5FCAA8 -:1014C00033C05FC08BC05DC05CC05BC05AC059C038 -:1014D00058C057C056C055C054C053C052C009026E -:1014E0001200010100803209040000000000000029 -:1014F00012011001FF00000841239F0C00010102AE -:1015000000010C03470065006D006D0061001603CB -:10151000410072006400750069006E006F002E00CB -:10152000630063000403090411241FBECFE5D2E069 -:10153000DEBFCDBF84B7877F84BF88E10FB6F89444 -:1015400081BD11BC0FBE91E080E80FB6F89486BD56 -:1015500096BD0FBE0AEA0F9310E0A0E6B0E0EEEDF4 -:10156000FFE102C005900D92A236B107D9F711E054 -:10157000A2E6B0E001C01D92A832B107E1F7EDD3B9 -:101580002CC59ECFA82FB92F80E090E041E050EA13 -:10159000609530E009C02D9182279795879510F0CE -:1015A00084279527305EC8F36F5FA8F30895EADFBC -:1015B0008D939D930895A6E088279927AA9569F0B1 -:1015C0000197E1F3B399FCCFB39BFECF81E099275C -:1015D000A6B3019611F0A871D9F70895CF93CFB7AC -:1015E000CF93C0915F02CA3A21F0CF91CFBFCF9184 -:1015F00065CFCC27C395B39BE9F7B39B0BC0B39BD7 -:1016000009C0B39B07C0B39B05C0B39B03C0B39B8A -:1016100001C0D3C00F92DF93C0910B01DD27CE5ED6 -:10162000DE4F012EB39B03C0DF910F90E6CF2F93C7 -:101630000F931F934F932FEF4F6F06B303FB20F9C8 -:101640005F933F9350E03BE065C016B301265029FD -:1016500053FDC89556B3012703FB25F92F7306B335 -:10166000B1F05027102713FB26F906B22230F0F014 -:1016700000C016B3012703FB27F90126502906B243 -:101680002430E8F54F77206816B30000F6CF5027D6 -:101690004F7D206206B2102F000000C006B3002666 -:1016A0005029102713FB26F906B2E2CF4F7B06B371 -:1016B000206400C0DACF01265029187106B269F102 -:1016C0004E7F2160012F16B328C0002650294D7F80 -:1016D00006B22260102F29C0012650294B7F06B286 -:1016E0002460012F2DC016B301265029477F2860A2 -:1016F000000006B22EC04F7E06B3206130C04227E4 -:1017000006B3499300265029102706B24FEF13FB6A -:1017100020F9297F16B379F2187159F10126502961 -:1017200006B2012703FB21F9237F06B371F20026DD -:1017300050293150D0F006B2102713FB22F9277E32 -:1017400016B351F201265029012703FB06B223F9F3 -:101750002F7C49F2000006B3102713FB24F9002662 -:10176000502906B22F7939F270CF10E21ABF002744 -:1017700017C03B503195C31BD04010E21ABF0881FF -:10178000033CF9F00B34E9F0209109011981110FA4 -:101790001213EDCF093651F10D3211F0013E39F738 -:1017A000009310013F915F914F911F910F912F91E5 -:1017B000DF910F90CAB7C5FD1DCFCF91CFBFCF919D -:1017C000189520911001222369F310910E01112325 -:1017D00021F5343022F130930E0120930A0110914B -:1017E0000B013BE0311B30930B0119C000910E013E -:1017F00001309CF40AE53091610034FD11C0009382 -:101800006100CEEFD0E010C0052710E000C021C07D -:10181000052710E0C89508BB14C03AE501C032EDB9 -:10182000032EC0E0D0E032E017B31861C39A08B3CA -:1018300017BB58E120E84FEF20FF052708BB27958D -:1018400017951C3F28F700004552B0F720FF0527E9 -:10185000279508BB17951C3FB8F629913A9561F773 -:10186000077E10910F01110F08BBC250D04011F03C -:101870001093090110E21ABF086017B3177E402FBA -:10188000477E54E05A95F1F708BB17BB48BB8ACF97 -:101890002091F9003091FA002D3B3441B8F421E059 -:1018A0002093F600F894E091F900F091FA000C0111 -:1018B00020935700E895112478948091F900909135 -:1018C000FA0002969093FA008093F90008958091AF -:1018D000F600882309F43DC08091F9009091FA0048 -:1018E000813C944108F035C0F8948091F9009091C2 -:1018F000FA008238944118F1809166009091670057 -:101900008F559A409F70906CEEEBF4E121E00C0152 -:1019100020935700E895112480916E0090916F00FC -:101920008C559A409F70906CECEBF4E10C01209385 -:101930005700E8951124789481E080936400E09149 -:10194000F900F091FA00329785E080935700E8950E -:1019500078941092F6000895FF920F931F93CF93FF -:10196000DF9380910E01835087FD5AC190910B0146 -:10197000ACE0B0E0A91BB109AE5EBE4F31E03093E0 -:10198000620090910A019D3209F00AC1883009F085 -:1019900045C183EC8093FE008AE58093610010923C -:1019A000FD008C91807609F47DC01092F3001092B6 -:1019B000F5001092F40011962C911197213009F442 -:1019C00069C0263021F481E08093FC0067C0273095 -:1019D00009F040C03093FC0089EE90E090930D0137 -:1019E00080930C0113969C9113979093EB001092A7 -:1019F000EC0012968C911297803379F491114CC0BF -:101A00001496EC911497F0E0EE0FFF1F81E28093A3 -:101A10005700E491E093EC003FC08C3A81F4903899 -:101A2000D9F514968C911497811136C015968C9126 -:101A30001597811131C081E08093E8002DC08C346E -:101A400059F515968C911597811126C081E08093E8 -:101A5000E70022C0283009F4B6CF14968D919C91EE -:101A600015979093FA008093F90016968C9116972B -:101A70008093F10087EF820F843080F48FE788BD78 -:101A80003093FB002093F2002A3051F081E08093E4 -:101A9000FC0006C021E077C024E075C020E073C0E0 -:101AA0002FEF68C012969C91129710920701119621 -:101AB0008C911197811106C01092080187E091E086 -:101AC00022E052C0853019F490930F013FC0863058 -:101AD000B9F513968C911397813019F480EF94E146 -:101AE00004C0823041F48EED94E190930D01809317 -:101AF0000C0122E121C08330F1F4911108C084E28D -:101B000095E190930D0180930C0124E015C0913074 -:101B100041F48EE095E190930D0180930C0126E154 -:101B20000BC0923041F482E095E190930D018093D7 -:101B30000C012CE001C020E080E48093FD0018C07F -:101B4000883079F0893031F49093110187E091E089 -:101B500020E00AC021E08A3009F020E087E091E02F -:101B600003C081E191E021E090930D0180930C018D -:101B70002F3F49F48C9187FF02C016962C9180E884 -:101B80008093FD000AC017968C911797811105C0AC -:101B900016968C91821708F4282F209360003EC07F -:101BA0009091FD0097FF3AC09091F100182F98177F -:101BB00008F4192F092F011B0093F1001092FC006B -:101BC0008091F2008A3029F0011128C01092600043 -:101BD00025C0FA2ECA2FDB2F8C2F8F198117A0F763 -:101BE0008091F9009091FA008034910590F421E001 -:101BF00020936500FC01EE0FFF1FEA59FF4F28817B -:101C000039813183208302969093FA008093F90002 -:101C100003C0888199813CDE2296DECF10920E01AE -:101C20008091610084FF7BC0809160008F3F09F448 -:101C300076C0182F893008F018E0811B809360006F -:101C40008091FE0098E889278093FE00112309F413 -:101C50005AC08091FD0087FF38C08091F100811744 -:101C600008F4182F811B8093F1003091F200E0916D -:101C7000F900F091FA0020E0AFEFB0E0211700F595 -:101C80003B3009F4FFCF3930D9F7E034F10560F487 -:101C9000EF01CC0FDD1FCA59DF4F888199818D93E9 -:101CA0009D932E5F3296EACFEC3B84E1F80710F06B -:101CB0008FEF01C084918C9311962F5F3196DECF08 -:101CC000F093FA00E093F9001EC0E0910C01F0914E -:101CD0000D0186FF0BC08FEF90E0DC0124912D9366 -:101CE0003196212F280F2A13F9CF09C08FEF90E0EA -:101CF000DC0121912D93212F280F2A13FACFF09385 -:101D00000D01E0930C01612F8FEF90E050DC1C5F20 -:101D10001C3019F08FEF809360001093610084E114 -:101D200096B3987131F48150D9F710920F01109247 -:101D30000901C1E08111C0E0809163008C1739F086 -:101D4000C11103C0F89401D17894C0936300DF916E -:101D5000CF911F910F91FF900895C1B7B99A83E277 -:101D60008ABD81E083BFAC9A8BB780628BBFBB9A80 -:101D70002FE132E18AE0215030408040E1F700C09D -:101D80000000BB987894E8DD8091E800882321F179 -:101D900082E090E09093F8008093F70013C0CF01A9 -:101DA0008F739927892B21F483E080935700E8955E -:101DB000D3DD8091F7009091F80002969093F8009F -:101DC0008093F700E091F700F091F800E03C94E197 -:101DD000F90728F31092E8008091E700882329F0A2 -:101DE000BBDD75DD1092E700B7DD809162008823CE -:101DF00041F08091FC00811104C08091FB008111B1 -:101E0000C2CF80916200882371F08091E600811139 -:101E10000AC088B5805F88BD88B5811104C08AB5C5 -:101E200090E189278ABD8091E6008F5F8093E6006C -:101E30008EEC90E00197F1F78091F4009091F5001D -:101E400001969093F5008093F4002091F3000097A1 -:101E500011F42F5F00C02093F30030916200311124 -:101E600005C081323EE4930708F05AC03091FC006F -:101E7000332321F08131974208F052C080916200F3 -:101E8000882309F480CF8091FB0081117CCF23301F -:101E900008F479CF45C080916400811149C08CEB72 -:101EA00094E19093FA008093F90081E08093F6002A -:101EB0000EDD3EC0DF01AA0FBB1FAA59BF4F8D9197 -:101EC0009C919F012B7F232B31F4E054FB4E859195 -:101ED0009491805A954FDCDCE091F900F091FA0082 -:101EE000E034F10538F3F3DC10925F0217BA13BE49 -:101EF0001ABC03C081B78F5F81BF81B78C17D0F345 -:101F000003C081B7815081BF81B7C817D0F391E07A -:101F100080E80FB6F89486BD96BD0FBED0CA13C038 -:101F200015BA1BBEF894809165008111B4CFDCCF47 -:101F3000E0E0F0E083E080935700E8951092FA002B -:101F40001092F900C9CF80E090E0DF92EF92FF920B -:101F50000F931F93CF93DF9390E080E80FB6F89430 -:101F600086BD96BD0FBE08E010E0F12C80E8E82E9B -:101F7000DF2CDE0CD1BE1FDBEC01C43389E0D807B7 -:101F80000CF4FD2CE694015011090115110581F79F -:101F90001F2D8FEF8F0D81BF21B730E0812F90E093 -:101FA00001968217930784F006DB8453994097FFCC -:101FB00003C09195819591098C179D0714F4F1B692 -:101FC000EC0181B78F5FE7CFF1BEDF91CF911F9119 -:0E1FD0000F91FF90EF90DF900895F894FFCFEF -:021FDE00FF5AA8 -:04000003000014C025 -:00000001FF diff --git a/bootloaders/gemma/usbconfig.h b/bootloaders/gemma/usbconfig.h deleted file mode 100644 index ca0c021..0000000 --- a/bootloaders/gemma/usbconfig.h +++ /dev/null @@ -1,351 +0,0 @@ -/* Name: usbconfig.h - * Project: V-USB, virtual USB port for Atmel's(r) AVR(r) microcontrollers - * Author: Christian Starkjohann - * Creation Date: 2005-04-01 - * Tabsize: 4 - * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH - * License: GNU GPL v2 or v3 (see License.txt) - */ - -/* Modified by me@frank-zhao.com for project GemmaBoot - * - * GemmaBoot is a bootloader that emulates a USBtinyISP (from Adafruit Industries) - * - * Gemma will use GemmaBoot - * - * This code is heavily derived from USBaspLoader, but also from USBtiny, with USBtinyISP's settings - - Copyright (c) 2013 Adafruit Industries - All rights reserved. - - GemmaBoot is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation, either version 3 of - the License, or (at your option) any later version. - - GemmaBoot is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with GemmaBoot. If not, see - . -*/ - -#ifndef __usbconfig_h_included__ -#define __usbconfig_h_included__ - -/* YOU SHOULD NOT NEED TO MODIFY THIS FILE! All configurations are supposed - * to go into bootloaderconfig.h! - */ - -/* ---------------------------- Hardware Config ---------------------------- */ - -/* All the port and pin assignments, as well as the clock speed and CRC - setting are now in bootloaderconfig.h: */ - -#include "bootloaderconfig.h" - -/* --------------------------- Functional Range ---------------------------- */ - -#define USB_CFG_HAVE_INTRIN_ENDPOINT 0 -/* Define this to 1 if you want to compile a version with two endpoints: The - * default control endpoint 0 and an interrupt-in endpoint (any other endpoint - * number). - */ -#define USB_CFG_HAVE_INTRIN_ENDPOINT3 0 -/* Define this to 1 if you want to compile a version with three endpoints: The - * default control endpoint 0, an interrupt-in endpoint 3 (or the number - * configured below) and a catch-all default interrupt-in endpoint as above. - * You must also define USB_CFG_HAVE_INTRIN_ENDPOINT to 1 for this feature. - */ -#define USB_CFG_EP3_NUMBER 3 -/* If the so-called endpoint 3 is used, it can now be configured to any other - * endpoint number (except 0) with this macro. Default if undefined is 3. - */ -/* #define USB_INITIAL_DATATOKEN USBPID_DATA1 */ -/* The above macro defines the startup condition for data toggling on the - * interrupt/bulk endpoints 1 and 3. Defaults to USBPID_DATA1. - * Since the token is toggled BEFORE sending any data, the first packet is - * sent with the oposite value of this configuration! - */ -#define USB_CFG_IMPLEMENT_HALT 0 -/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature - * for endpoint 1 (interrupt endpoint). Although you may not need this feature, - * it is required by the standard. We have made it a config option because it - * bloats the code considerably. - */ -#define USB_CFG_SUPPRESS_INTR_CODE 0 -/* Define this to 1 if you want to declare interrupt-in endpoints, but don't - * want to send any data over them. If this macro is defined to 1, functions - * usbSetInterrupt() and usbSetInterrupt3() are omitted. This is useful if - * you need the interrupt-in endpoints in order to comply to an interface - * (e.g. HID), but never want to send any data. This option saves a couple - * of bytes in flash memory and the transmit buffers in RAM. - */ -#define USB_CFG_INTR_POLL_INTERVAL 10 -/* If you compile a version with endpoint 1 (interrupt-in), this is the poll - * interval. The value is in milliseconds and must not be less than 10 ms for - * low speed devices. - */ -#ifndef USB_CFG_IS_SELF_POWERED // allow bootloaderconfig.h to override -#define USB_CFG_IS_SELF_POWERED 0 -#endif -/* Define this to 1 if the device has its own power supply. Set it to 0 if the - * device is powered from the USB bus. - */ -#ifndef USB_CFG_MAX_BUS_POWER // allow bootloaderconfig.h to override -#define USB_CFG_MAX_BUS_POWER 100 -#endif -/* Set this variable to the maximum USB bus power consumption of your device. - * The value is in milliamperes. [It will be divided by two since USB - * communicates power requirements in units of 2 mA.] - */ -#define USB_CFG_IMPLEMENT_FN_WRITE 1 -/* Set this to 1 if you want usbFunctionWrite() to be called for control-out - * transfers. Set it to 0 if you don't need it and want to save a couple of - * bytes. - */ -#define USB_CFG_IMPLEMENT_FN_READ 1 -/* Set this to 1 if you need to send control replies which are generated - * "on the fly" when usbFunctionRead() is called. If you only want to send - * data from a static buffer, set it to 0 and return the data from - * usbFunctionSetup(). This saves a couple of bytes. - */ -#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0 -/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoints. - * You must implement the function usbFunctionWriteOut() which receives all - * interrupt/bulk data sent to any endpoint other than 0. The endpoint number - * can be found in 'usbRxToken'. - */ -#define USB_CFG_HAVE_FLOWCONTROL 0 -/* Define this to 1 if you want flowcontrol over USB data. See the definition - * of the macros usbDisableAllRequests() and usbEnableAllRequests() in - * usbdrv.h. - */ -#define USB_CFG_DRIVER_FLASH_PAGE 0 -/* If the device has more than 64 kBytes of flash, define this to the 64 k page - * where the driver's constants (descriptors) are located. Or in other words: - * Define this to 1 for boot loaders on the ATMega128. - */ -#define USB_CFG_LONG_TRANSFERS 0 -/* Define this to 1 if you want to send/receive blocks of more than 254 bytes - * in a single control-in or control-out transfer. Note that the capability - * for long transfers increases the driver size. - */ -#ifndef __ASSEMBLER__ -extern volatile char usbHasRxed; -#endif -#define USB_RX_USER_HOOK(data, len) do { usbHasRxed = 1; } while (0); -/* This macro is a hook if you want to do unconventional things. If it is - * defined, it's inserted at the beginning of received message processing. - * If you eat the received message and don't want default processing to - * proceed, do a return after doing your things. One possible application - * (besides debugging) is to flash a status LED on each packet. - */ -/* #define USB_RESET_HOOK(resetStarts) if(!resetStarts){hadUsbReset();} */ -/* This macro is a hook if you need to know when an USB RESET occurs. It has - * one parameter which distinguishes between the start of RESET state and its - * end. - */ -/* #define USB_SET_ADDRESS_HOOK() hadAddressAssigned(); */ -/* This macro (if defined) is executed when a USB SET_ADDRESS request was - * received. - */ -#define USB_COUNT_SOF 0 -/* define this macro to 1 if you need the global variable "usbSofCount" which - * counts SOF packets. This feature requires that the hardware interrupt is - * connected to D- instead of D+. - */ -/* #ifdef __ASSEMBLER__ - * macro myAssemblerMacro - * in YL, TCNT0 - * sts timer0Snapshot, YL - * endm - * #endif - * #define USB_SOF_HOOK myAssemblerMacro - * This macro (if defined) is executed in the assembler module when a - * Start Of Frame condition is detected. It is recommended to define it to - * the name of an assembler macro which is defined here as well so that more - * than one assembler instruction can be used. The macro may use the register - * YL and modify SREG. If it lasts longer than a couple of cycles, USB messages - * immediately after an SOF pulse may be lost and must be retried by the host. - * What can you do with this hook? Since the SOF signal occurs exactly every - * 1 ms (unless the host is in sleep mode), you can use it to tune OSCCAL in - * designs running on the internal RC oscillator. - * Please note that Start Of Frame detection works only if D- is wired to the - * interrupt, not D+. THIS IS DIFFERENT THAN MOST EXAMPLES! - */ -#define USB_CFG_CHECK_DATA_TOGGLING 0 -/* define this macro to 1 if you want to filter out duplicate data packets - * sent by the host. Duplicates occur only as a consequence of communication - * errors, when the host does not receive an ACK. Please note that you need to - * implement the filtering yourself in usbFunctionWriteOut() and - * usbFunctionWrite(). Use the global usbCurrentDataToken and a static variable - * for each control- and out-endpoint to check for duplicate packets. - */ -#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH 1 -/* define this macro to 1 if you want the function usbMeasureFrameLength() - * compiled in. This function can be used to calibrate the AVR's RC oscillator. - */ -#define USB_USE_FAST_CRC 0 -/* The assembler module has two implementations for the CRC algorithm. One is - * faster, the other is smaller. This CRC routine is only used for transmitted - * messages where timing is not critical. The faster routine needs 31 cycles - * per byte while the smaller one needs 61 to 69 cycles. The faster routine - * may be worth the 32 bytes bigger code size if you transmit lots of data and - * run the AVR close to its limit. - */ - -/* -------------------------- Device Description --------------------------- */ - -#define USB_CFG_VENDOR_ID 0x41, 0x23 /* = 0x16c0 = 5824 = voti.nl */ -/* USB vendor ID for the device, low byte first. If you have registered your - * own Vendor ID, define it here. Otherwise you may use one of obdev's free - * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules! - */ -#define USB_CFG_DEVICE_ID 0x9F, 0x0c /* = 0x05dc = 1500 */ -/* This is the ID of the product, low byte first. It is interpreted in the - * scope of the vendor ID. If you have registered your own VID with usb.org - * or if you have licensed a PID from somebody else, define it here. Otherwise - * you may use one of obdev's free shared VID/PID pairs. See the file - * USB-IDs-for-free.txt for details! - */ -#define USB_CFG_DEVICE_VERSION 0x00, 0x01 -/* Version number of the device: Minor number first, then major number. - */ -#define USB_CFG_VENDOR_NAME 'A','r','d','u','i','n','o','.','c','c' -#define USB_CFG_VENDOR_NAME_LEN 10 -/* These two values define the vendor name returned by the USB device. The name - * must be given as a list of characters under single quotes. The characters - * are interpreted as Unicode (UTF-16) entities. - * If you don't want a vendor name string, undefine these macros. - * ALWAYS define a vendor name containing your Internet domain name if you use - * obdev's free shared VID/PID pair. See the file USB-IDs-for-free.txt for - * details. - */ -#define USB_CFG_DEVICE_NAME 'G','e','m','m','a' -#define USB_CFG_DEVICE_NAME_LEN 5 -/* Same as above for the device name. If you don't want a device name, undefine - * the macros. See the file USB-IDs-for-free.txt before you assign a name if - * you use a shared VID/PID. - */ -/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */ -/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */ -/* Same as above for the serial number. If you don't want a serial number, - * undefine the macros. - * It may be useful to provide the serial number through other means than at - * compile time. See the section about descriptor properties below for how - * to fine tune control over USB descriptors such as the string descriptor - * for the serial number. - */ -#define USB_CFG_DEVICE_CLASS 0xFF /* set to 0 if deferred to interface */ -#define USB_CFG_DEVICE_SUBCLASS 0 -/* See USB specification if you want to conform to an existing device class. - * Class 0xff is "vendor specific". - */ -#define USB_CFG_INTERFACE_CLASS 0 /* define class here if not at device level */ -#define USB_CFG_INTERFACE_SUBCLASS 0 -#define USB_CFG_INTERFACE_PROTOCOL 0 -/* See USB specification if you want to conform to an existing device class or - * protocol. The following classes must be set at interface level: - * HID class is 3, no subclass and protocol required (but may be useful!) - * CDC class is 2, use subclass 2 and protocol 1 for ACM - */ -/* #define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 42 */ -/* Define this to the length of the HID report descriptor, if you implement - * an HID device. Otherwise don't define it or define it to 0. - * If you use this define, you must add a PROGMEM character array named - * "usbHidReportDescriptor" to your code which contains the report descriptor. - * Don't forget to keep the array and this define in sync! - */ - -#define USB_PUBLIC static -/* Use the define above if you #include usbdrv.c instead of linking against it. - * This technique saves a couple of bytes in flash memory. - */ - -/* ------------------- Fine Control over USB Descriptors ------------------- */ -/* If you don't want to use the driver's default USB descriptors, you can - * provide our own. These can be provided as (1) fixed length static data in - * flash memory, (2) fixed length static data in RAM or (3) dynamically at - * runtime in the function usbFunctionDescriptor(). See usbdrv.h for more - * information about this function. - * Descriptor handling is configured through the descriptor's properties. If - * no properties are defined or if they are 0, the default descriptor is used. - * Possible properties are: - * + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched - * at runtime via usbFunctionDescriptor(). If the usbMsgPtr mechanism is - * used, the data is in FLASH by default. Add property USB_PROP_IS_RAM if - * you want RAM pointers. - * + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found - * in static memory is in RAM, not in flash memory. - * + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash), - * the driver must know the descriptor's length. The descriptor itself is - * found at the address of a well known identifier (see below). - * List of static descriptor names (must be declared PROGMEM if in flash): - * char usbDescriptorDevice[]; - * char usbDescriptorConfiguration[]; - * char usbDescriptorHidReport[]; - * char usbDescriptorString0[]; - * int usbDescriptorStringVendor[]; - * int usbDescriptorStringDevice[]; - * int usbDescriptorStringSerialNumber[]; - * Other descriptors can't be provided statically, they must be provided - * dynamically at runtime. - * - * Descriptor properties are or-ed or added together, e.g.: - * #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM | USB_PROP_LENGTH(18)) - * - * The following descriptors are defined: - * USB_CFG_DESCR_PROPS_DEVICE - * USB_CFG_DESCR_PROPS_CONFIGURATION - * USB_CFG_DESCR_PROPS_STRINGS - * USB_CFG_DESCR_PROPS_STRING_0 - * USB_CFG_DESCR_PROPS_STRING_VENDOR - * USB_CFG_DESCR_PROPS_STRING_PRODUCT - * USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER - * USB_CFG_DESCR_PROPS_HID - * USB_CFG_DESCR_PROPS_HID_REPORT - * USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver) - * - * Note about string descriptors: String descriptors are not just strings, they - * are Unicode strings prefixed with a 2 byte header. Example: - * int serialNumberDescriptor[] = { - * USB_STRING_DESCRIPTOR_HEADER(6), - * 'S', 'e', 'r', 'i', 'a', 'l' - * }; - */ - -#define USB_CFG_DESCR_PROPS_DEVICE 0 -#define USB_CFG_DESCR_PROPS_CONFIGURATION 0 -#define USB_CFG_DESCR_PROPS_STRINGS 0 -#define USB_CFG_DESCR_PROPS_STRING_0 0 -#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0 -#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0 -#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0 -#define USB_CFG_DESCR_PROPS_HID 0 -#define USB_CFG_DESCR_PROPS_HID_REPORT 0 -#define USB_CFG_DESCR_PROPS_UNKNOWN 0 - -#define usbMsgPtr_t unsigned short // scalar type yields shortest code - -/* ----------------------- Optional MCU Description ------------------------ */ - -/* The following configurations have working defaults in usbdrv.h. You - * usually don't need to set them explicitly. Only if you want to run - * the driver on a device which is not yet supported or with a compiler - * which is not fully supported (such as IAR C) or if you use a differnt - * interrupt than INT0, you may have to define some of these. - */ -#define USB_INTR_CFG PCMSK -#define USB_INTR_CFG_SET (1 << USB_CFG_DPLUS_BIT) -#define USB_INTR_CFG_CLR 0 -#define USB_INTR_ENABLE GIMSK -#define USB_INTR_ENABLE_BIT PCIE -#define USB_INTR_PENDING GIFR -#define USB_INTR_PENDING_BIT PCIF -#define USB_INTR_VECTOR PCINT0_vect - -#endif /* __usbconfig_h_included__ */ diff --git a/bootloaders/gemma/usbconfig.patch b/bootloaders/gemma/usbconfig.patch deleted file mode 100644 index 1abb158..0000000 --- a/bootloaders/gemma/usbconfig.patch +++ /dev/null @@ -1,24 +0,0 @@ -203c203 -< #define USB_CFG_VENDOR_ID 0x81, 0x17 /* = 0x16c0 = 5824 = voti.nl */ ---- -> #define USB_CFG_VENDOR_ID 0x41, 0x23 /* = 0x16c0 = 5824 = voti.nl */ -208c208 -< #define USB_CFG_DEVICE_ID 0x9F, 0x0C /* = 0x05dc = 1500 */ ---- -> #define USB_CFG_DEVICE_ID 0x9F, 0x0c /* = 0x05dc = 1500 */ -215c215 -< #define USB_CFG_DEVICE_VERSION 0x05, 0x01 ---- -> #define USB_CFG_DEVICE_VERSION 0x00, 0x01 -218,219c218,219 -< #define USB_CFG_VENDOR_NAME 'A','d','a','f','r','u','i','t' -< #define USB_CFG_VENDOR_NAME_LEN 8 ---- -> #define USB_CFG_VENDOR_NAME 'A','r','d','u','i','n','o','.','c','c' -> #define USB_CFG_VENDOR_NAME_LEN 10 -228,229c228,229 -< #define USB_CFG_DEVICE_NAME 'T','r','i','n','k','e','t' -< #define USB_CFG_DEVICE_NAME_LEN 7 ---- -> #define USB_CFG_DEVICE_NAME 'G','e','m','m','a' -> #define USB_CFG_DEVICE_NAME_LEN 5 diff --git a/bootloaders/lilypad/LilyPadBOOT_168.hex b/bootloaders/lilypad/LilyPadBOOT_168.hex deleted file mode 100644 index aea378e..0000000 --- a/bootloaders/lilypad/LilyPadBOOT_168.hex +++ /dev/null @@ -1,117 +0,0 @@ -:103800000C94341C0C944F1C0C944F1C0C944F1CA7 -:103810000C944F1C0C944F1C0C944F1C0C944F1C7C -:103820000C944F1C0C944F1C0C944F1C0C944F1C6C -:103830000C944F1C0C944F1C0C944F1C0C944F1C5C -:103840000C944F1C0C944F1C0C944F1C0C944F1C4C -:103850000C944F1C0C944F1C0C944F1C0C944F1C3C -:103860000C944F1C0C944F1C11241FBECFEFD4E0BE -:10387000DEBFCDBF11E0A0E0B1E0E8E1FFE302C0B0 -:1038800005900D92A230B107D9F712E0A2E0B1E0A5 -:1038900001C01D92AD30B107E1F70C94311D0C94BD -:1038A000001CCF93DF93CDB7DEB724970FB6F89403 -:1038B000DEBF0FBECDBF382F882309F433E010924E -:1038C0000A02332309F44BC020E02D9A19821A8290 -:1038D0001B821C8289819A81AB81BC8180549F416B -:1038E000A040B040A0F489819A81AB81BC8101964F -:1038F000A11DB11D89839A83AB83BC8389819A8181 -:10390000AB81BC8180549F41A040B04060F32D98B2 -:1039100019821A821B821C8289819A81AB81BC81A7 -:1039200080549F41A040B040A0F489819A81AB812E -:10393000BC810196A11DB11D89839A83AB83BC8391 -:1039400089819A81AB81BC8180549F41A040B04065 -:1039500060F32F5F231708F4B8CF20930A02249650 -:103960000FB6F894DEBF0FBECDBFDF91CF910895A3 -:10397000EF92FF920F931F93EE24FF248701809113 -:10398000C00087FD17C00894E11CF11C011D111D2A -:1039900081E0E81689E0F8068DE3080780E0180763 -:1039A00070F3E0910201F091030109958091C0004C -:1039B00087FFE9CF8091C600992787FD90951F91D9 -:1039C0000F91FF90EF900895982F8091C00085FF90 -:1039D000FCCF9093C60008950E94B81C803271F00D -:1039E000809104018F5F80930401853009F0089570 -:1039F000E0910201F09103010995089584E10E948C -:103A0000E41C80E10E94E41C08951F93182F0E947B -:103A1000B81C803269F0809104018F5F80930401AB -:103A2000853079F4E0910201F0910301099509C014 -:103A300084E10E94E41C812F0E94E41C80E10E942A -:103A4000E41C1F910895282F882351F090E0809165 -:103A5000C00087FFFCCF8091C6009F5F2917B9F790 -:103A60000895CFEFD4E0DEBFCDBF000089E18093A1 -:103A7000C4001092C50088E18093C10086E0809365 -:103A8000C2005098589A259A83E00E94511C0E94C7 -:103A9000B81C8033B1F18133B9F1803409F454C0DA -:103AA000813409F45AC0823409F469C0853409F4B8 -:103AB0006CC0803531F1813521F1823511F18535C8 -:103AC00009F4B2C0863509F4BAC0843609F463C07B -:103AD000843709F4BBC0853709F40EC1863709F471 -:103AE0004AC0809104018F5F80930401853079F68C -:103AF000E0910201F091030109950E94B81C803306 -:103B000051F60E94EC1CC3CF0E94B81C803249F7CA -:103B100084E10E94E41C81E40E94E41C86E50E948A -:103B2000E41C82E50E94E41C80E20E94E41C89E41B -:103B30000E94E41C83E50E94E41C80E50E94E41CD2 -:103B400080E10E94E41CA3CF0E94B81C8638C8F212 -:103B50000E94B81C0E94EC1C9ACF0E94B81C8038AE -:103B600009F4F7C0813809F4F8C0823809F4F9C0C3 -:103B7000883909F4BDC080E00E94051D88CF84E12A -:103B80000E94231D0E94EC1C82CF85E00E94231D11 -:103B90000E94EC1C7CCF0E94B81C809309020E94FA -:103BA000B81C8093080280910C028E7F80930C02D7 -:103BB0000E94B81C853409F4C6C080910802909117 -:103BC0000902892B09F0ADC00E94B81C803209F0AF -:103BD00088CF80910C0280FFC8C08091080290912C -:103BE00009020097D1F02091060130910701E8E029 -:103BF000F1E0AC014E0F5F1FF999FECF32BD21BD40 -:103C0000819180BDFA9AF99A2F5F3F4F4E175F0757 -:103C100099F7309307012093060184E10E94E41C88 -:103C200080E10E94E41C33CF0E94B81C80930601FF -:103C30000E94B81C809307010E94EC1C28CF84E0EE -:103C40000E94231D80E00E94051D21CF0E94B81C08 -:103C5000809309020E94B81C809308020E94B81C3D -:103C6000853409F4F4C080910C028E7F80930C029D -:103C70008091060190910701880F991F9093070189 -:103C8000809306010E94B81C803209F000CF84E1C5 -:103C90000E94E41C2091080230910902211531058F -:103CA00019F1C0E0D0E0E0910601F09107018091A8 -:103CB0000C0280FFC4C0F999FECFF2BDE1BDF89AB5 -:103CC00080B50E94E41CE0910601F0910701319655 -:103CD000F0930701E0930601209108023091090258 -:103CE0002196C217D30718F380E10E94E41CCFCEBF -:103CF00083E00E94051DCBCE0E94B81C803209F0E3 -:103D0000F0CE84E10E94E41C8EE10E94E41C84E970 -:103D10000E94E41C86E00E94E41C80E10E94E41CF6 -:103D2000B6CEC0E0D0E008E011E00E94B81CF80177 -:103D300081938F0121968091080290910902C81702 -:103D4000D90798F341CF80910C02816080930C02D7 -:103D500034CF82E00E94051D9ACE81E00E94051DAD -:103D600096CE80E10E94051D92CE8091070187FDCD -:103D700080C010920B028091060190910701880F7C -:103D8000991F90930701809306018091080280FF9C -:103D900009C080910802909109020196909309024E -:103DA00080930802F894F999FECF1127E09106015B -:103DB000F0910701C8E0D1E08091080290910902DA -:103DC000103091F40091570001700130D9F303E0F5 -:103DD00000935700E8950091570001700130D9F326 -:103DE00001E100935700E895099019900091570060 -:103DF00001700130D9F301E000935700E895139565 -:103E0000103498F011270091570001700130D9F358 -:103E100005E000935700E8950091570001700130CC -:103E2000D9F301E100935700E8953296029709F023 -:103E3000C7CF103011F00296E5CF1124EECE81FFEE -:103E40000CC03196F0930701E093060149CF8091B1 -:103E50000C02816080930C0215CF84910E94E41CB7 -:103E60002091080230910902E0910601F0910701CA -:103E7000E8CF81E080930B027ECF0F931F930E94C7 -:103E8000B81C182F0E94E41C0E94B81C082F0E9426 -:103E9000E41C11362CF0175501363CF0075508C0CC -:103EA0001033D4F310530136CCF700330CF0005329 -:103EB0001295107F100F812F992787FD90951F91E4 -:103EC0000F9108951F93282F992787FD9095807F44 -:103ED00090709595879595958795959587959595E6 -:103EE00087958A304CF0982F995A822F8F708A309C -:103EF0004CF0182F195A08C0982F905D822F8F70A0 -:103F00008A30BCF7182F105D892F0E94E41C812F86 -:083F10000E94E41C1F910895BA -:023F1800800027 -:0400000300003800C1 -:00000001FF diff --git a/bootloaders/lilypad/src/ATmegaBOOT.c b/bootloaders/lilypad/src/ATmegaBOOT.c deleted file mode 100644 index 415babe..0000000 --- a/bootloaders/lilypad/src/ATmegaBOOT.c +++ /dev/null @@ -1,977 +0,0 @@ -/**********************************************************/ -/* Serial Bootloader for Atmel megaAVR Controllers */ -/* */ -/* tested with ATmega8, ATmega128 and ATmega168 */ -/* should work with other mega's, see code for details */ -/* */ -/* ATmegaBOOT.c */ -/* */ -/* 20070626: hacked for Arduino Diecimila (which auto- */ -/* resets when a USB connection is made to it) */ -/* by D. Mellis */ -/* 20060802: hacked for Arduino by D. Cuartielles */ -/* based on a previous hack by D. Mellis */ -/* and D. Cuartielles */ -/* */ -/* Monitor and debug functions were added to the original */ -/* code by Dr. Erik Lins, chip45.com. (See below) */ -/* */ -/* Thanks to Karl Pitrich for fixing a bootloader pin */ -/* problem and more informative LED blinking! */ -/* */ -/* For the latest version see: */ -/* http://www.chip45.com/ */ -/* */ -/* ------------------------------------------------------ */ -/* */ -/* based on stk500boot.c */ -/* Copyright (c) 2003, Jason P. Kyle */ -/* All rights reserved. */ -/* see avr1.org for original file and information */ -/* */ -/* This program is free software; you can redistribute it */ -/* and/or modify it under the terms of the GNU General */ -/* Public License as published by the Free Software */ -/* Foundation; either version 2 of the License, or */ -/* (at your option) any later version. */ -/* */ -/* This program is distributed in the hope that it will */ -/* be useful, but WITHOUT ANY WARRANTY; without even the */ -/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ -/* PARTICULAR PURPOSE. See the GNU General Public */ -/* License for more details. */ -/* */ -/* You should have received a copy of the GNU General */ -/* Public License along with this program; if not, write */ -/* to the Free Software Foundation, Inc., */ -/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* */ -/* Licence can be viewed at */ -/* http://www.fsf.org/licenses/gpl.txt */ -/* */ -/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ -/* m8515,m8535. ATmega161 has a very small boot block so */ -/* isn't supported. */ -/* */ -/* Tested with m168 */ -/**********************************************************/ - - -/* some includes */ -#include -#include -#include -#include -#include - - -/* the current avr-libc eeprom functions do not support the ATmega168 */ -/* own eeprom write/read functions are used instead */ -#ifndef __AVR_ATmega168__ -#include -#endif - -/* Use the F_CPU defined in Makefile */ - -/* 20060803: hacked by DojoCorp */ -/* 20070626: hacked by David A. Mellis to decrease waiting time for auto-reset */ -/* set the waiting time for the bootloader */ -/* get this from the Makefile instead */ -/* #define MAX_TIME_COUNT (F_CPU>>4) */ - -/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ -#define MAX_ERROR_COUNT 5 - -/* set the UART baud rate */ -/* 20060803: hacked by DojoCorp */ -//#define BAUD_RATE 115200 -#define BAUD_RATE 19200 - - -/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ -/* never allow AVR Studio to do an update !!!! */ -#define HW_VER 0x02 -#define SW_MAJOR 0x01 -#define SW_MINOR 0x10 - - -/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ -/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ -/* BL0... means UART0, BL1... means UART1 */ -#ifdef __AVR_ATmega128__ -#define BL_DDR DDRF -#define BL_PORT PORTF -#define BL_PIN PINF -#define BL0 PINF7 -#define BL1 PINF6 -#else -/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ -#define BL_DDR DDRD -#define BL_PORT PORTD -#define BL_PIN PIND -#define BL PIND6 -#endif - - -/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ -/* if monitor functions are included, LED goes on after monitor was entered */ -#ifdef __AVR_ATmega128__ -/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128) */ -#define LED_DDR DDRB -#define LED_PORT PORTB -#define LED_PIN PINB -#define LED PINB7 -#else -/* Onboard LED is connected to pin PB2 (e.g. Crumb8, Crumb168) */ -#define LED_DDR DDRB -#define LED_PORT PORTB -#define LED_PIN PINB -/* 20060803: hacked by DojoCorp, LED pin is B5 in Arduino */ -/* #define LED PINB2 */ -#define LED PINB5 -#endif - - -/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ -#ifdef __AVR_ATmega128__ -#define MONITOR -#endif - - -/* define various device id's */ -/* manufacturer byte is always the same */ -#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( - -#if defined __AVR_ATmega128__ -#define SIG2 0x97 -#define SIG3 0x02 -#define PAGE_SIZE 0x80U //128 words - -#elif defined __AVR_ATmega64__ -#define SIG2 0x96 -#define SIG3 0x02 -#define PAGE_SIZE 0x80U //128 words - -#elif defined __AVR_ATmega32__ -#define SIG2 0x95 -#define SIG3 0x02 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega16__ -#define SIG2 0x94 -#define SIG3 0x03 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega8__ -#define SIG2 0x93 -#define SIG3 0x07 -#define PAGE_SIZE 0x20U //32 words - -#elif defined __AVR_ATmega88__ -#define SIG2 0x93 -#define SIG3 0x0a -#define PAGE_SIZE 0x20U //32 words - -#elif defined __AVR_ATmega168__ -#define SIG2 0x94 -#define SIG3 0x06 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega162__ -#define SIG2 0x94 -#define SIG3 0x04 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega163__ -#define SIG2 0x94 -#define SIG3 0x02 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega169__ -#define SIG2 0x94 -#define SIG3 0x05 -#define PAGE_SIZE 0x40U //64 words - -#elif defined __AVR_ATmega8515__ -#define SIG2 0x93 -#define SIG3 0x06 -#define PAGE_SIZE 0x20U //32 words - -#elif defined __AVR_ATmega8535__ -#define SIG2 0x93 -#define SIG3 0x08 -#define PAGE_SIZE 0x20U //32 words -#endif - - -/* function prototypes */ -void putch(char); -char getch(void); -void getNch(uint8_t); -void byte_response(uint8_t); -void nothing_response(void); -char gethex(void); -void puthex(char); -void flash_led(uint8_t); - -/* some variables */ -union address_union { - uint16_t word; - uint8_t byte[2]; -} address; - -union length_union { - uint16_t word; - uint8_t byte[2]; -} length; - -struct flags_struct { - unsigned eeprom : 1; - unsigned rampz : 1; -} flags; - -uint8_t buff[256]; -uint8_t address_high; - -uint8_t pagesz=0x80; - -uint8_t i; -uint8_t bootuart = 0; - -uint8_t error_count = 0; - -void (*app_start)(void) = 0x0000; - - -/* main program starts here */ -int main(void) -{ - uint8_t ch,ch2; - uint16_t w; - - asm volatile("nop\n\t"); - - /* set pin direction for bootloader pin and enable pullup */ - /* for ATmega128, two pins need to be initialized */ -#ifdef __AVR_ATmega128__ - BL_DDR &= ~_BV(BL0); - BL_DDR &= ~_BV(BL1); - BL_PORT |= _BV(BL0); - BL_PORT |= _BV(BL1); -#else - /* We run the bootloader regardless of the state of this pin. Thus, don't - put it in a different state than the other pins. --DAM, 070709 - BL_DDR &= ~_BV(BL); - BL_PORT |= _BV(BL); - */ -#endif - - -#ifdef __AVR_ATmega128__ - /* check which UART should be used for booting */ - if(bit_is_clear(BL_PIN, BL0)) { - bootuart = 1; - } - else if(bit_is_clear(BL_PIN, BL1)) { - bootuart = 2; - } -#endif - - /* check if flash is programmed already, if not start bootloader anyway */ - if(pgm_read_byte_near(0x0000) != 0xFF) { - -#ifdef __AVR_ATmega128__ - /* no UART was selected, start application */ - if(!bootuart) { - app_start(); - } -#else - /* check if bootloader pin is set low */ - /* we don't start this part neither for the m8, nor m168 */ - //if(bit_is_set(BL_PIN, BL)) { - // app_start(); - // } -#endif - } - -#ifdef __AVR_ATmega128__ - /* no bootuart was selected, default to uart 0 */ - if(!bootuart) { - bootuart = 1; - } -#endif - - - /* initialize UART(s) depending on CPU defined */ -#ifdef __AVR_ATmega128__ - if(bootuart == 1) { - UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSR0A = 0x00; - UCSR0C = 0x06; - UCSR0B = _BV(TXEN0)|_BV(RXEN0); - } - if(bootuart == 2) { - UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSR1A = 0x00; - UCSR1C = 0x06; - UCSR1B = _BV(TXEN1)|_BV(RXEN1); - } -#elif defined __AVR_ATmega163__ - UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSRA = 0x00; - UCSRB = _BV(TXEN)|_BV(RXEN); -#elif defined __AVR_ATmega168__ - UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); - UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; - UCSR0B = (1<>8; // set baud rate - UBRRL = (((F_CPU/BAUD_RATE)/16)-1); - UCSRB = (1<> 8; - UCSRA = 0x00; - UCSRC = 0x06; - UCSRB = _BV(TXEN)|_BV(RXEN); -#endif - - /* set LED pin as output */ - LED_DDR |= _BV(LED); - - - /* flash onboard LED to signal entering of bootloader */ -#ifdef __AVR_ATmega128__ - // 4x for UART0, 5x for UART1 - flash_led(NUM_LED_FLASHES + bootuart); -#else - flash_led(NUM_LED_FLASHES); -#endif - - /* 20050803: by DojoCorp, this is one of the parts provoking the - system to stop listening, cancelled from the original */ - //putch('\0'); - - - /* forever loop */ - for (;;) { - - /* get character from UART */ - ch = getch(); - - /* A bunch of if...else if... gives smaller code than switch...case ! */ - - /* Hello is anyone home ? */ - if(ch=='0') { - nothing_response(); - } - - - /* Request programmer ID */ - /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ - /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ - else if(ch=='1') { - if (getch() == ' ') { - putch(0x14); - putch('A'); - putch('V'); - putch('R'); - putch(' '); - putch('I'); - putch('S'); - putch('P'); - putch(0x10); - } else { - if (++error_count == MAX_ERROR_COUNT) - app_start(); - } - } - - - /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ - else if(ch=='@') { - ch2 = getch(); - if (ch2>0x85) getch(); - nothing_response(); - } - - - /* AVR ISP/STK500 board requests */ - else if(ch=='A') { - ch2 = getch(); - if(ch2==0x80) byte_response(HW_VER); // Hardware version - else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version - else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version - else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 - else byte_response(0x00); // Covers various unnecessary responses we don't care about - } - - - /* Device Parameters DON'T CARE, DEVICE IS FIXED */ - else if(ch=='B') { - getNch(20); - nothing_response(); - } - - - /* Parallel programming stuff DON'T CARE */ - else if(ch=='E') { - getNch(5); - nothing_response(); - } - - - /* Enter programming mode */ - else if(ch=='P') { - nothing_response(); - } - - - /* Leave programming mode */ - else if(ch=='Q') { - nothing_response(); - } - - - /* Erase device, don't care as we will erase one page at a time anyway. */ - else if(ch=='R') { - nothing_response(); - } - - - /* Set address, little endian. EEPROM in bytes, FLASH in words */ - /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ - /* This might explain why little endian was used here, big endian used everywhere else. */ - else if(ch=='U') { - address.byte[0] = getch(); - address.byte[1] = getch(); - nothing_response(); - } - - - /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ - else if(ch=='V') { - getNch(4); - byte_response(0x00); - } - - - /* Write memory, length is big endian and is in bytes */ - else if(ch=='d') { - length.byte[1] = getch(); - length.byte[0] = getch(); - flags.eeprom = 0; - if (getch() == 'E') flags.eeprom = 1; - for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME - else address_high = 0x00; -#ifdef __AVR_ATmega128__ - RAMPZ = address_high; -#endif - address.word = address.word << 1; //address * 2 -> byte location - /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ - if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes - cli(); //Disable interrupts, just to be sure - // HACKME: EEPE used to be EEWE - while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete - asm volatile( - "clr r17 \n\t" //page_word_count - "lds r30,address \n\t" //Address of FLASH location (in bytes) - "lds r31,address+1 \n\t" - "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM - "ldi r29,hi8(buff) \n\t" - "lds r24,length \n\t" //Length of data to be written (in bytes) - "lds r25,length+1 \n\t" - "length_loop: \n\t" //Main loop, repeat for number of words in block - "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page - "brne no_page_erase \n\t" - "wait_spm1: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm1 \n\t" - "ldi r16,0x03 \n\t" //Erase page pointed to by Z - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" -#endif - "wait_spm2: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm2 \n\t" - - "ldi r16,0x11 \n\t" //Re-enable RWW section - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" -#endif - "no_page_erase: \n\t" - "ld r0,Y+ \n\t" //Write 2 bytes into page buffer - "ld r1,Y+ \n\t" - - "wait_spm3: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm3 \n\t" - "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer - "sts %0,r16 \n\t" - "spm \n\t" - - "inc r17 \n\t" //page_word_count++ - "cpi r17,%1 \n\t" - "brlo same_page \n\t" //Still same page in FLASH - "write_page: \n\t" - "clr r17 \n\t" //New page, write current one first - "wait_spm4: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm4 \n\t" -#ifdef __AVR_ATmega163__ - "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write -#endif - "ldi r16,0x05 \n\t" //Write page pointed to by Z - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" - "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) -#endif - "wait_spm5: \n\t" - "lds r16,%0 \n\t" //Wait for previous spm to complete - "andi r16,1 \n\t" - "cpi r16,1 \n\t" - "breq wait_spm5 \n\t" - "ldi r16,0x11 \n\t" //Re-enable RWW section - "sts %0,r16 \n\t" - "spm \n\t" -#ifdef __AVR_ATmega163__ - ".word 0xFFFF \n\t" - "nop \n\t" -#endif - "same_page: \n\t" - "adiw r30,2 \n\t" //Next word in FLASH - "sbiw r24,2 \n\t" //length-2 - "breq final_write \n\t" //Finished - "rjmp length_loop \n\t" - "final_write: \n\t" - "cpi r17,0 \n\t" - "breq block_done \n\t" - "adiw r24,2 \n\t" //length+2, fool above check on length after short page write - "rjmp write_page \n\t" - "block_done: \n\t" - "clr __zero_reg__ \n\t" //restore zero register -#if defined __AVR_ATmega168__ - : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" -#else - : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" -#endif - ); - /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ - /* exit the bootloader without a power cycle anyhow */ - } - putch(0x14); - putch(0x10); - } else { - if (++error_count == MAX_ERROR_COUNT) - app_start(); - } - } - - - /* Read memory block mode, length is big endian. */ - else if(ch=='t') { - length.byte[1] = getch(); - length.byte[0] = getch(); -#if defined __AVR_ATmega128__ - if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME - else flags.rampz = 0; -#endif - if (getch() == 'E') flags.eeprom = 1; - else { - flags.eeprom = 0; - address.word = address.word << 1; // address * 2 -> byte location - } - if (getch() == ' ') { // Command terminator - putch(0x14); - for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay - if (flags.eeprom) { // Byte access EEPROM read -#ifdef __AVR_ATmega168__ - while(EECR & (1<= 'a') { - ah = ah - 'a' + 0x0a; - } else if(ah >= '0') { - ah -= '0'; - } - if(al >= 'a') { - al = al - 'a' + 0x0a; - } else if(al >= '0') { - al -= '0'; - } - return (ah << 4) + al; -} - - -void puthex(char ch) { - char ah,al; - - ah = (ch & 0xf0) >> 4; - if(ah >= 0x0a) { - ah = ah - 0x0a + 'a'; - } else { - ah += '0'; - } - al = (ch & 0x0f); - if(al >= 0x0a) { - al = al - 0x0a + 'a'; - } else { - al += '0'; - } - putch(ah); - putch(al); -} - - -void putch(char ch) -{ -#ifdef __AVR_ATmega128__ - if(bootuart == 1) { - while (!(UCSR0A & _BV(UDRE0))); - UDR0 = ch; - } - else if (bootuart == 2) { - while (!(UCSR1A & _BV(UDRE1))); - UDR1 = ch; - } -#elif defined __AVR_ATmega168__ - while (!(UCSR0A & _BV(UDRE0))); - UDR0 = ch; -#else - /* m8,16,32,169,8515,8535,163 */ - while (!(UCSRA & _BV(UDRE))); - UDR = ch; -#endif -} - - -char getch(void) -{ -#ifdef __AVR_ATmega128__ - if(bootuart == 1) { - while(!(UCSR0A & _BV(RXC0))); - return UDR0; - } - else if(bootuart == 2) { - while(!(UCSR1A & _BV(RXC1))); - return UDR1; - } - return 0; -#elif defined __AVR_ATmega168__ - uint32_t count = 0; - while(!(UCSR0A & _BV(RXC0))){ - /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ - /* HACKME:: here is a good place to count times*/ - count++; - if (count > MAX_TIME_COUNT) - app_start(); - } - return UDR0; -#else - /* m8,16,32,169,8515,8535,163 */ - uint32_t count = 0; - while(!(UCSRA & _BV(RXC))){ - /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ - /* HACKME:: here is a good place to count times*/ - count++; - if (count > MAX_TIME_COUNT) - app_start(); - } - return UDR; -#endif -} - - -void getNch(uint8_t count) -{ - uint8_t i; - for(i=0;i $@ - -%.srec: %.elf - $(OBJCOPY) -j .text -j .data -O srec $< $@ - -%.bin: %.elf - $(OBJCOPY) -j .text -j .data -O binary $< $@ - -clean: - rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex - -install: - avrdude -p m168 -c stk500v2 -P /dev/cu.USA19H1b1P1.1 -e -u -U lock:w:0x3f:m -U efuse:w:0x00:m -U hfuse:w:0xdd:m -U lfuse:w:0xe2:m - avrdude -p m168 -c stk500v2 -P /dev/cu.USA19H1b1P1.1 -e -u -U flash:w:ATmegaBOOT_168.hex -U lock:w:0x0f:m diff --git a/bootloaders/optiboot/Makefile b/bootloaders/optiboot/Makefile deleted file mode 100644 index f8d137d..0000000 --- a/bootloaders/optiboot/Makefile +++ /dev/null @@ -1,450 +0,0 @@ -# Makefile for ATmegaBOOT -# E.Lins, 18.7.2005 -# -# Instructions -# -# To make bootloader .hex file: -# make diecimila -# make lilypad -# make ng -# etc... -# -# To burn bootloader .hex file: -# make diecimila_isp -# make lilypad_isp -# make ng_isp -# etc... - -# program name should not be changed... -PROGRAM = optiboot - -# The default behavior is to build using tools that are in the users -# current path variables, but we can also build using an installed -# Arduino user IDE setup, or the Arduino source tree. -# Uncomment this next lines to build within the arduino environment, -# using the arduino-included avrgcc toolset (mac and pc) -# ENV ?= arduino -# ENV ?= arduinodev -# OS ?= macosx -# OS ?= windows - - -# enter the parameters for the avrdude isp tool -ISPTOOL = stk500v2 -ISPPORT = usb -ISPSPEED = -b 115200 - -MCU_TARGET = atmega168 -LDSECTIONS = -Wl,--section-start=.text=0x3e00 -Wl,--section-start=.version=0x3ffe - -# Build environments -# Start of some ugly makefile-isms to allow optiboot to be built -# in several different environments. See the README.TXT file for -# details. - -# default -fixpath = $(1) - -ifeq ($(ENV), arduino) -# For Arduino, we assume that we're connected to the optiboot directory -# included with the arduino distribution, which means that the full set -# of avr-tools are "right up there" in standard places. -TOOLROOT = ../../../tools -GCCROOT = $(TOOLROOT)/avr/bin/ -AVRDUDE_CONF = -C$(TOOLROOT)/avr/etc/avrdude.conf - -ifeq ($(OS), windows) -# On windows, SOME of the tool paths will need to have backslashes instead -# of forward slashes (because they use windows cmd.exe for execution instead -# of a unix/mingw shell?) We also have to ensure that a consistent shell -# is used even if a unix shell is installed (ie as part of WINAVR) -fixpath = $(subst /,\,$1) -SHELL = cmd.exe -endif - -else ifeq ($(ENV), arduinodev) -# Arduino IDE source code environment. Use the unpacked compilers created -# by the build (you'll need to do "ant build" first.) -ifeq ($(OS), macosx) -TOOLROOT = ../../../../build/macosx/work/Arduino.app/Contents/Resources/Java/hardware/tools -endif -ifeq ($(OS), windows) -TOOLROOT = ../../../../build/windows/work/hardware/tools -endif - -GCCROOT = $(TOOLROOT)/avr/bin/ -AVRDUDE_CONF = -C$(TOOLROOT)/avr/etc/avrdude.conf - -else -GCCROOT = -AVRDUDE_CONF = -endif -# -# End of build environment code. - - -# the efuse should really be 0xf8; since, however, only the lower -# three bits of that byte are used on the atmega168, avrdude gets -# confused if you specify 1's for the higher bits, see: -# http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/ -# -# similarly, the lock bits should be 0xff instead of 0x3f (to -# unlock the bootloader section) and 0xcf instead of 0x2f (to -# lock it), but since the high two bits of the lock byte are -# unused, avrdude would get confused. - -ISPFUSES = $(GCCROOT)avrdude $(AVRDUDE_CONF) -c $(ISPTOOL) \ - -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ - -e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m \ - -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m -ISPFLASH = $(GCCROOT)avrdude $(AVRDUDE_CONF) -c $(ISPTOOL) \ - -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ - -U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x2f:m - -STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" -STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \ --lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt -STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt - -OBJ = $(PROGRAM).o -OPTIMIZE = -Os -fno-inline-small-functions -fno-split-wide-types -mshort-calls - -DEFS = -LIBS = - -CC = $(GCCROOT)avr-gcc - -# Override is only needed by avr-lib build system. - -override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) -override LDFLAGS = $(LDSECTIONS) -Wl,--relax -Wl,--gc-sections -nostartfiles -nostdlib - -OBJCOPY = $(GCCROOT)avr-objcopy -OBJDUMP = $(call fixpath,$(GCCROOT)avr-objdump) - -SIZE = $(GCCROOT)avr-size - -# Test platforms -# Virtual boot block test -virboot328: TARGET = atmega328 -virboot328: MCU_TARGET = atmega328p -virboot328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DVIRTUAL_BOOT' -virboot328: AVR_FREQ = 16000000L -virboot328: LDSECTIONS = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe -virboot328: $(PROGRAM)_atmega328.hex -virboot328: $(PROGRAM)_atmega328.lst - -# 20MHz clocked platforms -# -# These are capable of 230400 baud, or 115200 baud on PC (Arduino Avrdude issue) -# - -pro20: TARGET = pro_20mhz -pro20: MCU_TARGET = atmega168 -pro20: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -pro20: AVR_FREQ = 20000000L -pro20: $(PROGRAM)_pro_20mhz.hex -pro20: $(PROGRAM)_pro_20mhz.lst - -pro20_isp: pro20 -pro20_isp: TARGET = pro_20mhz -# 2.7V brownout -pro20_isp: HFUSE = DD -# Full swing xtal (20MHz) 258CK/14CK+4.1ms -pro20_isp: LFUSE = C6 -# 512 byte boot -pro20_isp: EFUSE = 04 -pro20_isp: isp - -# 16MHz clocked platforms -# -# These are capable of 230400 baud, or 115200 baud on PC (Arduino Avrdude issue) -# - -pro16: TARGET = pro_16MHz -pro16: MCU_TARGET = atmega168 -pro16: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -pro16: AVR_FREQ = 16000000L -pro16: $(PROGRAM)_pro_16MHz.hex -pro16: $(PROGRAM)_pro_16MHz.lst - -pro16_isp: pro16 -pro16_isp: TARGET = pro_16MHz -# 2.7V brownout -pro16_isp: HFUSE = DD -# Full swing xtal (20MHz) 258CK/14CK+4.1ms -pro16_isp: LFUSE = C6 -# 512 byte boot -pro16_isp: EFUSE = 04 -pro16_isp: isp - -# Diecimila, Duemilanove with m168, and NG use identical bootloaders -# Call it "atmega168" for generality and clarity, keep "diecimila" for -# backward compatibility of makefile -# -atmega168: TARGET = atmega168 -atmega168: MCU_TARGET = atmega168 -atmega168: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -atmega168: AVR_FREQ = 16000000L -atmega168: $(PROGRAM)_atmega168.hex -atmega168: $(PROGRAM)_atmega168.lst - -atmega168_isp: atmega168 -atmega168_isp: TARGET = atmega168 -# 2.7V brownout -atmega168_isp: HFUSE = DD -# Low power xtal (16MHz) 16KCK/14CK+65ms -atmega168_isp: LFUSE = FF -# 512 byte boot -atmega168_isp: EFUSE = 04 -atmega168_isp: isp - -diecimila: TARGET = diecimila -diecimila: MCU_TARGET = atmega168 -diecimila: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -diecimila: AVR_FREQ = 16000000L -diecimila: $(PROGRAM)_diecimila.hex -diecimila: $(PROGRAM)_diecimila.lst - -diecimila_isp: diecimila -diecimila_isp: TARGET = diecimila -# 2.7V brownout -diecimila_isp: HFUSE = DD -# Low power xtal (16MHz) 16KCK/14CK+65ms -diecimila_isp: LFUSE = FF -# 512 byte boot -diecimila_isp: EFUSE = 04 -diecimila_isp: isp - -atmega328: TARGET = atmega328 -atmega328: MCU_TARGET = atmega328p -atmega328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -atmega328: AVR_FREQ = 16000000L -atmega328: LDSECTIONS = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe -atmega328: $(PROGRAM)_atmega328.hex -atmega328: $(PROGRAM)_atmega328.lst - -atmega328_isp: atmega328 -atmega328_isp: TARGET = atmega328 -atmega328_isp: MCU_TARGET = atmega328p -# 512 byte boot, SPIEN -atmega328_isp: HFUSE = DE -# Low power xtal (16MHz) 16KCK/14CK+65ms -atmega328_isp: LFUSE = FF -# 2.7V brownout -atmega328_isp: EFUSE = 05 -atmega328_isp: isp - -# Sanguino has a minimum boot size of 1024 bytes, so enable extra functions -# -sanguino: TARGET = atmega644p -sanguino: MCU_TARGET = atmega644p -sanguino: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DBIGBOOT' -sanguino: AVR_FREQ = 16000000L -sanguino: LDSECTIONS = -Wl,--section-start=.text=0xfc00 -sanguino: $(PROGRAM)_atmega644p.hex -sanguino: $(PROGRAM)_atmega644p.lst - -sanguino_isp: sanguino -sanguino_isp: TARGET = atmega644p -sanguino_isp: MCU_TARGET = atmega644p -# 1024 byte boot -sanguino_isp: HFUSE = DE -# Low power xtal (16MHz) 16KCK/14CK+65ms -sanguino_isp: LFUSE = FF -# 2.7V brownout -sanguino_isp: EFUSE = 05 -sanguino_isp: isp - -# Mega has a minimum boot size of 1024 bytes, so enable extra functions -#mega: TARGET = atmega1280 -mega: MCU_TARGET = atmega1280 -mega: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DBIGBOOT' -mega: AVR_FREQ = 16000000L -mega: LDSECTIONS = -Wl,--section-start=.text=0x1fc00 -mega: $(PROGRAM)_atmega1280.hex -mega: $(PROGRAM)_atmega1280.lst - -mega_isp: mega -mega_isp: TARGET = atmega1280 -mega_isp: MCU_TARGET = atmega1280 -# 1024 byte boot -mega_isp: HFUSE = DE -# Low power xtal (16MHz) 16KCK/14CK+65ms -mega_isp: LFUSE = FF -# 2.7V brownout -mega_isp: EFUSE = 05 -mega_isp: isp - -# ATmega8 -# -atmega8: TARGET = atmega8 -atmega8: MCU_TARGET = atmega8 -atmega8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -atmega8: AVR_FREQ = 16000000L -atmega8: LDSECTIONS = -Wl,--section-start=.text=0x1e00 -Wl,--section-start=.version=0x1ffe -atmega8: $(PROGRAM)_atmega8.hex -atmega8: $(PROGRAM)_atmega8.lst - -atmega8_isp: atmega8 -atmega8_isp: TARGET = atmega8 -atmega8_isp: MCU_TARGET = atmega8 -# SPIEN, CKOPT, Bootsize=512B -atmega8_isp: HFUSE = CC -# 2.7V brownout, Low power xtal (16MHz) 16KCK/14CK+65ms -atmega8_isp: LFUSE = BF -atmega8_isp: isp - -# ATmega88 -# -atmega88: TARGET = atmega88 -atmega88: MCU_TARGET = atmega88 -atmega88: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -atmega88: AVR_FREQ = 16000000L -atmega88: LDSECTIONS = -Wl,--section-start=.text=0x1e00 -Wl,--section-start=.version=0x1ffe -atmega88: $(PROGRAM)_atmega88.hex -atmega88: $(PROGRAM)_atmega88.lst - -atmega88_isp: atmega88 -atmega88_isp: TARGET = atmega88 -atmega88_isp: MCU_TARGET = atmega88 -# 2.7V brownout -atmega88_isp: HFUSE = DD -# Low power xtal (16MHz) 16KCK/14CK+65ms -atemga88_isp: LFUSE = FF -# 512 byte boot -atmega88_isp: EFUSE = 04 -atmega88_isp: isp - - -# 8MHz clocked platforms -# -# These are capable of 115200 baud -# - -lilypad: TARGET = lilypad -lilypad: MCU_TARGET = atmega168 -lilypad: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -lilypad: AVR_FREQ = 8000000L -lilypad: $(PROGRAM)_lilypad.hex -lilypad: $(PROGRAM)_lilypad.lst - -lilypad_isp: lilypad -lilypad_isp: TARGET = lilypad -# 2.7V brownout -lilypad_isp: HFUSE = DD -# Internal 8MHz osc (8MHz) Slow rising power -lilypad_isp: LFUSE = E2 -# 512 byte boot -lilypad_isp: EFUSE = 04 -lilypad_isp: isp - -lilypad_resonator: TARGET = lilypad_resonator -lilypad_resonator: MCU_TARGET = atmega168 -lilypad_resonator: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -lilypad_resonator: AVR_FREQ = 8000000L -lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex -lilypad_resonator: $(PROGRAM)_lilypad_resonator.lst - -lilypad_resonator_isp: lilypad_resonator -lilypad_resonator_isp: TARGET = lilypad_resonator -# 2.7V brownout -lilypad_resonator_isp: HFUSE = DD -# Full swing xtal (20MHz) 258CK/14CK+4.1ms -lilypad_resonator_isp: LFUSE = C6 -# 512 byte boot -lilypad_resonator_isp: EFUSE = 04 -lilypad_resonator_isp: isp - -pro8: TARGET = pro_8MHz -pro8: MCU_TARGET = atmega168 -pro8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -pro8: AVR_FREQ = 8000000L -pro8: $(PROGRAM)_pro_8MHz.hex -pro8: $(PROGRAM)_pro_8MHz.lst - -pro8_isp: pro8 -pro8_isp: TARGET = pro_8MHz -# 2.7V brownout -pro8_isp: HFUSE = DD -# Full swing xtal (20MHz) 258CK/14CK+4.1ms -pro8_isp: LFUSE = C6 -# 512 byte boot -pro8_isp: EFUSE = 04 -pro8_isp: isp - -atmega328_pro8: TARGET = atmega328_pro_8MHz -atmega328_pro8: MCU_TARGET = atmega328p -atmega328_pro8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -atmega328_pro8: AVR_FREQ = 8000000L -atmega328_pro8: LDSECTIONS = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe -atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex -atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.lst - -atmega328_pro8_isp: atmega328_pro8 -atmega328_pro8_isp: TARGET = atmega328_pro_8MHz -atmega328_pro8_isp: MCU_TARGET = atmega328p -# 512 byte boot, SPIEN -atmega328_pro8_isp: HFUSE = DE -# Low power xtal (16MHz) 16KCK/14CK+65ms -atmega328_pro8_isp: LFUSE = FF -# 2.7V brownout -atmega328_pro8_isp: EFUSE = 05 -atmega328_pro8_isp: isp - -# 1MHz clocked platforms -# -# These are capable of 9600 baud -# - -luminet: TARGET = luminet -luminet: MCU_TARGET = attiny84 -luminet: CFLAGS += '-DLED_START_FLASHES=3' '-DSOFT_UART' '-DBAUD_RATE=9600' -luminet: CFLAGS += '-DVIRTUAL_BOOT_PARTITION' -luminet: AVR_FREQ = 1000000L -luminet: LDSECTIONS = -Wl,--section-start=.text=0x1d00 -Wl,--section-start=.version=0x1efe -luminet: $(PROGRAM)_luminet.hex -luminet: $(PROGRAM)_luminet.lst - -luminet_isp: luminet -luminet_isp: TARGET = luminet -luminet_isp: MCU_TARGET = attiny84 -# Brownout disabled -luminet_isp: HFUSE = DF -# 1MHz internal oscillator, slowly rising power -luminet_isp: LFUSE = 62 -# Self-programming enable -luminet_isp: EFUSE = FE -luminet_isp: isp - -# -# Generic build instructions -# -# - -isp: $(TARGET) - $(ISPFUSES) - $(ISPFLASH) - -isp-stk500: $(PROGRAM)_$(TARGET).hex - $(STK500-1) - $(STK500-2) - -%.elf: $(OBJ) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) - $(SIZE) $@ - -clean: - rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex - -%.lst: %.elf - $(OBJDUMP) -h -S $< > $@ - -%.hex: %.elf - $(OBJCOPY) -j .text -j .data -j .version --set-section-flags .version=alloc,load -O ihex $< $@ - -%.srec: %.elf - $(OBJCOPY) -j .text -j .data -j .version --set-section-flags .version=alloc,load -O srec $< $@ - -%.bin: %.elf - $(OBJCOPY) -j .text -j .data -j .version --set-section-flags .version=alloc,load -O binary $< $@ diff --git a/bootloaders/optiboot/README.TXT b/bootloaders/optiboot/README.TXT deleted file mode 100644 index cd79cd9..0000000 --- a/bootloaders/optiboot/README.TXT +++ /dev/null @@ -1,81 +0,0 @@ -This directory contains the Optiboot small bootloader for AVR -microcontrollers, somewhat modified specifically for the Arduino -environment. - -Optiboot is more fully described here: http://code.google.com/p/optiboot/ -and is the work of Peter Knight (aka Cathedrow), building on work of Jason P -Kyle, Spiff, and Ladyada. Arduino-specific modification are by Bill -Westfield (aka WestfW) - -Arduino-specific issues are tracked as part of the Arduino project -at http://code.google.com/p/arduino - - ------------------------------------------------------------- -Building optiboot for Arduino. - -Production builds of optiboot for Arduino are done on a Mac in "unix mode" -using CrossPack-AVR-20100115. CrossPack tracks WINAVR (for windows), which -is just a package of avr-gcc and related utilities, so similar builds should -work on Windows or Linux systems. - -One of the Arduino-specific changes is modifications to the makefile to -allow building optiboot using only the tools installed as part of the -Arduino environment, or the Arduino source development tree. All three -build procedures should yield identical binaries (.hex files) (although -this may change if compiler versions drift apart between CrossPack and -the Arduino IDE.) - - -Building Optiboot in the Arduino IDE Install. - -Work in the .../hardware/arduino/bootloaders/optiboot/ and use the -"omake " command, which just generates a command that uses -the arduino-included "make" utility with a command like: - make OS=windows ENV=arduino -or make OS=macosx ENV=arduino -On windows, this assumes you're using the windows command shell. If -you're using a cygwin or mingw shell, or have one of those in your -path, the build will probably break due to slash vs backslash issues. -On a Mac, if you have the developer tools installed, you can use the -Apple-supplied version of make. -The makefile uses relative paths ("../../../tools/" and such) to find -the programs it needs, so you need to work in the existing optiboot -directory (or something created at the same "level") for it to work. - - -Building Optiboot in the Arduino Source Development Install. - -In this case, there is no special shell script, and you're assumed to -have "make" installed somewhere in your path. -Build the Arduino source ("ant build") to unpack the tools into the -expected directory. -Work in Arduino/hardware/arduino/bootloaders/optiboot and use - make OS=windows ENV=arduinodev -or make OS=macosx ENV=arduinodev - - -Programming Chips Using the _isp Targets - -The CPU targets have corresponding ISP targets that will actuall -program the bootloader into a chip. "atmega328_isp" for the atmega328, -for example. These will set the fuses and lock bits as appropriate as -well as uploading the bootloader code. - -The makefiles default to using a USB programmer, but you can use -a serial programmer like ArduinoISP by changing the appropriate -variables when you invoke make: - - make ISPTOOL=stk500v1 ISPPORT=/dev/tty.usbserial-A20e1eAN \ - ISPSPEED=-b19200 atmega328_isp - -The "atmega8_isp" target does not currently work, because the mega8 -doesn't have the "extended" fuse that the generic ISP target wants to -pass on to avrdude. You'll need to run avrdude manually. - - -Standard Targets - -I've reduced the pre-built and source-version-controlled targets -(.hex and .lst files included in the git repository) to just the -three basic 16MHz targets: atmega8, atmega16, atmega328. diff --git a/bootloaders/optiboot/boot.h b/bootloaders/optiboot/boot.h deleted file mode 100644 index 71170a5..0000000 --- a/bootloaders/optiboot/boot.h +++ /dev/null @@ -1,846 +0,0 @@ -/* Modified to use out for SPM access -** Peter Knight, Optiboot project http://optiboot.googlecode.com -** -** Todo: Tidy up -** -** "_short" routines execute 1 cycle faster and use 1 less word of flash -** by using "out" instruction instead of "sts". -** -** Additional elpm variants that trust the value of RAMPZ -*/ - -/* Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007 Eric B. Weddington - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * 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. - * Neither the name of the copyright holders nor the names of - 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. */ - -#ifndef _AVR_BOOT_H_ -#define _AVR_BOOT_H_ 1 - -/** \file */ -/** \defgroup avr_boot : Bootloader Support Utilities - \code - #include - #include - \endcode - - The macros in this module provide a C language interface to the - bootloader support functionality of certain AVR processors. These - macros are designed to work with all sizes of flash memory. - - Global interrupts are not automatically disabled for these macros. It - is left up to the programmer to do this. See the code example below. - Also see the processor datasheet for caveats on having global interrupts - enabled during writing of the Flash. - - \note Not all AVR processors provide bootloader support. See your - processor datasheet to see if it provides bootloader support. - - \todo From email with Marek: On smaller devices (all except ATmega64/128), - __SPM_REG is in the I/O space, accessible with the shorter "in" and "out" - instructions - since the boot loader has a limited size, this could be an - important optimization. - - \par API Usage Example - The following code shows typical usage of the boot API. - - \code - #include - #include - #include - - void boot_program_page (uint32_t page, uint8_t *buf) - { - uint16_t i; - uint8_t sreg; - - // Disable interrupts. - - sreg = SREG; - cli(); - - eeprom_busy_wait (); - - boot_page_erase (page); - boot_spm_busy_wait (); // Wait until the memory is erased. - - for (i=0; i -#include -#include -#include - -/* Check for SPM Control Register in processor. */ -#if defined (SPMCSR) -# define __SPM_REG SPMCSR -#elif defined (SPMCR) -# define __SPM_REG SPMCR -#else -# error AVR processor does not provide bootloader support! -#endif - - -/* Check for SPM Enable bit. */ -#if defined(SPMEN) -# define __SPM_ENABLE SPMEN -#elif defined(SELFPRGEN) -# define __SPM_ENABLE SELFPRGEN -#else -# error Cannot find SPM Enable bit definition! -#endif - -/** \ingroup avr_boot - \def BOOTLOADER_SECTION - - Used to declare a function or variable to be placed into a - new section called .bootloader. This section and its contents - can then be relocated to any address (such as the bootloader - NRWW area) at link-time. */ - -#define BOOTLOADER_SECTION __attribute__ ((section (".bootloader"))) - -/* Create common bit definitions. */ -#ifdef ASB -#define __COMMON_ASB ASB -#else -#define __COMMON_ASB RWWSB -#endif - -#ifdef ASRE -#define __COMMON_ASRE ASRE -#else -#define __COMMON_ASRE RWWSRE -#endif - -/* Define the bit positions of the Boot Lock Bits. */ - -#define BLB12 5 -#define BLB11 4 -#define BLB02 3 -#define BLB01 2 - -/** \ingroup avr_boot - \def boot_spm_interrupt_enable() - Enable the SPM interrupt. */ - -#define boot_spm_interrupt_enable() (__SPM_REG |= (uint8_t)_BV(SPMIE)) - -/** \ingroup avr_boot - \def boot_spm_interrupt_disable() - Disable the SPM interrupt. */ - -#define boot_spm_interrupt_disable() (__SPM_REG &= (uint8_t)~_BV(SPMIE)) - -/** \ingroup avr_boot - \def boot_is_spm_interrupt() - Check if the SPM interrupt is enabled. */ - -#define boot_is_spm_interrupt() (__SPM_REG & (uint8_t)_BV(SPMIE)) - -/** \ingroup avr_boot - \def boot_rww_busy() - Check if the RWW section is busy. */ - -#define boot_rww_busy() (__SPM_REG & (uint8_t)_BV(__COMMON_ASB)) - -/** \ingroup avr_boot - \def boot_spm_busy() - Check if the SPM instruction is busy. */ - -#define boot_spm_busy() (__SPM_REG & (uint8_t)_BV(__SPM_ENABLE)) - -/** \ingroup avr_boot - \def boot_spm_busy_wait() - Wait while the SPM instruction is busy. */ - -#define boot_spm_busy_wait() do{}while(boot_spm_busy()) - -#define __BOOT_PAGE_ERASE (_BV(__SPM_ENABLE) | _BV(PGERS)) -#define __BOOT_PAGE_WRITE (_BV(__SPM_ENABLE) | _BV(PGWRT)) -#define __BOOT_PAGE_FILL _BV(__SPM_ENABLE) -#define __BOOT_RWW_ENABLE (_BV(__SPM_ENABLE) | _BV(__COMMON_ASRE)) -#define __BOOT_LOCK_BITS_SET (_BV(__SPM_ENABLE) | _BV(BLBSET)) - -#define __boot_page_fill_short(address, data) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "movw r0, %3\n\t" \ - "out %0, %1\n\t" \ - "spm\n\t" \ - "clr r1\n\t" \ - : \ - : "i" (_SFR_IO_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_PAGE_FILL), \ - "z" ((uint16_t)address), \ - "r" ((uint16_t)data) \ - : "r0" \ - ); \ -})) - -#define __boot_page_fill_normal(address, data) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "movw r0, %3\n\t" \ - "sts %0, %1\n\t" \ - "spm\n\t" \ - "clr r1\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_PAGE_FILL), \ - "z" ((uint16_t)address), \ - "r" ((uint16_t)data) \ - : "r0" \ - ); \ -})) - -#define __boot_page_fill_alternate(address, data)\ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "movw r0, %3\n\t" \ - "sts %0, %1\n\t" \ - "spm\n\t" \ - ".word 0xffff\n\t" \ - "nop\n\t" \ - "clr r1\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_PAGE_FILL), \ - "z" ((uint16_t)address), \ - "r" ((uint16_t)data) \ - : "r0" \ - ); \ -})) - -#define __boot_page_fill_extended(address, data) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "movw r0, %4\n\t" \ - "movw r30, %A3\n\t" \ - "sts %1, %C3\n\t" \ - "sts %0, %2\n\t" \ - "spm\n\t" \ - "clr r1\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "i" (_SFR_MEM_ADDR(RAMPZ)), \ - "r" ((uint8_t)__BOOT_PAGE_FILL), \ - "r" ((uint32_t)address), \ - "r" ((uint16_t)data) \ - : "r0", "r30", "r31" \ - ); \ -})) - -#define __boot_page_fill_extended_short(address, data) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "movw r0, %4\n\t" \ - "movw r30, %A3\n\t" \ - "out %1, %C3\n\t" \ - "out %0, %2\n\t" \ - "spm\n\t" \ - "clr r1\n\t" \ - : \ - : "i" (_SFR_IO_ADDR(__SPM_REG)), \ - "i" (_SFR_IO_ADDR(RAMPZ)), \ - "r" ((uint8_t)__BOOT_PAGE_FILL), \ - "r" ((uint32_t)address), \ - "r" ((uint16_t)data) \ - : "r0", "r30", "r31" \ - ); \ -})) - -#define __boot_page_erase_short(address) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "out %0, %1\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_IO_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_PAGE_ERASE), \ - "z" ((uint16_t)address) \ - ); \ -})) - - -#define __boot_page_erase_normal(address) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "sts %0, %1\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_PAGE_ERASE), \ - "z" ((uint16_t)address) \ - ); \ -})) - -#define __boot_page_erase_alternate(address) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "sts %0, %1\n\t" \ - "spm\n\t" \ - ".word 0xffff\n\t" \ - "nop\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_PAGE_ERASE), \ - "z" ((uint16_t)address) \ - ); \ -})) - -#define __boot_page_erase_extended(address) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "movw r30, %A3\n\t" \ - "sts %1, %C3\n\t" \ - "sts %0, %2\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "i" (_SFR_MEM_ADDR(RAMPZ)), \ - "r" ((uint8_t)__BOOT_PAGE_ERASE), \ - "r" ((uint32_t)address) \ - : "r30", "r31" \ - ); \ -})) -#define __boot_page_erase_extended_short(address) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "movw r30, %A3\n\t" \ - "out %1, %C3\n\t" \ - "out %0, %2\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_IO_ADDR(__SPM_REG)), \ - "i" (_SFR_IO_ADDR(RAMPZ)), \ - "r" ((uint8_t)__BOOT_PAGE_ERASE), \ - "r" ((uint32_t)address) \ - : "r30", "r31" \ - ); \ -})) - -#define __boot_page_write_short(address) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "out %0, %1\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_IO_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_PAGE_WRITE), \ - "z" ((uint16_t)address) \ - ); \ -})) - -#define __boot_page_write_normal(address) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "sts %0, %1\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_PAGE_WRITE), \ - "z" ((uint16_t)address) \ - ); \ -})) - -#define __boot_page_write_alternate(address) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "sts %0, %1\n\t" \ - "spm\n\t" \ - ".word 0xffff\n\t" \ - "nop\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_PAGE_WRITE), \ - "z" ((uint16_t)address) \ - ); \ -})) - -#define __boot_page_write_extended(address) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "movw r30, %A3\n\t" \ - "sts %1, %C3\n\t" \ - "sts %0, %2\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "i" (_SFR_MEM_ADDR(RAMPZ)), \ - "r" ((uint8_t)__BOOT_PAGE_WRITE), \ - "r" ((uint32_t)address) \ - : "r30", "r31" \ - ); \ -})) -#define __boot_page_write_extended_short(address) \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "movw r30, %A3\n\t" \ - "out %1, %C3\n\t" \ - "out %0, %2\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_IO_ADDR(__SPM_REG)), \ - "i" (_SFR_IO_ADDR(RAMPZ)), \ - "r" ((uint8_t)__BOOT_PAGE_WRITE), \ - "r" ((uint32_t)address) \ - : "r30", "r31" \ - ); \ -})) - -#define __boot_rww_enable_short() \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "out %0, %1\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_IO_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_RWW_ENABLE) \ - ); \ -})) - -#define __boot_rww_enable() \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "sts %0, %1\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_RWW_ENABLE) \ - ); \ -})) - -#define __boot_rww_enable_alternate() \ -(__extension__({ \ - __asm__ __volatile__ \ - ( \ - "sts %0, %1\n\t" \ - "spm\n\t" \ - ".word 0xffff\n\t" \ - "nop\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_RWW_ENABLE) \ - ); \ -})) - -/* From the mega16/mega128 data sheets (maybe others): - - Bits by SPM To set the Boot Loader Lock bits, write the desired data to - R0, write "X0001001" to SPMCR and execute SPM within four clock cycles - after writing SPMCR. The only accessible Lock bits are the Boot Lock bits - that may prevent the Application and Boot Loader section from any - software update by the MCU. - - If bits 5..2 in R0 are cleared (zero), the corresponding Boot Lock bit - will be programmed if an SPM instruction is executed within four cycles - after BLBSET and SPMEN (or SELFPRGEN) are set in SPMCR. The Z-pointer is - don't care during this operation, but for future compatibility it is - recommended to load the Z-pointer with $0001 (same as used for reading the - Lock bits). For future compatibility It is also recommended to set bits 7, - 6, 1, and 0 in R0 to 1 when writing the Lock bits. When programming the - Lock bits the entire Flash can be read during the operation. */ - -#define __boot_lock_bits_set_short(lock_bits) \ -(__extension__({ \ - uint8_t value = (uint8_t)(~(lock_bits)); \ - __asm__ __volatile__ \ - ( \ - "ldi r30, 1\n\t" \ - "ldi r31, 0\n\t" \ - "mov r0, %2\n\t" \ - "out %0, %1\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_IO_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ - "r" (value) \ - : "r0", "r30", "r31" \ - ); \ -})) - -#define __boot_lock_bits_set(lock_bits) \ -(__extension__({ \ - uint8_t value = (uint8_t)(~(lock_bits)); \ - __asm__ __volatile__ \ - ( \ - "ldi r30, 1\n\t" \ - "ldi r31, 0\n\t" \ - "mov r0, %2\n\t" \ - "sts %0, %1\n\t" \ - "spm\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ - "r" (value) \ - : "r0", "r30", "r31" \ - ); \ -})) - -#define __boot_lock_bits_set_alternate(lock_bits) \ -(__extension__({ \ - uint8_t value = (uint8_t)(~(lock_bits)); \ - __asm__ __volatile__ \ - ( \ - "ldi r30, 1\n\t" \ - "ldi r31, 0\n\t" \ - "mov r0, %2\n\t" \ - "sts %0, %1\n\t" \ - "spm\n\t" \ - ".word 0xffff\n\t" \ - "nop\n\t" \ - : \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ - "r" (value) \ - : "r0", "r30", "r31" \ - ); \ -})) - -/* - Reading lock and fuse bits: - - Similarly to writing the lock bits above, set BLBSET and SPMEN (or - SELFPRGEN) bits in __SPMREG, and then (within four clock cycles) issue an - LPM instruction. - - Z address: contents: - 0x0000 low fuse bits - 0x0001 lock bits - 0x0002 extended fuse bits - 0x0003 high fuse bits - - Sounds confusing, doesn't it? - - Unlike the macros in pgmspace.h, no need to care for non-enhanced - cores here as these old cores do not provide SPM support anyway. - */ - -/** \ingroup avr_boot - \def GET_LOW_FUSE_BITS - address to read the low fuse bits, using boot_lock_fuse_bits_get - */ -#define GET_LOW_FUSE_BITS (0x0000) -/** \ingroup avr_boot - \def GET_LOCK_BITS - address to read the lock bits, using boot_lock_fuse_bits_get - */ -#define GET_LOCK_BITS (0x0001) -/** \ingroup avr_boot - \def GET_EXTENDED_FUSE_BITS - address to read the extended fuse bits, using boot_lock_fuse_bits_get - */ -#define GET_EXTENDED_FUSE_BITS (0x0002) -/** \ingroup avr_boot - \def GET_HIGH_FUSE_BITS - address to read the high fuse bits, using boot_lock_fuse_bits_get - */ -#define GET_HIGH_FUSE_BITS (0x0003) - -/** \ingroup avr_boot - \def boot_lock_fuse_bits_get(address) - - Read the lock or fuse bits at \c address. - - Parameter \c address can be any of GET_LOW_FUSE_BITS, - GET_LOCK_BITS, GET_EXTENDED_FUSE_BITS, or GET_HIGH_FUSE_BITS. - - \note The lock and fuse bits returned are the physical values, - i.e. a bit returned as 0 means the corresponding fuse or lock bit - is programmed. - */ -#define boot_lock_fuse_bits_get_short(address) \ -(__extension__({ \ - uint8_t __result; \ - __asm__ __volatile__ \ - ( \ - "ldi r30, %3\n\t" \ - "ldi r31, 0\n\t" \ - "out %1, %2\n\t" \ - "lpm %0, Z\n\t" \ - : "=r" (__result) \ - : "i" (_SFR_IO_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ - "M" (address) \ - : "r0", "r30", "r31" \ - ); \ - __result; \ -})) - -#define boot_lock_fuse_bits_get(address) \ -(__extension__({ \ - uint8_t __result; \ - __asm__ __volatile__ \ - ( \ - "ldi r30, %3\n\t" \ - "ldi r31, 0\n\t" \ - "sts %1, %2\n\t" \ - "lpm %0, Z\n\t" \ - : "=r" (__result) \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ - "M" (address) \ - : "r0", "r30", "r31" \ - ); \ - __result; \ -})) - -/** \ingroup avr_boot - \def boot_signature_byte_get(address) - - Read the Signature Row byte at \c address. For some MCU types, - this function can also retrieve the factory-stored oscillator - calibration bytes. - - Parameter \c address can be 0-0x1f as documented by the datasheet. - \note The values are MCU type dependent. -*/ - -#define __BOOT_SIGROW_READ (_BV(__SPM_ENABLE) | _BV(SIGRD)) - -#define boot_signature_byte_get_short(addr) \ -(__extension__({ \ - uint16_t __addr16 = (uint16_t)(addr); \ - uint8_t __result; \ - __asm__ __volatile__ \ - ( \ - "out %1, %2\n\t" \ - "lpm %0, Z" "\n\t" \ - : "=r" (__result) \ - : "i" (_SFR_IO_ADDR(__SPM_REG)), \ - "r" ((uint8_t) __BOOT_SIGROW_READ), \ - "z" (__addr16) \ - ); \ - __result; \ -})) - -#define boot_signature_byte_get(addr) \ -(__extension__({ \ - uint16_t __addr16 = (uint16_t)(addr); \ - uint8_t __result; \ - __asm__ __volatile__ \ - ( \ - "sts %1, %2\n\t" \ - "lpm %0, Z" "\n\t" \ - : "=r" (__result) \ - : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ - "r" ((uint8_t) __BOOT_SIGROW_READ), \ - "z" (__addr16) \ - ); \ - __result; \ -})) - -/** \ingroup avr_boot - \def boot_page_fill(address, data) - - Fill the bootloader temporary page buffer for flash - address with data word. - - \note The address is a byte address. The data is a word. The AVR - writes data to the buffer a word at a time, but addresses the buffer - per byte! So, increment your address by 2 between calls, and send 2 - data bytes in a word format! The LSB of the data is written to the lower - address; the MSB of the data is written to the higher address.*/ - -/** \ingroup avr_boot - \def boot_page_erase(address) - - Erase the flash page that contains address. - - \note address is a byte address in flash, not a word address. */ - -/** \ingroup avr_boot - \def boot_page_write(address) - - Write the bootloader temporary page buffer - to flash page that contains address. - - \note address is a byte address in flash, not a word address. */ - -/** \ingroup avr_boot - \def boot_rww_enable() - - Enable the Read-While-Write memory section. */ - -/** \ingroup avr_boot - \def boot_lock_bits_set(lock_bits) - - Set the bootloader lock bits. - - \param lock_bits A mask of which Boot Loader Lock Bits to set. - - \note In this context, a 'set bit' will be written to a zero value. - Note also that only BLBxx bits can be programmed by this command. - - For example, to disallow the SPM instruction from writing to the Boot - Loader memory section of flash, you would use this macro as such: - - \code - boot_lock_bits_set (_BV (BLB11)); - \endcode - - \note Like any lock bits, the Boot Loader Lock Bits, once set, - cannot be cleared again except by a chip erase which will in turn - also erase the boot loader itself. */ - -/* Normal versions of the macros use 16-bit addresses. - Extended versions of the macros use 32-bit addresses. - Alternate versions of the macros use 16-bit addresses and require special - instruction sequences after LPM. - - FLASHEND is defined in the ioXXXX.h file. - USHRT_MAX is defined in . */ - -#if defined(__AVR_ATmega161__) || defined(__AVR_ATmega163__) \ - || defined(__AVR_ATmega323__) - -/* Alternate: ATmega161/163/323 and 16 bit address */ -#define boot_page_fill(address, data) __boot_page_fill_alternate(address, data) -#define boot_page_erase(address) __boot_page_erase_alternate(address) -#define boot_page_write(address) __boot_page_write_alternate(address) -#define boot_rww_enable() __boot_rww_enable_alternate() -#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set_alternate(lock_bits) - -#elif (FLASHEND > USHRT_MAX) - -/* Extended: >16 bit address */ -#define boot_page_fill(address, data) __boot_page_fill_extended_short(address, data) -#define boot_page_erase(address) __boot_page_erase_extended_short(address) -#define boot_page_write(address) __boot_page_write_extended_short(address) -#define boot_rww_enable() __boot_rww_enable_short() -#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set_short(lock_bits) - -#else - -/* Normal: 16 bit address */ -#define boot_page_fill(address, data) __boot_page_fill_short(address, data) -#define boot_page_erase(address) __boot_page_erase_short(address) -#define boot_page_write(address) __boot_page_write_short(address) -#define boot_rww_enable() __boot_rww_enable_short() -#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set_short(lock_bits) - -#endif - -/** \ingroup avr_boot - - Same as boot_page_fill() except it waits for eeprom and spm operations to - complete before filling the page. */ - -#define boot_page_fill_safe(address, data) \ -do { \ - boot_spm_busy_wait(); \ - eeprom_busy_wait(); \ - boot_page_fill(address, data); \ -} while (0) - -/** \ingroup avr_boot - - Same as boot_page_erase() except it waits for eeprom and spm operations to - complete before erasing the page. */ - -#define boot_page_erase_safe(address) \ -do { \ - boot_spm_busy_wait(); \ - eeprom_busy_wait(); \ - boot_page_erase (address); \ -} while (0) - -/** \ingroup avr_boot - - Same as boot_page_write() except it waits for eeprom and spm operations to - complete before writing the page. */ - -#define boot_page_write_safe(address) \ -do { \ - boot_spm_busy_wait(); \ - eeprom_busy_wait(); \ - boot_page_write (address); \ -} while (0) - -/** \ingroup avr_boot - - Same as boot_rww_enable() except waits for eeprom and spm operations to - complete before enabling the RWW mameory. */ - -#define boot_rww_enable_safe() \ -do { \ - boot_spm_busy_wait(); \ - eeprom_busy_wait(); \ - boot_rww_enable(); \ -} while (0) - -/** \ingroup avr_boot - - Same as boot_lock_bits_set() except waits for eeprom and spm operations to - complete before setting the lock bits. */ - -#define boot_lock_bits_set_safe(lock_bits) \ -do { \ - boot_spm_busy_wait(); \ - eeprom_busy_wait(); \ - boot_lock_bits_set (lock_bits); \ -} while (0) - -#endif /* _AVR_BOOT_H_ */ diff --git a/bootloaders/optiboot/makeall b/bootloaders/optiboot/makeall deleted file mode 100755 index f076bc7..0000000 --- a/bootloaders/optiboot/makeall +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -make clean -# -# The "big three" standard bootloaders. -make atmega8 -make atmega168 -make atmega328 -# -# additional buildable platforms of -# somewhat questionable support level -make lilypad -make lilypad_resonator -make pro8 -make pro16 -make pro20 -make atmega328_pro8 -make sanguino -make mega -make atmega88 -make luminet diff --git a/bootloaders/optiboot/omake b/bootloaders/optiboot/omake deleted file mode 100644 index cc7c6bc..0000000 --- a/bootloaders/optiboot/omake +++ /dev/null @@ -1,2 +0,0 @@ -echo ../../../tools/avr/bin/make OS=macosx ENV=arduino $* -../../../tools/avr/bin/make OS=macosx ENV=arduino $* diff --git a/bootloaders/optiboot/omake.bat b/bootloaders/optiboot/omake.bat deleted file mode 100644 index f6815da..0000000 --- a/bootloaders/optiboot/omake.bat +++ /dev/null @@ -1 +0,0 @@ -..\..\..\tools\avr\utils\bin\make OS=windows ENV=arduino %* diff --git a/bootloaders/optiboot/optiboot.c b/bootloaders/optiboot/optiboot.c deleted file mode 100644 index bd3a1db..0000000 --- a/bootloaders/optiboot/optiboot.c +++ /dev/null @@ -1,672 +0,0 @@ -/**********************************************************/ -/* Optiboot bootloader for Arduino */ -/* */ -/* http://optiboot.googlecode.com */ -/* */ -/* Arduino-maintained version : See README.TXT */ -/* http://code.google.com/p/arduino/ */ -/* */ -/* Heavily optimised bootloader that is faster and */ -/* smaller than the Arduino standard bootloader */ -/* */ -/* Enhancements: */ -/* Fits in 512 bytes, saving 1.5K of code space */ -/* Background page erasing speeds up programming */ -/* Higher baud rate speeds up programming */ -/* Written almost entirely in C */ -/* Customisable timeout with accurate timeconstant */ -/* Optional virtual UART. No hardware UART required. */ -/* Optional virtual boot partition for devices without. */ -/* */ -/* What you lose: */ -/* Implements a skeleton STK500 protocol which is */ -/* missing several features including EEPROM */ -/* programming and non-page-aligned writes */ -/* High baud rate breaks compatibility with standard */ -/* Arduino flash settings */ -/* */ -/* Fully supported: */ -/* ATmega168 based devices (Diecimila etc) */ -/* ATmega328P based devices (Duemilanove etc) */ -/* */ -/* Alpha test */ -/* ATmega1280 based devices (Arduino Mega) */ -/* */ -/* Work in progress: */ -/* ATmega644P based devices (Sanguino) */ -/* ATtiny84 based devices (Luminet) */ -/* */ -/* Does not support: */ -/* USB based devices (eg. Teensy) */ -/* */ -/* Assumptions: */ -/* The code makes several assumptions that reduce the */ -/* code size. They are all true after a hardware reset, */ -/* but may not be true if the bootloader is called by */ -/* other means or on other hardware. */ -/* No interrupts can occur */ -/* UART and Timer 1 are set to their reset state */ -/* SP points to RAMEND */ -/* */ -/* Code builds on code, libraries and optimisations from: */ -/* stk500boot.c by Jason P. Kyle */ -/* Arduino bootloader http://www.arduino.cc */ -/* Spiff's 1K bootloader http://spiffie.org/know/arduino_1k_bootloader/bootloader.shtml */ -/* avr-libc project http://nongnu.org/avr-libc */ -/* Adaboot http://www.ladyada.net/library/arduino/bootloader.html */ -/* AVR305 Atmel Application Note */ -/* */ -/* This program is free software; you can redistribute it */ -/* and/or modify it under the terms of the GNU General */ -/* Public License as published by the Free Software */ -/* Foundation; either version 2 of the License, or */ -/* (at your option) any later version. */ -/* */ -/* This program is distributed in the hope that it will */ -/* be useful, but WITHOUT ANY WARRANTY; without even the */ -/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ -/* PARTICULAR PURPOSE. See the GNU General Public */ -/* License for more details. */ -/* */ -/* You should have received a copy of the GNU General */ -/* Public License along with this program; if not, write */ -/* to the Free Software Foundation, Inc., */ -/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* */ -/* Licence can be viewed at */ -/* http://www.fsf.org/licenses/gpl.txt */ -/* */ -/**********************************************************/ - - -/**********************************************************/ -/* */ -/* Optional defines: */ -/* */ -/**********************************************************/ -/* */ -/* BIG_BOOT: */ -/* Build a 1k bootloader, not 512 bytes. This turns on */ -/* extra functionality. */ -/* */ -/* BAUD_RATE: */ -/* Set bootloader baud rate. */ -/* */ -/* LUDICROUS_SPEED: */ -/* 230400 baud :-) */ -/* */ -/* SOFT_UART: */ -/* Use AVR305 soft-UART instead of hardware UART. */ -/* */ -/* LED_START_FLASHES: */ -/* Number of LED flashes on bootup. */ -/* */ -/* LED_DATA_FLASH: */ -/* Flash LED when transferring data. For boards without */ -/* TX or RX LEDs, or for people who like blinky lights. */ -/* */ -/* SUPPORT_EEPROM: */ -/* Support reading and writing from EEPROM. This is not */ -/* used by Arduino, so off by default. */ -/* */ -/* TIMEOUT_MS: */ -/* Bootloader timeout period, in milliseconds. */ -/* 500,1000,2000,4000,8000 supported. */ -/* */ -/**********************************************************/ - -/**********************************************************/ -/* Version Numbers! */ -/* */ -/* Arduino Optiboot now includes this Version number in */ -/* the source and object code. */ -/* */ -/* Version 3 was released as zip from the optiboot */ -/* repository and was distributed with Arduino 0022. */ -/* Version 4 starts with the arduino repository commit */ -/* that brought the arduino repository up-to-date with */ -/* the optiboot source tree changes since v3. */ -/* */ -/**********************************************************/ - -/**********************************************************/ -/* Edit History: */ -/* */ -/* 4.4 WestfW: add initialization of address to keep */ -/* the compiler happy. Change SC'ed targets. */ -/* Return the SW version via READ PARAM */ -/* 4.3 WestfW: catch framing errors in getch(), so that */ -/* AVRISP works without HW kludges. */ -/* http://code.google.com/p/arduino/issues/detail?id=368n*/ -/* 4.2 WestfW: reduce code size, fix timeouts, change */ -/* verifySpace to use WDT instead of appstart */ -/* 4.1 WestfW: put version number in binary. */ -/**********************************************************/ - -#define OPTIBOOT_MAJVER 4 -#define OPTIBOOT_MINVER 4 - -#define MAKESTR(a) #a -#define MAKEVER(a, b) MAKESTR(a*256+b) - -asm(" .section .version\n" - "optiboot_version: .word " MAKEVER(OPTIBOOT_MAJVER, OPTIBOOT_MINVER) "\n" - " .section .text\n"); - -#include -#include -#include - -// uses sts instructions, but this version uses out instructions -// This saves cycles and program memory. -#include "boot.h" - - -// We don't use as those routines have interrupt overhead we don't need. - -#include "pin_defs.h" -#include "stk500.h" - -#ifndef LED_START_FLASHES -#define LED_START_FLASHES 0 -#endif - -#ifdef LUDICROUS_SPEED -#define BAUD_RATE 230400L -#endif - -/* set the UART baud rate defaults */ -#ifndef BAUD_RATE -#if F_CPU >= 8000000L -#define BAUD_RATE 115200L // Highest rate Avrdude win32 will support -#elsif F_CPU >= 1000000L -#define BAUD_RATE 9600L // 19200 also supported, but with significant error -#elsif F_CPU >= 128000L -#define BAUD_RATE 4800L // Good for 128kHz internal RC -#else -#define BAUD_RATE 1200L // Good even at 32768Hz -#endif -#endif - -/* Switch in soft UART for hard baud rates */ -#if (F_CPU/BAUD_RATE) > 280 // > 57600 for 16MHz -#ifndef SOFT_UART -#define SOFT_UART -#endif -#endif - -/* Watchdog settings */ -#define WATCHDOG_OFF (0) -#define WATCHDOG_16MS (_BV(WDE)) -#define WATCHDOG_32MS (_BV(WDP0) | _BV(WDE)) -#define WATCHDOG_64MS (_BV(WDP1) | _BV(WDE)) -#define WATCHDOG_125MS (_BV(WDP1) | _BV(WDP0) | _BV(WDE)) -#define WATCHDOG_250MS (_BV(WDP2) | _BV(WDE)) -#define WATCHDOG_500MS (_BV(WDP2) | _BV(WDP0) | _BV(WDE)) -#define WATCHDOG_1S (_BV(WDP2) | _BV(WDP1) | _BV(WDE)) -#define WATCHDOG_2S (_BV(WDP2) | _BV(WDP1) | _BV(WDP0) | _BV(WDE)) -#ifndef __AVR_ATmega8__ -#define WATCHDOG_4S (_BV(WDP3) | _BV(WDE)) -#define WATCHDOG_8S (_BV(WDP3) | _BV(WDP0) | _BV(WDE)) -#endif - -/* Function Prototypes */ -/* The main function is in init9, which removes the interrupt vector table */ -/* we don't need. It is also 'naked', which means the compiler does not */ -/* generate any entry or exit code itself. */ -int main(void) __attribute__ ((naked)) __attribute__ ((section (".init9"))); -void putch(char); -uint8_t getch(void); -static inline void getNch(uint8_t); /* "static inline" is a compiler hint to reduce code size */ -void verifySpace(); -static inline void flash_led(uint8_t); -uint8_t getLen(); -static inline void watchdogReset(); -void watchdogConfig(uint8_t x); -#ifdef SOFT_UART -void uartDelay() __attribute__ ((naked)); -#endif -void appStart() __attribute__ ((naked)); - -#if defined(__AVR_ATmega168__) -#define RAMSTART (0x100) -#define NRWWSTART (0x3800) -#elif defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) -#define RAMSTART (0x100) -#define NRWWSTART (0x7000) -#elif defined (__AVR_ATmega644P__) -#define RAMSTART (0x100) -#define NRWWSTART (0xE000) -#elif defined(__AVR_ATtiny84__) -#define RAMSTART (0x100) -#define NRWWSTART (0x0000) -#elif defined(__AVR_ATmega1280__) -#define RAMSTART (0x200) -#define NRWWSTART (0xE000) -#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__) -#define RAMSTART (0x100) -#define NRWWSTART (0x1800) -#endif - -/* C zero initialises all global variables. However, that requires */ -/* These definitions are NOT zero initialised, but that doesn't matter */ -/* This allows us to drop the zero init code, saving us memory */ -#define buff ((uint8_t*)(RAMSTART)) -#ifdef VIRTUAL_BOOT_PARTITION -#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) -#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) -#endif - -/* main program starts here */ -int main(void) { - uint8_t ch; - - /* - * Making these local and in registers prevents the need for initializing - * them, and also saves space because code no longer stores to memory. - * (initializing address keeps the compiler happy, but isn't really - * necessary, and uses 4 bytes of flash.) - */ - register uint16_t address = 0; - register uint8_t length; - - // After the zero init loop, this is the first code to run. - // - // This code makes the following assumptions: - // No interrupts will execute - // SP points to RAMEND - // r1 contains zero - // - // If not, uncomment the following instructions: - // cli(); - asm volatile ("clr __zero_reg__"); -#ifdef __AVR_ATmega8__ - SP=RAMEND; // This is done by hardware reset -#endif - - // Adaboot no-wait mod - ch = MCUSR; - MCUSR = 0; - if (!(ch & _BV(EXTRF))) appStart(); - -#if LED_START_FLASHES > 0 - // Set up Timer 1 for timeout counter - TCCR1B = _BV(CS12) | _BV(CS10); // div 1024 -#endif -#ifndef SOFT_UART -#ifdef __AVR_ATmega8__ - UCSRA = _BV(U2X); //Double speed mode USART - UCSRB = _BV(RXEN) | _BV(TXEN); // enable Rx & Tx - UCSRC = _BV(URSEL) | _BV(UCSZ1) | _BV(UCSZ0); // config USART; 8N1 - UBRRL = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 ); -#else - UCSR0A = _BV(U2X0); //Double speed mode USART0 - UCSR0B = _BV(RXEN0) | _BV(TXEN0); - UCSR0C = _BV(UCSZ00) | _BV(UCSZ01); - UBRR0L = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 ); -#endif -#endif - - // Set up watchdog to trigger after 500ms - watchdogConfig(WATCHDOG_1S); - - /* Set LED pin as output */ - LED_DDR |= _BV(LED); - -#ifdef SOFT_UART - /* Set TX pin as output */ - UART_DDR |= _BV(UART_TX_BIT); -#endif - -#if LED_START_FLASHES > 0 - /* Flash onboard LED to signal entering of bootloader */ - flash_led(LED_START_FLASHES * 2); -#endif - - /* Forever loop */ - for (;;) { - /* get character from UART */ - ch = getch(); - - if(ch == STK_GET_PARAMETER) { - unsigned char which = getch(); - verifySpace(); - if (which == 0x82) { - /* - * Send optiboot version as "minor SW version" - */ - putch(OPTIBOOT_MINVER); - } else if (which == 0x81) { - putch(OPTIBOOT_MAJVER); - } else { - /* - * GET PARAMETER returns a generic 0x03 reply for - * other parameters - enough to keep Avrdude happy - */ - putch(0x03); - } - } - else if(ch == STK_SET_DEVICE) { - // SET DEVICE is ignored - getNch(20); - } - else if(ch == STK_SET_DEVICE_EXT) { - // SET DEVICE EXT is ignored - getNch(5); - } - else if(ch == STK_LOAD_ADDRESS) { - // LOAD ADDRESS - uint16_t newAddress; - newAddress = getch(); - newAddress = (newAddress & 0xff) | (getch() << 8); -#ifdef RAMPZ - // Transfer top bit to RAMPZ - RAMPZ = (newAddress & 0x8000) ? 1 : 0; -#endif - newAddress += newAddress; // Convert from word address to byte address - address = newAddress; - verifySpace(); - } - else if(ch == STK_UNIVERSAL) { - // UNIVERSAL command is ignored - getNch(4); - putch(0x00); - } - /* Write memory, length is big endian and is in bytes */ - else if(ch == STK_PROG_PAGE) { - // PROGRAM PAGE - we support flash programming only, not EEPROM - uint8_t *bufPtr; - uint16_t addrPtr; - - getch(); /* getlen() */ - length = getch(); - getch(); - - // If we are in RWW section, immediately start page erase - if (address < NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - - // While that is going on, read in page contents - bufPtr = buff; - do *bufPtr++ = getch(); - while (--length); - - // If we are in NRWW section, page erase has to be delayed until now. - // Todo: Take RAMPZ into account - if (address >= NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - - // Read command terminator, start reply - verifySpace(); - - // If only a partial page is to be programmed, the erase might not be complete. - // So check that here - boot_spm_busy_wait(); - -#ifdef VIRTUAL_BOOT_PARTITION - if ((uint16_t)(void*)address == 0) { - // This is the reset vector page. We need to live-patch the code so the - // bootloader runs. - // - // Move RESET vector to WDT vector - uint16_t vect = buff[0] | (buff[1]<<8); - rstVect = vect; - wdtVect = buff[8] | (buff[9]<<8); - vect -= 4; // Instruction is a relative jump (rjmp), so recalculate. - buff[8] = vect & 0xff; - buff[9] = vect >> 8; - - // Add jump to bootloader at RESET vector - buff[0] = 0x7f; - buff[1] = 0xce; // rjmp 0x1d00 instruction - } -#endif - - // Copy buffer into programming buffer - bufPtr = buff; - addrPtr = (uint16_t)(void*)address; - ch = SPM_PAGESIZE / 2; - do { - uint16_t a; - a = *bufPtr++; - a |= (*bufPtr++) << 8; - __boot_page_fill_short((uint16_t)(void*)addrPtr,a); - addrPtr += 2; - } while (--ch); - - // Write from programming buffer - __boot_page_write_short((uint16_t)(void*)address); - boot_spm_busy_wait(); - -#if defined(RWWSRE) - // Reenable read access to flash - boot_rww_enable(); -#endif - - } - /* Read memory block mode, length is big endian. */ - else if(ch == STK_READ_PAGE) { - // READ PAGE - we only read flash - getch(); /* getlen() */ - length = getch(); - getch(); - - verifySpace(); -#ifdef VIRTUAL_BOOT_PARTITION - do { - // Undo vector patch in bottom page so verify passes - if (address == 0) ch=rstVect & 0xff; - else if (address == 1) ch=rstVect >> 8; - else if (address == 8) ch=wdtVect & 0xff; - else if (address == 9) ch=wdtVect >> 8; - else ch = pgm_read_byte_near(address); - address++; - putch(ch); - } while (--length); -#else -#ifdef __AVR_ATmega1280__ -// do putch(pgm_read_byte_near(address++)); -// while (--length); - do { - uint8_t result; - __asm__ ("elpm %0,Z\n":"=r"(result):"z"(address)); - putch(result); - address++; - } - while (--length); -#else - do putch(pgm_read_byte_near(address++)); - while (--length); -#endif -#endif - } - - /* Get device signature bytes */ - else if(ch == STK_READ_SIGN) { - // READ SIGN - return what Avrdude wants to hear - verifySpace(); - putch(SIGNATURE_0); - putch(SIGNATURE_1); - putch(SIGNATURE_2); - } - else if (ch == 'Q') { - // Adaboot no-wait mod - watchdogConfig(WATCHDOG_16MS); - verifySpace(); - } - else { - // This covers the response to commands like STK_ENTER_PROGMODE - verifySpace(); - } - putch(STK_OK); - } -} - -void putch(char ch) { -#ifndef SOFT_UART - while (!(UCSR0A & _BV(UDRE0))); - UDR0 = ch; -#else - __asm__ __volatile__ ( - " com %[ch]\n" // ones complement, carry set - " sec\n" - "1: brcc 2f\n" - " cbi %[uartPort],%[uartBit]\n" - " rjmp 3f\n" - "2: sbi %[uartPort],%[uartBit]\n" - " nop\n" - "3: rcall uartDelay\n" - " rcall uartDelay\n" - " lsr %[ch]\n" - " dec %[bitcnt]\n" - " brne 1b\n" - : - : - [bitcnt] "d" (10), - [ch] "r" (ch), - [uartPort] "I" (_SFR_IO_ADDR(UART_PORT)), - [uartBit] "I" (UART_TX_BIT) - : - "r25" - ); -#endif -} - -uint8_t getch(void) { - uint8_t ch; - -#ifdef LED_DATA_FLASH -#ifdef __AVR_ATmega8__ - LED_PORT ^= _BV(LED); -#else - LED_PIN |= _BV(LED); -#endif -#endif - -#ifdef SOFT_UART - __asm__ __volatile__ ( - "1: sbic %[uartPin],%[uartBit]\n" // Wait for start edge - " rjmp 1b\n" - " rcall uartDelay\n" // Get to middle of start bit - "2: rcall uartDelay\n" // Wait 1 bit period - " rcall uartDelay\n" // Wait 1 bit period - " clc\n" - " sbic %[uartPin],%[uartBit]\n" - " sec\n" - " dec %[bitCnt]\n" - " breq 3f\n" - " ror %[ch]\n" - " rjmp 2b\n" - "3:\n" - : - [ch] "=r" (ch) - : - [bitCnt] "d" (9), - [uartPin] "I" (_SFR_IO_ADDR(UART_PIN)), - [uartBit] "I" (UART_RX_BIT) - : - "r25" -); -#else - while(!(UCSR0A & _BV(RXC0))) - ; - if (!(UCSR0A & _BV(FE0))) { - /* - * A Framing Error indicates (probably) that something is talking - * to us at the wrong bit rate. Assume that this is because it - * expects to be talking to the application, and DON'T reset the - * watchdog. This should cause the bootloader to abort and run - * the application "soon", if it keeps happening. (Note that we - * don't care that an invalid char is returned...) - */ - watchdogReset(); - } - - ch = UDR0; -#endif - -#ifdef LED_DATA_FLASH -#ifdef __AVR_ATmega8__ - LED_PORT ^= _BV(LED); -#else - LED_PIN |= _BV(LED); -#endif -#endif - - return ch; -} - -#ifdef SOFT_UART -// AVR350 equation: #define UART_B_VALUE (((F_CPU/BAUD_RATE)-23)/6) -// Adding 3 to numerator simulates nearest rounding for more accurate baud rates -#define UART_B_VALUE (((F_CPU/BAUD_RATE)-20)/6) -#if UART_B_VALUE > 255 -#error Baud rate too slow for soft UART -#endif - -void uartDelay() { - __asm__ __volatile__ ( - "ldi r25,%[count]\n" - "1:dec r25\n" - "brne 1b\n" - "ret\n" - ::[count] "M" (UART_B_VALUE) - ); -} -#endif - -void getNch(uint8_t count) { - do getch(); while (--count); - verifySpace(); -} - -void verifySpace() { - if (getch() != CRC_EOP) { - watchdogConfig(WATCHDOG_16MS); // shorten WD timeout - while (1) // and busy-loop so that WD causes - ; // a reset and app start. - } - putch(STK_INSYNC); -} - -#if LED_START_FLASHES > 0 -void flash_led(uint8_t count) { - do { - TCNT1 = -(F_CPU/(1024*16)); - TIFR1 = _BV(TOV1); - while(!(TIFR1 & _BV(TOV1))); -#ifdef __AVR_ATmega8__ - LED_PORT ^= _BV(LED); -#else - LED_PIN |= _BV(LED); -#endif - watchdogReset(); - } while (--count); -} -#endif - -// Watchdog functions. These are only safe with interrupts turned off. -void watchdogReset() { - __asm__ __volatile__ ( - "wdr\n" - ); -} - -void watchdogConfig(uint8_t x) { - WDTCSR = _BV(WDCE) | _BV(WDE); - WDTCSR = x; -} - -void appStart() { - watchdogConfig(WATCHDOG_OFF); - __asm__ __volatile__ ( -#ifdef VIRTUAL_BOOT_PARTITION - // Jump to WDT vector - "ldi r30,4\n" - "clr r31\n" -#else - // Jump to RST vector - "clr r30\n" - "clr r31\n" -#endif - "ijmp\n" - ); -} diff --git a/bootloaders/optiboot/optiboot_atmega168.hex b/bootloaders/optiboot/optiboot_atmega168.hex deleted file mode 100644 index c2f2b5b..0000000 --- a/bootloaders/optiboot/optiboot_atmega168.hex +++ /dev/null @@ -1,35 +0,0 @@ -:103E0000112484B714BE81FFF0D085E08093810037 -:103E100082E08093C00088E18093C10086E08093B7 -:103E2000C20080E18093C4008EE0C9D0259A86E06C -:103E300020E33CEF91E0309385002093840096BB13 -:103E4000B09BFECF1D9AA8958150A9F7CC24DD2404 -:103E500088248394B5E0AB2EA1E19A2EF3E0BF2E27 -:103E6000A2D0813461F49FD0082FAFD0023811F076 -:103E7000013811F484E001C083E08DD089C0823420 -:103E800011F484E103C0853419F485E0A6D080C024 -:103E9000853579F488D0E82EFF2485D0082F10E0EE -:103EA000102F00270E291F29000F111F8ED0680127 -:103EB0006FC0863521F484E090D080E0DECF843678 -:103EC00009F040C070D06FD0082F6DD080E0C816C8 -:103ED00088E3D80618F4F601B7BEE895C0E0D1E053 -:103EE00062D089930C17E1F7F0E0CF16F8E3DF0614 -:103EF00018F0F601B7BEE89568D007B600FCFDCF14 -:103F0000A601A0E0B1E02C9130E011968C911197C0 -:103F100090E0982F8827822B932B1296FA010C01A0 -:103F200087BEE89511244E5F5F4FF1E0A038BF07D0 -:103F300051F7F601A7BEE89507B600FCFDCF97BE86 -:103F4000E89526C08437B1F42ED02DD0F82E2BD092 -:103F50003CD0F601EF2C8F010F5F1F4F84911BD0D7 -:103F6000EA94F801C1F70894C11CD11CFA94CF0C53 -:103F7000D11C0EC0853739F428D08EE10CD084E9ED -:103F80000AD086E07ACF813511F488E018D01DD0B0 -:103F900080E101D065CF982F8091C00085FFFCCFD4 -:103FA0009093C60008958091C00087FFFCCF809158 -:103FB000C00084FD01C0A8958091C6000895E0E688 -:103FC000F0E098E1908380830895EDDF803219F06E -:103FD00088E0F5DFFFCF84E1DECF1F93182FE3DF0A -:103FE0001150E9F7F2DF1F91089580E0E8DFEE2736 -:043FF000FF2709940A -:023FFE000404B9 -:0400000300003E00BB -:00000001FF diff --git a/bootloaders/optiboot/optiboot_atmega168.lst b/bootloaders/optiboot/optiboot_atmega168.lst deleted file mode 100644 index 06316db..0000000 --- a/bootloaders/optiboot/optiboot_atmega168.lst +++ /dev/null @@ -1,598 +0,0 @@ - -optiboot_atmega168.elf: file format elf32-avr - -Sections: -Idx Name Size VMA LMA File off Algn - 0 .text 000001f4 00003e00 00003e00 00000054 2**1 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .version 00000002 00003ffe 00003ffe 00000248 2**0 - CONTENTS, READONLY - 2 .debug_aranges 00000028 00000000 00000000 0000024a 2**0 - CONTENTS, READONLY, DEBUGGING - 3 .debug_pubnames 0000005f 00000000 00000000 00000272 2**0 - CONTENTS, READONLY, DEBUGGING - 4 .debug_info 000002a8 00000000 00000000 000002d1 2**0 - CONTENTS, READONLY, DEBUGGING - 5 .debug_abbrev 00000178 00000000 00000000 00000579 2**0 - CONTENTS, READONLY, DEBUGGING - 6 .debug_line 00000488 00000000 00000000 000006f1 2**0 - CONTENTS, READONLY, DEBUGGING - 7 .debug_frame 00000080 00000000 00000000 00000b7c 2**2 - CONTENTS, READONLY, DEBUGGING - 8 .debug_str 0000014f 00000000 00000000 00000bfc 2**0 - CONTENTS, READONLY, DEBUGGING - 9 .debug_loc 000002d8 00000000 00000000 00000d4b 2**0 - CONTENTS, READONLY, DEBUGGING - 10 .debug_ranges 00000078 00000000 00000000 00001023 2**0 - CONTENTS, READONLY, DEBUGGING - -Disassembly of section .text: - -00003e00
: -#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) -#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) -#endif - -/* main program starts here */ -int main(void) { - 3e00: 11 24 eor r1, r1 -#ifdef __AVR_ATmega8__ - SP=RAMEND; // This is done by hardware reset -#endif - - // Adaboot no-wait mod - ch = MCUSR; - 3e02: 84 b7 in r24, 0x34 ; 52 - MCUSR = 0; - 3e04: 14 be out 0x34, r1 ; 52 - if (!(ch & _BV(EXTRF))) appStart(); - 3e06: 81 ff sbrs r24, 1 - 3e08: f0 d0 rcall .+480 ; 0x3fea - -#if LED_START_FLASHES > 0 - // Set up Timer 1 for timeout counter - TCCR1B = _BV(CS12) | _BV(CS10); // div 1024 - 3e0a: 85 e0 ldi r24, 0x05 ; 5 - 3e0c: 80 93 81 00 sts 0x0081, r24 - UCSRA = _BV(U2X); //Double speed mode USART - UCSRB = _BV(RXEN) | _BV(TXEN); // enable Rx & Tx - UCSRC = _BV(URSEL) | _BV(UCSZ1) | _BV(UCSZ0); // config USART; 8N1 - UBRRL = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 ); -#else - UCSR0A = _BV(U2X0); //Double speed mode USART0 - 3e10: 82 e0 ldi r24, 0x02 ; 2 - 3e12: 80 93 c0 00 sts 0x00C0, r24 - UCSR0B = _BV(RXEN0) | _BV(TXEN0); - 3e16: 88 e1 ldi r24, 0x18 ; 24 - 3e18: 80 93 c1 00 sts 0x00C1, r24 - UCSR0C = _BV(UCSZ00) | _BV(UCSZ01); - 3e1c: 86 e0 ldi r24, 0x06 ; 6 - 3e1e: 80 93 c2 00 sts 0x00C2, r24 - UBRR0L = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 ); - 3e22: 80 e1 ldi r24, 0x10 ; 16 - 3e24: 80 93 c4 00 sts 0x00C4, r24 -#endif -#endif - - // Set up watchdog to trigger after 500ms - watchdogConfig(WATCHDOG_1S); - 3e28: 8e e0 ldi r24, 0x0E ; 14 - 3e2a: c9 d0 rcall .+402 ; 0x3fbe - - /* Set LED pin as output */ - LED_DDR |= _BV(LED); - 3e2c: 25 9a sbi 0x04, 5 ; 4 - 3e2e: 86 e0 ldi r24, 0x06 ; 6 -} - -#if LED_START_FLASHES > 0 -void flash_led(uint8_t count) { - do { - TCNT1 = -(F_CPU/(1024*16)); - 3e30: 20 e3 ldi r18, 0x30 ; 48 - 3e32: 3c ef ldi r19, 0xFC ; 252 - TIFR1 = _BV(TOV1); - 3e34: 91 e0 ldi r25, 0x01 ; 1 -} - -#if LED_START_FLASHES > 0 -void flash_led(uint8_t count) { - do { - TCNT1 = -(F_CPU/(1024*16)); - 3e36: 30 93 85 00 sts 0x0085, r19 - 3e3a: 20 93 84 00 sts 0x0084, r18 - TIFR1 = _BV(TOV1); - 3e3e: 96 bb out 0x16, r25 ; 22 - while(!(TIFR1 & _BV(TOV1))); - 3e40: b0 9b sbis 0x16, 0 ; 22 - 3e42: fe cf rjmp .-4 ; 0x3e40 -#ifdef __AVR_ATmega8__ - LED_PORT ^= _BV(LED); -#else - LED_PIN |= _BV(LED); - 3e44: 1d 9a sbi 0x03, 5 ; 3 -} -#endif - -// Watchdog functions. These are only safe with interrupts turned off. -void watchdogReset() { - __asm__ __volatile__ ( - 3e46: a8 95 wdr - LED_PORT ^= _BV(LED); -#else - LED_PIN |= _BV(LED); -#endif - watchdogReset(); - } while (--count); - 3e48: 81 50 subi r24, 0x01 ; 1 - 3e4a: a9 f7 brne .-22 ; 0x3e36 - 3e4c: cc 24 eor r12, r12 - 3e4e: dd 24 eor r13, r13 - ch = SPM_PAGESIZE / 2; - do { - uint16_t a; - a = *bufPtr++; - a |= (*bufPtr++) << 8; - __boot_page_fill_short((uint16_t)(void*)addrPtr,a); - 3e50: 88 24 eor r8, r8 - 3e52: 83 94 inc r8 - addrPtr += 2; - } while (--ch); - - // Write from programming buffer - __boot_page_write_short((uint16_t)(void*)address); - 3e54: b5 e0 ldi r27, 0x05 ; 5 - 3e56: ab 2e mov r10, r27 - boot_spm_busy_wait(); - -#if defined(RWWSRE) - // Reenable read access to flash - boot_rww_enable(); - 3e58: a1 e1 ldi r26, 0x11 ; 17 - 3e5a: 9a 2e mov r9, r26 - do *bufPtr++ = getch(); - while (--length); - - // If we are in NRWW section, page erase has to be delayed until now. - // Todo: Take RAMPZ into account - if (address >= NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - 3e5c: f3 e0 ldi r31, 0x03 ; 3 - 3e5e: bf 2e mov r11, r31 -#endif - - /* Forever loop */ - for (;;) { - /* get character from UART */ - ch = getch(); - 3e60: a2 d0 rcall .+324 ; 0x3fa6 - - if(ch == STK_GET_PARAMETER) { - 3e62: 81 34 cpi r24, 0x41 ; 65 - 3e64: 61 f4 brne .+24 ; 0x3e7e - unsigned char which = getch(); - 3e66: 9f d0 rcall .+318 ; 0x3fa6 - 3e68: 08 2f mov r16, r24 - verifySpace(); - 3e6a: af d0 rcall .+350 ; 0x3fca - if (which == 0x82) { - 3e6c: 02 38 cpi r16, 0x82 ; 130 - 3e6e: 11 f0 breq .+4 ; 0x3e74 - /* - * Send optiboot version as "minor SW version" - */ - putch(OPTIBOOT_MINVER); - } else if (which == 0x81) { - 3e70: 01 38 cpi r16, 0x81 ; 129 - 3e72: 11 f4 brne .+4 ; 0x3e78 - putch(OPTIBOOT_MAJVER); - 3e74: 84 e0 ldi r24, 0x04 ; 4 - 3e76: 01 c0 rjmp .+2 ; 0x3e7a - } else { - /* - * GET PARAMETER returns a generic 0x03 reply for - * other parameters - enough to keep Avrdude happy - */ - putch(0x03); - 3e78: 83 e0 ldi r24, 0x03 ; 3 - 3e7a: 8d d0 rcall .+282 ; 0x3f96 - 3e7c: 89 c0 rjmp .+274 ; 0x3f90 - } - } - else if(ch == STK_SET_DEVICE) { - 3e7e: 82 34 cpi r24, 0x42 ; 66 - 3e80: 11 f4 brne .+4 ; 0x3e86 - // SET DEVICE is ignored - getNch(20); - 3e82: 84 e1 ldi r24, 0x14 ; 20 - 3e84: 03 c0 rjmp .+6 ; 0x3e8c - } - else if(ch == STK_SET_DEVICE_EXT) { - 3e86: 85 34 cpi r24, 0x45 ; 69 - 3e88: 19 f4 brne .+6 ; 0x3e90 - // SET DEVICE EXT is ignored - getNch(5); - 3e8a: 85 e0 ldi r24, 0x05 ; 5 - 3e8c: a6 d0 rcall .+332 ; 0x3fda - 3e8e: 80 c0 rjmp .+256 ; 0x3f90 - } - else if(ch == STK_LOAD_ADDRESS) { - 3e90: 85 35 cpi r24, 0x55 ; 85 - 3e92: 79 f4 brne .+30 ; 0x3eb2 - // LOAD ADDRESS - uint16_t newAddress; - newAddress = getch(); - 3e94: 88 d0 rcall .+272 ; 0x3fa6 - newAddress = (newAddress & 0xff) | (getch() << 8); - 3e96: e8 2e mov r14, r24 - 3e98: ff 24 eor r15, r15 - 3e9a: 85 d0 rcall .+266 ; 0x3fa6 - 3e9c: 08 2f mov r16, r24 - 3e9e: 10 e0 ldi r17, 0x00 ; 0 - 3ea0: 10 2f mov r17, r16 - 3ea2: 00 27 eor r16, r16 - 3ea4: 0e 29 or r16, r14 - 3ea6: 1f 29 or r17, r15 -#ifdef RAMPZ - // Transfer top bit to RAMPZ - RAMPZ = (newAddress & 0x8000) ? 1 : 0; -#endif - newAddress += newAddress; // Convert from word address to byte address - 3ea8: 00 0f add r16, r16 - 3eaa: 11 1f adc r17, r17 - address = newAddress; - verifySpace(); - 3eac: 8e d0 rcall .+284 ; 0x3fca - 3eae: 68 01 movw r12, r16 - 3eb0: 6f c0 rjmp .+222 ; 0x3f90 - } - else if(ch == STK_UNIVERSAL) { - 3eb2: 86 35 cpi r24, 0x56 ; 86 - 3eb4: 21 f4 brne .+8 ; 0x3ebe - // UNIVERSAL command is ignored - getNch(4); - 3eb6: 84 e0 ldi r24, 0x04 ; 4 - 3eb8: 90 d0 rcall .+288 ; 0x3fda - putch(0x00); - 3eba: 80 e0 ldi r24, 0x00 ; 0 - 3ebc: de cf rjmp .-68 ; 0x3e7a - } - /* Write memory, length is big endian and is in bytes */ - else if(ch == STK_PROG_PAGE) { - 3ebe: 84 36 cpi r24, 0x64 ; 100 - 3ec0: 09 f0 breq .+2 ; 0x3ec4 - 3ec2: 40 c0 rjmp .+128 ; 0x3f44 - // PROGRAM PAGE - we support flash programming only, not EEPROM - uint8_t *bufPtr; - uint16_t addrPtr; - - getch(); /* getlen() */ - 3ec4: 70 d0 rcall .+224 ; 0x3fa6 - length = getch(); - 3ec6: 6f d0 rcall .+222 ; 0x3fa6 - 3ec8: 08 2f mov r16, r24 - getch(); - 3eca: 6d d0 rcall .+218 ; 0x3fa6 - - // If we are in RWW section, immediately start page erase - if (address < NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - 3ecc: 80 e0 ldi r24, 0x00 ; 0 - 3ece: c8 16 cp r12, r24 - 3ed0: 88 e3 ldi r24, 0x38 ; 56 - 3ed2: d8 06 cpc r13, r24 - 3ed4: 18 f4 brcc .+6 ; 0x3edc - 3ed6: f6 01 movw r30, r12 - 3ed8: b7 be out 0x37, r11 ; 55 - 3eda: e8 95 spm - 3edc: c0 e0 ldi r28, 0x00 ; 0 - 3ede: d1 e0 ldi r29, 0x01 ; 1 - - // While that is going on, read in page contents - bufPtr = buff; - do *bufPtr++ = getch(); - 3ee0: 62 d0 rcall .+196 ; 0x3fa6 - 3ee2: 89 93 st Y+, r24 - while (--length); - 3ee4: 0c 17 cp r16, r28 - 3ee6: e1 f7 brne .-8 ; 0x3ee0 - - // If we are in NRWW section, page erase has to be delayed until now. - // Todo: Take RAMPZ into account - if (address >= NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - 3ee8: f0 e0 ldi r31, 0x00 ; 0 - 3eea: cf 16 cp r12, r31 - 3eec: f8 e3 ldi r31, 0x38 ; 56 - 3eee: df 06 cpc r13, r31 - 3ef0: 18 f0 brcs .+6 ; 0x3ef8 - 3ef2: f6 01 movw r30, r12 - 3ef4: b7 be out 0x37, r11 ; 55 - 3ef6: e8 95 spm - - // Read command terminator, start reply - verifySpace(); - 3ef8: 68 d0 rcall .+208 ; 0x3fca - - // If only a partial page is to be programmed, the erase might not be complete. - // So check that here - boot_spm_busy_wait(); - 3efa: 07 b6 in r0, 0x37 ; 55 - 3efc: 00 fc sbrc r0, 0 - 3efe: fd cf rjmp .-6 ; 0x3efa - 3f00: a6 01 movw r20, r12 - 3f02: a0 e0 ldi r26, 0x00 ; 0 - 3f04: b1 e0 ldi r27, 0x01 ; 1 - bufPtr = buff; - addrPtr = (uint16_t)(void*)address; - ch = SPM_PAGESIZE / 2; - do { - uint16_t a; - a = *bufPtr++; - 3f06: 2c 91 ld r18, X - 3f08: 30 e0 ldi r19, 0x00 ; 0 - a |= (*bufPtr++) << 8; - 3f0a: 11 96 adiw r26, 0x01 ; 1 - 3f0c: 8c 91 ld r24, X - 3f0e: 11 97 sbiw r26, 0x01 ; 1 - 3f10: 90 e0 ldi r25, 0x00 ; 0 - 3f12: 98 2f mov r25, r24 - 3f14: 88 27 eor r24, r24 - 3f16: 82 2b or r24, r18 - 3f18: 93 2b or r25, r19 -#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) -#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) -#endif - -/* main program starts here */ -int main(void) { - 3f1a: 12 96 adiw r26, 0x02 ; 2 - ch = SPM_PAGESIZE / 2; - do { - uint16_t a; - a = *bufPtr++; - a |= (*bufPtr++) << 8; - __boot_page_fill_short((uint16_t)(void*)addrPtr,a); - 3f1c: fa 01 movw r30, r20 - 3f1e: 0c 01 movw r0, r24 - 3f20: 87 be out 0x37, r8 ; 55 - 3f22: e8 95 spm - 3f24: 11 24 eor r1, r1 - addrPtr += 2; - 3f26: 4e 5f subi r20, 0xFE ; 254 - 3f28: 5f 4f sbci r21, 0xFF ; 255 - } while (--ch); - 3f2a: f1 e0 ldi r31, 0x01 ; 1 - 3f2c: a0 38 cpi r26, 0x80 ; 128 - 3f2e: bf 07 cpc r27, r31 - 3f30: 51 f7 brne .-44 ; 0x3f06 - - // Write from programming buffer - __boot_page_write_short((uint16_t)(void*)address); - 3f32: f6 01 movw r30, r12 - 3f34: a7 be out 0x37, r10 ; 55 - 3f36: e8 95 spm - boot_spm_busy_wait(); - 3f38: 07 b6 in r0, 0x37 ; 55 - 3f3a: 00 fc sbrc r0, 0 - 3f3c: fd cf rjmp .-6 ; 0x3f38 - -#if defined(RWWSRE) - // Reenable read access to flash - boot_rww_enable(); - 3f3e: 97 be out 0x37, r9 ; 55 - 3f40: e8 95 spm - 3f42: 26 c0 rjmp .+76 ; 0x3f90 -#endif - - } - /* Read memory block mode, length is big endian. */ - else if(ch == STK_READ_PAGE) { - 3f44: 84 37 cpi r24, 0x74 ; 116 - 3f46: b1 f4 brne .+44 ; 0x3f74 - // READ PAGE - we only read flash - getch(); /* getlen() */ - 3f48: 2e d0 rcall .+92 ; 0x3fa6 - length = getch(); - 3f4a: 2d d0 rcall .+90 ; 0x3fa6 - 3f4c: f8 2e mov r15, r24 - getch(); - 3f4e: 2b d0 rcall .+86 ; 0x3fa6 - - verifySpace(); - 3f50: 3c d0 rcall .+120 ; 0x3fca - 3f52: f6 01 movw r30, r12 - 3f54: ef 2c mov r14, r15 - putch(result); - address++; - } - while (--length); -#else - do putch(pgm_read_byte_near(address++)); - 3f56: 8f 01 movw r16, r30 - 3f58: 0f 5f subi r16, 0xFF ; 255 - 3f5a: 1f 4f sbci r17, 0xFF ; 255 - 3f5c: 84 91 lpm r24, Z+ - 3f5e: 1b d0 rcall .+54 ; 0x3f96 - while (--length); - 3f60: ea 94 dec r14 - 3f62: f8 01 movw r30, r16 - 3f64: c1 f7 brne .-16 ; 0x3f56 -#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) -#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) -#endif - -/* main program starts here */ -int main(void) { - 3f66: 08 94 sec - 3f68: c1 1c adc r12, r1 - 3f6a: d1 1c adc r13, r1 - 3f6c: fa 94 dec r15 - 3f6e: cf 0c add r12, r15 - 3f70: d1 1c adc r13, r1 - 3f72: 0e c0 rjmp .+28 ; 0x3f90 -#endif -#endif - } - - /* Get device signature bytes */ - else if(ch == STK_READ_SIGN) { - 3f74: 85 37 cpi r24, 0x75 ; 117 - 3f76: 39 f4 brne .+14 ; 0x3f86 - // READ SIGN - return what Avrdude wants to hear - verifySpace(); - 3f78: 28 d0 rcall .+80 ; 0x3fca - putch(SIGNATURE_0); - 3f7a: 8e e1 ldi r24, 0x1E ; 30 - 3f7c: 0c d0 rcall .+24 ; 0x3f96 - putch(SIGNATURE_1); - 3f7e: 84 e9 ldi r24, 0x94 ; 148 - 3f80: 0a d0 rcall .+20 ; 0x3f96 - putch(SIGNATURE_2); - 3f82: 86 e0 ldi r24, 0x06 ; 6 - 3f84: 7a cf rjmp .-268 ; 0x3e7a - } - else if (ch == 'Q') { - 3f86: 81 35 cpi r24, 0x51 ; 81 - 3f88: 11 f4 brne .+4 ; 0x3f8e - // Adaboot no-wait mod - watchdogConfig(WATCHDOG_16MS); - 3f8a: 88 e0 ldi r24, 0x08 ; 8 - 3f8c: 18 d0 rcall .+48 ; 0x3fbe - verifySpace(); - } - else { - // This covers the response to commands like STK_ENTER_PROGMODE - verifySpace(); - 3f8e: 1d d0 rcall .+58 ; 0x3fca - } - putch(STK_OK); - 3f90: 80 e1 ldi r24, 0x10 ; 16 - 3f92: 01 d0 rcall .+2 ; 0x3f96 - 3f94: 65 cf rjmp .-310 ; 0x3e60 - -00003f96 : - } -} - -void putch(char ch) { - 3f96: 98 2f mov r25, r24 -#ifndef SOFT_UART - while (!(UCSR0A & _BV(UDRE0))); - 3f98: 80 91 c0 00 lds r24, 0x00C0 - 3f9c: 85 ff sbrs r24, 5 - 3f9e: fc cf rjmp .-8 ; 0x3f98 - UDR0 = ch; - 3fa0: 90 93 c6 00 sts 0x00C6, r25 - [uartBit] "I" (UART_TX_BIT) - : - "r25" - ); -#endif -} - 3fa4: 08 95 ret - -00003fa6 : - [uartBit] "I" (UART_RX_BIT) - : - "r25" -); -#else - while(!(UCSR0A & _BV(RXC0))) - 3fa6: 80 91 c0 00 lds r24, 0x00C0 - 3faa: 87 ff sbrs r24, 7 - 3fac: fc cf rjmp .-8 ; 0x3fa6 - ; - if (!(UCSR0A & _BV(FE0))) { - 3fae: 80 91 c0 00 lds r24, 0x00C0 - 3fb2: 84 fd sbrc r24, 4 - 3fb4: 01 c0 rjmp .+2 ; 0x3fb8 -} -#endif - -// Watchdog functions. These are only safe with interrupts turned off. -void watchdogReset() { - __asm__ __volatile__ ( - 3fb6: a8 95 wdr - * don't care that an invalid char is returned...) - */ - watchdogReset(); - } - - ch = UDR0; - 3fb8: 80 91 c6 00 lds r24, 0x00C6 - LED_PIN |= _BV(LED); -#endif -#endif - - return ch; -} - 3fbc: 08 95 ret - -00003fbe : - "wdr\n" - ); -} - -void watchdogConfig(uint8_t x) { - WDTCSR = _BV(WDCE) | _BV(WDE); - 3fbe: e0 e6 ldi r30, 0x60 ; 96 - 3fc0: f0 e0 ldi r31, 0x00 ; 0 - 3fc2: 98 e1 ldi r25, 0x18 ; 24 - 3fc4: 90 83 st Z, r25 - WDTCSR = x; - 3fc6: 80 83 st Z, r24 -} - 3fc8: 08 95 ret - -00003fca : - do getch(); while (--count); - verifySpace(); -} - -void verifySpace() { - if (getch() != CRC_EOP) { - 3fca: ed df rcall .-38 ; 0x3fa6 - 3fcc: 80 32 cpi r24, 0x20 ; 32 - 3fce: 19 f0 breq .+6 ; 0x3fd6 - watchdogConfig(WATCHDOG_16MS); // shorten WD timeout - 3fd0: 88 e0 ldi r24, 0x08 ; 8 - 3fd2: f5 df rcall .-22 ; 0x3fbe - 3fd4: ff cf rjmp .-2 ; 0x3fd4 - while (1) // and busy-loop so that WD causes - ; // a reset and app start. - } - putch(STK_INSYNC); - 3fd6: 84 e1 ldi r24, 0x14 ; 20 -} - 3fd8: de cf rjmp .-68 ; 0x3f96 - -00003fda : - ::[count] "M" (UART_B_VALUE) - ); -} -#endif - -void getNch(uint8_t count) { - 3fda: 1f 93 push r17 - 3fdc: 18 2f mov r17, r24 - do getch(); while (--count); - 3fde: e3 df rcall .-58 ; 0x3fa6 - 3fe0: 11 50 subi r17, 0x01 ; 1 - 3fe2: e9 f7 brne .-6 ; 0x3fde - verifySpace(); - 3fe4: f2 df rcall .-28 ; 0x3fca -} - 3fe6: 1f 91 pop r17 - 3fe8: 08 95 ret - -00003fea : - WDTCSR = _BV(WDCE) | _BV(WDE); - WDTCSR = x; -} - -void appStart() { - watchdogConfig(WATCHDOG_OFF); - 3fea: 80 e0 ldi r24, 0x00 ; 0 - 3fec: e8 df rcall .-48 ; 0x3fbe - __asm__ __volatile__ ( - 3fee: ee 27 eor r30, r30 - 3ff0: ff 27 eor r31, r31 - 3ff2: 09 94 ijmp diff --git a/bootloaders/optiboot/optiboot_atmega328-Mini.hex b/bootloaders/optiboot/optiboot_atmega328-Mini.hex deleted file mode 100644 index 02266ee..0000000 --- a/bootloaders/optiboot/optiboot_atmega328-Mini.hex +++ /dev/null @@ -1,33 +0,0 @@ -:107E000085E08093810082E08093C00088E18093C8 -:107E1000C10086E08093C20080E18093C40084B7F3 -:107E200014BE81FFD0D089E2C8D0259A86E020E335 -:107E30003CEF91E0309385002093840096BBB09B8B -:107E4000FECF1D9AA8958150A9F7DD24D394A5E013 -:107E5000EA2EF1E1FF2EA4D0813421F481E0BED0DE -:107E600083E024C0823411F484E103C0853419F422 -:107E700085E0B4D08AC08535A1F492D0082F10E0F7 -:107E800010930102009300028BD090E0982F882776 -:107E9000802B912B880F991F9093010280930002F1 -:107EA00073C0863529F484E099D080E071D06DC02C -:107EB000843609F043C07CD0E0910002F0910102C9 -:107EC00083E080935700E895C0E0D1E069D08993C2 -:107ED000809102028150809302028823B9F778D002 -:107EE00007B600FCFDCF4091000250910102A0E0D6 -:107EF000B1E02C9130E011968C91119790E0982F81 -:107F00008827822B932B1296FA010C01D0925700EE -:107F1000E89511244E5F5F4FF1E0A038BF0749F7A5 -:107F2000E0910002F0910102E0925700E89507B657 -:107F300000FCFDCFF0925700E89527C08437B9F4D4 -:107F400037D046D0E0910002F09101023196F093D3 -:107F50000102E09300023197E4918E2F19D08091B5 -:107F60000202815080930202882361F70EC0853798 -:107F700039F42ED08EE10CD085E90AD08FE096CF6F -:107F8000813511F488E019D023D080E101D063CF8E -:107F9000982F8091C00085FFFCCF9093C600089574 -:107FA000A8958091C00087FFFCCF8091C6000895FE -:107FB000F7DFF6DF80930202F3CFE0E6F0E098E12E -:107FC00090838083089580E0F8DFEE27FF270994EF -:107FD000E7DF803209F0F7DF84E1DACF1F93182F53 -:0C7FE000DFDF1150E9F7F4DF1F91089576 -:0400000300007E007B -:00000001FF diff --git a/bootloaders/optiboot/optiboot_atmega328.hex b/bootloaders/optiboot/optiboot_atmega328.hex deleted file mode 100644 index a219f08..0000000 --- a/bootloaders/optiboot/optiboot_atmega328.hex +++ /dev/null @@ -1,35 +0,0 @@ -:107E0000112484B714BE81FFF0D085E080938100F7 -:107E100082E08093C00088E18093C10086E0809377 -:107E2000C20080E18093C4008EE0C9D0259A86E02C -:107E300020E33CEF91E0309385002093840096BBD3 -:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4 -:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7 -:107E6000A2D0813461F49FD0082FAFD0023811F036 -:107E7000013811F484E001C083E08DD089C08234E0 -:107E800011F484E103C0853419F485E0A6D080C0E4 -:107E9000853579F488D0E82EFF2485D0082F10E0AE -:107EA000102F00270E291F29000F111F8ED06801E7 -:107EB0006FC0863521F484E090D080E0DECF843638 -:107EC00009F040C070D06FD0082F6DD080E0C81688 -:107ED00080E7D80618F4F601B7BEE895C0E0D1E017 -:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8 -:107EF00018F0F601B7BEE89568D007B600FCFDCFD4 -:107F0000A601A0E0B1E02C9130E011968C91119780 -:107F100090E0982F8827822B932B1296FA010C0160 -:107F200087BEE89511244E5F5F4FF1E0A038BF0790 -:107F300051F7F601A7BEE89507B600FCFDCF97BE46 -:107F4000E89526C08437B1F42ED02DD0F82E2BD052 -:107F50003CD0F601EF2C8F010F5F1F4F84911BD097 -:107F6000EA94F801C1F70894C11CD11CFA94CF0C13 -:107F7000D11C0EC0853739F428D08EE10CD085E9AC -:107F80000AD08FE07ACF813511F488E018D01DD067 -:107F900080E101D065CF982F8091C00085FFFCCF94 -:107FA0009093C60008958091C00087FFFCCF809118 -:107FB000C00084FD01C0A8958091C6000895E0E648 -:107FC000F0E098E1908380830895EDDF803219F02E -:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA -:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6 -:047FF000FF270994CA -:027FFE00040479 -:0400000300007E007B -:00000001FF diff --git a/bootloaders/optiboot/optiboot_atmega328.lst b/bootloaders/optiboot/optiboot_atmega328.lst deleted file mode 100644 index d9dd4cc..0000000 --- a/bootloaders/optiboot/optiboot_atmega328.lst +++ /dev/null @@ -1,598 +0,0 @@ - -optiboot_atmega328.elf: file format elf32-avr - -Sections: -Idx Name Size VMA LMA File off Algn - 0 .text 000001f4 00007e00 00007e00 00000054 2**1 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .version 00000002 00007ffe 00007ffe 00000248 2**0 - CONTENTS, READONLY - 2 .debug_aranges 00000028 00000000 00000000 0000024a 2**0 - CONTENTS, READONLY, DEBUGGING - 3 .debug_pubnames 0000005f 00000000 00000000 00000272 2**0 - CONTENTS, READONLY, DEBUGGING - 4 .debug_info 000002a8 00000000 00000000 000002d1 2**0 - CONTENTS, READONLY, DEBUGGING - 5 .debug_abbrev 00000178 00000000 00000000 00000579 2**0 - CONTENTS, READONLY, DEBUGGING - 6 .debug_line 00000488 00000000 00000000 000006f1 2**0 - CONTENTS, READONLY, DEBUGGING - 7 .debug_frame 00000080 00000000 00000000 00000b7c 2**2 - CONTENTS, READONLY, DEBUGGING - 8 .debug_str 0000014f 00000000 00000000 00000bfc 2**0 - CONTENTS, READONLY, DEBUGGING - 9 .debug_loc 000002d8 00000000 00000000 00000d4b 2**0 - CONTENTS, READONLY, DEBUGGING - 10 .debug_ranges 00000078 00000000 00000000 00001023 2**0 - CONTENTS, READONLY, DEBUGGING - -Disassembly of section .text: - -00007e00
: -#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) -#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) -#endif - -/* main program starts here */ -int main(void) { - 7e00: 11 24 eor r1, r1 -#ifdef __AVR_ATmega8__ - SP=RAMEND; // This is done by hardware reset -#endif - - // Adaboot no-wait mod - ch = MCUSR; - 7e02: 84 b7 in r24, 0x34 ; 52 - MCUSR = 0; - 7e04: 14 be out 0x34, r1 ; 52 - if (!(ch & _BV(EXTRF))) appStart(); - 7e06: 81 ff sbrs r24, 1 - 7e08: f0 d0 rcall .+480 ; 0x7fea - -#if LED_START_FLASHES > 0 - // Set up Timer 1 for timeout counter - TCCR1B = _BV(CS12) | _BV(CS10); // div 1024 - 7e0a: 85 e0 ldi r24, 0x05 ; 5 - 7e0c: 80 93 81 00 sts 0x0081, r24 - UCSRA = _BV(U2X); //Double speed mode USART - UCSRB = _BV(RXEN) | _BV(TXEN); // enable Rx & Tx - UCSRC = _BV(URSEL) | _BV(UCSZ1) | _BV(UCSZ0); // config USART; 8N1 - UBRRL = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 ); -#else - UCSR0A = _BV(U2X0); //Double speed mode USART0 - 7e10: 82 e0 ldi r24, 0x02 ; 2 - 7e12: 80 93 c0 00 sts 0x00C0, r24 - UCSR0B = _BV(RXEN0) | _BV(TXEN0); - 7e16: 88 e1 ldi r24, 0x18 ; 24 - 7e18: 80 93 c1 00 sts 0x00C1, r24 - UCSR0C = _BV(UCSZ00) | _BV(UCSZ01); - 7e1c: 86 e0 ldi r24, 0x06 ; 6 - 7e1e: 80 93 c2 00 sts 0x00C2, r24 - UBRR0L = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 ); - 7e22: 80 e1 ldi r24, 0x10 ; 16 - 7e24: 80 93 c4 00 sts 0x00C4, r24 -#endif -#endif - - // Set up watchdog to trigger after 500ms - watchdogConfig(WATCHDOG_1S); - 7e28: 8e e0 ldi r24, 0x0E ; 14 - 7e2a: c9 d0 rcall .+402 ; 0x7fbe - - /* Set LED pin as output */ - LED_DDR |= _BV(LED); - 7e2c: 25 9a sbi 0x04, 5 ; 4 - 7e2e: 86 e0 ldi r24, 0x06 ; 6 -} - -#if LED_START_FLASHES > 0 -void flash_led(uint8_t count) { - do { - TCNT1 = -(F_CPU/(1024*16)); - 7e30: 20 e3 ldi r18, 0x30 ; 48 - 7e32: 3c ef ldi r19, 0xFC ; 252 - TIFR1 = _BV(TOV1); - 7e34: 91 e0 ldi r25, 0x01 ; 1 -} - -#if LED_START_FLASHES > 0 -void flash_led(uint8_t count) { - do { - TCNT1 = -(F_CPU/(1024*16)); - 7e36: 30 93 85 00 sts 0x0085, r19 - 7e3a: 20 93 84 00 sts 0x0084, r18 - TIFR1 = _BV(TOV1); - 7e3e: 96 bb out 0x16, r25 ; 22 - while(!(TIFR1 & _BV(TOV1))); - 7e40: b0 9b sbis 0x16, 0 ; 22 - 7e42: fe cf rjmp .-4 ; 0x7e40 -#ifdef __AVR_ATmega8__ - LED_PORT ^= _BV(LED); -#else - LED_PIN |= _BV(LED); - 7e44: 1d 9a sbi 0x03, 5 ; 3 -} -#endif - -// Watchdog functions. These are only safe with interrupts turned off. -void watchdogReset() { - __asm__ __volatile__ ( - 7e46: a8 95 wdr - LED_PORT ^= _BV(LED); -#else - LED_PIN |= _BV(LED); -#endif - watchdogReset(); - } while (--count); - 7e48: 81 50 subi r24, 0x01 ; 1 - 7e4a: a9 f7 brne .-22 ; 0x7e36 - 7e4c: cc 24 eor r12, r12 - 7e4e: dd 24 eor r13, r13 - ch = SPM_PAGESIZE / 2; - do { - uint16_t a; - a = *bufPtr++; - a |= (*bufPtr++) << 8; - __boot_page_fill_short((uint16_t)(void*)addrPtr,a); - 7e50: 88 24 eor r8, r8 - 7e52: 83 94 inc r8 - addrPtr += 2; - } while (--ch); - - // Write from programming buffer - __boot_page_write_short((uint16_t)(void*)address); - 7e54: b5 e0 ldi r27, 0x05 ; 5 - 7e56: ab 2e mov r10, r27 - boot_spm_busy_wait(); - -#if defined(RWWSRE) - // Reenable read access to flash - boot_rww_enable(); - 7e58: a1 e1 ldi r26, 0x11 ; 17 - 7e5a: 9a 2e mov r9, r26 - do *bufPtr++ = getch(); - while (--length); - - // If we are in NRWW section, page erase has to be delayed until now. - // Todo: Take RAMPZ into account - if (address >= NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - 7e5c: f3 e0 ldi r31, 0x03 ; 3 - 7e5e: bf 2e mov r11, r31 -#endif - - /* Forever loop */ - for (;;) { - /* get character from UART */ - ch = getch(); - 7e60: a2 d0 rcall .+324 ; 0x7fa6 - - if(ch == STK_GET_PARAMETER) { - 7e62: 81 34 cpi r24, 0x41 ; 65 - 7e64: 61 f4 brne .+24 ; 0x7e7e - unsigned char which = getch(); - 7e66: 9f d0 rcall .+318 ; 0x7fa6 - 7e68: 08 2f mov r16, r24 - verifySpace(); - 7e6a: af d0 rcall .+350 ; 0x7fca - if (which == 0x82) { - 7e6c: 02 38 cpi r16, 0x82 ; 130 - 7e6e: 11 f0 breq .+4 ; 0x7e74 - /* - * Send optiboot version as "minor SW version" - */ - putch(OPTIBOOT_MINVER); - } else if (which == 0x81) { - 7e70: 01 38 cpi r16, 0x81 ; 129 - 7e72: 11 f4 brne .+4 ; 0x7e78 - putch(OPTIBOOT_MAJVER); - 7e74: 84 e0 ldi r24, 0x04 ; 4 - 7e76: 01 c0 rjmp .+2 ; 0x7e7a - } else { - /* - * GET PARAMETER returns a generic 0x03 reply for - * other parameters - enough to keep Avrdude happy - */ - putch(0x03); - 7e78: 83 e0 ldi r24, 0x03 ; 3 - 7e7a: 8d d0 rcall .+282 ; 0x7f96 - 7e7c: 89 c0 rjmp .+274 ; 0x7f90 - } - } - else if(ch == STK_SET_DEVICE) { - 7e7e: 82 34 cpi r24, 0x42 ; 66 - 7e80: 11 f4 brne .+4 ; 0x7e86 - // SET DEVICE is ignored - getNch(20); - 7e82: 84 e1 ldi r24, 0x14 ; 20 - 7e84: 03 c0 rjmp .+6 ; 0x7e8c - } - else if(ch == STK_SET_DEVICE_EXT) { - 7e86: 85 34 cpi r24, 0x45 ; 69 - 7e88: 19 f4 brne .+6 ; 0x7e90 - // SET DEVICE EXT is ignored - getNch(5); - 7e8a: 85 e0 ldi r24, 0x05 ; 5 - 7e8c: a6 d0 rcall .+332 ; 0x7fda - 7e8e: 80 c0 rjmp .+256 ; 0x7f90 - } - else if(ch == STK_LOAD_ADDRESS) { - 7e90: 85 35 cpi r24, 0x55 ; 85 - 7e92: 79 f4 brne .+30 ; 0x7eb2 - // LOAD ADDRESS - uint16_t newAddress; - newAddress = getch(); - 7e94: 88 d0 rcall .+272 ; 0x7fa6 - newAddress = (newAddress & 0xff) | (getch() << 8); - 7e96: e8 2e mov r14, r24 - 7e98: ff 24 eor r15, r15 - 7e9a: 85 d0 rcall .+266 ; 0x7fa6 - 7e9c: 08 2f mov r16, r24 - 7e9e: 10 e0 ldi r17, 0x00 ; 0 - 7ea0: 10 2f mov r17, r16 - 7ea2: 00 27 eor r16, r16 - 7ea4: 0e 29 or r16, r14 - 7ea6: 1f 29 or r17, r15 -#ifdef RAMPZ - // Transfer top bit to RAMPZ - RAMPZ = (newAddress & 0x8000) ? 1 : 0; -#endif - newAddress += newAddress; // Convert from word address to byte address - 7ea8: 00 0f add r16, r16 - 7eaa: 11 1f adc r17, r17 - address = newAddress; - verifySpace(); - 7eac: 8e d0 rcall .+284 ; 0x7fca - 7eae: 68 01 movw r12, r16 - 7eb0: 6f c0 rjmp .+222 ; 0x7f90 - } - else if(ch == STK_UNIVERSAL) { - 7eb2: 86 35 cpi r24, 0x56 ; 86 - 7eb4: 21 f4 brne .+8 ; 0x7ebe - // UNIVERSAL command is ignored - getNch(4); - 7eb6: 84 e0 ldi r24, 0x04 ; 4 - 7eb8: 90 d0 rcall .+288 ; 0x7fda - putch(0x00); - 7eba: 80 e0 ldi r24, 0x00 ; 0 - 7ebc: de cf rjmp .-68 ; 0x7e7a - } - /* Write memory, length is big endian and is in bytes */ - else if(ch == STK_PROG_PAGE) { - 7ebe: 84 36 cpi r24, 0x64 ; 100 - 7ec0: 09 f0 breq .+2 ; 0x7ec4 - 7ec2: 40 c0 rjmp .+128 ; 0x7f44 - // PROGRAM PAGE - we support flash programming only, not EEPROM - uint8_t *bufPtr; - uint16_t addrPtr; - - getch(); /* getlen() */ - 7ec4: 70 d0 rcall .+224 ; 0x7fa6 - length = getch(); - 7ec6: 6f d0 rcall .+222 ; 0x7fa6 - 7ec8: 08 2f mov r16, r24 - getch(); - 7eca: 6d d0 rcall .+218 ; 0x7fa6 - - // If we are in RWW section, immediately start page erase - if (address < NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - 7ecc: 80 e0 ldi r24, 0x00 ; 0 - 7ece: c8 16 cp r12, r24 - 7ed0: 80 e7 ldi r24, 0x70 ; 112 - 7ed2: d8 06 cpc r13, r24 - 7ed4: 18 f4 brcc .+6 ; 0x7edc - 7ed6: f6 01 movw r30, r12 - 7ed8: b7 be out 0x37, r11 ; 55 - 7eda: e8 95 spm - 7edc: c0 e0 ldi r28, 0x00 ; 0 - 7ede: d1 e0 ldi r29, 0x01 ; 1 - - // While that is going on, read in page contents - bufPtr = buff; - do *bufPtr++ = getch(); - 7ee0: 62 d0 rcall .+196 ; 0x7fa6 - 7ee2: 89 93 st Y+, r24 - while (--length); - 7ee4: 0c 17 cp r16, r28 - 7ee6: e1 f7 brne .-8 ; 0x7ee0 - - // If we are in NRWW section, page erase has to be delayed until now. - // Todo: Take RAMPZ into account - if (address >= NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - 7ee8: f0 e0 ldi r31, 0x00 ; 0 - 7eea: cf 16 cp r12, r31 - 7eec: f0 e7 ldi r31, 0x70 ; 112 - 7eee: df 06 cpc r13, r31 - 7ef0: 18 f0 brcs .+6 ; 0x7ef8 - 7ef2: f6 01 movw r30, r12 - 7ef4: b7 be out 0x37, r11 ; 55 - 7ef6: e8 95 spm - - // Read command terminator, start reply - verifySpace(); - 7ef8: 68 d0 rcall .+208 ; 0x7fca - - // If only a partial page is to be programmed, the erase might not be complete. - // So check that here - boot_spm_busy_wait(); - 7efa: 07 b6 in r0, 0x37 ; 55 - 7efc: 00 fc sbrc r0, 0 - 7efe: fd cf rjmp .-6 ; 0x7efa - 7f00: a6 01 movw r20, r12 - 7f02: a0 e0 ldi r26, 0x00 ; 0 - 7f04: b1 e0 ldi r27, 0x01 ; 1 - bufPtr = buff; - addrPtr = (uint16_t)(void*)address; - ch = SPM_PAGESIZE / 2; - do { - uint16_t a; - a = *bufPtr++; - 7f06: 2c 91 ld r18, X - 7f08: 30 e0 ldi r19, 0x00 ; 0 - a |= (*bufPtr++) << 8; - 7f0a: 11 96 adiw r26, 0x01 ; 1 - 7f0c: 8c 91 ld r24, X - 7f0e: 11 97 sbiw r26, 0x01 ; 1 - 7f10: 90 e0 ldi r25, 0x00 ; 0 - 7f12: 98 2f mov r25, r24 - 7f14: 88 27 eor r24, r24 - 7f16: 82 2b or r24, r18 - 7f18: 93 2b or r25, r19 -#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) -#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) -#endif - -/* main program starts here */ -int main(void) { - 7f1a: 12 96 adiw r26, 0x02 ; 2 - ch = SPM_PAGESIZE / 2; - do { - uint16_t a; - a = *bufPtr++; - a |= (*bufPtr++) << 8; - __boot_page_fill_short((uint16_t)(void*)addrPtr,a); - 7f1c: fa 01 movw r30, r20 - 7f1e: 0c 01 movw r0, r24 - 7f20: 87 be out 0x37, r8 ; 55 - 7f22: e8 95 spm - 7f24: 11 24 eor r1, r1 - addrPtr += 2; - 7f26: 4e 5f subi r20, 0xFE ; 254 - 7f28: 5f 4f sbci r21, 0xFF ; 255 - } while (--ch); - 7f2a: f1 e0 ldi r31, 0x01 ; 1 - 7f2c: a0 38 cpi r26, 0x80 ; 128 - 7f2e: bf 07 cpc r27, r31 - 7f30: 51 f7 brne .-44 ; 0x7f06 - - // Write from programming buffer - __boot_page_write_short((uint16_t)(void*)address); - 7f32: f6 01 movw r30, r12 - 7f34: a7 be out 0x37, r10 ; 55 - 7f36: e8 95 spm - boot_spm_busy_wait(); - 7f38: 07 b6 in r0, 0x37 ; 55 - 7f3a: 00 fc sbrc r0, 0 - 7f3c: fd cf rjmp .-6 ; 0x7f38 - -#if defined(RWWSRE) - // Reenable read access to flash - boot_rww_enable(); - 7f3e: 97 be out 0x37, r9 ; 55 - 7f40: e8 95 spm - 7f42: 26 c0 rjmp .+76 ; 0x7f90 -#endif - - } - /* Read memory block mode, length is big endian. */ - else if(ch == STK_READ_PAGE) { - 7f44: 84 37 cpi r24, 0x74 ; 116 - 7f46: b1 f4 brne .+44 ; 0x7f74 - // READ PAGE - we only read flash - getch(); /* getlen() */ - 7f48: 2e d0 rcall .+92 ; 0x7fa6 - length = getch(); - 7f4a: 2d d0 rcall .+90 ; 0x7fa6 - 7f4c: f8 2e mov r15, r24 - getch(); - 7f4e: 2b d0 rcall .+86 ; 0x7fa6 - - verifySpace(); - 7f50: 3c d0 rcall .+120 ; 0x7fca - 7f52: f6 01 movw r30, r12 - 7f54: ef 2c mov r14, r15 - putch(result); - address++; - } - while (--length); -#else - do putch(pgm_read_byte_near(address++)); - 7f56: 8f 01 movw r16, r30 - 7f58: 0f 5f subi r16, 0xFF ; 255 - 7f5a: 1f 4f sbci r17, 0xFF ; 255 - 7f5c: 84 91 lpm r24, Z+ - 7f5e: 1b d0 rcall .+54 ; 0x7f96 - while (--length); - 7f60: ea 94 dec r14 - 7f62: f8 01 movw r30, r16 - 7f64: c1 f7 brne .-16 ; 0x7f56 -#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) -#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) -#endif - -/* main program starts here */ -int main(void) { - 7f66: 08 94 sec - 7f68: c1 1c adc r12, r1 - 7f6a: d1 1c adc r13, r1 - 7f6c: fa 94 dec r15 - 7f6e: cf 0c add r12, r15 - 7f70: d1 1c adc r13, r1 - 7f72: 0e c0 rjmp .+28 ; 0x7f90 -#endif -#endif - } - - /* Get device signature bytes */ - else if(ch == STK_READ_SIGN) { - 7f74: 85 37 cpi r24, 0x75 ; 117 - 7f76: 39 f4 brne .+14 ; 0x7f86 - // READ SIGN - return what Avrdude wants to hear - verifySpace(); - 7f78: 28 d0 rcall .+80 ; 0x7fca - putch(SIGNATURE_0); - 7f7a: 8e e1 ldi r24, 0x1E ; 30 - 7f7c: 0c d0 rcall .+24 ; 0x7f96 - putch(SIGNATURE_1); - 7f7e: 85 e9 ldi r24, 0x95 ; 149 - 7f80: 0a d0 rcall .+20 ; 0x7f96 - putch(SIGNATURE_2); - 7f82: 8f e0 ldi r24, 0x0F ; 15 - 7f84: 7a cf rjmp .-268 ; 0x7e7a - } - else if (ch == 'Q') { - 7f86: 81 35 cpi r24, 0x51 ; 81 - 7f88: 11 f4 brne .+4 ; 0x7f8e - // Adaboot no-wait mod - watchdogConfig(WATCHDOG_16MS); - 7f8a: 88 e0 ldi r24, 0x08 ; 8 - 7f8c: 18 d0 rcall .+48 ; 0x7fbe - verifySpace(); - } - else { - // This covers the response to commands like STK_ENTER_PROGMODE - verifySpace(); - 7f8e: 1d d0 rcall .+58 ; 0x7fca - } - putch(STK_OK); - 7f90: 80 e1 ldi r24, 0x10 ; 16 - 7f92: 01 d0 rcall .+2 ; 0x7f96 - 7f94: 65 cf rjmp .-310 ; 0x7e60 - -00007f96 : - } -} - -void putch(char ch) { - 7f96: 98 2f mov r25, r24 -#ifndef SOFT_UART - while (!(UCSR0A & _BV(UDRE0))); - 7f98: 80 91 c0 00 lds r24, 0x00C0 - 7f9c: 85 ff sbrs r24, 5 - 7f9e: fc cf rjmp .-8 ; 0x7f98 - UDR0 = ch; - 7fa0: 90 93 c6 00 sts 0x00C6, r25 - [uartBit] "I" (UART_TX_BIT) - : - "r25" - ); -#endif -} - 7fa4: 08 95 ret - -00007fa6 : - [uartBit] "I" (UART_RX_BIT) - : - "r25" -); -#else - while(!(UCSR0A & _BV(RXC0))) - 7fa6: 80 91 c0 00 lds r24, 0x00C0 - 7faa: 87 ff sbrs r24, 7 - 7fac: fc cf rjmp .-8 ; 0x7fa6 - ; - if (!(UCSR0A & _BV(FE0))) { - 7fae: 80 91 c0 00 lds r24, 0x00C0 - 7fb2: 84 fd sbrc r24, 4 - 7fb4: 01 c0 rjmp .+2 ; 0x7fb8 -} -#endif - -// Watchdog functions. These are only safe with interrupts turned off. -void watchdogReset() { - __asm__ __volatile__ ( - 7fb6: a8 95 wdr - * don't care that an invalid char is returned...) - */ - watchdogReset(); - } - - ch = UDR0; - 7fb8: 80 91 c6 00 lds r24, 0x00C6 - LED_PIN |= _BV(LED); -#endif -#endif - - return ch; -} - 7fbc: 08 95 ret - -00007fbe : - "wdr\n" - ); -} - -void watchdogConfig(uint8_t x) { - WDTCSR = _BV(WDCE) | _BV(WDE); - 7fbe: e0 e6 ldi r30, 0x60 ; 96 - 7fc0: f0 e0 ldi r31, 0x00 ; 0 - 7fc2: 98 e1 ldi r25, 0x18 ; 24 - 7fc4: 90 83 st Z, r25 - WDTCSR = x; - 7fc6: 80 83 st Z, r24 -} - 7fc8: 08 95 ret - -00007fca : - do getch(); while (--count); - verifySpace(); -} - -void verifySpace() { - if (getch() != CRC_EOP) { - 7fca: ed df rcall .-38 ; 0x7fa6 - 7fcc: 80 32 cpi r24, 0x20 ; 32 - 7fce: 19 f0 breq .+6 ; 0x7fd6 - watchdogConfig(WATCHDOG_16MS); // shorten WD timeout - 7fd0: 88 e0 ldi r24, 0x08 ; 8 - 7fd2: f5 df rcall .-22 ; 0x7fbe - 7fd4: ff cf rjmp .-2 ; 0x7fd4 - while (1) // and busy-loop so that WD causes - ; // a reset and app start. - } - putch(STK_INSYNC); - 7fd6: 84 e1 ldi r24, 0x14 ; 20 -} - 7fd8: de cf rjmp .-68 ; 0x7f96 - -00007fda : - ::[count] "M" (UART_B_VALUE) - ); -} -#endif - -void getNch(uint8_t count) { - 7fda: 1f 93 push r17 - 7fdc: 18 2f mov r17, r24 - do getch(); while (--count); - 7fde: e3 df rcall .-58 ; 0x7fa6 - 7fe0: 11 50 subi r17, 0x01 ; 1 - 7fe2: e9 f7 brne .-6 ; 0x7fde - verifySpace(); - 7fe4: f2 df rcall .-28 ; 0x7fca -} - 7fe6: 1f 91 pop r17 - 7fe8: 08 95 ret - -00007fea : - WDTCSR = _BV(WDCE) | _BV(WDE); - WDTCSR = x; -} - -void appStart() { - watchdogConfig(WATCHDOG_OFF); - 7fea: 80 e0 ldi r24, 0x00 ; 0 - 7fec: e8 df rcall .-48 ; 0x7fbe - __asm__ __volatile__ ( - 7fee: ee 27 eor r30, r30 - 7ff0: ff 27 eor r31, r31 - 7ff2: 09 94 ijmp diff --git a/bootloaders/optiboot/optiboot_atmega8.hex b/bootloaders/optiboot/optiboot_atmega8.hex deleted file mode 100644 index b04f276..0000000 --- a/bootloaders/optiboot/optiboot_atmega8.hex +++ /dev/null @@ -1,33 +0,0 @@ -:101E000011248FE594E09EBF8DBF84B714BE81FF7F -:101E1000E2D085E08EBD82E08BB988E18AB986E8A0 -:101E200080BD80E189B98EE0C2D0BD9A96E020E302 -:101E30003CEF54E040E23DBD2CBD58BF08B602FE69 -:101E4000FDCF88B3842788BBA8959150A1F7CC24F7 -:101E5000DD2488248394B5E0AB2EA1E19A2EF3E033 -:101E6000BF2E9ED0813461F49BD0082FA4D00238BD -:101E700011F0013811F484E001C083E08DD089C0F5 -:101E8000823411F484E103C0853419F485E09BD0D9 -:101E900080C0853579F484D0E82EFF2481D0082FC6 -:101EA00010E0102F00270E291F29000F111F83D0CB -:101EB00068016FC0863521F484E085D080E0DECFF4 -:101EC000843609F040C06CD06BD0082F69D080E018 -:101ED000C81688E1D80618F4F601B7BEE895C0E048 -:101EE000D1E05ED089930C17E1F7F0E0CF16F8E16E -:101EF000DF0618F0F601B7BEE8955DD007B600FC26 -:101F0000FDCFA601A0E0B1E02C9130E011968C91BC -:101F1000119790E0982F8827822B932B1296FA0125 -:101F20000C0187BEE89511244E5F5F4FF1E0A034AD -:101F3000BF0751F7F601A7BEE89507B600FCFDCF35 -:101F400097BEE89526C08437B1F42AD029D0F82E60 -:101F500027D031D0F601EF2C8F010F5F1F4F8491F6 -:101F60001BD0EA94F801C1F70894C11CD11CFA9463 -:101F7000CF0CD11C0EC0853739F41DD08EE10CD0AA -:101F800083E90AD087E07ACF813511F488E00FD059 -:101F900012D080E101D065CF5D9BFECF8CB9089552 -:101FA0005F9BFECF5C9901C0A8958CB1089598E124 -:101FB00091BD81BD0895F4DF803219F088E0F7DF2C -:101FC000FFCF84E1E9CF1F93182FEADF1150E9F723 -:101FD000F2DF1F91089580E0EADFEE27FF270994E2 -:021FFE000404D9 -:0400000300001E00DB -:00000001FF diff --git a/bootloaders/optiboot/optiboot_atmega8.lst b/bootloaders/optiboot/optiboot_atmega8.lst deleted file mode 100644 index d921895..0000000 --- a/bootloaders/optiboot/optiboot_atmega8.lst +++ /dev/null @@ -1,604 +0,0 @@ - -optiboot_atmega8.elf: file format elf32-avr - -Sections: -Idx Name Size VMA LMA File off Algn - 0 .text 000001e0 00001e00 00001e00 00000054 2**1 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .version 00000002 00001ffe 00001ffe 00000234 2**0 - CONTENTS, READONLY - 2 .debug_aranges 00000028 00000000 00000000 00000236 2**0 - CONTENTS, READONLY, DEBUGGING - 3 .debug_pubnames 0000005f 00000000 00000000 0000025e 2**0 - CONTENTS, READONLY, DEBUGGING - 4 .debug_info 000002a6 00000000 00000000 000002bd 2**0 - CONTENTS, READONLY, DEBUGGING - 5 .debug_abbrev 00000169 00000000 00000000 00000563 2**0 - CONTENTS, READONLY, DEBUGGING - 6 .debug_line 00000498 00000000 00000000 000006cc 2**0 - CONTENTS, READONLY, DEBUGGING - 7 .debug_frame 00000080 00000000 00000000 00000b64 2**2 - CONTENTS, READONLY, DEBUGGING - 8 .debug_str 0000014f 00000000 00000000 00000be4 2**0 - CONTENTS, READONLY, DEBUGGING - 9 .debug_loc 000002ba 00000000 00000000 00000d33 2**0 - CONTENTS, READONLY, DEBUGGING - 10 .debug_ranges 00000078 00000000 00000000 00000fed 2**0 - CONTENTS, READONLY, DEBUGGING - -Disassembly of section .text: - -00001e00
: -#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) -#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) -#endif - -/* main program starts here */ -int main(void) { - 1e00: 11 24 eor r1, r1 - // - // If not, uncomment the following instructions: - // cli(); - asm volatile ("clr __zero_reg__"); -#ifdef __AVR_ATmega8__ - SP=RAMEND; // This is done by hardware reset - 1e02: 8f e5 ldi r24, 0x5F ; 95 - 1e04: 94 e0 ldi r25, 0x04 ; 4 - 1e06: 9e bf out 0x3e, r25 ; 62 - 1e08: 8d bf out 0x3d, r24 ; 61 -#endif - - // Adaboot no-wait mod - ch = MCUSR; - 1e0a: 84 b7 in r24, 0x34 ; 52 - MCUSR = 0; - 1e0c: 14 be out 0x34, r1 ; 52 - if (!(ch & _BV(EXTRF))) appStart(); - 1e0e: 81 ff sbrs r24, 1 - 1e10: e2 d0 rcall .+452 ; 0x1fd6 - -#if LED_START_FLASHES > 0 - // Set up Timer 1 for timeout counter - TCCR1B = _BV(CS12) | _BV(CS10); // div 1024 - 1e12: 85 e0 ldi r24, 0x05 ; 5 - 1e14: 8e bd out 0x2e, r24 ; 46 -#endif -#ifndef SOFT_UART -#ifdef __AVR_ATmega8__ - UCSRA = _BV(U2X); //Double speed mode USART - 1e16: 82 e0 ldi r24, 0x02 ; 2 - 1e18: 8b b9 out 0x0b, r24 ; 11 - UCSRB = _BV(RXEN) | _BV(TXEN); // enable Rx & Tx - 1e1a: 88 e1 ldi r24, 0x18 ; 24 - 1e1c: 8a b9 out 0x0a, r24 ; 10 - UCSRC = _BV(URSEL) | _BV(UCSZ1) | _BV(UCSZ0); // config USART; 8N1 - 1e1e: 86 e8 ldi r24, 0x86 ; 134 - 1e20: 80 bd out 0x20, r24 ; 32 - UBRRL = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 ); - 1e22: 80 e1 ldi r24, 0x10 ; 16 - 1e24: 89 b9 out 0x09, r24 ; 9 - UBRR0L = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 ); -#endif -#endif - - // Set up watchdog to trigger after 500ms - watchdogConfig(WATCHDOG_1S); - 1e26: 8e e0 ldi r24, 0x0E ; 14 - 1e28: c2 d0 rcall .+388 ; 0x1fae - - /* Set LED pin as output */ - LED_DDR |= _BV(LED); - 1e2a: bd 9a sbi 0x17, 5 ; 23 - 1e2c: 96 e0 ldi r25, 0x06 ; 6 -} - -#if LED_START_FLASHES > 0 -void flash_led(uint8_t count) { - do { - TCNT1 = -(F_CPU/(1024*16)); - 1e2e: 20 e3 ldi r18, 0x30 ; 48 - 1e30: 3c ef ldi r19, 0xFC ; 252 - TIFR1 = _BV(TOV1); - 1e32: 54 e0 ldi r21, 0x04 ; 4 - while(!(TIFR1 & _BV(TOV1))); -#ifdef __AVR_ATmega8__ - LED_PORT ^= _BV(LED); - 1e34: 40 e2 ldi r20, 0x20 ; 32 -} - -#if LED_START_FLASHES > 0 -void flash_led(uint8_t count) { - do { - TCNT1 = -(F_CPU/(1024*16)); - 1e36: 3d bd out 0x2d, r19 ; 45 - 1e38: 2c bd out 0x2c, r18 ; 44 - TIFR1 = _BV(TOV1); - 1e3a: 58 bf out 0x38, r21 ; 56 - while(!(TIFR1 & _BV(TOV1))); - 1e3c: 08 b6 in r0, 0x38 ; 56 - 1e3e: 02 fe sbrs r0, 2 - 1e40: fd cf rjmp .-6 ; 0x1e3c -#ifdef __AVR_ATmega8__ - LED_PORT ^= _BV(LED); - 1e42: 88 b3 in r24, 0x18 ; 24 - 1e44: 84 27 eor r24, r20 - 1e46: 88 bb out 0x18, r24 ; 24 -} -#endif - -// Watchdog functions. These are only safe with interrupts turned off. -void watchdogReset() { - __asm__ __volatile__ ( - 1e48: a8 95 wdr - LED_PORT ^= _BV(LED); -#else - LED_PIN |= _BV(LED); -#endif - watchdogReset(); - } while (--count); - 1e4a: 91 50 subi r25, 0x01 ; 1 - 1e4c: a1 f7 brne .-24 ; 0x1e36 - 1e4e: cc 24 eor r12, r12 - 1e50: dd 24 eor r13, r13 - ch = SPM_PAGESIZE / 2; - do { - uint16_t a; - a = *bufPtr++; - a |= (*bufPtr++) << 8; - __boot_page_fill_short((uint16_t)(void*)addrPtr,a); - 1e52: 88 24 eor r8, r8 - 1e54: 83 94 inc r8 - addrPtr += 2; - } while (--ch); - - // Write from programming buffer - __boot_page_write_short((uint16_t)(void*)address); - 1e56: b5 e0 ldi r27, 0x05 ; 5 - 1e58: ab 2e mov r10, r27 - boot_spm_busy_wait(); - -#if defined(RWWSRE) - // Reenable read access to flash - boot_rww_enable(); - 1e5a: a1 e1 ldi r26, 0x11 ; 17 - 1e5c: 9a 2e mov r9, r26 - do *bufPtr++ = getch(); - while (--length); - - // If we are in NRWW section, page erase has to be delayed until now. - // Todo: Take RAMPZ into account - if (address >= NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - 1e5e: f3 e0 ldi r31, 0x03 ; 3 - 1e60: bf 2e mov r11, r31 -#endif - - /* Forever loop */ - for (;;) { - /* get character from UART */ - ch = getch(); - 1e62: 9e d0 rcall .+316 ; 0x1fa0 - - if(ch == STK_GET_PARAMETER) { - 1e64: 81 34 cpi r24, 0x41 ; 65 - 1e66: 61 f4 brne .+24 ; 0x1e80 - unsigned char which = getch(); - 1e68: 9b d0 rcall .+310 ; 0x1fa0 - 1e6a: 08 2f mov r16, r24 - verifySpace(); - 1e6c: a4 d0 rcall .+328 ; 0x1fb6 - if (which == 0x82) { - 1e6e: 02 38 cpi r16, 0x82 ; 130 - 1e70: 11 f0 breq .+4 ; 0x1e76 - /* - * Send optiboot version as "minor SW version" - */ - putch(OPTIBOOT_MINVER); - } else if (which == 0x81) { - 1e72: 01 38 cpi r16, 0x81 ; 129 - 1e74: 11 f4 brne .+4 ; 0x1e7a - putch(OPTIBOOT_MAJVER); - 1e76: 84 e0 ldi r24, 0x04 ; 4 - 1e78: 01 c0 rjmp .+2 ; 0x1e7c - } else { - /* - * GET PARAMETER returns a generic 0x03 reply for - * other parameters - enough to keep Avrdude happy - */ - putch(0x03); - 1e7a: 83 e0 ldi r24, 0x03 ; 3 - 1e7c: 8d d0 rcall .+282 ; 0x1f98 - 1e7e: 89 c0 rjmp .+274 ; 0x1f92 - } - } - else if(ch == STK_SET_DEVICE) { - 1e80: 82 34 cpi r24, 0x42 ; 66 - 1e82: 11 f4 brne .+4 ; 0x1e88 - // SET DEVICE is ignored - getNch(20); - 1e84: 84 e1 ldi r24, 0x14 ; 20 - 1e86: 03 c0 rjmp .+6 ; 0x1e8e - } - else if(ch == STK_SET_DEVICE_EXT) { - 1e88: 85 34 cpi r24, 0x45 ; 69 - 1e8a: 19 f4 brne .+6 ; 0x1e92 - // SET DEVICE EXT is ignored - getNch(5); - 1e8c: 85 e0 ldi r24, 0x05 ; 5 - 1e8e: 9b d0 rcall .+310 ; 0x1fc6 - 1e90: 80 c0 rjmp .+256 ; 0x1f92 - } - else if(ch == STK_LOAD_ADDRESS) { - 1e92: 85 35 cpi r24, 0x55 ; 85 - 1e94: 79 f4 brne .+30 ; 0x1eb4 - // LOAD ADDRESS - uint16_t newAddress; - newAddress = getch(); - 1e96: 84 d0 rcall .+264 ; 0x1fa0 - newAddress = (newAddress & 0xff) | (getch() << 8); - 1e98: e8 2e mov r14, r24 - 1e9a: ff 24 eor r15, r15 - 1e9c: 81 d0 rcall .+258 ; 0x1fa0 - 1e9e: 08 2f mov r16, r24 - 1ea0: 10 e0 ldi r17, 0x00 ; 0 - 1ea2: 10 2f mov r17, r16 - 1ea4: 00 27 eor r16, r16 - 1ea6: 0e 29 or r16, r14 - 1ea8: 1f 29 or r17, r15 -#ifdef RAMPZ - // Transfer top bit to RAMPZ - RAMPZ = (newAddress & 0x8000) ? 1 : 0; -#endif - newAddress += newAddress; // Convert from word address to byte address - 1eaa: 00 0f add r16, r16 - 1eac: 11 1f adc r17, r17 - address = newAddress; - verifySpace(); - 1eae: 83 d0 rcall .+262 ; 0x1fb6 - 1eb0: 68 01 movw r12, r16 - 1eb2: 6f c0 rjmp .+222 ; 0x1f92 - } - else if(ch == STK_UNIVERSAL) { - 1eb4: 86 35 cpi r24, 0x56 ; 86 - 1eb6: 21 f4 brne .+8 ; 0x1ec0 - // UNIVERSAL command is ignored - getNch(4); - 1eb8: 84 e0 ldi r24, 0x04 ; 4 - 1eba: 85 d0 rcall .+266 ; 0x1fc6 - putch(0x00); - 1ebc: 80 e0 ldi r24, 0x00 ; 0 - 1ebe: de cf rjmp .-68 ; 0x1e7c - } - /* Write memory, length is big endian and is in bytes */ - else if(ch == STK_PROG_PAGE) { - 1ec0: 84 36 cpi r24, 0x64 ; 100 - 1ec2: 09 f0 breq .+2 ; 0x1ec6 - 1ec4: 40 c0 rjmp .+128 ; 0x1f46 - // PROGRAM PAGE - we support flash programming only, not EEPROM - uint8_t *bufPtr; - uint16_t addrPtr; - - getch(); /* getlen() */ - 1ec6: 6c d0 rcall .+216 ; 0x1fa0 - length = getch(); - 1ec8: 6b d0 rcall .+214 ; 0x1fa0 - 1eca: 08 2f mov r16, r24 - getch(); - 1ecc: 69 d0 rcall .+210 ; 0x1fa0 - - // If we are in RWW section, immediately start page erase - if (address < NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - 1ece: 80 e0 ldi r24, 0x00 ; 0 - 1ed0: c8 16 cp r12, r24 - 1ed2: 88 e1 ldi r24, 0x18 ; 24 - 1ed4: d8 06 cpc r13, r24 - 1ed6: 18 f4 brcc .+6 ; 0x1ede - 1ed8: f6 01 movw r30, r12 - 1eda: b7 be out 0x37, r11 ; 55 - 1edc: e8 95 spm - 1ede: c0 e0 ldi r28, 0x00 ; 0 - 1ee0: d1 e0 ldi r29, 0x01 ; 1 - - // While that is going on, read in page contents - bufPtr = buff; - do *bufPtr++ = getch(); - 1ee2: 5e d0 rcall .+188 ; 0x1fa0 - 1ee4: 89 93 st Y+, r24 - while (--length); - 1ee6: 0c 17 cp r16, r28 - 1ee8: e1 f7 brne .-8 ; 0x1ee2 - - // If we are in NRWW section, page erase has to be delayed until now. - // Todo: Take RAMPZ into account - if (address >= NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); - 1eea: f0 e0 ldi r31, 0x00 ; 0 - 1eec: cf 16 cp r12, r31 - 1eee: f8 e1 ldi r31, 0x18 ; 24 - 1ef0: df 06 cpc r13, r31 - 1ef2: 18 f0 brcs .+6 ; 0x1efa - 1ef4: f6 01 movw r30, r12 - 1ef6: b7 be out 0x37, r11 ; 55 - 1ef8: e8 95 spm - - // Read command terminator, start reply - verifySpace(); - 1efa: 5d d0 rcall .+186 ; 0x1fb6 - - // If only a partial page is to be programmed, the erase might not be complete. - // So check that here - boot_spm_busy_wait(); - 1efc: 07 b6 in r0, 0x37 ; 55 - 1efe: 00 fc sbrc r0, 0 - 1f00: fd cf rjmp .-6 ; 0x1efc - 1f02: a6 01 movw r20, r12 - 1f04: a0 e0 ldi r26, 0x00 ; 0 - 1f06: b1 e0 ldi r27, 0x01 ; 1 - bufPtr = buff; - addrPtr = (uint16_t)(void*)address; - ch = SPM_PAGESIZE / 2; - do { - uint16_t a; - a = *bufPtr++; - 1f08: 2c 91 ld r18, X - 1f0a: 30 e0 ldi r19, 0x00 ; 0 - a |= (*bufPtr++) << 8; - 1f0c: 11 96 adiw r26, 0x01 ; 1 - 1f0e: 8c 91 ld r24, X - 1f10: 11 97 sbiw r26, 0x01 ; 1 - 1f12: 90 e0 ldi r25, 0x00 ; 0 - 1f14: 98 2f mov r25, r24 - 1f16: 88 27 eor r24, r24 - 1f18: 82 2b or r24, r18 - 1f1a: 93 2b or r25, r19 -#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) -#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) -#endif - -/* main program starts here */ -int main(void) { - 1f1c: 12 96 adiw r26, 0x02 ; 2 - ch = SPM_PAGESIZE / 2; - do { - uint16_t a; - a = *bufPtr++; - a |= (*bufPtr++) << 8; - __boot_page_fill_short((uint16_t)(void*)addrPtr,a); - 1f1e: fa 01 movw r30, r20 - 1f20: 0c 01 movw r0, r24 - 1f22: 87 be out 0x37, r8 ; 55 - 1f24: e8 95 spm - 1f26: 11 24 eor r1, r1 - addrPtr += 2; - 1f28: 4e 5f subi r20, 0xFE ; 254 - 1f2a: 5f 4f sbci r21, 0xFF ; 255 - } while (--ch); - 1f2c: f1 e0 ldi r31, 0x01 ; 1 - 1f2e: a0 34 cpi r26, 0x40 ; 64 - 1f30: bf 07 cpc r27, r31 - 1f32: 51 f7 brne .-44 ; 0x1f08 - - // Write from programming buffer - __boot_page_write_short((uint16_t)(void*)address); - 1f34: f6 01 movw r30, r12 - 1f36: a7 be out 0x37, r10 ; 55 - 1f38: e8 95 spm - boot_spm_busy_wait(); - 1f3a: 07 b6 in r0, 0x37 ; 55 - 1f3c: 00 fc sbrc r0, 0 - 1f3e: fd cf rjmp .-6 ; 0x1f3a - -#if defined(RWWSRE) - // Reenable read access to flash - boot_rww_enable(); - 1f40: 97 be out 0x37, r9 ; 55 - 1f42: e8 95 spm - 1f44: 26 c0 rjmp .+76 ; 0x1f92 -#endif - - } - /* Read memory block mode, length is big endian. */ - else if(ch == STK_READ_PAGE) { - 1f46: 84 37 cpi r24, 0x74 ; 116 - 1f48: b1 f4 brne .+44 ; 0x1f76 - // READ PAGE - we only read flash - getch(); /* getlen() */ - 1f4a: 2a d0 rcall .+84 ; 0x1fa0 - length = getch(); - 1f4c: 29 d0 rcall .+82 ; 0x1fa0 - 1f4e: f8 2e mov r15, r24 - getch(); - 1f50: 27 d0 rcall .+78 ; 0x1fa0 - - verifySpace(); - 1f52: 31 d0 rcall .+98 ; 0x1fb6 - 1f54: f6 01 movw r30, r12 - 1f56: ef 2c mov r14, r15 - putch(result); - address++; - } - while (--length); -#else - do putch(pgm_read_byte_near(address++)); - 1f58: 8f 01 movw r16, r30 - 1f5a: 0f 5f subi r16, 0xFF ; 255 - 1f5c: 1f 4f sbci r17, 0xFF ; 255 - 1f5e: 84 91 lpm r24, Z+ - 1f60: 1b d0 rcall .+54 ; 0x1f98 - while (--length); - 1f62: ea 94 dec r14 - 1f64: f8 01 movw r30, r16 - 1f66: c1 f7 brne .-16 ; 0x1f58 -#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) -#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) -#endif - -/* main program starts here */ -int main(void) { - 1f68: 08 94 sec - 1f6a: c1 1c adc r12, r1 - 1f6c: d1 1c adc r13, r1 - 1f6e: fa 94 dec r15 - 1f70: cf 0c add r12, r15 - 1f72: d1 1c adc r13, r1 - 1f74: 0e c0 rjmp .+28 ; 0x1f92 -#endif -#endif - } - - /* Get device signature bytes */ - else if(ch == STK_READ_SIGN) { - 1f76: 85 37 cpi r24, 0x75 ; 117 - 1f78: 39 f4 brne .+14 ; 0x1f88 - // READ SIGN - return what Avrdude wants to hear - verifySpace(); - 1f7a: 1d d0 rcall .+58 ; 0x1fb6 - putch(SIGNATURE_0); - 1f7c: 8e e1 ldi r24, 0x1E ; 30 - 1f7e: 0c d0 rcall .+24 ; 0x1f98 - putch(SIGNATURE_1); - 1f80: 83 e9 ldi r24, 0x93 ; 147 - 1f82: 0a d0 rcall .+20 ; 0x1f98 - putch(SIGNATURE_2); - 1f84: 87 e0 ldi r24, 0x07 ; 7 - 1f86: 7a cf rjmp .-268 ; 0x1e7c - } - else if (ch == 'Q') { - 1f88: 81 35 cpi r24, 0x51 ; 81 - 1f8a: 11 f4 brne .+4 ; 0x1f90 - // Adaboot no-wait mod - watchdogConfig(WATCHDOG_16MS); - 1f8c: 88 e0 ldi r24, 0x08 ; 8 - 1f8e: 0f d0 rcall .+30 ; 0x1fae - verifySpace(); - } - else { - // This covers the response to commands like STK_ENTER_PROGMODE - verifySpace(); - 1f90: 12 d0 rcall .+36 ; 0x1fb6 - } - putch(STK_OK); - 1f92: 80 e1 ldi r24, 0x10 ; 16 - 1f94: 01 d0 rcall .+2 ; 0x1f98 - 1f96: 65 cf rjmp .-310 ; 0x1e62 - -00001f98 : - } -} - -void putch(char ch) { -#ifndef SOFT_UART - while (!(UCSR0A & _BV(UDRE0))); - 1f98: 5d 9b sbis 0x0b, 5 ; 11 - 1f9a: fe cf rjmp .-4 ; 0x1f98 - UDR0 = ch; - 1f9c: 8c b9 out 0x0c, r24 ; 12 - [uartBit] "I" (UART_TX_BIT) - : - "r25" - ); -#endif -} - 1f9e: 08 95 ret - -00001fa0 : - [uartBit] "I" (UART_RX_BIT) - : - "r25" -); -#else - while(!(UCSR0A & _BV(RXC0))) - 1fa0: 5f 9b sbis 0x0b, 7 ; 11 - 1fa2: fe cf rjmp .-4 ; 0x1fa0 - ; - if (!(UCSR0A & _BV(FE0))) { - 1fa4: 5c 99 sbic 0x0b, 4 ; 11 - 1fa6: 01 c0 rjmp .+2 ; 0x1faa -} -#endif - -// Watchdog functions. These are only safe with interrupts turned off. -void watchdogReset() { - __asm__ __volatile__ ( - 1fa8: a8 95 wdr - * don't care that an invalid char is returned...) - */ - watchdogReset(); - } - - ch = UDR0; - 1faa: 8c b1 in r24, 0x0c ; 12 - LED_PIN |= _BV(LED); -#endif -#endif - - return ch; -} - 1fac: 08 95 ret - -00001fae : - "wdr\n" - ); -} - -void watchdogConfig(uint8_t x) { - WDTCSR = _BV(WDCE) | _BV(WDE); - 1fae: 98 e1 ldi r25, 0x18 ; 24 - 1fb0: 91 bd out 0x21, r25 ; 33 - WDTCSR = x; - 1fb2: 81 bd out 0x21, r24 ; 33 -} - 1fb4: 08 95 ret - -00001fb6 : - do getch(); while (--count); - verifySpace(); -} - -void verifySpace() { - if (getch() != CRC_EOP) { - 1fb6: f4 df rcall .-24 ; 0x1fa0 - 1fb8: 80 32 cpi r24, 0x20 ; 32 - 1fba: 19 f0 breq .+6 ; 0x1fc2 - watchdogConfig(WATCHDOG_16MS); // shorten WD timeout - 1fbc: 88 e0 ldi r24, 0x08 ; 8 - 1fbe: f7 df rcall .-18 ; 0x1fae - 1fc0: ff cf rjmp .-2 ; 0x1fc0 - while (1) // and busy-loop so that WD causes - ; // a reset and app start. - } - putch(STK_INSYNC); - 1fc2: 84 e1 ldi r24, 0x14 ; 20 -} - 1fc4: e9 cf rjmp .-46 ; 0x1f98 - -00001fc6 : - ::[count] "M" (UART_B_VALUE) - ); -} -#endif - -void getNch(uint8_t count) { - 1fc6: 1f 93 push r17 - 1fc8: 18 2f mov r17, r24 - do getch(); while (--count); - 1fca: ea df rcall .-44 ; 0x1fa0 - 1fcc: 11 50 subi r17, 0x01 ; 1 - 1fce: e9 f7 brne .-6 ; 0x1fca - verifySpace(); - 1fd0: f2 df rcall .-28 ; 0x1fb6 -} - 1fd2: 1f 91 pop r17 - 1fd4: 08 95 ret - -00001fd6 : - WDTCSR = _BV(WDCE) | _BV(WDE); - WDTCSR = x; -} - -void appStart() { - watchdogConfig(WATCHDOG_OFF); - 1fd6: 80 e0 ldi r24, 0x00 ; 0 - 1fd8: ea df rcall .-44 ; 0x1fae - __asm__ __volatile__ ( - 1fda: ee 27 eor r30, r30 - 1fdc: ff 27 eor r31, r31 - 1fde: 09 94 ijmp diff --git a/bootloaders/optiboot/pin_defs.h b/bootloaders/optiboot/pin_defs.h deleted file mode 100644 index 61ce64e..0000000 --- a/bootloaders/optiboot/pin_defs.h +++ /dev/null @@ -1,80 +0,0 @@ -#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega88) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__) -/* Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, and Duemilanove */ -#define LED_DDR DDRB -#define LED_PORT PORTB -#define LED_PIN PINB -#define LED PINB5 - -/* Ports for soft UART */ -#ifdef SOFT_UART -#define UART_PORT PORTD -#define UART_PIN PIND -#define UART_DDR DDRD -#define UART_TX_BIT 1 -#define UART_RX_BIT 0 -#endif -#endif - -#if defined(__AVR_ATmega8__) - //Name conversion R.Wiersma - #define UCSR0A UCSRA - #define UDR0 UDR - #define UDRE0 UDRE - #define RXC0 RXC - #define FE0 FE - #define TIFR1 TIFR - #define WDTCSR WDTCR -#endif - -/* Luminet support */ -#if defined(__AVR_ATtiny84__) -/* Red LED is connected to pin PA4 */ -#define LED_DDR DDRA -#define LED_PORT PORTA -#define LED_PIN PINA -#define LED PINA4 -/* Ports for soft UART - left port only for now. TX/RX on PA2/PA3 */ -#ifdef SOFT_UART -#define UART_PORT PORTA -#define UART_PIN PINA -#define UART_DDR DDRA -#define UART_TX_BIT 2 -#define UART_RX_BIT 3 -#endif -#endif - -/* Sanguino support */ -#if defined(__AVR_ATmega644P__) -/* Onboard LED is connected to pin PB0 on Sanguino */ -#define LED_DDR DDRB -#define LED_PORT PORTB -#define LED_PIN PINB -#define LED PINB0 - -/* Ports for soft UART */ -#ifdef SOFT_UART -#define UART_PORT PORTD -#define UART_PIN PIND -#define UART_DDR DDRD -#define UART_TX_BIT 1 -#define UART_RX_BIT 0 -#endif -#endif - -/* Mega support */ -#if defined(__AVR_ATmega1280__) -/* Onboard LED is connected to pin PB7 on Arduino Mega */ -#define LED_DDR DDRB -#define LED_PORT PORTB -#define LED_PIN PINB -#define LED PINB7 - -/* Ports for soft UART */ -#ifdef SOFT_UART -#define UART_PORT PORTE -#define UART_PIN PINE -#define UART_DDR DDRE -#define UART_TX_BIT 1 -#define UART_RX_BIT 0 -#endif -#endif diff --git a/bootloaders/optiboot/stk500.h b/bootloaders/optiboot/stk500.h deleted file mode 100644 index ca0dd91..0000000 --- a/bootloaders/optiboot/stk500.h +++ /dev/null @@ -1,39 +0,0 @@ -/* STK500 constants list, from AVRDUDE */ -#define STK_OK 0x10 -#define STK_FAILED 0x11 // Not used -#define STK_UNKNOWN 0x12 // Not used -#define STK_NODEVICE 0x13 // Not used -#define STK_INSYNC 0x14 // ' ' -#define STK_NOSYNC 0x15 // Not used -#define ADC_CHANNEL_ERROR 0x16 // Not used -#define ADC_MEASURE_OK 0x17 // Not used -#define PWM_CHANNEL_ERROR 0x18 // Not used -#define PWM_ADJUST_OK 0x19 // Not used -#define CRC_EOP 0x20 // 'SPACE' -#define STK_GET_SYNC 0x30 // '0' -#define STK_GET_SIGN_ON 0x31 // '1' -#define STK_SET_PARAMETER 0x40 // '@' -#define STK_GET_PARAMETER 0x41 // 'A' -#define STK_SET_DEVICE 0x42 // 'B' -#define STK_SET_DEVICE_EXT 0x45 // 'E' -#define STK_ENTER_PROGMODE 0x50 // 'P' -#define STK_LEAVE_PROGMODE 0x51 // 'Q' -#define STK_CHIP_ERASE 0x52 // 'R' -#define STK_CHECK_AUTOINC 0x53 // 'S' -#define STK_LOAD_ADDRESS 0x55 // 'U' -#define STK_UNIVERSAL 0x56 // 'V' -#define STK_PROG_FLASH 0x60 // '`' -#define STK_PROG_DATA 0x61 // 'a' -#define STK_PROG_FUSE 0x62 // 'b' -#define STK_PROG_LOCK 0x63 // 'c' -#define STK_PROG_PAGE 0x64 // 'd' -#define STK_PROG_FUSE_EXT 0x65 // 'e' -#define STK_READ_FLASH 0x70 // 'p' -#define STK_READ_DATA 0x71 // 'q' -#define STK_READ_FUSE 0x72 // 'r' -#define STK_READ_LOCK 0x73 // 's' -#define STK_READ_PAGE 0x74 // 't' -#define STK_READ_SIGN 0x75 // 'u' -#define STK_READ_OSCCAL 0x76 // 'v' -#define STK_READ_FUSE_EXT 0x77 // 'w' -#define STK_READ_OSCCAL_EXT 0x78 // 'x' diff --git a/bootloaders/stk500v2/License.txt b/bootloaders/stk500v2/License.txt deleted file mode 100644 index e7dcdd8..0000000 --- a/bootloaders/stk500v2/License.txt +++ /dev/null @@ -1,280 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/bootloaders/stk500v2/Makefile b/bootloaders/stk500v2/Makefile deleted file mode 100644 index eeb9add..0000000 --- a/bootloaders/stk500v2/Makefile +++ /dev/null @@ -1,587 +0,0 @@ -# ---------------------------------------------------------------------------- -# Makefile to compile and link stk500boot bootloader -# Author: Peter Fleury -# based on WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al. -# -# Adjust F_CPU below to the clock frequency in Mhz of your AVR target -# Adjust BOOTLOADER_ADDRESS to your AVR target -# -#---------------------------------------------------------------------------- -# On command line: -# -# make all = Make software. -# -# make clean = Clean out built project files. -# -# make coff = Convert ELF to AVR COFF. -# -# make extcoff = Convert ELF to AVR Extended COFF. -# -# make program = Download the hex file to the device, using avrdude. -# Please customize the avrdude settings below first! -# -# make debug = Start either simulavr or avarice as specified for debugging, -# with avr-gdb or avr-insight as the front end for debugging. -# -# make filename.s = Just compile filename.c into the assembler code only. -# -# make filename.i = Create a preprocessed source file for use in submitting -# bug reports to the GCC project. -# -# To rebuild project do "make clean" then "make all". -#---------------------------------------------------------------------------- -# = Mark Sproul msproul-at-skychariot.com - - -# MCU name -#MCU = atmega128 - - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -#F_CPU = 16000000 - - -# Bootloader -# Please adjust if using a different AVR -# 0x0e00*2=0x1C00 for ATmega8 512 words Boot Size -# 0xFC00*2=0x1F800 for ATmega128 1024 words Boot Size -# 0xF800*2=0x1F000 for ATmega1280 -# 0xF000*2=0x1E000 for ATmega1280 -#BOOTLOADER_ADDRESS = 1E000 - - -# Output format. (can be srec, ihex, binary) -FORMAT = ihex - - -# Target file name (without extension). -TARGET = stk500boot - - -# List C source files here. (C dependencies are automatically generated.) -SRC = stk500boot.c - - -# List Assembler source files here. -# Make them always end in a capital .S. Files ending in a lowercase .s -# will not be considered source files but generated files (assembler -# output from the compiler), and will be deleted upon "make clean"! -# Even though the DOS/Win* filesystem matches both .s and .S the same, -# it will preserve the spelling of the filenames, and gcc itself does -# care about how the name is spelled on its command-line. -ASRC = - - -# Optimization level, can be [0, 1, 2, 3, s]. -# 0 = turn off optimization. s = optimize for size. -# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) -OPT = s - - -# Debugging format. -# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. -# AVR Studio 4.10 requires dwarf-2. -# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run. -DEBUG = dwarf-2 - - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRAINCDIRS = - - -# Compiler flag to set the C Standard level. -# c89 = "ANSI" C -# gnu89 = c89 plus GCC extensions -# c99 = ISO C99 standard (not yet fully implemented) -# gnu99 = c99 plus GCC extensions -CSTANDARD = -std=gnu99 - - -# Place -D or -U options here -CDEFS = -DF_CPU=$(F_CPU)UL - - -# Place -I options here -CINCS = - - - -#---------------- Compiler Options ---------------- -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -CFLAGS = -g$(DEBUG) -CFLAGS += $(CDEFS) $(CINCS) -CFLAGS += -O$(OPT) -CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -fno-jump-tables -CFLAGS += -Wall -Wstrict-prototypes -CFLAGS += -Wa,-adhlns=$(<:.c=.lst) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -CFLAGS += $(CSTANDARD) - - -#---------------- Assembler Options ---------------- -# -Wa,...: tell GCC to pass this to the assembler. -# -ahlms: create listing -# -gstabs: have the assembler create line number information; note that -# for use in COFF files, additional information about filenames -# and function names needs to be present in the assembler source -# files -- see avr-libc docs [FIXME: not yet described there] -ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs - - -#---------------- Library Options ---------------- -# Minimalistic printf version -PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min - -# Floating point printf version (requires MATH_LIB = -lm below) -PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt - -# If this is left blank, then it will use the Standard printf version. -PRINTF_LIB = -#PRINTF_LIB = $(PRINTF_LIB_MIN) -#PRINTF_LIB = $(PRINTF_LIB_FLOAT) - - -# Minimalistic scanf version -SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min - -# Floating point + %[ scanf version (requires MATH_LIB = -lm below) -SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt - -# If this is left blank, then it will use the Standard scanf version. -SCANF_LIB = -#SCANF_LIB = $(SCANF_LIB_MIN) -#SCANF_LIB = $(SCANF_LIB_FLOAT) - - -MATH_LIB = -lm - - - -#---------------- External Memory Options ---------------- - -# 64 KB of external RAM, starting after internal RAM (ATmega128!), -# used for variables (.data/.bss) and heap (malloc()). -#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff - -# 64 KB of external RAM, starting after internal RAM (ATmega128!), -# only used for heap (malloc()). -#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff - -EXTMEMOPTS = - - - - -#---------------- Linker Options ---------------- -# -Wl,...: tell GCC to pass this to linker. -# -Map: create map file -# --cref: add cross reference to map file -LDFLAGS = -Wl,-Map=$(TARGET).map,--cref -LDFLAGS += $(EXTMEMOPTS) -LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) - - -#--------------- bootloader linker Options ------- -# BOOTLOADER_ADDRESS (=Start of Boot Loader section -# in bytes - not words) is defined above. -#LDFLAGS += -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS) -nostartfiles -nodefaultlibs -#LDFLAGS += -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS) -nostartfiles -LDFLAGS += -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS) - -#---------------- Programming Options (avrdude) ---------------- - -# Programming hardware: alf avr910 avrisp bascom bsd -# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 -# -# Type: avrdude -c ? -# to get a full listing. -# -AVRDUDE_PROGRAMMER = stk500v2 - -# com1 = serial port. Use lpt1 to connect to parallel port. -AVRDUDE_PORT = com1 # programmer connected to serial device - -AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex -#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep - - -# Uncomment the following if you want avrdude's erase cycle counter. -# Note that this counter needs to be initialized first using -Yn, -# see avrdude manual. -#AVRDUDE_ERASE_COUNTER = -y - -# Uncomment the following if you do /not/ wish a verification to be -# performed after programming the device. -#AVRDUDE_NO_VERIFY = -V - -# Increase verbosity level. Please use this when submitting bug -# reports about avrdude. See -# to submit bug reports. -#AVRDUDE_VERBOSE = -v -v - -AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY) -AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE) -AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER) - - - -#---------------- Debugging Options ---------------- - -# For simulavr only - target MCU frequency. -DEBUG_MFREQ = $(F_CPU) - -# Set the DEBUG_UI to either gdb or insight. -# DEBUG_UI = gdb -DEBUG_UI = insight - -# Set the debugging back-end to either avarice, simulavr. -DEBUG_BACKEND = avarice -#DEBUG_BACKEND = simulavr - -# GDB Init Filename. -GDBINIT_FILE = __avr_gdbinit - -# When using avarice settings for the JTAG -JTAG_DEV = /dev/com1 - -# Debugging port used to communicate between GDB / avarice / simulavr. -DEBUG_PORT = 4242 - -# Debugging host used to communicate between GDB / avarice / simulavr, normally -# just set to localhost unless doing some sort of crazy debugging when -# avarice is running on a different computer. -DEBUG_HOST = localhost - - - -#============================================================================ - - -# Define programs and commands. -SHELL = sh -CC = avr-gcc -OBJCOPY = avr-objcopy -OBJDUMP = avr-objdump -SIZE = avr-size -NM = avr-nm -AVRDUDE = avrdude -REMOVE = rm -f -COPY = cp -WINSHELL = cmd - - -# Define Messages -# English -MSG_ERRORS_NONE = Errors: none -MSG_BEGIN = -------- begin -------- -MSG_END = -------- end -------- -MSG_SIZE_BEFORE = Size before: -MSG_SIZE_AFTER = Size after: -MSG_COFF = Converting to AVR COFF: -MSG_EXTENDED_COFF = Converting to AVR Extended COFF: -MSG_FLASH = Creating load file for Flash: -MSG_EEPROM = Creating load file for EEPROM: -MSG_EXTENDED_LISTING = Creating Extended Listing: -MSG_SYMBOL_TABLE = Creating Symbol Table: -MSG_LINKING = Linking: -MSG_COMPILING = Compiling: -MSG_ASSEMBLING = Assembling: -MSG_CLEANING = Cleaning project: - - - - -# Define all object files. -OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) - -# Define all listing files. -LST = $(SRC:.c=.lst) $(ASRC:.S=.lst) - - -# Compiler flags to generate dependency files. -GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d - - -# Combine all necessary flags and optional flags. -# Add target processor to flags. -ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS) -ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) - - - -############################################################ -# May 25, 2010 Adding 1280 support -mega1280: MCU = atmega1280 -mega1280: F_CPU = 16000000 -mega1280: BOOTLOADER_ADDRESS = 1E000 -mega1280: CFLAGS += -D_MEGA_BOARD_ -mega1280: begin gccversion sizebefore build sizeafter end - mv $(TARGET).hex stk500boot_v2_mega1280.hex - - -############################################################ -# Jul 6, 2010 Adding 2560 support -mega2560: MCU = atmega2560 -mega2560: F_CPU = 16000000 -mega2560: BOOTLOADER_ADDRESS = 3E000 -mega2560: CFLAGS += -D_MEGA_BOARD_ -mega2560: begin gccversion sizebefore build sizeafter end - mv $(TARGET).hex stk500boot_v2_mega2560.hex - - -############################################################ -#Initial config on Amber128 board -# avrdude: Device signature = 0x1e9702 -# avrdude: safemode: lfuse reads as 8F -# avrdude: safemode: hfuse reads as CB -# avrdude: safemode: efuse reads as FF -# Jul 17, 2010 Adding 128 support -############################################################ -amber128: MCU = atmega128 -#amber128: F_CPU = 16000000 -amber128: F_CPU = 14745600 -amber128: BOOTLOADER_ADDRESS = 1E000 -amber128: CFLAGS += -D_BOARD_AMBER128_ -amber128: begin gccversion sizebefore build sizeafter end - mv $(TARGET).hex stk500boot_v2_amber128.hex - -############################################################ -# Aug 23, 2010 Adding atmega2561 support -m2561: MCU = atmega2561 -m2561: F_CPU = 8000000 -m2561: BOOTLOADER_ADDRESS = 3E000 -m2561: CFLAGS += -D_ANDROID_2561_ -DBAUDRATE=57600 -m2561: begin gccversion sizebefore build sizeafter end - mv $(TARGET).hex stk500boot_v2_android2561.hex - - -############################################################ -# avrdude: Device signature = 0x1e9801 -# avrdude: safemode: lfuse reads as EC -# avrdude: safemode: hfuse reads as 18 -# avrdude: safemode: efuse reads as FD -# Aug 23, 2010 Adding cerebot 2560 @ 8mhz -#avrdude -P usb -c usbtiny -p m2560 -v -U flash:w:/Arduino/WiringBootV2_upd1/stk500boot_v2_cerebotplus.hex -############################################################ -cerebot: MCU = atmega2560 -cerebot: F_CPU = 8000000 -cerebot: BOOTLOADER_ADDRESS = 3E000 -cerebot: CFLAGS += -D_CEREBOTPLUS_BOARD_ -DBAUDRATE=38400 -DUART_BAUDRATE_DOUBLE_SPEED=1 -cerebot: begin gccversion sizebefore build sizeafter end - mv $(TARGET).hex stk500boot_v2_cerebotplus.hex - - -############################################################ -# Aug 23, 2010 Adding atmega2561 support -penguino: MCU = atmega32 -penguino: F_CPU = 16000000 -penguino: BOOTLOADER_ADDRESS = 7800 -penguino: CFLAGS += -D_PENGUINO_ -DBAUDRATE=57600 -penguino: begin gccversion sizebefore build sizeafter end - mv $(TARGET).hex stk500boot_v2_penguino.hex - - -# Default target. -all: begin gccversion sizebefore build sizeafter end - -build: elf hex eep lss sym -#build: hex eep lss sym - -elf: $(TARGET).elf -hex: $(TARGET).hex -eep: $(TARGET).eep -lss: $(TARGET).lss -sym: $(TARGET).sym - - - -# Eye candy. -# AVR Studio 3.x does not check make's exit code but relies on -# the following magic strings to be generated by the compile job. -begin: - @echo - @echo $(MSG_BEGIN) - -end: - @echo $(MSG_END) - @echo - - -# Display size of file. -HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex -ELFSIZE = $(SIZE) --format=avr --mcu=$(MCU) $(TARGET).elf - -sizebefore: - @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \ - 2>/dev/null; echo; fi - -sizeafter: - @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \ - 2>/dev/null; echo; fi - - - -# Display compiler version information. -gccversion : - @$(CC) --version - - - -# Program the device. -program: $(TARGET).hex $(TARGET).eep - $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) - - -# Generate avr-gdb config/init file which does the following: -# define the reset signal, load the target file, connect to target, and set -# a breakpoint at main(). -gdb-config: - @$(REMOVE) $(GDBINIT_FILE) - @echo define reset >> $(GDBINIT_FILE) - @echo SIGNAL SIGHUP >> $(GDBINIT_FILE) - @echo end >> $(GDBINIT_FILE) - @echo file $(TARGET).elf >> $(GDBINIT_FILE) - @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE) -ifeq ($(DEBUG_BACKEND),simulavr) - @echo load >> $(GDBINIT_FILE) -endif - @echo break main >> $(GDBINIT_FILE) - -debug: gdb-config $(TARGET).elf -ifeq ($(DEBUG_BACKEND), avarice) - @echo Starting AVaRICE - Press enter when "waiting to connect" message displays. - @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \ - $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT) - @$(WINSHELL) /c pause - -else - @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \ - $(DEBUG_MFREQ) --port $(DEBUG_PORT) -endif - @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE) - - - - -# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. -COFFCONVERT=$(OBJCOPY) --debugging \ ---change-section-address .data-0x800000 \ ---change-section-address .bss-0x800000 \ ---change-section-address .noinit-0x800000 \ ---change-section-address .eeprom-0x810000 - - - -coff: $(TARGET).elf - @echo - @echo $(MSG_COFF) $(TARGET).cof - $(COFFCONVERT) -O coff-avr $< $(TARGET).cof - - -extcoff: $(TARGET).elf - @echo - @echo $(MSG_EXTENDED_COFF) $(TARGET).cof - $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof - - -# Create final output files (.hex, .eep) from ELF output file. -%.hex: %.elf - @echo - @echo $(MSG_FLASH) $@ - $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ - -%.eep: %.elf - @echo - @echo $(MSG_EEPROM) $@ - -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ - --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ - -# Create extended listing file from ELF output file. -%.lss: %.elf - @echo - @echo $(MSG_EXTENDED_LISTING) $@ - $(OBJDUMP) -h -S $< > $@ - -# Create a symbol table from ELF output file. -%.sym: %.elf - @echo - @echo $(MSG_SYMBOL_TABLE) $@ - $(NM) -n $< > $@ - - - -# Link: create ELF output file from object files. -.SECONDARY : $(TARGET).elf -.PRECIOUS : $(OBJ) -%.elf: $(OBJ) - @echo - @echo $(MSG_LINKING) $@ - $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS) - - -# Compile: create object files from C source files. -%.o : %.c - @echo - @echo $(MSG_COMPILING) $< - $(CC) -c $(ALL_CFLAGS) $< -o $@ - - -# Compile: create assembler files from C source files. -%.s : %.c - $(CC) -S $(ALL_CFLAGS) $< -o $@ - - -# Assemble: create object files from assembler source files. -%.o : %.S - @echo - @echo $(MSG_ASSEMBLING) $< - $(CC) -c $(ALL_ASFLAGS) $< -o $@ - -# Create preprocessed source for use in sending a bug report. -%.i : %.c - $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ - - -# Target: clean project. -clean: begin clean_list end - -clean_list : - @echo - @echo $(MSG_CLEANING) - $(REMOVE) *.hex - $(REMOVE) *.eep - $(REMOVE) *.cof - $(REMOVE) *.elf - $(REMOVE) *.map - $(REMOVE) *.sym - $(REMOVE) *.lss - $(REMOVE) $(OBJ) - $(REMOVE) $(LST) - $(REMOVE) $(SRC:.c=.s) - $(REMOVE) $(SRC:.c=.d) - $(REMOVE) .dep/* - - - -# Include the dependency files. --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) - - -# Listing of phony targets. -.PHONY : all begin finish end sizebefore sizeafter gccversion \ -build elf hex eep lss sym coff extcoff \ -clean clean_list program debug gdb-config - diff --git a/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex b/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex deleted file mode 100644 index 4f36699..0000000 --- a/bootloaders/stk500v2/Mega2560-prod-firmware-2011-06-29.hex +++ /dev/null @@ -1,513 +0,0 @@ -:020000023000CC -:10E000000D94F6F20D941FF30D941FF30D941FF36E -:10E010000D941FF30D941FF30D941FF30D941FF334 -:10E020000D941FF30D941FF30D941FF30D941FF324 -:10E030000D941FF30D941FF30D941FF30D941FF314 -:10E040000D941FF30D941FF30D941FF30D941FF304 -:10E050000D941FF30D941FF30D941FF30D941FF3F4 -:10E060000D941FF30D941FF30D941FF30D941FF3E4 -:10E070000D941FF30D941FF30D941FF30D941FF3D4 -:10E080000D941FF30D941FF30D941FF30D941FF3C4 -:10E090000D941FF30D941FF30D941FF30D941FF3B4 -:10E0A0000D941FF30D941FF30D941FF30D941FF3A4 -:10E0B0000D941FF30D941FF30D941FF30D941FF394 -:10E0C0000D941FF30D941FF30D941FF30D941FF384 -:10E0D0000D941FF30D941FF30D941FF30D941FF374 -:10E0E0000D941FF341546D65676132353630004140 -:10E0F000726475696E6F206578706C6F72657220DE -:10E1000073746B3530305632206279204D4C530099 -:10E11000426F6F746C6F616465723E004875683F52 -:10E1200000436F6D70696C6564206F6E20203D2028 -:10E1300000435055205479706520202020203D2038 -:10E14000005F5F4156525F415243485F5F203D2070 -:10E1500000415652204C69624320566572203D2092 -:10E16000004743432056657273696F6E20203D203F -:10E1700000435055207369676E61747572653D2068 -:10E18000004C6F77206675736520202020203D208D -:10E1900000486967682066757365202020203D204F -:10E1A00000457874206675736520202020203D206E -:10E1B000004C6F636B2066757365202020203D2026 -:10E1C00000536570202039203230313000312E3636 -:10E1D0002E3700342E332E33005623202020414486 -:10E1E00044522020206F7020636F6465202020201F -:10E1F00020696E737472756374696F6E20616464F4 -:10E2000072202020496E74657272757074006E6F92 -:10E2100020766563746F7200726A6D702020006AE8 -:10E220006D7020005768617420706F72743A0050EE -:10E230006F7274206E6F7420737570706F72746576 -:10E2400064004D7573742062652061206C65747480 -:10E2500065720020005772697474696E67204545C5 -:10E260000052656164696E6720454500656570729E -:10E270006F6D206572726F7220636F756E743D00F2 -:10E28000504F525400303D5A65726F206164647281 -:10E290006573732063747273003F3D435055207360 -:10E2A0007461747300403D454550524F4D20746574 -:10E2B000737400423D426C696E6B204C45440045CE -:10E2C0003D44756D7020454550524F4D00463D44CC -:10E2D000756D7020464C41534800483D48656C7050 -:10E2E000004C3D4C69737420492F4F20506F72745D -:10E2F0007300513D517569742026206A756D702038 -:10E30000746F20757365722070676D00523D44759F -:10E310006D702052414D00563D73686F7720696ED5 -:10E320007465727275707420566563746F727300D1 -:10E33000593D506F727420626C696E6B002A0052F6 -:10E340004553455400494E543000494E543100491C -:10E350004E543200494E543300494E543400494E15 -:10E36000543500494E543600494E54370050434905 -:10E370004E5430005043494E5431005043494E549E -:10E3800032005744540054494D45523020434F4DBC -:10E3900050410054494D45523020434F4D504200AA -:10E3A00054494D455230204F56460054494D455230 -:10E3B0003120434150540054494D45523120434F80 -:10E3C0004D50410054494D45523120434F4D50422C -:10E3D0000054494D45523120434F4D50430054495C -:10E3E0004D455231204F56460054494D455232203A -:10E3F000434F4D50410054494D45523220434F4DFB -:10E4000050420054494D455232204F56460054491F -:10E410004D45523320434150540054494D455233E9 -:10E4200020434F4D50410054494D45523320434FF6 -:10E430004D50420054494D45523320434F4D5043B7 -:10E440000054494D455233204F56460054494D45DE -:10E45000523420434150540054494D4552342043D6 -:10E460004F4D50410054494D45523420434F4D507B -:10E47000420054494D45523420434F4D50430054BF -:10E48000494D455234204F56460054494D4552356A -:10E4900020434150540054494D45523520434F4D7F -:10E4A00050410054494D45523520434F4D50420094 -:10E4B00054494D45523520434F4D50430054494D2A -:10E4C000455235204F564600555341525430205244 -:10E4D000580055534152543020554452450055532D -:10E4E0004152543020545800555341525431205217 -:10E4F000580055534152543120554452450055530C -:10E5000041525431205458005553415254322052F4 -:10E5100058005553415254322055445245005553EA -:10E5200041525432205458005553415254332052D2 -:10E5300058005553415254332055445245005553C9 -:10E5400041525433205458005350492053544300EF -:10E5500041444300414E414C4F4720434F4D5000F2 -:10E560004545205245414459005457490053504DA8 -:10E57000205245414459002A003FE345E34AE34F16 -:10E58000E354E359E35EE363E368E36DE374E37B41 -:10E59000E382E3E9E3F6E303E4ABE3B7E3C4E3D107 -:10E5A000E3DEE386E393E3A0E348E5C8E4D2E4DEF8 -:10E5B000E454E550E560E50EE41AE427E434E44170 -:10E5C000E4E8E4F2E4FEE469E56DE54CE458E46572 -:10E5D000E472E47FE48AE496E4A3E4B0E4BDE408F2 -:10E5E000E512E51EE528E532E53EE50011241FBEF3 -:10E5F000CFEFD1E2DEBFCDBF01E00CBF12E0A0E063 -:10E60000B2E0EAEDFFEF03E00BBF02C007900D920E -:10E61000A030B107D9F712E0A0E0B2E001C01D922E -:10E62000AC30B107E1F70F94FBF40D94EBFF01E27E -:10E630000EBF0FEF0DBF11241FBE0D94FBF40D9400 -:10E6400000F020E030E040ED57E005C0FA013197DE -:10E65000F1F72F5F3F4F28173907C0F308959C014A -:10E66000442737FD4095542FDA01C901860F911DCB -:10E67000A11DB11DABBFFC018791882369F0809378 -:10E68000C6008091C00086FFFCCF8091C0008064EE -:10E690008093C0006F5FE8CF08958DE08093C6003F -:10E6A0008091C00086FFFCCF8091C0008064809381 -:10E6B000C0008AE08093C6008091C00086FFFCCF36 -:10E6C0008091C00080648093C00008950F942FF360 -:10E6D0000F944DF30895FC019081992359F0909384 -:10E6E000C6008091C00086FFFCCF8091C00080648E -:10E6F0008093C0003196992379F70895282F982F99 -:10E7000092959F70892F805D8A3308F0895F80938E -:10E71000C6008091C00086FFFCCF8091C00080645D -:10E720008093C000822F8F70982F905D9A3308F0ED -:10E73000995F9093C6008091C00086FFFCCF8091C6 -:10E74000C00080648093C00008959C01FB01853661 -:10E7500091051CF46330710594F0C90164E670E022 -:10E760000F948CFF605D7F4F6093C6008091C00066 -:10E7700086FFFCCF8091C00080648093C0002B3066 -:10E78000310514F43297B4F0C90164E670E00F94D7 -:10E790008CFF6AE070E00F948CFF605D7F4F6093A8 -:10E7A000C6008091C00086FFFCCF8091C0008064CD -:10E7B0008093C000C9016AE070E00F948CFFC0969E -:10E7C0008093C6008091C00086FFFCCF8091C0007E -:10E7D00080648093C0000895282F277020642093C0 -:10E7E0007C0020917B0086958695869590E08170CF -:10E7F000907033E0880F991F3A95E1F7277F282B17 -:10E8000020937B0080917A00806480937A008091CD -:10E810007A0086FDFCCF2091780040917900942FFA -:10E8200080E030E0282B392BC90108951F93182F61 -:10E8300080E892EE60E00F942FF31093C600809171 -:10E84000C00086FFFCCF8091C00080648093C00030 -:10E850000F944DF31F9108952F923F924F925F9224 -:10E860006F927F928F929F92AF92BF92CF92DF92E0 -:10E87000EF92FF920F931F93DF93CF93CDB7DEB745 -:10E8800062970FB6F894DEBF0FBECDBF382E622E52 -:10E89000CA01DB015C016D01772460E2262E2E01A6 -:10E8A0000894411C511C8BC081E0A81680E0B8067A -:10E8B00081E0C80680E0D80628F0C601AA27BB2759 -:10E8C0000F947EF3BB27AD2D9C2D8B2D0F947EF3E3 -:10E8D0008A2D0F947EF32092C6008091C00086FF9F -:10E8E000FCCF8091C00080648093C0009DE2909333 -:10E8F000C6008091C00086FFFCCF8091C00080647C -:10E900008093C0002092C6008091C00086FFFCCF9B -:10E910008091C00080648093C000198286017501D7 -:10E9200088249924A1E03A1651F03A1620F0B2E07A -:10E930003B1661F409C00BBFF701779007C0C70110 -:10E940000F94D5FF782E02C0F7017080872D0F94A9 -:10E950007EF32092C6008091C00086FFFCCF80919C -:10E96000C00080648093C000872D8052F401EF7056 -:10E97000F0708F3520F4E40DF51D708204C0E40DB5 -:10E98000F51D8EE280830894E11CF11C011D111D10 -:10E990000894811C911C90E18916910409F0C2CF62 -:10E9A00080E190E0A0E0B0E0A80EB91ECA1EDB1E18 -:10E9B000198AC2010F946BF30F944DF36A94662089 -:10E9C00009F072CF62960FB6F894DEBF0FBECDBFCE -:10E9D000CF91DF911F910F91FF90EF90DF90CF903B -:10E9E000BF90AF909F908F907F906F905F904F906F -:10E9F0003F902F9008952F923F924F925F926F9287 -:10EA00007F928F929F92AF92BF92CF92DF92EF92BE -:10EA1000FF920F931F93DF93CF93CDB7DEB7CD5304 -:10EA2000D1400FB6F894DEBF0FBECDBF279A2F9A04 -:10EA30008091C00082608093C00080E18093C40018 -:10EA400088E18093C1000000EE24FF248701B4E038 -:10EA5000AB2EB12CCC24DD2424C0C5010197F1F7E5 -:10EA60000894E11CF11C011D111D21E2E2162EE4A7 -:10EA7000F20620E0020720E0120718F0A1E0CA2EFB -:10EA8000D12CC801B70128E53BE140E050E00F94EC -:10EA90009FFF611571058105910519F485B18058B5 -:10EAA00085B98091C00087FD03C0C114D104A9F2CB -:10EAB000A6014F5F5F4FC25EDE4F59834883CE5140 -:10EAC000D140C25EDE4F68817981CE51D140613044 -:10EAD000710511F00D946EFFC05DDE4F1982188232 -:10EAE000C053D14060E0C15DDE4F1882CF52D140AB -:10EAF000AA24BB24C05EDE4F188219821A821B82B0 -:10EB0000C052D140CE5CDE4F188219821A821B821D -:10EB1000C253D14080E090E0A0E0B0E0ABBFFC0188 -:10EB2000A791B691C45CDE4FB983A883CC53D14082 -:10EB30000D9469FFC25EDE4FE881F981CE51D1406C -:10EB4000319709F52091C600C25EDE4F1982188206 -:10EB5000CE51D14022C02F5F3F4F4F4F5F4F2130EA -:10EB6000F2E13F07FAE74F07F0E05F0780F0C45C8F -:10EB7000DE4F08811981CC53D1400F5F1F4F19F030 -:10EB8000EE27FF27099420E030E040E050E080913C -:10EB9000C00087FFE0CF2091C600213209F094C663 -:10EBA0000894A11CB11C33E0A316B10409F08EC671 -:10EBB00000E010E018C041E24093C6008091C00020 -:10EBC00086FFFCCF8091C00080648093C0002F5FDF -:10EBD0003F4F2931310579F70F944DF30F5F1F4FE8 -:10EBE0000530110519F020E030E0E5CF1092080261 -:10EBF0001092090210920A0210920B021092040263 -:10EC00001092050210920602109207021092000262 -:10EC10001092010210920202109203028FEE90EE07 -:10EC200060E00F9466F380E191EE60E00F942FF3C3 -:10EC30008091C00087FFFCCF9091C600903608F00D -:10EC40009F759032B8F09093C6008091C00086FF07 -:10EC5000FCCF8091C00080648093C00080E28093EC -:10EC6000C6008091C00086FFFCCF8091C000806408 -:10EC70008093C000983409F4DBC19934B8F492341D -:10EC800009F45DC1933458F4903319F1903308F4CA -:10EC900018C69F33A1F1903409F013C6BDC0953456 -:10ECA00009F474C1963409F00CC69CC1923509F47C -:10ECB0002FC2933538F49C3409F4F9C1913509F029 -:10ECC00000C61CC2963509F449C2993509F0F9C548 -:10ECD0009CC485E892EE62E00F9466F31092040201 -:10ECE000109205021092060210920702109208027A -:10ECF0001092090210920A0210920B0217C189E9C0 -:10ED000092EE62E00F9466F38FEE90EE60E00F9467 -:10ED100066F381E291EE60E00F942FF381EC91EEC7 -:10ED200060E00F9466F381E391EE60E00F942FF3BF -:10ED300084EE90EE60E00F9466F381E491EE60E083 -:10ED40000F942FF386E090E061E070E00F94A5F35C -:10ED50000F944DF381E691EE60E00F942FF383ED75 -:10ED600091EE60E00F9466F381E591EE60E00F9420 -:10ED70002FF38DEC91EE60E00F9466F381E791EE56 -:10ED800060E00F942FF38EE10F947EF388E90F94E7 -:10ED90007EF381E00F947EF30F944DF381E891EEC2 -:10EDA00060E00F942FF319E0E0E0F0E010935700DB -:10EDB000E4918E2F0F947EF30F944DF381E991EE41 -:10EDC00060E00F942FF3E3E0F0E010935700E4913C -:10EDD0008E2F0F947EF30F944DF381EA91EE60E055 -:10EDE0000F942FF3E2E0F0E010935700E4918E2FA0 -:10EDF0000F947EF30F944DF381EB91EE60E00F944E -:10EE00002FF3E1E0F0E0109357001491812F0F945D -:10EE10007EF30F944DF307CF85EA92EE62E00F94F4 -:10EE200066F385E592EE60E00F9466F30F944DF380 -:10EE300000E010E019C0C8016F2D0F94DDFFFF2026 -:10EE400031F483E592EE60E00F942FF30BC0F09263 -:10EE5000C6008091C00086FFFCCF8091C000806416 -:10EE60008093C0000F5F1F4FC80181519F41AA27A7 -:10EE700097FDA095BA2FABBFFC01F7905AE2F516AB -:10EE800021F062E000301607B1F60F944DF30F94B5 -:10EE90004DF381E692EE60E00F9466F30F944DF32C -:10EEA000CC24DD2400E010E01EC0C8010F94D5FF83 -:10EEB000F82E882331F483E592EE60E00F942FF36F -:10EEC0000BC08093C6008091C00086FFFCCF80916C -:10EED000C00080648093C000FE1419F00894C11C27 -:10EEE000D11C0F5F1F4FC80181519F41AA2797FD79 -:10EEF000A095BA2FABBFFC01E7907AE2E71621F0AC -:10EF000082E00030180789F60F944DF30F944DF30B -:10EF10008CE692EE60E00F942FF3C60161E070E0A2 -:10EF20000F94A5F30F944DF30F944DF3109200023C -:10EF300010920102109202021092030274CE83EB2F -:10EF400092EE62E00F9466F3279A2F9A16C02F98DC -:10EF500080E090E0E0EDF7E03197F1F7019684363C -:10EF60009105C1F72F9A80E090E0E0EDF7E031974E -:10EF7000F1F7019684369105C1F78091C00087FFB3 -:10EF8000E6CF8091C00087FFFCCF95C48FEB92EE57 -:10EF900062E00F9466F3409100025091010260918B -:10EFA00002027091030281E020E10F942CF4809121 -:10EFB000000290910102A0910202B09103028050E0 -:10EFC0009F4FAF4FBF4F8093000290930102A093D9 -:10EFD0000202B093030280509041A040B04008F478 -:10EFE00022CEA4CF8DEC92EE62E00F9466F34091B6 -:10EFF000040250910502609106027091070280E0C0 -:10F0000020E10F942CF48091040290910502A091CC -:10F010000602B091070280509F4FAF4FBF4F8093C1 -:10F02000040290930502A0930602B0930702FBCD61 -:10F030008AED92EE62E00F9466F385E892EE60E06E -:10F040000F9466F389E992EE60E00F9466F385EA27 -:10F0500092EE60E00F9466F383EB92EE60E00F9423 -:10F0600066F38FEB92EE60E00F9466F38DEC92EE18 -:10F0700060E00F9466F38AED92EE60E00F9466F321 -:10F0800081EE92EE60E00F9466F382EF92EE60E024 -:10F090000F9466F38CE093EE60E00F9466F387E1E3 -:10F0A00093EE60E00F9466F380E393EEB9CD81EECA -:10F0B00092EE62E00F9466F381E40F9416F482E41A -:10F0C0000F9416F483E40F9416F484E40F9416F46A -:10F0D00085E40F9416F486E40F9416F487E40F94F5 -:10F0E00016F488E40F9416F48AE40F9416F48BE473 -:10F0F0000F9416F48CE40F9416F495CD82EF92EEF3 -:10F1000062E00F9466F399249394AA24BB2445C427 -:10F110008CE093EE62E00F9466F340910802509108 -:10F12000090260910A0270910B0282E020E10F94C3 -:10F130002CF48091080290910902A0910A02B091EA -:10F140000B0280509F4FAF4FBF4F809308029093A8 -:10F150000902A0930A02B0930B0265CD87E193EEFA -:10F1600062E00F9466F384EE90EE60E00F9466F335 -:10F1700089ED91EE60E00F9466F309E715EECC5D42 -:10F18000DE4F19830883C452D1406624772443019B -:10F19000CA5DDE4F19821882C652D140A401930184 -:10F1A0005695479537952795C85DDE4F2883398357 -:10F1B0004A835B83C852D140CA5DDE4F4881598182 -:10F1C000C652D1404F5F5F4FCA5DDE4F59834883BF -:10F1D000C652D140CA0162E070E00F94A5F350E23C -:10F1E0005093C6008091C00086FFFCCF8091C00084 -:10F1F00080648093C0006DE26093C6008091C0007F -:10F2000086FFFCCF8091C00080648093C00070E2D4 -:10F210007093C6008091C00086FFFCCF8091C00033 -:10F2200080648093C000C85DDE4FE880F9800A8169 -:10F230001B81C852D140BB27A12F902F8F2D0F9437 -:10F240007EF3C85DDE4F8881C852D1400F947EF3B3 -:10F2500070E2F72EF092C6008091C00086FFFCCFCE -:10F260008091C00080648093C0000DE30093C600CD -:10F270008091C00086FFFCCF8091C00080648093A5 -:10F28000C00010E21093C6008091C00086FFFCCF42 -:10F290008091C00080648093C0008BBEF3012791F1 -:10F2A000C45DDE4F2883CC52D140A22EBB24CC2497 -:10F2B000DD240894611C711C811C911C8BBEF30120 -:10F2C0008791282E332444245524142D032DF22C09 -:10F2D000EE24EA0CFB1C0C1D1D1D0894611C711C06 -:10F2E000811C911C8BBEF3013791C35DDE4F3883C7 -:10F2F000CD52D1400894611C711C811C911C8BBEA5 -:10F30000F3014791C25DDE4F4883CE52D1402DEFCD -:10F310003FEF4FEF5FEF620E731E841E951E0F943A -:10F320007EF330E23093C6008091C00086FFFCCFB0 -:10F330008091C00080648093C000C45DDE4F8881EE -:10F34000CC52D1400F947EF340E24093C6008091AE -:10F35000C00086FFFCCF8091C00080648093C00015 -:10F36000C25DDE4F8881CE52D1400F947EF350E2D1 -:10F370005093C6008091C00086FFFCCF8091C000F2 -:10F3800080648093C000C35DDE4F8881CD52D14040 -:10F390000F947EF360E26093C6008091C00086FF08 -:10F3A000FCCF8091C00080648093C0007FEFE7169F -:10F3B0007FEFF70670E0070770E0170731F48EE083 -:10F3C00092EE60E00F942FF3DFC0D801C701807088 -:10F3D000907CA070B0708050904CA040B040D1F5AF -:10F3E0002FEF3FE340E050E0E222F3220423152315 -:10F3F000C85DDE4FA880B980CA80DB80C852D1408A -:10F40000AE0CBF1CC01ED11EAA0CBB1CCC1CDD1C2C -:10F4100088E192EE60E00F942FF3BB27A12F902F8D -:10F420008F2D0F947EF38E2D0F947EF330E2309368 -:10F43000C6008091C00086FFFCCF8091C000806430 -:10F440008093C0004EE34093C6008091C00086FFC9 -:10F45000FCCF87C06EE07EEF80E090E0E622F722EE -:10F46000082319237CE0E71674E9F70670E0070724 -:10F4700070E0170709F088C0C25DDE4F8881CE5268 -:10F48000D140E82EFF2400E010E0102F0F2DFE2CBD -:10F49000EE24C35DDE4F9881CD52D140E90EF11CC0 -:10F4A000011D111DD601C50181709070A070B07052 -:10F4B000DC0199278827E80EF91E0A1F1B1F20EF81 -:10F4C00030E040E050E0A222B322C422D522F1E194 -:10F4D000AA0CBB1CCC1CDD1CFA95D1F7EA0CFB1C5A -:10F4E0000C1D1D1D41E050E060E070E0242235223B -:10F4F00046225722E5E1220C331C441C551CEA9598 -:10F50000D1F7E20CF31C041D151D57016801AA0C6C -:10F51000BB1CCC1CDD1C8FE192EE60E00F942FF33E -:10F52000C801AA27BB270F947EF3BB27A12F902FDA -:10F530008F2D0F947EF38E2D0F947EF350E2509317 -:10F54000C6008091C00086FFFCCF8091C00080641F -:10F550008093C0006EE36093C6008091C00086FF78 -:10F56000FCCF8091C00080648093C000C601AA27B0 -:10F57000BB270F947EF3BB27AD2D9C2D8B2D0F94B5 -:10F580007EF38A2D0F947EF370E27093C600809113 -:10F59000C00086FFFCCF8091C00080648093C000D3 -:10F5A000CC5DDE4FE881F981C452D140CF01AA275A -:10F5B00097FDA095BA2FABBFFC018791969160E0B3 -:10F5C0000F942FF30F944DF3CC5DDE4F088119811A -:10F5D000C452D1400E5F1F4FCC5DDE4F19830883AC -:10F5E000C452D140CA5DDE4F28813981C652D14014 -:10F5F0002933310509F417CB44E050E060E070E0B6 -:10F60000640E751E861E971EC9CD80E393EE62E0E0 -:10F610000F9466F384E292EE60E00F942FF38091F2 -:10F62000C00087FFFCCF1091C6001F751093C60065 -:10F630008091C00086FFFCCF8091C00080648093E1 -:10F64000C0000F944DF3812F81548A3108F036C1E8 -:10F65000163409F495C0173490F4133409F44EC0ED -:10F66000143430F41134F1F0123409F01DC130C0FB -:10F67000143409F459C0153409F016C16BC01A349A -:10F6800009F4C4C01B3438F4173409F48FC018349B -:10F6900009F00AC1A1C01B3409F4D2C01C3409F01E -:10F6A00003C1E8C08FEF81B90DC082B1809582B9E6 -:10F6B00080E090E0E0EDF7E03197F1F70196883CCB -:10F6C0009105C1F78091C00087FFEFCF12B8EFC05E -:10F6D0008FEF84B90DC085B1809585B980E090E049 -:10F6E000E0EDF7E03197F1F70196883C9105C1F71D -:10F6F0008091C00087FFEFCF15B8D9C08FEF87B9D1 -:10F700000DC088B1809588B980E090E0E0EDF7E029 -:10F710003197F1F70196883C9105C1F78091C000BF -:10F7200087FFEFCF18B8C3C08FEF8AB90DC08BB178 -:10F7300080958BB980E090E0E0EDF7E03197F1F74C -:10F740000196883C9105C1F78091C00087FFEFCFFB -:10F750001BB8ADC08FEF8DB90DC08EB180958EB93D -:10F7600080E090E0E0EDF7E03197F1F70196883C1A -:10F770009105C1F78091C00087FFEFCF1EB897C0F9 -:10F780008FEF80BB0DC081B3809581BB80E090E09E -:10F79000E0EDF7E03197F1F70196883C9105C1F76C -:10F7A0008091C00087FFEFCF11BA81C08FEF83BB7C -:10F7B0000DC084B3809584BB80E090E0E0EDF7E07D -:10F7C0003197F1F70196883C9105C1F78091C0000F -:10F7D00087FFEFCF14BA6BC08FEF809301010FC08A -:10F7E0008091020180958093020180E090E0E0ED3D -:10F7F000F7E03197F1F70196883C9105C1F78091C8 -:10F80000C00087FFEDCF1092020151C08FEF8093AF -:10F8100004010FC08091050180958093050180E06F -:10F8200090E0E0EDF7E03197F1F70196883C910523 -:10F83000C1F78091C00087FFEDCF1092050137C05E -:10F840008FEF809307010FC080910801809580930E -:10F85000080180E090E0E0EDF7E03197F1F70196E4 -:10F86000883C9105C1F78091C00087FFEDCF1092D1 -:10F8700008011DC08FEF80930A010FC080910B011A -:10F88000809580930B0180E090E0E0EDF7E0319708 -:10F89000F1F70196883C9105C1F78091C00087FF80 -:10F8A000EDCF10920B0103C08FE292EEB9C98091A7 -:10F8B000C00087FFFCCF8091C600B5C982E492EEFC -:10F8C000AFC98CE191EEACC9AA24BB24933061F19D -:10F8D000943028F4913089F0923008F508C09530C2 -:10F8E000B1F1953040F1963009F053C04EC02B3144 -:10F8F00009F020C991E06BE11DC9213041F0C15DE3 -:10F90000DE4F5881CF52D140251709F002C362273C -:10F91000C15DDE4F2883CF52D14092E00BC9B22F98 -:10F92000A0E0622793E006C9822F90E0A82BB92BB4 -:10F93000622794E0FFC82E3009F0EBC2622795E001 -:10F94000C05DDE4F19821882C053D140F3C8E1E098 -:10F95000F0E0EC0FFD1FC05DDE4FE880F980C05382 -:10F96000D140EE0DFF1D208387010F5F1F4FC05D4B -:10F97000DE4F19830883C053D14062270A171B0743 -:10F9800009F0D8C8D80196E0D5C8261709F0C1C239 -:10F9900003C0973009F0CEC899248981833109F4D6 -:10F9A000FCC08431C8F4863009F4C2C0873050F4FA -:10F9B000823009F4F0C0833009F458C0813009F076 -:10F9C0000AC23EC0813109F462C0823108F0A6C08B -:10F9D000803109F000C2DFC0883109F472C089317A -:10F9E00050F4853109F4D9C0853108F477C18631E6 -:10F9F00009F0F1C173C18A3109F457C08A3108F4A2 -:10FA00007CC08B3109F446C08D3109F0E4C18D8191 -:10FA1000803311F090E00AC08F81882311F49EE1B9 -:10FA200005C0813011F091E001C098E91A821B8273 -:10FA30008D818C831D829E831F8227E030E0CFC1A1 -:10FA40001A8288E08B8381E48C8386E58D8382E54E -:10FA50008E8389E48F8383E5888780E589878FE5B6 -:10FA60008A8782E38B872BE030E0B9C18A818139B4 -:10FA700041F0823941F0803911F48FE005C080E017 -:10FA800003C082E001C08AE01A828B8344C09924BB -:10FA9000939481C08D81882311F48EE12CC0813034 -:10FAA00011F081E028C088E926C01A82E1E0F0E088 -:10FAB00089E08093570084918B831C8224E030E09E -:10FAC0008EC18B81803589F48C81883039F4E2E0F5 -:10FAD000F0E089E08093570084910DC0E0E0F0E011 -:10FAE00089E080935700849106C0E3E0F0E089E06C -:10FAF0008093570084911A82DFCF8D81836C99E0C7 -:10FB0000E1E0F0E0082E90935700E89507B600FC7E -:10FB1000FDCF1A821B8223E030E061C11A82CE5CE5 -:10FB2000DE4F188219821A821B82C253D14055C1FE -:10FB30008A8190E0A0E0B0E0582F442733272227A5 -:10FB40008B8190E0A0E0B0E0DC0199278827282B8A -:10FB5000392B4A2B5B2B8D8190E0A0E0B0E0282B65 -:10FB6000392B4A2B5B2B8C8190E0A0E0B0E0BA2FC0 -:10FB7000A92F982F8827282B392B4A2B5B2B220F54 -:10FB8000331F441F551FC05EDE4F288339834A83CD -:10FB90005B83C052D1401A8220C19A812B8183316C -:10FBA00049F0C05EDE4F488159816A817B81C05235 -:10FBB000D1408AC0CE5CDE4F488159816A817B8109 -:10FBC000C253D140403080EC580783E0680780E0A2 -:10FBD0007807F0F483E0FA0160935B0080935700AC -:10FBE000E89507B600FCFDCFCE5CDE4F4881598119 -:10FBF0006A817B81C253D14040505F4F6F4F7F4F2E -:10FC0000CE5CDE4F488359836A837B83C253D140E5 -:10FC1000C95CDE4F9883C753D140CA5CDE4F18825F -:10FC2000C653D140022F10E0CA5CDE4F6881798153 -:10FC3000C653D140062B172BC05EDE4F4881598139 -:10FC40006A817B81C052D140DE011B9631E08C91EC -:10FC500011962C9111971296C75CDE4F2883C953D9 -:10FC6000D140C85CDE4F1882C853D14090E0C85CD8 -:10FC7000DE4FE881F981C853D1408E2B9F2B0C01B8 -:10FC8000FA0160935B0030935700E89511244E5FB2 -:10FC90005F4F6F4F7F4F02501040C9F685E0C05E46 -:10FCA000DE4FE880F9800A811B81C052D140F70104 -:10FCB00000935B0080935700E89507B600FCFDCFEA -:10FCC00081E180935700E8951A82C05EDE4F488339 -:10FCD00059836A837B83C052D1407FC0FA80C55C60 -:10FCE000DE4FF882CB53D140C65CDE4F1882CA5338 -:10FCF000D1408B81C82EDD24C65CDE4F088119817E -:10FD0000CA53D140C02AD12A1A828981BE016D5FAF -:10FD10007F4F843121F59601C05EDE4FE880F98087 -:10FD20000A811B81C052D1400BBFF7018791969188 -:10FD3000DB018C9311969C936E5F7F4FD801C701B6 -:10FD40000296A11DB11DC05EDE4F88839983AA83F0 -:10FD5000BB83C052D14022503040F1F636C0C05E65 -:10FD6000DE4F288139814A815B81C052D14008949D -:10FD7000C108D108760100E010E00894C11CD11C34 -:10FD80000894E11CF11C011D111DE20EF31E041F5D -:10FD9000151F21BDBB27A52F942F832F82BD2F5F59 -:10FDA0003F4F4F4F5F4FF89A80B5DB018D93BD01F8 -:10FDB0002E153F054007510761F7C05EDE4F2883CF -:10FDC00039834A835B83C052D14096012D5F3F4FF8 -:10FDD000FB01108204C080EC8A8322E030E08BE1DA -:10FDE0008093C6008091C00086FFFCCF8091C00048 -:10FDF00080648093C000C15DDE4FF881CF52D14056 -:10FE0000F093C6008091C00086FFFCCF8091C000B7 -:10FE100080648093C000432F3093C6008091C0005F -:10FE200086FFFCCF8091C00080648093C000922F39 -:10FE30002093C6008091C00086FFFCCF8091C00057 -:10FE400080648093C0008EE08093C6008091C000E3 -:10FE500086FFFCCF8091C00080648093C00065E184 -:10FE6000C15DDE4FE880CF52D1406E2569276427FF -:10FE7000FE01319610C090819093C6008091C00021 -:10FE800086FFFCCF31968091C00080648093C000D3 -:10FE90006927215030402115310569F76093C6006C -:10FEA0008091C00086FFFCCF8091C0008064809369 -:10FEB000C00085B1805885B9992081F4C15DDE4FBD -:10FEC0000881CF52D1400F5FC15DDE4F0883CF5212 -:10FED000D14090E0A0E0B0E00D949AF527982F98DB -:10FEE00080E090E020ED37E0F9013197F1F70196DD -:10FEF00084369105C9F700008091C0008D7F809302 -:10FF0000C00081E180935700E895EE27FF27099410 -:10FF1000FFCF90E00D949AF597FB092E07260AD0A3 -:10FF200077FD04D02ED006D000201AF4709561958C -:10FF30007F4F0895F6F7909581959F4F0895A1E220 -:10FF40001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F53 -:10FF5000FF1FA217B307E407F50720F0A21BB30B9E -:10FF6000E40BF50B661F771F881F991F1A9469F71A -:10FF700060957095809590959B01AC01BD01CF0176 -:10FF80000895AA1BBB1B51E107C0AA1FBB1FA617E0 -:10FF9000B70710F0A61BB70B881F991F5A95A9F732 -:10FFA00080959095BC01CD010895F999FECF92BD41 -:10FFB00081BDF89A992780B50895262FF999FECF2B -:10FFC0001FBA92BD81BD20BD0FB6F894FA9AF99A76 -:0AFFD0000FBE01960895F894FFCFCC -:040000033000E000E9 -:00000001FF diff --git a/bootloaders/stk500v2/STK500V2.pnproj b/bootloaders/stk500v2/STK500V2.pnproj deleted file mode 100644 index d935019..0000000 --- a/bootloaders/stk500v2/STK500V2.pnproj +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/bootloaders/stk500v2/STK500V2.pnps b/bootloaders/stk500v2/STK500V2.pnps deleted file mode 100644 index f85cde5..0000000 --- a/bootloaders/stk500v2/STK500V2.pnps +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/bootloaders/stk500v2/avr_cpunames.h b/bootloaders/stk500v2/avr_cpunames.h deleted file mode 100644 index ad0ed9c..0000000 --- a/bootloaders/stk500v2/avr_cpunames.h +++ /dev/null @@ -1,189 +0,0 @@ -//************************************************************************************************** -//* -//* Atmel AVR CPU name strings -//* -//************************************************************************************************** -//* Sep 19, 2010 Started on avr_cpunames.h -//************************************************************************************************** - -//#include "avr_cpunames.h" - -//************************************************************************************************** - - -#if defined (__AVR_AT94K__) - #define _AVR_CPU_NAME_ "AT94k" -#elif defined (__AVR_AT43USB320__) -#elif defined (__AVR_AT43USB355__) -#elif defined (__AVR_AT76C711__) -#elif defined (__AVR_AT86RF401__) -#elif defined (__AVR_AT90PWM1__) -#elif defined (__AVR_AT90PWM2__) -#elif defined (__AVR_AT90PWM2B__) -#elif defined (__AVR_AT90PWM3__) -#elif defined (__AVR_AT90PWM3B__) -#elif defined (__AVR_AT90PWM216__) -#elif defined (__AVR_AT90PWM316__) -#elif defined (__AVR_ATmega32C1__) -#elif defined (__AVR_ATmega32M1__) -#elif defined (__AVR_ATmega32U4__) - #define _AVR_CPU_NAME_ "ATmega32U4" -#elif defined (__AVR_ATmega32U6__) - #define _AVR_CPU_NAME_ "ATmega32U6" -#elif defined (__AVR_ATmega128__) - #define _AVR_CPU_NAME_ "Atmega128" -#elif defined (__AVR_ATmega1280__) - #define _AVR_CPU_NAME_ "ATmega1280" -#elif defined (__AVR_ATmega1281__) - #define _AVR_CPU_NAME_ "ATmega1281" -#elif defined (__AVR_ATmega1284P__) - #define _AVR_CPU_NAME_ "ATmega1284" -#elif defined (__AVR_ATmega128RFA1__) - #define _AVR_CPU_NAME_ "ATmega128RFA1" -#elif defined (__AVR_ATmega2560__) - #define _AVR_CPU_NAME_ "ATmega2560" -#elif defined (__AVR_ATmega2561__) - #define _AVR_CPU_NAME_ "ATmega2561" -#elif defined (__AVR_AT90CAN32__) - #define _AVR_CPU_NAME_ "AT90CAN32" -#elif defined (__AVR_AT90CAN64__) - #define _AVR_CPU_NAME_ "AT90CAN64" -#elif defined (__AVR_AT90CAN128__) - #define _AVR_CPU_NAME_ "AT90CAN128" -#elif defined (__AVR_AT90USB82__) - #define _AVR_CPU_NAME_ "AT90USB82" -#elif defined (__AVR_AT90USB162__) - #define _AVR_CPU_NAME_ "AT90USB162" -#elif defined (__AVR_AT90USB646__) - #define _AVR_CPU_NAME_ "AT90USB646" -#elif defined (__AVR_AT90USB647__) - #define _AVR_CPU_NAME_ "AT90USB647" -#elif defined (__AVR_AT90USB1286__) - #define _AVR_CPU_NAME_ "AT90USB1286" -#elif defined (__AVR_AT90USB1287__) - #define _AVR_CPU_NAME_ "AT90USB1287" -#elif defined (__AVR_ATmega64__) - #define _AVR_CPU_NAME_ "ATmega64" -#elif defined (__AVR_ATmega640__) - #define _AVR_CPU_NAME_ "ATmega640" -#elif defined (__AVR_ATmega644__) - #define _AVR_CPU_NAME_ "ATmega644" -#elif defined (__AVR_ATmega644P__) - #define _AVR_CPU_NAME_ "ATmega644P" -#elif defined (__AVR_ATmega645__) - #define _AVR_CPU_NAME_ "ATmega645" -#elif defined (__AVR_ATmega6450__) - #define _AVR_CPU_NAME_ "ATmega6450" -#elif defined (__AVR_ATmega649__) - #define _AVR_CPU_NAME_ "ATmega649" -#elif defined (__AVR_ATmega6490__) - #define _AVR_CPU_NAME_ "ATmega6490" -#elif defined (__AVR_ATmega103__) - #define _AVR_CPU_NAME_ "ATmega103" -#elif defined (__AVR_ATmega32__) - #define _AVR_CPU_NAME_ "Atmega32" -#elif defined (__AVR_ATmega323__) - #define _AVR_CPU_NAME_ "ATmega323" -#elif defined (__AVR_ATmega324P__) - #define _AVR_CPU_NAME_ "ATmega324P" -#elif defined (__AVR_ATmega325__) - #define _AVR_CPU_NAME_ "ATmega325" -#elif defined (__AVR_ATmega325P__) - #define _AVR_CPU_NAME_ "ATmega325P" -#elif defined (__AVR_ATmega3250__) - #define _AVR_CPU_NAME_ "ATmega3250" -#elif defined (__AVR_ATmega3250P__) - #define _AVR_CPU_NAME_ "ATmega3250P" -#elif defined (__AVR_ATmega328P__) - #define _AVR_CPU_NAME_ "ATmega328P" -#elif defined (__AVR_ATmega329__) - #define _AVR_CPU_NAME_ "ATmega329" -#elif defined (__AVR_ATmega329P__) - #define _AVR_CPU_NAME_ "ATmega329P" -#elif defined (__AVR_ATmega3290__) - #define _AVR_CPU_NAME_ "ATmega3290" -#elif defined (__AVR_ATmega3290P__) - #define _AVR_CPU_NAME_ "ATmega3290P" -#elif defined (__AVR_ATmega32HVB__) - #define _AVR_CPU_NAME_ "ATmega32HVB" -#elif defined (__AVR_ATmega406__) - #define _AVR_CPU_NAME_ "ATmega406" -#elif defined (__AVR_ATmega16__) - #define _AVR_CPU_NAME_ "Atmega16" -#elif defined (__AVR_ATmega161__) - #define _AVR_CPU_NAME_ "ATmega161" -#elif defined (__AVR_ATmega162__) - #define _AVR_CPU_NAME_ "ATmega162" -#elif defined (__AVR_ATmega163__) - #define _AVR_CPU_NAME_ "ATmega163" -#elif defined (__AVR_ATmega164P__) - #define _AVR_CPU_NAME_ "ATmega164P" -#elif defined (__AVR_ATmega165__) - #define _AVR_CPU_NAME_ "ATmega165" -#elif defined (__AVR_ATmega165P__) - #define _AVR_CPU_NAME_ "ATmega165P" -#elif defined (__AVR_ATmega168__) - #define _AVR_CPU_NAME_ "ATmega168" -#elif defined (__AVR_ATmega168P__) - #define _AVR_CPU_NAME_ "ATmega168P" -#elif defined (__AVR_ATmega169__) - #define _AVR_CPU_NAME_ "Atmega169" -#elif defined (__AVR_ATmega169P__) - #define _AVR_CPU_NAME_ "ATmega169P" -#elif defined (__AVR_ATmega8HVA__) - #define _AVR_CPU_NAME_ "ATmega8HVA" -#elif defined (__AVR_ATmega16HVA__) - #define _AVR_CPU_NAME_ "ATmega16HVA" -#elif defined (__AVR_ATmega8__) - #define _AVR_CPU_NAME_ "ATmega8" -#elif defined (__AVR_ATmega48__) - #define _AVR_CPU_NAME_ "ATmega48" -#elif defined (__AVR_ATmega48P__) - #define _AVR_CPU_NAME_ "ATmega48P" -#elif defined (__AVR_ATmega88__) - #define _AVR_CPU_NAME_ "ATmega88" -#elif defined (__AVR_ATmega88P__) - #define _AVR_CPU_NAME_ "ATmega88P" -#elif defined (__AVR_ATmega8515__) - #define _AVR_CPU_NAME_ "ATmega8515" -#elif defined (__AVR_ATmega8535__) - #define _AVR_CPU_NAME_ "ATmega8535" -#elif defined (__AVR_AT90S8535__) -#elif defined (__AVR_AT90C8534__) -#elif defined (__AVR_AT90S8515__) -#elif defined (__AVR_AT90S4434__) -#elif defined (__AVR_AT90S4433__) -#elif defined (__AVR_AT90S4414__) -#elif defined (__AVR_ATtiny22__) -#elif defined (__AVR_ATtiny26__) -#elif defined (__AVR_AT90S2343__) -#elif defined (__AVR_AT90S2333__) -#elif defined (__AVR_AT90S2323__) -#elif defined (__AVR_AT90S2313__) -#elif defined (__AVR_ATtiny2313__) - #define _AVR_CPU_NAME_ "ATtiny2313" -#elif defined (__AVR_ATtiny13__) -#elif defined (__AVR_ATtiny13A__) -#elif defined (__AVR_ATtiny25__) -#elif defined (__AVR_ATtiny45__) -#elif defined (__AVR_ATtiny85__) -#elif defined (__AVR_ATtiny24__) -#elif defined (__AVR_ATtiny44__) -#elif defined (__AVR_ATtiny84__) -#elif defined (__AVR_ATtiny261__) -#elif defined (__AVR_ATtiny461__) -#elif defined (__AVR_ATtiny861__) -#elif defined (__AVR_ATtiny43U__) -#elif defined (__AVR_ATtiny48__) -#elif defined (__AVR_ATtiny88__) -#elif defined (__AVR_ATtiny167__) -#elif defined (__AVR_ATmega8U2__) - #define _AVR_CPU_NAME_ "ATmega8U2" -#else - #error cpu not defined -#endif - - -#if !defined (_AVR_CPU_NAME_) -// #define _AVR_CPU_NAME_ "UNKNOWN" -#endif diff --git a/bootloaders/stk500v2/avrinterruptnames.h b/bootloaders/stk500v2/avrinterruptnames.h deleted file mode 100644 index e7e3ed9..0000000 --- a/bootloaders/stk500v2/avrinterruptnames.h +++ /dev/null @@ -1,1040 +0,0 @@ -//************************************************************************************************** -//* -//* interrupt vector names -//* -//* It is important to note that the vector numbers listed here -//* are the ATMEL documentation numbers. The Arduino numbers are 1 less -//* This is because the Atmel docs start numbering the interrupts at 1 -//* when it is actually vector #0 in the table. -//************************************************************************************************** -//* Jun 1, 2010 Added support for ATmega1281 -//* Jun 30, 2010 Putting in more ifdefs to conserve space -//* Jul 3, 2010 More #ifdefs to conserve space and testing on most of my boards -//* Jul 4, 2010 Started using vector defs for #ifdefs as defined in -//* Jul 13, 2010 Added support for __AVR_ATmega128__ -//* Aug 26, 2010 Added support for __AVR_ATmega2561__ -//* Sep 13, 2010 Added support for __AVR_AT90CAN32__ __AVR_AT90CAN64__ __AVR_AT90CAN128__ -//************************************************************************************************** - -//#include "avrinterruptnames.h" - -//************************************************************************************************** -//* this defines the interrupt vectors and allows us to compile ONLY those strings that are actually -//* in the target CPU. This way we do not have to keep making changes based on cpu, it will be -//* automatic even if we add a new CPU -#ifndef _AVR_IO_H_ - #include -#endif -//************************************************************************************************** - -#ifdef __MWERKS__ - #define prog_char char - #define PGM_P char * -#endif - - prog_char gAvrInt_RESET[] PROGMEM = "RESET"; -#ifdef INT0_vect - prog_char gAvrInt_INT0[] PROGMEM = "INT0"; -#endif -#ifdef INT1_vect - prog_char gAvrInt_INT1[] PROGMEM = "INT1"; -#endif -#ifdef INT2_vect - prog_char gAvrInt_INT2[] PROGMEM = "INT2"; -#endif -#ifdef INT3_vect - prog_char gAvrInt_INT3[] PROGMEM = "INT3"; -#endif -#ifdef INT4_vect - prog_char gAvrInt_INT4[] PROGMEM = "INT4"; -#endif -#ifdef INT5_vect - prog_char gAvrInt_INT5[] PROGMEM = "INT5"; -#endif -#ifdef INT6_vect - prog_char gAvrInt_INT6[] PROGMEM = "INT6"; -#endif -#ifdef INT7_vect - prog_char gAvrInt_INT7[] PROGMEM = "INT7"; -#endif -#ifdef PCINT0_vect - prog_char gAvrInt_PCINT0[] PROGMEM = "PCINT0"; -#endif -#ifdef PCINT1_vect - prog_char gAvrInt_PCINT1[] PROGMEM = "PCINT1"; -#endif -#ifdef PCINT2_vect - prog_char gAvrInt_PCINT2[] PROGMEM = "PCINT2"; -#endif -#ifdef PCINT3_vect - prog_char gAvrInt_PCINT3[] PROGMEM = "PCINT3"; -#endif -#ifdef WDT_vect - prog_char gAvrInt_WDT[] PROGMEM = "WDT"; -#endif -#ifdef TIMER0_COMP_vect - prog_char gAvrInt_TIMER0_COMP[] PROGMEM = "TIMER0 COMP"; -#endif -#ifdef TIMER0_COMPA_vect - prog_char gAvrInt_TIMER0_COMPA[] PROGMEM = "TIMER0 COMPA"; -#endif -#ifdef TIMER0_COMPB_vect - prog_char gAvrInt_TIMER0_COMPB[] PROGMEM = "TIMER0 COMPB"; -#endif -#ifdef TIMER0_OVF_vect - prog_char gAvrInt_TIMER0_OVF[] PROGMEM = "TIMER0 OVF"; -#endif -#ifdef TIMER1_CAPT_vect - prog_char gAvrInt_TIMER1_CAPT[] PROGMEM = "TIMER1 CAPT"; -#endif -#ifdef TIMER1_COMPA_vect - prog_char gAvrInt_TIMER1_COMPA[] PROGMEM = "TIMER1 COMPA"; -#endif -#ifdef TIMER1_COMPB_vect - prog_char gAvrInt_TIMER1_COMPB[] PROGMEM = "TIMER1 COMPB"; -#endif -#ifdef TIMER1_COMPC_vect - prog_char gAvrInt_TIMER1_COMPC[] PROGMEM = "TIMER1 COMPC"; -#endif -#ifdef TIMER1_OVF_vect - prog_char gAvrInt_TIMER1_OVF[] PROGMEM = "TIMER1 OVF"; -#endif -#ifdef TIMER2_COMP_vect - prog_char gAvrInt_TIMER2_COMP[] PROGMEM = "TIMER2 COMP"; -#endif -#ifdef TIMER2_COMPA_vect - prog_char gAvrInt_TIMER2_COMPA[] PROGMEM = "TIMER2 COMPA"; -#endif -#ifdef TIMER2_COMPB_vect - prog_char gAvrInt_TIMER2_COMPB[] PROGMEM = "TIMER2 COMPB"; -#endif -#ifdef TIMER2_OVF_vect - prog_char gAvrInt_TIMER2_OVF[] PROGMEM = "TIMER2 OVF"; -#endif -#ifdef TIMER3_CAPT_vect - prog_char gAvrInt_TIMER3_CAPT[] PROGMEM = "TIMER3 CAPT"; -#endif -#ifdef TIMER3_COMPA_vect - prog_char gAvrInt_TIMER3_COMPA[] PROGMEM = "TIMER3 COMPA"; -#endif -#ifdef TIMER3_COMPB_vect - prog_char gAvrInt_TIMER3_COMPB[] PROGMEM = "TIMER3 COMPB"; -#endif -#ifdef TIMER3_COMPC_vect - prog_char gAvrInt_TIMER3_COMPC[] PROGMEM = "TIMER3 COMPC"; -#endif -#ifdef TIMER3_OVF_vect - prog_char gAvrInt_TIMER3_OVF[] PROGMEM = "TIMER3 OVF"; -#endif -#ifdef TIMER4_CAPT_vect - prog_char gAvrInt_TIMER4_CAPT[] PROGMEM = "TIMER4 CAPT"; -#endif -#ifdef TIMER4_COMPA_vect - prog_char gAvrInt_TIMER4_COMPA[] PROGMEM = "TIMER4 COMPA"; -#endif -#ifdef TIMER4_COMPB_vect - prog_char gAvrInt_TIMER4_COMPB[] PROGMEM = "TIMER4 COMPB"; -#endif -#ifdef TIMER4_COMPC_vect - prog_char gAvrInt_TIMER4_COMPC[] PROGMEM = "TIMER4 COMPC"; -#endif -#ifdef TIMER4_COMPD_vect - prog_char gAvrInt_TIMER4_COMPD[] PROGMEM = "TIMER4 COMPD"; -#endif -#ifdef TIMER4_OVF_vect - prog_char gAvrInt_TIMER4_OVF[] PROGMEM = "TIMER4 OVF"; -#endif -#ifdef TIMER4_FPF_vect - prog_char gAvrInt_TIMER4_FPF[] PROGMEM = "TIMER4 Fault Protection"; -#endif -#ifdef TIMER5_CAPT_vect - prog_char gAvrInt_TIMER5_CAPT[] PROGMEM = "TIMER5 CAPT"; -#endif -#ifdef TIMER5_COMPA_vect - prog_char gAvrInt_TIMER5_COMPA[] PROGMEM = "TIMER5 COMPA"; -#endif -#ifdef TIMER5_COMPB_vect - prog_char gAvrInt_TIMER5_COMPB[] PROGMEM = "TIMER5 COMPB"; -#endif -#ifdef TIMER5_COMPC_vect - prog_char gAvrInt_TIMER5_COMPC[] PROGMEM = "TIMER5 COMPC"; -#endif -#ifdef TIMER5_OVF_vect - prog_char gAvrInt_TIMER5_OVF[] PROGMEM = "TIMER5 OVF"; -#endif - -//* when there is only 1 usart -#if defined(USART_RX_vect) || defined(USART_RXC_vect) - prog_char gAvrInt_USART_RX[] PROGMEM = "USART RX"; -#endif -#if defined(USART_UDRE_vect) - prog_char gAvrInt_USART_UDRE[] PROGMEM = "USART UDRE"; -#endif -#if defined(USART_TX_vect) || defined(USART_TXC_vect) - prog_char gAvrInt_USART_TX[] PROGMEM = "USART TX"; -#endif - - -//* usart 0 -#if defined(USART0_RX_vect) - prog_char gAvrInt_USART0_RX[] PROGMEM = "USART0 RX"; -#endif -#if defined(USART0_UDRE_vect) - prog_char gAvrInt_USART0_UDRE[] PROGMEM = "USART0 UDRE"; -#endif -#if defined(USART0_TX_vect) - prog_char gAvrInt_USART0_TX[] PROGMEM = "USART0 TX"; -#endif - - -//* usart 1 -#ifdef USART1_RX_vect - prog_char gAvrInt_USART1_RX[] PROGMEM = "USART1 RX"; -#endif -#ifdef USART1_UDRE_vect - prog_char gAvrInt_USART1_UDRE[] PROGMEM = "USART1 UDRE"; -#endif -#ifdef USART1_TX_vect - prog_char gAvrInt_USART1_TX[] PROGMEM = "USART1 TX"; -#endif - -//* usart 2 -#ifdef USART2_RX_vect - prog_char gAvrInt_USART2_RX[] PROGMEM = "USART2 RX"; -#endif -#ifdef USART2_UDRE_vect - prog_char gAvrInt_USART2_UDRE[] PROGMEM = "USART2 UDRE"; -#endif -#ifdef USART2_TX_vect - prog_char gAvrInt_USART2_TX[] PROGMEM = "USART2 TX"; -#endif - -//* usart 3 -#ifdef USART3_RX_vect - prog_char gAvrInt_USART3_RX[] PROGMEM = "USART3 RX"; -#endif -#ifdef USART3_UDRE_vect - prog_char gAvrInt_USART3_UDRE[] PROGMEM = "USART3 UDRE"; -#endif -#ifdef USART3_TX_vect - prog_char gAvrInt_USART3_TX[] PROGMEM = "USART3 TX"; -#endif -#ifdef SPI_STC_vect - prog_char gAvrInt_SPI_STC[] PROGMEM = "SPI STC"; -#endif -#ifdef ADC_vect - prog_char gAvrInt_ADC[] PROGMEM = "ADC"; -#endif -#if defined(ANALOG_COMP_vect) || defined(ANA_COMP_vect) - prog_char gAvrInt_ANALOG_COMP[] PROGMEM = "ANALOG COMP"; -#endif -#if defined(EE_READY_vect) || defined(EE_RDY_vect) - prog_char gAvrInt_EE_READY[] PROGMEM = "EE READY"; -#endif -#ifdef TWI_vect - prog_char gAvrInt_TWI[] PROGMEM = "TWI"; -#endif -#if defined(SPM_READY_vect) || defined(SPM_RDY_vect) - prog_char gAvrInt_SPM_READY[] PROGMEM = "SPM READY"; -#endif -#ifdef USI_START_vect - prog_char gAvrInt_USI_START[] PROGMEM = "USI START"; -#endif -#ifdef USI_OVERFLOW_vect - prog_char gAvrInt_USI_OVERFLOW[] PROGMEM = "USI OVERFLOW"; -#endif -#ifdef USB_GEN_vect - prog_char gAvrInt_USB_General[] PROGMEM = "USB General"; -#endif -#ifdef USB_COM_vect - prog_char gAvrInt_USB_Endpoint[] PROGMEM = "USB Endpoint"; -#endif - -#ifdef LCD_vect - prog_char gAvrInt_LCD_StartFrame[] PROGMEM = "LCD Start of Frame"; -#endif - -//* these are for the chips with CAN bus support -#ifdef CANIT_vect - prog_char gAvrInt_CAN_TrafnsferCE[] PROGMEM = "CAN Transfer Complete or Error"; -#endif -#ifdef OVRIT_vect - prog_char gAvrInt_CAN_TimerOverRun[] PROGMEM = "CAN Timer Overrun"; -#endif - -//* these are for __AVR_ATmega128RFA1__ -#ifdef TRX24_PLL_LOCK_vect - prog_char gAvrInt_TRN_PLL_LOCK[] PROGMEM = "TRX24_PLL_LOCK"; -#endif -#ifdef TRX24_PLL_UNLOCK_vect - prog_char gAvrInt_TRN_PLL_UNLOCK[] PROGMEM = "TRX24_PLL_UNLOCK"; -#endif -#ifdef TRX24_RX_START_vect - prog_char gAvrInt_TRN_RX_START[] PROGMEM = "TRX24_RX_START"; -#endif -#ifdef TRX24_RX_END_vect - prog_char gAvrInt_TRN_RX_END[] PROGMEM = "TRX24_RX_END"; -#endif -#ifdef TRX24_CCA_ED_DONE_vect - prog_char gAvrInt_TRN_CAAED_DONE[] PROGMEM = "TRX24_CCA_ED_DONE"; -#endif -#ifdef TRX24_XAH_AMI_vect - prog_char gAvrInt_TRN_FRAME_MATCH[] PROGMEM = "TRX24_FRAME_ADDRESS_MATCH"; -#endif -#ifdef TRX24_TX_END_vect - prog_char gAvrInt_TRN_TX_END[] PROGMEM = "TRX24_TX_END"; -#endif -#ifdef TRX24_AWAKE_vect - prog_char gAvrInt_TRN_AWAKE[] PROGMEM = "TRX24_AWAKE"; -#endif -#ifdef SCNT_CMP1_vect - prog_char gAvrInt_SCNT_CMP1[] PROGMEM = "SCNT_CMP1"; -#endif -#ifdef SCNT_CMP2_vect - prog_char gAvrInt_SCNT_CMP2[] PROGMEM = "SCNT_CMP2"; -#endif -#ifdef SCNT_CMP3_vect - prog_char gAvrInt_SCNT_CMP3[] PROGMEM = "SCNT_CMP3"; -#endif -#ifdef SCNT_OVFL_vect - prog_char gAvrInt_SCNT_OVFL[] PROGMEM = "SCNT_OVFL"; -#endif -#ifdef SCNT_BACKOFF_vect - prog_char gAvrInt_SCNT_BACKOFF[] PROGMEM = "SCNT_BACKOFF"; -#endif -#ifdef AES_READY_vect - prog_char gAvrInt_AES_READY[] PROGMEM = "AES_READY"; -#endif -#ifdef BAT_LOW_vect - prog_char gAvrInt_BAT_LOW[] PROGMEM = "BAT_LOW"; -#endif - - - -//************************************************************************************************** -//* these do not have vector defs and have to be done by CPU type -#if defined(__AVR_ATmega645__ ) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) - prog_char gAvrInt_NOT_USED[] PROGMEM = "NOT_USED"; -#endif -#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega128RFA1__) - prog_char gAvrInt_RESERVED[] PROGMEM = "Reserved"; -#endif - - prog_char gAvrInt_END[] PROGMEM = "*"; - - - - - -//************************************************************************************************** -#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) -#pragma mark __AVR_ATmega168__ / __AVR_ATmega328P__ / __AVR_ATmega328__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_PCINT0, // 4 - gAvrInt_PCINT1, // 5 - gAvrInt_PCINT2, // 6 - gAvrInt_WDT, // 7 - gAvrInt_TIMER2_COMPA, // 8 - gAvrInt_TIMER2_COMPB, // 9 - gAvrInt_TIMER2_OVF, // 10 - gAvrInt_TIMER1_CAPT, // 11 - gAvrInt_TIMER1_COMPA, // 12 - gAvrInt_TIMER1_COMPB, // 13 - gAvrInt_TIMER1_OVF, // 14 - gAvrInt_TIMER0_COMPA, // 15 - gAvrInt_TIMER0_COMPB, // 16 - gAvrInt_TIMER0_OVF, // 17 - gAvrInt_SPI_STC, // 18 - gAvrInt_USART_RX, // 19 - gAvrInt_USART_UDRE, // 20 - gAvrInt_USART_TX, // 21 - gAvrInt_ADC, // 22 - gAvrInt_EE_READY, // 23 - gAvrInt_ANALOG_COMP, // 24 - gAvrInt_TWI, // 25 - gAvrInt_SPM_READY, // 26 -}; - -#endif - -//************************************************************************************************** -#if defined(__AVR_ATmega169__) -#pragma mark __AVR_ATmega169__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_PCINT0, // 3 - gAvrInt_PCINT1, // 4 - gAvrInt_TIMER2_COMP, // 5 - gAvrInt_TIMER2_OVF, // 6 - gAvrInt_TIMER1_CAPT, // 7 - gAvrInt_TIMER1_COMPA, // 8 - gAvrInt_TIMER1_COMPB, // 9 - gAvrInt_TIMER1_OVF, // 10 - gAvrInt_TIMER0_COMP, // 11 - gAvrInt_TIMER0_OVF, // 12 - gAvrInt_SPI_STC, // 13 - gAvrInt_USART0_RX, // 14 - gAvrInt_USART0_UDRE, // 15 - gAvrInt_USART0_TX, // 16 - gAvrInt_USI_START, // 17 - gAvrInt_USI_OVERFLOW, // 18 - gAvrInt_ANALOG_COMP, // 19 - gAvrInt_ADC, // 20 - gAvrInt_EE_READY, // 21 - gAvrInt_SPM_READY, // 22 - gAvrInt_LCD_StartFrame, // 23 - -}; - -#endif - - -//************************************************************************************************** -#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) -#pragma mark __AVR_ATmega640__ __AVR_ATmega1280__ __AVR_ATmega1281__ __AVR_ATmega2560__ __AVR_ATmega2561__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_INT3, // 5 - gAvrInt_INT4, // 6 - gAvrInt_INT5, // 7 - gAvrInt_INT6, // 8 - gAvrInt_INT7, // 9 - gAvrInt_PCINT0, // 10 - gAvrInt_PCINT1, // 11 -#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - gAvrInt_PCINT2, // 12 -#else - gAvrInt_NOT_USED, // 12 -#endif - gAvrInt_WDT, // 13 - gAvrInt_TIMER2_COMPA, // 14 - gAvrInt_TIMER2_COMPB, // 15 - gAvrInt_TIMER2_OVF, // 16 - gAvrInt_TIMER1_CAPT, // 17 - gAvrInt_TIMER1_COMPA, // 18 - gAvrInt_TIMER1_COMPB, // 19 - gAvrInt_TIMER1_COMPC, // 20 - gAvrInt_TIMER1_OVF, // 21 - gAvrInt_TIMER0_COMPA, // 22 - gAvrInt_TIMER0_COMPB, // 23 - gAvrInt_TIMER0_OVF, // 24 - gAvrInt_SPI_STC, // 25 - - gAvrInt_USART0_RX, // 26 - gAvrInt_USART0_UDRE, // 27 - gAvrInt_USART0_TX, // 28 - gAvrInt_ANALOG_COMP, // 29 - gAvrInt_ADC, // 30 - gAvrInt_EE_READY, // 31 - - gAvrInt_TIMER3_CAPT, // 32 - gAvrInt_TIMER3_COMPA, // 33 - gAvrInt_TIMER3_COMPB, // 34 - gAvrInt_TIMER3_COMPC, // 35 - gAvrInt_TIMER3_OVF, // 36 - - gAvrInt_USART1_RX, // 37 - gAvrInt_USART1_UDRE, // 38 - gAvrInt_USART1_TX, // 39 - gAvrInt_TWI, // 40 - gAvrInt_SPM_READY, // 41 -#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - gAvrInt_TIMER4_CAPT, // 42 -#else - gAvrInt_NOT_USED, // 42 -#endif - gAvrInt_TIMER4_COMPA, // 43 - gAvrInt_TIMER4_COMPB, // 44 - gAvrInt_TIMER4_COMPC, // 45 - gAvrInt_TIMER4_OVF, // 46 -#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - gAvrInt_TIMER5_CAPT, // 47 -#else - gAvrInt_NOT_USED, // 47 -#endif - gAvrInt_TIMER5_COMPA, // 48 - gAvrInt_TIMER5_COMPB, // 49 - gAvrInt_TIMER5_COMPC, // 50 - gAvrInt_TIMER5_OVF, // 51 - -#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - gAvrInt_USART2_RX, // 52 - gAvrInt_USART2_UDRE, // 53 - gAvrInt_USART2_TX, // 54 - - gAvrInt_USART3_RX, // 55 - gAvrInt_USART3_UDRE, // 56 - gAvrInt_USART3_TX, // 57 -#endif - -}; - -#endif - - - -//************************************************************************************************** -#if defined(__AVR_ATmega324P__ ) || defined(__AVR_ATmega644__ ) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) -#pragma mark __AVR_ATmega324P__ __AVR_ATmega644__ __AVR_ATmega644P__ __AVR_ATmega1284P__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_PCINT0, // 5 - gAvrInt_PCINT1, // 6 - gAvrInt_PCINT2, // 7 - gAvrInt_PCINT3, // 8 - gAvrInt_WDT, // 9 - gAvrInt_TIMER2_COMPA, // 10 - gAvrInt_TIMER2_COMPB, // 11 - gAvrInt_TIMER2_OVF, // 12 - gAvrInt_TIMER1_CAPT, // 13 - gAvrInt_TIMER1_COMPA, // 14 - gAvrInt_TIMER1_COMPB, // 15 - gAvrInt_TIMER1_OVF, // 16 - gAvrInt_TIMER0_COMPA, // 17 - gAvrInt_TIMER0_COMPB, // 18 - gAvrInt_TIMER0_OVF, // 19 - gAvrInt_SPI_STC, // 20 - gAvrInt_USART0_RX, // 21 - gAvrInt_USART0_UDRE, // 22 - gAvrInt_USART0_TX, // 23 - gAvrInt_ANALOG_COMP, // 24 - gAvrInt_ADC, // 25 - gAvrInt_EE_READY, // 26 - gAvrInt_TWI, // 27 - gAvrInt_SPM_READY, // 28 - -#if defined(__AVR_ATmega324P__ ) || defined(__AVR_ATmega644P__) - gAvrInt_USART1_RX, // 29 - gAvrInt_USART1_UDRE, // 30 - gAvrInt_USART1_TX, // 31 -#endif - -}; - - -#endif - -//************************************************************************************************** -#if defined(__AVR_ATmega1284P__ ) -#pragma mark __AVR_ATmega1284P__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_PCINT0, // 5 - gAvrInt_PCINT1, // 6 - gAvrInt_PCINT2, // 7 - gAvrInt_PCINT3, // 8 - gAvrInt_WDT, // 9 - gAvrInt_TIMER2_COMPA, // 10 - gAvrInt_TIMER2_COMPB, // 11 - gAvrInt_TIMER2_OVF, // 12 - gAvrInt_TIMER1_CAPT, // 13 - gAvrInt_TIMER1_COMPA, // 14 - gAvrInt_TIMER1_COMPB, // 15 - gAvrInt_TIMER1_OVF, // 16 - gAvrInt_TIMER0_COMPA, // 17 - gAvrInt_TIMER0_COMPB, // 18 - gAvrInt_TIMER0_OVF, // 19 - gAvrInt_SPI_STC, // 20 - gAvrInt_USART0_RX, // 21 - gAvrInt_USART0_UDRE, // 22 - gAvrInt_USART0_TX, // 23 - gAvrInt_ANALOG_COMP, // 24 - gAvrInt_ADC, // 25 - gAvrInt_EE_READY, // 26 - gAvrInt_TWI, // 27 - gAvrInt_SPM_READY, // 28 - - gAvrInt_USART1_RX, // 29 - gAvrInt_USART1_UDRE, // 30 - gAvrInt_USART1_TX, // 31 - //* these are NOT documented in doc8272.pdf - //* they are in iom1284p.h - gAvrInt_TIMER3_CAPT, // 32 - gAvrInt_TIMER3_COMPA, // 33 - gAvrInt_TIMER3_COMPB, // 34 - gAvrInt_TIMER3_OVF, // 35 - - -}; - - -#endif - - -//************************************************************************************************** -#if defined(__AVR_ATmega645__ ) -#pragma mark __AVR_ATmega645__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_PCINT0, // 3 - gAvrInt_PCINT1, // 4 - gAvrInt_TIMER2_COMP, // 5 - gAvrInt_TIMER2_OVF, // 6 - gAvrInt_TIMER1_CAPT, // 7 - gAvrInt_TIMER1_COMPA, // 8 - gAvrInt_TIMER1_COMPB, // 9 - gAvrInt_TIMER1_OVF, // 10 - gAvrInt_TIMER0_COMP, // 11 - gAvrInt_TIMER0_OVF, // 12 - gAvrInt_SPI_STC, // 13 - gAvrInt_USART0_RX, // 14 - gAvrInt_USART0_UDRE, // 15 - gAvrInt_USART0_TX, // 16 - gAvrInt_USI_START, // 17 - gAvrInt_USI_OVERFLOW, // 18 - gAvrInt_ANALOG_COMP, // 19 - gAvrInt_ADC, // 20 - gAvrInt_EE_READY, // 21 - gAvrInt_SPM_READY, // 22 - gAvrInt_NOT_USED, // 23 - -#if defined(__AVR_ATmega3250__) || defined(__AVR_ATmega6450__) - gAvrInt_PCINT2, // 24 - gAvrInt_PCINT3, // 25 -#endif -}; - - -#endif - -//************************************************************************************************** -#if defined(__AVR_ATmega16__ ) -#pragma mark __AVR_ATmega16__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_TIMER2_COMP, // 4 - gAvrInt_TIMER2_OVF, // 5 - gAvrInt_TIMER1_CAPT, // 6 - gAvrInt_TIMER1_COMPA, // 7 - gAvrInt_TIMER1_COMPB, // 8 - gAvrInt_TIMER1_OVF, // 9 - gAvrInt_TIMER0_OVF, // 10 - gAvrInt_SPI_STC, // 11 - gAvrInt_USART_RX, // 12 - gAvrInt_USART_UDRE, // 13 - gAvrInt_USART_TX, // 14 - gAvrInt_ADC, // 15 - gAvrInt_EE_READY, // 16 - gAvrInt_ANALOG_COMP, // 17 - gAvrInt_TWI, // 18 - gAvrInt_INT2, // 19 - gAvrInt_TIMER0_COMP, // 20 - gAvrInt_SPM_READY, // 21 - -}; - - -#endif - -//************************************************************************************************** -#if defined(__AVR_ATmega32__ ) -#pragma mark __AVR_ATmega32__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_TIMER2_COMP, // 5 - gAvrInt_TIMER2_OVF, // 6 - gAvrInt_TIMER1_CAPT, // 7 - gAvrInt_TIMER1_COMPA, // 8 - gAvrInt_TIMER1_COMPB, // 9 - gAvrInt_TIMER1_OVF, // 10 - gAvrInt_TIMER0_COMP, // 11 - gAvrInt_TIMER0_OVF, // 12 - gAvrInt_SPI_STC, // 13 - gAvrInt_USART_RX, // 14 - gAvrInt_USART_UDRE, // 15 - gAvrInt_USART_TX, // 16 - gAvrInt_ADC, // 17 - gAvrInt_EE_READY, // 18 - gAvrInt_ANALOG_COMP, // 19 - gAvrInt_TWI, // 20 - gAvrInt_SPM_READY, // 21 - -}; - - -#endif - -//************************************************************************************************** -#if defined(__AVR_ATmega32U4__) -#pragma mark __AVR_ATmega32U4__ -//* teensy 2.0 -//* http://www.pjrc.com/teensy/pinout.html -#define _INTERRUPT_NAMES_DEFINED_ - - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_INT3, // 5 - gAvrInt_RESERVED, // 6 - gAvrInt_RESERVED, // 7 - gAvrInt_INT6, // 8 - gAvrInt_RESERVED, // 9 - gAvrInt_PCINT0, // 10 - gAvrInt_USB_General, // 11 - gAvrInt_USB_Endpoint, // 12 - gAvrInt_WDT, // 13 - gAvrInt_RESERVED, // 14 - gAvrInt_RESERVED, // 15 - gAvrInt_RESERVED, // 16 - gAvrInt_TIMER1_CAPT, // 17 - gAvrInt_TIMER1_COMPA, // 18 - gAvrInt_TIMER1_COMPB, // 19 - gAvrInt_TIMER1_COMPC, // 20 - gAvrInt_TIMER1_OVF, // 21 - gAvrInt_TIMER0_COMPA, // 22 - gAvrInt_TIMER0_COMPB, // 23 - gAvrInt_TIMER0_OVF, // 24 - gAvrInt_SPI_STC, // 25 - - gAvrInt_USART1_RX, // 26 - gAvrInt_USART1_UDRE, // 27 - gAvrInt_USART1_TX, // 28 - gAvrInt_ANALOG_COMP, // 29 - - gAvrInt_ADC, // 30 - gAvrInt_EE_READY, // 31 - - gAvrInt_TIMER3_CAPT, // 32 - gAvrInt_TIMER3_COMPA, // 33 - gAvrInt_TIMER3_COMPB, // 34 - gAvrInt_TIMER3_COMPC, // 35 - gAvrInt_TIMER3_OVF, // 36 - gAvrInt_TWI, // 37 - gAvrInt_SPM_READY, // 38 - - gAvrInt_TIMER4_COMPA, // 39 - gAvrInt_TIMER4_COMPB, // 40 - gAvrInt_TIMER4_COMPD, // 41 - gAvrInt_TIMER4_OVF, // 42 - gAvrInt_TIMER4_FPF, // 43 -}; - -#endif - -//************************************************************************************************** -#if defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) -#pragma mark __AVR_AT90USB1286__ -//* teensy++ 2.0 -//* http://www.pjrc.com/teensy/pinout.html -#define _INTERRUPT_NAMES_DEFINED_ - - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_INT3, // 5 - gAvrInt_INT4, // 6 - gAvrInt_INT5, // 7 - gAvrInt_INT6, // 8 - gAvrInt_INT7, // 9 - gAvrInt_PCINT0, // 10 - gAvrInt_USB_General, // 11 - gAvrInt_USB_Endpoint, // 12 - gAvrInt_WDT, // 13 - gAvrInt_TIMER2_COMPA, // 14 - gAvrInt_TIMER2_COMPB, // 15 - gAvrInt_TIMER2_OVF, // 16 - gAvrInt_TIMER1_CAPT, // 17 - gAvrInt_TIMER1_COMPA, // 18 - gAvrInt_TIMER1_COMPB, // 19 - gAvrInt_TIMER1_COMPC, // 20 - gAvrInt_TIMER1_OVF, // 21 - gAvrInt_TIMER0_COMPA, // 22 - gAvrInt_TIMER0_COMPB, // 23 - gAvrInt_TIMER0_OVF, // 24 - gAvrInt_SPI_STC, // 25 - - gAvrInt_USART1_RX, // 26 - gAvrInt_USART1_UDRE, // 27 - gAvrInt_USART1_TX, // 28 - gAvrInt_ANALOG_COMP, // 29 - - gAvrInt_ADC, // 30 - gAvrInt_EE_READY, // 31 - - gAvrInt_TIMER3_CAPT, // 32 - gAvrInt_TIMER3_COMPA, // 33 - gAvrInt_TIMER3_COMPB, // 34 - gAvrInt_TIMER3_COMPC, // 35 - gAvrInt_TIMER3_OVF, // 36 - gAvrInt_TWI, // 37 - gAvrInt_SPM_READY, // 38 - -}; - -#endif - - - - -//************************************************************************************************** -#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega64__) -#pragma mark __AVR_ATmega64__ __AVR_ATmega128__ -#define _INTERRUPT_NAMES_DEFINED_ - - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_INT3, // 5 - gAvrInt_INT4, // 6 - gAvrInt_INT5, // 7 - gAvrInt_INT6, // 8 - gAvrInt_INT7, // 9 - gAvrInt_TIMER2_COMP, // 10 - gAvrInt_TIMER2_OVF, // 11 - gAvrInt_TIMER1_CAPT, // 12 - gAvrInt_TIMER1_COMPA, // 13 - gAvrInt_TIMER1_COMPB, // 14 - gAvrInt_TIMER1_OVF, // 15 - gAvrInt_TIMER0_COMP, // 16 - gAvrInt_TIMER0_OVF, // 17 - gAvrInt_SPI_STC, // 18 - gAvrInt_USART0_RX, // 19 - gAvrInt_USART0_UDRE, // 20 - gAvrInt_USART0_TX, // 21 - gAvrInt_ADC, // 22 - gAvrInt_EE_READY, // 23 - gAvrInt_ANALOG_COMP, // 24 - gAvrInt_TIMER1_COMPC, // 25 - gAvrInt_TIMER3_CAPT, // 26 - gAvrInt_TIMER3_COMPA, // 27 - gAvrInt_TIMER3_COMPB, // 28 - gAvrInt_TIMER3_COMPC, // 29 - gAvrInt_TIMER3_OVF, // 30 - gAvrInt_USART1_RX, // 31 - gAvrInt_USART1_UDRE, // 32 - gAvrInt_USART1_TX, // 33 - gAvrInt_TWI, // 34 - gAvrInt_SPM_READY, // 35 - -}; - -#endif - -//************************************************************************************************** -#if defined(__AVR_AT90CAN32__) || defined(__AVR_AT90CAN64__) || defined(__AVR_AT90CAN128__) -#pragma mark __AVR_AT90CAN32__ __AVR_AT90CAN64__ __AVR_AT90CAN128__ - -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - - gAvrInt_RESET, // 1 - gAvrInt_INT0, // 2 - gAvrInt_INT1, // 3 - gAvrInt_INT2, // 4 - gAvrInt_INT3, // 5 - gAvrInt_INT4, // 6 - gAvrInt_INT5, // 7 - gAvrInt_INT6, // 8 - gAvrInt_INT7, // 9 - gAvrInt_TIMER2_COMP, // 10 - gAvrInt_TIMER2_OVF, // 11 - gAvrInt_TIMER1_CAPT, // 12 - gAvrInt_TIMER1_COMPA, // 13 - gAvrInt_TIMER1_COMPB, // 14 - gAvrInt_TIMER1_COMPC, // 15 - gAvrInt_TIMER1_OVF, // 16 - gAvrInt_TIMER0_COMP, // 17 - gAvrInt_TIMER0_OVF, // 18 - gAvrInt_CAN_TrafnsferCE, // 19 - gAvrInt_CAN_TimerOverRun, // 20 - gAvrInt_SPI_STC, // 21 - gAvrInt_USART0_RX, // 22 - gAvrInt_USART0_UDRE, // 23 - gAvrInt_USART0_TX, // 24 - gAvrInt_ANALOG_COMP, // 25 - gAvrInt_ADC, // 26 - gAvrInt_EE_READY, // 27 - gAvrInt_TIMER3_CAPT, // 28 - gAvrInt_TIMER3_COMPA, // 29 - gAvrInt_TIMER3_COMPB, // 30 - gAvrInt_TIMER3_COMPC, // 31 - gAvrInt_TIMER3_OVF, // 32 - gAvrInt_USART1_RX, // 33 - gAvrInt_USART1_UDRE, // 34 - gAvrInt_USART1_TX, // 35 - gAvrInt_TWI, // 36 - gAvrInt_SPM_READY, // 37 -}; - -#endif - -//************************************************************************************************** -#if defined (__AVR_ATmega128RFA1__) -#pragma mark __AVR_ATmega128RFA1__ -#define _INTERRUPT_NAMES_DEFINED_ - -PGM_P gInterruptNameTable[] PROGMEM = -{ - //* Atmel changed the number scheme for interrupt vectors - gAvrInt_RESET, // 0 - gAvrInt_INT0, // 1 - gAvrInt_INT1, // 2 - gAvrInt_INT2, // 3 - gAvrInt_INT3, // 4 - gAvrInt_INT4, // 5 - gAvrInt_INT5, // 6 - gAvrInt_INT6, // 7 - gAvrInt_INT7, // 8 - gAvrInt_PCINT0, // 9 - gAvrInt_PCINT1, // 10 - gAvrInt_PCINT2, // 11 - gAvrInt_WDT, // 12 - gAvrInt_TIMER2_COMPA, // 13 - gAvrInt_TIMER2_COMPB, // 14 - gAvrInt_TIMER2_OVF, // 15 - gAvrInt_TIMER1_CAPT, // 16 - gAvrInt_TIMER1_COMPA, // 17 - gAvrInt_TIMER1_COMPB, // 18 - gAvrInt_TIMER1_COMPC, // 19 - gAvrInt_TIMER1_OVF, // 20 - gAvrInt_TIMER0_COMPA, // 21 - gAvrInt_TIMER0_COMPB, // 22 - gAvrInt_TIMER0_OVF, // 23 - gAvrInt_SPI_STC, // 24 - gAvrInt_USART0_RX, // 25 - gAvrInt_USART0_UDRE, // 26 - gAvrInt_USART0_TX, // 27 - gAvrInt_ANALOG_COMP, // 28 - gAvrInt_ADC, // 29 - gAvrInt_EE_READY, // 30 - gAvrInt_TIMER3_CAPT, // 31 - gAvrInt_TIMER3_COMPA, // 32 - gAvrInt_TIMER3_COMPB, // 33 - gAvrInt_TIMER3_COMPC, // 34 - gAvrInt_TIMER3_OVF, // 35 - gAvrInt_USART1_RX, // 36 - gAvrInt_USART1_UDRE, // 37 - gAvrInt_USART1_TX, // 38 - gAvrInt_TWI, // 39 - gAvrInt_SPM_READY, // 40 - gAvrInt_TIMER4_CAPT, // 41 - gAvrInt_TIMER4_COMPA, // 42 - gAvrInt_TIMER4_COMPB, // 43 - gAvrInt_TIMER4_COMPC, // 44 - gAvrInt_TIMER4_OVF, // 45 - gAvrInt_TIMER5_CAPT, // 46 - gAvrInt_TIMER5_COMPA, // 47 - gAvrInt_TIMER5_COMPB, // 48 - gAvrInt_TIMER5_COMPC, // 49 - gAvrInt_TIMER5_OVF, // 50 -#if 1 - gAvrInt_RESERVED, // 51 - gAvrInt_RESERVED, // 52 - gAvrInt_RESERVED, // 53 - - gAvrInt_RESERVED, // 54 - gAvrInt_RESERVED, // 55 - gAvrInt_RESERVED, // 56 - -#else - gAvrInt_USART2_RX, // 51 - gAvrInt_USART2_UDRE, // 52 - gAvrInt_USART2_TX, // 53 - - gAvrInt_USART3_RX, // 54 - gAvrInt_USART3_UDRE, // 55 - gAvrInt_USART3_TX, // 56 -#endif - gAvrInt_TRN_PLL_LOCK, // 57 - gAvrInt_TRN_PLL_UNLOCK, // 58 - gAvrInt_TRN_RX_START, // 59 - gAvrInt_TRN_RX_END, // 60 - gAvrInt_TRN_CAAED_DONE, // 61 - gAvrInt_TRN_FRAME_MATCH,// 62 - gAvrInt_TRN_TX_END, // 63 - gAvrInt_TRN_AWAKE, // 64 - - gAvrInt_SCNT_CMP1, // 65 - gAvrInt_SCNT_CMP2, // 66 - gAvrInt_SCNT_CMP3, // 67 - gAvrInt_SCNT_OVFL, // 68 - gAvrInt_SCNT_BACKOFF, // 69 - gAvrInt_AES_READY, // 70 - gAvrInt_BAT_LOW, // 71 - - -}; - -#endif - - -#if !defined(_INTERRUPT_NAMES_DEFINED_) - #warning No interrupt string defs for this cpu -#endif - diff --git a/bootloaders/stk500v2/command.h b/bootloaders/stk500v2/command.h deleted file mode 100644 index 03b1b38..0000000 --- a/bootloaders/stk500v2/command.h +++ /dev/null @@ -1,114 +0,0 @@ -//**** ATMEL AVR - A P P L I C A T I O N N O T E ************************ -//* -//* Title: AVR068 - STK500 Communication Protocol -//* Filename: command.h -//* Version: 1.0 -//* Last updated: 31.01.2005 -//* -//* Support E-mail: avr@atmel.com -//* -//************************************************************************** - -// *****************[ STK message constants ]*************************** - -#define MESSAGE_START 0x1B //= ESC = 27 decimal -#define TOKEN 0x0E - -// *****************[ STK general command constants ]************************** - -#define CMD_SIGN_ON 0x01 -#define CMD_SET_PARAMETER 0x02 -#define CMD_GET_PARAMETER 0x03 -#define CMD_SET_DEVICE_PARAMETERS 0x04 -#define CMD_OSCCAL 0x05 -#define CMD_LOAD_ADDRESS 0x06 -#define CMD_FIRMWARE_UPGRADE 0x07 - - -// *****************[ STK ISP command constants ]****************************** - -#define CMD_ENTER_PROGMODE_ISP 0x10 -#define CMD_LEAVE_PROGMODE_ISP 0x11 -#define CMD_CHIP_ERASE_ISP 0x12 -#define CMD_PROGRAM_FLASH_ISP 0x13 -#define CMD_READ_FLASH_ISP 0x14 -#define CMD_PROGRAM_EEPROM_ISP 0x15 -#define CMD_READ_EEPROM_ISP 0x16 -#define CMD_PROGRAM_FUSE_ISP 0x17 -#define CMD_READ_FUSE_ISP 0x18 -#define CMD_PROGRAM_LOCK_ISP 0x19 -#define CMD_READ_LOCK_ISP 0x1A -#define CMD_READ_SIGNATURE_ISP 0x1B -#define CMD_READ_OSCCAL_ISP 0x1C -#define CMD_SPI_MULTI 0x1D - -// *****************[ STK PP command constants ]******************************* - -#define CMD_ENTER_PROGMODE_PP 0x20 -#define CMD_LEAVE_PROGMODE_PP 0x21 -#define CMD_CHIP_ERASE_PP 0x22 -#define CMD_PROGRAM_FLASH_PP 0x23 -#define CMD_READ_FLASH_PP 0x24 -#define CMD_PROGRAM_EEPROM_PP 0x25 -#define CMD_READ_EEPROM_PP 0x26 -#define CMD_PROGRAM_FUSE_PP 0x27 -#define CMD_READ_FUSE_PP 0x28 -#define CMD_PROGRAM_LOCK_PP 0x29 -#define CMD_READ_LOCK_PP 0x2A -#define CMD_READ_SIGNATURE_PP 0x2B -#define CMD_READ_OSCCAL_PP 0x2C - -#define CMD_SET_CONTROL_STACK 0x2D - -// *****************[ STK HVSP command constants ]***************************** - -#define CMD_ENTER_PROGMODE_HVSP 0x30 -#define CMD_LEAVE_PROGMODE_HVSP 0x31 -#define CMD_CHIP_ERASE_HVSP 0x32 -#define CMD_PROGRAM_FLASH_HVSP ` 0x33 -#define CMD_READ_FLASH_HVSP 0x34 -#define CMD_PROGRAM_EEPROM_HVSP 0x35 -#define CMD_READ_EEPROM_HVSP 0x36 -#define CMD_PROGRAM_FUSE_HVSP 0x37 -#define CMD_READ_FUSE_HVSP 0x38 -#define CMD_PROGRAM_LOCK_HVSP 0x39 -#define CMD_READ_LOCK_HVSP 0x3A -#define CMD_READ_SIGNATURE_HVSP 0x3B -#define CMD_READ_OSCCAL_HVSP 0x3C - -// *****************[ STK status constants ]*************************** - -// Success -#define STATUS_CMD_OK 0x00 - -// Warnings -#define STATUS_CMD_TOUT 0x80 -#define STATUS_RDY_BSY_TOUT 0x81 -#define STATUS_SET_PARAM_MISSING 0x82 - -// Errors -#define STATUS_CMD_FAILED 0xC0 -#define STATUS_CKSUM_ERROR 0xC1 -#define STATUS_CMD_UNKNOWN 0xC9 - -// *****************[ STK parameter constants ]*************************** -#define PARAM_BUILD_NUMBER_LOW 0x80 -#define PARAM_BUILD_NUMBER_HIGH 0x81 -#define PARAM_HW_VER 0x90 -#define PARAM_SW_MAJOR 0x91 -#define PARAM_SW_MINOR 0x92 -#define PARAM_VTARGET 0x94 -#define PARAM_VADJUST 0x95 -#define PARAM_OSC_PSCALE 0x96 -#define PARAM_OSC_CMATCH 0x97 -#define PARAM_SCK_DURATION 0x98 -#define PARAM_TOPCARD_DETECT 0x9A -#define PARAM_STATUS 0x9C -#define PARAM_DATA 0x9D -#define PARAM_RESET_POLARITY 0x9E -#define PARAM_CONTROLLER_INIT 0x9F - -// *****************[ STK answer constants ]*************************** - -#define ANSWER_CKSUM_ERROR 0xB0 - diff --git a/bootloaders/stk500v2/stk500boot.c b/bootloaders/stk500v2/stk500boot.c deleted file mode 100644 index 0b49dff..0000000 --- a/bootloaders/stk500v2/stk500boot.c +++ /dev/null @@ -1,2122 +0,0 @@ -/***************************************************************************** -Title: STK500v2 compatible bootloader - Modified for Wiring board ATMega128-16MHz -Author: Peter Fleury http://jump.to/fleury -Compiler: avr-gcc 3.4.5 or 4.1 / avr-libc 1.4.3 -Hardware: All AVRs with bootloader support, tested with ATmega8 -License: GNU General Public License - -Modified: Worapoht Kornkaewwattanakul http://www.avride.com -Date: 17 October 2007 -Update: 1st, 29 Dec 2007 : Enable CMD_SPI_MULTI but ignore unused command by return 0x00 byte response.. -Compiler: WINAVR20060421 -Description: add timeout feature like previous Wiring bootloader - -DESCRIPTION: - This program allows an AVR with bootloader capabilities to - read/write its own Flash/EEprom. To enter Programming mode - an input pin is checked. If this pin is pulled low, programming mode - is entered. If not, normal execution is done from $0000 - "reset" vector in Application area. - Size fits into a 1024 word bootloader section - when compiled with avr-gcc 4.1 - (direct replace on Wiring Board without fuse setting changed) - -USAGE: - - Set AVR MCU type and clock-frequency (F_CPU) in the Makefile. - - Set baud rate below (AVRISP only works with 115200 bps) - - compile/link the bootloader with the supplied Makefile - - program the "Boot Flash section size" (BOOTSZ fuses), - for boot-size 1024 words: program BOOTSZ01 - - enable the BOOT Reset Vector (program BOOTRST) - - Upload the hex file to the AVR using any ISP programmer - - Program Boot Lock Mode 3 (program BootLock 11 and BootLock 12 lock bits) // (leave them) - - Reset your AVR while keeping PROG_PIN pulled low // (for enter bootloader by switch) - - Start AVRISP Programmer (AVRStudio/Tools/Program AVR) - - AVRISP will detect the bootloader - - Program your application FLASH file and optional EEPROM file using AVRISP - -Note: - Erasing the device without flashing, through AVRISP GUI button "Erase Device" - is not implemented, due to AVRStudio limitations. - Flash is always erased before programming. - - AVRdude: - Please uncomment #define REMOVE_CMD_SPI_MULTI when using AVRdude. - Comment #define REMOVE_PROGRAM_LOCK_BIT_SUPPORT to reduce code size - Read Fuse Bits and Read/Write Lock Bits is not supported - -NOTES: - Based on Atmel Application Note AVR109 - Self-programming - Based on Atmel Application Note AVR068 - STK500v2 Protocol - -LICENSE: - Copyright (C) 2006 Peter Fleury - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -*****************************************************************************/ - -//************************************************************************ -//* Edit History -//************************************************************************ -//* Jul 7, 2010 = Mark Sproul msproul@skycharoit.com -//* Jul 7, 2010 Working on mega2560. No Auto-restart -//* Jul 7, 2010 Switched to 8K bytes (4K words) so that we have room for the monitor -//* Jul 8, 2010 Found older version of source that had auto restart, put that code back in -//* Jul 8, 2010 Adding monitor code -//* Jul 11, 2010 Added blinking LED while waiting for download to start -//* Jul 11, 2010 Added EEPROM test -//* Jul 29, 2010 Added recchar_timeout for timing out on bootloading -//* Aug 23, 2010 Added support for atmega2561 -//* Aug 26, 2010 Removed support for BOOT_BY_SWITCH -//* Sep 8, 2010 Added support for atmega16 -//* Nov 9, 2010 Issue 392:Fixed bug that 3 !!! in code would cause it to jump to monitor -//* Jun 24, 2011 Removed analogRead (was not used) -//* Dec 29, 2011 Issue 181: added watch dog timmer support -//* Dec 29, 2011 Issue 505: bootloader is comparing the seqNum to 1 or the current sequence -//* Jan 1, 2012 Issue 543: CMD_CHIP_ERASE_ISP now returns STATUS_CMD_FAILED instead of STATUS_CMD_OK -//* Jan 1, 2012 Issue 543: Write EEPROM now does something (NOT TESTED) -//* Jan 1, 2012 Issue 544: stk500v2 bootloader doesn't support reading fuses -//************************************************************************ - -//************************************************************************ -//* these are used to test issues -//* http://code.google.com/p/arduino/issues/detail?id=505 -//* Reported by mark.stubbs, Mar 14, 2011 -//* The STK500V2 bootloader is comparing the seqNum to 1 or the current sequence -//* (IE: Requiring the sequence to be 1 or match seqNum before continuing). -//* The correct behavior is for the STK500V2 to accept the PC's sequence number, and echo it back for the reply message. -#define _FIX_ISSUE_505_ -//************************************************************************ -//* Issue 181: added watch dog timmer support -#define _FIX_ISSUE_181_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "command.h" - - -#if defined(_MEGA_BOARD_) || defined(_BOARD_AMBER128_) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) \ - || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1284P__) || defined(ENABLE_MONITOR) - #undef ENABLE_MONITOR - #define ENABLE_MONITOR - static void RunMonitor(void); -#endif - -#ifndef EEWE - #define EEWE 1 -#endif -#ifndef EEMWE - #define EEMWE 2 -#endif - -//#define _DEBUG_SERIAL_ -//#define _DEBUG_WITH_LEDS_ - - -/* - * Uncomment the following lines to save code space - */ -//#define REMOVE_PROGRAM_LOCK_BIT_SUPPORT // disable program lock bits -//#define REMOVE_BOOTLOADER_LED // no LED to show active bootloader -//#define REMOVE_CMD_SPI_MULTI // disable processing of SPI_MULTI commands, Remark this line for AVRDUDE -// - - - -//************************************************************************ -//* LED on pin "PROGLED_PIN" on port "PROGLED_PORT" -//* indicates that bootloader is active -//* PG2 -> LED on Wiring board -//************************************************************************ -#define BLINK_LED_WHILE_WAITING - -#ifdef _MEGA_BOARD_ - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB7 -#elif defined( _BOARD_AMBER128_ ) - //* this is for the amber 128 http://www.soc-robotics.com/ - //* onbarod led is PORTE4 - #define PROGLED_PORT PORTD - #define PROGLED_DDR DDRD - #define PROGLED_PIN PINE7 -#elif defined( _CEREBOTPLUS_BOARD_ ) || defined(_CEREBOT_II_BOARD_) - //* this is for the Cerebot 2560 board and the Cerebot-ii - //* onbarod leds are on PORTE4-7 - #define PROGLED_PORT PORTE - #define PROGLED_DDR DDRE - #define PROGLED_PIN PINE7 -#elif defined( _PENGUINO_ ) - //* this is for the Penguino - //* onbarod led is PORTE4 - #define PROGLED_PORT PORTC - #define PROGLED_DDR DDRC - #define PROGLED_PIN PINC6 -#elif defined( _ANDROID_2561_ ) || defined( __AVR_ATmega2561__ ) - //* this is for the Boston Android 2561 - //* onbarod led is PORTE4 - #define PROGLED_PORT PORTA - #define PROGLED_DDR DDRA - #define PROGLED_PIN PINA3 -#elif defined( _BOARD_MEGA16 ) - //* onbarod led is PORTA7 - #define PROGLED_PORT PORTA - #define PROGLED_DDR DDRA - #define PROGLED_PIN PINA7 - #define UART_BAUDRATE_DOUBLE_SPEED 0 - -#elif defined( _BOARD_BAHBOT_ ) - //* dosent have an onboard LED but this is what will probably be added to this port - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB0 - -#elif defined( _BOARD_ROBOTX_ ) - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB6 -#elif defined( _BOARD_CUSTOM1284_BLINK_B0_ ) - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB0 -#elif defined( _BOARD_CUSTOM1284_ ) - #define PROGLED_PORT PORTD - #define PROGLED_DDR DDRD - #define PROGLED_PIN PIND5 -#elif defined( _AVRLIP_ ) - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB5 -#elif defined( _BOARD_STK500_ ) - #define PROGLED_PORT PORTA - #define PROGLED_DDR DDRA - #define PROGLED_PIN PINA7 -#elif defined( _BOARD_STK502_ ) - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB5 -#elif defined( _BOARD_STK525_ ) - #define PROGLED_PORT PORTB - #define PROGLED_DDR DDRB - #define PROGLED_PIN PINB7 -#else - #define PROGLED_PORT PORTG - #define PROGLED_DDR DDRG - #define PROGLED_PIN PING2 -#endif - - - -/* - * define CPU frequency in Mhz here if not defined in Makefile - */ -#ifndef F_CPU - #define F_CPU 16000000UL -#endif - -#define _BLINK_LOOP_COUNT_ (F_CPU / 2250) -/* - * UART Baudrate, AVRStudio AVRISP only accepts 115200 bps - */ - -#ifndef BAUDRATE - #define BAUDRATE 115200 -#endif - -/* - * Enable (1) or disable (0) USART double speed operation - */ -#ifndef UART_BAUDRATE_DOUBLE_SPEED - #if defined (__AVR_ATmega32__) - #define UART_BAUDRATE_DOUBLE_SPEED 0 - #else - #define UART_BAUDRATE_DOUBLE_SPEED 1 - #endif -#endif - -/* - * HW and SW version, reported to AVRISP, must match version of AVRStudio - */ -#define CONFIG_PARAM_BUILD_NUMBER_LOW 0 -#define CONFIG_PARAM_BUILD_NUMBER_HIGH 0 -#define CONFIG_PARAM_HW_VER 0x0F -#define CONFIG_PARAM_SW_MAJOR 2 -#define CONFIG_PARAM_SW_MINOR 0x0A - -/* - * Calculate the address where the bootloader starts from FLASHEND and BOOTSIZE - * (adjust BOOTSIZE below and BOOTLOADER_ADDRESS in Makefile if you want to change the size of the bootloader) - */ -//#define BOOTSIZE 1024 -#if FLASHEND > 0x0F000 - #define BOOTSIZE 8192 -#else - #define BOOTSIZE 2048 -#endif - -#define APP_END (FLASHEND -(2*BOOTSIZE) + 1) - -/* - * Signature bytes are not available in avr-gcc io_xxx.h - */ -#if defined (__AVR_ATmega8__) - #define SIGNATURE_BYTES 0x1E9307 -#elif defined (__AVR_ATmega16__) - #define SIGNATURE_BYTES 0x1E9403 -#elif defined (__AVR_ATmega32__) - #define SIGNATURE_BYTES 0x1E9502 -#elif defined (__AVR_ATmega8515__) - #define SIGNATURE_BYTES 0x1E9306 -#elif defined (__AVR_ATmega8535__) - #define SIGNATURE_BYTES 0x1E9308 -#elif defined (__AVR_ATmega162__) - #define SIGNATURE_BYTES 0x1E9404 -#elif defined (__AVR_ATmega128__) - #define SIGNATURE_BYTES 0x1E9702 -#elif defined (__AVR_ATmega1280__) - #define SIGNATURE_BYTES 0x1E9703 -#elif defined (__AVR_ATmega2560__) - #define SIGNATURE_BYTES 0x1E9801 -#elif defined (__AVR_ATmega2561__) - #define SIGNATURE_BYTES 0x1e9802 -#elif defined (__AVR_ATmega1284P__) - #define SIGNATURE_BYTES 0x1e9705 -#elif defined (__AVR_ATmega640__) - #define SIGNATURE_BYTES 0x1e9608 -#elif defined (__AVR_ATmega64__) - #define SIGNATURE_BYTES 0x1E9602 -#elif defined (__AVR_ATmega169__) - #define SIGNATURE_BYTES 0x1e9405 -#elif defined (__AVR_AT90USB1287__) - #define SIGNATURE_BYTES 0x1e9782 -#else - #error "no signature definition for MCU available" -#endif - - -#if defined(_BOARD_ROBOTX_) || defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) - #define UART_BAUD_RATE_LOW UBRR1L - #define UART_STATUS_REG UCSR1A - #define UART_CONTROL_REG UCSR1B - #define UART_ENABLE_TRANSMITTER TXEN1 - #define UART_ENABLE_RECEIVER RXEN1 - #define UART_TRANSMIT_COMPLETE TXC1 - #define UART_RECEIVE_COMPLETE RXC1 - #define UART_DATA_REG UDR1 - #define UART_DOUBLE_SPEED U2X1 - -#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \ - || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) - /* ATMega8 with one USART */ - #define UART_BAUD_RATE_LOW UBRRL - #define UART_STATUS_REG UCSRA - #define UART_CONTROL_REG UCSRB - #define UART_ENABLE_TRANSMITTER TXEN - #define UART_ENABLE_RECEIVER RXEN - #define UART_TRANSMIT_COMPLETE TXC - #define UART_RECEIVE_COMPLETE RXC - #define UART_DATA_REG UDR - #define UART_DOUBLE_SPEED U2X - -#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega162__) \ - || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) - /* ATMega with two USART, use UART0 */ - #define UART_BAUD_RATE_LOW UBRR0L - #define UART_STATUS_REG UCSR0A - #define UART_CONTROL_REG UCSR0B - #define UART_ENABLE_TRANSMITTER TXEN0 - #define UART_ENABLE_RECEIVER RXEN0 - #define UART_TRANSMIT_COMPLETE TXC0 - #define UART_RECEIVE_COMPLETE RXC0 - #define UART_DATA_REG UDR0 - #define UART_DOUBLE_SPEED U2X0 -#elif defined(UBRR0L) && defined(UCSR0A) && defined(TXEN0) - /* ATMega with two USART, use UART0 */ - #define UART_BAUD_RATE_LOW UBRR0L - #define UART_STATUS_REG UCSR0A - #define UART_CONTROL_REG UCSR0B - #define UART_ENABLE_TRANSMITTER TXEN0 - #define UART_ENABLE_RECEIVER RXEN0 - #define UART_TRANSMIT_COMPLETE TXC0 - #define UART_RECEIVE_COMPLETE RXC0 - #define UART_DATA_REG UDR0 - #define UART_DOUBLE_SPEED U2X0 -#elif defined(UBRRL) && defined(UCSRA) && defined(UCSRB) && defined(TXEN) && defined(RXEN) - //* catch all - #define UART_BAUD_RATE_LOW UBRRL - #define UART_STATUS_REG UCSRA - #define UART_CONTROL_REG UCSRB - #define UART_ENABLE_TRANSMITTER TXEN - #define UART_ENABLE_RECEIVER RXEN - #define UART_TRANSMIT_COMPLETE TXC - #define UART_RECEIVE_COMPLETE RXC - #define UART_DATA_REG UDR - #define UART_DOUBLE_SPEED U2X -#else - #error "no UART definition for MCU available" -#endif - - - -/* - * Macro to calculate UBBR from XTAL and baudrate - */ -#if defined(__AVR_ATmega32__) && UART_BAUDRATE_DOUBLE_SPEED - #define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu / 4 / baudRate - 1) / 2) -#elif defined(__AVR_ATmega32__) - #define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu / 8 / baudRate - 1) / 2) -#elif UART_BAUDRATE_DOUBLE_SPEED - #define UART_BAUD_SELECT(baudRate,xtalCpu) (((float)(xtalCpu))/(((float)(baudRate))*8.0)-1.0+0.5) -#else - #define UART_BAUD_SELECT(baudRate,xtalCpu) (((float)(xtalCpu))/(((float)(baudRate))*16.0)-1.0+0.5) -#endif - - -/* - * States used in the receive state machine - */ -#define ST_START 0 -#define ST_GET_SEQ_NUM 1 -#define ST_MSG_SIZE_1 2 -#define ST_MSG_SIZE_2 3 -#define ST_GET_TOKEN 4 -#define ST_GET_DATA 5 -#define ST_GET_CHECK 6 -#define ST_PROCESS 7 - -/* - * use 16bit address variable for ATmegas with <= 64K flash - */ -#if defined(RAMPZ) - typedef uint32_t address_t; -#else - typedef uint16_t address_t; -#endif - -/* - * function prototypes - */ -static void sendchar(char c); -static unsigned char recchar(void); - -/* - * since this bootloader is not linked against the avr-gcc crt1 functions, - * to reduce the code size, we need to provide our own initialization - */ -void __jumpMain (void) __attribute__ ((naked)) __attribute__ ((section (".init9"))); -#include - -//#define SPH_REG 0x3E -//#define SPL_REG 0x3D - -//***************************************************************************** -void __jumpMain(void) -{ -//* July 17, 2010 Added stack pointer initialzation -//* the first line did not do the job on the ATmega128 - - asm volatile ( ".set __stack, %0" :: "i" (RAMEND) ); - -//* set stack pointer to top of RAM - - asm volatile ( "ldi 16, %0" :: "i" (RAMEND >> 8) ); - asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_HI_ADDR) ); - - asm volatile ( "ldi 16, %0" :: "i" (RAMEND & 0x0ff) ); - asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_LO_ADDR) ); - - asm volatile ( "clr __zero_reg__" ); // GCC depends on register r1 set to 0 - asm volatile ( "out %0, __zero_reg__" :: "I" (_SFR_IO_ADDR(SREG)) ); // set SREG to 0 - asm volatile ( "jmp main"); // jump to main() -} - - -//***************************************************************************** -void delay_ms(unsigned int timedelay) -{ - unsigned int i; - for (i=0;i> 1) -//***************************************************************************** -static unsigned char recchar_timeout(void) -{ -uint32_t count = 0; - - while (!(UART_STATUS_REG & (1 << UART_RECEIVE_COMPLETE))) - { - // wait for data - count++; - if (count > MAX_TIME_COUNT) - { - unsigned int data; - #if (FLASHEND > 0x10000) - data = pgm_read_word_far(0); //* get the first word of the user program - #else - data = pgm_read_word_near(0); //* get the first word of the user program - #endif - if (data != 0xffff) //* make sure its valid before jumping to it. - { - asm volatile( - "clr r30 \n\t" - "clr r31 \n\t" - "ijmp \n\t" - ); - } - count = 0; - } - } - return UART_DATA_REG; -} - -//* for watch dog timer startup -void (*app_start)(void) = 0x0000; - - -//***************************************************************************** -int main(void) -{ - address_t address = 0; - address_t eraseAddress = 0; - unsigned char msgParseState; - unsigned int ii = 0; - unsigned char checksum = 0; - unsigned char seqNum = 0; - unsigned int msgLength = 0; - unsigned char msgBuffer[285]; - unsigned char c, *p; - unsigned char isLeave = 0; - - unsigned long boot_timeout; - unsigned long boot_timer; - unsigned int boot_state; -#ifdef ENABLE_MONITOR - unsigned int exPointCntr = 0; - unsigned int rcvdCharCntr = 0; -#endif - - //* some chips dont set the stack properly - asm volatile ( ".set __stack, %0" :: "i" (RAMEND) ); - asm volatile ( "ldi 16, %0" :: "i" (RAMEND >> 8) ); - asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_HI_ADDR) ); - asm volatile ( "ldi 16, %0" :: "i" (RAMEND & 0x0ff) ); - asm volatile ( "out %0,16" :: "i" (AVR_STACK_POINTER_LO_ADDR) ); - -#ifdef _FIX_ISSUE_181_ - //************************************************************************ - //* Dec 29, 2011 Issue #181, added watch dog timmer support - //* handle the watch dog timer - uint8_t mcuStatusReg; - mcuStatusReg = MCUSR; - - __asm__ __volatile__ ("cli"); - __asm__ __volatile__ ("wdr"); - MCUSR = 0; - WDTCSR |= _BV(WDCE) | _BV(WDE); - WDTCSR = 0; - __asm__ __volatile__ ("sei"); - // check if WDT generated the reset, if so, go straight to app - if (mcuStatusReg & _BV(WDRF)) - { - app_start(); - } - //************************************************************************ -#endif - - - boot_timer = 0; - boot_state = 0; - -#ifdef BLINK_LED_WHILE_WAITING -// boot_timeout = 90000; //* should be about 4 seconds -// boot_timeout = 170000; - boot_timeout = 20000; //* should be about 1 second -#else - boot_timeout = 3500000; // 7 seconds , approx 2us per step when optimize "s" -#endif - /* - * Branch to bootloader or application code ? - */ - -#ifndef REMOVE_BOOTLOADER_LED - /* PROG_PIN pulled low, indicate with LED that bootloader is active */ - PROGLED_DDR |= (1< boot_timeout) - { - boot_state = 1; // (after ++ -> boot_state=2 bootloader timeout, jump to main 0x00000 ) - } - #ifdef BLINK_LED_WHILE_WAITING - if ((boot_timer % _BLINK_LOOP_COUNT_) == 0) - { - //* toggle the LED - PROGLED_PORT ^= (1<> 16) & 0x000000FF; - } - else if ( signatureIndex == 1 ) - { - answerByte = (SIGNATURE_BYTES >> 8) & 0x000000FF; - } - else - { - answerByte = SIGNATURE_BYTES & 0x000000FF; - } - } - else if ( msgBuffer[4] & 0x50 ) - { - //* Issue 544: stk500v2 bootloader doesn't support reading fuses - //* I cant find the docs that say what these are supposed to be but this was figured out by trial and error - // answerByte = boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS); - // answerByte = boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); - // answerByte = boot_lock_fuse_bits_get(GET_EXTENDED_FUSE_BITS); - if (msgBuffer[4] == 0x50) - { - answerByte = boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS); - } - else if (msgBuffer[4] == 0x58) - { - answerByte = boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); - } - else - { - answerByte = 0; - } - } - else - { - answerByte = 0; // for all others command are not implemented, return dummy value for AVRDUDE happy - } - if ( !flag ) - { - msgLength = 7; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = 0; - msgBuffer[3] = msgBuffer[4]; - msgBuffer[4] = 0; - msgBuffer[5] = answerByte; - msgBuffer[6] = STATUS_CMD_OK; - } - } - break; - #endif - case CMD_SIGN_ON: - msgLength = 11; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = 8; - msgBuffer[3] = 'A'; - msgBuffer[4] = 'V'; - msgBuffer[5] = 'R'; - msgBuffer[6] = 'I'; - msgBuffer[7] = 'S'; - msgBuffer[8] = 'P'; - msgBuffer[9] = '_'; - msgBuffer[10] = '2'; - break; - - case CMD_GET_PARAMETER: - { - unsigned char value; - - switch(msgBuffer[1]) - { - case PARAM_BUILD_NUMBER_LOW: - value = CONFIG_PARAM_BUILD_NUMBER_LOW; - break; - case PARAM_BUILD_NUMBER_HIGH: - value = CONFIG_PARAM_BUILD_NUMBER_HIGH; - break; - case PARAM_HW_VER: - value = CONFIG_PARAM_HW_VER; - break; - case PARAM_SW_MAJOR: - value = CONFIG_PARAM_SW_MAJOR; - break; - case PARAM_SW_MINOR: - value = CONFIG_PARAM_SW_MINOR; - break; - default: - value = 0; - break; - } - msgLength = 3; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = value; - } - break; - - case CMD_LEAVE_PROGMODE_ISP: - isLeave = 1; - //* fall thru - - case CMD_SET_PARAMETER: - case CMD_ENTER_PROGMODE_ISP: - msgLength = 2; - msgBuffer[1] = STATUS_CMD_OK; - break; - - case CMD_READ_SIGNATURE_ISP: - { - unsigned char signatureIndex = msgBuffer[4]; - unsigned char signature; - - if ( signatureIndex == 0 ) - signature = (SIGNATURE_BYTES >>16) & 0x000000FF; - else if ( signatureIndex == 1 ) - signature = (SIGNATURE_BYTES >> 8) & 0x000000FF; - else - signature = SIGNATURE_BYTES & 0x000000FF; - - msgLength = 4; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = signature; - msgBuffer[3] = STATUS_CMD_OK; - } - break; - - case CMD_READ_LOCK_ISP: - msgLength = 4; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = boot_lock_fuse_bits_get( GET_LOCK_BITS ); - msgBuffer[3] = STATUS_CMD_OK; - break; - - case CMD_READ_FUSE_ISP: - { - unsigned char fuseBits; - - if ( msgBuffer[2] == 0x50 ) - { - if ( msgBuffer[3] == 0x08 ) - fuseBits = boot_lock_fuse_bits_get( GET_EXTENDED_FUSE_BITS ); - else - fuseBits = boot_lock_fuse_bits_get( GET_LOW_FUSE_BITS ); - } - else - { - fuseBits = boot_lock_fuse_bits_get( GET_HIGH_FUSE_BITS ); - } - msgLength = 4; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = fuseBits; - msgBuffer[3] = STATUS_CMD_OK; - } - break; - - #ifndef REMOVE_PROGRAM_LOCK_BIT_SUPPORT - case CMD_PROGRAM_LOCK_ISP: - { - unsigned char lockBits = msgBuffer[4]; - - lockBits = (~lockBits) & 0x3C; // mask BLBxx bits - boot_lock_bits_set(lockBits); // and program it - boot_spm_busy_wait(); - - msgLength = 3; - msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[2] = STATUS_CMD_OK; - } - break; - #endif - case CMD_CHIP_ERASE_ISP: - eraseAddress = 0; - msgLength = 2; - // msgBuffer[1] = STATUS_CMD_OK; - msgBuffer[1] = STATUS_CMD_FAILED; //* isue 543, return FAILED instead of OK - break; - - case CMD_LOAD_ADDRESS: - #if defined(RAMPZ) - address = ( ((address_t)(msgBuffer[1])<<24)|((address_t)(msgBuffer[2])<<16)|((address_t)(msgBuffer[3])<<8)|(msgBuffer[4]) )<<1; - #else - address = ( ((msgBuffer[3])<<8)|(msgBuffer[4]) )<<1; //convert word to byte address - #endif - msgLength = 2; - msgBuffer[1] = STATUS_CMD_OK; - break; - - case CMD_PROGRAM_FLASH_ISP: - case CMD_PROGRAM_EEPROM_ISP: - { - unsigned int size = ((msgBuffer[1])<<8) | msgBuffer[2]; - unsigned char *p = msgBuffer+10; - unsigned int data; - unsigned char highByte, lowByte; - address_t tempaddress = address; - - - if ( msgBuffer[0] == CMD_PROGRAM_FLASH_ISP ) - { - // erase only main section (bootloader protection) - if (eraseAddress < APP_END ) - { - boot_page_erase(eraseAddress); // Perform page erase - boot_spm_busy_wait(); // Wait until the memory is erased. - eraseAddress += SPM_PAGESIZE; // point to next page to be erase - } - - /* Write FLASH */ - do { - lowByte = *p++; - highByte = *p++; - - data = (highByte << 8) | lowByte; - boot_page_fill(address,data); - - address = address + 2; // Select next word in memory - size -= 2; // Reduce number of bytes to write by two - } while (size); // Loop until all bytes written - - boot_page_write(tempaddress); - boot_spm_busy_wait(); - boot_rww_enable(); // Re-enable the RWW section - } - else - { - //* issue 543, this should work, It has not been tested. - uint16_t ii = address >> 1; - /* write EEPROM */ - while (size) { - eeprom_write_byte((uint8_t*)ii, *p++); - address+=2; // Select next EEPROM byte - ii++; - size--; - } - } - msgLength = 2; - msgBuffer[1] = STATUS_CMD_OK; - } - break; - - case CMD_READ_FLASH_ISP: - case CMD_READ_EEPROM_ISP: - { - unsigned int size = ((msgBuffer[1])<<8) | msgBuffer[2]; - unsigned char *p = msgBuffer+1; - msgLength = size+3; - - *p++ = STATUS_CMD_OK; - if (msgBuffer[0] == CMD_READ_FLASH_ISP ) - { - unsigned int data; - - // Read FLASH - do { - //#if defined(RAMPZ) - #if (FLASHEND > 0x10000) - data = pgm_read_word_far(address); - #else - data = pgm_read_word_near(address); - #endif - *p++ = (unsigned char)data; //LSB - *p++ = (unsigned char)(data >> 8); //MSB - address += 2; // Select next word in memory - size -= 2; - }while (size); - } - else - { - /* Read EEPROM */ - do { - EEARL = address; // Setup EEPROM address - EEARH = ((address >> 8)); - address++; // Select next EEPROM byte - EECR |= (1<>8)&0xFF); - sendchar(c); - checksum ^= c; - - c = msgLength&0x00FF; - sendchar(c); - checksum ^= c; - - sendchar(TOKEN); - checksum ^= TOKEN; - - p = msgBuffer; - while ( msgLength ) - { - c = *p++; - sendchar(c); - checksum ^=c; - msgLength--; - } - sendchar(checksum); - seqNum++; - - #ifndef REMOVE_BOOTLOADER_LED - //* toggle the LED - PROGLED_PORT ^= (1< - - -base address = f000 -avrdude: Device signature = 0x1e9703 -avrdude: safemode: lfuse reads as FF -avrdude: safemode: hfuse reads as D8 -avrdude: safemode: efuse reads as F5 -avrdude> -*/ - -//************************************************************************ -#ifdef ENABLE_MONITOR -#include - -unsigned long gRamIndex; -unsigned long gFlashIndex; -unsigned long gEepromIndex; - - -#define true 1 -#define false 0 - -#include "avr_cpunames.h" - -#ifndef _AVR_CPU_NAME_ - #error cpu name not defined -#endif - -#ifdef _VECTORS_SIZE - #define kInterruptVectorCount (_VECTORS_SIZE / 4) -#else - #define kInterruptVectorCount 23 -#endif - - -void PrintDecInt(int theNumber, int digitCnt); - -#ifdef _AVR_CPU_NAME_ - const char gTextMsg_CPU_Name[] PROGMEM = _AVR_CPU_NAME_; -#else - const char gTextMsg_CPU_Name[] PROGMEM = "UNKNOWN"; -#endif - - const char gTextMsg_Explorer[] PROGMEM = "Arduino explorer stk500V2 by MLS"; - const char gTextMsg_Prompt[] PROGMEM = "Bootloader>"; - const char gTextMsg_HUH[] PROGMEM = "Huh?"; - const char gTextMsg_COMPILED_ON[] PROGMEM = "Compiled on = "; - const char gTextMsg_CPU_Type[] PROGMEM = "CPU Type = "; - const char gTextMsg_AVR_ARCH[] PROGMEM = "__AVR_ARCH__= "; - const char gTextMsg_AVR_LIBC[] PROGMEM = "AVR LibC Ver= "; - const char gTextMsg_GCC_VERSION[] PROGMEM = "GCC Version = "; - const char gTextMsg_CPU_SIGNATURE[] PROGMEM = "CPU ID = "; - const char gTextMsg_FUSE_BYTE_LOW[] PROGMEM = "Low fuse = "; - const char gTextMsg_FUSE_BYTE_HIGH[] PROGMEM = "High fuse = "; - const char gTextMsg_FUSE_BYTE_EXT[] PROGMEM = "Ext fuse = "; - const char gTextMsg_FUSE_BYTE_LOCK[] PROGMEM = "Lock fuse = "; - const char gTextMsg_GCC_DATE_STR[] PROGMEM = __DATE__; - const char gTextMsg_AVR_LIBC_VER_STR[] PROGMEM = __AVR_LIBC_VERSION_STRING__; - const char gTextMsg_GCC_VERSION_STR[] PROGMEM = __VERSION__; - const char gTextMsg_VECTOR_HEADER[] PROGMEM = "V# ADDR op code instruction addr Interrupt"; - const char gTextMsg_noVector[] PROGMEM = "no vector"; - const char gTextMsg_rjmp[] PROGMEM = "rjmp "; - const char gTextMsg_jmp[] PROGMEM = "jmp "; - const char gTextMsg_WHAT_PORT[] PROGMEM = "What port:"; - const char gTextMsg_PortNotSupported[] PROGMEM = "Port not supported"; - const char gTextMsg_MustBeLetter[] PROGMEM = "Must be a letter"; - const char gTextMsg_SPACE[] PROGMEM = " "; - const char gTextMsg_WriteToEEprom[] PROGMEM = "Writting EE"; - const char gTextMsg_ReadingEEprom[] PROGMEM = "Reading EE"; - const char gTextMsg_EEPROMerrorCnt[] PROGMEM = "EE err cnt="; - const char gTextMsg_PORT[] PROGMEM = "PORT"; - - -//************************************************************************ -//* Help messages - const char gTextMsg_HELP_MSG_0[] PROGMEM = "0=Zero addr"; - const char gTextMsg_HELP_MSG_QM[] PROGMEM = "?=CPU stats"; - const char gTextMsg_HELP_MSG_AT[] PROGMEM = "@=EEPROM test"; - const char gTextMsg_HELP_MSG_B[] PROGMEM = "B=Blink LED"; - const char gTextMsg_HELP_MSG_E[] PROGMEM = "E=Dump EEPROM"; - const char gTextMsg_HELP_MSG_F[] PROGMEM = "F=Dump FLASH"; - const char gTextMsg_HELP_MSG_H[] PROGMEM = "H=Help"; - const char gTextMsg_HELP_MSG_L[] PROGMEM = "L=List I/O Ports"; -// const char gTextMsg_HELP_MSG_Q[] PROGMEM = "Q=Quit & jump to user pgm"; - const char gTextMsg_HELP_MSG_Q[] PROGMEM = "Q=Quit"; - const char gTextMsg_HELP_MSG_R[] PROGMEM = "R=Dump RAM"; - const char gTextMsg_HELP_MSG_V[] PROGMEM = "V=show interrupt Vectors"; - const char gTextMsg_HELP_MSG_Y[] PROGMEM = "Y=Port blink"; - - const char gTextMsg_END[] PROGMEM = "*"; - - -//************************************************************************ -void PrintFromPROGMEM(const void *dataPtr, unsigned char offset) -{ -char theChar; - - dataPtr += offset; - - do { - #if (FLASHEND > 0x10000) - theChar = pgm_read_byte_far((uint16_t)dataPtr++); - #else - theChar = pgm_read_byte_near((uint16_t)dataPtr++); - #endif - if (theChar != 0) - { - sendchar(theChar); - } - } while (theChar != 0); -} - -//************************************************************************ -void PrintNewLine(void) -{ - sendchar(0x0d); - sendchar(0x0a); -} - - -//************************************************************************ -void PrintFromPROGMEMln(const void *dataPtr, unsigned char offset) -{ - PrintFromPROGMEM(dataPtr, offset); - - PrintNewLine(); -} - - -//************************************************************************ -void PrintString(char *textString) -{ -char theChar; -int ii; - - theChar = 1; - ii = 0; - while (theChar != 0) - { - theChar = textString[ii]; - if (theChar != 0) - { - sendchar(theChar); - } - ii++; - } -} - -//************************************************************************ -void PrintHexByte(unsigned char theByte) -{ -char theChar; - - theChar = 0x30 + ((theByte >> 4) & 0x0f); - if (theChar > 0x39) - { - theChar += 7; - } - sendchar(theChar ); - - theChar = 0x30 + (theByte & 0x0f); - if (theChar > 0x39) - { - theChar += 7; - } - sendchar(theChar ); -} - -//************************************************************************ -void PrintDecInt(int theNumber, int digitCnt) -{ -int theChar; -int myNumber; - - myNumber = theNumber; - - if ((myNumber > 100) || (digitCnt >= 3)) - { - theChar = 0x30 + myNumber / 100; - sendchar(theChar ); - } - - if ((myNumber > 10) || (digitCnt >= 2)) - { - theChar = 0x30 + ((myNumber % 100) / 10 ); - sendchar(theChar ); - } - theChar = 0x30 + (myNumber % 10); - sendchar(theChar ); -} - - - - -//************************************************************************ -static void PrintCPUstats(void) -{ -unsigned char fuseByte; - - PrintFromPROGMEMln(gTextMsg_Explorer, 0); - - PrintFromPROGMEM(gTextMsg_COMPILED_ON, 0); - PrintFromPROGMEMln(gTextMsg_GCC_DATE_STR, 0); - - PrintFromPROGMEM(gTextMsg_CPU_Type, 0); - PrintFromPROGMEMln(gTextMsg_CPU_Name, 0); - - PrintFromPROGMEM(gTextMsg_AVR_ARCH, 0); - PrintDecInt(__AVR_ARCH__, 1); - PrintNewLine(); - - PrintFromPROGMEM(gTextMsg_GCC_VERSION, 0); - PrintFromPROGMEMln(gTextMsg_GCC_VERSION_STR, 0); - - //* these can be found in avr/version.h - PrintFromPROGMEM(gTextMsg_AVR_LIBC, 0); - PrintFromPROGMEMln(gTextMsg_AVR_LIBC_VER_STR, 0); - -#if defined(SIGNATURE_0) - PrintFromPROGMEM(gTextMsg_CPU_SIGNATURE, 0); - //* these can be found in avr/iomxxx.h - PrintHexByte(SIGNATURE_0); - PrintHexByte(SIGNATURE_1); - PrintHexByte(SIGNATURE_2); - PrintNewLine(); -#endif - - -#if defined(GET_LOW_FUSE_BITS) - //* fuse settings - PrintFromPROGMEM(gTextMsg_FUSE_BYTE_LOW, 0); - fuseByte = boot_lock_fuse_bits_get(GET_LOW_FUSE_BITS); - PrintHexByte(fuseByte); - PrintNewLine(); - - PrintFromPROGMEM(gTextMsg_FUSE_BYTE_HIGH, 0); - fuseByte = boot_lock_fuse_bits_get(GET_HIGH_FUSE_BITS); - PrintHexByte(fuseByte); - PrintNewLine(); - - PrintFromPROGMEM(gTextMsg_FUSE_BYTE_EXT, 0); - fuseByte = boot_lock_fuse_bits_get(GET_EXTENDED_FUSE_BITS); - PrintHexByte(fuseByte); - PrintNewLine(); - - PrintFromPROGMEM(gTextMsg_FUSE_BYTE_LOCK, 0); - fuseByte = boot_lock_fuse_bits_get(GET_LOCK_BITS); - PrintHexByte(fuseByte); - PrintNewLine(); - -#endif - -} - - -//************************************************************************ -static void BlinkLED(void) -{ - PROGLED_DDR |= (1< 0) - { - if (myAddressPointer > 0x10000) - { - PrintHexByte((myAddressPointer >> 16) & 0x00ff); - } - PrintHexByte((myAddressPointer >> 8) & 0x00ff); - PrintHexByte(myAddressPointer & 0x00ff); - sendchar(0x20); - sendchar('-'); - sendchar(0x20); - - asciiDump[0] = 0; - for (ii=0; ii<16; ii++) - { - switch(dumpWhat) - { - case kDUMP_FLASH: - #if (FLASHEND > 0x10000) - theValue = pgm_read_byte_far(myAddressPointer); - #else - theValue = pgm_read_byte_near(myAddressPointer); - #endif - break; - - case kDUMP_EEPROM: - theValue = eeprom_read_byte((uint8_t *)(uint16_t)myAddressPointer); - break; - - case kDUMP_RAM: - theValue = ramPtr[myAddressPointer]; - break; - - } - PrintHexByte(theValue); - sendchar(0x20); - if ((theValue >= 0x20) && (theValue < 0x7f)) - { - asciiDump[ii % 16] = theValue; - } - else - { - asciiDump[ii % 16] = '.'; - } - - myAddressPointer++; - } - asciiDump[16] = 0; - PrintString(asciiDump); - PrintNewLine(); - - numRows--; - } -} - - - -//************************************************************************ -//* returns amount of extended memory -static void EEPROMtest(void) -{ -int ii; -char theChar; -char theEEPROMchar; -int errorCount; - - PrintFromPROGMEMln(gTextMsg_WriteToEEprom, 0); - PrintNewLine(); - ii = 0; -#if (FLASHEND > 0x10000) - while (((theChar = pgm_read_byte_far(((uint16_t)gTextMsg_Explorer) + ii)) != '*') && (ii < 512)) -#else - while (((theChar = pgm_read_byte_near(((uint16_t)gTextMsg_Explorer) + ii)) != '*') && (ii < 512)) -#endif - { - eeprom_write_byte((uint8_t *)ii, theChar); - if (theChar == 0) - { - PrintFromPROGMEM(gTextMsg_SPACE, 0); - } - else - { - sendchar(theChar); - } - ii++; - } - - //* no go back through and test - PrintNewLine(); - PrintNewLine(); - PrintFromPROGMEMln(gTextMsg_ReadingEEprom, 0); - PrintNewLine(); - errorCount = 0; - ii = 0; -#if (FLASHEND > 0x10000) - while (((theChar = pgm_read_byte_far((uint16_t)gTextMsg_Explorer + ii)) != '*') && (ii < 512)) -#else - while (((theChar = pgm_read_byte_near((uint16_t)gTextMsg_Explorer + ii)) != '*') && (ii < 512)) -#endif - { - theEEPROMchar = eeprom_read_byte((uint8_t *)ii); - if (theEEPROMchar == 0) - { - PrintFromPROGMEM(gTextMsg_SPACE, 0); - } - else - { - sendchar(theEEPROMchar); - } - if (theEEPROMchar != theChar) - { - errorCount++; - } - ii++; - } - PrintNewLine(); - PrintNewLine(); - PrintFromPROGMEM(gTextMsg_EEPROMerrorCnt, 0); - PrintDecInt(errorCount, 1); - PrintNewLine(); - PrintNewLine(); - - gEepromIndex = 0; //* set index back to zero for next eeprom dump - -} - - - -#if (FLASHEND > 0x08000) -//* this includes the interrupt names for the monitor portion. There is no longer enough -//* memory to include this -// #include "avrinterruptnames.h" -// #ifndef _INTERRUPT_NAMES_DEFINED_ -// #warning Interrupt vectors not defined -// #endif -#endif - -//************************************************************************ -static void VectorDisplay(void) -{ -unsigned long byte1; -unsigned long byte2; -unsigned long byte3; -unsigned long byte4; -unsigned long word1; -unsigned long word2; -int vectorIndex; -unsigned long myMemoryPtr; -unsigned long wordMemoryAddress; -unsigned long realitiveAddr; -unsigned long myFullAddress; -unsigned long absoluteAddr; -#if defined(_INTERRUPT_NAMES_DEFINED_) - long stringPointer; -#endif - - myMemoryPtr = 0; - vectorIndex = 0; - PrintFromPROGMEMln(gTextMsg_CPU_Name, 0); - PrintFromPROGMEMln(gTextMsg_VECTOR_HEADER, 0); - // V# ADDR op code - // 1 - 0000 = C3 BB 00 00 rjmp 03BB >000776 RESET - while (vectorIndex < kInterruptVectorCount) - { - wordMemoryAddress = myMemoryPtr / 2; - // 01 - 0000 = 12 34 - PrintDecInt(vectorIndex + 1, 2); - sendchar(0x20); - sendchar('-'); - sendchar(0x20); - PrintHexByte((wordMemoryAddress >> 8) & 0x00ff); - PrintHexByte((wordMemoryAddress) & 0x00ff); - sendchar(0x20); - sendchar('='); - sendchar(0x20); - - - //* the AVR is LITTLE ENDIAN, swap the byte order - #if (FLASHEND > 0x10000) - byte1 = pgm_read_byte_far(myMemoryPtr++); - byte2 = pgm_read_byte_far(myMemoryPtr++); - byte3 = pgm_read_byte_far(myMemoryPtr++); - byte4 = pgm_read_byte_far(myMemoryPtr++); - #else - byte1 = pgm_read_byte_near(myMemoryPtr++); - byte2 = pgm_read_byte_near(myMemoryPtr++); - byte3 = pgm_read_byte_near(myMemoryPtr++); - byte4 = pgm_read_byte_near(myMemoryPtr++); - #endif - word1 = (byte2 << 8) + byte1; - word2 = (byte4 << 8) + byte3; - - - PrintHexByte(byte2); - sendchar(0x20); - PrintHexByte(byte1); - sendchar(0x20); - PrintHexByte(byte4); - sendchar(0x20); - PrintHexByte(byte3); - sendchar(0x20); - - if (word1 == 0xffff) - { - PrintFromPROGMEM(gTextMsg_noVector, 0); - } - else if ((word1 & 0xc000) == 0xc000) - { - //* rjmp instruction - realitiveAddr = word1 & 0x3FFF; - absoluteAddr = wordMemoryAddress + realitiveAddr; //* add the offset to the current address - absoluteAddr = absoluteAddr << 1; //* multiply by 2 for byte address - - PrintFromPROGMEM(gTextMsg_rjmp, 0); - PrintHexByte((realitiveAddr >> 8) & 0x00ff); - PrintHexByte((realitiveAddr) & 0x00ff); - sendchar(0x20); - sendchar('>'); - PrintHexByte((absoluteAddr >> 16) & 0x00ff); - PrintHexByte((absoluteAddr >> 8) & 0x00ff); - PrintHexByte((absoluteAddr) & 0x00ff); - - } - else if ((word1 & 0xfE0E) == 0x940c) - { - //* jmp instruction, this is REALLY complicated, refer to the instruction manual (JMP) - myFullAddress = ((byte1 & 0x01) << 16) + - ((byte1 & 0xf0) << 17) + - ((byte2 & 0x01) << 21) + - word2; - - absoluteAddr = myFullAddress << 1; - - PrintFromPROGMEM(gTextMsg_jmp, 0); - PrintHexByte((myFullAddress >> 16) & 0x00ff); - PrintHexByte((myFullAddress >> 8) & 0x00ff); - PrintHexByte((myFullAddress) & 0x00ff); - sendchar(0x20); - sendchar('>'); - PrintHexByte((absoluteAddr >> 16) & 0x00ff); - PrintHexByte((absoluteAddr >> 8) & 0x00ff); - PrintHexByte((absoluteAddr) & 0x00ff); - } - - #if defined(_INTERRUPT_NAMES_DEFINED_) - sendchar(0x20); - #if (FLASHEND > 0x10000) - stringPointer = pgm_read_word_far(&(gInterruptNameTable[vectorIndex])); - #else - stringPointer = pgm_read_word_near(&(gInterruptNameTable[vectorIndex])); - #endif - PrintFromPROGMEM((char *)stringPointer, 0); - #endif - PrintNewLine(); - - vectorIndex++; - } -} - -//************************************************************************ -static void PrintAvailablePort(char thePortLetter) -{ - PrintFromPROGMEM(gTextMsg_PORT, 0); - sendchar(thePortLetter); - PrintNewLine(); -} - -//************************************************************************ -static void ListAvailablePorts(void) -{ - -#ifdef DDRA - PrintAvailablePort('A'); -#endif - -#ifdef DDRB - PrintAvailablePort('B'); -#endif - -#ifdef DDRC - PrintAvailablePort('C'); -#endif - -#ifdef DDRD - PrintAvailablePort('D'); -#endif - -#ifdef DDRE - PrintAvailablePort('E'); -#endif - -#ifdef DDRF - PrintAvailablePort('F'); -#endif - -#ifdef DDRG - PrintAvailablePort('G'); -#endif - -#ifdef DDRH - PrintAvailablePort('H'); -#endif - -#ifdef DDRI - PrintAvailablePort('I'); -#endif - -#ifdef DDRJ - PrintAvailablePort('J'); -#endif - -#ifdef DDRK - PrintAvailablePort('K'); -#endif - -#ifdef DDRL - PrintAvailablePort('L'); -#endif - -} - -//************************************************************************ -static void AVR_PortOutput(void) -{ -char portLetter; -char getCharFlag; - - PrintFromPROGMEM(gTextMsg_WHAT_PORT, 0); - - portLetter = recchar(); - portLetter = portLetter & 0x5f; - sendchar(portLetter); - PrintNewLine(); - - if ((portLetter >= 'A') && (portLetter <= 'Z')) - { - getCharFlag = true; - switch(portLetter) - { - #ifdef DDRA - case 'A': - DDRA = 0xff; - while (!Serial_Available()) - { - PORTA ^= 0xff; - delay_ms(200); - } - PORTA = 0; - break; - #endif - - #ifdef DDRB - case 'B': - DDRB = 0xff; - while (!Serial_Available()) - { - PORTB ^= 0xff; - delay_ms(200); - } - PORTB = 0; - break; - #endif - - #ifdef DDRC - case 'C': - DDRC = 0xff; - while (!Serial_Available()) - { - PORTC ^= 0xff; - delay_ms(200); - } - PORTC = 0; - break; - #endif - - #ifdef DDRD - case 'D': - DDRD = 0xff; - while (!Serial_Available()) - { - PORTD ^= 0xff; - delay_ms(200); - } - PORTD = 0; - break; - #endif - - #ifdef DDRE - case 'E': - DDRE = 0xff; - while (!Serial_Available()) - { - PORTE ^= 0xff; - delay_ms(200); - } - PORTE = 0; - break; - #endif - - #ifdef DDRF - case 'F': - DDRF = 0xff; - while (!Serial_Available()) - { - PORTF ^= 0xff; - delay_ms(200); - } - PORTF = 0; - break; - #endif - - #ifdef DDRG - case 'G': - DDRG = 0xff; - while (!Serial_Available()) - { - PORTG ^= 0xff; - delay_ms(200); - } - PORTG = 0; - break; - #endif - - #ifdef DDRH - case 'H': - DDRH = 0xff; - while (!Serial_Available()) - { - PORTH ^= 0xff; - delay_ms(200); - } - PORTH = 0; - break; - #endif - - #ifdef DDRI - case 'I': - DDRI = 0xff; - while (!Serial_Available()) - { - PORTI ^= 0xff; - delay_ms(200); - } - PORTI = 0; - break; - #endif - - #ifdef DDRJ - case 'J': - DDRJ = 0xff; - while (!Serial_Available()) - { - PORTJ ^= 0xff; - delay_ms(200); - } - PORTJ = 0; - break; - #endif - - #ifdef DDRK - case 'K': - DDRK = 0xff; - while (!Serial_Available()) - { - PORTK ^= 0xff; - delay_ms(200); - } - PORTK = 0; - break; - #endif - - #ifdef DDRL - case 'L': - DDRL = 0xff; - while (!Serial_Available()) - { - PORTL ^= 0xff; - delay_ms(200); - } - PORTL = 0; - break; - #endif - - default: - PrintFromPROGMEMln(gTextMsg_PortNotSupported, 0); - getCharFlag = false; - break; - } - if (getCharFlag) - { - recchar(); - } - } - else - { - PrintFromPROGMEMln(gTextMsg_MustBeLetter, 0); - } -} - - -//******************************************************************* -static void PrintHelp(void) -{ - PrintFromPROGMEMln(gTextMsg_HELP_MSG_0, 0); - PrintFromPROGMEMln(gTextMsg_HELP_MSG_QM, 0); - PrintFromPROGMEMln(gTextMsg_HELP_MSG_AT, 0); - PrintFromPROGMEMln(gTextMsg_HELP_MSG_B, 0); - PrintFromPROGMEMln(gTextMsg_HELP_MSG_E, 0); - PrintFromPROGMEMln(gTextMsg_HELP_MSG_F, 0); - PrintFromPROGMEMln(gTextMsg_HELP_MSG_H, 0); - - PrintFromPROGMEMln(gTextMsg_HELP_MSG_L, 0); - PrintFromPROGMEMln(gTextMsg_HELP_MSG_Q, 0); - PrintFromPROGMEMln(gTextMsg_HELP_MSG_R, 0); - PrintFromPROGMEMln(gTextMsg_HELP_MSG_V, 0); - PrintFromPROGMEMln(gTextMsg_HELP_MSG_Y, 0); -} - -//************************************************************************ -static void RunMonitor(void) -{ -char keepGoing; -unsigned char theChar; -int ii, jj; - - for (ii=0; ii<5; ii++) - { - for (jj=0; jj<25; jj++) - { - sendchar('!'); - } - PrintNewLine(); - } - - gRamIndex = 0; - gFlashIndex = 0; - gEepromIndex = 0; - - PrintFromPROGMEMln(gTextMsg_Explorer, 0); - - keepGoing = 1; - while (keepGoing) - { - PrintFromPROGMEM(gTextMsg_Prompt, 0); - theChar = recchar(); - if (theChar >= 0x60) - { - theChar = theChar & 0x5F; - } - - if (theChar >= 0x20) - { - sendchar(theChar); - sendchar(0x20); - } - - switch(theChar) - { - case '0': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_0, 2); - gFlashIndex = 0; - gRamIndex = 0; - gEepromIndex = 0; - break; - - case '?': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_QM, 2); - PrintCPUstats(); - break; - - case '@': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_AT, 2); - EEPROMtest(); - break; - - case 'B': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_B, 2); - BlinkLED(); - break; - - case 'E': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_E, 2); - DumpHex(kDUMP_EEPROM, gEepromIndex, 16); - gEepromIndex += 256; - if (gEepromIndex > E2END) - { - gEepromIndex = 0; - } - break; - - case 'F': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_F, 2); - DumpHex(kDUMP_FLASH, gFlashIndex, 16); - gFlashIndex += 256; - break; - - case 'H': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_H, 2); - PrintHelp(); - break; - - case 'L': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_L, 2); - ListAvailablePorts(); - break; - - case 'Q': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_Q, 2); - keepGoing = false; - break; - - case 'R': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_R, 2); - DumpHex(kDUMP_RAM, gRamIndex, 16); - gRamIndex += 256; - break; - - case 'V': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_V, 2); - VectorDisplay(); - break; - - case 'Y': - PrintFromPROGMEMln(gTextMsg_HELP_MSG_Y, 2); - AVR_PortOutput(); - break; - - default: - PrintFromPROGMEMln(gTextMsg_HUH, 0); - break; - } - } -} - -#endif - diff --git a/bootloaders/stk500v2/stk500boot.ppg b/bootloaders/stk500v2/stk500boot.ppg deleted file mode 100644 index a8929d7..0000000 --- a/bootloaders/stk500v2/stk500boot.ppg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/bootloaders/stk500v2/stk500boot_v2_mega2560.hex b/bootloaders/stk500v2/stk500boot_v2_mega2560.hex deleted file mode 100644 index 68d2e18..0000000 --- a/bootloaders/stk500v2/stk500boot_v2_mega2560.hex +++ /dev/null @@ -1,469 +0,0 @@ -:020000023000CC -:10E000000D9489F10D94B2F10D94B2F10D94B2F129 -:10E010000D94B2F10D94B2F10D94B2F10D94B2F1F0 -:10E020000D94B2F10D94B2F10D94B2F10D94B2F1E0 -:10E030000D94B2F10D94B2F10D94B2F10D94B2F1D0 -:10E040000D94B2F10D94B2F10D94B2F10D94B2F1C0 -:10E050000D94B2F10D94B2F10D94B2F10D94B2F1B0 -:10E060000D94B2F10D94B2F10D94B2F10D94B2F1A0 -:10E070000D94B2F10D94B2F10D94B2F10D94B2F190 -:10E080000D94B2F10D94B2F10D94B2F10D94B2F180 -:10E090000D94B2F10D94B2F10D94B2F10D94B2F170 -:10E0A0000D94B2F10D94B2F10D94B2F10D94B2F160 -:10E0B0000D94B2F10D94B2F10D94B2F10D94B2F150 -:10E0C0000D94B2F10D94B2F10D94B2F10D94B2F140 -:10E0D0000D94B2F10D94B2F10D94B2F10D94B2F130 -:10E0E0000D94B2F141546D656761323536300041AF -:10E0F000726475696E6F206578706C6F72657220DE -:10E1000073746B3530305632206279204D4C530099 -:10E11000426F6F746C6F616465723E004875683F52 -:10E1200000436F6D70696C6564206F6E203D200048 -:10E130004350552054797065202020203D20005FF9 -:10E140005F4156525F415243485F5F3D2000415658 -:10E1500052204C696243205665723D20004743437C -:10E160002056657273696F6E203D20004350552024 -:10E1700049442020202020203D20004C6F7720663D -:10E18000757365202020203D20004869676820665F -:10E190007573652020203D200045787420667573D6 -:10E1A00065202020203D20004C6F636B2066757336 -:10E1B000652020203D20004D617220203720323024 -:10E1C000313300312E362E3800342E332E350056A2 -:10E1D00023202020414444522020206F7020636F70 -:10E1E00064652020202020696E73747275637469E1 -:10E1F0006F6E2061646472202020496E74657272B3 -:10E20000757074006E6F20766563746F7200726A49 -:10E210006D702020006A6D70200057686174207056 -:10E220006F72743A00506F7274206E6F7420737541 -:10E2300070706F72746564004D7573742062652030 -:10E2400061206C6574746572002000577269747483 -:10E25000696E672045450052656164696E672045B7 -:10E26000450045452065727220636E743D00504F35 -:10E27000525400303D5A65726F2061646472003FF1 -:10E280003D43505520737461747300403D454550C3 -:10E29000524F4D207465737400423D426C696E6B41 -:10E2A000204C454400453D44756D70204545505215 -:10E2B0004F4D00463D44756D7020464C415348001B -:10E2C000483D48656C70004C3D4C69737420492F83 -:10E2D0004F20506F72747300513D51756974005234 -:10E2E0003D44756D702052414D00563D73686F7707 -:10E2F00020696E7465727275707420566563746FF0 -:10E30000727300593D506F727420626C696E6B00BD -:10E310002A0011241FBECFEFD1E2DEBFCDBF01E046 -:10E320000CBF12E0A0E0B2E0EEE1FDEF03E00BBFB6 -:10E3300002C007900D92A030B107D9F712E0A0E01B -:10E34000B2E001C01D92AE30B107E1F70F9460F367 -:10E350000D948DFE01E20EBF0FEF0DBF11241FBE05 -:10E360000D9460F30D9400F020E030E040ED57E0B4 -:10E3700005C0FA013197F1F72F5F3F4F2817390792 -:10E38000C0F308959C01260F311DC901A0E0B0E043 -:10E390002F5F3F4FABBFFC018791882361F08093D3 -:10E3A000C6008091C00086FFFCCF8091C0008064D1 -:10E3B0008093C000EACF08958DE08093C6008091DD -:10E3C000C00086FFFCCF8091C00080648093C000B5 -:10E3D0008AE08093C6008091C00086FFFCCF8091C8 -:10E3E000C00080648093C00008950F94C2F10F9420 -:10E3F000DCF10895FC019081992359F09093C600B7 -:10E400008091C00086FFFCCF8091C0008064809323 -:10E41000C0003196992379F70895282F982F929567 -:10E420009F70892F805D8A3308F0895F8093C600D2 -:10E430008091C00086FFFCCF8091C00080648093F3 -:10E44000C000822F8F70982F905D9A3308F0995FEB -:10E450009093C6008091C00086FFFCCF8091C000E1 -:10E4600080648093C00008959C01FB01853691056E -:10E470001CF46330710594F0C90164E670E00F94F8 -:10E480002EFE605D7F4F6093C6008091C00086FFC6 -:10E49000FCCF8091C00080648093C0002B30310598 -:10E4A00014F43297B4F0C90164E670E00F942EFEC4 -:10E4B0006AE070E00F942EFE605D7F4F6093C600AF -:10E4C0008091C00086FFFCCF8091C0008064809363 -:10E4D000C000C9016AE070E00F942EFEC0968093E0 -:10E4E000C6008091C00086FFFCCF8091C000806490 -:10E4F0008093C00008951F93182F8EE692EE60E07F -:10E500000F94C2F11093C6008091C00086FFFCCF2B -:10E510008091C00080648093C0000F94DCF11F9153 -:10E5200008952F923F924F925F926F927F928F92B7 -:10E530009F92AF92BF92CF92DF92EF92FF920F9392 -:10E540001F93DF93CF93CDB7DEB762970FB6F894E2 -:10E55000DEBF0FBECDBF382E622ECA01DB015C01CB -:10E560006D01772420E2222E2E010894411C511CBB -:10E570008BC081E0A81680E0B80681E0C80680E084 -:10E58000D80628F0C601AA27BB270F940DF2BB2797 -:10E59000AD2D9C2D8B2D0F940DF28A2D0F940DF225 -:10E5A0002092C6008091C00086FFFCCF8091C00001 -:10E5B00080648093C0009DE29093C6008091C0006B -:10E5C00086FFFCCF8091C00080648093C0002092C1 -:10E5D000C6008091C00086FFFCCF8091C00080649F -:10E5E0008093C00019828601750188249924A1E0D6 -:10E5F0003A1651F03A1620F0B2E03B1661F409C029 -:10E600000BBFF701779007C0C7010F9477FE782EF4 -:10E6100002C0F7017080872D0F940DF22092C60082 -:10E620008091C00086FFFCCF8091C0008064809301 -:10E63000C000872D8052F401EF70F0708F3520F408 -:10E64000E40DF51D708204C0E40DF51D8EE280839B -:10E650000894E11CF11C011D111D0894811C911CE2 -:10E6600090E18916910409F0C2CF80E190E0A0E02A -:10E67000B0E0A80EB91ECA1EDB1E198AC2010F9493 -:10E68000FAF10F94DCF16A94662009F072CF629679 -:10E690000FB6F894DEBF0FBECDBFCF91DF911F91B3 -:10E6A0000F91FF90EF90DF90CF90BF90AF909F9031 -:10E6B0008F907F906F905F904F903F902F90089534 -:10E6C0002F923F924F925F926F927F928F929F9282 -:10E6D000AF92BF92CF92DF92EF92FF920F931F9370 -:10E6E000DF93CF93CDB7DEB7CD53D1400FB6F894BB -:10E6F000DEBF0FBECDBF01E20EBF0FEF0DBF94B75F -:10E70000F894A89514BE80916000886180936000A1 -:10E7100010926000789493FF05C0E0910002F091A0 -:10E7200001021995279A2F9A8091C00082608093E8 -:10E73000C00080E18093C40088E18093C1000000A4 -:10E74000EE24FF24870144E0A42EB12CCC24DD2448 -:10E7500024C0C5010197F1F70894E11CF11C011DCB -:10E76000111D21E2E2162EE4F20620E0020720E06D -:10E77000120718F031E0C32ED12CC801B70127ECE5 -:10E780003BE140E050E00F9441FE611571058105C9 -:10E79000910519F485B1805885B98091C00087FD35 -:10E7A00003C0C114D104A9F2A6014F5F5F4FC25E3E -:10E7B000DE4F59834883CE51D140C25EDE4F8881FF -:10E7C0009981CE51D140019711F00D9410FEC05D9A -:10E7D000DE4F19821882C053D14060E0C15DDE4F28 -:10E7E0001882CF52D14088249924C35DDE4F19820C -:10E7F0001882CD52D140C05EDE4F188219821A8233 -:10E800001B82C052D140CE5CDE4F188219821A8220 -:10E810001B82C253D140EE24FF2487010BBFF701B6 -:10E8200007911691C45CDE4F19830883CC53D14005 -:10E830000D940BFEC25EDE4F28813981CE51D1404E -:10E840002130310509F52091C600C25EDE4F1982E4 -:10E850001882CE51D14022C02F5F3F4F4F4F5F4FA4 -:10E86000213082E138078AE7480780E0580780F0C6 -:10E87000C45CDE4FE881F981CC53D140EF5FFF4F9C -:10E8800019F0EE27FF27099420E030E040E050E047 -:10E890008091C00087FFE0CF2091C600C35DDE4FAE -:10E8A00048815981CD52D1404F5F5F4FC35DDE4FEC -:10E8B00059834883CD52D140213209F063C64A3092 -:10E8C000510508F05FC60894811C911C53E0851621 -:10E8D000910409F059C600E010E018C081E280936D -:10E8E000C6008091C00086FFFCCF8091C00080648C -:10E8F0008093C0002F5F3F4F2931310579F70F9486 -:10E90000DCF10F5F1F4F0530110519F020E030E0FA -:10E91000E5CF10920A0210920B0210920C02109294 -:10E920000D02109206021092070210920802109235 -:10E930000902109202021092030210920402109235 -:10E9400005028FEE90EE60E00F94F5F180E191EE1C -:10E9500060E00F94C2F18091C00087FFFCCF9091DE -:10E96000C600903608F09F759032B8F09093C600BC -:10E970008091C00086FFFCCF8091C00080648093AE -:10E98000C000A0E2A093C6008091C00086FFFCCF2B -:10E990008091C00080648093C000983409F4D7C18E -:10E9A0009934B8F4923409F459C1933458F490333B -:10E9B00019F1903308F4E3C59F33A1F1903409F0C5 -:10E9C000DEC5BDC0953409F470C1963409F0D7C5D1 -:10E9D00098C1923509F42BC2933538F49C3409F46C -:10E9E000F5C1913509F0CBC518C2963509F445C279 -:10E9F000993509F0C4C567C483E792EE62E00F94CD -:10EA0000F5F110920602109207021092080210927D -:10EA1000090210920A0210920B0210920C0210923C -:10EA20000D0213C18FE792EE62E00F94F5F18FEEC5 -:10EA300090EE60E00F94F5F181E291EE60E00F94CA -:10EA4000C2F187EB91EE60E00F94F5F180E391EE77 -:10EA500060E00F94C2F184EE90EE60E00F94F5F167 -:10EA60008FE391EE60E00F94C2F186E090E061E008 -:10EA700070E00F9434F20F94DCF18DE591EE60E0DC -:10EA80000F94C2F189EC91EE60E00F94F5F18EE401 -:10EA900091EE60E00F94C2F183EC91EE60E00F9490 -:10EAA000F5F18CE691EE60E00F94C2F18EE10F94E7 -:10EAB0000DF288E90F940DF281E00F940DF20F949E -:10EAC000DCF18BE791EE60E00F94C2F119E0E0E039 -:10EAD000F0E010935700E4918E2F0F940DF20F94F5 -:10EAE000DCF18AE891EE60E00F94C2F1E3E0F0E03F -:10EAF00010935700E4918E2F0F940DF20F94DCF1D8 -:10EB000089E991EE60E00F94C2F1E2E0F0E0109349 -:10EB10005700E4918E2F0F940DF20F94DCF188EAE8 -:10EB200091EE60E00F94C2F1E1E0F0E01093570045 -:10EB30001491812F0F940DF20F94DCF107CF8BE825 -:10EB400092EE62E00F94F5F18BE492EE60E00F94A8 -:10EB5000F5F10F94DCF100E010E019C0C8016F2D51 -:10EB60000F947FFEFF2031F489E492EE60E00F9471 -:10EB7000C2F10BC0F092C6008091C00086FFFCCFAE -:10EB80008091C00080648093C0000F5F1F4FC80158 -:10EB900081519F41A0E0B0E0ABBFFC01F790BAE229 -:10EBA000FB1621F0E2E000301E07C1F60F94DCF105 -:10EBB0000F94DCF187E592EE60E00F94F5F10F948D -:10EBC000DCF1CC24DD2400E010E01EC0C8010F946D -:10EBD00077FEF82E882331F489E492EE60E00F94FA -:10EBE000C2F10BC08093C6008091C00086FFFCCFAD -:10EBF0008091C00080648093C000FE1419F00894D6 -:10EC0000C11CD11C0F5F1F4FC80181519F41A0E063 -:10EC1000B0E0ABBFFC01E790FAE2EF1621F022E092 -:10EC20000030120799F60F94DCF10F94DCF182E6C4 -:10EC300092EE60E00F94C2F1C60161E070E00F94C3 -:10EC400034F20F94DCF10F94DCF110920202109276 -:10EC50000302109204021092050278CE89E992EE26 -:10EC600062E00F94F5F1279A2F9A16C02F9880E052 -:10EC700090E0E0EDF7E03197F1F7019684369105E9 -:10EC8000C1F72F9A80E090E0E0EDF7E03197F1F7DF -:10EC9000019684369105C1F78091C00087FFE6CFC9 -:10ECA0008091C00087FFFCCF64C485EA92EE62E0E9 -:10ECB0000F94F5F140910202509103026091040219 -:10ECC0007091050281E020E10F9491F2809102029F -:10ECD00090910302A0910402B091050280509F4FD1 -:10ECE000AF4FBF4F8093020290930302A0930402A0 -:10ECF000B093050280509041A040B04008F426CE69 -:10ED0000A4CF83EB92EE62E00F94F5F140910602FE -:10ED100050910702609108027091090280E020E1A1 -:10ED20000F9491F28091060290910702A09108023F -:10ED3000B091090280509F4FAF4FBF4F80930602A2 -:10ED400090930702A0930802B0930902FFCD80ECD4 -:10ED500092EE62E00F94F5F183E792EE60E00F949B -:10ED6000F5F18FE792EE60E00F94F5F18BE892EE0B -:10ED700060E00F94F5F189E992EE60E00F94F5F10F -:10ED800085EA92EE60E00F94F5F183EB92EE60E09D -:10ED90000F94F5F180EC92EE60E00F94F5F187ECC2 -:10EDA00092EE60E00F94F5F188ED92EE60E00F9442 -:10EDB000F5F18FED92EE60E00F94F5F18AEE92EEB0 -:10EDC00060E00F94F5F183E093EEBDCD87EC92EE19 -:10EDD00062E00F94F5F181E40F947BF282E40F94EA -:10EDE0007BF283E40F947BF284E40F947BF285E45E -:10EDF0000F947BF286E40F947BF287E40F947BF20E -:10EE000088E40F947BF28AE40F947BF28BE40F94F6 -:10EE10007BF28CE40F947BF299CD88ED92EE62E068 -:10EE20000F94F5F1772473948824992409C48FED05 -:10EE300092EE62E00F94F5F140910A0250910B02BC -:10EE400060910C0270910D0282E020E10F9491F22A -:10EE500080910A0290910B02A0910C02B0910D02D8 -:10EE600080509F4FAF4FBF4F80930A0290930B0289 -:10EE7000A0930C02B0930D0269CD8AEE92EE62E08F -:10EE80000F94F5F184EE90EE60E00F94F5F18FECC5 -:10EE900091EE60E00F94F5F1662477244301CC5D98 -:10EEA000DE4F19821882C452D140D401C301B695F5 -:10EEB000A79597958795CA5DDE4F88839983AA8326 -:10EEC000BB83C652D140CC5DDE4FA881B981C4520C -:10EED000D1401196CC5DDE4FB983A883C452D14096 -:10EEE000CD0162E070E00F9434F2B0E2B093C6005E -:10EEF0008091C00086FFFCCF8091C0008064809329 -:10EF0000C000EDE2E093C6008091C00086FFFCCF18 -:10EF10008091C00080648093C000F0E2F093C6004E -:10EF20008091C00086FFFCCF8091C00080648093F8 -:10EF3000C000CA5DDE4FE880F9800A811B81C6529D -:10EF4000D140BB27A12F902F8F2D0F940DF2CA5DBA -:10EF5000DE4F8881C652D1400F940DF2B0E2FB2EF5 -:10EF6000F092C6008091C00086FFFCCF8091C00067 -:10EF700080648093C0000DE30093C6008091C000C0 -:10EF800086FFFCCF8091C00080648093C00010E2B7 -:10EF90001093C6008091C00086FFFCCF8091C00016 -:10EFA00080648093C0008BBEF3012791C65DDE4F65 -:10EFB0002883CA52D140A22EBB24CC24DD2408943D -:10EFC000611C711C811C911C8BBEF3018791282E42 -:10EFD0003324442455240894611C711C811C911C09 -:10EFE0008BBEF3013791C55DDE4F3883CB52D140E4 -:10EFF0000894611C711C811C911C8BBEF30147910C -:10F00000C45DDE4F4883CC52D140ADEFEA2EAFEF66 -:10F01000FA2EAFEF0A2FAFEF1A2F6E0C7F1C801E57 -:10F02000911E142D032DF22CEE24EA0CFB1C0C1D5A -:10F030001D1D0F940DF220E22093C6008091C000A8 -:10F0400086FFFCCF8091C00080648093C000C65DC5 -:10F05000DE4F8881CA52D1400F940DF230E23093D6 -:10F06000C6008091C00086FFFCCF8091C000806404 -:10F070008093C000C45DDE4F8881CC52D1400F9494 -:10F080000DF240E24093C6008091C00086FFFCCFA5 -:10F090008091C00080648093C000C55DDE4F888190 -:10F0A000CB52D1400F940DF250E25093C6008091A4 -:10F0B000C00086FFFCCF8091C00080648093C000B8 -:10F0C0008FEFE8168FEFF80680E0080780E018075A -:10F0D00031F484E092EE60E00F94C2F1DFC0D80119 -:10F0E000C7018070907CA070B0708050904CA040A0 -:10F0F000B040D1F52FEF3FE340E050E0E222F322B1 -:10F1000004231523CA5DDE4FA880B980CA80DB8046 -:10F11000C652D140AE0CBF1CC01ED11EAA0CBB1CD7 -:10F12000CC1CDD1C8EE092EE60E00F94C2F1BB2798 -:10F13000A12F902F8F2D0F940DF28E2D0F940DF285 -:10F1400030E23093C6008091C00086FFFCCF8091F2 -:10F15000C00080648093C0004EE34093C60080915D -:10F16000C00086FFFCCF87C08EE09EEFA0E0B0E03D -:10F17000E822F9220A231B239CE0E91694E9F90608 -:10F1800090E0090790E0190709F088C0C45DDE4FE0 -:10F19000A881CC52D140EA2EFF2400E010E0102FCD -:10F1A0000F2DFE2CEE24C55DDE4FB881CB52D14031 -:10F1B000EB0EF11C011D111DD601C501817090706F -:10F1C000A070B070DC0199278827E80EF91E0A1F8D -:10F1D0001B1F20EF30E040E050E0A222B322C42207 -:10F1E000D52241E1AA0CBB1CCC1CDD1C4A95D1F7F1 -:10F1F000EA0CFB1C0C1D1D1D81E090E0A0E0B0E0BE -:10F20000282239224A225B2235E1220C331C441C7D -:10F21000551C3A95D1F7E20CF31C041D151D57013E -:10F220006801AA0CBB1CCC1CDD1C85E192EE60E0E1 -:10F230000F94C2F1C801AA27BB270F940DF2BB2778 -:10F24000A12F902F8F2D0F940DF28E2D0F940DF274 -:10F2500090E29093C6008091C00086FFFCCF809121 -:10F26000C00080648093C000AEE3A093C60080918C -:10F27000C00086FFFCCF8091C00080648093C000F6 -:10F28000C601AA27BB270F940DF2BB27AD2D9C2DDD -:10F290008B2D0F940DF28A2D0F940DF20F94DCF14B -:10F2A000CC5DDE4FE881F981C452D140F99709F471 -:10F2B0004DCBF4E0EF2EF12C012D112D6E0C7F1CA7 -:10F2C000801E911EF2CD83E093EE62E00F94F5F183 -:10F2D0008AE192EE60E00F94C2F18091C00087FF56 -:10F2E000FCCF1091C6001F751093C6008091C0001E -:10F2F00086FFFCCF8091C00080648093C0000F9493 -:10F30000DCF1812F81548A3108F036C1163409F4BA -:10F3100095C0173490F4133409F44EC0143430F40B -:10F320001134F1F0123409F01DC130C0143409F465 -:10F3300059C0153409F016C16BC01A3409F4C4C0A1 -:10F340001B3438F4173409F48FC0183409F00AC19B -:10F35000A1C01B3409F4D2C01C3409F003C1E8C0B9 -:10F360008FEF81B90DC082B1809582B980E090E0C5 -:10F37000E0EDF7E03197F1F70196883C9105C1F790 -:10F380008091C00087FFEFCF12B8EFC08FEF84B934 -:10F390000DC085B1809585B980E090E0E0EDF7E0A3 -:10F3A0003197F1F70196883C9105C1F78091C00033 -:10F3B00087FFEFCF15B8D9C08FEF87B90DC088B1DF -:10F3C000809588B980E090E0E0EDF7E03197F1F7C3 -:10F3D0000196883C9105C1F78091C00087FFEFCF6F -:10F3E00018B8C3C08FEF8AB90DC08BB180958BB9A7 -:10F3F00080E090E0E0EDF7E03197F1F70196883C8E -:10F400009105C1F78091C00087FFEFCF1BB8ADC059 -:10F410008FEF8DB90DC08EB180958EB980E090E0F0 -:10F42000E0EDF7E03197F1F70196883C9105C1F7DF -:10F430008091C00087FFEFCF1EB897C08FEF80BBD1 -:10F440000DC081B3809581BB80E090E0E0EDF7E0F6 -:10F450003197F1F70196883C9105C1F78091C00082 -:10F4600087FFEFCF11BA81C08FEF83BB0DC084B38C -:10F47000809584BB80E090E0E0EDF7E03197F1F714 -:10F480000196883C9105C1F78091C00087FFEFCFBE -:10F4900014BA6BC08FEF809301010FC080910201FD -:10F4A00080958093020180E090E0E0EDF7E03197F5 -:10F4B000F1F70196883C9105C1F78091C00087FF64 -:10F4C000EDCF1092020151C08FEF809304010FC065 -:10F4D0008091050180958093050180E090E0E0ED4A -:10F4E000F7E03197F1F70196883C9105C1F78091DB -:10F4F000C00087FFEDCF1092050137C08FEF8093DA -:10F5000007010FC08091080180958093080180E079 -:10F5100090E0E0EDF7E03197F1F70196883C910536 -:10F52000C1F78091C00087FFEDCF109208011DC088 -:10F530008FEF80930A010FC080910B01809580931B -:10F540000B0180E090E0E0EDF7E03197F1F70196F4 -:10F55000883C9105C1F78091C00087FFEDCF1092E4 -:10F560000B0103C085E292EEEEC98091C00087FFD7 -:10F57000FCCF8091C600EAC988E392EEE4C98CE131 -:10F5800091EEE1C988249924933011F1943028F444 -:10F59000913089F09230B8F408C0953061F195301F -:10F5A000F0F0963009F048C043C02B3109F042C951 -:10F5B00091E06BE13FC96227C15DDE4F2883CF52E6 -:10F5C000D14092E037C9B22FA0E0622793E032C960 -:10F5D000822F90E0A82BB92B622794E02BC92E3004 -:10F5E00009F039C3622795E0C05DDE4F19821882A9 -:10F5F000C053D1401FC9E1E0F0E0EC0FFD1FC05D3A -:10F60000DE4F08811981C053D140E00FF11F2083E4 -:10F610000F5F1F4FC05DDE4F19830883C053D14079 -:10F6200062270A171B0709F005C9D80196E002C92D -:10F63000261709F010C303C0973009F0FBC87724E0 -:10F640009981933109F412C19431C8F4963009F4C8 -:10F65000D8C0973050F4923009F406C1933009F4C1 -:10F660006DC0913009F059C253C0913109F477C08F -:10F67000923108F0BBC0903109F04FC2F5C098310B -:10F6800009F487C0993150F4953109F4EFC09531F0 -:10F6900008F4C6C1963109F040C2C2C19A3109F4DA -:10F6A0006CC09A3108F491C09B3109F45BC09D3164 -:10F6B00009F033C29D81903359F48F81882311F46E -:10F6C0009EE11CC0813011F091E018C098E916C08D -:10F6D000892F807591F0903539F4E0E0F0E089E011 -:10F6E0008093570094910AC0983539F4E3E0F0E034 -:10F6F00089E080935700949101C090E01A821B82A8 -:10F700008D818C831D829E831F8227E030E009C299 -:10F710001A8288E08B8381E48C8386E58D8382E581 -:10F720008E8389E48F8383E5888780E589878FE5E9 -:10F730008A8782E38B872BE030E0F3C18A818139AD -:10F7400041F0823941F0803911F48FE005C080E04A -:10F7500003C082E001C08AE01A828B8344C0772410 -:10F76000739482C08D81882311F48EE12CC0813086 -:10F7700011F081E028C088E926C01A82E1E0F0E0BB -:10F7800089E08093570084918B831C8224E030E0D1 -:10F79000C8C18B81803589F48C81883039F4E2E0EE -:10F7A000F0E089E08093570084910DC0E0E0F0E044 -:10F7B00089E080935700849106C0E3E0F0E089E09F -:10F7C0008093570084911A82DFCF8D81836C99E0FA -:10F7D000E1E0F0E0082E90935700E89507B600FCB2 -:10F7E000FDCF1A821B8223E030E09BC180EC8A832C -:10F7F000CE5CDE4F188219821A821B82C253D1401E -:10F800008EC18A8190E0A0E0B0E0582F44273327D2 -:10F8100022278B8190E0A0E0B0E0DC0199278827C7 -:10F82000282B392B4A2B5B2B8D8190E0A0E0B0E098 -:10F83000282B392B4A2B5B2B8C8190E0A0E0B0E089 -:10F84000BA2FA92F982F8827282B392B4A2B5B2BCF -:10F85000220F331F441F551FC05EDE4F288339839C -:10F860004A835B83C052D1401A8259C13A81C95C34 -:10F87000DE4F3883C753D140CA5CDE4F1882C6536F -:10F88000D1408B81C82EDD24CA5CDE4F488159816E -:10F89000C653D140C42AD52A933109F082C0CE5C28 -:10F8A000DE4F88819981AA81BB81C253D1408050AB -:10F8B000904CA340B04030F583E0CE5CDE4FE88052 -:10F8C000F9800A811B81C253D140F70100935B008C -:10F8D00080935700E89507B600FCFDCFCE5CDE4F65 -:10F8E000088119812A813B81C253D14000501F4FAA -:10F8F0002F4F3F4FCE5CDE4F088319832A833B8313 -:10F90000C253D140C05EDE4F488159816A817B81FC -:10F91000C052D140DE011B9631E08C9111962C91A2 -:10F9200011971296C75CDE4F2883C953D140C85C3B -:10F93000DE4F1882C853D14090E0C85CDE4FE881AA -:10F94000F981C853D1408E2B9F2B0C01FA01609393 -:10F950005B0030935700E89511244E5F5F4F6F4F67 -:10F960007F4F0EEFE02E0FEFF02ECE0CDF1CC114F8 -:10F97000D10499F685E0C05EDE4F088119812A81A5 -:10F980003B81C052D140F80120935B008093570027 -:10F99000E89507B600FCFDCF81E180935700E8951C -:10F9A00035C0C05EDE4F88819981AA81BB81C0527B -:10F9B000D140B695A795979587957C018601ABE0D8 -:10F9C000AA2EB12CAC0EBD1E0BC0D5016D915D01F0 -:10F9D000C7010F947FFE0894E11CF11C01501040F8 -:10F9E0000115110591F7A60160E070E0440F551F65 -:10F9F000661F771FC05EDE4FE880F9800A811B8199 -:10FA0000C052D1404E0D5F1D601F711F1A82C05E33 -:10FA1000DE4F488359836A837B83C052D1407FC0C5 -:10FA2000FA80C55CDE4FF882CB53D140C65CDE4F16 -:10FA30001882CA53D1408B81C82EDD24C65CDE4FAC -:10FA400008811981CA53D140C02AD12A1A828981DA -:10FA5000BE016D5F7F4F843121F59601C05EDE4FA0 -:10FA6000E880F9800A811B81C052D1400BBFF701A9 -:10FA700087919691DB018C9311969C936E5F7F4FDB -:10FA8000D801C7010296A11DB11DC05EDE4F88835B -:10FA90009983AA83BB83C052D14022503040F1F6F3 -:10FAA00036C0C05EDE4F288139814A815B81C052F9 -:10FAB000D1400894C108D108760100E010E0089414 -:10FAC000C11CD11C0894E11CF11C011D111DE20E8A -:10FAD000F31E041F151F21BDBB27A52F942F832FB5 -:10FAE00082BD2F5F3F4F4F4F5F4FF89A80B5DB01CC -:10FAF0008D93BD012E153F054007510761F7C05E8C -:10FB0000DE4F288339834A835B83C052D1409601FC -:10FB10002D5F3F4FFB01108204C080EC8A8322E0FE -:10FB200030E08BE18093C6008091C00086FFFCCF5F -:10FB30008091C00080648093C000C15DDE4FF88179 -:10FB4000CF52D140F093C6008091C00086FFFCCF19 -:10FB50008091C00080648093C000432F3093C60022 -:10FB60008091C00086FFFCCF8091C00080648093AC -:10FB7000C000922F2093C6008091C00086FFFCCF6A -:10FB80008091C00080648093C0008EE08093C600A6 -:10FB90008091C00086FFFCCF8091C000806480937C -:10FBA000C00065E1C15DDE4FE880CF52D1406E25D7 -:10FBB00069276427FE01319610C090819093C6009A -:10FBC0008091C00086FFFCCF31968091C000806498 -:10FBD0008093C0006927215030402115310569F715 -:10FBE0006093C6008091C00086FFFCCF8091C0006A -:10FBF00080648093C00085B1805885B9772081F4F6 -:10FC0000C15DDE4F0881CF52D1400F5FC15DDE4F35 -:10FC10000883CF52D14090E0A0E0B0E00D941AF4F8 -:10FC200027982F9880E090E020ED37E0F901319798 -:10FC3000F1F7019684369105C9F700008091C00064 -:10FC40008D7F8093C00081E180935700E895EE2777 -:10FC5000FF270994FFCF90E00D941AF497FB092E2B -:10FC600007260AD077FD04D02ED006D000201AF443 -:10FC7000709561957F4F0895F6F7909581959F4F08 -:10FC80000895A1E21A2EAA1BBB1BFD010DC0AA1FDD -:10FC9000BB1FEE1FFF1FA217B307E407F50720F0F5 -:10FCA000A21BB30BE40BF50B661F771F881F991F70 -:10FCB0001A9469F760957095809590959B01AC01B9 -:10FCC000BD01CF010895AA1BBB1B51E107C0AA1FAC -:10FCD000BB1FA617B70710F0A61BB70B881F991FED -:10FCE0005A95A9F780959095BC01CD010895F99991 -:10FCF000FECF92BD81BDF89A992780B50895262F31 -:10FD0000F999FECF1FBA92BD81BD20BD0FB6F89400 -:0EFD1000FA9AF99A0FBE01960895F894FFCF63 -:040000033000E000E9 -:00000001FF diff --git a/variants/eightanaloginputs/pins_arduino.h b/variants/eightanaloginputs/pins_arduino.h deleted file mode 100644 index 4ccf8ba..0000000 --- a/variants/eightanaloginputs/pins_arduino.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - pins_arduino.h - Pin definition functions for Arduino - Part of Arduino - http://www.arduino.cc/ - - Copyright (c) 2007 David A. Mellis - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General - Public License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA -*/ - -#include "../standard/pins_arduino.h" -#undef NUM_ANALOG_INPUTS -#define NUM_ANALOG_INPUTS 8 diff --git a/variants/ethernet/pins_arduino.h b/variants/ethernet/pins_arduino.h deleted file mode 100644 index 77fcc40..0000000 --- a/variants/ethernet/pins_arduino.h +++ /dev/null @@ -1,254 +0,0 @@ -/* - pins_arduino.h - Pin definition functions for Arduino - Part of Arduino - http://www.arduino.cc/ - - Copyright (c) 2007 David A. Mellis - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General - Public License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA -*/ - -#ifndef Pins_Arduino_h -#define Pins_Arduino_h - -#include - -#define NUM_DIGITAL_PINS 20 -#define NUM_ANALOG_INPUTS 6 -#define analogInputToDigitalPin(p) ((p < 6) ? (p) + 14 : -1) - -#if defined(__AVR_ATmega8__) -#define digitalPinHasPWM(p) ((p) == 9 || (p) == 10 || (p) == 11) -#else -#define digitalPinHasPWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 11) -#endif - -#define PIN_SPI_SS (10) -#define PIN_SPI_MOSI (11) -#define PIN_SPI_MISO (12) -#define PIN_SPI_SCK (13) - -static const uint8_t SS = PIN_SPI_SS; -static const uint8_t MOSI = PIN_SPI_MOSI; -static const uint8_t MISO = PIN_SPI_MISO; -static const uint8_t SCK = PIN_SPI_SCK; - -#define PIN_WIRE_SDA (18) -#define PIN_WIRE_SCL (19) - -static const uint8_t SDA = PIN_WIRE_SDA; -static const uint8_t SCL = PIN_WIRE_SCL; - -#define LED_BUILTIN 9 - -#define PIN_A0 (14) -#define PIN_A1 (15) -#define PIN_A2 (16) -#define PIN_A3 (17) -#define PIN_A4 (18) -#define PIN_A5 (19) -#define PIN_A6 (20) -#define PIN_A7 (21) - -static const uint8_t A0 = PIN_A0; -static const uint8_t A1 = PIN_A1; -static const uint8_t A2 = PIN_A2; -static const uint8_t A3 = PIN_A3; -static const uint8_t A4 = PIN_A4; -static const uint8_t A5 = PIN_A5; -static const uint8_t A6 = PIN_A6; -static const uint8_t A7 = PIN_A7; - -#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)0)) -#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1)) -#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0)))) -#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14))) - -#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT)) - -#ifdef ARDUINO_MAIN - -// On the Arduino board, digital pins are also used -// for the analog output (software PWM). Analog input -// pins are a separate set. - -// ATMEL ATMEGA8 & 168 / ARDUINO -// -// +-\/-+ -// PC6 1| |28 PC5 (AI 5) -// (D 0) PD0 2| |27 PC4 (AI 4) -// (D 1) PD1 3| |26 PC3 (AI 3) -// (D 2) PD2 4| |25 PC2 (AI 2) -// PWM+ (D 3) PD3 5| |24 PC1 (AI 1) -// (D 4) PD4 6| |23 PC0 (AI 0) -// VCC 7| |22 GND -// GND 8| |21 AREF -// PB6 9| |20 AVCC -// PB7 10| |19 PB5 (D 13) -// PWM+ (D 5) PD5 11| |18 PB4 (D 12) -// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM -// (D 7) PD7 13| |16 PB2 (D 10) PWM -// (D 8) PB0 14| |15 PB1 (D 9) PWM -// +----+ -// -// (PWM+ indicates the additional PWM pins on the ATmega168.) - -// ATMEL ATMEGA1280 / ARDUINO -// -// 0-7 PE0-PE7 works -// 8-13 PB0-PB5 works -// 14-21 PA0-PA7 works -// 22-29 PH0-PH7 works -// 30-35 PG5-PG0 works -// 36-43 PC7-PC0 works -// 44-51 PJ7-PJ0 works -// 52-59 PL7-PL0 works -// 60-67 PD7-PD0 works -// A0-A7 PF0-PF7 -// A8-A15 PK0-PK7 - - -// these arrays map port names (e.g. port B) to the -// appropriate addresses for various functions (e.g. reading -// and writing) -const uint16_t PROGMEM port_to_mode_PGM[] = { - NOT_A_PORT, - NOT_A_PORT, - (uint16_t) &DDRB, - (uint16_t) &DDRC, - (uint16_t) &DDRD, -}; - -const uint16_t PROGMEM port_to_output_PGM[] = { - NOT_A_PORT, - NOT_A_PORT, - (uint16_t) &PORTB, - (uint16_t) &PORTC, - (uint16_t) &PORTD, -}; - -const uint16_t PROGMEM port_to_input_PGM[] = { - NOT_A_PORT, - NOT_A_PORT, - (uint16_t) &PINB, - (uint16_t) &PINC, - (uint16_t) &PIND, -}; - -const uint8_t PROGMEM digital_pin_to_port_PGM[] = { - PD, /* 0 */ - PD, - PD, - PD, - PD, - PD, - PD, - PD, - PB, /* 8 */ - PB, - PB, - PB, - PB, - PB, - PC, /* 14 */ - PC, - PC, - PC, - PC, - PC, -}; - -const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { - _BV(0), /* 0, port D */ - _BV(1), - _BV(2), - _BV(3), - _BV(4), - _BV(5), - _BV(6), - _BV(7), - _BV(0), /* 8, port B */ - _BV(1), - _BV(2), - _BV(3), - _BV(4), - _BV(5), - _BV(0), /* 14, port C */ - _BV(1), - _BV(2), - _BV(3), - _BV(4), - _BV(5), -}; - -const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { - NOT_ON_TIMER, /* 0 - port D */ - NOT_ON_TIMER, - NOT_ON_TIMER, - // on the ATmega168, digital pin 3 has hardware pwm -#if defined(__AVR_ATmega8__) - NOT_ON_TIMER, -#else - TIMER2B, -#endif - NOT_ON_TIMER, - // on the ATmega168, digital pins 5 and 6 have hardware pwm -#if defined(__AVR_ATmega8__) - NOT_ON_TIMER, - NOT_ON_TIMER, -#else - TIMER0B, - TIMER0A, -#endif - NOT_ON_TIMER, - NOT_ON_TIMER, /* 8 - port B */ - TIMER1A, - TIMER1B, -#if defined(__AVR_ATmega8__) - TIMER2, -#else - TIMER2A, -#endif - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, /* 14 - port C */ - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, -}; - -#endif - -// These serial port names are intended to allow libraries and architecture-neutral -// sketches to automatically default to the correct port name for a particular type -// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, -// the first hardware serial port whose RX/TX pins are not dedicated to another use. -// -// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor -// -// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial -// -// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library -// -// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. -// -// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX -// pins are NOT connected to anything by default. -#define SERIAL_PORT_HARDWARE Serial -#define SERIAL_PORT_HARDWARE_OPEN Serial - -#endif diff --git a/variants/gemma/pins_arduino.h b/variants/gemma/pins_arduino.h deleted file mode 100644 index e0ec217..0000000 --- a/variants/gemma/pins_arduino.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - pins_arduino.c - pin definitions for the Arduino board - Part of Arduino / Wiring Lite - - Copyright (c) 2005 David A. Mellis - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General - Public License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA - - Modified 28-08-2009 for attiny84 R.Wiersma - Modified 09-10-2009 for attiny45 A.Saporetti -*/ - -#ifndef Pins_Arduino_h -#define Pins_Arduino_h - -#include - -// Defines to make D4 support PWM -// See for more info: http://forums.adafruit.com/viewtopic.php?f=52&t=43951 -//#define TCCR1A GTCCR -//#define WGM10 PWM1B - -// ATMEL ATTINY45 / ARDUINO -// -// +-\/-+ -// Ain0 (D 5) PB5 1| |8 Vcc -// Ain3 (D 3) PB3 2| |7 PB2 (D 2) Ain1 -// Ain2 (D 4) PB4 3| |6 PB1 (D 1) pwm1 -// GND 4| |5 PB0 (D 0) pwm0 -// +----+ - -#define NUM_DIGITAL_PINS 3 -#define NUM_ANALOG_INPUTS 1 -#define LED_BUILTIN 1 - -#define PIN_A0 (6) -#define PIN_A1 (7) -#define PIN_A2 (8) -#define PIN_A3 (9) - -static const uint8_t A0 = PIN_A0; -static const uint8_t A1 = PIN_A1; -static const uint8_t A2 = PIN_A2; -static const uint8_t A3 = PIN_A3; - -#define digitalPinToPCICR(p) ( ((p) >= 0 && (p) <= 4) ? (&GIMSK) : ((uint8_t *)0) ) -#define digitalPinToPCICRbit(p) ( PCIE ) -#define digitalPinToPCMSK(p) ( ((p) <= 4) ? (&PCMSK) : ((uint8_t *)0) ) -#define digitalPinToPCMSKbit(p) ( (p) ) - -#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : NOT_AN_INTERRUPT) - -#define analogPinToChannel(p) ( (p) < 6 ? (p) : (p) - 6 ) - -#define TCCR1A GTCCR - -#ifdef ARDUINO_MAIN - -void initVariant() -{ - GTCCR |= (1 << PWM1B); -} - -// these arrays map port names (e.g. port B) to the -// appropriate addresses for various functions (e.g. reading -// and writing) tiny45 only port B -const uint16_t PROGMEM port_to_mode_PGM[] = { - NOT_A_PORT, - NOT_A_PORT, - (uint16_t) &DDRB, -}; - -const uint16_t PROGMEM port_to_output_PGM[] = { - NOT_A_PORT, - NOT_A_PORT, - (uint16_t) &PORTB, -}; - -const uint16_t PROGMEM port_to_input_PGM[] = { - NOT_A_PIN, - NOT_A_PIN, - (uint16_t) &PINB, -}; - -const uint8_t PROGMEM digital_pin_to_port_PGM[] = { - PB, /* 0 */ - PB, - PB, - PB, - PB, - PB, // 5 - PB, // A0 - PB, - PB, - PB, // A4 - -}; - -const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { - _BV(0), /* 0, port B */ - _BV(1), - _BV(2), - _BV(3), /* 3 port B */ - _BV(4), - _BV(5), - _BV(5), - _BV(2), - _BV(4), - _BV(3), -}; - -const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { - TIMER0A, /* OC0A */ - TIMER0B, - NOT_ON_TIMER, - NOT_ON_TIMER, - TIMER1B, - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, -}; - -#endif - -#endif diff --git a/variants/mega/pins_arduino.h b/variants/mega/pins_arduino.h deleted file mode 100644 index 5115c04..0000000 --- a/variants/mega/pins_arduino.h +++ /dev/null @@ -1,413 +0,0 @@ -/* - pins_arduino.h - Pin definition functions for Arduino - Part of Arduino - http://www.arduino.cc/ - - Copyright (c) 2007 David A. Mellis - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General - Public License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA -*/ - -#ifndef Pins_Arduino_h -#define Pins_Arduino_h - -#include - -#define NUM_DIGITAL_PINS 70 -#define NUM_ANALOG_INPUTS 16 -#define analogInputToDigitalPin(p) ((p < 16) ? (p) + 54 : -1) -#define digitalPinHasPWM(p) (((p) >= 2 && (p) <= 13) || ((p) >= 44 && (p)<= 46)) - -#define PIN_SPI_SS (53) -#define PIN_SPI_MOSI (51) -#define PIN_SPI_MISO (50) -#define PIN_SPI_SCK (52) - -static const uint8_t SS = PIN_SPI_SS; -static const uint8_t MOSI = PIN_SPI_MOSI; -static const uint8_t MISO = PIN_SPI_MISO; -static const uint8_t SCK = PIN_SPI_SCK; - -#define PIN_WIRE_SDA (20) -#define PIN_WIRE_SCL (21) - -static const uint8_t SDA = PIN_WIRE_SDA; -static const uint8_t SCL = PIN_WIRE_SCL; - -#define LED_BUILTIN 13 - -#define PIN_A0 (54) -#define PIN_A1 (55) -#define PIN_A2 (56) -#define PIN_A3 (57) -#define PIN_A4 (58) -#define PIN_A5 (59) -#define PIN_A6 (60) -#define PIN_A7 (61) -#define PIN_A8 (62) -#define PIN_A9 (63) -#define PIN_A10 (64) -#define PIN_A11 (65) -#define PIN_A12 (66) -#define PIN_A13 (67) -#define PIN_A14 (68) -#define PIN_A15 (69) - -static const uint8_t A0 = PIN_A0; -static const uint8_t A1 = PIN_A1; -static const uint8_t A2 = PIN_A2; -static const uint8_t A3 = PIN_A3; -static const uint8_t A4 = PIN_A4; -static const uint8_t A5 = PIN_A5; -static const uint8_t A6 = PIN_A6; -static const uint8_t A7 = PIN_A7; -static const uint8_t A8 = PIN_A8; -static const uint8_t A9 = PIN_A9; -static const uint8_t A10 = PIN_A10; -static const uint8_t A11 = PIN_A11; -static const uint8_t A12 = PIN_A12; -static const uint8_t A13 = PIN_A13; -static const uint8_t A14 = PIN_A14; -static const uint8_t A15 = PIN_A15; - -// A majority of the pins are NOT PCINTs, SO BE WARNED (i.e. you cannot use them as receive pins) -// Only pins available for RECEIVE (TRANSMIT can be on any pin): -// (I've deliberately left out pin mapping to the Hardware USARTs - seems senseless to me) -// Pins: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 - -#define digitalPinToPCICR(p) ( (((p) >= 10) && ((p) <= 13)) || \ - (((p) >= 50) && ((p) <= 53)) || \ - (((p) >= 62) && ((p) <= 69)) ? (&PCICR) : ((uint8_t *)0) ) - -#define digitalPinToPCICRbit(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? 0 : \ - ( (((p) >= 62) && ((p) <= 69)) ? 2 : \ - 0 ) ) - -#define digitalPinToPCMSK(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? (&PCMSK0) : \ - ( (((p) >= 62) && ((p) <= 69)) ? (&PCMSK2) : \ - ((uint8_t *)0) ) ) - -#define digitalPinToPCMSKbit(p) ( (((p) >= 10) && ((p) <= 13)) ? ((p) - 6) : \ - ( ((p) == 50) ? 3 : \ - ( ((p) == 51) ? 2 : \ - ( ((p) == 52) ? 1 : \ - ( ((p) == 53) ? 0 : \ - ( (((p) >= 62) && ((p) <= 69)) ? ((p) - 62) : \ - 0 ) ) ) ) ) ) - -#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : ((p) >= 18 && (p) <= 21 ? 23 - (p) : NOT_AN_INTERRUPT))) - -#ifdef ARDUINO_MAIN - -const uint16_t PROGMEM port_to_mode_PGM[] = { - NOT_A_PORT, - (uint16_t) &DDRA, - (uint16_t) &DDRB, - (uint16_t) &DDRC, - (uint16_t) &DDRD, - (uint16_t) &DDRE, - (uint16_t) &DDRF, - (uint16_t) &DDRG, - (uint16_t) &DDRH, - NOT_A_PORT, - (uint16_t) &DDRJ, - (uint16_t) &DDRK, - (uint16_t) &DDRL, -}; - -const uint16_t PROGMEM port_to_output_PGM[] = { - NOT_A_PORT, - (uint16_t) &PORTA, - (uint16_t) &PORTB, - (uint16_t) &PORTC, - (uint16_t) &PORTD, - (uint16_t) &PORTE, - (uint16_t) &PORTF, - (uint16_t) &PORTG, - (uint16_t) &PORTH, - NOT_A_PORT, - (uint16_t) &PORTJ, - (uint16_t) &PORTK, - (uint16_t) &PORTL, -}; - -const uint16_t PROGMEM port_to_input_PGM[] = { - NOT_A_PIN, - (uint16_t) &PINA, - (uint16_t) &PINB, - (uint16_t) &PINC, - (uint16_t) &PIND, - (uint16_t) &PINE, - (uint16_t) &PINF, - (uint16_t) &PING, - (uint16_t) &PINH, - NOT_A_PIN, - (uint16_t) &PINJ, - (uint16_t) &PINK, - (uint16_t) &PINL, -}; - -const uint8_t PROGMEM digital_pin_to_port_PGM[] = { - // PORTLIST - // ------------------------------------------- - PE , // PE 0 ** 0 ** USART0_RX - PE , // PE 1 ** 1 ** USART0_TX - PE , // PE 4 ** 2 ** PWM2 - PE , // PE 5 ** 3 ** PWM3 - PG , // PG 5 ** 4 ** PWM4 - PE , // PE 3 ** 5 ** PWM5 - PH , // PH 3 ** 6 ** PWM6 - PH , // PH 4 ** 7 ** PWM7 - PH , // PH 5 ** 8 ** PWM8 - PH , // PH 6 ** 9 ** PWM9 - PB , // PB 4 ** 10 ** PWM10 - PB , // PB 5 ** 11 ** PWM11 - PB , // PB 6 ** 12 ** PWM12 - PB , // PB 7 ** 13 ** PWM13 - PJ , // PJ 1 ** 14 ** USART3_TX - PJ , // PJ 0 ** 15 ** USART3_RX - PH , // PH 1 ** 16 ** USART2_TX - PH , // PH 0 ** 17 ** USART2_RX - PD , // PD 3 ** 18 ** USART1_TX - PD , // PD 2 ** 19 ** USART1_RX - PD , // PD 1 ** 20 ** I2C_SDA - PD , // PD 0 ** 21 ** I2C_SCL - PA , // PA 0 ** 22 ** D22 - PA , // PA 1 ** 23 ** D23 - PA , // PA 2 ** 24 ** D24 - PA , // PA 3 ** 25 ** D25 - PA , // PA 4 ** 26 ** D26 - PA , // PA 5 ** 27 ** D27 - PA , // PA 6 ** 28 ** D28 - PA , // PA 7 ** 29 ** D29 - PC , // PC 7 ** 30 ** D30 - PC , // PC 6 ** 31 ** D31 - PC , // PC 5 ** 32 ** D32 - PC , // PC 4 ** 33 ** D33 - PC , // PC 3 ** 34 ** D34 - PC , // PC 2 ** 35 ** D35 - PC , // PC 1 ** 36 ** D36 - PC , // PC 0 ** 37 ** D37 - PD , // PD 7 ** 38 ** D38 - PG , // PG 2 ** 39 ** D39 - PG , // PG 1 ** 40 ** D40 - PG , // PG 0 ** 41 ** D41 - PL , // PL 7 ** 42 ** D42 - PL , // PL 6 ** 43 ** D43 - PL , // PL 5 ** 44 ** D44 - PL , // PL 4 ** 45 ** D45 - PL , // PL 3 ** 46 ** D46 - PL , // PL 2 ** 47 ** D47 - PL , // PL 1 ** 48 ** D48 - PL , // PL 0 ** 49 ** D49 - PB , // PB 3 ** 50 ** SPI_MISO - PB , // PB 2 ** 51 ** SPI_MOSI - PB , // PB 1 ** 52 ** SPI_SCK - PB , // PB 0 ** 53 ** SPI_SS - PF , // PF 0 ** 54 ** A0 - PF , // PF 1 ** 55 ** A1 - PF , // PF 2 ** 56 ** A2 - PF , // PF 3 ** 57 ** A3 - PF , // PF 4 ** 58 ** A4 - PF , // PF 5 ** 59 ** A5 - PF , // PF 6 ** 60 ** A6 - PF , // PF 7 ** 61 ** A7 - PK , // PK 0 ** 62 ** A8 - PK , // PK 1 ** 63 ** A9 - PK , // PK 2 ** 64 ** A10 - PK , // PK 3 ** 65 ** A11 - PK , // PK 4 ** 66 ** A12 - PK , // PK 5 ** 67 ** A13 - PK , // PK 6 ** 68 ** A14 - PK , // PK 7 ** 69 ** A15 -}; - -const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { - // PIN IN PORT - // ------------------------------------------- - _BV( 0 ) , // PE 0 ** 0 ** USART0_RX - _BV( 1 ) , // PE 1 ** 1 ** USART0_TX - _BV( 4 ) , // PE 4 ** 2 ** PWM2 - _BV( 5 ) , // PE 5 ** 3 ** PWM3 - _BV( 5 ) , // PG 5 ** 4 ** PWM4 - _BV( 3 ) , // PE 3 ** 5 ** PWM5 - _BV( 3 ) , // PH 3 ** 6 ** PWM6 - _BV( 4 ) , // PH 4 ** 7 ** PWM7 - _BV( 5 ) , // PH 5 ** 8 ** PWM8 - _BV( 6 ) , // PH 6 ** 9 ** PWM9 - _BV( 4 ) , // PB 4 ** 10 ** PWM10 - _BV( 5 ) , // PB 5 ** 11 ** PWM11 - _BV( 6 ) , // PB 6 ** 12 ** PWM12 - _BV( 7 ) , // PB 7 ** 13 ** PWM13 - _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX - _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX - _BV( 1 ) , // PH 1 ** 16 ** USART2_TX - _BV( 0 ) , // PH 0 ** 17 ** USART2_RX - _BV( 3 ) , // PD 3 ** 18 ** USART1_TX - _BV( 2 ) , // PD 2 ** 19 ** USART1_RX - _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA - _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL - _BV( 0 ) , // PA 0 ** 22 ** D22 - _BV( 1 ) , // PA 1 ** 23 ** D23 - _BV( 2 ) , // PA 2 ** 24 ** D24 - _BV( 3 ) , // PA 3 ** 25 ** D25 - _BV( 4 ) , // PA 4 ** 26 ** D26 - _BV( 5 ) , // PA 5 ** 27 ** D27 - _BV( 6 ) , // PA 6 ** 28 ** D28 - _BV( 7 ) , // PA 7 ** 29 ** D29 - _BV( 7 ) , // PC 7 ** 30 ** D30 - _BV( 6 ) , // PC 6 ** 31 ** D31 - _BV( 5 ) , // PC 5 ** 32 ** D32 - _BV( 4 ) , // PC 4 ** 33 ** D33 - _BV( 3 ) , // PC 3 ** 34 ** D34 - _BV( 2 ) , // PC 2 ** 35 ** D35 - _BV( 1 ) , // PC 1 ** 36 ** D36 - _BV( 0 ) , // PC 0 ** 37 ** D37 - _BV( 7 ) , // PD 7 ** 38 ** D38 - _BV( 2 ) , // PG 2 ** 39 ** D39 - _BV( 1 ) , // PG 1 ** 40 ** D40 - _BV( 0 ) , // PG 0 ** 41 ** D41 - _BV( 7 ) , // PL 7 ** 42 ** D42 - _BV( 6 ) , // PL 6 ** 43 ** D43 - _BV( 5 ) , // PL 5 ** 44 ** D44 - _BV( 4 ) , // PL 4 ** 45 ** D45 - _BV( 3 ) , // PL 3 ** 46 ** D46 - _BV( 2 ) , // PL 2 ** 47 ** D47 - _BV( 1 ) , // PL 1 ** 48 ** D48 - _BV( 0 ) , // PL 0 ** 49 ** D49 - _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO - _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI - _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK - _BV( 0 ) , // PB 0 ** 53 ** SPI_SS - _BV( 0 ) , // PF 0 ** 54 ** A0 - _BV( 1 ) , // PF 1 ** 55 ** A1 - _BV( 2 ) , // PF 2 ** 56 ** A2 - _BV( 3 ) , // PF 3 ** 57 ** A3 - _BV( 4 ) , // PF 4 ** 58 ** A4 - _BV( 5 ) , // PF 5 ** 59 ** A5 - _BV( 6 ) , // PF 6 ** 60 ** A6 - _BV( 7 ) , // PF 7 ** 61 ** A7 - _BV( 0 ) , // PK 0 ** 62 ** A8 - _BV( 1 ) , // PK 1 ** 63 ** A9 - _BV( 2 ) , // PK 2 ** 64 ** A10 - _BV( 3 ) , // PK 3 ** 65 ** A11 - _BV( 4 ) , // PK 4 ** 66 ** A12 - _BV( 5 ) , // PK 5 ** 67 ** A13 - _BV( 6 ) , // PK 6 ** 68 ** A14 - _BV( 7 ) , // PK 7 ** 69 ** A15 -}; - -const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { - // TIMERS - // ------------------------------------------- - NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX - NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX - TIMER3B , // PE 4 ** 2 ** PWM2 - TIMER3C , // PE 5 ** 3 ** PWM3 - TIMER0B , // PG 5 ** 4 ** PWM4 - TIMER3A , // PE 3 ** 5 ** PWM5 - TIMER4A , // PH 3 ** 6 ** PWM6 - TIMER4B , // PH 4 ** 7 ** PWM7 - TIMER4C , // PH 5 ** 8 ** PWM8 - TIMER2B , // PH 6 ** 9 ** PWM9 - TIMER2A , // PB 4 ** 10 ** PWM10 - TIMER1A , // PB 5 ** 11 ** PWM11 - TIMER1B , // PB 6 ** 12 ** PWM12 - TIMER0A , // PB 7 ** 13 ** PWM13 - NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX - NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX - NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX - NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX - NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX - NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX - NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA - NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL - NOT_ON_TIMER , // PA 0 ** 22 ** D22 - NOT_ON_TIMER , // PA 1 ** 23 ** D23 - NOT_ON_TIMER , // PA 2 ** 24 ** D24 - NOT_ON_TIMER , // PA 3 ** 25 ** D25 - NOT_ON_TIMER , // PA 4 ** 26 ** D26 - NOT_ON_TIMER , // PA 5 ** 27 ** D27 - NOT_ON_TIMER , // PA 6 ** 28 ** D28 - NOT_ON_TIMER , // PA 7 ** 29 ** D29 - NOT_ON_TIMER , // PC 7 ** 30 ** D30 - NOT_ON_TIMER , // PC 6 ** 31 ** D31 - NOT_ON_TIMER , // PC 5 ** 32 ** D32 - NOT_ON_TIMER , // PC 4 ** 33 ** D33 - NOT_ON_TIMER , // PC 3 ** 34 ** D34 - NOT_ON_TIMER , // PC 2 ** 35 ** D35 - NOT_ON_TIMER , // PC 1 ** 36 ** D36 - NOT_ON_TIMER , // PC 0 ** 37 ** D37 - NOT_ON_TIMER , // PD 7 ** 38 ** D38 - NOT_ON_TIMER , // PG 2 ** 39 ** D39 - NOT_ON_TIMER , // PG 1 ** 40 ** D40 - NOT_ON_TIMER , // PG 0 ** 41 ** D41 - NOT_ON_TIMER , // PL 7 ** 42 ** D42 - NOT_ON_TIMER , // PL 6 ** 43 ** D43 - TIMER5C , // PL 5 ** 44 ** D44 - TIMER5B , // PL 4 ** 45 ** D45 - TIMER5A , // PL 3 ** 46 ** D46 - NOT_ON_TIMER , // PL 2 ** 47 ** D47 - NOT_ON_TIMER , // PL 1 ** 48 ** D48 - NOT_ON_TIMER , // PL 0 ** 49 ** D49 - NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO - NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI - NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK - NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS - NOT_ON_TIMER , // PF 0 ** 54 ** A0 - NOT_ON_TIMER , // PF 1 ** 55 ** A1 - NOT_ON_TIMER , // PF 2 ** 56 ** A2 - NOT_ON_TIMER , // PF 3 ** 57 ** A3 - NOT_ON_TIMER , // PF 4 ** 58 ** A4 - NOT_ON_TIMER , // PF 5 ** 59 ** A5 - NOT_ON_TIMER , // PF 6 ** 60 ** A6 - NOT_ON_TIMER , // PF 7 ** 61 ** A7 - NOT_ON_TIMER , // PK 0 ** 62 ** A8 - NOT_ON_TIMER , // PK 1 ** 63 ** A9 - NOT_ON_TIMER , // PK 2 ** 64 ** A10 - NOT_ON_TIMER , // PK 3 ** 65 ** A11 - NOT_ON_TIMER , // PK 4 ** 66 ** A12 - NOT_ON_TIMER , // PK 5 ** 67 ** A13 - NOT_ON_TIMER , // PK 6 ** 68 ** A14 - NOT_ON_TIMER , // PK 7 ** 69 ** A15 -}; - -#endif - -// These serial port names are intended to allow libraries and architecture-neutral -// sketches to automatically default to the correct port name for a particular type -// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, -// the first hardware serial port whose RX/TX pins are not dedicated to another use. -// -// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor -// -// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial -// -// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library -// -// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. -// -// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX -// pins are NOT connected to anything by default. -#define SERIAL_PORT_MONITOR Serial -#define SERIAL_PORT_HARDWARE Serial -#define SERIAL_PORT_HARDWARE1 Serial1 -#define SERIAL_PORT_HARDWARE2 Serial2 -#define SERIAL_PORT_HARDWARE3 Serial3 -#define SERIAL_PORT_HARDWARE_OPEN Serial1 -#define SERIAL_PORT_HARDWARE_OPEN1 Serial2 -#define SERIAL_PORT_HARDWARE_OPEN2 Serial3 - -#endif diff --git a/variants/standard/pins_arduino.h b/variants/standard/pins_arduino.h deleted file mode 100644 index 2ea0190..0000000 --- a/variants/standard/pins_arduino.h +++ /dev/null @@ -1,254 +0,0 @@ -/* - pins_arduino.h - Pin definition functions for Arduino - Part of Arduino - http://www.arduino.cc/ - - Copyright (c) 2007 David A. Mellis - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General - Public License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA -*/ - -#ifndef Pins_Arduino_h -#define Pins_Arduino_h - -#include - -#define NUM_DIGITAL_PINS 20 -#define NUM_ANALOG_INPUTS 6 -#define analogInputToDigitalPin(p) ((p < 6) ? (p) + 14 : -1) - -#if defined(__AVR_ATmega8__) -#define digitalPinHasPWM(p) ((p) == 9 || (p) == 10 || (p) == 11) -#else -#define digitalPinHasPWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 11) -#endif - -#define PIN_SPI_SS (10) -#define PIN_SPI_MOSI (11) -#define PIN_SPI_MISO (12) -#define PIN_SPI_SCK (13) - -static const uint8_t SS = PIN_SPI_SS; -static const uint8_t MOSI = PIN_SPI_MOSI; -static const uint8_t MISO = PIN_SPI_MISO; -static const uint8_t SCK = PIN_SPI_SCK; - -#define PIN_WIRE_SDA (18) -#define PIN_WIRE_SCL (19) - -static const uint8_t SDA = PIN_WIRE_SDA; -static const uint8_t SCL = PIN_WIRE_SCL; - -#define LED_BUILTIN 13 - -#define PIN_A0 (14) -#define PIN_A1 (15) -#define PIN_A2 (16) -#define PIN_A3 (17) -#define PIN_A4 (18) -#define PIN_A5 (19) -#define PIN_A6 (20) -#define PIN_A7 (21) - -static const uint8_t A0 = PIN_A0; -static const uint8_t A1 = PIN_A1; -static const uint8_t A2 = PIN_A2; -static const uint8_t A3 = PIN_A3; -static const uint8_t A4 = PIN_A4; -static const uint8_t A5 = PIN_A5; -static const uint8_t A6 = PIN_A6; -static const uint8_t A7 = PIN_A7; - -#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)0)) -#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1)) -#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0)))) -#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14))) - -#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT)) - -#ifdef ARDUINO_MAIN - -// On the Arduino board, digital pins are also used -// for the analog output (software PWM). Analog input -// pins are a separate set. - -// ATMEL ATMEGA8 & 168 / ARDUINO -// -// +-\/-+ -// PC6 1| |28 PC5 (AI 5) -// (D 0) PD0 2| |27 PC4 (AI 4) -// (D 1) PD1 3| |26 PC3 (AI 3) -// (D 2) PD2 4| |25 PC2 (AI 2) -// PWM+ (D 3) PD3 5| |24 PC1 (AI 1) -// (D 4) PD4 6| |23 PC0 (AI 0) -// VCC 7| |22 GND -// GND 8| |21 AREF -// PB6 9| |20 AVCC -// PB7 10| |19 PB5 (D 13) -// PWM+ (D 5) PD5 11| |18 PB4 (D 12) -// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM -// (D 7) PD7 13| |16 PB2 (D 10) PWM -// (D 8) PB0 14| |15 PB1 (D 9) PWM -// +----+ -// -// (PWM+ indicates the additional PWM pins on the ATmega168.) - -// ATMEL ATMEGA1280 / ARDUINO -// -// 0-7 PE0-PE7 works -// 8-13 PB0-PB5 works -// 14-21 PA0-PA7 works -// 22-29 PH0-PH7 works -// 30-35 PG5-PG0 works -// 36-43 PC7-PC0 works -// 44-51 PJ7-PJ0 works -// 52-59 PL7-PL0 works -// 60-67 PD7-PD0 works -// A0-A7 PF0-PF7 -// A8-A15 PK0-PK7 - - -// these arrays map port names (e.g. port B) to the -// appropriate addresses for various functions (e.g. reading -// and writing) -const uint16_t PROGMEM port_to_mode_PGM[] = { - NOT_A_PORT, - NOT_A_PORT, - (uint16_t) &DDRB, - (uint16_t) &DDRC, - (uint16_t) &DDRD, -}; - -const uint16_t PROGMEM port_to_output_PGM[] = { - NOT_A_PORT, - NOT_A_PORT, - (uint16_t) &PORTB, - (uint16_t) &PORTC, - (uint16_t) &PORTD, -}; - -const uint16_t PROGMEM port_to_input_PGM[] = { - NOT_A_PORT, - NOT_A_PORT, - (uint16_t) &PINB, - (uint16_t) &PINC, - (uint16_t) &PIND, -}; - -const uint8_t PROGMEM digital_pin_to_port_PGM[] = { - PD, /* 0 */ - PD, - PD, - PD, - PD, - PD, - PD, - PD, - PB, /* 8 */ - PB, - PB, - PB, - PB, - PB, - PC, /* 14 */ - PC, - PC, - PC, - PC, - PC, -}; - -const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { - _BV(0), /* 0, port D */ - _BV(1), - _BV(2), - _BV(3), - _BV(4), - _BV(5), - _BV(6), - _BV(7), - _BV(0), /* 8, port B */ - _BV(1), - _BV(2), - _BV(3), - _BV(4), - _BV(5), - _BV(0), /* 14, port C */ - _BV(1), - _BV(2), - _BV(3), - _BV(4), - _BV(5), -}; - -const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { - NOT_ON_TIMER, /* 0 - port D */ - NOT_ON_TIMER, - NOT_ON_TIMER, - // on the ATmega168, digital pin 3 has hardware pwm -#if defined(__AVR_ATmega8__) - NOT_ON_TIMER, -#else - TIMER2B, -#endif - NOT_ON_TIMER, - // on the ATmega168, digital pins 5 and 6 have hardware pwm -#if defined(__AVR_ATmega8__) - NOT_ON_TIMER, - NOT_ON_TIMER, -#else - TIMER0B, - TIMER0A, -#endif - NOT_ON_TIMER, - NOT_ON_TIMER, /* 8 - port B */ - TIMER1A, - TIMER1B, -#if defined(__AVR_ATmega8__) - TIMER2, -#else - TIMER2A, -#endif - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, /* 14 - port C */ - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, - NOT_ON_TIMER, -}; - -#endif - -// These serial port names are intended to allow libraries and architecture-neutral -// sketches to automatically default to the correct port name for a particular type -// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, -// the first hardware serial port whose RX/TX pins are not dedicated to another use. -// -// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor -// -// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial -// -// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library -// -// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. -// -// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX -// pins are NOT connected to anything by default. -#define SERIAL_PORT_MONITOR Serial -#define SERIAL_PORT_HARDWARE Serial - -#endif -- cgit v1.2.3-18-g5258