summaryrefslogtreecommitdiffstats
path: root/keyboards/clueboard2
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2016-06-21 22:39:54 -0400
committerGitHub <noreply@github.com>2016-06-21 22:39:54 -0400
commit649b33d7783cf3021928534b7ae127e0a89e8807 (patch)
treec2b5e0cf8ff4aa2918e3b88ab75dbdb071cc0a1d /keyboards/clueboard2
parent464c8e274f993d3571fe5ea5e836fe55a3912ffe (diff)
Renames keyboard folder to keyboards, adds couple of tmk's fixes (#432)
* fixes from tmk's repo * rename keyboard to keyboards
Diffstat (limited to 'keyboards/clueboard2')
-rw-r--r--keyboards/clueboard2/Makefile77
-rw-r--r--keyboards/clueboard2/backlight.c41
-rw-r--r--keyboards/clueboard2/clueboard2.c40
-rw-r--r--keyboards/clueboard2/clueboard2.h57
-rw-r--r--keyboards/clueboard2/config.h99
-rw-r--r--keyboards/clueboard2/keymaps/default/compiled.hex1246
-rw-r--r--keyboards/clueboard2/keymaps/default/keymap.c183
-rw-r--r--keyboards/clueboard2/keymaps/max/Makefile11
-rw-r--r--keyboards/clueboard2/keymaps/max/compiled.hex1536
-rw-r--r--keyboards/clueboard2/keymaps/max/keymap.c147
-rw-r--r--keyboards/clueboard2/keymaps/skully/compiled.hex1246
-rw-r--r--keyboards/clueboard2/keymaps/skully/keymap.c108
-rw-r--r--keyboards/clueboard2/led.c36
13 files changed, 4827 insertions, 0 deletions
diff --git a/keyboards/clueboard2/Makefile b/keyboards/clueboard2/Makefile
new file mode 100644
index 0000000000..7204daef75
--- /dev/null
+++ b/keyboards/clueboard2/Makefile
@@ -0,0 +1,77 @@
+
+
+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 ?= no # Enable keyboard underlight functionality (+4870)
+BACKLIGHT_ENABLE ?= yes # 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
+
+#ifdef BACKLIGHT_ENABLE
+ SRC := backlight.c $(SRC)
+#endif
+
+ifndef QUANTUM_DIR
+ include ../../Makefile
+endif
diff --git a/keyboards/clueboard2/backlight.c b/keyboards/clueboard2/backlight.c
new file mode 100644
index 0000000000..5dfa4ba0ae
--- /dev/null
+++ b/keyboards/clueboard2/backlight.c
@@ -0,0 +1,41 @@
+
+#include <avr/io.h>
+#include "backlight.h"
+#include "print.h"
+
+/* Clueboard 2.0 LED locations:
+ *
+ * Capslock: B4, pull high to turn on
+ * LCtrl: Shared with Capslock, DO NOT INSTALL LED'S IN BOTH
+ * Page Up: B7, pull high to turn on
+ * Escape: D6, pull high to turn on
+ * Arrows: D4, pull high to turn on
+ */
+
+void init_backlight_pin(void) {
+ print("init_backlight_pin()\n");
+ // Set our LED pins as output
+ DDRD |= (1<<6); // Esc
+ DDRB |= (1<<7); // Page Up
+ DDRD |= (1<<4); // Arrows
+
+ // Set our LED pins low
+ PORTD &= ~(1<<6); // Esc
+ PORTB &= ~(1<<7); // Page Up
+ PORTD &= ~(1<<4); // Arrows
+}
+
+void backlight_set(uint8_t level) {
+ if ( level == 0 ) {
+ // Turn off light
+ PORTD |= (1<<6); // Esc
+ PORTB |= (1<<7); // Page Up
+ PORTD |= (1<<4); // Arrows
+ } else {
+ // Turn on light
+ PORTD &= ~(1<<6); // Esc
+ PORTB &= ~(1<<7); // Page Up
+ PORTD &= ~(1<<4); // Arrows
+ }
+}
+
diff --git a/keyboards/clueboard2/clueboard2.c b/keyboards/clueboard2/clueboard2.c
new file mode 100644
index 0000000000..8493c564c8
--- /dev/null
+++ b/keyboards/clueboard2/clueboard2.c
@@ -0,0 +1,40 @@
+#include "clueboard2.h"
+
+#ifdef BACKLIGHT_ENABLE
+#include "backlight.h"
+#endif
+
+__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();
+
+ #ifdef BACKLIGHT_ENABLE
+ init_backlight_pin();
+ #endif
+
+ // JTAG disable for PORT F. write JTD bit twice within four cycles.
+ MCUCR |= (1<<JTD);
+ MCUCR |= (1<<JTD);
+};
+
+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/keyboards/clueboard2/clueboard2.h b/keyboards/clueboard2/clueboard2.h
new file mode 100644
index 0000000000..97042f73f7
--- /dev/null
+++ b/keyboards/clueboard2/clueboard2.h
@@ -0,0 +1,57 @@
+#ifndef CLUEBOARD2_H
+#define CLUEBOARD2_H
+
+#include "matrix.h"
+#include "keymap.h"
+#include <stddef.h>
+
+
+/* Clueboard matrix layout
+ * ,-----------------------------------------------------------. ,---.
+ * | 00| 01| 02| 03| 04| 05| 06| 07| 50| 51| 52| 53| 54| 55| 56| | 57|
+ * |-----------------------------------------------------------| |---|
+ * | 10| 11| 12| 13| 14| 15| 16| 17| 60| 61| 62| 63| 64| 65| | 67|
+ * |-----------------------------------------------------------| `---'
+ * | 20| 21| 22| 23| 24| 25| 26| 27| 70| 71| 72| 73| 74| 75|
+ * |------------------------------------------------------------.
+ * | 30| 31| 32| 33| 34| 35| 36| 37| 80| 81| 82| 83| 84| 85|86|
+ * |------------------------------------------------------------------.
+ * | 40| 41| 42| 43| 45| 46| 90| 91| 92| 93| 94| 95| 96|
+ * `------------------------------------------------------------------'
+ * ,-----------------------------------------------------------. ,---.
+ * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Yen| BS| |Ins|
+ * |-----------------------------------------------------------| |---|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|
+ * |-----------------------------------------------------------| `---'
+ * |Caps | A| S| D| F| G| H| J| k| L| ;| '| # | Ent|
+ * |--------------------------------------------------------------.
+ * |Shift| \| Z| X| C| V| B| N| M| ,| .| /| \|Shift| Up|
+ * |------------------------------------------------------------------.
+ * |Ctrl|Alt|Gui |MHen| Space| Space|Henk|Gui |Ctrl| Fn|Left|Down|Rgt|
+ * `------------------------------------------------------------------'
+ */
+// The first section contains all of the arguments
+// The second converts the arguments into a two-dimensional array
+#define KEYMAP( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k50, k51, k52, k53, k54, k55, k56, k57, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k60, k61, k62, k63, k64, k65, k67, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k70, k71, k72, k73, k74, k75, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k80, k81, k82, k83, k84, k85, k86, \
+ k40, k41, k42, k43, k45, k46, k90, k92, k93, k94, k95, k96, k97 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, KC_NO, k45, k46, KC_NO }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, KC_NO, k67 }, \
+ { k70, k71, k72, k73, k74, k75, KC_NO, KC_NO }, \
+ { k80, k81, k82, k83, k84, k85, k86, KC_NO }, \
+ { k90, KC_NO, k92, k93, k94, k95, k96, k97 } \
+}
+
+void matrix_init_user(void);
+void matrix_scan_user(void);
+
+#endif
diff --git a/keyboards/clueboard2/config.h b/keyboards/clueboard2/config.h
new file mode 100644
index 0000000000..2887519afd
--- /dev/null
+++ b/keyboards/clueboard2/config.h
@@ -0,0 +1,99 @@
+/*
+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 0xC1ED
+#define PRODUCT_ID 0x2320
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Clueboard
+#define PRODUCT Clueboard with RGB Underlighting
+#define DESCRIPTION QMK keyboard firmware for Clueboard
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+// ROWS: Top to bottom, COLS: Left to right
+/* Row pin configuration
+* row: 0 1 2 3 4 5 6 7 8 9
+* pin: B2 C7 C6 B6 B5 B0 B3 D5 D3 D2
+*/
+#define MATRIX_ROW_PINS { B2, C7, C6, B6, B5, B0, B3, D5, D3, D2 }
+/* Column pin configuration
+ * col: 0 1 2 3 4 5 6 7
+ * pin: F0 F1 F4 F5 F6 F7 E6 B1
+ */
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, E6, B1 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* 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)) \
+)
+
+/* Backlight configuration
+ */
+#define BACKLIGHT_LEVELS 1
+
+/* Underlight configuration
+ */
+ #define ws2812_PORTREG PORTD
+ #define ws2812_DDRREG DDRD
+ #define ws2812_pin 7
+ #define RGBLED_NUM 14 // 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/keyboards/clueboard2/keymaps/default/compiled.hex b/keyboards/clueboard2/keymaps/default/compiled.hex
new file mode 100644
index 0000000000..c737eb3c67
--- /dev/null
+++ b/keyboards/clueboard2/keymaps/default/compiled.hex
@@ -0,0 +1,1246 @@
+:100000000C94E5050C9429060C9429060C942906F9
+:100010000C9429060C9429060C9429060C942906A4
+:100020000C9429060C9429060C9449110C941B126B
+:100030000C94FD1F0C9429060C9429060C94290697
+:100040000C9429060C9429060C9429060C94290674
+:100050000C9429060C9465200C9429060C9429060E
+:100060000C9429060C9429060C9429060C94290654
+:100070000C9429060C9429060C9429060C94290644
+:100080000C9429060C9429060C9429060C94290634
+:100090000C9429060C9429060C9429060C94290624
+:1000A0000C9429060C9429060C9429068812AA128D
+:1000B0009813AA129813EF121213981367137A1356
+:1000C00099169916C816C81607177218721872185A
+:1000D00027177218D717D7173E18471872186C18B9
+:1000E000E417E417E417E417E417E417E417E41738
+:1000F000E417E417E417E417E417E417E417E41728
+:10010000F4170218091810181A18696E69745F62DA
+:1001100061636B6C696768745F70696E28290A0097
+:1001200000F000201E001F002000210022002300FC
+:1001300024002B0014001A000800150017001C00F2
+:100140001800390004001600070009000A000B001F
+:100150000D00E10064001D001B00060019000500F1
+:100160001100E000E300E2008B0000002C002C00F6
+:1001700000002500260027002D002E0035002A0053
+:100180004B000C00120013002F0030003100000063
+:100190004E000E000F003300340032002800000033
+:1001A000000010003600370038008700E5005200DC
+:1001B00000008A000000E600E400015250005100F7
+:1001C0004F0035003A003B003C003D003E003F0040
+:1001D00040000100010001000100010001000100D8
+:1001E00001000100010002520100010001000100B4
+:1001F00001000100010001000100010001000100F7
+:1002000001000100010001000100000001000100E7
+:1002100000004100420043004400450001004C0042
+:100220008350460047004800010001000100000023
+:1002300001000100010001000100010001000000B7
+:1002400000000100010001000100010001004B005D
+:100250000000010000000100010001524A004E00B0
+:100260004D0001000100010001000100010001003A
+:100270000100010001000100010000500100010027
+:100280000100010001000252010001000100010013
+:100290000100010001000100010001000100010056
+:1002A0000100010001000100010000000100010047
+:1002B0000000010001000100010001000100010037
+:1002C0000100010001000100010001000100000027
+:1002D0000100010001000100010001000100000017
+:1002E0000000010001000100010001000100010007
+:1002F00000000100000001000100015201000100A6
+:1003000001000A44454255473A20656E61626C65BA
+:10031000642E0A005374617465206F6620726F77D3
+:100320002025583A2025303136620A0048756D6123
+:100330006E2D7265616461626C65206D61747269B5
+:10034000782073746174653A0D0A004465626F75B4
+:100350006E63696E672064656C61792072656D619A
+:10036000696E696E673A2025580A005B735D004B21
+:100370006579626F6172642073746172742E0A0011
+:100380005B575D005B535D005B525D005B445D004D
+:100390005B435D00420343006C0075006500620032
+:1003A0006F00610072006400200077006900740033
+:1003B00068002000520047004200200055006E00F7
+:1003C0006400650072006C006900670068007400DA
+:1003D00069006E0067000000140343006C007500A4
+:1003E000650062006F006100720064000000040399
+:1003F000090409027400040100A0FA0904000001C4
+:1004000003010100092111010001223F00070581BC
+:100410000308000A0904010001030000000921117A
+:100420000100012236000705820308000A090402C0
+:100430000002030000000921110100012220000731
+:1004400005830320000107050303200001090403BD
+:1004500000010300000009211101000122390007F9
+:100460000584031000011201100100000008EDC115
+:10047000202301000102000105010906A101050771
+:1004800019E029E715002501950875018102050885
+:1004900019012905950575019102950175039101D1
+:1004A0000507190029771500250195787501810246
+:1004B000C00631FF0974A1010975150025FF9520BB
+:1004C000750881020976150025FF952075089102AF
+:1004D000C005010980A101850216010026B7001A96
+:1004E00001002AB700751095018100C0050C0901B3
+:1004F000A1018503160100269C021A01002A9C0214
+:10050000751095018100C005010906A101050719B3
+:10051000E029E7150025019508750181029501750F
+:1005200008810105081901290595057501910295B4
+:1005300001750391010507190029FF150025FF9595
+:100540000675088100C00A002530325820006B650E
+:1005500079626F6172645F7265706F72743A2000C5
+:100560004B6579626F617264204C454473207374EB
+:100570006174653A2025780A0064656C5F6B657963
+:100580005F6269743A2063616E27742064656C3A17
+:1005900020253032580A006164645F6B65795F62C0
+:1005A00069743A2063616E2774206164643A20257F
+:1005B0003032580A00646F6E652E0A00626F6F67F2
+:1005C0006D61676963207363616E3A202E2E2E2061
+:1005D000003F00433E20004C25640A0074696D65AD
+:1005E000725F636F756E743A202530346C580A0060
+:1005F0006B6579626F6172645F6E6B726F3A202512
+:10060000580A006B6579626F6172645F69646C653A
+:100610003A2025580A006B6579626F6172645F70D9
+:10062000726F746F636F6C3A2025580A00686F739D
+:10063000745F6B6579626F6172645F6C6564732867
+:10064000293A2025580A000A092D2053746174752F
+:1006500073202D0A004743433A20342E392E32208E
+:100660004156522D4C4942433A20312E382E3120EA
+:100670004156525F415243483A20617672350A0032
+:100680004F5054494F4E533A204C55464120424F0B
+:100690004F544D414749432045585452414B4559C9
+:1006A00020434F4E534F4C4520434F4D4D414E44F8
+:1006B000204E4B524F20343039360A004255494CB7
+:1006C000443A20313637313865662D646972747961
+:1006D000202832333A31303A3036204A756E2020A5
+:1006E000392032303136290A005649443A203078D0
+:1006F0004331454428436C7565626F6172642920FB
+:100700005049443A2030783233323028436C756592
+:10071000626F617264207769746820524742205585
+:100720006E6465726C69676874696E6729205645E6
+:10073000523A203078303030310A00444553433A41
+:1007400020514D4B206B6579626F61726420666940
+:10075000726D7761726520666F7220436C75656299
+:100760006F6172640A000A092D2056657273696F01
+:100770006E202D0A000A092D20436F6E736F6C6581
+:10078000202D0A4553432F713A09717569740A0087
+:100790000A092D204D61676963202D0A443A0944F6
+:1007A00065627567204D65737361676520546F6777
+:1007B000676C650A583A094D61747269782044651E
+:1007C000627567204D6F646520546F67676C6520A4
+:1007D0002D2053686F77206B657970726573736530
+:1007E0007320696E206D6174726978206772696424
+:1007F0000A4B3A094B6579626F6172642044656205
+:10080000756720546F67676C65202D2053686F777C
+:10081000206B65797072657373207265706F727486
+:100820000A4D3A094465627567204D6F75736520FE
+:10083000546F67676C650A563A0956657273696F3B
+:100840006E0A533A095374617475730A433A094145
+:100850006374697661746520436F6E736F6C652095
+:100860004D6F64650A46312D4631303A0953776938
+:1008700074636820746F204C6179657220302D3963
+:100880002028463130203D204C30290A302D393A7D
+:100890000953776974636820746F204C61796572BD
+:1008A00020302D390A4553433A09537769746368F8
+:1008B00020746F204C6179657220302028616C743F
+:1008C00065726E617465206B65792031290A475223
+:1008D0004156453A0953776974636820746F204C18
+:1008E0006179657220302028616C7465726E617464
+:1008F00065206B65792032290A50415553453A09E4
+:100900004A756D7020746F20426F6F746C6F6164F4
+:10091000657220285265736574290A453A09507238
+:10092000696E7420454550524F4D2053657474696B
+:100930006E67730A4E3A094E4B524F20546F6767E9
+:100940006C650A000A002575002E6C6576656C3AA8
+:1009500020000A002575002E656E61626C653A20E4
+:10096000000A0025303258006261636B6C69676869
+:10097000745F636F6E6669672E7261773A20000A52
+:10098000002575002E6E6B726F3A20000A002575E7
+:10099000002E737761705F6261636B736C61736863
+:1009A0005F6261636B73706163653A20000A0025C2
+:1009B00075002E737761705F67726176655F65732E
+:1009C000633A20000A002575002E6E6F5F67756917
+:1009D0003A20000A002575002E737761705F7261FE
+:1009E0006C745F726775693A20000A002575002EE5
+:1009F000737761705F6C616C745F6C6775693A20C6
+:100A0000000A002575002E636170736C6F636B5F65
+:100A1000746F5F636F6E74726F6C3A20000A00250A
+:100A200075002E737761705F636F6E74726F6C5FA9
+:100A3000636170736C6F636B3A20000A002530327B
+:100A400058006B65796D61705F636F6E6669672EC4
+:100A50007261773A20000A002575002E6D6F75735C
+:100A6000653A20000A002575002E6B6579626F617A
+:100A700072643A20000A002575002E6D6174726957
+:100A8000783A20000A002575002E656E61626C655B
+:100A90003A20000A00253032580064656275675FAD
+:100AA000636F6E6669672E7261773A20000A0025CF
+:100AB000750064656661756C745F6C617965723A26
+:100AC00020003F004E4B524F3A206F66660A004EA0
+:100AD0004B524F3A206F6E0A000A6D6F7573653A7C
+:100AE000206F66660A000A6D6F7573653A206F6E37
+:100AF0000A000A6B6579626F6172643A206F6666FC
+:100B00000A000A6B6579626F6172643A206F6E0A3F
+:100B1000000A6D61747269783A206F66660A000A8D
+:100B20006D61747269783A206F6E0A000A646562BA
+:100B300075673A206F66660A000A64656275673AEF
+:100B4000206F6E0A000A0A4A756D70696E6720741C
+:100B50006F20626F6F746C6F616465722E2E2E2031
+:100B600000433E20006565636F6E6669673A0A0060
+:100B70006261636B6C6967687420737465703A2096
+:100B800025750A006261636B6C6967687420746F15
+:100B900067676C653A2025750A006261636B6C6952
+:100BA0006768742064656372656173653A202575B2
+:100BB0000A006261636B6C6967687420696E6372B6
+:100BC000656173653A2025750A0011241FBECFEFB9
+:100BD000DAE0DEBFCDBF04B603FE24C08091EA0197
+:100BE0009091EB01A091EC01B091ED018730904B19
+:100BF000A740B04BB9F41092EA011092EB011092A9
+:100C0000EC011092ED0114BE84B7877F84BF88E1A8
+:100C10000FB6F89480936000109260000FBEE0E081
+:100C2000F8E3099511E0A0E0B1E0E4E8FDE402C0DA
+:100C300005900D92A633B107D9F711E0A6E3B1E014
+:100C400001C01D92AA3EB107E1F70E94830E0C94E9
+:100C5000C0260C940000FF93EF93E0913601F091D1
+:100C60003701309709F00995EF91FF910895FC0144
+:100C70008591803011F0EFDFFBCF0895FF27E0E290
+:100C800030E247FF0CC0419597FF09C0EDE2609547
+:100C9000709580959095611D711D811D911D27FF97
+:100CA00002C0219530E350E2AA27660F771F881F04
+:100CB000991FAA1FA41710F0A41B63955A95A9F7B2
+:100CC000AA3008F0A95FA05DAF93F3956115710597
+:100CD0008105910541F7ED3211F4EF93F395F21789
+:100CE00018F43F93F395FBCF8F91B5DFFA95E1F7B9
+:100CF0000895E991F9918591803021F0853219F0BC
+:100D0000AADFF9CF089520E0E89455915532C1F358
+:100D1000503311F4689455915A3348F4505390F37A
+:100D2000220F022E220F220F200D250FF4CF0EF4DA
+:100D3000219589919991533619F3533729F15335F8
+:100D400059F1BC0188279927E8945C3621F48991F0
+:100D5000999168945591543639F446EF7EF077FFB7
+:100D60000DC08FEF9FEF0AC055374AE039F0583574
+:100D700040E121F0523642E009F00895FF93EF93ED
+:100D80007DDFEF91FF91B7CFFF93EF93FC0181914E
+:100D90008030B9F360DFFBCFFF93EF9368DFF1CFD3
+:100DA000DF93CF93CDB7DEB72596A3DFCF91DF9149
+:100DB00008958AE091E00E943706569A279A549A3D
+:100DC0005E982F985C980895811104C05E9A2F9ABE
+:100DD0005C9A08955E982F985C980895249A0895D7
+:100DE00081FF02C02C9A08952C98089508950895C3
+:100DF00086EF96E0892B11F00E94F6060E94EE061F
+:100E00000E94D90685B7806885BF85B7806885BF91
+:100E1000089587EF96E0892B11F00C94F70608955A
+:100E2000CF93DF93611120C0EC010E94F91E827202
+:100E3000809338019A81992351F0882319F085E332
+:100E400090E002C089E290E00E94511E09C0882310
+:100E500019F085E390E002C089E290E00E94A41EB0
+:100E6000DF91CF910C94431FDF91CF91089581E0E2
+:100E7000089581E008950C94390708950F931F9306
+:100E8000CF93DF938C01FC01C081D181CE010E9400
+:100E9000D21DBE010E94ED07EC01B8010E943B0784
+:100EA000882309F48DC0F8018281882309F44AC09F
+:100EB0008091440181111FC0C431F0E5DF0709F0C2
+:100EC00051C00E943D0781E0809344010E942F2081
+:100ED000909343018093420110923B0110923D0197
+:100EE00010923C0110923F0110923E01109241017C
+:100EF0001092400165C080914201909143010E948F
+:100F00003B20883C910570F480913B01E82FF0E094
+:100F1000EE0FFF1FE45CFE4FD183C0838F5F809391
+:100F20003B014EC0C43880E5D80721F0C538D04514
+:100F300001F13AC0F8018281882341F01092390111
+:100F400082E01EC0C438E0E5DE0759F58091390122
+:100F5000811106C086E20E943D1586E20E940516B8
+:100F600082E01CC0C438F0E5DF0741F3C538D04546
+:100F7000D9F4F8018281882331F010923A0180E29D
+:100F80000E9454161DC080913A01811106C087E26B
+:100F90000E943D1587E20E94051680E20E945B16C2
+:100FA0000FC0C538D04529F381E080933901809383
+:100FB0003A01C801DF91CF911F910F910C9437072F
+:100FC00080E0DF91CF911F910F9108950C94F80666
+:100FD0000C94090780E090E00895E72FF0E09AE094
+:100FE000899FE00DF11D112483E0EE0FFF1F8A950C
+:100FF000E1F7E60FF11DEE0FFF1FEE5DFE4F85914D
+:1010000094910895880F991FFC01E056F040859156
+:1010100094910895880F991FFC01E05EFE4F859121
+:10102000949108950F931F93CF93DF93EC01811553
+:1010300021E39207A0F5C11580E3D80708F0D7C0D7
+:10104000C83ED105D8F4C03ED10508F007C2C83A61
+:10105000D10578F4C53AD10508F06AC0C130D10590
+:1010600009F463C008F4F7C1C430D10508F0F6C133
+:10107000F2C1CB3BD10508F466C0EDC1C11590E2C9
+:10108000D90708F0AFC0C11521E0D20708F0E6C1CA
+:10109000C03FD10508F4DFC18E0110651FC2C03802
+:1010A00080E5D80700F5C03790E5D90708F0A3C060
+:1010B000C11520E5D20709F4ACC050F4CE0190541C
+:1010C00080319F4008F0C7C1DF708E01106A06C2F0
+:1010D000C13080E5D80709F4AAC0C43190E5D9072A
+:1010E00008F4AFC0B8C1C33820E5D20709F48EC0F8
+:1010F00050F4C13890E5D90709F482C008F083C0E4
+:1011000000E011EDEBC1C03181E5D80708F4A3C1BF
+:10111000C11597E5D90708F436C1CE01905781155E
+:10112000904108F098C1DF7093C101E010E0D6C192
+:10113000C53AD10509F494C1C63AD10509F093C165
+:1011400002E810E4CBC1C83AD10509F48FC1C93A0D
+:10115000D10509F48EC1CA3AD10509F48DC1CB3A43
+:10116000D10509F48CC1CC3AD10509F48BC1CD3A33
+:10117000D10509F48AC1C03BD10509F489C1CE3A31
+:10118000D10509F488C1CF3AD10509F487C1C13B23
+:10119000D10509F486C1C23BD10509F485C1C33B21
+:1011A000D10509F484C1C43BD10509F483C1C53B11
+:1011B000D10509F482C1C63BD10509F481C1C73B01
+:1011C000D10509F480C1C83BD10509F47FC1C93BF1
+:1011D000D10509F47EC1CA3BD10509F47DC100E007
+:1011E00014E47CC1CE019F700E940A0878C1DD27FB
+:1011F0008E01106C73C1CF70DD278E01146D6EC12E
+:1012000000E010ED6BC100E012ED68C100E013EDED
+:1012100065C10E94D9188FEF94E32CE08150904073
+:101220002040E1F700C000000E948A2057C182E000
+:1012300093E00E9437068091D40181608093D401AD
+:101240004DC10E943C22811102C00E941D220E94B9
+:10125000592290E09093E9018093E801C23080E543
+:10126000D80721F48091E801816086C0C43090E500
+:10127000D90721F48091E80182607EC0C63020E564
+:10128000D20721F48091E801846076C0C83080E5FF
+:10129000D80719F48091E80127C0CA3090E5D90732
+:1012A00021F48091E801806167C0CC3020E5D2074D
+:1012B00021F48091E80180625FC0CE3080E5D807DC
+:1012C00021F48091E801806457C0C03190E5D907CE
+:1012D00021F48091E80180684FC0C23120E5D20737
+:1012E00029F48091E8018460886046C0C33080E5BD
+:1012F000D80721F48091E8018E7F3EC0C53090E58B
+:10130000D90721F48091E8018D7F36C0C73020E5F0
+:10131000D20721F48091E8018B7F2EC0C93080E58F
+:10132000D80719F48091E80126C0CB3090E5D907A1
+:1013300021F48091E8018F7E1FC0CD3020E5D207D7
+:1013400021F48091E8018F7D17C0CF3080E5D80768
+:1013500021F48091E8018F7B0FC0C13190E5D9075E
+:1013600021F48091E8018F7707C0C331D04531F473
+:101370008091E8018B7F877F8093E8018091E8016D
+:101380000E945D22ABC08D2F99278F7099278130E5
+:101390009105D9F49E012370332702C0880F991F4D
+:1013A0002A95E2F79C688E0144E0000F111F4A95D0
+:1013B000E1F700271370802B912B53E0CC0FDD1F3A
+:1013C0005A95E1F7C076DD272FC08230910531F4C0
+:1013D000DC2FCC278E01016F106A80C0833091050D
+:1013E00069F4CE018370992701E010E002C0000F7C
+:1013F000111F8A95E2F7C8019C680FC084309105DF
+:10140000B9F4CE018370992701E010E002C0000F0B
+:10141000111F8A95E2F7C8019A6823E0CC0FDD1FFF
+:101420002A95E1F7C07ED7708C010C2B1D2B56C07E
+:101430008530910531F4DC2FCC278E01046F106AC2
+:101440004DC0069709F04AC0CF71DD27DC2FCC27AD
+:101450008E01106243C000E010E040C08E013EC02B
+:1014600001E810E43BC003E810E438C002EE14E4E5
+:1014700035C009EE14E432C00AEE14E42FC005EBC7
+:1014800014E42CC006EB14E429C007EB14E426C0D6
+:101490000CEC14E423C00DEC14E420C003E815E4C4
+:1014A0001DC00AE815E41AC002E915E417C004E9F2
+:1014B00015E414C001E216E411C003E216E40EC004
+:1014C00004E216E40BC005E216E408C006E216E4E6
+:1014D00005C007E216E402C00AE216E4C801DF9183
+:1014E000CF911F910F910895E72FF0E09AE0899F27
+:1014F000E00DF11D112483E0EE0FFF1F8A95E1F747
+:10150000E60FF11DEE0FFF1FEE5DFE4F85919491EA
+:10151000803E9105E0F4803C910558F581339105BA
+:1015200009F46FC048F48932910509F463C08A3226
+:10153000910509F46DC072C089339105E9F08238D4
+:101540009105D1F08533910509F44DC067C0833E04
+:10155000910581F138F4803E9105B9F0823E910504
+:10156000D9F05CC0863E910561F1873E9105A1F1FD
+:1015700055C00E94020808952091E80120FD02C094
+:1015800021FF4CC080EE90E049C08091E80180FFCF
+:10159000F9CF89E390E042C08091E80182FF0EC05C
+:1015A0008091E80184FF03C080E090E037C083EEC3
+:1015B00090E034C08091E80182FFF2CF82EE90E0AB
+:1015C0002DC08091E80183FF0BC08091E80184FD6C
+:1015D000EBCF87EE90E022C08091E80183FFF5CF4A
+:1015E00086EE90E01BC08091E80185FF07C089E28C
+:1015F00090E014C08091E80185FFF9CF85E390E089
+:101600000DC08091E80186FF07C08AE290E006C025
+:101610008091E80186FFF9CF81E390E00E941208F3
+:1016200008950C94F006E82FF0E0E95EFE4F80810B
+:10163000E82FEF70F0E082958F7021E030E0A90193
+:1016400002C0440F551F8A95E2F740A308950F93F7
+:101650001F93CF93DF9385B7806885BF85B7806878
+:1016600085BFC9E0D0E001E010E0FE01E95EFE4F79
+:101670008081E82FEF70F0E021A182958F70A801A2
+:1016800002C0440F551F8A95E2F7CA01822B81A33D
+:101690008C2F0E94130B219740F787E090E061E0C8
+:1016A00070E0FC01E15FFE4F2081E22FEF70F0E07F
+:1016B00042A122952F70DB0102C0AA0FBB1F2A9501
+:1016C000E2F79D01242B22A3019758F7DF91CF91D8
+:1016D0001F910F910C94E607EF92FF920F931F93C7
+:1016E000CF93DF930FE411E0C9E0EE24E394F12CF3
+:1016F000D5E08C2F0E94130B87E090E040E0FC01C6
+:10170000E15FFE4F5081E52FEF70F0E020A130E067
+:1017100052955F7002C0359527955A95E2F720FDE6
+:1017200007C09701082E01C0220F0A94EAF7422B46
+:10173000019728F7F80182918F01841719F04083EF
+:10174000D09300018C2F0E94130BC15090F6809112
+:10175000000187FD32C09091D40190FF10C0282F66
+:10176000332727FD30953F938F938BE493E09F932E
+:101770008F930E94D0060F900F900F900F90809142
+:10178000000181508093000187FD07C08FE99FE031
+:101790000197F1F700C0000010C080E090E0FC016C
+:1017A000E15BFE4FDC01AB5BBE4F19962C912187AC
+:1017B0000197863FEFEF9E0791F70E94E80781E0CF
+:1017C000DF91CF911F910F91FF90EF900895E82F37
+:1017D000F0E0E15BFE4F808108950F931F93CF935C
+:1017E000DF938091D40180FF04C08CE293E00E94DB
+:1017F0003706C0E0D0E004E113E08091D40180FF1F
+:1018000015C0FE01E15BFE4F808190E00E94991FB0
+:101810009F938F93DF93CF931F930F930E94D006D4
+:101820000F900F900F900F900F900F902196CA304D
+:10183000D10519F7DF91CF911F910F9108950F9363
+:101840001F93CF9309E511E0C0E0F80182918F0169
+:1018500090E00E94771FC80FF1E00F341F07A9F72F
+:101860008C2FCF911F910F91089580916C01089555
+:1018700008959FB7F89410925B019FBF9091DF018C
+:10188000943009F057C09091E9009F703091EC00BE
+:10189000232F217030FD20E8922B23E02093E900D4
+:1018A0002091EB0020FF43C02091EE0027FF3FC0B6
+:1018B00020915901222321F02091E80025FF37C013
+:1018C0001092590126E03091E80035FD15C03091A5
+:1018D000DF01343061F53091EB0035FD28C0215037
+:1018E00021F481E08093590122C0EFE9FFE03197B4
+:1018F000F1F700C00000E7CF8093F1008091E8008D
+:1019000085FD0AC08091E80080FFFCCF8091E8004F
+:101910008E778093E80006C08FB7F89421E020937B
+:101920005B018FBF9F709093E90080E008959F70E6
+:101930009093E9008FEF0895CF93DF9300D01F922B
+:10194000CDB7DEB72091DF01243021F523E02983D4
+:101950009B838A8382E08093E9008FEF9091E80077
+:10196000815095FD06C095ED9A95F1F70000811123
+:10197000F5CF8091E80085FF0DC040E050E063E0C6
+:1019800070E0CE0101960E94390F8091E8008E77B9
+:101990008093E8000F900F900F90DF91CF91089502
+:1019A000CF93DF9300D01F92CDB7DEB79C0180911B
+:1019B000DF01843019F592E099833B832A83909369
+:1019C000E9008FEF9091E800815095FD06C095EDFC
+:1019D0009A95F1F700008111F5CF8091E80085FF1D
+:1019E0000DC040E050E063E070E0CE0101960E943F
+:1019F000390F8091E8008E778093E8000F900F9068
+:101A00000F90DF91CF910895CF93DF93EC019091E8
+:101A1000DF01943009F046C080910B018823D9F092
+:101A200080910C018823B9F09093E9008FEF909199
+:101A3000E800815095FD06C095E19A95F1F7000008
+:101A40008111F5CF8091E80085FF2CC040E050E087
+:101A500060E170E017C081E08093E9008FEF909122
+:101A6000E800815095FD06C095ED9A95F1F70000CC
+:101A70008111F5CF8091E80085FF14C040E050E06F
+:101A800068E070E0CE010E94390F8091E8008E7707
+:101A90008093E80080E1FE01ACE5B1E001900D9299
+:101AA0008A95E1F7DF91CF91089580E993E00E9454
+:101AB00037068091DE01811109C00E94CE100E947C
+:101AC0002B118091E20084608093E20008958CE8FD
+:101AD00093E00E9437061092DE01089588E893E0B3
+:101AE0000C94370684E893E00C94370680E893E082
+:101AF0000E9437060C94F21F20915A012F5F822F0B
+:101B000062E30E947826992319F020935A010895E0
+:101B100010925A0180915B01882371F18091DF015D
+:101B2000843041F58091E9008F702091EC00922F74
+:101B3000917020FD90E8892B93E09093E9009091BB
+:101B4000EB0090FF14C09091EE0097FF10C09091B1
+:101B5000E80095FF03C01092F100F9CF9091E800E2
+:101B600090FF05C09091E8009E779093E8008F70F9
+:101B70008093E90010925B01089542E061EC81E0FE
+:101B80000E94481042E061EC82E00E94481042E26C
+:101B900061EC83E00E94481042E161EC84E00C9427
+:101BA00048108091E101833009F455C030F4813050
+:101BB00071F0823009F48EC008958A3009F47AC039
+:101BC0008B3009F460C0893009F09CC020C080913E
+:101BD000E001813A09F096C08091E800877F809308
+:101BE000E8008091E4019091E501892B21F460E106
+:101BF0008CE591E003C060E080E090E070E00E943E
+:101C0000840F8091E8008B778093E800089580919D
+:101C1000E001813209F076C08091E4019091E50104
+:101C2000009719F0039709F06DC08091E800877F55
+:101C30008093E8008091E80082FD05C08091DF017B
+:101C40008111F8CF5FC08091F10080936C01809189
+:101C5000E8008B7753C08091E001813A09F052C0CF
+:101C60008091E4019091E501892B09F04BC08091AE
+:101C7000E800877F8093E8008091E80080FFFCCF38
+:101C800080910B0136C08091E0018132D9F58091BD
+:101C9000E4019091E501892BA9F58091E800877F07
+:101CA0008093E8000E947D108091E20180930B01F7
+:101CB0000C94D9188091E001813221F58091E800DF
+:101CC000877F8093E8000E947D108091E3018093DC
+:101CD0006D0108958091E001813AA1F48091E800BE
+:101CE000877F8093E8008091E80080FFFCCF80919F
+:101CF0006D018093F1008091E8008E778093E80079
+:101D00000C947D10089584B7877F84BF88E10FB657
+:101D1000F89480936000109260000FBE90E080E81D
+:101D20000FB6F89480936100909361000FBE0E94FB
+:101D300052140E94CE100E942B118091E200846008
+:101D40008093E20089E39CE00E94721F78940E94D5
+:101D5000B0130E94541481E091E00E94CB138FE6EF
+:101D600093E00E9437068091DF01853089F48BE68D
+:101D700093E00E9437060E94B31F8091DD01882303
+:101D800091F30E94E11F882371F30E94230FEBCF90
+:101D90000E947A14E8CF292F332723303105C9F068
+:101DA00064F42130310581F02230310509F043C05F
+:101DB00084E790E022EF33E042C021323105F1F0B8
+:101DC0002232310541F137C082E190E026E634E06D
+:101DD00036C099278130910541F08230910541F05C
+:101DE000892B49F5EEEEF3E005C0E8EDF3E002C023
+:101DF000E4E9F3E0849190E09F0121C06430D8F4DD
+:101E0000E62FF0E0EE0FFF1FE35DFE4F20813181F2
+:101E100089E090E014C0643070F470E0FB01EE0FD4
+:101E2000FF1FEB5DFE4F20813181FB01EF5DFE4F17
+:101E3000808190E004C080E090E020E030E0FA0192
+:101E400031832083089580E189BD82E189BD09B491
+:101E500000FEFDCF8091D8008F7D8093D8008091C7
+:101E6000E00082608093E0008091E00081FDFCCF83
+:101E70000895CF92DF92EF92FF920F931F93CF932B
+:101E8000DF93EC018B016A010E949C10811133C029
+:101E9000C114D10439F0F60180819181081B190B1E
+:101EA000C80FD91FE12CF12C0115110519F18091F2
+:101EB000E80085FD16C08091E8008E778093E800E9
+:101EC000C114D10449F0F60180819181E80EF91E18
+:101ED000F182E08285E00FC00E949C10882321F3EC
+:101EE0000AC089918093F10001501109FFEFEF1AA8
+:101EF000FF0ADACF80E0DF91CF911F910F91FF9021
+:101F0000EF90DF90CF9008952091E6013091E701A6
+:101F10002617370748F06115710539F42091E8005C
+:101F20002E772093E80001C0B90140E061157105EA
+:101F3000A9F12091DF01222309F443C0253009F4DF
+:101F400042C02091E80023FD40C02091E80022FD1E
+:101F500032C02091E80020FFE9CF4091F3002091AA
+:101F6000F20030E0342BFC01CF016115710559F00E
+:101F70002830310540F481918093F100615071095E