diff options
author | TerryMathews <terry@terrymathews.net> | 2016-06-12 22:26:47 -0400 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2016-06-12 22:26:47 -0400 |
commit | 25d4772754186b8ab6ef86c28049da67a460f123 (patch) | |
tree | c68ca4c6ee77f3601c2c8d3fe7573e0cdc8fd791 | |
parent | 6955719075a9a07524814e4183f3f90f83db1c6a (diff) | |
download | qmk_firmware-25d4772754186b8ab6ef86c28049da67a460f123.tar.gz qmk_firmware-25d4772754186b8ab6ef86c28049da67a460f123.zip |
adds support for Phantom TKL keyboard (#399)
ANSI 125 layout, capslock and scrolllock implemented, support for
WS2812LED strip included.
-rw-r--r-- | keyboard/phantom/Makefile | 112 | ||||
-rw-r--r-- | keyboard/phantom/config.h | 91 | ||||
-rw-r--r-- | keyboard/phantom/keymaps/default/compiled.hex | 1488 | ||||
-rw-r--r-- | keyboard/phantom/keymaps/default/keymap.c | 169 | ||||
-rw-r--r-- | keyboard/phantom/led.c | 44 | ||||
-rw-r--r-- | keyboard/phantom/phantom.c | 28 | ||||
-rw-r--r-- | keyboard/phantom/phantom.h | 46 | ||||
-rw-r--r-- | keyboard/phantom/pinout.jpg | bin | 0 -> 86118 bytes | |||
-rw-r--r-- | keyboard/phantom/pinout.txt | 1 |
9 files changed, 1979 insertions, 0 deletions
diff --git a/keyboard/phantom/Makefile b/keyboard/phantom/Makefile new file mode 100644 index 0000000000..0fbcf914fd --- /dev/null +++ b/keyboard/phantom/Makefile @@ -0,0 +1,112 @@ +#---------------------------------------------------------------------------- +# 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. +# Please customize your programmer settings(PROGRAM_CMD) +# +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +# 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 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". +#---------------------------------------------------------------------------- + +SRC = led.c + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# 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_USB below, as it is sourced by +# F_USB 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 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, 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_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +RGBLIGHT_ENABLE ?=yes # Enable keyboard underlight functionality (+4870) +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality (+1150) +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID + + +ifndef QUANTUM_DIR + include ../../Makefile +endif diff --git a/keyboard/phantom/config.h b/keyboard/phantom/config.h new file mode 100644 index 0000000000..d5878766f0 --- /dev/null +++ b/keyboard/phantom/config.h @@ -0,0 +1,91 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 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, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0003 +#define MANUFACTURER PHANTOM +#define PRODUCT PHANTOM RGB MOD +#define DESCRIPTION QMK keyboard firmware for PHANTOM TKL + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +// ROWS: Top to bottom, COLS: Left to right +/* Row pin configuration +*/ +#define MATRIX_ROW_PINS { B5, B4, B3, B2, B1, B0 } +/* Column pin configuration + */ +#define MATRIX_COL_PINS { D5, C7, C6, D4, D0, E6, F0, F1, F4, F5, F6, F7, D7, D6, D1, D2, D3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* Underlight configuration + */ + #define ws2812_PORTREG PORTE + #define ws2812_DDRREG DDRE + #define ws2812_pin 2 + #define RGBLED_NUM 20 // Number of LEDs + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboard/phantom/keymaps/default/compiled.hex b/keyboard/phantom/keymaps/default/compiled.hex new file mode 100644 index 0000000000..37bbfb5551 --- /dev/null +++ b/keyboard/phantom/keymaps/default/compiled.hex @@ -0,0 +1,1488 @@ +:100000000C945A070C949E070C949E070C949E0720 +:100010000C949E070C949E070C949E070C949E07CC +:100020000C949E070C949E070C9490190C94621AE1 +:100030000C9481280C949E070C949E070C949E07A8 +:100040000C949E070C949E070C949E070C949E079C +:100050000C949E070C94E8280C949E070C949E0721 +:100060000C949E070C949E070C949E070C949E077C +:100070000C949E070C949E070C949E070C949E076C +:100080000C9431140C949E070C949E070C949E07BC +:100090000C949E070C949E070C949E070C949E074C +:1000A0000C949E070C949E070C949E077B089A085C +:1000B000CB08A108A808AF08B608BD08C408C71A2D +:1000C000E91AD41BE91AD41B2B1B4E1BD41BA31BF0 +:1000D000B61B241F241F531F531F931FD220D2204F +:1000E000D220B51FD2205C205C20C520D220D22097 +:1000F000CD20692069206920692069206920692054 +:1001000069206920692069206920692069206920A7 +:1001100069207920892090209720A12000F001F00B +:1001200002F003F004F005F006F007F008F02900F3 +:1001300035003A003B003C003D003E003F004000DF +:10014000410042004300440045004600470048008B +:100150001E001F0020002100220023002400250093 +:10016000260027002D002E002A002A0049004A0000 +:100170004B002B0014001A000800150017001C008B +:1001800018000C00120013002F00300031004C004A +:100190004D004E00390004001600070009000A0057 +:1001A0000B000D000E000F00330034002800280063 +:1001B000280028002800E100E1001D001B000600C7 +:1001C0001900050011001000360037003800E50066 +:1001D000E500520052005200E000E300E2002C0073 +:1001E0002C002C002C002C002C002C00E600E7003A +:1001F0000152E400500051004F00010001000100D5 +:1002000001000100010001000100010001000100E6 +:1002100001000100010001000100010001000100D6 +:1002200001000100010001000100010001000100C6 +:100230000100010000500050010001000100010018 +:1002400001000100010001000100010001000100A6 +:100250000100010001000100010001000100010096 +:100260000100010001000100010001000100010086 +:100270000100010001005200010001000100010025 +:1002800001000100010001200220032004200520BC +:1002900006200720082001000100010001000100E4 +:1002A0000100010001000100010001000100010046 +:1002B0000100010001000100010001000100010036 +:1002C0000100010001000A44454255473A20656E8D +:1002D00061626C65642E0A005374617465206F66F8 +:1002E00020726F772025583A2025303136620A0077 +:1002F00048756D616E2D7265616461626C65206D1B +:1003000061747269782073746174653A0D0A0044EF +:1003100065626F756E63696E672064656C617920D4 +:1003200072656D61696E696E673A2025580A0054DE +:10033000494D4552332064697361626C65642E0ACD +:100340000054494D45523320656E61626C65642EE0 +:100350000A007267626C696768742073657420684C +:100360007376205B454550524F4D5D3A2025752CE4 +:1003700025752C25750A007267626C6967687420A0 +:10038000746F67676C653A207267626C696768743E +:100390005F636F6E6669672E656E61626C65203D96 +:1003A0002025750A007267626C69676874206D6F3A +:1003B00064653A2025750A007267626C6967687423 +:1003C0005F696E6974207267626C696768745F63E5 +:1003D0006F6E6669672E6D6F6465203D20302E203C +:1003E00057726974652064656661756C7420766106 +:1003F0006C75657320746F20454550524F4D2E0A21 +:10040000007267626C696768745F696E6974206501 +:1004100065636F6E666967206973206E6F7420650F +:100420006E61626C65642E0A007267626C6967684F +:10043000745F696E6974207374617274210A00724A +:1004400067626C696768745F696E69742063616C68 +:100450006C65642E0A007267626C696768745F631A +:100460006F6E6669672E76616C203D2025640A00F8 +:100470007267626C696768745F636F6E6669672E26 +:10048000736174203D2025640A007267626C69679D +:1004900068745F636F6E6669672E687565203D20BE +:1004A00025640A007267686C696768745F636F6EC1 +:1004B0006669672E6D6F6465203D2025640A0072B1 +:1004C00067626C696768745F636F6E6669672E65E3 +:1004D0006E61626C65203D2025640A007267626C63 +:1004E000696768745F636F6E666967206570726FB5 +:1004F0006D0A006565636F6E6669675F757064613C +:1005000074655F7267626C696768745F6465666171 +:10051000756C740A00643214643214783C1E1E1424 +:100520000A0500000000010101020203040505069E +:1005300007090A0B0C0E0F1112141517191B1D1F9A +:10054000212325282A2C2F313436393B3E4143467E +:10055000494C4F5255585A5D6164676A6D707376A5 +:10056000797C7F8386898C8F9295989B9EA2A5A784 +:10057000AAADB0B3B6B9BCBEC1C4C6C9CBCED0D388 +:10058000D5D7DADCDEE0E2E4E6E8EAEBEDEEF0F126 +:10059000F3F4F5F6F8F9FAFAFBFCFDFDFEFEFEFFBA +:1005A000FFFFFFFFFFFFFEFEFEFDFDFCFBFAFAF979 +:1005B000F8F6F5F4F3F1F0EEEDEBEAE8E6E4E2E06C +:1005C000DEDCDAD7D5D3D0CECBC9C6C4C1BEBCB968 +:1005D000B6B3B0ADAAA7A5A29E9B9895928F8C8921 +:1005E0008683807C797673706D6A6764615D5A5822 +:1005F00055524F4C494643413E3B393634312F2CFE +:100600002A282523211F1D1B1917151412110F0E3F +:100610000C0B0A090706050504030202010101008B +:1006200000000001010202020202020303030303AD +:100630000303030303030303030404040404040483 +:10064000040404040405050505050505050505065E +:10065000060606060606060707070707070708082F +:10066000080808080909090909090A0A0A0A0A0BF7 +:100670000B0B0B0B0C0C0C0C0C0D0D0D0D0E0E0EB4 +:100680000E0F0F0F10101010111111121212131360 +:1006900013141414151516161617171818191919F6 +:1006A0001A1A1B1B1C1C1D1D1E1E1F20202121226F +:1006B00023232424252626272828292A2B2B2C2DC2 +:1006C0002E2F30303132333435363738393A3B3CDF +:1006D0003D3E3F40414244454647494A4B4C4E4FC0 +:1006E0005152535556585A5B5D5E60626365676947 +:1006F0006B6D6E70727476797B7D7F818486888B5A +:100700008D909295979A9D9FA2A5A8ABAEB1B4B7D4 +:10071000BABEC1C4C8CBCFD3D6DADEE2E6EAEEF287 +:10072000F8FF5B735D004B6579626F6172642073E3 +:10073000746172742E0A005B575D005B535D005B51 +:10074000525D005B445D005B435D00200350004848 +:100750000041004E0054004F004D00200052004761 +:1007600000420020004D004F0044000000100350E4 +:1007700000480041004E0054004F004D00000004AE +:1007800003090409027400040100A0FA090400002E +:1007900001030101000921110100012240000705A8 +:1007A000810308000A090401000103000000092177 +:1007B000110100012236000705820308000A09041E +:1007C00002000203000000092111010001222000A3 +:1007D0000705830320000107050303200001090426 +:1007E000030001030000000921110100012239006A +:1007F000070584031000011201100100000008ED3C +:10080000FE606003000102000105010906A1010567 +:100810000719E029E71500250195087501810205F2 +:100820000819012905950575019102950175039136 +:1008300001050719002977150025019578750181B3 +:1008400002C00631FF0974A1010975150025FF9545 +:1008500020750881020976150025FF9520750891FD +:1008600002C005010980A101850216010026B7001A +:100870001A01002AB700751095018100C0050C0906 +:1008800001A1018503160100269C021A01002A9C81 +:1008900002751095018100C005010906A101050737 +:1008A00019E029E7150025019508750181029501D8 +:1008B0007508810105081901290595057501910241 +:1008C0009501750391010507190029FF150026FF01 +:1008D00000950675088100C00A00253032582000B6 +:1008E0006B6579626F6172645F7265706F72743A82 +:1008F00020004B6579626F617264204C454473201F +:1009000073746174653A2025780A0064656C5F6BC6 +:1009100065795F6269743A2063616E27742064654B +:100920006C3A20253032580A006164645F6B657947 +:100930005F6269743A2063616E2774206164643A6F +:1009400020253032580A00646F6E652E0A00626FEF +:100950006F676D61676963207363616E3A202E2E45 +:100960002E20003F00433E20004C25640A0074699D +:100970006D65725F636F756E743A202530346C5804 +:100980000A006B6579626F6172645F6E6B726F3AB9 +:100990002025580A006B6579626F6172645F696433 +:1009A0006C653A2025580A006B6579626F61726444 +:1009B0005F70726F746F636F6C3A2025580A00681D +:1009C0006F73745F6B6579626F6172645F6C65648D +:1009D0007328293A2025580A000A092D20537461EA +:1009E000747573202D0A004743433A20342E382E65 +:1009F00032204156522D4C4942433A20312E382E56 +:100A00003073766E204156525F415243483A20611E +:100A10007672350A004F5054494F4E533A204C5588 +:100A2000464120424F4F544D414749432045585479 +:100A300052414B455920434F4E534F4C4520434F55 +:100A40004D4D414E44204E4B524F20343039360AE2 +:100A5000004255494C443A20756E6B6E6F776E209C +:100A60002832313A32373A3237204A756E203132E5 +:100A70002032303136290A005649443A203078462F +:100A8000454544285048414E544F4D292050494433 +:100A90003A20307836303630285048414E544F4D49 +:100AA00020524742204D4F4429205645523A20308B +:100AB00078303030330A00444553433A20514D4B8F +:100AC000206B6579626F617264206669726D77610F +:100AD000726520666F72205048414E544F4D20542D +:100AE0004B4C0A000A092D2056657273696F6E20FF +:100AF0002D0A000A092D20436F6E736F6C65202D3F +:100B00000A4553432F713A09717569740A000A093D +:100B10002D204D61676963202D0A443A09446562BE +:100B20007567204D65737361676520546F67676CE7 +:100B3000650A583A094D6174726978204465627596 +:100B400067204D6F646520546F67676C65202D20AA +:100B500053686F77206B6579707265737365732066 +:100B6000696E206D617472697820677269640A4BDE +:100B70003A094B6579626F617264204465627567FA +:100B800020546F67676C65202D2053686F77206B4A +:100B900065797072657373207265706F72740A4D37 +:100BA0003A094465627567204D6F75736520546F0F +:100BB00067676C650A563A0956657273696F6E0A03 +:100BC000533A095374617475730A433A0941637463 +:100BD000697661746520436F6E736F6C65204D6F2D +:100BE00064650A46312D4631303A0953776974639A +:100BF0006820746F204C6179657220302D3920286F +:100C0000463130203D204C30290A302D393A0953E5 +:100C1000776974636820746F204C61796572203045 +:100C20002D390A4553433A09537769746368207430 +:100C30006F204C6179657220302028616C74657278 +:100C40006E617465206B65792031290A47524156DF +:100C5000453A0953776974636820746F204C617951 +:100C6000657220302028616C7465726E6174652035 +:100C70006B65792032290A50415553453A094A7526 +:100C80006D7020746F20426F6F746C6F6164657259 +:100C900020285265736574290A453A095072696EB5 +:100CA0007420454550524F4D2053657474696E67EA +:100CB000730A4E3A094E4B524F20546F67676C656A +:100CC0000A000A002575002E6E6B726F3A20000A2A +:100CD000002575002E737761705F6261636B736CC2 +:100CE0006173685F6261636B73706163653A200072 +:100CF0000A002575002E737761705F6772617665F3 +:100D00005F6573633A20000A002575002E6E6F5FE1 +:100D10006775693A20000A002575002E73776170A7 +:100D20005F72616C745F726775693A20000A002512 +:100D300075002E737761705F6C616C745F6C6775A2 +:100D4000693A20000A002575002E636170736C6F8C +:100D5000636B5F746F5F636F6E74726F6C3A2000C9 +:100D60000A002575002E737761705F636F6E747271 +:100D70006F6C5F636170736C6F636B3A20000A0085 +:100D800025303258006B65796D61705F636F6E66F8 +:100D900069672E7261773A20000A002575002E6D72 +:100DA0006F7573653A20000A002575002E6B657912 +:100DB000626F6172643A20000A002575002E6D6131 +:100DC000747269783A20000A002575002E656E61FC +:100DD000626C653A20000A00253032580064656272 +:100DE00075675F636F6E6669672E7261773A200080 +:100DF0000A0025750064656661756C745F6C6179C5 +:100E000065723A20003F004E4B524F3A206F6666A3 +:100E10000A004E4B524F3A206F6E0A000A6D6F75F2 +:100E200073653A206F66660A000A6D6F7573653ADE +:100E3000206F6E0A000A6B6579626F6172643A20F6 +:100E40006F66660A000A6B6579626F6172643A20A8 +:100E50006F6E0A000A6D61747269783A206F666677 +:100E60000A000A6D61747269783A206F6E0A000A8E +:100E700064656275673A206F66660A000A64656297 +:100E800075673A206F6E0A000A0A4A756D70696EBE +:100E90006720746F20626F6F746C6F616465722E6F +:100EA0002E2E2000433E20006565636F6E666967E5 +:100EB0003A0A000011241FBECFEFDAE0DEBFCDBF3B +:100EC00004B603FE24C08091620290916302A09157 +:100ED0006402B09165028730904BA740B04BB9F4E3 +:100EE00010926202109263021092640210926502E4 +:100EF00014BE84B7877F84BF88E10FB6F8948093CF +:100F00006000109260000FBEE0E0F8E3099511E088 +:100F1000A0E0B1E0E6EAFCE502C005900D92AC333A +:100F2000B107D9F712E0ACE3B1E001C01D92A236DF +:100F3000B107E1F70E94D0160C94512E0C940000DA +:100F4000FF93EF93E0913C01F0913D01309709F060 +:100F50000995EF91FF910895FC018591803011F082 +:100F6000EFDFFBCF0895FF27E0E230E247FF0CC040 +:100F7000419597FF09C0EDE2609570958095909539 +:100F8000611D711D811D911D27FF02C0219530E358 +:100F900050E2AA27660F771F881F991FAA1FA41760 +:100FA00010F0A41B63955A95A9F7AA3008F0A95F21 +:100FB000A05DAF93F395611571058105910541F72A +:100FC000ED3211F4EF93F395F21718F43F93F39584 +:100FD000FBCF8F91B5DFFA95E1F70895E991F9918B +:100FE0008591803021F0853219F0AADFF9CF08957C +:100FF00020E0E89455915532C1F3503311F46894D0 +:1010000055915A3348F4505390F3220F022E220F79 +:10101000220F200D250FF4CF0EF42195899199917F +:10102000533619F3533729F1533559F1BC01882749 +:101030009927E8945C3621F48991999168945591A7 +:10104000543639F446EF7EF077FF0DC08FEF9FEFF7 +:101050000AC055374AE039F0583540E121F05236A0 +:1010600042E009F00895FF93EF937DDFEF91FF9148 +:10107000B7CFFF93EF93FC0181918030B9F360DF2C +:10108000FBCFFF93EF9368DFF1CFDF93CF93CDB723 +:10109000DEB72596A3DFCF91DF910895269A279A90 +:1010A000089581FF02C02E9A01C02E9882FF02C0CF +:1010B0002F9A08952F980895089508958CE598E043 +:1010C000892B11F00E945C080C944E088DE598E085 +:1010D000892B11F00C945D080895CF93DF93EC01F8 +:1010E000462F50E04930510508F05CC0FA01EA5A39 +:1010F000FF4F0C94032E0E948A27827280933E0138 +:101100009A81992369F0882319F085E390E002C061 +:1011100089E290E00E94E726DF91CF910C94D627D8 +:10112000882319F085E390E002C089E290E00E94F4 +:101130003827F2CF8A818823A9F1DF91CF910C94CF +:10114000D6118A81882371F1DF91CF910C943F10E1 +:101150008A81882339F1DF91CF910C9458108A81CC +:10116000882301F1DF91CF910C9477108A81882335 +:10117000C9F0DF91CF910C9492108A81882391F06D +:10118000DF91CF910C94AC108A81882359F0DF91C4 +:10119000CF910C94C7108A81882321F0DF91CF91E1 +:1011A0000C94CC11DF91CF91089581E0089581E0F6 +:1011B00008950C94D70808950F931F93CF93DF934E +:1011C000EC0108811981C8010E946726B8010E94BC +:1011D00077098C01BE010E94D908882309F47AC0DE +:1011E0008A818823C9F180914A0181111EC004318E +:1011F00080E5180789F50E94DB0881E080934A01A9 +:101200000E94B328909349018093480110924101B4 +:101210001092430110924201109245011092440134 +:10122000109247011092460155C08091480190915B +:1012300049010E94BF28883C910570F480914101CA +:10124000E82FF0E0EE0FFF1FEE5BFE4F11830083EF +:101250008F5F809341013EC0043880E5180721F07C +:1012600005381045A1F02AC08A81882321F0109208 +:101270003F0182E012C080913F01811106C086E2E9 +:101280000E94C21D86E20E948A1E82E014C08A81EA +:10129000882331F01092400180E20E94D91E1AC0CA +:1012A00080914001811106C087E20E94C21D87E241 +:1012B0000E948A1E80E20E94E01E0CC081E08093A2 +:1012C0003F0180934001CE01DF91CF911F910F919B +:1012D0000C94D50880E0DF91CF911F910F91089574 +:1012E0000C945E080C94660880E090E0089591E10B +:1012F000799FF001112496E6899FE00DF11D1124DC +:10130000E60FF11DEE0FFF1FE25DFE4F85919491F8 +:101310000895880F991F84569040FC0185919491FF +:101320000895880F991F845E9E4FFC0185919491CA +:1013300008950F931F93CF93DF93EC01811520E362 +:10134000920740F5811530E2930708F0C4C08B3B4B +:10135000910588F4883A910508F06BC0853A9105AB +:1013600008F05CC08430910508F056C081309105CA +:1013700009F4CCC1C8C18F3F910511F008F04CC0F1 +:10138000803F910508F0A4C0805E9109089708F499 +:1013900043C0B9C1C13080E5D80709F4A4C020F525 +:1013A000C0312FE4D20770F4C11530E4D30708F040 +:1013B00096C0C11581E3D80708F0A5C18E01112799 +:1013C000106CE5C1C115D04509F09DC10E943C21BA +:1013D0003FEF84E39CE0315080409040E1F700C053 +:1013E00000000E940D29D3C1C11527E5D20758F48A +:1013F000C03131E5D30708F022C1C43180E5D807F8 +:1014000008F47BC080C1CE0190578115904108F04F +:101410007AC18E011F7075C18E01B9C1853A9105DF +:1014200009F477C1863A910509F476C103E810E41E +:10143000AEC1883A910509F472C1893A910509F45F +:1014400071C18A3A910509F470C18B3A910509F48A +:101450006FC18C3A910509F46EC18D3A910509F47A +:101460006DC1803B910509F46CC18E3A910509F478 +:101470006BC18F3A910509F46AC1813B910509F46A +:1014800069C1823B910509F468C1833B910509F468 +:1014900067C1843B910509F466C1853B910509F458 +:1014A00065C1863B910509F464C1873B910509F448 +:1014B00063C1883B910509F462C1893B910509F438 +:1014C00061C18A3B910509F060C10AE216E45FC17F +:1014D0008C0110655CC19F700E94910959C18E01F9 +:1014E0001F70106A54C186EC92E00E94AC07809194 +:1014F00009028160809309024AC10E94BF2A8111BA +:1015000002C00E94A52A0E94DC2A90E09093620209 +:1015100080936102C23020E5D20721F480916102FC +:10152000816086C0C43030E5D30721F48091610228 +:1015300082607EC0C63080E5D80721F480916102C8 +:10154000846076C0C83090E5D90719F480916102B3 +:1015500027C0CA3020E5D20721F480916102806162 +:1015600067C0CC3030E5D30721F4809161028062FE +:101570005FC0CE3080E5D80721F48091610280649D +:1015800057C0C03190E5D90721F48091610280688D +:101590004FC0C23120E5D20729F4809161028460F6 +:1015A000886046C0C33030E5D30721F480916102E2 +:1015B0008E7F3EC0C53080E5D80721F4809161025E +:1015C0008D7F36C0C73090E5D90721F48091610244 +:1015D0008B7F2EC0C93020E5D20719F480916102BB +:1015E00026C0CB3030E5D30721F4809161028F7E95 +:1015F0001FC0CD3080E5D80721F4809161028F7D36 +:1016000017C0CF3090E5D90721F4809161028F7B1C +:101610000FC0C13120E5D20721F4809161028F779C +:1016200007C0C331D04531F4809161028B7F877F41 +:1016300080936102809161020E94E02AA8C08D2FF0 +:1016400099278F70992781309105E9F48E010370F5 +:1016500011279C0102C0220F331F0A95E2F789016E +:101660001C68CE01E4E0880F991FEA95E1F788270E +:101670009370082B192BF3E0CC0FDD1FFA95E1F7DF +:10168000C076DD272CC08230910529F41C2F00275D +:10169000016F106A7CC08330910561F4CE018370C4 +:1016A000992701E010E002C0000F111F8A95E2F7B0 +:1016B0001C680EC084309105A9F4CE01837099276F +:1016C00001E010E002C0000F111F8A95E2F71A68CE +:1016D00063E0CC0FDD1F6A95E1F7C07ED7700C2B5D +:1016E0001D2B55C08530910529F41C2F0027046F50 +:1016F000106A4DC0069709F04AC0CF71DD271C2F34 +:101700000027106244C000E010E041C001E010E09A +:101710003EC001E810E43BC002E810E438C002EE2D +:1017200014E435C009EE14E432C00AEE14E42FC00C +:1017300005EB14E42CC006EB14E429C007EB14E419 +:1017400026C00CEC14E423C00DEC14E420C003E824 +:1017500015E41DC00AE815E41AC002E915E417C033 +:1017600004E915E414C001E216E411C003E216E432 +:101770000EC004E216E40BC005E216E408C006E25F +:1017800016E405C007E216E402C000E014E4C80154 +:10179000DF91CF911F910F91089591E1799FF00111 +:1017A000112496E6899FE00DF11D1124E60FF11D2D +:1017B000EE0FFF1FE25DFE4F85919491803E9105F3 +:1017C000E0F4803C910558F58133910509F46FC030 +:1017D00048F48932910509F463C08A32910509F40D +:1017E0006DC072C089339105E9F082389105D1F05E +:1017F0008533910509F44DC067C0833E910581F1A1 +:1018000038F4803E9105B9F0823E9105D9F05CC074 +:10181000863E910561F1873E9105A1F155C00E9478 +:10182000890908952091610220FD02C021FF4CC06A +:1018300080EE90E049C08091610280FFF9CF89E39A +:1018400090E042C08091610282FF0EC080916102EF +:1018500084FF03C080E090E037C083EE90E034C0A6 +:101860008091610282FFF2CF82EE90E02DC08091E4 +:10187000610283FF0BC08091610284FDEBCF87EE94 +:1018800090E022C08091610283FFF5CF86EE90E068 +:101890001BC08091610285FF07C089E290E014C0FF +:1018A0008091610285FFF9CF85E390E00DC08091C2 +:1018B000610286FF07C08AE290E006C08091610263 +:1018C00086FFF9CF81E390E00E94990908950C9476 +:1018D0005108E82FF0E0E05FFE4F8081E82FEF70C5 +:1018E000F0E0282F22952F7081E090E0022E01C0B9 +:1018F000880F0A94EAF780A308950F931F93CF935C +:10190000DF9385B7806885BF85B7806885BFC0E1F4 +:10191000D0E001E010E0FE01E05FFE4F8081E82FA3 +:10192000EF70F0E021A182958F70A80102C0440FF2 +:10193000551F8A95E2F7242B21A38C2F0E94690C56 +:10194000219748F785E090E041E050E0FC01EF5D31 +:10195000FE4F2081E22FEF70F0E062A122952F7000 +:10196000DA0102C0AA0FBB1F2A95E2F76A2B62A315 +:10197000019760F7DF91CF911F910F910C9470093F +:10198000EF92FF920F931F93CF93DF93CCE5D1E0BB +:1019900080E1F82E01E010E095E0E92E8F2D0E9405 +:1019A000690C25E030E080E0F901EF5DFE4F9081A9 +:1019B000E92FEF70F0E040A150E092959F7002C0D7 +:1019C000559547959A95E2F740FD07C0A801022E6C +:1019D00001C0440F0A94EAF7842B2150310920F703 +:1019E0009A91981719F08883E09200018F2D0E9438 +:1019F000690CFA948FEFF812D1CF2091000127FDE6 +:101A00002CC08091090280FF10C0822F992787FD8A +:101A100090959F932F938FE093E09F938F930E94D5 +:101A200045080F900F900F900F908091000181500A +:101A30008093000187FD07C08FE99FE00197F1F7D0 +:101A400000C000000AC0ADE6B1E0ECE5F1E0829133 +:101A50008E9391E0EB34F907D1F70E94720981E08F +:101A6000DF91CF911F910F91FF90EF9008958F928A +:101A70009F92AF92BF92CF92DF92EF92FF920F931D +:101A80001F9391E001C0990F8A95EAF7B92FEDE60F +:101A9000F1E040E150E060E070E0CB0101E010E0F7 +:101AA00020E030E0A291AB2371F048015901042EEF +:101AB00004C0880C991CAA1CBB1C0A94D2F7682984 +:101AC00079298A299B294150510960F71F910F916B +:101AD000FF90EF90DF90CF90BF90AF909F908F904E +:101AE00008950F931F93CF93DF938091090280FF96 +:101AF00004C080EF92E00E94AC07C0E0D0E008EDA7 +:101B000012E08091090280FF14C08C2F0E94370DD3 +:101B1000CB010E9428289F938F93DF93CF931F932D +:101B20000F930E9445080F900F900F900F900F9009 +:101B30000F902196C630D10521F7DF91CF911F91EB +:101B40000F910895CF93DF93C5E0D0E08C2F0E94D2 +:101B5000370DCB010E940A28D80FC150B8F78D2F3E +:101B6000DF91CF9108953EB1242F209523233EB1DC +:101B7000342B4FB7F894FC01680F791FE617F7076D +:101B800089F0819198E03EB9000000C087FF2EB92E +:101B9000880F000000C000C000C02EB900C09A9598 +:101BA00091F7ECCF4FBF08952DB1242B2DB99B0198 +:101BB000220F331F260F371FB9010E94B30D87EC88 +:101BC00090E00197F1F700C00000089544E00C9404 +:101BD000D40DCF92DF92EF92FF920F931F93CF938A +:101BE000DF937C01E42FF0E0EE5DF94F4491EFEFDD +:101BF000F0E0E61BF109EE5DF94FE491E09509F4A0 +:101C000098C0042F10E08FEF90E08E1B9109809F09 +:101C1000B001819F700D909F700D1124E72FF72F59 +:101C2000CCE3D0E0C701BE010E94DB2DDC016230B5 +:101C3000710509F447C0D8F461157105A1F161304F +:101C4000710509F07AC00E1B1109CE018A1B9B0B8E +:101C5000DC010A9FC0010B9F900D1A9F900D11246B +:101C6000BE010E94DB2DCE2EC60ED42E67C064307E +:101C7000710509F44BC0B8F16530710509F05DC01C +:101C80000E1B1109BE01681B790B069FC001079F3F +:101C9000900D169F900D1124BE010E94DB2DDE2EAB +:101CA000FE2FF60F44C00E1B11090E9DC0010F9DA3 +:101CB000900D1E9D900D1124BE010E94DB2DDE2E85 +:101CC000D60E35C00E1B11090A9FC0010B9F900D47 +:101CD0001A9F900D1124BE010E94DB2DD42ECE2E12 +:101CE000FE2FF60F2BC00E1B1109BE01681B790BCE +:101CF000069FC001079F900D169F900D1124BE01F5 +:101D00000E94DB2DDE2ED60ECE2E0FC00E1B11092B +:101D10000A9FC0010B9F900D1A9F900D1124BE01C8 +:101D20000E94DB2DCE2EC60EDE2EF42F07C0C42E51 +:101D300005C0F42FD42EC42E01C0F0E0D9011196B5 +:101D4000CC921197DC921296FC93DF91CF911F9168 +:101D50000F91FF90EF90DF90CF90089587E090E093 +:101D60000C94112EAB01BC0187E090E00C942F2E57 +:101D70008091090280FF08C083EF94E09F938F93C6 +:101D80000E9445080F900F9083E08093100280918D +:101D90001102807884668F77809311028CEC809397 +:101DA00012028093130260911002709111028091CF +:101DB0001202909113020C94B20E8091090280FFDE +:101DC00008C08CED94E09F938F930E9445080F907C +:101DD0000F908091090280FF0FC0809110028170E6 +:101DE0001F928F938FEB94E09F938F930E944508EF +:101DF0000F900F900F900F908091090280FF10C0FC +:101E00008091100286958F731F928F9384EA94E0DD +:101E10009F938F930E9445080F900F900F900F9003 +:101E20008091090280FF19C090911002991F992793 +:101E3000991F20911102822F880F892B27FB2227BF +:101E400020F92F938F938AE894E09F938F930E94B9 +:101E500045080F900F900F900F908091090280FF1E +:101E60000EC0809112021F928F9380E794E09F939F +:101E70008F930E9445080F900F900F900F908091C4 +:101E8000090280FF0EC0809113021F928F9386E596 +:101E900094E09F938F930E9445080F900F900F90AE +:101EA0000F9008958091100280FF06C064E170E0F9 +:101EB00088E192E00C94E60DEAE1F2E0DF0111978F +:101EC0001C92DF0112971C921082339682E0E63555 +:101ED000F807A1F7EBCFEAE1F2E0DF0111978C936D +:101EE000DF0112976C934083339692E0E635F90751 +:101EF000A1F70C94520FCF92DF92EF92FF920F93C3 +:101F00001F93CF93DF9300D01F92CDB7DEB7F82E8B +:101F1000C92ED62EE42E00911002109111022091AC +:101F200012023091130200931402109315022093B1 +:101F30001602309317028091100280FF1EC09E018E +:101F40002F5F3F4F8F2D0E94E90D80911402F0FA10 +:101F500087F980931402F6942091150220782F2996 +:101F6000C0FA27F920931502D0921602E0921702C8 +:101F70004B8169818A810E946B0F0F900F900F90A7 +:101F8000DF91CF911F910F91FF90EF90DF90CF9055 +:101F900008950F931F93CF93DF93C82F192F062F08 +:101FA000D42F8091100280FF65C0982F9E779230C9 +:101FB00029F48C2F912F0E947B0F1AC0282F269571 +:101FC0002F739EE3920F9F73943018F4D0911302F5 +:101FD0000FC0265C2F73293058F4881F8827881F6C +:101FE00010911102C12FCC0FC82B17FB112710F92C +:101FF00080911002C0FB87F980931002C6958091F2 +:10200000110280788C2B10FB87F9809311020093CA +:102010001202D0931302609110027091110280910C +:102020001202909113020E94B20E809113021F922D +:102030008F93809112021F928F9390911002991F9B +:102040009927991F20911102822F880F892B27FB36 +:10205000222720F92F938F9382E593E09F938F930C +:102060000E9445088DB79EB708960FB6F8949EBF9C +:102070000FBE8DBFDF91CF911F910F9108952091D9 +:102080001002221F2227221F30911102432F440FDA +:10209000842F822B37FB992790F90A9668E671E026 +:1020A0000E94EF2D40911302609112020C94C90F0F +:1020B00020911002221F2227221F30911102432F4C +:1020C000440F842F822B37FB992790F98A30910592 +:1020D0001CF4825A9E4F01C00A9768E671E00E9484 +:1020E000EF2D40911302609112020C94C90F609180 +:1020F0001202862F90E08F3E910514F46F5E01C0AE +:102100006FEF80911002881F8827881F909111021D +:10211000292F220F97FB992790F940911302822BC8 +:102120000C94C90F60911202862F90E0419714F031 +:10213000615101C060E080911002881F8827881FCC +:1021400090911102292F220F97FB992790F9409126 +:102150001302822B0C94C90F40911302842F90E03C +:102160008F3E910514F44F5E01C04FEF8091100235 +:10217000881F8827881F90911102292F220F97FB13 +:10218000992790F960911202822B0C94C90F40910B +:102190001302842F90E0419714F0415101C040E0B8 +:1021A00080911002881F8827881F90911102292F83 +:1021B000220F97FB992790F960911202822B0C94C1 +:1021C000C90F80917E0181110FC081E080937E0153 +:1021D00089E0809391008FB7F89493E090939900F1 +:1021E00090ED909398008FBF089580917100826068 +:1021F000809371008091090280FF08C081E493E020 +:102200009F938F930E9445080F900F90089580919F +:1022100071008D7F809371008091090280FF08C05A +:102220008FE293E09F938F930E9445080F900F9049 +:1022300008959091100290FF4DC09178811102C0D5 +:10224000926003C0883120F09E629093100205C016 +:102250008F73880F892B8093100260911002709108 +:10226000110280911202909113020E94B20E80918D +:10227000100286958F731F928F9385EA93E09F9348 +:102280008F930E94450880911002982F9E770F909F +:102290000F900F900F90923019F40E94071107C011 +:1022A0008695825C8F73863110F40E94F5108091C0 +:1022B0001002881F8827881F90911102292F220F52 +:1022C00097FB992790F94091130260911202822B9B +:1022D0000C94C90F089580910902816080930902CE +:1022E0008FE394E09F938F930E94450881E0809351 +:1022F0007F01809109020F900F9080FF08C089E252 +:1023000094E09F938F930E9445080F900F900E9436 +:10231000BF2A811110C08091090280FF08C081E0AE +:1023200094E09F938F930E9445080F900F900E9416 +:10233000A52A0E94B80E0E94AE0E60931002709300 +:10234000110280931202909313026E77C1F4809170 +:10235000090280FF08C088EB93E09F938F930E944F +:1023600045080F900F900E94B80E0E94AE0E609329 +:1023700010027093110280931202909313020E9434 +:10238000DD0E0E94E1108091100280FF04C086954E +:102390008F730C94191108958091100286958F7394 +:1023A0008F5F883108F081E00C9419118091100240 +:1023B000982F909590FB80F9809310026091100205 +:1023C0007091110280911202909113020E94B20E3C +:1023D0008091100281701F928F9387E793E09F9303 +:1023E0008F930E944508809110020F900F900F90DC +:1023F0000F9080FF04C086958F730C9419110E9472 +:1024000007112FEF80E792E0215080409040E1F7E4 +:1024100000C000000C94520FCF93C82F80917C0114 +:1024200090917D010E94BF28EC2FF0E0E25EFA4F10 +:10243000E491F0E08E179F0710F10E94B32890936B +:102440007D0180937C01E0917B01F0E0EE5DFA4F2D +:10245000449180911002881F8827881F9091110253 +:10246000292F220F97FB992790F960911202822B56 +:102470000E947B0F80917B018F5F80937B01CF91C6 +:102480000895CF93C82F8091790190917A010E948D +:10249000BF28EC2FF0E0E55EFA4FE491F0E08E17F4 +:1024A0009F07E8F00E94B32890937A018093790106 +:1024B000409113026091120280917701909178010E +:1024C0000E947B0F8091770190917801019668E6D8 +:1024D00071E00E94DB2D9093780180937701CF917A +:1024E0000895DF92EF92FF920F931F93CF93DF93A4 +:1024F000D82E80917501909176010E94BF28ED2D14 +:10250000E695F0E0E55EFA4FE491F0E08E179F0764 +:10251000E8F10E94B328909376018093750108E159 +:1025200012E0C0E0D0E088E6E82EFF24F39480912A +:102530007301909174018C0F9D1FB7010E94DB2DD8 +:10254000980140911302609112020E94E90D629677 +:102550000D5F1F4FC83681E0D80749F70E94520F20 +:102560002091730130917401D0FE0AC0C901019617 +:10257000BE010E94DB2D909374018093730106C00D +:10258000215031093093740120937301DF91CF9171 +:102590001F910F91FF90EF90DF9008958F929F927F +:1025A000AF92BF92CF92DF92EF92FF920F931F9361 +:1025B000CF93DF93C82F80FD03C09924939402C06A +:1025C00099249A9480917101909172010E94BF2880 +:1025D000C695EC2FF0E0E85EFA4FE491F0E08E173C +:1025E0009F0708F469C00E94B328909372018093FA +:1025F000710128E1E22E22E0F22E0AE112E0C0E0B1 +:10260000D0E037E0A32EB12CF80131971082F7010A +:102610001082F801108297E0C92ED12C812C809174 +:102620007001880D87FD8C5E992787FD9095C817EE +:10263000D907E9F4209113022C9DC0012D9D900D26 +:102640001124B5010E94EF2D462F80911002881FA2 +:102650008827881F90911102592F550F97FB9927B2 +:1026600090F9970160911202852B0E94E90D890C67 +:10267000F1E0CF1AD108C114D10489F6219683E084 +:10268000E80EF11C0D5F1F4FC431D10509F0BCCF1E +:102690000E94520F8091700191E0991206C0811141 +:1026A00002C083E107C0815005C090E00196BE01E1 +:1026B0000E94EF2D80937001DF91CF911F910F91B8 +:1026C000FF90EF90DF90CF90BF90AF909F908F9052 +:1026D00008959F92AF92BF92CF92DF92EF92FF92B6 +:1026E0000F931F93CF93DF93CDB7DEB7EC970FB661 +:1026F000F894DEBF0FBECDBF182F80916E01909170 +:102700006F010E94BF28E12FF0E0EB5EFA4FE491E9 +:10271000F0E08E179F0708F492C00E94B3289093B0 +:102720006F0180936E018E010F5F1F4F5E0183E08A +:10273000A80EB11CE12CF12C6801F5013197108233 +:10274000F8011082F5011082912C90910101809185 +:102750006D01999E800D112487FD04C084311CF009 +:1027600083E101C080E0992787FD9095E816F9067E +:10277000A1F480911002881F8827881F9091110270 +:10278000592F550F97FB992790F998014091130203 +:1027900060911202852B0E94E90D9394F7E09F123D +:1027A000D4CF8FEFE81AF80A0D5F1F4FE3E0AE0EAB +:1027B000B11CF4E1EF16F10409F0BFCF2AE132E0D9 +:1027C00009E010E054E1E52EF12CC801B7010E94A8 +:1027D000EF2DD9011197FC01EE0FFF1FE80FF91F34 +:1027E000EC0DFD1D81818C93D901129780818C9312 +:1027F0008281F90180830F5F1F4F2D5F3F4F0D31A5 +:10280000110519F70E94520F9091010180916D01FD +:10281000913049F48A3F2CF489EF80936D018FEF5A +:1028200008C081500AC08B313CF08AE180936D0171 +:1028300081E08093010103C08F5F80936D01EC966E +:102840000FB6F894DEBF0FBECDBFDF91CF911F91C1 +:102850000F91FF90EF90DF90CF90BF90AF909F903F +:1028600008951F920F920FB60F9211242F933F934A +:102870004F935F936F937F938F939F93AF93BF9388 +:10288000EF93FF938091100286958F739EE3980FCC +:102890009F73943020F482500E940C1223C09AE35C +:1028A000980F9F73933020F486500E9441121AC0F3 +:1028B00097E3980F9F73963020F489500E9471120D +:1028C00011C091E3980F9F73963020F48F500E94AF +:1028D000CE1208C09BE2980F9F73933018F4855175 +:1028E0000E946913FF91EF91BF91AF919F918F91DA +:1028F0007F916F915F914F913F912F910F900FBEFC +:102900000F901F90189580919301089508959FB797 +:10291000F894109282019FBF90915802943009F070 +:1029200058C09091E9009F702091EC0020FF02C0F8 +:1029300020E801C020E0292B93E09093E9009091DA +:10294000EB0090FF43C09091EE0097FF3FC0909145 +:102950008001992321F09091E80095FF37C01092F3 +:10296000800196E03091E80035FD15C030915802A5 +:10297000343061F53091EB0035FD28C0915021F4E1 +:1029800081E08093800122C0EFE9FFE03197F1F709 +:1029900000C00000E7CF8093F1008091E80085FD42 +:1029A0000AC08091E80080FFFCCF8091E8008E771C +:1029B0008093E80006C08FB7F89491E0909382016D +:1029C0008FBF2F702093E90080E008952F7020932F +:1029D000E9008FEF0895CF93DF9300D01F92CDB71A +:1029E000DEB720915802243021F523E029839B8310 +:1029F0008A8382E08093E9008FEF9091E800815014 +:102A000095FD06C095ED9A95F1F700008111F5CF7F +:102A10008091E80085FF0DC040E050E063E070E089 +:102A2000CE0101960E9483178091E8008E778093F3 +:102A3000E8000F900F900F90DF91CF910895CF9302 +:102A4000DF9300D01F92CDB7DEB72091580224301B +:102A500019F522E029839B838A832093E9008FEF75 +:102A60009091E800815095FD06C095ED9A95F1F79B +:102A700000008111F5CF8091E80085FF0DC040E096 +:102A800050E063E070E0CE0101960E9483178091D0 +:102A9000E8008E778093E8000F900F900F90DF9101 +:102AA000CF910895CF93DF93EC0180915802843049 +:102AB00009F046C090910C019923D9F090910D0135 +:102AC0009923B9F08093E9008FEF9091E80081504D +:102AD00095FD06C095E19A95F1F700008111F5CFBB +:102AE0008091E80085FF2CC040E050E060E170E09C +:102AF00017C081E08093E9008FEF9091E80081504A +:102B000095FD06C095ED9A95F1F700008111F5CF7E +:102B10008091E80085FF14C040E050E068E070E07C +:102B2000CE010E9483178091E8008E778093E800A1 +:102B300080E1FE01A3E8B1E001900D928A95E1F7F2 +:102B4000DF91CF91089587E497E00E94AC078091D0 +:102B50005702811109C00E9415190E9472198091B3 +:102B6000E20084608093E200089583E497E00E948D +:102B7000AC071092570208958FE397E00C94AC07CE +:102B80008BE397E00C94AC0787E397E00E94AC07D7 +:102B90000C947B28809181018F5F8093810162E397 +:102BA0000E94CF2D911135C0109281018091820138 +:102BB000882379F180915802843049F58091E900A9 +:102BC0008F709091EC0090FF02C090E801C090E0FF +:102BD000982B83E08093E9008091EB0080FF14C084 +:102BE0008091EE0087FF10C08091E80085FF03C050 +:102BF0001092F100F9CF8091E80080FF05C080912C +:102C0000E8008E778093E8009F709093E90010921F +:102C10008201089542E061EC81E00E948F1842E059 +:102C200061EC82E00E948F1842E261EC83E00E9436 +:102C30008F1842E161EC84E00C948F1880915A0265 +:102C4000833009F455C030F4813071F0823009F4DA +:102C50008EC008958A3009F47AC08B3009F460C0C0 +:102C6000893009F09CC020C080915902813A09F056 +:102C700096C08091E800877F8093E80080915D0294 +:102C800090915E02892B21F060E080E090E003C02B +:102C900060E183E891E070E00E94CC178091E80049 +:102CA0008B778093E800089580915902813209F072 +:102CB00076C080915D0290915E02009719F00397B3 +:102CC00009F06DC08091E800877F8093E8008091D3 +:102CD000E80082FD05C0809158028111F8CF5FC0E5 +:102CE0008091F100809393018091E8008B7753C02D +:102CF00080915902813A09F052C080915D02909111 +:102D00005E02892B09F04BC08091E800877F809399 +:102D1000E8008091E80080FFFCCF80910C0136C074 +:102D2000809159028132D9F580915D0290915E02C5 +:102D3000892BA9F58091E800877F8093E8000E94A5 +:102D4000C41880915B0280930C010C943C2180910B +:102D50005902813221F58091E800877F8093E80055 +:102D60000E94C41880915C02809394010895809120 +:102D70005902813AA1F48091E800877F8093E800AE +:102D80008091E80080FFFCCF809194018093F10056 +:102D90008091E8008E778093E8000C94C418089521 +:102DA00084B7877F84BF88E10FB6F8948093600072 +:102DB000109260000FBE80E8809361001092610065 +:102DC0000E948C1C0E9415190E9472198091E200C9 +:102DD00084608093E20087E894E10E94052878945B +:102DE0000E94EC1B0E948E1C82E091E00E94091C54 +:102DF00086E297E00E94AC0780915802853089F402 +:102E000082E297E00E94AC070E944228809156021D +:102E1000882391F30E946D28882371F30E946D1717 +:102E2000EBCF0E94B41CE8CF292F33272330310584 +:102E3000A9F06CF42130310509F442C0223031058B +:102E400009F043C084E790E023E837E042C0213234 +:102E50003105C9F02232310519F137C09927813087 +:102E6000910541F08230910541F0892B71F5EFE732 +:102E7000F7E005C0EDE6F7E002C0EBE4F7E084918F +:102E800090E09F0126C0643000F5E62FF0E0EE0FE1 +:102E9000FF1FED5CFE4F2081318189E090E019C079 +:102EA000643098F4E62FF0E0DF01AA0FBB1FA55DA8 +:102EB000BE4F2D913C91E95DFE4F808190E009C0AD +:102EC00082E190E027EF37E004C080E090E020E06E +:102ED00030E0FA0131832083089580E189BD82E1E9 +:102EE00089BD09B400FEFDCF8091D8008F7D80930D +:102EF000D8008091E00082608093E0008091E00043 +:102F000081FDFCCF0895CF92DF92EF92FF920F9355 +:102F10001F93CF93DF937C018B01EA010E94E51898 +:102F2000811131C0209731F088819981081B190BDC +:102F3000E80EF91EC12CD12C0115110519F1809153 +:102F4000E80085FD14C08091E8008E778093E8004A +:102F5000209741F0888199818C0D9D1D99838883EC +:102F600085E011C00E94E518882331F30CC0F701F9 +:102F700081917F018093F10001501109FFEFCF1A79 +:102F8000DF0ADACF80E0DF91CF911F910F91FF90A0 +:102F9000EF90DF90CF90089520915F023091600212 +:102FA0002617370748F06115710539F42091E800BC +:102FB0002E772093E80001C0B901FC0120E06115E3 +:102FC0007105B9F180915802882309F440C0853019 +:102FD00009F43FC08091E80083FD3DC08091E80086 +:102FE00082FF06C08091E80082FF26C080E008953D +:102FF0008091E80080FFE3CF2091F3008091F20000 +:1030000090E0922B6115710551F08830910538F4EC +:1030100021912093F100615071090196F3CF21E0D5 +:10302000089709F020E08091E8008E778093E8000F +:10303000C6CF2111C7CFD6CF80915802882339F04F +:10304000853039F08091E80083FFCCCF04C082E066 +:10305000089583E0089581E0089520915F02309102 +:1030600060022617370748F06115710539F4209181 +:10307000E8002E772093E80001C0B901FC0120E0B0 +:1030800061157105C1F180915802882309F441C08E +:10309000853009F440C08091E80083FD3EC08091F6 +:1030A000E80082FF06C08091E80082FF27C080E030 +:1030B00008958091E80080FFE3CF2091F300809194 +:1030C000F20090E0922B6115710559F0883091055E +:1030D00040F424912093F1003196615071090196DA +:1030E000F2CF21E0089709F020E08091E8008E7788 +:1030F0008093E800C5CF2111C6CFD5CF809158026B +:10310000882339F0853039F08091E80083FFCBCFF8 +:1031100004C082E0089583E0089581E00895982F27 +:10312000973058F59093E900981739F07091EC00BA +:103130002091ED005091F00003C0242F762F50E035 +:1031400021FF19C03091EB003E7F3093EB003091AE +:10315000ED003D7F3093ED003091EB003160309316 +:10316000EB007093EC002093ED005093F000209161 +:10317000EE0027FF07C09F5FD3CF8F708093E900D9 +:1031800081E0089580E008958091590287FD05C08F +:103190008091E80080FF0EC012C08091E80082FD9F +:1031A00005C0809158028111F8CF08958091E80000 +:1031B0008B7708C0809158028111EACF08958091E1 +:1031C000E8008E778093E80008958091E400909164 +:1031D000E50045E62091EC0020FF21C02091E800A9 +:1031E00020FD21C020915802222389F0253089F04A +:1031F0002091EB0025FD0FC02091E4003091E50007 +:103200002817390739F3415041F0C901E3CF82E073 +:10321000089583E0089581E0089584E00895209161 +:10322000E80022FFDFCF80E008950E9483190E940A +:103230008B19E0EEF0E0808181608083E8EDF0E0C2 +:1032400080818F77808319BCA7EDB0E08C918E7F51 +:103250008C9380818F7E80831092570208950F9304 +:103260001F93CF93DF930E9483190E948B19C8ED9F +:10327000D0E088818F77888388818068888388817F +:103280008F7D888319BC10925802109254021092BC +:1032900056021092550200EE10E0F80180818B7FFB +:1032A000808388818160888342E060E080E00E94C2 +:1032B0008F18E1EEF0E080818E7F8083E2EEF0E017 +:1032C000808181608083808188608083F801808133 +:1032D0008E7F8083888180618883DF91CF911F9169 +:1032E0000F910895E8EDF0E080818F7E8083E7ED17 +:1032F000F0E080818160808384E082BF81E0809300 +:1033000057020C942F19E8EDF0E080818E7F8083C6 +:103310001092E20008951092DA001092E1000895F0 +:103320001F920F920FB60F9211242F933F934F933A +:103330005F936F937F938F939F93AF93BF93EF931D +:10334000FF938091E10082FF0BC08091E20082FF39 +:1033500007C08091E1008B7F8093E1000E94CA1535 +:103360008091DA0080FF1FC08091D80080FF1BC0D1 +:103370008091DA008E7F8093DA008091D90080FFFF +:103380000DC080E189BD82E189BD09B400FEFDCF99 +:1033900081E0809358020E94A31505C019BC1092C9 +:1033A00058020E94B5158091E10080FF19C08091FC +:1033B000E20080FF15C08091E2008E7F8093E200E2 +:1033C0008091E20080618093E2008091D800806269 +:1033D0008093D80019BC85E0809358020E94C015E4 +:1033E0008091E10084FF30C08091E20084FF2CC016 +:1033F00080E189BD82E189BD09B400FEFDCF8091E5 +:10340000D8008F7D8093D8008091E1008F7E8093DB +:10341000E1008091E2008F7E8093E2008091E200E3 +:1034200081608093E20080915402882311F084E04F +:1034300007C08091E30087FF02C083E001C081E004 +:10344000809358020E94C4158091E10083FF29C037 +:103450008091E20083FF25C08091E100877F809307 +:10346000E10082E080935802109254028091E100C2 +:103470008E7F8093E1008091E2008E7F8093E20056 +:103480008091E20080618093E20042E060E080E0B1 +:103490000E948F188091F00088608093F0000E9455 +:1034A000BC15FF91EF91BF91AF919F918F917F914B +:1034B0006F915F914F913F912F910F900FBE0F90A1 +:1034C0001F9018951F920F920FB60F9211242F93F1 +:1034D0003F934F935F936F937F938F939F93AF939C +:1034E000BF93CF93EF93FF93C091E900CF7080918A +:1034F000EC001092E9008091F000877F8093F0004B +:1035000078940E949E1A1092E9008091F0008860E1 +:103510008093F000C093E900FF91EF91CF91BF91AC +:10352000AF919F918F917F916F915F914F913F915B +:103530002F910F900FBE0F901F9018951F93CF9350 +:10354000DF93CDB7DEB7AA970FB6F894DEBF0FBEF4 +:10355000CDBFE9E5F2E08091F100819322E0E13610 +:10356000F207C9F70E941E168091E80083FF1CC174 +:103570002091590230915A02832F90E08A309105B0 +:1035800008F012C1FC01E15AFF4F0C94032E2038C1 +:1035900081F0223809F008C180915D028F7080931C +:1035A000E9008091EB0085FB882780F91092E90003 +:1035B00006C08091550290915602911182609091BF +:1035C000E800977F9093E8008093F1001092F1005B +:1035D000C5C0822F8D7F09F0E7C0222319F0223069 +:1035E00061F0E2C080915B02813009F0DDC03330D0 +:1035F00009F080E08093560228C080915B0281111F +:1036000024C020915D022F7009F4CEC02093E90000 +:103610008091EB0080FF19C08091EB00333011F4F2 +:10362000806211C080618093EB0081E090E0022E07 +:1036300001C0880F0A94EAF78093EA001092EA002A +:103640008091EB0088608093EB001092E9008091FC +:10365000E800877F86C02111A7C010915B021F7709 +:103660008091E3008078812B8093E3008091E800D3 +:10367000877F8093E8000E94C4188091E80080FF53 +:10368000FCCF8091E30080688093E300112311F068 +:1036900083E001C082E08093580286C02058223027 +:1036A00008F082C080915B0290915C028C3D23E027 +:1036B000920779F583E08A838AE289834FB7F89489 +:1036C000DE01139620E03EE051E2E32FF0E050935C +:1036D0005700E49120FF03C0E295EF703F5FEF7069 +:1036E0008E2F90E0EA3010F0C79601C0C0968D93FF +:1036F0009D932F5F243149F74FBF8091E800877F6A +:103700008093E8006AE270E0CE0101960E94CC1737 +:1037100014C0AE014F5F5F4F60915D020E941417AD +:10372000009709F441C02091E800277F2093E8002A +:10373000BC0189819A810E942D188091E8008B77C5 +:103740008093E80031C0203879F58091E800877FC8 +:103750008093E800809154028093F1008091E8000A +:103760008E778093E8000E94C4181EC021111CC0EF +:1037700090915B029230C0F48091E800877F809343 +:10378000E800909354020E94C41880915402811161 +:1037900004C08091E30087FF02C084E001C081E0A3 +:1037A000809358020E940A168091E80083FF0AC0A5 +:1037B0008091E800877F8093E8008091EB00806231 +:1037C0008093EB00AA960FB6F894DEBF0FBECDBF74 +:1037D000DF91CF911F910895CF9380915802882354 +:1037E000B1F08091E9008F709091EC0090FF02C0E1 +:1037F00090E801C090E0C92FC82B1092E900809199 +:10380000E80083FD0E949E1ACF70C093E900CF911B +:10381000089590939A01809399010895E0919901F8 +:10382000F0919A01309721F00190F081E02D0994F8 +:1038300080E00895FF920F931F93CF93DF938C0145 +:10384000E0919901F0919A01309799F10280F3810A +:10385000E02D09958091090282FF2BC080FF04C0F2 +:1038600080EE98E00E94AC07E80180E1F82E0AEDB6 +:1038700018E08091090280FF0BC088811F928F930E +:103880001F930F930E9445080F900F900F900F9079 +:10389000FA942196F110EDCF8091090280FF09C0C2 +:1038A00088ED98E0DF91CF911F910F91FF900C94DC +:1038B000AC07DF91CF911F910F91FF900895209158 +:1038C0009701309198018217930771F090939801B6 +:1038D00080939701E0919901F0919A01309721F03E +:1038E0000680F781E02D099408952091950130918B +:1038F00096018217930771F090939601809395013A +:10390000E0919901F0919A01309721F00084F185BE +:10391000E02D0994089508950C948B1C0E94AA2808 +:103920000E947D0C0E9472290C946B11CF93DF933F +:103930001F92CDB7DEB79091090292FF10C090FFA1 +:103940000EC01F928F9322EF38E03F932F9389830D +:103950000E9445080F900F900F900F9089810F9053 +:10396000DF91CF910C94670C3F924F925F926F92D0 +:103970007F928F929F92AF92BF92CF92DF92EF92FF +:10398000FF920F931F93CF93DF93CDB7DEB72B97A3 +:103990000FB6F894DEBF0FBECDBF0E94C00C84EB03 +:1039A00091E09F838E8305E010E0412C512C320181 +:1039B0004394302E802F0E94370DEE81FF81F290CC +:1039C000E290D290C290FF83EE83C626D726E826E7 +:1039D000F926C114D104E104F104A1F40150110944 +:1039E00040F78FEF89838A831B820E94B32881600E +:1039F000782F9D838C8349815A816B818D810E94B0 +:103A0000941D57C02091090221FF0AC06887798759 +:103A10008A879B870E94710D9B858A857985688539 +:103A2000E0E1F0E0530142010E2E04C0880C991C25 +:103A3000AA1CBB1C0A94D2F7A50194012C213D219C +:103A40004E215F21232B242B252B79F1E9833A8208 +:103A5000DC01CB0188219921AA21BB2121E0892BFE +:103A60008A2B8B2B09F420E02B830E94B3288160E2 +:103A7000782F9D838C8349815A816B818D810E942F +:103A8000941DF801EE0FFF1FEE0FFF1FE456FE4FCF +:103A900080819181A281B38188259925AA25BB25A2 +:103AA00080839183A283B38304C0319708F0BACF97 +:103AB00095CF10919B010E940E1C1817E9F00E94EF +:103AC0000E1C80939B012B960FB6F894DEBF0FBEA1 +:103AD000CDBFDF91CF911F910F91FF90EF90DF90BD +:103AE000CF90BF90AF909F908F907F906F905F909E +:103AF0004F903F900C94961C2B960FB6F894DEBF17 +:103B00000FBECDBFDF91CF911F910F91FF90EF902E +:103B1000DF90CF90BF90AF909F908F907F906F90ED +:103B20005F904F903F900895CF93DF93CDB7DEB76E +:103B30002B970FB6F894DEBF0FBECDBF4F835887CB +:103B400069877A878B87DE01119686E0FD011192E5 +:103B50008A95E9F785E0FE01379601900D928A95E6 +:103B6000E1F749815A816B817C818D819E810E9420 +:103B70000C242B960FB6F894DEBF0FBECDBFDF919D +:103B8000CF910895CF93C82F882309F4C1C08238FC +:103B900059F40E940E1C81FDBBC089E30E94E726F8 +:103BA0000E94D62789E30CC0833879F40E940E1C4A +:103BB00080FDAEC083E50E94E7260E94D62783E5FC +:103BC0000E943827CF910C94D627843859F40E944C +:103BD0000E1C82FD9DC087E40E94E7260E94D62726 +:103BE00087E4EECF8CEF8C0F813A48F48C2F0E9443 +:103BF000832D81118DC08C2F0E94E726E3CF80E2B8 +:103C00008C0F883048F4C77081E001C0880FCA95D6 +:103C1000EAF70E948D27D6CF8BE58C0F833078F49E +:103C2000C53A29F0C63A31F482E890E005C081E84F +:103C300090E002C083E890E0CF910C945F1C88E58F +:103C40008C0F833108F064C0C83A39F1C93A41F1A8 +:103C5000CA3A49F1CB3A51F1CC3A59F1CD3A61F136 +:103C6000C03B69F1CE3A71F1CF3A79F1C13B81F1B4 +:103C7000C23B89F1C33B91F1C43B99F1C53BA1F132 +:103C8000C63BA9F1C73BB1F1C83BB9F1C93BC1F192 +:103C9000CA3BC9F58AE292E038C082EE90E035C0B6 +:103CA00089EE90E032C08AEE90E02FC085EB90E084 +:103CB0002CC086EB90E029C087EB90E026C08CEC0E +:103CC00090E023C08DEC90E020C083E891E01DC01F +:103CD0008AE891E01AC082E991E017C084E991E096 +:103CE00014C081E292E011C083E292E00EC084E24F +:103CF00092E00BC085E292E008C086E292E005C047 +:103D000087E292E002C080E090E0CF910C94751CB5 +:103D1000CF910895882309F44BC0823859F40E944A +:103D20000E1C81FF45C089E30E94E7260E94D6272A +:103D300089E30CC0833871F40E940E1C80FF38C0E8 +:103D400083E50E94E7260E94D62783E50E94382754 +:103D50000C94D627843859F40E940E1C82FF28C088 +:103D600087E40E94E7260E94D62787E4EFCF9CEFE6 +:103D7000980F913A58F390E2980F983050F487706A +:103D800091E001C0990F8A95EAF7892F0E94932745 +:103D9000DFCF9BE5980F933020F480E090E00C9407 +:103DA0005F1C885A833120F480E090E00C94751CED +:103DB0000895882321F00E948D270C94D62708951A +:103DC000882321F00E9493270C94D62708958F9280 +:103DD0009F92AF92BF92CF92DF92EF92FF920F939A +:103DE0001F93CF93DF931F92CDB7DEB74C01A62E62 +:103DF000472FFC01E580E2948FE0E822F280FF206B +:103E000021F079830E94AA27498149830E94E026F4 +:103E10004981882381F0FF2071F080E28A0D88308B +:103E200050F082E00E94C9260E94E026BB24B39491 +:103E3000B826498101C0B12CE42FE295EF70F0E083 +:103E4000E759FF4F0C94032E842F807F142F1F708F +:103E5000882311F01295107FFF2089F0112309F4B7 +:103E60008AC180E28A0D883020F4812F0E948D273C +:103E700003C0812F0E949D270E94D6277CC18A2DD6 +:103E80000E948A1E112309F48DC180E28A0D8830B8 +:103E900020F4812F0E94932703C0812F0E94A32723 +:103EA0000E94D6277FC1242F207F842F8F7020323D +:103EB00011F08295807FAA2021F0F1E0AF16B1F0D9 +:103EC00021C0FF2041F0EE2039F191E0E91224C039 +:103ED0000E94BD2767C1EE2021F0E1E0EE1609F453 +:103EE00061C189830E94C027898100C1FF2029F018 +:103EF000F5E0FE1508F456C10FC094E09E1508F4D5 +:103F000051C1F4C0FF2059F0EE2031F0F401958149 +:103F100090FF31C19F7095830E94D91E43C1EE204E +:103F200009F4E4C02EC1242F26952695237030E095 +:103F30002115310521F02130310561F033C1FF2019 +:103F400021F08A2D942F937002C080E090E00E94AF +:103F50005F1C28C1FF2021F08A2D942F937002C08E +:103F600080E090E00E94751C1DC1842F837009F0D1 +:103F70004EC0F11017C12A2D229526952770220FC9 +:103F8000220F8A2D8F70C82ED12CE12CF12C022EFD +:103F900004C0CC0CDD1CEE1CFF1C0A94D2F7A4FE5E +:103FA00010C06FE070E080E090E004C0660F771F03 +:103FB000881F991F2A95D2F76095709580959095E6 +:103FC00003C060E070E0CB01242F26952695237076 +:103FD00030E02230310569F02330310589F06C2959 +:103FE0007D298E299F292130310571F00E945E259F +:103FF000D9C06C297D298E299F290E947825D2C09D +:104000000E945E25C701B6010E944425CBC0FF2057 +:1040100019F0842F817001C08695882309F4C2C0ED +:104020002A2D229526952770220F220F8A2D8F7018 +:10403000C82ED12CE12CF12C022E04C0CC0CDD1C9E +:10404000EE1CFF1C0A94D2F7A4FE10C06FE070E0D3 +:1040500080E090E004C0660F771F881F991F2A95A3 +:10406000D2F7609570958095909503C060E070E000 +:10407000CB01242F26952695237030E02230310580 +:1040800069F02330310589F06C297D298E299F291B +:104090002130310571F00E94322684C06C297D29BF +:1040A0008E299F290E944C267DC00E943226C7017E +:1040B000B6010E94182676C00A2D10E0F801E05ED5 +:1040C000F109E531F10508F052C0E758FF4F0C94B3 +:1040D000032E1A2D1F70842F8F71FF2021F00E9454 +:1040E000B125812F19CF0E94D225812F0E94E01E79 +:1040F00059C0FF2049F0F4E0FE1508F453C0842FA6 +:104100008F710E94F7254EC085E08E1508F44AC0D5 +:10411000F6CFFF2039F0842F8F710E94B12542C065 +:10412000FF20C9F3842F8F710E94D2253BC0FF204E +:1041300029F0842F8F710E949C2534C00E94922503 +:1041400031C0FF2051F0142F1F71812F0E94B12523 +:1041500063E0812F0E94C02625C081E00E94C9260D +:1041600091E09E15F8F482E00E94C9261BC0FF2052 +:1041700031F0EE2081F28A2D0E94C21D13C0EE2084 +:1041800089F28A2D0E948A1E0DC04F706A2DC401CB +:104190000E9474090E94B92405C04F706A2DC401A1 +:1041A0000E946D08BB20F1F00E94BC2680FD1AC061 +:1041B000F40112820E94B6260E94B125C4010E9419 +:1041C00000210E94B6260F90DF91CF911F910F9191 +:1041D000FF90EF90DF90CF90BF90AF909F908F9027 +:1041E0000C94D2250F90DF91CF911F910F91FF90EA +:1041F000EF90DF90CF90BF90AF909F908F900895F9 +:104200000F931F93CF93DF93EC01288139818B812A +:104210009C81892B31F03F3F11F080E003C02F3F9C +:10422000E1F781E0811113C0CE010E94DC088823F0 +:1042300071F0688179818A810E94B2268C010E9486 +:1042400066260E943925B801CE010E94E71EDF9143 +:10425000CF911F910F9108950E94AA270E94BA271B +:104260000E947C270E94D62780E090E00E945F1C7D +:1042700080E090E00C94751C0E949A270C942C21ED +:104280000E94A726292F22952F7030E02C3031056F +:104290004CF42A3031056CF42250310922303105BA +:1042A000B0F407C02C30310571F02F30310559F0D2 +:1042B0000EC0803F31F018F4803E48F402C0843FC5 +:1042C00031F481E0089593FB882780F9089580E018 +:1042D0000895CF93DF9300D000D01F92CDB7DEB703 +:1042E0000F900F900F900F900F90DF91CF91089546 +:1042F000CF93DF9300D000D000D0CDB7DEB72696A5 +:104300000FB6F894DEBF0FBECDBFDF91CF910895F9 +:104310001F93CF93DF93C091B40116E08091B50154 +:10432000C81799F0D0E01C9FF0011D9FF00D1124DB +:10433000EA54FE4F4081518162817381848195816D +:104340000E9478212196C770E9CFDF91CF911F910C +:1043500008954091E6015091E7016091E801709164 +:10436000E9018091EA019091EB010C947821CF93BF +:104370008091EB0182958F7009F05FC08091E80118 +:10438000882309F45AC02091B401A091B50160912D +:10439000E6017091E7018091E9019091EA0131E035 +:1043A0006F3F09F030E0B32FC6E02A1709F445C08B +:1043B000009721F07F3F21F44B2F03C041E001C063 +:1043C00040E030E040FD35C0C29FF001C39FF00DDA +:1043D0001124EA54FE4F418174132BC040816413B1 +:1043E00028C04281411125C0438154814817590793 +:1043F00010F441505109481B590B483C5105C8F471 +:104400008091EB018F7080618093EB0186E0829F49 +:10441000F001839FF00D1124E554FE4F80818F70D1 +:104420008061808386EE91E00E940021CF910C9400 +:1044300088212F5F3F4F2770B8CFCF910895CF923B +:10444000DF92EF92FF920F931F93CF93DF93CDB73D +:10445000DEB762970FB6F894DEBF0FBECDBF8C01FA +:1044600085E0F801DE011D9601900D928A95E1F735 +:10447000D8014C9111965C91119712966C911297FC +:104480001396ED90FC9014977091E601E091E7018E +:104490002091E9013091EA012115310531F0EF3F1A +:1044A00031F481E07F3F19F403C081E001C080E076 +:1044B000B82FB170CB2E80FD6CC1D090E801DD200B +:1044C00009F4F5C0F091EB01E216F30638F0C701EC +:1044D000821B930B883C910548F09BC0209530953A +:1044E0002E0D3F1D283C310508F093C08F2F807F93 +:1044F00009F052C0E51314C0741312C0D62E611116 +:104500000FC0FF70F061F093EB010E94A92186EECD +:1045100091E00E9400218091EB01F80185836CC13C +:10452000EF2831F05F3F31F481E04F3F19F403C0D1 +:1045300081E001C080E080FD03C081E0862701C0EA +:1045400080E0F82FF170FF2E80FF1CC08091B40135 +:104550002091B50136E0821709F428C190E0389F18 +:10456000F001399FF00D1124EA54FE4F7181571369 +:1045700006C07081471303C07281671303C00196A0 +:104580008770E9CFD62E662309F436C18091EB01FE +:1045900081608093EB0153C0E51308C0741306C01B +:1045A000611104C0D8011596FC93AEC04D875E879B +:1045B0008D859E856A8B0E9440216A89882329F116 +:1045C000D62E662311F12091EB01822F82958F70F8 +:1045D00090E002970CF460C08091E6019091E701B1 +:1045E00098878F831986FB86EA862C87CE010796EB +:1045F00051C0E51731F14D875E878D859E856A8BA9 +:104600000E9440216A8981112EC0C8010E940021A8 +:10461000A4C08F2F807F69F77E2DF98AE88A898967 +:104620000E94692186EE91E00E940021E6EEF1E011 +:1046300086E0DF011D928A95E9F70E94A921D12C1D +:10464000DBC07413D8CF6111D6CFD8011596FC9377 +:10465000C8010E940021E6EEF1E086E0DF011D9234 +:104660008A95E9F7C9C0D62E662379F22091EB012D +:10467000822F82958F7090E0029774F08091E6010E +:104680009091E7019A8389831B82FD82EC822E83BD +:10469000CE0101960E94002186E0F801A6EEB1E06D +:1046A00001900D928A95E1F70E94B7216FC0E21642 +:1046B000F30628F0C701821B930B9C0104C02095D0 +:1046C00030952E0D3F1D283C310508F052C0D62EE6 +:1046D000662309F49ACFE5132CC074132AC0809185 +:1046E000EB0180FD1DC0982F92959F70C9F0D801F5 +:1046F00015968C9315979F3039F09F5F9295907F18 +:104700008F70892B15968C93C8010E94002186E03A +:10471000F801A6EEB1E001900D928A95E1F736C05E +:1047200086E0F801A6EEB1E001900D928A95E1F7DE +:1047300063C04D875E878D859E850E9440218823BA +:1047400079F086E0F801A6EEB1E001900D928A952D +:10475000E1F70E94B7210E94A921DD24D3944CC027 +:104760008091EB0181608093EB01C8010E940021E0 +:1047700043C07E2DF98AE88A89890E946921E6EE84 +:10478000F1E086E0DF011D928A95E9F70E94A921F8 +:1047900033C0662309F439CF4D875E878D859E85AA +:1047A0000E944021882309F430CFCBCF4D875E870C +:1047B0008D859E850E94A726292F22952F7030E097 +:1047C000223031052CF49F7041F0811106C00CC0DD +:1047D000243031052CF49F7049F4805E883020F03D +:1047E000C8010E940021CF2CDC2C06C0D8011596F0 +:1047F0009C91907F91F7F8CF8D2D62960FB6F8942B +:10480000DEBF0FBECDBFDF91CF911F910F91FF9003 +:10481000EF90DF90CF9008951F93CF93DF93CDB7A4 +:10482000DEB72C970FB6F894DEBF0FBECDBF4F8317 +:10483000588769877A878B879C87CE0107960E9465 +:104840001F228823C1F02F8138858A859B85892B7B +:1048500031F03F3F11F080E003C02F3FE1F781E0EE +:10486000811147C04F81588569857A858B859C85E4 +:104870000E9478213EC086E0FE013796DE01119647 +:1048800001900D928A95E1F7FF81E8854A855B8565 +:104890004115510531F0EF3F31F481E0FF3F19F44C +:1048A00003C081E001C080E080FD23C02091B501FC +:1048B00030E0C9010196877099276091B40170E0DA +:1048C00086179707F1F1F983EA835D834C8396E0BD +:1048D000929FD001939FB00D1124AA54BE4FFE01A8 +:1048E000319601900D929A95E1F78093B5010E945F +:1048F000882116E08091B4019091B501891779F172 +:10490000189FC00111248A549E4F0E941F228823A1 +:1049100031F1E091B4011E9FF0011124EA54FE4FE1 +:104920004081518162817381848195810E947821C7 +:104930008091B40190E00196877099278093B4012B +:10494000D9CF0E943C211092B5011092B401E6EE3D +:10495000F1E086E0DF011D928A95E9F7CACF2C9637 +:104960000FB6F894DEBF0FBECDBFDF91CF911F9180 +:104970000895EF92FF920F931F93CF93DF93FC0163 +:10498000009709F46FC0F12CEE24E394EF01219617 +:104990008491843740F4843008F055C0813081F030 +:1049A000823021F15FC0853709F447C0C0F19CE730 +:1049B000980F903708F056C08F770E948A1E45C026 +:1049C0008F010E5F1F4FFE01849190E2980F983087 +:1049D00050F48770FE2D01C0FF0F8A95EAF78F2FE4 +:1049E0000E94AD2715C00E94C21D14C08F010E5F2A +:1049F0001F4FFE01849190E2980F983068F4877001 +:104A0000FE2D01C0FF0F8A95EAF78F2F0E94B32772 +:104A10000E94D627E80119C00E948A1EFBCFCF0151 +:104A20000296FE01C491CC2361F0EFE9FFE03197DB +:104A3000F1F700C00000C150F6CFCF010296FE0191 +:104A4000F490EC0102C00E94C21D8F2D882341F01A +:104A5000EFE9FFE03197F1F700C000008150F6CF99 +:104A6000FE0194CFDF91CF911F910F91FF90EF90B6 +:104A7000089508956093F0017093F1018093F2011D +:104A80009093F3010C942C210F931F930091F0014C +:104A90001091F1012091F2013091F301062B172BB7 +:104AA000282B392B0093F0011093F1012093F20190 +:104AB0003093F3011F910F910C942C210F931F93AE +:104AC0000091F0011091F1012091F2013091F30178 +:104AD00006231723282339230093F0011093F101B3 +:104AE0002093F2013093F3011F910F910C942C212C +:104AF0000F931F930091F0011091F1012091F201A9 +:104B00003091F30106271727282739270093F00152 +:104B10001093F1012093F2013093F3011F910F9153 +:104B20000C942C211092EC011092ED011092EE01E8 +:104B30001092EF010C942C2141E050E060E070E015 +:104B400004C0440F551F661F771F8A95D2F7409304 +:104B5000EC015093ED016093EE017093EF010C9422 +:104B60002C2141E050E060E070E004C0440F551F8C +:104B7000661F771F8A95D2F78091EC019091ED0125 +:104B8000A091EE01B091EF01842B952BA62BB72BB2 +:104B90008093EC019093ED01A093EE01B093EF01AF +:104BA0000C942C2141E050E060E070E004C0440F20 +:104BB000551F661F771F8A95D2F7409550956095CF +:104BC00070958091EC019091ED01A091EE01B09172 +:104BD000EF0184239523A623B7238093EC019093C0 +:104BE000ED01A093EE01B093EF010C942C2141E074 +:104BF00050E060E070E004C0440F551F661F771F4F +:104C00008A95D2F78091EC019091ED01A091EE018F +:104C1000B091EF0184279527A627B7278093EC0151 +:104C20009093ED01A093EE01B093EF010C942C2131 +:104C30000F931F930091EC011091ED012091EE0173 +:104C40003091EF01062B172B282B392B0093EC0109 +:104C50001093ED012093EE013093EF011F910F911E +:104C60000C942C210F931F930091EC011091ED01F6 +:104C70002091EE013091EF010623172328233923D9 +:104C80000093EC011093ED012093EE013093EF01BE +:104C90001F910F910C942C210F931F930091EC0105 +:104CA0001091ED012091EE013091EF0106271727B9 +:104CB000282739270093EC011093ED012093EE0192 +:104CC0003093EF011F910F910C942C210895CF92F6 +:104CD000DF92EF92FF920F931F93CF93DF93EC013C +:104CE000C090F001D090F101E090F201F090F3015A +:104CF0008091EC019091ED01A091EE01B091EF0156 +:104D0000C82AD92AEA2AFB2A0FE110E0B701A60136 +:104D1000002E04C076956795579547950A94D2F76B +:104D200040FD05C00150110988F780E007C0BE01B1 +:104D3000802F0E94CD0B0197A9F3802FDF91CF9197 +:104D40001F910F91FF90EF90DF90CF900895CF9338 +:104D5000DF93EC010E946726BE010E94CD0BDF911C +:104D6000CF910895CB010E94A72608958091F40168 +:104D700085958595859508958091F40187700895AE +:104D800098E0899F90011124622B6093F4010C94A8 +:104D9000B1254091F401809584238093F401982FEC +:104DA000977069F450E0282F332727FD309542177C +:104DB000530729F08595859585950C94D2250895FE +:104DC0009091F401977081E009F480E0089590914A +:104DD0000C01992361F190910D01992341F1982FD4 +:104DE0009695969596959F3088F4E0910E01F091F6 +:104DF0000F01E90FF11D877021E030E001C0220FA3 +:104E00008A95EAF78181822B818308959091090226 +:104E100090FF2DC01F928F9389E299E09F938F930B +:104E20000E9445080F900F900F900F9008954091A9 +:104E30000E0150910F0120E030E09FEFFA01E20FE8 +:104E4000F31F6281681799F09F3F19F4611101C047 +:104E5000922F2F5F3F4F2E30310581F79F3F39F062 +:104E6000FA01E90FF11D97FDFA95828308950895DF +:104E700090910C01992369F190910D01992349F1C9 +:104E8000982F9695969596959F3090F4E0910E0107 +:104E9000F0910F01E90FF11D877021E030E001C0B2 +:104EA000220F8A95EAF7209581812823218308958E +:104EB0009091090290FF1FC01F928F938BE099E0A1 +:104EC0009F938F930E9445080F900F900F900F9023 +:104ED000089540910E0150910F0120E030E0FA0159 +:104EE000E20FF31F9281981301C012822F5F3F4F90 +:104EF0002E303105A1F7089581E090E0E0910E0198 +:104F0000F0910F01E80FF91F108201968031910591 +:104F1000A9F7089580910802089590910802982BAE +:104F20009093080208958095909108029823909399 +:104F30000802089510920802089590910702982B94 +:104F4000909307020895809590910702982390937B +:104F50000702089510920702089590910602982B77 +:104F6000909306020895809590910602982390935D +:104F7000060208951092060208958093F50108959F +:104F80001092F501089540910E0150910F0120E01B +:104F900030E080E0FA01E20FF31F918191118F5F01 +:104FA0002F5F3F4F2F303105A9F70895E0910E0193 +:104FB000F0910F01809108028083E0910E01F09141 +:104FC0000F01808190910702892B8083E0910E016F +:104FD000F0910F01808190910602892B808390913E +:104FE000F501992361F0E0910E01F0910F018081AC +:104FF000892B80830E94C32781111092F501809133 +:105000000E0190910F010C941A1C90933D01809316 +:105010003C01089540E0009739F09C01215031098E +:10502000822393234F5FF7CF842F08958295982F83 +:105030009C7C96959695837344E0849F90011124FF +:10504000922B892F8A7A86959575990F892B0895C9 +:105050001F93CF93DF931F92CDB7DEB799830E9442 +:105060001628182F9981892F0E941628212F30E0A9 +:10507000322F2227A901482BCA010F90DF91CF912F +:105080001F91089580915802843021F110920A02F4 +:1050900020E488E190E00FB6F894A8958093600032 +:1050A0000FBE2093600080E00E94670C83B7817F71 +:1050B000846083BF83B7816083BF7894889583B70A +:1050C0008E7F83BF88E10FB6F894809360001092C2 +:1050D00060000FBE0895089508950E946B280E94F5 +:1050E000C00C0E946C280E94A20D91E0811101C0A9 +:1050F00090E0892F08950E943C210E940E1C0C9480 +:10510000670C1F920F920FB60F9211248F939F93EB +:10511000AF93BF9380910A02811113C080910B025B +:1051200090910C02A0910D02B0910E024196A11D2A +:10513000B11D80930B0290930C02A0930D02B093CB +:105140000E02BF91AF919F918F910F900FBE0F9064 +:105150001F90189582E084BD93E095BD9AEF97BDAE +:1051600080936E0008952FB7F89480910B02909170 +:105170000C02A0910D02B0910E022FBF0895CF92A4 +:10518000DF92EF92FF920F931F932FB7F894409105 +:105190000B0250910C0260910D0270910E022FBF14 +:1051A0006A017B01EE24FF248C0120E030E0C01670 +:1051B000D106E206F30610F441505109481B590B81 +:1051C000CA011F910F91FF90EF90DF90CF9008954B +:1051D0001F920F920FB60F9211248F939F93AF934C +:1051E000BF9380910B0290910C02A0910D02B0919F +:1051F0000E020196A11DB11D80930B0290930C022B +:10520000A0930D02B0930E02BF91AF919F918F9129 +:105210000F900FBE0F901F9018950E941519F894CB +:105220002FEF87EA91E6215080409040E1F700C0DF +:10523000000087E090EBDC018093620290936302B0 +:10524000A0936402B09365022CE088E190E00FB671 +:10525000F894A895809360000FBE20936000FFCF64 +:10526000CF92DF92EF92FF920F931F93CF93DF9332 +:10527000082F15E0812F0E94370D6B017C01C0E1E2 +:10528000D0E0B701A6010C2E04C07695679557951E +:1052900047950A94D2F740FF09C06C2F712F80E028 +:1052A0000E947709081302C081E005C0219748F7E2 +:1052B000115000F780E0DF91CF911F910F91FF9087 +:1052C000EF90DF90CF900895CF93C82F8CE20E948B +:1052D0003029882321F08C2FCF910C94302980E045 +:1052E000CF910895CF930E94BF2A811102C00E94DE +:1052F000A52A8EE499E00E94AC07C5E6C15049F0AA +:105300000E94C00C8FE39CE90197F1F700C00000F8 +:10531000F5CF87E499E00E94AC0789E20E946429F6 +:10532000811111C18AE20E94642981110E94A52A7B +:1053300085E00E94642981110E940D290E94CA2AD9 +:105340008093090287E00E946429882399F18BE108 +:105350000E946429882351F09091090291FB8827CB +:1053600080F921E0822780FB91F922C08EE00E9423 +:105370006429882351F09091090292FB882780F9D3 +:1053800021E0822780FB92F913C080E10E9464290A +:1053900090910902882341F093FB882780F921E04E +:1053A000822780FB93F904C0892F809580FB90F9B8 +:1053B00090930902809109020E94CE2A0E94DC2A61 +:1053C0008093610280EE0E946429882341F08091DD +:1053D0006102982F909590FB80F98093610289E398 +:1053E0000E946429882359F09091610291FB8827DB +:1053F00080F921E0822780FB91F99093610282EE8F +:105400000E946429882359F09091610292FB8827B9 +:1054100080F921E0822780FB92F99093610286EE69 +:105420000E946429882359F09091610293FB882798 +:1054300080F921E0822780FB93F99093610283EE4B +:105440000E946429882359F09091610294FB882777 +:1054500080F921E0822780FB94F99093610285E333 +:105460000E946429882359F09091610295FB882756 +:1054700080F921E0822780FB95F99093610281E316 +:105480000E946429882359F09091610296FB882735 +:1054900080F921E0822780FB96F99093610281E1F7 +:1054A0000E946429882359F09091610297FB882714 +:1054B00080F921E0822780FB97F990936102809127 +:1054C00061020E94E02A8091610287FB882780F9AF +:1054D00080930D0187E20E946429C82F8EE10E940B +:1054E00064298111C2608FE10E9464298111C46026 +:1054F00080E20E9464298111C86081E20E946429CF +:105500008111C06182E20E9464298111C06283E23C +:105510000E9464298111C06484E20E946429882366 +:1055200011F0C06802C0CC2329F08C2F0E94D72A2A +:105530006C2F03C00E94D32A682F70E080E090E0B7 +:10554000CF910C943A25CF9108956DEE7EEF80E0D7 +:1055500090E00E943B2E60E082E090E00E941D2ED1 +:1055600060E083E090E00E941D2E60E084E090E027 +:105570000E941D2E60E085E090E00C941D2E80E0DE +:1055800090E00E94172E21E08D3E9E4F09F020E012 +:10559000822F089582E090E00C94092E682F82E01B +:1055A00090E00C941D2E83E090E00C94092E682F5F +:1055B00083E090E00C941D2E84E090E00C94092E82 +:1055C000682F84E090E00C941D2ECF93C82F1F927B +:1055D0008F9329E639E03F932F930E94450861E0BD +:1055E00070E080E090E004C0660F771F881F991F6D +:1055F000CA95D2F70E943A250F900F900F900F9006 +:10560000CF910C943C21CF938B3109F4D1C108F098 +:1056100049C08E3009F4DFC100F5873009F4A9C113 +:10562000A8F4863009F063C280910902817F8E7FE1 +:105630008093090283EF9AE00E94AC0784EA9EE01F +:105640000E94AC0781E080930F0291C1883009F479 +:105650005BC08B3009F487C14AC2813109F42FC283 +:1056600020F4803109F4CAC142C2863109F4E0C194 +:10567000893109F03CC284EE9AE00E94AC0787EBC6 +:105680009AE00E94AC0788E79AE00E94AC0781E5A7 +:105690009AE00E94AC0785E19AE00E94AC0787EE91 +:1056A00099E063C1853309F41EC268F4873209F4B6 +:1056B0001AC228F48E3108F41AC28D5115C28932EB +:1056C00009F411C214C2833438F48A3308F009C2D1 +:1056D000883309F448C10BC2833409F404C2883406 +:1056E00009F005C20E943C2188E89EE00E94AC07B8 +:1056F0009FEF23ED80E3915020408040E1F700C010 +:1057000000000E940D2933C188EA9EE00E94AC0788 +:1057100085EF9DE00E94AC070E94D32A1F928F93D1 +:1057200082EF9DE09F938F930E94450880EF9DE05C +:105730000E94AC070E94CA2AC82F8DED9DE00E94EE +:10574000AC071F92CF9328ED3DE03F932F930E942B +:10575000450886ED9DE00E94AC078CEC9DE00E9420 +:10576000AC078C2F81701F928F9329EC3DE03F9303 +:105770002F930E94450887EC9DE00E94AC078DEBBB +:105780009DE00E94AC07C1FB882780F91F928F9390 +:105790002AEB3DE03F932F930E94450888EB9DE064 +:1057A0000E94AC078CEA9DE00E94AC07C2FB8827F0 +:1057B00080F91F928F9329EA3DE03F932F930E9437 +:1057C000450887EA9DE00E94AC078EE99DE00E94B3 +:1057D000AC07C3FBCC27C0F91F92CF938BE99DE0A8 +:1057E0009F938F930E94450889E99DE00E94AC0732 +:1057F0000E94DC2AC82F85E89DE00E94AC071F921A +:10580000CF9320E83DE03F932F930E9445088EE719 +:105810009DE00E94AC0785E69DE00E94AC078C2FBE +:1058200081701F928F9322E63DE03F932F930E9459 +:1058300045088DB79EB780960FB6F8949EBF0FBEF1 +:105840008DBF80E69DE00E94AC0789E49DE00E9448 +:10585000AC07C1FB882780F91F928F9326E43DE0B7 +:105860003F932F930E94450884E49DE00E94AC077B +:1058700082E39DE00E94AC07C2FB882780F91F925B +:105880008F932FE23DE03F932F930E9445088DE2D6 +:105890009DE00E94AC078BE19DE00E94AC07C3FB3A +:1058A000882780F91F928F9328E13DE03F932F9343 +:1058B0000E94450886E19DE00E94AC078CE09DE0D7 +:1058C0000E94AC07C4FB882780F91F928F9329E0C0 +:1058D0003DE03F932F930E94450887E09DE00E94A2 +:1058E000AC0785EF9CE00E94AC07C5FB882780F9D8 +:1058F0001F928F9322EF3CE03F932F930E94450825 +:1059000080EF9CE00E94AC0784ED9CE00E94AC0715 +:10591000C6FB882780F91F928F9321ED3CE03F93CF +:105920002F930E9445088FEC9CE00E94AC0787EC07 +:105930009CE00E94AC07C7FBCC27C0F91F92CF9315 +:1059400084EC9CE09F938F930E94450882EC9CE03E +:105950000E94AC078DB79EB74C960FB6F8949EBFC9 +:105960000FBE8DBF04C08EE09BE00E94AC07C1E07B +:10597000C3C080910902C82FC095C170C0FB80F9D7 +:1059800080930902CC2349F08CE79EE00E94AC078B +:10599000809109028660886045C08FE69EE00E9483 +:1059A000AC0780910902897F877F80930902DFCF4E +:1059B0008091090281FBCC27C0F991E0C927C0FB87 +:1059C00081F980930902CC2319F082E69EE025C07C +:1059D00084E59EE0CACF8091090282FBCC27C0F902 +:1059E00091E0C927C0FB82F980930902CC2319F00A +:1059F00085E49EE012C085E39EE0B7CF8091090266 +:105A000083FBCC27C0F991E0C927C0FB83F98093C1 +:105A10000902CC2351F089E29EE00E94AC078091FC +:105A2000090281608093090267C08CE19EE09DCFEE +:105A300089ED99E00E94AC070E940E1C1F928F9383 +:105A40008FEB99E09F938F930E94450880910C0102 +:105A50001F928F9388EA99E09F938F930E94450845 +:105A6000809194011F928F9385E999E09F938F9382 +:105A70000E94450880910D011F928F9382E899E062 +:105A80009F938F930E94450880910B0290910C0286 +:105A9000A0910D02B0910E02BF93AF939F938F938D +:105AA0008EE699E09F938F930E9445088DB79EB72D +:105AB00046960FB6F8949EBF0FBE8DBF58CF0E947A +:105AC0003C21C0910D0181E0C827C0930D01CC237A +:105AD00029F082E19EE00E94AC070EC087E09EE0C4 +:105AE00044CF895301C080E00E94E52A40CF85E081 +:105AF0009EE00E94AC07C0E08C2FCF91089580E01B +:105B0000089580E00895CF93C82F80910F028823D5 +:105B100019F0813049F03BC0E0910E01F0910F0186 +:105B200080818232B1F507C0E0910E01F0910F0142 +:105B30008081823249F48C2F0E947F2D811124C0F4 +:105B40008C2F0E94032B21C08C2F0E94812D81114C +:105B50001BC0C43189F018F4CB3029F010C0C93211 +:105B600059F0C83361F483EF9AE00E94AC0785E6F0 +:105B700099E00E94AC0708C010920F020CC083E6A7 +:105B800099E00E94AC0707C081E0817006C01092C6 +:105B90000F0280E002C080E0F8CFCF910895991BFA +:105BA00079E004C0991F961708F0961B881F7A9514 +:105BB000C9F780950895AA1BBB1B51E107C0AA1F16 +:105BC000BB1FA617B70710F0A61BB70B881F991F9E +:105BD0005A95A9F780959095BC01CD01089597FB42 +:105BE000072E16F4009407D077FD09D00E94DB2D14 +:105BF00007FC05D03EF4909581959F4F08957095D0 +:105C000061957F4F0895EE0FFF1F0590F491E02DF1 +:105C10000994F999FECF92BD81BDF89A992780B574 +:105C20000895A6E1B0E044E050E00C94432EA8E1D2 +:105C3000B0E042E050E00C94432E262FF999FECFBD +:105C400092BD81BDF89A019700B4021639F01FBACF +:105C500020BD0FB6F894FA9AF99A0FBE08950396EC +:105C6000272F0E941E2E0E941D2E252F0E941E2EC1 +:105C7000242F0C941E2E0196272F0E941E2E0C946A +:105C80001D2EDC01CB01FC01F999FECF06C0F2BD4F +:105C9000E1BDF89A319600B40D9241505040B8F7EA +:065CA0000895F894FFCF07 +:105CA600FFFF8314521586141F15EB140101F6012C +:105CB60059766649096C0F1F4F5F6F7F79691929FD +:105CC6003953433323130340362039980862084278 +:0C5CD6000809089507AE07C707E707009C +:00000001FF diff --git a/keyboard/phantom/keymaps/default/keymap.c b/keyboard/phantom/keymaps/default/keymap.c new file mode 100644 index 0000000000..1368226aa9 --- /dev/null +++ b/keyboard/phantom/keymaps/default/keymap.c @@ -0,0 +1,169 @@ +#include "phantom.h" + +#ifdef RGBLIGHT_ENABLE +#include "rgblight.h" +#endif + +// Used for SHIFT_ESC +#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,-----------------------------------------------------------------------------. + * |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus| + * |-----------------------------------------------------------| |--------------| + * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp| + * |-----------------------------------------------------------| |--------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn| + * |-----------------------------------------------------------| `--------------' + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| ,----. + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | + * |-----------------------------------------------------------| ,-------------. + * |Ctrl|Gui |Alt | Space |ALT |GUI |_FL |CTRL | |Lft| Dn |Rig | + * `-----------------------------------------------------------' `-------------' + */ +[_BL] = KEYMAP( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_END, KC_PGDN, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + * ,-----------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| |--------------| + * | | | | | | | | | | | | | | Reset | | | | | + * |-----------------------------------------------------------| |--------------| + * | | | | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| `--------------' + * | | | | | | | | | | | | | | + * |-----------------------------------------------------------| ,----. + * | | F1| F2| F3| F4| F5|F6 |F7 |F8 | | | | | | + * |-----------------------------------------------------------| ,-------------. + * | | | | | | | | | | | | | + * `-----------------------------------------------------------' `-------------' + */ +[_FL] = KEYMAP( + #ifdef RGBLIGHT_ENABLE + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, \ + KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + #else + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + #endif +}; + +enum function_id { + SHIFT_ESC, + #ifdef RGBLIGHT_ENABLE + RGBLED_TOGGLE, + RGBLED_STEP_MODE, + RGBLED_INCREASE_HUE, + RGBLED_DECREASE_HUE, + RGBLED_INCREASE_SAT, + RGBLED_DECREASE_SAT, + RGBLED_INCREASE_VAL, + RGBLED_DECREASE_VAL + #endif +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(SHIFT_ESC), + #ifdef RGBLIGHT_ENABLE + [1] = ACTION_FUNCTION(RGBLED_TOGGLE), + [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), + [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), + [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), + [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), + [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), + [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), + [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), + #endif +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t shift_esc_shift_mask; + switch (id) { + case SHIFT_ESC: + shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; + if (record->event.pressed) { + if (shift_esc_shift_mask) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + if (shift_esc_shift_mask) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + //led operations + #ifdef RGBLIGHT_ENABLE + case RGBLED_TOGGLE: + if (record->event.pressed) { + rgblight_toggle(); + } + break; + case RGBLED_INCREASE_HUE: + if (record->event.pressed) { + rgblight_increase_hue(); + } + break; + case RGBLED_DECREASE_HUE: + if (record->event.pressed) { + rgblight_decrease_hue(); + } + break; + case RGBLED_INCREASE_SAT: + if (record->event.pressed) { + rgblight_increase_sat(); + } + break; + case RGBLED_DECREASE_SAT: + if (record->event.pressed) { + rgblight_decrease_sat(); + } + break; + case RGBLED_INCREASE_VAL: + if (record->event.pressed) { + rgblight_increase_val(); + } + break; + case RGBLED_DECREASE_VAL: + if (record->event.pressed) { + rgblight_decrease_val(); + } + break; + case RGBLED_STEP_MODE: + if (record->event.pressed) { + rgblight_step(); + } + break; + #endif + } +} diff --git a/keyboard/phantom/led.c b/keyboard/phantom/led.c new file mode 100644 index 0000000000..e45cc09648 --- /dev/null +++ b/keyboard/phantom/led.c @@ -0,0 +1,44 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 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, see <http://www.gnu.org/licenses/>. +*/ + +#include <avr/io.h> +#include "stdint.h" +#include "led.h" + + +void led_init_ports() { + // * Set our LED pins as output + DDRB |= (1<<6); + DDRB |= (1<<7); +} + +void led_set_kb(uint8_t usb_led) { + if (usb_led & (1<<USB_LED_CAPS_LOCK)) { + // Turn capslock on + PORTB |= (1<<6); + } else { + // Turn capslock off + PORTB &= ~(1<<6); + } + if (usb_led & (1<<USB_LED_SCROLL_LOCK)) { + // Turn scrolllock on + PORTB |= (1<<7); + } else { + // Turn scrolllock off + PORTB &= ~(1<<7); + } +} diff --git a/keyboard/phantom/phantom.c b/keyboard/phantom/phantom.c new file mode 100644 index 0000000000..4328539d07 --- /dev/null +++ b/keyboard/phantom/phantom.c @@ -0,0 +1,28 @@ +#include "phantom.h" + +__attribute__ ((weak)) +void matrix_init_user(void) { + // leave these blank +}; + +__attribute__ ((weak)) +void matrix_scan_user(void) { + // leave these blank +}; + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + if (matrix_init_user) { + (*matrix_init_user)(); + } + led_init_ports(); +}; + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + if (matrix_scan_user) { + (*matrix_scan_user)(); + } +}; diff --git a/keyboard/phantom/phantom.h b/keyboard/phantom/phantom.h new file mode 100644 index 0000000000..c1c7459ff4 --- /dev/null +++ b/keyboard/phantom/phantom.h @@ -0,0 +1,46 @@ +#ifndef PHANTOM_H +#define PHANTOM_H + +#include "matrix.h" +#include "keymap_common.h" +#include <stddef.h> + + +/* Phantom matrix layout + * ,-----------------------------------------------------------------------------. + * |00 |02| 03| 04| 05| | 06| 07| 08| 09| | 0a|0b |0c |0d | |0e |0f |0g | + * |-----------------------------------------------------------| |--------------| + * | 01| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1d | |1e |1f |1g | + * |-----------------------------------------------------------| |--------------| + * |20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c| 2d| | 2e | 2f | 2g | + * |-----------------------------------------------------------| `--------------' + * |30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | + * |-----------------------------------------------------------| ,----. + * | 40 | 42| 43| 44| 45| 46| 47| 48| 49| 4a| 4b| 4d | | 4f | + * |-----------------------------------------------------------| ,-------------. + * | 50 | 51 | 52 | 57 |5a | 5b | 5c | 5d | | 5e| 5f | 5g | + * `-----------------------------------------------------------' `-------------' + */ +// The first section contains all of the arguments +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \ + k01, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1e, k1f, k1g, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4f, \ + k50, k51, k52, k57, k5a, k5b, k5c, k5d, k5e, k5f, k5g \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1d, k1e, k1f, k1g}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3d, k3d, k3d, k3d}, \ + {k40, k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4d, k4f, k4f, k4f}, \ + {k50, k51, k52, k57, k57, k57, k57, k57, k57, k57, k5a, k5b, k5c, k5d, k5e, k5f, k5g} \ +} + +void matrix_init_user(void); +void matrix_scan_user(void); + +#endif diff --git a/keyboard/phantom/pinout.jpg b/keyboard/phantom/pinout.jpg Binary files differnew file mode 100644 index 0000000000..30b0b8bf4b --- /dev/null +++ b/keyboard/phantom/pinout.jpg diff --git a/keyboard/phantom/pinout.txt b/keyboard/phantom/pinout.txt new file mode 100644 index 0000000000..36f044d157 --- /dev/null +++ b/keyboard/phantom/pinout.txt @@ -0,0 +1 @@ +For WS2812B LED strip support, connect DIN from strip to PE2 on Teensy (see reference image pinout.jpg)
\ No newline at end of file |